yueli
d6234622e8
chore(db): 借库转交完整部署脚本(生产可执行)
把本轮 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 与索引齐全、
身份锚点按唯一性正确回填、遗留流水状态从备注还原、原因正确拆出、
孤儿流水被结掉、无报错;再执行第二遍确认幂等(结果完全一致)。
2026-09-17 10:49:34 +08:00
..
2026-09-11 14:38:40 +08:00
2026-09-08 10:14:40 +08:00
2026-09-16 16:44:46 +08:00
2026-09-09 09:31:12 +08:00
2026-09-09 10:47:36 +08:00
2026-09-16 16:44:46 +08:00
2026-09-16 16:44:46 +08:00
2026-09-10 17:21:14 +08:00
2026-09-10 09:46:52 +08:00
2026-09-10 09:46:52 +08:00
2026-09-10 10:14:19 +08:00
2026-09-11 11:33:04 +08:00
2026-09-11 13:28:43 +08:00
2026-09-08 10:14:40 +08:00
2026-09-17 10:49:34 +08:00
2026-07-17 13:07:12 +08:00
2026-09-16 15:45:02 +08:00
2026-07-17 15:29:59 +08:00
2026-09-09 13:00:35 +08:00
2026-09-16 15:45:22 +08:00
2026-09-16 15:45:22 +08:00
2026-09-17 09:17:51 +08:00
2026-09-17 09:17:51 +08:00
2026-09-17 10:04:05 +08:00
2026-09-17 10:12:31 +08:00
2026-09-17 10:44:00 +08:00
2026-09-17 10:46:31 +08:00
2026-09-10 10:14:19 +08:00