--- title: prop-acc · prepaid · 场景 - 余额清零后不自动关,业户决定 aliases: - 零余额不自动关账 - 余额 0 决策 - close-with-zero-balance-decision - 场景-预存款零余额决策 tags: - 场景 - prop-acc - 预存款 - 结清 audience: - 业户 - 业务人员 status: 已发布 sub_feature: prepaid last_review: 2026-05-25 code_version: 2026-05-22 --- # 场景:余额清零后不自动关,业户决定 业户预存款账户**余额自然变为 0**(消费抵扣完 / 退款完),账户**保持 Active**,等业户决定继续充值复用,还是主动 [[close-resident-moveout|关账]]。突出 prepaid 与 deposit 在零余额行为上的关键差异。 ## 典型情境 > [!example] 真实情境 > 张阿姨预存款账户余额 ¥800,5 月物业费账单 ¥800,业务人员抵扣后**余额 = 0**。 > > 账户**仍 Active** —— 系统没自动关。张阿姨有 3 个选择: > > 1. **继续用**:下月再充值,账户复用,啥都不操作 > 2. **主动关账**:不想用预存款了,联系物业关账 > 3. **不管**:留 Active 零余额账户,以后想用再充 ## 业户视角 ### 您会感受到什么 - 推送通知:"5 月物业费 ¥800 已抵扣,**余额 ¥0**" - 小程序"我的预存款"显示 "✅ Active,余额 ¥0" - **账户没关**,仍可用(若有钱) ### 您要做什么(三选一) #### 选项 1:继续用(默认,推荐) 什么都不用做。下次想用预存款付账单,先充值: - 走 [[deposit-additional-topup|追加充值]] - 充值后余额非 0,继续抵账单 适合:**长期居住业户**,预存款是日常工具。 #### 选项 2:主动关账 如果决定**不再使用预存款**(例如转用现金 / 微信付每月账单): - 联系物业(电话 / 微信 / 前台) - 业务人员走 [[close-resident-moveout|关账]] 流程 适合:**业户偏好不变**(决定不再用预存款服务)、**搬走**等长期事件。 > [!warning] 关账后想反悔? > 关账永久不可逆。如果以后又想用,**理论上**重开,但**一户一账约束阻塞**(详见 [[one-account-per-resident]] "已知设计 gap")。保险起见:不确定就**不要关**。 #### 选项 3:留 Active 不管 什么都不做。账户保持 Active + 余额 0: - 不影响业户 - 占用一条数据库记录(微不足道) - 后续可能在 [[audit-low-balance-and-overdue|审计]] 里被标记"长期零余额",业务人员可能主动联系您确认 适合:**犹豫**(可能以后会用)、**短期没决定**。 ## 业务人员视角 ### 通常无需操作 零余额 Active 账户**默认保留**,不主动清理。理由: | 理由 | 说明 | |---|---| | 业户随时可能继续充值 | 关了再开成本大(一户一账约束)| | 业务上无伤害 | 账户余额 0,不挂账、不欠款、不占资金 | | 清理意义低 | 数据量不大,清理工时 > 收益 | | 自动关风险大 | "自动关账后业户充值要重新开,体验差" | ### 何时主动关 只在以下情况业务人员主动关: | 情况 | 关账理由 | |---|---| | 业户搬走 | 业务终结,清爽 | | 业户明确说"不再用预存款" | 用户决定 | | 账户长期闲置(>2 年)且业户长期失联 | 清账类似 [[audit-low-balance-and-overdue]] 处理 | ### 操作 走 [[close-resident-moveout|主动关账]] 流程,Modal 表单 memo 填具体原因。 ## 与 deposit 的关键差异(再次强调) | 维度 | deposit 零余额 | **prepaid 零余额(本场景)** | |---|---|---| | 自动关账 | ✅ 是,最后一笔 refund/forfeit 触发 | ❌ **保持 Active** | | 业户感知 | 收到最后一张红字收据 + 自动关账通知 | **无感**(余额 0 但账户 Active)| | 业务人员介入 | 不需要 | 视需求决定 | | 设计哲学 | 押金 = 业务节点性,完结即关 | 预存款 = 长期工具,清零不等于终结 | ## 系统流程(消费导致清零) ```mermaid sequenceDiagram participant 业户 participant 业务 participant Filament participant Account participant 数据库 Note over Account: balance=800,有 800 物业费账单 业务->>Filament: ConsumeAction(800) Filament->>Account: consume(bill, 800) Account->>数据库: 建 CO(type=Bill, +800) + PrepaidTransaction(consume, 800→0) Account->>数据库: **balance=0, status=Active(不变)** Account->>监听器: 触发 CollectionOrderCompleted 监听器->>数据库: 建 Receipt("物业费 ¥800") Account->>数据库: 提交 Note over Account: balance=0 但 Active Filament-->>业务: 完成 业务-->>业户: 推送"5 月物业费已抵扣,余额 ¥0" Note over 业户: 业户选择:继续用 / 关账 / 不管 ``` ## 流水台账(本场景) | 流水 | type | amount | balance_before | balance_after | 备注 | |---|---|---|---|---|---| | ... | (前面省略)| | | | | | N | consume | 800 | 800 | 0 | 5 月物业费抵扣 | 账户 `status` 保持 Active,无关账动作。 ## 常见问题 > [!question] 为什么 prepaid 设计成不自动关账? > 详见 [[account-state-machine]] "零余额不自动关账" 段。简言之: > > - 一户一账,关了重开成本大(unique 约束) > - 业户长期可能复用 > - 业务高频,频繁开关无意义 > [!question] 系统层面有"零余额超 N 个月自动关账" job 吗? > 没有,也**不推荐加**。零余额 Active 账户无害,自动关账反而引发业户"为什么我账户被关了"的客服压力。 > [!question] 业户登录小程序看到余额 0,会困惑吗? > 不会(理论上)。小程序界面应清楚显示: > - 余额:¥0 > - 状态:Active > - 行动按钮:"立即充值"(显眼) > - 流水:可看历史 > > 业户清楚看到"我可以充值继续用"。 > [!question] 业户问"我账户还在用吗?" > 看状态: > - Active + 余额 > 0:正常用 > - Active + 余额 = 0:**仍在用,但需要充值才能抵账单** > - Frozen:暂停中,联系物业了解 > - Closed:已关闭,不再使用 > [!question] 退到 0 的退款流程跟消费到 0 的流程一样吗? > 状态机层面**完全一样** —— 都保持 Active。不同点: > - 消费到 0:走 [[consume-monthly-property-bill]] 等抵扣场景 > - 退款到 0:走 [[refund-full-resident-moveout]] 或 [[refund-partial-after-consume]] 之类的退款场景 > > 两种动作都**不触发**自动关账。 ## 异常分支 - 业户决定关账 → [[close-resident-moveout]] - 业户决定继续用 → [[deposit-additional-topup|追加充值]] - 长期零余额累积成审计问题 → [[audit-low-balance-and-overdue]] ## 相关文档 - [[account-state-machine]] - [[close-resident-moveout]] - [[deposit-additional-topup]] - [[refund-full-resident-moveout]] - [[../deposit/close-after-zero-balance]](deposit 自动关账对比) - [[../deposit/close-manual-with-zero-balance]](deposit 主动关空账户对比)