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 · 场景 - 核实后解冻 |
|
|
|
已发布 | 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)(或同名方法):
- 校验 status === Frozen
- 更新
status=Active - 在
meta.unfreeze_reason记解冻事由 - 在
meta.unfrozen_at记解冻时间 - (可选)
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