258 lines
8.9 KiB
Markdown
258 lines
8.9 KiB
Markdown
# Codex 三期工程实施文档(通用票通优先)
|
|
|
|
## 1. 文档用途
|
|
|
|
这份文档不是详细设计书,而是一份可以直接拿去给 Codex 执行的实施文档。
|
|
|
|
默认路线:
|
|
|
|
- 先做 `通用票通开票模块`
|
|
- 暂不接你现有业务系统的待开票数据
|
|
- 后续再把你的业务系统接到这套票通能力上
|
|
|
|
适用前提:
|
|
|
|
- 当前项目前后端已经有通用后台底座
|
|
- 已有登录、权限、动态菜单、系统管理、日志管理
|
|
- 新增功能应尽量复用现有结构,不做大重构
|
|
|
|
## 2. 当前项目可直接复用的基础
|
|
|
|
Codex 在执行时,默认直接复用这些已有能力:
|
|
|
|
- 后端 Ktor 启动、鉴权、异常处理、日志、数据库初始化
|
|
- 后端 `modules/*` 的路由组织方式
|
|
- 后端 `SeedData` 的菜单、权限、字典初始化方式
|
|
- 前端登录、主布局、动态路由、权限按钮、页签体系
|
|
- 前端 `features/*` 页面组织方式
|
|
- 前端现有表格、表单、弹窗、查询页风格
|
|
|
|
本次新增内容尽量放到以下高层目录:
|
|
|
|
- `server/src/main/kotlin/com/bbit/platform/integration/piaotong`
|
|
- `server/src/main/kotlin/com/bbit/platform/modules/piaotong`
|
|
- `server/src/main/kotlin/com/bbit/platform/database/piaotong`
|
|
- `web/src/api/piaotong`
|
|
- `web/src/types/piaotong`
|
|
- `web/src/features/piaotong`
|
|
- `web/src/components/piaotong`
|
|
|
|
## 3. 全局实施原则
|
|
|
|
Codex 执行时,统一遵循下面原则:
|
|
|
|
- 不改现有系统管理模块的交互风格
|
|
- 不做全局重命名和大规模目录重构
|
|
- 每次只处理一个任务包,不跨太多模块
|
|
- 单个任务包尽量做到“改完即可本地验证一个页面或一组接口”
|
|
- 先打通票通主链路,再考虑业务系统适配
|
|
- 农产品收购发票从一开始就要纳入支持范围
|
|
|
|
新增菜单统一按这套来:
|
|
|
|
- 一级菜单:`票通开票`
|
|
- 二级菜单:
|
|
- `票通企业`
|
|
- `数电账号`
|
|
- `认证中心`
|
|
- `手工开票`
|
|
- `开票任务`
|
|
|
|
## 4. 三期工程总览
|
|
|
|
### 第一期目标
|
|
|
|
把票通模块骨架和基础查询能力搭起来,做到“能看企业、能看账号、能看认证状态、页面和接口结构稳定”。
|
|
|
|
### 第二期目标
|
|
|
|
把认证链路和手工开票主链路打通,做到“可以在系统里完成认证并发起真实开票”。
|
|
|
|
### 第三期目标
|
|
|
|
把推送、补偿、重试、稳定性补齐,做到“开票结果能稳定落定,模块具备持续使用能力”。
|
|
|
|
## 5. 第一期:票通底座与基础查询
|
|
|
|
### 5.1 本期目标
|
|
|
|
先把“票通开票”模块作为一个独立业务域立起来,完成最小骨架和只读能力,不急着一开始就打开发票提交。
|
|
|
|
### 5.2 本期应完成的内容
|
|
|
|
- 新增票通开票菜单和页面骨架
|
|
- 新增票通相关后端模块骨架
|
|
- 落票通配置、加密签名、HTTP 客户端基础能力
|
|
- 支持查询企业信息
|
|
- 支持查询企业开户行及账号信息
|
|
- 支持查询数电账号列表
|
|
- 支持查询数电账号认证状态
|
|
- 建立本地票通账号表和基础任务表
|
|
|
|
### 5.3 本期不要做的内容
|
|
|
|
- 不做真实开票提交
|
|
- 不做认证短信/扫码交互闭环
|
|
- 不做票通推送回调
|
|
- 不接你自己的业务系统
|
|
|
|
### 5.4 可直接给 Codex 的任务包
|
|
|
|
#### 任务包 1
|
|
|
|
新增 `票通开票` 一级菜单和 5 个二级菜单,补齐前端路由和页面骨架,页面先只保留基础查询区和占位内容,不接真实接口。
|
|
|
|
#### 任务包 2
|
|
|
|
在后端新增 `piaotong` 业务域目录和模块注册,补齐配置读取、公共报文封装、RSA/3DES 基础能力、票通 HTTP 客户端基础封装,先不接具体业务页面。
|
|
|
|
#### 任务包 3
|
|
|
|
实现 `票通企业` 相关接口和页面,支持按税号查询企业信息、查询企业开户行及账号信息,并把查询结果在前端页面展示出来。
|
|
|
|
#### 任务包 4
|
|
|
|
实现 `数电账号` 和 `认证状态` 的基础查询能力,支持查询数电账号列表、查看默认账号、查看认证建议和认证状态,并补齐本地账号表的基础读写。
|
|
|
|
### 5.5 本期验收标准
|
|
|
|
- 菜单、路由、页面已经可访问
|
|
- 后端已经形成独立的 `piaotong` 业务域
|
|
- 可以查询企业信息
|
|
- 可以查询企业开户行及账号信息
|
|
- 可以查询数电账号列表和认证状态
|
|
- 代码结构已经为后续认证和开票留出扩展位置
|
|
|
|
## 6. 第二期:认证中心与手工开票主链路
|
|
|
|
### 6.1 本期目标
|
|
|
|
把“账号认证 -> 手工录入 -> 发起开票 -> 查看任务状态”这条主链路打通。
|
|
|
|
### 6.2 本期应完成的内容
|
|
|
|
- 认证中心后端接口
|
|
- 短信验证码发送与短信登录
|
|
- 二维码认证获取与扫码状态查询
|
|
- 手工开票页面
|
|
- 普通蓝字数电票开票
|
|
- 农产品收购发票开票
|
|
- 本地开票任务记录
|
|
- 开票任务列表和详情页
|
|
- 手动查询开票结果
|
|
|
|
### 6.3 本期不要做的内容
|
|
|
|
- 不做票通推送回调
|
|
- 不做定时补偿任务
|
|
- 不接你的业务系统回写
|
|
|
|
### 6.4 可直接给 Codex 的任务包
|
|
|
|
#### 任务包 1
|
|
|
|
实现 `认证中心` 后端接口,支持查询认证状态、发送短信验证码、提交短信登录、获取实名认证二维码、查询二维码扫码状态、退出电子税局登录。
|
|
|
|
#### 任务包 2
|
|
|
|
实现 `认证中心` 前端页面和交互,支持短信认证流程和扫码认证流程,页面能清晰展示当前认证建议、二维码状态和短信状态。
|
|
|
|
#### 任务包 3
|
|
|
|
实现 `手工开票` 页面和后端开票接口,支持手工录入发票基础信息、购买方/销方信息、商品明细,并支持普通开票模式和农产品收购发票模式切换。
|
|
|
|
#### 任务包 4
|
|
|
|
实现本地开票任务创建、开票提交、手动状态查询、任务列表和详情页,让用户能看到发票请求流水号、状态、失败原因、票号等核心结果。
|
|
|
|
### 6.5 本期验收标准
|
|
|
|
- 用户可以在系统里完成短信认证或扫码认证
|
|
- 用户可以手工录入一张票并发起开票
|
|
- 农产品收购发票模式可用
|
|
- 能看到本地任务状态和票通返回结果
|
|
- 遇到 `3999` 时能进入认证流程,并可继续原任务
|
|
|
|
## 7. 第三期:推送、补偿与稳定性收口
|
|
|
|
### 7.1 本期目标
|
|
|
|
把结果同步和异常处理补齐,让模块从“可演示”进入“可稳定联调和可持续使用”状态。
|
|
|
|
### 7.2 本期应完成的内容
|
|
|
|
- 票通推送回调接收
|
|
- 验签、解密、幂等处理
|
|
- 主动查询补偿
|
|
- 失败任务重试
|
|
- 状态机收口
|
|
- 日志和异常信息收口
|
|
- 联调说明和部署说明
|
|
|
|
### 7.3 本期不要做的内容
|
|
|
|
- 仍然不接你的待开票业务系统
|
|
- 不把整套系统改造成完整业务平台
|
|
|
|
### 7.4 可直接给 Codex 的任务包
|
|
|
|
#### 任务包 1
|
|
|
|
实现票通发票推送回调接口,支持接收推送主要信息和全票面信息,完成验签、解密、幂等判断和本地任务状态更新。
|
|
|
|
#### 任务包 2
|
|
|
|
实现主动查询补偿机制,对处理中和待认证后的任务进行补偿查询,避免只依赖回调导致状态长期不落定。
|
|
|
|
#### 任务包 3
|
|
|
|
实现失败任务重试和状态机收口,保证同一张发票重试时复用原 `invoiceReqSerialNo`,并把任务页上的错误提示、状态标签、操作入口整理完整。
|
|
|
|
#### 任务包 4
|
|
|
|
整理联调说明、环境配置说明和回调部署说明,补齐必要的日志与调试信息,让后续对接你自己的业务系统时可以直接复用这套票通能力。
|
|
|
|
### 7.5 本期验收标准
|
|
|
|
- 开票结果可以通过推送或主动查询最终落定
|
|
- 重复推送不会造成重复更新
|
|
- 失败任务可以重试
|
|
- 任务状态流转稳定
|
|
- 模块已经具备后续接业务系统的基础
|
|
|
|
## 8. 给 Codex 的执行边界
|
|
|
|
后续给 Codex 发任务时,建议直接按“任务包”发,不要一次跨两期。
|
|
|
|
推荐下发方式:
|
|
|
|
- `按第一期任务包 1 做,只做菜单、路由和 5 个页面骨架,不接真实接口`
|
|
- `按第一期任务包 3 做,只做票通企业查询前后端,不动认证和开票`
|
|
- `按第二期任务包 2 做,只做认证中心前端交互,复用现有后端接口`
|
|
- `按第二期任务包 4 做,只做本地开票任务和任务列表详情`
|
|
- `按第三期任务包 2 做,只做主动查询补偿和状态落定`
|
|
|
|
不建议下发方式:
|
|
|
|
- 一次要求 Codex 同时做菜单、认证、开票、推送、补偿
|
|
- 一次要求 Codex 同时接票通和你的业务系统
|
|
- 一次要求 Codex 重构现有后台结构后再开发功能
|
|
|
|
## 9. 这份文档的最终建议
|
|
|
|
这三期的节奏,核心是先把“票通能力底座”做出来,再考虑“业务系统接入层”。
|
|
|
|
如果按当前项目状态来看,这样分期最合理:
|
|
|
|
- 第一期把结构立稳,先查得到
|
|
- 第二期把主链路跑通,先开得出
|
|
- 第三期把稳定性补齐,先用得住
|
|
|
|
后续如果你要再接自己的待开票业务系统,就在这三期完成后再新增第四阶段:
|
|
|
|
- 读取业务待开票数据
|
|
- 自动创建票通任务
|
|
- 结果回写业务系统
|
|
|
|
这样不会推翻前面的实现,Codex 也更容易持续推进。
|