101 lines
2.8 KiB
Markdown
101 lines
2.8 KiB
Markdown
|
|
# 任务011:代码质量优化
|
|||
|
|
|
|||
|
|
## 目标
|
|||
|
|
|
|||
|
|
修复代码审查发现的警告问题,提升代码质量。
|
|||
|
|
|
|||
|
|
## 修复清单
|
|||
|
|
|
|||
|
|
### 1. 拆分大文件( 中优先级)
|
|||
|
|
|
|||
|
|
**organizations.rs(693行)**
|
|||
|
|
拆分为:
|
|||
|
|
- `src/routes/organizations.rs` — 组织CRUD(~150行)
|
|||
|
|
- `src/routes/projects.rs` — 项目CRUD(~150行)
|
|||
|
|
- `src/routes/cabinets.rs` — 设备CRUD+详情(~200行)
|
|||
|
|
- `src/routes/cabinet_tree.rs` — 树状结构(~100行)
|
|||
|
|
|
|||
|
|
**users.rs(495行)**
|
|||
|
|
拆分为:
|
|||
|
|
- `src/routes/users.rs` — 用户CRUD(~200行)
|
|||
|
|
- `src/routes/user_operations.rs` — 操作日志辅助函数(~100行)
|
|||
|
|
|
|||
|
|
**devices/index.tsx(631行)**
|
|||
|
|
拆分为:
|
|||
|
|
- `src/pages/devices/index.tsx` — 主页面(~150行)
|
|||
|
|
- `src/pages/devices/OrganizationTree.tsx` — 组织树组件(~150行)
|
|||
|
|
- `src/pages/devices/CabinetGrid.tsx` — 柜子卡片网格(~150行)
|
|||
|
|
- `src/pages/devices/AddCabinetModal.tsx` — 添加柜子弹窗(~100行)
|
|||
|
|
|
|||
|
|
### 2. JWT密钥安全检查(🟡 中优先级)
|
|||
|
|
|
|||
|
|
**位置:** `src/middleware/auth.rs:28`
|
|||
|
|
|
|||
|
|
**修复方案:**
|
|||
|
|
启动时检测默认密钥,打印WARN日志。
|
|||
|
|
|
|||
|
|
```rust
|
|||
|
|
// config.rs 添加
|
|||
|
|
impl Config {
|
|||
|
|
pub fn validate(&self) -> Result<()> {
|
|||
|
|
if self.jwt_secret == JWT_SECRET_DEFAULT {
|
|||
|
|
tracing::warn!("⚠️ 使用默认JWT密钥,生产环境请设置JWT_SECRET环境变量");
|
|||
|
|
}
|
|||
|
|
Ok(())
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// main.rs 启动时调用
|
|||
|
|
let config = Config::from_env()?;
|
|||
|
|
config.validate()?; // 新增
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. 修复IconFolderOpen构建错误(🟡 中优先级)
|
|||
|
|
|
|||
|
|
**位置:** `src/pages/devices/index.tsx:33`
|
|||
|
|
|
|||
|
|
**修复方案:**
|
|||
|
|
替换为可用图标。
|
|||
|
|
|
|||
|
|
```tsx
|
|||
|
|
// 错误
|
|||
|
|
import { IconFolderOpen } from '@arco-design/web-react/icon';
|
|||
|
|
|
|||
|
|
// 修复(选择存在的图标)
|
|||
|
|
import { IconFolder } from '@arco-design/web-react/icon';
|
|||
|
|
// 或
|
|||
|
|
import { IconApps } from '@arco-design/web-react/icon';
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 4. 清理clippy警告(🟢 低优先级)
|
|||
|
|
|
|||
|
|
**修复方案:**
|
|||
|
|
```bash
|
|||
|
|
cd software/server
|
|||
|
|
cargo clippy --fix --allow-dirty
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
自动修复大部分clippy警告(collapsible_if、manual_unwrap_or_default等)。
|
|||
|
|
|
|||
|
|
### 5. H5充电曲线数据(🟢 低优先级)
|
|||
|
|
|
|||
|
|
**位置:** `src/h5/pages/compartment-detail.tsx:156`
|
|||
|
|
|
|||
|
|
**修复方案:**
|
|||
|
|
添加TODO注释,标记为待后端提供数据后替换。
|
|||
|
|
|
|||
|
|
```tsx
|
|||
|
|
// TODO: 待后端提供充电曲线API后替换为真实数据
|
|||
|
|
const mockChartData = [30, 45, 55, ...];
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 质量约束
|
|||
|
|
|
|||
|
|
1. 完成代码后执行 `cargo check` + `cargo clippy` + `tsc --noEmit`,零报错零警告
|
|||
|
|
2. 分层拆分,单函数≤80行,命名语义化,完整注释
|
|||
|
|
3. 所有外部IO/网络请求异常捕获,禁止裸panic
|
|||
|
|
4. 分支逻辑全覆盖,不遗漏兜底分支
|
|||
|
|
5. 常量抽离,不使用废弃API
|
|||
|
|
6. Rust内存安全,React函数组件+Hooks
|
|||
|
|
7. 拆分后的文件职责单一,无循环依赖
|