For AI agents: the complete documentation index is available at /llms.txt, the full documentation bundle is available at /llms-full.txt, and this page is available as Markdown at /dev/contributing.md.
DANGER

本页由 AI 工具参考代码编写,尚未经过人工审核,内容仅供参考。如果无法解决问题或需要协助部署,可邮箱联系:kuohu@getastra.cn

代码贡献

面向 AstraSchedule 各子项目的开发者。所有子项目均为独立 Git 仓库,遵循统一的提交与分支规范。

分支管理

  • main 分支:基础版本,不含 namespace 多租户功能
  • saas/main 分支:SaaS 版本(仅 usr-backendusr-dashboard 存在),包含多租户功能
  • 合并方向:main → saas/main(单向),严禁 saas/main → main
  • 如需将 saas/main 的修改引入 main:逐个 cherry-pick 或手动提取单个 commit,不得整分支合并
  • sys-backendsys-dashboard 没有 saas/main 分支,其 main 即 SaaS 版本

开始每个新任务前,先确认在哪个分支上工作。

Commit 规范

格式:<emoji><type>(<scope>): <description>,description 使用中文

emojitype用途
feat新功能
🐛fix修复
🔒security安全
📝docs文档
🎉init初始化
🔧refactor重构
♻️style风格
perf性能
test测试
🔨build构建
revert回滚

示例:

✨ feat(autorun): 支持作息表交集计算
🐛 fix(client): 修复倒数日窗口不刷新问题
  • 由 AI 编写的代码,在 Commit Message 后添加 (By AI) 标识
  • Commit 流程:生成 commit message 后先展示给用户确认,用户同意后才能执行 git commit

编码约定

  • 换行符:CRLF(所有子项目)
  • 缩进:desktop JS/CSS 用 4 空格,package.json/HTML 用 2 空格;usr-dashboard 统一 2 空格
  • 包管理器:所有 Node.js 子项目统一使用 Bun
  • Go 后端:禁止原生 SQL(用 GORM)、禁止 as any 等松散类型;提交前运行 go fmt ./...go test ./...
  • 新增数据库表:必须同步检查 db/backup.goBackupPayload、导出/导入逻辑与 namespace 覆盖
  • API 改动:必须同步更新 OpenAPI 文档(usr-backend/AstraServerGo.openapi.jsonsys-backend/SysBackend.openapi.json

提交流程

  1. 确认工作分支(见上)
  2. 修改代码,遵循各子项目的编码约定
  3. 运行验证(构建 / 测试 / 格式化)
  4. 生成 commit message 并展示给用户确认
  5. 用户同意后执行提交

文档同步

  • 涉及新增功能或破坏性修改时,询问用户是否更新 docs-site 文档
  • 文档写作规范见 docs-contrib