手机分期审批封禁用户办单拦截 — 迭代需求
目标:当审批结论明确返回客户仍在封禁期内时,在 SA 代客办单完成客户 OTP 验证后立即阻止继续申请,避免为暂不可申请的客户创建草稿订单或重复提交审批。
1. 背景与目标
当前 SA 完成客户手机号 OTP 验证后,会继续进入存量订单判断和新办单流程。若审批已对该客户给出封禁截止时间,现场人员仍可能继续录入资料,直到后续节点才发现客户不可申请,造成无效操作和重复进件风险。
本期目标如下:
- 审批返回有效封禁时间时,SA App 在 OTP 验证成功后的当前办单流程中即时拦截客户。
- 向 SA 展示统一、非技术化的提示,并明确该客户可恢复申请的日期。
- 不创建新草稿订单、不提交新的审批申请,也不以本地缓存或客户端时间绕过封禁。
- 封禁到期后,由下一次办单时的服务端实时判断恢复可申请性;客户端不自行倒计时或预先放开。
2. 范围与边界
| 范围 | 是否纳入 | 说明 |
|---|---|---|
| SA App 手机分期代客办单 | 是 | 仅覆盖客户 OTP 验证完成后进入后续办单前的拦截 |
| 审批返回的客户封禁时间 | 是 | 作为本次是否允许申请的权威判断依据 |
| 新草稿创建、资料采集、审批提交 | 是 | 命中封禁时均不得开始或继续 |
| 已有订单的查看与既有贷后服务 | 否 | 本期不改变已有订单详情、还款、交机或客服处理能力 |
| SA 登录账号锁定、OTP 输错/过期 | 否 | 仍按既有登录及 OTP 异常规则处理,不与客户审批封禁混用 |
| 封禁策略、封禁时长和解封审批 | 否 | 由审批侧既有策略管理,本期只消费已返回的有效封禁结果 |
3. 角色与前置条件
| 角色/系统 | 职责 |
|---|---|
| SA | 为客户发起手机分期办单并完成客户 OTP 验证 |
| SA App | 展示拦截结果,阻止本次办单继续向后流转 |
| 审批系统 | 给出客户当前是否处于封禁期及封禁截止时间 |
| 业务服务 | 在每次办单判断中使用审批返回的有效结果,防止创建或提交新的申请 |
前置条件:SA 已选择门店、商品和方案,并在客户验证页输入且成功校验客户 OTP;本期判断发生在创建新草稿订单前。
4. 主流程与状态规则
4.1 办单流程调整
客户 OTP 验证成功
↓
读取本次审批返回的客户可申请状态
↓
是否存在仍有效的封禁时间?
├─ 是:展示强阻断弹窗 → 留在客户验证页 → 本次办单结束
└─ 否:继续既有存量订单判断 → 按原规则恢复订单或创建草稿4.2 封禁判断规则
| 判断结果 | 业务处理 |
|---|---|
| 审批返回封禁时间,且该时间仍有效 | 判定为“暂时无法申请”,触发强阻断;不得创建草稿、保存新申请资料或提交审批 |
| 审批未返回封禁时间 | 不触发本期拦截,继续既有流程 |
| 审批返回的封禁时间已到期 | 不触发本期拦截;以本次服务端实时判断为准,继续既有流程 |
| 审批结果未知、超时或无法确认 | 不得按“未封禁”放行;按既有“结果待确认/稍后重试”规则处理,不展示本期封禁文案 |
| SA 退出后重新进入或更换设备继续办单 | 必须重新取得当次权威判断;不得复用旧页面的“可申请”结论 |
封禁时间用于判断有效性及服务端审计;SA App 必须将其换算为产品所在国家/地区的业务日期并展示为可恢复申请日期,不展示具体时分秒、审批原因、风险规则、评分或第三方原始信息。日期格式使用英文月份缩写,例如 15 Sep 2026,不得由客户端自行推算或缓存。
4.3 判断优先级
同一次 OTP 验证成功后,按以下顺序判断,命中即停止后续判断和页面流转:
| 优先级 | 判断项 | 命中后的处理 | 不再执行的后续判断 |
|---|---|---|---|
| 1 | 审批结果未知、超时或无法确认 | 按既有“结果待确认/稍后重试”规则阻断,不按未冻结放行 | 冻结、存量订单、新草稿创建 |
| 2 | 审批返回仍有效的客户冻结时间 | 展示本需求的“暂时无法申请”强阻断弹窗 | 存量订单恢复、创建新草稿、资料录入和审批提交 |
| 3 | 无有效冻结 | 继续既有存量订单判断 | 仅按既有规则恢复订单或创建新草稿 |
因此,当同一客户既有未完成订单又处于有效冻结期时,优先展示冻结拦截,不展示或跳转既有订单;冻结结束且重新完成 OTP 验证后,才进入既有订单判断。
4.4 冻结与解冻时间规则
- 所有冻结开始日、冻结天数、可恢复申请日和是否已解冻的判断,均以尼日利亚时区
Africa/Lagos为准;该时区为 UTC+1,且不使用夏令时。 - 冻结按完整自然日计算。审批在某一尼日利亚业务日返回冻结结论时,该业务日不计入冻结天数;从下一自然日 00:00:00 开始计入第 1 个冻结日。
- 冻结天数结束后的下一自然日 00:00:00 起可恢复申请。SA App 仅展示该日期,不展示时分秒;实际是否放行必须由该次服务端判断确认。
- 例如:客户于 9 月 1 日(尼日利亚时间)完成申请,审批返回“冻结 1 天”,则 9 月 2 日为完整冻结日,客户自 9 月 3 日 00:00:00(尼日利亚时间)起可重新申请;弹窗中的
{available_date}显示为3 Sep {year}。 - 若冻结期限跨月、跨年,仍按
Africa/Lagos的自然日连续计算;不因 SA 设备时区、设备时间变更或夏令时设置改变。 - 封禁时间缺失、格式无效或与冻结天数不一致时,不得由 SA App 推算解冻日期;按“审批结果无法确认”处理,待审批侧返回可用的权威结果后再判断。
4.5 拦截后的页面与操作
| 项目 | 规则 |
|---|---|
| 展示组件 | 使用既有 E04_BLOCK 强阻断弹窗,不使用 Toast 或可忽略的顶部提示 |
| 标题 | Application unavailable |
| 正文 | This customer is temporarily unable to apply. You can apply again from {available_date}.;其中 {available_date} 为审批返回封禁时间换算后的业务日期,例如 15 Sep 2026 |
| 主按钮 | Got It |
| 主按钮行为 | 关闭弹窗后停留在客户验证页;清除本次已输入的 OTP,不创建或继续当前申请 |
| 绕过限制 | 遮罩点击、系统返回键和关闭控件均不得绕过;不得提供 Try Again、Continue、Create Application 或重新提交入口 |
| 后续操作 | SA 可返回选品/客户验证页为其他客户办单;如需再次为该客户尝试,必须重新从客户 OTP 验证开始并重新进行服务端判断 |
5. 业务数据与责任边界
| 业务数据 | 归属与使用规则 |
|---|---|
| 审批封禁截止时间 | 审批系统的权威结果;业务服务仅用于当次是否允许申请和审计,不由 SA App 计算或修改 |
| 客户可申请结论 | 由业务服务在 OTP 成功后给出;SA App 只按结论展示和阻断 |
| 本次办单上下文 | SA App 在拦截后仅保留必要的页面返回能力;不得形成可继续提交的草稿 |
| 封禁原因与内部审批信息 | 仅限审批/运营授权场景使用;SA App 对现场人员不展示 |
6. 异常与边界场景
| 场景 | 处理 |
|---|---|
| 同一客户连续提交或网络重放 | 服务端均再次执行有效封禁判断;任一次命中封禁都不得生成新草稿或审批申请 |
| OTP 成功后拦截弹窗展示前页面刷新/断网 | 不得假定可继续;重新进入后从客户 OTP 验证开始并取得权威结论 |
| 同时命中存量订单拦截和审批封禁 | 审批封禁优先展示;本次流程不进入存量订单恢复或新建判断,避免暴露不必要的订单信息 |
| 封禁在 SA 停留页面期间到期 | 不自动关闭弹窗或放开按钮;SA 需结束本次办单并重新完成 OTP 验证后再判断 |
| 既有草稿订单 | 本期不删除、不改写既有草稿;但封禁命中时不得通过当前入口继续该草稿或提交新的审批 |
7. 验收标准
- SA 为客户完成 OTP 验证后,若审批返回仍有效的封禁时间,页面展示
Application unavailable强阻断弹窗及正文This customer is temporarily unable to apply. You can apply again from {available_date}.;{available_date}与审批返回封禁时间换算后的产品业务日期一致。 - 该弹窗不能通过遮罩、返回键或关闭控件绕过;点击
Got It后停留在客户验证页,且本次 OTP 被清除。 - 封禁命中后,系统未创建新草稿、未保存新的申请资料、未发起新的审批提交;重复点击、重放或换设备重试同样不产生新申请。
- 审批未返回封禁时间或服务端确认封禁已到期时,本期不拦截,流程按既有存量订单与草稿创建规则继续。
- 审批结果未知、超时或无法确认时,不得按未封禁放行,且不得误展示“temporarily unable to apply”作为兜底。
- SA 页面不展示具体封禁时分秒、封禁原因、风险规则、评分、技术码或第三方原始返回;但必须展示可恢复申请日期。