chore: align release docs and repository hygiene

This commit is contained in:
2026-07-22 01:25:10 +08:00
parent b1ce837845
commit 0daea4def9
29 changed files with 44 additions and 13481 deletions

View File

@@ -1,6 +1,6 @@
# 森林AI MVP 最终验证与视觉审计
审计日期2026-07-21
审计日期2026-07-22
## 结论
@@ -19,10 +19,13 @@
| 1440×1024 | `project-ai-controlled.png` | 会话列表、受控创建入口和“不会自动生成正式对象”说明可见 |
| 1440×1024 | `project-inbox-confirmed.png` | 收集内容、分析建议、选择项、确认结果和不可重复写入状态可见 |
| 390×844 | `login-react-acro-mobile.png` | 单栏布局,无水平裁切;首屏下方内容可纵向滚动 |
| 390×844 | `project-react-acro-mobile.png` | 默认关闭导航后主内容可访问标题正常横排、URL 位于视口内,指标以 2×2 排列 |
| 390×844 | `project-navigation-mobile.png` | 项目抽屉、遮罩与关闭路径可见 |
| 1024×768 | `channel-navigation-tablet-1024.png` | 频道侧栏默认收起,可从项目轨道右侧打开抽屉 |
| 390×844 | `project-react-acro-mobile.png` | 默认关闭导航后主内容可访问;标题和项目标识位于视口内,指标以 2×2 排列 |
| 390×844 | `workbench-mobile-search.png` | 移动端保留可打开、可关闭的全局搜索入口 |
| 390×844 | `project-navigation-mobile.png` | 13 个项目可在独立区域滚动,新建项目入口保持可见 |
| 390×844 | `channel-navigation-mobile.png` | 频道抽屉、最近会话与关闭路径可见 |
| 390×844 | `project-inbox-confirmed-mobile.png` | Inbox 列表和详情按单列重排,无横向溢出 |
| 1440×1024 | `project-inbox-empty-capture-analysis.png` | 空 Inbox 从真实收集表单进入刷新与分析流程 |
视觉脚本在桌面切换到移动视口后,会等待项目轨道与频道侧栏真正进入隐藏状态再采集项目主内容,避免把 160ms 收起动画的中间帧误当成最终证据。
@@ -35,7 +38,7 @@
- 项目页取消常驻右侧检查器,布局边界变为项目轨道、频道侧栏和主内容三段连续结构;项目强调色集中在横幅和小型标记。
- 任务页从静态示例卡片改为后端工作区数据驱动的标签、计数和空状态。
- 390px 项目页不再是桌面布局左侧切片;主内容默认可见,项目与频道分别通过顶部按钮打开抽屉。
- 390px 项目概览标题保持正常横排,项目 URL 保持在容器内并可在必要时省略,四项指标使用 2×2 网格并保持标签、数值和说明横向可读。
- 390px 项目概览标题保持正常横排,持久化项目标识保持在容器内,四项指标使用 2×2 网格并保持标签、数值和说明横向可读。
- Inbox 和 AI 页面明确保留“分析/受控会话 → 用户确认 → 正式对象”的边界,不把 AI 输出表现为已经自动执行。
## 核心交互与安全边界
@@ -46,7 +49,9 @@
- 项目/任务/笔记关键词搜索;较慢的旧响应不能覆盖较新的结果。
- 被授权的外部任务或笔记只打开受限预览,不加载或切换到无所有权的项目工作区;未知结果类型不伪造项目导航。
- 项目设置更新包含写入中状态、成功刷新和中文失败提示。
- 项目设置失败时保留原编辑草稿;截图 `project-mutation-failure-draft-retained.png` 记录该状态。
- Inbox 分析只读取服务端保存的建议;确认只发送勾选的建议 identity。网络结果不确定时冻结选择并复用原请求安全重试确定性 400、409 冲突和写入后刷新失败分别处理。
- 自定义链接频道明确显示只读“暂未开放”,计划任务只展示服务端持久化元数据且不提供伪开关或固定成功结果。
- AI 会话创建只发送标题和项目上下文;同项目乱序 GET、跨项目延迟 POST 和项目切换后的加载失败不会污染当前项目状态。
- 探索数据源、自定义频道/外链、升级支付、窗口停靠和自主 Agent 等范围外能力不呈现为可成功执行的控件。
@@ -54,7 +59,7 @@
## 剩余限制
- PostgreSQL 测试带 `integration` build tag未带 tag 时不会编译。当前 `DATABASE_DSN``DATABASE_URL` 均未配置,因此本轮未运行 tagged live check在隔离测试库配置其一后,运行 `go test -tags=integration ./internal/models -run TestPostgresPing -v`缺少两个变量时测试会失败,而不是跳过
- PostgreSQL 行为测试带 `integration` build tag未带 tag 时不会编译进普通测试。只有设置隔离数据库专用的 `TEST_DATABASE_URL` 后,运行完整套件 `go test -count=1 -tags=integration ./...`缺少变量时 tagged 测试会明确失败,且不会回退读取 `DATABASE_URL`
- 当前环境未安装 Docker CLI未执行 Compose 启动、数据库初始化或容器内端到端检查。
- Web 构建成功,但主 JavaScript chunk 约 663 kB、主 CSS chunk 约 592 kBVite 报告大于 500 kB 的体积警告;这是性能优化项,不阻塞 MVP 正确性验收。
- 桌面壳构建成功Windows 链接器输出了导入库创建信息并被 Rust 记录为一条 linker warning没有构建错误。

View File

@@ -1,6 +1,6 @@
# 森林AI MVP 验证
本文记录 2026-07-21 在 Windows、PowerShell 环境中对当前仓库实际执行的验证。只有获得成功退出码或明确 HTTP 响应的命令列为通过;未满足环境条件的项目单独列出,不视为通过。
本文记录 2026-07-22 在 Windows、PowerShell 环境中对当前仓库实际执行的验证。只有获得成功退出码或明确 HTTP 响应的命令列为通过;未满足环境条件的项目单独列出,不视为通过。
## 环境基线
@@ -10,7 +10,7 @@
- Rust `1.97.1`
- Cargo `1.97.1`
- Docker CLI当前机器不可用
- `DATABASE_URL`:当前 shell 未设置
- `TEST_DATABASE_URL`:当前 shell 未设置
本地 Compose 与 `backend/etc/agent.dev.yaml` 约定 PostgreSQL 监听 `localhost:5432`API 监听 `localhost:9150`Vite 默认监听 `localhost:5173`。Compose 和开发配置中的固定数据库凭据只供本地开发,生产环境必须替换。
@@ -31,7 +31,7 @@
| 桌面端依赖安装 | 通过 | `apps/desktop``npm ci` 成功。 |
| Tauri 可执行文件构建 | 通过 | 冷构建超过单次 240 秒工具等待上限,但已完成 release 编译;同一命令增量重跑 58.3 秒退出 `0`。 |
| Tauri 安装包 | 未验证 | 本次未运行 `npm run bundle`。 |
| PostgreSQL 集成测试 | 未运行 | 当前 shell 未提供 `DATABASE_URL`。 |
| PostgreSQL 集成测试 | 未运行 | 当前 shell 未提供隔离数据库专用的 `TEST_DATABASE_URL`。 |
## 本地启动检查
@@ -111,11 +111,11 @@ go test -count=1 ./...
```powershell
$repoRoot = (git rev-parse --show-toplevel).Trim()
Set-Location (Join-Path $repoRoot 'backend')
$env:DATABASE_URL = '<隔离测试库连接串>'
go test -tags integration ./internal/models -run TestPostgresPing -v
$env:TEST_DATABASE_URL = '<隔离测试库连接串>'
go test -count=1 -tags=integration ./...
```
连接串必须通过安全的本地或 CI secret 注入,不能提交到仓库。本次 `DATABASE_URL` 未设置,因此没有运行,也不列为通过。
连接串必须通过安全的本地或 CI secret 注入,不能提交到仓库。Tagged 测试不会读取运行环境的 `DATABASE_URL`;缺少 `TEST_DATABASE_URL` 时会明确失败。本次未设置该变量,因此没有运行实时数据库测试,也不列为通过。
### Web
@@ -128,7 +128,7 @@ npm run lint
node scripts/structure-check.mjs
```
四条命令本次均退出 `0`。视觉检查覆盖桌面和移动登录页、工作台、项目导航、Inbox 确认、AI 会话受控创建、深色模式、无横向溢出和无未预期 console error。
四条命令本次均退出 `0`。视觉检查覆盖桌面和移动登录页、1024px 频道抽屉、390px 搜索与项目抽屉、13 项目滚动、空 Inbox 收集到分析、Inbox 确认、失败草稿保留、AI 会话受控创建、深色模式、无横向溢出和无未预期 console error。
`npm run build` 生成:
@@ -145,6 +145,11 @@ node scripts/structure-check.mjs
- `project-react-acro-dark.png`
- `project-navigation-mobile.png`
- `channel-navigation-mobile.png`
- `channel-navigation-tablet-1024.png`
- `workbench-mobile-search.png`
- `project-inbox-empty-capture-analysis.png`
- `project-mutation-failure-draft-retained.png`
- `project-custom-link-unavailable.png`
- `project-inbox-confirmed.png`
- `project-inbox-confirmed-mobile.png`
- `project-ai-controlled.png`
@@ -200,7 +205,7 @@ npm run bundle
2. 使用仅供开发的演示账号登录,并确认生产部署未使用默认凭据。
3. 创建项目,修改项目设置,再刷新确认数据保留。
4. 创建项目内标签和任务,验证任务卡显示真实标签与状态。
5. 上传文件资料,确认返回路径是相对存储路径,且越权项目不能留下文件。
5. 上传文件资料,确认公开响应只包含不透明存储键、不泄露物理路径,且越权项目不能留下文件。
6. 创建计划任务元数据,确认界面没有暗示自主 Agent 已执行。
7. 收集一条 Inbox 内容,先分析建议;此时不应出现正式对象。
8. 选择一条或多条服务端建议并确认,验证生成对象保留来源 Inbox ID。
@@ -218,7 +223,7 @@ npm run bundle
- AI 输出只形成待确认草稿;用户确认前不创建任务、笔记或资料。
- 项目标签保持项目内范围;任务分享的 note/source 与任务属于同一项目。
- 被指派人只看到任务和明确分享的关联对象。
- PostgreSQL 集成测试只使用显式 `DATABASE_URL` 指向的隔离测试库。
- PostgreSQL 集成测试只使用显式 `TEST_DATABASE_URL` 指向的隔离测试库,不读取运行环境的 `DATABASE_URL`
## 文档一致性检查