This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
## 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. 测试完成后保留修正后的索引;不对生产库执行迁移或验证操作。
|
||||
Reference in New Issue
Block a user