Volver a la wiki

Widget "Drift checks · 7d" en el Pulse de Biblioteca (Fase 5 KB vs Graph)

Widget “Drift checks · 7d” — PulsePanel

Sección operativa añadida al componente PulsePanel.tsx en PR #39. Cierra la Fase 5 del ADR decision--20260514--knowledge-base-vs-graph (iniciativa s61 KB vs Graph), completando la iniciativa al 100%.

Contexto de la iniciativa

La iniciativa s61 KB vs Graph comparó el rendimiento de la Knowledge Base (CF Vectorize) frente al grafo de conocimiento (D1 + embeddings) para detectar drift en páginas wiki. Las fases previas (PRs #36, #37, #38 + CreaRack-Pro #34) implementaron el cron de checks con modelo Haiku 4.5. Esta Fase 5 añade la observabilidad visual en el Pulse del workspace.

FasePRDescripción
1–4#36, #37, #38 + Pro#34Cron, tabla D1, handler MCP, pipeline
5#39Widget Pulse (este PR)

Componente

Archivo: src/components/biblioteca/PulsePanel.tsx

La nueva sección se inserta justo antes de “Doc drift (Escriba)” y ocupa gridColumn: span 3.

Layout

┌─────────────────────────────────────────────────────────┐
│  Drift checks · 7d               [badge: N/M checks]    │
├──────────────┬──────────────┬──────────────┬────────────┤
│  Drift %     │ Confianza    │ Drafts       │ Coste      │
│  XX%         │ media XX%    │ creados N    │ Haiku $N   │
│  N de M pgs  │              │              │ último: Xh │
├─────────────────────────────────────────────────────────┤
│  Top drifts (confianza)                                  │
│  slug-page-1  ██% [draft]                               │
│  └─ Resumen del drift...                                │
│  slug-page-2  ██%                                        │
└─────────────────────────────────────────────────────────┘

4 métricas en grid auto-fit (minmax(140px, 1fr)):

  1. Drift % — porcentaje de páginas con drift detectado, con conteo absoluto
  2. Confianza media — avg_confidence × 100
  3. Drafts creados — páginas para las que el cron generó un draft de actualización
  4. Coste Haiku — total USD + timestamp del último check

Lista top-5 drifts (ordenados por confianza descendente):

Estado React

const [driftChecks, setDriftChecks] = useState<DriftChecksReport | null>(null);

Cargado en useEffect mediante fetch('/biblioteca/drift-checks?window_days=7&limit=5'). Patrón best-effort: si el fetch falla, el panel sigue mostrando — en lugar de romperse. Refresco automático cada 60 segundos (junto con el resto del Pulse).

Estados visuales

CondiciónUI mostrada
Cargando"Cargando drift checks…"
total_checks === 0"Sin checks ejecutados en Xd (cron en dry_run o pausado)"
Drift detectado > 0Badge en var(--warning) (ámbar)
Sin driftBadge en var(--success) (verde)

Endpoint consumido

GET /api/biblioteca/drift-checks?window_days=7&limit=5 — ver [[entity—biblioteca—endpoint—drift-checks]].

Validación post-deploy

  1. Abrir https://workspace.crearack.com/biblioteca
  2. Verificar sección “Drift checks · 7d” visible entre el panel previo y “Doc drift (Escriba)”
  3. Durante calibración (dry_run=true): drafts_created = 0, total_checks creciendo ~25/semana
  4. Tras flip a dry_run=false (~28-05-2026): drafts_created empieza a contar

Evolución esperada

Véase también

Subir