Skip to content

fix(riesgos): alinear widget Fianzas Vigentes/Cancelar con el dashboard Riesgos

Alan Amox requested to merge riesgos into main

El widget kpi_fianzas_vc reportaba 22 vigentes y 60 por cancelar mientras el dashboard /finanzas/riesgos mostraba 16 y 3 con los mismos filtros. Tres causas:

  • El endpoint sumaba todas las fianzas del universo, sin overlap con el periodo año/mes seleccionado.
  • La regla de status era laxa: cancel in s incluía cancelada en el conteo de por cancelar, y vigente in s or activ in s incluía activa en vigentes.
  • Cuando el dashboard ejecutivo y el ExecWidget colapsaban filtros multi-mes a un solo mes_corte=max, el backend perdía fianzas vigentes en meses anteriores del rango.

Cambios:

backend/routers/riesgos.py

  • Helper _fianza_overlaps_period replica vigenciaOverlapsPeriod del dashboard: overlap entre fecha_inicio..fecha_fin y cualquier (anio, mes) del periodo.
  • Conteos fianzas_vigentes_count y fianzas_por_cancelar_count se aíslan en su propio dedup, evaluando overlap antes de agrupar por f.fianza. Match estricto: por cancelar in s y vigente in s.
  • Nuevo query param meses (CSV 1..12). Prioridad de meses para el overlap: meses CSV → mes_corte → todo el año si solo hay anio → sin filtro. mes_corte sigue intacto para los KPIs de autos/daños.
  • unique_fianzas global sin tocar para no afectar otros widgets (monto afianzado, status donut, etc.).

frontend/components/dashboard/ExecWidget.tsx

  • riesgosQs ahora setea meses (CSV) además de mes_corte. Mandar ambos no rompe nada: cada KPI lee el suyo.

frontend/app/dashboard/page.tsx

  • El fetch directo del dashboard ejecutivo a /api/riesgos/dashboard-summary también arma meses (CSV) además del mes_corte que ya enviaba.

Resultado: con anio=2026 y meses=ene,feb,mar el widget reporta 16 vigentes y 3 por cancelar, idéntico al dashboard de Riesgos.

Merge request reports

Loading