4 Commits

Author SHA1 Message Date
1ead57dd22 feat: 单场秀内的图片进度也上报(x/y 张)
一场秀几十到几百张图,按批处理要十几分钟,只报场次会让进度十几分钟不动。
media.UploadAllProgress 每批回调一次,spider 据此把「正在抓 X(32/50 张)」报给后台。
2026-10-25 21:02:52 +08:00
934a8961b0 fix: 抓取前预检已入库的秀,避免重复下载(重爬 62 分钟 0 新增)
问题:图片 key 是内容 sha1,不下载就无法判断是否已存在;
后端又没存 source_url,无法做 URL 级判重。
于是每次重爬都把几百张已下过的图再下一遍 —— 线上实测
Celine 跑了 62 分钟、约 600MB,入库 0 新增。

修复:
- 后端新增 GET /admin/internal/shows/covered?brand_uid=
  按 (年份, 季节, 类型) 聚合已入库图片张数
- spider 抓取前预检,整场已入库(>=10 张)就跳过,一张图都不下载
- 加 --force 可强制重抓(默认跳过)
- 媒体直传并发改为全进程共享信号量:此前秀级 2 × 每场 6 = 12 路
  同时打 Vogue,被限流后单张从 9.8s 掉到 ~90s
- 批次下载失败时打印第一条错误(此前只统计个数,查不出原因)
2026-10-25 20:07:54 +08:00
6a8b7f0704 perf: 修 spider 内存暴涨(整场图入内存 + 场次无限并发)
线上现象:spider 进程 RSS 1.3GB(33% 内存),单机 3.7G 只剩 141MB 可用,
服务器 1.5 小时内重启两次。

- media.UploadAll 改为按批(8 张)下载→上传→立即释放;
  原来先把整场 97 张(约 116MB)全读进内存,多场并发时线性叠加
- SpiderStart 对同品牌场次加 2 路并发上限(原来对全部场次无上限 go 出去)
- systemd 单元加 GOMEMLIMIT=700MiB / MemoryHigh=800M / MemoryMax=1200M 硬护栏,
  即使再退化也只 OOM 掉这一个进程,不会拖死整机
2026-10-25 18:01:46 +08:00
3fe0b86e11 feat: 媒体机直传 + 向量回填
- media: spider 下载图片后按内容 sha1 生成 key,经后端预签名直传 S4,上报只带 key
  (spider 不持有 AK/SK;单张失败自动回退为上报 URL)
- embed: 新增 embed 子命令,从后端领取缺向量的图片→下载→本地 CLIP 编码→回传
  (媒体拆分后后端拿不到图片字节,向量只能靠回填补齐)
- serve: 服务化常驻模式(领取 crawl 任务 → 抓取 → 回报)
- config: 新增 media.upload/concurrency、vision.endpoint/concurrency
2026-10-25 00:27:46 +08:00