63 lines
1.4 KiB
Python
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
|