tangweijie 82d307bda6 docs: 补齐 REV-005 发票闭环设计与任务台账
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-17 00:45:21 +08:00

66 lines
2.7 KiB
Markdown

# Contract: IF-REV-009 发票结果查询与客户侧消费接口
## 1. 合同定位
本合同用于固化 REV-005 一期发票结果查询、查询兜底补偿以及客户侧查看/下载/推送已开票电子发票的统一口径。
## 2. 适用范围
适用场景:
- 后台按申请单号 / 受理号查询发票最终状态
- 系统定时轮询 `SYS-008` 获取开票结果
- 客户侧查看已开具电子发票
- 客户侧下载、推送电子发票
不适用范围:
- 客户侧直接发起开票申请
- 发票作废 / 红冲全流程深度处理
## 3. 查询请求合同
| 字段 | 类型 | 必填 | 说明 | 约束 |
|------|------|------|------|------|
| applicationNo | String | 否 | 发票申请单号 | 与 `sysRequestNo` 二选一 |
| sysRequestNo | String | 否 | 外部受理号 | 与 `applicationNo` 二选一 |
| custId | Long | 否 | 客户 ID | 客户侧查询时使用 |
| querySource | String | 是 | 查询来源 | `SYSTEM_JOB` / `ADMIN` / `CUSTOMER` |
| pushEmail | String | 否 | 推送邮箱 | 客户侧推送时使用 |
## 4. 查询响应合同
| 字段 | 类型 | 说明 | 约束 |
|------|------|------|------|
| invoiceId | Long | 发票记录 ID | 对应 `biz_invoice.id` |
| applicationNo | String | 发票申请单号 | 幂等主键 |
| invoiceStatus | String | 发票状态 | `PENDING` / `SUCCESS` / `FAIL` / `INVALID` / `RED_INK` |
| invoiceCode | String | 发票代码 | 成功后返回 |
| invoiceNumber | String | 发票号码 | 成功后返回 |
| fileUrl | String | 电子票下载地址 | 成功后返回 |
| failReason | String | 失败原因 | 失败时返回 |
| pushStatus | String | 推送状态 | `NONE` / `PUSHED` / `FAIL` |
| lastQueryTime | DateTime | 最近查询时间 | 用于补偿追踪 |
## 5. 共性规则
1. 查询兜底是开票结果获取的必备路径,不可省略。
2. 已成功开票状态不得被后续失败结果覆盖。
3. 客户侧只允许查询、下载、推送属于当前客户的已开票电子发票。
4. 下载/推送前必须校验发票状态为 `SUCCESS` 且存在 `fileUrl`
5. 查询补偿任务需记录 `lastTryTime``nextTryTime``tryCount` 等信息。
## 6. 物理承接口径
| 逻辑对象 | 物理承接 |
|---------|----------|
| 发票结果主对象 | `biz_invoice` |
| 客户查询身份与资料 | `biz_cust_invoice` |
| 查询补偿与结果留痕 | `biz_invoice` 扩展字段 + `biz_operat_log*` |
| 账单发票摘要展示 | `biz_charge*` + 历史关系快照 |
## 7. 验收关注点
- 是否支持后台按申请单号 / 受理号查询结果
- 是否支持系统任务轮询补偿
- 是否支持客户侧查看、下载、推送已开票电子发票
- 是否避免客户侧越权查询和重复推送