Files
uniprop-manual/prop-acc/scenarios/prepaid/unfreeze-after-verification.md
2026-05-25 23:32:57 +08:00

6.3 KiB

title, aliases, tags, audience, status, sub_feature, last_review, code_version
title aliases tags audience status sub_feature last_review code_version
prop-acc · prepaid · 场景 - 核实后解冻
解冻预存款账户
风控核实后解冻
unfreeze-after-verification
场景-预存款解冻
场景
prop-acc
预存款
冻结
业务人员
风控
已发布 prepaid 2026-05-25 2026-05-22

场景:核实后解冻

freeze-suspected-fraud 后,物业核实业户身份和操作合法性,解冻账户回到 Active,业户继续正常使用。是冻结的对称操作。

[!info] Action 名称的历史 解冻的 Action 在代码里叫 ReactivateAccountAction(字面"重新激活"),但实际行为只允许 Frozen → Active(等价解冻)。UI 文案已统一为"解冻",图标 lock-open,与 deposit 模块对齐。详见 account-state-machine"ReactivateAccountAction = 解冻"段。

典型情境

[!example] 真实情境 王女士的预存款账户因风控异常被冻结(详见 freeze-suspected-fraud)。物业联系她核实:

  • 确认昨天大额充值是本人操作(她准备一次性存够全年物业费)
  • 微信号给其他账户转钱是给亲戚朋友转账,与预存款无关(只是该微信刚好绑了多个预存款账户在风控规则下触发了关联)
  • 手机号变更是因为旧号停用,她已到运营商办手续

物业核实后:王女士身份属实、所有操作合法。立即解冻

业务人员视角

第 1 步:核实业户身份与操作

  • 业户当面 / 视频 / 公证 提供身份证 + 房产证 / 租赁合同
  • 核对近期操作是否本人(看充值时间、IP、设备)
  • 核对手机号变更证明(运营商凭证)
  • 核对资金来源说明(若大额异常)

[!warning] 核实必须留书面凭证

  • 业户签字声明
  • 微信 / 邮件确认截图
  • 任何后续争议时的依据

第 2 步:打开账户

后台 → 预存款 → 找到王女士账户(Frozen)→ 进 ViewPrepaidAccount

状态显示 "🧊 Frozen",右上角只有 ReactivateAccountAction(标签"解冻")可点,其他写入按钮全灰。

第 3 步:点击解冻

[!warning] 按钮可见性 守护:status === Frozen + Policy ->authorize('unfreeze')

修过的语义:历史代码允许 != Active 都可见(等于"既能撤销 Frozen 也能撤销 Closed"),issue.md Q4 改为只允许 Frozen → Active,等价解冻,禁止从 Closed 撤销关账

Modal 表单:

字段 填什么
解冻事由(reason) 必填,如 "风控核实:大额充值与微信转账均为本人操作,手机号变更已凭运营商证明确认"

第 4 步:提交

系统调 PrepaidAccount::unfreeze($reason)(或同名方法):

  1. 校验 status === Frozen
  2. 更新 status=Active
  3. meta.unfreeze_reason 记解冻事由
  4. meta.unfrozen_at 记解冻时间
  5. (可选)meta.freeze_history[] 追加这次冻结-解冻的完整记录

不产生 PrepaidTransaction(状态变更,无资金动作)。

第 5 步:通知业户

  • "您的预存款账户已解冻,现可正常使用"
  • 业务人员 / 运维监督看后续是否有异常

业户视角

您会感受到什么

  • 收到通知:"您的预存款账户已解冻,事由:经核实身份与操作合法"
  • 小程序"我的预存款"显示 " Active"
  • 充值 / 消费 / 退款 重新可用
  • 余额未变(冻结期间不动)

您要做什么

继续正常用账户。建议:

  • 留意自己账户的异常操作
  • 重要变更(手机号、绑定微信)及时告知物业
  • 大额充值(>10000)建议提前告知物业,避免风控误报

系统流程

sequenceDiagram
    participant 业户
    participant 物业
    participant Filament
    participant PrepaidAccount
    participant 数据库

    Note over 业户,物业: 核实业户身份和操作合法

    业户->>物业: 提供身份证 / 房产证 / 操作说明
    物业->>物业: 核实通过
    物业->>Filament: ViewPrepaidAccount → ReactivateAccountAction(reason)
    Filament->>PrepaidAccount: unfreeze(reason)
    PrepaidAccount->>PrepaidAccount: status === Frozen? yes
    PrepaidAccount->>数据库: 更新 status=Active, meta.unfreeze_reason
    数据库-->>Filament: ok
    Filament-->>物业: 成功
    物业->>业户: 通知解冻

    Note over 业户: 后续正常充值 / 消费 / 退款

流水台账(本场景不动)

流水 说明
(无) 解冻是状态变更,无资金动作

只有 PrepaidAccount.status 字段从 Frozen → Active,meta 多几个审计字段。

与 deposit 解冻的差异

维度 deposit unfreeze-after-mediation prepaid 解冻(本场景)
业务上下文 押金纠纷调解 风控核实 / 误冻撤销
Action 名 UnfreezeAction ReactivateAccountAction(字面历史包袱)
后续操作 调解结果决定 refund / forfeit 直接恢复使用
通常频率 中(押金纠纷有时间区) 罕见(风控误报)

常见问题

[!question] 误冻立即解冻可以吗? 可以,且推荐立即。误冻每多挂一分钟,业户体验越差。

[!question] 解冻后业户能立即充值 / 消费吗? 能。解冻是同步事务,提交后立即生效。

[!question] 多次冻结-解冻同一账户会有问题吗? 不会。账户可以在 Active ↔ Frozen 之间多次切换。如果业务上常见,meta.freeze_history[] 数组(若已实现)记历次完整记录。

[!question] 解冻后业户再次触发风控怎么办? 重复 freeze-suspected-fraud 流程 → 这次更严格核实。多次触发风控的业户可能是真的高风险,需法务介入。

[!question] 解冻必须要书面凭证吗? 系统层面不强制(reason 字段非空即可)。业务层面强烈推荐,留书面凭证防纠纷。

[!question] 解冻能从 Closed 状态做吗? 不能ReactivateAccountAction 只允许 Frozen → Active。Closed 永久(canBeReopened 永远 false)。这是 issue.md Q4 第二轮明确修的语义。

异常分支

  • 核实不通过(确认欺诈)→ 留 Frozen,法务介入
  • 业户长期不出现 → 留 Frozen,等业户出现或法律时效
  • 解冻后再次异常 → 重新 freeze-suspected-fraud

相关文档