GoWind 开源生态GoWind 开源生态
首页
框架
GoWind Admin
GoWind CMS
GoWind IM
GoWind UBA
GoWind IoT
GoWind Toolkit
GoWind Quant
GitHub
首页
框架
GoWind Admin
GoWind CMS
GoWind IM
GoWind UBA
GoWind IoT
GoWind Toolkit
GoWind Quant
GitHub
  • 介绍

    • GoWind UBA 产品介绍
  • 架构参考

    • UBA 系统架构
    • UBA 后端模块总览
    • UBA 后端 API 契约
    • UBA 前端架构
  • 开发者指南(二开)

    • UBA 安装指南
    • UBA 代码生成管线教程
    • 新增对外服务教程
    • 新增业务实体教程
    • 新增前端页面教程
  • 运维指南

    • UBA Docker 部署指南
    • UBA 配置详解与安全清单
    • UBA PM2 部署指南
    • UBA Superset BI 部署指南
  • 数据分析师指南

    • 数据分析师上手指南
    • 基础聚合

      • 事件趋势分析
      • 活跃用户分析
      • 维度分组聚合
    • 转化与路径

      • 漏斗分析
      • 留存分析
      • 热门转化路径
      • 行为序列分析
    • 用户深度

      • 归因分析
      • 分布分析
      • 用户分群圈选
      • 点击热力图
      • 间隔时间分析
    • 生命周期

      • 用户生命周期
      • 流失与回流分析
      • 新老用户对比
      • 矩阵象限分析
    • 营收与价值

      • 营收分析
      • 付费分层(鲸鱼分析)
      • 历史 LTV 分析
    • 会话与异常

      • 会话分析
      • 同比环比与异常检测
    • 游戏专属

      • 关卡分析(游戏)
      • 滚服留存(游戏)
      • 同时在线分析(游戏)
      • 经济系统分析(游戏)
    • OLAP 查询手册
  • SDK 接入

    • Web SDK 接入指南
    • C# SDK 接入指南(Unity / Godot / .NET)
  • 附录

    • UBA 附录:端口、术语、已知限制与 FAQ

UBA 代码生成管线教程

项目采用契约优先(Contract-First):先写 .proto / Ent schema,再生成 Go / TypeScript / OpenAPI 代码。理解这条管线是二次开发的前提。本教程基于项目真实工具链编写,命令可直接复制执行。


一、工具链安装

cd backend
make init    # 安装 protoc 插件 + CLI 工具(buf / wire / ent 等)
工具用途
bufproto 编译(替代 protoc)
protoc-gen-go / protoc-gen-go-grpcGo 消息 + gRPC stub
protoc-gen-go-httpkratos REST handler
protoc-gen-typescript-httpadmin 前端 TS 客户端
protoc-gen-openapiSwagger 文档
wire编译时依赖注入
entORM 实体代码生成

二、核心命令(在 backend/ 下执行)

make api       # 生成 Go(proto → gen/go/)+ struct tag
make ts        # 生成前端 TS 客户端(仅 admin/service/v1 作为输入)
make openapi   # 生成 OpenAPI / Swagger
make ent       # 生成 ent 实体(在各 service 目录下)
make wire      # 重新生成依赖注入(wire_gen.go)
make gen       # = ent + wire + api + openapi(不含 ts)
make build     # 编译所有服务

顶层 Makefile vs 服务级 app.mk

  • backend/Makefile:顶层编排,通过 app/*/*/Makefile 递归到各服务。
  • backend/app.mk:每个服务 include 的公共片段,含 build / build_only / run / app / gen / ent / wire / api / openapi / docker 等。

三、关键配置文件

文件作用
backend/api/buf.yamlbuf 模块定义、依赖
backend/api/buf.gen.yamlGo 生成配置(managed mode 注入 go_package)
backend/api/buf.admin.typescript.gen.yamlTS 生成配置,注意 inputs.paths 只含 protos/admin/service/v1 —— 只有 admin proto 才会生成 TS 客户端
backend/app/core/service/app.mkent 生成命令(含 feature flags:privacy/entql/sql/modifier 等)

四、⚠️ Ent 生成的坑(重要)

不要直接跑 ent generate ./schema!会丢失项目的扩展(privacy / sql modifier),导致生成的查询方法缺少 Modify/Filter,编译报错。

正确方式(见 backend/app/core/service/app.mk):

cd backend/app/core/service
ent generate \
  --feature privacy --feature entql \
  --feature sql/modifier --feature sql/upsert --feature sql/lock \
  ./internal/data/ent/schema

或直接在该服务目录执行 make ent。


五、⚠️ TS 生成产物的同步

make ts 输出到:

frontend/admin/apps/admin/src/api/generated/admin/service/v1/index.ts

但 composables 实际导入的是:

frontend/admin/apps/admin/src/generated/api/admin/service/v1/index.ts

生成后需手动同步:

cp frontend/admin/apps/admin/src/api/generated/admin/service/v1/index.ts \
   frontend/admin/apps/admin/src/generated/api/admin/service/v1/index.ts

这是当前工程的一个已知步骤,容易遗漏。如果「proto 改完没生效」,先检查这一步。


六、生成产物的目录落点

backend/
├── api/
│   └── gen/go/                  # make api 的 Go 产物
└── app/core/service/
    └── internal/
        ├── data/ent/            # make ent 的实体产物(含 ent client、query、mixin)
        └── cmd/server/wire_gen.go  # make wire 的依赖注入产物

frontend/admin/apps/admin/src/
├── api/generated/.../index.ts   # make ts 输出
└── generated/api/.../index.ts   # composables 实际导入(需手动同步)

生成产物应纳入版本管理(项目未把它们 gitignore),以保证不装工具链也能编译。


七、典型工作流

改了 proto(新增/修改接口)

cd backend
make api && make openapi && make ts
# 同步 TS(见第五节)
# 如果改了服务构造函数/Provider,还要:
cd app/core/service && make wire
cd app/admin/service && make wire
make build

改了 Ent schema(新增/修改业务实体)

cd backend/app/core/service
make ent        # 用带 feature flags 的正确命令
cd ../../..
make api        # 如果实体也有对应 proto
make wire       # 如果 Provider 有变化
make build

改了 service 依赖注入(新增 Provider)

cd backend/app/<svc>/service
make wire

八、调试技巧

  • 联调 admin 前端:cd frontend/admin && pnpm dev,后端 admin 跑 5600。
  • 联调 SDK 上报:go run ./app/collector/service/cmd/server/(5700),用 Web SDK 的 test.html。
  • gRPC 调试:core 端口动态,用 etcd 查注册;或临时把 server.yaml 的 grpc addr 改成固定端口。
  • proto 改完没生效? 多数是忘了 make ts + 同步 TS(第五节),或忘了 make wire。
  • ent 编译报 Modify 缺失? 用了错误的 ent 生成命令(见第四节)。

九、相关文档

  • 系统架构
  • 后端 API 契约
  • 新增对外服务
  • 新增业务实体
  • 新增前端页面
Edit this page
Last Updated:: 6/29/26, 12:03 AM
Contributors: Bobo
Prev
UBA 安装指南
Next
新增对外服务教程