Spaces:
Runtime error
Runtime error
| """ | |
| Response models para para.AI API v3.0 | |
| Define estrutura de responses para todos os endpoints | |
| """ | |
| from typing import Optional, Dict, List, Any | |
| from datetime import datetime | |
| from pydantic import BaseModel, Field | |
| from enum import Enum | |
| # ============================================================================ | |
| # ENUMS | |
| # ============================================================================ | |
| class ProcessingStatus(str, Enum): | |
| """Status de processamento.""" | |
| PENDING = "pending" | |
| PROCESSING = "processing" | |
| COMPLETED = "completed" | |
| ERROR = "error" | |
| CANCELLED = "cancelled" | |
| # ============================================================================ | |
| # HEALTH & STATUS | |
| # ============================================================================ | |
| class HealthResponse(BaseModel): | |
| """Response do health check.""" | |
| status: str = Field(..., description="Status geral (healthy/degraded/unhealthy)") | |
| version: str = Field(..., description="Versão da API") | |
| environment: str = Field(..., description="Ambiente (production/development)") | |
| timestamp: datetime = Field(..., description="Timestamp do check") | |
| uptime_seconds: float = Field(..., description="Tempo de uptime em segundos") | |
| services: Dict[str, bool] = Field(default_factory=dict, description="Status dos serviços") | |
| metrics: Dict[str, Any] = Field(default_factory=dict, description="Métricas do sistema") | |
| # ============================================================================ | |
| # PROCESSING | |
| # ============================================================================ | |
| class ProcessingResponse(BaseModel): | |
| """Response de processamento.""" | |
| task_id: str = Field(..., description="ID único da task") | |
| status: ProcessingStatus = Field(..., description="Status atual") | |
| message: str = Field(..., description="Mensagem descritiva") | |
| total_records: int = Field(default=0, description="Total de registros") | |
| processed_records: int = Field(default=0, description="Registros processados") | |
| failed_records: int = Field(default=0, description="Registros com falha") | |
| started_at: Optional[datetime] = Field(default=None, description="Início do processamento") | |
| completed_at: Optional[datetime] = Field(default=None, description="Fim do processamento") | |
| download_url: Optional[str] = Field(default=None, description="URL para download") | |
| errors: List[str] = Field(default_factory=list, description="Lista de erros") | |
| result_metadata: Optional[Dict[str, Any]] = Field(default=None, description="Metadados do resultado") | |
| class FileInfoResponse(BaseModel): | |
| """Informações sobre arquivo.""" | |
| filename: str = Field(..., description="Nome do arquivo") | |
| size_bytes: int = Field(..., description="Tamanho em bytes") | |
| hash_sha256: str = Field(..., description="Hash SHA256") | |
| created_at: datetime = Field(..., description="Data de criação") | |
| # ============================================================================ | |
| # DEBUG & INFO | |
| # ============================================================================ | |
| class SystemInfoResponse(BaseModel): | |
| """Informações do sistema.""" | |
| python_version: str | |
| environment: str | |
| debug_mode: bool | |
| paths: Dict[str, str] | |
| llm_config: Dict[str, Any] | |
| database: Dict[str, Any] | |
| class LLMTestResponse(BaseModel): | |
| """Response de teste de LLM.""" | |
| provider: str | |
| model: str | |
| success: bool | |
| response: Optional[str] = None | |
| tokens_used: Optional[int] = None | |
| duration_ms: float | |
| error: Optional[str] = None | |
| class ProcessorTestResponse(BaseModel): | |
| """Response de teste de processador.""" | |
| processor_name: str | |
| success: bool | |
| result: Optional[Dict[str, Any]] = None | |
| duration_ms: float | |
| error: Optional[str] = None | |
| class DatabaseStatsResponse(BaseModel): | |
| """Estatísticas do banco de dados.""" | |
| total_acordaos: int | |
| total_tribunais: int | |
| total_usuarios: int | |
| total_decisoes: int | |
| database_size_mb: Optional[float] = None | |
| # ============================================================================ | |
| # GENERIC | |
| # ============================================================================ | |
| class MessageResponse(BaseModel): | |
| """Response genérica com mensagem.""" | |
| message: str | |
| details: Optional[Dict[str, Any]] = None | |
| class ErrorResponse(BaseModel): | |
| """Response de erro.""" | |
| error: str | |
| message: str | |
| details: Optional[Dict[str, Any]] = None | |
| timestamp: datetime = Field(default_factory=datetime.now) | |