# 类图
```plantuml
' 聊天项目类图
@startuml
' 智能陪聊
' 存储用户的基本信息
class 用户 { 
    +用户ID: String
    +用户名: String
    +密码: String
    +邮箱: String
    +头像: String
    +个人简介: String
    + 开始聊天():void
    + 选择陪聊师():String
    + 总结聊天记录():void
}

' 存储专业陪聊师的信息
class 专业陪聊师 {
    +陪聊师ID: String
    +名称: String
    +专业领域: String
    +评分: Float
    +头像: String
    +个人简介: String
    + 提供聊天(): String
}

' 存储普通陪聊师的信息
class 普通陪聊师 {
    +陪聊师ID: String
    +名称: String
    +评分: Float
    +头像: String
    +个人简介: String
    + 提供聊天(): String
}
' 记录用户与陪聊师的聊天记录
class 聊天记录 {
    +聊天记录ID: String
    +时间: Date
    -聊天内容: List
    +用户: 用户
    +聊天机器人: 聊天机器人
    + 获取聊天记录(): List
}
' 记录产生的报告
class 报告 {
    +报告ID: String
    -分析结果: String
    + 生成报告(): String
}
用户 "1" --> "*" 聊天记录
专业陪聊师 "1" --> "*" 聊天记录
普通陪聊师 "1" --> "*" 聊天记录
聊天记录 "1" -- "1" 报告
@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

```