Files
creator-hub/docs/evidence/native-browser-verification-2026-09-18.md

9.2 KiB
Raw Permalink Blame History

单节点 native browser 验证记录

  • 执行时间:2026-09-18Asia/Shanghai
  • 执行者:本 worktree 的开发检查
  • worktree/home/rogee/Workspace/creator-hub-native-browser
  • 分支:refactor/native-browser-xvfb-impl
  • 基线:7e3808cf4ce453b3583079680a3b59ca2ed64ad4
  • 远程同步:执行时 mainorigin/main 均为 7e3808cf4ce453b3583079680a3b59ca2ed64ad4;当前 worktree 未改写原工作目录。

前置条件

项目 实际记录 状态
Linux 用户 rogeeUID 1000,非 root 通过
Xvfb /usr/bin/Xvfb 通过
systemd systemd-run 可用,systemctl --user 可用 通过
浏览器 fingerprint Chromium 148.0.7778.215,可执行文件存在且可执行 通过
Profile/runtime 使用专用临时目录;目录权限为 0700 通过
数据库 PostgreSQL 127.0.0.1:15432;每次集成检查使用临时 schema 通过
真实平台账号/真实代理 用户已提供抖音账号并完成只读身份/作品读取;合法代理仍未提供 部分通过

自动检查

检查 实际结果 状态
Go PostgreSQL 集成测试 go test -p 1 -count=1 ./...,全部通过 通过
Go 覆盖率 总覆盖率 65.01%creator 65.9%、hub 65.8%、phasea 68.1% 通过
go vet ./... 通过 通过
control-plane 构建 go build ./cmd/control-plane,通过 通过
Go race go test -race ./...,全部通过 通过
Python gateway 69 tests 通过;生产文件覆盖率 67%76% 通过
Frontend 101 tests 通过;覆盖率 66.31%Vite build 通过 通过
Compose 配置 PostgreSQL-only Compose 配置检查通过 通过
静态旧路径检查 production gateway/control-plane 无 Docker socket、container/image/volume/network 生命周期或 Docker fallback 通过

Real native gateway smoke

正常生命周期

  • 临时 gateway 以 UID 1000 启动,监听 127.0.0.1:28183,稳定 node_id=native-smoke-node
  • /healthz 返回 204
  • /v1/info 返回 200,列出浏览器版本 148.0.7778.215
  • 创建 smoke-runtime 返回 201state=runningstatus=readyready=true,返回独立 display、CDP 端口、runtime/network ID 和 proxy_ready=true
  • stop 返回 204delete 返回 204;查询结果为 state=releasedcleanup_state=cleaned
  • 清理后 systemctl --user list-units 'creatorhub-browser-*' 为 0;临时 smoke 目录已删除。

gateway 强制重启恢复

  • 临时 gateway 监听 127.0.0.1:28184,创建一个 ready runtime 后对 gateway 进程执行 SIGKILL
  • 使用相同 state/profile 根目录和稳定 node ID 重启 gateway;重新查询得到同一 runtime,state=runningready=truenode_id=native-restart-node
  • stop/delete 均返回 204,清理后受管 systemd unit 数量为 0。

上述 smoke 使用专用临时目录;为避免测试盘空间限制,仅该 smoke 将 RUNTIME_MIN_FREE_BYTES 覆盖为 0,不能替代 20 GB 磁盘阈值用例。

局域网裸启动 smoke

  • 使用临时 PostgreSQL schema 启动 control-plane LISTEN_ADDR=0.0.0.0:28082/healthz 返回 204;使用 Vite --host 0.0.0.0 --port 5175,首页返回 200
  • ss 确认两个监听分别为 0.0.0.0:280820.0.0.0:5175;本机 LAN 地址为 10.1.1.104Vite 输出该地址。
  • smoke 结束后停止临时进程并删除临时 schema/目录;原工作目录中已存在的服务和端口未触碰。

33 项单节点记录

ID 记录结果 证据/阻塞原因
A01 通过 独立 native runtime 新 Profile 通过 VNC 手工登录;control plane 身份核对返回 logged_inProfile 未接管用户的 chrome.service
A02 阻塞 真实二维码、Profile 登录保持和版本升级未执行
A03 阻塞 缺少真实竞品账号与采集授权
A04 通过 独立 native runtime 通过 control plane scheduler 完成真实 Douyin works/comments checkpoint;当前账号无公开作品,保存 0 条,不伪造作品数据;证据见 native-control-plane-real-douyin-2026-09-18.md
A05 阻塞 同节点双账号真实采集未执行
A06 阻塞 同 Profile 并发/人工登录占用未执行
A07 阻塞 长期监听与采集并行缺少真实账号
A08 阻塞 长期 holder 借用场景未执行
A09 阻塞 缺少合法 HTTP/HTTPS/SOCKS4/SOCKS5 代理
A10 阻塞 真实人工发送授权未提供
B01 阻塞 真实采集取消未执行;代码取消路径有回归测试
B02 阻塞 真实超时任务未执行
B03 阻塞 真实代理失败与无效 browser path 未逐项手工执行
B04 阻塞 真实浏览器/Xvfb 故障注入未执行
B05 阻塞 真实目录清理失败未执行
B06 阻塞 20 GB 阈值/磁盘写满未执行;smoke 覆盖了非阈值生命周期
B07 通过 native stop/delete 重复清理回归测试和 smoke 通过
B08 通过 gateway 强杀后 generation 恢复 smoke 通过
B09 阻塞 真实长任务续租及旧 lease 迟到未执行;确定性 lease 测试通过
B10 阻塞 真实结果保存失败/响应丢失未执行
C01 通过 native gateway SIGKILL 后同 runtime/node/ready 恢复 smoke 通过
C02 阻塞 真实事件、冷却和订阅恢复未执行;事件去重/lease 自动测试通过
C03 阻塞 真实短任务最长寿命观察未执行
C04 阻塞 control-plane 强杀期间素材处理未执行
C05 阻塞 真实旧执行与新执行竞争未执行;资源归属测试通过
C06 阻塞 真实机器重启未执行
C07 通过 旧 generation/无关资源保护有确定性回归测试;真实目录手工核对未执行
D01 未执行 多节点后续目标
D02 未执行 多节点后续目标
D03 未执行 多节点后续目标
D04 未执行 多节点后续目标
D05 未执行 多节点后续目标
D06 未执行 多节点后续目标

尚未执行/阻塞的真实验收

  • Douyin 独立 native runtime 登录、身份核对、只读采集和空结果 checkpoint 已通过;Xiaohongshu、长期监听、自动响应、写操作仍未执行,分别因范围/授权/真实平台条件标记未执行或阻塞。
  • HTTP/HTTPS/SOCKS4/SOCKS5 真实出口及认证失败:缺少合法代理端点,阻塞。
  • 另一台设备的 LAN 手工访问与前端完整点击流程:未执行,需联调操作者完成;本机 0.0.0.0 裸启动 smoke 已通过。
  • 磁盘不足、真实 Profile 占用、清理失败和真实平台写操作:真实破坏性/写入场景未执行;确定性测试、真实 stop/repeat-stop/delete 和 runtime cleanup 已通过,不能把它们替代为全部真机故障证据。
  • 多节点、A/B、跨机恢复、性能对比:按目标边界延期,不属于本目标。

本记录没有保存密码、Cookie、token、真实账号标识或平台数据。

补充:用户授权的 service-managed Chrome 真实读取

初始记录完成后,用户授权使用当前由 chrome.service 管理的 Chrome,仅通过本机 CDP 127.0.0.1:9222 连接测试交互;没有让 native gateway 接管该 Chrome,也没有改变原有 :99 Xvfb/VNC 启动方式。详细记录见 native-douyin-service-browser-2026-09-18.md

  • 抖音身份核对:通过,用户提供的账号标识与平台返回 UID 匹配。
  • 抖音资料读取:通过,UID 与 sec_uid 两种查询均返回 status_code=0
  • 抖音作品第一页读取:通过,返回 13 条作品并标记存在下一页。
  • 独立 native runtime 的 control-plane works/comments checkpoint 已通过;自动响应、人工发送、代理和真实资源故障场景仍未执行,不能用只读读取结果替代。
  • 代理阻塞确认:2026-09-18 用户确认不提供合法 HTTP/HTTPS/SOCKS4/SOCKS5 代理端点;相关用例继续标记为“阻塞”,不宣称单节点目标完成。

补充:变更后自动检查复跑

  • Python gateway69 tests 通过;生产文件覆盖率分别为 douyin.py 67%gateway.py 68%proxy.py 68%runtime.py 76%,均达到 65% 要求。
  • Gogo test -p 1 -count=1 ./...go test -race -p 1 -count=1 ./...go vet ./...go build ./cmd/control-plane 通过。
  • FrontendVitest 101 tests 通过;coverage statements 66.31%、lines 68.73%Vite build 通过。默认 worker 在机器高负载时曾启动超时,改用单 worker threads pool 后通过,未修改测试代码。
  • 部署:git diff --checkdocs/deployment_stop_test.sh 通过。
  • 外部显示人工观察:临时 native gateway 复用已运行的 Xvfb :99runtime 在 VNC 5900 可见;停止/删除后恢复用户的 chrome.service,原 Profile 未被覆盖。该模式仅用于单节点人工观察,默认仍是每 runtime 独立 Xvfb。
  • 独立 native gateway + control plane 的真实抖音闭环记录见 native-control-plane-real-douyin-2026-09-18.mdruntime 启停、身份核对、works/comments checkpoint 均已通过;当前账号无公开作品,因此保存 0 条作品,不把空结果伪造为有数据。