ai-chatbot/docs/delivery-readiness-audit.md
2026-05-27 21:14:52 +08:00

71 lines
4.6 KiB
Markdown
Raw 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.

# yedir-ai 交付就绪审查摘要
日期:2026-05-27
本文档记录当前分支进入 PR / 商业化交付前的审查入口。它不是替代 CI 的结论,而是帮助 reviewer 快速理解本轮大改的边界、验证证据和剩余远端动作。
## 当前分支状态
- 工作分支:`codex/admin-settings-ui-refactor`
- 基线分支:`github/main`
- 当前状态:已同步 `github/main`,`behind 0`;具体 ahead 数以 `pnpm check:branch` 当前输出为准
- 本地工作区:干净
- Dry-run merge:`mergeConflictMarkers: 0`
- 当前 PR 体量:约 `198` 个文件变更;非 merge 提交数以当前 `git log --no-merges github/main..HEAD` 输出为准
## 主要交付范围
- 后台设置页:本地 AI 设置拆出导航、命令中心、section shell、状态 badge、领域 section 组件和共享类型,降低巨型设置页维护成本。
- 旧 Chat 清理:首页固定 Lovart 新首页,`/classic` 与 `/chat/[id]` 旧 UI 入口重定向到 `/`,`/api/chat` 保留为 Canvas/Agent 内部生成 API。
- 首页性能:Lovart 首页改为轻量壳优先,公开首页接口增加缓存、fallback、超时和基础性能观测。
- Canvas / Chat 工程化:拆分 `LovartHome`、`ImageNode`、`CanvasChatPanel` 和 `/api/chat` 的多个纯逻辑/展示模块,保留业务协议与调用方行为。
- 日志安全:新增结构化 logger、客户端 logger、脱敏工具和分批日志门禁,覆盖高风险 provider、上传、认证、Canvas 和部分生成链路。
- 仓库治理:清理 tracked 本地污染物,补齐 `.gitignore`、CI hygiene、secret/env/package metadata/test hygiene、dependency audit、release verification 和 branch readiness 检查。
- 生产构建:`pnpm build` 与数据库迁移解耦,重型工作台页面改为动态渲染,迁移脚本增加连接/整体超时,并新增独立 Build workflow 验证生产构建。
- 文档交付:README、部署、运维、架构、安全、贡献、支持、发布清单和依赖风险登记已按 `yedir-ai` 项目定位重写或补齐。
## 已验证证据
```bash
git fetch github main --prune
pnpm check:branch
pnpm build
SMOKE_BASE_URL=http://127.0.0.1:3001 pnpm verify:release
```
最近一次本地验证结果:
- `pnpm check:branch` 通过,`behind 0`,`mergeConflictMarkers: 0`。
- `pnpm build` 通过;构建不再隐式连接数据库,`/flow-board` 与 `/product-planning` 不再在 build-time 静态生成超时。
- `pnpm check:quality` 通过,覆盖 lint、日志脱敏、品牌、CI、env、secret、metadata、测试卫生、helper 测试、TypeScript、diff hygiene 和 tracked artifact。
- `pnpm audit:security` 通过 high/critical 门槛;当前剩余 `1 low / 44 moderate`。
- `pnpm smoke:routes` 通过:
- `/` 返回 `200`
- `/classic` 返回 `307` 到 `/`
- `/chat/test-id` 返回 `307` 到 `/`
- `/settings` 未登录返回 `307` 到 `/login?callbackUrl=%2Fsettings`
## Reviewer 建议审查顺序
1. 先看仓库治理与 CI:`package.json` scripts、`.github/workflows/*`、`scripts/check-*.mjs`、`docs/release-readiness.md`。
2. 再看产品入口变化:`app/(chat)/page.tsx`、`app/(chat)/classic/page.tsx`、`app/(chat)/chat/[id]/page.tsx`、`components/home/*`。
3. 然后看设置页工程化:`app/(admin)/settings/_components/*`、`app/(admin)/settings/_lib/*`、`admin-settings-client.tsx`。
4. 再看核心模块拆分:`app/(chat)/api/chat/_lib/*`、`components/canvas/chat-panel/*`、`components/canvas/nodes/image-node/*`。
5. 再看生产构建边界:`lib/db/migrate.ts`、`app/(chat)/flow-board/page.tsx`、`app/(chat)/product-planning/page.tsx`、`app/layout.tsx`。
6. 最后看日志治理和风险面:`lib/observability/*`、`scripts/check-log-hygiene.mjs`、高风险 API route 的 logger 替换。
## 剩余远端动作
- Push 当前分支到 GitHub。
- 创建 PR,并在 PR 描述中粘贴本地验证证据。
- 如需远端验证,手动触发 GitHub Actions:基础质量门禁、Production Build、Dependency Audit、Playwright workflow。
- 根据 PR diff 做最后一次人工审查;如 GitHub Actions 与本地结果不一致,以远端 CI 为准处理。
## 当前不包含的范围
- 不删除数据库历史 Chat / Message / Vote / Stream 数据结构。
- 不把 `/api/chat` 迁移为公开 API;它仍是内部生成链路。
- 不把所有历史 `console.*` 一次性清零;日志治理采用高风险链路分批纳管。
- 不解决所有 moderate / low 依赖告警;高/critical 是当前阻断线,剩余项由依赖风险登记持续跟踪。
- 不做法律层面的商业许可证调整;License 仍以仓库根目录 `LICENSE` 为准。