Просмотр исходного кода

docs: spec self-review - 统一 selectAndClose 选择逻辑 + 回填字段明确化

asus 1 месяц назад
Родитель
Сommit
38bf59f937

+ 3 - 1
docs/superpowers/PROJECT-OVERVIEW.md

@@ -331,7 +331,9 @@
 | `2026-07-30-service-role-apply-design.md` | ✅ 已实施 | 服务角色统一申请(规划师/营养师/管家/服务商/文章管理员/活动提供商) |
 | `2026-07-31-compare-table-mobile-redesign.md` | 🟡 设计稿 | 四大饮水方案对比 — 移动端轮播式重设计 |
 | `2026-08-02-virtual-payment-design.md` | 🟢 已实施(offerId/签名按官方 signData 修正) | 小程序虚拟支付合规接入(测评/会员/订阅)|
-| `2026-08-04-registration-profile-backfill-design.md` | ✅ 已实施(12 Tasks 全栈完成) | 新用户注册引导 + 个人信息按需补充/回写 |
+| `2026-08-04-registration-profile-backfill-design.md` | 🟡 设计稿 | 新用户注册引导 + 个人信息按需补充/回写 |
+| `2026-08-04-report-confirm-member-selector-design.md` | 🟡 设计稿 | 健康报告确认页被检测人选择面板整合(基本信息内选/添被检人) |
+| `2026-08-04-family-challenge-custom.md` | 🟢 已实施 | 家庭挑战自定义管理(创建/编辑/删除/模板) |
 
 ### 实施计划(plans/)
 

+ 5 - 3
docs/superpowers/specs/2026-08-04-report-confirm-member-selector-design.md

@@ -33,15 +33,16 @@
 ```
 ▼ 选择面板(浅色背景卡片)
 ├── 候选匹配列表(candidates 存在时显示顶部)
-│    └── 复用 .candidate-item / score-bar / selectCandidate()
+│    └── 复用 .candidate-item / score-bar 样式,点击 → selectAndClose(cand)
 ├── 全量家庭成员列表(candidates 为空或"查看全部"时)
-│    └── 复用 .member-item / selectMember()
+│    └── 复用 .member-item 样式,点击 → selectAndClose(member)
 └── 新建成员入口
      └── "不在列表中?新建家庭成员" → 内嵌展开表单
          └── 复用 .gender-selector / doAutoCreate()
 ```
 
-- 选中候选/成员 → `selectedMemberId` 更新 + 回填昵称/性别/年龄 + 自动收起面板
+- 候选/成员点击统一走新方法 `selectAndClose(member)`:设置 `selectedMemberId`(`member.id || member.userId`)→ 回填昵称/性别/年龄 → 自动收起面板
+- `selectCandidate()` / `selectMember()` 随独立卡片一并移除(无其他调用点),其选中逻辑并入 `selectAndClose`
 - 新建成功 → `createdMemberId` 更新 + 回填 + 收起
 - 面板始终可点击(`needBind=false` 也允许改选,改选后覆盖自动匹配)
 
@@ -58,6 +59,7 @@
 | 新增 `showMemberPanel: false` | 控制面板展开/收起 |
 | `loadFamilyMembers()` | onLoad 时**始终调用**(不再仅 `needBind` 时) |
 | 新增 `selectedMemberObj` | 从 familyMembers/candidates 查找选中成员,用于回填昵称/性别/年龄 |
+| `selectAndClose(member)` | 回填:`extractedName = member.nickname`、`extractedGender = member.gender`、`extractedAge = member.age`(成员无对应字段时保留原值)→ 更新 `selectedMemberObj` → 收起面板 |
 | `canConfirm` | 不变(needBind 时必须有 selectedMemberId/createdMemberId) |
 | `doConfirm` | 不变(subjectId 优先级:selectedMemberId > createdMemberId > matchedMemberId > memberId) |
 | 新增 `selectAndClose(member)` | 选中后回填 + 收起面板 |