دليل المطور: إنشاء الرسم البياني لاستدعاء الخدمة¶
يصف هذا المستند الطريقة القوية والآمنة لإنشاء رسم بياني للاتصال المرئي لـ “aura_engine.py” الذي يعمل لفترة طويلة. نستخدم ملف التعريف yappi (لدعم الخيوط المتعددة) وgprof2dot للتصور.
### المتطلبات الأساسية
تأكد من تثبيت الأدوات اللازمة عالميًا أو في بيئتك الافتراضية:
# Required Python libraries for profiling
pip install yappi gprof2dot
# Required system library for visualization
# Linux: sudo apt install graphviz
### الخطوة 1: تعديل الخدمة الخاصة بالتوصيف
يجب تعديل البرنامج النصي aura_engine.py لبدء تشغيل ملف تعريف yappi يدويًا وحفظ بيانات ملفات التعريف بأمان عند المقاطعة (Ctrl+C).
**التغييرات الرئيسية في `aura_engine.py`:**
** معالج الواردات والإشارة: ** قم باستيراد
yappiوحدد وظيفةgenerate_graph_on_interrupt(كما تم تنفيذها سابقًا) لاستدعاءyappi.stop()وstats.save(...).Start/Stop: أضف
yappi.start()وsignal.signal(signal.SIGINT, ...)داخل الكتلةif __name__ == "__main__":لتغليف تنفيذmain(...).
الخطوة الثانية: تشغيل الخدمة وجمع البيانات¶
قم بتشغيل البرنامج النصي المعدل مباشرة واسمح له بمعالجة البيانات لفترة كافية (على سبيل المثال، 10-20 ثانية) لضمان استدعاء جميع الوظائف الأساسية، بما في ذلك الوظائف المترابطة (مثل تصحيح LanguageTool).
# Execute the service directly (do NOT use the pycallgraph wrapper)
python3 aura_engine.py
اضغط على Ctrl+C مرة واحدة لتشغيل معالج الإشارة. سيؤدي هذا إلى إيقاف ملف التعريف وحفظ البيانات الأولية في:
`\mathbf{yappi\_profile\_data.prof`
الخطوة 3: إنشاء الرسم البياني المرئي وتصفيته¶
نستخدم “gprof2dot” لتحويل بيانات “pstats” الأولية إلى تنسيق SVG. نظرًا لأن خيارات التصفية المتقدمة مثل --include و--threshold قد لا تكون مدعومة من قبل بيئتنا المحددة، فإننا نستخدم مرشح --strip الأساسي لتنظيف معلومات المسار وتقليل الفوضى من الأجزاء الداخلية للنظام.
**تنفيذ أمر التصور:**
python3 -m gprof2dot -f pstats yappi_profile_data.prof --strip | dot -Tsvg -o yappi_call_graph_stripped.svg
### الخطوة 4: التوثيق (قص يدوي)
سيكون الملف الناتج yappi_call_graph_stripped.svg (أو .png) كبيرًا، ولكنه يحتوي بدقة على تدفق التنفيذ الكامل، بما في ذلك جميع سلاسل الرسائل.
لأغراض التوثيق، قم بقص الصورة يدويًا للتركيز على المنطق المركزي (العقد الأساسية 10-20 واتصالاتها) لإنشاء رسم بياني مركز وقابل للقراءة لوثائق المستودع.
### الأرشفة
يجب أرشفة ملف التكوين المعدل والتصور النهائي لـ Call Graph في دليل مصدر الوثائق:
| قطعة أثرية | الموقع |
| :--- | :--- |
| ملف الخدمة المعدل | doc_sources/profiling/aura_engine_profiling_base.py |
| الصورة النهائية التي تم اقتصاصها | doc_sources/profiling/core_logic_call_graph.svg |
| بيانات ملفات التعريف الأولية | (اختياري: يجب استبعاده من وثائق المستودع النهائية) |
