186 lines
12 KiB
Markdown
186 lines
12 KiB
Markdown
# Implementation Plan: REV-005 发票业务流实现
|
||
|
||
**Branch**: `002-rev005-invoice-flow` | **Date**: 2026-03-16 | **Spec**: `/specs/002-rev005-invoice-flow/spec.md`
|
||
**Input**: Feature specification from `/specs/002-rev005-invoice-flow/spec.md`
|
||
|
||
## Summary
|
||
|
||
本轮围绕 `REV-005` 发票业务流补齐从已收费账单到电子发票结果落账的业务闭环,形成可直接指导 backend 实施与正式文档修订的 planning 产物。计划目标是在既有 `biz_invoice`、`biz_cust_invoice`、`biz_invoice_taxrate` 基础上,明确发票申请、后台批量/单笔开票、`SYS-008` 异步协同与查询兜底、结果回写、账单-发票关联、客户侧查询下载推送的实现口径。
|
||
|
||
本次计划输出以 spec 澄清结果为准:一期采用“后台开票 + 客户侧查询下载”模式;`SYS-008` 对接采用“异步申请 + 轮询查询兜底”;不支持原始单账单直接任意部分金额开票,如需多张发票沿用老系统拆账/分账后的账单分别开票;正式主文档需回写 `12_REV_Detailed.md`、`03_Interface_Design.md` 与 `01_Database_Design.md`,backend 侧则在现有 `InvoiceController.java`、`InvoiceServiceImpl.java` 基础上扩展业务接口与服务能力。
|
||
|
||
## Technical Context
|
||
|
||
**Primary Work Product**: REV-005 planning 设计产物,包括实施计划、研究结论、数据模型、接口合同与最小校验说明。
|
||
**Source of Truth Documents**:
|
||
- `specs/002-rev005-invoice-flow/spec.md`
|
||
- `.specify/memory/constitution.md`
|
||
- `docs/design/02_Detailed_Design/12_REV_Detailed.md`
|
||
- `docs/design/03_Technical_Design/03_Interface_Design.md`
|
||
- `docs/design/03_Technical_Design/01_Database_Design.md`
|
||
**Reference Sources**:
|
||
- `docs/guides/BACKEND_CURRENT_STATUS.md`
|
||
- `docs/guides/BACKEND_TABLE_MAPPING.md`
|
||
- `docs/design/04_Appendix/Archive/02_Manuals/营收系统_用户操作手册.md`
|
||
- `docs/design/04_Appendix/Archive/02_Manuals/福建水投微网厅操作手册.md`
|
||
- `docs/design/04_Appendix/Archive/03_Design_Docs/营业收费管理系统-概要设计说明书20250912.md`
|
||
- `docs/design/04_Appendix/Archive/05_Data_Dictionary/营收数据字典.md`
|
||
- `backend/sw-business/sw-business-server/src/main/java/cn/com/emsoft/sw/business/controller/admin/invoice/InvoiceController.java`
|
||
- `backend/sw-business/sw-business-server/src/main/java/cn/com/emsoft/sw/business/service/invoice/InvoiceServiceImpl.java`
|
||
**Validation Commands**:
|
||
- `make validate-file FILE=docs/design/02_Detailed_Design/12_REV_Detailed.md`
|
||
- `make validate-file FILE=docs/design/03_Technical_Design/03_Interface_Design.md`
|
||
- `make validate-file FILE=docs/design/03_Technical_Design/01_Database_Design.md`
|
||
- `make check-links`
|
||
- `make validate-mermaid`
|
||
**Target Scope**:
|
||
- `REV-005` 正式详细设计补充
|
||
- `IF-REV-008`(后台发票申请/开具)与 `IF-CS-004`(客户侧查询下载)口径收敛
|
||
- 新增 `IF-REV-009` 发票结果查询/补偿查询口径
|
||
- `biz_invoice*`、`biz_cust_invoice`、账单-发票关联与历史关系快照的承接口径
|
||
- backend 发票业务 Service/Controller 扩展边界
|
||
**Project Type**: 文档治理仓库(同时为 backend 实施提供 planning 输入)
|
||
**Constraints**:
|
||
- 不新增平行正式主稿
|
||
- 不发明超出主文档与老系统交集的新业务规则
|
||
- Archive 仅作核对与追溯来源,不替代正式结论
|
||
- 一期默认后台开票,客户侧不直接申请开票
|
||
- 一期不支持原始单账单直接任意部分金额开票
|
||
- `SYS-008` 结果获取采用查询兜底,不假设回调可用
|
||
- 本轮 implement 先完成正常开票闭环收口,再在二期补齐作废/红冲的正式文档、backend 入口、状态流转与结果落账
|
||
- 仓库内引用保持相对路径口径
|
||
**Scale/Scope**: 跨文档 + backend 实施 planning,覆盖 1 个 feature spec、1 个 implementation plan、1 份 research、1 份 data-model、2 份 contracts、1 份 quickstart,并为后续 tasks/implement 提供输入。
|
||
|
||
## Constitution Check
|
||
|
||
*GATE: Must pass before Phase 0 research. Re-check after Phase 1 design.*
|
||
|
||
- [x] **主文档归属已确认**:本轮 planning 产物落在 `specs/002-rev005-invoice-flow/`,正式口径将回写既有 `12_REV_Detailed.md`、`03_Interface_Design.md`、`01_Database_Design.md`,不新增平行正式稿。
|
||
- [x] **范围基线已确认**:`REV-005` 在 `12_REV_Detailed.md`、`03_Interface_Design.md`、旧系统操作手册、数据字典中均有明确发票管理/电子发票交集口径,可直接推进;原始单账单任意部分开票未作为一期主能力纳入。
|
||
- [x] **Archive 使用方式合规**:Archive 仅作为老系统能力、字段与菜单口径来源,正式结论仍以当前主文档与 spec 澄清结果为准。
|
||
- [x] **一致性影响已列出**:已识别 `IF-REV-008` / `IF-CS-004` / 发票查询补偿接口编号、`biz_invoice*` 承接口径、旧“回调”改为“查询兜底”、后台/客户侧入口边界等一致性项。
|
||
- [x] **校验与台账动作已规划**:已明确正式文档最小校验命令;plan 阶段仅生成 planning 产物,不强制更新 `01_Project_Progress.md` / `03_Task_Checklist.md`,待正式主文档修订或任务闭环后再回写。
|
||
|
||
### Post-Design Re-check
|
||
|
||
- [x] 设计产物保持“主文档修订 + backend 实施 planning”定位,没有绕开单一真源另写平行正式稿。
|
||
- [x] `data-model.md` 采用逻辑实体 + 现有物理承接 + 历史关系快照三层表达,没有把旧系统全部细表表述为当前已落地在线表。
|
||
- [x] `contracts/` 中接口合同统一回扣后台开票、客户侧查询下载、`SYS-008` 查询兜底与幂等回写口径。
|
||
- [x] `quickstart.md` 仅定义评审入口、最小校验与 backend 验证建议,不引入超范围部署/发布动作。
|
||
- [x] 结果获取方式统一为“异步申请 + 查询兜底”,不再保留与航信接口事实冲突的“直接回调”口径。
|
||
|
||
## Project Structure
|
||
|
||
### Documentation (this feature)
|
||
|
||
```text
|
||
specs/002-rev005-invoice-flow/
|
||
├── plan.md
|
||
├── research.md
|
||
├── data-model.md
|
||
├── quickstart.md
|
||
├── contracts/
|
||
│ ├── if-rev-008-invoice-application.md
|
||
│ └── if-rev-009-invoice-query.md
|
||
└── tasks.md
|
||
```
|
||
|
||
### Repository Touchpoints
|
||
|
||
```text
|
||
docs/design/
|
||
├── 00_Management/
|
||
│ ├── 01_Project_Progress.md
|
||
│ ├── 02_Delivery_Standards.md
|
||
│ └── 03_Task_Checklist.md
|
||
├── 02_Detailed_Design/
|
||
│ └── 12_REV_Detailed.md
|
||
├── 03_Technical_Design/
|
||
│ ├── 01_Database_Design.md
|
||
│ └── 03_Interface_Design.md
|
||
└── 04_Appendix/Archive/
|
||
|
||
backend/sw-business/sw-business-server/
|
||
├── src/main/java/cn/com/emsoft/sw/business/controller/admin/invoice/InvoiceController.java
|
||
└── src/main/java/cn/com/emsoft/sw/business/service/invoice/InvoiceServiceImpl.java
|
||
```
|
||
|
||
**Structure Decision**:
|
||
- `specs/002-rev005-invoice-flow/spec.md`:作为 REV-005 范围、澄清结果与验收边界总源。
|
||
- `specs/002-rev005-invoice-flow/plan.md`:承接当前计划阶段的实施组织、门禁与结构决策。
|
||
- `specs/002-rev005-invoice-flow/research.md`:沉淀异步查询兜底、后台/客户侧边界、老系统对齐与物理承接口径等关键选择。
|
||
- `specs/002-rev005-invoice-flow/data-model.md`:固化发票申请、发票记录、账单发票关联、查询补偿与结果回写对象。
|
||
- `specs/002-rev005-invoice-flow/contracts/if-rev-008-invoice-application.md`:统一后台发票申请/批量开票合同。
|
||
- `specs/002-rev005-invoice-flow/contracts/if-rev-009-invoice-query.md`:统一查询兜底、结果查询与客户侧查询下载合同。
|
||
- `specs/002-rev005-invoice-flow/quickstart.md`:提供文档评审、最小校验与 backend 验证入口。
|
||
- `docs/design/02_Detailed_Design/12_REV_Detailed.md`:后续正式补充 REV-005 业务规则、状态流转和旧系统对齐说明。
|
||
- `docs/design/03_Technical_Design/03_Interface_Design.md`:后续正式补充 `IF-REV-008`、`IF-REV-009` 与客户侧查询下载口径。
|
||
- `docs/design/03_Technical_Design/01_Database_Design.md`:后续正式补充 `biz_invoice*`、账单-发票关联快照与历史关系承接口径。
|
||
- `InvoiceController.java` / `InvoiceServiceImpl.java`:后续实现阶段扩展后台申请、查询、回写与批量开票能力,不再仅限配置 CRUD。
|
||
|
||
## Phase 0 Research Summary
|
||
|
||
1. 一期采用“后台开票 + 客户侧查询下载推送”的入口策略,后台营业收费员/财务人员负责申请和开具,客户侧不直接发起开票申请。
|
||
2. `SYS-008` 对接采用“异步申请 + 轮询查询兜底”模式,适配航信等不提供稳定回调的开票服务现状。
|
||
3. 一期不支持原始单账单直接任意部分金额开票;如需多张发票,沿用老系统拆账/分账后分别开票的口径,并保留批量开票能力。
|
||
4. 当前 backend 已有 `InvoiceController.java`、`InvoiceServiceImpl.java`,但实际只覆盖开票配置/模板 CRUD,未实现发票申请、查询、回写、账单关联闭环。
|
||
5. 在线主模型以 `biz_invoice`、`biz_invoice_taxrate`、`biz_cust_invoice` 为主承接,旧“营业账开票表/发票明细表/开票配置快照”按历史关系快照或辅助映射处理,不机械复制旧表族。
|
||
6. 正式文档应同时对齐当前主文档、旧系统操作手册与数据字典,避免只保留“申请 + 回写”而遗漏老系统已有的查询、下载、批量开票与结果导出语义。
|
||
|
||
## Phase 1 Design Outputs
|
||
|
||
### Data Model
|
||
- `data-model.md` 已定义:
|
||
- `InvoiceApplication`
|
||
- `InvoiceRecord`
|
||
- `ChargeInvoiceRelation`
|
||
- `InvoiceQueryTask`
|
||
- `InvoiceResultWriteBack`
|
||
- 其中明确区分逻辑实体、现有在线主表承接与历史关系快照,兼容后续合并开票/拆账开票扩展。
|
||
|
||
### Contracts
|
||
- `contracts/if-rev-008-invoice-application.md`
|
||
- 固化后台发票申请/批量开票的请求字段、响应字段、校验规则与幂等口径。
|
||
- `contracts/if-rev-009-invoice-query.md`
|
||
- 固化查询兜底、结果补偿查询、客户侧查询下载的请求/响应与状态表达。
|
||
|
||
### Quickstart
|
||
- `quickstart.md` 已给出:
|
||
- 范围校验
|
||
- 老系统对齐校验
|
||
- 文档最小校验命令
|
||
- backend 实施前的现状核对点
|
||
- 后续 tasks/implement 的最小验收入口
|
||
|
||
### Agent Context
|
||
- 仓库内未找到 `.specify/scripts/**/update-agent-context.sh`;本轮不执行自动 agent context 更新脚本。
|
||
- 后续若补齐该脚本,可按仓库统一约定再执行一次上下文同步。
|
||
|
||
## Implementation Strategy for Next Phase
|
||
|
||
下一阶段 `/speckit.tasks` 应按以下顺序拆解:
|
||
|
||
1. **正式文档收敛任务**
|
||
- 更新 `12_REV_Detailed.md` 中 REV-005 场景、状态机、入口边界、老系统对齐说明
|
||
- 更新 `03_Interface_Design.md` 中 `IF-REV-008`、`IF-REV-009` 与客户侧查询下载口径
|
||
- 更新 `01_Database_Design.md` 中 `biz_invoice*`、账单-发票关联快照和查询补偿字段说明
|
||
2. **backend 基础扩展任务**
|
||
- 为现有 `InvoiceController.java` / `InvoiceServiceImpl.java` 增加后台申请、查询、结果写回、批量开票能力
|
||
- 增加与账单、客户开票信息、税率配置的校验联动
|
||
3. **`SYS-008` 协同与补偿任务**
|
||
- 发票申请协同调用
|
||
- 查询兜底任务与幂等回写
|
||
- 失败原因与异常核查留痕
|
||
4. **客户侧结果消费任务**
|
||
- 查询已开发票状态
|
||
- 下载/推送电子发票
|
||
- 与后台开票状态保持一致
|
||
5. **校验与闭环任务**
|
||
- 文档 `make validate-file` / `make check-links` / `make validate-mermaid`
|
||
- backend 核心流程验证
|
||
- 必要时回写 `01_Project_Progress.md` 与 `03_Task_Checklist.md`
|
||
|
||
## Complexity Tracking
|
||
|
||
本计划未发生 Constitution 违规项,无需豁免说明。
|