Skip to content

v1.14.3

Choose a tag to compare

@SunGreatSage SunGreatSage released this 19 Aug 06:13
· 10 commits to main since this release

v1.14.3

🐛 修复:大型 ACG-Faka 目录库存补查触发限流后整批失败(issue #40

现象:ACG-Faka 的商品列表不会返回手动发货商品的真实库存。旧版本会把所有缺失库存商品
按固定 10 并发连续请求 /shared/commodity/stock,大型目录会产生明显请求突发;任何一个请求
遇到 429、5xx、连接异常或 Cloudflare/WAF 返回的伪 200 HTML,都会立即终止整个同步。

修复

  • 库存补查默认并发从固定 10 调整为 3,可在「货源管理 → 定时任务」配置 1–10;
  • 增加独立的库存批次间隔,默认 200ms,可配置 0–10000ms,不再复用只对商品分页生效的
    request_delay
  • 429、5xx、连接异常和非 JSON 网关页面仅重试失败商品,最多 3 次,按 250ms、500ms
    指数退避;成功商品不重复请求;
  • 401/403/404 和上游业务错误不盲目重试,库存无法确认时继续安全失败,禁止把未知库存当成无限库存;
  • 非 JSON/HTTP 异常诊断新增脱敏的 HTTP 状态、Content-Type、CF-Ray、安全 Location、正文长度、
    SHA-256、商品 code 和重试次数,不记录请求头、凭据、Location 查询串或正文全文;
  • 根据商品数量、并发数和批次间隔计算主动限速预算;预计等待超过 600 秒时在发出库存请求前
    给出可操作错误,避免任务必然撞上 900 秒 Job 超时;
  • 大目录库存回写由逐商品扫描完整数组改为一次索引映射,复杂度从 O(n²) 降为 O(n)。

管理端

货源「定时任务」弹窗新增:

  • 库存补查并发:默认 3,范围 1–10;
  • 库存批次间隔:默认 200ms,范围 0–10000ms。

这两个配置会同时作用于手动和定时触发的 ACG-Faka 采集/价格同步。生产编译产物已随版本提交,
服务器无需安装 Node.js 或重新构建前端。

测试

  • ACG-Faka 库存专项:7 passed,30 assertions
  • ACG-Faka 协议、同步任务、计划任务组合:47 passed,174 assertions
  • 全量 php artisan test435 passed,1457 assertions
  • Laravel Pint 与 git diff --check 通过;
  • sysadmin vue-tsc --noEmit 与生产构建通过;
  • 编译产物引用及 stock_concurrency / stock_request_delay_ms 内容检查通过。

升级说明

  • 本版本不包含数据库迁移;
  • 升级后必须执行 php artisan queue:restart(或重启 Supervisor/systemd worker),让常驻 worker
    加载 v1.14.3 的新重试与限速逻辑;
  • 若低并发单请求仍持续收到伪 200 HTML/内嵌 404,说明上游 Cloudflare/WAF/伪静态路由仍需修复;
    本版本会在 3 次有界重试后保留完整脱敏诊断,但不会绕过上游安全策略。