写 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) <noreply@anthropic.com>
6.1 KiB
6.1 KiB
title, aliases, tags, sub_feature, audience, status, last_review, code_version
| title | aliases | tags | sub_feature | audience | status | last_review | code_version | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| prop-acc · deposit · 知识地图 |
|
|
deposit |
|
已发布 | 2026-05-25 | 2026-05-22 |
保证金(deposit)知识地图
本子模块 = DepositAccount + DepositTransaction。覆盖物业代为保管的押金(装修保证金、入驻押金等)的开户、缴款、退款、扣罚、冻结、关账、强制关账等全套生命周期。
这是什么?
业户/装修方/供应商先交一笔钱给物业代为保管,等事情结束(装修完、租约满、合同执行完)再退还。中途如果发生损坏或违约,物业可扣除。这就是保证金 / 押金。
[!warning] 押金不是收入! 业户交的 5,000 装修押金,不算物业收入,是物业代为保管的钱。会计科目记入"其他应付款"(负债),不进收入。
这条原则决定了所有设计:必须有独立账户 + 完整流水台账 + 红字凭证(退款扣罚),不能像一次性收费那样"一笔进账完事"。
核心概念(6 篇)
| 文档 | 一句话 |
|---|---|
| 押金账户与押金流水 | 双对象模式:账户记余额状态,流水记每笔历史 |
| 账户状态机 | Active / Frozen / Closed 三状态,Frozen 严格冻结 |
| 缴款人类型 | 6 种(业主/租户/装修承包商/装修公司/供应商/其他)及业户账户 vs 三方账户 |
| 流水类型 | 3 种合法流水(deposit/refund/forfeiture),已弃用 adjustment 的设计取舍 |
| 红字凭证设计 | 退款扣罚走红字 CollectionOrder + Receipt,而非新增枚举 |
| 押金 vs 一次性收费 vs 预存款 | 三个子模块的会计本质区别(收入 vs 预收 vs 代管) |
场景手册(18 篇,全部完成 ✅)
📥 缴纳(Deposit)— 3 篇
💰 退款(Refund)— 3 篇
- ✅ 装修完无损全额退还
- ✅ 部分扣罚后退还差额
- ✅ 退款渠道与缴款渠道不同
⚠️ 扣罚(Forfeiture)— 2 篇
🧊 冻结 / 解冻(Freeze / Unfreeze)— 2 篇
- ✅ 业户纠纷期间冻结账户
- ✅ 调解结束后解冻
🔒 结清(Close)— 2 篇
- ✅ 余额清零自动关闭
- ✅ 主动关账(已无业务往来)
🚨 强制关账(ForceClose)— 3 篇
解决 "Frozen + 有余额 + 想关账" 的设计困境。三种 disposition 对应不同业务出口。
🛡️ 异常 / 审计 / 配置 — 3 篇
- ✅ 冻结账户尝试缴款被守护拦截
- ✅ 月度押金账户余额对账
- ✅ 长期未关账户排查
跨域引用
本子模块引用以下跨域共享概念:
- 业户 — Owner / Tenant 类型的缴款人主体
- 房屋单元 —
asset_id,装修押金通常与具体房屋关联 - 组织结构 —
community_id,物业项目归属 - 角色与权限 —
DepositAccountPolicy权限模型
跨子模块引用
- adhoc · CollectionOrder 与 Receipt — 押金流水复用相同凭证模型,退款走红字
- adhoc · AdHocEvent 状态机 — 对比:adhoc 状态机 vs deposit 状态机
相关代码
- 模型:
packages/prop-acc/src/Models/DepositAccount.php、DepositTransaction.php - 枚举:
DepositAccountStatus、DepositPayerType、DepositTransactionType、FundSource - Policy:
DepositAccountPolicy、DepositTransactionPolicy - Actions(业务层):
packages/prop-acc/src/Actions/Deposits/(DepositIntoAccountAction/RefundFromDepositAccountAction/ForfeitFromDepositAccountAction/ForceCloseDepositAccountAction) - Filament Resource:
packages/prop-acc/src/Filament/Resources/DepositAccounts/ - 业务设计决策:
packages/prop-acc/issue.md的 Q3 段
相关文档
[!success] deposit 子模块:6 概念 + 18 场景 + 1 知识地图 = 25 篇完成
写作日期:2026-05-25 对应代码版本:2026-05-22(详见
packages/prop-acc/issue.mdQ3 段)如果发现遗漏的场景或需要补充的细节,告诉我,可以单独补充新文档。