Definiciones de Frontend en .doc\backend_setup.md


### Flujo de trabajo:

Se usa [x1] para exportar los datos de configuración desde el proyecto de Tia Portal, incluidos los IO configurados en el hardware. Esto genera un archivo AML.
Con [x2] se procesa el archivo AML y se convierte en markdown. Si hay un solo PLC se genera el archivo [Hardware.md]. **Además genera un archivo Excel con los IOs por nodos del PLC.**
3. Se deben procesar los IO **desde el esquema eléctrico y agregarlos** a [Hardware.md].
Se debe exportar todos los tags como un archivo excel desde el Tia Portal. 
Con [x3] se convierte y se filtran los tags según los path definidos en [io_paths_config] y se genera un archivo "Master IO Tags.md". 
[x4] Genera el prompt a usar con Claude usando MCP para que pueda acceder a los archivos originales y evitar tener que hacer uploads.
Una vez que se genera el archivo procesado por el LLM se puede usar 
[x5] que convierte las adaptaciones a un archivo que luego se puede importar en Tia Portal
8. Importar en Tia Portal el archivo [PLCTags_Updated.xlsx]

**Nuevo flujo alternativo con Excel:**

Después del paso 2, se puede usar :
 [x7] para: Modificar manualmente el archivo Excel de IOs generado- Aplicar los cambios de vuelta al archivo AML original Generar un AML actualizado con las modificaciones

### Cambios recientes:

**Automatización de selección de proyecto TIA Portal (x1_export_CAx.py):**
- Eliminada la interfaz gráfica tkinter para selección manual de archivos
- El script ahora lee automáticamente la ruta del proyecto desde la configuración `siemens_tia_project` en work_dir.json
- Nueva función `find_project_file_in_dir()` que busca automáticamente archivos .ap18/.ap19/.ap20 en el directorio configurado
- Validación automática que verifica que exista exactamente un archivo de proyecto en el directorio especificado
- Mejora en la experiencia de usuario al eliminar pasos manuales de selección de archivos

**Directorio de exportación CAx configurable (x1_export_CAx.py):**
- La ruta de exportación de archivos CAx ahora es configurable.
- El script utiliza el valor `aml_exp_directory` de la configuración `level2` en `work_dir.json`.
- La nueva ruta de salida se construye como `working_directory` / `aml_exp_directory`.
- Todos los archivos generados (AML, Markdown y log) se guardan en este directorio, manteniendo los artefactos de exportación organizados.

**Directorio de E/S configurable para el procesamiento CAx (x2_process_CAx.py):**
- El script ahora utiliza el directorio `aml_exp_directory` de `work_dir.json` para la entrada y salida de archivos.
- Se ha unificado el comportamiento con `x1_export_CAx.py`, esperando el archivo AML de entrada en `working_directory` / `aml_exp_directory`.
- Todos los archivos generados (JSON, Markdown, Excel) se guardan en este mismo directorio, manteniendo la consistencia del flujo de trabajo.
- Se mantiene el fallback al directorio `.debug` para la ejecución independiente del script.

**Selección automática de archivo AML (x2_process_CAx.py):**
- El script ahora busca automáticamente un único archivo `.aml` en el directorio `aml_exp_directory`.
- Si se encuentra un solo archivo, se utiliza directamente, eliminando la necesidad del diálogo de selección manual.
- Si se encuentran cero o múltiples archivos `.aml`, el script recurre al diálogo de selección manual para que el usuario resuelva la ambigüedad.
- Esta mejora agiliza el flujo de trabajo al automatizar la selección de archivos en el caso más común.

**Directorio de resultados configurable (x1 y x2):**
- Se ha agregado el parámetro `resultados_exp_directory` a la configuración `level2` en `work_dir.json`.
- `x1_export_CAx.py` ahora guarda la tabla de resumen (`*CAx_Summary.md`) en el subdirectorio `working_directory` / `resultados_exp_directory`.
- `x2_process_CAx.py` guarda todos los archivos de resultados finales (tablas Markdown y reportes Excel) en `working_directory` / `resultados_exp_directory`, anidados en carpetas por PLC.
- Los archivos intermedios (JSON, logs, debug files) permanecen en `aml_exp_directory`, separando los artefactos de compilación de los resultados finales.

**Corrección de errores de exportación en TIA Portal (x1_export_CAx.py):**
- Se ha solucionado un error que ocurría cuando el archivo AML a exportar ya existía. El script ahora elimina los archivos `.aml` y `.log` existentes antes de la exportación para permitir la sobrescritura.
- Se ha corregido el manejo de excepciones al eliminar un bloque `except` que intentaba capturar una excepción inexistente (`TiaException`), lo que causaba un error secundario y ocultaba el problema original.

**Flujo de trabajo de E/S con Excel mejorado (x3_excel_to_md.py):**
- **Directorios configurables**: El script ahora utiliza `tags_exp_directory` (de `level3`) para buscar archivos Excel y `resultados_exp_directory` (de `level2`) para guardar el archivo Markdown resultante. Ambos se leen desde `work_dir.json`.
- **Selección automática de archivo**: Si solo existe un archivo `.xlsx` en `tags_exp_directory`, el script lo utiliza automáticamente, eliminando la necesidad de selección manual.
- **Fallback a diálogo manual**: Si se encuentran cero o múltiples archivos Excel, el script muestra un diálogo para que el usuario seleccione el archivo correcto, manteniendo la flexibilidad.
- **Consistencia del proyecto**: Esta actualización alinea el comportamiento de `x3_excel_to_md.py` con los scripts `x1` y `x2`, creando un flujo de trabajo más coherente y automatizado.

**Configuración dinámica de rutas en el generador de prompts (x4_prompt_generator.py):**
- Las rutas de los archivos de entrada (`Master IO Tags.md` y `Hardware.md`) ahora se construyen dinámicamente utilizando `resultados_exp_directory` de la configuración `level2`, alineándose con el resto de los scripts.
- La configuración de las rutas base de Obsidian (`ObsideanDir`, `ObsideanProjectsBase`) se ha movido al `level3` para una mejor organización de la configuración.
- El prompt generado refleja automáticamente estas rutas configurables, asegurando que las herramientas de IA siempre utilicen las ubicaciones correctas de los archivos.

**Conversión dual de archivos Excel a Markdown (x3_excel_to_md.py):**
- **Nueva funcionalidad**: El script ahora realiza dos conversiones en una sola ejecución:
  1. Convierte el Excel de tags de TIA Portal a 'Master IO Tags.md' (funcionalidad existente)
  2. Convierte el Excel de IO desde esquema eléctrico a 'Hardware_ED.md' (nueva funcionalidad)
- **Configuración de archivo de IO**: Utiliza la configuración `io_excel_file_from_ediagram` del `level3` para obtener la ruta del archivo Excel de IO desde el esquema eléctrico.
- **Conversión directa**: La nueva función `convert_io_excel_to_markdown()` convierte directamente la tabla del Excel a formato Markdown sin filtros ni adaptaciones, manteniendo la estructura original de columnas.
- **Manejo de celdas vacías**: Las celdas vacías del Excel se convierten en un espacio ' ' en el archivo Markdown para mantener la estructura de la tabla.
- **Manejo de errores robusto**: Incluye validaciones para verificar la existencia del archivo Excel, que no esté vacío, y manejo de excepciones durante la lectura y escritura.
- **Escape de caracteres**: Implementa escape automático de caracteres especiales de Markdown (como `|`) para evitar errores de formato en las tablas.
- **Función principal unificada**: Se ha creado una función `main()` que ejecuta ambas conversiones secuencialmente, proporcionando una experiencia de usuario más fluida y organizada.


