写 6 个核心概念到 prop-acc/concepts/prepaid/: - prepaid-account-vs-transaction:账户+流水双对象,与 deposit 同构但多两条独有约束(一户一账、零余额不自动关账) - account-state-machine:Active / Frozen / Closed,canOperate 统一守护,与 deposit 差异(零余额行为、无 ForceClose) - one-account-per-resident:unique(community_id, profile_id) + 跨社区防御(prepaid 独有) - transaction-types:4 种流水(deposit / consume / refund / adjustment),consume 是最高频 - consume-via-bill-collection-type:Consume 走 CollectionType=Bill 而非 Prepaid 的独特设计,资金来源标 meta.fund_source - auto-deduction-design:月初批量自动抵扣 scheduled job 的设计意图(代码待补,issue.md Q4 已记录) 新建子模块知识地图: - prop-acc/maps/prepaid-knowledge-map.md:6 概念入口 + 16 场景预占清单 + 跨域引用 + 代码索引 更新导航: - prop-acc/maps/knowledge-map.md:域总图 prepaid 行链 prepaid 知识地图,状态 🟡 - prop-acc/index.md:同步 下一轮:16 个场景文档(prepaid/scenarios/),按本知识地图骨架填充。 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
6.4 KiB
6.4 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 · prepaid · 知识地图 |
|
|
prepaid |
|
已发布 | 2026-05-25 | 2026-05-22 |
预存款(prepaid)知识地图
本子模块 = PrepaidAccount + PrepaidTransaction。覆盖业户预存金额抵扣账单的全生命周期 —— 充值、消费(月度账单自动抵)、退款、冻结、关账。
这是什么?
业户提前充值一笔钱到自己的预存款账户,后续物业费 / 水电费等账单自动从这里扣,免得月月手动缴。是物业财务系统的"业户钱包"。
[!warning] 预存款不是收入,也不是押金 — 是预收账款 业户充进来的钱在抵扣账单之前,会计科目记预收账款(负债),不进收入。每次抵扣账单时,对应部分才转入收入。
三种模块的会计性质对比详见 adhoc 的 deposit-vs-adhoc-vs-prepaid 概念。
核心特性(与 deposit 的关键差异)
| 维度 | prepaid 预存款 | deposit 保证金 |
|---|---|---|
| 每业户账户数 | 1 个(一户一账) | 多个 |
| 核心高频操作 | consume(自动抵账单) | refund / forfeiture |
| Bill 关联 | ✅(consume 关联具体账单) | ❌ |
| 零余额行为 | 保持 Active(可继续充值) | 自动 Closed |
| ForceClose | ❌(纠纷罕见) | ✅ |
| 缴款人 | 只能是业户本人 | 多种(业主/租户/装修公司/...) |
核心概念(6 篇)
| 文档 | 一句话 |
|---|---|
| 预存款账户与流水 | 双对象模式,与 deposit 同构但多两条独有约束 |
| 账户状态机 | Active / Frozen / Closed,canOperate 统一守护,零余额不自动关账 |
| 一户一账约束 | unique(community_id, profile_id) + 跨社区防御 |
| 流水类型 | 4 种(deposit / consume / refund / adjustment),consume 是高频 |
| Consume 走 CollectionType=Bill 的设计 | 独特设计:抵账单用 Bill 视角,资金来源标 meta.fund_source=prepaid |
| 月初批量自动抵扣设计 | 待补 scheduled job,产品核心卖点 |
场景手册(16 篇,待补充 ✋)
🚧 概念骨架已就位,场景文档将在下一轮(轮 2)产出。预定结构如下。
📥 充值(Deposit)— 3 篇
🧹 消费 Consume — 4 篇(最核心)
💰 退款(Refund)— 2 篇
🧊 冻结 / 解冻(Freeze / Unfreeze)— 2 篇
- 🚧 疑似欺诈 / 风控冻结
- 🚧 核实后解冻
🔒 结清(Close)— 2 篇
🛡️ 异常 / 审计(3 篇)
跨域引用
本子模块引用以下跨域共享概念:
跨子模块引用
- adhoc · CollectionOrder 与 Receipt — prepaid 同样产出 CO + Receipt,但 consume 的 CO 用 type=Bill(详见本子模块独特设计)
- deposit · 账户与流水 — 双对象模式同构,可对比理解
- deposit · 状态机 — 三状态相同,关账行为不同
- deposit · 押金 vs 一次性收费 vs 预存款 — 三模块对比
相关代码
- 模型:
PrepaidAccount.php、PrepaidTransaction.php - 枚举:
PrepaidAccountStatus、PrepaidTransactionType、FundSource、CollectionType - Policy:
PrepaidAccountPolicy(9 个方法)、PrepaidTransactionPolicy - Actions(业务层):
packages/prop-acc/src/Actions/Prepaids/(ConsumeFromPrepaidAccountAction/RefundFromPrepaidAccountAction,自动抵扣 job 待补) - Filament Resource:
packages/prop-acc/src/Filament/Resources/PrepaidAccounts/ - Dashboard / Widgets:
DepositPrepaidDashboard、MonthlyPrepaidFlowChart、LowBalancePrepaidListWidget - 业务设计决策:
packages/prop-acc/issue.md的 Q4 段
相关文档
[!info] 概念已完成,场景待补 本轮(轮 1)产出:6 个概念 + 本子模块地图 + 域总图更新。 下一轮(轮 2)产出:16 个场景文档,基于本知识地图骨架填充。