- 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
106 lines
2.7 KiB
Markdown
106 lines
2.7 KiB
Markdown
# 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/
|