From a246c0265c5a67b09056d20fb436baf8345c1ad2 Mon Sep 17 00:00:00 2001 From: Miguel Date: Sat, 3 May 2025 22:13:30 +0200 Subject: [PATCH] Agregada la opcion de ver una descripcion mas detallada de cada script --- app.py | 2 +- .../scripts_description.json | 38 ++++++++++++++++ data/log.txt | 44 ------------------- lib/config_manager.py | 2 +- static/js/scripts.js | 41 +++++++++++++++-- templates/index.html | 1 + 6 files changed, 78 insertions(+), 50 deletions(-) create mode 100644 backend/script_groups/XML Parser to SCL/scripts_description.json diff --git a/app.py b/app.py index a64c82b..5bded5d 100644 --- a/app.py +++ b/app.py @@ -139,7 +139,7 @@ def get_scripts(group): # list_scripts ahora devuelve detalles y filtra los ocultos scripts = config_manager.list_scripts(group) # El frontend espera 'name' y 'description', mapeamos desde 'display_name' y 'short_description' - return jsonify([{"name": s['display_name'], "description": s['short_description'], "filename": s['filename']} for s in scripts]) + return jsonify([{"name": s['display_name'], "description": s['short_description'], "filename": s['filename'], "long_description": s['long_description']} for s in scripts]) @app.route("/api/working-directory", methods=["POST"]) diff --git a/backend/script_groups/XML Parser to SCL/scripts_description.json b/backend/script_groups/XML Parser to SCL/scripts_description.json new file mode 100644 index 0000000..4e99217 --- /dev/null +++ b/backend/script_groups/XML Parser to SCL/scripts_description.json @@ -0,0 +1,38 @@ +{ + "x0_main.py": { + "display_name": "Procesar Exportación XML", + "short_description": "LadderToSCL - Conversor de Siemens LAD/FUP XML a SCL", + "long_description": "Este script es el punto de entrada y orquestador principal para el proceso de conversión de archivos XML de Siemens TIA Portal (LAD/FUP) a código SCL y la generación de documentación relacionada.\n\n**Lógica Principal:**\n\n1. **Configuración:** Carga parámetros desde `ParamManagerScripts` (directorio de trabajo, nombres de carpetas de salida, etc.).\n2. **Logging:** Inicia un archivo `log.txt` para registrar detalladamente el progreso y los errores.\n3. **Descubrimiento:** Busca recursivamente todos los archivos `.xml` dentro del subdirectorio `PLC` del directorio de trabajo configurado.\n4. **Procesamiento Individual (Pasos x1-x3):**\n * Itera sobre cada archivo XML encontrado.\n * Implementa lógica para **saltar** pasos si el XML no ha cambiado y las salidas ya existen y están actualizadas.\n * Llama a funciones de `x1_to_json.py`, `x2_process.py`, y `x3_generate_scl.py` para convertir XML -> JSON intermedio -> JSON procesado -> archivo SCL/Markdown final.\n5. **Referencias Cruzadas (Paso x4):** Llama a una función de `x4_cross_reference.py` para generar análisis de llamadas, uso de DBs, etc., basándose en los archivos procesados.\n6. **Agregación (Paso x5):** Llama a una función de `x5_aggregate.py` para combinar las salidas SCL/Markdown y las referencias cruzadas en un único archivo Markdown resumen.\n7. **Resumen y Salida:** Registra un resumen final del proceso (éxitos, saltos, fallos) y finaliza con un código de estado (0 para éxito, 1 si hubo errores).\n", + "hidden": false + }, + "x1_to_json.py": { + "display_name": "x1_to_json", + "short_description": "LadderToSCL - Conversor de Siemens LAD/FUP XML a SCL", + "long_description": "", + "hidden": true + }, + "x2_process.py": { + "display_name": "x2_process", + "short_description": "LadderToSCL - Conversor de Siemens LAD/FUP XML a SCL", + "long_description": "", + "hidden": true + }, + "x3_generate_scl.py": { + "display_name": "x3_generate_scl", + "short_description": "LadderToSCL - Conversor de Siemens LAD/FUP XML a SCL", + "long_description": "", + "hidden": true + }, + "x4_cross_reference.py": { + "display_name": "x4_cross_reference", + "short_description": "LadderToSCL - Conversor de Siemens LAD/FUP XML a SCL", + "long_description": "", + "hidden": true + }, + "x5_aggregate.py": { + "display_name": "x5_aggregate", + "short_description": "LadderToSCL - Conversor de Siemens LAD/FUP XML a SCL", + "long_description": "", + "hidden": true + } +} \ No newline at end of file diff --git a/data/log.txt b/data/log.txt index 29d640a..e69de29 100644 --- a/data/log.txt +++ b/data/log.txt @@ -1,44 +0,0 @@ -[20:54:12] Iniciando ejecución de x1.py en C:\Estudio... -[20:54:12] === Ejecutando Script de Prueba 1 === -[20:54:12] Configuraciones cargadas: -[20:54:12] Nivel 1: { -[20:54:12] "api_key": "your-api-key-here", -[20:54:12] "model": "gpt-3.5-turbo" -[20:54:12] } -[20:54:12] Nivel 2: { -[20:54:12] "input_dir": "D:/Datos/Entrada", -[20:54:12] "output_dir": "D:/Datos/Salida", -[20:54:12] "batch_size": 50 -[20:54:12] } -[20:54:12] Nivel 3: {} -[20:54:12] Simulando procesamiento... -[20:54:13] Progreso: 20% -[20:54:14] Progreso: 40% -[20:54:15] Progreso: 60% -[20:54:16] Progreso: 80% -[20:54:17] Progreso: 100% -[20:54:17] ¡Proceso completado! -[20:54:17] Ejecución de x1.py finalizada (success). Duración: 0:00:05.196719. -[20:54:17] Log completo guardado en: d:\Proyectos\Scripts\ParamManagerScripts\backend\script_groups\example_group\log_x1.txt -[21:21:53] Iniciando ejecución de x1.py en C:\Estudio... -[21:21:53] === Ejecutando Script de Prueba 1 === -[21:21:53] Configuraciones cargadas: -[21:21:53] Nivel 1: { -[21:21:53] "api_key": "your-api-key-here", -[21:21:53] "model": "gpt-3.5-turbo" -[21:21:53] } -[21:21:53] Nivel 2: { -[21:21:53] "input_dir": "D:/Datos/Entrada", -[21:21:53] "output_dir": "D:/Datos/Salida", -[21:21:53] "batch_size": 50 -[21:21:53] } -[21:21:53] Nivel 3: {} -[21:21:53] Simulando procesamiento... -[21:21:54] Progreso: 20% -[21:21:55] Progreso: 40% -[21:21:56] Progreso: 60% -[21:21:57] Progreso: 80% -[21:21:58] Progreso: 100% -[21:21:58] ¡Proceso completado! -[21:21:58] Ejecución de x1.py finalizada (success). Duración: 0:00:05.144464. -[21:21:58] Log completo guardado en: d:\Proyectos\Scripts\ParamManagerScripts\backend\script_groups\example_group\log_x1.txt diff --git a/lib/config_manager.py b/lib/config_manager.py index df9369d..52f2da1 100644 --- a/lib/config_manager.py +++ b/lib/config_manager.py @@ -256,7 +256,7 @@ class ConfigurationManager: "filename": filename, # Nombre real del archivo "display_name": details.get("display_name", filename.replace('.py', '')), "short_description": details.get("short_description", "Sin descripción corta."), - # No necesitamos enviar la descripción larga aquí + "long_description": details.get("long_description", "") # Añadir descripción larga }) if updated: diff --git a/static/js/scripts.js b/static/js/scripts.js index 88d3cce..a7f89e8 100644 --- a/static/js/scripts.js +++ b/static/js/scripts.js @@ -177,8 +177,23 @@ async function loadScripts(group) { div.className = 'script-item p-4 border rounded bg-white shadow-sm flex justify-between items-start gap-4'; div.innerHTML = `
-
${script.name}
-
${script.description}
+
${script.name}
+
+ ${script.description} + ${script.long_description ? ` + + ` : ''} +
+
@@ -208,6 +223,21 @@ async function loadScripts(group) { editButton.addEventListener('click', () => { editScriptDetails(group, script.filename); }); + + // Añadir event listener para el botón de descripción larga (si existe) + const toggleDescButton = div.querySelector('.toggle-long-desc-button'); + if (toggleDescButton) { + toggleDescButton.addEventListener('click', (e) => { + const button = e.currentTarget; + const targetId = button.dataset.targetId; + const targetElement = document.getElementById(targetId); + if (targetElement) { + targetElement.classList.toggle('hidden'); + button.querySelector('.chevron-down').classList.toggle('hidden'); + button.querySelector('.chevron-up').classList.toggle('hidden'); + } + }); + } }); } @@ -1168,8 +1198,11 @@ function clearLogs() { // Necesitarás una función showToast o similar si la usas function showToast(message, type = 'success') { // Implementa tu lógica de Toast aquí - console.log(`Toast (${type}): ${message}`); - alert(`Toast (${type}): ${message}`); // Simple alert como placeholder + console.log(`UI (${type}): ${message}`); // Siempre loguea en consola + + if (type === 'error') { + alert(`Error: ${message}`); // Muestra alerta solo para errores + } } // Llama a fetchLogs al cargar la página si es necesario diff --git a/templates/index.html b/templates/index.html index 405dfea..03dab58 100644 --- a/templates/index.html +++ b/templates/index.html @@ -251,6 +251,7 @@
+