charging-cabinet/tasks/004-organization-management.md
2026-07-02 05:38:01 +08:00

120 lines
4.7 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.

# 任务004组织架构管理
## 目标
实现组织、项目、设备的增删改查,树状菜单展示,设备划拨功能。
## 后端API
### 组织管理
```
GET /api/organizations # 组织列表
POST /api/organizations # 创建组织
PUT /api/organizations/:id # 更新组织
DELETE /api/organizations/:id # 删除组织
```
### 项目管理
```
GET /api/organizations/:org_id/projects # 项目列表(按组织)
POST /api/organizations/:org_id/projects # 创建项目
PUT /api/projects/:id # 更新项目
DELETE /api/projects/:id # 删除项目
```
### 设备管理
```
GET /api/projects/:project_id/cabinets # 柜子列表(按项目)
POST /api/cabinets # 添加柜子支持批量IMEI
PUT /api/cabinets/:id # 更新柜子(划拨项目)
DELETE /api/cabinets/:id # 删除柜子
POST /api/cabinets/:id/regenerate-auth # 重新生成auth_str
```
### 树状结构
```
GET /api/organization-tree # 返回完整树:组织→项目→设备
```
返回格式:
```json
{
"id": 1,
"name": "组织A",
"children": [
{
"id": 1,
"name": "项目1",
"children": [
{"id": 1, "abstract_id": "10-00000001", "imei": "123456789012345", "status": 1}
]
}
]
}
```
## 前端页面
### 设备管理页
**布局:**
```
┌─────────────────┬──────────────────────────────────
│ 组织架构树 │ 卡片网格 │
│ ├─ 全部 │ ┌─────┐ ┌─────┐ ┌─────┐ │
│ ├─ 组织A │ │柜子1 │ │柜子2 │ │柜子3 │ │
│ │ ├─ 项目1 │ │ID │ │ID │ │ID │ │
│ │ └─ 项目2 │ │状态 │ │状态 │ │状态 │ │
│ ─ 组织B │ └─────┘ └─────┘ └─────┘ │
│ │ │
└─────────────────┴──────────────────────────────────┘
```
**左侧树:**
- 显示组织→项目→设备树状结构
- 右键菜单:添加组织、添加项目、编辑、删除
- 点击节点过滤右侧卡片
**右侧卡片:**
- 显示柜子ID、状态在线/离线/充电中/故障)
- 点击卡片进入柜子详情页
### 柜子详情页
**布局:**
```
┌──────────────────────────────────────────────┐
│ ← 返回 柜子10-00000000 状态: 在线 │
├──────────────────────────────────────────────┤
│ 仓板1 (ID:1) │
│ ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐│
│ │通道1 │ │通道2 │ │通道3 │ │通道4 │ │通道5 │ │通道6 ││
│ │状态 │ │状态 │ │状态 │ │状态 │ │状态 │ │状态 ││
│ │电压 │ │电压 │ │电压 │ │电压 │ │电压 │ │电压 ││
│ │电流 │ │电流 │ │电流 │ │电流 │ │电流 │ │电流 ││
│ │功率 │ │功率 │ │功率 │ │功率 │ │功率 │ │功率 ││
│ └─────┘ └─────┘ └─────┘ └─────┘ └─────┘ └─────┘│
├──────────────────────────────────────────────┤
│ 仓板2 (ID:2) ... │
└──────────────────────────────────────────────
```
**通道卡片显示:** 工作状态、电压、电流、功率
**点击通道 → 模态框显示充电记录**
### 添加柜子弹窗
- 文本框输入IMEI一行一个支持批量
- 选择所属组织/项目
- 提交后后端生成auth_str
## 质量约束
1. 完成代码后执行 `cargo check` + `tsc --noEmit`,零报错零警告
2. 分层拆分单函数≤80行命名语义化完整注释
3. 所有外部IO/网络请求异常捕获禁止裸panic
4. 分支逻辑全覆盖,不遗漏兜底分支
5. 常量抽离不使用废弃API
6. Rust内存安全React函数组件+Hooks