Răsfoiți Sursa

docs(api): 补充家庭成员切换/回收箱接口文档

Sisyphus 1 săptămână în urmă
părinte
comite
6b17e8719d

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

@@ -369,7 +369,7 @@
 | `2026-08-31-coupon-family-based-design.md` | 🟡 设计稿 | 优惠券全链路改为家庭维度(新建 family_coupon / family_coupon_grant_log 表,6 条发放路径全部改家庭,消费/核销同步;API 路径与响应字段保持不变) |
 | `2026-08-31-self-check-reminder-design.md` | 🟡 设计稿(15 天复检周期 + 首页入口显示自检分数 + 题目轮换 + 后端忽略记录,纯设计方案) | 五维家庭自检 15 天复检周期与题目轮换设计 |
 | `2026-08-31-self-check-ai-integration-design.md` | 🟡 设计稿(P0-1 纯AI替换静态建议 + P0-2 用户点击生成健康计划 + P1-1 历史趋势AI解读 + P1-2 Chat上下文注入,P2延后) | 五维家庭自检 AI 结合设计 |
-| `api/API_REFERENCE.md` | 🟢 已建立(2026-08-18;200+ 接口清单;废弃接口标注;新增接口检查流程) | 后台接口参考文档 |
+| `api/API_REFERENCE.md` | 🟢 已建立(2026-08-18;200+ 接口清单;废弃接口标注;新增接口检查流程;2026-09-06 补充家庭成员切换/回收箱接口:`/leave`、`/kick` 回收箱分流、`/recycle`) | 后台接口参考文档 |
 
 ### 实施计划(plans/)
 

+ 91 - 0
docs/superpowers/api/API_REFERENCE.md

@@ -163,6 +163,8 @@ find cfc-backend/src/main/java -name "*XxxService.java" -o -name "*XxxController
 | `POST /api/family/member/list` | 成员列表(统一入口) | — |
 | `POST /api/family/member/switch` | 切换成员视角 | — |
 | `POST /api/family/member/kick` | 移除成员 | — |
+| `POST /api/family/member/leave` | 主动退出家庭(微信用户;创建者需先转让管理员) | — |
+| `POST /api/family/member/recycle` | 从回收箱回收成员(管理员操作) | — |
 | `POST /api/family/member/update` | 更新成员信息 | — |
 | `POST /api/family/member/editable` | 检查是否可编辑 | — |
 | `POST /api/family/member/logs` | 成员变更日志 | — |
@@ -182,6 +184,95 @@ find cfc-backend/src/main/java -name "*XxxService.java" -o -name "*XxxController
 | `POST /api/family/invite/validate-family-code` | **验证家庭短邀请码(落地页展示用,不创建请求)** | `inviteCode` |
 | `POST /api/family/invite/bind-inviter` | **绑定家庭邀请人(仅首次注册调用)** | `familyInviteCode` |
 
+### 4.2 Family Member 接口详细(切换/回收箱)
+
+#### `POST /api/family/member/leave` — 主动退出家庭
+
+**说明**:微信登录用户主动退出当前家庭,回到自己的初始家庭(自己创建的家庭 `families.creator_id = userId`);若无初始家庭则自动创建新家庭。退出时成员资产(测评/报告/能量值/档案属性)随成员迁移到目标家庭,CF 值(`system_points`)清零丢弃留在原家庭。
+
+**约束**:
+- 仅微信登录用户可退出(`openid` 非 `phone:` 前缀);非微信用户调用返回错误
+- 家庭创建者禁止退出,需先通过 `POST /api/family/invite/transfer-admin` 转让管理员
+- 退出后该用户自动归属初始家庭(或新建家庭),不会处于"无家庭"状态
+
+**请求体**:无(空 body 或 `{}`)
+
+**响应**:
+```json
+{
+  "code": 200,
+  "message": "退出成功",
+  "data": null
+}
+```
+
+**错误码**:
+| code | message | 处理建议 |
+|------|---------|----------|
+| 500 | 您是家庭创建者,请先转让管理员权限后再退出 | 先转让管理员 |
+| 500 | 非微信登录用户不能自主退出家庭 | 非微信用户不支持主动退出 |
+| 500 | 用户未加入家庭 / 家庭不存在 / 未找到该用户的家庭成员记录 | 提示用户状态异常 |
+
+---
+
+#### `POST /api/family/member/kick` — 移除成员(含回收箱分流)
+
+**说明**:家庭管理员将成员移出家庭。行为按成员类型分流:
+- **微信登录用户**:资产迁移回其初始家庭(无则自动创建),CF 值(`system_points`)随成员带走,同时收回该家庭发放给该成员的人口券(POPULATION,来源 `member:{id}`,仅作废 AVAILABLE 状态的券)
+- **非微信登录用户**:进入回收箱(`family_members.status = recycled`),`users.family_id` 置空,资产保留在原家庭记录上,后续可通过 `POST /api/family/member/recycle` 回收
+- **无关联用户的手动成员**:直接删除记录
+
+**约束**:仅家庭创建者可踢出;不能踢出家庭创建者本人。
+
+**请求体**:
+```json
+{
+  "memberId": 12345
+}
+```
+
+**响应**:
+```json
+{
+  "code": 200,
+  "message": "踢出成功",
+  "data": null
+}
+```
+
+---
+
+#### `POST /api/family/member/recycle` — 从回收箱回收成员
+
+**说明**:目标家庭管理员将回收箱中的成员(非微信用户,`status=recycled`)重新加入指定家庭,资产(测评/报告/能量值/档案属性)迁移到目标家庭,关联用户 `family_id` 归位到目标家庭。
+
+**约束**:仅目标家庭创建者可回收;成员必须在回收箱中。
+
+**请求体**:
+```json
+{
+  "memberId": 12345,
+  "targetFamilyId": 67890
+}
+```
+
+**响应**:
+```json
+{
+  "code": 200,
+  "message": "回收成功",
+  "data": null
+}
+```
+
+**错误码**:
+| code | message | 处理建议 |
+|------|---------|----------|
+| 500 | 该成员不在回收箱中 | 仅回收箱成员可回收 |
+| 500 | 只有目标家庭管理员才能回收成员 | 权限不足 |
+
+---
+
 ### 4.2 Family Invite 接口详细
 
 #### `POST /api/family/invite/request-join-by-code` — 申请加入家庭