Files
ToldoConjunto/openspec/changes/add-navigation-csv-audit/design.md
2026-10-25 18:20:04 -05:00

2.7 KiB

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.