用户使用流程图 — 家庭管理
端口说明: 📱 小程序 | 🖥 管理后台 | 📋 规划师端 | ⚙️ 系统自动
分层说明: 🏠 页面 → 🔗 API → ⚙️ Service → 📦 数据实体
flowchart TD
%% ============ 颜色定义 ============
classDef page fill:#e3f2fd,stroke:#1565c0,stroke-width:2px
classDef api fill:#fff3e0,stroke:#f57c00,stroke-width:1px
classDef service fill:#e8f5e9,stroke:#388e3c,stroke-width:1px
classDef data fill:#f3e5f5,stroke:#7b1fa2,stroke-width:1px
classDef external fill:#fce4ec,stroke:#d32f2f,stroke-width:1px,stroke-dasharray:3 2
classDef actor fill:#e1f5fe,stroke:#0288d1,stroke-width:2px,stroke-dasharray:5 3
%% ============ 角色 ============
A0(("👤 家长")):::actor
B0(("👶 孩子")):::actor
C0(("📋 规划师")):::actor
%% ================================================================
%% 阶段一:家庭创建与加入
%% ================================================================
subgraph 阶段一[阶段一:家庭创建与加入]
P1["🏠 小程序:家庭首页"]:::page
P1 -->|"选择操作"| P1_choice{"是否有家庭?"}:::page
P1_choice -->|"无,创建新家庭"| P1a["🏠 创建家庭页"]:::page
P1a -->|"家庭名称"| A1["🔗 POST /api/family/user/create-family"]:::api
A1 -->|"用户ID, 家庭名称"| S1["⚙️ UserService.createFamilyForUser()"]:::service
S1 -->|"写入一条家庭记录,关联用户"| D1["📦 families + users 表"]:::data
P1_choice -->|"有,加入其他家庭"| P1b["🏠 输入邀请码页"]:::page
P1b -->|"邀请码"| A2["🔗 POST /api/family/user/join-family"]:::api
A2 -->|"用户ID, 邀请码"| S2["⚙️ UserService.joinFamily()"]:::service
S2 -->|"更新用户家庭ID"| D2["📦 users 表(更新familyId)"]:::data
D1 -->|"家庭创建成功"| P2["🏠 家庭管理页"]:::page
P2 -->|"生成邀请二维码"| A3["🔗 POST /api/family/invite/qrcode"]:::api
A3 -->|"用户ID"| S3["⚙️ QrCodeService.generateQrCodeBase64()"]:::service
S3 -->|"family.inviteCode"| D3["📦 families 表(读取邀请码)"]:::data
P2 -->|"生成邀请令牌"| A4["🔗 POST /api/family/invite/generate"]:::api
A4 -->|"用户ID, 家庭ID"| S4["⚙️ FamilyInvitationService.generateInvitation()"]:::service
S4 -->|"写入邀请令牌记录"| D4["📦 family_invitations 表"]:::data
P2 -->|"校验邀请令牌"| A5["🔗 POST /api/family/invite/validate"]:::api
A5 -->|"token"| S5["⚙️ FamilyInvitationService.validateInvitation()"]:::service
S5 -->|"令牌有效期+家庭信息"| D4
P2 -->|"通过邀请码接受邀请"| A6["🔗 POST /api/family/invite/accept-by-code"]:::api
A6 -->|"用户ID, 邀请码"| S6["⚙️ FamilyInviteController.acceptByCode()"]:::service
S6 -->|"查询家庭+更新用户familyId"| D2
P2 -->|"接受邀请令牌"| A7["🔗 POST /api/family/invite/accept"]:::api
A7 -->|"用户ID, token, 家庭角色, 是否合并"| S7["⚙️ FamilyInvitationService.acceptInvitation()"]:::service
S7 -->|"加入家庭/合并家庭"| D2
P2 -->|"查询家庭状态"| A8["🔗 POST /api/family/invite/check-family"]:::api
A8 -->|"用户ID"| S8["⚙️ FamilyInvitationService.checkUserFamilyStatus()"]:::service
S8 -->|"用户家庭信息"| D1
end
%% ================================================================
%% 阶段二:家庭成员管理
%% ================================================================
subgraph 阶段二[阶段二:家庭成员管理]
D1 -->|"家庭ID"| P3["🏠 家庭成员管理页"]:::page
P3 -->|"添加成员"| A9["🔗 POST /api/family/member/add"]:::api
A9 -->|"用户ID, 昵称, 电话, 头像, 性别, 生日"| S9["⚙️ FamilyMemberService.addMember()"]:::service
S9 -->|"写入一条家庭成员记录"| D5["📦 family_members 表"]:::data
P3 -->|"成员列表"| A10["🔗 POST /api/family/member/list"]:::api
A10 -->|"用户ID"| S10["⚙️ FamilyMemberService.listMembers()"]:::service
S10 -->|"该家庭所有成员"| D5
P3 -->|"更新成员信息"| A11["🔗 POST /api/family/member/update"]:::api
A11 -->|"用户ID, memberId, 昵称/电话/头像"| S11["⚙️ FamilyMemberService.updateMember()"]:::service
S11 -->|"更新成员记录"| D5
P3 -->|"切换成员视图"| A12["🔗 POST /api/family/member/switch"]:::api
A12 -->|"用户ID, memberId"| S12["⚙️ FamilyMemberService.switchToMember()"]:::service
S12 -->|"切换上下文"| D5
P3 -->|"检查可编辑性"| A13["🔗 POST /api/family/member/editable"]:::api
A13 -->|"用户ID, memberId"| S13["⚙️ FamilyMemberService.isEditable()"]:::service
S13 -->|"布尔值"| D5
P3 -->|"踢出成员"| A14["🔗 POST /api/family/member/kick"]:::api
A14 -->|"用户ID, memberId"| S14["⚙️ FamilyMemberService.kickMember()"]:::service
S14 -->|"删除成员记录"| D5
P3 -->|"变更日志"| A15["🔗 POST /api/family/member/logs"]:::api
A15 -->|"用户ID, memberId"| S15["⚙️ FamilyMemberService.getMemberLogs()"]:::service
S15 -->|"操作日志列表"| D6["📦 family_member_logs 表"]:::data
P3 -->|"可见成员列表"| A16["🔗 POST /api/family/user/members/visible"]:::api
A16 -->|"用户ID"| S16["⚙️ UserService.getVisibleMembers()"]:::service
S16 -->|"对当前用户可见的成员"| D5
P3 -->|"更新可见性"| A17["🔗 POST /api/family/user/members/update-visibility"]:::api
A17 -->|"用户ID, memberId, memberType, showToFamily"| S17["⚙️ UserService.updateVisibility()"]:::service
S17 -->|"更新成员可见性标记"| D5
end
%% ================================================================
%% 阶段三:家庭设置
%% ================================================================
subgraph 阶段三[阶段三:家庭设置]
D5 -->|"成员列表"| P4["🏠 家庭设置页"]:::page
P4 -->|"创建孩子账号"| A18["🔗 POST /api/family/user/children"]:::api
A18 -->|"用户ID, 孩子昵称/性别/生日"| S18["⚙️ UserService.createFamilyMember()"]:::service
S18 -->|"写入孩子记录"| D5
P4 -->|"孩子列表"| A19["🔗 POST /api/family/user/children/list"]:::api
A19 -->|"用户ID"| S19["⚙️ UserService.getFamilyMemberren()"]:::service
S19 -->|"孩子信息列表"| D5
P4 -->|"更新孩子信息"| A20["🔗 POST /api/family/user/children/update"]:::api
A20 -->|"用户ID, childId, 昵称/性别/生日"| S20["⚙️ UserService.updateFamilyMember()"]:::service
S20 -->|"更新孩子记录"| D5
P4 -->|"家庭成员列表"| A21["🔗 POST /api/family/user/family-members"]:::api
A21 -->|"用户ID"| S21["⚙️ FamilyUserController.getFamilyMembers()"]:::service
S21 -->|"家长列表+孩子列表"| D1
P4 -->|"踢出用户(管理员)"| A22["🔗 POST /api/family/user/kick"]:::api
A22 -->|"用户ID, targetUserId"| S22["⚙️ FamilyUserController.kickMember()"]:::service
S22 -->|"清空目标用户familyId"| D2
P4 -->|"转让管理员"| A23["🔗 POST /api/family/invite/transfer-admin"]:::api
A23 -->|"用户ID, newAdminId"| S23["⚙️ FamilyInvitationService.transferAdmin()"]:::service
S23 -->|"更新家庭创建者ID"| D1
P4 -->|"吊销邀请"| A24["🔗 POST /api/family/invite/revoke"]:::api
A24 -->|"用户ID, invitationId"| S24["⚙️ FamilyInvitationService.revokeInvitation()"]:::service
S24 -->|"更新邀请令牌状态"| D4
P4 -->|"用户信息"| A25["🔗 POST /api/family/user/info"]:::api
A25 -->|"用户ID"| S25["⚙️ UserService.getUserInfo()"]:::service
S25 -->|"用户完整信息"| D2
P4 -->|"更新用户信息"| A26["🔗 POST /api/family/user/update"]:::api
A26 -->|"用户ID, 昵称/头像"| S26["⚙️ UserService.updateUserInfo()"]:::service
S26 -->|"更新用户记录"| D2
end
%% ================================================================
%% 阶段四:规划师绑定
%% ================================================================
subgraph 阶段四[阶段四:规划师绑定]
D1 -->|"家庭信息"| P5["🏠 规划师绑定管理页"]:::page
P5 -->|"待审批列表"| A27["🔗 POST /api/family/teacher-bindings/pending"]:::api
A27 -->|"用户ID"| S27["⚙️ TeacherFamilyBindingRequestService.getPendingByFamily()"]:::service
S27 -->|"待审批绑定申请列表"| D7["📦 teacher_family_binding_requests 表"]:::data
P5 -->|"审批通过"| A28["🔗 POST /api/family/teacher-bindings/approve"]:::api
A28 -->|"用户ID, requestId"| S28["⚙️ TeacherFamilyBindingRequestService.approve()"]:::service
S28 -->|"更新申请状态+建立绑定"| D7
P5 -->|"审批拒绝"| A29["🔗 POST /api/family/teacher-bindings/reject"]:::api
A29 -->|"用户ID, requestId, reason"| S29["⚙️ TeacherFamilyBindingRequestService.reject()"]:::service
S29 -->|"更新申请状态为拒绝"| D7
P5 -->|"已绑定规划师列表"| A30["🔗 POST /api/bind/guides"]:::api
A30 -->|"用户ID"| S30["⚙️ GuideFamilyService.getGuidesByFamily()"]:::service
S30 -->|"该家庭绑定的规划师"| D8["📦 guide_families 表"]:::data
P5 -->|"解除绑定"| A31["🔗 POST /api/bind/unbind"]:::api
A31 -->|"用户ID, id"| S31["⚙️ GuideFamilyService.unbindAndGet()"]:::service
S31 -->|"更新绑定状态+发送通知"| D8
D7 -->|"绑定申请"| P6["📋 规划师端:绑定管理"]:::page
P6 -->|"我的请求"| A32["🔗 POST /api/family/teacher-bindings/my-requests"]:::api
A32 -->|"用户ID"| S32["⚙️ TeacherFamilyBindingRequestService.getByTeacher()"]:::service
S32 -->|"该规划师的所有申请"| D7
P6 -->|"撤销申请"| A33["🔗 POST /api/family/teacher-bindings/cancel"]:::api
A33 -->|"用户ID, requestId"| S33["⚙️ TeacherFamilyBindingRequestService.cancel()"]:::service
S33 -->|"更新申请状态为取消"| D7
P6 -->|"申请绑定家庭"| A34["🔗 POST /api/family/guide-bind"]:::api
A34 -->|"规划师ID, 邀请码, 留言"| S34["⚙️ TeacherFamilyBindingRequestService.createRequest()"]:::service
S34 -->|"创建绑定申请记录"| D7
P6 -->|"生成绑定邀请"| A35["🔗 POST /api/guide/bind/invite"]:::api
A35 -->|"规划师ID"| S35["⚙️ BindInviteService.generateInvite()"]:::service
S35 -->|"写入绑定邀请记录"| D9["📦 bind_invites 表"]:::data
P5 -->|"确认绑定邀请"| A36["🔗 POST /api/bind/accept"]:::api
A36 -->|"用户ID, guideId, serviceType, servicePrice"| S36["⚙️ GuideFamilyService.confirmBind()"]:::service
S36 -->|"写入guide_families绑定记录"| D8
end
%% ================================================================
%% 阶段五:关系问卷与质量分析
%% ================================================================
subgraph 阶段五[阶段五:关系问卷与质量分析]
D5 -->|"成员列表"| P7["🏠 关系问卷页"]:::page
P7 -->|"AI生成问卷"| A37["🔗 POST /api/family/questionnaire/generate"]:::api
A37 -->|"目标成员ID, 关系类型"| S37["⚙️ RelationshipQuestionnaireService.generateQuestionnaire()"]:::service
S37 -->|"AI生成问卷内容"| D10["📦 questionnaire_snapshots 表"]:::data
P7 -->|"提交问卷答案"| A38["🔗 POST /api/family/questionnaire/submit"]:::api
A38 -->|"问卷快照ID, 答案列表"| S38["⚙️ RelationshipQuestionnaireService.submitQuestionnaire()"]:::service
S38 -->|"写入问卷响应"| D11["📦 relationship_questionnaire_responses 表"]:::data
P7 -->|"问卷历史"| A39["🔗 POST /api/family/questionnaire/history/{memberId}"]:::api
A39 -->|"用户ID, memberId"| S39["⚙️ RelationshipQuestionnaireService.getHistory()"]:::service
S39 -->|"该成员问卷历史列表"| D11
P7 -->|"问卷快照"| A40["🔗 POST /api/family/questionnaire/snapshot/{memberId}"]:::api
A40 -->|"用户ID, memberId"| S40["⚙️ RelationshipQuestionnaireService.getSnapshot()"]:::service
S40 -->|"最新问卷快照"| D10
D10 -->|"问卷结果"| P8["🏠 关系质量页"]:::page
P8 -->|"计算评分"| A41["🔗 POST /api/family/relationship/calculate"]:::api
A41 -->|"memberId"| S41["⚙️ RelationshipQualityService.calculateScore()"]:::service
S41 -->|"写入评分结果"| D12["📦 relationship_scores 表"]:::data
P8 -->|"评分列表"| A42["🔗 POST /api/family/relationship/scores"]:::api
A42 -->|"用户ID, familyId"| S42["⚙️ RelationshipQualityService.getScores()"]:::service
S42 -->|"所有成员评分"| D12
P8 -->|"健康预警"| A43["🔗 POST /api/family/relationship/health-alerts"]:::api
A43 -->|"用户ID, familyId"| S43["⚙️ RelationshipQualityService.getHealthAlerts()"]:::service
S43 -->|"预警列表"| D12
P8 -->|"里程碑"| A44["🔗 POST /api/family/relationship/milestones"]:::api
A44 -->|"用户ID, familyId, daysAhead"| S44["⚙️ RelationshipQualityService.getMilestones()"]:::service
S44 -->|"即将到来的里程碑"| D12
end
%% ================================================================
%% 阶段六:互动记录
%% ================================================================
subgraph 阶段六[阶段六:互动记录]
D5 -->|"成员列表"| P9["🏠 互动记录页"]:::page
P9 -->|"互动类型"| A45["🔗 POST /api/family/interaction/types"]:::api
A45 -->|""| S45["⚙️ InteractionLogService.getInteractionTypes()"]:::service
S45 -->|"预定义的互动类型"| D13["📦 内存/配置类型数据"]:::data
P9 -->|"添加互动"| A46["🔗 POST /api/family/interaction/add"]:::api
A46 -->|"fromMemberId, toMemberId, type, content"| S46["⚙️ InteractionLogService.addInteraction()"]:::service
S46 -->|"写入互动记录"| D14["📦 interaction_logs 表"]:::data
P9 -->|"互动列表"| A47["🔗 POST /api/family/interaction/list"]:::api
A47 -->|"familyId, fromMemberId, toMemberId, 分页"| S47["⚙️ InteractionLogService.listInteractions()"]:::service
S47 -->|"分页互动记录"| D14
end
%% ================================================================
%% 角色关联
%% ================================================================
A0 -.- P1
A0 -.- P2
A0 -.- P3
A0 -.- P4
A0 -.- P5
A0 -.- P7
A0 -.- P8
A0 -.- P9
B0 -.- P3
C0 -.- P6
端点明细
家庭创建与加入
| 端点 |
说明 |
端口 |
请求数据 |
响应数据 |
POST /api/family/user/create-family |
创建新家庭 |
📱小程序 |
{name: "我的家庭"} |
{familyId} |
POST /api/family/user/join-family |
通过邀请码加入家庭 |
📱小程序 |
{inviteCode} |
{success} |
POST /api/family/invite/qrcode |
生成家庭邀请二维码 |
📱小程序 |
— (从token取userId) |
{inviteCode, familyName, qrCodeBase64, familyId} |
POST /api/family/invite/generate |
生成家庭邀请令牌+小程序码 |
📱小程序 |
— |
{token, qrCodeBase64, familyName, familyId} |
POST /api/family/invite/validate |
校验邀请令牌有效性 |
📱小程序 |
{token} |
{valid, familyId, familyName, ...} |
POST /api/family/invite/accept-by-code |
通过邀请码加入家庭 |
📱小程序 |
{inviteCode} |
"加入家庭成功" |
POST /api/family/invite/accept |
接受邀请令牌 |
📱小程序 |
{token, familyRole, mergeFamily} |
"加入家庭成功" |
POST /api/family/invite/check-family |
查询用户家庭状态 |
📱小程序 |
— |
{hasFamily, familyId, familyName, ...} |
家庭成员管理
| 端点 |
说明 |
端口 |
请求数据 |
响应数据 |
POST /api/family/member/add |
添加家庭成员 |
📱小程序 |
{nickname, phone, avatar, gender, birthday} |
FamilyMemberVO |
POST /api/family/member/list |
获取成员列表 |
📱小程序 |
— |
List<FamilyMemberVO> |
POST /api/family/member/switch |
切换到成员视图 |
📱小程序 |
{memberId} |
SwitchMemberVO |
POST /api/family/member/kick |
踢出成员 |
📱小程序 |
{memberId} |
"踢出成功" |
POST /api/family/member/update |
更新成员信息 |
📱小程序 |
{memberId, nickname, phone, avatar, gender, birthday} |
FamilyMemberVO |
POST /api/family/member/editable |
检查成员是否可编辑 |
📱小程序 |
{memberId} |
boolean |
POST /api/family/member/logs |
成员变更日志 |
📱小程序 |
{memberId} |
List<FamilyMemberLog> |
POST /api/family/user/members/visible |
可见成员列表 |
📱小程序 |
— |
List<FamilyMemberVO> |
POST /api/family/user/members/update-visibility |
更新成员可见性 |
📱小程序 |
{memberId, memberType, showToFamily} |
boolean |
家庭设置
| 端点 |
说明 |
端口 |
请求数据 |
响应数据 |
POST /api/family/user/info |
获取用户信息 |
📱小程序 |
— |
User对象 |
POST /api/family/user/update |
更新用户信息 |
📱小程序 |
{nickname, avatar, ...} |
boolean |
POST /api/family/user/children |
创建孩子账号 |
📱小程序 |
{nickname, gender, birthday, ...} |
FamilyMemberInfoDTO |
POST /api/family/user/children/list |
孩子列表 |
📱小程序 |
— |
List<FamilyMemberInfoDTO> |
POST /api/family/user/children/update |
更新孩子信息 |
📱小程序 |
{childId, nickname, gender, birthday, ...} |
boolean |
POST /api/family/user/family-members |
家庭成员完整列表(含家长) |
📱小程序 |
— |
{familyId, familyName, parents, children} |
POST /api/family/user/kick |
管理员踢出用户 |
📱小程序 |
{targetUserId} |
boolean |
POST /api/family/invite/transfer-admin |
转让家庭管理员 |
📱小程序 |
{newAdminId} |
"转让成功" |
POST /api/family/invite/revoke |
吊销邀请链接 |
📱小程序 |
{invitationId} |
"邀请已吊销" |
POST /api/family/user/switch-role |
切换用户角色 |
📱小程序 |
{role} |
新token |
POST /api/family/user/switch-back-to-parent |
切换回家长视图 |
📱小程序 |
— |
boolean |
POST /api/family/user/switch-back-verify |
密码校验后切换回家长 |
📱小程序 |
{password} |
boolean |
规划师绑定
| 端点 |
说明 |
端口 |
请求数据 |
响应数据 |
POST /api/family/teacher-bindings/pending |
待审批绑定列表 |
📱小程序 |
— |
List<TeacherFamilyBindingRequest> |
POST /api/family/teacher-bindings/approve |
审批通过 |
📱小程序 |
{requestId} |
"审批通过" |
POST /api/family/teacher-bindings/reject |
审批拒绝 |
📱小程序 |
{requestId, reason} |
"已拒绝" |
POST /api/family/teacher-bindings/my-requests |
规划师我的请求 |
📋规划师端 |
— |
List<TeacherFamilyBindingRequest> |
POST /api/family/teacher-bindings/cancel |
撤销申请 |
📋规划师端 |
{requestId} |
"已撤销" |
POST /api/family/guide-bind |
规划师申请绑定家庭 |
📋规划师端 |
{inviteCode, message} |
"申请已提交" |
POST /api/guide/bind/invite |
规划师生成绑定邀请 |
📋规划师端 |
— |
{token, ...} |
POST /api/guide/bind/validate |
校验绑定邀请令牌 |
📋规划师端 |
{token} |
{valid, guideInfo, ...} |
POST /api/bind/accept |
家长确认绑定规划师 |
📱小程序 |
{guideId, serviceType, servicePrice} |
boolean |
POST /api/bind/guides |
已绑定规划师列表 |
📱小程序 |
— |
List<{id, guideId, serviceType, ...}> |
POST /api/bind/unbind |
解除绑定规划师 |
📱小程序 |
{id} |
boolean |
关系问卷与质量分析
| 端点 |
说明 |
端口 |
请求数据 |
响应数据 |
POST /api/family/questionnaire/generate |
AI生成关系问卷 |
📱小程序 |
{targetMemberId, relationshipType} |
QuestionnaireSnapshotVO |
POST /api/family/questionnaire/submit |
提交问卷答案 |
📱小程序 |
{snapshotId, answers[]} |
RelationshipQuestionnaireResponse |
POST /api/family/questionnaire/history/{memberId} |
问卷历史记录 |
📱小程序 |
path: memberId |
List<RelationshipQuestionnaireResponse> |
POST /api/family/questionnaire/snapshot/{memberId} |
最新问卷快照 |
📱小程序 |
path: memberId |
QuestionnaireSnapshotVO |
POST /api/family/relationship/calculate |
计算并保存评分 |
⚙️系统自动 |
{memberId} |
RelationshipScoreVO |
POST /api/family/relationship/scores |
关系质量评分列表 |
📱小程序 |
{familyId} |
List<RelationshipScoreVO> |
POST /api/family/relationship/health-alerts |
健康预警列表 |
📱小程序 |
{familyId} |
List<HealthAlertVO> |
POST /api/family/relationship/milestones |
即将到来的里程碑 |
📱小程序 |
{familyId, daysAhead} |
List<MilestoneVO> |
互动记录
| 端点 |
说明 |
端口 |
请求数据 |
响应数据 |
POST /api/family/interaction/types |
互动类型列表 |
📱小程序 |
— |
Map<类型代码, 类型名称> |
POST /api/family/interaction/add |
添加互动记录 |
📱小程序 |
{fromMemberId, toMemberId, type, content} |
InteractionLogVO |
POST /api/family/interaction/list |
互动记录分页列表 |
📱小程序 |
{familyId, fromMemberId, toMemberId, page, size} |
Page<InteractionLogVO> |
完整性分析
| # |
维度 |
评估 |
说明 |
| 1 |
流程完整性 |
✅ 完整 |
覆盖家庭创建/加入、成员管理、家庭设置、规划师绑定、关系问卷与质量分析、互动记录6个阶段,路径完整 |
| 2 |
异常路径 |
⚠️ 部分覆盖 |
邀请码无效、令牌过期、非管理员踢出等错误在Service层处理;家庭合并冲突已在图中体现 |
| 3 |
端点覆盖 |
✅ 完整 |
47个端点全部映射到流程图中,与代码实际暴露的控制器一致 |
| 4 |
角色覆盖 |
✅ 完整 |
家长(parent)管理家庭全流程、规划师(teacher)绑定申请、孩子(child)可见性管理均已覆盖;管理员(admin)在管理后台管理家庭,不在本图范围 |
| 5 |
数据实体 |
✅ 完整 |
families、users、family_members、family_member_logs、family_invitations、teacher_family_binding_requests、guide_families、bind_invites、questionnaire_snapshots、relationship_questionnaire_responses、relationship_scores、interaction_logs 均在图中映射 |
| 6 |
一致性 |
✅ 与代码一致 |
所有端点路径与实际Controller(FamilyUserController、FamilyInviteController、FamilyMembersController、TeacherFamilyBindingController、RelationshipQuestionnaireController、RelationshipQualityController、InteractionLogController、BindController、BindInviteController)中的@PostMapping匹配 |