5.3 KiB
5.3 KiB
ETAPA — Widgets de Mirada Empresa (frontend del dashboard v3)
1. Objetivo
Construir el frontend del dashboard de Mirada Empresa: la estructura de tres miradas
(Empresa funcional, País/Humana como "próximamente") y los widgets que consumen las RPCs
rpc_me_* ya implementadas y verificadas contra datos reales. El cliente ve las métricas.
2. Contexto previo
- Las RPCs de Mirada Empresa están hechas y VERIFICADAS contra 50 respuestas reales
(migración
20260625000002_dashboard_mirada_empresa.sql): E1-E10 + estrella "Talento en riesgo". - Contrato de cada RPC (shapes de retorno):
docs/dashboard/SPEC_MIRADA_EMPRESA.md. - Aspecto objetivo:
docs/dashboard/dashboard_tres_miradas_mockup.html. - Patrón de widget existente a REUTILIZAR (no reinventar):
components/dashboard/widget-shell.tsx— estados loading/ok/suppressed/error.- hooks
useEffect+queries.X(surveyId, filters)(lib/dashboard-queries.ts). isSuppressed()type guard (lib/dashboard-types.ts).- Gráficos en SVG/CSS a mano (db-bar-, db-donut-, db-kpi-*) — SIN librería de charts.
- Tema oscuro db-*, acento único teal
#43BBC8(--color-re-teal).
- Tres archivos de plomería a extender (mapeos mecánicos):
lib/dashboard-types.ts(tipos de retorno),lib/dashboard-queries.ts(entradas queries),app/api/dashboard/[widget]/route.ts(RPC_MAP con losrpc_me_*).
3. DECISIONES YA TOMADAS — no consultar de nuevo
- Opción A: reemplazar el dashboard actual por la estructura de tres miradas. Los widgets v2 rotos (que consumen RPCs v2 inexistentes en v3) se RETIRAN. País y Humana = placeholder "Disponible próximamente".
- Reutilizar WidgetShell, el patrón de hooks, isSuppressed, y los gráficos SVG/CSS a mano.
- NO traer librería de charts nueva — replicar el patrón existente.
- Mantener el tema db-* y el teal como acento.
- NO tocar las RPCs (están verificadas). Solo el frontend + la plomería de tipos/queries/route.
- Mirada Empresa NO muestra datos sensibles (ya garantizado en las RPCs; el frontend solo refleja lo que viene).
4. Tareas
4.1 Plomería (mecánica)
lib/dashboard-types.ts: tipos de retorno de cadarpc_me_*según los shapes de la SPEC.lib/dashboard-queries.ts: una entrada por métrica (E1-E10 + estrella).app/api/dashboard/[widget]/route.ts: agregar losrpc_me_*al RPC_MAP.
4.2 Estructura de tres miradas
- Tabs/secciones Empresa | País | Humana (como el mockup).
- Empresa: funcional. País/Humana: placeholder "Disponible próximamente" (no widgets vacíos).
- El selector de survey/p_all y los filtros del sidebar siguen funcionando como hoy.
4.3 Widgets de Mirada Empresa
Implementar los widgets del NÚCLEO primero (los que el cliente necesita):
- Talento en riesgo (estrella) — KPI destacado, métrica compuesta.
- E1 Prevalencia de cuidadores — KPI.
- E6 Punto ciego organizacional — el widget de contraste (carga real vs apoyo percibido), dos barras enfrentadas como en el mockup.
- E2/E3/E4 Señales de impacto — barras (riesgo, ausentismo, presentismo).
- E7 Apoyos demandados — barras horizontales (igual patrón que apoyos-bar viejo). Después, si el alcance lo permite, los [SEC]: E5, E8, E9 (segmentación), E10.
4.4 Manejo de estados
- Cada widget usa WidgetShell. Estado
suppressed(k<5) muestra el mensaje estándar 🔒. - Las métricas que segmentan (E7, E9) suprimen filas individuales con n<5 (las RPCs ya lo hacen; el widget solo no muestra lo que no viene).
5. Entregables (DoD)
- Estructura de tres miradas; Empresa funcional, País/Humana placeholder.
- Widgets del núcleo consumiendo las RPCs reales vía la plomería.
- Widgets v2 rotos retirados.
- WidgetShell y patrón existente reutilizados (no librería nueva, no reinvención).
- Estados loading/ok/suppressed manejados.
- Build sin errores.
- Validación visual del director contra el mockup + datos reales sembrados.
6. Qué reportar
Verificado:
- Estructura 3 miradas ✓ — Empresa funcional, País/Humana placeholder
- Widgets implementados: [lista con qué RPC consume cada uno]
- Plomería: tipos + queries + RPC_MAP extendidos ✓
- Widgets v2 retirados: [lista]
- WidgetShell reutilizado ✓ / sin librería de charts nueva ✓
- Build: [resultado]
- Descripción visual: cómo se ve cada widget núcleo con datos
Asumido / decisiones de diseño:
- [lo que haya]
Reporte con datos concretos (C.4). Para validación visual necesito ver el dashboard con datos: indicá cómo levantarlo (el seed_prueba_50.sql siembra los datos).
7. Qué NO hacer
- ❌ No tocar las RPCs (verificadas).
- ❌ No traer librería de charts — SVG/CSS a mano como el resto.
- ❌ No mostrar datos sensibles (3.x, 4.2, 4.3).
- ❌ No implementar widgets de País/Humana (placeholder solo).
- ❌ No aplicar a producción sin validación visual.
- ❌ No tocar v2.1.0-stable, el motor, el seed del formulario.
8. Versionado
feat(dashboard): widgets de Mirada Empresa + estructura tres miradas [dashboard]
Reemplaza el dashboard v2 (widgets rotos contra v3) por la estructura de tres
miradas. Mirada Empresa funcional: talento en riesgo, prevalencia, punto ciego,
señales de impacto, apoyos demandados. País/Humana como placeholder. Reutiliza
WidgetShell y el patrón SVG/CSS existente. Consume las rpc_me_* verificadas.