PR #2013 — KYB Onboarding 依發卡專案分岔

feat/lithic-m3-onboarding-divisionfeat/lithic-m3 · 31 files · +3126 / −488 · OPEN · Generated 2026-06-29

LITHIC 卡專案(Continental Bank 承作)需符合 FinCEN CDD,要收集「多名受益人 + 獨立控制人 + 分數持股」,舊的單一 representative KYB 流程無法滿足。本 PR 重寫 onboarding,並以 organization.productCard.program 把流程分岔: LITHIC 走 Beneficial Owner / Control Person 流程;STRIPE(及 null / legacy) 維持原本單一 representative 流程,作為安全預設。改動幾乎全集中於 src/pages/OnboardingPages/

Base 不是 main。 這支 PR 是疊在 feat/lithic-m3 之上的子分支; 用 main 比 diff 會看到一堆無關檔案。正確 diff:origin/feat/lithic-m3...origin/feat/lithic-m3-onboarding-division
This PR at a glance · 11 New · 19 Changed · 1 Removed · 0 Tests
左側 sidebar 為完整導覽(≥1280px)。窄螢幕請直接捲動或用區段錨點。

🏛 架構面核心

1. 一個 flag 驅動整條流程分岔

isLithicFlow = organization.value.productCard?.program === CARD_PROGRAM.LITHIC — 後端設定、非使用者選擇;任何非 LITHIC 值(含 null / legacy)fall-through 到 STRIPE。 onboardingPanels computed 依此 fork。

LITHIC flow
Business Info
→ Beneficial Owner
→ Control Person
→ Bank Account
→ KYB
STRIPE flow(原路徑)
Business Info
→ Representative
→ Bank Account
→ KYB

兩流程在有資格時都會 append Pay Over Time

2. 角色模型(role flag)拆分

helpers/stripePerson.js 新增 STRIPE_ROLES preset(只改列出的 flag,可組合)。

Flow角色持有 relationship flags
STRIPERepresentative(單人)representative + executive + owner(三合一)
LITHICBeneficial Owner stepowner
LITHICControl Person steprepresentative + executive
底層同一筆資料。 currentControlPersoncurrentRepresentativePerson 都指向 relationship.representative === true 那筆,用 alias 讓兩流程各讀自己的詞彙。

3. provide/inject 契約變動 跨 panel breaking

What changed

鐵律:重新命名任一 key = break 每個下游 panel。

4. 新增 composable / helper(關注點分離)

5. 完成判定 sentinel 依 program 分流

Flow寫入的 sentinel
LITHICacceptedOrganizationInfoCertificationTermsAt
STRIPEacceptedStripeFinancialConnectionsTermsAt

auth.js route guard 與 OnboardingPagetermsAccepted 都改用 isOnboardingTermsAccepted()(OR 兩者),對齊後端 V1Update.js per-program gate。

6. 導頁機制重構 行為改變

What changed

🧩 Components8

🗣 Copy / i18n~73

📚 Docs11

🧪 測試面0

完全沒有測試。 整個 OnboardingPages/ 模組沒有任何 Cypress / spec 檔,本 PR 也未新增。 最高價值的邏輯 — BO 持股數學、25 / 100 邊界、prefill、CP swap、program fork — 全部未被自動化覆蓋

✅ 須回歸 / 測試Action

回歸風險(STRIPE 既有路徑不能壞)

LITHIC 新路徑

導頁機制改寫

⚠️ 風險 / BreakingReview

📐 鐵律 / 不可破壞契約改 code 前必讀