live channel vs scaffold estimate —— /pricing 表格 badge 到底说什么
/pricing endpoint 表每行带一个小 status badge。"live channel" 是从网关 admin export 拉到的真实定价、我们今天就这价收。"scaffold estimate" 是该 endpoint 通道还没接上时的保守公开 list-price 估算。这条分界是有意暴露给读者的;这里讲为啥。
如果你扫过 /pricing 表,最右 Status 列两种 chip 风格。一种实心 teal —— "live" 或 "rolling out" —— 下方小 label "live channel"。另一种灰色,label "scaffold estimate"。同表两种信任度,刻意露出来。
"live channel" 到底是什么
定价引擎从网关 admin /channels 端点的 JSON export 拉。每个 channel 带一份 model_pricing 行,列出今天网关的 per-token(文本)/ per-call(图像/视频)费率。我们不复述,原样渲 —— 同币种、同舍入、同 per-request 阶梯。网关下周改价,下次 /pricing build 就改。
"scaffold estimate" 到底是什么
表里有些 endpoint marketing metadata 列出了,但 gateway 通道还没接进生产 admin(多半是新模型在过合规 / vendor onboarding)。这些行 fallback 到对上游 public list price 的保守估值 —— "保守"意思是有差就往上圆。通道上线后下次 build 自动翻成 live-channel 价。
为什么 badge 露出来、而不是把 estimate 行藏起来
- 我们想让表列出网关支持的全部 endpoint,不只是已锁价的那批。"这个支持" + "价格是估值" 比 "这条还没上 pricing 页" 更老实。
- estimate 行给我们一个把真实 channel 接上的动力。某行 "scaffold estimate" 挂得久会变成自家的视觉刺痛点。
- 做容量规划的客户要 worst-case 数字。保守 list-price 估值就是这个形状 —— 按它做预算,结果发现实际花更少。
这个 JOIN 实际怎么跑
marketing 侧 `lib/endpoints.ts` 持 23 个 endpoint slug + vendor + capability + category。`data/channels-export.json` 是网关 admin export。`lib/pricing.ts` 用 slug ↔ models[] 配对,hyphen-insensitive normalize 让连字符差异(`seedream-v5lite` vs `seedream-v5-lite`)不掉 estimate fallback。channels-export 覆盖到的赢;剩下走 `source: "estimate"`。schema 故意做成 admin API 的 1:1 镜像 —— 替 JSON 是 no-op refactor。
“要么我们今天就这价收,要么我们最佳估计在通道上线后大概这价收 —— 挑一行,badge 会告诉你你正在读的是哪种。”
夜更的真数据永远在 /pricing 表格里。Badge 是真实度标记,旁边的数字是价。