"""Modèles Pydantic du contrat HTTP — voir le plan de migration pour le contrat exact attendu côté `apps/api` (`IntentServiceClient`, `apps/api/src/lib/recipe-matching/intent-service-client.ts`). Pas de `POST /v1/train` ici — ce service s'entraîne lui-même au démarrage depuis `training_data.py` (voir `pipeline_registry.py`/`main.py`), plus besoin d'un contrat HTTP pour ça. """ from pydantic import BaseModel # --------------------------------------------------------------------------- # POST /v1/process # --------------------------------------------------------------------------- class ProcessRequest(BaseModel): locale: str text: str class EntityPayload(BaseModel): """Une mention candidate d'une technique — offsets caractère `[start, end)` dans `text`, convention identique à `String.prototype.slice` côté `apps/api` (pas de décalage `+1` à appliquer côté Node, contrairement à l'ancien `NlpManager` de node-nlp).""" uid: str start: int end: int class ProcessResponse(BaseModel): entities: list[EntityPayload] intent: str | None score: float # --------------------------------------------------------------------------- # GET /health # --------------------------------------------------------------------------- class HealthResponse(BaseModel): status: str