Couche service entre l'API et les repos SQLite : - list_stores avec enrichissement document_count via document_store_links - get/create/update/delete avec validations - Slug normalisé lowercase, motif kebab-case strict - Unicité name + slug (409 sur collision) - Single-default invariant via clear_default_except - Validation config par kind (OpenSearch require index_name) — extensible - Delete refusé sur le store seedé "default" et sur tout store avec liens - Erreurs typées (Validation/NotFound/Conflict) avec hint http_status |
||
|---|---|---|
| .. | ||
| __init__.py | ||
| analysis_service.py | ||
| document_service.py | ||
| ingestion_service.py | ||
| store_service.py | ||