Add dashboard and latest logs endpoints for smoke tracking
- Introduced a new API endpoint `GET /api/v1/smoke/dashboard` to retrieve a summary of smoking statistics over a specified date range, including today's count and weekly breakdown. - Added `GET /api/v1/smoke/logs/latest` endpoint to fetch the most recent smoking logs with a configurable limit. - Updated the smoke handler and service to support the new functionality, including error handling for date parsing and limit validation. - Enhanced documentation to reflect the new API endpoints and their usage.
This commit is contained in:
+68
-4
@@ -88,7 +88,71 @@ curl -X GET 'http://127.0.0.1:8080/api/v1/smoke/logs/5202' \
|
||||
}
|
||||
```
|
||||
|
||||
## 4) 更新记录
|
||||
## 4) 获取看板概览
|
||||
|
||||
`GET /api/v1/smoke/dashboard?start=2026-01-01&end=2026-01-07`
|
||||
|
||||
参数:
|
||||
- `start`:起始日期(含,格式 `YYYY-MM-DD`),默认“本周一”
|
||||
- `end`:截止日期(含,格式 `YYYY-MM-DD`),默认“本周日”。若只传 `start`,`end` 默认为 `start + 6 天`。
|
||||
|
||||
成功响应示例:
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "success",
|
||||
"data": {
|
||||
"today_count": 6,
|
||||
"minutes_since_last": 42,
|
||||
"weekly": [
|
||||
{ "date": "2026-01-01", "count": 2, "is_today": false },
|
||||
{ "date": "2026-01-02", "count": 1, "is_today": false },
|
||||
{ "date": "2026-01-03", "count": 0, "is_today": false },
|
||||
{ "date": "2026-01-04", "count": 0, "is_today": false },
|
||||
{ "date": "2026-01-05", "count": 3, "is_today": true },
|
||||
{ "date": "2026-01-06", "count": 0, "is_today": false },
|
||||
{ "date": "2026-01-07", "count": 0, "is_today": false }
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
字段说明:
|
||||
- `today_count`:当天吸烟总支数(累加 `num`)
|
||||
- `minutes_since_last`:距最后一次抽烟的分钟数,通过最近一条 `smoke_at/smoke_time/createtime` 计算;若历史为空则字段不存在
|
||||
- `weekly`:起止日期内每日汇总,`count` 为当日总支数,`is_today` 标记当前日期(即便不在 `start/end` 范围内也会标记为 `false`)
|
||||
|
||||
## 5) 最近记录列表(轻量版)
|
||||
|
||||
`GET /api/v1/smoke/logs/latest?limit=20`
|
||||
|
||||
参数:
|
||||
- `limit`:返回条数,默认 `20`,最大 `100`
|
||||
|
||||
成功响应示例:
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "success",
|
||||
"data": {
|
||||
"items": [
|
||||
{
|
||||
"id": 123,
|
||||
"smoke_time": "2026-01-05T00:00:00+08:00",
|
||||
"smoke_at": "2026-01-05T09:12:00+08:00",
|
||||
"remark": "压力大",
|
||||
"level": 3,
|
||||
"num": 2,
|
||||
"createtime": 1736049120
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## 6) 更新记录
|
||||
|
||||
`PUT /api/v1/smoke/logs/:id`
|
||||
|
||||
@@ -109,7 +173,7 @@ curl -X GET 'http://127.0.0.1:8080/api/v1/smoke/logs/5202' \
|
||||
- 如果你想“清空 smoke_at”,请传空字符串:`{"smoke_at":""}`。
|
||||
- 如果传 `null` 或者不传 `smoke_time`,后端会认为你没有修改该字段。
|
||||
|
||||
## 5) 删除记录(软删除)
|
||||
## 7) 删除记录(软删除)
|
||||
|
||||
`DELETE /api/v1/smoke/logs/:id`
|
||||
|
||||
@@ -125,7 +189,7 @@ curl -X GET 'http://127.0.0.1:8080/api/v1/smoke/logs/5202' \
|
||||
}
|
||||
```
|
||||
|
||||
## 6) 获取 AI 戒烟建议(会员 + 广告解锁并行)
|
||||
## 8) 获取 AI 戒烟建议(会员 + 广告解锁并行)
|
||||
|
||||
`GET /api/v1/smoke/ai/advice?date=2026-01-02`
|
||||
|
||||
@@ -158,7 +222,7 @@ curl -X GET 'http://127.0.0.1:8080/api/v1/smoke/logs/5202' \
|
||||
}
|
||||
```
|
||||
|
||||
## 7) 看广告解锁(用于非会员)
|
||||
## 9) 看广告解锁(用于非会员)
|
||||
|
||||
`POST /api/v1/smoke/ai/advice_unlocks`
|
||||
|
||||
|
||||
Reference in New Issue
Block a user