# yedir-ai 发布就绪检查清单 本文档用于在商业化部署、开源发布或创建 PR 前做最终核对。它记录的是当前仓库的可验证交付边界,不替代真实 CI 结果。 ## 必跑检查 ```bash pnpm install --frozen-lockfile git fetch github main --prune pnpm check:branch AUTH_TRUST_HOST=true PORT=3001 pnpm dev SMOKE_BASE_URL=http://127.0.0.1:3001 pnpm verify:release ``` 预期: - `pnpm check:quality` 通过 lint、日志脱敏门禁、公开交付面品牌治理、CI hygiene、环境变量示例卫生、secret hygiene、package metadata、测试门禁卫生、轻量 helper 回归测试、类型检查、diff hygiene 和 tracked 污染物检查。 - `pnpm check:branch` 确认当前分支相对 `github/main` 没有 dry-run merge 冲突;behind main 会提示为 warning,发布前可用 `REQUIRE_UP_TO_DATE=true` 提升为失败。 - `pnpm audit:security` 输出已审计;如手动运行 Dependency Audit workflow,也应通过。若仍有 critical/high,必须在 [dependency-risk-register.md](dependency-risk-register.md) 中记录 remediation 或风险接受状态。 - `pnpm build` 完成生产构建,验证 Next.js route collection、静态/动态页面边界和构建期 TypeScript。 - `pnpm smoke:routes` 验证 `/` 返回 200。 - `/classic` 和 `/chat/test-id` 重定向到 `/`。 - `/settings` 未登录重定向到 `/login?callbackUrl=%2Fsettings`。 `pnpm verify:release` 会依次运行 `pnpm check:quality`、`pnpm audit:security`、`pnpm build` 和 `pnpm smoke:routes`。必须显式提供 `SMOKE_BASE_URL`,确保路由烟测指向本地、预发或生产中的明确目标。 ## 发布边界 - 旧 Chat UI 已移除;`/api/chat` 保留为 Canvas/Agent 内部生成 API。 - `/settings` 本地 AI 设置已组件化,保存 key、SWR key 和业务 API 保持稳定。 - 首页采用轻量壳优先渲染,个性化和公开数据渐进加载。 - 高风险日志链路已纳入 `pnpm check:logs`,禁止回流裸 `console.*`。 - CI 基础门禁与本地 `pnpm check:quality` 使用同一套污染物检查脚本;GitHub Actions 当前采用手动触发,避免私有仓库免费额度被自动消耗。 - 安全披露、敏感信息和日志规则以根目录 `SECURITY.md` 为准。 - 分支、提交、PR 和验证要求以根目录 `CONTRIBUTING.md` 为准。 ## 不应在发布包中出现 - `.env.local`、真实密钥、OAuth code、Cookie、Authorization、签名 URL。 - `.DS_Store`、swap 文件、`.claude/` worktree、migration backup、`tsconfig.tsbuildinfo`。 - 新增公开入口指向 `/classic` 或 `/chat/[id]`。 - 生产日志中输出完整 prompt、base64、图片 URL、第三方完整响应体或对象存储路径。 ## 已知后续专项 - 远端 GitHub Actions 实跑结果需要在手动触发 workflow 后确认。 - 当前依赖 audit baseline 已清除 critical/high;moderate/low 和未来 advisories 继续通过 [dependency-risk-register.md](dependency-risk-register.md) 跟踪。 - Enhance、Angle Edit、Prompt Optimizer 等历史接口仍可继续分批纳入日志门禁。 - Canvas/Agent 少数大型历史模块仍可继续领域化拆分,但不阻塞当前交付基线。 - License 以仓库根目录 `LICENSE` 为准;如商业分发策略变化,应单独进行法律审查。