感谢你对 GoWind Admin 的关注!本文档说明如何向本项目提交代码、文档与问题反馈。在开始之前,请先阅读 README.md 了解项目定位与技术栈。
参与本项目即代表你同意遵守 行为准则。请在讨论、Issue 与 PR 中保持友善与专业。
-
Fork 并克隆仓库
git clone https://github.com/<your-name>/go-wind-admin.git cd go-wind-admin git remote add upstream https://github.com/<org>/go-wind-admin.git
-
搭建开发环境
-
创建分支
请基于最新的
main创建特性分支,不要直接在main上开发:git checkout main git pull upstream main git checkout -b feat/your-feature
本项目大量依赖代码生成,请不要手工编辑生成产物:
| 产物 | 生成命令 | 说明 |
|---|---|---|
| Go API / HTTP / gRPC / OpenAPI | make api |
由 backend/api/protos/ 下的 proto 生成至 backend/api/gen/go/ |
| TypeScript HTTP 客户端 | make api |
同步生成至各前端 src/api/generated/ |
| Ent ORM 代码 | make ent |
由 internal/data/ent/schema/ 下的 schema 生成 |
修改 .proto 或 ent/schema 后,请同步重新生成并一并提交,保持三端一致。
业务接口请在 proto 中使用 buf.validate 声明字段约束(如 string email = 1 [(buf.validate.field).string.email = true];),由 protoc-gen-validate 自动生成校验代码,避免在 service 层手写判空。
- Go:遵循 Go Code Review Comments 与
golangci-lint(见backend/Makefile的lint目标)。提交前请本地执行make lint vet。 - 前端:三套前端各有独立的
eslint.config.*与stylelint.config.*,请遵守对应配置。 - 命名与风格:新代码应与所在文件既有风格保持一致(缩进、注释密度、命名习惯)。
本项目采用 Conventional Commits,历史提交已统一使用。提交信息格式:
<type>(<scope>): <subject>
| type | 用途 |
|---|---|
feat |
新功能 |
fix |
缺陷修复 |
refactor |
重构(不改变外部行为) |
perf |
性能优化 |
style |
代码格式(不影响逻辑) |
docs |
文档 |
test |
补充测试 |
build |
构建系统、依赖 |
chore |
杂项、脚手架 |
ci |
CI 配置 |
scope可选,对应受影响的模块(如auth、tenant、editor)subject使用中文或英文均可,简明描述,结尾不加句号- 示例:
feat(auth): 登录增加租户编号 tenant_code 解析租户
大改动请添加正文说明动机与影响范围,必要时附 Issue 链接。
- 确保本地通过
make lint vet test(后端)与对应前端的 lint - 若改动涉及 proto / schema,确认已重新生成代码并提交
- PR 标题遵循上述提交规范
- PR 描述请按 模板 填写:动机、改动内容、自测情况、是否影响三端
- 一个 PR 只解决一个问题,便于评审与回退
- 是否改动生成产物、是否漏跑生成
- 是否破坏多租户隔离(跨租户数据访问需带租户过滤)
- 是否引入新的硬编码密钥 / 凭据(应走配置或环境变量)
- 是否补齐了相应测试
- 文档是否同步更新
- 缺陷请使用 Bug 报告模板
- 新功能建议请使用 功能请求模板
- 安全漏洞请按 SECURITY.md 流程私下上报,勿直接开公开 Issue
你的每一次贡献——无论代码、文档还是问题反馈——都让 GoWind Admin 更好。感谢你的参与。