diff --git a/api-v3/src/database/migrations/1790000400000-f4-remove-director-report-legacy.ts b/api-v3/src/database/migrations/1790000400000-f4-remove-director-report-legacy.ts new file mode 100644 index 0000000..da4f54f --- /dev/null +++ b/api-v3/src/database/migrations/1790000400000-f4-remove-director-report-legacy.ts @@ -0,0 +1,42 @@ +import { MigrationInterface, QueryRunner } from 'typeorm'; + +/** + * Retira definitivamente el circuito legacy Director -> revisión -> aprobación -> firma. + * + * current_revision_number se conserva porque pertenece al versionado útil del INF y no + * al circuito de aprobación retirado. + */ +export class F4RemoveDirectorReportLegacy1790000400000 implements MigrationInterface { + name = 'F4RemoveDirectorReportLegacy1790000400000'; + + public async up(queryRunner: QueryRunner): Promise { + // Las entregas al Director pertenecían al flujo retirado y no deben seguir + // apareciendo como pendientes/reintentables en F4. + await queryRunner.query(` + DELETE FROM inspection_document_deliveries + WHERE recipient_kind = 'DIRECTOR' + `); + + await queryRunner.query(`ALTER TABLE inspection_reports DROP COLUMN IF EXISTS approved_revision_id`); + await queryRunner.query(`ALTER TABLE inspection_reports DROP COLUMN IF EXISTS approved_by`); + await queryRunner.query(`ALTER TABLE inspection_reports DROP COLUMN IF EXISTS approved_at`); + await queryRunner.query(`ALTER TABLE inspection_reports DROP COLUMN IF EXISTS review_note`); + await queryRunner.query(`ALTER TABLE inspection_reports DROP COLUMN IF EXISTS signed_at`); + await queryRunner.query(`ALTER TABLE inspection_reports DROP COLUMN IF EXISTS review_status`); + } + + public async down(queryRunner: QueryRunner): Promise { + // El rollback reconstruye la forma del esquema, pero no recrea entregas Director + // ni datos de aprobación eliminados. El backup PRE-F4 es la fuente de recuperación + // si alguna vez fuera necesario volver a ese circuito. + await queryRunner.query(` + ALTER TABLE inspection_reports + ADD COLUMN IF NOT EXISTS review_status varchar(32) NOT NULL DEFAULT 'PENDING_REVIEW' + `); + await queryRunner.query(`ALTER TABLE inspection_reports ADD COLUMN IF NOT EXISTS approved_revision_id uuid`); + await queryRunner.query(`ALTER TABLE inspection_reports ADD COLUMN IF NOT EXISTS approved_by uuid`); + await queryRunner.query(`ALTER TABLE inspection_reports ADD COLUMN IF NOT EXISTS approved_at timestamptz`); + await queryRunner.query(`ALTER TABLE inspection_reports ADD COLUMN IF NOT EXISTS review_note varchar(1000)`); + await queryRunner.query(`ALTER TABLE inspection_reports ADD COLUMN IF NOT EXISTS signed_at timestamptz`); + } +}