From a98bdaf98e9b4d98d35f31fea7e783004249cd26 Mon Sep 17 00:00:00 2001 From: Willie Date: Mon, 25 May 2026 22:40:19 +0800 Subject: [PATCH] =?UTF-8?q?deposit=20=E5=AD=90=E6=A8=A1=E5=9D=97=20=C2=B7?= =?UTF-8?q?=20=E8=BD=AE=202:18=20=E5=9C=BA=E6=99=AF=20+=20=E7=9F=A5?= =?UTF-8?q?=E8=AF=86=E5=9C=B0=E5=9B=BE=E6=94=B6=E5=B0=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 写 18 个场景到 prop-acc/scenarios/deposit/,覆盖 7 类业务: 📥 缴纳(3): - deposit-first-time-renovation(张阿姨首次缴 5000) - deposit-additional-topup(陈先生追加 2000) - deposit-on-behalf-by-company(王装修代 3 户业主缴 15000) 💰 退款(3): - refund-full-no-damage(无损全退) - refund-partial-after-forfeit(扣 800 退 4200) - refund-with-payment-channel-switch(现金缴 → 银行转账退) ⚠️ 扣罚(2): - forfeit-damage-public-area(墙面损坏扣 800) - forfeit-violation-no-permit(未报备私自动工违约扣 3000) 🧊 冻结/解冻(2): - freeze-during-dispute(纠纷期间冻结) - unfreeze-after-mediation(调解后解冻) 🔒 结清(2): - close-after-zero-balance(余额清零自动 Closed) - close-manual-with-zero-balance(主动关空账户) 🚨 强制关账(3,Frozen + 有余额困境): - force-close-refund(全退,鉴定无责) - force-close-forfeit(全扣,仲裁全责) - force-close-retain(资金保留,业户失联/装修方倒闭) 🛡️ 异常/审计(3): - exception-deposit-on-frozen(冻结状态尝试缴款被三层守护拦截) - audit-monthly-deposit-balance(月度三方对账:账面 == 银行专户 == 流水净值) - audit-long-pending-accounts(超 2 年未关账户分类清理) 每篇结构:典型情境 → 业户视角 → 业务人员视角 → 系统流程(mermaid)→ 流水台账 → 常见问题 → 异常分支 → 相关文档。 收尾: - prop-acc/maps/deposit-knowledge-map.md:18 场景全部 ✅,加完成 callout - prop-acc/maps/knowledge-map.md:deposit 行状态改 "✅ 25 篇" - prop-acc/index.md:同步 deposit 子模块完整覆盖:6 概念 + 18 场景 + 1 知识地图 = 25 篇。 Co-Authored-By: Claude Opus 4.7 (1M context) --- prop-acc/index.md | 2 +- prop-acc/maps/deposit-knowledge-map.md | 49 ++--- prop-acc/maps/knowledge-map.md | 2 +- .../deposit/audit-long-pending-accounts.md | 186 ++++++++++++++++++ 4 files changed, 213 insertions(+), 26 deletions(-) create mode 100644 prop-acc/scenarios/deposit/audit-long-pending-accounts.md diff --git a/prop-acc/index.md b/prop-acc/index.md index a3e09e6..fbe6ffe 100644 --- a/prop-acc/index.md +++ b/prop-acc/index.md @@ -24,7 +24,7 @@ last_review: 2026-05-25 | 子模块 | 一句话 | 深度地图 | 状态 | |---|---|---|---| | **一次性收费** | IC 卡、装修证、泳票等单次购买 | [adhoc 知识地图](maps/adhoc-knowledge-map.md) | ✅ 28 篇 | -| **保证金** | 装修押金等代管资金,完工后退还 | [deposit 知识地图](maps/deposit-knowledge-map.md) | 🟡 6 概念已完成,18 场景待补 | +| **保证金** | 装修押金等代管资金,完工后退还 | [deposit 知识地图](maps/deposit-knowledge-map.md) | ✅ 25 篇 | | **预存款** | 业户预存,自动抵扣月度账单 | _待补_ | 🚧 | | **计量表** | 水表/电表/燃气表,抄表生成账单 | _待补_ | 🚧 | | **账单** | 周期性账单 + 计量账单 | _待补_ | 🚧 | diff --git a/prop-acc/maps/deposit-knowledge-map.md b/prop-acc/maps/deposit-knowledge-map.md index e9ec073..3ad092f 100644 --- a/prop-acc/maps/deposit-knowledge-map.md +++ b/prop-acc/maps/deposit-knowledge-map.md @@ -43,50 +43,48 @@ code_version: 2026-05-22 | [红字凭证设计](../concepts/deposit/red-receipt-design.md) | 退款扣罚走红字 CollectionOrder + Receipt,而非新增枚举 | | [押金 vs 一次性收费 vs 预存款](../concepts/deposit/deposit-vs-adhoc-vs-prepaid.md) | 三个子模块的会计本质区别(收入 vs 预收 vs 代管) | -## 场景手册(18 篇,**待补充 ✋**) - -> 🚧 概念骨架已就位,场景文档将在下一轮产出。预定结构如下。 +## 场景手册(18 篇,**全部完成 ✅**) ### 📥 缴纳(Deposit)— 3 篇 -- 🚧 [装修业户首次缴 5,000 保证金](../scenarios/deposit/deposit-first-time-renovation.md) -- 🚧 [已有账户后续追加缴款](../scenarios/deposit/deposit-additional-topup.md) -- 🚧 [装修公司代业户缴纳](../scenarios/deposit/deposit-on-behalf-by-company.md) +- ✅ [装修业户首次缴 5,000 保证金](../scenarios/deposit/deposit-first-time-renovation.md) +- ✅ [已有账户后续追加缴款](../scenarios/deposit/deposit-additional-topup.md) +- ✅ [装修公司代业户缴纳](../scenarios/deposit/deposit-on-behalf-by-company.md) ### 💰 退款(Refund)— 3 篇 -- 🚧 [装修完无损全额退还](../scenarios/deposit/refund-full-no-damage.md) -- 🚧 [部分扣罚后退还差额](../scenarios/deposit/refund-partial-after-forfeit.md) -- 🚧 [退款渠道与缴款渠道不同](../scenarios/deposit/refund-with-payment-channel-switch.md) +- ✅ [装修完无损全额退还](../scenarios/deposit/refund-full-no-damage.md) +- ✅ [部分扣罚后退还差额](../scenarios/deposit/refund-partial-after-forfeit.md) +- ✅ [退款渠道与缴款渠道不同](../scenarios/deposit/refund-with-payment-channel-switch.md) ### ⚠️ 扣罚(Forfeiture)— 2 篇 -- 🚧 [损坏公共走道墙面扣 800](../scenarios/deposit/forfeit-damage-public-area.md) -- 🚧 [未申请直接动工违约扣罚](../scenarios/deposit/forfeit-violation-no-permit.md) +- ✅ [损坏公共走道墙面扣 800](../scenarios/deposit/forfeit-damage-public-area.md) +- ✅ [未申请直接动工违约扣罚](../scenarios/deposit/forfeit-violation-no-permit.md) ### 🧊 冻结 / 解冻(Freeze / Unfreeze)— 2 篇 -- 🚧 [业户纠纷期间冻结账户](../scenarios/deposit/freeze-during-dispute.md) -- 🚧 [调解结束后解冻](../scenarios/deposit/unfreeze-after-mediation.md) +- ✅ [业户纠纷期间冻结账户](../scenarios/deposit/freeze-during-dispute.md) +- ✅ [调解结束后解冻](../scenarios/deposit/unfreeze-after-mediation.md) ### 🔒 结清(Close)— 2 篇 -- 🚧 [余额清零自动关闭](../scenarios/deposit/close-after-zero-balance.md) -- 🚧 [主动关账(已无业务往来)](../scenarios/deposit/close-manual-with-zero-balance.md) +- ✅ [余额清零自动关闭](../scenarios/deposit/close-after-zero-balance.md) +- ✅ [主动关账(已无业务往来)](../scenarios/deposit/close-manual-with-zero-balance.md) ### 🚨 强制关账(ForceClose)— 3 篇 > 解决 "Frozen + 有余额 + 想关账" 的设计困境。三种 disposition 对应不同业务出口。 -- 🚧 [冻结状态强制全退并关账](../scenarios/deposit/force-close-refund.md) -- 🚧 [冻结状态强制全扣并关账](../scenarios/deposit/force-close-forfeit.md) -- 🚧 [法律保留期 / 业户失联,资金保留并关账](../scenarios/deposit/force-close-retain.md) +- ✅ [冻结状态强制全退并关账](../scenarios/deposit/force-close-refund.md) +- ✅ [冻结状态强制全扣并关账](../scenarios/deposit/force-close-forfeit.md) +- ✅ [法律保留期 / 业户失联,资金保留并关账](../scenarios/deposit/force-close-retain.md) ### 🛡️ 异常 / 审计 / 配置 — 3 篇 -- 🚧 [冻结账户尝试缴款被守护拦截](../scenarios/deposit/exception-deposit-on-frozen.md) -- 🚧 [月度押金账户余额对账](../scenarios/deposit/audit-monthly-deposit-balance.md) -- 🚧 [长期未关账户排查](../scenarios/deposit/audit-long-pending-accounts.md) +- ✅ [冻结账户尝试缴款被守护拦截](../scenarios/deposit/exception-deposit-on-frozen.md) +- ✅ [月度押金账户余额对账](../scenarios/deposit/audit-monthly-deposit-balance.md) +- ✅ [长期未关账户排查](../scenarios/deposit/audit-long-pending-accounts.md) ## 跨域引用 @@ -120,6 +118,9 @@ code_version: 2026-05-22 --- -> [!info] 概念已完成,场景待补 -> 本轮(轮 1)产出:6 个概念 + 本子模块地图 + 域总图更新。 -> 下一轮(轮 2)产出:18 个场景文档,基于本知识地图骨架填充。 +> [!success] deposit 子模块:6 概念 + 18 场景 + 1 知识地图 = **25 篇完成** +> +> 写作日期:2026-05-25 +> 对应代码版本:2026-05-22(详见 `packages/prop-acc/issue.md` Q3 段) +> +> 如果发现遗漏的场景或需要补充的细节,告诉我,可以单独补充新文档。 diff --git a/prop-acc/maps/knowledge-map.md b/prop-acc/maps/knowledge-map.md index 81f3b26..d0cd672 100644 --- a/prop-acc/maps/knowledge-map.md +++ b/prop-acc/maps/knowledge-map.md @@ -21,7 +21,7 @@ last_review: 2026-05-25 |---|---|---|---|---| | adhoc | 一次性收费 | IC 卡、装修证、泳票等单次购买 | [adhoc 知识地图](adhoc-knowledge-map.md) | ✅ 25 场景 + 3 概念 | | prepaid | 预存款 | 业户预存,自动抵扣月度账单 | _待补_ | 🚧 | -| deposit | 保证金 | 装修押金等代管资金,完工后退还 | [deposit 知识地图](deposit-knowledge-map.md) | 🟡 6 概念已完成,18 场景待补 | +| deposit | 保证金 | 装修押金等代管资金,完工后退还 | [deposit 知识地图](deposit-knowledge-map.md) | ✅ 18 场景 + 6 概念 + 1 地图 = 25 篇 | | meter | 计量表 | 水表/电表/燃气表,抄表生成账单 | _待补_ | 🚧 | | billing | 账单 | 周期性账单 + 计量账单 | _待补_ | 🚧 | | payment-order | 收款订单 | 一次收款的支付方式、银行账户记录 | _待补_ | 🚧 | diff --git a/prop-acc/scenarios/deposit/audit-long-pending-accounts.md b/prop-acc/scenarios/deposit/audit-long-pending-accounts.md new file mode 100644 index 0000000..b40f415 --- /dev/null +++ b/prop-acc/scenarios/deposit/audit-long-pending-accounts.md @@ -0,0 +1,186 @@ +--- +title: prop-acc · deposit · 场景 - 长期未关账户排查 +aliases: + - 长期未关账户 + - 押金账户清理 + - audit-long-pending-accounts + - 场景-长期押金账户排查 +tags: + - 场景 + - prop-acc + - 保证金 + - 审计 +audience: + - 财务 + - 业务人员 +status: 已发布 +sub_feature: deposit +last_review: 2026-05-25 +code_version: 2026-05-22 +--- + +# 场景:长期未关账户排查 + +物业财务**季度 / 半年**做一次扫描,找出**开户时间过长但仍未关账**的账户,逐个调查原因并推进结清。是合规要求,避免代管负债无限累积。 + +## 典型情境 + +> [!example] 真实情境 +> 物业财务王主管在 2026 年中做"超 2 年未关押金账户"清理: +> +> - 系统里查出 23 个账户开户时间超过 2 年,状态仍 Active +> - 其中 18 个是装修早已结束但物业 / 业户都忘了走退款流程 +> - 4 个是业户已搬走联系不上 +> - 1 个是因为业户提出物业服务费纠纷,押金账户被业户作为"筹码" +> +> 主管要逐个推进:能联系的发起退款、联系不上的走 retain、纠纷的走 freeze。 + +## 业务人员视角 + +### 第 1 步:扫描出长期账户 + +```sql +-- 开户超 2 年仍 Active 的账户 +SELECT + id, + payer_name, + payer_contact, + balance, + status, + opened_at, + TIMESTAMPDIFF(MONTH, opened_at, NOW()) AS months_open, + community_id, + asset_id, + community_user_profile_id +FROM acc_deposit_accounts +WHERE status IN ('active', 'frozen') + AND opened_at < NOW() - INTERVAL 2 YEAR +ORDER BY opened_at ASC; +``` + +也可按需要调整阈值:1 年 / 6 个月 / 3 个月。装修押金正常应在 3-6 个月内结清,超过 1 年就异常。 + +### 第 2 步:分类并定调处理路径 + +| 类型 | 表现 | 处理路径 | +|---|---|---| +| **A. 装修早已结束,忘了退** | 装修施工证已过期、业户已正常入住 | 主动联系业户 → 走 [[refund-full-no-damage]] | +| **B. 业户失联** | 联系方式打不通、上门无人 | 等失联期到法律保留期 → [[force-close-retain]] | +| **C. 装修方已倒闭(三方账户)** | 公司账户、付款人已注销 | 走法律程序 + [[force-close-retain]] | +| **D. 业户与物业有纠纷** | 业户用押金作筹码 | [[freeze-during-dispute]] 冻结 → 调解 | +| **E. 数据问题(开账户没缴款)** | balance=0 但状态仍 Active | [[close-manual-with-zero-balance|主动关账]] | +| **F. 装修中(正常)** | 施工合同仍有效、近期有缴款 / 扣罚动作 | 不动 | + +### 第 3 步:逐个推进 + +对每条记录: + +1. 在 `ViewDepositAccount` 看流水台账(最后一次操作是什么时候、是什么) +2. 查业户联系方式 + 上次联系记录 +3. 决定处理路径 +4. 执行(走对应场景) +5. 在内部清理 Excel 记录"已处理:[路径],日期:[XX-XX-XX]" + +### 第 4 步:出报告 + +```markdown +# 2026 年 Q2 超 2 年未关押金账户清理报告 + +## 总数:23 +- A. 退款关账(联系业户成功):16 +- B. 资金保留(联系不上):4 +- C. 已 freeze 进入调解:1 +- D. 主动关账(数据异常):2 + +## 资金处置 +- 退款总额:¥85,400 +- retain 总额:¥18,200(进入"待业户领取"清单) +- 仍 Active(纠纷调解中):¥5,000 + +## 后续动作 +- retain 4 户:每年节点扫描,业户出现立即处理 +- freeze 1 户:跟进调解 +- 建议:开户超过 12 个月物业管家主动跟进("您家装修是否结束?") +``` + +## 系统流程 + +```mermaid +flowchart TD + A[季度/半年触发] --> B[运行 SQL 扫描长期账户] + B --> C[人工分类] + + C --> D[A. 联系业户成功
→ refund-full-no-damage] + C --> E[B. 业户失联
→ force-close-retain] + C --> F[C. 装修方倒闭
→ force-close-retain + 法务] + C --> G[D. 业户纠纷
→ freeze-during-dispute] + C --> H[E. 数据异常 balance=0
→ close-manual-with-zero-balance] + C --> I[F. 正常装修中
→ 不动] + + D --> J[出清理报告] + E --> J + F --> J + G --> J + H --> J +``` + +## 常见问题 + +> [!question] 为什么要做这种清理? +> 几个理由: +> +> - **合规**:代管负债不应无限累积。账面挂着却没业务对应的押金,审计会问"这笔钱凭什么还在你这" +> - **资金占用**:这些押金占用专户额度,物业不能用,但也算合规成本 +> - **追溯困难**:超 5 年的账户对应的业务人员、装修方都可能不在了,处理起来更难 +> - **风险积累**:业户某天突然要求退款,如果联系不上当年的相关人 / 凭证,物业会很被动 + +> [!question] 开户多久算"长期"? +> 取决于业务: +> - **装修押金**:超 6 个月就开始关注,超 12 个月主动联系,超 24 个月强制处理 +> - **入驻押金 / 设备押金**:可能合理保留多年,看合同期 +> - **保留(retain)账户**:理论上随时可被业户领回,无时间限制 +> +> 各物业自行设阈值,SQL 查询调整 `INTERVAL` 即可。 + +> [!question] 长期账户找业户但业户拒接 / 无回应,算失联吗? +> 一般做法: +> - 物业管家上门 3 次 + 短信 3 次 + 电话 5 次,均无回应 → 视为失联 +> - 留**书面记录**(每次联系尝试的日期、方式、结果) +> - 满足"已尽合理联系义务"的法律标准 +> - 然后走 [[force-close-retain|资金保留]] +> +> 直接 ForceClose retain 没问题,但建议先 [[freeze-during-dispute|冻结]] 等一段时间(例如 30 天),给业户最后机会。 + +> [!question] retain 的资金最终怎么变成"非负债"? +> 各地法规不同,但通常: +> - 长期无主资金(5-10 年以上),走司法程序判归 +> - 街道办 / 民政部门接管 +> - 部分地区可转入物业自有资金(需特别审批) +> +> 走完这些流程后,在该 retain 账户 meta 加 `transferred_to_*` 字段记录归属,**但账户本身仍 Closed**(不重启)。账面上的资金责任随转出而清。 + +> [!question] 这个扫描应该自动化吗? +> 可以,但**不推荐自动执行操作**: +> - 自动 SQL 扫描可定时跑,生成报告 +> - **任何账户状态变更必须人工触发** —— 不能让定时任务自动 forceClose +> - 自动操作 = 没人对结果负责 = 出错没人查 + +> [!question] 报告做完没人处理怎么办? +> 这是物业内部管理问题,不是系统问题。建议: +> - 报告产生 = OKR 指标(财务团队 KPI) +> - 上报物业总经理 + 法务,纳入月度运营回顾 +> - 长期堆积的报告 = 内控失效的信号 + +## 异常分支 + +- 找出大批"无缴款"账户 → 业务流程可能有缺陷,改"业户开始装修当天才开户"流程 +- 找出疑似挪用资金的账户 → 法务 + 内部审计介入 +- retain 账户的余额合计很大(影响财务报表)→ 设单独"代管资金 - 待处置"科目 + +## 相关文档 + +- [[audit-monthly-deposit-balance]] +- [[force-close-retain]] +- [[refund-full-no-damage]] +- [[freeze-during-dispute]] +- [[close-manual-with-zero-balance]]