مراجعة مطلوبة من Malek قبل الدمج النهائي
| المقياس | القيمة |
|---|---|
| الملف الأصلي (main) | 944 سطر |
| الملف الجديد (branch) | 11 سطر |
| الأسطر المحذوفة | 938 |
| الأسطر المضافة | 5 (تعليق + import + if main) |
| النسبة | -98.8% |
"""Compatibility shim for the previous Gradio entrypoint.
The canonical Gradio UI now lives in ``app/advanced_review_app.py`` with the
three review-oriented tabs requested in the July 2026 refactor.
"""
from app.advanced_review_app import demo
if __name__ == "__main__":
demo.launch(server_name="0.0.0.0", server_port=7860)| # | الوظيفة | أهمية | موجودة في advanced_review_app.py؟ |
|---|---|---|---|
| 1 | رفع صورة → preprocessing → OCR ensemble (PaddleOCR + Tesseract) | حرجة | ❌ لا |
| 2 | تصحيح إملائي هجين (HybridSpellChecker v7.1) | حرجة | ❌ لا |
| 3 | تدقيق LLM بـ Jais (ENABLE_LLM=true) | مهمة | ❌ لا |
| 4 | استخراج كيانات طبية (NER) | مهمة | ❌ لا |
| 5 | حفظ التصحيحات في HF Dataset | مهمة | ❌ لا |
| 6 | تحديث القاموس الطبي من التصحيحات | متوسطة | ❌ لا |
| 7 | إعادة تدريب Jais NER | متوسطة | ❌ لا |
| 8 | ترجمة طبية (4 اتجاهات مع تصحيح) | متوسطة | ❌ لا |
| 9 | حاسبة CER/WER مع jiwer | متوسطة | ❌ لا |
| 10 | Before/After comparison | منخفضة | ❌ لا (يوجد Compare tab لكن بنهج مختلف) |
الخلاصة: 10 وظائف لم تُنقَل إلى advanced_review_app.py — الشيم يُحمِّل فقط demo لكنه لا يوفر أيًا من الوظائف الأصلية.
12 ملفًا آخر في المستودع تُشير إلى gradio_full_hitl.py:
| الملف | نوع الإشارة | التأثير |
|---|---|---|
STATE_OF_TRUTH.md |
وثيقة | ✅ مُحدَّث ("compatibility shim") |
README.md |
وثيقة | ✅ مُحدَّث (يُشير لـ advanced_review_app.py) |
docs/ROADMAP_2026_Q3.md |
وثيقة | ✅ يذكر التحويل صراحة |
docs/DEPLOYMENT.md |
وثيقة | |
docs/RELEASE_NOTES.md |
وثيقة | |
Dockerfile.review |
Docker | gradio_full_hitl.py — سيُشغّل advanced_review_app.py عبر الشيم |
requirements/gradio.txt |
متطلبات | ✅ مُحدَّث |
GRADIO_APPS_DECISION.md |
قرار | |
VERIFICATION_LOG.md |
سجل | تاريخي |
CONTRIBUTING.md |
مساهمة | |
app/gradio_extended.py |
كود | |
apps/handwriting-demo/README.md |
وثيقة HF | تاريخي |
CMD ["python", "app/gradio_full_hitl.py"]سيُشغّل advanced_review_app.py عبر الشيم — لكن هذا التطبيق يتطلب QdrantMedicalSearch و EngineRouter و ArabicMedicalFieldExtractor في مستوى الوحدة العليا. إذا فشل أي استيراد، سيفشل Docker container بالكامل.
advanced_review_app.py يعمل بالنص فقط (3 حقول نصية). النسخة الأصلية كانت تقبل رفع صور فعلية عبر gr.Image(type="numpy"). هذا يعني أن طريق معالجة الصور → OCR → تصحيح مفقود بالكامل في الواجهة الجديدة.
هذا استيراد قد يفشل في بعض سياقات التشغيل:
- إذا لم تكن
gradioمُثبَّتة (النسخة الأصلية كانت تتعامل معImportErrorبـ gradio) - إذا لم تكن
QdrantMedicalSearchقادرة على الاستيراد (رغم الـ fallback)
3 خيارات أمام Malek:
"""Compatibility shim ..."""
import warnings
warnings.warn(
"app/gradio_full_hitl.py is deprecated — use app/advanced_review_app.py",
DeprecationWarning,
stacklevel=2,
)
from app.advanced_review_app import demoالمخاطرة: المستخدمون الذين يعتمدون على الوظائف الأصلية (رفع صور، Jais، HF save) سيكتشفون أنها مفقودة فقط في وقت التشغيل.
نقل الوظائف الـ 10 المفقودة إلى advanced_review_app.py أو إلى ملف جديد app/full_pipeline_app.py. هذا يتطلب عملًا إضافيًا لكنه يحافظ على التوافق الكامل.
أبقِ الفرع الجديد يضيف فقط الوحدات الجديدة (rtl_utils, field_extractor, deduplication, engine_router تحديث) و advanced_review_app.py كتطبيق إضافي جديد بدل بديل.
Malek قرر: لا يُدمَج استبدال gradio_full_hitl.py. الوحدات المستقلة القيّمة تُدمَج لـ main، بينما advanced_review_app.py يبقى تطبيقًا تجريبيًا منفصلًا.
app/gradio_full_hitl.py— استُعيد منmain(944 سطر، 10 وظائف سليمة)app/advanced_review_app.py— بقي كتطبيق تجريبي جديد (غير مُعتمَد للإنتاج)- كل المراجع في STATE_OF_TRUTH، README، ROADMAP، GRADIO_APPS_DECISION، CONTRIBUTING، Dockerfile.review حُدِّثت لتعكس هذا القرار