Files
dtic-DIIAA/docs/proy/P2604_Mejoras-ADN/P2604_mejoras_ADN.md
T
Ricardo Monla ba5c65e2a4 [RFC-ADN-01] Normalizar nomenclatura de proyectos
- Directorios: PascalCase (p2601_dasuten → P2601_Dasuten)
- Planes: numeración pura (P2601_6.1.A → P2601.06.01)
- Sin caracteres especiales en nombres de archivo
- 07_proyectos.md: convención RFC-ADN-01 integrada, P2604/P2605 agregados
- evento:listar: nueva opción --detalle para descripciones completas
2026-03-16 15:15:53 -03:00

8.9 KiB

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_infonodos/, 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.

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 IA: 05_ia.md
  • Bitácoras: ID 1054-1056, 1073, 1106, 1112
  • Planes históricos movidos a: docs/_hist/plan/