Files
creator-hub/docs/evidence/tanstack-start-control-plane-manual-validation.md

7.5 KiB
Raw Permalink Blame History

TanStack Start dashboard:真实 control-plane 手工联调记录

最终复核已覆盖先前审核指出的两项缺口:原登记的 plan01-gateway127.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-planehttp://127.0.0.1:8082
  • 验证数据库:creatorhub-plan01-pg,宿主端口 15432
  • 浏览器工具:browser-harness
  • 录制:/home/rogee/.config/browser-harness/agent-workspace/recordings/creatorhub-tanstack-control-plane-pass350 帧
  • 交互录制:.../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-gateway127.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 启动失败)均保留在下方操作记录,不被当成成功。

联调边界检查

  • /healthz204
  • /readyz204
  • /api/gateways200
  • /api/phase-a/accounts200
  • /api/browsers200
  • /api/creator/accounts200
  • /api/creator/updates:通过前端 /api 代理收到初始 retry: 5000 SSE 事件;测试客户端主动超时断开后 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-gateway127.0.0.1:28187)上点击“启动 抖音验收浏览器”,页面显示“运行中 / 可调度 / CDP http://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 作为验收依据。

曾发现并修复的联调阻塞

  1. creator SSE 的 SendStreamWriter 回调在请求上下文回收后再次调用 c.RequestCtx(),会触发 nil pointer panic。现在在开始流式写入前捕获 requestCtx,并增加了取消回归测试。
  2. 本地验证库的 migration ledger 已记录到较新版本,但实际仍保留 browser_imageimage_versionold_image_version 等旧列名,导致浏览器和审计 API 返回 500。开发阶段允许破坏性重建/修正数据库,因此仅在本地验证库执行了 migration 017 对应的表和列重命名;没有加入代码兼容层。旧 Docker image ref 不符合新路径约束,因此该本地修复未强行添加新 check constraint。

自动检查结果

检查 结果
npm --prefix web run test 12 files101/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 为:

  • high1
  • moderate5
  • low1
  • total7

之后升级了 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 非阻断提示。这些提示不影响产物或联调,按原范围作为后续单独清理项保留。