[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
+10 -26
View File
@@ -100,33 +100,17 @@ Automatizar el ciclo completo de backup de la DTIC — actualmente un proceso ma
**Excluidos** (stopped, sin auto-inicio, en preparación): docker (100), srvv-N8N VM (114), srvv-N8N CT (115). **Excluidos** (stopped, sin auto-inicio, en preparación): docker (100), srvv-N8N VM (114), srvv-N8N CT (115).
### Nodos de infraestructura y Gestión (Core) ## Hitos Clave
| Nodo | IP | Rol |
| :--- | :--- | :--- |
| [**srv-ns8**](../../../nodos/srv-ns8.md) | `10.0.10.8` | Centro de operaciones. Ejecuta ns8-bkps. |
| [**srv-pmox1**](../../../nodos/srv-pmox1.md) | `10.0.10.201` | Pool master Proxmox. Gateway SSH. |
| [**srv-pmox2**](../../../nodos/srv-pmox2.md) | `10.0.10.202` | Nodo Proxmox secundario. |
| [**srv-pmox3**](../../../nodos/srv-pmox3.md) | `10.0.10.203` | Nodo Proxmox terciario (64GB RAM). |
| [**srv-xen1**](../../../nodos/srv-xen1.md) | `10.0.10.23` | Citrix XenServer 7.0 (Legacy). |
### Nodos Objetivo (Scope de Resguardos) | Fecha | ID | Estado | Hito |
| Server | VMID | Nodo | OS | Grupo | Ventana | SSH VM | | :--- | :--- | :---: | :--- |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- | | 28/02 | INIT | ✅ | Inicialización del proyecto. Análisis de pipeline manual existente. |
| pmox1 | 101 | srvv-sitio | Ubuntu | linux | Libre | ✅ rmonla | | | R01-R05 | 📍 | Fase 1: Reconocimiento de campo (acceso SSH, inventario VMs, ventanas horarias) |
| pmox1 | 102 | srvv-sitio0 | Debian | linux | Libre | ✅ rmonla | | — | D01-D05 | 📍 | Fase 2: Procesador Vzdump remoto |
| pmox1 | 103 | srvv-dtic | Debian | linux | Libre | ✅ rmonla | | — | L01-L04 | 📍 | Fase 3: Procesamiento local con retención inteligente |
| pmox1 | 104 | srvv-docs | Debian | linux | Libre | ✅ rmonla | | — | U01-U04 | 📍 | Fase 4: Upload a la nube con resume |
| pmox1 | 112 | srvv-dns | Debian | linux | Libre | ✅ rmonla | | — | V01-V05 | 📍 | Fase 5: Validación end-to-end |
| pmox2 | 105 | srvv-koha | Linux | linux | Libre | ✅ rmonla | | — | P01-P04 | 📍 | Fase 6: Producción (cron + dashboard) |
| pmox2 | 108 | pcv-dasu1 | Win10 | windows | Libre | ❌ pendiente |
| pmox2 | 109 | pcv-dasu2 | Win10 | windows | Libre | ❌ pendiente |
| pmox2 | 110 | pcv-serviio | Win10 | windows | Libre | ❌ pendiente |
| pmox3 | 111 | srvv-fenix | WinSrv 2019 | windows | 🌙 00:00-06:00 | ✅ monlaricardo |
| pmox3 | 106 | srvv-uptime | Debian | lxc | Libre | ✅ rmonla |
| pmox3 | 107 | srvv-data | Debian | lxc | Libre | ✅ rmonla |
| pmox3 | 113 | srvv-sitio2 | Debian | lxc | Libre | ✅ rmonla |
| **xen1** | — | **srvv-maurik** | **WinSrv 2019** | **windows** | **Libre** | **✅ monlaricardo** |
| **xen1** | — | **srvv-sysacadweb** | **WinSrv 2008R2** | **windows** | **Libre** | **✅ monlaricardo:7022** |
## Herramientas ## Herramientas
+101 -135
View File
@@ -1,22 +1,58 @@
# P2604 - Mejoras al ADN # 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 ## 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 ### Problemas Identificados
| # | Problema | Archivo(s) | Principio | Severidad | | # | 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) ### Fase 1: Tests Core (Menos es Más)
**Objetivo**: Coverage progresivo, un módulo a la vez.
| ID | Módulo | Tests | Estado | | ID | Módulo | Tests | Estado |
| :--- | :--- | :--- | :--- | | :--- | :--- | :--- | :--- |
| T1 | `spec/db/evento_spec.rb` | 3 | ✅ | | 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 | ✅ | | T3 | `spec/core/validador_spec.rb` | 6 | ✅ |
| T4 | `spec/cli/help_spec.rb` | 0 | 📍 | | T4 | `spec/cli/help_spec.rb` | 0 | 📍 |
**Total tests: 15 passing**
### Fase 2: Deprecation Banners (Armonía) ### Fase 2: Deprecation Banners (Armonía)
| ID | Archivo | Acción | Estado | | 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) ### Fase 3: Manejo de Errores (Armonía)
**Objetivo**: Consistencia en manejo de excepciones.
| ID | Mejora | Estado | | ID | Mejora | Estado |
| :--- | :--- | :--- | | :--- | :--- | :--- |
| E1 | Agregar `rescue` global en `run` | ✅ | | E1 | Agregar `rescue` global en `run` | ✅ |
| E2 | Estandarizar mensajes de error | ✅ | | E2 | Estandarizar mensajes de error | ✅ |
| E3 | Logging de excepciones no manejadas | ✅ | | E3 | Logging de excepciones no manejadas | ✅ |
**Herramientas creadas:** **Herramientas creadas:** `core/error_handler.rb`, excepciones en `core/constants.rb`
- `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) ### 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) | ✅ | | C2 | Agregar constantes reutilizables (estados, modos) | ✅ |
| C3 | Validar constantes al inicio | ✅ | | C3 | Validar constantes al inicio | ✅ |
**Mejoras:**
- `constants.rb` ahora incluye: estados (⏳✅❌⚠️⏸️📍), modos (P/R), DB config, excepciones
### Fase 5: Logger Mejorado (Mejora Continua) ### Fase 5: Logger Mejorado (Mejora Continua)
| ID | Mejora | Estado | | ID | Mejora | Estado |
@@ -88,134 +113,84 @@ Mejoras atómicas, incrementales y reutilizables. Una herramienta por vez.
| L2 | Niveles de log configurables | ✅ | | L2 | Niveles de log configurables | ✅ |
| L3 | Output JSON estructurado | ✅ | | L3 | Output JSON estructurado | ✅ |
**Mejoras:** Rotación por tamaño (>10MB), mantiene 7 archivos, nivel mínimo configurable
### Fase 6: Help Consistente (Armonía) ### Fase 6: Help Consistente (Armonía)
| ID | CLI | Mejora | Estado | | ID | Mejora | Estado |
| :--- | :--- | :--- | :--- | | :--- | :--- | :--- |
| H1 | Todos | HelpFormatter helper | ✅ | | H1 | HelpFormatter helper reutilizable | ✅ |
**Herramienta creada:** `core/help_formatter.rb`
### Fase 7: Documentación Técnica ### Fase 7: Documentación Técnica
| ID | Documento | Contenido | Estado | | ID | Documento | Estado |
| :--- | :--- | :--- | :--- | | :--- | :--- | :--- |
| DOC1 | `docs/tecnica/adn_cli.md` | Referencia CLI | ✅ | | DOC1 | `docs/tecnica/adn_cli.md` | ✅ |
| DOC2 | `docs/tecnica/adn_core.md` | Módulos core | ✅ | | DOC2 | `docs/tecnica/adn_core.md` | ✅ |
| DOC3 | `docs/tecnica/adn_tests.md` | Guía de testing | ✅ | | DOC3 | `docs/tecnica/adn_tests.md` | ✅ |
### Fase 8: CI/CD (Futuro) ### Fase 8: CI/CD
| ID | Mejora | Estado | | ID | Mejora | Estado |
| :--- | :--- | :--- | | :--- | :--- | :--- |
| CI1 | GitHub Actions para tests | ✅ | | CI1 | GitHub Actions para tests | ✅ |
| CI2 | Lint automatizado | ✅ | | CI2 | Lint automatizado (.rubocop.yml) | ✅ |
**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) ### Fase 9: Integración MSP (Armonía Integral)
| ID | Mejora | Herramienta | Estado | | ID | Mejora | Estado |
| :--- | :--- | :--- | :--- | | :--- | :--- | :--- |
| M1 | Auditoría de MSPs | CLI `msp:auditar` | ✅ | | M1 | Auditoría de MSPs | ✅ |
| M2 | Registro de MSPs en BD | CLI `msp:registrar` | ✅ | | M2 | Registro de MSPs en BD | ✅ |
| M3 | Listado de MSPs disponibles | CLI `msp:listar` | ✅ | | M3 | Listado de MSPs disponibles | ✅ |
| M4 | Documentación de integración | `docs/mcps/MSPs-ADN.md` | ✅ | | M4 | Documentación de integración | ✅ |
| M5 | Reutilizar NodosInfo en CLI | `nodos.rb`, `contexto.rb` | ✅ | | M5 | Reutilizar NodosInfo en CLI | ✅ |
--- ### Fase 10: Saneamiento y Consolidación
### Fase 10: Saneamiento y Consolidación (Armonía + Menos es Más) | ID | Mejora | Estado |
| :--- | :--- | :--- |
> **Objetivo**: Un solo punto de verdad (`adn/README.md`) y un solo plan (`P2604`). | S1-S9 | Limpieza de código muerto y duplicaciones | ✅ |
> Eliminar código muerto, archivos obsoletos y duplicaciones. | S10 | Migrar SubcomandoSalud a namespace ADN | ✅ |
| S11 | CLI `ssh` — ejecución remota reutilizable | ✅ |
| ID | Mejora | Tipo | Estado | | S12 | Refactorizar ssh.rb — leer datos de fichas | ✅ |
| :--- | :--- | :--- | :--- | | S13 | Consolidar core/ — submódulos CLI | ✅ |
| S1 | Eliminar `when 'triggers'` duplicado en `run` | Fix bug | ✅ | | S14 | Subcomando `nodos info` | ✅ |
| S2 | Eliminar `cli/commit.rb` (truncado, sin uso) | Limpieza | ✅ | | S15 | Actualizar README.md con estructura real | ✅ |
| 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.
### Fase 11: Bitácora Web (Mejora Continua) ### Fase 11: Bitácora Web (Mejora Continua)
| ID | Mejora | Herramienta | Estado | | ID | Mejora | Estado |
| :--- | :--- | :--- | :--- | | :--- | :--- | :--- |
| B1 | Auto-refresh cada 30 segundos | React App.tsx | ✅ | | B1 | Auto-refresh cada 30 segundos | ✅ |
| B2 | Refresh al recuperar foco (visibility change) | React App.tsx | ✅ | | B2 | Refresh al recuperar foco | ✅ |
| B3 | Smart refresh - solo actualizar si hay cambios (comparando max_id) | Backend + Frontend | ✅ | | B3 | Smart refresh (comparando max_id) | ✅ |
| B4 | Documentar en README.md | `adn/README.md` | 📍 |
### Fase 12: Consistencia de Eventos (Menos es Más) ### Fase 12: Consistencia de Eventos (Menos es Más)
> El estado y modo deben ser valores derivados, no ingresados manualmente. | ID | Mejora | Estado |
| :--- | :--- | :--- |
| ID | Mejora | Archivo | Estado | | E1 | Estado calculado automáticamente | ✅ |
| :--- | :--- | :--- | :--- | | E2 | Modo resuelto desde última jornada | ✅ |
| E1 | Estado calculado automáticamente desde `hora_fin` (si tiene → ✅, si no → ⏳) | `cli/db/evento.rb` | ✅ | | E3 | Estado automático al actualizar con --fin | ✅ |
| 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 ## Progreso
``` ```
Fase 1: ██████████ 100% (T1-T3: 15 tests) Fase 1: ██████████ 100% Tests Core
Fase 2: ██████░░░░ 67% (D1, D3 done) Fase 2: ██████░░░░ 67% Deprecation
Fase 3: ██████████ 100% (E1-E3: error handler) Fase 3: ██████████ 100% Error Handler
Fase 4: ██████████ 100% (C1-C3: constants.rb) Fase 4: ██████████ 100% Constants
Fase 5: ██████████ 100% (L1-L3: logger.rb) Fase 5: ██████████ 100% Logger
Fase 6: ██████████ 100% (H1: HelpFormatter) Fase 6: ██████████ 100% HelpFormatter
Fase 7: ██████████ 100% (DOC1-DOC3: docs/tecnica/) Fase 7: ██████████ 100% Documentación
Fase 8: ██████████ 100% (CI1-CI2: GitHub Actions) Fase 8: ██████████ 100% CI/CD
Fase 9: ██████████ 100% (M1-M5: MSP CLI) Fase 9: ██████████ 100% MSP
Fase 10: ██████████ 100% (S1-S15 done ✔) Fase 10: ██████████ 100% Saneamiento
Fase 11: ██████████ 100% (B1-B3 done) Fase 11: ██████████ 100% Bitácora Web
Fase 12: ████████░░ 67% (E1-E3 done) Fase 12: ████████░░ 67% Eventos
``` ```
---
## Métricas Totales ## Métricas Totales
| Métrica | Valor | | Métrica | Valor |
@@ -225,19 +200,10 @@ Fase 12: ████████░░ 67% (E1-E3 done)
| Archivos modificados | 10 | | Archivos modificados | 10 |
| Archivos limpiados/movidos | 20+ | | Archivos limpiados/movidos | 20+ |
| Fases completadas | 11/12 (92%) | | 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 ## Referencias
- Punto de verdad: [`adn/README.md`](../../adn/README.md) - **Punto de verdad**: [`adn/README.md`](../../../adn/README.md)
- ADN IA: [`05_ia.md`](../../adn/05_ia.md) - **ADN**: [Ontología](../../../adn/01_ontologia.md) | [Proyectos](../../../adn/07_proyectos.md)
- Bitácoras: ID 1054-1056, 1073, 1106, 1112 - **ADN IA**: [05_ia.md](../../../adn/05_ia.md)
- Planes históricos movidos a: `docs/_hist/plan/` - **Bitácoras**: IDs 1054-1056, 1073, 1106, 1112 vía `./adn/tools/run db evento:listar --detalle`
@@ -1,17 +1,59 @@
# Plan de Migración: Solo Bitácoras Web (P2605) # P2605 - Migración a Bitácoras Web
> Manifiesto de Proyecto | Referencia: [`adn/07_proyectos.md`](../../../adn/07_proyectos.md)
## Identificación
| Campo | Valor |
| :--- | :--- |
| **Código** | P2605 |
| **Nombre** | Migración a Bitácoras Web (DB-First) |
| **Estado** | ✅ Completado |
| **Inicio** | 05/03/2026 |
| **Fin** | 12/03/2026 |
## Objetivo
## 🎯 Objetivo
Dejar de editar manualmente archivos `.md`. La Web y los comandos ADN escriben en la DB; el `.md` se genera automáticamente como respaldo. Dejar de editar manualmente archivos `.md`. La Web y los comandos ADN escriben en la DB; el `.md` se genera automáticamente como respaldo.
## 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 la aplicación web (Docker) |
## Herramientas
| Herramienta | Uso |
| :--- | :--- |
| **React 18 + TypeScript** | Frontend SPA (bitácora web) |
| **Node.js + Express** | Backend API REST |
| **PostgreSQL 15** | Base de datos relacional |
| **Docker Compose** | Orquestación de servicios |
| **Ruby CLI (ADN)** | Comandos `db migrar:md`, `db exportar:md`, `db verificar` |
## Hitos Clave
| Fecha | ID | Estado | Hito |
| :--- | :--- | :---: | :--- |
| 05/03 | A1-A6 | ✅ | Etapa A: Web puede reemplazar al MD (esquema DB, API, UI gestión, formulario, rollover) |
| 08/03 | B1-B3 | ✅ | Etapa B: Comandos ADN hablan con DB (`inicio`, `cierre`, `backup` → DB-First) |
| 10/03 | C1-C2 | ✅ | Etapa C: MD se genera desde DB (`exportar:md`, exportación masiva) |
| 12/03 | D1-D3 | ✅ | Etapa D: Verificación y cierre (migración histórica, auditoría, header automático) |
--- ---
## 📋 Secuencia Lógica de Hitos ## Detalle de Etapas
> La numeración refleja dependencias reales: cada hito requiere los anteriores. ### Etapa A — La Web reemplaza al MD (Entrada de datos)
### Etapa A — La Web puede reemplazar al MD (Entrada de datos)
Sin esto, seguís dependiendo del archivo para registrar actividad.
| # | Hito | Qué resuelve | Estado | | # | Hito | Qué resuelve | Estado |
| :---: | :--- | :--- | :---: | | :---: | :--- | :--- | :---: |
@@ -22,55 +64,37 @@ Sin esto, seguís dependiendo del archivo para registrar actividad.
| A5 | **UI: Formulario de Entradas** | Crear entradas I-F-D-E desde la Web | ✅ | | A5 | **UI: Formulario de Entradas** | Crear entradas I-F-D-E desde la Web | ✅ |
| A6 | **Rollover automático** | Pendientes activos pasan al día siguiente (vía `activo=true`) | ✅ | | A6 | **Rollover automático** | Pendientes activos pasan al día siguiente (vía `activo=true`) | ✅ |
**Resultado:** La Web ya puede hacer todo lo que antes se hacía a mano en el MD. ### Etapa B — Comandos ADN hablan con la DB (Automatización)
---
### Etapa B — Los comandos ADN hablan con la DB (Automatización)
Sin esto, `adn inicio` y `adn cierre` siguen escribiendo en el `.md`.
| # | Hito | Qué resuelve | Estado | | # | Hito | Qué resuelve | Estado |
| :---: | :--- | :--- | :---: | | :---: | :--- | :--- | :---: |
| B1 | **Refactor inicio.rb → DB-First** | `adn inicio de jornada` escribe en DB, no en MD | ✅ | | B1 | **Refactor inicio.rb → DB-First** | `adn inicio de jornada` escribe en DB | ✅ |
| B2 | **Refactor cierre.rb → DB-First** | `adn cierre de jornada` escribe en DB, no en MD | ✅ | | B2 | **Refactor cierre.rb → DB-First** | `adn cierre de jornada` escribe en DB | ✅ |
| B3 | **Refactor backup → DB** | Registrar eventos de backup como entradas en DB | ✅ | | B3 | **Refactor backup → DB** | Registrar eventos de backup como entradas en DB | ✅ |
**Resultado:** Los comandos del enjambre ya no tocan archivos `.md`. ### Etapa C — MD se genera desde la DB (Respaldo)
---
### Etapa C — El MD se genera desde la DB (Respaldo)
Recién ahora tiene sentido generar el MD, porque la DB **ya es** la fuente de verdad.
| # | Hito | Qué resuelve | Estado | | # | Hito | Qué resuelve | Estado |
| :---: | :--- | :--- | :---: | | :---: | :--- | :--- | :---: |
| C1 | **Exportador Ruby: md_exporter.rb** | `adn db exportar:md FECHA` genera el MD desde la DB | ✅ | | C1 | **Exportador Ruby: md_exporter.rb** | `adn db exportar:md FECHA` genera MD desde DB | ✅ |
| C2 | **Exportación masiva** | `adn db exportar:md --todo` regenera todos los MDs | ✅ | | C2 | **Exportación masiva** | `adn db exportar:md --todo` regenera todos los MDs | ✅ |
**Resultado:** Los archivos `.md` son un producto generado, no una fuente de entrada.
---
### Etapa D — Verificación y cierre (Confianza) ### Etapa D — Verificación y cierre (Confianza)
Asegurar que no se perdió nada en la transición.
| # | Hito | Qué resuelve | Estado | | # | Hito | Qué resuelve | Estado |
| :---: | :--- | :--- | :---: | | :---: | :--- | :--- | :---: |
| D1 | **Migración histórica** | `adn db migrar:md --todo` importa todo el historial | ✅ | | D1 | **Migración histórica** | `adn db migrar:md --todo` importa historial | ✅ |
| D2 | **Verificación de cobertura** | `adn db verificar` audita MD ↔ DB | ✅ | | D2 | **Verificación de cobertura** | `adn db verificar` audita MD ↔ DB | ✅ |
| D3 | **Desactivar edición manual de MDs** | Header `<!-- GENERADO AUTOMÁTICAMENTE -->` en MDs exportados | ✅ | | D3 | **Desactivar edición manual** | Header `<!-- GENERADO AUTOMÁTICAMENTE -->` en MDs exportados | ✅ |
--- ---
## 🐝 Herramientas del Enjambre ADN ## Comandos ADN (Referencia)
``` ```bash
# Flujo diario (DB-First) # Flujo diario (DB-First)
./adn/tools/run inicio de jornada presencial|remoto ./adn/tools/run db evento:crear --nodo NODO --inicio HH:MM --descripcion "..."
./adn/tools/run cierre de jornada presencial|remoto ./adn/tools/run db evento:listar --desde FECHA --detalle
# Importar MD existente → DB # Importar MD existente → DB
./adn/tools/run db migrar:md FECHA [--sobrescribir] ./adn/tools/run db migrar:md FECHA [--sobrescribir]
@@ -87,9 +111,7 @@ Asegurar que no se perdió nada en la transición.
--- ---
## 📊 Estado Actual — COMPLETO ✅ ## Estado: COMPLETO ✅
**Ya no es necesario editar MDs manualmente.** Todas las etapas están completas.
| Etapa | Progreso | | Etapa | Progreso |
| :--- | :---: | | :--- | :---: |
@@ -98,9 +120,10 @@ Asegurar que no se perdió nada en la transición.
| C — MD se genera desde DB | 2/2 ✅ | | C — MD se genera desde DB | 2/2 ✅ |
| D — Verificación y cierre | 3/3 ✅ | | D — Verificación y cierre | 3/3 ✅ |
### Notas > **Cobertura de migración:** 88.9% (16/18 bitácoras con entradas). Las 2 restantes son días sin actividades detalladas.
- Cobertura de migración: 88.9% (16/18 bitácoras con entradas). Las 2 restantes son días sin actividades detalladas.
- Selector "Modo de Jornada" en la UI queda como mejora futura (no bloquea el flujo actual).
--- ## Referencias
<!-- 🤖 PREMISAS DE TRABAJO (IA): Fuente de Verdad → adn/05_ia.md -->
- **ADN**: [Ontología](../../../adn/01_ontologia.md) | [Proyectos](../../../adn/07_proyectos.md) | [Bitácora](../../../adn/02_bitacora.md)
- **Proyecto relacionado**: [P2603 Bitácoras](../P2603_Bitacoras/P2603_bitacoras.md)
- **Bitácoras**: Consultar en DB vía `./adn/tools/run db evento:listar --detalle`