Files
uniprop-manual/prop-acc/scenarios/deposit/unfreeze-after-mediation.md
2026-05-25 22:32:40 +08:00

5.9 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 · deposit · 场景 - 调解结束后解冻
解冻押金账户
调解完成解冻
unfreeze-after-mediation
场景-押金账户解冻
场景
prop-acc
保证金
冻结
业户
业务人员
已发布 deposit 2026-05-25 2026-05-22

场景:调解结束后解冻

freeze-during-dispute 期间纠纷调解出结果,业户与物业达成一致,账户解冻、回到 Active,然后按调解结果执行后续(退 / 扣 / 部分扣余下退)。

典型情境

[!example] 真实情境 陈先生家押金账户因墙面损坏归责纠纷被冻结 2 周。期间物业找施工方核实,发现损坏确实是装修期间造成的(有施工照片为证)。陈先生最终同意:扣 ¥500(原本物业要扣 ¥800,部分妥协),剩余 ¥4,500 退还。

物业财务先解冻,再按 refund-partial-after-forfeit 走"扣 500 + 退 4500"两步。

业户视角

您会感受到什么

  • 收到通知:"您的押金账户已解冻"
  • 小程序"我的押金账户"显示 " Active"
  • 后续按调解结果走 —— 收到红字扣罚收据 + 退款 + 退款收据

您要做什么

  • 配合提供退款渠道(银行卡 / 微信)
  • 接收红字收据并妥善保管
  • 任何后续意见在系统外沟通(账户已按调解结果处置,不可逆)

业务人员视角(物业财务)

第 1 步:确认调解结果有书面凭证

  • 调解协议书(双方签字)
  • 微信 / 录音确认(辅助)

[!warning] 没有凭证不要解冻 解冻后立即可做扣 / 退,如果调解没书面凭证、业户事后反悔,物业很被动。

第 2 步:打开账户

后台 → 保证金 → 账户列表 → 找到 Frozen 账户 → 进入 ViewDepositAccount

状态显示 "🧊 Frozen",右上角只有 UnfreezeActionForceCloseAction 可点(其他都灰)。

第 3 步:点击 UnfreezeAction(标签"解冻")

Modal 表单:

字段 填什么
解冻事由(reason) 必填,如 "调解协议:扣 ¥500,退 ¥4,500"

[!warning] Policy 守护 UnfreezeActioncanBeUnfreezed():仅 Frozen 状态可解。Active / Closed 状态下按钮灰化。

第 4 步:提交

系统调 DepositAccount::unfreeze(reason),事务内:

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

不产生 DepositTransaction(同冻结,只是状态变更)。

第 5 步:按调解结果做后续

两步顺序:先扣再退,因为扣罚事由要清楚,退款是处理剩余款。

第 6 步:通知业户

短信 / 微信告知调解结果已执行 + 退款已到账 + 收据已发。

系统流程

sequenceDiagram
    participant 业户
    participant 调解
    participant 财务
    participant Filament
    participant 数据库

    Note over 业户,财务: 冻结 2 周后调解出结果:扣 500 + 退 4500

    调解-->>财务: 提供书面调解协议
    财务->>Filament: ViewDepositAccount → UnfreezeAction(modal, reason)
    Filament->>数据库: 校验 canBeUnfreezed() (Frozen=true, ok)
    Filament->>数据库: 更新 status=Active + meta.unfreeze_reason
    数据库-->>财务: 已解冻

    财务->>Filament: ForfeitureAction(500, "墙面损坏调解结果")
    Filament->>数据库: 建 CO(-500) + Transaction(forfeiture, 5000→4500) + Receipt

    财务->>Filament: RefundAction(4500, 业户银行卡)
    Filament->>数据库: 建 CO(-4500) + Transaction(refund, 4500→0) + Receipt
    数据库-->>数据库: balance=0, 自动 status=Closed

    财务-->>业户: 2 张红字收据 + 退款到账

流水台账(本场景完整记录)

流水 type amount balance_before balance_after 备注
1 deposit 5000 0 5000 首次缴款
2 forfeiture 500 5000 4500 调解结果扣罚(墙面损坏)
3 refund 4500 4500 0 调解结果退还

status 变化:Active → Frozen → Active → Closed(自动)。

常见问题

[!question] 解冻后能立即做扣罚 / 退款吗? 能。解冻是事务内同步操作,提交后立即生效。后续 ForfeitureAction / RefundAction 可立即触发。

[!question] 解冻后忘了执行后续(扣 / 退)怎么办? 账户停留 Active 状态,余额仍是冻结前的数。可任何时候继续操作。业务上不应该长期停留 Active 不处理 —— 应在解冻后立即完成调解结果。

[!question] 解冻后业户反悔调解结果怎么办? 解冻 + 已执行扣 / 退 → 已执行的不可逆。如果业户反悔:

  • 走司法程序(系统不参与)
  • 物业可选择补退一笔(走 deposit 反向冲)以化解纠纷

预防:解冻前务必拿到书面调解协议。

[!question] 解冻和重新冻结(同一账户多次冻结)可以吗? 可以。账户可以在 Active ↔ Frozen 之间多次来回。如果业务上常发生,meta.freeze_history[] 数组就是用来记历次冻结的事由和时间。

[!question] 调解时间过长,业户失联怎么办? 走 force-close-retain —— 不解冻,直接从 Frozen 强制关账并保留余额,等业户出现再处理。

异常分支

相关文档