Repository navigation
Description
📋 Description
Créer le squelette du service API (actuellement apps/api/ ne contient qu'un __init__.py vide, FastAPI n'est pas encore une dépendance du projet) pour que les endpoints métier (zones/at-risk, dashboard/kpis, etc.) aient une base commune sur laquelle se brancher : structure de dossiers, gestion d'erreurs, logging, CORS.
Ce ticket est un préalable bloquant à tous les tickets d'endpoints de cette base.
Préfixe de version /v1 dès le départ. Origines CORS via variable d'environnement (dev + prod), pas de hardcode.
GET /health
{ "status": "ok" }✅ Acceptance Criteria
-
fastapietuvicornajoutés aupyproject.tomlracine (uv add) - Structure
apps/api/respectant la séparationrouter/service/schemapar domaine (pas de logique métier dans les routers, pas d'accès DB direct hors depackages/clients) - Middleware CORS configuré (origines via variable d'environnement)
- Middleware de logging JSON branché sur
packages/clients/logs/logger_config.py(réutilisé, pas réécrit), avec unrequest_idgénéré par requête - Endpoint
GET /healthretournant 200 sans toucher la DB - Gestion d'erreurs cohérente : 400 (paramètres invalides), 404 (ressource inconnue), 500 (erreur non gérée) avec un corps JSON structuré identique sur toute l'API
- Schemas Pydantic de base pour les réponses GeoJSON (
FeatureCollection/Feature) réutilisables par les endpoints métier -
uv run apps.api(ou équivalent) démarre le serveur en local sans erreur
🔗 Prerequisite Issues
Foundations à réutiliser, pas à recréer :
-
intégrer SQLAlchemy + Alembic et centraliser l'accès DB (surcouche CRUD) #59 (intégrer SQLAlchemy + Alembic et centraliser l'accès DB) — closed, fournit
session_scope()/packages/clients/db -
Logging Backend Python #16 (Logging Backend Python) — closed, fournit
logger_config.pyà réutiliser tel quel -
Environnements (Dev / Prod) #18 (Environnements Dev / Prod) — open, la convention de chargement des variables d'environnement (
.env.local/.env.prod) doit être alignée avec ce ticket pour éviter de la redéfinir différemment ici
Source : Notion « Scaffold apps/api (FastAPI) » (API).
Activity