# 2026-04-22 招投标信息维护真实页面综合测试记录

## 1. 测试目标

- 在真实浏览器中进入“信息维护-招投标信息维护”页面，验证页面可访问、列表可加载、无明显前端报错。
- 覆盖招投标信息维护核心业务链路：
  - 列表加载
  - 条件查询
  - 详情查看
  - 新增
  - 编辑
  - 删除
  - 导入模板下载
  - 双 Sheet Excel 导入
  - 导入失败记录查看
- 测试结束后清理本轮新增/导入成功数据，并关闭测试过程启动的前端进程与浏览器会话。

## 2. 测试环境

- 前端地址：`http://localhost:62319`
- 后端地址：`http://127.0.0.1:62318`
- Mock 服务：`http://127.0.0.1:8000`
- 前端 Node 版本：`nvm use 14.21.3`
- 浏览器：Playwright headed 模式真实浏览器
- 登录方式：通过真实登录页使用预填测试账号 `admin / admin123` 登录后进入页面
- 测试页面：`http://localhost:62319/maintain/purchaseTransaction`

## 3. 测试文件

- 页面下载模板：
  - `/Users/wkc/Desktop/ccdi/ccdi/output/playwright/bidding-maintenance-test/.playwright-cli/招投标信息维护导入模板-1776842565558.xlsx`
- 生成导入样本：
  - `/Users/wkc/Desktop/ccdi/ccdi/output/spreadsheet/bidding_info_import_browser_mixed.xlsx`
- Playwright 上传副本：
  - `/Users/wkc/Desktop/ccdi/ccdi/output/playwright/bidding-maintenance-test/bidding_info_import_browser_mixed.xlsx`

## 4. 页面测试过程与结果

### 4.1 页面进入与基础加载

- 从真实登录页登录后，通过顶部菜单进入“信息维护-招投标信息维护”。
- 页面面包屑、菜单高亮、列表列头显示正常。
- 关键列表列正常展示：
  - `中标供应商`
  - `参与供应商数`
  - `预算金额(元)`
- Playwright 网络面板确认首屏关键请求均返回 `200`：
  - `/dev-api/getInfo`
  - `/dev-api/getRouters`
  - `/dev-api/ccdi/purchaseTransaction/list`
- Playwright 控制台未发现 warning。

### 4.2 详情查看

- 打开首条现有记录详情：
  - `LSFXMOCKP2PUR001`
- 验证通过：
  - 基本信息、金额信息、重要日期、申请人信息正常展示
  - 供应商明细表正常展示
  - 供应商排序、中标标识、统一信用代码、联系人、联系电话、银行账户展示正确

### 4.3 新增

- 新增测试单据：
  - 采购事项ID：`AUTOBID20260422151036`
  - 项目名称：`自动化招投标测试项目-1036`
- 新增时录入两条供应商：
  - `杭州自动化供应商A有限公司`
  - `杭州自动化供应商B有限公司`
- 将第 2 条供应商标记为中标后提交成功。
- 列表校验通过：
  - 新增记录进入列表首行
  - `中标供应商` 显示为 `杭州自动化供应商B有限公司`
  - `参与供应商数` 显示为 `2`
  - `预算金额(元)`、申请人、申请部门、申请日期与录入一致

### 4.4 新增后详情复验

- 打开新增记录详情后验证通过：
  - 两条供应商都在详情表中展示
  - 第 1 条显示 `参标`
  - 第 2 条显示 `中标`
  - 排序、联系人、联系电话、银行账户与录入一致
  - 全部重要日期、采购负责人信息正确回显

### 4.5 编辑

- 编辑同一条测试单据，修改内容：
  - 项目名称改为 `自动化招投标测试项目-1036-已改`
  - 标的物名称改为 `服务器及配件-1036-复核`
  - 预算金额改为 `258000`
  - 将中标供应商从 `杭州自动化供应商B有限公司` 切换为 `杭州自动化供应商A有限公司`
- 保存后列表校验通过：
  - 项目名称、标的物名称、预算金额已更新
  - `中标供应商` 摘要同步更新为 `杭州自动化供应商A有限公司`
  - `参与供应商数` 仍为 `2`

### 4.6 条件查询

- 以编辑后的项目名称 `自动化招投标测试项目-1036-已改` 进行查询。
- 查询结果：
  - 分页总数显示 `共 1 条`
  - 列表首条采购事项ID为 `AUTOBID20260422151036`
- 说明项目名称条件查询可正常命中目标记录。

### 4.7 导入模板下载

- 在真实页面导入弹窗中点击“下载模板”。
- 下载结果正常，模板包含两个 Sheet：
  - `招投标主信息`
  - `供应商明细`

### 4.8 导入

- 使用自制双 Sheet 测试文件 `bidding_info_import_browser_mixed.xlsx` 发起导入。
- 测试文件包含 2 个采购事项ID：
  - 成功样本：`IMPBID20260422152321A`
  - 失败样本：`IMPBID20260422152321B`
- 导入后页面结果验证通过：
  - 成功样本进入列表
  - 其 `中标供应商` 显示为 `导入供应商乙有限公司`
  - 其 `参与供应商数` 显示为 `2`
  - 页面出现“查看导入失败记录”按钮

### 4.9 导入失败记录

- 打开“查看导入失败记录”弹窗。
- 页面失败记录命中：
  - 采购事项ID：`IMPBID20260422152321B`
  - 项目名称：`导入失败项目-152321`
  - 标的物名称：`失败样例设备-152321`
  - 失败原因：`申请人工号必须为7位数字`
- 说明导入失败记录分页、失败原因展示链路正常。

### 4.10 删除与清理

- 通过真实页面删除以下两条本轮测试产生的成功数据：
  - `AUTOBID20260422151036`
  - `IMPBID20260422152321A`
- 删除时均经过页面二次确认弹窗，删除成功后搜索结果回到 `共 0 条`。
- 清理本地导入任务缓存：
  - 已移除 `localStorage` 中的 `purchase_transaction_import_last_task`
- 页面刷新后，“查看导入失败记录”按钮已消失。
- 最终列表总数恢复为：
  - `共 2004 条`

## 5. 结论

- 招投标信息维护模块在真实页面下的核心链路测试通过。
- 本次已覆盖：
  - 页面进入与真实登录
  - 列表展示
  - 条件查询
  - 详情查看
  - 新增
  - 编辑
  - 删除
  - 导入模板下载
  - 双 Sheet 导入
  - 导入失败记录查看
- 本轮测试未发现阻断性缺陷。
- 本轮新增和导入成功的数据已清理，列表总数已回到测试前水平。

## 6. 测试收尾

- 已清理本轮新增/导入成功业务数据。
- 已清理前端本地导入任务缓存。
- 待测试完成后关闭：
  - Playwright 浏览器会话
  - 前端 `npm run dev` 进程
