p1# R7 · PayLater 通知触达与交易流水
p2> 面向产品 / 数据团队。本篇汇总两块:**一、通知与触达**(push / 邮件 / OTP / 站内提醒 / 原生事件上报)与 **二、交易流水**(交易列表入口、接口、`TRANSACTION_TYPE` 类型表)。
> 代码源:`/Users/leo/Allo Paylater/ifes-resm/src`(HEAD `fb597d5`)。
> 相关篇目:还款提醒文案逻辑配合 `11 账单还款`,提额奖励配合 `03 提额奖励`,质押配合 `04 质押`,会员配合 `07 会员`。术语见 [术语表](R2-术语表.md),字段见 [数据字段字典](R3-数据字段字典.md)。
p3总体结论:**前端不直接发 push/邮件**。触达分三类——
p41. **原生事件上报**:前端通过 `reportToOutside` 把事件上报给 Appsflyer / Insider / Firebase,由宿主 Allo App 与营销平台(Insider)驱动原生 push / 营销触达;
2. **邮件 / OTP**:由后端 API 下发,前端只触发接口并提示"已发送";
3. **还款 / 逾期提醒**:纯站内文案 + banner/popup,阈值在前端按 `remainDays`(账单页 `dueDate` 差值)与后端下发的 `daysToDue` / `overdueTimes`(首页)判定。
p5---
p6## 一、通知与触达
p7### 1.1 原生事件上报总线 reportToOutside
p8`reportToOutside` 是触达的核心通道,把一个 event 同时上报给三家平台:
p9| 平台 | 作用 | 出处 |
|---|---|---|
| Appsflyer | 归因 | `plugins/hybrid/src/native-methods.js:198` |
| Insider | 营销/engagement 平台,**宿主 App 接到事件后可驱动原生 push / 营销** | `:199` |
| Firebase | 事件分析 | `:200` |
p10定义在 `plugins/hybrid/src/native-methods.js:197`。三个底层方法均有 `app_id === ALLO_APP_ID` 门控(`:145`/`:161`/`:178`),即**仅对 ALLO 渠道上报**。前端本身不发 push,只"上报事件"。
p11事件枚举在 `constants/stats/report-to-outside.js`(共 38 个 eventName),关键项:
p12| Key (file:line) | 业务含义 |
|---|---|
| `CLICK_APPLY_LANDING_PAGE` (:2) / `NOT_CLICK_APPLY_LANDING_PAGE` (:8) | 落地页勾选 TnC 并点申请 / 未点 |
| `ON_BOARDING_PIN_INPUT` (:14) / `_NO_SUBMIT` (:20) | 开户输入 PIN |
| `USER_CLICK_ON_VERIFY` (:26) / `_NO_SUBMIT` (:32) | OCR 后点验证 |
| `FACE_VERIFICATION_SUCCESS` (:38) / `_FAILED` (:44) | 人脸核身成功 / 失败 |
| `SUBMIT_LOAN_FORM` (:50) / `_NO_SUBMIT` (:56) | 提交贷款表单 |
| `REJECTED_UNDERWRITTING` (:62) | 审批拒绝 |
| `APPROVAL_IN_PROGRESS` (:68) | 审批中 |
| `PAYLATER_APPROVED` (:74) / `_A` (:83) / `_B` (:92) | 审批通过(A/B) |
| `REJECTED_PAYLATER_BUT_UPGRADED` (:101) | PL 拒绝但升级为 Prime |
| `ENTER_GET_CASH_CLICK` (:113) | 进入取现 |
| `VIEW_TRANSACTION_PAGE` (:161) | 进入交易记录页 |
| `VIEW_BILLING_CYCLE_PAGE` (:167) | 进入账单页 |
| `BILLING_CYCLE_REPAY_THIS_BILL_CLICK` (:173) / `_NO_CLICK` (:179) | 账单页点还款 |
| `BILLING_CYCLE_REPAY_NOW_CLICK` (:185) / `_NO_CLICK` (:191) | 立即还款 |
| `VIEW_COUPON_PAGE` (:209) / `VIEW_FAQ_PAGE` (:215) | 进入券中心 / FAQ |
| `LIMITUP` (:221) / `LOAN_ACC_OPENED` (:227) / `LIQUIDITY_LOAN` (:233) | 提额 / 开户成功 / 流动性贷款 |
p13调用点遍布各页(`pages/pay-later/Index.vue`、`apply/`、`common/face`、`common/password/verify` 等),全部形如 `this.$native.reportToOutside({ params: REPORT_OUTSIDE.XXX })`。
p14**两处动态上报(不走上述枚举)**,定义在 `utils/report.js`:
p15- **开户成功上报** `reportOpenAccount()`(`utils/report.js:142`):开户成功/补报时,先查后端配置 `amsEventReportConfig`(moduleId=`OPEN_ACCT`)取 `eventNameList`,逐个 `reportToOutside`(`:188`),带 `PL_Level` / `value` / `currency:'IDR'` / `user_id`,再调 `amsAccountOpenAcctEventMarkReported` 标记已报(`:204`)。事件名**由后端下发**。
- **提额/质押锁额成功上报** `reportLockAmount()`(`utils/report.js:217`):质押成功时 `reportToOutside` eventName=`limit_lock_amount_success`,带 `user_id`。调用点 `pages/pay-later/flexible-limit/EnterAmount.vue:1033`(质押成功结果页)。
p16### 1.2 还款到期提醒(站内文案)
p17判定阈值有两处真源:账单页 `BillFooter.vue`(按 `dueDate` 现算)与首页 `home/Index.vue`(按后端 `daysToDue` / `overdueTimes`)。
p18**A. 账单页** `pages/pay-later/bill/components/BillFooter.vue`
- `remainDays = dayjs(dueDate).diff(currentDate, 'days')`(`:34`)
- 文案分支 `remianText`(`:39`):
- `isOverDue` → `your_bill_is_n_days_overdue_please_repay_now`
- `remainDays > 3` → 空(不提醒)
- `remainDays === 0` → `please_repay_today_to_avoid_late_fee`
- `remainDays === 1` → `dont_forget_to_repay_within_one_days`
- 2–3 天 → `dont_forget_to_repay_within_n_days`(带 n)
p19**B. 首页** `pages/pay-later/home/Index.vue`(字段 `accountInfo.daysToDue`,后端返回)
- 到期分支(`:175`):`daysToDue===0` → `please_repay_by_today_to_avoid_the_late_fee`;`===1` → `dont_forget_to_repay_within_day_by`;`2–3` → `dont_forget_to_repay_within_days_by`;else → `your_bill_is_ready_repay_by_etc`
- 逾期分支(`:214`):`overdueTimes===1` 且 `IN_DUE` → `you_have_overdue_bill_etc`;否则 `your_bill_is_overdue_with_late_fee`(带罚息 `penaltyBal`);`overdueTimes>1` → `you_have_overdue_bills_etc`
- 逾期改造 banner `showOverdueRestructureBanner`(computed `:596`,模板 `:217`)→ `adjust_repay_overdue_desc` + CTA `adjust`
p20**i18n 文案**(EN/ID 均已落地):
p21| key | EN | 出处 |
|---|---|---|
| `bill.index.please_repay_today_to_avoid_late_fee` | Please repay today to avoid late fee. | `locales/en/pay-later/bill.yml:22` |
| `bill.index.dont_forget_to_repay_within_one_days` | Don't forget to repay within 1 day. | `bill.yml:12` |
| `bill.index.dont_forget_to_repay_within_n_days` | Don't forget to repay within {n} days. | `bill.yml:11` |
| `bill.index.your_bill_is_n_days_overdue_please_repay_now` | Your bill is {n} days overdue. Please repay now. | `bill.yml:29` |
| `home.index.please_repay_by_today_to_avoid_the_late_fee` | Please repay by today to avoid the late fee. | `locales/en/pay-later/home.yml:38` |
| `home.index.dont_forget_to_repay_within_day_by` / `_days_by` | Don't forget to repay within {days} day(s) by {date}. | `home.yml:23-24` |
| `home.index.you_have_overdue_bill_etc` / `_bills_etc` | You have {day} overdue bill(s). Please repay now. | `home.yml:53-54` |
| `home.index.your_bill_is_overdue_with_late_fee` | Your bill is overdue with late fee Rp{fee}… | `home.yml:58` |
| `home.index.adjust_repay_overdue_desc` | Your bill is overdue. Please repay now. Or adjust your repayment plan… | `home.yml:80` |
p22ID 文案对应同名 key(如 `bill.yml:23` `Lunasi sekarang untuk hindari denda.`)。其它逾期变体见 `home.yml:111-173`、`bill.yml:40-45`。
p23### 1.3 邮件 / OTP
p24| 类型 | 触发时机 | 渠道 | 关键文案 / 接口 | 出处 |
|---|---|---|---|---|
| 改绑邮箱 | 提交新邮箱 | 邮件(后端发)+ toast | `general.we_have_sent_you_an_email_etc` / `amsAccountChangeUserInfo` | `pages/settings/profile/Email.vue:103-119` |
| 邮箱验证发信 | 验证邮箱 | 邮件(后端发) | `we_have_send_you_an_email_etc` / `amsCommonVerifyEmailAddress`(`api.js:1555`,mock code `00`=已发/`01`=已验证) | `pages/common/email/EmailVerify.vue:148-173` |
| 邮箱 OTP 校验 | 输入邮箱 OTP | OTP(邮件) | `amsCommonEmailVerifyOtp`(`api.js:765`) | `pages/common/otp/Index.vue:262-270` |
| 取现 WhatsApp OTP | 取现确认 | OTP(WhatsApp 下发)+ 回执 | `coreTransNotifyOtp`(`api.js:2630`,OTP_RESULT 1/2),渠道 `GET_CASH_WHATSAPP` | `pages/pay-later/service/withdraw/Confirm.vue:404-439` |
p25mock 文件(`ams_common_verify_email_address.js`、`ams_common_email_verify_otp.js`、`core_trans_notify_otp.js`)均为占位假数据,真实下发由后端。
p26### 1.4 站内 banner / marquee / popup
p27| 类型 | 触发 | 渠道 | 出处 |
|---|---|---|---|
| 运营推荐跑马灯 | deals / 券中心 | 站内 Marquee(后端图片,4s 切) | `components/marquee/Marquee.vue`;`pages/deals/Index.vue:5`;`pages/coupons/Index.vue:12` |
| 逾期改造 banner | overdue 且可改造 | 站内 banner | `home/Index.vue:217`(见 1.2) |
| 新还款计划弹窗 | `negotiateRepaymentPlan.promiseResult` | 站内 popup | `home/Index.vue:466`(`NewRepaymentPlanPopup`) |
| 取现挽留弹窗 | 取现返回 | 站内 popup | `home/Index.vue:467`(`InvestigationPopup`) |
| 定位授权弹窗 | 强制上报 GPS 失败 | 站内 popup | `components/location-popup/LocationPopup.vue`;`utils/report.js`(`$LocationPopup.show`) |
| 信用分引导弹窗 | 点首页问号 | 站内 popup | `pages/pay-later/home/NewUserTour.vue:121-143` |
p28### 1.5 提额奖励 push / 质押成功邮件 / 会员通知(前端踪迹)
p29| 业务事件 | 前端是否触达 | 结论 |
|---|---|---|
| 提额 / 质押锁额成功 | 是 | 前端驱动 `reportLockAmount()` → `reportToOutside` eventName=`limit_lock_amount_success`(`utils/report.js:217`,触发点 `flexible-limit/EnterAmount.vue:1033`)。渠道=原生上报(→ Insider 可驱动 push) |
| 质押成功邮件 | 否 | 前端未发邮件(`service/convert`、`withdraw` 无 sendEmail/email API)。**待后端/营销** |
| 会员购买通知 | 否 | `flexible-limit/Member.vue` 购买成功仅 UI 弹窗 + 返回(`_viewSuccess:941-1003`),无 reportToOutside/邮件/push。`PAY_LIMITUP_MEMBER`(`constants/category.js:27`)仅用于密码/刷脸流程控制。**待后端/营销** |
p30`LIMITUP` / `LOAN_ACC_OPENED` / `LIQUIDITY_LOAN` 三个枚举虽在 `report-to-outside.js` 定义,但代码内未见直接 `REPORT_OUTSIDE.LIMITUP` 调用——开户类事件实际通过 `reportOpenAccount` 的后端 `eventNameList` 动态下发,由后端配置触发。
p31### 1.6 汇总表
p32| 通知类型 | 触发时机 | 渠道 | 关键文案 / i18n key | 出处 file:line |
|---|---|---|---|---|
| 原生事件上报总线 | 各关键动作 | reportToOutside → Appsflyer/Insider/Firebase(Insider 可驱动原生 push/营销) | 38 个 eventName | `native-methods.js:197`;`constants/stats/report-to-outside.js` |
| 开户成功上报 | 开户成功/补报 | reportToOutside(后端下发 eventNameList) | `PL_Level`/`value`/`currency`/`user_id` | `utils/report.js:142-211` |
| 提额/质押锁额成功 | 质押成功结果页 | reportToOutside | `limit_lock_amount_success` | `utils/report.js:217`;`flexible-limit/EnterAmount.vue:1033` |
| 还款到期提醒(账单页) | dueDate−今 ≤ 3 天 | 站内文案 | `please_repay_today_to_avoid_late_fee` / `dont_forget_to_repay_within_(one\|n)_days` | `BillFooter.vue:39-51` |
| 逾期提醒(账单页) | `isOverDue` | 站内文案 | `your_bill_is_n_days_overdue_please_repay_now` | `BillFooter.vue:40-43` |
| 还款到期提醒(首页) | daysToDue 0/1/2-3 | 站内文案 | `please_repay_by_today…` / `dont_forget_to_repay_within_day(s)_by` | `home/Index.vue:175-202` |
| 逾期提醒(首页) | overdueTimes ≥ 1 | 站内文案 | `you_have_overdue_bill(s)_etc` / `your_bill_is_overdue_with_late_fee` | `home/Index.vue:214-237` |
| 逾期改造 banner | overdue 且可改造 | 站内 banner | `adjust_repay_overdue_desc` | `home/Index.vue:217-222` |
| 改绑邮箱 | 提交新邮箱 | 邮件(后端)+ toast | `general.
p33we_have_sent_you_an_email_etc` | `settings/profile/Email.vue:103-119` |
| 邮箱验证发信 | 验证邮箱 | 邮件(后端) | `amsCommonVerifyEmailAddress` | `common/email/EmailVerify.vue:148-173` |
| 邮箱 OTP 校验 | 输入邮箱 OTP | OTP(邮件) | `amsCommonEmailVerifyOtp` | `common/otp/Index.vue:262-270` |
| 取现 WhatsApp OTP | 取现确认 | OTP(WhatsApp)+ 回执 | `coreTransNotifyOtp` | `service/withdraw/Confirm.vue:404-439` |
| 运营推荐 Marquee | deals/券中心 | 站内跑马灯(后端图) | (后端图片) | `deals/Index.vue:5`;`coupons/Index.vue:12` |
| 质押成功邮件 | — | **待后端/营销** | 前端未发 | — |
| 会员购买通知 | — | **待后端/营销** | 前端仅 UI 弹窗 | `flexible-limit/Member.vue` |
p34---
p35## 二、交易流水
p36### 2.1 入口与接口
p37**交易列表页** `pages/pay-later/transaction/Index.vue`(路由 `PAY_LATER_TRANSACTION_INDEX`,`constants/routes.js:154`,标题 `pay_later.transaction.index.transaction_history`)。
p38**入口导航**(首页底部 "History" tab):
- `pages/pay-later/home/Index.vue:838-843` — `onNavSelect()`
- `pages/pay-later/home/Home.vue:1431-1436` — `onHistoryClick()`(先打 `BOTTOM_HISTORY_CLICK` 埋点)
- `pages/pay-later/home/HomeV2.vue:1208-1212` — `onTabHistory()`
p39**列表接口** `coreTransQueryTransactionList`(`constants/api.js:325`):
- `POST /core/trans/query/transaction_list`(`_id` 25700,desc `交易记录`)
- 请求参数(`api.js:330-351`,含义见接口注释 `S:支付 C:借款 R:退款 P:还款 A:所有 EX:展期`):
- `TRANSACTION_TYPE`(必填)= 类型筛选值,默认 `'A'`(全部)
- `END_DATE` = 选中月份末日 `dayjs(month).add(1,'month').subtract(1,'day').format('YYYYMMDD')`(`Index.vue:217`)
- `PAGESIZE` = `'20'`(`Index.vue:106,219`)
- `LAST_ROW_KEY` = 首次 `'0'`,翻页送上页返回值(`Index.vue:108,220`)
- 分页:读 `res.ret_data` 的 `NEXTPAGE_FLAG`(`'Y'`/`'N'`)、`LAST_ROW_KEY`、`TRANSACTION_LIST`(`Index.vue:225-228`);`onReachBottom` 与滚动到底前 800px 触发加载下一页。
- 月份选择限近 **180 天**(`Index.vue:99,185-197`)。
- 类型筛选项(`Index.vue:274-301`):`A`(All) / `ST`(PAYLATER) / `C`(Instant Cash) / `P`(Repayment) / `R`(Refund);`T`(分期消费) 选项被注释(`Index.vue:284-287`)。
p40**详情接口** `coreTransQueryTransactionDetail`(`api.js:2178`,`POST /core/trans/query/transaction_detail`,`_id` 25702)。`TransactionItem` 点击 → `Detail.vue` 按 `TRANSACTION_TYPE` 分发到三个详情页(`Detail.vue:18-52`),并带 `{type, orderId=BIZ_SEQ_NO, partnerOrderId=MER_BIZ_NO, receiptId=REF_NBR}`:
- `S`/`T`/`R` → `Spending.vue`
- `C` → `InstantCash.vue`(新版变体 `NewInstantCash.vue`,`PAY_LATER_TRANSACTION_NEW_INSTANT_CASH`,`routes.js:164`)
- `P`/`DS`/`PS` → `Repayment.vue`
p41**退款/还款记录接口(独立)** `coreTransQueryRefundRepayRecord`(`api.js:2304`,`POST /core/trans/query/refund_repay_record`,`_id` 25704,desc 退款记录;参数 `STMT_DATE`/`TRANSACTION_TYPE`(R/P)/`PAGESIZE`/`LAST_ROW_KEY`)。由账单模块使用,非主交易列表。
p42### 2.2 TRANSACTION_TYPE 类型表
p43定义在 `constants/pay-later/transaction.js:10-20`(导出为 `TYPES`),标签取自 `TYPE_MAP`(`:23-45`),渲染为 `TransactionItem.vue:14` 金额下方灰色小标签。
p44| TYPE 值 | 常量名 | 含义 | 渲染标签 | 出处 file:line |
|---|---|---|---|---|
| `C` | `CASH_LOAN` | 借款 / 极速现金 | `TYPE_MAP` = Instant Cash;行标题 = `allo_wallet`(Allo wallet) | `transaction.js:11,24-26` |
| `R` | `REFUND` | 退款 | = Refund;行标题 = `MERCHANT_NAME` 或 `transaction_at_merchant` | `transaction.js:12,27-29` |
| `P` | `REPAYMENT` | 还款 | = Repayment;行标题 = `allo_wallet` | `transaction.js:13,30-32` |
| `S` | `SPENDING_GENERAL` | 普通消费(一次性付款) | = PAYLATER;行标题 = `MERCHANT_NAME` 或 `transaction_at_merchant` | `transaction.js:14,33-35` |
| `T` | `SPENDING_INSTALLMENT` | 分期消费 | = PAYLATER(同上);详情付款方式显示 `pay_later_installment` | `transaction.js:15,36-38` |
| `ST` | `PAYLATER` | PayLater(消费类合并**筛选值**) | 仅用作筛选选项值(`Index.vue:282`),**非服务端行类型**,无 `TYPE_MAP` 项 | `transaction.js:16` |
| `EX` | `EXTENSION` | 展期(extension) | 无 `TYPE_MAP` 项 → 主列表标签为空;仅由展期列表查询使用 | `transaction.js:17` |
| `DS` | `DEPOSIT_SATISFACTION` | 质押余额代偿 | = Repayment;行标题 = `allo_wallet`;详情走 Repayment | `transaction.js:18,39-41` |
| `PS` | `POINT_SATISFACTION` | 质押积分代偿 | = Repayment;行标题 = `mpc_points`(MPC Points);详情 "Repaid with" 显示 MPC Points | `transaction.js:19,42-44`;`TransactionItem.vue:70-71`;`Repayment.vue:69-73` |
p45行标题逻辑(`TransactionItem.vue:63-79`):`P`/`C`/`DS` → Allo wallet;`PS` → MPC Points;`S`/`T`/`R` → 商户名 `MERCHANT_NAME`(缺省 Transaction at Merchant);其它 → `--`。
p46**`EX`(展期)唯一实际请求点**:`pages/pay-later/service/convert/List.vue:80-84`,硬编码 `TRANSACTION_TYPE:'EX'` 拉取展期记录;主交易列表不渲染 `EX` 标签。
p47### 2.3 状态、金额方向、商户名
p48状态枚举均在 `constants/pay-later/transaction.js`:
- 消费状态 `SPENDING_STATUSES`(`:48-52`):`S`=成功 / `F`=已结清 / `C`=失败 → 标签 successful / closed
- 现金贷状态 `CASH_LOAN_STATUSES`(`:68-73`):`P`=处理中 / `S` / `F` / `C` → in_process / successful / failed
- 还款状态 `REPAYMENT_STATUSES`(`:119-123`):`P` / `S` / `C` → in_process / success / failed
- 退款类型 `REFUND_TYPES`(`:92-95`):`P`=部分 / `A`=全额(均显示 refunded)
- 还款类型 `REPAYMENT_TYPES`(`:108-111`):`IOURepay`=提前还款 / `BillRepay`=账单还款;还款方式 `REPAYMENT_METHODS` `VA`=VA(`:114`)
p49状态在列表中以前缀行显示(cash-loan PENDING/FAIL、spending FAIL 时,`TransactionItem.vue:80-94`);详情页头部颜色由 `TITLE_TYPES`(pending=WARNING / fail=DANGER / 其余=SUCCESS)决定。
p50**金额方向**:交易列表/行**无 +/− 收支符号逻辑**,金额统一渲染 `Rp{{ item.TRANSACTION_AMT | toAmount }}`(`TransactionItem.vue:13`),无收入/支出区分(待补)。无 per-type 图标,仅右侧箭头 `arrow-right`(`TransactionItem.vue:16`)。
p51**会员交易商户名**:会员产品标签为 `limit_up_member` = "Limit Up Premium"(`locales/en/pay-later/flexible-limit.yml:224`、`home.yml:133`;ID 同名 key)。代码内**未见**专用于会员交易的商户名常量(如 "Pay to limit up premium");会员/Premium Fee 交易会落到某个还款/消费类型下,商户名由后端 `MERCHANT_NAME` 决定(**待后端**)。Wallet 概念 = `allo_wallet`("Allo wallet"),用作还款/借款/质押代偿行标题。
p52### 2.4 列表/详情响应字段(取自 mock)
p53`plugins/request/mock/core_trans_query_transaction_list.js` — `res.ret_data` 信封:`CODE`/`PRODUCT_CD`/`LAST_ROW_KEY`/`APP_ACCT_NO`/`APP_TYPE`/`NEXTPAGE_FLAG`/`DESC`/`TRANSACTION_LIST[]`。
单条:`TRANSACTION_AMT`、`REF_NBR`、`TRANSACTION_TIME`(`YYYYMMDDHHmmss`)、`MER_BIZ_NO`、`BIZ_SEQ_NO`、`TRANSACTION_TYPE`、`TRANSACTION_STATUS`、`MERCHANT_NAME`(仅 S/T/R 行)。
p54`core_trans_query_transaction_detail.js`:`CURR_TERM`、`TRANSACTION_NO`、`ORIG_TOTAL_TERM`、`REPAY_OPTION`、`ORIG_TRANSACTION_TYPE`、`MERCHANT_NAME`、`TRANSACTION_STATUS`、`TRANSACTION_AMT`、`REPAY_BANK_NAME`、`TRANSACTION_TIME`、`SCHEDULE_LIST[]`、`CURR_TOTAL_TERM` 等。详情页另读 `MERCHANDISE_NAME`/`ORDER_NO`/`UPFRONT_ADMIN_FEE`/`LOAN_REAL_AMT`/`IS_PAID`。
p55`core_trans_query_refund_repay_record.js`:信封含 `NEXTPAGE_FLG`(注意是 `_FLG` 非 `_FLAG`)与 `TRANSACTION_LISTS[]`(复数);单条另有 `REPAY_TYPE`、`SUB_TRANSACTION_TYPE`(`PointsSubstiuteRepay`[源码拼写如此] / `SubstituteRepay`,映射到 `models/pay-later/bill.js:94` 的 `subTransactionType`)。
p56---
p57> **说明**:本篇阈值/分支/字段以 HEAD `fb597d5` 前端代码为准。现网通知**实际文案、触发频率、push/营销编排**由宿主 Allo App 与 Insider/营销后台配置决定,前端不可见,相应项标注 **待后端/营销**。会员交易商户名、收支方向等前端无定义项标 **待补**。