Commit Graph
49 Commits
Author SHA1 Message Date
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
rogee 4b8cd264cc test(account): 清理测试中任务表引用 2026-09-28 17:17:12 +08:00
rogee ab7b91387c refactor(creator): 删除删除链路对运营表的引用 2026-09-28 17:16:05 +08:00
rogee c567080248 refactor(api): 删除运营链路与 runtime_use_lease
删除任务链(drafts/confirmations/tasks/attempts)、creator 运营链(策略/事件/操作/会话/消息/监听器/素材/关系)、runtime_use_lease 机制及其 API/UI;taskstate 包与对应测试一并移除。
2026-09-28 17:14:00 +08:00
rogee 143f3b263e fix(creator): 竞品分析页走查修复——封面本地缓存、作者名、指标全宽行、数量入卡片标题
- 后端:works 采集解析 author.nickname 与 video.cover.url_list(migration 042 新增
  creator_work_cover 本地缓存表);竞品同步成功后回填缺失封面(单次上限 40,余量自愈)
- 网关:新增 /douyin/image 浏览器内 fetch 图片端点(douyinpic CDN 白名单、4MB 限额)
- API:GET /api/creator/works/:id/cover 输出本地缓存封面(private 缓存头)
- 前端:封面改读本地缓存(认证 fetch + blob);点赞/评论/分享全宽行贴封面下方;
  作者名独立展示;'下次采集'移除;作品总数移入卡片标题右侧 extra
- '已核验' 状态标签补充 Tooltip 释义(发布时间已从平台数据成功解析核验)

测试:douyin 解析 3 例、cover 存储 PG 集成 1 例、网关 image 3 例全绿
2026-09-28 10:39:56 +08:00
rogee 5e391b70e9 fix(environment): 迁移不可变规则落地——034 违规补齐改为新迁移 037,修复 browser_env.image_version 残留导致的创建环境 500
douyin-release-gate / verify (push) Failing after 3m10s
- 迁移 037(幂等):补删 browser_env.image_version、audit_event 镜像列、browser_image 表
- 恢复 034 为引入时原版(撤销 6cd4cdc 的原地修改)
- 新增 migrations immutable 单测:迁移文件引入后不得改内容,要改就新增版本号
- web: 指纹种子字段中文化 + 指纹参数 400 错误映射为具体中文提示
2026-09-28 10:32:37 +08:00
rogee 03f6145a61 fix(creator): 修复导入页列表 SQL —— join 缺别名导致 /accounts/import 一进来就 500
- ListCompetitorShareJobsWithAuthor 的 LEFT JOIN creator_competitor 缺 AS competitor
  别名,ON 条件引用 competitor.id 直接报 missing FROM-clause entry(42P01)
- competitorShareJobFilter 过滤条件误用原表名 creator_competitor_share_job,
  与查询别名 share_job 不符,带 platform/status 参数时会再报缺列
- 新增集成测试 TestListCompetitorShareJobsWithAuthorSQL 覆盖 join 作者回填
  与 platform/status 过滤(此前该 SQL 无任何测试,bug 逃逸)
2026-09-28 09:19:02 +08:00
rogee 8c1fce3819 test(creator): 账号监控视图与采集状态集成断言(聚合/下次窗口/failed 错误可见) 2026-09-27 22:20:45 +08:00
rogee 3f1e2d39f4 feat(creator): 自有账号监控后端——播放量入库、账号粉丝时序快照、监控 API
- migration 040/041:creator_work 与 creator_work_metric 加 play_count;新建 creator_account_metric 时序快照表
- douyin:详情接口解析 play_count;self profile 扩展解析粉丝/关注/获赞/作品数(flexibleInt 兼容字符串)
- creator store:PlayCount 全链路(UpsertWork COALESCE/RecordMetric/ListMetrics);RecordAccountMetric/ListAccountMetrics/ListAccountMonitorViews/GetAccountCollectionStatus
- controlplane:syncCreatorOwned 成功路径末尾记账号画像快照(失败 errors.Join 不吞错);新增 monitor-views/collection-status/metrics/sync 四个路由;creatorError 补 account.ErrNotFound→404
- 测试:integration/douyin/api 断言播放量落库与 COALESCE 语义、快照覆盖语义、路由 happy path 与 409/503/404 语义
2026-09-27 22:05:01 +08:00
rogee 01d1d44a15 feat(creator): 竞品作品指标采集改用匿名浏览器并新增收藏数与爆品增速
douyin-release-gate / verify (push) Failing after 3m23s
- 指标采集不再依赖已登录自有账号:竞品作品到期后经匿名浏览器拉取
  抖音作品详情接口(detail 返回完整点赞/收藏/转发/评论快照)
- 补采收藏数:creator_work 与 creator_work_metric 新增 collect_count
  (迁移 039),works 列表与 detail 解析均映射该字段
- 新增点赞增速:LoadWorksGrowth 按时间窗计算基线增量(full/partial
  覆盖标注),works API 支持 growth_hours/min_likes_growth 筛选排序
- 前端监控详情页:作品卡片展示 24h 点赞增量、支持按增量筛选爆品;
  作品 Drawer 新增增长曲线折线图(@ant-design/charts)与收藏列
2026-09-27 19:44:49 +08:00
rogee 221ed65e32 feat(creator): 竞品作品同步改用匿名浏览器并限制并发
- 竞品同步不再依赖自有采集账号:每次同步按名额(并发上限 2)创建匿名浏览器,
  导航至抖音首页等待访客 cookie 稳定后经网关受限 fetch 拉取作品
- 调度器对到期竞品并发同步,名额耗尽时排队等待
- 平台风控语义(实测,与公开爬虫项目一致):作品列表匿名仅能取第一页
  (16-20 条),后续页一律空 envelope;空 envelope 视为正常分页终止
- 评论解析适配真实响应:reply_id="0" 为顶层评论、作者取 user 对象、
  纯图片评论(text 空但带 image_list)记为「[图片]」
- fetch 签名与白名单:注入 byted_acrawler.frontierSign 的 a_bogus,
  网关放宽响应上限至 8MB 并允许签名参数
2026-09-27 15:43:03 +08:00
rogee dbb675c658 feat(web): 强制同步按钮(列表+详情);test: 强制同步语义断言(force 立即执行并刷新 next_sync_at)
douyin-release-gate / verify (push) Failing after 3m1s
2026-09-27 13:34:57 +08:00
rogee 7cb2a0a2b4 fix(creator): 竞品同步 blocked 状态也排下次重试,避免定时获取永久失效 2026-09-27 13:22:54 +08:00
rogee 6cd4cdc57f refactor(platform): 平台收敛为抖音——移除小红书全链路,监控账号新增画像字段与卡片列表
- 移除小红书:internal/platform/xiaohongshu、controlplane XHS 分支与路由、
  browser_gateway XHS 平台模块与处理器、前端平台选项;migration 038 清理
  XHS 数据并将 creator_* 平台 CHECK 收紧为 douyin
- creator_competitor 新增 follower_count/following_count/aweme_count(仅
  接口定义返回,暂不采集回填);列表接口返回 work_count 与
  latest_published_at(creator_work_source 聚合 MAX(published_at))
- 导入页账号名称列展示作者头像(share job 列表带出 avatar_url)
- 监控账号页改 antd Listy 卡片列表(头像+粉丝/关注/作品/最近发布/同步状态);
  AccountManagementList 收敛为 owned 专用
- 环境模块清理 browser_version 遗留:migration 034 补齐删列,修复 store.go
  中 hub 别名悬空引用,测试 fixture 对齐新 schema
2026-09-24 19:30:28 +08:00
rogee c8c460da82 feat: 账号导入列表移除块级标题、刷新改图标,新增账号名称列(成功任务回填作者名) 2026-09-23 17:20:20 +08:00
rogee 4f736cba21 feat: split account management 2026-09-21 16:44:09 +08:00
rogee 86a332997e fix gateway share resolution and competitor identity 2026-09-21 12:51:58 +08:00
rogee 184cab3677 fix: randomize competitor preview gateway 2026-09-21 10:48:53 +08:00
rogee 7934435475 remove browser version management 2026-09-21 08:47:21 +08:00
rogee 8d35318c7e feat: complete TanStack dashboard acceptance 2026-09-19 12:09:01 +08:00
rogee 2275075d7e refactor: reorganize project by component 2026-09-18 19:00:31 +08:00
rogee e8f2c192ba refactor: migrate browser gateway to native xvfb 2026-09-18 16:50:18 +08:00
rogee 9ee7989f88 feat: allow account and competitor deletion 2026-09-17 16:09:17 +08:00
rogee 1bf905599c feat: unify owned and monitored accounts 2026-09-17 15:18:59 +08:00
rogee 9095920a5b fix: complete Douyin release remediation 2026-09-16 01:51:14 +08:00
rogee 977e541fef feat: finish Douyin production readiness flow 2026-09-15 09:20:51 +08:00
rogee 5867aac20f fix: complete Xiaohongshu read-only flow 2026-09-14 23:19:31 +08:00
rogee 4c37d0c9bf feat: restore Xiaohongshu read-only collection 2026-09-14 20:05:32 +08:00
rogee 44a28954cf feat: integrate creator hub douyin workflows 2026-09-14 19:22:07 +08:00
rogee 4d1dd37438 feat: complete CreatorHub gateway review fixes 2026-09-13 21:52:52 +08:00
rogee 860ecaf7ea feat: continue CreatorHub plan01 implementation 2026-09-12 20:17:29 +08:00
rogee ab7499655b fix: store network exit credentials directly 2026-09-03 15:06:35 +08:00
rogee a2669620da fix(gateways): 支持编辑名称地址和令牌
- 新增 PUT /api/gateways/:name,支持改名、修改 Endpoint 与令牌
- 网关改名通过 PostgreSQL ON UPDATE CASCADE 原子同步环境引用
- 编辑令牌留空时保留原值,避免只改地址时意外轮换
- 网关列表增加编辑弹窗并覆盖成功、冲突、缺失与失败展示
2026-09-03 13:14:13 +08:00
rogee 1e92e16ed3 fix(account): close create modal on success and make cookies optional
- AccountList.createAccount 成功后关闭创建弹窗(此前只提示不关闭)
- Cookies 前端改为可选:留空代表扫码登录场景,提交时不携带该字段
- 后端 validAccount 允许空凭据(此前 http.ParseCookie("") 直接拒绝)
- CreateAccount 空凭据时跳过 keyring 写入,不产生空值记录;回滚补偿仅在实际写入过凭据时执行

验证:go test ./... / go vet ./... / 双端构建通过;web vitest 66 用例通过(新增无 cookies 创建+弹窗关闭用例);npm run build 通过
2026-09-02 17:00:19 +08:00
rogee f054d04321 HH-912: simplify social account creation (#36) 2026-09-02 02:03:36 +08:00
rogee 3729ce910f feat: support direct network exit for runtimes 2026-09-01 19:12:48 +08:00
rogee ddd92eea89 HH-868: add fail-closed Douyin read-only connector core (#31) 2026-09-01 12:02:24 +08:00
rogee 024bf14448 HH-807: harden runtime coordination (#21) 2026-08-31 19:37:17 +08:00
rogee 1d9fd9f0e0 HH-867: 控制面单用户认证与停机通知 (#30) 2026-08-31 18:31:11 +08:00
rogee b117cc738f HH-846 / HH-799: add task recovery and audit (#27) 2026-08-31 13:19:54 +08:00
rogee 0fbfb335c4 HH-805: structure runtime audit and cover phase A HTTP (#29) 2026-08-31 12:30:59 +08:00
rogee 59c30d887c HH-847 / HH-799: add draft review and idempotent enqueue (#24) 2026-08-31 09:09:47 +08:00
rogee 14789e9401 HH-845 / HH-799: add phase A account resource pages (#23) 2026-08-31 00:58:49 +08:00
rogee 00d044d440 HH-833: fence gateway generations across replicas (#22) 2026-08-29 23:27:30 +08:00
rogee 9fc8e44123 HH-802: enforce scheduling gates and runtime leases (#20) 2026-08-29 21:44:23 +08:00
rogee f1ccfa0096 HH-803: add stable network exit orchestration (#19) 2026-08-29 07:59:55 +08:00
rogee 884505bb55 HH-800 / HH-804: unify account schema and lifecycle (#18) 2026-08-28 23:14:52 +08:00
rogee 199f7b348a feat: 多镜像版本管理与网关化环境编排 (#14) 2026-08-28 19:46:08 +08:00
rogee 829521f5bc HH-768: implement phase A offline workflow (#10) 2026-08-28 11:20:00 +08:00