背景: 单纯按 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>
7.2 KiB
title, aliases, tags, audience, status, sub_feature, last_review, code_version
| title | aliases | tags | audience | status | sub_feature | last_review | code_version | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| prop-acc · adhoc · 场景 - 收据 - 小程序自助下载 PDF |
|
|
|
已发布 | adhoc | 2026-05-25 | 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 上的电子公章是预先嵌入模板的物业印章图像。与纸质收据法律效力相同,但部分公司财务可能要求另开纸质章 —— 取决于公司政策。
系统流程
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流-小程序下单+微信支付 — 收据生成的另一种触发
- 场景-收据-现场打印纸质收据 — 纸质替代方案
- 场景-收据-重打丢失收据 — 业务人员协助补打
异常分支
- 公司要纸质 → 走 场景-收据-现场打印纸质收据
- 信息错 → 场景-已收款作废 + 重做
- 想要发票 → 单独申请流程(超出本系统)