qmj 4 дней назад
Родитель
Сommit
769c71a48a
2 измененных файлов с 16 добавлено и 0 удалено
  1. 0 0
      .claude/homunculus/observations.jsonl
  2. 16 0
      specs/010-order-invoice/spec.md

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
.claude/homunculus/observations.jsonl


+ 16 - 0
specs/010-order-invoice/spec.md

@@ -200,3 +200,19 @@
 - **FR-021**: 货到付款出餐照开;订单取消(state→4)→ 作废发票(复用 invalid)。
 - **FR-022**: 会员发票夹——按 user_id 列出发票;纸本只展示结构化信息,不返回码图、无补打。
 - **FR-023**: 发票信息双入口——结账时设 + 「我的发票抬头」管理(复用 014 `info_invoice`);`info_invoice` 加「是否默认」标记;默认/常用只对载具与统编抬头生效,捐赠不存。
+
+## 演进:会员载具入结账 (2026-07-30)
+
+> 业务把会员载具(载具类型 2)做上结账选项。载具号=会员手机号(结账零输入,出餐时取 `InfoUser.phone`),**不收 BuyerEmail**(业务方确认 ezPay 接受手机号作 type=2 载具值;BuyerEmail 仅用于 ezPay 发开立通知邮件,会员载具不要通知故不收)。会员载具属一般性/营业人载具,PrintFlag=N、不返回码值,客户去财政部全民稽核查(法规与载具概念见记忆 tw-einvoice-concepts)。
+
+### 增量改动(后端,已实现 2026-07-30)
+- `invoiceChoice` 枚举新增 `MEMBER`(原 PAPER/PHONE_BARCODE/CITIZEN/LOVE_CODE/COMPANY)。
+- 结账校验 `validateCheckoutInvoiceIntent`:MEMBER 免联网验真、免格式校验(载具号非客户输入)。
+- 捕获 `createOrder`:MEMBER → `carrierType=2` 落意图行。
+- 出餐自动开 `buildAutoIssueDto` + `autoIssue`:MEMBER → category=B2C、carrierType=2、载具号=会员手机号(`InfoUser.phone`)、BuyerName=手机号;同步落库载具信息。
+- `validateInvoiceInput`:去掉 type=2 必填邮箱(applyInvoice 补开链路同步对齐)。
+- `saveDefaultInvoiceProfile`:MEMBER 不存抬头(=手机号,无需记忆)。
+- **不需 SQL**(invoiceChoice/carrierType/carrierNum 字段已存在)。
+
+### 待办
+- 客户点餐 app(独立仓库,非 foodie_server)结账发票选择器加「会员载具」选项 + 4 份 i18n(zh/tw/en/vi);仓库路径待确认。

Некоторые файлы не были показаны из-за большого количества измененных файлов