# 员工亲属实体关联导入全场景真实页面测试记录

## 测试时间

2026-04-26 16:02

## 测试范围

- 页面：员工亲属实体关联
- 实际访问地址：`http://localhost:8080/maintain/staffEnterpriseRelation`
- 导入接口：`/ccdi/staffEnterpriseRelation/importData`
- 导入状态接口：`/ccdi/staffEnterpriseRelation/importStatus/{taskId}`
- 失败记录接口：`/ccdi/staffEnterpriseRelation/importFailures/{taskId}`

## 环境信息

- 后端：本地 `62318` 端口既有进程
- 前端：`ruoyi-ui` 使用 `.nvmrc` 指定的 Node `14.21.3`，执行 `npm run dev -- --port 8080 --open false`
- 浏览器：Playwright 启动本机 Google Chrome，访问真实业务页面

## 前置数据

- 有效亲属：`320101199201010051 LSFX低收入亲属 / 导入验证员工20260317`
- 临时无效亲属：`320101199801010421`
- 测试企业名前缀：`全场景导入测试企业520344`

## 覆盖场景

1. 空模板
   - 行数：0
   - 预期：页面提示 `至少需要一条数据`
   - 结果：通过

2. 基础校验失败
   - 行数：9
   - 覆盖：
     - 亲属身份证号为空
     - 统一社会信用代码为空
     - 企业名称为空
     - 亲属身份证号格式错误
     - 统一社会信用代码格式错误
     - 亲属身份证号不存在
     - 亲属身份证号不是有效员工亲属
     - 企业名称长度超过 200 个字符
     - 关联人在企业的职务长度超过 100 个字符
   - 结果：成功 0 条，失败 9 条，失败记录弹窗逐项展示对应原因

3. 全成功
   - 行数：3
   - 结果：成功 3 条，失败 0 条，列表可查询到成功导入记录

4. 成功失败混合
   - 行数：5
   - 覆盖：
     - 2 条有效数据成功导入
     - 文件内重复 `亲属身份证号 + 统一社会信用代码` 组合
     - 亲属身份证号不存在
     - 统一社会信用代码格式错误
   - 结果：成功 2 条，失败 3 条，成功记录可查询，失败记录弹窗展示对应原因

5. 已存在组合
   - 行数：1
   - 前置：使用混合场景已成功导入的组合
   - 预期：拦截已存在的 `亲属身份证号 + 统一社会信用代码` 组合
   - 结果：成功 0 条，失败 1 条，失败记录展示 `组合已存在，请勿重复导入`

## 验证结论

- 导入模板下载正常。
- 基于当前页面模板生成的多份测试文件均可在真实页面上传。
- 空模板、基础字段校验、有效亲属校验、文件内重复、库内已存在组合、全成功、成功失败混合均已覆盖。
- 异步导入轮询、成功统计、失败统计、失败记录按钮和失败记录弹窗均符合预期。
- 成功导入记录能够在列表查询到。
- 本轮成功写入的 5 条测试数据已删除。
- 本轮临时新增的无效亲属前置数据已删除。
- 后端接口复核测试企业名前缀返回 `total = 0`。
- 浏览器控制台无错误。
- 测试过程中无失败请求。

## 测试产物

- 下载模板：`output/playwright/staff-family-enterprise-allcases-template-2026-04-26T08-02-00-344Z.xlsx`
- 场景样本文件与截图位于 `output/playwright/`，文件名前缀为 `staff-family-enterprise-allcases-*2026-04-26T08-02-00-344Z`。
- 临时 Playwright 脚本位于 `output/playwright/staff-family-enterprise-relation-import-all-cases-browser-test.js`，该目录为测试输出目录，不纳入 Git 提交范围。
