כללי שכבות – 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 ומונעים רגרסיות מבניות.