Files

2.1 KiB

Fase B3 — Historial y versiones de activos

Versión: 0.10.0

Objetivo

Conservar el estado exacto de cada activo a través del tiempo, sin depender de la auditoría general para reconstruirlo.

Modelo

La tabla append-only asset_versions registra una versión completa cuando:

  • se crea un activo;
  • cambian su identificación, jerarquía o atributos;
  • cambia su estado de información;
  • se crea, reemplaza o retira su geometría.

Cada snapshot incluye datos principales, tipo y padre, atributos configurables, geometría GeoJSON, metadatos de captura, actor, origen, request ID y fecha. El evento de auditoría correspondiente conserva además el número de versión generado, permitiendo relacionar ambos registros.

La columna assets.current_version identifica la versión vigente. La migración genera automáticamente una versión BASELINE para cada activo que ya existía al desplegar B3.

Inmutabilidad

El usuario runtime de la API recibe solamente SELECT e INSERT sobre asset_versions. No recibe UPDATE ni DELETE. Una versión guardada no puede ser reescrita por la aplicación.

API

  • GET /api/v3/asset-versions: historial global paginado y filtrable;
  • GET /api/v3/assets/:id/versions: línea de tiempo de un activo;
  • GET /api/v3/assets/:id/versions/:versionNumber: snapshot exacto.

Los filtros globales incluyen búsqueda, tipo, estado, clase de cambio y rango de fechas.

Seguridad

Todas las rutas requieren assets.read_history. La migración asigna lectura histórica a admin, director, supervisor, inspector y auditor.

Interfaz

  • la sección Historial reemplaza el placeholder y muestra las versiones de todos los activos;
  • cada activo incluye su propia línea de tiempo;
  • el visor distingue la versión vigente y muestra datos, atributos, ubicación y el snapshot técnico exacto;
  • la lista maestra muestra el número de versión vigente.

Fuera de B3

  • restauración automática de versiones anteriores;
  • fotografías, documentos y evidencias;
  • importaciones masivas;
  • relevamiento Android y sincronización offline.