# Design ## Context La app usa Vue Router, Vuetify y Dexie offline-first. El Layout actual sólo ofrece el drawer; las vistas no comparten contexto de ruta ni controles de historial. Productores, productos y ventas se guardan directamente desde las vistas y no existe una bitácora general de cambios. ## Goals / Non-Goals **Goals:** - Hacer evidente cómo volver a Inicio o a la vista anterior en cualquier tamaño de pantalla. - Procesar CSV localmente, sin backend, con errores por fila y resumen de importación. - Mantener registros originales y almacenar auditorías inmutables de las ediciones. - Reutilizar diálogos y tablas Vuetify para editar sin perder el contexto. **Non-Goals:** - Control de usuarios, autenticación o sincronización remota. - Edición destructiva sin confirmación. - Interpretar formatos de hoja de cálculo distintos de CSV UTF-8/compatible con separador coma o punto y coma. ## Decisions - **Navegación en Layout:** usar `router-link`, `router.back()` y `router.push('/')` en un encabezado compartido. Se elige un encabezado sobre botones duplicados en vistas para garantizar consistencia. - **Importación CSV en servicio:** parsear encabezados con normalización Unicode NFD, validar cada fila y ejecutar una transacción Dexie. Se rechazan filas inválidas sin abortar las válidas y se entrega un resumen. - **Auditoría append-only:** agregar una tabla `auditorias` con entidad, registro, operación, actor, motivo, fecha y snapshots JSON. Las ediciones actualizan el registro y agregan la auditoría en una misma transacción. - **Ventas editables como corrección controlada:** conservar el id y registrar diferencias de líneas/inventario; exigir motivo y actor antes de persistir. - **Compatibilidad de datos:** nueva versión Dexie agrega la tabla sin borrar datos existentes; exportación incluirá auditorías y podrá importar archivos previos sin auditorías como lista vacía. ## Risks / Trade-offs - [CSV ambiguo] Separador o codificación inesperada puede producir columnas incorrectas -> detectar separador, normalizar BOM y mostrar errores por fila antes de confirmar. - [Edición de ventas] Puede alterar stock y reportes históricos -> registrar snapshots y movimientos compensatorios en transacción. - [Historial atrás] Puede salir de la app si no existe historial -> fallback explícito a Inicio. - [Datos grandes] Auditar snapshots incrementa almacenamiento local -> aceptar el costo por trazabilidad de la POC y exportarlo junto con los datos. ## Migration Plan 1. Migrar Dexie agregando `auditorias`. 2. Mantener importación de exportaciones antiguas con auditorías vacías. 3. Validar navegación, importación y edición en web; después ejecutar build y APK.