Commit Graph
219 Commits
Author SHA1 Message Date
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
rogee 2d68570465 fix(web): 作品统计评论列表改两列——作者时间合并列、内容完整换行显示 2026-09-28 11:09:07 +08:00
rogee 8fe66f24a0 fix(web): remove duplicate monitoring row spacing and border 2026-09-28 10:48:56 +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 85ffe6906f fix(browsers): 表单校验报错文案可读化——seed/端口用完整中文句子替代裸数字区间 2026-09-28 09:48:08 +08:00
rogee 6953c32434 fix(gateway): 端口冲突报错友好化——Python 层 EADDRINUSE 一行化,dev 脚本启动前预检并给出占用进程与处理建议 2026-09-28 09:33:05 +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 2baa2e8406 Merge branch 'fix/ui-review-20260927'——UI 走查问题全量修复:详情页 Flex vertical、工作台假加载、列表按钮规范、App.useApp 统一、任务筛选下拉、竞品素材 Drawer
douyin-release-gate / verify (push) Failing after 3m9s
2026-09-28 08:57:20 +08:00
rogee 5acc89edf4 fix(ui): 我的账号操作列去掉与账号名重复的「查看账号」入口(走查 P2-#10) 2026-09-28 07:37:13 +08:00
rogee 1a46ec0231 fix(ui): 竞品分析素材流程改 Drawer、日期筛选取 DatePicker、选择素材按钮降级并区分已选中态(走查 P2-#13) 2026-09-28 07:35:39 +08:00
rogee a30e99a160 fix(ui): 创建环境表单 Space wrap 改 Row/Col 栅格,窄屏换行稳定(走查 P2-#11) 2026-09-28 07:32:20 +08:00
rogee 637900c5fd fix(ui): 账号详情页 pending 态页头保留返回入口;同步/编辑加空态防护(走查 P2-#9) 2026-09-28 07:30:32 +08:00
rogee 08093a2e38 fix(ui): Select showSearch 新 API(optionFilterProp 迁移) 2026-09-28 07:26:29 +08:00
rogee c5369bdc3c fix(ui): 任务中心账号筛选改下拉、任务/账号 ID 可复制(走查 P2-#8) 2026-09-28 07:25:52 +08:00
rogee b9490a0c1c fix(ui): 监控账号列表行 hover 反馈(主题 token)、强制同步按钮 loading(走查 P2-#7) 2026-09-28 07:25:02 +08:00
rogee bb388112a7 fix(ui): metadata 清理旧路径 /competitors 与 gateways 详情死规则,补竞品账号详情规则(走查 P1-#5) 2026-09-28 07:22:51 +08:00
rogee 96a4692c96 refactor(ui): 全站 message.useMessage 统一 App.useApp,删除 contextHolder(走查 P1-#4) 2026-09-28 07:22:18 +08:00
rogee e52d8c797b fix(ui): 我的账号列表按钮进 Card 右上角、补刷新、删平台列(走查 P1-#3/#6) 2026-09-28 07:20:17 +08:00