Ignis · 生成计费
生成前、生成中、生成后,用的不是同一个 Key
代码确认:Ignis 的预估积分和实际扣费都会查积分配置表,但入口不同。任务提交还会再解析一层 Provider Key。下面按真实代码把每一段放到同一张图里。
代码核对Nano Pro 示例2026-07-15
01 · 完整过程
从积分配置到流水显示,一共经过 8 个节点
墨蓝色节点是 Ignis 真正做映射或计算的地方。虚线表示“读取配置”,实线表示一次任务的先后过程。
最容易混淆的是两个同名字段:请求头的 metadata.pricing_key 来自线路预估映射;流水里的 extra.pricing_key 则是 Ignis 最终命中的积分配置 key。当前代码没有用前者决定实扣。
02 · Key 字典
每一种 Key 各管一件事
它们不需要强行改成同一个名字,但必须有稳定的对应关系和统一维护入口。
| 名称 | 从哪里来 | 现在用在哪里 | 是否决定实际服务 |
|---|---|---|---|
| 产品 modelKey | 模型目录、前端提交 | 页面选中模型、主任务 model_key、表单还原 | 否,还要再解析 |
| generationLine | 用户选择标准/稳定线路 | 参与预估 Key 和 Provider Key 映射 | 间接决定 |
| pricingLookupKey | Ignis 模型目录代码 | 生成前查询 Ignis 积分配置;也放进请求头元数据 | 否 |
| providerKey | Ignis 服务端按模型、线路和任务类型解析 | 下游请求 models[];任务执行项 provider_key | 是 |
| 回调 modelKey | 统一计费服务回调 | 匹配 Ignis 积分配置的 key / aliases | 不再选服务,只决定积分换算项 |
| 流水 pricing_key | Ignis 命中的积分配置 key | 写入 ledger.extra,辅助分类和展示 | 否 |
03 · Nano Pro 实例
线路已经能区分生成服务,但计费映射还有一处看不见
下表只写代码和当前技术配置接口能直接确认的内容。看不见的映射不做猜测。
| 线路 | 前端提交 | Ignis 预估 Key | Ignis 实际提交的 Provider Key | 技术计费配置 |
|---|---|---|---|---|
| 标准线路 | modelKey=nano-banana-progenerationLine=standard | nano-banana-pro | funpub-nano-banana-pro-t2ifunpub-nano-banana-pro-edit | kie-nano-banana-pro 当前明确包含这组模型 ID;model_identifier=nano-banana-pro |
| 稳定线路 | modelKey=nano-banana-progenerationLine=stable | nano-banana-pro-stable | funpub-nano-banana-pro-stable-t2ifunpub-nano-banana-pro-stable-edit | 当前接口中的 Google 配置列出的是 google-nanobanana-pro*,没有列出左侧 stable Key。中间怎么映射,需要后端确认。 |
还有一个明确事实:KIE 和 Google 两条技术计费配置当前都写着
model_identifier=nano-banana-pro。如果成本回调只返回这个 modelKey,Ignis 无法仅靠它判断最终走了哪条线路;只能相信 costAmount 已按实际服务算对。04 · 这意味着什么
当前能完成扣费,但预估、解释和对账还不够稳
预估
参数没有完整进入公式
前端现在主要算固定最高份数和数量。代码明确写着时长不参与,分辨率等参数也没有统一复用技术计费公式。
用户感知
固定低价和固定高价都难解释
低价可能明显低于实扣;统一改成最高价,又会让低配置任务看起来突然变贵。部分视频模型最低和最高差距达到数倍。
对账
fallback 后缺少最终服务标识
任务里能看到请求时的 provider_key,但成本回调和积分流水没有明确的最终 Provider 或 Billing Config。
建议讨论两件事:一是让 Ignis 同步技术计费配置,人工只维护展示名、线路名和积分比例;二是由服务端提供统一预估接口,复用实际成本公式。另建议成本回调补充
actualProviderKey 或 billingConfigId,至少用于 fallback 对账。05 · 代码依据
每个判断对应到哪里
| 结论 | 代码或接口 |
|---|---|
| 预估读取积分快照 | points.ts:3458–3491;points-pricing-context.tsx:99–176 |
| 前端预估公式 | GenerationPageClient.tsx:4766–4816 |
| Nano 线路到预估/Provider 的映射 | model-catalog.ts:489–617 |
| 提交 Provider、计费元数据和任务保存 | provider-adapter.ts:74–120;generation.ts:716–733, 769–774 |
| 成本回调入参和实际扣分 | points.ts:281–312, 4807–4831 |
| 流水保存与页面展示 | points.ts:2835–2853, 4870–4963;ledger-ui.ts:554–582, 737–740 |
| 技术计费配置现状 | model-config-dashboard.pages.dev/api/billing-config,读取 config_id / model_identifier / config / _model_ids |