Files
ranking/backend/src/interface/schemas/ranking_schema.py
2025-12-10 13:49:43 -03:00

63 lines
1.4 KiB
Python

from pydantic import BaseModel, Field
from typing import Optional, List
from datetime import datetime
class ConsultorRankingResumoSchema(BaseModel):
id_pessoa: int
nome: str
posicao: Optional[int]
pontuacao_total: float
componente_a: float
componente_b: float
componente_c: float
componente_d: float
ativo: bool
anos_atuacao: float
consultoria: Optional[dict] = None
class RankingPaginadoResponseSchema(BaseModel):
total: int
page: int
size: int
total_pages: int
consultores: List[ConsultorRankingResumoSchema]
class EstatisticasRankingSchema(BaseModel):
total_consultores: int
total_ativos: int
total_inativos: int
ultima_atualizacao: Optional[str]
pontuacao_media: float
pontuacao_maxima: float
pontuacao_minima: float
media_componentes: dict
distribuicao: List[dict]
class JobStatusSchema(BaseModel):
running: bool
progress: int
processados: int
total: int
mensagem: str
batch_atual: int
total_batches: int
tempo_decorrido: Optional[str]
tempo_estimado: Optional[str]
inicio: Optional[str]
fim: Optional[str]
erro: Optional[str]
class ProcessarRankingRequestSchema(BaseModel):
limpar_antes: bool = Field(default=True, description="Se deve limpar a tabela antes de processar")
class ProcessarRankingResponseSchema(BaseModel):
sucesso: bool
mensagem: str
job_id: Optional[str] = None