zen: display BYOK cost

This commit is contained in:
Frank
2026-02-23 18:18:45 -05:00
parent 34495a70d5
commit 284251ad66
19 changed files with 36 additions and 5 deletions

View File

@@ -344,6 +344,7 @@ export const dict = {
"workspace.usage.breakdown.output": "الخرج", "workspace.usage.breakdown.output": "الخرج",
"workspace.usage.breakdown.reasoning": "المنطق", "workspace.usage.breakdown.reasoning": "المنطق",
"workspace.usage.subscription": "الاشتراك (${{amount}})", "workspace.usage.subscription": "الاشتراك (${{amount}})",
"workspace.usage.byok": "BYOK (${{amount}})",
"workspace.cost.title": "التكلفة", "workspace.cost.title": "التكلفة",
"workspace.cost.subtitle": "تكاليف الاستخدام مقسمة حسب النموذج.", "workspace.cost.subtitle": "تكاليف الاستخدام مقسمة حسب النموذج.",

View File

@@ -349,6 +349,7 @@ export const dict = {
"workspace.usage.breakdown.output": "Saída", "workspace.usage.breakdown.output": "Saída",
"workspace.usage.breakdown.reasoning": "Raciocínio", "workspace.usage.breakdown.reasoning": "Raciocínio",
"workspace.usage.subscription": "assinatura (${{amount}})", "workspace.usage.subscription": "assinatura (${{amount}})",
"workspace.usage.byok": "BYOK (${{amount}})",
"workspace.cost.title": "Custo", "workspace.cost.title": "Custo",
"workspace.cost.subtitle": "Custos de uso discriminados por modelo.", "workspace.cost.subtitle": "Custos de uso discriminados por modelo.",

View File

@@ -347,6 +347,7 @@ export const dict = {
"workspace.usage.breakdown.output": "Output", "workspace.usage.breakdown.output": "Output",
"workspace.usage.breakdown.reasoning": "Ræsonnement", "workspace.usage.breakdown.reasoning": "Ræsonnement",
"workspace.usage.subscription": "abonnement (${{amount}})", "workspace.usage.subscription": "abonnement (${{amount}})",
"workspace.usage.byok": "BYOK (${{amount}})",
"workspace.cost.title": "Omkostninger", "workspace.cost.title": "Omkostninger",
"workspace.cost.subtitle": "Brugsomkostninger opdelt efter model.", "workspace.cost.subtitle": "Brugsomkostninger opdelt efter model.",

View File

@@ -349,6 +349,7 @@ export const dict = {
"workspace.usage.breakdown.output": "Output", "workspace.usage.breakdown.output": "Output",
"workspace.usage.breakdown.reasoning": "Reasoning", "workspace.usage.breakdown.reasoning": "Reasoning",
"workspace.usage.subscription": "Abonnement (${{amount}})", "workspace.usage.subscription": "Abonnement (${{amount}})",
"workspace.usage.byok": "BYOK (${{amount}})",
"workspace.cost.title": "Kosten", "workspace.cost.title": "Kosten",
"workspace.cost.subtitle": "Nutzungskosten aufgeschlüsselt nach Modell.", "workspace.cost.subtitle": "Nutzungskosten aufgeschlüsselt nach Modell.",

View File

@@ -341,6 +341,7 @@ export const dict = {
"workspace.usage.breakdown.output": "Output", "workspace.usage.breakdown.output": "Output",
"workspace.usage.breakdown.reasoning": "Reasoning", "workspace.usage.breakdown.reasoning": "Reasoning",
"workspace.usage.subscription": "subscription (${{amount}})", "workspace.usage.subscription": "subscription (${{amount}})",
"workspace.usage.byok": "BYOK (${{amount}})",
"workspace.cost.title": "Cost", "workspace.cost.title": "Cost",
"workspace.cost.subtitle": "Usage costs broken down by model.", "workspace.cost.subtitle": "Usage costs broken down by model.",

View File

@@ -350,6 +350,7 @@ export const dict = {
"workspace.usage.breakdown.output": "Salida", "workspace.usage.breakdown.output": "Salida",
"workspace.usage.breakdown.reasoning": "Razonamiento", "workspace.usage.breakdown.reasoning": "Razonamiento",
"workspace.usage.subscription": "suscripción (${{amount}})", "workspace.usage.subscription": "suscripción (${{amount}})",
"workspace.usage.byok": "BYOK (${{amount}})",
"workspace.cost.title": "Costo", "workspace.cost.title": "Costo",
"workspace.cost.subtitle": "Costos de uso desglosados por modelo.", "workspace.cost.subtitle": "Costos de uso desglosados por modelo.",

View File

@@ -355,6 +355,7 @@ export const dict = {
"workspace.usage.breakdown.output": "Sortie", "workspace.usage.breakdown.output": "Sortie",
"workspace.usage.breakdown.reasoning": "Raisonnement", "workspace.usage.breakdown.reasoning": "Raisonnement",
"workspace.usage.subscription": "abonnement ({{amount}} $)", "workspace.usage.subscription": "abonnement ({{amount}} $)",
"workspace.usage.byok": "BYOK ({{amount}} $)",
"workspace.cost.title": "Coût", "workspace.cost.title": "Coût",
"workspace.cost.subtitle": "Coûts d'utilisation répartis par modèle.", "workspace.cost.subtitle": "Coûts d'utilisation répartis par modèle.",

View File

@@ -349,6 +349,7 @@ export const dict = {
"workspace.usage.breakdown.output": "Output", "workspace.usage.breakdown.output": "Output",
"workspace.usage.breakdown.reasoning": "Reasoning", "workspace.usage.breakdown.reasoning": "Reasoning",
"workspace.usage.subscription": "abbonamento (${{amount}})", "workspace.usage.subscription": "abbonamento (${{amount}})",
"workspace.usage.byok": "BYOK (${{amount}})",
"workspace.cost.title": "Costo", "workspace.cost.title": "Costo",
"workspace.cost.subtitle": "Costi di utilizzo suddivisi per modello.", "workspace.cost.subtitle": "Costi di utilizzo suddivisi per modello.",

View File

@@ -346,6 +346,7 @@ export const dict = {
"workspace.usage.breakdown.output": "出力", "workspace.usage.breakdown.output": "出力",
"workspace.usage.breakdown.reasoning": "推論", "workspace.usage.breakdown.reasoning": "推論",
"workspace.usage.subscription": "サブスクリプション (${{amount}})", "workspace.usage.subscription": "サブスクリプション (${{amount}})",
"workspace.usage.byok": "BYOK (${{amount}})",
"workspace.cost.title": "コスト", "workspace.cost.title": "コスト",
"workspace.cost.subtitle": "モデルごとの使用料金の内訳。", "workspace.cost.subtitle": "モデルごとの使用料金の内訳。",

View File

@@ -343,6 +343,7 @@ export const dict = {
"workspace.usage.breakdown.output": "출력", "workspace.usage.breakdown.output": "출력",
"workspace.usage.breakdown.reasoning": "추론", "workspace.usage.breakdown.reasoning": "추론",
"workspace.usage.subscription": "구독 (${{amount}})", "workspace.usage.subscription": "구독 (${{amount}})",
"workspace.usage.byok": "BYOK (${{amount}})",
"workspace.cost.title": "비용", "workspace.cost.title": "비용",
"workspace.cost.subtitle": "모델별 사용 비용 내역.", "workspace.cost.subtitle": "모델별 사용 비용 내역.",

View File

@@ -347,6 +347,7 @@ export const dict = {
"workspace.usage.breakdown.output": "Output", "workspace.usage.breakdown.output": "Output",
"workspace.usage.breakdown.reasoning": "Resonnering", "workspace.usage.breakdown.reasoning": "Resonnering",
"workspace.usage.subscription": "abonnement (${{amount}})", "workspace.usage.subscription": "abonnement (${{amount}})",
"workspace.usage.byok": "BYOK (${{amount}})",
"workspace.cost.title": "Kostnad", "workspace.cost.title": "Kostnad",
"workspace.cost.subtitle": "Brukskostnader fordelt på modell.", "workspace.cost.subtitle": "Brukskostnader fordelt på modell.",

View File

@@ -348,6 +348,7 @@ export const dict = {
"workspace.usage.breakdown.output": "Wyjście", "workspace.usage.breakdown.output": "Wyjście",
"workspace.usage.breakdown.reasoning": "Rozumowanie", "workspace.usage.breakdown.reasoning": "Rozumowanie",
"workspace.usage.subscription": "subskrypcja (${{amount}})", "workspace.usage.subscription": "subskrypcja (${{amount}})",
"workspace.usage.byok": "BYOK (${{amount}})",
"workspace.cost.title": "Koszt", "workspace.cost.title": "Koszt",
"workspace.cost.subtitle": "Koszty użycia w podziale na modele.", "workspace.cost.subtitle": "Koszty użycia w podziale na modele.",

View File

@@ -353,6 +353,7 @@ export const dict = {
"workspace.usage.breakdown.output": "Выход", "workspace.usage.breakdown.output": "Выход",
"workspace.usage.breakdown.reasoning": "Reasoning (рассуждения)", "workspace.usage.breakdown.reasoning": "Reasoning (рассуждения)",
"workspace.usage.subscription": "подписка (${{amount}})", "workspace.usage.subscription": "подписка (${{amount}})",
"workspace.usage.byok": "BYOK (${{amount}})",
"workspace.cost.title": "Расходы", "workspace.cost.title": "Расходы",
"workspace.cost.subtitle": "Расходы на использование с разбивкой по моделям.", "workspace.cost.subtitle": "Расходы на использование с разбивкой по моделям.",

View File

@@ -346,6 +346,7 @@ export const dict = {
"workspace.usage.breakdown.output": "Output", "workspace.usage.breakdown.output": "Output",
"workspace.usage.breakdown.reasoning": "Reasoning", "workspace.usage.breakdown.reasoning": "Reasoning",
"workspace.usage.subscription": "สมัครสมาชิก (${{amount}})", "workspace.usage.subscription": "สมัครสมาชิก (${{amount}})",
"workspace.usage.byok": "BYOK (${{amount}})",
"workspace.cost.title": "ค่าใช้จ่าย", "workspace.cost.title": "ค่าใช้จ่าย",
"workspace.cost.subtitle": "ต้นทุนการใช้งานแยกตามโมเดล", "workspace.cost.subtitle": "ต้นทุนการใช้งานแยกตามโมเดล",

View File

@@ -349,6 +349,7 @@ export const dict = {
"workspace.usage.breakdown.output": ıkış", "workspace.usage.breakdown.output": ıkış",
"workspace.usage.breakdown.reasoning": "Muhakeme", "workspace.usage.breakdown.reasoning": "Muhakeme",
"workspace.usage.subscription": "abonelik (${{amount}})", "workspace.usage.subscription": "abonelik (${{amount}})",
"workspace.usage.byok": "BYOK (${{amount}})",
"workspace.cost.title": "Maliyet", "workspace.cost.title": "Maliyet",
"workspace.cost.subtitle": "Modele göre ayrılmış kullanım maliyetleri.", "workspace.cost.subtitle": "Modele göre ayrılmış kullanım maliyetleri.",

View File

@@ -334,6 +334,7 @@ export const dict = {
"workspace.usage.breakdown.output": "输出", "workspace.usage.breakdown.output": "输出",
"workspace.usage.breakdown.reasoning": "推理", "workspace.usage.breakdown.reasoning": "推理",
"workspace.usage.subscription": "订阅 (${{amount}})", "workspace.usage.subscription": "订阅 (${{amount}})",
"workspace.usage.byok": "BYOK (${{amount}})",
"workspace.cost.title": "成本", "workspace.cost.title": "成本",
"workspace.cost.subtitle": "按模型细分的使用成本。", "workspace.cost.subtitle": "按模型细分的使用成本。",

View File

@@ -334,6 +334,7 @@ export const dict = {
"workspace.usage.breakdown.output": "輸出", "workspace.usage.breakdown.output": "輸出",
"workspace.usage.breakdown.reasoning": "推理", "workspace.usage.breakdown.reasoning": "推理",
"workspace.usage.subscription": "訂閱 (${{amount}})", "workspace.usage.subscription": "訂閱 (${{amount}})",
"workspace.usage.byok": "BYOK (${{amount}})",
"workspace.cost.title": "成本", "workspace.cost.title": "成本",
"workspace.cost.subtitle": "按模型細分的使用成本。", "workspace.cost.subtitle": "按模型細分的使用成本。",

View File

@@ -177,7 +177,16 @@ export function UsageSection() {
<td data-slot="usage-cost"> <td data-slot="usage-cost">
<Show <Show
when={usage.enrichment?.plan === "sub"} when={usage.enrichment?.plan === "sub"}
fallback={<>${((usage.cost ?? 0) / 100000000).toFixed(4)}</>} fallback={
<Show
when={usage.enrichment?.plan === "byok"}
fallback={<>${((usage.cost ?? 0) / 100000000).toFixed(4)}</>}
>
{i18n.t("workspace.usage.byok", {
amount: ((usage.cost ?? 0) / 100000000).toFixed(4),
})}
</Show>
}
> >
{i18n.t("workspace.usage.subscription", { {i18n.t("workspace.usage.subscription", {
amount: ((usage.cost ?? 0) / 100000000).toFixed(4), amount: ((usage.cost ?? 0) / 100000000).toFixed(4),

View File

@@ -740,7 +740,11 @@ export async function handler(
cost, cost,
keyID: authInfo.apiKeyId, keyID: authInfo.apiKeyId,
sessionID: sessionId.substring(0, 30), sessionID: sessionId.substring(0, 30),
enrichment: billingSource === "subscription" ? { plan: "sub" } : undefined, enrichment: (() => {
if (billingSource === "subscription") return { plan: "sub" }
if (billingSource === "byok") return { plan: "byok" }
return undefined
})(),
}), }),
db db
.update(KeyTable) .update(KeyTable)
@@ -788,9 +792,10 @@ export async function handler(
db db
.update(BillingTable) .update(BillingTable)
.set({ .set({
balance: authInfo.isFree balance:
? sql`${BillingTable.balance} - ${0}` billingSource === "free" || billingSource === "byok"
: sql`${BillingTable.balance} - ${cost}`, ? sql`${BillingTable.balance} - ${0}`
: sql`${BillingTable.balance} - ${cost}`,
monthlyUsage: sql` monthlyUsage: sql`
CASE CASE
WHEN MONTH(${BillingTable.timeMonthlyUsageUpdated}) = MONTH(now()) AND YEAR(${BillingTable.timeMonthlyUsageUpdated}) = YEAR(now()) THEN ${BillingTable.monthlyUsage} + ${cost} WHEN MONTH(${BillingTable.timeMonthlyUsageUpdated}) = MONTH(now()) AND YEAR(${BillingTable.timeMonthlyUsageUpdated}) = YEAR(now()) THEN ${BillingTable.monthlyUsage} + ${cost}