P3.5: prop-acc 启用子模块嵌套(adhoc/),应对大型业务域扩展

背景:
单纯按 UDAS 严格扁平,prop-acc/scenarios/ 装齐 7 子模块后预计 100-150
篇 .md 单一文件夹,Explorer 无法浏览、Quartz folder page 无法阅读。

扩展规则(已写入 SKILL.md 多域章节 + multi-domain.md 第 10 节):
- 单类型文件夹文件数 > 30 且能按业务子模块分组时,启用嵌套
- 路径:<domain>/<type>/<sub-feature>/<file>.md
- 文件名去 <sub-feature>- 前缀(路径已表达)
- title 三段式:<domain> · <sub-feature> · <名>
- frontmatter 新增 sub_feature 字段(便于 RAG 过滤)
- 跨子模块文档落在 <domain>/<type>/(不进子文件夹),与"跨域→cross/"对称

本次迁移:
- prop-acc/concepts/adhoc-*.md (3)  → prop-acc/concepts/adhoc/*.md
- prop-acc/scenarios/adhoc-*.md (25) → prop-acc/scenarios/adhoc/*.md
- 每个文件:title 加 adhoc 段、aliases 追加旧 prop-acc · 前缀形式(兼容)、
  新增 sub_feature: adhoc 字段

WikiLink 解析未受影响:
- 既有 [[场景-A流-...]] 等 200+ 引用通过 aliases (含旧 basename) 解析
- 新引用可用 [[adhoc · 前台购买 IC 卡]] 或 [[prop-acc · adhoc · 前台购买 IC 卡]]
- 各域 knowledge-map.md 内 WikiLink 全部仍有效

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Willie
2026-05-25 20:55:59 +08:00
parent e9ed756fc4
commit 35c0147a7b
28 changed files with 84 additions and 28 deletions

View File

@@ -0,0 +1,209 @@
---
title: prop-acc · adhoc · 场景 - 审计 - IC 卡库存与售出数对账
aliases:
- prop-acc · 场景 - 审计 - IC 卡库存与售出数对账
- 场景 - 审计 - IC 卡库存与售出数对账
- 场景-审计-IC卡库存与售出数对账
tags:
- 场景
- prop-acc
- 一次性收费
- 业务场景
- 审计对账
audience:
- 业务人员
status: 已发布
sub_feature: adhoc
last_review: 2026-05-25
code_version: 2026-05-22
---
# 场景:IC 卡库存与售出数对账
物业月底核对:**系统记录卖出的 IC 卡数量** 是否等于 **库存盒里减少的物理 IC 卡数量**
> [!warning] 系统不直接管物理库存
> 本系统**只管财务**(收了多少钱),**不管实物**(IC 卡盒里还剩几张)。物理库存盘点是物业**独立的内部流程**,本场景描述如何用系统数据**辅助核对**物理库存。
## 典型情境
> [!example] 真实情境
> 5 月 31 日,物业财务王姐做月度库存盘点。
>
> - 月初库存:100 张工本卡(已制好的空白 IC 卡)
> - 月底盘点:剩 47 张
> - 推断:**这个月用掉 53 张**
>
> 在 Filament 后台查"5 月 IC 卡售出数",**应该等于 53 张**。如果不等,需要排查。
## 业务人员视角
### 步骤 1:盘点物理库存
```
1. 月初库存(从上月结存) 100 张
2. 本月入库(新采购) +50 张
3. 本月理论可用 150 张
4. 月底盘点(数库存盒) -47 张
─────────────────────────────────────
5. 本月实际"消耗" 103 张
```
### 步骤 2:从系统拉售出数据
```sql
SELECT
COUNT(*) AS ,
SUM(quantity) AS
FROM acc_ad_hoc_events ahe
JOIN acc_rate_plans rp ON ahe.rate_plan_id = rp.id
WHERE rp.name LIKE '%IC 卡%'
AND ahe.occurred_at BETWEEN '2026-05-01' AND '2026-05-31 23:59:59'
AND ahe.status = 'completed';
```
输出例:
```
售出订单数:90 单
卡总张数:103 张 (有些订单买多张)
```
### 步骤 3:对账
```
物理消耗 vs 系统售出
103 vs 103 ✅ 完美一致
```
或者:
```
物理消耗 vs 系统售出
103 vs 101 ❌ 差 2 张
→ 物理少了 2 张 / 系统多算 2 张
```
### 步骤 4:差额排查
#### 差额 > 0(物理消耗 > 系统售出)
**意味着**:卡发了但没记账。可能原因:
| 原因 | 处理 |
|---|---|
| 给 VIP 业户**免费**发卡(没收钱也没记录)| 物业政策合规,要补登记 0 元订单 |
| 测试卡(写卡测试用了几张)| 算损耗 |
| 业务人员私发 | **严重**,核查员工 |
| 卡丢失 / 制卡失败报废 | 算损耗 |
#### 差额 < 0(物理消耗 < 系统售出)
**意味着**:记账了但卡没发。可能原因:
| 原因 | 处理 |
|---|---|
| 业户已付款但实物没拿(走 [[场景-异常-支付完成但实物发不出]])| 检查"待补发清单",物业还在保管 |
| 录单时数量填错(多录了)| 检查录入异常订单,可能要 [[场景-取消-录错金额作废重做]] |
| 业户付了款作废后忘了取回卡 | 物业归档 |
## 物理库存管理建议
> [!tip] 建议物业建一份独立的库存台账
> 不在系统里(系统不管物理库存),但用 Excel / 纸质本子记:
```
=== IC 卡库存台账 ===
日期 操作 数量 余额 经办人 备注
2026-04-30 月初余结存 100 上月结存
2026-05-03 采购入库 +50 150 李四 合同 #2026005
2026-05-15 发给业户 -1 149 张三 房号 12-3-501
2026-05-15 发给业户 -2 147 张三 房号 8-2-301
...(每天明细)
2026-05-31 月底盘点 47 王姐 实物数对
```
每周/每月与系统数据对照。
## 系统流程
```mermaid
sequenceDiagram
participant 财务
participant 物理库存
participant Filament/DB
participant 业务人员
Note over 财务: 月底
财务->>物理库存: 数库存盒
物理库存-->>财务: 47 张
财务->>财务: 计算消耗 = 100 + 50 - 47 = 103
财务->>Filament/DB: 查 5 月 IC 卡售出数
Filament/DB-->>财务: 103 张
财务->>财务: 对账 ✅
Note over 财务: 若不一致
财务->>业务人员: 找差额
业务人员-->>财务: 解释(免费发卡 / 录入错误 / 报废等)
```
## 其他实物的对账方法
同样的方法可以对账:
| 实物 | 系统侧查询 |
|---|---|
| **装修出入证** | `SUM(quantity) WHERE rate_plan.name LIKE '%装修出入证%'` |
| **泳票(纸质)** | `SUM(quantity) WHERE rate_plan.name LIKE '%泳票%'` |
| **充值码 / 充值卡** | `COUNT(*) WHERE rate_plan.name LIKE '%充值%'` |
## 常见问题
> [!question] 为什么系统不直接管物理库存?
> 物理库存涉及**采购 / 入库 / 报废 / 盘点** 等独立流程,可能跨多个仓库 / 多种实物。**绑到收费系统里会让收费系统过重**。最佳实践:
> - 库存独立做(Excel / 专门的 ERP)
> - 收费系统专注于"卖出与收钱"
> - 月底用对账连接两者
> [!question] VIP 业户免费发卡,系统里要建 0 元订单吗?
> **强烈建议建**。便于库存对账。Filament 后台支持金额 = 0(不会失败)。备注栏注明"VIP 免费 + 审批单号"。
> [!question] 制卡过程中报废的卡怎么入账?
> 系统侧**不录任何订单**(没有交易发生)。在库存台账里**算损耗**:
> ```
> 日期 制卡失败报废 -1 余额 X 备注 测试新读卡器
> ```
> [!question] 差额超过 10 张能不能不查?
> **强烈不建议**。差额是**审计预警信号**,长期不查可能掩盖:
> - 员工私发
> - 财务挪用
> - 系统漏录
>
> 建议:**月度差额 > 5 张必须给出书面解释**。
## 与"现金对账"的区别
| 对账类型 | 对账对象 | 数据源 | 频率 |
|---|---|---|---|
| [[场景-审计-月底现金对账\|现金对账]] | 系统订单 vs 收银抽屉 | 数据库 + 物理现金 | 每月 |
| **库存对账(本场景)** | 系统订单 vs 物理库存盒 | 数据库 + 物理盘点 | 每月 |
| 作废抽查 | 作废订单的事由记录 | 数据库 meta 字段 | 每季 |
三种对账**独立做但互相印证** —— 现金对账过了但库存不对,可能是 VIP 免费发卡;反之可能是手工卖了卡没录系统。
## 相关概念
- [[场景-A流-前台购买IC卡]] — 售出的数据来源
- [[场景-审计-月底现金对账]] — 财务对账
- [[场景-审计-作废事由抽查]] — 第三种对账
## 异常分支
- 物理少了 → 内部排查
- 系统少了 → 找漏录单 / 补登记
- 多个月持续不一致 → **必查清** 不能拖