بناءً على تقرير الأداء: الصفحتين بيعتمدوا على نداءات متعددة بـper_page ثابت + تجميع تقيل في المتصفح — وده خطر فقدان بيانات في الأيام المزدحمة (مش بطء بس). الخطة دي بتطبّق نفس النمط اللي نجح في الورك ليست: نقل التجميع للباك عبر endpoints مخصصة، بأمان ومراحل متحقَّقة.
| الصفحة | الحجم | التحميل الحالي | الخطر |
|---|---|---|---|
| Collection (Samples) | 1,587 سطر | ~7 نداءات (4 requests + 3 samples) + تجميع client-side | per_page ثابت → فقدان بيانات |
| Reception | 376 سطر | listByFilter per_page:200 بدون فلتر حالة/تاريخ صريح | overflow فوق 200 |
| endpoints مخصصة بالباك | مش موجودة لسه — لا /lis/collection-worklist ولا /lis/reception-worklist | ||
دي نفس مشكلة الورك ليست اللي خلّصناها — فعندنا نمط مُجرَّب وناجح (BE ContextService + endpoints + opt-in toggle + parity harness). هنعيد استخدامه.
per_page ثابتCollection: per_page=100 (requests) + 200 (samples). Reception: 200. في يوم مزدحم، السجلات اللي بعد الحد بتختفي من الشاشة — ده يأثر على دقة البيانات مش الأداء بس. (نفس باگ الـ25/صفحة اللي عالجناه في الورك ليست.)
| المشكلة | الصفحة | الحل المقترح | أولوية |
|---|---|---|---|
| تجميع client-side (دمج samples/requests، حساب التيوبات/الحالات) | Collection | ينتقل للباك | P1 |
Auto-aliquot أثناء loadData (فتح الصفحة بيعدّل بيانات!) | Collection | ينتقل لمرحلة إنشاء الطلب أو زرار صريح | P1 |
| Collect All = نداءات منفصلة لكل تيوب | Collection | استخدام bulkCollect الموجود | P2 |
كل Receive = deliver + reload كامل للقائمة | Reception | optimistic update + تحديث خلفي | P2 |
bulkReceive موجود بس مش مستخدَم | Reception | multi-select / scan queue + bulk | P2 |
| تغذية راجعة للباركود ضعيفة (صوت/لون/رسالة ثابتة) | الاتنين | feedback ثابت + حارس تكرار المسح | P2 |
| بحث client-side على كل ضغطة | الاتنين | debounce (عملناه في الورك ليست) + بحث سيرفر | P2 |
| Reject dialog مش بيعرض تجميع البنل | Reception | عرض رؤوس البنل وأعضاءه زي Samples | P3 |
| عدّادات منفصلة + عرض responsive لشاشات المعمل الكبيرة | الاتنين | عدّادات (داخلي/B2B/مرفوض/مستلَم اليوم) + width مرن | P3 |
/lis/collection-worklist · /lis/reception-worklist — بترجّع كل الصفحات (مفيش حد per_page)bulkCollect/bulkReceive?serverReception=1 للتجربة والرجوعper_page الثابت بـتحميل كل الصفحات (نمط listAll() الموجود) في الصفحتين.ReceptionWorklistService + /lis/reception-worklist (الأبسط — نبدأ بيه).CollectionWorklistService + /lis/collection-worklist (الأعقد — التيوبات/الأقسام/البنلات/aliquot).?serverReception=1 (الافتراضي قديم).bulkCollect، Reception scan-queue + bulkReceive.مانفعّلش الجديد قبل ما يطابق القديم 1:1 على بياناتك (harness آلي).
toggle، إنت تجرّب الأول، الـlab على القديم لحد ما تأكّد.
مانمسحش البندل القديم إلا لو البناء نجح (الدرس اللي اتعلمناه).
كل خطوة commit منفصل، رجوع فوري.
الخطة بتكرّر نجاح الورك ليست على Samples/Reception. أقدر أبدأ بمرحلة 0 (الأمان) حالاً وأرجّعلك، وأكمّل الباك تدريجياً متحقَّق. مستني موافقتك على المسار + القرارات الـ3.