74 lines
2.6 KiB
Markdown
74 lines
2.6 KiB
Markdown
# Fase D5 — Cierre y firmas
|
|
|
|
Versión: `0.19.0`
|
|
|
|
## Objetivo
|
|
|
|
Cerrar la inspección conservando una constancia exacta e inmutable de lo
|
|
observado. El cierre del acta no cierra los hallazgos: cada hallazgo continúa
|
|
abierto hasta su verificación posterior.
|
|
|
|
## Flujo
|
|
|
|
1. El acta sigue en `DRAFT` durante la visita.
|
|
2. Se identifica al responsable de la empresa o se documenta su ausencia.
|
|
3. `Preparar para firmas` cambia el acta a `READY`, congela el contenido y
|
|
genera una huella SHA-256 canónica.
|
|
4. Firma al menos un inspector asignado.
|
|
5. La empresa firma la recepción o se registra una negativa/ausencia motivada.
|
|
6. `Cerrar y sellar` cierra atómicamente el acta y la visita.
|
|
7. Los hallazgos permanecen `OPEN`, admitiendo respuestas, PDFs, comunicaciones
|
|
y fecha del próximo control.
|
|
|
|
Antes de la primera firma, un acta `READY` puede volver a `DRAFT`. Después de
|
|
registrar una firma o constancia ya no puede reabrirse ni modificarse.
|
|
|
|
## Constancia manuscrita
|
|
|
|
La captura en pantalla se denomina firma manuscrita o constancia de recepción.
|
|
No se presenta como firma digital certificada. Cada registro conserva:
|
|
|
|
- identidad y rol del firmante;
|
|
- declaración aceptada y su versión;
|
|
- fecha del dispositivo y fecha del servidor;
|
|
- origen web/Android, dispositivo y GPS opcional;
|
|
- hash de la imagen y hash del payload de firma;
|
|
- vínculo con la huella exacta del contenido preparado.
|
|
|
|
Las firmas sólo admiten `SELECT` e `INSERT` para el usuario runtime de la API.
|
|
No pueden actualizarse ni borrarse.
|
|
|
|
## Congelado canónico
|
|
|
|
El snapshot preparado usa el esquema `DH-ACT-CLOSURE-V1` e incluye:
|
|
|
|
- acta y visita;
|
|
- responsable empresarial y equipo inspector;
|
|
- activos, atributos y geometrías vigentes;
|
|
- hallazgos, texto constatado, catálogo y base legal copiada;
|
|
- evidencias con metadatos y SHA-256;
|
|
- comunicaciones existentes al momento de preparar.
|
|
|
|
Los objetos se serializan con claves ordenadas y fechas ISO-8601 antes de
|
|
calcular SHA-256. El cierre final agrega las firmas y las fechas de cierre, y
|
|
genera una segunda huella almacenada en el acta.
|
|
|
|
## Persistencia y permisos
|
|
|
|
La migración `PhaseD5ActClosingSignatures1787328000000` crea:
|
|
|
|
- `inspection_act_responsibles`;
|
|
- `inspection_act_closures`;
|
|
- `inspection_act_signatures`;
|
|
- cuatro permisos `inspection_closure.*`;
|
|
- restricciones, índices y triggers de inmutabilidad.
|
|
|
|
Las imágenes se guardan bajo
|
|
`/app/storage/asset-media/inspection-signatures`, dentro del volumen existente
|
|
`dhv2_asset_media`. No hay variables obligatorias nuevas.
|
|
|
|
## Fuera de alcance
|
|
|
|
El PDF oficial, QR/token de verificación y envío por correo corresponden a D6.
|
|
El informe técnico y su aprobación corresponden a D7.
|