feat(sprint-1.5): rediseño visual PDF ROI + identidad InQ (Etapas 4-7)

- Header/footer compartidos con paleta InQ naranja en los 3 PDFs (Etapa 4)
- Layout híbrido portrait+landscape en PDFs Actual/Automatizado:
  página 2 landscape para diagrama BPMN heatmap (Etapa 5)
- Página 1 PDF ROI rediseñada: header denso, banner narrativo, KPI Hero
  con gradiente naranja→magenta, grid 2×2 de KPIs secundarios, Top 3
  actividades por ahorro (Etapa 6)
- Páginas 2-5 PDF ROI con identidad InQ: tabla con paleta naranja,
  análisis del ahorro, nota metodológica, trayectoria del ahorro
  acumulado con gráfico SVG nativo (Etapa 7)
- 500 tests verdes (+ 34 tests nuevos del Sprint 1.5)
- BACKLOG.md, TECH_DEBT.md, OBSERVATIONS.md: sistema de planificación
  reemplaza TODO.md

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-17 20:45:01 -03:00
parent 63c4fbac99
commit 2f4633a33c
20 changed files with 4163 additions and 117 deletions

91
TODO.md
View File

@@ -99,8 +99,97 @@
---
## Observaciones de Etapa 4 (Sprint 1.5)
### 1. Subtítulo "Análisis de retorno de inversión" solo en página 1 ROI
**Estado:** decisión visual aprobada. Página 1 tiene subtítulo descriptivo,
páginas 2-4 no.
**Acción:** evaluar en Etapa 6 si el subtítulo se refina o se mantiene.
### 2. Punto de partida del KPI card en página 1 de PDFs Actual/Automatizado
**Estado:** color del KPI "Costo total" migrado a naranja en Etapa 4
(decisión retroactiva del audit).
**Acción:** en Etapa 6, el rediseño del KPI card debe asumir punto de
partida naranja, no azul.
### 3. Unicode roto en notas metodológicas — investigar fuente
**Estado:** caracteres Σ (sumatoria), (menos matemático) renderizan
como £ (libra) y " (comilla) respectivamente. Pre-existente.
**Causa probable:** jsPDF con fuente WinAnsi no soporta esos puntos
Unicode.
**Solución estándar:** embeber fuente Unicode (Roboto o similar) con
doc.addFileToVFS() + doc.addFont().
**Acción:** Sprint 2 — etapa dedicada a font embedding en PDFs. NO
abordar en Sprint 1.5 (riesgo de regresión en este punto del sprint).
---
### Notas operativas
- Las 4 observaciones se descubrieron en validación visual del director (no en tests ni reporte automático).
- Refuerzan el valor del **Patrón C.1** (validación visual mandatoria del artefacto final).
- Punto 1 dio origen al **Patrón C.6** documentado en `methodology/` (iniciativa agéntica con consulta).
- Punto 1 dio origen al **Patrón C.6** documentado en `methodology/` (iniciativa agéntica con consulta).
### Sprint 2 — Nota metodológica de PDFs: fórmulas truncadas + Unicode roto
**Severidad:** afecta calidad del entregable al cliente. Mantenido como
deuda consciente, no como descuido.
**Síntomas observados en Sprint 1.5 Etapa 5:**
1. Fórmulas matemáticas largas se cortan en el margen derecho.
Ejemplo en PDFs Actual y Automatizado, página 4:
"Costo directo por actividad = (costo_fijo + £(recurso × costo_hora
× tiempo × utilización / 60)"
→ faltan "))" y "× probabilidad_de_ejecución."
Ejemplo en PDF ROI, página 4:
"...Probabilidades calculada" → falta "del grafo BPMN."
2. Caracteres Unicode renderizan mal:
Σ (sumatoria) → £ (libra)
(menos matemático) → "
**Causa raíz hipotetizada:**
- jsPDF con fuente WinAnsi no soporta esos puntos Unicode (caracteres rotos)
- Falta de wrapping automático de líneas largas en notas metodológicas
**Resolución propuesta para Sprint 2:**
- Etapa dedicada a "PDF: font embedding y text wrapping"
- Embeber Roboto Unicode completo (doc.addFileToVFS + doc.addFont)
- Usar doc.splitTextToSize() para todas las notas metodológicas
- Validar con tests que ninguna línea supera el ancho disponible
**Workaround temporal (si surge demo o entrega antes de Sprint 2):**
- Reformular fórmulas como multi-línea en el texto fuente
- 10-15 min de trabajo, soluciona el síntoma sin embeber fuente
**Archivos afectados:**
- src/lib/export/pdf-sections.ts (notas metodológicas Actual/Automatizado)
- src/lib/export/pdf-sections-roi.ts (nota metodológica ROI)
## Refinamientos visuales para Etapa 11 (polish final) — derivados de Etapa 6
### Página 1 del PDF ROI
1. **KPI Hero**:
- Spacing entre label "AHORRO PROYECTADO A 3 AÑOS" y la cifra
- Tamaño de la cifra (evaluar reducir ligeramente)
- Esquinas redondeadas (si se logra técnicamente)
2. **Banner narrativo**:
- Destacar tipográficamente cifras y palabras clave (negrita en USD, %, meses)
- Considerar bullets o estructura más visual
3. **Grid 2x2 KPIs secundarios**:
- Inconsistencia tipográfica detectada — investigar y armonizar
- Verificar que los 4 cards sigan el mismo patrón visual
4. **Top 3 actividades**:
- Aumentar tamaño del título "TOP 3 ACTIVIDADES POR AHORRO"
- Agregar fondo claro a las barras para mejor contraste
- Reconsiderar diseño completo del bloque
### Decisiones diferidas a Sprint 3-4
- Ícono de InQuality en header (requiere assets de marca)
- Esquinas redondeadas del KPI Hero (técnicamente complejo en jsPDF)