# //陪聊部分
# 类图
```plantuml
' 聊天项目类图英文版
@startuml

class _User { 
    + objectId: String //用户唯一标识符
    + username: String //用户名
    + realname: String //真实姓名
    + password: String //用户密码
    + gender: String //性别
    + age: Number //年龄
    + email: String //用户邮箱
    + avatar: String //用户头像
    + startChat(): void 
    + chooseChatPartner(): String
    + summarizeChatHistory(): void
}

class ChatPartner {
    + objectId: String //陪聊师唯一标识符
    + name: String //陪聊师姓名
    + expertise: String //陪聊师专业领域
    + avatar: String //陪聊师头像
    + bio: String //陪聊师个人简介
    + provideChat(): String 
}

class ChatCompanion {
    + objectId: String //聊天伙伴唯一标识符
    + name: String //聊天伙伴姓名
    + avatar: String //聊天伙伴头像
    + bio: String //聊天伙伴个人简介
    + provideChat(): String
}

class ChatRecord {
    + objectId: String //聊天记录唯一标识符
    + title:String //聊天标题
    + content：Array //聊天内容
    + user: Pointer<User> //关联的用户对象
    + chatpartner: Pointer<ChatPartner> //关联的聊天机器人对象
    + getChatHistory(): List
}

class ChatReport {
    + objectId: String //报告唯一标识符
    - report: String //分析结果
    + generateReport(): String //生成报告的方法
}
class ChatEvaluate{
    + objectId:String//评论唯一标识符
    + avater:String//用户头像
    + content:String//评论内容
    + rating:Number//评论星星数
    + user: Pointer<User> //关联的用户对象
}

_User "*" --> "*" ChatEvaluate
_User "1" --> "*" ChatRecord     
ChatPartner "1" --> "*" ChatRecord 
ChatCompanion "1" --> "*" ChatRecord 
ChatRecord "1" --> "1" ChatReport      
@enduml
```
# 时序图
```plantuml
@startuml
actor 用户
participant "专业陪聊师" as 专业陪聊师
participant "普通陪聊师" as 普通陪聊师
participant "聊天记录" as 聊天记录
participant "报告" as 报告

用户 -> 用户: 选择陪聊师()
alt 选择专业陪聊师
    用户 -> 专业陪聊师: 提供聊天()
else 选择普通陪聊师
    用户 -> 普通陪聊师: 提供聊天()
end
用户 -> 用户: 开始聊天()
用户 -> 聊天记录: 总结聊天记录()
聊天记录 -> 聊天记录: 获取聊天记录()

聊天记录 -> 报告: 生成报告()
报告 -> 用户: 返回分析报告

@enduml
```

# 状态图
```plantuml
@startuml
[*] --> 选择陪聊师

选择陪聊师 -->  聊天中: 开始聊天
聊天中 --> 继续聊天 : 选择继续聊天
聊天中 --> 退出聊天 : 选择退出聊天
退出聊天 --> 总结中 : 总结聊天记录

总结中 --> 生成报告 : 生成分析报告
生成报告 --> 生成失败 : 报告生成失败
生成报告 --> 生成成功 : 报告生成成功

生成成功 --> [*] : 聊天结束
生成失败 --> 生成报告 : 重新生成
@enduml
```

# 活动图
```plantuml
@startuml
|用户|
start
:发送消息;
|专业陪聊机器人|
:回复消息;
|用户|
repeat
if (继续聊天?) then (是)
    |用户|
    :发送消息;
    |专业陪聊机器人|
    :回复消息;
else (否)
    |管理员|
    :记录消息;
    stop
endif
repeat while (回复消息)
@enduml

```

# //社区部分


# 用例图
```plantuml
@startuml
actor 学生用户
actor 学校管理员

rectangle "心理社区" {
    学生用户 -- (填写心理普查问卷)
    学生用户 -- (使用心理测试)
    学校管理员 -- (发布心理普查问卷)
    学校管理员 -- (发布心理活动通知)
    学校管理员 -- (设置星标用户)
}

@enduml
```
# 类图

```plantuml
@startuml
class User {
    +objectId: String
    +username: String
    +realname: String
    +password: String
    +gender: String
    +age: Number
    +email: String
    +avatar: String
    +startChat():void
    +chooseChatPartner():String
    +summarizeCharHistory():void
    +registerAccount():void
    +login(): void
    +fillPsychologicalTest(): void
    +publishBottle(): void
    +retrieveBottle(): Bottle
}

class PsychologicalCommunity {
    +communityID: String
    +topic: String
    +joinCommunity(): void
}

class PsychologicalActivity {
    +activityID: String
    +title: String
    +description: String
    +date: Date
    +location: String
    +publishActivity(): void
}

class PsychologicalSurvey {
    +surveyID: String
    +content: String
    +publisher: SchoolAdmin
    +responses: List
    +publishSurvey(): void
    +analyzeResults(): void
}

class SchoolAdmin {
    +adminID: String
    +name: String
    +email: String
    +publishPsychologicalActivity(): void
    +publishPsychologicalSurvey(): void
    +analyzeSurveyResults(): void
    +setFeaturedUser(): void
}

class Bottle {
    +bottleID: String
    +content: String
    +author: User
    +timestamp: Date
}

User "1" -- "0..*" PsychologicalCommunity
PsychologicalActivity "1" -- "0..*" User
SchoolAdmin "1" -- "0..*" PsychologicalActivity
SchoolAdmin "1" -- "0..*" PsychologicalSurvey
PsychologicalSurvey "1" -- "0..*" User
User "1" -- "0..*" Bottle
@enduml
```

# 时序图

```mermaid
sequenceDiagram
    participant Admin as 学校管理员
    participant Student as 学生用户
    participant System as 系统

    Admin->>System: 发布心理普查问卷
    Student->>System: 填写心理普查问卷
    System->>Admin: 收集问卷结果
    Admin->>System: 分析问卷结果
    alt 心理健康有问题的学生人数达到阈值
        System->>Admin: 发布心理团辅
        System->>Student: 升级为心理星标用户
    end
    Admin->>System: 制定后续心理活动
    System->>Student: 通知学生参与活动
    Student->>System: 使用心理测试
```
# 活动图

```mermaid
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[结束]
```

# 状态图
```mermaid
stateDiagram-v2
    [*] --> 发布问卷
    发布问卷 --> 问卷收集中: 学生填写问卷
    问卷收集中 --> 结果分析中: 提交问卷
    结果分析中 --> 后续活动设计中: 学校管理员查看分析
    结果分析中 --> 初期活动发布中: 心理状况有问题学生人数达到阈值
    初期活动发布中 --> 团辅进行中: 发布心理团辅
    初期活动发布中 --> 升级星标用户: 升级为心理星标用户
    后续活动设计中 --> 后续活动开展中: 发布后续活动
    后续活动开展中 --> [*]
    团辅进行中 --> [*]
    升级星标用户 --> [*]
    
```

