"""`POST /v1/process` — appelé par `apps/api` (`IntentServiceClient.process`) en remplacement direct de l'ancien `NlpManager.process(locale, text)`. Voir `LocalePipeline.process` pour la sémantique exacte (locale non entraînée ou `text` vide -> résultat vide, jamais une erreur). """ from fastapi import APIRouter, Depends from ..pipeline_registry import registry from ..schemas import EntityPayload, ProcessRequest, ProcessResponse from ..security import require_valid_secret router = APIRouter(dependencies=[Depends(require_valid_secret)]) @router.post("/v1/process", response_model=ProcessResponse) def process(request: ProcessRequest) -> ProcessResponse: result = registry.process(request.locale, request.text) return ProcessResponse( entities=[EntityPayload(uid=entity.uid, start=entity.start, end=entity.end) for entity in result.entities], intent=result.intent, score=result.score, )