Files
dh-inspeccion-v2/docs/PHASE_D5.md

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.