# AGENTS.python.md — Python/FastAPI Konventionen ## Architektur - `routes/` oder `api/`: Request/Response nur — kein Business Logic - `services/`: Business Logic - `repositories/`: Persistenz/Data Access - `schemas/`: Pydantic Models, nach Domain gesplittet - `tests/`: Spiegelt Produktions-Layout ## Regeln 1. Route-Dateien duenn halten (≤300 LOC) 2. Wenn eine Route-Datei 300-400 LOC erreicht → nach Resource/Operation splitten 3. Schema-Dateien nach Domain splitten wenn sie wachsen 4. Modul-Level Singleton-Kopplung vermeiden (Tests patchen falsches Symbol) 5. Patch immer das Symbol das vom getesteten Modul importiert wird 6. Dependency Injection bevorzugen statt versteckte Imports 7. Pydantic v2: `from __future__ import annotations` NICHT verwenden (bricht Pydantic) 8. Migrationen getrennt von Refactorings halten ## Split-Trigger - Datei naehert sich oder ueberschreitet 500 LOC - Zirkulaere Imports erscheinen - Tests brauchen tiefes Patching - API-Schemas mischen verschiedene Domains - Service-Datei macht Transport UND DB-Logik ## Verifikation ```bash ruff check . mypy . --ignore-missing-imports --no-error-summary pytest tests/ -x -q --no-header ```