# 2026-03-19 员工收入与亲属补数实施记录

## 背景

- 当前 `ccdi_base_staff` 共 1004 名员工，其中仅 2 名员工已维护 `annual_income`
- 当前 `ccdi_staff_fmy_relation` 已存在 3004 条员工亲属数据，但只覆盖 53 名员工，且单人亲属数量集中在 42-82 条，不符合“每个员工 1-3 个亲属”的目标
- 现有员工资产表中有 1 条亲属关系被 2 条资产记录引用，补数时需要保留该关系，避免资产详情失联

## 本次处理

1. 新增增量脚本 `sql/migration/2026-03-19-backfill-staff-income-and-relatives.sql`
2. 对 `ccdi_base_staff` 中 `annual_income IS NULL` 的员工补齐年收入，保留已有收入值不覆盖
3. 识别并保留已与 `ccdi_asset_info` 建立关联的员工亲属关系
4. 清理旧的员工亲属数据后，按员工主数据重新生成每人 1-3 条亲属关系
5. 为新生成和保留的亲属统一补齐 `annual_income`、有效状态和基础元数据

## 数据规则

- 员工年收入仅补空值，使用固定公式生成，保证脚本重复执行时口径稳定
- 员工亲属数量按 `staff_id % 3 + 1` 生成，因此每名员工最终稳定为 1-3 条亲属
- 生成亲属关系类型按顺序落为 `配偶 / 父亲 / 母亲`
- 若某员工已有被资产引用的亲属，则先保留该亲属，再补齐剩余条数

## 验证项

- 执行后 `ccdi_base_staff` 的 `annual_income` 空值应为 `0`
- 执行后所有员工的亲属数量分布只允许出现 `1`、`2`、`3`
- 已挂到亲属名下的 2 条资产仍可通过保留的亲属证件号关联到员工

## 实际执行结果

- 已执行：`bin/mysql_utf8_exec.sh sql/migration/2026-03-19-backfill-staff-income-and-relatives.sql`
- 员工收入校验结果：`staff_count = 1004`，`income_null_count = 0`，`annual_income` 区间为 `120000.00 ~ 274000.00`
- 员工亲属数量分布：`1条=335人`，`2条=334人`，`3条=335人`
- 资产保留校验：员工 `330101198802020033` 名下原有测试亲属 `330101199202020044` 已保留，仍关联 `2` 条资产记录
