2.8 KiB
2.8 KiB
贡献指南
感谢参与 Open AI Canvas。提交改动前,请先确认相关 Issue 或用简短说明描述问题、目标和外部行为变化。
开发环境
- 前端:Bun、Vite、React、TypeScript。
- 后端:Go、Gin、GORM、SQLite。
- 本地全栈:
docker compose up -d --build。
不要提交 .env、数据库、数据目录、生成产物、编辑器配置或真实 API/OSS 密钥。新增配置项时只在 .env.example 中提供无敏感信息的说明。
提交要求
- 保持改动聚焦,沿用现有目录职责、命名和错误处理风格。
- 写路径必须明确失败;不可用默认值掩盖保存、权限、生成或删除错误。
- 后端对象读取必须同时校验当前用户和资源归属。
- 涉及上传、外部请求或模型调用时,必须说明大小、频率、费用和 SSRF 边界。
- 用户可见文案使用中文;核心业务入口和安全边界使用简短中文注释说明原因。
质量检查与合并
检查命令以 .github/workflows/quality.yml 为准。bun run build 只做类型检查和打包,不会运行 lint、单元测试或浏览器 E2E;不能用构建成功代替 Web checks 通过。
- 前端使用 Bun 1.3.9 和
bun install --frozen-lockfile,执行bun run typecheck、bun run lint、bun run test、bun run test:previs:e2e(均在web/下)。E2E 需要 Chrome/Chromium,可用CHROME_BIN指定。改动文件另做 Prettier 检查;CI 用web/scripts/check-changed-formatting.mjs检查提交差异。 - 后端在
backend/下运行gofmt -l .并修复列出的文件,再运行go test -json -timeout=20m ./...。完整测试需要 Node 22.19.0、backend/agent-runtime/pi/中的npm ci --omit=dev --ignore-scripts、redis-server和独立的 PostgreSQL 测试库;连接通过CANVAS_TEST_POSTGRES_DSN提供。缺少服务导致用例跳过时,不能声称与 Backend checks 等价。 - CSS、组件结构、路由或协议变动时,同时核对相邻回归测试。测试应表达当前约定;不要为了通过旧断言恢复已修复的行为,也不要直接跳过失败用例。
- 合并、解决冲突或同步主干后,针对最终代码重新验证。先确认
git status无未解决冲突、git diff --check通过,再查看该提交的 CI 结果;旧提交的成功不能代表新提交通过。 - Web checks、Backend checks 或 Payment plugin artifacts 失败时,先定位并修复。即使失败来自主干遗留问题,也不能将红色检查视为可忽略的背景噪声。
Pull Request 应包含改动摘要、风险、验证方式和必要截图,并分别写明已执行、未执行或因环境跳过的检查。提交即表示你有权按本项目 MIT 许可证贡献相关代码或素材,并保留已有上游署名和许可证通知。