# 招聘信息历史工作经历手动编辑后端实施计划

## 文档信息

- 保存路径：`docs/plans/backend/2026-04-22-staff-recruitment-work-experience-manual-edit-plan.md`
- 适用范围：招聘信息管理编辑接口
- 需求目标：在招聘信息编辑页支持手动维护历史工作经历，并保证保存后落到 `ccdi_staff_recruitment_work` 子表

## 实施范围

1. 扩展招聘信息编辑 DTO，允许接收历史工作经历列表。
2. 增加历史工作经历子项 DTO，并对字符长度、年月格式进行基础校验。
3. 调整招聘信息编辑服务：
   - 主表 `ccdi_staff_recruitment` 继续按原逻辑更新；
   - 当招聘类型为 `SOCIAL` 且前端传入工作经历列表时，按招聘记录编号先删后插覆盖子表；
   - 当招聘类型改为 `CAMPUS` 时，删除该记录已存在的历史工作经历。

## 实施步骤

1. 新增历史工作经历编辑 DTO，约束 `companyName`、`departmentName`、`positionName`、年月等字段长度与格式。
2. 在 `CcdiStaffRecruitmentEditDTO` 中增加 `workExperienceList` 字段，并启用嵌套校验。
3. 在 `CcdiStaffRecruitmentServiceImpl.updateRecruitment` 中增加子表覆盖保存逻辑。
4. 保持详情查询逻辑不变，继续通过已有 `selectWorkExperienceList` 返回子表明细。

## 影响评估

- 仅影响招聘信息编辑接口，不影响招聘信息导入、详情查询、列表分页逻辑。
- 不新增数据库结构变更，不新增菜单或权限。
- 旧前端若未传 `workExperienceList`，社招编辑仍保留已有工作经历数据，不会被误删。

## 验证要点

1. 编辑社招记录时可提交多条历史工作经历并成功保存。
2. 编辑社招记录时删除全部历史工作经历后提交，子表数据应被清空。
3. 将社招记录改为校招后提交，历史工作经历应自动删除。
4. 非法年月格式或超长字段应被后端校验拒绝。
