All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m30s
1.9 KiB
1.9 KiB
Context
见 proposal.md。000178 在版本 140 之后尚未应用于生产库;其迁移前校验和唯一索引均把所有 iccid_19 纳入唯一范围,与双列模型中“20 位卡以完整 iccid_20 识别”的语义冲突。
Goals / Non-Goals
Goals:
- 在测试环境验证版本 140 生产库所需的 ICCID 索引语义。
- 为两种 ICCID 长度分别建立正确的唯一性约束。
- 保持查询索引名称与现有代码兼容。
Non-Goals:
- 不清理、合并或修改现有卡数据。
- 不改变 ICCID 查询接口或导入逻辑。
Decisions
将 000178 的唯一范围限定为对应原始长度
iccid_19 冲突扫描和唯一索引增加 length(iccid) = 19;iccid_20 冲突扫描和唯一索引增加 length(iccid) = 20。
直接修正 000178,而不是新增后续迁移:生产库仍位于版本 140,必须能连续执行历史链路;新增迁移无法绕过 000178 的失败。该文件尚未在生产应用,变更需在上线前完成仓库内所有消费方同步。
保留双列格式校验
保留对 19/20 位原始值与派生列对应关系的校验,避免仅放宽唯一索引而掩盖错误回填。
Risks / Trade-offs
- [测试库已处于更高迁移版本] → 直接按修正后的 000178 谓词定向重建两个索引并核对结果。
- [其他环境已经执行旧版 000178] → 迁移内容不会自动重放;上线前以索引定义核对并按同一谓词重建。
- [错误编辑已发布迁移] → 仅限生产首次执行前的本次兼容修正,发布说明记录文件校验值。
Migration Plan
- 在测试环境停止卡写入后,按修正后的 000178 谓词定向重建两个 ICCID 唯一索引。
- 验证两个索引均为唯一索引且谓词按原始 ICCID 长度限定,并执行 19/20 位重复组检查。
- 测试完成后保留修正后的索引;不对生产库执行迁移或验证操作。