以下,资源名称(业务模块名称)约定为Xxx
,方法名称约定为Mmm
。
优先级 | 状态 | 需求 | 描述 |
---|
中 | 待评审 | 实现 gf grep 对日志的过滤功能 | 痛点:
普通的日志grep 操作会漏掉堆栈信息,特别是按照TraceID 执行grep 的时候。
改进:
实现自动检索错误级别信息(包含堆栈)实现只过滤带有堆栈信息的日志功能命令需要支持标准输入流读取功能
|
高 | 待评审 | 实现gf fix version 更新当前项目版本 | 痛点:
自动新增v2 版本后,有的小伙伴会同时使用v1 和v2 版本造成兼容问题,自行修改容易漏掉。
改进:
提供命令,自动修改项目依赖的goframe 版本为v2 版本执行时自动自行go get 更新go.mod 中的版本执行时自动替换go 文件中的import路径,会使用到gfile.Replace* 命令如果有替换的文件,应当终端输出文件路径
|
高 | 待评审 | 实现gf gen doc 生成API接口文档 | 痛点: 目前API接口文档通过struct tag 生成,但是对注释内容有较大限制。 改进: - 支持注释方式,两种注释方式合并成为API注释。
- 以注释为基础文档,以
struct tag 的方式优先级最高,覆盖基础文档。 - 参考
Kubernetes API 生成工具。- https://kubernetes.io/zh/docs/contribute/generate-ref-docs/kubernetes-api/
- https://github.com/kubernetes-sigs/reference-docs
- https://github.com/go-swagger/go-swagger
- https://github.com/kubernetes/apimachinery/blob/master/pkg/apis/meta/v1/types.go
|
高 | 待评审 | 实现gf gen client 生成业务客户端代码 | 痛点: HTTP/GRPC 服务定义后,客户端需要结构化访问服务,目前需要客户端手动定义封装业务客户端。
改进: - 针对
HTTP 服务:- 服务端依旧采用
Golang 定义方式,不建议使用额外的语法定义。 CLI 支持通过api 代码层(相当于协议代码)直接生成业务客户端对象(支持远端直接拉取API 代码文件,自动解析语法和结构依赖)。使用时需要指定本地或远端的api代码目录。CLI 支持通过远端OpenAPIv3 协议生成业务客户端对象(优先级低)
- 针对
GRPC 服务- 服务端采用标准的
protoc 生成协议文件,改进并使用原来的gf gen pb 命令即可 proto 协议文件需要暴露,不能放置于internal 包中- 客户端根据暴露的
proto 生成客户端包,用于和远端grpc 服务交互
- 该命令自动识别是
http 还是grpc 服务,并自动生成相应的业务客户端对象 - 可以指定客户端代码生成目录
|
中 | 待评审 | 实现gf gen proto 根据API 生成对应的proto 文件 | 痛点: - 不同接口协议,无法统一维护接口定义。需要学习很多协议性、工具性的内容。
- 不同接口协议,接口定义的便捷性非常低。
改进: 统一通过Go API 定义接口,工程中统一api 和controller 层代码不改变,不同接口协议兼容性工作交给框架和工具化代码生成。 |
高 | 待评审 | 实现 gf gen biz 生成业务模块代码 | - 作用于当前目录下(以便支持
Mono/SingleRepo ) - 通过
-m/module 选项指定业务模块名称,即后续提到的xxx 。 - 通过
-f/function 选项指定需要生成的操作名,指定该操作名将会自动生成相关联的API 定义、Service 内部方法、Input/Output 类型。否则自动指定操作名为GetList/GetOne/Create/Update/Delete - 自动根据
api/vx 层的定义同步生成controller 代码。 - 自动生成
api/vx 层的CURD 接口定义文件xxx.go :XxxGetListReq/Res XxxGetOneReq/Res XxxCreateReq/Res XxxUpdateReq/Res XxxDeleteReq/Res
- 自动生成
internal/controller 目录下的xxx.go 文件、结构类型及全局对象,并且自动生成以下方法定义:GetList GetOne Create Update Delete
- 自动生成
internal/service 目录下的xxx.go 文件、结构类型及全局对象,并且自动生成以下方法定义:GetList GetOne Create Update Delete
- 自动生成
internal/model 目录下的xxx.go 文件,并且自动生成以下类型:XxxGetListInput/Output XxxGetOneInput/Output XxxCreateInput/Output XxxUpdateInput/Output XxxDeleteInput/Output
- 自动生成
internal/consts 目录下的consts_xxx.go 文件 - 如果以上自动生成代码(结构体及对象)已经存在,跳过当前代码生成逻辑
|
高 | 待评审 | 实现 gf check 工程规范化校验功能 | 痛点: 工程规范不能依靠文档或人肉,需要工具支撑落地,并降低维护成本。人肉CR 只是作为辅助手段。 改进: CLI 工程规范检测规则 |
高 | 待评审 | 实现CLI 工具的CI 建设 | 痛点: 目前CLI已经成为框架的重要组成部分,但是仍旧没有单元测试,以及对应的CI。CLI的质量和稳定性没有保障。 改进: - 创建单元测试,实现以下单测:
go install 安装- 安装过后的二进制所有命令的调用单测
- 参考
gf 仓库的CI 脚本,实现CLI 的CI 自动触发运行单测
|
|
|
|
|