d6234622e8b22159f3506a096c3106bb4a1de8f9
把本轮 6 个迁移(phase4 / 4b / 4c / 4d / 4e / 4f)按依赖顺序合并为一份
可直接在生产执行的脚本,并在一个模拟「部署前状态」的临时库上完整验证。
内容
----
1. trans_borrow 补 4 列(borrower_id / current_holder_id /
current_holder_name / dispatch_operator)+ 2 索引
2. trans_borrow_transfer 建表(最终形态)+ 7 索引
3. trans_borrow_return 建表 + 3 索引
4. 回填 trans_borrow 身份锚点(仅唯一命中者,重名/无法映射留 NULL)
5. 回填遗留转交流水的 borrow_no 与状态
6. 回填 reject_seen_at(存量拒收标记为已告知)
7. 从 remark 拆出被拼接的 reject_reason
8.(注释掉)borrow_transfer 权限码 —— 已无代码引用,默认不建
+ 执行后核对段 + 回滚段
★ 验证中发现并修掉两个真实缺陷(都不是「看起来能跑」能暴露的)
1) 顺序缺陷:第 5 段原先把遗留流水**一律**标成 ACCEPTED,导致第 6/7 段
按 status='REJECTED' 找行时一条都匹配不到(旧结构表里 status 是刚加的
列、全是默认 PENDING)。真正的信号在备注的 '[拒绝原因]' 标记里,
现据此还原真实状态。
2) 孤儿流水:第 5 段按 borrow_id 关联,来源借用行已被删除的流水匹配不上,
会永久停在 PENDING —— 在接收人那里变成谁也处理不掉的幽灵待办。
已加兜底把「没有单号」的遗留行一律结掉。
★ 两处 ⚠ 警示已写入脚本:第 5/6/7 段设计为**新代码上线前执行一次**;
若在功能已投产后重跑,会把当时真实的待接收/待告知记录误标。
验证方式:建临时库复刻部署前结构(旧 trans_borrow + 旧结构转交流水表 +
重名/无法映射/已归还/孤儿等边界数据),执行脚本后核对:DDL 与索引齐全、
身份锚点按唯一性正确回填、遗留流水状态从备注还原、原因正确拆出、
孤儿流水被结掉、无报错;再执行第二遍确认幂等(结果完全一致)。
Description
No description provided
Languages
Python
70.2%
CSS
14.9%
Vue
7.6%
HTML
4.2%
TypeScript
3.1%