# 问题处理文档 — 模块筛选器显示安全测试模块

> **文档版本**: v1.0
> **创建日期**: 2026-07-23
> **问题状态**: 待修复
> **负责人**: czj

---

## 一、问题描述

### 1.1 问题现象

用例管理页面（`/cases`）的"选择模块"筛选器下拉框中，显示了安全测试相关模块（如"API1 - 对象级别授权失效"、"华为安全红线检查"等），与 UI 自动化测试模块混在一起，影响用户体验。

### 1.2 影响范围

- `frontend/src/views/Cases.vue` — 用例管理页面的模块筛选器
- `frontend/src/views/Recorder.vue` — 用例录制页面的模块选择器（同样问题）
- 后端 `/api/modules` API 返回所有模块，无区分

### 1.3 根因分析

| # | 问题点 | 说明 |
|---|--------|------|
| 1 | 模块数据模型缺少区分字段 | `module_type` 字段只有 `standard/custom`，安全测试模块也用 `standard` |
| 2 | 后端 API 无 case_type 过滤 | `/api/modules` 不支持按用例类型（ui/security）过滤 |
| 3 | 前端无条件加载所有模块 | `loadModules()` 函数调用 API 获取全部模块 |

### 1.4 安全测试模块特征

- **ID 前缀**: `sec_`（如 `sec_api01`、`sec_regression`、`sec_redline`）
- **数量**: 12 个安全测试模块
- **用例类型**: `security`

---

## 二、解决方案

### 2.1 方案对比

| 方案 | 描述 | 优点 | 缺点 |
|------|------|------|------|
| **A: 后端API新增参数** | 新增 `case_type` 参数过滤模块 | 统一过滤逻辑，可复用 | 需修改后端+前端 |
| B: 前端过滤 | 前端过滤 `sec_` 前缀模块 | 改动小，快速实现 | 过滤逻辑散落在多处 |
| C: 模块新增字段 | 新增 `case_type` 字段区分模块 | 数据层面区分 | 需迁移数据 |

**推荐方案 A**：后端 API 新增 `case_type` 参数，前端调用时传递 `ui` 只获取 UI 测试模块。

### 2.2 方案A 设计

#### 2.2.1 后端改动

1. **修改 `Module` 模型**（可选，暂不修改字段）：
   - 保持现有 `module_type` 字段
   - 通过模块 ID 前缀判断类型

2. **修改 `/api/modules` 路由**：
   - 新增 `case_type` 查询参数（`ui`/`security`/`all`）
   - 默认 `all` 返回全部
   - `ui` 过滤掉 `sec_` 前缀模块
   - `security` 只返回 `sec_` 前缀模块

3. **修改 `ModuleService.list` 方法**：
   - 增加 `case_type` 参数过滤逻辑

#### 2.2.2 前端改动

1. **修改 `Cases.vue`**：
   - `loadModules()` 调用 API 时传递 `case_type=ui`

2. **修改 `Recorder.vue`**（如有同样问题）：
   - 同上

---

## 三、验收标准

| 验收项 | 验收标准 |
|--------|---------|
| 用例管理模块筛选器 | 只显示 UI 测试模块，不显示安全测试模块 |
| 用例录制模块选择器 | 只显示 UI 测试模块 |
| API 兼容性 | 不传 `case_type` 参数时返回全部模块（向后兼容） |
| 数据库无变化 | 不修改现有数据 |

---

## 四、风险评估

| 风险 | 概率 | 影响 | 缓解措施 |
|------|------|------|---------|
| API 参数默认值影响其他调用方 | 低 | 中 | 默认 `all` 返回全部，向后兼容 |
| 前端其他页面未修改 | 低 | 低 | 全局搜索 `moduleApi.list` 调用 |

---

## 五、相关文件

| 文件 | 说明 |
|------|------|
| `backend/app/routers/modules.py` | 模块 API 路由 |
| `backend/app/services/module_service.py` | 模块服务层 |
| `backend/app/schemas/module.py` | 模块 Schema |
| `frontend/src/views/Cases.vue` | 用例管理页面 |
| `frontend/src/views/Recorder.vue` | 用例录制页面 |
| `frontend/src/api/modules.ts` | 模块 API 封装 |