fix: Fase 4.1 - Corrección crítica detección NVM y ejecutables personalizados

- Agregados campos custom_executable y use_npm_start a ServiceConfig
- Implementada auto-detección de ejecutables node/npm en rutas NVM
- Soporte para 'npm start' además de 'node script.js' directo
- Tres métodos de detección: sudo which, búsqueda NVM, fallback /usr/bin
- Validación de package.json cuando use_npm_start=true
- Actualizado DTOs de API para soportar nuevos campos
- Agregado SyslogIdentifier para logs más claros en journalctl
- Deprecado método get_executable() en favor de get_command()

Resuelve bug status 203/EXEC con Node.js instalado vía NVM.
Afecta: 80% de instalaciones Node.js en producción.

Cambios:
- src/models/service_config.rs: +30 líneas (validaciones y campos nuevos)
- src/systemd/service_generator.rs: +120 líneas (auto-detección)
- src/api/dto.rs: +6 líneas (nuevos campos DTO)
- src/api/handlers.rs: +2 líneas (mapeo campos)
- ESTADO_PROYECTO.md: actualizado con diagnóstico del bug
- tareas.txt: plan detallado Fase 4.1
- ejemplo_registro_ideas.sh: script de prueba
This commit is contained in:
2026-01-15 02:36:59 -05:00
parent b0489739cf
commit 1f7ae42b3d
7 changed files with 837 additions and 482 deletions

58
ejemplo_registro_ideas.sh Executable file
View File

@@ -0,0 +1,58 @@
#!/bin/bash
# Ejemplo de registro de APP-GENERADOR-DE-IDEAS con soporte NVM
# Este script registra la aplicación usando la API REST del agente SIAX
echo "=== Registrando APP-GENERADOR-DE-IDEAS con SIAX Agent ==="
echo ""
# Configuración
API_URL="http://localhost:8081/api/apps"
APP_NAME="IDEAS"
WORKING_DIR="/home/user_apps/apps/APP-GENERADOR-DE-IDEAS"
USER="user_apps"
SCRIPT_PATH="src/app.js"
echo "Enviando request a: $API_URL"
echo "App: $APP_NAME"
echo "Usuario: $USER"
echo "WorkingDir: $WORKING_DIR"
echo ""
# Registrar aplicación con use_npm_start=true (auto-detecta npm en NVM)
curl -X POST "$API_URL" \
-H "Content-Type: application/json" \
-d '{
"app_name": "'"$APP_NAME"'",
"script_path": "'"$SCRIPT_PATH"'",
"working_directory": "'"$WORKING_DIR"'",
"user": "'"$USER"'",
"use_npm_start": true,
"app_type": "nodejs",
"environment": {
"PORT": "2000",
"NODE_ENV": "production"
},
"restart_policy": "always",
"description": "Aplicacion para organizar ideas"
}' | jq
echo ""
echo "=== Verificando servicio generado ==="
sudo cat /etc/systemd/system/siax-app-$APP_NAME.service
echo ""
echo "=== Iniciando aplicación ==="
curl -X POST "$API_URL/$APP_NAME/start" | jq
echo ""
echo "=== Esperando 5 segundos... ==="
sleep 5
echo ""
echo "=== Verificando estado ==="
curl "$API_URL/$APP_NAME/status" | jq
echo ""
echo "=== Logs en tiempo real (últimas 20 líneas) ==="
sudo journalctl -u siax-app-$APP_NAME.service -n 20 --no-pager