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. 拆分后的文件职责单一,无循环依赖
|