本文档用于规划 new_sdk 从当前 PHP/ThinkPHP 项目迁移到 GoFrame 技术栈的阶段路线。计划先排 5 个版本,每个版本都要有明确边界,避免一开始就陷入“大重写”。
| 版本 | 名称 | 核心目标 | 主要交付 |
|---|---|---|---|
| V0.1 | 技术栈底座版 | 搭建 GoFrame 基础工程和运行环境 | 项目骨架、配置、日志、DB、Redis、Docker、基础监控 |
| V0.2 | 基础账户体系版 | 跑通前后台基础账号和权限 | 后台管理员、前台用户、登录、Token、RBAC 雏形 |
| V0.3 | SDK 协议与基础业务版 | 兼容老 SDK API 协议,迁移低风险读取接口 | AES/sign/token、游戏配置、版本、公告、礼包查询 |
| V0.4 | 支付订单核心版 | 建立订单、支付、回调、发货状态机 | 下单、支付渠道抽象、回调幂等、Redis Stream、CP 通知 |
| V0.5 | 渠道与运营闭环版 | 迁移 complex 渠道、运营能力和观测闭环 | 渠道适配器、优惠券/礼包、Dashboard、告警、灰度切流 |
搭建一个可运行、可配置、可观测、可部署的 GoFrame 服务底座。这个版本不追求业务完整,只解决工程基础。
V0.1 必须优先采用 GoFrame 官方脚手架和轻量 Docker 镜像策略,避免一开始就做出偏离框架习惯、镜像体积过大、后续维护成本高的工程底座。
gf init、gf gen dao、gf run、gf buildgf init 初始化,不手写一套偏离 GoFrame 官方习惯的目录。domain、adapter、provider 等目录。gf gen dao 生成。golang 构建镜像。alpine 作为运行镜像,便于排查问题。distroless/static-debian12。scratch,避免证书、时区、DNS、调试成本过高。.env、不放证书私钥和支付密钥。gf init 初始化 GoFrame 项目结构。api、internal/controller、internal/service、internal/dao、internal/model、internal/logic、internal/pkg。internal/domain、internal/adapter、internal/provider。local、dev、prod。gf gen dao,先生成基础 DAO/Entity/Model。trace_id、request_id、appid、user_id、order_no、channel、route。golang:<version>-alpine 或官方 Go 镜像。alpine,稳定后评估切换 distroless/static-debian12。/health、/ready。docker compose up 后服务可启动。/health 返回正常。trace_id 查询日志。golang runtime。gf gen dao 可以稳定生成数据库访问层。搭建基础前后台账户体系,为后续管理端、运营端、SDK 用户体系迁移做准备。
这里的“前台账户”和“后台账户”要分清:
开始承接老 application/api 的基础能力,优先迁移低风险读取接口和 SDK 公共协议层。
appid、route、trace_id 追踪请求。建立支付、订单、回调、发货、补单的核心闭环。这个版本是整个重构里风险最高的一版,必须先做状态机和幂等。
PaymentProvider。OrderService。NotifyService。order_no 查日志和 trace。迁移 complex 联运渠道能力,并补齐运营类功能和观测闭环。这个版本重点是渠道适配器模式,不允许把渠道逻辑重新堆进大控制器。
complex 渠道清单。ComplexAdapter 接口。channel、game_id、appid、order_no。order_no 追踪。V0.6 之后可以考虑:
在真正进入 V0.1 开发前,还需要完成以下前置工作:
06-database-schema-inventory.md:全量表结构、字段、索引。07-api-table-access-map.md:API 代码读写表关系。08-business-domain-data-map.md:业务域和数据表映射。09-payment-and-order-state-machine.md:支付订单状态机。先做文档和数据映射
-> V0.1 技术栈底座
-> V0.2 账户体系
-> V0.3 SDK 协议和基础业务
-> V0.4 支付订单核心
-> V0.5 渠道和运营闭环
这个顺序的核心原因:支付和渠道是最高风险模块,必须建立在协议、账户、日志、指标、队列、状态机都清楚的基础上。