Corrige calculo do Componente C (Consultoria)

- Adiciona campo vezes_responsavel na entidade Consultoria
- Corrige calculo de base: usa eventos_recentes > 0 (nao string situacao)
- Implementa calculo de extras:
  - extras_eventos: 2 pts/evento (max 20)
  - extras_responsavel: 5 pts/vez (max 25)
  - extras_areas: 10 pts/area extra (max 30)
- Extrai dados de consultorResponsavel dos eventos no repository
- Atualiza DTOs e schemas para incluir novo campo
This commit is contained in:
Frederico Castro
2025-12-13 11:57:33 -03:00
parent 8a8b4230c2
commit b18ae8199c
7 changed files with 32 additions and 12 deletions

View File

@@ -134,16 +134,19 @@ class ConsultorRepositoryImpl(ConsultorRepository):
total_eventos = len(eventos_sae)
limite_recente = datetime.now() - timedelta(days=730)
eventos_recentes = 0
vezes_responsavel = 0
for ev in eventos_sae:
data_fim = self._parse_date(ev.get("fim")) or self._parse_date(ev.get("inicio"))
if data_fim and data_fim >= limite_recente:
eventos_recentes += 1
dados_evento = ev.get("dadosEvento", {}) or {}
if dados_evento.get("consultorResponsavel") == "Sim":
vezes_responsavel += 1
primeiro_evento = min(p.inicio for p in periodos)
ultimo_evento = max((p.fim or datetime.now()) for p in periodos) if not ativo else datetime.now()
areas = list(set(areas)) if areas else ["N/A"]
vezes_responsavel = sum(1 for c in consultorias if c.get("responsavel", False))
situacao_final = situacoes[0] if situacoes else "N/A"
@@ -152,12 +155,12 @@ class ConsultorRepositoryImpl(ConsultorRepository):
eventos_recentes=eventos_recentes,
primeiro_evento=primeiro_evento,
ultimo_evento=ultimo_evento,
vezes_responsavel=vezes_responsavel,
areas=areas,
situacao=situacao_final,
anos_completos=anos_total,
anos_consecutivos=anos_consecutivos,
retornos=retornos,
vezes_responsavel=vezes_responsavel,
)
def _extrair_coordenacoes_capes(