Skip to content

Semáforo: port fiel del Excel oficial a 7 etapas + reconciliación automática#15

Merged
ivanmena2021 merged 1 commit into
mainfrom
fix/semaforo-port-fiel-7-etapas
Jun 22, 2026
Merged

Semáforo: port fiel del Excel oficial a 7 etapas + reconciliación automática#15
ivanmena2021 merged 1 commit into
mainfrom
fix/semaforo-port-fiel-7-etapas

Conversation

@ivanmena2021

Copy link
Copy Markdown
Owner

Problema

Los resultados del semáforo de alertas de la app no coincidían con el Excel del equipo SAC (Dashboard_SAC_25-26_..._SEMAFOROS.xlsx). Auditoría fila-a-fila sobre las 12,914 filas del corte 15/06/2026: solo la etapa 1 (Atención) coincidía; el resto divergía — A04 (Reprogramación) y A07 (Pago) de forma grave.

Causas raíz (motor anterior vs Excel actual)

# Motor app (antes) Excel oficial
1 Días hábiles (excl. domingos+feriados) en etapas 1-5 Días calendario en A01-A06; hábiles solo en A07
2 6 alertas (Padrón+Validación fusionadas) 7 etapas separadas
3 Reprogramación: 3 fechas + otra lógica 6 fechas (Y…AD), regla >7 días sobre la última
4 Excluidos → NaN EXCLUIDO (-1) y CONFORME (0) explícitos
5 Offsets fecha+1 INT(fecha2)−INT(fecha1) directo

Solución

  • sem_engine.py reescrito como port fiel de las fórmulas BK..BX del Excel: 7 etapas, días calendario A01-A06, hábiles A07, exclusiones por OBSERVACIÓN y DUPLIC RESULT, semáforo -1/0/1/2/3.
  • semaforo_alertas.py: 7 etapas; get_pipeline_summary ahora cuenta cada etapa de forma independiente (igual que la hoja R1 del Excel), no por "peor etapa". UI y export actualizados.

Reconciliación automatizada (doble — lo que pediste)

  1. tools/reconciliar_semaforo.py — valida el archivo completo (12,914 filas) fila-a-fila contra los semáforos cacheados del Excel:
    A01..A07: 12914 OK / 0 discrep / 100.00%  → ✅ 0 discrepancias
    
  2. tests/test_reconciliacion_semaforo.py + fixture de 341 filas (cubre todos los colores en las 7 etapas) → regresión permanente en CI.
  3. tools/generar_fixture_semaforo.py — regenera el fixture si el Excel oficial cambia.

Verificación

  • 100% de match en las 7 etapas (90,398 clasificaciones individuales).
  • El resumen por etapa de la app reproduce R1 exactamente (R/Á/V por etapa).
  • 60 tests verdes (57 previos + 3 de reconciliación).

🤖 Generated with Claude Code

…omatica

Los resultados del semaforo de la app no coincidian con el Excel del equipo
SAC. Auditoria fila-a-fila sobre las 12,914 filas del corte 15/06/2026:
solo la etapa 1 (Atencion) coincidia; el resto divergia, A04 (Reprog) y A07
(Pago) de forma grave.

Causas raiz (motor anterior vs Excel actual):
- Contaba DIAS HABILES (excl. domingos+feriados) en etapas 1-5; el Excel usa
  DIAS CALENDARIO en A01-A06 y solo habiles en A07 (Pago).
- Fusionaba Padron+Validacion en 1 alerta; el Excel las separa (7 etapas).
- Reprogramacion: usaba 3 fechas y otra logica; el Excel usa las 6 (Y..AD)
  con regla de >7 dias sobre la ultima fecha de reprog.
- Excluidos -> NaN; el Excel distingue EXCLUIDO(-1) y CONFORME(0).
- Offsets fecha+1 que el Excel no aplica.

Fix:
- sem_engine.py reescrito como PORT FIEL de las formulas BK..BX del Excel:
  7 etapas, dias calendario A01-A06, habiles A07, exclusiones por OBSERVACION
  y DUPLIC RESULT, semaforo -1/0/1/2/3.
- semaforo_alertas.py: 7 etapas; get_pipeline_summary ahora cuenta cada etapa
  de forma INDEPENDIENTE (igual que la hoja R1 del Excel), no por "peor etapa".
- Reconciliacion automatizada (doble):
  * tools/reconciliar_semaforo.py: valida el archivo COMPLETO (12,914 filas)
    fila-a-fila contra los semaforos cacheados del Excel -> 0 discrepancias.
  * tests/test_reconciliacion_semaforo.py + fixture (341 filas que cubren
    todos los colores en las 7 etapas): regresion permanente en CI.
- tools/generar_fixture_semaforo.py: regenera el fixture si cambia el Excel.

Verificado: 100% de match en las 7 etapas (90,398 clasificaciones) y el
resumen por etapa de la app reproduce R1 exactamente. 60 tests verdes.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@ivanmena2021 ivanmena2021 merged commit 82d0cc3 into main Jun 22, 2026
1 check passed
@ivanmena2021 ivanmena2021 deleted the fix/semaforo-port-fiel-7-etapas branch June 22, 2026 22:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant