60 lines
1.4 KiB
Python
60 lines
1.4 KiB
Python
"""Entrada para la interfaz gráfica.
|
|
|
|
Crea el servicio con el extractor por defecto y lanza la ventana principal.
|
|
"""
|
|
import logging
|
|
|
|
import customtkinter as ctk
|
|
|
|
from application.service import InvoiceProcessingService
|
|
from application.strategies import OllamaExtractor
|
|
from gui.view import InvoiceAppView
|
|
from gui.controller import AppController
|
|
from application.logging_config import configure_logging
|
|
from application.config import settings
|
|
|
|
|
|
def main():
|
|
"""Inicializa logging y arranca la aplicación GUI."""
|
|
configure_logging()
|
|
|
|
# Log effective settings *after* logging is configured
|
|
_cfg_logger = logging.getLogger("application.config")
|
|
try:
|
|
_cfg_logger.info(
|
|
"effective_api_settings",
|
|
extra={
|
|
"component": "config",
|
|
"base_url": settings.api.base_url,
|
|
"model": settings.api.model,
|
|
"timeout_s": getattr(settings.api, "request_timeout_s", None),
|
|
},
|
|
)
|
|
except Exception:
|
|
pass
|
|
|
|
extractor = OllamaExtractor(
|
|
api_key=settings.api.api_key,
|
|
base_url=settings.api.base_url,
|
|
model=settings.api.model
|
|
)
|
|
|
|
from application.batch_processor import BatchProcessor
|
|
from application.estimator import Estimator
|
|
|
|
service = InvoiceProcessingService(
|
|
extractor,
|
|
batch_processor_factory=lambda s: BatchProcessor(s),
|
|
estimator_factory=lambda s: Estimator(s)
|
|
)
|
|
|
|
app = InvoiceAppView()
|
|
AppController(app, service)
|
|
app.mainloop()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|
|
|
|
|