feat(sprint-1.5): PDFs Actual/Auto con identidad InQ + badge naranja (Etapas 8-9)

Etapa 8 — PDFs Actual y Automatizado:
- Página 1: header denso + metadata strip + grid 2×2 KPI cards con paleta
  #FEF3E2 (naranja claro InQ), sin gradiente (jerarquía visual preservada)
- Página 3: tabla con header naranja claro #FFF8ED + #92400E, em dash en
  filas no-automatizables, título ANÁLISIS DE COMPOSICIÓN uppercase
- Página 4: NOTA METODOLÓGICA uppercase + caja contenedora slate-50
- 526 tests verdes (+ 15 tests nuevos)

Etapa 9 — Badge  en BpmnCanvas:
- Reemplaza badge legacy (Bot SVG ámbar #fffbeb) por círculo naranja
  sólido #F59845 con símbolo  blanco, 14×14px, border white 1.5px
- Usa var(--inq-orange) definido en globals.css (sin hex hardcodeados)
- Elimina los 3 hex legacy del audit Etapa 1: #f59e0b, #fffbeb, #e2e8f0
- 5 tests E2E de lifecycle del badge + 2 screenshots

Política de iniciativa refinada post-Sprint 1.5 (CLAUDE.md actualizado)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-18 10:03:37 -03:00
parent 2f4633a33c
commit 3834c9f1c1
18 changed files with 1904 additions and 112 deletions

View File

@@ -24,45 +24,30 @@ Cada ítem incluye:
## Deuda crítica — afecta calidad del entregable
### [SPRINT-2] Fórmulas truncadas + caracteres Unicode rotos en notas metodológicas de PDFs
### [INVESTIGATING] Truncamiento de líneas largas en notas metodológicas (parcialmente resuelto)
**Estado:** las fórmulas matemáticas largas se cortan en el margen derecho. Los caracteres Σ (sumatoria) y (menos matemático) renderizan como £ (libra) y " (comilla) respectivamente.
**Estado actual:** los caracteres Unicode rotos (Σ → £, → ") fueron
resueltos en Etapa 8 mediante reescritura a ASCII puro (SUM, x, -).
Decisión arquitectónica: la notación ASCII se mantiene como solución
permanente porque alinea con terminología financiera/Excel.
**Ejemplo 1 — PDFs Actual/Automatizado, página 4:**
```
"Costo directo por actividad = (costo_fijo + £(recurso × costo_hora
× tiempo × utilización / 60)"
```
Faltan `))` y `× probabilidad_de_ejecución.`
**Pendiente:** verificar si todavía hay líneas largas que se truncan en
margen derecho cuando una fórmula excede el ancho de página portrait.
**Ejemplo 2 — PDF ROI, página 4:**
```
"...Probabilidades calculada"
```
Falta `del grafo BPMN.`
**Acción:** test E2E que valide ancho de cada línea de notas metodológicas
en los 3 PDFs. Si hay truncamiento, evaluar:
- Opción A: usar `doc.splitTextToSize()` para wrap automático
- Opción B: reformular fórmulas problemáticas en múltiples líneas en el
texto fuente
**Causa raíz hipotetizada:**
- jsPDF con fuente WinAnsi por defecto no soporta esos puntos Unicode (Σ, )
- Falta wrapping automático de líneas largas
**Impacto:** afecta credibilidad del entregable. Cliente ve fórmula incompleta o caracteres extraños.
**Severidad:** alta — es deuda consciente aceptada como bug heredado durante Sprint 1.5.
**Solución propuesta para Sprint 2:**
- Etapa dedicada a "PDF: font embedding y text wrapping"
- Embeber Roboto Unicode completo con `doc.addFileToVFS()` + `doc.addFont()`
- Usar `doc.splitTextToSize()` para todas las notas metodológicas
- Tests que validen que ninguna línea supera el ancho disponible
**Workaround temporal (si surge demo o entrega urgente antes de Sprint 2):**
- Reformular fórmulas como multi-línea en el texto fuente
- Costo: 10-15 min de trabajo
- Soluciona el síntoma sin embeber fuente
**Sprint asignado:** [BACKLOG] — investigar al inicio de Sprint 2 con
tests de regresión. Si los tests confirman ausencia de truncamiento
después del cambio a ASCII, el ítem se cierra. Si hay casos truncados,
asignar etapa de Sprint 2.
**Archivos afectados:**
- `src/lib/export/pdf-sections.ts` (notas metodológicas Actual/Automatizado)
- `src/lib/export/pdf-sections-roi.ts` (nota metodológica ROI)
- src/lib/export/pdf-sections.ts (notas metodológicas Actual/Automatizado)
- src/lib/export/pdf-sections-roi.ts (nota metodológica ROI)
---