documents/src/migrations/1786752000000-migration.ts
Breno Pires 2006f2475f
All checks were successful
CD / build (pull_request) Successful in 7s
feat(radar): validacao de conformidade por CNPJ (Radar de Conformidade)
Consulta Receita em cadeia de fallback e repasse da ANP (ISO-8859-1);
autoavaliacao de 17 itens por programa+loja+CNPJ em jsonb; motor de score
com regra de gargalo e tres numeros, espelho do frontend. 21 testes novos.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-11 02:55:57 -03:00

32 lines
1.2 KiB
TypeScript

import { MigrationInterface, QueryRunner } from 'typeorm';
/**
* Autoavaliações do Radar de Conformidade — respostas dos 17 itens por
* (programa, loja, CNPJ). O diagnóstico não é persistido: é recalculado a
* cada leitura, para regra nova de score valer imediatamente.
*/
export class migration1786752000000 implements MigrationInterface {
name = 'migration1786752000000';
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`
CREATE TABLE IF NOT EXISTS public.radar_assessment (
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
create_date timestamp NOT NULL DEFAULT LOCALTIMESTAMP,
update_date timestamp NOT NULL DEFAULT LOCALTIMESTAMP,
"programId" uuid NOT NULL,
"storeId" uuid NOT NULL,
"cnpj" varchar(14) NOT NULL,
"mode" varchar(16) NOT NULL DEFAULT 'own',
"answers" jsonb NOT NULL DEFAULT '{}'::jsonb
);
CREATE UNIQUE INDEX IF NOT EXISTS uq_radar_assessment_tenant_cnpj
ON public.radar_assessment ("programId","storeId","cnpj");
`);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`DROP TABLE IF EXISTS public.radar_assessment;`);
}
}