Files
ttstd-infinite-canvas/CONTRIBUTING.md

32 lines
2.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 贡献指南
感谢参与 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 许可证贡献相关代码或素材,并保留已有上游署名和许可证通知。