rogee 0879d9fd25 refactor(schema): 迁移 043 schema 收敛——42→19 张表,统一迁移 runner
- 迁移 043 一次到位:runtime_instance/environment_binding 并入 browser_env(账号即环境)、
  credential_reference 并入 social_account、work_source/metric_plan 并入 creator_work、
  sync 租约并入 creator_collection_checkpoint(kind='sync')、audit_event 瘦列、
  creator_settings 去转写列、TRUNCATE 账号域(竞品采集数据无损保留)
- 统一迁移 runner:environment.Open 串起 001 账号基座 + hub 链 + 038 creator 版本回填
  (v+1000) + creator 1017-1042 + 043;account/creator Open 不再迁移
- 三域 store SQL 全量适配:CreateBoundEnv 就绪门禁、SetRuntimeCleanupPending fence
  语义(未知代 MissingRuntimeID 允许登记并释放活跃实例)、metric_plan 列并入 work、
  checkpoint sync 租约、deletion 链路重写
- api 适配:envView 去 runtime_instance_id、audit filter 去任务列、browser_env 单表查询
- 测试:迁移 043 形态探针、迁移不可变映射新路径、legacy 迁移重放子测试重写、
  fence/出口生命周期/单来源 upsert 语义覆盖;CREATORHUB_POSTGRES_TEST_URL 全绿,
  environment 70%/creator 67.5% 覆盖率,tsc 通过
2026-09-28 19:48:55 +08:00

CreatorHub

面向团队的新媒体多账号运营管理平台,统一管理浏览器环境、代理资源、账号池、负责人和运营任务。

当前阶段

业务范围与验收以 docs/plan01.md 为准;离线检查不能替代真实平台验收。

浏览器环境由每台机器上的 native browser gateway + Xvfb 管理。gateway 不访问 Docker socket,不创建容器、镜像、卷或网络;登录 Profile 和正式素材持久保留,任务临时资源按执行归属清理。

当前目标是单机单节点闭环;多节点调度、A/B 环境和跨机恢复另立目标。

本地运行

native gateway 必须先在宿主机以非 root 用户运行。准备已安装的 fingerprint Chromium、Xvfb、systemd user session 和 gateway 配置:

mkdir -p ~/.config/creatorhub
cp deploy/browser-gateway.env.example ~/.config/creatorhub/browser-gateway.env
$EDITOR ~/.config/creatorhub/browser-gateway.env
scripts/install-native-browser-gateway.sh
curl --fail --silent --show-error http://127.0.0.1:8081/healthz

首次部署可生成控制面凭据:

export CREATORHUB_PORT=8080
export CONTROL_PLANE_USERNAME=creatorhub
export CONTROL_PLANE_PASSWORD="$(openssl rand -hex 24)"
export CREATORHUB_CREDENTIAL_MASTER_KEY="$(openssl rand -base64 32)"

docker compose config --quiet
docker compose up --detach --build

Compose 只运行 control-plane 和 PostgreSQL,浏览器 gateway 仍是宿主机 systemd user service。启动后检查:

docker compose ps
curl --fail --silent --show-error "http://127.0.0.1:${CREATORHUB_PORT:-8080}/healthz"
curl --fail --silent --show-error "http://127.0.0.1:${CREATORHUB_PORT:-8080}/readyz"
docker compose logs --tail=200 creator-hub postgres

打开 http://127.0.0.1:${CREATORHUB_PORT:-8080} 登录。首次配置:

  1. 在「网关管理」注册 gateway。control-plane 在 Compose 中运行时使用 http://host.docker.internal:8081;裸机运行 control-plane 时使用 http://127.0.0.1:8081。令牌必须与 gateway 配置一致。
  2. 创建抖音账号和运行环境,显式启动环境;浏览器由 gateway 使用宿主机配置的默认运行时。
  3. 在账号页显示登录二维码,完成登录后核验浏览器身份。
  4. 按验证文档手工完成抖音采集、结果保存、停止、再启动和资源释放检查。

已有数据的重启必须复用原控制面主密钥、gateway 令牌、Profile 根目录和素材目录。不要使用 docker compose down -v,也不要删除 gateway 的 Profile 根目录。

停止控制面和数据库:

docker compose down
systemctl --user stop creatorhub-browser-gateway.service

本地开发(分开启动)

首次安装前端依赖:

npm --prefix web ci --ignore-scripts

分别在四个终端运行:

npm run db        # PostgreSQL 依赖
npm run gateway   # native browser gateway
npm run backend   # Go control-plane,Air 自动重载
npm run frontend  # Umi Max 前端,支持 HMR

npm run backend 不会自动启动数据库或 gateway;先启动 db 和 gateway。npm run gateway 直接运行当前用户的 native gateway,不要求安装 systemd 服务。修改 browser_gateway 的 Python 文件后,重启该命令。

服务地址:

端 地址 说明
前端 http://127.0.0.1:8099 固定端口(STRICT_PORT,被占用时启动报错而非递增);/api 代理到本地 control-plane
control-plane http://127.0.0.1:8082 Go 热加载
native browser gateway http://127.0.0.1:28187 宿主机 Xvfb/浏览器生命周期
PostgreSQL 127.0.0.1:15433(可由 CREATORHUB_POSTGRES_PORT 覆盖) 仅数据库依赖使用容器

开发默认登录信息和目录可在 .env.example、deploy/browser-gateway.env.example 中查看。不要把真实密码、Cookie、验证码或令牌写入仓库。

最小检查:

go test ./...
go vet ./...
go build ./cmd/control-plane
go test -race ./...
npm --prefix web ci --ignore-scripts
npm --prefix web run build
docker compose config --quiet
S
Description
No description provided
Readme
3.2 MiB
Languages
Go 66.4%
Python 21.5%
TypeScript 10.8%
JavaScript 0.9%
PLpgSQL 0.3%