# Memoria de Evolución - ParamManagerScripts

## Descripción Base del Proyecto

**ParamManagerScripts** es un sistema de gestión y ejecución de scripts que proporciona una interfaz web para organizar y ejecutar scripts de diferentes tipos (Python, C#, etc.) de manera ordenada y controlada.

### Funcionalidad Principal

#### 1. Sistema de Configuración Jerárquica
- **Nivel 1 (Global)**: Parámetros compartidos por todos los scripts (`data/data.json`)
- **Nivel 2 (Grupo)**: Configuración específica de cada grupo de scripts (`script_config.json`)
- **Nivel 3 (Trabajo)**: Parámetros específicos del directorio de trabajo (`work_dir.json`)

Esto esta definido en .doc\backend_setup.md

#### 2. Gestión de Scripts por Categorías
- **Scripts de Configuración**: Scripts Python tradicionales organizados en grupos
- **Launcher GUI**: Scripts Python con interfaz gráfica
- **Proyectos C#**: Ejecutables y proyectos .NET
- **Proyectos Python**: Scripts Python especializados

#### 3. Características del Frontend
- Interfaz web accesible via `http://127.0.0.1:5000/`
- Panel de logs en tiempo real con WebSocket
- Gestión de directorios de trabajo por grupo
- Integración con editores (VS Code, Cursor, Visual Studio)
- Icono de bandeja del sistema para acceso rápido

#### 4. Sistema de Launchers
- **Launcher General**: Para scripts Python con GUI
- **Launcher C#**: Gestión de proyectos y ejecutables .NET
- **Launcher Python**: Scripts Python especializados con gestión de entornos

#### 5. Servicios Compartidos
- **ExcelService**: Manipulación de archivos Excel
- **LanguageService**: Detección de idiomas
- **LLMService**: Integración con modelos de IA (OpenAI, Groq, Claude, etc.)

Esto esta definido en .doc\backend_setup.md

### Arquitectura Técnica

- **Backend**: Flask con WebSocket para comunicación en tiempo real
- **Frontend**: HTML/CSS/JavaScript con comunicación AJAX
- **Configuración**: Sistema de archivos JSON con validación por esquemas
- **Ejecución**: Subprocesos controlados con logging centralizado
- **Codificación**: UTF-8 obligatorio para evitar problemas de caracteres

### Concepto Clave: Orientación a Directorios de Trabajo

El sistema está diseñado para trabajar con directorios específicos donde los scripts procesan archivos. Cada grupo puede tener su directorio de trabajo configurado, y los scripts acceden a la configuración consolidada a través de `load_configuration()` que combina los tres niveles de configuración.

---

## Historial de Cambios

### [Fecha de Creación] - Descripción Base
- Documentación inicial del sistema ParamManagerScripts
- Descripción de la arquitectura y funcionalidades principales
- Establecimiento de la estructura de memoria de evolución

### [2024-12-19] - Implementación de Campos de Tipo Archivo
- **Nueva funcionalidad**: Agregado soporte para campos de tipo "Archivo" en el editor de esquemas
- **Selección de archivos**: Implementado diálogo de selección de archivos con `tkinter.filedialog.askopenfilename`
- **Botón "Abrir"**: Agregado botón adicional para abrir archivos seleccionados con la aplicación predeterminada del sistema
- **Compatibilidad multiplataforma**: Soporte para Windows (`os.startfile`), macOS (`open`) y Linux (`xdg-open`)
- **Validaciones**: Verificación de existencia y tipo de archivo antes de intentar abrirlo
- **Integración UI**: Botón "Abrir" se habilita automáticamente cuando se selecciona un archivo
- **Endpoints API**: Nuevas rutas `/api/browse-files` y `/api/open-file` para manejo de archivos
- **Casos de uso**: Ideal para archivos Excel, Markdown, documentos y cualquier tipo de archivo que requiera apertura rápida
