7.5 KiB
TanStack Start dashboard:真实 control-plane 手工联调记录
最终复核已覆盖先前审核指出的两项缺口:原登记的
plan01-gateway(127.0.0.1:28187)通过真实 UI 完成启动与停止;竞品流程使用匿名临时浏览器完成抖音作者预览与加入监听,并确认临时 runtime 已清理。最终生命周期录制:/home/rogee/.config/browser-harness/agent-workspace/recordings/creatorhub-registered-native-gateway-lifecycle-final;竞品录制:/home/rogee/.config/browser-harness/agent-workspace/recordings/creatorhub-anonymous-competitor-final。
验收范围
- 分支:
feat/tanstack-start-dashboard - 当前源码版本:
45a29ea(工作区包含未提交的迁移修改) - 前端:
http://127.0.0.1:4176 - control-plane:
http://127.0.0.1:8082 - 验证数据库:
creatorhub-plan01-pg,宿主端口15432 - 浏览器工具:
browser-harness - 录制:
/home/rogee/.config/browser-harness/agent-workspace/recordings/creatorhub-tanstack-control-plane-pass3,50 帧 - 交互录制:
.../creatorhub-tanstack-control-plane-actions-pass2,82 帧;native 环境启动/停止重试:.../creatorhub-tanstack-control-plane-native-environment-pass2与.../creatorhub-tanstack-control-plane-native-environment-stop-final,各 8 帧
录制文件保留在本机工作区,没有复制进仓库:画面包含本地开发账号、账号标识和环境标识。本文不保存密码、Cookie、token 或录制内容中的敏感数据。
手工流程结果
登录前先清除当前标签页的本地会话,再通过 browser-harness 的真实输入事件填写登录表单;没有预置 localStorage 登录状态。
| 流程 | 路由 | 验证结果 |
|---|---|---|
| 登录 | /login → /accounts |
跳转成功,会话已建立,无 alert |
| 账号 | /accounts |
显示账号列表与账号操作,无错误文案 |
| 环境 | /browsers |
使用原登记的 plan01-gateway(127.0.0.1:28187)完成真实启动:页面显示“运行中 / 可调度 / CDP http://127.0.0.1:19000”;随后真实停止,页面显示“已停止 / 运行实例缺失” |
| 竞品 | /creator/competitors |
使用 https://www.douyin.com/video/7685553258340830507 完成匿名解析,页面显示作者预览并确认作者,随后确认加入监听;API 验证新增启用监听记录,匿名 runtime 已释放并清理 |
| 工作台 | /creator/workbench |
显示评论、线索、规则、事件监听、私信和操作记录页签,无错误文案 |
| 任务 | /tasks |
显示任务筛选和空状态,无错误文案 |
逐页加载检查确认:URL 与 TanStack 文件路由一致、主标题存在,正文不包含“控制面代理不可用”“网络请求失败”或“认证已过期”等通用错误。实际操作产生的领域提示(账号详情说明、竞品无可用已登录账号、gateway 启动失败)均保留在下方操作记录,不被当成成功。
联调边界检查
/healthz:204/readyz:204/api/gateways:200/api/phase-a/accounts:200/api/browsers:200/api/creator/accounts:200/api/creator/updates:通过前端/api代理收到初始retry: 5000SSE 事件;测试客户端主动超时断开后 control-plane 仍返回/healthz 204
本次联调还覆盖了真实 /api 代理,而不是 Playwright mock。Playwright 仍只作为既有响应式回归测试,不作为本记录的真实 control-plane 证据。
实际交互操作记录
第二份 browser-harness 录制:/home/rogee/.config/browser-harness/agent-workspace/recordings/creatorhub-tanstack-control-plane-actions-pass2,82 帧;录制对应以下真实 UI 操作:
- 账号:点击第一条“查看账号”,实际进入
/accounts/account-committed详情页。 - 环境:在原登记的
plan01-gateway(127.0.0.1:28187)上点击“启动 抖音验收浏览器”,页面显示“运行中 / 可调度 / CDPhttp://127.0.0.1:19000”;再点击停止,页面显示“已停止 / 运行实例缺失”。最终录制见creatorhub-registered-native-gateway-lifecycle-final。 - 竞品:打开“添加监听”,输入
https://www.douyin.com/video/7685553258340830507,点击“解析并预览作者”,页面显示作者预览;点击“确认作者并加入队列”,再点击“确认加入监听”,页面显示“相关账号已加入监听队列。”。control-plane API 验证新记录为启用状态;gateway 列表确认只剩已停止的plan01-douyin,没有匿名 runtime。 - 工作台:实际切换“线索、规则、事件监听、私信、操作记录、评论”六个页签,并分别等待内容加载。
- 任务:实际填写并清除账号筛选
account-committed,两次列表请求均完成。
早期记录中的旧 Docker gateway 与临时 native gateway 结果保留作历史诊断;最终复核已将登记 gateway 指向可用的 native 127.0.0.1:28187,并在该登记配置上完成启停录制,不再以临时未登记 gateway 作为验收依据。
曾发现并修复的联调阻塞
- creator SSE 的
SendStreamWriter回调在请求上下文回收后再次调用c.RequestCtx(),会触发 nil pointer panic。现在在开始流式写入前捕获requestCtx,并增加了取消回归测试。 - 本地验证库的 migration ledger 已记录到较新版本,但实际仍保留
browser_image、image_version、old_image_version等旧列名,导致浏览器和审计 API 返回 500。开发阶段允许破坏性重建/修正数据库,因此仅在本地验证库执行了 migration 017 对应的表和列重命名;没有加入代码兼容层。旧 Docker image ref 不符合新路径约束,因此该本地修复未强行添加新 check constraint。
自动检查结果
| 检查 | 结果 |
|---|---|
npm --prefix web run test |
12 files,101/101 passed |
npm --prefix web run test:coverage |
Lines 68.57%,高于 65% 门槛 |
npm --prefix web run typecheck |
passed |
npm --prefix web run build |
passed |
npm --prefix web audit --audit-level=low |
0 vulnerabilities |
go test ./... |
passed |
go vet ./... |
passed |
go build ./cmd/control-plane |
passed |
依赖审计数字的解释
目标记录中的“7 个漏洞(1 high、5 moderate、1 low)”是迁移中途的基线,不是当前结果。对应基线 npm audit --json 为:
- high:1
- moderate:5
- low:1
- total:7
之后升级了 TanStack Start 到 1.168.56、Vite 到 7.3.6,并完成 npm audit fix。中间结果曾只剩 1 个 low;最终当前 lockfile 的审计结果为 0。因而当前仓库不存在需要继续声明为“仍有 7 个”的漏洞;7 项已作为依赖升级的一部分处理完毕。当前阶段按使用者确认不再扩展安全范围,也不恢复旧 lockfile;恢复旧 lockfile 会重新引入已知漏洞。历史基线与当前 0 的数字保存在 docs/evidence/tanstack-start-audit-baseline-7.json,供生产上线前安全复核。
构建提示
构建退出码为 0。完整当前输出保存在 docs/evidence/tanstack-start-build-output.log,其中可复核 ✓ built、产物清单及 Nitro 提示。依赖噪声过滤前的完整基线保存在 docs/evidence/tanstack-start-build-warning-baseline.log,可复核 TanStack/use client 与 Nitro empty-chunk warning;当前配置过滤了已知依赖噪声,仍输出若干 Generated an empty chunk 非阻断提示。这些提示不影响产物或联调,按原范围作为后续单独清理项保留。