本体协作平台
M 2 · DOC-2026-022 · extracted

R5-账户与借据状态机

原文 · 51 段(高亮 = 已被卡片引用)
p1# R5 · 账户与借据状态机
p2> 汇总 PayLater 各维度状态及取值/识别字段,供产品理解状态流转、数据团队建立状态字典。 > 代码仓 `ifes-resm/src`(HEAD `fb597d5`)。`file:line` 均相对 `ifes-resm` 仓库根。 > > PayLater 一个用户的"当前处境"由多个相互独立的状态维度叠加描述: > 开通/KYC 决定能否进入产品;账户冻结/拦截态决定账户是否可用;账单态描述当期账单走到哪一步; > 借据/还款态描述单笔借款与还款;会员态、客群态决定额度成长与 UI 投放。 > 各维度取自不同后端字段,不应混为一个枚举。
p3---
p4## ① 开通 / KYC 态
p5入口来自后端 `OPEN_STATUS`(开户/KYC 状态),前端两套枚举:`OPEN_STATUS_MAP`(开户结果路由用)与 `PayLaterStatus`(更细的扩展枚举)。表单逻辑中另有数字变体 `1017` / `1022`。
p6| 状态 | 识别字段 / 取值 | 含义 / 对客表现 | 出处 (file:line) | |---|---|---|---| | 待视频面签 (待 VB) | `OPEN_STATUS = T017`;`OPEN_STATUS_MAP.WAIT_VIDEO_BANKING` / `PayLaterStatus.NotOpened_VB` | 未开户,需完成视频面签 KYC | `src/constants/pay-later/apply.js:3`;`src/constants/upgrade.js:70` | | 待补充资料 | `OPEN_STATUS = T022`;`PayLaterStatus.NotOpened_VB_form` | 未开户,待补充申请资料 | `src/constants/upgrade.js:74` | | 待 VB + 补充资料 | `OPEN_STATUS = T023`;`PayLaterStatus.NotOpened_form` | 未开户,需同时完成视频面签和补充资料 | `src/constants/upgrade.js:76` | | 授信审批中 | `OPEN_STATUS = T215`;`OPEN_STATUS_MAP.CREDITING` / `PayLaterStatus.applying` | 资料已交,授信审批处理中 | `src/constants/pay-later/apply.js:5`;`src/constants/upgrade.js:72` | | 已开户(额度正常) | `OPEN_STATUS = T216`;`OPEN_STATUS_MAP.ACCOUNTED` / `PayLaterStatus.Opened` | 开户成功,授信额度建立,可用 | `src/constants/pay-later/apply.js:7`;`src/constants/upgrade.js:64` | | 开户管控 / 拒绝 | `OPEN_STATUS = T217`;`OPEN_STATUS_MAP.REJECT_ACCOUNT` / `PayLaterStatus.Controlled` | 开户被管控 / 拒绝,无法开户 | `src/constants/pay-later/apply.js:9`;`src/constants/upgrade.js:66` | | 未开户(初始) | `OPEN_STATUS = T211`;`PayLaterStatus.NotOpened` | 尚未开户的初始态 | `src/constants/upgrade.js:62` | | 已开户额度锁定 | `PayLaterStatus.
p7Locked = ACTIVE_CREDIT_FREEZED` | 已开户但额度异常、被锁定 | `src/constants/upgrade.js:68` |
p8数字变体(表单层判断是否需要视频面签):`currentPlaylaterStatus === '1022' || '1017'`,`src/pages/pay-later/apply/form/Loan.vue:843`。状态写入 Vuex:`setCurrentPlaylaterStatus`,`src/store/modules/account.js:38`;开户状态查询 API `amsAccountQueryAccountStatus`,`src/store/modules/pay-later/account.js:128`。
p9流转: ``` 未开户 T211 → 申请提交 ├─ 待 VB T017 / 待补料 T022 / 待 VB+补料 T023 → 授信审批中 T215 └─ 授信审批中 T215 ├─→ 已开户 T216(额度正常,进入正常用账) └─→ 开户管控/拒绝 T217(终态) 已开户 T216 ──(额度异常)──→ ACTIVE_CREDIT_FREEZED(额度锁定) ```
p10---
p11## ② 账户冻结 / 可用态(blockCode)
p12来源:后端 `BLOCK_CODE` →`accountInfo.blockCode`(`src/models/pay-later/account.js:67`)。取款/支付前在 `checkAccountBeforeWithdrawAndPay` 按字符匹配拦截(`src/utils/view.js`)。同一 `blockCode` 在 `account.js` 构造时映射为 `frozenState`(`ACCOUNT_FROZEN_STATE`,`src/models/pay-later/account.js:4-9` 与 `:111-121`)。
p13| 状态 | 识别字段 / 取值 | 含义 / 对客表现 | 出处 (file:line) | |---|---|---|---| | 身份证待重传 | `blockCode` 含 `q`;`isIdentityReuploadRequired` | 账户未激活,弹窗要求重新上传身份证 | `src/utils/view.js:414` | | 账户冻结 | `blockCode` 含 `R\|S\|F\|n\|B`;`isAccountFrozen` | PayLater 不可用;弹窗"账户已冻结" | `src/utils/view.js:436` | | └ 挂失态 | `blockCode` 含 `R` / `S`;`frozenState = ACCOUNT_FROZEN_STATE.LOSS('RS')` | 账户挂失 | `src/models/pay-later/account.js:113` | | └ 风控锁定 | `blockCode` 含 `F` / `n` / `B`;`frozenState = ACCOUNT_FROZEN_STATE.LOCK('nBF')` | 风控锁定 | `src/models/pay-later/account.js:115` | | 身份验证中 | `blockCode` 含 `T`;`isIdentityVerificationInProgress` | PayLater 未激活,弹窗"身份验证中,请等待" | `src/utils/view.js:452` | | 逾期 / 部分锁定 | `blockCode` 含 `A\|Z`;或 `acctStmtStatus === BILL_STATE_TYPE.OVER_DUE`;`frozenState = ACCOUNT_FROZEN_STATE.LOCK_PART('AZ')` | 财务系统部分锁定,弹窗引导"还款" | `src/utils/view.js:469-470`;`src/models/pay-later/account.js:117` | | 无冻结 | `blockCode` 为空 / `NONE`;`frozenState = ACCOUNT_FROZEN_STATE.NONE` | 账户可用 | `src/models/pay-later/account.js:120` |
p14并行的 pre-check 标志(来自 `amsAccountPreCheck` →`account.accountInfo`):
p15| 标志 | 识别字段 | 含义 / 对客表现 | 出处 (file:line) | |---|---|---|---| | 需邮箱验证 | `accountInfo.emailVerifyRequired === true`;`isEmailVerificationRequired` | PayLater 未激活,需先验证邮箱 | `src/utils/view.js:391`;`src/store/modules/account.js:46` |
p16派生 computed 同样基于 `blockCode`(首页两套页面):`isIdentityVerificationInProgress` / `isIdentityReuploadRequired` / `isAccountFrozen`,见 `src/pages/pay-later/home/HomeV2.vue:256-263`、`src/pages/pay-later/home/Home.vue:678-685`。
p17流转(叠加在"已开户"之上的拦截层,任一命中即拦截取款/支付): ``` 已开户可用 ├─ blockCode q → 拦截:重传身份证 ├─ blockCode R/S/F/n/B → 拦截:账户冻结(挂失 / 风控锁定) ├─ blockCode T → 拦截:身份验证中 ├─ blockCode A/Z 或 账单逾期 → 拦截:引导还款 └─ emailVerifyRequired → 拦截:先验证邮箱 blockCode 解除 / 邮箱已验 → 恢复可用 ```
p18---
p19## ③ 账单态(STMT_STATUS U/N/O/F + 布尔)
p20账单级状态 `STMT_STATUS_MAP`(`src/models/pay-later/bill.js:3-8`);账户级 `acctStmtStatus`(=`ACCT_STMT_STATUS`)取值同为 `BILL_STATE_TYPE`(`src/models/pay-later/account.js:11-17`,含 `NONE`)。
p21| 状态 | 识别字段 / 取值 | 含义 / 对客表现 | 出处 (file:line) | |---|---|---|---| | 未出账 | `STMT_STATUS = U`;`STMT_STATUS_MAP.NO_BILL` / `BILL_STATE_TYPE.NOT_IN_DUE` | 本期账单未出 | `src/models/pay-later/bill.js:4`;`src/models/pay-later/account.js:13` | | 已出账 | `STMT_STATUS = N`;`STMT_STATUS_MAP.HAD_BILL` / `BILL_STATE_TYPE.IN_DUE` | 账单已出,待还款 | `src/models/pay-later/bill.js:5`;`src/models/pay-later/account.js:14` | | 已逾期 | `STMT_STATUS = O`;`STMT_STATUS_MAP.OVERDUE` / `BILL_STATE_TYPE.OVER_DUE` | 账单逾期未还 | `src/models/pay-later/bill.js:6`;`src/models/pay-later/account.js:16` | | 已还清 | `STMT_STATUS = F`;`STMT_STATUS_MAP.REPAID` / `BILL_STATE_TYPE.CLEAN_DUE` | 账单已结清 | `src/models/pay-later/bill.js:7`;`src/models/pay-later/account.js:15` | | 无数据(账户级) | `acctStmtStatus = NONE`;`BILL_STATE_TYPE.NONE` | 无账单数据 | `src/models/pay-later/account.js:12` |
p22账单布尔判定(`src/models/pay-later/bill.js:74-78`):
p23| 布尔 | 判定逻辑 | 含义 | 出处 (file:line) | |---|---|---|---| | `isNoBill` | `STMT_STATUS === U` | 未出账 | `src/models/pay-later/bill.js:74` | | `isOverDue` | `OVERDUE_DAYS > 0` | 已逾期(按逾期天数判定,不直接读 STMT_STATUS) | `src/models/pay-later/bill.js:75` | | `isCanRepay` | `STMT_STATUS === N \|\| === O` | 已出账(含逾期)可还款 | `src/models/pay-later/bill.js:76` | | `isUnused` | `CUR_STMT_AMT === 0 && STMT_PAID_AMT === 0` | 本期未使用 | `src/models/pay-later/bill.js:77` | | `isRepaid` | `STMT_STATUS === F` | 已结清 | `src/models/pay-later/bill.js:78` |
p24账户层另有使用态 `ACCT_USE_STATUS`(`USE_STATE_TYPE`:`W` 未使用 / `H` 当期有已出账单 / `N` 当期无已出账单,`src/models/pay-later/account.js:19-23`)与综合账户态 `ACCOUNT_STATE`(`W/AC/NAC/RFC/OPC/NU/HN/HF/HO`,`src/models/pay-later/account.js:25-35`)。
p25流转: ``` 未出账 U → 出账 → 已出账 N ├─ 按期还清 → 已还清 F └─ 到期未还 → 已逾期 O(OVERDUE_DAYS > 0)→ 还清 → 已还清 F ```
p26---
p27## ④ 借据 / 还款态
p28借据(IOU)状态 `LOAN_STATUS_TYPE`(`src/models/pay-later/loan.js:4-8`);还款流水 `REPAYMENT_STATUSES` / `REPAYMENT_TYPES`(`src/constants/pay-later/transaction.js`);展期重组 `extensionStatus`(`src/constants/pay-later/extension.js`)。逾期度量字段 `OVERDUE_DAYS` / `OVERDUE_TIMES` / `HAS_REPAY`。
p29| 状态 | 识别字段 / 取值 | 含义 / 对客表现 | 出处 (file:line) | |---|---|---|---| | 借据成功 | `LOAN_STATUS_TYPE.SUCCESS = S` | 借据放款成功 | `src/models/pay-later/loan.js:5` | | 借据失败 | `LOAN_STATUS_TYPE.FAIL = F` | 借据放款失败 | `src/models/pay-later/loan.js:6` | | 借据处理中 | `LOAN_STATUS_TYPE.WAIT = O` | 借据待处理 / 处理中 | `src/models/pay-later/loan.js:7` | | 还款处理中 | `REPAYMENT_STATUSES.PENDING = P` | 还款交易处理中 | `src/constants/pay-later/transaction.js:120` | | 还款成功 | `REPAYMENT_STATUSES.SUCCESSFUL = S` | 还款成功 | `src/constants/pay-later/transaction.js:121` | | 还款失败 | `REPAYMENT_STATUSES.FAIL = C` | 还款失败 | `src/constants/pay-later/transaction.js:122` | | 还款类型:借据提前结清 | `REPAYMENT_TYPES.EARLY_REPAYMENT = IOURepay` | 单笔借据提前结清 | `src/constants/pay-later/transaction.js:109` | | 还款类型:账单还款 | `REPAYMENT_TYPES.BILL_REPAYMENT = BillRepay` | 按账单还款 | `src/constants/pay-later/transaction.js:110` | | 展期重组成功 | `extensionStatus.S = success` | 展期 / 重组申请成功 | `src/constants/pay-later/extension.js:2` | | 展期重组处理中 | `extensionStatus.P = inprocess` | 展期 / 重组申请处理中 | `src/constants/pay-later/extension.js:3` | | 展期重组失败 | `extensionStatus.C = failed` | 展期 / 重组申请失败 | `src/constants/pay-later/extension.js:4` |
p30逾期 / 还款度量字段:
p31| 字段 | 取值 | 含义 | 出处 (file:line) | |---|---|---|---| | `OVERDUE_DAYS` | number(默认 0) | 逾期天数,`isOverDue` 即由 `>0` 判定 | `src/models/pay-later/bill.js:75`;`src/models/pay-later/account.js:56` | | `OVERDUE_TIMES` | number(默认 0) | 账单逾期次数 | `src/models/pay-later/account.js:61` | | `HAS_REPAY` | `Y` / `N`(默认 N) | 是否有过还款 | `src/plugins/request/mock/core_trans_minimum-repayment_repay_info.js:20` |
p32展期重组申请 API:`/core/trans/extension/apply`(`src/constants/api.js:1984`),交易类型 `EXTENSION = EX`(`src/constants/pay-later/transaction.js:17`)。
p33流转: ``` 借据:处理中 O → 成功 S(计入账单/可还款) / 失败 F 还款:处理中 P → 成功 S / 失败 C 逾期:账单逾期 → 可申请展期重组(处理中 P → 成功 S / 失败 C)→ 还清后逾期解除 ```
p34---
p35## ⑤ 会员态
p36LimitUp 会员(额度成长)。会员实体来自 `/core/account/limit-up-member/get`(`src/store/modules/pay-later/account.js:229`),首页卡片显示态 `memberCardState`(`src/pages/pay-later/home/HomeV2.vue:573-578`)。
p37| 状态 | 识别字段 / 取值 | 含义 / 对客表现 | 出处 (file:line) | |---|---|---|---| | 会员激活 | `member.status === ACTIVE` 且 `expireTime > systemDate` | 会员有效 | `src/pages/pay-later/home/HomeV2.vue:536` | | 卡片:隐藏 | `memberCardState = none`(`!isMemberVisible`) | 不满足前置条件,卡片不展示 | `src/pages/pay-later/home/HomeV2.vue:574` | | 卡片:即将过期 | `memberCardState = expiringSoon`(`isMemberExpiredSoon`,距 `expireTime` ≤ 7 天) | 会员即将到期,提示续费 | `src/pages/pay-later/home/HomeV2.vue:575` | | 卡片:活跃 | `memberCardState = active`(`isMember`) | 会员有效且非临期 | `src/pages/pay-later/home/HomeV2.vue:576` | | 卡片:非活跃 | `memberCardState = inactive`(可见但非会员 / 已过期) | 未开通或已过期,引导开通 | `src/pages/pay-later/home/HomeV2.vue:577` |
p38会员功能全局开关:`marketCode.startsWith('01')`(`src/pages/pay-later/home/HomeV2.vue:530`);会员提额比例取 `marketCode` 第 3-4 位(`getMemberPremiumPercent`,`src/utils/limit-up-utils.js:52`,仅会员 ACTIVE 时生效)。
p39流转: ``` 非活跃 inactive ──开通──→ 活跃 active ──临近到期(≤7天)──→ 即将过期 expiringSoon ├─ 续费 → 活跃 active └─ 过期 → 非活跃 inactive 前置条件不满足(邮箱/身份未验、账户冻结、未启用)→ 隐藏 none ```
p40---
p41## ⑥ 客群态
p42客群标识承载额度成长策略与 UI 投放分层;细节见《03 ...》客群篇,此处仅列识别字段与取值。
p43| 状态 | 识别字段 / 取值 | 含义 / 对客表现 | 出处 (file:line) | |---|---|---|---| | LimitUp 灵活额度用户 | `accountInfo.riskCode` 含 `Y001`(`PaylaterUserType.FlexibleLimitUser`);`isY001` | LimitUp 客群,走灵活额度策略 | `src/constants/upgrade.js:83`;`src/pages/pay-later/home/HomeV2.vue:439` | | Beta(灰度新 UI) | `marketCode` 第 20 位 `charAt(19) === '4'`;`LIMIT_UP_USER_TIER.BETA` | 新 UI 灰度 Beta,V2 授信结果页可见 | `src/utils/limit-up-utils.js:20` | | Gamma(灰度新 UI) | `marketCode` 第 20 位 `charAt(19) === '5'`;`LIMIT_UP_USER_TIER.GAMMA` | 新 UI 灰度 Gamma,主页/Mission 走 V2,授信结果页回退 V1 | `src/utils/limit-up-utils.js:21` | | 老 LimitUp(NONE 兜底) | `marketCode` 第 20 位非 `4`/`5`;`LIMIT_UP_USER_TIER.NONE` | 脏数据兜底走 V1 | `src/utils/limit-up-utils.js:22` | | Alpha | 首页 UI 变体(`pages/pay-later/home/Index.vue`),非客群枚举 | UI 页面版本标签,并非独立客群标识 | `src/pages/pay-later/home/Index.vue` |
p44其它客群 / 用户类型枚举 `PaylaterUserType`:`Y002` Liquidity 用户、`G001` 不建议报送模型训练的正常客户、`ZQ01` 转分期用户、`DBDP`(在贷余额>0 需还清后才可复借),`src/constants/upgrade.js:82-88`。
p45> 客群态相对静态(按字段判定,不在前端发生流转),主要作为投放/策略的分流标签,叠加在前述各动态状态之上。
p46---
p47## ⑦ 支用态(cashState,取现入口分流用)
p48前端派生枚举(`models/pay-later/account.js:140-158`,枚举值 `ACCOUNT_STATE`,`account.js:25-30`),由 `stmtState`/`cashLimit`/`availableLimit`/`onceLoan` 推导,**决定首页 Instant Cash 入口的分流**([03](../功能说明/03-取现与Instant-Cash.md) D.1):
p49| 值 | 语义 | 派生条件 | 去向 | |---|---|---|---| | `W`(NEW_CREDIT) | 首借用户(未借款未支付) | `stmtState=NEW_CREDIT` | Intro 教育页 | | `AC`(AVAILABLE_CREDIT) | 可借 | `cashLimit ≥ 门槛` | 直接进取现流程 | | `OPC`(ONLY_PAY_CREDIT) | 只可支付不可取现 | `cashLimit=0 且 availableLimit≠0 且未借过` | 无取现入口 | | REPAY_FIRST_CREDIT | 需先还款 | `stmtState=OVER_DUE` | 拦截引导还款 | | NOT_AVILABLE_CREDIT | 取现额度不足 | `cashLimit < 门槛` | 额度不足提示 |
p50## 维度速查
p51| 维度 | 主字段 | 取值 | |---|---|---| | ① 开通/KYC | `OPEN_STATUS` | T211 / T017 / T022 / T023 / T215 / T216 / T217 / ACTIVE_CREDIT_FREEZED | | ② 账户冻结 | `blockCode` | q / R\|S\|F\|n\|B / T / A\|Z;另 `emailVerifyRequired` | | ③ 账单态 | `STMT_STATUS` / `acctStmtStatus` | U / N / O / F(账户级含 NONE) | | ④ 借据/还款 | `LOAN_STATUS_TYPE` / `REPAYMENT_STATUSES` / `extensionStatus` | 借据 S/F/O;还款 P/S/C;展期 success/inprocess/failed;度量 OVERDUE_DAYS/OVERDUE_TIMES/HAS_REPAY | | ⑤ 会员态 | `member.status` / `memberCardState` | ACTIVE;none / expiringSoon / active / inactive | | ⑥ 客群态 | `riskCode` / `marketCode[19]` | Y001 等;Beta(4) / Gamma(5) / NONE | | ⑦ 支用态 | `cashState`(派生) | W / AC / OPC / REPAY_FIRST_CREDIT / NOT_AVILABLE_CREDIT |
抽出的卡片 · 82
定义DOC-2026-022#p2pending_review

PayLater 一个用户的当前处境由多个相互独立的状态维度叠加描述:开通/KYC、账户冻结/拦截态、账单态、借据/还款态、会员态、客群态。

"PayLater 一个用户的"当前处境"由多个相互独立的状态维度叠加描述"

规则DOC-2026-022#p2pending_review

各状态维度取自不同后端字段,不应混为一个枚举。

"各维度取自不同后端字段,不应混为一个枚举"

定义DOC-2026-022#p5pending_review

开通/KYC 态入口来自后端 OPEN_STATUS(开户/KYC 状态),前端有 OPEN_STATUS_MAP(开户结果路由)与 PayLaterStatus(更细扩展枚举)两套枚举。

"入口来自后端 `OPEN_STATUS`(开户/KYC 状态)"

状态DOC-2026-022#p6pending_review

OPEN_STATUS=T017 表示待视频面签(待 VB):未开户,需完成视频面签 KYC。

"待视频面签 (待 VB) | `OPEN_STATUS = T017`"

状态DOC-2026-022#p6pending_review

OPEN_STATUS=T022 表示待补充资料:未开户,待补充申请资料。

"待补充资料 | `OPEN_STATUS = T022`"

状态DOC-2026-022#p6pending_review

OPEN_STATUS=T023 表示待 VB+补充资料:未开户,需同时完成视频面签和补充资料。

"待 VB + 补充资料 | `OPEN_STATUS = T023`"

状态DOC-2026-022#p6pending_review

OPEN_STATUS=T215 表示授信审批中:资料已交,授信审批处理中。

"授信审批中 | `OPEN_STATUS = T215`"

状态DOC-2026-022#p6pending_review

OPEN_STATUS=T216 表示已开户(额度正常):开户成功,授信额度建立,可用。

"已开户(额度正常) | `OPEN_STATUS = T216`"

状态DOC-2026-022#p6pending_review

OPEN_STATUS=T217 表示开户管控/拒绝:开户被管控或拒绝,无法开户。

"开户管控 / 拒绝 | `OPEN_STATUS = T217`"

状态DOC-2026-022#p6pending_review

OPEN_STATUS=T211 表示未开户(初始):尚未开户的初始态。

"未开户(初始) | `OPEN_STATUS = T211`"

状态DOC-2026-022#p7pending_review

PayLaterStatus.Locked=ACTIVE_CREDIT_FREEZED 表示已开户额度锁定:已开户但额度异常、被锁定。

"Locked = ACTIVE_CREDIT_FREEZED` | 已开户但额度异常、被锁定"

动作条件DOC-2026-022#p8pending_review

表单层通过数字变体 currentPlaylaterStatus 等于 '1022' 或 '1017' 判断是否需要视频面签。

"`currentPlaylaterStatus === '1022' || '1017'`"

流程步骤DOC-2026-022#p9pending_review

开通流转:未开户T211申请提交后进入待VB T017/待补料T022/待VB+补料T023,再到授信审批中T215;T215分流为已开户T216(进入正常用账)或开户管控/拒绝T217(终态);已开户T216额度异常则进入ACTIVE_CREDIT_FREEZED额度锁定。

"未开户 T211 → 申请提交"

定义DOC-2026-022#p12pending_review

账户冻结/可用态来源于后端 BLOCK_CODE 映射为 accountInfo.blockCode,构造时映射为 frozenState(ACCOUNT_FROZEN_STATE)。

"来源:后端 `BLOCK_CODE` →`accountInfo.blockCode`"

规则DOC-2026-022#p12pending_review

取款/支付前在 checkAccountBeforeWithdrawAndPay 按 blockCode 字符匹配进行拦截。

"取款/支付前在 `checkAccountBeforeWithdrawAndPay` 按字符匹配拦截"

状态DOC-2026-022#p13pending_review

blockCode 含 q 表示身份证待重传:账户未激活,弹窗要求重新上传身份证。

"身份证待重传 | `blockCode` 含 `q`"

状态DOC-2026-022#p13pending_review

blockCode 含 R|S|F|n|B 表示账户冻结:PayLater 不可用,弹窗账户已冻结。

"账户冻结 | `blockCode` 含 `R\|S\|F\|n\|B`"

状态DOC-2026-022#p13pending_review

blockCode 含 R/S 映射 frozenState=LOSS('RS'),表示账户挂失态。

"挂失态 | `blockCode` 含 `R` / `S`;`frozenState = ACCOUNT_FROZEN_STATE.LOSS('RS')`"

状态DOC-2026-022#p13pending_review

blockCode 含 F/n/B 映射 frozenState=LOCK('nBF'),表示风控锁定。

"风控锁定 | `blockCode` 含 `F` / `n` / `B`;`frozenState = ACCOUNT_FROZEN_STATE.LOCK('nBF')`"

状态DOC-2026-022#p13pending_review

blockCode 含 T 表示身份验证中:PayLater 未激活,弹窗身份验证中请等待。

"身份验证中 | `blockCode` 含 `T`"

状态DOC-2026-022#p13pending_review

blockCode 含 A|Z 或 acctStmtStatus=OVER_DUE,映射 frozenState=LOCK_PART('AZ'),表示财务系统部分锁定,弹窗引导还款。

"逾期 / 部分锁定 | `blockCode` 含 `A\|Z`;或 `acctStmtStatus === BILL_STATE_TYPE.OVER_DUE`;`frozenState = ACCOUNT_FROZEN_STATE.LOCK_PART('AZ')`"

状态DOC-2026-022#p13pending_review

blockCode 为空/NONE 映射 frozenState=NONE,表示账户可用无冻结。

"无冻结 | `blockCode` 为空 / `NONE`;`frozenState = ACCOUNT_FROZEN_STATE.NONE`"

动作条件DOC-2026-022#p15pending_review

accountInfo.emailVerifyRequired 为 true 表示需邮箱验证:PayLater 未激活,需先验证邮箱。

"需邮箱验证 | `accountInfo.emailVerifyRequired === true`"

流程步骤DOC-2026-022#p17pending_review

拦截层叠加在已开户之上,任一命中即拦截取款/支付:blockCode q 重传身份证、R/S/F/n/B 账户冻结、T 身份验证中、A/Z或账单逾期引导还款、emailVerifyRequired 先验证邮箱;blockCode解除或邮箱已验则恢复可用。

"叠加在"已开户"之上的拦截层,任一命中即拦截取款/支付"

定义DOC-2026-022#p20pending_review

账单级状态为 STMT_STATUS_MAP;账户级 acctStmtStatus(=ACCT_STMT_STATUS)取值同为 BILL_STATE_TYPE(含 NONE)。

"账单级状态 `STMT_STATUS_MAP`"

状态DOC-2026-022#p21pending_review

账单状态为「未出账」时 STMT_STATUS=U(STMT_STATUS_MAP.NO_BILL / BILL_STATE_TYPE.NOT_IN_DUE),表示本期账单未出。

"未出账 | `STMT_STATUS = U`;`STMT_STATUS_MAP.NO_BILL` / `BILL_STATE_TYPE.NOT_IN_DUE` | 本期账单未出"

状态DOC-2026-022#p21pending_review

账单状态为「已出账」时 STMT_STATUS=N(STMT_STATUS_MAP.HAD_BILL / BILL_STATE_TYPE.IN_DUE),表示账单已出、待还款。

"已出账 | `STMT_STATUS = N`;`STMT_STATUS_MAP.HAD_BILL` / `BILL_STATE_TYPE.IN_DUE` | 账单已出,待还款"

状态DOC-2026-022#p21pending_review

账单状态为「已逾期」时 STMT_STATUS=O(STMT_STATUS_MAP.OVERDUE / BILL_STATE_TYPE.OVER_DUE),表示账单逾期未还。

"已逾期 | `STMT_STATUS = O`;`STMT_STATUS_MAP.OVERDUE` / `BILL_STATE_TYPE.OVER_DUE` | 账单逾期未还"

状态DOC-2026-022#p21pending_review

账单状态为「已还清」时 STMT_STATUS=F(STMT_STATUS_MAP.REPAID / BILL_STATE_TYPE.CLEAN_DUE),表示账单已结清。

"已还清 | `STMT_STATUS = F`;`STMT_STATUS_MAP.REPAID` / `BILL_STATE_TYPE.CLEAN_DUE` | 账单已结清"

状态DOC-2026-022#p21pending_review

账户级账单状态 acctStmtStatus=NONE(BILL_STATE_TYPE.NONE)表示无账单数据。

"无数据(账户级) | `acctStmtStatus = NONE`;`BILL_STATE_TYPE.NONE` | 无账单数据"

动作条件DOC-2026-022#p23pending_review

账单布尔 isNoBill 由 STMT_STATUS===U 判定,表示未出账。

"`isNoBill` | `STMT_STATUS === U` | 未出账"

动作条件DOC-2026-022#p23pending_review

账单布尔 isOverDue 由 OVERDUE_DAYS>0 判定为已逾期,按逾期天数判定而非直接读 STMT_STATUS。

"`isOverDue` | `OVERDUE_DAYS > 0` | 已逾期(按逾期天数判定,不直接读 STMT_STATUS)"

动作条件DOC-2026-022#p23pending_review

账单布尔 isCanRepay 由 STMT_STATUS===N 或 ===O 判定,表示已出账(含逾期)可还款。

"`isCanRepay` | `STMT_STATUS === N \|\| === O` | 已出账(含逾期)可还款"

动作条件DOC-2026-022#p23pending_review

账单布尔 isUnused 由 CUR_STMT_AMT===0 且 STMT_PAID_AMT===0 判定,表示本期未使用。

"`isUnused` | `CUR_STMT_AMT === 0 && STMT_PAID_AMT === 0` | 本期未使用"

动作条件DOC-2026-022#p23pending_review

账单布尔 isRepaid 由 STMT_STATUS===F 判定,表示已结清。

"`isRepaid` | `STMT_STATUS === F` | 已结清"

状态DOC-2026-022#p24pending_review

账户层使用态 ACCT_USE_STATUS(USE_STATE_TYPE)取值:W 未使用、H 当期有已出账单、N 当期无已出账单。

"账户层另有使用态 `ACCT_USE_STATUS`(`USE_STATE_TYPE`:`W` 未使用 / `H` 当期有已出账单 / `N` 当期无已出账单"

状态DOC-2026-022#p24pending_review

综合账户态 ACCOUNT_STATE 取值为 W/AC/NAC/RFC/OPC/NU/HN/HF/HO。

"综合账户态 `ACCOUNT_STATE`(`W/AC/NAC/RFC/OPC/NU/HN/HF/HO`"

流程步骤DOC-2026-022#p25pending_review

账单状态流转:未出账 U 出账后变已出账 N;按期还清则已还清 F;到期未还变已逾期 O(OVERDUE_DAYS>0),还清后变已还清 F。

"未出账 U → 出账 → 已出账 N ├─ 按期还清 → 已还清 F └─ 到期未还 → 已逾期 O(OVERDUE_DAYS > 0)→ 还清 → 已还清 F"

定义DOC-2026-022#p28pending_review

借据(IOU)状态由 LOAN_STATUS_TYPE 表示。

"借据(IOU)状态 `LOAN_STATUS_TYPE`(`src/models/pay-later/loan.js:4-8`)"

状态DOC-2026-022#p29pending_review

借据状态 LOAN_STATUS_TYPE.SUCCESS=S 表示借据放款成功。

"借据成功 | `LOAN_STATUS_TYPE.SUCCESS = S` | 借据放款成功"

状态DOC-2026-022#p29pending_review

借据状态 LOAN_STATUS_TYPE.FAIL=F 表示借据放款失败。

"借据失败 | `LOAN_STATUS_TYPE.FAIL = F` | 借据放款失败"

状态DOC-2026-022#p29pending_review

借据状态 LOAN_STATUS_TYPE.WAIT=O 表示借据待处理/处理中。

"借据处理中 | `LOAN_STATUS_TYPE.WAIT = O` | 借据待处理 / 处理中"

状态DOC-2026-022#p29pending_review

还款状态 REPAYMENT_STATUSES.PENDING=P 表示还款交易处理中。

"还款处理中 | `REPAYMENT_STATUSES.PENDING = P` | 还款交易处理中"

状态DOC-2026-022#p29pending_review

还款状态 REPAYMENT_STATUSES.SUCCESSFUL=S 表示还款成功。

"还款成功 | `REPAYMENT_STATUSES.SUCCESSFUL = S` | 还款成功"

状态DOC-2026-022#p29pending_review

还款状态 REPAYMENT_STATUSES.FAIL=C 表示还款失败。

"还款失败 | `REPAYMENT_STATUSES.FAIL = C` | 还款失败"

定义DOC-2026-022#p29pending_review

还款类型 REPAYMENT_TYPES.EARLY_REPAYMENT=IOURepay 表示单笔借据提前结清。

"还款类型:借据提前结清 | `REPAYMENT_TYPES.EARLY_REPAYMENT = IOURepay` | 单笔借据提前结清"

定义DOC-2026-022#p29pending_review

还款类型 REPAYMENT_TYPES.BILL_REPAYMENT=BillRepay 表示按账单还款。

"还款类型:账单还款 | `REPAYMENT_TYPES.BILL_REPAYMENT = BillRepay` | 按账单还款"

状态DOC-2026-022#p29pending_review

展期重组状态 extensionStatus.S=success 表示展期/重组申请成功。

"展期重组成功 | `extensionStatus.S = success` | 展期 / 重组申请成功"

状态DOC-2026-022#p29pending_review

展期重组状态 extensionStatus.P=inprocess 表示展期/重组申请处理中。

"展期重组处理中 | `extensionStatus.P = inprocess` | 展期 / 重组申请处理中"

状态DOC-2026-022#p29pending_review

展期重组状态 extensionStatus.C=failed 表示展期/重组申请失败。

"展期重组失败 | `extensionStatus.C = failed` | 展期 / 重组申请失败"

定义DOC-2026-022#p31pending_review

字段 OVERDUE_DAYS 为数值型(默认 0),表示逾期天数,isOverDue 即由其 >0 判定。

"`OVERDUE_DAYS` | number(默认 0) | 逾期天数,`isOverDue` 即由 `>0` 判定"

定义DOC-2026-022#p31pending_review

字段 OVERDUE_TIMES 为数值型(默认 0),表示账单逾期次数。

"`OVERDUE_TIMES` | number(默认 0) | 账单逾期次数"

定义DOC-2026-022#p31pending_review

字段 HAS_REPAY 取值 Y/N(默认 N),表示是否有过还款。

"`HAS_REPAY` | `Y` / `N`(默认 N) | 是否有过还款"

定义DOC-2026-022#p32pending_review

展期重组申请通过 API /core/trans/extension/apply 发起,交易类型为 EXTENSION=EX。

"展期重组申请 API:`/core/trans/extension/apply`(`src/constants/api.js:1984`),交易类型 `EXTENSION = EX`"

流程步骤DOC-2026-022#p33pending_review

借据流转:处理中 O 转成功 S(计入账单/可还款)或失败 F。

"借据:处理中 O → 成功 S(计入账单/可还款) / 失败 F"

流程步骤DOC-2026-022#p33pending_review

还款流转:处理中 P 转成功 S 或失败 C。

"还款:处理中 P → 成功 S / 失败 C"

流程步骤DOC-2026-022#p33pending_review

逾期流转:账单逾期后可申请展期重组(处理中 P 转成功 S 或失败 C),还清后逾期解除。

"逾期:账单逾期 → 可申请展期重组(处理中 P → 成功 S / 失败 C)→ 还清后逾期解除"

定义DOC-2026-022#p36pending_review

LimitUp 会员用于额度成长,会员实体来自 API /core/account/limit-up-member/get,首页卡片显示态为 memberCardState。

"LimitUp 会员(额度成长)。会员实体来自 `/core/account/limit-up-member/get`"

动作条件DOC-2026-022#p37pending_review

会员激活(有效)的条件为 member.status===ACTIVE 且 expireTime>systemDate。

"会员激活 | `member.status === ACTIVE` 且 `expireTime > systemDate` | 会员有效"

状态DOC-2026-022#p37pending_review

会员卡片显示态 memberCardState=none(!isMemberVisible),表示不满足前置条件、卡片不展示。

"卡片:隐藏 | `memberCardState = none`(`!isMemberVisible`) | 不满足前置条件,卡片不展示"

状态DOC-2026-022#p37pending_review

会员卡片显示态 memberCardState=expiringSoon(isMemberExpiredSoon,距 expireTime≤7天),表示会员即将到期、提示续费。

"卡片:即将过期 | `memberCardState = expiringSoon`(`isMemberExpiredSoon`,距 `expireTime` ≤ 7 天) | 会员即将到期,提示续费"

状态DOC-2026-022#p37pending_review

会员卡片显示态 memberCardState=active(isMember),表示会员有效且非临期。

"卡片:活跃 | `memberCardState = active`(`isMember`) | 会员有效且非临期"

状态DOC-2026-022#p37pending_review

会员卡片显示态 memberCardState=inactive(可见但非会员/已过期),表示未开通或已过期、引导开通。

"卡片:非活跃 | `memberCardState = inactive`(可见但非会员 / 已过期) | 未开通或已过期,引导开通"

规则DOC-2026-022#p38pending_review

会员功能全局开关为 marketCode.startsWith('01'),即 marketCode 以 01 开头时会员功能启用。

"会员功能全局开关:`marketCode.startsWith('01')`"

规则DOC-2026-022#p38pending_review

会员提额比例取自 marketCode 第 3-4 位(getMemberPremiumPercent),仅会员 ACTIVE 时生效。

"会员提额比例取 `marketCode` 第 3-4 位(`getMemberPremiumPercent`,`src/utils/limit-up-utils.js:52`,仅会员 ACTIVE 时生效)"

流程步骤DOC-2026-022#p39pending_review

会员态流转:非活跃 inactive 开通后转活跃 active;临近到期(≤7天)转即将过期 expiringSoon;续费转回活跃 active,过期转回非活跃 inactive。

"非活跃 inactive ──开通──→ 活跃 active ──临近到期(≤7天)──→ 即将过期 expiringSoon ├─ 续费 → 活跃 active └─ 过期 → 非活跃 inactive"

动作条件DOC-2026-022#p39pending_review

当前置条件不满足(邮箱/身份未验、账户冻结、未启用)时会员卡片隐藏为 none。

"前置条件不满足(邮箱/身份未验、账户冻结、未启用)→ 隐藏 none"

定义DOC-2026-022#p42pending_review

客群标识用于承载额度成长策略与 UI 投放分层

"客群标识承载额度成长策略与 UI 投放分层"

状态DOC-2026-022#p43pending_review

当 accountInfo.riskCode 含 Y001(isY001)时识别为 LimitUp 灵活额度用户,走灵活额度策略

"LimitUp 灵活额度用户 | `accountInfo.riskCode` 含 `Y001`(`PaylaterUserType.FlexibleLimitUser`);`isY001` | LimitUp 客群,走灵活额度策略"

状态DOC-2026-022#p43pending_review

当 marketCode 第 20 位 charAt(19)==='4' 时识别为 Beta 灰度新 UI,V2 授信结果页可见

"Beta(灰度新 UI) | `marketCode` 第 20 位 `charAt(19) === '4'`;`LIMIT_UP_USER_TIER.BETA` | 新 UI 灰度 Beta,V2 授信结果页可见"

状态DOC-2026-022#p43pending_review

当 marketCode 第 20 位 charAt(19)==='5' 时识别为 Gamma 灰度新 UI,主页/Mission 走 V2,授信结果页回退 V1

"Gamma(灰度新 UI) | `marketCode` 第 20 位 `charAt(19) === '5'`;`LIMIT_UP_USER_TIER.GAMMA` | 新 UI 灰度 Gamma,主页/Mission 走 V2,授信结果页回退 V1"

状态DOC-2026-022#p43pending_review

当 marketCode 第 20 位非 4/5 时识别为老 LimitUp(NONE 兜底),脏数据兜底走 V1

"老 LimitUp(NONE 兜底) | `marketCode` 第 20 位非 `4`/`5`;`LIMIT_UP_USER_TIER.NONE` | 脏数据兜底走 V1"

边界DOC-2026-022#p43pending_review

Alpha 是首页 UI 变体的页面版本标签,并非独立客群标识,不属于客群枚举

"Alpha | 首页 UI 变体(`pages/pay-later/home/Index.vue`),非客群枚举 | UI 页面版本标签,并非独立客群标识"

状态DOC-2026-022#p44pending_review

PaylaterUserType 用户类型枚举包含:Y002 Liquidity 用户、G001 不建议报送模型训练的正常客户、ZQ01 转分期用户、DBDP(在贷余额>0 需还清后才可复借)

"`Y002` Liquidity 用户、`G001` 不建议报送模型训练的正常客户、`ZQ01` 转分期用户、`DBDP`(在贷余额>0 需还清后才可复借)"

动作条件DOC-2026-022#p44pending_review

DBDP 用户在贷余额>0 时需还清后才可复借

"`DBDP`(在贷余额>0 需还清后才可复借)"

边界DOC-2026-022#p45pending_review

客群态相对静态,按字段判定,不在前端发生流转,作为投放/策略的分流标签叠加在各动态状态之上

"客群态相对静态(按字段判定,不在前端发生流转),主要作为投放/策略的分流标签,叠加在前述各动态状态之上。"

定义DOC-2026-022#p48pending_review

支用态(cashState)为前端派生枚举,由 stmtState/cashLimit/availableLimit/onceLoan 推导,决定首页 Instant Cash 入口的分流

"由 `stmtState`/`cashLimit`/`availableLimit`/`onceLoan` 推导,**决定首页 Instant Cash 入口的分流**"

状态DOC-2026-022#p49pending_review

cashState=W(NEW_CREDIT)表示首借用户(未借款未支付),派生条件为 stmtState=NEW_CREDIT,去向 Intro 教育页

"`W`(NEW_CREDIT) | 首借用户(未借款未支付) | `stmtState=NEW_CREDIT` | Intro 教育页"

状态DOC-2026-022#p49pending_review

cashState=AC(AVAILABLE_CREDIT)表示可借,派生条件为 cashLimit≥门槛,去向直接进取现流程

"`AC`(AVAILABLE_CREDIT) | 可借 | `cashLimit ≥ 门槛` | 直接进取现流程"

状态DOC-2026-022#p49pending_review

cashState=OPC(ONLY_PAY_CREDIT)表示只可支付不可取现,派生条件为 cashLimit=0 且 availableLimit≠0 且未借过,无取现入口

"`OPC`(ONLY_PAY_CREDIT) | 只可支付不可取现 | `cashLimit=0 且 availableLimit≠0 且未借过` | 无取现入口"

状态DOC-2026-022#p49pending_review

cashState=REPAY_FIRST_CREDIT 表示需先还款,派生条件为 stmtState=OVER_DUE,去向拦截引导还款

"REPAY_FIRST_CREDIT | 需先还款 | `stmtState=OVER_DUE` | 拦截引导还款"

状态DOC-2026-022#p49pending_review

cashState=NOT_AVILABLE_CREDIT 表示取现额度不足,派生条件为 cashLimit<门槛,去向额度不足提示

"NOT_AVILABLE_CREDIT | 取现额度不足 | `cashLimit < 门槛` | 额度不足提示"