# 执行计划：修复性能测试项目类型 Tab 过滤不生效

> 生成时间：2026-08-21
> 关联问题文档：`_问题处理_项目类型Tab过滤不生效.md`
> 关联修复：`_执行计划_修复项目内任务过滤不生效.md`

---

## 问题概述

性能测试项目管理页面的「标准版 / 项目定制」Tab 切换不生效，两个 Tab 显示完全相同的内容（全部项目）。

**根因**：前端 API 传参使用驼峰 `projectType`，后端路由接收蛇形 `project_type`，Axios 默认不做转换，导致后端参数始终为 `None`，过滤逻辑被跳过。

**与之前修复的 listTasks 是同一个根因**——前端 camelCase ↔ 后端 snake_case 命名不匹配。

## 修复方案

仅修改 `frontend/src/api/performance.ts` 的 `listProjects` 函数，在 API 层将 `projectType` 显式映射为 `project_type`。

---

## 执行步骤

### Step 1: 修改前端 API 参数映射

**文件**：`frontend/src/api/performance.ts`

**改动**：在 `listProjects` 函数中，构建请求参数时将 `projectType` 转换为 `project_type`：

```typescript
/** 获取项目列表 */
export function listProjects(params?: {
  page?: number
  pageSize?: number
  projectType?: string
}): Promise<PerformanceProjectListResponse> {
  const queryParams: Record<string, any> = { ...params }
  // camelCase → snake_case: 后端路由参数为 project_type
  if (params?.projectType !== undefined) {
    queryParams.project_type = params.projectType
    delete queryParams.projectType
  }
  return request.get(`${BASE}/projects`, { params: queryParams })
}
```

**验收标准**：
- `listProjects({ projectType: 'standard' })` → 发送 `?project_type=standard`
- `listProjects({ projectType: 'custom' })` → 发送 `?project_type=custom`
- `listProjects({})` → 不发送 `project_type` 参数（返回全部）

### Step 2: 构建前端

```bash
cd frontend && npm run build
```

**验收标准**：构建成功，无 TypeScript 错误

### Step 3: 部署到 5.60 服务器

```bash
# SCP 前端 dist
scp -r frontend/dist/* ubains@192.168.5.60:/data/third_party/plat-auto-test/frontend/dist/
```

**验收标准**：文件上传成功

### Step 4: 验证

1. 浏览器 **Ctrl+F5** 强刷清除缓存
2. 进入性能测试 → 项目管理
3. 默认「标准版」Tab → 确认只显示 standard 类型的项目
4. 点击「项目定制」Tab → 确认只显示 custom 类型的项目
5. 浏览器 DevTools → Network → 查看请求 URL 参数是否为 `project_type=xxx`

---

## 改动清单

| 文件 | 类型 | 说明 |
|------|------|------|
| `frontend/src/api/performance.ts` | **MODIFY** | `listProjects` 函数增加 `projectType` → `project_type` 参数映射 |

**预计耗时**：< 5 分钟（改 1 处 + 构建 + 部署 + 验证）

---

## 与之前修复的对比

| 修复项 | 文件 | 函数 | 映射 | 状态 |
|--------|------|------|------|------|
| 项目内任务过滤 | `performance.ts` | `listTasks` | `projectId` → `project_id` | ✅ 已部署 |
| 项目类型 Tab 过滤 | `performance.ts` | `listProjects` | `projectType` → `project_type` | 🔄 本次修复 |

---

*本文档由 Claude Code 生成*