Files
danyang-match/docs/PENDING_DECISIONS.md
T
WorkBuddy 438b38d121 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
2026-09-21 02:05:15 +08:00

134 lines
9.2 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.
# 待确认决策项 — PENDING_DECISIONS.md
> 以下参数尚未由产品负责人确认。已确认项请参见已确认列表。
>
> **治理结构(V1.0.1 配置与规则纠偏,2026-09-20)**:本文件不再同时承担「已确认决策 / 技术默认值 / 待确认事项」。
> 已拆分到 `docs/governance/`:**配置登记表** `config-register.md`(canonical 键 + 分类 + 是否产品确认)、
> **开放问题** `open-questions.md`(OQ-*,待产品裁决)、**决策登记表** `decision-register.md`(仅已确认项)。
> 本文件保留历史待确认区与「已确认列表」,并与上述三表互链;**矛盾以 governance 三表为准**。
---
## V1.1 新增待确认事项
### 人脸核验
| 决策项 | 选项 | 状态 |
|--------|------|------|
| 人脸核验是否V1.1首发强制 | 否(Feature Flag 控制,`identity.liveness.enabled` 默认 `false`) | ⏳ 待确认(CONFIG/TBD,**非 V1 强制**;本轮已接 `IdentityPolicy` 真实业务判定点,见 config-register / OQ-IDENTITY-001) |
| 人脸核验 Provider | 待定(`identity.liveness.provider` 默认 `none`) | ⏳ 待确认(选型未定,见 OQ-IDENTITY-001) |
### 本地资格
| 决策项 | 选项 | 状态 |
|--------|------|------|
| 本地资格佐证触发策略 | 全部用户 / 按需触发 / 特定场景 | ⏳ 待确认 |
| 本地资格文件保留期限 | 待定(需合规审核) | ⏳ 待确认 |
### 婚恋咨询
| 决策项 | 选项 | 状态 |
|--------|------|------|
| 咨询服务人员实际资质要求 | 待定 | ⏳ 待确认 |
| 服务预约时段规则 | 待定 | ⏳ 待确认 |
| 是否支持电话预约方式 | FALSE(已确认) | ✅ 已完成 |
### 服务站
| 决策项 | 选项 | 状态 |
|--------|------|------|
| 服务站正式开放时间 | 待定 | ⏳ 待确认 |
### Banner/推荐
| 决策项 | 技术默认值 | 状态 |
|--------|-----------|------|
| Banner最大活跃数量 | 待定(**真缺口**:代码无此限制,仅 seed 死值 5) | ⏳ 待确认(OQ-BANNER-001,需产品定值后实现 active-count 校验) |
| 推荐每日数量 | 6人 | ✅ 已完成(LOCKED,`match.default-daily-limit`) |
| 推荐阈值/最终权重 | **技术默认 60,未产品确认**(`matching.recommendation.minScore`,可配置 + V050 阈值快照) | ⏳ 待确认(OQ-MATCH-001;消解本文 :「阈值60分已确认」矛盾 —— 60 只是默认值) |
| Pass冷却时间 | 180天 | ✅ 已完成(LOCKED,`match.default-cooldown-days`) |
| 照片上限 | **技术默认 6,未产品确认**(`profile.photo.maxCount`,已配置化 + 服务器端强校验) | ⏳ 待确认(OQ-PROFILE-001;原标「✅ 已确认 6」有误,6 非产品正式确认值) |
### 数据统计
| 决策项 | 选项 | 状态 |
|--------|------|------|
| 有效交友匹配正式报送口径 | 待定(建议:Mutual Match + Two-Way Chat) | ⏳ 待确认 |
### 申诉
| 决策项 | 选项 | 状态 |
|--------|------|------|
| 申诉是否V1.1首发 | 否(Feature Flag 预留) | ✅ 已完成 |
---
## 已确认决策列表(不得再放 Pending)
以下事项已由产品负责人确认,进入正式开发基线:
| 类别 | 确认项 |
|------|--------|
| 品牌 | 善缘丹阳品牌正式启用 |
| 首页 | Banner运营 + 8个核心入口 + 固定顺序 |
| 数据保留 | **注销后用户数据保留不得低于 36 个月**(2026-09-19 产品确认;到期后经人工审核匿名化清除;保留期配置化 `account.data-retention-months`,默认 36;已落地 V049 `users.closed_at` + `DataRetentionService` + `account.retention.purge` 权限。隐私政策 §3.3 与 PIA §8 原文「30 天内删除」已同步修订) |
| 服务站 | 万善公园婚姻登记处为固定阵地 |
| 服务 | 婚恋咨询 + 婚前辅导进入V1.1首发 |
| 内容 | 婚恋课堂 + 婚恋反诈进入V1.1首发 |
| 活动 | 多类型公益活动 + 活动双向沟通确认进入V1.1首发 |
| 核心规则 | Required不可放宽 / Mutual后才Chat / Block优先 |
| 推荐 | 每日6人(LOCKED)/ Pass冷却180天(LOCKED);**阈值60分仅为技术默认值,未产品确认**(OQ-MATCH-001) |
| 资料 | 兴趣标签上限8个 / 自我介绍500字符(LOCKED);**照片上限6张仅为技术默认值,未产品确认**(OQ-PROFILE-001) |
| 隐私 | Privacy默认全TRUE |
| 活动规则 | 需审核 / 男女名额独立配置 / 互选最大3人 / 截止后48小时 |
| 关系状态 | searching/getting_to_know/paused/matched_successfully/service_exited |
| 推荐重置 | 每日00:00 Asia/Shanghai |
---
*最后更新: 2026-09-09 — V1.1 基线阶段,共 13 项待确认,已确认 16 项*
---
## V1.1 历史部署声明(复验处置结果,2026-09-18 回写)
以下记录只说明相关代码、配置或迁移曾被创建。重新审查曾发现部分声明与实际运行不一致,故在对应 Phase 重新通过前不得称为“已上线”。
> **2026-09-18 文档治理**:按各 Phase Recovery 报告的实测证据回写处置结果 ——「待 Phase XX 复验」不得长期停留为悬空状态。
| 决策项 | 确认值 | 处置结果(2026-09-18 回写) |
|--------|--------|------|
| 首页8核心入口固定顺序 | 找对象/公益红娘/公益活动/婚恋咨询/婚恋课堂/婚前辅导/婚恋反诈/善缘服务站 | ✅ 已关闭(Phase 07 业务复验 2026-09-13;UI 首批 11 页 2026-09-16 通过用户验收) |
| Banner仅内部跳转 | target_type CHECK约束已生效 | ✅ 已关闭(Phase 19 复验 2026-09-17;外链校验 + 软删过滤已修) |
| 活动互选二阶段同意 | 互选→双方确认→Match/Conversation | ✅ 已关闭(Phase 16 复验 2026-09-17;**原「双确认后根本不建 Match/会话」Gate 缺陷已修**) |
| Counselor只能访问Assigned Service | Assigned DataScope | ✅ 已关闭(Phase 13A 复验 2026-09-17;INV-012 守卫 + 权限矩阵守卫) |
| ContentEditor零用户数据权限 | 默认无user.view权限 | ✅ 已关闭(权限矩阵守卫由硬编码改为**扫描全部迁移**,消除后续迁移权限变更隐形) |
| ServiceStationOperator数据范围 | 仅服务站相关操作 | ✅ 已关闭(Phase 19 复验 2026-09-17;**原类级 `view` 兜底致越权写已修**,权限下沉方法级并纳入覆盖守卫) |
| 本地资格与实名认证分离 | 独立表、独立流程 | ✅ 已关闭(Phase 04/05 复验 2026-09-12) |
| 运营商密码登录 | 凭证由本地环境变量或安全 Seed 提供 | ✅ 纪律项(非待办):不在文档保存密码,继续由环境变量/安全 Seed 提供 |
| Feature Flags灰度控制 | 配置项存在 | ⚠️ **部分关闭**(Phase 22 复验 2026-09-18):`FeatureFlagController` 的 2 处真实缺陷已修;但 **T01~T05 与 T07 为「死配置」——配置暴露但从未被业务读取**,已如实降级登记,交各模块 Phase 处理 |
| V1.1仪表盘 | 统计接口存在 | ✅ 已关闭(Phase 20 复验 2026-09-17;**D12 口径造假/死代码/系统性软删过滤修复 45 处**) |
---
## 第三方开放 / 平台化遗留待决策项(2026-09-18 补登)
> 来源:`docs/HTTP语义检修报告-2026-09-18.md` 第六节「遗留:真正开放第三方还需要什么」+
> `docs/幂等键检修报告-2026-09-18.md` 第七节「遗留与需要留意」。
> 均属**范围扩张**,需产品决策 —— 本轮及此前检修均**未擅自实施**。
| 决策项 | 现状(已就位部分) | 待确认 |
|---|---|---|
| 第三方凭据机制 | 目前只有微信登录与运营账号登录;第三方**无标准途径获取 token** | 是否定义 API Key / OAuth Client Credentials,及其**权限范围与配额** |
| 限流是否真实生效 | `RATE_LIMITED` 业务码与 429 映射已就位 | 限流本身**是否启用、阈值多少**(本轮未验证) |
| OpenAPI 文档对外发布 | `OpenApiConfig` 已存在 | 是否对外开放、**开放哪些端点** |
| `POST /activities/{id}/interests` 语义 | `API_INVENTORY` 曾承诺、后端**从未实现**;已更正文档并删除指向 404 的前端死代码 | 该端点**是否需要在 V1.1 内真正实现**(涉及活动意向的产品语义) |
| 第三方调用审计与配额计量 | 内部角色的敏感访问审计已就位(Phase 17) | 第三方需**独立的调用审计与配额计量** |
| 敏感字段脱敏边界(第三方场景) | INV-011 等约束面向内部角色 | 第三方场景需**重新界定**脱敏边界 |
| 幂等键 TTL 语义 | `idempotency_records` 有 TTL(默认 86400s)+ `idx_idempotency_expires` 清理扫描 | 需知悉:**清理后同一把键会被当作新操作** —— 幂等保证的是「短时间内不重复」,**不是「永久去重」**(永久去重仍由业务层唯一约束承担)。若开放第三方,需决定**键的 TTL 是否按调用方分级** |
---
*最后更新: 2026-09-20 — V1.0.1 配置与规则纠偏:消解「推荐阈值 60 已确认 / 待定」矛盾(60 为技术默认,OQ-MATCH-001);照片上限 6 由「已确认」降级为「技术默认 / 未确认」(OQ-PROFILE-001);活体核验补 CONFIG/TBD 并接 IdentityPolicy 真实判定点(OQ-IDENTITY-001);拆分出 docs/governance/(config-register / open-questions / decision-register)。*