Mejoras y Desafíos para tu SGI
El sistema base opera. La pregunta ahora es hasta dónde quieres hacer crecer el almacén. Las propuestas que siguen son ampliaciones del edificio, en orden de obra: primero archivos que aguanten, luego operaciones nuevas, al final un mostrador para el público. Ninguna trae plano detallado, y es a propósito: a partir de aquí, el que diseña es el gerente.
Nivel 1: Persistencia Robusta
Migración a SQLite
El archivo JSON es la libreta del gerente: perfecta para un almacén de un solo turno. Pero se queda corta en cuanto la operación crece: no maneja dos escrituras a la vez, no garantiza que una anotación a medias no corrompa la libreta entera, y cada guardado reescribe todo el archivo.
Desafío: reemplaza el JSON por una base de datos SQLite usando el módulo sqlite3 de la biblioteca estándar. Es cambiar la libreta por el archivero de acero: consultas que buscan sin recorrer todo el inventario y datos que no se pierden a media escritura.
Nivel 2: Funcionalidades Avanzadas
Sistema de Ventas
Un almacén de verdad también despacha. Construye, con el patrón que ya dominas (funciones que operan sobre listas de diccionarios), un módulo de ventas que:
- Descuente el stock automáticamente al procesar una venta.
- Deje constancia de cada transacción en su propio archivo: el corte de caja.
- Calcule totales y ganancias.
Si en tu exploración te cruzas con las clases (POO), este módulo es el lugar perfecto para probarlas. El libro no las cubre: son territorio nuevo, y justo por eso valen la pena.
Reportes y Exportación
Un almacén sin reportes opera a ciegas: nadie sabe qué se vende, qué estorba ni cuánto vale lo que hay en los estantes. Desafío: genera el corte del día en un formato que cualquiera pueda abrir, por ejemplo, exportando el historial de ventas a Excel con pandas (y su motor openpyxl). Sería tu primera salida de la biblioteca estándar; ambos se instalan con pip, como viste en el Capítulo 11.
Nivel 3: Interfaz y Distribución
Interfaz Gráfica (GUI)
La terminal es el mostrador de servicio del gerente, no del público: nadie en una bodega real va a teclear comandos. Desafío: ponle un mostrador visual al sistema con una aplicación de escritorio en tkinter (viene con Python) o PyQt. Con eso, cualquier operario puede usar el SGI sin saber qué es un entorno virtual.
API REST
El paso final es abrir sucursales: que otros programas consulten tu inventario sin tocar tu código. Desafío: expón las funciones del SGI a través de una API web con FastAPI o Flask. Una ruta /productos que devuelva el inventario convierte tu almacén en un servicio disponible para cualquier cliente: web, móvil o una integración externa.
Elijas la que elijas, ya no partes de cero: tienes un SGI funcional como base y el mismo patrón de funciones sobre listas de diccionarios para extenderlo. La racha del Capítulo 12 sigue: el Capítulo 13 trae dos proyectos más que trabajan habilidades distintas, y el Capítulo 14 te dice hacia dónde expandir después.