Files
IPSExtractor/gui_main.py
T

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()