# 执行计划：修复性能测试项目内任务过滤不生效

> 生成时间：2026-08-21
> 关联问题文档：`_问题处理_项目内任务过滤不生效.md`
> 关联 PRD：`_PRD_性能测试项目管理与批量执行.md`

---

## 问题概述

性能测试模块的项目详情页任务列表不按项目过滤，显示全部任务。

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

## 修复方案

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

---

## 执行步骤

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

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

**改动**：在 `listTasks` 函数中，构建请求参数时将 `projectId` 转换为 `project_id`：

```typescript
export function listTasks(params?: {
  page?: number
  pageSize?: number
  status?: string
  projectId?: string | null
}): Promise<PerformanceTaskListResponse> {
  const queryParams: Record<string, any> = { ...params }
  // camelCase → snake_case: 后端路由参数为 project_id
  if (params?.projectId !== undefined) {
    queryParams.project_id = params.projectId
    delete queryParams.projectId
  }
  return request.get(`${BASE}/tasks`, { params: queryParams })
}
```

**验收标准**：
- `listTasks({ projectId: 'proj_xxx' })` → 发送 `?project_id=proj_xxx`
- `listTasks({ projectId: null })` → 发送 `?project_id=null`
- `listTasks({})` → 不发送 `project_id` 参数

### 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. 任务列表应只显示该项目的任务
4. 浏览器 DevTools → Network → 查看请求 URL 参数是否为 `project_id=xxx`

---

## 改动清单

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

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

---

*本文档由 Claude Code 生成*