Files
leaudit-platform-backend/scripts/创建sql/precheck_rule_domain_tenant_phase1.sql
T

119 lines
3.0 KiB
SQL

-- ============================================================================
-- Rule Domain Tenant Phase 1 Precheck
-- 目标:
-- 1. 执行前确认规则域现状
-- 2. 识别历史全局规则资产规模
-- 3. 识别运行结果快照回填影响范围
-- ============================================================================
-- 1. 核心表是否存在
SELECT table_name
FROM information_schema.tables
WHERE table_schema = current_schema()
AND table_name IN (
'leaudit_rule_sets',
'leaudit_rule_versions',
'leaudit_rule_group_bindings',
'leaudit_rule_type_bindings',
'leaudit_audit_runs',
'leaudit_rule_results',
'leaudit_run_errors',
'leaudit_run_metrics'
)
ORDER BY table_name;
-- 2. 当前列缺失情况
SELECT
table_name,
column_name
FROM information_schema.columns
WHERE table_schema = current_schema()
AND table_name IN (
'leaudit_rule_sets',
'leaudit_rule_versions',
'leaudit_rule_group_bindings',
'leaudit_rule_type_bindings',
'leaudit_audit_runs',
'leaudit_rule_results',
'leaudit_run_errors',
'leaudit_run_metrics'
)
AND column_name IN (
'tenant_code',
'scope_type',
'tenant_code_snapshot',
'scope_type_snapshot',
'source_rule_set_id',
'source_version_id',
'tenant_name_snapshot',
'group_id_snapshot',
'rule_binding_id_snapshot'
)
ORDER BY table_name, column_name;
-- 3. 规则集与规则版本规模
SELECT 'leaudit_rule_sets' AS table_name, COUNT(*) AS total
FROM leaudit_rule_sets
WHERE deleted_at IS NULL
UNION ALL
SELECT 'leaudit_rule_versions' AS table_name, COUNT(*) AS total
FROM leaudit_rule_versions
UNION ALL
SELECT 'leaudit_rule_group_bindings' AS table_name, COUNT(*) AS total
FROM leaudit_rule_group_bindings
WHERE deleted_at IS NULL;
-- 4. 历史全局规则资产规模
SELECT
COUNT(*) AS global_rule_sets_without_tenant_code
FROM leaudit_rule_sets
WHERE deleted_at IS NULL
AND (
tenant_code IS NULL
OR BTRIM(tenant_code) = ''
);
SELECT
COUNT(*) AS global_group_bindings_without_tenant_code
FROM leaudit_rule_group_bindings
WHERE deleted_at IS NULL
AND (
tenant_code IS NULL
OR BTRIM(tenant_code) = ''
);
-- 5. 运行主表与结果表快照缺口
SELECT
COUNT(*) AS audit_runs_missing_tenant_code
FROM leaudit_audit_runs
WHERE tenant_code IS NULL
OR BTRIM(tenant_code) = '';
SELECT
COUNT(*) AS rule_results_missing_tenant_code
FROM leaudit_rule_results
WHERE tenant_code IS NULL
OR BTRIM(tenant_code) = '';
SELECT
COUNT(*) AS run_errors_missing_tenant_code
FROM leaudit_run_errors
WHERE tenant_code IS NULL
OR BTRIM(tenant_code) = '';
SELECT
COUNT(*) AS run_metrics_missing_tenant_code
FROM leaudit_run_metrics
WHERE tenant_code IS NULL
OR BTRIM(tenant_code) = '';
-- 6. 文档租户缺口,会直接影响 audit_runs 回填质量
SELECT
COUNT(*) AS documents_missing_tenant_code
FROM leaudit_documents
WHERE deleted_at IS NULL
AND (
tenant_code IS NULL
OR BTRIM(tenant_code) = ''
);