105 lines
7.3 KiB
Markdown

# Matrix: REV-004 新旧标识映射矩阵 v1
## 1. 说明
本矩阵用于定义迁移后必须保留的新旧标识关系,确保以下能力不丢失:
- 迁移验收对账
- 历史明细追溯
- 审计与问题定位
- 旧单据到新业务对象的关系恢复
如果没有这张矩阵,即使数据迁过去,后续也很容易出现“查得到结果,但找不回原单据链”的问题。
## 2. 标识映射原则
- 每一类核心业务对象都必须保留“旧主键 + 旧业务单号 + 新主键 + 新业务单号”的最小映射能力。
- 对于账单、流水、申请单、发票号等强业务标识,不允许只保留新值不保留旧值。
- 若新系统不存在完全等价的新业务单号,至少保留新主键和映射批次号。
- 新旧标识映射对象必须可按批次、对象类型和映射状态查询。
## 3. 映射矩阵
| 旧对象 | 旧主键 | 旧业务标识 | 新对象 | 新主键 | 新业务标识 | 映射承接层 | 最低保留要求 | 说明 |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 营业账 | `FeeId` | 原账单号 / 历史账单编号 | `biz_charge` | `chargeId` | 新账单号或业务编号 | `mapping-layer` | `legacyId``targetId``legacyBizNo``targetBizNo` | 账单是迁移核查主线之一 |
| 营业账明细 | `Id` 或明细主键 | 无统一业务单号时可为空 | `biz_charge_detail` | `chargeDetailId` | 可选 | `mapping-layer` | `legacyId``targetId``sourceFeeId` | 明细至少能挂回主账单 |
| 账户 | `AccountId` | 原账户编号 | 账户承接对象 | `accountId` | 新账户编号 | `mapping-layer` | `legacyId``targetId``legacyBizNo``targetBizNo` | 预存余额迁移核查主线 |
| 账户流水 | `AccLogId` | 原流水号 / 原暂收流水号 | 账户流水承接对象或只读映射 | `accountLogId` 或映射主键 | 新流水号 | `mapping-layer` + `history-readonly` | `legacyId``legacyBizNo``targetId/targetBizNo` | 退款、冲正、转预存必须依赖该链路 |
| 收费汇总 | `CollectId` | 结账批次号 / 汇总编号 | 收费汇总承接对象 | `collectId` | 新汇总编号 | `mapping-layer` + `history-readonly` | `legacyId``targetId`、批次号 | 汇总核对主线 |
| 收费小计 | `SubtotalId` | 原小计编号 | 小计承接对象或只读映射 | `subtotalId` | 新小计编号 | `history-readonly` | `legacyId``targetId` | 一般不作为主业务单号,但需追溯 |
| 收费明细 | `DetailId` | `TradeCode` / `ThirdPartyNum` / 第三方流水号 | 交易对象 / 收费明细承接对象 | `transactionId` 或映射主键 | 新交易流水号 | `mapping-layer` | `legacyId``legacyBizNo``targetId``targetBizNo` | 收费、退款、冲正核查关键链路 |
| 退款账 | `RefundId` | 原退款单号 | 退款场景映射对象 | 映射主键 | 新调整单号 / 新退款单号 | `mapping-layer` | `legacyId``targetBizNo` | 若新系统无独立退款主键,至少保留新业务单号 |
| 预存退款汇总 | `Id` | 原申请单号 | 退款申请映射对象 | 映射主键 | 新调整单号 | `mapping-layer` + `history-readonly` | `legacyId``legacyBizNo``targetBizNo` | 旧申请单是历史审批追溯主线 |
| 预存退款详情 | `Id` | 原详情单号 | 退款明细映射对象 | 映射主键 | 新明细引用 | `mapping-layer` + `history-readonly` | `legacyId``sourceAccountLogId``targetAccountLogId` | 重点保留原流水到目标流水关系 |
| 调整减免汇总 | `Id` | 原调整申请单号 | 调整场景映射对象 | 映射主键 | 新调整单号 | `mapping-layer` + `history-readonly` | `legacyId``legacyBizNo``targetBizNo` | 金额/水量调整的历史入口 |
| 调整减免明细 | `Id` | 无统一业务单号 | 调整明细映射对象 | 映射主键 | 新账单引用 / 新明细引用 | `mapping-layer` | `legacyId``sourceFeeId``targetFeeId` | 前后账单链必须保留 |
| 价差调整汇总 | `Id` | 原价差调整申请单号 | 价差调整映射对象 | 映射主键 | 新调整单号 | `mapping-layer` + `history-readonly` | `legacyId``legacyBizNo``targetBizNo` | 若不单独在线化,也必须保留申请号映射 |
| 已销调整汇总 | `Id` | 原已销调整申请单号 | 冲正/调整映射对象 | 映射主键 | 新调整单号 | `mapping-layer` + `history-readonly` | `legacyId``legacyBizNo``targetBizNo` | 与收费结果链强关联 |
| 坏账汇总 | `Id` | 原坏账申请单号 | 坏账申请映射对象 | 映射主键 | 新调整单号 / 新申请单号 | `mapping-layer` + `history-readonly` | `legacyId``legacyBizNo``targetBizNo` | 坏账审批与生效查询主线 |
| 坏账明细 | `Id` | 无统一业务单号 | 坏账明细映射对象 | 映射主键 | 新账单引用 | `mapping-layer` | `legacyId``sourceFeeId` | 保证坏账记录能追到原账单 |
| 发票主表 | `Id` / `InvoiceInfoId` | `InvoiceCode + InvoiceNumber` / `OrderNo` / `SerialNo` | `biz_invoice` | `invoiceId` | 新申请单号 / 新受理号 / 新发票号 | `mapping-layer` | `legacyId``legacyBizNo``targetId``targetBizNo` | 发票查询、补打和对账主线 |
| 发票明细 | `Id` | 无统一业务单号 | 发票明细承接对象或只读映射 | `invoiceDetailId` | 可选 | `mapping-layer` + `history-readonly` | `legacyId``targetId``invoiceId` | 明细至少挂回发票主对象 |
| 营业账开票映射 | `Id` | 账单号 + 发票号组合 | 发票关系映射对象 | 映射主键 | 新账单号 + 新发票号组合 | `mapping-layer` | `sourceFeeId``targetChargeId``legacyInvoiceNo``targetInvoiceNo` | 发票关系迁移验收的核心对象 |
## 4. 映射记录建议字段
建议统一的标识映射记录至少包含:
| Field | Description |
| --- | --- |
| `mappingId` | 映射记录主键 |
| `legacySystem` | 原系统标识 |
| `legacyTable` | 旧表名 |
| `legacyId` | 旧主键 |
| `legacyBizNo` | 旧业务单号 / 流水号 / 发票号 |
| `targetDomain` | 新领域名称 |
| `targetId` | 新主键 |
| `targetBizNo` | 新业务单号 / 受理号 / 发票号 |
| `sourceLegacyId` | 源旧主键(用于前后关系对象) |
| `sourceTargetId` | 源新主键 |
| `mappingStatus` | `planned / migrated / verified / failed` |
| `migrationBatchNo` | 迁移批次号 |
| `verifiedAt` | 校验时间 |
| `remark` | 备注 |
## 5. 当前 v1 的直接结论
### 5.1 必须优先落映射的主线标识
以下标识是迁移最容易断链、也最必须优先保留的:
- `FeeId`
- `AccLogId`
- 收费流水号 / 第三方流水号
- 旧调整申请单号
- 旧坏账申请单号
- 发票代码 + 发票号码
- 发票申请单号 / 订单号 / 受理号
### 5.2 最容易被忽略但必须保留的关系标识
- `ParentFeeId`
- `ContrastFeeId`
- `AccountLogId`
- `TargetAccountLogId`
- 账单与发票映射关系中的组合标识
这些字段如果不在迁移时显式保留,后续几乎无法恢复“调整前后”“退款前后”“原交易与后续交易”“原账单与新账单”的链路。
### 5.3 对后续脚本设计的直接约束
迁移脚本设计时,不允许只写“插入新表”逻辑,还必须同步写:
1. 标识映射入库逻辑
2. 关系标识补链逻辑
3. 批次号和映射状态回写逻辑
## 6. 后续动作
在对象、字段、状态、标识四张矩阵都具备后,下一步建议进入:
1. 试迁校验清单
2. 差异分类与复迁规则
3. 批次化执行与回滚方案