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.