التنزيلات الرقمية: إصلاح الاستمرارية والتسليم التلقائي للطلبات السابقة

13 سبتمبر 2026

أصلحنا اليوم خطأً كان يتسبب في اختفاء بعض ملفات التنزيل الرقمي بعد تحديثات الخادم — وبنفس القدر من الأهمية، ضمّنا حصول المشترين تلقائيًا على الوصول فور قيام البائع بـ(إعادة) رفع ملف.

ما الذي حدث

رأى بعض المشترين رسالة «file not found on disk» (الملف غير موجود على القرص) عند النقر على زر التنزيل في تنزيلاتي، رغم أن طلبهم كان مدفوعًا وإدخال التنزيل موجودًا.

السبب التقني

تعمل خدمة اللعبة لدينا داخل حاوية Docker على كل خادم VPS إقليمي. تُكتب ملفات التنزيل المرفوعة في /var/lib/erleuchtung/shop-downloads — وكان من المفترض أن يكون هذا مجلدًا دائمًا على الخادم المضيف، مُركَّبًا داخل الحاوية.

كان التركيب موجودًا في إعدادات التطوير لدينا، لكنه كان مفقودًا في ملف compose الخاص بالنشر الذي يثبّته وكيل التحديث على عقد VPS. ونتيجةً لذلك، كانت الملفات المرفوعة تُخزَّن داخل طبقة نظام الملفات الخاصة بالحاوية نفسها. وفي كل مرة كان التحديث يعيد إنشاء الحاوية، كانت تلك الطبقة تُهمَل — فتختفي الملفات، بينما تبقى سجلات قاعدة البيانات (المخزنة في PostgreSQL) سليمة.

والنتيجة: إدخال تنزيل صالح يشير إلى ملف لم يعد موجودًا.

ما الذي أصلحناه

  • تخزين دائم على جميع العقد. أصبح دليل التنزيلات الآن مُركَّبًا بشكل صحيح على تخزين المضيف في جميع الخوادم الإقليمية (US وIN وEU2 وSG وعقدة MAAS التجريبية). تبقى الملفات المرفوعة محفوظة عبر التحديثات وإعادة إنشاء الحاويات.
  • ملء تلقائي عند الرفع. سابقًا، كان الوصول إلى التنزيل يُمنح فقط لحظة الدفع — وللملفات الموجودة في ذلك الوقت فقط. الآن، عندما يرفع البائع ملفًا إلى منتج ما، يُمنح تلقائيًا إلى جميع المشترين الذين لديهم طلب مدفوع لهذا المنتج، مع إشعار فوري.
  • قائمة تنزيلات ذاتية الإصلاح. فتح «تنزيلاتي» يصلح الآن الأذونات المفقودة لجميع طلباتك المدفوعة — المشتريات القديمة تُصلح نفسها.
  • المنح عند الشحن. عندما يُعلِّم البائع طلبًا على أنه مشحون/مُسلَّم، تُمنح الملفات المرفقة فورًا — السلع الرقمية مستحقة عند التسليم.

ما يجب على البائعين فعله

لا يمكن استرداد الملفات التي رُفعت قبل هذا الإصلاح وفُقدت أثناء التحديث — فهي لم تكن موجودة إلا داخل طبقة حاوية مُهمَلة.

إذا كنت قد رفعت ملفات سابقًا: افتح منتجك، واحذف إدخال التنزيل القديم، ثم أعد رفع الملف. في اللحظة التي ترفع فيها، يستعيد جميع المشترين السابقين الوصول تلقائيًا — دون أي عمل يدوي.

ملاحظة حول الشفافية

ذكرت رسائل إشعار «تم الشحن» التي تلقاها بعضكم ملفات قابلة للتنزيل لم تكن مرفقة فعليًا أبدًا — كان ذلك النص مجرد ملاحظة شحن من البائع، وليس تسليم ملف. مع هذا الإصدار، يصبح زر التنزيل في «تنزيلاتي» المصدر الوحيد الموثوق: إذا كان الملف مدرجًا هناك، فهو موجود على الخادم ويمكن تنزيله.

شكرًا لصبركم — وشكر خاص لأعضاء المجتمع الذين أبلغوا عن المشكلة بسرعة.

— فريق Erleuchtung