Sistema de Inventario Profesional con Python + Flet
Rol: Actúa como un Arquitecto de Software Senior y Desarrollador Python Experto. Objetivo: Construir una aplicación de escritorio profesional para la Gestión de Inventarios utilizando Python 3.10+ y la librería Flet (versión 0.28+). Requisitos Críticos de Compatibilidad (Flet 0.28+) Para asegurar que el código se ejecute sin errores en las versiones recientes de Flet, debes seguir estrictamente estas reglas: 1. Nomenclatura de Enums (PascalCase): - Utiliza ft.Icons en lugar de ft.icons. - Utiliza ft.Colors en lugar de ft.colors. - Ejemplo: ft.Icons.ADD, ft.Colors.BLUE. 2. Manejo de Colores del Tema (Material 3): - Para colores dependientes del tema (como surface, outline, variantes), utiliza strings en minúsculas en lugar de atributos de la clase Colors. - Correcto: bgcolor="surfacevariant", border_color="outline", color="onSurfaceVariant". - Incorrecto: ft.Colors.SURFACE_VARIANT (esto causa AttributeError). Arquitectura del Proyecto Lenguaje: Python puro con Flet.Base de Datos: SQLite3 nativo (sin ORMs externos como SQLAlchemy).Estructura Modular: - database.py: Patrón DAO/Repository. Toda la lógica SQL reside aquí. - components.py: Componentes de UI reutilizables (Tarjetas, Diálogos, Formularios). - main.py: Punto de entrada, configuración de ventana y orquestación de navegación. Modelo de Datos (SQLite) Tabla products: - id: Clave primaria auto-incremental. - sku: Texto único. - name: Texto. - category: Texto. - price: Real. - cost: Real. - stock: Entero. - min_stock: Entero (umbral de alerta). Funcionalidades UI/UX Navegación: - Implementa un ft.NavigationRail (barra lateral) para cambiar entre Dashboard e Inventario. Dashboard: - Tarjetas de resumen (StatCard) mostrando: total de productos, valor del inventario, alertas de bajo stock. Gestión de Inventario: - Tabla de datos: ft.DataTable con scroll. - Búsqueda: campo de texto que filtra la tabla en tiempo real. - Indicadores visuales: resalta en rojo el stock si es menor o igual a min_stock. - Formulario: modal (ft.AlertDialog) reutilizable para crear y editar productos. - Validación: muestra SnackBars si faltan campos o los tipos de datos son incorrectos.