跳转至

贡献指南

开发环境

uv venv
uv sync --all-groups

文档同步要求

文档被视为代码库的一部分。出现以下变更时,默认必须同步更新 docs/

  • 公开 API、请求响应模型、事件格式或接口契约变更
  • 配置项、环境变量、默认值或运行优先级变更
  • 模块职责、架构图、数据流或存储关系变更
  • 面向用户或开发者的操作流程变更
  • 新增需要暴露给读者的专题页、原型页或 API 参考页

写作分层、双语策略和评审清单见 文档规范

代码质量(后端)

just lint

或:

uv run pre-commit run --all-files

测试

just test

如修改 admin-frontend 的关键后台业务流、受保护登录链路、E2E 选择器契约或 GitHub Actions E2E 集成,额外执行:

cd tests/e2e
npm ci
npm run lint
npm run typecheck
npm test
npm run test:headed
npm run test:all

补充说明:

  • GitHub Actions 的 e2e job 会为隔离 Docker 栈生成临时管理员凭据,不依赖仓库 secrets。
  • GitHub Actions 的 e2e job 还会先把仓库根目录的 .env.example 复制为 .env,因为当前 docker-compose.ymlai-service 仍通过 env_file: .env 读取基础运行配置。
  • 本地默认 Docker 模式必须提供 PLAYWRIGHT_ADMIN_EMAILPLAYWRIGHT_ADMIN_USERNAMEPLAYWRIGHT_ADMIN_PASSWORD 三元组;如果还设置了 PLAYWRIGHT_ADMIN_IDENTIFIER,它必须与同一次 bootstrap 的 username 或 email 一致。
  • 如果接入已有环境,则改用 PLAYWRIGHT_SKIP_STACK_BOOT=1PLAYWRIGHT_ADMIN_IDENTIFIERPLAYWRIGHT_ADMIN_PASSWORD;未显式设置 PLAYWRIGHT_STACK_MODE 时,这条路径会默认等待本地 dev 栈的 8000/5174,非默认地址请继续显式设置 URL。
  • npm run test:headed 默认串行执行;当前本地有头调试环境里,并发 Chromium 更容易在截图型用例上触发偶发协议错误。
  • npm run test:all 会先跑业务流套件,再单独跑视觉回归,并分别保留 workflow/visual 两套报告目录,避免视觉快照与并发造数的 workflow 相互干扰。
  • tests/ 现在是仓库统一测试根目录,其中 tests/fixtures/shared/ 承载跨 pytest / Playwright 共用资源,tests/e2e/ 仍是独立 Node 包,不属于 pytest 套件。

前端构建检查

Demo Frontend

cd demo-frontend
npm ci
npm run build

Admin Frontend

cd admin-frontend
npm ci
npm run build

补充要求:

  • 如果改动 admin-frontend/studio 的共享 provider、overlay 原语或 tooltip 组合方式,先阅读 Admin Shell 结构约束 里的 Studio 运行时 Provider 护栏 小节。

文档构建

uv run --group docs mkdocs build

如需本地预览:

just docs-serve

PR 合并规则(CI 对齐)

  • 目标分支为 main 的 Pull Request 会自动触发 GitHub Actions CI。
  • 以下检查失败会阻止合并:
  • 后端依赖同步、just lintjust test
  • just test-integration
  • uv run --group docs mkdocs build
  • demo-frontendadmin-frontend 生产构建
  • e2e Playwright lint、typecheck 与业务流回归
  • 建议在本地先按以下顺序执行一遍,减少 CI 失败重跑:
uv sync --all-groups
just lint
just test
just test-integration
uv run --group docs mkdocs build

文档提交流程

提交包含文档的变更前,至少执行以下检查:

  1. 确认页面放在正确层级:guidescoreapidev
  2. 新增页面时同步更新 mkdocs.yml 导航或在上级入口页添加链接
  3. 手写页面不要复制大段函数签名;对象细节优先用 mkdocstrings
  4. 运行 uv run --group docs mkdocs build