From 69149c9e29c33765d1ad1ac2132e6e7a2f33b813 Mon Sep 17 00:00:00 2001 From: Ricardo Monla Date: Mon, 16 Mar 2026 15:24:26 -0300 Subject: [PATCH] =?UTF-8?q?[RFC-ADN-01]=20Armon=C3=ADa=20Integral=20?= =?UTF-8?q?=E2=80=94=20estandarizar=20manifiestos=20de=20proyectos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 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 --- docs/proy/P2602_Backups/P2602_backups.md | 36 +-- .../P2604_Mejoras-ADN/P2604_mejoras_ADN.md | 236 ++++++++---------- .../P2605_Migracion_Solo_Bitacoras_Web.md | 113 +++++---- 3 files changed, 179 insertions(+), 206 deletions(-) diff --git a/docs/proy/P2602_Backups/P2602_backups.md b/docs/proy/P2602_Backups/P2602_backups.md index 0a85cf30..303d91a4 100644 --- a/docs/proy/P2602_Backups/P2602_backups.md +++ b/docs/proy/P2602_Backups/P2602_backups.md @@ -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). -### Nodos de infraestructura y Gestión (Core) -| 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). | +## Hitos Clave -### Nodos Objetivo (Scope de Resguardos) -| Server | VMID | Nodo | OS | Grupo | Ventana | SSH VM | -| :--- | :--- | :--- | :--- | :--- | :--- | :--- | -| pmox1 | 101 | srvv-sitio | Ubuntu | linux | Libre | ✅ rmonla | -| pmox1 | 102 | srvv-sitio0 | Debian | linux | Libre | ✅ rmonla | -| pmox1 | 103 | srvv-dtic | Debian | linux | Libre | ✅ rmonla | -| pmox1 | 104 | srvv-docs | Debian | linux | Libre | ✅ rmonla | -| pmox1 | 112 | srvv-dns | Debian | linux | Libre | ✅ rmonla | -| pmox2 | 105 | srvv-koha | Linux | linux | Libre | ✅ rmonla | -| 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** | +| Fecha | ID | Estado | Hito | +| :--- | :--- | :---: | :--- | +| 28/02 | INIT | ✅ | Inicialización del proyecto. Análisis de pipeline manual existente. | +| — | R01-R05 | 📍 | Fase 1: Reconocimiento de campo (acceso SSH, inventario VMs, ventanas horarias) | +| — | D01-D05 | 📍 | Fase 2: Procesador Vzdump remoto | +| — | L01-L04 | 📍 | Fase 3: Procesamiento local con retención inteligente | +| — | U01-U04 | 📍 | Fase 4: Upload a la nube con resume | +| — | V01-V05 | 📍 | Fase 5: Validación end-to-end | +| — | P01-P04 | 📍 | Fase 6: Producción (cron + dashboard) | ## Herramientas diff --git a/docs/proy/P2604_Mejoras-ADN/P2604_mejoras_ADN.md b/docs/proy/P2604_Mejoras-ADN/P2604_mejoras_ADN.md index 58cbee9c..b8201a36 100644 --- a/docs/proy/P2604_Mejoras-ADN/P2604_mejoras_ADN.md +++ b/docs/proy/P2604_Mejoras-ADN/P2604_mejoras_ADN.md @@ -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 ` — 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` diff --git a/docs/proy/P2605_Bitacoras-Web/P2605_Migracion_Solo_Bitacoras_Web.md b/docs/proy/P2605_Bitacoras-Web/P2605_Migracion_Solo_Bitacoras_Web.md index 6a187d03..c332f7ee 100644 --- a/docs/proy/P2605_Bitacoras-Web/P2605_Migracion_Solo_Bitacoras_Web.md +++ b/docs/proy/P2605_Bitacoras-Web/P2605_Migracion_Solo_Bitacoras_Web.md @@ -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. +## 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 puede reemplazar al MD (Entrada de datos) - -Sin esto, seguís dependiendo del archivo para registrar actividad. +### Etapa A — La Web reemplaza al MD (Entrada de datos) | # | 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 | ✅ | | 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 — Los comandos ADN hablan con la DB (Automatización) - -Sin esto, `adn inicio` y `adn cierre` siguen escribiendo en el `.md`. +### Etapa B — Comandos ADN hablan con la DB (Automatización) | # | Hito | Qué resuelve | Estado | | :---: | :--- | :--- | :---: | -| B1 | **Refactor inicio.rb → DB-First** | `adn inicio de jornada` escribe en DB, no en MD | ✅ | -| B2 | **Refactor cierre.rb → DB-First** | `adn cierre 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 | ✅ | | B3 | **Refactor backup → DB** | Registrar eventos de backup como entradas en DB | ✅ | -**Resultado:** Los comandos del enjambre ya no tocan archivos `.md`. - ---- - -### 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. +### Etapa C — MD se genera desde la DB (Respaldo) | # | 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 | ✅ | -**Resultado:** Los archivos `.md` son un producto generado, no una fuente de entrada. - ---- - ### Etapa D — Verificación y cierre (Confianza) -Asegurar que no se perdió nada en la transición. - | # | 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 | ✅ | -| D3 | **Desactivar edición manual de MDs** | Header `` en MDs exportados | ✅ | +| D3 | **Desactivar edición manual** | Header `` en MDs exportados | ✅ | --- -## 🐝 Herramientas del Enjambre ADN +## Comandos ADN (Referencia) -``` +```bash # Flujo diario (DB-First) -./adn/tools/run inicio de jornada presencial|remoto -./adn/tools/run cierre de jornada presencial|remoto +./adn/tools/run db evento:crear --nodo NODO --inicio HH:MM --descripcion "..." +./adn/tools/run db evento:listar --desde FECHA --detalle # Importar MD existente → DB ./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 ✅ - -**Ya no es necesario editar MDs manualmente.** Todas las etapas están completas. +## Estado: COMPLETO ✅ | Etapa | Progreso | | :--- | :---: | @@ -98,9 +120,10 @@ Asegurar que no se perdió nada en la transición. | C — MD se genera desde DB | 2/2 ✅ | | 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. -- Selector "Modo de Jornada" en la UI queda como mejora futura (no bloquea el flujo actual). +> **Cobertura de migración:** 88.9% (16/18 bitácoras con entradas). Las 2 restantes son días sin actividades detalladas. ---- - +## Referencias + +- **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`