fix(knowledge): gate policy answers by formal sources

This commit is contained in:
key
2026-07-31 00:28:41 +08:00
parent a3689591e7
commit bf703b7853
16 changed files with 470 additions and 20 deletions
@@ -0,0 +1,96 @@
-- 2026-08-01 受控内部试点正式来源白名单。
-- 必须先独立核验原文件 SHA-256,再执行本文件;本文件只会命中精确的附件 ID + doc_id。
-- 访谈、经验萃取、AI 生成内容和草稿不得加入此清单。
INSERT INTO aihr_knowledge_source_governance (
tenant_id, source_id, attachment_id, source_doc_id, authority_type, lifecycle_status,
source_version, effective_date, expires_date, applicability_scope, content_sha256,
approval_basis, approved_by, approved_time
)
SELECT a.tenant_id, source_seed.source_id, a.id, a.doc_id, 'FORMAL_POLICY', 'APPROVED',
source_seed.source_version, source_seed.effective_date, source_seed.expires_date,
source_seed.applicability_scope, source_seed.content_sha256,
'2026-08-01受控内部试点正式来源白名单', 'PROJECT_SPONSOR_DELEGATION', '2026-07-30 23:59:00'
FROM aihr_knowledge_attach a
JOIN (
SELECT 1883 attachment_id, '017e4a5dfadd40279bbe5f947cfdf5e1' source_doc_id,
'FORMAL-ZZKF01-20240919' source_id, '2024-09-19' source_version,
DATE '2024-09-19' effective_date, NULL expires_date,
'住宅物业/生活顾问网格化作业' applicability_scope,
'f79a9a3f29f73d518761aa3e8707928a10b8a9ce6b56dd53f30ef73219c0c9db' content_sha256
UNION ALL SELECT 1884, 'd544749eb13b456aaa06f0fd6c84dfc0',
'FORMAL-ZZKF02-20240919', '2024-09-19', DATE '2024-09-19', NULL,
'住宅物业/客户报事报修作业',
'1cbecb71e28750a033c683928745ef0de3e2cf688ee8d838806f098b4a0e0182'
UNION ALL SELECT 1885, '77a84c25c1c14b80b74c6211a76a3fa1',
'FORMAL-ZZKF03-20240919', '2024-09-19', DATE '2024-09-19', NULL,
'住宅物业/客户投诉处理作业',
'eb6b7efa269cb46feba14d7aeb65f41bbb15352a05cdb8d092c781e9a4328ed9'
UNION ALL SELECT 1886, '22a68eda3b6e476192224ad54a47d0a3',
'FORMAL-ZZKF05-20240919', '2024-09-19', DATE '2024-09-19', NULL,
'住宅物业/装修管理作业',
'bf822957ba738ef5075e465ed5da4a279e1f37a0b141109425049a72b0c71550'
UNION ALL SELECT 1922, '4e484a61c8ab473cadab75e61a672fe8',
'FORMAL-ZZBJ06-20240919', '2024-09-19', DATE '2024-09-19', NULL,
'住宅物业/垃圾收集和清运作业',
'df3a35f6c6a624fc06c7807f6b8b7cf9e7e3c17bba974ae1c5850cf7c2483c2c'
UNION ALL SELECT 1927, '954f717921ed43b5882ec8be7a9886ab',
'FORMAL-ZZBJ12-20240919', '2024-09-19', DATE '2024-09-19', NULL,
'住宅物业/突发事件应急作业',
'739db239f623854b89c8a57a43484f86d244d2d126e0d623f2773b430d63b7b5'
UNION ALL SELECT 1932, 'f448a336c14c4d6790e423abf7beb4fd',
'FORMAL-ZZAQ04-20240919', '2024-09-19', DATE '2024-09-19', NULL,
'住宅物业/车辆管理作业',
'3d1e74a9abec8c2da43c95f42a877e41a93f22aa794ad75b65a1d5056a71b4f2'
UNION ALL SELECT 1947, 'c3402e7a86504b188807f548277576ce',
'FORMAL-YC-2026-33', '银城物业[2026]第33号', DATE '2026-05-26', NULL,
'银城物业各事业部、公司/2026年汛期防台防汛',
'824e6355f5506ab113919f4744a13a68c9356af0e946347bb159804e0e32feb8'
UNION ALL SELECT 1984, 'f5bd66670ee345aa96e03c328e0753e8',
'FORMAL-LIFE-ADVISOR-HANDBOOK-20220928', '2022-09-28', DATE '2022-09-28', NULL,
'生活顾问岗位学习与作业参考',
'362b9a2f01454a16eaf8fcd2cf76fe283f0dc2ced99533ade4a6ae8cc1f480fa'
UNION ALL SELECT 1990, '31b7249eaa3c4b8d8ca59738edc1fc37',
'FORMAL-NJ-HOUSING-CONTRACT-2025-134', '宁房办[2025]134号', DATE '2025-12-16', NULL,
'南京市住宅小区物业服务合同示范文本适用事项',
'9a61349811d292d7d2e75e66384e60a0e2e30f66b92d8a43557127e07b983534'
) source_seed
ON source_seed.attachment_id = a.id
AND source_seed.source_doc_id = a.doc_id
WHERE a.tenant_id = '000000'
AND a.status = 2
ON DUPLICATE KEY UPDATE
source_doc_id = VALUES(source_doc_id),
authority_type = VALUES(authority_type),
lifecycle_status = VALUES(lifecycle_status),
source_version = VALUES(source_version),
effective_date = VALUES(effective_date),
expires_date = VALUES(expires_date),
applicability_scope = VALUES(applicability_scope),
content_sha256 = VALUES(content_sha256),
approval_basis = VALUES(approval_basis),
approved_by = VALUES(approved_by),
approved_time = VALUES(approved_time);
-- 失败关闭:10 个精确来源未全部注册时让 mysql 进程返回非零。
DROP TEMPORARY TABLE IF EXISTS aihr_aug1_formal_source_assert;
CREATE TEMPORARY TABLE aihr_aug1_formal_source_assert (
assertion_value tinyint NOT NULL
);
INSERT INTO aihr_aug1_formal_source_assert (assertion_value)
SELECT CASE WHEN COUNT(*) = 10 THEN 1 ELSE NULL END
FROM aihr_knowledge_source_governance
WHERE tenant_id = '000000'
AND source_id IN (
'FORMAL-ZZKF01-20240919', 'FORMAL-ZZKF02-20240919', 'FORMAL-ZZKF03-20240919',
'FORMAL-ZZKF05-20240919', 'FORMAL-ZZBJ06-20240919', 'FORMAL-ZZBJ12-20240919',
'FORMAL-ZZAQ04-20240919', 'FORMAL-YC-2026-33',
'FORMAL-LIFE-ADVISOR-HANDBOOK-20220928', 'FORMAL-NJ-HOUSING-CONTRACT-2025-134'
)
AND authority_type = 'FORMAL_POLICY'
AND lifecycle_status = 'APPROVED'
AND effective_date <= current_date()
AND (expires_date IS NULL OR expires_date >= current_date())
AND CHAR_LENGTH(TRIM(source_version)) > 0
AND content_sha256 REGEXP '^[0-9a-f]{64}$';
DROP TEMPORARY TABLE aihr_aug1_formal_source_assert;