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>
205 lines
7.2 KiB
Markdown
205 lines
7.2 KiB
Markdown
---
|
||
title: prop-acc · 场景 - 收据 - 小程序自助下载 PDF
|
||
aliases:
|
||
- 场景 - 收据 - 小程序自助下载 PDF
|
||
- 场景-收据-小程序自助下载PDF
|
||
tags:
|
||
- 场景
|
||
- prop-acc
|
||
- 一次性收费
|
||
- 业务场景
|
||
- 收据凭证
|
||
audience:
|
||
- 业户
|
||
status: 已发布
|
||
last_review: 2026-05-25
|
||
code_version: 2026-05-22
|
||
---
|
||
|
||
# 场景:小程序自助下载 PDF 收据
|
||
|
||
业户在小程序里**自己下载电子收据**。无需联系物业,24h 自助。
|
||
|
||
> [!success] 推荐路径
|
||
> 这是最方便的收据获取方式。任何时候、任何手机、任何业户都能自助操作。
|
||
|
||
## 典型情境
|
||
|
||
> [!example] 真实情境
|
||
> 周三晚上 10 点,陈太太需要把上个月在物业买充电桩电费的收据 PDF 发给公司财务报销。她不想等明天物业上班,**直接在小程序里下载**。
|
||
|
||
## 业户视角
|
||
|
||
### 第 1 步:打开小程序
|
||
|
||
进入"我家 → 我的订单"
|
||
|
||
### 第 2 步:找到目标订单
|
||
|
||
在"已完成"列表里找:
|
||
|
||
```
|
||
我的订单 → 已完成
|
||
├── 游泳卡 × 2 ¥40 2026-05-20
|
||
│ 订单号 CO-20260520-XXX
|
||
│ [查看详情] [📥下载收据]
|
||
│
|
||
├── 充电桩电费 ¥200 2026-05-15 ← 这一笔
|
||
│ 订单号 CO-20260515-YYY
|
||
│ [查看详情] [📥下载收据]
|
||
│
|
||
└── ...
|
||
```
|
||
|
||
### 第 3 步:点"下载收据"
|
||
|
||
```
|
||
正在生成 PDF...
|
||
✅ 收据已生成
|
||
[在微信中打开] [保存到手机]
|
||
```
|
||
|
||
### 第 4 步:转发给财务
|
||
|
||
- **转发到微信好友**(公司财务)
|
||
- **保存到手机相册**(图片格式更通用)
|
||
- **保存到微信文件**(后续打开还能用)
|
||
- **打印** —— 微信里支持调用蓝牙打印机
|
||
|
||
> [!success] 完成
|
||
> 全程 1 分钟,无需任何外部协助。
|
||
|
||
## 您能下载的所有收据
|
||
|
||
> [!info] 全部历史
|
||
> 小程序"已完成"列表展示**该业户的所有历史订单**,无时间限制。理论上 5 年前的订单还能下载收据。
|
||
|
||
如果列表太多,可以筛选:
|
||
- 按时间(月 / 季 / 年)
|
||
- 按项目类型(IC 卡 / 装修证 / 泳票 / 充电桩)
|
||
- 按金额范围
|
||
|
||
## PDF 收据长什么样?
|
||
|
||
```
|
||
┌─────────────────────────────────────┐
|
||
│ 鸿基物业管理有限公司 │
|
||
│ 收 据 │
|
||
│ │
|
||
│ 收据号:R-20260515-XXX │
|
||
│ 日期:2026-05-15 14:30 │
|
||
│ ───────────────────────────────── │
|
||
│ 收款方:鸿基物业管理有限公司 │
|
||
│ 付款方:陈XX(房号 12-3-501) │
|
||
│ ───────────────────────────────── │
|
||
│ 项目 数量 金额 │
|
||
│ ───────────────────────────────── │
|
||
│ 充电桩电费充值 1 ¥200.00 │
|
||
│ ───────────────────────────────── │
|
||
│ 合计 ¥200.00 │
|
||
│ │
|
||
│ 支付方式:微信支付 │
|
||
│ 支付时间:2026-05-15 14:30:25 │
|
||
│ 订单号:CO-20260515-YYY │
|
||
│ │
|
||
│ [电子公章] │
|
||
└─────────────────────────────────────┘
|
||
```
|
||
|
||
> [!info] 关于电子公章
|
||
> PDF 上的电子公章是**预先嵌入模板**的物业印章图像。**与纸质收据法律效力相同**,但部分公司财务可能要求另开纸质章 —— 取决于公司政策。
|
||
|
||
## 系统流程
|
||
|
||
```mermaid
|
||
sequenceDiagram
|
||
participant 业户
|
||
participant 小程序
|
||
participant 系统
|
||
participant PDF生成器
|
||
|
||
业户->>小程序: 点击"下载收据"
|
||
小程序->>系统: GET /receipts/{id}/pdf
|
||
系统->>系统: 查 Receipt 数据
|
||
alt 收据状态正常
|
||
系统->>PDF生成器: 渲染 PDF
|
||
PDF生成器-->>系统: PDF 流
|
||
系统-->>小程序: 返回 PDF
|
||
小程序-->>业户: 显示"在微信中打开"
|
||
else 收据已作废
|
||
系统-->>小程序: 返回 PDF (含"已作废"水印)
|
||
小程序-->>业户: 显示带水印的 PDF
|
||
end
|
||
```
|
||
|
||
> [!info] 重新下载多少次都不影响
|
||
> 每次下载都是从数据库**实时生成 PDF**,不修改任何数据。下载 100 次和下载 1 次效果一样。
|
||
|
||
## 几种特殊情况
|
||
|
||
### 1. 收据已被作废
|
||
|
||
如果订单走过 [[场景-已收款作废]]:
|
||
|
||
- PDF 上会加 **"已作废" 红色水印**
|
||
- 业户依然能下载,作为"作废存档"
|
||
- **不能拿这张报销**(财务会看出水印)
|
||
|
||
### 2. 业户的微信换了手机
|
||
|
||
> [!question] 换手机后还能看到历史订单吗?
|
||
> **能**。订单关联**业户档案**(身份证 / 手机号),不绑定具体设备。新手机登录同一微信即可。
|
||
|
||
### 3. 业户换了手机号
|
||
|
||
> [!warning] 这种情况要联系物业
|
||
> 业户手机号变了 → **小程序登录账号变了**。需要物业**人工绑定新手机号**到原业户档案。否则新账号看不到旧订单。
|
||
|
||
### 4. 已经离开小区的前业户
|
||
|
||
> [!info] 还能下载
|
||
> 即使业户**搬走了**(`CommunityUserProfile.status = inactive`),只要数据没删,小程序里依然能看历史订单。**收据是历史凭证,不应该因离开而消失**。
|
||
|
||
## 常见问题
|
||
|
||
> [!question] 我能批量下载多张收据吗?
|
||
> 当前**一次只能下一张**。如果你要把一整年的收据打包下载(报销季),可以联系物业:
|
||
> - 物业可在 Filament 后台**导出某业户所有订单的 Excel**
|
||
> - 部分物业有"年度账单 PDF"功能(待补)
|
||
|
||
> [!question] PDF 文件多大?
|
||
> 通常 50-150 KB。微信里直接打开预览,不占流量。
|
||
|
||
> [!question] PDF 能修改吗?
|
||
> **不能**(无密码,但 PDF 本身不可编辑)。如果想加密 / 防伪,需要技术升级(挂 TODO)。
|
||
|
||
> [!question] 我的收据上信息错了(房号错)怎么办?
|
||
> 走 [[场景-已收款作废]] + 重做。重做时收据信息自动正确。**不能直接改 PDF**(也不能改数据库 Receipt 记录,违反审计完整性)。
|
||
|
||
> [!question] 收据上的电子公章会不会过期?
|
||
> 不会。电子公章是 PDF 图像,长期有效。
|
||
|
||
## 与现场打印的对照
|
||
|
||
| 维度 | 现场打印纸质收据 | 小程序下载 PDF(本场景) |
|
||
|---|---|---|
|
||
| 时机 | 仅前台营业时间 | **24h 自助** |
|
||
| 形态 | 纸质 + 物理章 | PDF + 电子章 |
|
||
| 适用 | 严格的财务 / 老人 | 大多数业户 |
|
||
| 物业人力 | 需要 | 完全不需要 |
|
||
| 报销 | 大多数公司认可 | 取决于公司政策 |
|
||
|
||
## 相关概念
|
||
|
||
- [[概念-CollectionOrder与Receipt]] — Receipt 表
|
||
- [[场景-A流-前台购买IC卡]] — 收据生成的原始流程
|
||
- [[场景-B流-小程序下单+微信支付]] — 收据生成的另一种触发
|
||
- [[场景-收据-现场打印纸质收据]] — 纸质替代方案
|
||
- [[场景-收据-重打丢失收据]] — 业务人员协助补打
|
||
|
||
## 异常分支
|
||
|
||
- 公司要纸质 → 走 [[场景-收据-现场打印纸质收据]]
|
||
- 信息错 → [[场景-已收款作废]] + 重做
|
||
- 想要发票 → 单独申请流程(超出本系统)
|