[RFC-ADN-01] Armonía Integral — estandarizar manifiestos de proyectos

- P2604: Agregar Identificación, Stakeholders, Nodos, Herramientas, Hitos Clave
- P2605: Agregar Identificación, Stakeholders, Nodos, Herramientas, Hitos Clave
- P2602: Eliminar sección de nodos duplicada + agregar Hitos Clave
- Todos: Rutas relativas corregidas, referencias DB-First
This commit is contained in:
Ricardo Monla
2026-03-16 15:24:26 -03:00
parent 0c0c20de87
commit 69149c9e29
3 changed files with 179 additions and 206 deletions
+101 -135
View File
@@ -1,22 +1,58 @@
# P2604 - Mejoras al ADN
> Menos es Más + Mejora Continua + Armonía Integral
> Manifiesto de Proyecto | Referencia: [`adn/07_proyectos.md`](../../../adn/07_proyectos.md)
## Enfoque
## Identificación
Mejoras atómicas, incrementales y reutilizables. Una herramienta por vez.
| Campo | Valor |
| :--- | :--- |
| **Código** | P2604 |
| **Nombre** | Mejoras al Ecosistema ADN |
| **Estado** | ⏳ En Ejecución |
| **Inicio** | 14/03/2026 |
| **Fin Estimado** | Continuo (mejora continua) |
## Objetivo
Mejoras atómicas, incrementales y reutilizables al ecosistema ADN. Una herramienta por vez, siguiendo los principios: **Menos es Más + Mejora Continua + Armonía Integral**.
## Stakeholders
| Rol | Persona | Visibilidad |
| :--- | :--- | :--- |
| **Responsable Técnico** | Lic. Ricardo MONLA | Operador directo |
| **Dirección de TIC** | (Jerárquico superior) | Dashboard asíncrono |
## Nodos Involucrados
### Nodos Exclusivos (Core)
| Nodo | IP | Rol en el Proyecto |
| :--- | :--- | :--- |
| [**srv-ns8**](../../../nodos/srv-ns8.md) | `10.0.10.8` | Servidor de desarrollo y ejecución del ADN |
## Herramientas
| Herramienta | Uso |
| :--- | :--- |
| **Ruby 3.x** | Lenguaje del ecosistema ADN |
| **RSpec** | Framework de tests |
| **RuboCop** | Lint automatizado |
| **GitHub Actions** | CI/CD (tests + lint) |
## Hitos Clave
| Fecha | ID | Estado | Hito |
| :--- | :--- | :---: | :--- |
| 14/03 | F1-F8 | ✅ | Tests core, deprecation banners, error handler, constants, logger, HelpFormatter, docs técnica, CI/CD |
| 15/03 | F9-F10 | ✅ | Integración MSPs con ADN + Saneamiento y consolidación (S1-S15) |
| 15/03 | F11-F12 | ✅ | Bitácora Web auto-refresh + Estado/Modo calculado automáticamente |
| 16/03 | RFC-01 | ✅ | Convención de nomenclatura de proyectos (RFC-ADN-01) |
| — | DOC | 📍 | Actualizar README.md con funcionalidades nuevas (auto-refresh, estado/modo) |
---
## Diagnóstico Integral
### Archivos Analizados
- `tools/run` (punto de entrada)
- `tools/cli/*.rb` (18 subcomandos)
- `tools/core/*.rb` (10 módulos)
- `tools/db/**/*.rb` (importers, exporters, core)
- `Gemfile`, `.bundle/config`
### Problemas Identificados
| # | Problema | Archivo(s) | Principio | Severidad |
@@ -32,12 +68,10 @@ Mejoras atómicas, incrementales y reutilizables. Una herramienta por vez.
---
## Plan de Mejoras (8 Fases)
## Plan de Mejoras (12 Fases)
### Fase 1: Tests Core (Menos es Más)
**Objetivo**: Coverage progresivo, un módulo a la vez.
| ID | Módulo | Tests | Estado |
| :--- | :--- | :--- | :--- |
| T1 | `spec/db/evento_spec.rb` | 3 | ✅ |
@@ -45,8 +79,6 @@ Mejoras atómicas, incrementales y reutilizables. Una herramienta por vez.
| T3 | `spec/core/validador_spec.rb` | 6 | ✅ |
| T4 | `spec/cli/help_spec.rb` | 0 | 📍 |
**Total tests: 15 passing**
### Fase 2: Deprecation Banners (Armonía)
| ID | Archivo | Acción | Estado |
@@ -57,17 +89,13 @@ Mejoras atómicas, incrementales y reutilizables. Una herramienta por vez.
### Fase 3: Manejo de Errores (Armonía)
**Objetivo**: Consistencia en manejo de excepciones.
| ID | Mejora | Estado |
| :--- | :--- | :--- |
| E1 | Agregar `rescue` global en `run` | ✅ |
| E2 | Estandarizar mensajes de error | ✅ |
| E3 | Logging de excepciones no manejadas | ✅ |
**Herramientas creadas:**
- `core/error_handler.rb` - helper reutilizable
- Excepciones personalizadas en `core/constants.rb`: `ADN::Error`, `ADN::DBError`, `ADN::ValidationError`
**Herramientas creadas:** `core/error_handler.rb`, excepciones en `core/constants.rb`
### Fase 4: Constantes y Config (Menos es Más)
@@ -77,9 +105,6 @@ Mejoras atómicas, incrementales y reutilizables. Una herramienta por vez.
| C2 | Agregar constantes reutilizables (estados, modos) | ✅ |
| C3 | Validar constantes al inicio | ✅ |
**Mejoras:**
- `constants.rb` ahora incluye: estados (⏳✅❌⚠️⏸️📍), modos (P/R), DB config, excepciones
### Fase 5: Logger Mejorado (Mejora Continua)
| ID | Mejora | Estado |
@@ -88,134 +113,84 @@ Mejoras atómicas, incrementales y reutilizables. Una herramienta por vez.
| L2 | Niveles de log configurables | ✅ |
| L3 | Output JSON estructurado | ✅ |
**Mejoras:** Rotación por tamaño (>10MB), mantiene 7 archivos, nivel mínimo configurable
### Fase 6: Help Consistente (Armonía)
| ID | CLI | Mejora | Estado |
| :--- | :--- | :--- | :--- |
| H1 | Todos | HelpFormatter helper | ✅ |
**Herramienta creada:** `core/help_formatter.rb`
| ID | Mejora | Estado |
| :--- | :--- | :--- |
| H1 | HelpFormatter helper reutilizable | ✅ |
### Fase 7: Documentación Técnica
| ID | Documento | Contenido | Estado |
| :--- | :--- | :--- | :--- |
| DOC1 | `docs/tecnica/adn_cli.md` | Referencia CLI | ✅ |
| DOC2 | `docs/tecnica/adn_core.md` | Módulos core | ✅ |
| DOC3 | `docs/tecnica/adn_tests.md` | Guía de testing | ✅ |
| ID | Documento | Estado |
| :--- | :--- | :--- |
| DOC1 | `docs/tecnica/adn_cli.md` | ✅ |
| DOC2 | `docs/tecnica/adn_core.md` | ✅ |
| DOC3 | `docs/tecnica/adn_tests.md` | ✅ |
### Fase 8: CI/CD (Futuro)
### Fase 8: CI/CD
| ID | Mejora | Estado |
| :--- | :--- | :--- |
| CI1 | GitHub Actions para tests | ✅ |
| CI2 | Lint automatizado | ✅ |
**Archivos creados:**
- `.github/workflows/test.yml`
- `.github/workflows/lint.yml`
- `adn/tools/.rubocop.yml`
---
## Extensión P2604: Integración MSP (Marzo 2026)
> **Objetivo**: Integrar NotebookLM MSPs con el flujo de trabajo ADN
| CI2 | Lint automatizado (.rubocop.yml) | ✅ |
### Fase 9: Integración MSP (Armonía Integral)
| ID | Mejora | Herramienta | Estado |
| :--- | :--- | :--- | :--- |
| M1 | Auditoría de MSPs | CLI `msp:auditar` | ✅ |
| M2 | Registro de MSPs en BD | CLI `msp:registrar` | ✅ |
| M3 | Listado de MSPs disponibles | CLI `msp:listar` | ✅ |
| M4 | Documentación de integración | `docs/mcps/MSPs-ADN.md` | ✅ |
| M5 | Reutilizar NodosInfo en CLI | `nodos.rb`, `contexto.rb` | ✅ |
| ID | Mejora | Estado |
| :--- | :--- | :--- |
| M1 | Auditoría de MSPs | ✅ |
| M2 | Registro de MSPs en BD | ✅ |
| M3 | Listado de MSPs disponibles | ✅ |
| M4 | Documentación de integración | ✅ |
| M5 | Reutilizar NodosInfo en CLI | ✅ |
---
### Fase 10: Saneamiento y Consolidación
### Fase 10: Saneamiento y Consolidación (Armonía + Menos es Más)
> **Objetivo**: Un solo punto de verdad (`adn/README.md`) y un solo plan (`P2604`).
> Eliminar código muerto, archivos obsoletos y duplicaciones.
| ID | Mejora | Tipo | Estado |
| :--- | :--- | :--- | :--- |
| S1 | Eliminar `when 'triggers'` duplicado en `run` | Fix bug | ✅ |
| S2 | Eliminar `cli/commit.rb` (truncado, sin uso) | Limpieza | ✅ |
| S3 | Eliminar `cli/inicio.rb` y `cli/cierre.rb` (legacy, reemplazados por `jornada.rb`) | Limpieza | ✅ |
| S4 | Mover planes obsoletos de `docs/plan/` a `docs/_hist/` | Consolidación | ✅ |
| S5 | Mover docs técnicos duplicados (`docs/tecnica/`) a `docs/_hist/` | Consolidación | ✅ |
| S6 | Eliminar manifiesto vacío `docs/proyectos/P2604_proyecto_p2604.md` | Limpieza | ✅ |
| S7 | Corregir referencia a plan obsoleto en `run` | Fix | ✅ |
| S8 | Dejar de cargar `core/validador.rb` obsoleto en `run` | Limpieza | ✅ |
| S9 | Limpiar progreso duplicado en este plan | Doc | ✅ |
| S10 | Migrar `SubcomandoSalud` al namespace `ADN::` | Refactor | ✅ |
| S11 | Crear CLI `ssh` — ejecución remota reutilizable via `candados` + `EjecutorRemoto` | Herramienta | ✅ |
| S12 | Refactorizar `ssh.rb` — leer datos de fichas via `NodosInfo`, eliminar hash hardcodeado | Refactor | ✅ |
| S13 | Consolidar `core/` — mover lógica de dominio a submódulos CLI (`nodos_info``nodos/`, etc.) | Arquitectura | ✅ |
| S14 | Agregar subcomando `nodos info <nodo>` — exponer metadata de fichas como herramienta CLI | Herramienta | ✅ |
| S15 | Actualizar `README.md` — estructura real de tools/, nuevos subcomandos, directiva submódulos | Doc | ✅ |
---
## Extensión P2604: Bitácora Web + Mejoras Eventos (Marzo 2026)
> **Objetivo**: Mejorar la experiencia de usuario en la bitácora web y la consistencia en el CLI de eventos.
| ID | Mejora | Estado |
| :--- | :--- | :--- |
| S1-S9 | Limpieza de código muerto y duplicaciones | ✅ |
| S10 | Migrar SubcomandoSalud a namespace ADN | ✅ |
| S11 | CLI `ssh` — ejecución remota reutilizable | ✅ |
| S12 | Refactorizar ssh.rb — leer datos de fichas | ✅ |
| S13 | Consolidar core/ — submódulos CLI | ✅ |
| S14 | Subcomando `nodos info` | ✅ |
| S15 | Actualizar README.md con estructura real | ✅ |
### Fase 11: Bitácora Web (Mejora Continua)
| ID | Mejora | Herramienta | Estado |
| :--- | :--- | :--- | :--- |
| B1 | Auto-refresh cada 30 segundos | React App.tsx | ✅ |
| B2 | Refresh al recuperar foco (visibility change) | React App.tsx | ✅ |
| B3 | Smart refresh - solo actualizar si hay cambios (comparando max_id) | Backend + Frontend | ✅ |
| B4 | Documentar en README.md | `adn/README.md` | 📍 |
| ID | Mejora | Estado |
| :--- | :--- | :--- |
| B1 | Auto-refresh cada 30 segundos | ✅ |
| B2 | Refresh al recuperar foco | ✅ |
| B3 | Smart refresh (comparando max_id) | ✅ |
### Fase 12: Consistencia de Eventos (Menos es Más)
> El estado y modo deben ser valores derivados, no ingresados manualmente.
| ID | Mejora | Archivo | Estado |
| :--- | :--- | :--- | :--- |
| E1 | Estado calculado automáticamente desde `hora_fin` (si tiene → ✅, si no → ⏳) | `cli/db/evento.rb` | ✅ |
| E2 | Modo resuelto automáticamente desde la última jornada del día | `cli/db/evento.rb` | ✅ |
| E3 | Estado automático también al actualizar evento con `--fin` | `cli/db/evento.rb` | ✅ |
| E4 | Actualizar ayuda y documentación | `adn/README.md` | 📍 |
**Comportamiento:**
- Al crear evento sin especificar `--estado`:
- Si tiene `--fin` → estado = "✅" (completado)
- Si NO tiene `--fin` → estado = "⏳" (en proceso)
- Al crear evento sin especificar `--modo`:
- Busca la última entrada que contenga "inicio de jornada" y usa su modo
- Si no hay jornada → usa default "P" (Presencial)
- Al actualizar evento con `--fin` sin especificar `--estado`:
- Automatically set to "✅"
| ID | Mejora | Estado |
| :--- | :--- | :--- |
| E1 | Estado calculado automáticamente | ✅ |
| E2 | Modo resuelto desde última jornada | ✅ |
| E3 | Estado automático al actualizar con --fin | ✅ |
---
## Progreso
```
Fase 1: ██████████ 100% (T1-T3: 15 tests)
Fase 2: ██████░░░░ 67% (D1, D3 done)
Fase 3: ██████████ 100% (E1-E3: error handler)
Fase 4: ██████████ 100% (C1-C3: constants.rb)
Fase 5: ██████████ 100% (L1-L3: logger.rb)
Fase 6: ██████████ 100% (H1: HelpFormatter)
Fase 7: ██████████ 100% (DOC1-DOC3: docs/tecnica/)
Fase 8: ██████████ 100% (CI1-CI2: GitHub Actions)
Fase 9: ██████████ 100% (M1-M5: MSP CLI)
Fase 10: ██████████ 100% (S1-S15 done ✔)
Fase 11: ██████████ 100% (B1-B3 done)
Fase 12: ████████░░ 67% (E1-E3 done)
Fase 1: ██████████ 100% Tests Core
Fase 2: ██████░░░░ 67% Deprecation
Fase 3: ██████████ 100% Error Handler
Fase 4: ██████████ 100% Constants
Fase 5: ██████████ 100% Logger
Fase 6: ██████████ 100% HelpFormatter
Fase 7: ██████████ 100% Documentación
Fase 8: ██████████ 100% CI/CD
Fase 9: ██████████ 100% MSP
Fase 10: ██████████ 100% Saneamiento
Fase 11: ██████████ 100% Bitácora Web
Fase 12: ████████░░ 67% Eventos
```
---
## Métricas Totales
| Métrica | Valor |
@@ -225,19 +200,10 @@ Fase 12: ████████░░ 67% (E1-E3 done)
| Archivos modificados | 10 |
| Archivos limpiados/movidos | 20+ |
| Fases completadas | 11/12 (92%) |
| Documentos técnicos | Consolidados en `adn/README.md` |
---
## Próxima Acción
**B3 + E4**: Actualizar `adn/README.md` con las nuevas funcionalidades (auto-refresh, estado/modo calculado)
---
## Referencias
- Punto de verdad: [`adn/README.md`](../../adn/README.md)
- ADN IA: [`05_ia.md`](../../adn/05_ia.md)
- Bitácoras: ID 1054-1056, 1073, 1106, 1112
- Planes históricos movidos a: `docs/_hist/plan/`
- **Punto de verdad**: [`adn/README.md`](../../../adn/README.md)
- **ADN**: [Ontología](../../../adn/01_ontologia.md) | [Proyectos](../../../adn/07_proyectos.md)
- **ADN IA**: [05_ia.md](../../../adn/05_ia.md)
- **Bitácoras**: IDs 1054-1056, 1073, 1106, 1112 vía `./adn/tools/run db evento:listar --detalle`