V1.0.1 配置与规则纠偏:照片上限配置化+强校验 / 活体开关闭环 / 推荐阈值快照+规则版本化 / governance 三表+漂移审计

根治三类工程治理问题(技术默认值≠产品规则、配置存在但未闭环、文档代码漂移):
- PROFILE-001:profile.photo.maxCount(默认6未确认)+ ProfilePolicy + 服务器端 FOR UPDATE
  并发强校验(PHOTO_LIMIT_EXCEEDED,拒绝先于 S3 不留孤儿)+ 前端 mergeAppConfig 嵌套键修复
- CFG-001/IDENTITY-001:IdentityPolicy + GET /verification/liveness-status 真实判定点
  (默认关不阻断,开则 enhancedVerified 变化,消除假开关)+ 删死 seed livenessVerification.enabled
- MATCH-001:阈值60定为技术默认(消解 PENDING 矛盾)+ V050 recommendation_records.threshold_snapshot
  规则版本化 + 删死重复配置类 MatchConfig
- DOC-001:新增 docs/governance/(config-register/open-questions/decision-register/
  hardcoded-rule-audit/config-drift-audit)
- TEST-001:新增守卫 PhotoLimitGuardTest(8)/IdentityLivenessGuardTest(5)/
  RecommendationThresholdSnapshotGuardTest(4),均经负向注入可红

全量回归 733/0/0/3(基线717+17新增-1删死测试);UI 契约门禁 18/18;STATUS 升 rc.21
This commit is contained in:
WorkBuddy
2026-09-21 02:05:15 +08:00
parent b60c1ffb71
commit 438b38d121
37 changed files with 1033 additions and 101 deletions
@@ -449,7 +449,6 @@ DROP TABLE IF EXISTS _conv_result;
-- V1.1 Feature Flag 初始化
-- ============================================================
INSERT INTO system_configs (config_key, config_value, description) VALUES
('livenessVerification.enabled', 'false', '人脸核验功能开关(V1.1预留,默认关闭)'),
('localEligibility.evidencePolicy', '"need_based"', '本地资格佐证策略:need_based=按需触发 / mandatory=全部强制'),
('counseling.enabled', 'true', '婚恋咨询功能开关'),
('premarital.enabled', 'true', '婚前辅导功能开关'),
@@ -0,0 +1,17 @@
-- V050: 推荐记录补「阈值快照」列(MATCH-001,V1.0.1 配置与规则纠偏)
--
-- 背景:推荐最低评分阈值 60 是<b>技术默认值</b>(match.default-score-threshold,未获产品
-- 正式确认,见 OQ-MATCH-001 / config-register 的 matching.recommendation.minScore)。
-- 未来阈值调整(60 → 65 …)时,需要能追溯「某条历史推荐当时依据的是哪一版规则、哪个阈值」,
-- 故推荐记录除已有的 rule_version 外,再快照当次判定所用的阈值。
--
-- 设计:
-- * threshold_snapshot 可空(INT)。历史行无快照(NULL),新增行写入当次阈值;
-- * 与 rule_version 配合构成「规则版本 + 阈值快照」,供 analytics 按版本切分口径;
-- * 不 DROP 任何列(Flyway 只向前),仅 ALTER ADD COLUMN。
ALTER TABLE recommendation_records
ADD COLUMN IF NOT EXISTS threshold_snapshot INT;
COMMENT ON COLUMN recommendation_records.threshold_snapshot IS
'推荐判定当次所用的最低评分阈值快照(对应 match.default-score-threshold);历史行为 NULL。配合 rule_version 追溯历史推荐依据的规则版本。';