Volver a la wiki

Escriba drift detector + cron

Escriba drift detector + cron

User value

Resuelve un problema silencioso: los documentos de la Biblioteca envejecen sin que nadie lo note. Un doc creado hace 6 meses puede seguir apareciendo en búsquedas y en supercontexto aunque su contenido ya no refleje el estado real. Esta feature vigila continuamente, calcula score de “desactualización” por doc y lo expone en UI (widget Pulse) y API, permitiendo que agentes y humanos prioricen qué material necesita revisión urgente.

Cómo usarla

Widget Pulse muestra en tiempo real docs con mayor drift score, ordenados por urgencia. Consume GET /api/biblioteca/drift → lista paginada con doc_id, title, drift_score, last_updated, staleness_days.

Recálculo manual vía POST /api/biblioteca/drift-run — ejecuta pipeline completo y devuelve resumen. Protegido, solo agentes autorizados o panel admin.

Cron diario (.github/workflows/drift-cron.yml) dispara drift-run a las 03:00 UTC via schedule: cron. Scores frescos al inicio de cada jornada sin intervención manual.

Implementación (CTEs SQL sobre bib_*)

Núcleo en functions/_lib/drift.ts. computeDrift construye cadena de CTEs sobre bib_docs, bib_events, bib_refs:

  1. Primera CTE: fecha del último evento relevante por doc (edición, confirmación de vigencia, referencia entrante).
  2. Segunda: staleness_days como diferencia entre now() y ese último evento.
  3. Tercera: función de scoring logarítmica que penaliza exponencialmente inactividad prolongada y bonifica docs con alta densidad de referencias activas.

drift_score normalizado 0-1. Umbral stale >0.7, critical >0.9. drift.ts envuelve computeDrift con validación de sesión y serialización JSON. drift-run.ts persiste scores en columna drift_score de bib_docs y registra evento drift_recalc en bib_events.

Decisiones

Commits relacionados

Véase también

Subir