Files
plates-server/src/mood-checkins/README.md
richarjiang f26d8e64c6 feat: 新增心情打卡功能模块
实现心情打卡的完整功能,包括数据库表设计、API接口、业务逻辑和文档说明。支持记录多种心情类型、强度评分和统计分析功能。
2025-08-21 15:20:05 +08:00

145 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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