סקריפטים שימושיים
תיקיית scripts/ מכילה כלים חד-פעמיים ותהליכי תחזוקה. לפני ההרצה ודאו שסביבת ה-DB היא סביבת ניסוי/פיתוח ושיש גיבוי עדכני.
scripts/dev_seed.py
זורע סניפטים מתוך
SNIPPETS.mdאל ספריית הסניפטים (idempotent).בודק שה-DB מקומי כדי למנוע טעויות; ניתן לעקוף עם
--forceאוALLOW_SEED_NON_LOCAL=1.משייך סניפטים למשתמש המוגדר בקובץ (user_id=0) ומסמן אותם כמאושרים.
דוגמת הרצה:
# עבודה מול DB מקומי
MONGODB_URL="mongodb://localhost:27017/code_keeper_bot" python scripts/dev_seed.py
scripts/import_snippets_from_markdown.py
מייבא סניפטים מקובץ או URL (כולל GitHub/Gist) באמצעות ניתוח Markdown.
ניתן לבצע
--dry-runכדי לראות כמה סניפטים ייווצרו ללא כתיבה.ברירת המחדל מאשרת אוטומטית את הסניפטים החדשים; ניתן לבטל עם
--no-approve.
דוגמת הרצה:
scripts/import_snippets_from_markdown.py --source docs/new-snippets.md --user-id 42 --username "Ops Bot"
scripts/migrate_workspace_collections.py
מייצר אוסף ”שולחן עבודה“ לכל משתמש שחסר לו אחד כזה (idempotent).
נשען על
CollectionsManagerומייבאget_dbבזמן ריצה כדי למנוע תלות מעגלית.מדפיס סיכום בסיום (כמה משתמשים נבדקו וכמה אוספים נוצרו).
scripts/run_log_aggregator.py
מפעיל את
monitoring.log_analyzer.LogEventAggregatorעל stdin ומנתח לוגים בזמן אמת.צורך קובצי חתימות וקונפיגורציית התראות:
ERROR_SIGNATURES_PATH(ברירת מחדלconfig/error_signatures.yml) ו-ALERTS_GROUPING_CONFIG(ברירת מחדלconfig/alerts.yml).תומך בטעינה מחודשת מחזורית של חתימות דרך
LOG_AGG_RELOAD_SECONDSובמצב debug שמדפיס התאמות עםLOG_AGG_ECHO=1.
שימוש אופייני:
tail -F logs/app.log | LOG_AGG_ECHO=1 python scripts/run_log_aggregator.py
scripts/start_webapp.sh
מעטפת ל-Gunicorn עבור webapp/ עם הפקת
ASSET_VERSIONאוטומטית והפעלת warmup best-effort ל-/healthz.מכבד
PORT(ברירת מחדל 5000),WEBAPP_WSGI_APPופרמטרי warmup (WEBAPP_ENABLE_WARMUP/WEBAPP_WARMUP_URL/WEBAPP_WARMUP_MAX_ATTEMPTS/WEBAPP_WARMUP_DELAY_SECONDS).ברירת המחדל היא worker יחיד עם
gevent; ניתן לשלוט ב-WEB_CONCURRENCY/WEBAPP_GUNICORN_WORKERS,WEBAPP_GUNICORN_WORKER_CLASS,WEBAPP_GUNICORN_WORKER_CONNECTIONS(ל-gevent) ו-WEBAPP_GUNICORN_THREADS(ל-gthread).משמש להפעלה מקומית או ב-Render/Heroku כאשר אין Supervisor חיצוני.
scripts/start_with_worker.sh
מפעיל את הבוט Python (
python main.py) ובמידת הצורך גם Worker מבוסס Node לטיפול ב-Web Push.קורא קובץ
.env.worker(לא מנוהל ב-git) כדי לטעון מפתחות VAPID פרטיים רק לתהליך ה-Worker.מגדיר
PUSH_DELIVERY_URLמקומי אם ה-Worker רץ על אותה מכונה וממתין ל-healthcheck קצר כדי למנוע race conditions.
scripts/run_all.sh
מריץ שני תהליכים באותו קונטיינר: ה-WebApp (Gunicorn דרך
scripts/start_webapp.sh) וגם שירותAI Explain(AioHTTP דרךpython -m services.webserver).מגדיר ברירת מחדל ל-
OBS_AI_EXPLAIN_URLל-http://127.0.0.1:<internal_port>/api/ai/explainכאשר המשתנה לא הוגדר, כדי שהדשבורד יפנה פנימה.אמינות: אם אחד מהתהליכים נסגר/נופל, הסקריפט עוצר גם את השני ויוצא עם קוד שגיאה (כדי שהקונטיינר לא ימשיך “חצי עובד”).
משתני סביבה שימושיים:
OBS_AI_EXPLAIN_INTERNAL_PORT(ברירת מחדל:11000)OBS_AI_EXPLAIN_INTERNAL_HOST(ברירת מחדל:127.0.0.1)OBS_AI_EXPLAIN_RUN_LOCAL_SERVICE(ברירת מחדל:true)WEBAPP_START_SCRIPT(ברירת מחדל:scripts/start_webapp.sh)