feat: 新增心情打卡功能模块

实现心情打卡的完整功能,包括数据库表设计、API接口、业务逻辑和文档说明。支持记录多种心情类型、强度评分和统计分析功能。
This commit is contained in:
richarjiang
2025-08-21 15:20:05 +08:00
parent 513d6e071d
commit f26d8e64c6
9 changed files with 888 additions and 0 deletions

145
src/mood-checkins/README.md Normal file
View File

@@ -0,0 +1,145 @@
# 心情打卡功能
## 功能概述
心情打卡功能允许用户记录每日的情绪状态,包括喜怒哀乐四种基本情绪类型,并可以添加强度评分和详细描述。
## 功能特性
### 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. **数据导出**: 支持心情数据导出功能