# 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.