mirror of
https://github.com/Wei-Shaw/sub2api.git
synced 2026-10-07 11:33:18 +08:00
自动同步原本每次拉 `/releases?per_page=30`,实测响应 10,017,686 字节——该仓库 预发布极密集,30 条里只有 2 条稳定版(0.145.0 已排到第 26 位),页大小是为了 「窗口里至少有一条稳定版」而定的,不能靠调小来省流量。 改为主路径走 `/releases/latest`(实测约 0.3MB):该端点本身排除 draft 与 prerelease,直接给出最新正式发布,不受预发布密度影响。复用端口上已有的 FetchLatestRelease,不新增任何 HTTP 代码,代理配置、User-Agent、可选 token 与跨主机重定向剥离 Authorization 的行为全部沿用。 保留列表扫描作为回退:latest 是跨 tag 家族按 published_at 取的,若同仓库其他 组件(如 rusty-v8-*)某天发布正式 release 而成为 latest,主路径会被 rust-v 前缀过滤挡掉,此时必须扫一页才能继续跟随,否则版本号会静默停更。 两条路径共用 latestCodexStableReleaseVersion 的同一套过滤(前缀 / draft / prerelease / 版本号形态),语义不会分叉;单条 latest 也要过版本号校验——仓库里 确实存在 rust-vv0.99.0-alpha.8 这类畸形 tag。只向前推进、抓取失败保持既有值 两条不变式未改动。 测试覆盖:主路径命中时不再拉列表页、四种拿不到(异家族 / 预发布 / 抓取失败 / 空对象)都回退、畸形 tag 被主路径拒绝后由回退兜底、两路径皆失败时保值。