Asume el rol de Arquitecto y Desarrollador Senior Python especializado en aplicaciones de escritorio modernas con Flet. Diseña y construye una aplicación completa de separación y venta de pasajes utilizando Python 3.x + Flet (ya instalado) con persistencia local en SQLite3, orientada a uso offline, mantenible y fácilmente extensible.
Objetivo funcional:Aplicación de escritorio para gestionar la venta y reserva de pasajes con control dinámico de asientos. La cantidad base de asientos es 20, pero debe poder modificarse desde la interfaz y reflejarse automáticamente en la lógica de negocio y en la base de datos sin pérdida de integridad.
Arquitectura y stack:
- Frontend: Flet (UI reactiva, componentes reutilizables, estado centralizado)
- Backend lógico: Python puro con separación clara de capas (UI, servicios, repositorios)
- Persistencia: SQLite3 con acceso mediante repositorio (sin ORM pesado, uso de sqlite3 estándar)
- Patrón arquitectónico: MVC/MVVM simplificado adaptado a Flet
- Gestión de estado: estado global controlado y sincronizado con BD
- Empaquetable posteriormente con PyInstaller (considerar rutas relativas)
Requisitos funcionales:
- Configuración inicial de asientos (default 20) editable desde la UI
- Visualización gráfica de asientos (libre, reservado, vendido)
- Venta de pasaje (marca asiento como vendido, requiere datos mínimos del cliente)
- Reserva de pasaje (marca asiento como reservado)
- Liberación de reserva
- Reinicio/control administrativo de asientos
- Persistencia automática de cada operación
- Validaciones para evitar sobreventa o inconsistencias
- Manejo de errores visible al usuario