145 lines
3.3 KiB
Markdown
145 lines
3.3 KiB
Markdown
# 心情打卡功能
|
||
|
||
## 功能概述
|
||
|
||
心情打卡功能允许用户记录每日的情绪状态,包括喜怒哀乐四种基本情绪类型,并可以添加强度评分和详细描述。
|
||
|
||
## 功能特性
|
||
|
||
### 1. 心情类型
|
||
- **开心 (happy)**: 愉悦、满足的情绪
|
||
- **心动 (excited)**: 因喜欢而心跳加速的情绪
|
||
- **兴奋 (thrilled)**: 激动、充满活力的情绪
|
||
- **平静 (calm)**: 宁静、安详的情绪
|
||
- **焦虑 (anxious)**: 紧张、担忧的情绪
|
||
- **难过 (sad)**: 悲伤、失落的情绪
|
||
- **孤独 (lonely)**: 寂寞、孤单的情绪
|
||
- **委屈 (wronged)**: 受到不公正对待的情绪
|
||
- **生气 (angry)**: 愤怒、恼火的情绪
|
||
- **心累 (tired)**: 精神疲惫、倦怠的情绪
|
||
|
||
### 2. 核心功能
|
||
- ✅ 创建心情打卡记录
|
||
- ✅ 更新已有心情记录
|
||
- ✅ 删除心情记录(软删除)
|
||
- ✅ 查看每日心情记录
|
||
- ✅ 查看历史心情记录
|
||
- ✅ 心情统计分析
|
||
|
||
### 3. 数据字段
|
||
- `moodType`: 心情类型(必填)
|
||
- `intensity`: 心情强度 1-10(必填,默认5)
|
||
- `description`: 心情描述(可选)
|
||
- `checkinDate`: 打卡日期(可选,默认当天)
|
||
- `metadata`: 扩展数据,如标签、触发事件等(可选)
|
||
|
||
## API 接口
|
||
|
||
### 创建心情打卡
|
||
```http
|
||
POST /mood-checkins
|
||
```
|
||
|
||
### 更新心情打卡
|
||
```http
|
||
PUT /mood-checkins
|
||
```
|
||
|
||
### 删除心情打卡
|
||
```http
|
||
DELETE /mood-checkins
|
||
```
|
||
|
||
### 获取每日心情
|
||
```http
|
||
GET /mood-checkins/daily?date=2025-08-21
|
||
```
|
||
|
||
### 获取心情历史
|
||
```http
|
||
GET /mood-checkins/history?startDate=2025-08-01&endDate=2025-08-31&moodType=joy
|
||
```
|
||
|
||
### 获取心情统计
|
||
```http
|
||
GET /mood-checkins/statistics?startDate=2025-08-01&endDate=2025-08-31
|
||
```
|
||
|
||
## 数据库设计
|
||
|
||
### 表结构
|
||
- 表名: `t_mood_checkins`
|
||
- 主键: `id` (UUID)
|
||
- 外键: `user_id` (关联用户表)
|
||
- 索引: 用户ID、打卡日期、心情类型等
|
||
|
||
### 约束条件
|
||
- 同一用户同一天同一心情类型只能有一条记录(自动更新)
|
||
- 心情强度范围: 1-10
|
||
- 支持软删除
|
||
|
||
## 业务逻辑
|
||
|
||
### 1. 创建逻辑
|
||
- 检查当天是否已有相同心情类型的记录
|
||
- 如果存在则更新,不存在则创建新记录
|
||
- 记录活动日志
|
||
|
||
### 2. 统计功能
|
||
- 总打卡次数
|
||
- 平均心情强度
|
||
- 各心情类型分布
|
||
- 最频繁的心情类型
|
||
|
||
### 3. 权限控制
|
||
- 用户只能操作自己的心情记录
|
||
- 需要JWT认证
|
||
- 支持活动日志记录
|
||
|
||
## 使用示例
|
||
|
||
### 创建心情打卡
|
||
```json
|
||
{
|
||
"moodType": "joy",
|
||
"intensity": 8,
|
||
"description": "今天工作顺利,心情很好",
|
||
"metadata": {
|
||
"tags": ["工作", "成就感"],
|
||
"trigger": "完成重要项目"
|
||
}
|
||
}
|
||
```
|
||
|
||
### 统计数据响应
|
||
```json
|
||
{
|
||
"code": 200,
|
||
"message": "success",
|
||
"data": {
|
||
"totalCheckins": 30,
|
||
"averageIntensity": 6.8,
|
||
"moodDistribution": {
|
||
"happy": 8,
|
||
"excited": 5,
|
||
"thrilled": 4,
|
||
"calm": 6,
|
||
"anxious": 3,
|
||
"sad": 2,
|
||
"lonely": 1,
|
||
"wronged": 0,
|
||
"angry": 1,
|
||
"tired": 0
|
||
},
|
||
"mostFrequentMood": "happy"
|
||
}
|
||
}
|
||
```
|
||
|
||
## 扩展功能建议
|
||
|
||
1. **心情趋势分析**: 基于历史数据分析心情变化趋势
|
||
2. **心情提醒**: 定时提醒用户进行心情打卡
|
||
3. **心情分享**: 允许用户分享心情状态
|
||
4. **心情建议**: 基于心情状态提供改善建议
|
||
5. **数据导出**: 支持心情数据导出功能 |