docs: Plan P2603.01 Automatización Zoom y actualizaciones P2601.09
This commit is contained in:
@@ -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*
|
||||
Reference in New Issue
Block a user