Mejorado de la descripcion larga de los scripts

This commit is contained in:
Miguel 2025-05-03 23:23:36 +02:00
parent a246c0265c
commit 89fc7f106b
8 changed files with 3708 additions and 1361 deletions

1
app.py
View File

@ -237,7 +237,6 @@ def handle_script_details(group, script_filename):
else: # POST
try:
data = request.json
print(f"DEBUG: Received data for update_script_details ({group}/{script_filename}): {data}") # <-- Añade esta línea
result = config_manager.update_script_details(group, script_filename, data)
return jsonify(result)
except Exception as e:

View File

@ -0,0 +1,8 @@
{
"x1.py": {
"display_name": "Procesador de Emails a Cronología",
"short_description": "Script para desensamblar los emails y generar un archivo md con la cronología de los mensajes.",
"long_description": "## Descripción de funcionamiento:\n***\nEste script procesa archivos de correo electrónico (`.eml`) para extraer su contenido, gestionar adjuntos y generar un archivo Markdown que presenta los mensajes en orden cronológico inverso.\n***\n**Lógica Principal:**\n\n1. **Configuración:** Carga parámetros desde `ParamManagerScripts` (directorio de trabajo, nombre del archivo de salida Markdown, nombre del directorio de adjuntos).\n2. **Beautify:** Carga reglas de embellecimiento de texto desde `config/beautify_rules.json` para limpiar el contenido de los correos.\n3. **Descubrimiento:** Busca todos los archivos `.eml` en el directorio de trabajo configurado.\n4. **Procesamiento Individual:**\n * Itera sobre cada archivo `.eml` encontrado.\n * Utiliza `utils.email_parser.procesar_eml` para extraer metadatos (fecha, asunto, remitente, destinatarios), contenido del cuerpo y guardar los archivos adjuntos en la carpeta especificada.\n * Calcula un hash para cada mensaje para detectar duplicados.\n * Si un mensaje es nuevo (no duplicado):\n * Aplica las reglas de `BeautifyProcessor` al contenido del cuerpo.\n * Añade el mensaje procesado a una lista.\n5. **Ordenación:** Ordena la lista de mensajes únicos por fecha, del más reciente al más antiguo.\n6. **Generación de Índice:** Crea una sección de índice en formato Markdown con enlaces internos a cada mensaje.\n7. **Salida Markdown:** Escribe el índice seguido del contenido formateado en Markdown de cada mensaje en el archivo de salida configurado (ej. `cronologia.md`).\n",
"hidden": false
}
}

File diff suppressed because it is too large Load Diff

View File

@ -1,9 +1,9 @@
--- Log de Ejecución: x0_main.py ---
Grupo: XML Parser to SCL
Directorio de Trabajo: C:\Trabajo\SIDEL\06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)\Reporte\IOExport
Inicio: 2025-05-03 17:05:03
Fin: 2025-05-03 17:05:08
Duración: 0:00:04.868601
Inicio: 2025-05-03 23:21:54
Fin: 2025-05-03 23:21:59
Duración: 0:00:05.324381
Estado: ERROR (Código de Salida: 1)
--- SALIDA ESTÁNDAR (STDOUT) ---
@ -2686,7 +2686,7 @@ Error: Tipo de bloque desconocido 'UnknownBlockType'. No se generará archivo.
Error: Tipo de bloque desconocido 'UnknownBlockType'. No se generará archivo.
Error al generar/escribir el ÁRBOL XRef de llamadas: generate_call_tree_output() missing 2 required positional arguments: 'max_call_depth' and 'xref_source_subdir'
Traceback (most recent call last):
File "D:\Proyectos\Scripts\ParamManagerScripts\backend\script_groups\XML Parser to SCL\x4_cross_reference.py", line 618, in generate_cross_references
File "d:\Proyectos\Scripts\ParamManagerScripts\backend\script_groups\XML Parser to SCL\x4_cross_reference.py", line 618, in generate_cross_references
call_tree_lines = generate_call_tree_output( # Pasar parámetros
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: generate_call_tree_output() missing 2 required positional arguments: 'max_call_depth' and 'xref_source_subdir'

File diff suppressed because it is too large Load Diff

View File

@ -102,3 +102,63 @@
padding: 1rem;
border-top: 1px solid #e5e7eb;
}
/* Estilos para encabezados dentro de la descripción larga del script */
.long-description-content h1 {
font-size: 1.875rem; /* Equivalente a text-3xl de Tailwind */
font-weight: bold;
margin-top: 1rem;
margin-bottom: 0.5rem;
}
.long-description-content h2 {
font-size: 1.5rem; /* Equivalente a text-2xl */
font-weight: bold;
margin-top: 0.875rem;
margin-bottom: 0.4rem;
}
.long-description-content h3 {
font-size: 1.25rem; /* Equivalente a text-xl */
font-weight: bold;
margin-top: 0.75rem;
margin-bottom: 0.3rem;
}
/* Puedes añadir estilos para h4, h5, h6 si los necesitas */
.long-description-content hr {
margin-top: 1rem;
margin-bottom: 1rem;
border-top-width: 1px;
}
/* Ajustes opcionales para listas y código si no usas 'prose' */
.long-description-content ul,
.long-description-content ol {
list-style-position: inside;
margin-left: 1rem;
margin-top: 0.5rem;
margin-bottom: 0.5rem;
}
.long-description-content ul {
list-style-type: disc;
}
.long-description-content ol {
list-style-type: decimal;
}
.long-description-content pre {
background-color: #f3f4f6; /* bg-gray-100 */
padding: 0.75rem;
border-radius: 0.25rem;
overflow-x: auto;
margin-top: 0.5rem;
margin-bottom: 0.5rem;
}
.long-description-content code {
font-family: monospace;
/* Estilo para código en línea si es necesario */
}
/* Estilo específico para bloques de código dentro de <pre> */
.long-description-content pre code {
background-color: transparent;
padding: 0;
}

View File

@ -191,8 +191,17 @@ async function loadScripts(group) {
</button>
` : ''}
</div>
<div id="long-desc-${script.filename}" class="long-description-content prose prose-sm max-w-none mt-2 border-t pt-2 hidden">
${script.long_description ? marked.parse(script.long_description) : ''}
<div id="long-desc-${script.filename}" class="long-description-content mt-2 border-t pt-2 hidden">
${script.long_description ? (() => { // Self-invoking function to handle markdown rendering
if (typeof window.markdownit === 'undefined') { // Check if markdownit is loaded
console.error("markdown-it library not loaded!");
return `<p class="text-red-500">Error: Librería Markdown no cargada.</p><pre>${script.long_description}</pre>`; // Fallback: show raw text
}
// Create instance and render
const md = window.markdownit();
const renderedHtml = md.render(script.long_description); // Renderizar
return renderedHtml;
})() : ''}
</div>
</div>
<div class="flex items-center gap-2 flex-shrink-0">
@ -400,11 +409,9 @@ function generateInputField(def, key, value, level) {
class="${baseClasses}" data-key="${key}">`;
case 'boolean':
return `<div class="flex items-center">
<input type="checkbox" ${value ? 'checked' : ''}
return `<input type="checkbox" ${value ? 'checked' : ''}
class="form-checkbox h-5 w-5 bg-green-50" data-key="${key}">
</div>`;
`; // <-- Añadir esta comilla invertida
default:
return `<input type="text" value="${value || ''}"
class="${baseClasses}" data-key="${key}">`;

View File

@ -237,6 +237,7 @@
<div>
<label for="edit-script-long-description" class="block text-sm font-bold mb-2">Descripción Larga / Ayuda</label>
<textarea id="edit-script-long-description" class="w-full p-2 border rounded" rows="5"></textarea>
<p class="text-xs text-gray-500 mt-1">Usa Markdown. Doble Enter para párrafo nuevo, dos espacios + Enter para salto de línea simple.</p>
</div>
<div class="flex items-center">
<input type="checkbox" id="edit-script-hidden" class="form-checkbox h-5 w-5 mr-2">
@ -251,7 +252,7 @@
</div>
<!-- Corregir la ruta del script -->
<script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script> <!-- Librería Markdown -->
<script src="https://unpkg.com/markdown-it@14.1.0/dist/markdown-it.min.js"></script> <!-- Librería Markdown-it (unpkg) -->
<script src="{{ url_for('static', filename='js/scripts.js') }}" defer></script>
<script>
window.addEventListener('load', () => {