Skip to content

v1.7.5 — 模型列表会告诉你「现在用哪个不花钱」

Choose a tag to compare

@XDTrees XDTrees released this 01 Oct 01:58
· 53 commits to main since this release

Hy4 preview 晚上 23 点到早上 8 点免费,Hy3 一直在免费期 —— 现在卡片上直接看得出来。

你会看到:模型列表里,当前免费的排在最上面并带标记:

[免费]              hy3                  x0.00
                    auto
(23:00 起免费 · 活动至 10-31)  hy4-preview   x0.29
                    hy3-x                x0.05

到了晚上 23 点,同一行会变成:

[免费至 08:00 · 活动至 10-31]  hy4-preview   x0.29
[免费]              hy3                  x0.00

为什么需要专门做:因为上游接口不说这件事。我拉了真实的国内版接口逐字段核对:

信息 上游提供吗
Hy3 限免 ✅ 提供 —— credits: "x0.00",倍率本身就是 0,我们一直在正确显示
Hy4 preview 夜间限免 ❌ 不提供 —— 倍率恒为 x0.29,没有任何时段字段
Hy4 preview 新用户 14 天额度 ❌ 不提供 —— 积分包里也没有这类条目

所以夜间限免这条规则,只能由插件自己带。我把它写成一张规则表(src/promo.ts),包含「哪个平台、哪些 id 前缀、哪些小时、有效期到哪天」。

几个刻意的设计:

  • 规则区分平台。这是国内版活动,所以规则里带 region: 'cn',国际版完全不受影响 —— 国际版的 hy4-preview-f 显示「免费」是因为上游倍率真的是 0(客观事实),不是我们套了活动规则;
  • 免费状态是「此刻」的,不是模型固有属性。所以同一天里 hy4-preview 的标记会变 —— 这才是真实情况;
  • 窗口外只给一个低调的虚线提示(23:00 起免费),不给「免费」徽章。因为它此刻确实要花积分,标成免费会让你花错钱;
  • 只有「此刻免费」的才置顶。窗口外的模型不置顶,否则就是把一个要花钱的模型举到最前面,误导性更强;
  • 标出活动截止日(活动至 10-31)。方便你安排什么时候用 —— 而且活动一旦延期,改日期就能看到,不用翻更新日志;
  • 规则带过期日期,到 10 月 31 日之后自动失效,不需要有人记得来删代码;
  • hy4-preview 用前缀匹配,因为上游有 hy4-preview 和 hy4-preview-x 两个 id,是同一款产品。

关于「新用户 14 天免费额度」——明确没做

你提到「新用户没用过 Hy4 preview,还能免费 14 天,要区分出来」。这个我做不到,而且硬做会更糟:

上游完全不记录「这个账户有没有用过 Hy4 preview」—— 模型目录里没有、积分包里也没有(我实测过,44 个积分包里没有一个试用额度条目)。

唯一能猜的办法是「插件自己记住第一次调用的时间」。但这有个致命问题:它只知道「用本插件之后」的历史。你之前要是在官方客户端用过 Hy4 preview,插件照样会以为你是新用户,然后给你标一个假的「免费」 —— 而你会因此放心去用,结果扣了积分。

给你一个假的「免费」,比不给你标记更糟,因为它直接改变你的花钱决定。所以这条留白,不做推测。

如果你确实需要,可行的做法是你自己确认:卡片上显示的是客观事实(倍率 + 夜间窗口),你清楚自己是不是新用户,看一眼就知道该不该用。

验证

  • 类型检查全绿,测试 297 项全绿(+19)。
  • 新增 tests/promo.test.ts:23:00–08:00 窗口内/外的判定、跨午夜(23 点在窗口内、8 点不在)、窗口关闭时间(免费至 08:00)、下次开启时间(23:00 起免费)、同族 id(hy4-preview 与 hy4-preview-x)、零倍率模型全天免费且不误入夜间规则、到期自动失效(10/31 有效、11/1 失效)、免费置顶只认「此刻」免费、活动截止日随状态带出、国际版不受活动影响(但零倍率模型在两边都算免费)。
  • 反向验证:清空夜间小时 → 7 项变红;删掉过期日期 → 2 项变红;移除平台过滤 → 「国际版不受影响」变红。确认测试真的能抓住这三类缺陷。
  • 用两个平台的真实清单(国内版 16 个 / 国际版 24 个)跑卡片渲染逻辑,在 12:00 与 23:30 核对:国内版 hy4-preview 正确显示活动徽章与截止日,国际版完全不受活动规则影响。