PushToZhaoShang/数据修正使用说明.md
2025-12-07 21:04:24 +08:00

67 lines
3.1 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.

# 数据修正使用说明
## 目的
- 指导如何在不暴露修正过程的前提下,修正某天营业额数据,并确保前端即时一致更新。
- 所有修正与生成均写入审计表和 `app.log`,便于稽核与追踪。
## 前置准备
- 在项目根目录创建或编辑 `.env`,设置管理口令:
- `ADMIN_TOKEN=你的口令`
- 后端运行于 `http://localhost:5000`Docker 或本地均可)。
## 修正接口
- URL`PUT /api/admin/turnover`
- 鉴权:请求头 `X-Admin-Token: <你的口令>`(来自 `.env`
- Content-Type`application/json`
- 请求体:
- `date``YYYY-MM-DD`
- `amount`:数值(营业额)
- `reason`:字符串(修正原因)
- `actor`:可选,执行者标识
## 请求示例
- curlWindows PowerShell 请使用完整双引号并转义):
```
curl -X PUT http://localhost:5000/api/admin/turnover ^
-H "Content-Type: application/json" ^
-H "X-Admin-Token: <你的口令>" ^
-d "{\"date\":\"2025-12-06\",\"amount\":3123.45,\"reason\":\"调整入账\"}"
```
- PowerShell推荐
```
$body = @{ date = "2025-12-06"; amount = 3123.45; reason = "调整入账" } | ConvertTo-Json
Invoke-RestMethod -Method Put -Uri "http://localhost:5000/api/admin/turnover" -Headers @{"X-Admin-Token"="<你的口令>"} -ContentType "application/json" -Body $body
```
- Postman
- Method: PUTURL: `http://localhost:5000/api/admin/turnover`
- Headers: `X-Admin-Token: <你的口令>``Content-Type: application/json`
- Body(JSON)`{"date":"2025-12-06","amount":3123.45,"reason":"调整入账"}`
## 成功结果与前端效果
- 接口返回:`{"ok": true}`
- 后端行为:
- 写入/更新 `daily_revenue` 对应日期的记录,并置 `is_final=true`
- 写入 `audit_log` 审计记录
- 追加一行到 `app.log`(与历史格式一致)
- 前端:每 60 秒轮询 `GET /api/metrics``GET /api/series7`,修正后下一次轮询即可显示新值;修正过程不在前端展示。
## 生成与定版规则(一致性)
- 每天本地时间 `23:00` 自动生成并定版当日数据(`is_final=true`)。
- 已定版的数据不会被定时任务覆盖;如需变更,请使用修正接口。
- `CSV` 导出仅包含已定版数据。
## 审计与回滚
- 审计表:`audit_log`
- 字段:`date`、`old_amount`、`new_amount`、`reason`、`actor`、`type(generate/correct/import_log)`、`created_at`
- 回滚方式:再次调用修正接口,将 `amount` 改回目标值,并注明 `reason`(例如:`回滚`)。
## 常见问题
- 401 未授权:检查 `.env``ADMIN_TOKEN` 与请求头 `X-Admin-Token` 是否一致。
- 前端未更新:等待轮询或手动刷新;确保后端正在运行并能访问 `GET /api/metrics``GET /api/series7`
- 时间与周次显示不符:系统按本地时区与“周一为周起、周日为周止”的规则计算区间。
## 相关接口(只读)
- 指标:`GET /api/metrics`(含 `today`:日期与周几;未到 23:00 或未定版则 `amount=null`
- 7 日序列:`GET /api/series7`(今日定版后纳入,否则截止到昨日)
- 导出:`GET /api/export`(仅包含已定版数据)