PARA.AI / api /models /requests.py
caarleexx's picture
Update api/models/requests.py
af4e83f verified
raw
history blame
3.11 kB
"""
Request models para a API
CORRIGIDO: model_config para evitar warning de namespace protegido
"""
from pydantic import BaseModel, Field, ConfigDict
from typing import Optional, List
from datetime import datetime
class ProcessingOptionsRequest(BaseModel):
"""
Opções de processamento de acórdãos.
CORRIGIDO: Adicionado model_config para desabilitar protected_namespaces
"""
# ✅ Configuração para permitir campos que começam com "model_"
model_config = ConfigDict(protected_namespaces=())
llm_provider: str = Field(
default="groq",
description="Provedor LLM (groq, openai, anthropic)"
)
model_type: str = Field(
default="balanced",
description="Tipo de modelo (fast, balanced, quality)"
)
enable_parallel: bool = Field(
default=True,
description="Processar especialistas em paralelo"
)
max_workers: int = Field(
default=3,
ge=1,
le=10,
description="Número de workers paralelos"
)
save_to_db: bool = Field(
default=False,
description="Salvar resultados no banco de dados"
)
specialist_ids: Optional[List[int]] = Field(
default=None,
description="IDs dos especialistas a executar (1-9), None = todos"
)
class AcordaoUploadRequest(BaseModel):
"""Request para upload de acórdão individual."""
acordao_id: str = Field(..., description="ID único do acórdão")
tribunal: str = Field(..., description="Tribunal (ex: TJPR)")
ementa: str = Field(..., description="Ementa do acórdão")
integra: str = Field(..., description="Texto integral do acórdão")
# Campos opcionais
numero_processo: Optional[str] = Field(None, description="Número do processo")
relator: Optional[str] = Field(None, description="Nome do relator")
data_julgamento: Optional[datetime] = Field(None, description="Data do julgamento")
classe_processual: Optional[str] = Field(None, description="Classe processual")
class BatchProcessingRequest(BaseModel):
"""Request para processamento em batch."""
acordaos: List[AcordaoUploadRequest] = Field(
...,
description="Lista de acórdãos a processar"
)
processing_options: ProcessingOptionsRequest = Field(
default_factory=ProcessingOptionsRequest,
description="Opções de processamento"
)
class TaskStatusRequest(BaseModel):
"""Request para consultar status de task."""
task_id: str = Field(..., description="ID da task")
class DatabaseQueryRequest(BaseModel):
"""Request para consultas ao banco de dados."""
tribunal: Optional[str] = Field(None, description="Filtrar por tribunal")
relator: Optional[str] = Field(None, description="Filtrar por relator")
date_from: Optional[datetime] = Field(None, description="Data inicial")
date_to: Optional[datetime] = Field(None, description="Data final")
limit: int = Field(default=100, ge=1, le=1000, description="Limite de resultados")
offset: int = Field(default=0, ge=0, description="Offset para paginação")