33 lines
1.1 KiB
Markdown
33 lines
1.1 KiB
Markdown
# `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()
|
|
```
|
|
|
|
|