portal_publico/portal_api/indicadores/departamentos.py

32 lines
1.6 KiB
Python

"""Resolução de departamento por gerente — substitui o antigo módulo
`setores.py` (coluna bruta "departamento" da planilha Tareffa + fusão
automática Contabilidade/Fiscal→Fisco-Contábil + `IndicadorSetorApelido`).
O departamento de um colaborador agora vem de `IndicadorDepartamentoGerente`
(nome do gerente → `IndicadorDepartamento`), um cadastro mantido pela própria
aplicação (Configurações → Departamentos) — decisão explícita do usuário, que
achou mais simples e robusto relacionar gerência↔departamento manualmente do
que continuar inferindo de um texto livre vindo da planilha. Isso também
resolve de graça o caso que o antigo `IndicadorSetorApelido` cobria (os 4
líderes de Fisco/Contábil, cujo próprio setor bruto na planilha não batia com
o departamento que deveriam mostrar): basta mapear a gerente deles,
"Elizangela de Paula Kuhn", pro departamento "Gerentes" — todo colaborador
com esse `gerente` cai lá automaticamente, sem apelido por pessoa."""
from __future__ import annotations
from portal_api.models import IndicadorDepartamentoGerente
def carrega_mapa_gerentes() -> dict[str, int]:
"""{nome_gerente: departamento_id} — uma consulta só, reaproveitada pra
resolver o departamento de todos os colaboradores de uma apuração de
uma vez (ver `IndicadorApuracaoViewSet.create`)."""
return dict(IndicadorDepartamentoGerente.objects.values_list("nome_gerente", "departamento_id"))
def departamento_id_do_gerente(nome_gerente: str, mapa: dict[str, int] | None = None) -> int | None:
if mapa is None:
mapa = carrega_mapa_gerentes()
return mapa.get(nome_gerente)