Files
motor-de-encuestas/sprints/sprint-4/ETAPA_WIDGETS_MIRADA_EMPRESA_PROMPT.md
2026-06-26 11:29:16 -03:00

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 los rpc_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 cada rpc_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 los rpc_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.