171 lines
5.9 KiB
Markdown
171 lines
5.9 KiB
Markdown
---
|
|
title: prop-acc · deposit · 场景 - 调解结束后解冻
|
|
aliases:
|
|
- 解冻押金账户
|
|
- 调解完成解冻
|
|
- unfreeze-after-mediation
|
|
- 场景-押金账户解冻
|
|
tags:
|
|
- 场景
|
|
- prop-acc
|
|
- 保证金
|
|
- 冻结
|
|
audience:
|
|
- 业户
|
|
- 业务人员
|
|
status: 已发布
|
|
sub_feature: deposit
|
|
last_review: 2026-05-25
|
|
code_version: 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",右上角只有 `UnfreezeAction` 和 `ForceCloseAction` 可点(其他都灰)。
|
|
|
|
### 第 3 步:点击 `UnfreezeAction`(标签"解冻")
|
|
|
|
Modal 表单:
|
|
|
|
| 字段 | 填什么 |
|
|
|---|---|
|
|
| **解冻事由(reason)** | 必填,如 "调解协议:扣 ¥500,退 ¥4,500" |
|
|
|
|
> [!warning] Policy 守护
|
|
> `UnfreezeAction` 调 `canBeUnfreezed()`:仅 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 步:按调解结果做后续
|
|
|
|
- 扣 ¥500 → `ForfeitureAction`(详见 [[forfeit-damage-public-area]])
|
|
- 退 ¥4,500 → `RefundAction`(详见 [[refund-full-no-damage]])
|
|
- 余额清零自动 Closed
|
|
|
|
两步顺序:**先扣再退**,因为扣罚事由要清楚,退款是处理剩余款。
|
|
|
|
### 第 6 步:通知业户
|
|
|
|
短信 / 微信告知调解结果已执行 + 退款已到账 + 收据已发。
|
|
|
|
## 系统流程
|
|
|
|
```mermaid
|
|
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 强制关账并保留余额,等业户出现再处理。
|
|
|
|
## 异常分支
|
|
|
|
- 调解失败长期僵持 → [[force-close-refund]] / [[force-close-forfeit]] / [[force-close-retain]]
|
|
- 业户失联 → [[force-close-retain]]
|
|
- 误冻结(其实没纠纷)→ UnfreezeAction(reason "误操作解除")
|
|
- 解冻后业户立即提退 → 走 [[refund-full-no-damage]]
|
|
|
|
## 相关文档
|
|
|
|
- [[freeze-during-dispute]]
|
|
- [[account-state-machine]]
|
|
- [[forfeit-damage-public-area]]
|
|
- [[refund-partial-after-forfeit]]
|
|
- [[force-close-retain]]
|