P3+P4+P5: prop-acc 迁移到多域 UDAS,新建 4 域骨架与顶层入口
P3 — prop-acc 30 文件迁移到多域 UDAS 结构:
- 3 概念:旧 prop-acc/一次性收费/概念-*.md
→ prop-acc/concepts/adhoc-*.md (kebab-case 英文)
- 25 场景:旧 prop-acc/一次性收费/场景-*.md
→ prop-acc/scenarios/adhoc-*.md
- 子文件夹 index.md → prop-acc/maps/knowledge-map.md (域内地图)
- prop-acc/index.md 重写为域首页(embed knowledge-map)
- 删除空目录 prop-acc/一次性收费/
每个迁移文件:
- title 加域前缀 "prop-acc · "
- aliases 含原 title (带空格) + 原文件名 basename (无空格),保证既有 [[...]] 引用解析
- status: stable → 已发布 / draft → 草稿 (UDAS 中文枚举)
- last_reviewed → last_review (UDAS 字段名)
- tags 补加 UDAS 类型分类 "概念" / "场景"
- 路径式 WikiLink 清除:
* [[../预存款/index|XX]] → [[预存款]]
* [[一次性收费/index|XX]] → [[prop-acc · 一次性收费索引]]
P4 — 4 个新业务域骨架:
- community (社区管理)
- administrative (行政人事)
- patrol (巡护工单)
- resident-portal (业户门户)
每域含 index.md (域首页) + maps/knowledge-map.md (域内地图模板)。
另补 cross/index.md + cross/maps/cross-domain-map.md。
P5 — 顶层入口:
- index.md: 站点首页 (Quartz 着陆点),embed domain-map
- maps/domain-map.md: 5 业务域 + cross 的索引表
迁移后状态:
- 共 50 篇 .md (30 原 + 8 跨域 stub + 4 域 index + 4 域 map + 2 cross + 2 root)
- 残留路径式 WikiLink: 0
- 残留英文 status: 0
- 残留 last_reviewed 字段: 0
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
158
prop-acc/scenarios/adhoc-receipt-reprint-lost.md
Normal file
158
prop-acc/scenarios/adhoc-receipt-reprint-lost.md
Normal file
@@ -0,0 +1,158 @@
|
||||
---
|
||||
title: prop-acc · 场景 - 收据 - 重打丢失收据
|
||||
aliases:
|
||||
- 场景 - 收据 - 重打丢失收据
|
||||
- 场景-收据-重打丢失收据
|
||||
tags:
|
||||
- 场景
|
||||
- prop-acc
|
||||
- 一次性收费
|
||||
- 业务场景
|
||||
- 收据凭证
|
||||
audience:
|
||||
- 业户
|
||||
- 业务人员
|
||||
status: 已发布
|
||||
last_review: 2026-05-25
|
||||
code_version: 2026-05-22
|
||||
---
|
||||
|
||||
# 场景:重打丢失收据
|
||||
|
||||
业户**事后说收据丢了**,要求物业**补打或重发**。
|
||||
|
||||
> [!success] 系统已支持
|
||||
> 后端已有 PDF 下载路由(`packages/prop-acc/routes/tenant.php`)。本场景描述前台 + 业户的两种重打路径。
|
||||
|
||||
## 典型情境
|
||||
|
||||
> [!example] 真实情境
|
||||
> 张阿姨 3 个月前买了张 IC 卡 ¥30,需要找物业开发票报销公司。当时拿的是纸质收据,现在找不到了。来物业问:"能不能再打一份给我?"
|
||||
|
||||
## 业户视角
|
||||
|
||||
### 路径 A:业户自己在小程序下载
|
||||
|
||||
> [!tip] 推荐这个最方便
|
||||
> 业户**自助操作**,不用麻烦前台。
|
||||
|
||||
1. 打开小程序 → 我家 → 我的订单
|
||||
2. 在"已完成"列表找到那笔订单
|
||||
3. 点订单详情 → 右上角 [下载收据]
|
||||
4. PDF 自动下载,微信里可保存/分享
|
||||
|
||||
### 路径 B:让前台职员帮忙
|
||||
|
||||
业户不会用小程序时:
|
||||
|
||||
1. 到物业前台
|
||||
2. "我 3 月份买的 IC 卡,收据丢了,能不能再给我一份?"
|
||||
3. 报房号 / 大致日期 / 订单号(如果记得)
|
||||
4. 职员搜系统、重新打印 / 发微信
|
||||
|
||||
## 业务人员视角
|
||||
|
||||
### 操作步骤
|
||||
|
||||
```
|
||||
1. 打开 Filament 后台 → 一次性收费
|
||||
2. 搜业户(按房号、日期、订单号)
|
||||
3. 找到目标订单,点击进入详情
|
||||
4. 找到关联的 Receipt
|
||||
5. 点"下载 PDF"或"打印"按钮
|
||||
6. 把 PDF 发到业户微信,或纸质打印当场给
|
||||
```
|
||||
|
||||
### 重要:**不要新建一笔订单**
|
||||
|
||||
> [!warning] 关键
|
||||
> 不要因为业户说"收据丢了"就**重新录一笔订单** —— 这会变成系统里**多了一笔不存在的交易**,财务多收一份钱。
|
||||
>
|
||||
> **正确做法**:用原订单**重新生成一份 PDF**。原 Receipt 不变(状态仍是 Issued),只是文档**被重新渲染**。
|
||||
|
||||
### 收据号会变吗?
|
||||
|
||||
**不会**。重打的收据**收据号、金额、日期** 全部和原始收据一样。这是"重打",不是"新开"。
|
||||
|
||||
## 系统流程
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant 业户
|
||||
participant 前台/小程序
|
||||
participant 系统
|
||||
participant PDF生成器
|
||||
|
||||
业户->>前台/小程序: 我要补一份收据
|
||||
前台/小程序->>系统: GET /receipts/{id}/pdf
|
||||
系统->>系统: 找到 Receipt 数据
|
||||
系统->>PDF生成器: 渲染收据 PDF
|
||||
PDF生成器-->>系统: PDF 二进制流
|
||||
系统-->>前台/小程序: 返回 PDF
|
||||
前台/小程序-->>业户: 下载/打印
|
||||
```
|
||||
|
||||
> [!info] 系统里发生了什么
|
||||
> - Receipt 表**没有任何写操作**(没改也没新增)
|
||||
> - 只是用现存数据**重新生成 PDF**
|
||||
> - 重打多少次都不会影响财务记录
|
||||
|
||||
## 几种特殊情况
|
||||
|
||||
### 业户的订单已被作废
|
||||
|
||||
如果业户找到的订单是 **Voided 状态**(走过作废流程):
|
||||
|
||||
```
|
||||
Filament 后台显示:
|
||||
├── Receipt 状态:Voided
|
||||
├── PDF 上会有水印 / 字样:"已作废"
|
||||
└── 业户拿这张是"作废凭证",不是有效收据
|
||||
```
|
||||
|
||||
> [!warning] 业户可能会问"作废凭证能报销吗?"
|
||||
> 不能(财务上这笔交易不存在了)。要重新报销,需要重新交易 + 拿新收据。
|
||||
|
||||
### 业户记不清是什么时候买的
|
||||
|
||||
```
|
||||
1. 让业户回忆大致月份 / 商品类型
|
||||
2. Filament 后台用业户 ID + 商品类型筛选
|
||||
3. 列出该业户**所有历史订单**让业户认领
|
||||
```
|
||||
|
||||
### 业户要发票而不是收据
|
||||
|
||||
> [!info] 收据 ≠ 发票
|
||||
> - **收据**:系统自动生成,证明"我付了钱"
|
||||
> - **发票**:税务凭证,需要走**开票流程**(国税局接口)
|
||||
>
|
||||
> 一次性收费当前**只生成收据**,不开发票。业户要发票需要走单独的发票申请流程(超出本系统范围)。
|
||||
|
||||
## 常见问题
|
||||
|
||||
> [!question] 业户说"前台给的收据上日期是错的"?
|
||||
> 收据日期 = 订单的 `collection_completed_at`(收款完成时间)。如果业户付款时间和系统时间不一致(罕见),需要技术排查时间同步问题。**业务上可以加备注说明**。
|
||||
|
||||
> [!question] PDF 能不能加密 / 防伪?
|
||||
> 当前未实现。如果有需要(防业户 PS),可以在 PDF 加二维码 + 收据号哈希,业户扫码到物业小程序验真。**等业务方反馈再做**。
|
||||
|
||||
> [!question] 重打的次数有限制吗?
|
||||
> 没限制。每次重打都从数据库实时生成,**不影响其他数据**。
|
||||
|
||||
> [!question] 业户能查到所有历史收据吗?
|
||||
> 在小程序"我的订单"里能看到**所有自己的订单**(无时间限制)。每笔订单都能重新下载收据。
|
||||
|
||||
> [!question] 业务人员能帮业户**删掉**一笔订单 / 收据吗?
|
||||
> **不能**。Delete 入口在前台已经移除(详见 [[概念-AdHocEvent状态机]])。如果业户希望"这笔订单不存在",走 [[场景-已收款作废]] 即可 —— Receipt 状态翻 Voided 但记录仍在,方便审计。
|
||||
|
||||
## 相关概念
|
||||
|
||||
- [[概念-CollectionOrder与Receipt]] — Receipt 是只生成不可改的凭证
|
||||
- [[场景-A流-前台购买IC卡]] — 原始收据生成
|
||||
- [[场景-已收款作废]] — 作废后的收据状态
|
||||
|
||||
## 异常分支
|
||||
|
||||
- 收据上信息错(房号串错) → 走 [[场景-已收款作废]] + 重做
|
||||
- 业户要的不是收据是发票 → 单独发票申请流程(超出本系统)
|
||||
Reference in New Issue
Block a user