Files
danyang-match/docs/governance/open-questions.md
T
WorkBuddy 60c591fc68 V1.0.1 纠偏 DoD 补齐:canonical key 字面化(V051+KEY_ALIASES)+ 照片并发突破实测(锁用户行+锁后计数)+ AGENTS 规则27 + known-risks
按文档 DoD/约束逐条复查后补齐的差距(承接 438b38d 主体纠偏):
- CFG-001 字面化:FeatureFlagConfig.KEY_ALIASES(identity.liveness.enabled / 遗留
  livenessVerification.enabled → 实现字段 livenessEnabled,读兼容)+ Controller PUT/DELETE
  落库归一到 canonical 键 + V051 迁移(删遗留键、写入 identity.liveness.enabled=false);
  MigrationValidationTest 基线 50→51。
- PHOTO-004 真实并发突破:新增 PhotoLimitConcurrencyGuardTest(3 线程 H2 并发冲顶)——
  实测咬住「锁照片行+读时计数」在 H2 MVCC 快照漏读、3/3 全成功突破上限的缺陷;
  并发控制改为锁用户行(UserMapper.lockUserRow FOR UPDATE)+ 锁后新语句 COUNT,
  0 张照片亦有锁可加(补首张并发缺口);UserPhotoMapper 计数方法同步替换。
- FF-LIVENESS-003 + canonical 持久化:FeatureFlagPersistenceGuardTest +4
  (canonical 加载 / 遗留别名读兼容 / PUT 落 canonical 键 / 切换即生效无旧缓存)、
  FeatureFlagControllerTest +3(canonical/legacy/reset)。
- 文档同步:AGENTS.md 规则 27(配置治理纪律);docs/governance/known-risks.md
  (7 项含本机 WSL/Docker 故障 KR-07);config-register / open-questions 更新 canonical 口径;
  STATUS rc.21 行补 ⑥⑦⑧。

全量回归 741/0/0/3(基线 717 + 25 新增 − 1 删死测试,宿主机 JDK21+Maven 3.9.9 实测,
本机 WSL/Docker 引擎故障期间);UI 契约门禁 18/18
2026-09-21 11:13:14 +08:00

77 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 开放问题 — open-questions.md
> **版本**:V1.0.1 配置与规则纠偏基线 · **生效**:2026-09-20 · **owner**:产品负责人
> 未决项在此登记;**产品正式确认后**移入 `decision-register.md`,并同步更新
> `config-register.md` 的「产品正式确认」列与 `PENDING_DECISIONS.md`。
> 状态:`TBD`(待产品裁决)/ `IN_PROGRESS` / `RESOLVED`。
---
## OQ-IDENTITY-001 · 是否在正式运营阶段启用人脸/活体核验?
- **状态**:TBD
- **当前技术默认**:canonical 键 `identity.liveness.enabled`(V051 起为 `feature_flag_overrides` 唯一正式键;实现字段 `livenessEnabled`)= `false`,provider = `none`
- **说明**:活体**不是 V1.1 首发强制规则**。默认关闭时不得阻断实名主流程、不得误提示「必须人脸」。
开关已接真实业务判定点(`GET /verification/liveness-status` → `enhancedVerified`),消除「假开关」。
是否启用、选用哪家合规第三方 Provider(选型未定)由产品/合规裁决。
- **关联**:`IdentityPolicy`、`UserIdentity.livenessVerificationStatus`、V016、V051。
## OQ-PROFILE-001 · 用户最多可上传多少张个人照片?
- **状态**:TBD
- **当前技术默认**:`profile.photo.maxCount = 6`(头像 + 生活照合计)
- **说明**:6 仅作为技术默认值,**必须保持配置化**(已配置化 + 服务器端强校验 + 并发安全)。
不得写死;产品确认正式值后改配置即可,无需改代码。
- **关联**:`ProfileProperties` / `ProfilePolicy` / `PhotoService.ensureWithinPhotoLimit`。
## OQ-MATCH-001 · 推荐最低评分阈值最终采用多少?
- **状态**:TBD
- **当前技术默认**:`matching.recommendation.minScore = 60`(`match.default-score-threshold`)
- **说明**:60 **不代表产品正式确认**。阈值已配置化;推荐记录自 V050 起携带
`threshold_snapshot` + `rule_version`,未来 60→65 可追溯历史推荐依据。
前端不得把 score/threshold 包装为「匹配成功率 / 合适概率」等对外承诺。
- **关联**:`MatchRuleConfigProperties` / `MatchingPolicy` / V050。
## OQ-LOCAL-ELIG-001 · 本地资格佐证文件保留期限?
- **状态**:TBD(需合规审核)
- **当前技术默认**:`features.localEvidenceRetentionDays = 365`(可配置,非永久)
- **说明**:与「注销后 36 个月数据保留」(LOCKED)是**两套独立机制**。
配套清理作业尚未实现(已挂 Phase 22 运维任务,Phase-04 报告 :46 登记)。
## OQ-SERVICE-LOC-001 · 善缘服务站正式开放时间?
- **状态**:TBD
- **当前实现**:`service_locations.opening_hours_text` 自由文本(数据驱动、非硬编码),
种子值「周一至周五 9:00-17:00 / 周六 9:00-12:00」。属产品文案决策,挂起不动代码。
## OQ-COUNSEL-001 · 咨询人员实际资质要求 / 预约时段规则?
- **状态**:TBD
- **当前实现**:代码中**无资质字段/校验**(现状即「无资质要求」安全默认);预约时段为自由输入
+ 运营手工确认(无自动时段校验,不违反 AGENTS #12)。未来需资质/自动时段才需产品出规则并配置化。
## OQ-BANNER-001 · Banner 最大活跃数量?
- **状态**:TBD(**真缺口**)
- **当前实现**:代码**无**该限制,仅 demo seed 里一个从未被读取的死值 `banner.maxActiveCount='5'`
(`system_configs` 为死表,0 个 Java 读取点)。需产品定值后**实现** active-count 校验。
## OQ-ANALYTICS-001 · 有效交友匹配正式报送口径?
- **状态**:TBD
- **当前实现**:`match.effective` 为 `PROVISIONAL` 保守近似(`min(有真人消息会话, Match 总数)`),
文档已标「禁止对外」。建议口径(Mutual Match + Two-Way Chat)未实现;升 `OFFICIAL` 前需产品裁决。
## OQ-THIRD-PARTY-* · 第三方开放 / 平台化遗留(7 项)
- **状态**:TBD(范围扩张,需产品决策,本轮未擅自实施)
- 详见 `PENDING_DECISIONS.md`「第三方开放 / 平台化遗留待决策项」:第三方凭据机制、限流是否真实生效、
OpenAPI 对外发布面、`POST /activities/{id}/interests` 语义、第三方调用审计与配额计量、
敏感字段脱敏边界(第三方场景)、幂等键 TTL 是否按调用方分级。
---
*最后更新: 2026-09-20 — 登记 OQ-IDENTITY/PROFILE/MATCH-001 及本地资格保留期、服务站时间、咨询资质、Banner 数量、报送口径、第三方开放遗留。*