74 lines
2.4 KiB
Markdown
74 lines
2.4 KiB
Markdown
# Fase B4 — Fotografías y documentos de activos
|
|
|
|
Versión: `0.11.0`
|
|
|
|
## Objetivo
|
|
|
|
Adjuntar evidencia visual y documental a cada activo, conservando el archivo
|
|
original en almacenamiento privado y relacionando toda operación con el
|
|
historial inmutable y la auditoría.
|
|
|
|
## Modelo y almacenamiento
|
|
|
|
La tabla `asset_media` guarda los metadatos, el hash SHA-256 y el vínculo con
|
|
el activo. Los binarios se almacenan fuera de la imagen de la API, en el
|
|
volumen Docker persistente `dhv2_asset_media`.
|
|
|
|
Formatos permitidos:
|
|
|
|
- fotografías JPEG, PNG y WebP;
|
|
- documentos PDF;
|
|
- tamaño máximo de 15 MB por archivo.
|
|
|
|
La API inspecciona la firma real del contenido y no confía en la extensión ni
|
|
en el MIME informado por el navegador. Cada original recibe un nombre interno
|
|
aleatorio y permisos de archivo restringidos.
|
|
|
|
## API
|
|
|
|
- `GET /api/v3/assets/:assetId/media`: lista archivos activos;
|
|
- `POST /api/v3/assets/:assetId/media`: incorpora un archivo multipart;
|
|
- `PATCH /api/v3/asset-media/:mediaId`: actualiza metadatos;
|
|
- `DELETE /api/v3/asset-media/:mediaId`: retiro lógico;
|
|
- `GET /api/v3/asset-media/:mediaId/content`: visualización o descarga protegida.
|
|
|
|
Los archivos no se publican desde Nginx. Toda lectura atraviesa autenticación y
|
|
autorización en la API.
|
|
|
|
## Seguridad y permisos
|
|
|
|
- `assets.read_media`: admin, director, supervisor, inspector y auditor;
|
|
- `assets.manage_media`: admin, supervisor e inspector.
|
|
|
|
El usuario runtime puede consultar, insertar y actualizar `asset_media`, pero
|
|
no recibe `DELETE`. Retirar un archivo es una baja lógica: el registro y el
|
|
original físico se conservan.
|
|
|
|
## Trazabilidad
|
|
|
|
Incorporar, editar o retirar un archivo:
|
|
|
|
- genera un evento específico en `audit_events`;
|
|
- incrementa `assets.current_version`;
|
|
- produce un snapshot B3 con los metadatos vigentes de fotografías y
|
|
documentos, sin duplicar los binarios dentro de PostgreSQL.
|
|
|
|
## Interfaz
|
|
|
|
Cada activo incluye una sección de fotografías y documentos con:
|
|
|
|
- captura desde la cámara o selección de archivo;
|
|
- fecha, título y descripción opcionales;
|
|
- captura GPS explícita con precisión;
|
|
- previsualización autenticada de fotografías;
|
|
- descarga protegida;
|
|
- edición de metadatos y retiro lógico;
|
|
- cantidad de archivos en el listado maestro.
|
|
|
|
## Fuera de B4
|
|
|
|
- miniaturas y transformaciones derivadas;
|
|
- antivirus externo;
|
|
- importación masiva de archivos;
|
|
- sincronización Android offline.
|