Commit Graph
2 Commits
Author SHA1 Message Date
Hamza-AyedandClaude Opus 4.8 2045896b95 fix(test): expect fixed to be rejected + flush tariff cache before testing
الدورة السابقة أعلنت الفشل والنظام سليم — العطل كان في السكربت:

1. **`fixed` تُرفض بـ400 وهذا هو المطلوب** (أُخرجت من الزرع عمداً)، لكن
   السكربت كان يعدّها فئة متوقَّعة فأسقط التغطية إلى 72/81. صارت في
   `REJECTED_CLASSES`: الرفض يُتحقَّق منه صراحةً، وغيابه هو الفشل.

2. **429 على `send-otp`** (10 لكل 5 دقائق) عند تشغيلتين متتاليتين — يُنتظر
   ويُعاد بدل الإبلاغ عن فشل ليس في النظام.

3. **إبطال كاش التعرفة صار خطوة في الدورة.** `getActive` تكاشي 900 ثانية،
   و**Redis حاوية منفصلة لا تتأثر بإعادة تشغيل الـapi** — وتطبيق
   `tariffs.sql` مباشرةً على القاعدة يتجاوز التطبيق فلا يُبطل شيئاً. النتيجة
   أن النظام خدم أسعاراً قديمة عبر دورتَي نشر كاملتين وهو يعلن النجاح.
   المسح الآن مبنيّ في السكربت لا متروك للتذكّر.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-19 02:09:05 +03:00
Hamza-AyedandClaude Opus 4.8 f58f2e2e2c chore: gate the test loop behind a real health check
ضاعت دورتان كاملتان على السبب نفسه: تسلسل `up -d && restart && <اختبار>`
كان يشغّل الاختبار بينما الـapi ساقطة، فيظهر خطأ الإقلاع كـ`EAI_AGAIN` داخل
الاختبار — أي في المكان الخطأ تماماً، فيُشخَّص كعطل شبكة أو عطل سكربت.

`verify-and-test.sh` يجعل الدورة واحدة ومحروسة:
- يفحص `.env` قبل الإقلاع ويصلّح التعارض القاتل (OTP_DEV_MODE=true مع
  NODE_ENV=production — حارس `main.ts` ينهي العملية لا يحذّر، فتدخل الحاوية
  حلقة إعادة تشغيل).
- يميّز «حلقة إعادة تشغيل» عن «بطء إقلاع»: الأولى خطأ إقلاع يُطبع سببه من
  اللوغ فوراً بدل انتظار عقيم.
- **لا اختبار قبل ردّ /health فعلياً** — هذه هي البوابة التي كانت غائبة.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-19 01:11:43 +03:00