response_models.py
1 """ 2 Modèles Pydantic standardisés pour les réponses d'API 3 --------------------------------------------------- 4 Ce module définit les modèles de réponse communs pour assurer la cohérence des API. 5 """ 6 7 from pydantic import BaseModel, Field 8 from typing import Dict, List, Optional, Any, Union 9 from datetime import datetime 10 11 class ErrorResponse(BaseModel): 12 """Modèle standard pour les réponses d'erreur""" 13 detail: str 14 code: Optional[str] = None 15 params: Optional[Dict[str, Any]] = None 16 17 class SuccessResponse(BaseModel): 18 """Modèle pour les réponses de succès simples""" 19 success: bool = True 20 message: Optional[str] = None 21 22 class TaskResponse(BaseModel): 23 """Modèle pour la création d'une tâche""" 24 task_id: str 25 status: str 26 message: Optional[str] = None 27 28 class TaskStatusResponse(BaseModel): 29 """Modèle pour l'état d'une tâche""" 30 status: str 31 progress: float 32 message: Optional[str] = None 33 started_at: Optional[float] = None 34 completed_at: Optional[float] = None 35 error: Optional[str] = None 36 results: Optional[Dict[str, Any]] = None 37 38 class TaskListResponse(BaseModel): 39 """Modèle pour la liste des tâches""" 40 total: int 41 tasks: Dict[str, TaskStatusResponse] 42 43 # Modèles spécifiques aux modules 44 class VideoAnalysisResponse(TaskResponse): 45 """Modèle pour les réponses d'analyse vidéo""" 46 video_id: str 47 analysis_type: str 48 49 class TranscriptionResponse(TaskResponse): 50 """Modèle pour les réponses de transcription""" 51 video_id: str 52 transcription_type: str 53 54 class VideoExtractionResponse(BaseModel): 55 """Response model for video extraction operations""" 56 content: str 57 file_path: Optional[str] = None 58 message: str = "Video extraction successful" 59 60 class NonverbalAnalysisResponse(BaseModel): 61 """Modèle de réponse pour l'analyse non verbale""" 62 analysis: Any # Contient l'analyse des indices non verbaux 63 message: str = "Nonverbal cues analysis successful"