105 lines
7.3 KiB
Markdown
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. 批次化执行与回滚方案
|