IBAN 迁移 — 流程图(Mermaid)
日期: 2026-03-13
说明: 配合 design_alignment.md 使用,以图表方式说明迁移全流程
一、迁移总体阶段(Timeline)
gantt
title IBAN 迁移总体阶段
dateFormat YYYY-MM-DD
axisFormat %m/%d
section 前置准备
产品提供 mini-program 设计稿 :crit, des1, 2026-03-17, 5d
产品提供通知文案 & ToDo UI :crit, des2, 2026-03-17, 5d
Qian 提供 Batch 2/3 用户数据 :crit, data1, 2026-03-17, 3d
确认 Zand API TPS 限制 :crit, tps1, 2026-03-17, 3d
section 开发阶段
VIS 多批次调度 + 重试机制 :dev1, after des1, 10d
mini-program 开发 :dev2, after des1, 10d
通知定时任务 + ToDo Card 对接 :dev3, after des2, 7d
前端 Payment Settings 适配 :dev4, after des1, 5d
商户迁移后端开发 :dev5, after des1, 4d
section Phase 0 - 新用户切换
灰度 10% :p0a, after dev1, 7d
灰度 50% :p0b, after p0a, 7d
灰度 100% :p0c, after p0b, 7d
section Phase 1 - 存量用户迁移
Batch 1 Pilot (10%, ~2K) :b1a, after p0c, 14d
Batch 1 全量 (19.9K) :b1b, after b1a, 14d
60天并行窗口 :b1c, after b1a, 60d
Batch 2 迁移 (P1) :b2, after b1b, 21d
Batch 3 手动触发上线 (P2) :b3, after b2, 14d
section 商户迁移
Pilot 10家商户 :mc1, after dev5, 14d
30天通知窗口 :mc2, after mc1, 30d
15天静默回退 :mc3, after mc2, 15d
全量商户迁移 :mc4, after mc3, 21d
section Phase 2
FAB 下线 :p2a, after b3, 7d
Salary Credit 功能上线 :p2b, after p2a, 14d
二、个人用户迁移全流程
flowchart TD
Start([开始迁移]) --> IsNew{新用户 or 存量用户?}
%% 新用户流程
IsNew -->|新用户| KYC[用户完成 KYC]
KYC --> GrayCheck{灰度命中?}
GrayCheck -->|是| CreateZand[调用 Zand Create VA API]
GrayCheck -->|否| CreateFAB[分配 FAB IBAN]
CreateZand --> ShowPS[Payment Settings 展示 Zand IBAN]
CreateFAB --> ShowPSOld[Payment Settings 展示 FAB IBAN]
ShowPS --> Done([完成])
ShowPSOld --> Done
%% 存量用户流程
IsNew -->|存量用户| CheckActive{活跃度判断}
CheckActive -->|Active IBAN
近6月≥1笔交易| Batch1[Batch 1 - P0
19.9K 用户] CheckActive -->|Non-Active IBAN
有钱包交易| Batch2[Batch 2 - P1
数量 TBC] CheckActive -->|无 IBAN
有钱包交易| Batch3[Batch 3 - P2
用户手动触发] CheckActive -->|非活跃用户
9个月无交易| NoAction([不处理]) Batch1 --> AutoMigrate[系统自动批量创建 Zand IBAN] Batch2 --> AutoMigrate Batch3 --> UserTrigger[用户在 mini-program 点击申请] UserTrigger --> AutoMigrate AutoMigrate --> APICall[调用 Zand Create VA API] APICall --> Success{创建成功?} Success -->|是| Notify[触发 In-app 通知 + ToDo Card] Success -->|否| Retry{重试次数 < 3?} Retry -->|是| Wait[等待间隔
1h / 6h / 24h] --> APICall Retry -->|否| Alert[标记 FAILED
触发告警
升级 Zand 团队] Notify --> MiniProg[用户点击 → 打开 mini-program
展示: 旧IBAN / 新IBAN / 倒计时] MiniProg --> DualIBAN[双 IBAN 并行收款期
60天窗口] DualIBAN --> UserTopup{用户使用新 IBAN
完成首笔 top-up?} UserTopup -->|是| StopNotify[停止通知
ToDo Card 标记完成] UserTopup -->|否, 每10天| ReNotify[重新发送通知] ReNotify --> MiniProg StopNotify --> WindowEnd{并行窗口结束?} WindowEnd -->|是| DecommFAB[FAB IBAN 下线] WindowEnd -->|否| DualIBAN DecommFAB --> OnlyZand[仅保留 Zand IBAN] OnlyZand --> Done
近6月≥1笔交易| Batch1[Batch 1 - P0
19.9K 用户] CheckActive -->|Non-Active IBAN
有钱包交易| Batch2[Batch 2 - P1
数量 TBC] CheckActive -->|无 IBAN
有钱包交易| Batch3[Batch 3 - P2
用户手动触发] CheckActive -->|非活跃用户
9个月无交易| NoAction([不处理]) Batch1 --> AutoMigrate[系统自动批量创建 Zand IBAN] Batch2 --> AutoMigrate Batch3 --> UserTrigger[用户在 mini-program 点击申请] UserTrigger --> AutoMigrate AutoMigrate --> APICall[调用 Zand Create VA API] APICall --> Success{创建成功?} Success -->|是| Notify[触发 In-app 通知 + ToDo Card] Success -->|否| Retry{重试次数 < 3?} Retry -->|是| Wait[等待间隔
1h / 6h / 24h] --> APICall Retry -->|否| Alert[标记 FAILED
触发告警
升级 Zand 团队] Notify --> MiniProg[用户点击 → 打开 mini-program
展示: 旧IBAN / 新IBAN / 倒计时] MiniProg --> DualIBAN[双 IBAN 并行收款期
60天窗口] DualIBAN --> UserTopup{用户使用新 IBAN
完成首笔 top-up?} UserTopup -->|是| StopNotify[停止通知
ToDo Card 标记完成] UserTopup -->|否, 每10天| ReNotify[重新发送通知] ReNotify --> MiniProg StopNotify --> WindowEnd{并行窗口结束?} WindowEnd -->|是| DecommFAB[FAB IBAN 下线] WindowEnd -->|否| DualIBAN DecommFAB --> OnlyZand[仅保留 Zand IBAN] OnlyZand --> Done
三、通知循环机制
flowchart LR
A[Zand IBAN 创建成功] --> B[发送首次通知
In-app + ToDo Card] B --> C{用户新 IBAN
首笔 top-up 成功?} C -->|是| D[停止通知循环
ToDo Card 完成] C -->|否| E[等待 10 天] E --> F[重新发送通知
In-app + ToDo Card] F --> C style A fill:#4CAF50,color:#fff style D fill:#4CAF50,color:#fff style E fill:#FF9800,color:#fff
In-app + ToDo Card] B --> C{用户新 IBAN
首笔 top-up 成功?} C -->|是| D[停止通知循环
ToDo Card 完成] C -->|否| E[等待 10 天] E --> F[重新发送通知
In-app + ToDo Card] F --> C style A fill:#4CAF50,color:#fff style D fill:#4CAF50,color:#fff style E fill:#FF9800,color:#fff
四、双 IBAN 路由与收款流程
flowchart TD
Payment([外部转账入账]) --> WhichIBAN{转入哪个 IBAN?}
WhichIBAN -->|Zand IBAN| ZandRoute[Zand 通道处理]
ZandRoute --> ZandEscrow[入账至 Zand Escrow]
ZandEscrow --> Wallet[到账用户钱包]
WhichIBAN -->|FAB IBAN
并行窗口内| FABRoute[FAB 通道接收] FABRoute --> ManualTransfer[C&S 手动转账
FAB → Zand Escrow
每日操作] ManualTransfer --> Wallet WhichIBAN -->|FAB IBAN
并行窗口结束后| FABClosed[FAB 已下线
转账失败/退回] subgraph 系统展示逻辑 CheckUser{用户是否已有 Zand IBAN?} CheckUser -->|是| ShowZand[对外优先展示 Zand IBAN] CheckUser -->|否| ShowFAB[仍展示 FAB IBAN] end style Wallet fill:#4CAF50,color:#fff style FABClosed fill:#f44336,color:#fff
并行窗口内| FABRoute[FAB 通道接收] FABRoute --> ManualTransfer[C&S 手动转账
FAB → Zand Escrow
每日操作] ManualTransfer --> Wallet WhichIBAN -->|FAB IBAN
并行窗口结束后| FABClosed[FAB 已下线
转账失败/退回] subgraph 系统展示逻辑 CheckUser{用户是否已有 Zand IBAN?} CheckUser -->|是| ShowZand[对外优先展示 Zand IBAN] CheckUser -->|否| ShowFAB[仍展示 FAB IBAN] end style Wallet fill:#4CAF50,color:#fff style FABClosed fill:#f44336,color:#fff
五、异常处理 — 重试机制
stateDiagram-v2
[*] --> 创建中: 触发 Zand IBAN 创建
创建中 --> 成功: API 返回成功
创建中 --> 第1次失败: API 失败
第1次失败 --> 等待1h: 进入重试队列
等待1h --> 重试1: 第1次重试
重试1 --> 成功: API 返回成功
重试1 --> 第2次失败: API 失败
第2次失败 --> 等待6h: 进入重试队列
等待6h --> 重试2: 第2次重试
重试2 --> 成功: API 返回成功
重试2 --> 第3次失败: API 失败
第3次失败 --> 等待24h: 进入重试队列
等待24h --> 重试3: 第3次重试
重试3 --> 成功: API 返回成功
重试3 --> FAILED: API 失败
FAILED --> 告警: 触发告警 + 升级 Zand
成功 --> 触发通知: 发送 In-app + ToDo Card
触发通知 --> [*]
告警 --> [*]
六、商户 IBAN 迁移流程
flowchart TD
Start([开始商户迁移]) --> IsNew{新商户 or 存量商户?}
IsNew -->|新商户| DirectZand[直接分配 Zand IBAN]
DirectZand --> DoneMerchant([完成])
IsNew -->|存量商户| SelectPilot[选取 Pilot 10家
员工数最少优先] SelectPilot --> AssignZand[为商户分配 Zand IBAN] AssignZand --> DualBind[双 IBAN 绑定同一
WPS_SALARY 账户] DualBind --> BDNotify[BD 发送邮件通知商户
更新收款 IBAN] BDNotify --> Day30Window[30天通知窗口
BD 多次邮件提醒] Day30Window --> FABExtClose[FAB IBAN 外部关闭
对外不可转入] FABExtClose --> Day15Silent[15天静默回退期
FAB 后端仍接收] Day15Silent --> StillFAB{FAB 仍有入账?} StillFAB -->|是| CSManual[C&S 手动转账
FAB → Zand Escrow
每日操作] CSManual --> Day15Silent StillFAB -->|否| Delink[FAB IBAN Delink & Deactivate] Delink --> PilotOK{Pilot 验证通过?} PilotOK -->|是| FullRollout[全量推广
125 企业 + 1K 商户] PilotOK -->|否| Investigate[排查问题
调整方案] Investigate --> SelectPilot FullRollout --> DoneMerchant style DoneMerchant fill:#4CAF50,color:#fff style FABExtClose fill:#FF9800,color:#fff style Delink fill:#f44336,color:#fff
员工数最少优先] SelectPilot --> AssignZand[为商户分配 Zand IBAN] AssignZand --> DualBind[双 IBAN 绑定同一
WPS_SALARY 账户] DualBind --> BDNotify[BD 发送邮件通知商户
更新收款 IBAN] BDNotify --> Day30Window[30天通知窗口
BD 多次邮件提醒] Day30Window --> FABExtClose[FAB IBAN 外部关闭
对外不可转入] FABExtClose --> Day15Silent[15天静默回退期
FAB 后端仍接收] Day15Silent --> StillFAB{FAB 仍有入账?} StillFAB -->|是| CSManual[C&S 手动转账
FAB → Zand Escrow
每日操作] CSManual --> Day15Silent StillFAB -->|否| Delink[FAB IBAN Delink & Deactivate] Delink --> PilotOK{Pilot 验证通过?} PilotOK -->|是| FullRollout[全量推广
125 企业 + 1K 商户] PilotOK -->|否| Investigate[排查问题
调整方案] Investigate --> SelectPilot FullRollout --> DoneMerchant style DoneMerchant fill:#4CAF50,color:#fff style FABExtClose fill:#FF9800,color:#fff style Delink fill:#f44336,color:#fff
七、系统模块交互总览
flowchart TD
subgraph 产品/运营
Admin[运营后台]
BD[BD 团队]
end
subgraph VIS 侧
MigTask[迁移任务模块
多批次调度] RetryScheduler[重试调度器
3次上限] Router[IBAN 路由规则
Zand 优先 / FAB fallback] Monitor[迁移监控埋点] API_IF[mini-program
数据接口] end subgraph 前端 PS[Payment Settings
页面] MiniProg[Mini-program
迁移详情页] end subgraph 通知侧 InApp[In-app 通知] ToDo[ToDo Card] Timer[10天定时任务] TxnListener[首笔交易监听] end subgraph 外部 ZandAPI[Zand Create VA API] FAB[FAB 通道] CS[C&S 手动操作] end %% 迁移主流程 Admin -->|触发迁移| MigTask MigTask -->|创建 IBAN| ZandAPI ZandAPI -->|成功| InApp ZandAPI -->|失败| RetryScheduler RetryScheduler -->|重试| ZandAPI RetryScheduler -->|3次失败| Monitor %% 通知流程 InApp --> ToDo ToDo -->|用户点击 CTA| MiniProg MiniProg -->|获取数据| API_IF Timer -->|每10天检查| TxnListener TxnListener -->|未完成| InApp TxnListener -->|已完成| ToDo %% 收款路由 Router -->|Zand 用户| ZandAPI Router -->|未迁移用户| FAB FAB -->|并行期入账| CS CS -->|手动转| ZandAPI %% 前端展示 PS -->|展示 IBAN| Router %% 商户 BD -->|邮件通知商户| FAB %% 监控 Monitor --> Admin style ZandAPI fill:#4CAF50,color:#fff style FAB fill:#FF9800,color:#fff style RetryScheduler fill:#f44336,color:#fff
多批次调度] RetryScheduler[重试调度器
3次上限] Router[IBAN 路由规则
Zand 优先 / FAB fallback] Monitor[迁移监控埋点] API_IF[mini-program
数据接口] end subgraph 前端 PS[Payment Settings
页面] MiniProg[Mini-program
迁移详情页] end subgraph 通知侧 InApp[In-app 通知] ToDo[ToDo Card] Timer[10天定时任务] TxnListener[首笔交易监听] end subgraph 外部 ZandAPI[Zand Create VA API] FAB[FAB 通道] CS[C&S 手动操作] end %% 迁移主流程 Admin -->|触发迁移| MigTask MigTask -->|创建 IBAN| ZandAPI ZandAPI -->|成功| InApp ZandAPI -->|失败| RetryScheduler RetryScheduler -->|重试| ZandAPI RetryScheduler -->|3次失败| Monitor %% 通知流程 InApp --> ToDo ToDo -->|用户点击 CTA| MiniProg MiniProg -->|获取数据| API_IF Timer -->|每10天检查| TxnListener TxnListener -->|未完成| InApp TxnListener -->|已完成| ToDo %% 收款路由 Router -->|Zand 用户| ZandAPI Router -->|未迁移用户| FAB FAB -->|并行期入账| CS CS -->|手动转| ZandAPI %% 前端展示 PS -->|展示 IBAN| Router %% 商户 BD -->|邮件通知商户| FAB %% 监控 Monitor --> Admin style ZandAPI fill:#4CAF50,color:#fff style FAB fill:#FF9800,color:#fff style RetryScheduler fill:#f44336,color:#fff
八、用户视角 — 迁移体验旅程
journey
title 存量活跃用户迁移体验旅程
section 迁移前
正常使用 FAB IBAN 收款: 5: 用户
section 收到通知
收到 In-app 迁移通知: 3: 用户
看到 ToDo Card 提醒: 3: 用户
section 查看详情
点击打开 mini-program: 4: 用户
看到新旧 IBAN 对比: 4: 用户
看到迁移倒计时: 3: 用户
section 完成迁移
更新银行转账收款方为新 IBAN: 2: 用户
首次使用新 IBAN 成功 top-up: 5: 用户
通知停止, ToDo 消失: 5: 用户
section 迁移后
仅使用 Zand IBAN 收款: 5: 用户
九、Lean 迁移流程
flowchart LR
A[Lean 方案上线] --> B[触发存量用户通知]
B --> C[用户收到推送]
C --> D[用户连接新 Lean Destination]
D --> E{连接成功?}
E -->|是| F[旧 Destination 自动删除]
E -->|否| G[重试/客服介入]
F --> H[使用新 Lean 方案收款]
style A fill:#4CAF50,color:#fff
style F fill:#FF9800,color:#fff
style H fill:#4CAF50,color:#fff