原文链接
https://novusai-saas.github.io/ja/ja/docs/contributing.md贡献指南
本文引用的源码与文档
目录
简介
本贡献指南面向希望参与 NovusAI SaaS 项目的开发者,系统性阐述从环境搭建、代码规范、静态检查、测试、分支与提交规范,到 Issue 报告、Pull Request 流程、代码审查、分支管理策略、版本发布与变更日志维护、新贡献者入门与导师制度、社区行为准则与协作工具使用,以及贡献认可与长期激励机制。目标是帮助贡献者高效、高质量地融入项目,共建可持续演进的多租户 AI SaaS 平台。
项目结构
仓库采用前后端分离与多工作区的组织方式:
- backend:FastAPI 后端、迁移、插件运行时、测试与 CLI 工具
- frontend:Vue3 + Vite 前端 monorepo,包含主应用与共享包
- docs:项目文档
- docker-compose.*:开发与生产编排参考
- scripts:工程化脚本与工具
图表来源
章节来源
核心组件
- 开发环境与工具链
- 后端:Python 3.10+、FastAPI、SQLAlchemy、Alembic、Celery、Socket.IO、Ruff、pytest、mypy、bandit、pip-audit
- 前端:Node.js 20.19+、pnpm 10+、Vue3、TypeScript、Vben Admin、Ant Design Vue、Vite、ESLint、Prettier、Stylelint、Vitest、Turbo
- 工程化与质量保障
- Ruff(lint/format)、pytest、mypy、bandit、pip-audit
- ESLint、Prettier、Stylelint、Vitest、Turbo
- Alembic 迁移、lefthook 预提交钩子、commitlint 提交信息校验
- 本地与生产编排
- docker-compose.dev.yml:PostgreSQL、Redis
- docker-compose.prod.yml:生产编排参考,含后端 API、Worker、Beat、前端容器 与健康检查
章节来源
- backend/pyproject.toml: 146-239:146-239
- frontend/package.json: 27-127:27-127
- docker-compose.dev.yml: 1-49:1-49
- docker-compose.prod.yml: 1-191:1-191
架构总览
项目采用“前端三端应用 + 后端 API + AI 运行时 + 基础设施”的分层架构,支持多租户、插件系统、实时通知、异步任务与附件存储等能力。
图表来源
章节来源
详细组件分析
开发环境搭建与本地运行
- 启动依赖服务(PostgreSQL、Redis)
- 使用 docker-compose.dev.yml 在根目录启动
- 后端
- 创建并激活虚拟环境,安装开发依赖,复制示例环境变量文件,执行数据库迁移,启动后端服务与 Celery worker
- 前端
- 在 frontend 目录安装依赖,启动开发服务器
- 默认访问地址与调试文档
- API、Web 应用、Swagger UI、ReDoc 地址与说明
章节来源
代码风格与静态检查
- 后端
- 使用 Ruff 进行 lint 与格式化;mypy 进行类型检查;pytest 运行测试;bandit、pip-audit 进行安全与依赖审计
- Ruff 配置包含目标 Python 版本、行宽、排除路径、lint 规则集合与格式化选项
- 前端
- ESLint、Prettier、Stylelint 统一代码风格;Vitest 进行单元测试;Turbo 管理 monorepo 构建
- ESLint 配置基于 @vben/eslint-config;Prettier、Stylelint 配置分别来自 @vben/prettier-config 与 @vben/stylelint-config
- 提示词合约检查
- 通过脚本扫描后端 AI 相关目录,强制将固定模型侧提示词迁移到专用资源目录,避免硬编码
章节来源
- backend/pyproject.toml: 146-239:146-239
- frontend/package.json: 27-127:27-127
- frontend/eslint.config.mjs: 1-50:1-50
- .prettierrc.mjs: 1-2:1-2
- frontend/stylelint.config.mjs: 1-5:1-5
- backend/scripts/check_prompt_contracts.py: 1-345:1-345
测试与覆盖率
- 后端
- pytest 配置包含严格标记、短回溯、测试路径、文件/函数命名模式等;覆盖率配置针对 app 包进行分支覆盖率统计
- 前端
- Vitest 单测运行;Turbo 管理 monorepo 类型检查与构建
章节来源
分支管理与提交规范
- 分支策略
- 基于团队集成分支(如 develop)开展功能开发;短期分支以 feature/… 或 fix/… 命名
- 提交信息
- 使用 commitlint 与 czg(commitizen)保持一致的提交信息风格;遵循清晰的祈使句主题行
- 预提交钩子
- lefthook 在提交前自动执行 Prettier、ESLint、Stylelint、commitlint 等检查,减少 CI 压力
章节来源
Issue 报告与 PR 提交流程
- Issue
- 优先搜索现有 Issue;描述问题背景、复现步骤、期望与实际结果;附带截图或最小可复现环境
- Pull Request
- 清晰描述变更内容、关联 Issue、UI 变更附截图;保持 PR 聚焦;大型重构需先行讨论
- 代码审查
- 评审关注:功能正确性、代码风格、测试覆盖、安全性、可维护性与性能影响
章节来源
迁移与数据库变更
- 迁移工具
- Alembic 管理主应用与插件迁移;版本目录与插件迁移路径在配置中声明
- 迁移生成与格式化
- 可通过 Alembic CLI 生成迁移脚本;脚本中包含时间戳命名模板与 UTC 时区设置
章节来源
国际化与 注释规范
- 用户可见字符串不得硬编码;前端使用 $t()/t(),后端使用 _() 进行国际化
- 新增注释应简洁、实用,仅在必要时补充以澄清非显而易见的行为
章节来源
安全与漏洞披露
- 安全漏洞请勿公开 Issue;参阅 SECURITY.md 中的披露流程与联系方式
章节来源
许可证与贡献授权
- 贡献即表示同意以 MIT 许可证条款授权
章节来源