feat: importar csv y auditar ediciones
This commit is contained in:
41
openspec/changes/add-navigation-csv-audit/design.md
Normal file
41
openspec/changes/add-navigation-csv-audit/design.md
Normal file
@@ -0,0 +1,41 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user