用户使用流程图 — 其他功能
端口说明: 📱 小程序 | 🖥 管理后台 | 📋 规划师端 | ⚙️ 系统自动
分层说明: 🏠 页面 → 🔗 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 actor fill:#e1f5fe,stroke:#0288d1,stroke-width:2px,stroke-dasharray:5 3
%% ============ 角色 ============
ROLE_PARENT(("👤 家长/孩子")):::actor
ROLE_ADMIN(("🖥 管理员")):::actor
ROLE_SYSTEM(("⚙️ 系统")):::actor
%% ================================================================
%% 阶段一:用户吉祥物
%% ================================================================
subgraph 阶段一[阶段一:用户吉祥物]
direction TB
P1["🏠 个人中心:吉祥物设置"]:::page
P1 -->|"选择 xibao/fubao"| A1["🔗 POST /api/user/mascot/set"]:::api
A1 -->|"userId, 吉祥物代码"| S1["⚙️ UserService.setMascot()"]:::service
S1 -->|"更新用户 mascot 字段"| D1["📦 users 表"]:::data
P1 -->|"查看当前吉祥物"| A1a["🔗 POST /api/user/mascot/get"]:::api
A1a -->|"userId"| S1a["⚙️ UserService.getUserInfo()"]:::service
S1a -->|"mascot 字段值"| D1
end
%% ================================================================
%% 阶段二:用户分群(RFM)
%% ================================================================
subgraph 阶段二[阶段二:用户分群(RFM)]
direction TB
P2["🏠 系统后台:用户分群页"]:::page
P2 -->|"触发RFM计算"| A2["🔗 POST /api/segmentation/rfm/calculate"]:::api
A2 -->|"userId"| S2["⚙️ UserSegmentationService.calculateRfm()"]:::service
S2 -->|"R/F/M 分值 + 层级标签"| D2["📦 user_rfm_tags 表"]:::data
D2 -->|"userId"| A2a["🔗 POST /api/segmentation/rfm/detail"]:::api
A2a -->|"userId"| S2a["⚙️ UserSegmentationService.getUserRfm()"]:::service
S2a -->|"RFM 详细数据"| D2
D2 -->|"分群结果"| A2b["🔗 POST /api/segmentation/trigger/rules"]:::api
A2b -->|"userId, triggerType"| S2b["⚙️ UserSegmentationService.getTriggerRules()"]:::service
S2b -->|"触发规则列表"| D2b["📦 user_trigger_rules 表"]:::data
end
%% ================================================================
%% 阶段三:外部平台同步
%% ================================================================
subgraph 阶段三[阶段三:外部平台同步(zkxz)]
direction TB
P3["🏠 系统自动:定时同步"]:::page
P3 -->|"客户ID"| A3["🔗 POST /api/sncp/addClient/{clientId}"]:::api
A3 -->|"clientId"| S3["⚙️ ZkxzSyncService.syncClient()"]:::service
S3 -->|"同步结果"| D3["📦 zkxz 外部平台"]:::data
P3 -->|"用户登录名"| A3a["🔗 POST /api/sncp/notice/{userLogin}"]:::api
A3a -->|"userLogin"| S3a["⚙️ ZkxzSyncService(通知查询)"]:::service
S3a -->|"通知内容"| D3
end
%% ================================================================
%% 阶段四:每日反馈
%% ================================================================
subgraph 阶段四[阶段四:每日反馈]
direction TB
P4["🏠 家长端:今日反馈页"]:::page
P4 -->|"查看今日反馈"| A4["🔗 POST /api/feedback/today"]:::api
A4 -->|"userId, childId"| S4["⚙️ DailyFeedbackService.getTodayFeedback()"]:::service
S4 -->|"当日反馈内容(无则自动生成)"| D4["📦 daily_feedback 表"]:::data
D4 -->|"标记已读"| A4a["🔗 POST /api/feedback/read"]:::api
A4a -->|"feedback id"| S4a["⚙️ DailyFeedbackService.markAsRead()"]:::service
S4a -->|"is_read = 1"| D4
D4 -->|"查看历史"| A4b["🔗 POST /api/feedback/recent"]:::api
A4b -->|"childId, limit"| S4b["⚙️ DailyFeedbackService.getRecentFeedbacks()"]:::service
S4b -->|"最近N条反馈列表"| D4
end
%% ================================================================
%% 阶段五:健康互动(点赞)
%% ================================================================
subgraph 阶段五[阶段五:健康互动(点赞)]
direction TB
P5["🏠 家长端:健康互动页"]:::page
P5 -->|"点赞家庭成员"| A5["🔗 POST /api/health/interact/like"]:::api
A5 -->|"userId, toUserId, actionType, actionId, familyId"| S5["⚙️ HealthInteractionService.like()"]:::service
S5 -->|"写入互动记录"| D5["📦 health_interaction 表"]:::data
end
%% ================================================================
%% 阶段六:商品推荐
%% ================================================================
subgraph 阶段六[阶段六:商品推荐]
direction TB
P6["🏠 五维维度页:推荐商品"]:::page
P6 -->|"按维度查看推荐"| A6["🔗 POST /api/recommend/dimension-products"]:::api
A6 -->|"dimensionCode, familyId, memberId, limit"| S6["⚙️ ProductRecommendationService.getDimensionRecommendations()"]:::service
S6 -->|"维度关联商品列表"| D6["📦 products 表(商品查询)"]:::data
end
%% ================================================================
%% 阶段七:通用工具
%% ================================================================
subgraph 阶段七[阶段七:通用工具]
direction TB
P7["🏠 邀请页:生成小程序码"]:::page
P7 -->|"邀请注册"| A7["🔗 POST /api/common/qrcode"]:::api
A7 -->|"type=register, referralCode"| S7["⚙️ WechatService.generateWxacode()"]:::service
S7 -->|"base64 小程序码图片"| D7["📦 微信服务器(临时素材)"]:::data
end
%% ================================================================
%% 阶段八:新手引导
%% ================================================================
subgraph 阶段八[阶段八:新手引导]
direction TB
P8["🏠 新手引导页"]:::page
P8 -->|"查看引导进度"| A8["🔗 POST /api/onboarding/progress"]:::api
A8 -->|"userId"| S8["⚙️ OnboardingService.getProgress()"]:::service
S8 -->|"引导任务列表及状态"| D8["📦 onboarding_task 表"]:::data
D8 -->|"完成任务领取奖励"| A8a["🔗 POST /api/onboarding/claim"]:::api
A8a -->|"userId, taskType"| S8a["⚙️ OnboardingService.claimReward()"]:::service
S8a -->|"发放积分/能量,更新状态"| D8
end
%% ============ 角色关联 ============
ROLE_PARENT -.- P1
ROLE_PARENT -.- P4
ROLE_PARENT -.- P5
ROLE_PARENT -.- P6
ROLE_PARENT -.- P7
ROLE_PARENT -.- P8
ROLE_ADMIN -.- P2
ROLE_SYSTEM -.- P3
端点明细
用户吉祥物
| 端点 |
说明 |
端口 |
请求数据 |
响应数据 |
POST /api/user/mascot/set |
设置吉祥物 |
📱小程序 |
`{mascot: "xibao" |
"fubao" | null}` |
POST /api/user/mascot/get |
获取当前吉祥物 |
📱小程序 |
— |
{mascot} |
用户分群
| 端点 |
说明 |
端口 |
请求数据 |
响应数据 |
POST /api/segmentation/rfm/calculate |
计算RFM标签 |
⚙️系统自动 |
— |
UserRfmTag(R/F/M分值+tier) |
POST /api/segmentation/rfm/detail |
获取RFM详情 |
📱小程序 |
— |
UserRfmTag对象 |
POST /api/segmentation/trigger/rules |
获取触发规则 |
📱小程序 |
{triggerType} |
List<UserTriggerRule> |
外部同步(zkxz)
| 端点 |
说明 |
端口 |
请求数据 |
响应数据 |
POST /api/sncp/addClient/{clientId} |
同步客户到zkxz |
⚙️系统自动 |
path: clientId |
同步结果 |
POST /api/sncp/notice/{userLogin} |
获取zkxz通知 |
⚙️系统自动 |
path: userLogin |
通知内容 |
每日反馈
| 端点 |
说明 |
端口 |
请求数据 |
响应数据 |
POST /api/feedback/today |
获取今日反馈 |
📱小程序 |
{childId} |
{feedback, hasFeedback} |
POST /api/feedback/read |
标记反馈已读 |
📱小程序 |
{id} |
{ok} |
POST /api/feedback/recent |
获取最近反馈列表 |
📱小程序 |
{childId, limit} |
List<DailyFeedback> |
健康互动
| 端点 |
说明 |
端口 |
请求数据 |
响应数据 |
POST /api/health/interact/like |
点赞家庭成员 |
📱小程序 |
{toUserId, actionType, actionId, familyId} |
Void |
商品推荐
| 端点 |
说明 |
端口 |
请求数据 |
响应数据 |
POST /api/recommend/dimension-products |
维度页推荐商品 |
📱小程序 |
{dimensionCode, familyId, memberId, limit, excludeProductIds} |
List<推荐商品> |
通用工具
| 端点 |
说明 |
端口 |
请求数据 |
响应数据 |
POST /api/common/qrcode |
生成小程序码 |
📱小程序 |
{type, referralCode} |
{qrCodeBase64} |
新手引导
| 端点 |
说明 |
端口 |
请求数据 |
响应数据 |
POST /api/onboarding/progress |
获取引导进度 |
📱小程序 |
— |
List<OnboardingTask> |
POST /api/onboarding/claim |
领取引导奖励 |
📱小程序 |
{taskType} |
{success} |
数据实体关系
erDiagram
User ||--o{ UserRfmTag : "userId 关联"
User ||--o{ UserTriggerRule : "userId 关联"
User ||--o{ OnboardingTask : "userId 关联"
FamilyMember ||--o{ DailyFeedback : "childId 关联"
FamilyMember ||--o{ HealthInteraction : "toUserId 关联"
UserRfmTag {
Long id PK
Long userId FK
int rScore "最近消费"
int fScore "消费频率"
int mScore "消费金额"
string rfmTier "RFM层级标签"
}
UserTriggerRule {
Long id PK
Long userId FK
string triggerType
string triggerAction
string actionConfig
string status
}
DailyFeedback {
Long id PK
Long userId FK
Long childId FK
date feedbackDate
string feedbackType "daily/weekly/milestone"
string content
int isRead
string source "ai_generated/preset"
}
HealthInteraction {
Long id PK
Long familyId
Long fromUserId
Long toUserId
string actionType
Long actionId
}
OnboardingTask {
Long id PK
Long userId FK
string taskType
int rewardPoints
int rewardEnergy
string status
}
完整性分析
| # |
维度 |
评估 |
说明 |
| 1 |
流程完整性 |
✅ 完整 |
覆盖8个独立功能模块:吉祥物设置、RFM分群、外平台同步、每日反馈、健康互动、商品推荐、小程序码生成、新手引导,均为独立流程 |
| 2 |
异常路径 |
⚠️ 部分覆盖 |
各模块边界校验在Service层处理(如吉祥物仅允许xibao/fubao、PDF格式校验、zkxz启用检查),流程图简化了异常分支 |
| 3 |
端点覆盖 |
✅ 完整 |
16个端点全部映射到流程图中,与实际Controller代码一致(UserMascotController、UserSegmentationController、ZkxzSyncController、DailyFeedbackController、HealthInteractionController、ProductRecommendationController、CommonController、OnboardingController) |
| 4 |
角色覆盖 |
✅ 完整 |
家长/孩子使用吉祥物、反馈、互动、推荐、引导功能;管理员使用RFM用户分群;系统自动触发zkxz同步 |
| 5 |
数据实体 |
✅ 完整 |
覆盖users、user_rfm_tags、user_trigger_rules、daily_feedback、health_interaction、onboarding_task共6个数据表 |
| 6 |
一致性 |
✅ 与代码一致 |
所有端点路径与实际Controller中的@PostMapping匹配,参数与Controller入参一致 |