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

04-账单与账期

原文 · 26 段(高亮 = 已被卡片引用)
p1# 04 · 账单与账期(Bill / Statement)
p2> 事实来源 = SDK 代码仓 `ifes-resm`。出账/逾期口径以最新 PRD/PM 为准。
p3## 模块定位
p4PayLater 是**账单周期驱动**的循环授信——消费/取现产生欠款,按账期出账单,到期还款。账单模块是用户感知"欠多少、什么时候还、是否逾期"的核心,并承接还款/重组入口。
p5## 业务视角:账单是履约的"仪表盘 + 总入口"
p6> 每条规则的代码证据见下方 D 节。
p7- **用户看什么**:账单页只有**两个 Tab——当期 / 下期(Next cycles)**,不是逐月无限翻页;未出账明细挂在 Next tab 的「Upcoming bills」入口下;历史账单从导航栏进(只展示已结清 F 态、≤12 个月);逾期有专页。 - **用户做什么**:底栏「Repay this bill」把**当期未还总额自动带进还款页**——账单页是全部还款动作的发起地(全额/最低/分期/重组入口都从这里或首页 banner 进,门槛见 [05](05-灵活还款.md))。 - **状态语言**:账单四态 = 未出账 U / 已出账待还 N / 已逾期 O / 已结清 F;逾期时展示罚息区块和减免入口;多还/溢缴走退款记录页。 - **经营关注点**:账单页是**逾期重组的准入判定现场**(进入即拉预付门槛状态供 Adjust 入口门控);会员用户在账单页看到还款提额比例(会员 6% vs 非会员兜底 2%)——账单页同时承担"还款激励"的展示位。
p8## 核心能力
p9| 能力 | 路由 | 文件 | 说明 | |---|---|---|---| | 账单主页 | `PAY_LATER_BILL` | `bill/Index.vue` | 当期账单 + 账期切换 Tab;会员提额率展示;逾期重组准入判定 | | 账单明细 | `PAY_LATER_BILL_DETAIL` | `bill/Detail.vue` | 当期账单逐项拆解 | | 历史账单 | `PAY_LATER_BILL_HISTORY` | `bill/History.vue` | 过往还款/账单时间线(账户级,**≠交易历史、≠额度变更**)| | 未出账单 | `PAY_LATER_BILL_UPCOMING` | `bill/Upcoming.vue` | 下期预估账单 | | 逾期账单 | `PAY_LATER_BILL_OVER_DUES` | `bill/OverDues.vue` | 逾期清单 + 重组入口(满足门槛时)| | 账单还款 | `PAY_LATER_BILL_REPAYMENT` | `bill/Repayment.vue` | 单账单还款入口(接 [05 灵活还款](05-灵活还款.md))| | 退款 | `PAY_LATER_BILL_REFUND` | `bill/Refund.vue` | 多还/溢缴退款 | | 组件 | — | `BillCard.vue / BillDetails.vue / BillFooter.vue` | 账单卡/明细/底栏 |
p10## 账单状态
p11账户级状态枚举 `ACCT_STMT_STATUS`(`U`=未出账 / `N`=已出账待还 / `F`=已还清 / `O`=已逾期)用于首页/最小还款等账户态推导:前端 `stmtState` 由 `useState + overdueTimes + currentState` 推导(见账户模型 `models/pay-later/account.js`;详见 05/07)。
p12**bill 页状态判定**:账单页(`bill/*`)不读 `BILL_STATE_TYPE` 枚举,而是用账单模型 `models/pay-later/bill.js` 派生的三个**布尔量**驱动视图—— - `isNoBill`(是否未出账,`STMT_STATUS === NO_BILL`)。 - `isOverDue`(是否已逾期,`OVERDUE_DAYS > 0`)。 - `isRepaid`(是否已结清,`STMT_STATUS === REPAID`)。
p13(`models/pay-later/bill.js:74-78`。账单四态枚举是账户模型层口径,账单页面层落地为布尔开关。)
p14## 账单详情接口新增字段(160118)
p15为支持 limit up(提额)业务的用户指引,PRD 描述账单详情接口 `160118` 新增以下三个字段。— 《接口新增账单相关字段0826 2024-12-30》
p16| 字段含义 | 用途 | |---|---| | 已出账的账单本金 | 当前已出账账单对应的本金金额 | | 未出账各个账单的本金 | 逐笔列出尚未出账账单的本金(用于提额业务的额度/欠款引导) | | 最近一个已出账账单的逾期状态 | 标识最近一期已出账账单是否逾期,供前端做提额准入/指引判定 |
p17**前端实现口径**: - 前端账单数据走 `coreTransQueryBill`(`store/modules/pay-later/bill.js:23`,常量在 `constants/api.js:2088`;另有 `coreTransQueryBillList`/`coreTransQueryBillSpendingList` 分别供历史与明细)。接口号 `160118` 前端代码未出现,与 `coreTransQueryBill` 的对应关系由后台/SA 维护。 - "本金"相关字段不由账单接口逐笔返回,而落在**账户模型** `models/pay-later/account.js`:`accountPrinAmt`(账户本金,`ACCOUNT_PRIN_AMT`,:75)、`unbillAmt`(未出账账单总金额,`UN_BILL_AMT`,:49)。提额引导用的本金口径取自 account 模型而非账单详情接口逐笔。
p18## 关键关联
p19- **会员提额率**展示:账单页按 `isMember` 显示 `getMemberPremiumPercent()` vs 非会员兜底 2%(见 [10 会员与 Premium](10-会员与Premium.md))。 - **逾期重组入口**:逾期账单页/首页 banner,门槛 `flexCode第19位∈{1,2} + loanRestructuringSwitch=Y`(详见 [05](05-灵活还款.md))。
p20## 其他账单环节
p21- **Refund / Repayment 记录入口**:账单侧调 `coreTransQueryRefundRepayRecord` 拉取退款/还款记录,作为退款与还款的查询入口。 - **重组入口共 4 处**:逾期重组入口并非只在逾期账单页,代码中分布在 4 处(账单主页/逾期页/首页 banner 等),门槛口径见 [05](05-灵活还款.md)。 - **罚息区块**:账单页含独立的罚息(penalty/overdue charge)展示区块,逾期时呈现。 - **明细分页 + 现金借贷清单**:账单明细页支持分页加载,并单列现金借贷(cash loan)清单与普通消费区分。 - **History 过滤规则**:历史账单页(`bill/History.vue`)仅展示状态为 `F`(已结清)且时间 ≤ 12 个月的记录。 - **账单埋点**:账单各页/各入口已接埋点(详见 [13-埋点与监控](13-埋点与监控.md))。
p22## D. 账单页编排(代码查实,2026-07-16)
p23> 源:`bill/Index.vue` + `store/modules/pay-later/bill.js`,分支 `vibe-coding-case/K-S-2607-opt-20260710`。
p24- **进入**:pageview 上报 + 对外 `VIEW_BILLING_CYCLE_PAGE`;`restructurePrepaySwitch='Y'` 时拉预付门槛状态(供逾期 Adjust 入口门控);账单数据 `coreTransQueryBill{STMT_MONTH:yyyyMM}`(`bill/Index.vue:160-216`)。 - **Tab 结构**:仅当期(stmtDate 当月)/ Next(+1 月)两 Tab,切月重拉;深链 `?tab=next` 可直达下期;Next tab 有未出账时出「Upcoming bills」入口 → 未出账页;历史页走 `coreTransQueryBillList`。 - **还款入口带参**:`BillFooter` Repay → `viewPayLaterRepayment({type: BILL_REPAYMENT, amount: totalUnpaidAmount})`;分期入口门控 `marketCode 第15位='1' && repayByInstallmentSwitch='Y'`(`BillFooter.vue:56-77`)。 - **退款**:BillCard 在 `refundAmount≠0` 时显示退款入口 → `Refund.vue` 调 `coreTransQueryRefundRepayRecord{STMT_DATE, TRANSACTION_TYPE:'R'}`;同接口以 `TRANSACTION_TYPE='P'` 供 `bill/Repayment.vue` 列还款记录——**一个接口按交易类型双用**。 - **对外上报**:`BILLING_CYCLE_REPAY_THIS_BILL_CLICK/NO_CLICK`(点/不点还款离开),供外部漏斗。
p25## 待确认 / 风险
p26- 接口号 `160118` 与 `coreTransQueryBill` 的对应关系由后台/SA 维护(见 `_待PM确认清单-20260624.md`)。 - "额度变更历史(top-up/解押事件)"目前**无规范路由**(待 SA 定义),勿与账单历史/交易历史混淆。 - 出账日/还款日/宽限期、罚息计费口径以 PRD 为准。 - 退款触发条件与到账路径待补。
抽出的卡片 · 24
定义DOC-2026-008#p4pending_review

PayLater 是账单周期驱动的循环授信:消费/取现产生欠款,按账期出账单,到期还款。

"PayLater 是**账单周期驱动**的循环授信——消费/取现产生欠款,按账期出账单,到期还款。"

定义DOC-2026-008#p4pending_review

账单模块是用户感知欠多少、什么时候还、是否逾期的核心,并承接还款/重组入口。

"账单模块是用户感知"欠多少、什么时候还、是否逾期"的核心,并承接还款/重组入口。"

边界DOC-2026-008#p7pending_review

账单页只有两个 Tab:当期 / 下期(Next cycles),而非逐月无限翻页。

"账单页只有**两个 Tab——当期 / 下期(Next cycles)**,不是逐月无限翻页"

边界DOC-2026-008#p7pending_review

历史账单从导航栏进入,只展示已结清(F 态)且不超过 12 个月的账单。

"历史账单从导航栏进(只展示已结清 F 态、≤12 个月)"

动作条件DOC-2026-008#p7pending_review

点击账单页底栏「Repay this bill」时,当期未还总额自动带入还款页;账单页是全部还款动作的发起地。

"底栏「Repay this bill」把**当期未还总额自动带进还款页**"

状态DOC-2026-008#p7pending_review

账单有四种状态:未出账 U、已出账待还 N、已逾期 O、已结清 F。

"账单四态 = 未出账 U / 已出账待还 N / 已逾期 O / 已结清 F"

规则DOC-2026-008#p7pending_review

账单页向会员用户展示还款提额比例:会员为 6%,非会员兜底为 2%。

"会员用户在账单页看到还款提额比例(会员 6% vs 非会员兜底 2%)"

状态DOC-2026-008#p11pending_review

账户级状态枚举 ACCT_STMT_STATUS 取值:U 未出账、N 已出账待还、F 已还清、O 已逾期,用于首页/最小还款等账户态推导。

"账户级状态枚举 `ACCT_STMT_STATUS`(`U`=未出账 / `N`=已出账待还 / `F`=已还清 / `O`=已逾期)用于首页/最小还款等账户态推导"

规则DOC-2026-008#p12pending_review

账单页不读 BILL_STATE_TYPE 枚举,而用账单模型派生的三个布尔量驱动视图:isNoBill(未出账,STMT_STATUS===NO_BILL)、isOverDue(已逾期,OVERDUE_DAYS>0)、isRepaid(已结清,STMT_STATUS===REPAID)。

"账单页(`bill/*`)不读 `BILL_STATE_TYPE` 枚举,而是用账单模型 `models/pay-later/bill.js` 派生的三个**布尔量**驱动视图"

定义DOC-2026-008#p16pending_review

账单详情接口 160118 新增字段“最近一个已出账账单的逾期状态”,标识最近一期已出账账单是否逾期,供前端做提额准入/指引判定。

"最近一个已出账账单的逾期状态 | 标识最近一期已出账账单是否逾期,供前端做提额准入/指引判定"

定义DOC-2026-008#p16pending_review

账单详情接口 160118 新增字段“已出账的账单本金”,表示当前已出账账单对应的本金金额。

"已出账的账单本金 | 当前已出账账单对应的本金金额"

动作条件DOC-2026-008#p19pending_review

逾期重组入口位于逾期账单页/首页 banner,准入门槛为 flexCode 第19位∈{1,2} 且 loanRestructuringSwitch=Y。

"逾期重组入口**:逾期账单页/首页 banner,门槛 `flexCode第19位∈{1,2} + loanRestructuringSwitch=Y`"

定义DOC-2026-008#p21pending_review

账单侧调用 coreTransQueryRefundRepayRecord 接口拉取退款/还款记录,作为退款与还款的查询入口。

"账单侧调 `coreTransQueryRefundRepayRecord` 拉取退款/还款记录,作为退款与还款的查询入口"

边界DOC-2026-008#p21pending_review

逾期重组入口并非只在逾期账单页,代码中分布在账单主页、逾期页、首页 banner 等共 4 处。

"逾期重组入口并非只在逾期账单页,代码中分布在 4 处(账单主页/逾期页/首页 banner 等)"

动作条件DOC-2026-008#p21pending_review

账单页含独立的罚息(penalty/overdue charge)展示区块,逾期时呈现。

"账单页含独立的罚息(penalty/overdue charge)展示区块,逾期时呈现"

规则DOC-2026-008#p21pending_review

账单明细页支持分页加载,并单列现金借贷(cash loan)清单,与普通消费区分。

"账单明细页支持分页加载,并单列现金借贷(cash loan)清单与普通消费区分"

规则DOC-2026-008#p21pending_review

历史账单页仅展示状态为 F(已结清)且时间不超过 12 个月的记录。

"历史账单页(`bill/History.vue`)仅展示状态为 `F`(已结清)且时间 ≤ 12 个月的记录"

状态DOC-2026-008#p21pending_review

账单状态 F 表示已结清。

"状态为 `F`(已结清)"

动作条件DOC-2026-008#p24pending_review

当 restructurePrepaySwitch='Y' 时,账单页进入时拉取预付门槛状态,用于逾期 Adjust 入口门控。

"`restructurePrepaySwitch='Y'` 时拉预付门槛状态(供逾期 Adjust 入口门控)"

动作条件DOC-2026-008#p24pending_review

账单页进入时以 STMT_MONTH(yyyyMM)为参调用 coreTransQueryBill 获取账单数据。

"账单数据 `coreTransQueryBill{STMT_MONTH:yyyyMM}`"

规则DOC-2026-008#p24pending_review

账单页仅有当期(stmtDate 当月)与 Next(+1 月)两个 Tab,切月重拉数据;深链 ?tab=next 可直达下期;Next tab 有未出账时出现「Upcoming bills」入口进入未出账页;历史页调用 coreTransQueryBillList。

"仅当期(stmtDate 当月)/ Next(+1 月)两 Tab,切月重拉;深链 `?tab=next` 可直达下期;Next tab 有未出账时出「Upcoming bills」入口 → 未出账页;历史页走 `coreTransQueryBillList`"

动作条件DOC-2026-008#p24pending_review

账单还款分期入口的门控条件为 marketCode 第15位='1' 且 repayByInstallmentSwitch='Y'。

"分期入口门控 `marketCode 第15位='1' && repayByInstallmentSwitch='Y'`"

动作条件DOC-2026-008#p24pending_review

BillCard 在 refundAmount≠0 时显示退款入口,进入 Refund.vue 以 TRANSACTION_TYPE='R' 调用 coreTransQueryRefundRepayRecord。

"BillCard 在 `refundAmount≠0` 时显示退款入口 → `Refund.vue` 调 `coreTransQueryRefundRepayRecord{STMT_DATE, TRANSACTION_TYPE:'R'}`"

规则DOC-2026-008#p24pending_review

coreTransQueryRefundRepayRecord 接口以 TRANSACTION_TYPE='P' 供还款记录列表使用,一个接口按交易类型(R 退款、P 还款)双用。

"同接口以 `TRANSACTION_TYPE='P'` 供 `bill/Repayment.vue` 列还款记录——**一个接口按交易类型双用**"