6ad82167bb
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
78 lines
3.3 KiB
Markdown
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).
|