diff --git a/api-v3/src/database/migrations/1790000600000-f4-align-document-lifecycle-constraints.ts b/api-v3/src/database/migrations/1790000600000-f4-align-document-lifecycle-constraints.ts index cf2ec85..6171183 100644 --- a/api-v3/src/database/migrations/1790000600000-f4-align-document-lifecycle-constraints.ts +++ b/api-v3/src/database/migrations/1790000600000-f4-align-document-lifecycle-constraints.ts @@ -4,9 +4,9 @@ import { MigrationInterface, QueryRunner } from 'typeorm'; * Alinea las restricciones físicas heredadas de D5 con el ciclo documental F4. * * F4 incorpora estados LOCKED/SEALED para Actas y WORKING/OFFICIALIZED para INF. - * También usa el código visible ACT-NNNNN-DD-MM-YY. Las migraciones históricas - * conservaban CHECKs, triggers y el formato ACTA-YYYY-NNNNNN de D5, por lo que - * el servicio podía compilar pero PostgreSQL rechazaba las transiciones nuevas. + * También usa el código visible ACT-NNNNN-DD-MM-YY y entrega copia al INSPECTOR. + * Las migraciones históricas conservaban CHECKs, triggers y contratos de D5, por lo + * que el servicio podía compilar pero PostgreSQL rechazaba las transiciones nuevas. */ export class F4AlignDocumentLifecycleConstraints1790000600000 implements MigrationInterface { name = 'F4AlignDocumentLifecycleConstraints1790000600000'; @@ -76,6 +76,19 @@ export class F4AlignDocumentLifecycleConstraints1790000600000 implements Migrati ) `); + // F4 retira Director como destinatario activo y agrega copia al inspector. + // La migración 040 ya eliminó previamente las filas DIRECTOR existentes. + await queryRunner.query(` + ALTER TABLE inspection_document_deliveries + DROP CONSTRAINT IF EXISTS chk_inspection_document_deliveries_recipient_kind + `); + await queryRunner.query(` + ALTER TABLE inspection_document_deliveries + ADD CONSTRAINT chk_inspection_document_deliveries_recipient_kind CHECK ( + recipient_kind IN ('COMPANY','OFFICE','INSPECTOR') + ) + `); + // Las firmas F4 pertenecen al snapshot LOCKED. El trigger D5 exigía READY. await queryRunner.query(` CREATE OR REPLACE FUNCTION dhv2_guard_act_signature_ready() @@ -217,6 +230,20 @@ export class F4AlignDocumentLifecycleConstraints1790000600000 implements Migrati ) `); + // Conservamos INSPECTOR en el CHECK de rollback para no destruir ni falsificar + // entregas F4 ya auditadas. D5 puede seguir operando con sus tres valores y el + // backup PRE-F4 sigue siendo la fuente de una restauración histórica exacta. + await queryRunner.query(` + ALTER TABLE inspection_document_deliveries + DROP CONSTRAINT IF EXISTS chk_inspection_document_deliveries_recipient_kind + `); + await queryRunner.query(` + ALTER TABLE inspection_document_deliveries + ADD CONSTRAINT chk_inspection_document_deliveries_recipient_kind CHECK ( + recipient_kind IN ('COMPANY','OFFICE','DIRECTOR','INSPECTOR') + ) + `); + await queryRunner.query(` CREATE OR REPLACE FUNCTION dhv2_guard_act_signature_ready() RETURNS trigger LANGUAGE plpgsql AS $$