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:
Willie
2026-05-25 20:44:43 +08:00
parent 0032f32b7a
commit b7c0cd6e0c
40 changed files with 684 additions and 118 deletions

View File

@@ -0,0 +1,132 @@
---
title: prop-acc · 场景 - B 流 - 小程序下单 + 微信支付
aliases:
- 场景 - B 流 - 小程序下单 + 微信支付
- 场景-B流-小程序下单+微信支付
tags:
- 场景
- prop-acc
- 一次性收费
- 业务场景
- B流
audience:
- 业户
- 业务人员
status: 已发布
last_review: 2026-05-25
code_version: 2026-05-22
---
# 场景:小程序下单 + 微信支付
线上 B 流的标准路径。**业户自助、24h 可办、无需到柜台**。
> [!warning] 当前阶段
> 后端数据模型 + Action 已就绪(2026-05-21 落地)。**小程序 API + 支付网关回调 webhook 还在开发**。本场景描述的是上线后的完整体验。
## 典型情境
> [!example] 真实情境
> 小李,32 岁,周三晚上 9 点在家想给老婆买张游泳卡。物业前台早下班了,但他打开物业小程序,5 分钟搞定。
## 业户视角(您要做什么)
### 第 1 步:打开小程序
进入"我家 → 一次性收费"
### 第 2 步:选项目
页面上列出您能买的项目(IC 卡 / 装修证 / 泳票 / 充电桩电费 / ...)。点击"游泳卡"。
### 第 3 步:确认订单
- 项目:游泳卡(月卡)
- 单价:¥200
- 数量:1(可调)
- 金额:¥200
> [!info] 系统里发生了什么
> 您点"确认下单"后,系统**冻结当前价格**(以后涨价不影响您这单),给您一个订单号。
>
> 订单状态此刻:`Pending`(待付款),**30 分钟内有效**。
### 第 4 步:微信支付
跳转到微信支付页面,密码 / 指纹 / 扫脸付款。
### 第 5 步:小程序通知
支付成功后,小程序弹通知:**"已付款,可至前台领取游泳卡"** + 收据 PDF 自动生成,在"我的订单"里可下载。
> [!success] 完成
> 系统状态此刻:订单 `Completed`,收据 `Issued`,所有记录归档。
## 业务人员视角
> [!tip] 前台几乎不用操作
> 业户线上完成全部流程,**前台只需在业户来取货时核对订单号**:
>
> 1. 打开 Filament 后台 → 一次性收费
> 2. 搜业户的订单号(CO-xxx)
> 3. 确认状态是 Completed
> 4. 把游泳卡 / 物理凭证交给业户
不需要再录任何东西 —— **业户线上做完了所有数据录入**
## 系统流程(技术视角)
```mermaid
sequenceDiagram
participant 业户
participant 小程序
participant 系统
participant 微信支付
participant 监听器
业户->>小程序: 选游泳卡、确认下单
小程序->>系统: POST /api/ad-hoc-events
系统->>系统: CreatePendingAdHocEventAction
系统->>系统: 1. 建 AdHocEvent (Pending)
系统->>系统: 2. 建 CollectionOrder (Pending, expires_at=now+30min)
系统-->>小程序: 返回订单号 CO-xxx + 支付参数
小程序->>微信支付: 拉起支付
业户->>微信支付: 输入密码 / 指纹
微信支付->>系统: POST /webhook/wechat-pay
系统->>系统: MarkAdHocEventPaidAction
系统->>系统: 1. 补支付字段到 CO
系统->>系统: 2. 翻 CO → Completed
系统->>系统: 3. 翻 AdHocEvent → Completed
系统->>系统: 4. 清 expires_at
系统->>监听器: 触发 CollectionOrderCompleted
监听器->>系统: 建 Receipt + ReceiptItem
系统-->>小程序: 推通知 + 收据 PDF
小程序-->>业户: 弹"已付款,可来取货"
```
## 常见问题
> [!question] 我下完单忘记付怎么办?
> 30 分钟内没付,订单**自动作废**,价格也释放。您可以重新下单,**但价格按当前价**(以防您预定旧价、等到打折涨价才付)。详见 [[场景-超时未付自动作废]]。
> [!question] 付了钱小程序没显示成功怎么办?
> 微信支付有可能延迟回调(几秒到几分钟)。**别重复支付**!等几分钟再看小程序"我的订单"。若 10 分钟还没更新,联系物业,他们能后台手动核实。
> [!question] 我可以让我儿子帮我下单吗?
> 完全可以,而且您可以**不用儿子付钱** —— 让儿子帮您下完单,您拿订单号到前台付现金即可。详见 [[场景-跨渠道补缴]]。
> [!question] 想换支付方式?微信换支付宝?
> 同一笔订单不能换。如果还没付,在小程序"我的订单"里**撤单**,重新下一单选支付宝。
## 异常分支
- 想取消未付订单 → 场景-取消-业户改主意主动撤单(待补)
- 超时没付了 → [[场景-超时未付自动作废]]
- 跨渠道支付 → [[场景-跨渠道补缴]]
- 付了款发现订单数据错 → [[场景-已收款作废]]
## 相关概念
- [[概念-A流与B流]] — 为什么 B 流要"下单 + 支付"两步
- [[概念-CollectionOrder与Receipt]] — 订单和收据生成时机
- [[概念-AdHocEvent状态机]] — Pending → Completed 流转