9.2 KiB
9.2 KiB
单节点 native browser 验证记录
- 执行时间:2026-09-18(Asia/Shanghai)
- 执行者:本 worktree 的开发检查
- worktree:
/home/rogee/Workspace/creator-hub-native-browser - 分支:
refactor/native-browser-xvfb-impl - 基线:
7e3808cf4ce453b3583079680a3b59ca2ed64ad4 - 远程同步:执行时
main与origin/main均为7e3808cf4ce453b3583079680a3b59ca2ed64ad4;当前 worktree 未改写原工作目录。
前置条件
| 项目 | 实际记录 | 状态 |
|---|---|---|
| Linux 用户 | rogee,UID 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返回201,state=running、status=ready、ready=true,返回独立 display、CDP 端口、runtime/network ID 和proxy_ready=true。 - stop 返回
204,delete 返回204;查询结果为state=released、cleanup_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=running、ready=true、node_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:28082和0.0.0.0:5175;本机 LAN 地址为10.1.1.104,Vite 输出该地址。- smoke 结束后停止临时进程并删除临时 schema/目录;原工作目录中已存在的服务和端口未触碰。
33 项单节点记录
| ID | 记录结果 | 证据/阻塞原因 |
|---|---|---|
| A01 | 通过 | 独立 native runtime 新 Profile 通过 VNC 手工登录;control plane 身份核对返回 logged_in,Profile 未接管用户的 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 gateway:69 tests 通过;生产文件覆盖率分别为
douyin.py 67%、gateway.py 68%、proxy.py 68%、runtime.py 76%,均达到 65% 要求。 - Go:
go test -p 1 -count=1 ./...、go test -race -p 1 -count=1 ./...、go vet ./...、go build ./cmd/control-plane通过。 - Frontend:Vitest 101 tests 通过;coverage statements
66.31%、lines68.73%;Vite build 通过。默认 worker 在机器高负载时曾启动超时,改用单 worker threads pool 后通过,未修改测试代码。 - 部署:
git diff --check、docs/deployment_stop_test.sh通过。 - 外部显示人工观察:临时 native gateway 复用已运行的 Xvfb
:99,runtime 在 VNC5900可见;停止/删除后恢复用户的chrome.service,原 Profile 未被覆盖。该模式仅用于单节点人工观察,默认仍是每 runtime 独立 Xvfb。 - 独立 native gateway + control plane 的真实抖音闭环记录见
native-control-plane-real-douyin-2026-09-18.md:runtime 启停、身份核对、works/comments checkpoint 均已通过;当前账号无公开作品,因此保存 0 条作品,不把空结果伪造为有数据。