Commit Graph
237 Commits
Author SHA1 Message Date
rogee 2c4fe307f7 feat(api): 账号环境指纹更新端点——PUT /creator/accounts/:id/fingerprint 单独保存并按需重启
- Store.UpdateAccountFingerprint:更新账号绑定环境指纹,seed 保持账号派生值,携带代理直接拒绝(门禁对齐 CreateBoundEnv)
- 运行中的环境先停后启以应用新指纹,未运行仅落库下次启动生效;账号资源锁防并发冲突
- accountEnvironmentView 内联 fingerprint 回显,编辑页预填数据源
- 覆盖:store 层 seed 保留/校验拒绝/JSON 往返、路由畸形入参、PG 端到端(保存/回显/持久化/400/404)
2026-09-30 17:12:56 +08:00
rogee 50aada884f fix(web): 监控账号画像对齐抖音主页形态——关注/粉丝/获赞独立数字行,作者介绍去 label 独立行,昵称后挂抖音主页链接,移除平台账号项 2026-09-30 17:03:05 +08:00
rogee 2caaf2d606 feat(web): 监控账号详情展示获赞与作者介绍——介绍单行省略,「更多」hover 弹出全文 2026-09-30 16:38:01 +08:00
rogee 3e809c4fc7 feat(creator): 监控账号画像采集入库——粉丝/关注/获赞/作品数与作者介绍
抖音 profile/other 响应本就携带画像数据但被丢弃,同步链路也无回填。
- migration 1046: creator_competitor 增加 signature、total_favorited 列及非负约束
- douyin 解析层: TargetProfile 增加签名与计数,total_favorited 兼容字符串大数
- store: UpdateCompetitorProfile 改为画像回填(nil 计数保留原值)
- 同步链路: 作品采集成功后拉取 profile 回填,失败仅记日志不阻断
2026-09-30 16:37:56 +08:00
rogee a9358f5c96 refactor(web): 竞品分析复用 WorksGallery,与监控账号作品列表同一套展现
- WorksGallery 支持 sourceId 可选与 extraFilters 透传
- 竞品页删除自建作品卡片/详情抽屉/分页,仅保留筛选卡
- 修复日期筛选序列化(dayjs 模板串产生非法 RFC3339)
2026-09-30 15:50:18 +08:00
rogee 5401093818 fix(web): 竞品作品卡片与详情不再展示发布状态标签,对齐监控账号作品列表 2026-09-30 15:40:20 +08:00
rogee 21a576ab20 fix(web): 竞品作品无标题时不再展示占位文案 2026-09-30 15:32:35 +08:00
rogee f1cabd2c30 feat(accounts): 自有账号列表展示运行环境——monitor-views 内联网关/环境/出口视图,状态列升级可调度判定 2026-09-30 15:15:34 +08:00
rogee 78b7f51596 fix(web): 编辑社媒账号页对齐全站布局——页头槽接管标识与操作,主体两张 Card 承载 2026-09-30 14:49:02 +08:00
rogee 17abec449f style(gateway): gofmt 探活测试文件
douyin-release-gate / verify (push) Failing after 3m42s
2026-09-30 14:33:37 +08:00
rogee e12e03b3b4 feat(gateway): 创建/编辑网关后立即异步探活健康状态
- POST/PUT /api/gateways 成功后后台立即探活一次 /healthz 并覆盖落库,不阻塞请求
- probeAndRecordGateway 抽出单网关探活+落库复用;探活超时改为 var 供测试注入
- 网关页保存成功后延迟 2.5s 刷新一次,尽快展示最新健康状态
- 测试:立即探活、慢网关不阻塞、不可达落 unhealthy
2026-09-30 14:33:31 +08:00
rogee eab193007c refactor(accounts): 移除「授权状态」概念——账号收敛为启用/暂停单一状态机
douyin-release-gate / verify (push) Failing after 3m43s
产品已收敛为自有账号管理,撤销授权在 UI 无入口、状态恒为 authorized,属废弃语义:
- migration 1045:social_account DROP authorization_status/revoked_at/authorization_kind
- 删除 revoke API 路由与 RevokeAccount/disableAccount 状态机分支(PauseAccount 独立)
- accountRunnable/就绪判定/采集过滤/登录校验删除 authorization_status 检查
- EnvironmentContext/AccountProfile 契约删字段;前端删「已授权/已撤销」展示与 readiness 分支
- 测试同步:revoke 流程/409 用例删除,seed 语句去列;dev 库测试遗留 revoked 账号待 UI 删除
2026-09-30 14:18:34 +08:00
rogee 60bc2784a4 fix(web): 409 冲突提示透出后端 reason_code 分类
douyin-release-gate / verify (push) Failing after 3m54s
start/resume 被拒时后端返回 reason_code(binding_missing 等),前端 conflictMessage
此前丢弃该字段只显示笼统文案,无法定位不可运行原因。
2026-09-30 13:46:52 +08:00
rogee d535f178d6 fix(web): 强制同步运行中禁用按钮——列表/详情统一 sync_status=running 判定
- 列表行与监控详情页:sync_status=running 时按钮显示「同步中…」并禁用,
  防止与调度器并发触发导致 409;自有账号详情请求期间 loading 禁用
- conflictMessage:409/503 无 hint 时也透出后端分类 error 文案,
  兜住「请求失败」空白提示;回归见 TestCompetitorSyncClaimFailureClassification
2026-09-30 12:55:41 +08:00
rogee c6a4d20c03 feat(accounts): 我的账号列表展示画像指标并新增「启动」操作
douyin-release-gate / verify (push) Failing after 4m12s
- 列表新增粉丝/关注/获赞/互关/评论数值列(formatCount 风格对齐监控列表),作品数据列作品数取最新快照回填
- 操作列新增「启动」:POST /phase-a/accounts/:id/start 启动环境,成功后弹窗展示网关浏览器登录画面
  (login-qr 截图,默认打开个人中心页),支持刷新画面与核验浏览器身份;409 就绪原因透传提示
- 详情页趋势图与账号数据卡补互关序列
- 新增源码断言测试 account-management-list.test.cjs(4 用例全过,antd lint 0 警告)
2026-09-30 12:50:19 +08:00
rogee 04407fb6b2 feat(gateway): 扫码登录默认打开 douyin.com/user/self 个人中心页
未登录访问会引导登录,登录后浏览器停留在账号个人中心(用户指定页面,替代原首页)
2026-09-30 12:50:19 +08:00
rogee 923fd64879 feat(creator): 账号画像补互关指标并让监控列表携带最新快照与评论聚合
- migration 1044:creator_account_metric 加 friend_count(self profile 接口 user.friend_count,即互关数)
- douyin connector 解析 friend_count(负值校验同其他计数),快照落库透传
- monitor-views 视图新增:每账号最新非空画像计数(粉丝/关注/获赞/作品/互关,按采集时间回填缺失维度)
- 评论口径:自有作品最近指标 comments_count 求和(comment_total),无账号级评论采集源
- 详情页指标时序 AccountMetricPoint 带回 friend_count
2026-09-30 12:50:10 +08:00
rogee 998871e3c4 fix(creator): 强制同步抢锁失败分类提示——租约被占/竞品停用分别返回可读 409
douyin-release-gate / verify (push) Failing after 4m57s
- ClaimCompetitorSync 失败后经 SyncClaimFailure 复查竞品状态,
  区分 ErrSyncInProgress(该竞品正在同步中)与 ErrSyncDisabled(已停用)
- creatorError 新增两分类映射 409;通用冲突文案保持不变
- 前端竞品强制同步去掉固定'强制同步失败'后缀,直接展示分类提示
- 回归:TestCompetitorSyncClaimFailureClassification(PG 集成)
2026-09-29 15:11:23 +08:00
rogee a9ac84f459 feat(accounts): 创建账号表单支持指纹浏览器环境配置
douyin-release-gate / verify (push) Failing after 4m3s
- 前端创建页折叠区块:平台/品牌/版本/语言/时区/硬件并发/关闭伪装维度,留空使用默认
- 后端 accountRequest 增加 fingerprint,校验前置 400(避免账号已建、绑定失败的中间态)
- seed 服务端从账号派生、proxy 由网络出口管理,两者不接受表单值
- 补建端点支持携带指纹重试;start 自愈补建保持零值指纹
- PG 集成测试:指纹落库/非法值拒绝不建号/补建指纹重试
2026-09-29 14:49:59 +08:00
rogee a94bdf7921 feat(gateway): 网关健康状态——后台定时探活只保留最近一次结果并在列表展示
- 迁移 1043:gateway 表加 health_status/last_check_reason/last_checked_at
- Store.RecordGatewayCheck 覆盖写最近一次探活结果,Create/Update/List/Get 全量返回健康字段
- api.RecordGatewayHealthChecks 并发探 /healthz:连接失败或 5xx 判离线,其余判在线(401 等异常写入原因供排查)
- workers 每 30 秒一轮,app 启动接线
- 网关管理列表新增健康状态列:在线/离线/未检查 Tag,原因与检查时间收进 Tooltip
2026-09-29 14:47:49 +08:00
rogee 09a039eed2 fix(gateway): 删除/清理代际放行——runtime_id 为空或 sentinel 时不再与 released 残留代冲突 409
douyin-release-gate / verify (push) Failing after 4m30s
- pause 后(只剩 released 记录)账号删除链路:控制面以空/哨兵 runtime_id 发 DELETE,
  _find_record_for_generation 不再回落命中 released 旧代,remove/purge 静默无副作用返回
- running 等实物代仍严格 fence(真实代 DELETE 行为不变)
- 回归:sentinel remove noop + purge released profile 两用例
2026-09-28 23:54:32 +08:00
rogee ddd1396629 docs(plan): 三阶段迭代完成状态标注(Phase 3 数字主键重构合入) 2026-09-28 23:16:02 +08:00
rogee 2e96ed49b8 test(api): 审计过滤端点 PG 集成测试(auditFilter 参数校验与分页) 2026-09-28 23:04:55 +08:00
rogee 25098b9f81 fix(web): 出口重绑改走 POST /browsers/:alias/rebind(原 /network-exits/:id/rebind 无对应后端路由) 2026-09-28 22:30:36 +08:00
rogee 799087fcb1 test(api): 账号删除链路 PG 集成测试 + 测试直写 SQL 适配 044 列名(social_account/browser_env/audit_event) 2026-09-28 22:30:31 +08:00
rogee fba7ee6236 refactor(creator): store SQL 适配 044 数字主键——WHERE 走文本 UNIQUE 列、metric 插入经 work_id 子查询 2026-09-28 22:30:23 +08:00
rogee 65d0801290 feat(schema): 044 数字主键——全表 bigint IDENTITY、文本标识降级 UNIQUE、FK 重指
- 迁移 044:9 张表换 bigint IDENTITY 主键,account_id/exit_id/competitor_id/work_id/comment_id/job_id/rule_id 降级 UNIQUE;
  引用表 FK 重指 bigint;checkpoint 删派生文本 id;creator_settings 布尔 PK 换 bigint identity + 单行表达式唯一索引;
  social_account.profile_id 死列删除
- seed 派生改 SQL:CreateBoundEnv 用 jsonb_set(account.id+1000),deriveSeed 删除;Fingerprint.Validate 允许 Seed=0(派生态)
- 三域 store SQL 列名适配;appendAudit/审计过滤经 JOIN 读回文本标识;UPDATE..RETURNING..FROM 拆两段式
- 对外 API 契约不变:模型/JSON/URL 全部保持文本 ID
- account 域补 PG 生命周期集成测试(列表/凭据解析/暂停吊销恢复/审计过滤/删除链路),覆盖率 22.4%→73.9%
2026-09-28 22:30:14 +08:00
rogee 7dea052e55 feat(web): 账号即环境 UI 收敛——删 /browsers 页面,环境并入账号详情
- 删除 /browsers 列表/创建/详情页与菜单项,运行环境不再是独立资源
- 账号详情:GET /api/phase-a/accounts/:id 内联 environment 字段
  (网关/出口/绑定版本/运行实例/不可调度原因),固定资源卡直接展示
- 状态卡两态开关:暂停→「启动账号」(start=resume+启动环境),
  运行中→「暂停账号」(联动停环境);出口重绑卡片内完成
  (POST /network-exits/:id/rebind 返回内联 environment,出口切换不再跳环境页)
- 删除 creator/settings 残留的转写服务字段(后端 settings 无此列)
- helpers.ts accountReadiness 改用 runtime_id/runtime_cleanup_pending
- network-exits 列表绑定账号列改由账号列表内联数据驱动
- 全量验证:go test ./...(PG)全绿、tsc --noEmit 通过、max build 通过、
  node --test 12/12 通过
2026-09-28 20:30:23 +08:00
rogee bcc33fe497 feat(accounts): 账号即环境——创建即绑定、幂等补建、start 组合接口
- POST /api/phase-a/accounts 创建成功即绑定环境:alias=账号文本 ID、
  唯一网关自动取(缺失 404/多网关 409)、出口直连、seed 由账号 ID 派生
  (deriveSeed,数字主键落地后改 bigint id+1000);绑定失败 503 透传 account_id
- POST /api/phase-a/accounts/:id/environment 幂等补建:已绑定原样返回
- POST /api/phase-a/accounts/:id/start = resume + 启动环境(环境缺失自愈补建,
  审计对齐全);吊销账号 start → 409 readiness blocked;停止沿用 pause
- 测试:deriveSeed 纯单测(确定性/值域/固定向量)+ PG 集成覆盖
  绑定失败恢复、补建幂等、seed 断言、start 激活与冲突分支;
  RegisterAccountRoutes 参数升级为 HubStore,路由矩阵登记新端点
2026-09-28 20:10:50 +08:00
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 c2bccba352 refactor(web): 删除前端空转链路(任务中心/草稿/attempt/运营工作台/素材面板)
- 删页面目录 tasks/ drafts/ attempts/ creator/workbench/
- 竞品页移除素材处理 Drawer 与素材操作
- metadata 菜单与页头规则同步收敛
- api.ts/listQuery.ts 移除对应 resource 与函数
- 固定表头测试文件清单同步
2026-09-28 15:54:32 +08:00
rogee 35f2ebd44c chore: merge feature/account-bound-runtime web ui fixes
douyin-release-gate / verify (push) Failing after 3m30s
2026-09-28 15:38:25 +08:00
rogee 0a988fb1b3 fix(web): conditional table scroll and fixed first column 2026-09-28 15:28:31 +08:00
rogee 7ed542df4f fix(web): unify list tables with fixed header, fixed actions and pagination 2026-09-28 15:20:55 +08:00
rogee 630a4feab1 fix(web): use text buttons for table row actions 2026-09-28 14:33:54 +08:00
rogee 5b2756fea8 fix(web): spacing for monitoring account tags and square larger avatar 2026-09-28 14:24:49 +08:00
rogee 6958330a5f fix(web): hide title for untitled works
douyin-release-gate / verify (push) Failing after 3m9s
2026-09-28 12:56:43 +08:00
rogee 5dcabcb3cd fix(web): split monitoring account metrics into columns 2026-09-28 12:52:18 +08:00
rogee ae7dec7e88 fix(web): restore monitoring account table without platform account key 2026-09-28 12:44:38 +08:00
rogee b625562c9a fix(web): 作品卡指标 GRID 上移至封面正下方内容上方,ICON 移到数字下方
douyin-release-gate / verify (push) Failing after 3m13s
- WorkStatsGrid 移到卡片 body 顶部(紧贴封面边框行),标题/描述/发布时间在其下
- 每列改为数字在上(14px 加粗)、图标+标签在下(11px 辅助色),单列纵向展示
- 单测断言同步更新,node --test 4 例全绿,tsc/antd lint 通过
2026-09-28 11:57:46 +08:00
rogee 77e79982fa fix(gateway): douyinpic 图片 fetch 改 credentials omit——修复封面缓存全量 502
douyinpic CDN 恒返回 Access-Control-Allow-Origin:'*',跨站 fetch 带 credentials:'include'
按 CORS 规范必被拒(TypeError Failed to fetch),封面回填全部失败、creator_work_cover 落 0 行。
公共图片不需要 cookies,改 credentials:'omit' 后浏览器内 fetch 200,回填链路恢复。
验证:test_gateway 55 例全绿;实测 anon 浏览器 image fetch 200 image/jpeg;强制同步后
creator_work_cover 落 7/7(该账号全部作品),/works/:id/cover 正常输出 JPEG。
2026-09-28 11:57:28 +08:00
rogee c7fc67626e fix(web): 趋势图改用 colorField,折线分色并显示指标图例 2026-09-28 11:47:16 +08:00
rogee 7f69f487b5 fix(web): 账号画像标题去上边距,移除标题下多余的抖音号信息行
douyin-release-gate / verify (push) Failing after 3m13s
2026-09-28 11:24:04 +08:00
rogee a576018560 refactor(web): 监控账号详情页移除页头按钮左侧账号标识展示区
douyin-release-gate / verify (push) Failing after 30s
2026-09-28 11:21:46 +08:00
rogee 8748f899d4 feat(web): 监控作品卡片展示描述,观看/点赞/评论/分享全宽 GRID 贴封面下方
douyin-release-gate / verify (push) Failing after 3m20s
- WorksGallery 卡片封面改走本地缓存 /works/:id/cover(WorkCover 与竞品分析页同链路,
  替换会过期的 douyinpic 签名 URL)
- 卡片新增作品描述(body,两行省略)
- 指标从标题下横排小字改为封面下方全宽四列 GRID(观看/点赞/评论/分享,上值下图标行)
- WorksGallery 为监控账号详情与自有账号详情共用,两处同步生效
- 测试:works-gallery-card 3 例 + 既有 1 例全绿,tsc/antd lint 通过
2026-09-28 11:19:52 +08:00
rogee 733b2d4b95 Merge branch 'fix/competitor-page-review-20260928' 2026-09-28 11:15:01 +08:00
rogee bf4ded45b1 fix(web): 作品统计 Drawer 移除顶部封面图 2026-09-28 11:14:22 +08:00