3.2 KiB
3.2 KiB
Plan P2603.03: Referencia Dinámica a Planes desde Bitácora Web
Proyecto: P2603 — Sistema de Bitácoras Web
Estado: ✅ Completado
Fecha: 2026-03-27
Objetivo
Permitir que los eventos de la bitácora web referencien directamente archivos de plan .md del repositorio, renderizándolos dinámicamente en un modal sin necesidad de reiniciar Docker.
Problema
- Las descripciones de eventos mencionaban planes (
[P2601.09],[P2604]) como texto plano sin funcionalidad. - No existía forma de consultar el contenido de un plan directamente desde la interfaz web.
- Cualquier referencia a un
.mdrequería buscar el archivo manualmente en el repositorio.
Solución Implementada
Fase 1: Visor de documentos Markdown (#1309)
| Componente | Archivo | Descripción |
|---|---|---|
| Backend API | backend/src/routes/docs.js |
Endpoint /api/docs/:proyecto/:archivo que sirve .md desde disco |
| Backend Server | backend/src/server.js |
Registro de ruta /api/docs |
| Docker | docker-compose.yml |
Volumen docs/proy/ montado read-only en container API |
| Frontend | frontend/src/App.tsx |
Modal visor con ReactMarkdown + handler de links |
| CSS | frontend/src/index.css |
Estilos .doc-viewer-content y .plan-link-btn |
Resultado: Los archivos .md se pueden visualizar renderizados directamente en la web. El contenido se lee del disco en cada request, por lo que cualquier edición al .md se refleja inmediatamente.
Fase 2: Campo doc_path centralizado (#1310)
| Componente | Archivo | Descripción |
|---|---|---|
| BD Schema | docker/init.sql |
Columna doc_path TEXT en bitacoras.entradas |
| API CRUD | backend/src/routes/entradas.js |
doc_path en INSERT y UPDATE dinámico |
| CLI | adn/tools/cli/db/evento.rb |
Flag --doc RUTA en evento:crear y evento:actualizar |
| Frontend | frontend/src/App.tsx |
Botón basado en e.doc_path (campo BD, no regex de descripción) |
| Contexto IA | docs/prompt/260325-0900_Contexto-IA.md |
Convención documentada |
Problema resuelto: Los links en descripciones se rompían al renombrar archivos. Con doc_path como campo de BD, un solo UPDATE corrige todas las referencias.
Arquitectura
docs/proy/ (host) ──[volumen :ro]──> /app/docs/proy/ (container API)
│
routes/docs.js
│
GET /api/docs/:proyecto/:archivo
│
Frontend ─── e.doc_path ─── botón click ─── fetch API ─── modal ReactMarkdown
Uso
# Crear evento con plan vinculado
./adn/tools/run db evento:crear \
--doc P2601_Dasuten/P2601.09_DASUTEN-sin-DC.md \
--descripcion "Texto del evento" \
--nodo srv-ns8 --inicio 08:00
# Actualizar doc_path de un evento existente
./adn/tools/run db evento:actualizar 1308 \
--doc P2601_Dasuten/P2601.09_DASUTEN-sin-DC.md
Progreso
| Fase | Descripción | Estado | Evento |
|---|---|---|---|
| 1 | Visor de documentos Markdown (API + modal) | ✅ 100% | #1309 |
| 2 | Campo doc_path centralizado (BD + CLI + frontend) |
✅ 100% | #1310 |
Plan completado el 2026-03-27