v1.14.3
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 test:435 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 次有界重试后保留完整脱敏诊断,但不会绕过上游安全策略。