تحليل ترتيب أعضاء البنل في كل الشاشات

وحدة: المختبر (LIS) — Moon ERP  |  التاريخ: 2026-05-25  |  نطاق: البنل من تعريفه إلى إدخال النتائج إلى طباعة التقرير
٤
شاشات متأثرة
٢
جداول DB موجودة
٦
تاسكات
~٢ س
تقدير

الفكرة المطلوبة (ملخص)

  1. الـ Panel Editor الحالي: المستخدم يقدر يعمل أقسام فرعية (مثلاً CBC فيه "RBC parameters" و "WBC parameters" و "Platelets") ويضع كل تحليل تحت قسمه.
  2. المطلوب: نفس الترتيب ونفس العناوين الفرعية تظهر في:
    • شاشة إدخال النتائج (Results page)
    • شاشة الـ Kanban عند إدخال النتائج
    • تقرير الـ PDF المطبوع
  3. في الـ Panel Editor نفسه: تحسينات على الترتيب:
    • الـ drag & drop موجود — يفضل
    • عمود رقم (sort_order) ظاهر لكل عضو
    • المستخدم يقدر يكتب الرقم مباشرة (مثلاً يحط ١، ٥، ١٠ على ثلاث صفوف)
    • زر "ترتيب حسب الرقم" → ينفذ فرز حسب الأرقام اللي كتبها

الوضع الحالي — ما هو موجود

البنية التحتية موجودة بالكامل:

ما يعمل في الشاشات الحالية

الشاشةهل تستخدم الترتيب؟هل تعرض الأقسام الفرعية؟
الـ Panel Editorنعم (drag&drop)نعم
شاشة الـ Resultsجزئياًغير مؤكد
شاشة الـ Kanbanغير مؤكدلا
تقرير الـ PDFنعم (panelSectionOrder + panelMemberOrder)نعم

المشاكل المكتشفة

عالٍ فرونت ١) شاشة الإدخال (Results) قد لا تظهر بنفس ترتيب الـ Editor

الوصف:

الشاشة تقرأ panel_members ثم تبنيها في array مسطّحة. الترتيب يعتمد على الـ ordering في الـ API response. لو لم تطبق sort صريح على sort_order، قد يظهر بترتيب مخالف للـ Panel Editor.

الإصلاح:

عالٍ فرونت ٢) شاشة الـ Kanban لا تعرض الأقسام الفرعية ولا الترتيب

الوصف:

الـ Kanban يأخذ panel_members كـ array بسيطة عبر map(m => m.id). الأقسام الفرعية والترتيب يضيعا. عند إدخال النتائج، كل أعضاء البنل تظهر مع بعض بدون ترتيب.

الإصلاح:

متوسط فرونت ٣) في الـ Panel Editor: مفيش رقم ظاهر للترتيب

الوصف:

الـ drag & drop شغّال، لكن المستخدم لا يشوف رقم الـ sort_order ولا يقدر يعدّله. لو عنده ١٥ عضو، التحريك بالماوس يبقى مرهق.

الإصلاح:

الـ UX المقترح:

┌─ RBC Parameters ────────────────────────────────────────────┐
│ ┌──┬─────────────────────┬───────┐                          │
│ │⠿ │ 1  │ Hemoglobin (HB) │ 🗑    │                          │
│ │⠿ │ 2  │ Hematocrit       │ 🗑    │                          │
│ │⠿ │ 3  │ RBC Count        │ 🗑    │                          │
│ └──┴─────────────────────┴───────┘                          │
│                                                             │
│  [ + Add Member ]   [ ↕ Sort by Number ]                    │
└─────────────────────────────────────────────────────────────┘
عالٍ فرونت ٤) PDF: ترتيب الأعضاء قد يكون صحيح لكن الـ display_name غير مستخدم

الوصف:

الـ PDF service يستخدم panelSectionOrder و panelMemberOrder للترتيب — جيد. لكن الـ subHeader يستخدم panelSectionName فقط، لا يفرّق بين عربي وإنجليزي. وأعضاء البنل قد تظهر بـ code بدل اسم العرض.

الإصلاح:

التحسينات على الـ Panel Editor

التصميم المقترح للـ Editor

┌─ Panel: CBC ────────────────────────────────────────────────┐
│                                                             │
│  Section 1: RBC Parameters                                  │
│  ┌──┬─────┬─────────────────────────┬──────────────────┐    │
│  │ ⠿│  1  │ Hemoglobin (HB)         │  edit │ remove  │    │
│  │ ⠿│  2  │ Hematocrit (HCT)        │  edit │ remove  │    │
│  │ ⠿│  3  │ RBC Count               │  edit │ remove  │    │
│  └──┴─────┴─────────────────────────┴──────────────────┘    │
│                                                             │
│  Section 2: WBC Parameters                                  │
│  ┌──┬─────┬─────────────────────────┬──────────────────┐    │
│  │ ⠿│  1  │ Total WBC               │  edit │ remove  │    │
│  │ ⠿│  2  │ Neutrophils             │  edit │ remove  │    │
│  └──┴─────┴─────────────────────────┴──────────────────┘    │
│                                                             │
│  Ungrouped                                                  │
│  ┌──┬─────┬─────────────────────────┬──────────────────┐    │
│  │ ⠿│  1  │ Platelets               │  edit │ remove  │    │
│  └──┴─────┴─────────────────────────┴──────────────────┘    │
│                                                             │
│  [ ↕ Sort by Number ]    [ + Add Section ]                  │
└─────────────────────────────────────────────────────────────┘

سلوك زر "Sort by Number"

  1. يقرأ كل rows داخل كل قسم
  2. يفرزها حسب الرقم اللي كتبه المستخدم في كل input
  3. يعيد توزيع sort_order بشكل مسلسل (١، ٢، ٣، ...)
  4. يطبق الترتيب بصرياً وفي الـ payload

قائمة التاسكات

الترتيبالتاسكالجانبالأولويةالتقدير
T-1إضافة input رقم في panel-editor بجوار كل عضو + زر "Sort by Number"فرونتمتوسط٢٥ د
T-2شاشة الـ Results: التأكد من الفرز الصحيح + عرض headers الأقسام الفرعيةفرونتعالٍ٣٠ د
T-3شاشة الـ Kanban: نفس الفرز + headers الأقسام في حوار إدخال نتائج البنلفرونتعالٍ٣٠ د
T-4الـ PDF: لو لم يستخدم الترتيب بشكل صحيح، التأكد من الفرز الكاملفرونتمتوسط١٥ د
T-5الـ PDF: اسم القسم الفرعي يستخدم لغة المستخدم الحالية (ar/en)فرونتبسيط١٠ د
T-6اختبار يدوي شامل لكل الشاشات١٥ د

الإجمالي: ~٢ ساعة.

أسئلة قبل البدء

  1. زر "Sort by Number": ينفّذ تلقائياً بمجرد أن المستخدم يكتب أرقام، أم يحتاج ضغط الزر لتفعيله؟
    الاقتراح: زر يدوي (لو نفّذ تلقائياً قد يحدث فوضى وقت الكتابة)
  2. سلوك المستخدم إذا كتب أرقام متكررة (مثلاً اتنين أعضاء برقم ٢):
    • (أ) يحتفظ بالاتنين بنفس الرقم ويستخدم الترتيب الأصلي كـ tiebreaker.
    • (ب) ينبّه المستخدم بخطأ.
    • (ج) يعيد ترقيمهم تلقائياً (٢، ٣) ويزحف الباقي.
    الاقتراح: (أ) — الأبسط، والمستخدم يقدر يصلح يدوياً
  3. الـ ungrouped (الأعضاء بدون قسم فرعي): يظهرون قبل الأقسام، بعدها، أم في تاب لوحده؟
    الاقتراح: بعد كل الأقسام، بدون header

Moon ERP — LIS Module  |  Panel Ordering Plan  |  جاهز للمراجعة