Base principal
PostgreSQL guarda permanentemente todo lo que importa: catálogo, inventario, compras, ventas y los comprobantes legales. Es la única "verdad" del sistema; todo lo demás (la memoria rápida, el buscador) es caché o se deriva de aquí.
Una base de datos relacional PostgreSQL. Cada lectura y escritura del motor pasa por aquí. Guarda el catálogo (producto, variante), el inventario, las compras de importación, las ventas y —sobre todo— los comprobantes electrónicos, que son legales y no pueden vivir en ningún sitio temporal.
Las tablas reales, en español y con el dominio del negocio. El esquema completo está en el modelo oficial; aquí va el mapa de alto nivel:
Una columna stock escrita a mano se desincroniza en cuanto dos operaciones la tocan a la vez. En su lugar, cada entrada (compra) y cada salida (venta) se anota como una fila en movimiento_inventario, y el stock disponible es la suma. Así siempre cuadra y queda auditable: se puede reconstruir de dónde salió cada unidad.
Nada de esto hace falta para el piloto (30–50 SKU). Se difiere hasta que el volumen lo justifique:
Por qué: PostgreSQL es robusto y maneja bien lo relacional. El ORM de Django permite escribir consultas sin SQL a mano, y sus propias migraciones versionan el esquema (no se usa Alembic, que es de otro ecosistema). La extensión pg_trgm, dentro de la misma base, cubre la búsqueda por ahora —no hace falta un buscador aparte.
La base de datos es el bien más valioso del negocio: respaldo y monitoreo son innegociables. Tres reglas sostienen el modelo —el SKU vive en la variante, el stock se calcula sumando movimientos, y los comprobantes se guardan permanentemente aquí. El detalle campo por campo está en el modelo oficial.