简单版类图
@startuml
class _User {
+ objectId: String
+ username: String
+ realname: String
+ password: String
+ gender: String
+ age: Number
+ email: String
+ avatar: String
+ teacherId: String
+ studentId: String
+ identity: String
+ school: String
+ department: String
}
class ChatPartner {
+ objectId: String
+ name: String
+ expertise: String
+ avatar: String
+ bio: String
}
class ChatCompanion {
+ objectId: String
+ name: String
+ avatar: String
+ bio: String
}
class ChatRecord {
+ objectId: String
+ title:String
+ content:Array
+ user: Pointer<User>
+ chatpartner: Pointer<ChatPartner>
}
class ChatReport {
+ objectId: String
- report: String
}
class ChatEvaluate{
+ objectId:String
+ avater:String
+ content:String
+ rating:Number
+ user: Pointer<User>
}
class Survey {
+ objectId: String
+ link: String
+ title: String
+ audience: String
}
class DriftBottle {
+ bottleID: String
+ content: String
+ username: String
+ throwtime: String
+ catcher: String
+ catchtime: String
+ status: String
}
Survey "1" -- "0..*" _User
_User "1" -- "0..*" DriftBottle
_User "*" --> "*" ChatEvaluate
_User "1" --> "*" ChatRecord
ChatPartner "1" --> "*" ChatRecord
ChatCompanion "1" --> "*" ChatRecord
ChatRecord "1" --> "1" ChatReport
@enduml
时序图
@startuml
actor 用户
participant "专业陪聊师" as 专业陪聊师
participant "普通陪聊师" as 普通陪聊师
participant "聊天记录" as 聊天记录
participant "报告" as 报告
用户 -> 用户: 选择陪聊师()
alt 选择专业陪聊师
用户 -> 专业陪聊师: 提供聊天()
else 选择普通陪聊师
用户 -> 普通陪聊师: 提供聊天()
end
用户 -> 用户: 开始聊天()
用户 -> 聊天记录: 总结聊天记录()
聊天记录 -> 聊天记录: 获取聊天记录()
聊天记录 -> 报告: 生成报告()
报告 -> 用户: 返回分析报告
@enduml
状态图
@startuml
[*] --> 选择陪聊师
选择陪聊师 --> 聊天中: 开始聊天
聊天中 --> 继续聊天 : 选择继续聊天
聊天中 --> 退出聊天 : 选择退出聊天
退出聊天 --> 总结中 : 总结聊天记录
总结中 --> 生成报告 : 生成分析报告
生成报告 --> 生成失败 : 报告生成失败
生成报告 --> 生成成功 : 报告生成成功
生成成功 --> [*] : 聊天结束
生成失败 --> 生成报告 : 重新生成
@enduml
活动图
@startuml
|用户|
start
:发送消息;
|专业陪聊机器人|
:回复消息;
|用户|
repeat
if (继续聊天?) then (是)
|用户|
:发送消息;
|专业陪聊机器人|
:回复消息;
else (否)
|管理员|
:记录消息;
stop
endif
repeat while (回复消息)
@enduml
//社区部分
用例图
@startuml
actor 用户
rectangle "心理社区" {
用户 -- (使用心理普查)
用户 -- (使用漂流瓶)
}
rectangle "使用心理普查"{
用户 -- (填写问卷)
用户 -- (发布问卷)
}
rectangle "使用漂流瓶"{
用户 -- (扔漂流瓶)
用户 -- (捞漂流瓶)
}
@enduml
时序图
sequenceDiagram
participant Admin as 老师用户
participant Student as 学生用户
participant System as 系统
Admin->>System: 发布心理普查问卷
Student->>System: 填写心理普查问卷
System->>Admin: 收集问卷结果
Admin->>System: 分析问卷结果
Admin->>System: 制定后续心理活动
活动图
graph TD
A[开始] --> B[发布心理普查问卷]
B --> C[学生填写问卷]
C --> D[提交问卷]
D --> E[学校管理员分析结果]
E --> F{心理健康有问题的学生人数达到阈值?}
F -->|是| G[发布心理团辅]
F -->|否| H[继续监控]
G --> I[通知学生参与团辅]
E --> J[设置星标用户]
J --> K
H --> K
I --> K[结束]
状态图
stateDiagram-v2
[*] --> 发布问卷
发布问卷 --> 问卷收集中: 学生填写问卷
问卷收集中 --> 结果分析中: 提交问卷
结果分析中 --> 后续活动设计中: 学校管理员查看分析
结果分析中 --> 初期活动发布中: 心理状况有问题学生人数达到阈值
初期活动发布中 --> 团辅进行中: 发布心理团辅
初期活动发布中 --> 升级星标用户: 升级为心理星标用户
后续活动设计中 --> 后续活动开展中: 发布后续活动
后续活动开展中 --> [*]
团辅进行中 --> [*]
升级星标用户 --> [*]
登录业务
@startuml
left to right direction
[*] --> 输入用户名和密码
输入用户名和密码 --> 检查是否为空
检查是否为空 --> 执行登录 : 不为空
检查是否为空 --> 输入用户名和密码 : 为空
执行登录 --> 返回当前页面: 登录成功
执行登录 --> 输入用户名和密码 :登录失败
返回当前页面 --> [*]
@enduml
注册业务
@startuml
left to right direction
[*] --> 输入基本信息
输入基本信息 --> 检查是否为空
检查是否为空 --> 输入基本信息 : 为空
检查是否为空 --> 检查两次密码一致性 : 不为空
检查两次密码一致性 --> 执行注册 : 一致
检查两次密码一致性 --> 输入基本信息 : 不一致
执行注册 --> 返回登录页面 : 注册成功
执行注册 --> 输入基本信息 : 注册失败
返回登录页面 --> [*]
@enduml
用户编辑信息业务
@startuml
left to right direction
[*] --> 获取用户信息
获取用户信息 --> 弹出表单
弹出表单 --> 检查用户输入
检查用户输入 --> 执行修改
执行修改 --> 返回当前页面: 修改成功
执行修改 --> 弹出表单 : 修改失败
返回当前页面 --> [*]
@enduml
智能陪聊业务
@startuml
left to right direction
[*] --> 检查用户是否登录注册
检查用户是否登录注册 --> 登录注册 : 未登录
检查用户是否登录注册 --> 选择陪聊师 : 已登录
登录注册 --> 选择陪聊师 : 登录/注册成功
登录注册 --> [*] : 登录/注册失败
选择陪聊师 --> 开始陪聊
开始陪聊 --> [*] : 结束陪聊
@enduml
普通聊天业务
@startuml
left to right direction
[*] --> 检查用户是否登录注册
检查用户是否登录注册 --> 登录注册 : 未登录
检查用户是否登录注册 --> 开始陪聊 : 已登录
登录注册 --> 开始陪聊 : 登录/注册成功
登录注册 --> [*] : 登录/注册失败
开始陪聊 --> [*] : 结束陪聊
@enduml
用户评价业务
@startuml
left to right direction
[*] --> 检查用户是否登录注册
检查用户是否登录注册 --> 登录注册 : 未登录
检查用户是否登录注册 --> 进入评价 : 已登录
登录注册 --> 进入评价 : 登录/注册成功
登录注册 --> [*] : 登录/注册失败
进入评价 --> 输入评价内容
输入评价内容 --> 保存退出
保存退出 --> 返回当前页面 : 保存成功
返回当前页面 --> [*]
@enduml
查看报告业务
@startuml
left to right direction
[*] --> 获取用户信息
获取用户信息 --> 点击我的报告
点击我的报告 --> 展示用户相关报告
展示用户相关报告 --> [*]
@enduml