feat: Implement the initial IPSExtractor project structure, including application logic, GUI, core utilities, and documentation.

This commit is contained in:
erik
2026-02-23 09:24:06 -05:00
commit 69debb1c93
49 changed files with 7385 additions and 0 deletions
+32
View File
@@ -0,0 +1,32 @@
# `gui/controller.py`
## Propósito
Controlador principal de la GUI: enlaza la vista con los servicios de aplicación, maneja selección de carpetas/CSV, abre el selector de campos y ejecuta el procesamiento por radicado.
## API pública
### `class AppController`
- `__init__(view, service)`: inicializa y vincula callbacks.
- `on_select_root()`: abre diálogo de carpeta para la raíz.
- `on_select_csv()`: abre diálogo para guardar CSV.
- `on_process()`: coordina selección de campos y el procesamiento por radicado.
## Flujo
1) Construye schema/muestra de factura cuando es necesario.
2) Abre `FieldSelectorDialog` para elegir campos (y alias).
3) Relanza el procesamiento por radicado, emite JSON y escribe CSV incremental.
## Ejemplo
```python
from gui.view import InvoiceAppView
from gui.controller import AppController
from application.service import InvoiceProcessingService
from application.strategies import OllamaExtractor
view = InvoiceAppView()
svc = InvoiceProcessingService(OllamaExtractor())
controller = AppController(view, svc)
view.mainloop()
```