メインコンテンツまでスキップ
原文链接https://nvuai.cc/ja/ja/docs/contributing.md

贡献指南

本文引用的源码与文档

目录​

  1. 简介
  2. 项目结构
  3. 核心组件
  4. 架构总览
  5. 详细组件分析
  6. 依赖分析
  7. 性能考虑
  8. 故障排查指南
  9. 结论
  10. 附录

简介​

本贡献指南面向希望参与 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、前端容器与健康检查

章节来源

架构总览​

项目采用“前端三端应用 + 后端 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 相关目录,强制将固定模型侧提示词迁移到专用资源目录,避免硬编码

章节来源

测试与覆盖率​

  • 后端
    • 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 许可证条款授权

章节来源

上游优先贡献策略​

  • novusai-saas-yudi 为多租户 SaaS 的上游基准;通用平台修复与共享特性优先在上游实现
  • 客户定制工作流、品牌、部署覆盖、插件保留在客户仓库
  • 对模糊变更需明确上/下游落地,先在上游验证再同步至客户仓库

章节来源

新贡献者入门、导师制度与学习资源​

  • 入门建议
    • 阅读 README 了解项目背景与快速开始;先通读相关后端/前端源码、测试与 README 章节
    • 从简单 Issue(good first issue)入手,逐步熟悉代码库与工具链
  • 导师制度
    • 建议为每位新贡献者指派一位导师,负责代码规范、流程与工具使用指导
  • 学习资源
    • 项目 README 与贡献指南;各模块 README 与设计文档;前后端工程化配置与脚本
    • 前端 monorepo 结构与工具链文档;后端 FastAPI、SQLAlchemy、Alembic、Celery 等生态文档

章节来源

社区行为准则、沟通渠道与协作工具​

  • 行为准则
    • 尊重、包容、专业、建设性沟通;禁止骚扰与歧视
  • 沟通渠道
    • GitHub Issues/PR 讨论;内部即时通讯群组;定期线上同步会议
  • 协作工具
    • GitHub(Issues/PR/Code Review)、Lefthook(预提交)、commitlint(提交信息)、CI/CD(自动化流水线)

章节来源

贡献认可、奖励机制与长期激励​

  • 贡献认可
    • 在贡献者名单中标注;PR 合并后致谢;优秀贡献可在公告渠道分享
  • 奖励机制
    • 里程碑贡献奖、代码质量奖、社区贡献奖;可结合项目收益进行激励
  • 长期激励
    • 优秀贡献者可受邀成为维护者或技术小组成员;参与路线图制定与决策

章节来源

依赖分析​

  • 后端依赖与开发工具
    • FastAPI、SQLAlchemy、Alembic、Celery、Socket.IO、Pydantic、httpx、boto3/oss2、pgvector、loguru、prometheus-client、acme/josepy、jinja2、Pillow、dnspython、pyyaml、captcha 等
    • 开发依赖:pytest、ruff、mypy、pip-audit、bandit、types-redis、types-python-jose 等
  • 前端依赖与工具链
    • Vue3、TypeScript、Vben Admin、Ant Design Vue、Vite、pnpm、ESLint、Prettier、Stylelint、Vitest、Turbo、Playwright、cspell、lefthook、commitlint 等

图表来源

章节来源

性能考虑​

  • 后端
    • 使用异步 ORM 与连接池;合理设置数据库索引与查询优化;缓存热点数据;限制大对象与长耗时操作
  • 前端
    • 组件懒加载与分割打包;按需引入样式与图标;避免不必要的重渲染;合理使用虚拟列表
  • 工程化
    • 并行构建与增量编译;缓存依赖与中间产物;CI 并行化测试与检查

故障排查指南​

  • 环境与依赖
    • 确认 Python 3.10+、Node.js 20.19+、pnpm 10+、PostgreSQL、Redis 版本满足要求
    • docker-compose 启动后检查服务健康状态与端口映射
  • 本地运行
    • 后端:确认虚拟环境激活、依赖安装、环境变量配置、数据库迁移成功、worker 正常
    • 前端:确认依赖安装、开发服务器端口未被占用、跨域与 API 地址配置正确
  • 代码风格与静态检查
    • 后端:Ruff lint/format 与 mypy 类型检查失败时,按提示修正;pytest 失败时补充或修正测试
    • 前端:ESLint/Stylelint/Prettier 修复失败时,检查文件语法与配置;Vitest 单测失败时定位用例与实现
  • 提示词合约
    • 运行提示词检查脚本,将硬编码提示词迁移至专用资源目录

章节来源

结论​

本贡献指南提供了从环境搭建到代码贡献、从规范到流程的完整指引。建议新贡献者先从简单任务入手,逐步深入理解架构与工具链;在提交 PR 前确保通过所有静态检查与测试;遵循上游优先策略,共同维护高质量的多租户 AI SaaS 平台。

附录​

  • 快速参考
    • 后端常用命令:pytest、ruff check、ruff format
    • 前端常用命令:pnpm lint、pnpm test:unit、pnpm build:antd
    • 迁移命令:novusai db upgrade head
  • 参考文件
    • CONTRIBUTING.md、README.md、backend/pyproject.toml、frontend/package.json、frontend/eslint.config.mjs、frontend/.prettierrc.mjs、frontend/stylelint.config.mjs、frontend/.commitlintrc.js、backend/alembic.ini、frontend/lefthook.yml、backend/scripts/check_prompt_contracts.py、docker-compose.dev.yml、docker-compose.prod.yml