以下,资源名称(业务模块名称)约定为Xxx,方法名称约定为Mmm

优先级状态需求描述
待评审实现 gf grep 对日志的过滤功能

痛点:

普通的日志grep操作会漏掉堆栈信息,特别是按照TraceID执行grep的时候。

改进:

  1. 实现自动检索错误级别信息(包含堆栈)
  2. 实现只过滤带有堆栈信息的日志功能
  3. 命令需要支持标准输入流读取功能
待评审实现gf fix version更新当前项目版本

痛点:

自动新增v2版本后,有的小伙伴会同时使用v1v2版本造成兼容问题,自行修改容易漏掉。

改进:

  1. 提供命令,自动修改项目依赖的goframe版本为v2版本
  2. 执行时自动自行go get更新go.mod中的版本
  3. 执行时自动替换go文件中的import路径,会使用到gfile.Replace*命令
  4. 如果有替换的文件,应当终端输出文件路径
待评审实现gf gen doc生成API接口文档

痛点:

目前API接口文档通过struct tag生成,但是对注释内容有较大限制。

改进:

  1. 支持注释方式,两种注释方式合并成为API注释。
  2. 以注释为基础文档,以struct tag的方式优先级最高,覆盖基础文档。
  3. 参考Kubernetes API生成工具。
    1. https://kubernetes.io/zh/docs/contribute/generate-ref-docs/kubernetes-api/
    2. https://github.com/kubernetes-sigs/reference-docs
    3. https://github.com/go-swagger/go-swagger
    4. https://github.com/kubernetes/apimachinery/blob/master/pkg/apis/meta/v1/types.go
待评审实现gf gen client生成业务客户端代码

痛点:

HTTP/GRPC服务定义后,客户端需要结构化访问服务,目前需要客户端手动定义封装业务客户端。

改进:

  1. 针对HTTP服务:
    1. 服务端依旧采用Golang定义方式,不建议使用额外的语法定义。
    2. CLI支持通过api代码层(相当于协议代码)直接生成业务客户端对象(支持远端直接拉取API代码文件,自动解析语法和结构依赖)。使用时需要指定本地或远端的api代码目录。
    3. CLI支持通过远端OpenAPIv3协议生成业务客户端对象(优先级低)
  2. 针对GRPC服务
    1. 服务端采用标准的protoc生成协议文件,改进并使用原来的gf gen pb命令即可
    2. proto协议文件需要暴露,不能放置于internal包中
    3. 客户端根据暴露的proto生成客户端包,用于和远端grpc服务交互
  3. 该命令自动识别是http还是grpc服务,并自动生成相应的业务客户端对象
  4. 可以指定客户端代码生成目录
待评审实现gf gen proto根据API生成对应的proto文件

痛点:

  • 不同接口协议,无法统一维护接口定义。需要学习很多协议性、工具性的内容。
  • 不同接口协议,接口定义的便捷性非常低。

改进:

统一通过Go API定义接口,工程中统一apicontroller层代码不改变,不同接口协议兼容性工作交给框架和工具化代码生成。

待评审实现 gf gen biz 生成业务模块代码
  1. 作用于当前目录下(以便支持Mono/SingleRepo
  2. 通过-m/module选项指定业务模块名称,即后续提到的xxx
  3. 通过-f/function选项指定需要生成的操作名,指定该操作名将会自动生成相关联的API定义、Service内部方法、Input/Output类型。否则自动指定操作名为GetList/GetOne/Create/Update/Delete
  4. 自动根据api/vx层的定义同步生成controller代码。
  5. 自动生成api/vx层的CURD接口定义文件xxx.go
    1. XxxGetListReq/Res
    2. XxxGetOneReq/Res
    3. XxxCreateReq/Res
    4. XxxUpdateReq/Res
    5. XxxDeleteReq/Res
  6. 自动生成internal/controller目录下的xxx.go文件、结构类型及全局对象,并且自动生成以下方法定义:
    1. GetList
    2. GetOne
    3. Create
    4. Update
    5. Delete
  7. 自动生成internal/service目录下的xxx.go文件、结构类型及全局对象,并且自动生成以下方法定义:
    1. GetList
    2. GetOne
    3. Create
    4. Update
    5. Delete
  8. 自动生成internal/model目录下的xxx.go文件,并且自动生成以下类型:
    1. XxxGetListInput/Output
    2. XxxGetOneInput/Output
    3. XxxCreateInput/Output
    4. XxxUpdateInput/Output
    5. XxxDeleteInput/Output
  9. 自动生成internal/consts目录下的consts_xxx.go文件
  10. 如果以上自动生成代码(结构体及对象)已经存在,跳过当前代码生成逻辑
待评审实现 gf check 工程规范化校验功能

痛点:

工程规范不能依靠文档或人肉,需要工具支撑落地,并降低维护成本。人肉CR只是作为辅助手段。

改进:

CLI 工程规范检测规则

待评审实现CLI工具的CI建设

痛点:

目前CLI已经成为框架的重要组成部分,但是仍旧没有单元测试,以及对应的CI。CLI的质量和稳定性没有保障。

改进:

  • 创建单元测试,实现以下单测:
    • go install安装
    • 安装过后的二进制所有命令的调用单测
  • 参考gf仓库的CI脚本,实现CLICI自动触发运行单测




  • No labels