# P2604 - Mejoras al ADN > Menos es Más + Mejora Continua + Armonía Integral ## Enfoque Mejoras atómicas, incrementales y reutilizables. Una herramienta por vez. --- ## 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 | | :--- | :--- | :--- | :--- | :--- | | 1 | Sin tests para módulos core | `core/*.rb` | Menos es Más | Alta | | 2 | Banner DEPRECATED incompleto | `cli/validador.rb` | Armonía | Media | | 3 | core/validador.rb sin deprecation | `core/validador.rb` | Armonía | Media | | 4 | Constantes de colores hardcodeadas | `core/colores.rb` | Menos es Más | Baja | | 5 | Sin handler de errores global | `run` | Armonía | Alta | | 6 | db/exporters sin tests | `db/exporters/*.rb` | Menos es Más | Media | | 7 | Logger sin rotación | `core/logger.rb` | Mejora Cont. | Baja | | 8 | Help inconsistente entre CLI | `cli/*.rb` | Armonía | Baja | --- ## Plan de Mejoras (8 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 | ✅ | | T2 | `spec/core/colores_spec.rb` | 6 | ✅ | | 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 | | :--- | :--- | :--- | :--- | | D1 | `cli/validador.rb` | Banner agregado | ✅ | | D2 | `core/validador.rb` | Revisar - útil para validaciones | ⏸️ | | D3 | `db/exporters/md_exporter.rb` | Banner agregado | ✅ | ### 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` ### Fase 4: Constantes y Config (Menos es Más) | ID | Mejora | Estado | | :--- | :--- | :--- | | C1 | Documentar constantes en constants.rb | ✅ | | 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 | | :--- | :--- | :--- | | L1 | Agregar rotación de logs | ✅ | | 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` ### 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 | ✅ | ### Fase 8: CI/CD (Futuro) | 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 ### 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` | ✅ | --- ### 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 ` — 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. ### 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` | 📍 | ### 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 "✅" --- ## 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) ``` --- ## Métricas Totales | Métrica | Valor | | :--- | :--- | | Tests pasando | 15 | | Archivos creados | 12 | | 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/`