Files
dtic-DIIAA/docs/ambito/dtic-BITACORAs/P2603.03_Referencia-Planes-Bitacora.md
T

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 .md requerí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