8.9 KiB
Codex 三期工程实施文档(通用票通优先)
1. 文档用途
这份文档不是详细设计书,而是一份可以直接拿去给 Codex 执行的实施文档。
默认路线:
- 先做
通用票通开票模块 - 暂不接你现有业务系统的待开票数据
- 后续再把你的业务系统接到这套票通能力上
适用前提:
- 当前项目前后端已经有通用后台底座
- 已有登录、权限、动态菜单、系统管理、日志管理
- 新增功能应尽量复用现有结构,不做大重构
2. 当前项目可直接复用的基础
Codex 在执行时,默认直接复用这些已有能力:
- 后端 Ktor 启动、鉴权、异常处理、日志、数据库初始化
- 后端
modules/*的路由组织方式 - 后端
SeedData的菜单、权限、字典初始化方式 - 前端登录、主布局、动态路由、权限按钮、页签体系
- 前端
features/*页面组织方式 - 前端现有表格、表单、弹窗、查询页风格
本次新增内容尽量放到以下高层目录:
server/src/main/kotlin/com/bbit/platform/integration/piaotongserver/src/main/kotlin/com/bbit/platform/modules/piaotongserver/src/main/kotlin/com/bbit/platform/database/piaotongweb/src/api/piaotongweb/src/types/piaotongweb/src/features/piaotongweb/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 也更容易持续推进。