# 01 — 建立回调 ICCID 精确唯一性发布门禁

**What to build:** 发布人员可以在启用运营商回调前检查未删除卡的 19 位和 20 位 ICCID 是否存在冲突，并在数据安全时把现有普通部分索引升级为部分唯一索引。若发现重复，迁移必须安全中止并给出修复依据，避免回调把观测应用到任意一张卡。

**Blocked by:** 无——可立即开始。

**Status:** ready-for-agent

**架构通道:** Infrastructure。

**完整业务边界:** 本票收口运营商回调所需的 ICCID 精确唯一性检查、迁移、回滚和发布门禁。明确不改变 ICCID 展示、导入、模糊查询或现有卡识别规则，不清理或自动合并生产重复数据。

- [ ] 向上迁移在建立唯一约束前分别检查未删除卡的 19 位和非空 20 位 ICCID 重复组，发现冲突时安全失败且不留下半完成结构。
- [ ] 未删除卡的 19 位和非空 20 位 ICCID 均由部分唯一索引保证精确唯一，软删除记录不阻塞合法新记录。
- [ ] 向下迁移只恢复本需求触碰的索引形态，不删除 ICCID 列、不修改卡数据，也不影响其他表索引。
- [ ] 迁移测试覆盖无冲突升级、19 位冲突、20 位冲突、软删除重复和 down/up 重放，并验证失败后可恢复。
- [ ] 发布说明明确生产检查、冲突修复责任、停止条件和回滚步骤，不把开发库无重复当作生产事实。
