# 员工招聘功能自验收清单

验收日期：2026-04-20

## 验收范围

本次自验收覆盖员工招聘页面与接口联动所需的前后端能力，包括招聘类型、候选人历史工作经历、工作经历单独导入、详情/编辑页展示顺序、面试官字段展示一致性，以及基于现有招聘数据补充联调样例数据。

## 前端页面

- [x] 查询条件保持原有结构，仅新增“招聘类型”筛选项。
- [x] 顶部操作区包含“新增”“导入”“导入工作经历”“导出”。
- [x] 列表列按最新口径展示：招聘记录编号、招聘项目名称、职位名称、候选人姓名、录用情况、学历 / 毕业学校、招聘类型、历史工作经历、操作。
- [x] 列表“操作”列包含“详情”“编辑”“删除”按钮。
- [x] 招聘项目名称列已加宽，长名称不再只显示为“办结”一类截断残片。
- [x] “学历 / 毕业学校”在列表合并展示，详情/编辑中仍保留学历、毕业院校、毕业年月、专业等候选人基础字段。
- [x] 详情页模块顺序为：招聘岗位信息、录用情况、候选人情况、候选人历史工作经历、面试官信息。
- [x] 编辑页模块顺序与详情页保持一致：招聘岗位信息、录用情况、候选人情况、面试官信息。
- [x] 详情页“面试官信息”统一按四个字段展示：面试官1姓名、面试官1工号、面试官2姓名、面试官2工号。
- [x] 详情页不再展示重复的“社招工作经历摘要”，只保留“候选人历史工作经历”。
- [x] 工作经历导入使用独立入口、独立模板、独立上传接口。

## 后端接口与数据结构

- [x] 主表 `ccdi_staff_recruitment` 保留原有创建/更新人员字段命名，不改动既有审计字段口径。
- [x] 主表新增 `recruit_type`，用于区分社招、校招。
- [x] 历史工作经历使用独立表 `ccdi_staff_recruitment_work`，不把工作经历摘要字段放入主表。
- [x] 列表查询聚合返回历史工作经历段数，避免前端列表加载完整经历明细。
- [x] 详情查询返回完整历史工作经历列表。
- [x] 删除招聘记录时同步删除对应历史工作经历。
- [x] 工作经历导入以招聘记录编号为唯一匹配依据。
- [x] 工作经历导入时，候选人姓名、招聘项目名称、职位名称仅用于人工核对和导入校验。
- [x] 工作经历导入时，三个辅助字段与主表不一致则禁止导入。
- [x] 工作经历导入只允许社招记录导入，校招记录禁止导入。
- [x] 同一个招聘记录编号在工作经历导入文件中任意一行失败时，该招聘记录编号下本次所有工作经历均不覆盖入库。

## 数据库与联调样例数据

- [x] 已补充数据库迁移脚本：`sql/migration/2026-04-15-add-staff-recruitment-social-work-summary.sql`。
- [x] 已补充现有数据联调样例脚本：`sql/migration/2026-04-20-seed-staff-recruitment-work-existing-data.sql`。
- [x] 样例脚本不改动已有招聘项目名称、职位名称、候选人姓名、录用情况、面试官等原始业务信息。
- [x] 样例脚本只在招聘类型为空时补充 `recruit_type`，并生成带标记的历史工作经历样例。
- [x] 数据库验证结果：`SOCIAL = 4646`，`CAMPUS = 1355`。
- [x] 数据库验证结果：已生成历史工作经历样例 `25` 条，覆盖社招招聘记录 `20` 条。

## 构建与验证

- [x] 后端编译通过：`mvn -pl ccdi-info-collection -am compile -DskipTests`。
- [x] 前端生产构建通过：`npm run build:prod`。
- [x] 前端构建仅存在体积提示类 warning，未出现编译错误。
- [x] 前端预览截图已生成，覆盖列表、工作经历导入、详情面试官展示。
- [x] 验证过程中启动的前端预览进程已停止，未保留 8088 端口监听。

## 预览截图

- 列表页：`C:\Users\20696\codex-preview\staff-recruitment-work-import-list.png`
- 工作经历导入弹窗：`C:\Users\20696\codex-preview\staff-recruitment-work-import-dialog.png`
- 详情页面试官四字段展示：`C:\Users\20696\codex-preview\staff-recruitment-detail-interviewer-separated.png`

## 注意事项

- 当前机器无法通过 `bin/mysql_utf8_exec.sh` 调用 MySQL 客户端执行中文 SQL，实际数据库脚本执行采用本地 Maven 缓存中的 MySQL JDBC 驱动，并显式设置 `utf8mb4` 会话字符集。
- 列表默认第一页如果主要是校招记录，“历史工作经历”可能显示为 `-`；筛选“社招”后可看到已补充的工作经历段数。
- 仓库中存在与本次招聘功能无关的未跟踪 `docx` 文件，本次未处理、未纳入验收范围。
