Files
uniprop-manual/prop-acc/scenarios/prepaid/audit-low-balance-and-overdue.md
2026-05-25 23:37:58 +08:00

248 lines
8.1 KiB
Markdown

---
title: prop-acc · prepaid · 场景 - 低余额业户预警 + 逾期账单排查
aliases:
- 低余额预警
- 预存款余额告警
- audit-low-balance-and-overdue
- 场景-预存款低余额预警
tags:
- 场景
- prop-acc
- 预存款
- 审计
audience:
- 业务人员
- 财务
- 产品
status: 已发布
sub_feature: prepaid
last_review: 2026-05-25
code_version: 2026-05-22
---
# 场景:低余额业户预警 + 逾期账单排查
物业业务人员**每周** / 每月扫描:
1. **低余额预存款业户**(下月预计账单 > 当前余额) → 主动提醒充值
2. **预存款余额不够付未付账单的业户** → 跨核对
`LowBalancePrepaidListWidget` 是后台 Dashboard 上专门的 Widget,展示低余额账户清单。
## 典型情境
> [!example] 真实情境
> 物业财务王主管每周一上午看 `DepositPrepaidDashboard`:
>
> - 低余额业户清单 widget 显示 **45 户**业户的预存款余额 < 下月预计账单
> - 其中 **12 户**已有当月未付账单
> - 主管按清单逐户联系:
> - 12 户已欠 → 督促立即充值
> - 33 户预警(还没欠)→ 友好提醒"下月账单 ¥X,余额 ¥Y 不够,建议充值"
## 业务人员视角
### Dashboard 查看
后台 → 仪表盘 → `DepositPrepaidDashboard` 页面 → 看 `LowBalancePrepaidListWidget`
Widget 显示:
| 业户 | 当前余额 | 下月预计账单 | 差额 | 当前未付账单 |
|---|---|---|---|---|
| 张阿姨(12-3-501)| ¥200 | ¥800 | -¥600 | 0 |
| 陈先生(12-3-502)| ¥1,500 | ¥2,200 | -¥700 | 1(水电费 ¥220 已逾期 3 天)|
| 刘先生(12-3-503)| ¥0 | ¥800 | -¥800 | 1(物业费 ¥800 未付)|
| (省略)| | | | |
### 处置策略(分级)
| 紧急度 | 业户特征 | 处置 |
|---|---|---|
| **🔴 紧急** | 已有逾期账单 + 余额不够 | 立即联系 + 督促充值 + 必要时手动催收 |
| **🟡 警告** | 当前余额低于下月预计账单 | 提前 3-7 天友好提醒 |
| **🟢 关注** | 余额低于 2 个月账单合计 | 月度提醒一次,无需紧急动作 |
### 第 1 步:扫描清单
打开 `DepositPrepaidDashboard` → 看清单 widget。也可手动 SQL 查:
```sql
-- 低余额预存款业户(余额 < 下月预计账单)
SELECT
p.id AS account_id,
p.community_user_profile_id,
cup.name AS resident_name,
p.balance AS current_balance,
estimated_next_bill, -- 子查询算下月预计
(estimated_next_bill - p.balance) AS shortage,
COUNT(b.id) AS overdue_bills_count
FROM acc_prepaid_accounts p
JOIN community_user_profiles cup ON p.community_user_profile_id = cup.id
LEFT JOIN acc_bills b ON b.resident_id = cup.id
AND b.community_id = p.community_id
AND b.status = 'unpaid'
AND b.due_at < NOW()
WHERE p.status = 'active'
GROUP BY p.id, ...
HAVING current_balance < estimated_next_bill
ORDER BY shortage DESC;
```
### 第 2 步:分级处置
**🔴 紧急(已欠款)**:
- 短信 / 微信 / 电话联系业户
- 告知"您欠 X 月物业费 ¥800,请立即处理(充值预存款 / 现金 / 微信付)"
- 业户回应 → 处理(走 [[deposit-additional-topup]] 或其他渠道收款)
- 业户不回应 → 走逾期催收流程(本文不展开)
**🟡 警告(还没欠)**:
- 微信 / App 推送"友好提醒"
- "您的预存款余额 ¥X,下月账单约 ¥Y,建议提前充值"
- 不强制
**🟢 关注**:
- 月度汇总报告(给业户的"预存款健康度月报")
- 不打扰
### 第 3 步:出周报
```markdown
# 2026 年 5 月 第 4 周 预存款健康度周报
## 低余额业户清单(共 45 户)
- 🔴 紧急(已欠款):12 户,合计欠款 ¥9,860
- 🟡 警告:24 户
- 🟢 关注:9 户
## 已处置
- 紧急 12 户:已联系
- 5 户已充值 / 付清
- 4 户承诺本周内处理
- 3 户失联(进入催收)
- 警告 24 户:已推送提醒
## 趋势
- 比上周(38 户低余额)增加 7 户 → 趋势变差
- 可能原因:5 月账单出账,部分业户余额不够付
## 建议
- 加强自动抵扣 job 落地的紧迫性(目前业户充值后还得业务人员手动抵)
- 主动给余额接近 0 的业户 push 充值提醒(改 widget 配置)
```
## 业户视角
### 您可能收到的通知
#### 🟡 警告(友好提醒)
> 张阿姨您好,您的预存款余额 ¥200,下月物业费约 ¥800,**预计余额不够付**。建议提前充值,避免账单逾期产生提醒费用。
业户可选择:
- 立即充值
- 现金 / 微信付下月账单
- 不管(后果自负)
#### 🔴 紧急(欠款提醒)
> 张阿姨您好,您 5 月物业费 ¥800 **已逾期 3 天**未付。请尽快通过以下方式付清:
> 1. 微信小程序"我的预存款"充值后系统自动抵
> 2. 到前台现金 / POS 付
> 3. 微信扫码付
## 系统流程
```mermaid
flowchart TD
A[每周/月触发扫描] --> B[SQL 查低余额账户 + 未付账单]
B --> C{分级}
C -->|🔴 紧急已欠| D[强提醒 + 业务人员介入催收]
C -->|🟡 警告未欠| E[友好推送提醒]
C -->|🟢 关注| F[月度汇总报告]
D --> G{业户响应?}
G -->|充值| H[走 deposit-additional-topup]
G -->|其他渠道付| I[正常收款流程]
G -->|无响应| J[逾期催收流程<br/>本文外]
E --> K{业户行动?}
K -->|充值| H
K -->|不充| L[转入🔴紧急]
H --> M[业务人员手动 ConsumeAction 抵账单]
Note over M: 月初自动 job 落地后此步自动
```
## 关联工具
- **`DepositPrepaidDashboard`**:后台 Dashboard 页面,统一展示押金 + 预存款的健康指标
- **`LowBalancePrepaidListWidget`**:本场景核心 Widget,实时列出低余额账户
- **`MonthlyPrepaidFlowChart`**:展示预存款流入 / 流出趋势(充值 vs 消费 vs 退款),业务总监层面看
- **`DepositPrepaidStatsOverviewWidget`**:总览数字(总账户数、总余额、本月流水量)
## 常见问题
> [!question] "下月预计账单" 怎么算?
> 不在系统内的硬规则,看 Widget 实现:
>
> - 取业户近 3 个月平均月账单
> - 或取上月账单
> - 或固定基数(物业费固定 ¥800)
>
> 实际取哪种,看 `LowBalancePrepaidListWidget` 内置逻辑。可调整。
> [!question] 业户被提醒"低余额"但其实人家就喜欢月月手动付,不想预存,怎么办?
> 这种业户应**关账户**(走 [[close-resident-moveout|主动关账]]),避免后续骚扰。或者 Widget 上加"忽略"按钮,业户的"预存款关账"决策可以让业务人员跟进。
> [!question] 低余额预警有没有自动化(短信)?
> 看产品决策。**强烈推荐**:
>
> - 🟢 关注:不推送(避免骚扰)
> - 🟡 警告:每月 1 次推送(可控)
> - 🔴 紧急:立即推送(必要)
>
> 实施需要短信 / 微信模板消息接入。
> [!question] 月初批量自动抵扣 job 落地后,本场景作用还大吗?
> **仍重要**。job 跑完后,跳过的余额不足业户**仍需要业务人员介入**:
>
> - 通知充值
> - 跟踪是否充值
> - 充值后 / 业户其他渠道付后,手动 ConsumeAction 补抵
>
> 详见 [[consume-batch-auto-monthly]] "业务人员视角 - 异常介入" 段。
> [!question] 多社区的业户低余额清单怎么展示?
> Widget 按当前 panel 的 community 过滤(若是社区级 Filament Panel)。或者展示"按社区分组"。如果业务人员管多个社区,可在 Dashboard 选社区切换。
## 与 deposit 长期未关账户排查的对比
| 维度 | deposit audit-long-pending-accounts | prepaid 本场景 |
|---|---|---|
| 关注什么 | 长期 Active 未关账户(>2 年)| 低余额账户(下月可能欠)|
| 业务侧重 | 清理代管资金边界 | 预防业户欠费 |
| 频率 | 季度 / 半年 | 每周 / 每月 |
| 处置 | 关账 / retain / 联系业户 | 通知充值 / 催收 |
两者**都是审计扫描场景**,但关注点和频率不同。
## 异常分支
- 业户充值后忘了抵 → 业务人员手动 ConsumeAction
- 业户长期不响应低余额预警 → 进入逾期催收流程(本文外)
- 业户决定不再用预存款 → [[close-with-zero-balance-decision]] / [[close-resident-moveout]]
## 相关文档
- [[consume-batch-auto-monthly]]
- [[auto-deduction-design]]
- [[deposit-additional-topup]]
- [[close-resident-moveout]]
- [[../deposit/audit-long-pending-accounts]](deposit 对应审计场景对比)