feat: complete phase2 baseline cdr quality rbac

This commit is contained in:
hectorzhao
2026-06-24 18:40:21 +08:00
parent 7057fd3c42
commit a86de6545f
63 changed files with 7853 additions and 3678 deletions
+27 -1
View File
@@ -6,12 +6,20 @@ const schema = readFileSync(join(process.cwd(), 'prisma/schema.prisma'), 'utf8')
const migration = readFileSync(join(process.cwd(), 'prisma/migrations/20260621090000_init_v2_schema/migration.sql'), 'utf8');
const authMigration = readFileSync(join(process.cwd(), 'prisma/migrations/20260621093000_auth_sessions/migration.sql'), 'utf8');
const numberLibraryMigration = readFileSync(join(process.cwd(), 'prisma/migrations/20260624095000_number_library/migration.sql'), 'utf8');
const businessPrefixMigration = readFileSync(
join(process.cwd(), 'prisma/migrations/20260624121000_business_prefix_gateway_rewrite/migration.sql'),
'utf8'
);
describe('Prisma schema contract', () => {
it('defines every V2 core business table', () => {
const tables = [
'customers',
'customer_gateways',
'customer_gateway_ips',
'business_prefixes',
'customer_gateway_business_prefixes',
'customer_gateway_caller_prefixes',
'customer_gateway_policies',
'customer_recharges',
'vendors',
@@ -21,6 +29,7 @@ describe('Prisma schema contract', () => {
'vendor_gateway_forbidden_periods',
'vendor_gateway_codecs',
'vendor_gateway_prefix_rules',
'vendor_gateway_caller_rewrite_pool',
'landing_line_groups',
'landing_line_group_items',
'geo_cities',
@@ -45,7 +54,9 @@ describe('Prisma schema contract', () => {
for (const table of tables) {
expect(schema).toContain(`@@map("${table}")`);
expect(`${migration}\n${authMigration}\n${numberLibraryMigration}`).toContain(`CREATE TABLE \`${table}\``);
expect(`${migration}\n${authMigration}\n${numberLibraryMigration}\n${businessPrefixMigration}`).toContain(
`CREATE TABLE \`${table}\``
);
}
});
@@ -68,6 +79,21 @@ describe('Prisma schema contract', () => {
expect(numberLibraryMigration).toContain('CREATE INDEX `raw_cdrs_callee_operator_started_at_idx`');
});
it('models phase-2 business prefix gateway matching and landing rewrites', () => {
expect(schema).toContain('model BusinessPrefix');
expect(schema).toContain('model CustomerGatewayIp');
expect(schema).toContain('model CustomerGatewayBusinessPrefix');
expect(schema).toContain('model CustomerGatewayCallerPrefix');
expect(schema).toContain('model VendorGatewayCallerRewrite');
expect(schema).toContain('enum CustomerGatewayCallerMatchMode');
expect(schema).toContain('enum CustomerGatewayCalleeMatchMode');
expect(businessPrefixMigration).toContain('`billing_cycle_sec` INTEGER NOT NULL DEFAULT 60');
expect(businessPrefixMigration).toContain('`landing_callee_prefix` VARCHAR(64) NULL');
expect(businessPrefixMigration).toContain('`raw_callee` VARCHAR(64) NULL');
expect(businessPrefixMigration).toContain('`landing_caller` VARCHAR(64) NULL');
expect(businessPrefixMigration).toContain('CREATE INDEX `raw_cdrs_business_prefix_id_started_at_idx`');
});
it('models audit columns and outbox publishing state', () => {
expect(schema).toContain('createdAt');
expect(schema).toContain('updatedAt');