/ api / response_models.py
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"