docs: Plan P2603.01 Automatización Zoom y actualizaciones P2601.09

This commit is contained in:
Ricardo Monla
2026-03-31 18:03:21 -03:00
parent 160da47f96
commit 1fd213173e
72 changed files with 19694 additions and 460 deletions
@@ -0,0 +1,80 @@
# 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
```bash
# 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*