آخر تحديث: 2026-07-14
| المشكلة | الحل | Commit |
|---|---|---|
| RTL fixing بعد OCR | src/ocr/rtl_utils.py |
d8c854d |
| Qdrant integration | packages/core/engine_registry.py + smoke test |
973979c |
| qdrant-client استيراد ثقيل | نقل لاختياري [search] extra |
5dcdf9b |
| Vision eager imports (14 استيراد) | __getattr__ lazy loading |
8645576 / 881e63e |
| 73 استيراد مكسور بعد حذف جماعي | استعادة 3 ملفات + إصلاح 3 استيراد | a35eaa1 / 46fd895 |
| 85 ملف مكرر 100% | حذف + فحص استيراد إلزامي | f8dab72 |
| field-aware dedup حالة الحافة | إصلاح + اختبار | c440683 |
| scanner_fixer_wrapper.py مفقود | إنشاء الملف | 25171e8 |
فروقات وظيفية حقيقية (>10 أسطر) تحتاج قراراً بشرياً لكل ملف. تم تقليصها من 117.
داخل variants/ و hf-space/ و legacy/api_server.py. لا توجد استيرادات خارجية لكنها تحتاج مراجعة محتوى قبل الحذف.
تسمية مجلدات: data-prep vs data_prep و omni-ocr vs omni_ocr. ليست ناتجة عن التنظيف — مشكلة تسمية أصلية.
تم تنفيذها بلا مراجعة بشرية فردية. قد تحتوي تغييرات سلوكية غير مقصودة. يُنصح بمراجعة diff الكامل.
تم توثيق الأسباب الجذرية في PYTEST_REPORT.md:
test_detect_medical_category_fracture: regexCTبدون حد كلمة يطابق "ct" داخل "fracture"test_detect_medical_category_generic: regextestبدون حد كلمة يطابق الكلمة العادية "test"test_export_to_json:{k: row[k] for k in row}علىsqlite3.Rowيعطي قيماً لا أسماء أعمدة
تم تقليل الجذر (requirements-dev.txt) إلى compatibility wrapper، لكن بقية الملفات القديمة ما زالت بحاجة ترحيل تدريجي إلى pyproject.toml extras. انظر docs/DEPENDENCY_STRATEGY.md.
تم إصلاح المراجع المحلية فقط. repos البعيدة (repo-sync-toolkit، medical-ocr-trainer-hf، intelli-file-manager، sync-github) تحتاج إصلاحاً مباشراً على GitHub.
الوضع الحالي: packages/handwriting/modules/vision/__init__.py يستورد from modules.vision.ocr_engine import OCREngine — أي يتوقع ocr_engine.py محليًا داخل شجرة handwriting. لكن النسخة "الأساسية" المفردة موجودة في packages/vision/ocr_engine.py. الحل الفوري كان نسخ الملف محليًا (73+3 ملف).
السؤال: هل التصميم الصحيح طويل المدى هو:
- (أ) الاحتفاظ بنسخ محلية في كل حزمة مدمجة (الحل الحالي — بسيط لكنه يُضعِف التناسق)؟
- (ب) تعديل كل
__init__.pyللاستيراد من الموقع المركزيpackages/vision/ocr_engine.pyبدل النسخ المحلية (نظيف معماريًا لكنه يحتاج تعديل مئات الاستيرادات وإعادة اختبار شاملة)؟ - (ج) إزالة الحزم المدمجة بالكامل واستبدالها بـ symlinks أو إعادة توجيه imports؟
الإصلاح الحالي (أ) هو الحل الآمن الفوري فقط — هذا قرار معماري لـ Malek.
رغم التنظيف، بقيت تكرارات جزئية في:
packages/file_processor/— vspackages/core/وpackages/vision/packages/handwriting/— نسخ محلية من ملفات Pythonpackages/omnifile/— تكرار جزئيpackages/doc-processor//packages/doc_processor/— نسخ منcore/packages/bilingual/— نسخ منnlp/
data-prepvsdata_prep(kebab-case vs snake_case)omni-ocrvsomni_ocrdoc-processorvsdoc_processor
- مراجعة الـ 18 ملف المعلق (CATEGORY_B_FINAL_PENDING.md) — قرار بشري لكل ملف
- مراجعة الـ 162 ملف legacy (LEGACY_REVIEW_FINAL.md) — حذف أو أرشفة
- توحيد تسمية المجلدات — اختيار kebab-case أو snake_case وتطبيقه
- حل السؤال المعماري (أ/ب/ج) — قرار من Malek
- مراجعة ruff auto-fix diff — التأكد من عدم تغييرات سلوكية
- إصلاح 3 أخطاء tmx_processor.py — regex bounds + sqlite3.Row
- ترحيل requirements.txt* — إلى
pyproject.tomlextras تدريجياً - إصلاح المراجع المكسورة في المستودعات البعيدة — على GitHub
- حل التكرار الجزئي في الحزم المُدمجة — بعد قرار المعمار