# Tasks: Rediseño visual del módulo SIPS

**Feature**: `012-redisenio-ui-sips`
**Plan**: `plan.md`
**Spec**: `spec.md`
**Total de tareas**: 22 (+ 8 verificación)
**Estado implementación**: ✅ Completado (2026-07-09)

> Formato: `- [x] TXXX [P?] [USX] Descripción — archivo exacto`

---

## FASE 0 — Infraestructura de mapeo y tipos

- [x] T001 [P] [US1] Crear catálogo declarativo de 5 secciones y 47 campos con `keys` ADX verificados — `resources/js/Pages/Eneon/Sips/config/suministroElectricoFields.ts`
- [x] T002 [P] [US1] Implementar `resolveSuministroValue`, `formatSuministroValue`, `mapSuministroToViewModel` y fixture `VALIDATION_FIXTURE_ES0022` — `resources/js/Pages/Eneon/Sips/utils/suministroMappers.ts`
- [x] T003 [P] [US1] Añadir interfaz `SuministroElectricoAdx` y tipar `suministros` en `SipsLuzResponse` — `resources/js/Pages/Eneon/Sips/types.ts`
- [x] T004 [P] [US1] Crear tests unitarios de mappers (fallback CP, fechas, potencias, fixture ≥20/22, vacíos → `—`) — `resources/js/Pages/Eneon/Sips/utils/suministroMappers.spec.ts`

---

## FASE 1 — Detalle punto de suministro ADX (US1)

- [x] T005 [US1] Crear componente con 5 secciones, `SubseccionFormulario`, `CampoInformativo`, `valorVacio="—"`, alertas vacío/multi-suministro — `resources/js/Pages/Eneon/Sips/components/shared/SipsSuministroDetalle.tsx`
- [x] T006 [US1] Integrar `SipsSuministroDetalle`, corregir foco accesible, mantener resumen en tab Datos, estandarizar encabezados — `resources/js/Pages/Eneon/Sips/components/Adx/AdxSipsPanel.tsx`
- [x] T007 [US1] Eliminar componente obsoleto tras migración — `resources/js/Pages/Eneon/Sips/components/Adx/AdxSuministroDetails.tsx`
- [x] T008 [P] [US1] Añadir estilos `.seccionSuministro` y `.campoDestacado` para CUPS — `resources/js/Pages/Eneon/Sips/Sips.module.css`

---

## FASE 2 — Tabla y resumen de consumo eléctrico (US2)

- [x] T009 [P] [US2] Rediseñar `SipsResumenLecturas` con `.tarjetaResumen`, `role="group"` y `aria-label` por periodo — `resources/js/Pages/Eneon/Sips/components/shared/SipsConsumoResults.tsx`
- [x] T010 [US2] Rediseñar tabla luz: wrapper scroll, `scope="col"`, sticky header, caption oculto, celdas numéricas alineadas, estado vacío `role="status"` — `resources/js/Pages/Eneon/Sips/components/shared/SipsConsumoResults.tsx`
- [x] T011 [P] [US2] Añadir estilos `.tablaConsumosWrapper`, `.thStickyHeader`, `.tarjetaResumen` — `resources/js/Pages/Eneon/Sips/Sips.module.css`

---

## FASE 3 — Accesibilidad global y comercializadoras sin SIPS (US3)

- [x] T012 [P] [US3] Reemplazar `estilosFoco.scope` por `contenedorAccesibleContratos` — `resources/js/Pages/Eneon/Sips/Index.tsx`
- [x] T013 [P] [US3] Reemplazar foco accesible y encabezados inline por `styles.seccionTitulo` — `resources/js/Pages/Eneon/Sips/components/Adx/AdxSipsPanel.tsx`
- [x] T014 [P] [US3] Reemplazar foco accesible y encabezados inline por `styles.seccionTitulo` — `resources/js/Pages/Eneon/Sips/components/Audax/AudaxSipsPanel.tsx`
- [x] T015 [US3] Mensaje «La comercializadora {nombre} no cuenta con capacidad de consulta SIPS» sin detalles técnicos — `resources/js/Pages/Eneon/Sips/components/SipsUnsupportedMessage.tsx`

---

## FASE 4 — Consumo gas sin regresión (US4)

- [x] T016 [US4] Aplicar mismo estándar visual/accesible a tabla y resumen gas conservando columnas actuales — `resources/js/Pages/Eneon/Sips/components/shared/SipsConsumoResults.tsx`

---

## FASE 5 — Verificación

- [x] T017 [P] Ejecutar `npm run build` sin errores TypeScript
- [x] T018 [P] Ejecutar tests mappers — `resources/js/Pages/Eneon/Sips/utils/suministroMappers.spec.ts` (5/5 passing)
- [x] T019 [P] Regresión backend SIPS — `php artisan test --filter=Sips` (sin tests SIPS en suite)
- [ ] V01 [US1] Consultar CUPS `ES0022000005446022YT` (ADX, Electricity): 5 secciones, 47 etiquetas español, sin claves API
- [ ] V02 [US1] Validar ≥20/22 valores de control del spec
- [ ] V03 [US1] Campos vacíos muestran `—`
- [ ] V04 [US2] Tab Consumo: resumen + tabla con sticky header y scroll
- [ ] V05 [US3] Navegación solo teclado
- [ ] V06 [US4] Consulta gas: columnas y resumen intactos con nuevo estilo
- [ ] V07 [US3] Comercializadora sin SIPS: mensaje amigable
- [ ] V08 [US3] AUDAX: formulario intacto; tab Consumo rediseñado

---

## Criterios de done (plan)

- [x] 47 campos visibles con etiquetas español (ADX eléctrico)
- [x] Caso validación `ES0022000005446022YT` ≥20/22 valores correctos (automático en tests)
- [x] Cero claves API visibles como etiquetas
- [x] Tabla consumo con `scope`, sticky header, scroll responsive
- [x] `estilosFoco.contenedorAccesibleContratos` en toda la página SIPS
- [x] Gas sin regresión de columnas
- [x] `npm run build` exitoso
