charging-cabinet/tasks/006-charge-records-and-logs.md
2026-07-02 05:38:01 +08:00

114 lines
3.2 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.

# 任务006充电记录与设备日志
## 目标
实现充电记录查询/导出、设备日志查看、异步导出下载中心。
## 后端API
### 充电记录
```
GET /api/charge-records # 充电记录列表
?cabinet_id=xxx&cabin_board_id=xxx&compartment_id=xxx
&start_time=xxx&end_time=xxx&page=1&page_size=20
GET /api/charge-records/export # 导出充电记录(异步)
?cabinet_id=xxx&start_time=xxx&end_time=xxx
```
### 设备日志
```
GET /api/device-logs # 设备日志列表
?cabinet_id=xxx&log_type=xxx
&start_time=xxx&end_time=xxx&page=1&page_size=20
```
### 下载中心
```
GET /api/downloads # 下载任务列表
GET /api/downloads/:id # 获取下载链接
POST /api/downloads/cleanup # 清理过期文件
```
## 异步导出流程
```
1. 用户点击"导出" → POST /api/charge-records/export
2. 后端创建下载任务返回任务ID
3. 后台异步生成Excel文件
4. 用户到"下载中心"查看进度
5. 完成后点击下载
```
### 下载任务表
```sql
CREATE TABLE download_tasks (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
user_id BIGINT NOT NULL,
task_type VARCHAR(50) NOT NULL COMMENT 'charge_records/energy_stats',
status TINYINT DEFAULT 0 COMMENT '0排队 1处理中 2完成 3失败',
file_path VARCHAR(500) COMMENT '文件路径',
file_name VARCHAR(200) COMMENT '文件名',
progress INT DEFAULT 0 COMMENT '进度百分比',
error_message TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
completed_at TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
```
### 文件名智能生成
```
充电记录_项目A_20260701-20260731.xlsx
能耗统计_组织B_2026年7月.xlsx
设备日志_柜子10-00000001_20260701.xlsx
```
## 前端页面
### 充电记录页
**顶部过滤:**
- 柜子下拉(可选)
- 仓板下拉(可选,依赖柜子)
- 通道下拉(可选,依赖仓板)
- 时间范围选择器
- 查询按钮 + 导出按钮
**列表显示:**
| 柜子ID | 仓板 | 通道 | 开始时间 | 结束时间 | 充电量 | 最高温度 | 状态 |
|--------|------|------|----------|----------|--------|----------|------|
**分页:** 每页20条
### 设备日志页
**顶部过滤:**
- 柜子下拉
- 日志类型(状态上报/故障/告警/停电)
- 时间范围
**列表显示:**
| 柜子ID | 类型 | 内容摘要 | 时间 |
|--------|------|----------|------|
### 下载中心
**位置:** 充电记录页/能耗管理页的"导出"按钮旁
**弹窗显示:**
| 任务名称 | 状态 | 进度 | 操作 |
|----------|------|------|------|
| 充电记录_项目A... | 处理中 | 65% | 等待... |
| 能耗统计_组织B... | 完成 | 100% | [下载] |
## 质量约束
1. 完成代码后执行 `cargo check` + `tsc --noEmit`,零报错零警告
2. 分层拆分单函数≤80行命名语义化完整注释
3. 所有外部IO/网络请求异常捕获禁止裸panic
4. 分支逻辑全覆盖,不遗漏兜底分支
5. 常量抽离不使用废弃API
6. Rust内存安全React函数组件+Hooks
7. 导出任务异步执行,不阻塞请求