تقرير إنجاز — نقل منطق الورك ليست من الفرونت للباك إند

الهدف: تخلية صفحتي الورك ليست (dept) والفليديشن تعتمد على الباك إند كمصدر حقيقة واحد بدل ما المتصفح يعمل كل التجميع والمنطق — لتحسين الأداء والصيانة، من غير ما نكسر الشغل اليومي.

🗓️ 2026-06-08🧬 Moon ERP / LISFE: fix/doctor-revamp · BE: lis/maintenance-completion
✅ الحالة: LIVE — الباك إند هو المصدر الأساسي دلوقتي

النتيجة باختصار

5,467
سطر منطق مكرر في الفرونت → اتنقل للباك
٣
endpoints موحّدة بدل ٥–٦ نداءات
100%
تطابق مع القديم (النهاردة، كل الأقسام)
16/16
قسم اتحقّق منه

1 إيه اللي اتعمل

قبل: Angular ──5/6 نداءات──► API ──خام──► [تجميع/نَسب/locked/rollup/dedup في المتصفح] ──► رسم (نفس المنطق مكرر في dept + validation) بعد: Angular ──نداء/نداءين──► /lis/worklist/* ──جاهز للرسم──► رسم بسيط └─ كل المنطق في WorklistContextService (الباك) = مصدر واحد للصفحتين

الباك إند (جديد)

  • WorklistContextService — كل منطق التجميع (dedup، نَسب البنلات، sub-sections، الصفوف المقفولة، ما-قبل-الـbench، الترتيب، رولأب الحالة، الملخّص، الفلاج، التوقيت)
  • 3 endpoints: /lis/worklist/cards · /requests/{id}/rows · /search

الفرونت إند

  • lis-worklist.service.ts — خدمة رفيعة بتستهلك الـendpoints
  • الصفحتين بترسم الصفوف الجاهزة من الباك مباشرة
  • toggle ?serverWorklist=0/1 للتحكّم + الرجوع

2 المشاكل اللي ظهرت واتصلحت (بالأدلة)

المشكلةالسبب الجذريالحل
عضو البنل eAG مش ظاهرالنَسب كانت بتتعلّق بأي بنل حتى لو is_panel=0قيد is_panel=1 + تنظيف صفوف شاردةاتصلح
الأعضاء ظاهرة مكرّرةصفوف عرض مكرّرة + مفاتيح tracking متصادمةid فريد للبنل + مفتاح tracking مركّب + حارس تكراراتصلح
الورك ليست بتسقّط تحاليلالـendpoints ماكانتش بتفلتر بالقسم (lab_section_id)دعم القسم في cards + rows (partition مثالي)اتصلح
الورك ليست طلعت فاضيةالـAPI القديم بيتجاهل فلتر statuses → كان بيعرض كل طلبات اليوم؛ الجديد فلتر "الناقص" فأخفى المكتملstatus_filter=worklist = كل طلبات اليوم + ما-قبل-الـbenchاتصلح
كروت ما-قبل-الـbench مش بتظهرالكروت مبنية من النتائج بسprebenchCards() بتظهر الطلبات المجمّعة بدون نتيجةاتصلح
النتائج الخاصة (file/culture/histopath)إعدادات الإدخال مش في الـpayloadتمرير كل الحقول عبر الـ3 مراحلاتصلح

3 التحقّق (مش انطباع — بالأرقام)

🧪 هارنس تطابق آلي

سكربت بيقارن — لكل طلب — مخرجات الباك الجديد مع الـAPI القديم /lis/results (بكل الصفحات)، عبر أيام وأقسام:

  • النهاردة: تطابق 100% — All-Departments + كل الـ16 قسم، صفر ناقص صفر فرق.
  • الأسبوع: نضيف ماعدا طلب واحد (نتيجة retracted/مسحوبة كان القديم بيعرضها بالغلط — الجديد أصح).
  • تجربة حيّة من المستخدم: كل التحاليل ظاهرة ✅

⚙️ درس مهم اتسجّل

سكربت النشر بيمسح البندل القديم قبل النسخ — لو البناء فشل بيقع التطبيق. اتعمل حارس: مايمسحش إلا لو البناء نجح فعلاً.

4 المراحل المنفّذة

مرحلة 0–2 — الباك إند: بناء الخدمة + الـendpoints، نقل كل المنطق، مراجعة عدائية، تحقّق على بيانات حقيقية.
مرحلة 3 — تجربة opt-in: النسخة الجديدة خلف toggle، المستخدم جرّبها حيّة وأكّد.
مرحلة 4 — تفعيل أساسي: الباك إند بقى المصدر الافتراضي للصفحتين، مع القديم كـfallback.
مرحلة 5 — حذف التكرار (مؤجّلة): حذف منطق الفرونت القديم (−٥٠٪+ كود) بعد فترة استقرار على المباشر.

5 الحالة الحالية + شبكة الأمان

🟢 LIVE

الورك ليست + الفليديشن على الباك إند للكل (بعد Hard refresh).

↩️ رجوع فوري

?serverWorklist=0 = القديم (لسه موجود كـfallback). وgit رجوع كامل.

أهم الـcommits

feat: WorklistContextService + endpoints feat: lab_section_id support fix: status_filter=worklist feat: special-result fields feat: default to backend path

الخطوة الجاية

استخدم الورك ليست كام يوم. لو كله مستقر → نحذف منطق الفرونت المكرر (مرحلة 5) ونقفل الموضوع نهائياً، فيتحسّن حجم الكود والصيانة أكتر. لحد ساعتها القديم متاح كرجوع فوري في أي لحظة.