Files
junhong_cmp_fiber/openspec/changes/archive/2026-08-10-fix-iccid-uniqueness-migration/design.md
break f15a64395f
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m30s
修复反馈
2026-08-10 16:30:38 +08:00

41 lines
1.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## 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
1. 在测试环境停止卡写入后,按修正后的 000178 谓词定向重建两个 ICCID 唯一索引。
2. 验证两个索引均为唯一索引且谓词按原始 ICCID 长度限定,并执行 19/20 位重复组检查。
3. 测试完成后保留修正后的索引;不对生产库执行迁移或验证操作。