82 lines
2.2 KiB
Markdown
82 lines
2.2 KiB
Markdown
|
|
# 任务007:能耗管理
|
|||
|
|
|
|||
|
|
## 目标
|
|||
|
|
|
|||
|
|
实现电表数据统计,柜子/项目维度的能耗分析,趋势图表。
|
|||
|
|
|
|||
|
|
## 后端API
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
GET /api/energy-stats/summary # 总览(今日/本月总能耗、电费估算)
|
|||
|
|
GET /api/energy-stats/cabinets # 柜子能耗排行
|
|||
|
|
GET /api/energy-stats/projects # 项目能耗统计
|
|||
|
|
GET /api/energy-stats/trend # 趋势数据(日/周/月)
|
|||
|
|
GET /api/energy-stats/export # 导出能耗报表(异步)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 响应示例
|
|||
|
|
|
|||
|
|
**总览:**
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"today_energy": 3750.50,
|
|||
|
|
"month_energy": 85200.00,
|
|||
|
|
"estimated_cost": 68160.00,
|
|||
|
|
"cabinet_count": 128,
|
|||
|
|
"online_count": 125
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**柜子排行:**
|
|||
|
|
```json
|
|||
|
|
[
|
|||
|
|
{"cabinet_id": 1, "abstract_id": "10-00000001", "today_energy": 320.5},
|
|||
|
|
{"cabinet_id": 2, "abstract_id": "10-00000002", "today_energy": 285.0}
|
|||
|
|
]
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**趋势(日):**
|
|||
|
|
```json
|
|||
|
|
[
|
|||
|
|
{"date": "2026-07-01", "energy": 3750.50, "charge_count": 423},
|
|||
|
|
{"date": "2026-06-30", "energy": 3680.20, "charge_count": 415}
|
|||
|
|
]
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 前端页面
|
|||
|
|
|
|||
|
|
### 能耗管理页
|
|||
|
|
|
|||
|
|
**顶部数据卡片:**
|
|||
|
|
```
|
|||
|
|
┌─────────┐ ┌───────── ┌─────────┐ ┌─────────
|
|||
|
|
│今日能耗 │ │本月能耗 │ │电费估算 │ │在线柜子 │
|
|||
|
|
│3,750 kWh│ │85,200 kWh│ │¥68,160 │ │ 125 │
|
|||
|
|
└───────── └─────────┘ └───────── └─────────┘
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**柜子能耗排行:**
|
|||
|
|
- 表格显示柜子ID、今日能耗、本月能耗
|
|||
|
|
- 支持排序
|
|||
|
|
|
|||
|
|
**项目能耗统计:**
|
|||
|
|
- 表格显示项目名、柜子数、今日能耗、本月能耗
|
|||
|
|
|
|||
|
|
**趋势图:**
|
|||
|
|
- 日/周/月切换
|
|||
|
|
- 折线图显示能耗趋势
|
|||
|
|
- 柱状图显示充电次数
|
|||
|
|
|
|||
|
|
**导出按钮:**
|
|||
|
|
- 异步导出Excel
|
|||
|
|
- 文件名:`能耗统计_2026年7月.xlsx`
|
|||
|
|
|
|||
|
|
## 质量约束
|
|||
|
|
|
|||
|
|
1. 完成代码后执行 `cargo check` + `tsc --noEmit`,零报错零警告
|
|||
|
|
2. 分层拆分,单函数≤80行,命名语义化,完整注释
|
|||
|
|
3. 所有外部IO/网络请求异常捕获,禁止裸panic
|
|||
|
|
4. 分支逻辑全覆盖,不遗漏兜底分支
|
|||
|
|
5. 常量抽离,不使用废弃API
|
|||
|
|
6. Rust内存安全,React函数组件+Hooks
|