כללי שכבות – CodeBot
מטרה: לשמור גבולות שכבות ברורים ולמנוע תלות מעגלית/דליפת תשתית.
שכבות
domain: ישויות, שירותים טהורים (ללא IO). אין תלות ב־handlers/infra/services/database.
application: תזמור Use-Cases וממשקים. תלות ל־domain בלבד (לא infra/handlers).
infrastructure: מתאמים ל־DB/חוץ. יכול לתלות ב־domain, לא ב־handlers.
handlers (UI/Bot): תלות ב־application בלבד. גישה ל־infra דרך ה־Composition Root.
Composition Root
src/infrastructure/composition/get_snippet_service()הוא נקודת הקמה לשירותים.handlers צורכים את השירות דרך ה־container בלבד.
זיהוי שפה – מקור אמת
src/domain/services/language_detector.LanguageDetectorהוא מקור האמת.services.code_service.detect_languageמשמש adapter עם fallbacks לתאימות אחורה.utils.detect_language_from_filenameמפנה לדומיין תחילה.
בדיקות אכיפה
טסטים אוטומטיים ב־tests/unit/architecture/test_layer_boundaries.py:
domain לא מייבא handlers/infra/services/database/webapp.
application לא מייבא handlers/infra/database/webapp.
handlers לא מייבאים domain או infra ישירות (למעט
src.infrastructure.composition).infrastructure לא מייבא handlers.
טסטים אלה רצים ב־CI ומונעים רגרסיות מבניות.