#!/usr/bin/env python3 import sys from config import ConfiguracionApp from gestor_base_datos import GestorBaseDatos from motor_sincronizacion import MotorSincronizacion from cliente_api import ClienteAPI from interfaz import lanzar_interfaz from logger_utils import log class ClienteSincronizacionSCAII: def __init__(self): self.config = ConfiguracionApp() self.config.cargar() self.db = GestorBaseDatos(self.config.datos) # Cliente API con sistema correcto para Login self.api = ClienteAPI(self.config.datos) # Motor vinculado al API self.motor = MotorSincronizacion(self.db, self.api) self.gui = None def iniciar(self): # 1. Conexión a la DB if not self.db.conectar(): log.error("No se pudo conectar a la base de datos al iniciar.") return # 2. Lanzar la Interfaz (Flet) log.info("Lanzando Interfaz gráfica (Flet)...") self.gui = lanzar_interfaz(self) def proceso_principal(self): """Orquestación delegada al Motor""" # Vincular callbacks a la UI if self.gui: self.motor.callback_progreso = self.gui.actualizar_progreso self.motor.callback_fila = self.gui.agregar_fila self.motor.callback_actualizar_fila = self.gui.actualizar_estado_fila self.motor.callback_estado_texto = self.gui.actualizar_estado_texto # Ejecutar la lógica robusta del motor (que ya tiene el debug) exito = self.motor.proceso_principal() if exito: if self.gui: self.gui.status_label.value = "¡Sincronización Exitosa!" self.gui.page.update() else: log.error("El proceso de sincronización falló.") if self.gui: self.gui.status_label.value = "Error en Proceso (Ver debug_sync.log)" self.gui.page.update() if __name__ == "__main__": app = ClienteSincronizacionSCAII() app.iniciar()