12 KiB
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.mddocs/design/02_Detailed_Design/12_REV_Detailed.mddocs/design/03_Technical_Design/03_Interface_Design.mddocs/design/03_Technical_Design/01_Database_Design.mdReference Sources:docs/guides/BACKEND_CURRENT_STATUS.mddocs/guides/BACKEND_TABLE_MAPPING.mddocs/design/04_Appendix/Archive/02_Manuals/营收系统_用户操作手册.mddocs/design/04_Appendix/Archive/02_Manuals/福建水投微网厅操作手册.mddocs/design/04_Appendix/Archive/03_Design_Docs/营业收费管理系统-概要设计说明书20250912.mddocs/design/04_Appendix/Archive/05_Data_Dictionary/营收数据字典.mdbackend/sw-business/sw-business-server/src/main/java/cn/com/emsoft/sw/business/controller/admin/invoice/InvoiceController.javabackend/sw-business/sw-business-server/src/main/java/cn/com/emsoft/sw/business/service/invoice/InvoiceServiceImpl.javaValidation Commands:make validate-file FILE=docs/design/02_Detailed_Design/12_REV_Detailed.mdmake validate-file FILE=docs/design/03_Technical_Design/03_Interface_Design.mdmake validate-file FILE=docs/design/03_Technical_Design/01_Database_Design.mdmake check-linksmake validate-mermaidTarget 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.
- 主文档归属已确认:本轮 planning 产物落在
specs/002-rev005-invoice-flow/,正式口径将回写既有12_REV_Detailed.md、03_Interface_Design.md、01_Database_Design.md,不新增平行正式稿。 - 范围基线已确认:
REV-005在12_REV_Detailed.md、03_Interface_Design.md、旧系统操作手册、数据字典中均有明确发票管理/电子发票交集口径,可直接推进;原始单账单任意部分开票未作为一期主能力纳入。 - Archive 使用方式合规:Archive 仅作为老系统能力、字段与菜单口径来源,正式结论仍以当前主文档与 spec 澄清结果为准。
- 一致性影响已列出:已识别
IF-REV-008/IF-CS-004/ 发票查询补偿接口编号、biz_invoice*承接口径、旧“回调”改为“查询兜底”、后台/客户侧入口边界等一致性项。 - 校验与台账动作已规划:已明确正式文档最小校验命令;plan 阶段仅生成 planning 产物,不强制更新
01_Project_Progress.md/03_Task_Checklist.md,待正式主文档修订或任务闭环后再回写。
Post-Design Re-check
- 设计产物保持“主文档修订 + backend 实施 planning”定位,没有绕开单一真源另写平行正式稿。
data-model.md采用逻辑实体 + 现有物理承接 + 历史关系快照三层表达,没有把旧系统全部细表表述为当前已落地在线表。contracts/中接口合同统一回扣后台开票、客户侧查询下载、SYS-008查询兜底与幂等回写口径。quickstart.md仅定义评审入口、最小校验与 backend 验证建议,不引入超范围部署/发布动作。- 结果获取方式统一为“异步申请 + 查询兜底”,不再保留与航信接口事实冲突的“直接回调”口径。
Project Structure
Documentation (this feature)
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
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
- 一期采用“后台开票 + 客户侧查询下载推送”的入口策略,后台营业收费员/财务人员负责申请和开具,客户侧不直接发起开票申请。
SYS-008对接采用“异步申请 + 轮询查询兜底”模式,适配航信等不提供稳定回调的开票服务现状。- 一期不支持原始单账单直接任意部分金额开票;如需多张发票,沿用老系统拆账/分账后分别开票的口径,并保留批量开票能力。
- 当前 backend 已有
InvoiceController.java、InvoiceServiceImpl.java,但实际只覆盖开票配置/模板 CRUD,未实现发票申请、查询、回写、账单关联闭环。 - 在线主模型以
biz_invoice、biz_invoice_taxrate、biz_cust_invoice为主承接,旧“营业账开票表/发票明细表/开票配置快照”按历史关系快照或辅助映射处理,不机械复制旧表族。 - 正式文档应同时对齐当前主文档、旧系统操作手册与数据字典,避免只保留“申请 + 回写”而遗漏老系统已有的查询、下载、批量开票与结果导出语义。
Phase 1 Design Outputs
Data Model
data-model.md已定义:InvoiceApplicationInvoiceRecordChargeInvoiceRelationInvoiceQueryTaskInvoiceResultWriteBack
- 其中明确区分逻辑实体、现有在线主表承接与历史关系快照,兼容后续合并开票/拆账开票扩展。
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 应按以下顺序拆解:
- 正式文档收敛任务
- 更新
12_REV_Detailed.md中 REV-005 场景、状态机、入口边界、老系统对齐说明 - 更新
03_Interface_Design.md中IF-REV-008、IF-REV-009与客户侧查询下载口径 - 更新
01_Database_Design.md中biz_invoice*、账单-发票关联快照和查询补偿字段说明
- 更新
- backend 基础扩展任务
- 为现有
InvoiceController.java/InvoiceServiceImpl.java增加后台申请、查询、结果写回、批量开票能力 - 增加与账单、客户开票信息、税率配置的校验联动
- 为现有
SYS-008协同与补偿任务- 发票申请协同调用
- 查询兜底任务与幂等回写
- 失败原因与异常核查留痕
- 客户侧结果消费任务
- 查询已开发票状态
- 下载/推送电子发票
- 与后台开票状态保持一致
- 校验与闭环任务
- 文档
make validate-file/make check-links/make validate-mermaid - backend 核心流程验证
- 必要时回写
01_Project_Progress.md与03_Task_Checklist.md
- 文档
Complexity Tracking
本计划未发生 Constitution 违规项,无需豁免说明。