[ADN] Fase 10: Saneamiento y Consolidación - Un solo punto de verdad
- S1: Eliminar 'triggers' duplicado en run (líneas 109/131) - S2: Eliminar cli/commit.rb (truncado, sin uso) - S3: Eliminar cli/inicio.rb y cli/cierre.rb (legacy, jornada.rb los reemplaza) - S4: Mover 4 planes obsoletos de docs/plan/adn/ a docs/_hist/plan/adn/ - S5: Mover 14 backups de planes y 3 docs técnicos a docs/_hist/ - S6: Eliminar manifiesto vacío P2604_proyecto_p2604.md - S7: Corregir referencia a plan obsoleto en run - S8: Dejar de cargar core/validador.rb obsoleto en run - S9: Limpiar progreso duplicado en P2604_mejoras_ADN.md - Agregar Fase 10 al plan P2604 con 10 tareas - Un solo punto de verdad: adn/README.md - Un solo plan: docs/proy/p2604_mejoras_ADN/P2604_mejoras_ADN.md - Registro en bitácora: evento 1073
This commit is contained in:
@@ -0,0 +1,105 @@
|
||||
# Documentación Técnica: ADN CLI
|
||||
|
||||
> Referencia para desarrolladores | Proyecto: dtic-DIIAA
|
||||
|
||||
## Punto de Entrada
|
||||
|
||||
```bash
|
||||
./adn/tools/run <subcomando> [opciones]
|
||||
```
|
||||
|
||||
## Estructura de Comandos
|
||||
|
||||
```
|
||||
adn/tools/
|
||||
├── run # Punto de entrada
|
||||
├── cli/ # Subcomandos (18 archivos)
|
||||
│ ├── db.rb # CRUD de base de datos
|
||||
│ ├── jornada.rb # Gestión de jornada
|
||||
│ ├── nodos.rb # Gestión de nodos
|
||||
│ └── ...
|
||||
├── core/ # Módulos reutilizables
|
||||
│ ├── constants.rb # Constantes globales
|
||||
│ ├── logger.rb # Logging estructurado
|
||||
│ ├── colores.rb # Colores ANSI
|
||||
│ ├── error_handler.rb # Helper de errores
|
||||
│ ├── help_formatter.rb # Ayuda estandarizada
|
||||
│ └── validador.rb # Validaciones
|
||||
└── spec/ # Tests
|
||||
```
|
||||
|
||||
## Constantes Principales
|
||||
|
||||
```ruby
|
||||
ADN::PROJECT_ROOT # Raíz del proyecto
|
||||
ADN::NODOS_DIR # Directorio de nodos
|
||||
ADN::BITACORAS_DIR # Directorio de bitácoras
|
||||
ADN::LOGS_DIR # Directorio de logs
|
||||
ADN::ESTADOS # Hash de estados (⏳✅❌⚠️⏸️📍)
|
||||
ADN::MODOS # Hash de modos (P/R)
|
||||
ADN::DB_CONFIG # Configuración de PostgreSQL
|
||||
```
|
||||
|
||||
## Excepciones Personalizadas
|
||||
|
||||
```ruby
|
||||
ADN::Error # Error base
|
||||
ADN::ConfigError # Error de configuración
|
||||
ADN::DBError # Error de base de datos
|
||||
ADN::ValidationError # Error de validación
|
||||
ADN::NetworkError # Error de red
|
||||
```
|
||||
|
||||
## Helpers Disponibles
|
||||
|
||||
### ADN::ErrorHandler
|
||||
```ruby
|
||||
ADN::ErrorHandler.error("mensaje") # Sale con código 1
|
||||
ADN::ErrorHandler.warning("mensaje") # Muestra warning
|
||||
ADN::ErrorHandler.info("mensaje") # Muestra info
|
||||
ADN::ErrorHandler.success("mensaje") # Muestra éxito
|
||||
```
|
||||
|
||||
### ADN::HelpFormatter
|
||||
```ruby
|
||||
ADN::HelpFormatter.generar_help(
|
||||
titulo: "Comando",
|
||||
descripcion: "Hace algo",
|
||||
uso: "Uso: comando [OPCIONES]",
|
||||
opciones: [{names: ["h"], desc: "Ayuda"}],
|
||||
ejemplos: [{cmd: "comando -h", desc: "Ejemplo"}]
|
||||
)
|
||||
```
|
||||
|
||||
## Tests
|
||||
|
||||
```bash
|
||||
cd adn/tools
|
||||
bundle exec rspec spec/ --format documentation
|
||||
```
|
||||
|
||||
## Logging
|
||||
|
||||
Los logs se guardan en `logs/adn/YYYY-MM-DD.log` con formato JSON.
|
||||
|
||||
```ruby
|
||||
logger.info("mensaje", { clave: "valor" })
|
||||
logger.error("error", { detalle: "info" })
|
||||
```
|
||||
|
||||
### Rotación
|
||||
- Por tamaño: >10MB
|
||||
- Mantiene: 7 archivos
|
||||
|
||||
## Variables de Entorno
|
||||
|
||||
| Variable | Descripción |
|
||||
| :--- | :--- |
|
||||
| `ADN_DEBUG` | Activa logs de debug (1 o true) |
|
||||
| `TZ` | Zona horaria (default: America/Argentina/Buenos_Aires) |
|
||||
|
||||
## Próximos Pasos
|
||||
|
||||
- [ ] Usar HelpFormatter en todos los CLI
|
||||
- [ ] Migrar a ADN::ErrorHandler
|
||||
- [ ] Agregar más tests en spec/
|
||||
@@ -0,0 +1,124 @@
|
||||
# Documentación Técnica: Módulos Core ADN
|
||||
|
||||
> Referencia de módulos centrales | Proyecto: dtic-DIIAA
|
||||
|
||||
## core/constants.rb
|
||||
|
||||
Constantes globales del sistema.
|
||||
|
||||
```ruby
|
||||
# Rutas
|
||||
ADN::PROJECT_ROOT
|
||||
ADN::NODOS_DIR
|
||||
ADN::BITACORAS_DIR
|
||||
ADN::LOGS_DIR
|
||||
ADN::TOOLS_DIR
|
||||
ADN::SEGURIDAD_DIR
|
||||
|
||||
# Estados (iconos)
|
||||
ADN::ESTADOS = {
|
||||
pendiente: '⏳',
|
||||
completado: '✅',
|
||||
fallido: '❌',
|
||||
advertencia: '⚠️',
|
||||
pausado: '⏸️',
|
||||
en_proceso: '📍'
|
||||
}
|
||||
|
||||
# Modos de trabajo
|
||||
ADN::MODOS = {
|
||||
presencial: 'P',
|
||||
remoto: 'R'
|
||||
}
|
||||
|
||||
# DB
|
||||
ADN::DB_CONFIG = { host: 'localhost', puerto: 5433, ... }
|
||||
```
|
||||
|
||||
## core/logger.rb
|
||||
|
||||
Logging estructurado JSON.
|
||||
|
||||
```ruby
|
||||
logger = ADN::Logger.new(
|
||||
directorio: 'logs/adn',
|
||||
terminal: true,
|
||||
colores: true,
|
||||
nivel: 'INFO'
|
||||
)
|
||||
|
||||
logger.info("mensaje", { dato: "valor" })
|
||||
logger.error("error", { exception: e })
|
||||
```
|
||||
|
||||
### Métodos
|
||||
- `debug`, `info`, `exito`, `advertencia`, `error`
|
||||
- `buffer` - obtener logs en memoria
|
||||
- `limpiar_buffer`
|
||||
- `cerrar`
|
||||
|
||||
## core/colores.rb
|
||||
|
||||
Códigos ANSI para terminal.
|
||||
|
||||
```ruby
|
||||
Color::RESET
|
||||
Color::BOLD
|
||||
Color::GREEN
|
||||
Color::CYAN
|
||||
Color::YELLOW
|
||||
Color::RED
|
||||
Color::MAGENTA
|
||||
Color::DIM
|
||||
```
|
||||
|
||||
## core/error_handler.rb
|
||||
|
||||
Helper para mensajes estandarizados.
|
||||
|
||||
```ruby
|
||||
ADN::ErrorHandler.error("msg")
|
||||
ADN::ErrorHandler.warning("msg")
|
||||
ADN::ErrorHandler.info("msg")
|
||||
ADN::ErrorHandler.success("msg")
|
||||
ADN::ErrorHandler.debug("msg")
|
||||
```
|
||||
|
||||
## core/help_formatter.rb
|
||||
|
||||
Generador de ayuda estandarizado.
|
||||
|
||||
```ruby
|
||||
ADN::HelpFormatter.generar_help(
|
||||
titulo: "Comando",
|
||||
descripcion: "Hace algo",
|
||||
uso: "Uso: cmd [opciones]",
|
||||
opciones: [...],
|
||||
ejemplos: [...]
|
||||
)
|
||||
```
|
||||
|
||||
## core/validador.rb
|
||||
|
||||
Validador de cumplimiento ADN (para MD-First legacy).
|
||||
|
||||
⚠️ **DEPRECATED**: Usar validaciones en DB en su lugar.
|
||||
|
||||
## core/triggers.rb
|
||||
|
||||
Motor de triggers para propagación automática.
|
||||
|
||||
## core/eventos.rb
|
||||
|
||||
Bus de eventos (pub/sub).
|
||||
|
||||
## Dependencias
|
||||
|
||||
```
|
||||
adn/tools/
|
||||
├── core/
|
||||
│ ├── constants.rb (requiere colores)
|
||||
│ ├── logger.rb (requiere colores)
|
||||
│ ├── error_handler.rb
|
||||
│ └── help_formatter.rb (requiere colores)
|
||||
```
|
||||
@@ -0,0 +1,83 @@
|
||||
# Guía de Testing ADN
|
||||
|
||||
> Cómo escribir tests para el sistema ADN
|
||||
|
||||
## Estructura de Tests
|
||||
|
||||
```
|
||||
adn/tools/
|
||||
└── spec/
|
||||
├── spec_helper.rb
|
||||
├── db/
|
||||
│ └── evento_spec.rb
|
||||
└── core/
|
||||
├── colores_spec.rb
|
||||
└── validador_spec.rb
|
||||
```
|
||||
|
||||
## Ejecutar Tests
|
||||
|
||||
```bash
|
||||
cd adn/tools
|
||||
|
||||
# Todos los tests
|
||||
bundle exec rspec
|
||||
|
||||
# Un archivo específico
|
||||
bundle exec rspec spec/db/evento_spec.rb
|
||||
|
||||
# Con output detallado
|
||||
bundle exec rspec --format documentation
|
||||
```
|
||||
|
||||
## Escribir un Test
|
||||
|
||||
```ruby
|
||||
# spec/core/mi_modulo_spec.rb
|
||||
|
||||
require_relative '../spec_helper'
|
||||
$LOAD_PATH.unshift File.expand_path('../../core', __dir__)
|
||||
require 'mi_modulo'
|
||||
|
||||
describe 'ADN::MiModulo' do
|
||||
describe '.metodo' do
|
||||
it 'hace algo esperado' do
|
||||
expect(resultado).to eq(valor_esperado)
|
||||
end
|
||||
|
||||
it 'rechaza valor inválido' do
|
||||
expect { metodo(inválido) }.to raise_error(ADN::ValidationError)
|
||||
end
|
||||
end
|
||||
end
|
||||
```
|
||||
|
||||
## Buenos Patrones
|
||||
|
||||
1. **Un describe por clase/módulo**
|
||||
2. **Un it por comportamiento**
|
||||
3. **Tests independientes** (sin orden ni dependencias)
|
||||
4. **Nombres descriptivos**: `it 'valida formato HH:MM'`
|
||||
|
||||
## Helpers Disponibles
|
||||
|
||||
- `expect(...).to eq(valor)`
|
||||
- `expect(...).to match(/regex/)`
|
||||
- `expect(...).to be true/false`
|
||||
- `expect { }.to raise_error(Error)`
|
||||
|
||||
## Cobertura
|
||||
|
||||
| Módulo | Tests |
|
||||
| :--- | :--- |
|
||||
| db/evento | 3 |
|
||||
| core/colores | 6 |
|
||||
| core/validador | 6 |
|
||||
| **Total** | **15** |
|
||||
|
||||
## Próximos Tests
|
||||
|
||||
- [ ] spec/core/error_handler_spec.rb
|
||||
- [ ] spec/core/help_formatter_spec.rb
|
||||
- [ ] spec/cli/db_spec.rb
|
||||
- [ ] spec/cli/jornada_spec.rb
|
||||
@@ -0,0 +1,73 @@
|
||||
# Integración MSP-ADN
|
||||
|
||||
> Documento de integración entre MSPs (NotebookLM) y el flujo de trabajo ADN
|
||||
|
||||
## Estado
|
||||
|
||||
| Componente | Estado |
|
||||
|------------|--------|
|
||||
| MCPs configurados | ✅ 3 activos |
|
||||
| Ejecutable NotebookLM | ✅ Existe |
|
||||
| Autenticación | ✅ Configurada |
|
||||
| Herramienta CLI | ✅ Implementada |
|
||||
|
||||
## Herramientas CLI
|
||||
|
||||
### `msp auditar`
|
||||
Verifica el estado de conexión con NotebookLM MCP.
|
||||
|
||||
```bash
|
||||
./adn/tools/run msp auditar
|
||||
```
|
||||
|
||||
**Salida:**
|
||||
- MCPs configurados
|
||||
- Ejecutable NotebookLM
|
||||
- Estado de autenticación
|
||||
- MSPs locales encontrados
|
||||
|
||||
### `msp listar`
|
||||
Lista MSPs disponibles en el proyecto.
|
||||
|
||||
```bash
|
||||
./adn/tools/run msp listar
|
||||
```
|
||||
|
||||
### `msp registrar`
|
||||
Registra un MSP descargado en el sistema.
|
||||
|
||||
```bash
|
||||
./adn/tools/run msp registrar --archivo /ruta/al/msp.md --titulo "Título"
|
||||
```
|
||||
|
||||
## Limitaciones
|
||||
|
||||
El MCP de NotebookLM **NO** incluye herramienta para generar MSPs. Los MSPs deben generarse desde la UI web:
|
||||
|
||||
1. Ir a https://notebooklm.google.com
|
||||
2. Crear/abrir un cuaderno con fuentes
|
||||
3. Click en "More" → "Generate MSP"
|
||||
4. Descargar y guardar en `docs/mcps/`
|
||||
5. Registrar con `./adn/tools/run msp registrar --archivo <ruta>`
|
||||
|
||||
## Flujo de Trabajo
|
||||
|
||||
```
|
||||
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
|
||||
│ NotebookLM UI │────▶│ Descargar MSP │────▶│ Registrar en ADN│
|
||||
└─────────────────┘ └─────────────────┘ └─────────────────┘
|
||||
│
|
||||
./adn/tools/run msp registrar
|
||||
│
|
||||
▼
|
||||
┌─────────────────────────┐
|
||||
│ docs/mcps/*.md │
|
||||
│ Asimilar como conocimiento│
|
||||
└─────────────────────────┘
|
||||
```
|
||||
|
||||
## Referencias
|
||||
|
||||
- Configuración MCP: `~/.gemini/antigravity/mcp_config.json`
|
||||
- Documentación general: `docs/mcps/MSPs-Antigravity.md`
|
||||
- CLI herramientas: `adn/tools/cli/msp.rb`
|
||||
@@ -0,0 +1,218 @@
|
||||
# MSPs en Antigravity - Guía de Referencia
|
||||
|
||||
## ¿Qué son los MSPs?
|
||||
|
||||
Los **MSP (Markdown Style Papers)** son documentos generados por NotebookLM en formato de paper académico con:
|
||||
- Título y autores
|
||||
- Resumen estructurado
|
||||
- Secciones temáticas
|
||||
- Citas y referencias
|
||||
- Formato académico profesional
|
||||
|
||||
## MCPs Actualmente Configurados en Antigravity
|
||||
|
||||
Archivo de configuración: `~/.gemini/antigravity/mcp_config.json`
|
||||
|
||||
### 1. NotebookLM MCP
|
||||
|
||||
```json
|
||||
"notebooklm": {
|
||||
"command": "bash",
|
||||
"args": ["-c", "/home/rmonla/.local/share/notebooklm-mcp/bin/notebooklm-mcp"],
|
||||
"env": {},
|
||||
"disabled": false
|
||||
}
|
||||
```
|
||||
|
||||
| Campo | Valor |
|
||||
|-------|-------|
|
||||
| Tipo | MCP Server (stdio) |
|
||||
| Ejecutable | `/home/rmonla/.local/share/notebooklm-mcp/bin/notebooklm-mcp` |
|
||||
| Estado | Habilitado |
|
||||
| Soporta MSP | **No** (solo desde UI web) |
|
||||
|
||||
### 2. Firebase MCP Server
|
||||
|
||||
```json
|
||||
"firebase-mcp-server": {
|
||||
"command": "npx",
|
||||
"args": ["-y", "firebase-tools@latest", "mcp"],
|
||||
"env": {},
|
||||
"disabled": false
|
||||
}
|
||||
```
|
||||
|
||||
| Campo | Valor |
|
||||
|-------|-------|
|
||||
| Tipo | MCP Server (npx) |
|
||||
| Paquete | `firebase-tools@latest` |
|
||||
| Estado | Habilitado |
|
||||
| Herramientas | Auto-detección basada en firebase.json |
|
||||
|
||||
**Herramientas disponibles** (según contexto del proyecto):
|
||||
- Core: deploy, init, login, logout, projects:list
|
||||
- Firestore: firestore:indexes, firestore:rules
|
||||
- Hosting: hosting:deploy
|
||||
- Functions: functions:deploy
|
||||
- Storage: storage:rules
|
||||
|
||||
### 3. Google Stitch MCP
|
||||
|
||||
```json
|
||||
"stitch": {
|
||||
"serverUrl": "https://stitch.googleapis.com/mcp",
|
||||
"headers": {
|
||||
"X-Goog-Api-Key": "AQ.Ab8RN6KSXqPMkt6b6-l9-fOF_L6MFDobit1k2uCZark0orUM0g"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
| Campo | Valor |
|
||||
|-------|-------|
|
||||
| Tipo | HTTP MCP Server |
|
||||
| URL | `https://stitch.googleapis.com/mcp` |
|
||||
| Estado | Habilitado |
|
||||
| API Key | Configurada |
|
||||
|
||||
### Verificar MCPs configurados
|
||||
|
||||
```bash
|
||||
# Ver configuración actual
|
||||
cat ~/.gemini/antigravity/mcp_config.json | jq '.mcpServers | keys'
|
||||
|
||||
# Probar cada MCP
|
||||
~/.local/share/notebooklm-mcp/bin/notebooklm-mcp --transport http --port 8765
|
||||
npx -y firebase-tools@latest mcp --help
|
||||
```
|
||||
|
||||
## Configuración de NotebookLM MCP
|
||||
|
||||
### Verificar conexión
|
||||
|
||||
```bash
|
||||
# 1. Verificar ejecutable
|
||||
ls -la ~/.local/share/notebooklm-mcp/bin/notebooklm-mcp
|
||||
|
||||
# 2. Probar inicio del servidor
|
||||
~/.local/share/notebooklm-mcp/bin/notebooklm-mcp --transport http --port 8765
|
||||
|
||||
# 3. Verificar en Antigravity
|
||||
# Abrir "Manage MCP servers" → buscar "notebooklm" → estado "conectado"
|
||||
```
|
||||
|
||||
### Autenticación
|
||||
|
||||
```bash
|
||||
# Ejecutar autenticación via navegador
|
||||
notebooklm-mcp-auth
|
||||
|
||||
# O configurar manualmente con variables de entorno
|
||||
export NOTEBOOKLM_COOKIES="..."
|
||||
export NOTEBOOKLM_CSRF_TOKEN="..."
|
||||
export NOTEBOOKLM_SESSION_ID="..."
|
||||
```
|
||||
|
||||
### Ubicaciones importantes
|
||||
|
||||
| Recurso | Ruta |
|
||||
|---------|------|
|
||||
| Executable | `~/.local/share/notebooklm-mcp/bin/notebooklm-mcp` |
|
||||
| Auth cache | `~/.notebooklm-mcp/auth.json` |
|
||||
| Logs | `~/.config/Antigravity/logs/` |
|
||||
| Config MCP | `~/.gemini/antigravity/mcp_config.json` |
|
||||
|
||||
## Herramientas MCP Disponibles (32 herramientas)
|
||||
|
||||
### Notebooks
|
||||
- `notebook_create` - Crear nuevo cuaderno
|
||||
- `notebook_list` - Listar cuadernos
|
||||
- `notebook_get` - Obtener cuaderno
|
||||
- `notebook_delete` - Eliminar cuaderno
|
||||
- `notebook_rename` - Renombrar cuaderno
|
||||
- `notebook_add_text` - Añadir texto
|
||||
- `notebook_add_url` - Añadir URL
|
||||
- `notebook_add_drive` - Añadir archivo de Drive
|
||||
- `notebook_query` - Consultar cuaderno
|
||||
|
||||
### Fuentes
|
||||
- `source_get_content` - Obtener contenido
|
||||
- `source_delete` - Eliminar fuente
|
||||
- `source_describe` - Describir fuente
|
||||
- `source_list_drive` - Listar archivos de Drive
|
||||
- `source_sync_drive` - Sincronizar Drive
|
||||
|
||||
### Studio (generación de contenido)
|
||||
- `audio_overview_create` - Audio overview
|
||||
- `video_overview_create` - Video overview
|
||||
- `slide_deck_create` - Presentación
|
||||
- `infographic_create` - Infografía
|
||||
- `flashcards_create` - Tarjetas
|
||||
- `quiz_create` - Cuestionario
|
||||
- `mind_map_create` - Mapa mental
|
||||
- `data_table_create` - Tabla de datos
|
||||
- `report_create` - Reporte
|
||||
|
||||
### Investigación
|
||||
- `research_start` - Iniciar investigación
|
||||
- `research_status` - Estado de investigación
|
||||
- `research_import` - Importar investigación
|
||||
|
||||
## IMPORTANTE: MSPs no están en el MCP
|
||||
|
||||
**Limitación**: El MCP de NotebookLM NO incluye herramienta para generar MSP.
|
||||
|
||||
### Cómo generar un MSP manualmente
|
||||
|
||||
1. **Ir a**: https://notebooklm.google.com
|
||||
2. **Crear/abrir** un cuaderno con fuentes
|
||||
3. **En el cuaderno**, hacer clic en **"More"** (tres puntos)
|
||||
4. Seleccionar **"Generate MSP"** o **"Create paper"**
|
||||
5. Esperar generación y descargar
|
||||
|
||||
### Alternativas para automatizar
|
||||
|
||||
- Usar la API de Google NotebookLM (si está disponible)
|
||||
- Integrar con Vertex AI para generación de documentos
|
||||
- Crear custom skill en Antigravity que use la web
|
||||
|
||||
## Verificar estado de conexión en código
|
||||
|
||||
```python
|
||||
import subprocess
|
||||
import json
|
||||
|
||||
def check_notebooklm_mcp():
|
||||
# Verificar ejecutable existe
|
||||
result = subprocess.run(
|
||||
["ls", "-la", "/home/rmonla/.local/share/notebooklm-mcp/bin/notebooklm-mcp"],
|
||||
capture_output=True
|
||||
)
|
||||
|
||||
if result.returncode != 0:
|
||||
return {"status": "error", "message": "Executable not found"}
|
||||
|
||||
# Verificar auth
|
||||
with open("/home/rmonla/.notebooklm-mcp/auth.json") as f:
|
||||
auth = json.load(f)
|
||||
|
||||
has_auth = bool(auth.get("cookies") and auth.get("csrf_token"))
|
||||
|
||||
return {
|
||||
"status": "ok" if has_auth else "needs_auth",
|
||||
"auth": auth
|
||||
}
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
| Problema | Solución |
|
||||
|----------|----------|
|
||||
| MCP no aparece conectado | Reiniciar Antigravity |
|
||||
| Error de autenticación | Ejecutar `notebooklm-mcp-auth` |
|
||||
| No hay herramientas disponibles | Verificar tokens en `~/.notebooklm-mcp/auth.json` |
|
||||
| Timeout en requests | Aumentar `NOTEBOOKLM_QUERY_TIMEOUT` |
|
||||
|
||||
## Referencias
|
||||
|
||||
- Docs MCP: `docs/promp/Configuracion-MCP-Antigravity.md`
|
||||
- Prompt NotebookLM: `docs/promp/Prompt NotebookLM MCP X Antigravity.md`
|
||||
@@ -1,4 +1,4 @@
|
||||
OK pc-dasu0 debemos poder acceder por ssh en el puerto 7022,no creo que esté implementado y para esto usabamos la sonda w-zombi de las herramientas.
|
||||
|
||||
Trata siempre de trabajar con herramientas definidas en ADN, mejorándolas y optimizándolas para poder reutilizarlas en el futuro. En su defecto, genera nuevas herramientas siguiendo estas mismas premisas, evitando el uso de soluciones temporales. Este enfoque está detallado en adn/README.md junto con el indice de herramientas ADN.
|
||||
Recuerda que el flujo es actualizar el plan, bitácora web y recien ejecutas las tareas.
|
||||
Recuerda que el flujo es actualizar el plan, bitácora web y recien ejecutar las tareas.
|
||||
@@ -0,0 +1,5 @@
|
||||
Vamos a seguir agregando mejoras segun el plan docs/proy/p2604_mejoras_ADN/P2604_mejoras_ADN.md.
|
||||
|
||||
Trata siempre de trabajar con herramientas definidas en ADN, mejorándolas y optimizándolas para poder reutilizarlas en el futuro. En su defecto, genera nuevas herramientas siguiendo estas mismas premisas, evitando el uso de soluciones temporales. Este enfoque está detallado en adn/README.md junto con el indice de herramientas ADN.
|
||||
Recuerda que el flujo es actualizar el plan, bitácora web y recien ejecutar las tareas.
|
||||
|
||||
@@ -0,0 +1,200 @@
|
||||
# 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 | ⏳ |
|
||||
|
||||
---
|
||||
|
||||
## 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: █████████░ 90% (S1-S9 done, S10 pendiente)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Métricas Totales
|
||||
|
||||
| Métrica | Valor |
|
||||
| :--- | :--- |
|
||||
| Tests pasando | 15 |
|
||||
| Archivos creados | 12 |
|
||||
| Archivos modificados | 8 |
|
||||
| Archivos limpiados/movidos | 20+ |
|
||||
| Fases completadas | 9/10 (90%) |
|
||||
| Documentos técnicos | Consolidados en `adn/README.md` |
|
||||
|
||||
---
|
||||
|
||||
## Próxima Acción
|
||||
|
||||
**S10**: Migrar `SubcomandoSalud` al namespace `ADN::` y reescribir para consultar DB (DB-First)
|
||||
|
||||
---
|
||||
|
||||
## 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
|
||||
- Planes históricos movidos a: `docs/_hist/plan/`
|
||||
Reference in New Issue
Block a user