Files
plates-server/docs/WATER_RECORDS.md
richarjiang 2c2e964199 feat(water-records): 新增喝水记录功能模块
新增完整的喝水记录管理功能,支持用户记录每日喝水情况、设置目标和查看统计信息。功能包括:

- 创建、查询、更新和删除喝水记录
- 设置和管理每日喝水目标
- 获取今日喝水统计和完成率分析
- 支持分页查询和日期范围筛选
- 完整的数据验证和错误处理机制

该模块已从用户模块中独立出来,提供REST API接口,包含数据库迁移脚本和详细文档。
2025-09-01 11:02:13 +08:00

140 lines
2.9 KiB
Markdown
Raw Permalink 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.

# 喝水记录功能
## 功能概述
新增了用户喝水记录功能,支持用户记录每日的喝水情况,设置喝水目标,并查看统计信息。
## 新增文件
### 模型文件
- `src/users/models/user-water-history.model.ts` - 喝水记录模型
- 更新了 `src/users/models/user-profile.model.ts` - 添加了 `dailyWaterGoal` 字段
### DTO文件
- `src/users/dto/water-record.dto.ts` - 喝水记录相关的DTO
### 服务文件
- `src/users/services/water-record.service.ts` - 喝水记录服务
### 数据库脚本
- `sql-scripts/user-water-records-table.sql` - 数据库迁移脚本
### 测试脚本
- `test-water-records.sh` - API接口测试脚本
## API接口
### 1. 创建喝水记录
```
POST /users/water-records
```
请求体:
```json
{
"amount": 250,
"source": "manual",
"remark": "早晨第一杯水"
}
```
### 2. 获取喝水记录列表
```
GET /users/water-records?limit=10&offset=0
```
### 3. 更新喝水记录
```
PUT /users/water-records/:id
```
请求体:
```json
{
"amount": 300,
"remark": "修改后的备注"
}
```
### 4. 删除喝水记录
```
DELETE /users/water-records/:id
```
### 5. 更新喝水目标
```
PUT /users/water-goal
```
请求体:
```json
{
"dailyWaterGoal": 2000
}
```
### 6. 获取今日喝水统计
```
GET /users/water-stats/today
```
响应:
```json
{
"code": 200,
"message": "success",
"data": {
"totalAmount": 1500,
"recordCount": 6,
"dailyGoal": 2000,
"completionRate": 0.75
}
}
```
## 数据库表结构
### t_user_water_history (喝水记录表)
- `id` - 主键,自增
- `user_id` - 用户ID
- `amount` - 喝水量(毫升)
- `source` - 记录来源manual/auto/other
- `remark` - 备注
- `created_at` - 创建时间
- `updated_at` - 更新时间
### t_user_profile (用户档案表 - 新增字段)
- `daily_water_goal` - 每日喝水目标(毫升)
## 功能特点
1. **完整的CRUD操作** - 支持喝水记录的增删改查
2. **目标设置** - 用户可以设置每日喝水目标
3. **统计功能** - 提供今日喝水统计,包括总量、记录数、完成率等
4. **数据验证** - 对输入数据进行严格验证
5. **错误处理** - 完善的错误处理机制
6. **日志记录** - 详细的操作日志
7. **权限控制** - 所有接口都需要JWT认证
## 部署说明
1. 运行数据库迁移脚本:
```bash
mysql -u username -p database_name < sql-scripts/user-water-records-table.sql
```
2. 重启应用服务
3. 使用测试脚本验证功能:
```bash
./test-water-records.sh
```
## 注意事项
1. 喝水目标字段是可选的,可以为空
2. 喝水记录的来源默认为 'manual'
3. 喝水量的范围限制在 1-5000 毫升之间
4. 喝水目标的范围限制在 500-10000 毫升之间
5. 获取profile接口会返回用户的喝水目标
6. 喝水目标的更新集成在喝水接口中,避免用户服务文件过大