# 员工招聘列表排序规则冲突修复实施计划

## 保存路径确认

- 路径：`docs/plans/backend/2026-04-22-staff-recruitment-collation-fix-backend-implementation.md`
- 归类：后端实施计划

## 背景

- 员工招聘列表查询执行 `ccdi_staff_recruitment` 与 `ccdi_staff_recruitment_work` 的 `recruit_id` 关联时，报错 `Illegal mix of collations (utf8mb4_0900_ai_ci) and (utf8mb4_general_ci)`。
- 现有招聘主表已被纳入全库统一排序规则脚本，但历史工作经历子表在建表时未显式声明 `utf8mb4_general_ci`，且未被纳入统一修复脚本，导致在 MySQL 8 环境中可能沿用默认 `utf8mb4_0900_ai_ci`。

## 实施范围

- 后端 MyBatis 查询 XML
- 招聘相关 SQL 建表脚本
- 数据库增量迁移脚本

## 实施步骤

1. 修改招聘列表查询 SQL，在 `ccdi_staff_recruitment_work.recruit_id` 聚合与关联时显式使用 `utf8mb4_general_ci`，先恢复查询可用性。
2. 修正 `2026-04-15-add-staff-recruitment-social-work-summary.sql`，为 `ccdi_staff_recruitment_work` 建表语句补齐 `COLLATE=utf8mb4_general_ci`。
3. 补充增量脚本，将现有库中的 `ccdi_staff_recruitment_work` 转换为 `utf8mb4_general_ci`。
4. 更新全库统一排序规则脚本，将该表纳入统一修复范围，避免后续漏执行。
5. 编译受影响模块，确认 Mapper XML 与资源装配正常。

## 验证要点

- `selectRecruitmentPage` 查询不再因 `recruit_id` 关联报排序规则冲突。
- `ccdi_staff_recruitment_work` 表级与字符字段排序规则统一为 `utf8mb4_general_ci`。
- `mvn -pl ccdi-info-collection -am compile` 通过。
