Files
fn_registry/dev/issues/0102-work-dashboard-tab.md
T

78 lines
3.3 KiB
Markdown

# 0102 — Tab Work en registry_dashboard (issues + flows + telemetria)
**Status:** pendiente
**Created:** 2026-05-16
**Type:** feature
**Priority:** media
**Domain:** meta
**Scope:** app-scoped
**Depends:** 0100 (frontmatter migration), 0101 (dev_console --json)
**Blocks:**
**Related:** 0103 (slash commands)
## Problema
Hoy para ver "estado global del trabajo" hay que:
1. `ls dev/issues/*.md` + leer cabeceras.
2. `cat dev/flows/INDEX.md` + abrir flow por flow.
3. `sqlite3 call_monitor.db` para metricas.
4. Cruzar a mano que issues bloquean que flow.
Cero visibilidad cross-cutting. Y nada me dice "abre el flow 0001 ya, todos sus checks user-facing estan listos" o "issue 0099 esta verde pero su dependencia 0096 esta marcada como DONE incorrectamente".
## Objetivo
Tab nueva `Work` en `projects/fn_monitoring/apps/registry_dashboard` (C++ ImGui). Tres paneles:
### Panel 1 — Kanban issues
Columnas: `pendiente | in-progress | bloqueado | completado-hoy`. Filtros (combo): domain, type, priority. Card por issue muestra: id, title, prio, deps no resueltas (en rojo si las hay).
Drag entre columnas -> llama `dev_console issue tag NNNN --status X` por debajo.
### Panel 2 — Flows table
Tabla con columnas: id, slug, pattern, status, Acceptance %, DoD %, **DoD user-facing %**, ultima run en `data_factory.runs`. Click en fila -> abre archivo .md (o panel detalle al lado).
Boton `User-test` por fila -> lanza `dev_console flow user-test NNNN` (abre URL/app/sala Matrix declarada).
### Panel 3 — Telemetria (resumen call_monitor)
KPIs ultimas 24h: `calls_24h`, `violations_24h`, `pending_proposals`, `Reg %`. Sparkline 7d por KPI. Misma fuente que el hook UserPromptSubmit.
## Reglas
- ImGui + `data_table_cpp_viz` para tablas (registry-first).
- Datos vienen de `dev_console work dashboard --json` (call cada 5s en debug, cada 30s en prod).
- Si `dev_console` no esta instalado: panel muestra placeholder + comando para instalar (sin crash).
- Tab carga en <300ms (issue 0101 garantiza el binario).
## Acceptance
- [ ] Tab Work aparece en `registry_dashboard` con los 3 paneles.
- [ ] Filtros funcionan (domain, type, priority, pattern).
- [ ] Drag de issue actualiza disco.
- [ ] User-test boton abre superficie usuario.
- [ ] Refresh manual + auto cada 30s.
## Definition of Done
### Generico
- [ ] **Repetibilidad**: tab abre 10x sin leak handles ni memoria.
- [ ] **Observabilidad**: cada accion (drag, click User-test) loguea via `fn_log`.
- [ ] **Error-path**: `dev_console` falla -> tab muestra error formateado, no crash.
- [ ] **Idempotencia**: refresh 100x = misma tabla.
- [ ] **Secrets**: N/A.
- [ ] **Docs**: `registry_dashboard.app.md` lista la tab + casos de uso.
- [ ] **Registry-first**: reusa `data_table_cpp_viz`, `selectable_text`, `fn_log`.
- [ ] **INDEX + status**: issue cerrado.
### User-facing
- [ ] **User-facing**: usuario abre `registry_dashboard.exe` -> tab Work -> ve issues kanban + flows table + KPIs todo en una pantalla.
- [ ] **User-facing repeat**: mismo dashboard manana muestra estado actualizado sin reset (deps resueltas se reflejan).
- [ ] **User-facing onboarding**: parrafo en `app.md`: "Para el estado del trabajo: lanzar `registry_dashboard.exe` -> tab Work. Boton User-test abre la superficie usuario del flow."
- [ ] **User-facing latencia**: refresh <300ms; cambio en disco visible en <30s (auto-refresh).