ميزة تسليط الضوء: تكامل واجهة سطر الأوامر (CLI).¶
**إهداء إلى صديقي المهم جدًا، لوب.**
توفر واجهة سطر الأوامر (CLI) الجديدة المستندة إلى FastAPI طريقة نظيفة ومتزامنة للتفاعل مع خدمة معالجة النصوص الأساسية قيد التشغيل لدينا من أي غلاف محلي أو بعيد. يعد هذا حلاً قويًا مصممًا لدمج المنطق الأساسي في بيئات Shell.
---
## 1. الهندسة المعمارية ومفهوم CLI المتزامن
يتم تشغيل الخدمة بواسطة خادم Uvicorn/FastAPI وتستخدم نقطة نهاية مخصصة (/process_cli) لتقديم نتيجة (حظر) متزامنة من عملية خلفية قائمة على الملفات وغير متزامنة بطبيعتها.
استراتيجية الاقتراع بالانتظار والقراءة¶
تجاوز المخرجات الفريدة: تنشئ واجهة برمجة التطبيقات (API) دليلاً مؤقتًا فريدًا لكل طلب.
بدء العملية: يستدعي
process_text_in_backgroundلتشغيل المنطق الأساسي في سلسلة رسائل غير محظورة، وكتابة النتيجة في ملفtts_output_*.txtداخل هذا المجلد الفريد.الانتظار المتزامن: تقوم وظيفة API بعد ذلك بحظر واستقصاء المجلد الفريد حتى يتم إنشاء ملف الإخراج أو الوصول إلى المهلة المحددة.
تسليم النتيجة: تقرأ واجهة برمجة التطبيقات (API) محتوى الملف، وتقوم بإجراء التنظيف اللازم (حذف الملف والدليل المؤقت)، وإرجاع النص النهائي الذي تمت معالجته في حقل “نص_النتيجة” الخاص باستجابة JSON.
وهذا يضمن أن عميل CLI يتلقى استجابة فقط بعد اكتمال معالجة النص، مما يضمن تجربة الصدفة الموثوقة.
2. الوصول عن بعد ورسم خرائط منافذ الشبكة¶
للسماح بالوصول من عملاء بعيدين مثل محطة Lub، كان تكوين الشبكة التالي مطلوبًا، لمعالجة القيد الشائع المتمثل في توفر منفذ خارجي محدود:
### الحل: تعيين المنافذ الخارجية
نظرًا لأن الخدمة تعمل داخليًا على المنفذ 8000 وبيئة شبكتنا تحد من الوصول الخارجي إلى نطاق منافذ معين (على سبيل المثال، 88__-8831)، فقد قمنا بتنفيذ تعيين المنافذ على جهاز التوجيه (Fritz!Box).
| نقطة النهاية | البروتوكول | ميناء | الوصف |
| :— | :— | :— | :— |
| خارجي/عام | برنامج التعاون الفني | 88__ (مثال) | المنفذ الذي يجب أن يستخدمه العميل (Lub). |
| داخلي/محلي | برنامج التعاون الفني | 8000 | المنفذ الذي تستمع إليه خدمة FastAPI فعليًا (--المنفذ 8000). |
يقوم جهاز التوجيه بترجمة أي اتصال وارد على المنفذ الخارجي (‘88__) إلى المنفذ الداخلي ('8000) للجهاز المضيف، مما يجعل الخدمة متاحة عالميًا دون تغيير تكوين الخادم الأساسي.
## 3. استخدام عميل CLI
يجب تكوين العميل باستخدام عنوان IP العام والمنفذ الخارجي ومفتاح API الصحيح.
### بناء جملة الأمر النهائي
__CODE_BLOCK_0__