贡献指南
开发环境
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 的
e2ejob 会为隔离 Docker 栈生成临时管理员凭据,不依赖仓库 secrets。 - GitHub Actions 的
e2ejob 还会先把仓库根目录的.env.example复制为.env,因为当前docker-compose.yml的ai-service仍通过env_file: .env读取基础运行配置。 - 本地默认 Docker 模式必须提供
PLAYWRIGHT_ADMIN_EMAIL、PLAYWRIGHT_ADMIN_USERNAME、PLAYWRIGHT_ADMIN_PASSWORD三元组;如果还设置了PLAYWRIGHT_ADMIN_IDENTIFIER,它必须与同一次 bootstrap 的 username 或 email 一致。 - 如果接入已有环境,则改用
PLAYWRIGHT_SKIP_STACK_BOOT=1加PLAYWRIGHT_ADMIN_IDENTIFIER、PLAYWRIGHT_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 lint、just test just test-integrationuv run --group docs mkdocs builddemo-frontend与admin-frontend生产构建e2ePlaywright lint、typecheck 与业务流回归- 建议在本地先按以下顺序执行一遍,减少 CI 失败重跑:
uv sync --all-groups
just lint
just test
just test-integration
uv run --group docs mkdocs build
文档提交流程
提交包含文档的变更前,至少执行以下检查:
- 确认页面放在正确层级:
guides、core、api或dev - 新增页面时同步更新
mkdocs.yml导航或在上级入口页添加链接 - 手写页面不要复制大段函数签名;对象细节优先用
mkdocstrings - 运行
uv run --group docs mkdocs build