# 功能测试 - 正向追溯

> 模块：数据中台 / 基础追溯 / 正向追溯 (Forward Traceability)
> 路由：`/data_middleground/basic_traceability/positive_direction_traceability`

## 测试前置条件

- 测试账号具备访问“正向追溯”和“反向追溯”的菜单权限。
- 准备至少一组可查询到数据的物料编码和物料批次。
- 准备至少一个可查询到数据的半成品码。
- 后端接口 `data_middleground/basic_traceability/positive_direction_traceability/list` 和 `export_task` 可正常访问。

## 测试任务列表

| 序号 | 测试项 | 操作步骤 | 预期结果 |
|---:|---|---|---|
| 1 | 页面入口 | 从菜单进入“正向追溯”，或直接访问路由 | 页面正常打开，显示物料编码、物料批次、半成品码筛选项和查询、导出、重置按钮 |
| 2 | 初始查询 | 进入页面后等待默认查询完成 | 表格正常渲染，空数据时显示空态，不出现脚本错误 |
| 3 | 物料编码校验 | 只输入物料编码，不输入物料批次，点击查询 | 页面提示请输入物料批次，不发起有效查询 |
| 4 | 物料批次查询 | 输入物料编码和物料批次，点击查询 | 表格展示匹配数据，包含电池条码、批次号、物料、设备、工序和完成时间 |
| 5 | 半成品码查询 | 输入半成品码，点击查询 | 表格展示匹配数据或空态，页面不报错 |
| 6 | 分页切换 | 查询出多条数据后切换分页 | 当前页数据正确变化，总数显示正确 |
| 7 | 跳转反向追溯 | 点击某行“反向追溯” | 跳转到反向追溯页面，并携带当前行电池条码自动查询 |
| 8 | 导出前校验 | 不输入任何筛选条件时点击导出 | 页面提示请选择筛选条件 |
| 9 | 创建导出任务 | 输入筛选条件后点击导出并确认 | 调用导出任务接口，提示创建下载任务成功，并跳转任务页面 |
| 10 | 重置功能 | 输入筛选条件并查询后点击重置 | 筛选项清空，分页回到第一页并重新加载数据 |
| 11 | 国际化检查 | 切换中英文语言后重新进入页面 | 页面按钮、表格列名和提示文案随语言切换显示 |

## 回归关注点

- 物料编码存在时必须同时输入物料批次。
- 导出任务必须携带当前筛选条件、总数和 `action=download`。
- 反向追溯跳转必须使用行数据中的 `battery_id`。
