4
المشاكل بالتفصيل والحلول
Problems & Fixes — with line-level evidence
حرجة
1 — الأختام والتوقيعات غير موحّدة: 4 قوالب حديثة تطبع صناديق ختم فارغةجهد متوسط
صورة ختم الفرع لا يرسمها أي قالب حديث (الصندوق المطبوع فارغ شكلياً)، وصورة التوقيع يرسمها قالب Document وحده — وينسبها خطأً للطبيب الاستشاري بينما هي توقيع الفرع. محرك Classic يرسم الاثنين لكن بقصّ أبعاد مستقل يشوّه نسبة الصورة، ويتجاهل إعداد التعطيل تماماً. وتوقيع الطبيب يُجلب من قاعدة البيانات ولا يرسمه أي محرك.
lis-html-report.service.ts:376,540,685,861lis-html-report.service.ts:1015-1016lis-report-pdf.service.ts:1286-1301lis-report-pdf.service.ts:1294-1296
الحل: كتلة توقيع/ختم واحدة مشتركة (partial) تُحقن في القوالب الخمسة وتستخدم نفس صور Classic بنفس قواعد الإظهار، مع تصحيح تسمية Document وحساب الأبعاد بنسبة محفوظة، ورسم توقيع الطبيب عند توفره.
حرجة
2 — قصّ بيانات مطبوعة بصمت في قالبَي Editorial وSpectrumجهد متوسط
القالبان يفرضان overflow:hidden على الصفحة: أي قسم نتائجه أطول من ورقة A4 واحدة تُحذف بقيته من المطبوع دون أي تحذير — فقدان بيانات طبية فعلي. وبقية القوالب ليست سليمة: Bento وMonochrome يفيضان للصفحة التالية دون تكرار الهيدر وقد يتصادمان مع الفوتر، وأرقام الصفحات تَعُدّ الأقسام لا الصفحات الفيزيائية، وDocument يتدفق صحيحاً لكنه بلا ترقيم صفحات أو فوتر أصلاً.
lis-html-report.service.ts:252,713lis-html-report.service.ts:88
الحل: إزالة القصّ والاعتماد على CSS Paged Media (break-inside avoid للصفوف + تكرار الهيدر)، وترقيم صفحات بعداد الطباعة الفعلي.
حرجة
3 — كل التعليقات تختفي من القوالب الحديثة الخمسةجهد متوسط
ثلاث قنوات تعليقات يطبعها Classic — تعليق النتيجة على السطر، التعليق الثابت للتحليل، والتعليق العام للتقرير — لا تملك أي موضع رسم في القوالب الخمسة. تعليق طبي مكتوب على نتيجة قد يكون فارقاً في التفسير، وضياعه حسب «شكل» القالب خلل سلامة وليس خلل تجميل.
lis-report-pdf.service.ts:1031-1045,1219-1256lis-print-report.service.ts:484-493
الحل: توحيد رسم التعليقات الثلاثة كجزء من «عقد القالب» الإلزامي (قسم 5) وتطبيق إعدادات تنسيق التعليق printCommentConfig في المحركين.
حرجة
4 — اختلاف قاعدة «ما الذي يُطبع»: نتائج غير معتمدة تصل للورقجهد صغير
مسار الموظفين يطبع النتائج بحالة entered (لم تُعتمد بعد) بينما البوابتان وPrint Queue تطبع released فقط — نفس الطلب يطبع محتوى مختلفاً حسب الشاشة. والأخطر: قالبا Bento وSpectrum يطبعان شارة «Verified» خضراء ثابتة حتى فوق النتائج غير المعتمدة.
lis-print-report.service.ts:97-99lis-html-report.service.ts:479,834lis-report-section-builder.ts:45
الحل: سياسة اعتماد واحدة معلنة (released-only افتراضياً + خيار مسودة بعلامة مائية «DRAFT» صريحة)، وربط شارة Verified بحالة النتيجة الفعلية.
كبيرة
5 — شاشة إعدادات التقرير بالكامل بلا أثر (Dead Settings)جهد متوسط
كائن الإعدادات ReportSettings (إظهار QR، إظهار التوقيع، النتائج السابقة، نص الهيدر/الفوتر، الترخيص، الوضع) لا يُقرأ ولا مرة داخل محرك Classic، ومحرك HTML لا يستقبله أصلاً في توقيع الدالة، والموصّل المركزي يثبّت القيم hardcoded بدل قراءتها من الخادم، وPrint Queue يقرأ مفاتيح lis_report_* تأكدنا بفحص شامل لمستودع الخادم أنها غير معرّفة فيه إطلاقاً (قيم لن تصل أبداً).
lis-report-pdf.service.ts:370-375,461lis-html-report.service.ts:13-18lis-print-report.service.ts:573-581lis-print-queue.component.ts:482-505
الحل: تمرير ReportSettings فعلياً للمحركين وتفعيل كل علم، وقراءة القيم من مفاتيح الخادم الصحيحة، وحذف المفاتيح الوهمية.
كبيرة
6 — Print Queue خط أنابيب مكرر يتجاوز كل القواعدجهد متوسط
شاشة الطباعة الجماعية لا تمر على الموصّل المركزي: تجهيز بيانات خاص بها، دائماً Classic مهما كان قالب المعمل، بدون صور الختم والتوقيع، بدون إعدادات الهيدر، وبدون فلتر hide_from_print — أي أن أعضاء الباقات المخفيين عمداً يُطبعون من هذه الشاشة.
lis-print-queue.component.ts:244,261-278,377-407lis-print-report.service.ts:589-615
الحل: إعادة توجيه Print Queue إلى الموصّل المركزي نفسه (حذف الخط المكرر بالكامل) — يرث تلقائياً الأختام والقالب والفلاتر.
كبيرة
7 — البوابتان تتجاهلان قالب المعمل وقواعد العرضجهد متوسط
بوابة المريض وبوابة B2B مثبّتتان على Classic مهما اختار المعمل، ومجهّز بيانات البوابات يفتقد: المدى المرجعي المطابق للجنس/العمر، التفسير النصي للنتائج الرقمية، وكل التعليقات — فتقرير البوابة قد يعرض مدى مرجعياً مختلفاً عن تقرير الموظفين لنفس النتيجة.
pp-print.service.ts:53-71client-report-print.service.ts:52-69lis-report-section-builder.ts:89,98-105lis-print-report.service.ts:742-782
الحل: توحيد مجهّز البيانات (نفس دوال المطابقة للجنس/العمر والتعليقات) واحترام قالب المعمل في البوابتين.
كبيرة
8 — إعدادات حقول الهيدر تعمل في قالبين فقط من ستةجهد صغير
مصفوفة إظهار/إخفاء حقول المريض الـ 12 (موثّقة بأنها «تنطبق على كل القوالب») يحترمها Classic وDocument فقط لأنهما يستخدمان الدالة المشتركة — الأربعة الباقون يثبّتون كتلة مريض من 5 حقول، فيفقدون الهوية الوطنية والفرع وتبديل «العيادة المحوِّلة» لطلبات B2B.
lis-report-pdf.service.ts:924lis-html-report.service.ts:1075lis-html-report.service.ts:328-339,484-498,639-648,822-838
الحل: إلزام القوالب الأربعة باستهلاك buildHeaderFields() المشتركة نفسها — الدالة موجودة وجاهزة.
كبيرة
9 — زر التنزيل ينكسر مع القوالب الحديثة (خطأ كاذب للمستخدم)جهد صغير
عند اختيار قالب حديث، دالة التوليد تطبع نافذة HTML «كأثر جانبي» ثم ترجع null — فتعرض شاشتا النتائج والمعاينة رسالة «لا توجد نتائج قابلة للطباعة» رغم أن الطباعة تمت، ويتعطل تنزيل PDF كلياً للقوالب الحديثة. كما يفشل فتح النافذة بصمت إذا حُظرت النوافذ المنبثقة.
lis-print-report.service.ts:648-684lis-results.component.ts:1544-1546lis-html-report.service.ts:20-21
الحل: فصل «طباعة» عن «توليد مستند» في الواجهة البرمجية، وإرجاع حالة نجاح صادقة، ومعالجة حظر النوافذ برسالة واضحة.
كبيرة
10 — ترتيب أقسام الهيستوباثولوجي المخصص يعمل في Classic فقطجهد صغير
ميزة ترتيب أقسام تقرير الهيستو (المسلَّمة حديثاً على مستوى القالب النسيجي) يحترمها Classic، بينما القوالب الحديثة — بما فيها Document المخصص أصلاً للهيستو — تثبّت الترتيب hardcoded.
lis-report-pdf.service.ts:401-405,628-646lis-html-report.service.ts:215-219,943-948
الحل: تمرير histoSectionOrder لمحرك HTML وتطبيقه في richBlocks وDocument.
كبيرة
11 — محرك خادم رابع (DomPDF) بقواعد رابعةجهد كبير
تنزيل التقرير من البوابات وبريد النشر يولَّدان على الخادم بقوالب Blade مستقلة لها مفاتيح إعدادات خاصة، بلا قوالب ولا أختام ولا QR — نسخة رابعة من الحقيقة تتباعد باستمرار.
Modules/LIS/app/Services/LabReportPdfService.php:12-38
الحل: (ضمن المرحلة الهيكلية) توليد PDF الخادم من نفس HTML القوالب الموحّدة بدل Blade مستقلة.
ثانوية
12 — QR والنتائج السابقة: ميزتان معلنتان غير موجودتين في أي محركجهد متوسط
إعداد «إظهار QR» موجود والمكتبة غير مستوردة في أي محرك؛ و«النتائج السابقة» تُجمع من الخادم ولا يرسمها أي قالب (لا عمود Previous في جدول Classic أصلاً).
lis-report-pdf.service.ts:984-990,126lis-print-report.service.ts:317,433
الحل: تنفيذ الميزتين مرة واحدة في الطبقة المشتركة أو إزالة إعداداتهما من الشاشة مؤقتاً (عدم إيهام المستخدم).
ثانوية
13 — القيمة الافتراضية للقالب من الخادم غير صالحةجهد صغير
الخادم يزرع lis.report_template = 'default' وهي قيمة لا تطابق أي قالب؛ ومحرك HTML يسقط للقالب Editorial وليس Classic عند قيمة مجهولة — معمل جديد قد يطبع بقالب لم يختره أحد.
LabSettingDefinitionSeeder.php:467-470lis-html-report.service.ts:46
الحل: توحيد الافتراضي على classic في الزارع والـ fallback.
ثانوية
14 — فلتر إخفاء أعضاء الباقة يعمل في مسار واحد من أربعةجهد صغير
hide_from_print مطبق في موصّل الموظفين فقط — Print Queue والبوابتان قد يطبعون أعضاء أخفاهم المعمل عمداً.
lis-print-report.service.ts:127-134lis-print-queue.component.ts:377-407
الحل: نقل الفلتر لطبقة تجهيز البيانات المشتركة (يحلّه توحيد المسارات تلقائياً).
ثانوية
15 — العربية في Classic: عريض غير مسجّل وتسميات إنجليزية ثابتةجهد صغير
خط NotoSansArabic مسجّل بوزن عادي فقط — طلب Bold للتعليقات العربية يفشل بصمت؛ وكل تسميات حقول الهيدر إنجليزية ثابتة حتى في التقارير العربية (مع خطأ إملائي «Reffering No.»)، والترخيص وهاتف/بريد المعمل لا تُطبع رغم توفرها.
lis-report-pdf.service.ts:338,516-518lis-report-pdf.service.ts:87-98lis-report-pdf.service.ts:204-211
الحل: تسجيل الوزن العريض، وتعريب التسميات وفق لغة التقرير، وإضافة الترخيص وقنوات الاتصال للهيدر/الفوتر.
ثانوية
16 — تفاصيل المزرعة (Culture): حقل disk_zone لا يُطبع + خطر تصادم مع الفوترجهد صغير
عمود قطر التثبيط في جدول الحساسية يرسمه قالب Document وحده؛ وفي Classic كتلة المزرعة بلا حارس تجاوز صفحة — قد تتصادم مع منطقة التوقيع، وقالبا الجهتين يستخدمان مكوّني عرض مزرعة مختلفين كلياً (انحراف نسخ-لصق).
lis-report-pdf.service.ts:664-684,764-773,173lis-html-report.service.ts:963-964,180
الحل: مكوّن مزرعة واحد مشترك بعمود disk_zone وحارس تجاوز.
ثانوية
17 — هشاشة بيئة الطباعة: خطوط من الإنترنت وقت الطباعةجهد صغير
القوالب الحديثة تحمّل خطوط Google من الإنترنت لحظة الطباعة — انقطاع الشبكة أو حجبها يطبع بخط بديل مكسور للعربية.
lis-html-report.service.ts:245,388,557,703
الحل: تضمين الخطوط محلياً ضمن أصول التطبيق (نفس ما يفعله Classic بخط مضمّن).