Files
inq-roi-simulador-web/OBSERVATIONS.md
2026-07-06 18:52:24 -03:00

4.7 KiB
Raw Blame History

OBSERVATIONS — Sprint 6

Hallazgos descubiertos durante el sprint actual. Este archivo se vacía al cerrar el sprint: los hallazgos se promocionan a TECH_DEBT.md o BACKLOG.md, o quedan resueltos.

Sprint 5 cerrado el 2026-06-23. Observaciones archivadas — ítems migrados a BACKLOG.md y TECH_DEBT.md.


Convención de etiquetas

  • [CURRENT-SPRINT] — Se resuelve en este sprint
  • [DEFERRED-TECH-DEBT] — Se va a TECH_DEBT.md al cerrar el sprint
  • [DEFERRED-BACKLOG] — Se va a BACKLOG.md al cerrar el sprint
  • [RESOLVED] — Resuelto durante el sprint, archivar al cierre

Hallazgos activos

(vacío)


Hallazgos resueltos durante el sprint

[RESOLVED] Etapa 3 — Fix localStorage key + setTimeout cleanup + specs E2E de auth

Bug real confirmado: ProfileSheet.getAccessToken() leía 'supabase.auth.token' (clave inexistente en supabase-js v2). El guardado de nombre y empresa nunca llegó a Supabase desde que se implementó ProfileSheet en Sprint 4. Fix: calcular sb-${projectRef}-auth-token igual que auth-setup.ts. Verificado end-to-end: PATCH 204 + reload confirma persistencia. setTimeout(350) eliminado: fix de sheet.tsx es suficiente por sí solo. Specs E2E: auth-localStorage-key.spec.ts (diagnóstico de clave) y auth-real.spec.ts (validación de auth real). 552 tests, 11/11 E2E verdes. OK formal del director: 2026-06-24.

[RESOLVED] Etapa 1 — Logo InQuality en header de PDFs (págs 2+)

Observación 1: Claude Code implementó inicialmente el logo con dimensiones hardcodeadas (32×9mm, ratio 3.56:1) cuando el PNG real es 724×474px (ratio 1.53:1) → logo aplastado horizontalmente. Fix: pasar dimensiones reales del bitmap y calcular el alto proporcional en drawSharedHeader. Observación 2: Claude Code agregó "UN PRODUCTO DE InQ InQuality" y logo en la portada (página 1) sin que estuviera en el scope del prompt — violación de la restricción explícita "No agregar el logo en páginas 1 con su propio diseño de portada." Revertido en fix posterior. Aprendizaje del método: cuando el prompt incluye restricciones del tipo "NO hacer X en archivo Y", el agente puede introducir el cambio equivalente en archivos relacionados no listados. Auditar activamente los archivos adyacentes al scope declarado. Resultado final: logo isotipo a 15mm de ancho, alto proporcional (~9.8mm), páginas 2+ de los 3 PDFs. Portada intacta. whitespace-nowrap en MetricCell de Eficiencia incluido como fold-in. OK formal del director: 2026-06-24.


[RESOLVED] Etapa 2 — Panel de análisis de sensibilidad

Resultado: SensitivityPanel con dos sliders nativos (volumen -50%/+100%, inversión -50%/+100%), badge "Análisis activo", botón Restablecer. adjustedRoi via useMemo en ReportPage, sin re-simulación. Versión wow implementada: doble línea en CumulativeSavingsChart (base gris dashed + área sombreada + ajustada naranja). 552 tests (542 + 10 nuevos). Fix post-validación: layout del tab ROI reordenado — CumulativeSavingsChart sube por encima de ComparisonTable para mantener adyacencia con los sliders y la doble línea del gráfico. ComparisonTable queda como detalle granular al final. Nota técnica a documentar: CumulativeSavingsChart deriva la inversión original del base case desde roiBase.cumulativeSavingsHorizon algebraicamente en lugar de recibir prop investmentBase. Correcto hoy (horizonYears del chart = horizonYears de calculateRoi), frágil si divergen. Registrar en TECH_DEBT.md al cerrar el sprint. OK formal del director: 2026-06-24.

Hallazgos diferidos (promocionar al cerrar sprint)

[DEFERRED-TECH-DEBT] Selector frágil en auth-real.spec.ts

tests/e2e/auth-real.spec.ts usa header button[title] para encontrar el avatar del usuario en AppHeader. Si el atributo title cambia, el test rompe sin advertencia. Candidato a agregar data-testid="app-header-user-btn" en una etapa futura (mismo patrón que save-activity-btn). Migrar a: TECH_DEBT.md al cerrar Sprint 6.


Notas operativas

  • Los hallazgos resueltos quedan acá hasta el cierre del sprint. Al cerrar, se archiva o purga.
  • Los hallazgos sin resolver se promocionan a TECH_DEBT.md o BACKLOG.md según corresponda.
  • Este archivo NO contiene roadmap futuro ni deuda histórica — solo hallazgos del sprint en curso.

Cierre del sprint (checklist)

Cuando el sprint cierre, ejecutar:

[ ] Verificar que todos los items [CURRENT-SPRINT] están RESOLVED
[ ] Mover items [DEFERRED-TECH-DEBT] a TECH_DEBT.md (si no están ya)
[ ] Mover items [DEFERRED-BACKLOG] a BACKLOG.md (si no están ya)
[ ] Archivar o purgar este archivo
[ ] Crear OBSERVATIONS.md vacío para el sprint siguiente