fix(pricing): 目录 cache 侧字段契约哨兵与 Gemini pro 缓存写入价修正

阶梯计价数据驱动后,目录条目的字段缺失或版本拼接会直接变成计费偏差,
解析层补两道数据契约哨兵,并修正出厂快照中 Gemini pro 系的缓存写入价:

- orphanCacheTierFields / warnOrphanCacheTierFields:条目带 cache 侧
  above 档(含 _priority/_flex 变体与 above_1hr 形态)却没有基础价时打
  WARN——cache 侧 above 档不参与计费取值,按"基础价 × 输入倍率"计,基础价
  缺失即该分项按 0 计;变体缺自身基础价时沿 变体→1h→标准 回落链任一存在
  即不算孤儿,与计费回落一致
- isLopsidedLongContextLadder / warnLopsidedLongContextLadders:above 档
  折算出只有一侧带附加费的阶梯时打 WARN(基础价与 above 档来自不同价格
  版本的形态),显式 long_context_* 字段不告警
- deriveLongContextFromAboveTierFields 注释改为陈述契约:cache above 档
  须恰为基础价 × 输入倍率
- 出厂快照 6 个 Gemini pro 条目补 cache_creation_input_token_cost(= 标准
  输入价,Google 对缓存写入不另收费)、above_200k 改为输入 above 价、带
  priority 输入价的 4 条补 priority 孪生,与 model-price-repo 数据修正同值

测试:
- 解析层:孤儿字段 WARN(含 priority/1h 孤儿正例、1h 回落 5m 反例)、单侧
  阶梯 WARN、出厂快照契约(全条目无孤儿字段、无单侧阶梯、Gemini pro 缓存
  写入价 = 输入价)
- 用量契约:extractGeminiUsage 与 Antigravity 非流式/流式转换均不产生
  cache_creation token(Gemini usageMetadata 无该类别)
- 计费:gemini-2.5-pro 阶梯对 cache_read / cache_creation 分项生效,阈值
  计入缓存写入 token;阶梯表场景与夹具同步为现行目录值
This commit is contained in:
feeeei committed 2026-09-01 01:26:55 +08:00
1 parent 593fc93659
commit e2cfaa46e7
7 files changed
+320 -16

No files matched your search

@@ -1414,7 +1414,8 @@
]
},
"gemini-2.5-pro": {
"cache_creation_input_token_cost_above_200k_tokens": 2.5e-07,
"cache_creation_input_token_cost": 1.25e-06,
"cache_creation_input_token_cost_above_200k_tokens": 2.5e-06,
"cache_read_input_token_cost": 1.25e-07,
"cache_read_input_token_cost_above_200k_tokens": 2.5e-07,
"input_cost_per_token": 1.25e-06,
@@ -1702,7 +1703,10 @@
"web_search_billing_unit": "per_query"
},
"gemini-3-pro-preview": {
"cache_creation_input_token_cost_above_200k_tokens": 2.5e-07,
"cache_creation_input_token_cost": 2e-06,
"cache_creation_input_token_cost_above_200k_tokens": 4e-06,
"cache_creation_input_token_cost_above_200k_tokens_priority": 7.2e-06,
"cache_creation_input_token_cost_priority": 3.6e-06,
"cache_read_input_token_cost": 2e-07,
"cache_read_input_token_cost_above_200k_tokens": 4e-07,
"cache_read_input_token_cost_above_200k_tokens_priority": 7.2e-07,
@@ -2031,7 +2035,10 @@
"supports_web_search": true
},
"gemini-3.1-pro-high": {
"cache_creation_input_token_cost_above_200k_tokens": 2.5e-07,
"cache_creation_input_token_cost": 2e-06,
"cache_creation_input_token_cost_above_200k_tokens": 4e-06,
"cache_creation_input_token_cost_above_200k_tokens_priority": 7.2e-06,
"cache_creation_input_token_cost_priority": 3.6e-06,
"cache_read_input_token_cost": 2e-07,
"cache_read_input_token_cost_above_200k_tokens": 4e-07,
"cache_read_input_token_cost_above_200k_tokens_priority": 7.2e-07,
@@ -2095,7 +2102,10 @@
"web_search_billing_unit": "per_query"
},
"gemini-3.1-pro-low": {
"cache_creation_input_token_cost_above_200k_tokens": 2.5e-07,
"cache_creation_input_token_cost": 2e-06,
"cache_creation_input_token_cost_above_200k_tokens": 4e-06,
"cache_creation_input_token_cost_above_200k_tokens_priority": 7.2e-06,
"cache_creation_input_token_cost_priority": 3.6e-06,
"cache_read_input_token_cost": 2e-07,
"cache_read_input_token_cost_above_200k_tokens": 4e-07,
"cache_read_input_token_cost_above_200k_tokens_priority": 7.2e-07,
@@ -2159,7 +2169,10 @@
"web_search_billing_unit": "per_query"
},
"gemini-3.1-pro-preview": {
"cache_creation_input_token_cost_above_200k_tokens": 2.5e-07,
"cache_creation_input_token_cost": 2e-06,
"cache_creation_input_token_cost_above_200k_tokens": 4e-06,
"cache_creation_input_token_cost_above_200k_tokens_priority": 7.2e-06,
"cache_creation_input_token_cost_priority": 3.6e-06,
"cache_read_input_token_cost": 2e-07,
"cache_read_input_token_cost_above_200k_tokens": 4e-07,
"cache_read_input_token_cost_above_200k_tokens_priority": 7.2e-07,
@@ -2223,7 +2236,8 @@
"web_search_billing_unit": "per_query"
},
"gemini-3.1-pro-preview-customtools": {
"cache_creation_input_token_cost_above_200k_tokens": 2.5e-07,
"cache_creation_input_token_cost": 2e-06,
"cache_creation_input_token_cost_above_200k_tokens": 4e-06,
"cache_read_input_token_cost": 2e-07,
"cache_read_input_token_cost_above_200k_tokens": 4e-07,
"input_cost_per_token": 2e-06,