From 4f7f67a2787c748703e24de72da611a27a998b52 Mon Sep 17 00:00:00 2001 From: Stringadmin Date: Mon, 8 Jun 2026 16:03:52 +0800 Subject: [PATCH] Scale generation billing estimates to 1-to-100 credits --- src/features/workbench/WorkbenchPage.tsx | 4 ++-- src/utils/enterpriseVideoPolicy.ts | 3 ++- src/utils/taskLifecycle.ts | 8 +++++--- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/features/workbench/WorkbenchPage.tsx b/src/features/workbench/WorkbenchPage.tsx index ef91565..56b43d6 100644 --- a/src/features/workbench/WorkbenchPage.tsx +++ b/src/features/workbench/WorkbenchPage.tsx @@ -473,8 +473,8 @@ function WorkbenchPage({ const billingEstimate = useMemo(() => { if (activeMode === "image") { return { - label: "预计 20 积分", - title: `图片生成按任务计费:${activeModel},${imageSettingsSummary},预计 20 积分`, + label: "预计 2,000 积分", + title: `图片生成按任务计费:${activeModel},${imageSettingsSummary},预计 2,000 积分`, }; } if (activeMode === "video") { diff --git a/src/utils/enterpriseVideoPolicy.ts b/src/utils/enterpriseVideoPolicy.ts index 8287318..359aa31 100644 --- a/src/utils/enterpriseVideoPolicy.ts +++ b/src/utils/enterpriseVideoPolicy.ts @@ -40,6 +40,7 @@ export const ENTERPRISE_VIDEO_RESOLUTION_OPTIONS = [ export const ENTERPRISE_DEFAULT_VIDEO_MODEL = HAPPY_HORSE_UI_MODEL; export const ENTERPRISE_DEFAULT_VIDEO_RESOLUTION = "1080P"; +const CREDITS_PER_CNY = 100; export interface EnterpriseVideoPricingInput { model: string; @@ -94,5 +95,5 @@ export function getEnterpriseVideoCreditRate(input: EnterpriseVideoPricingInput) export function calculateEnterpriseVideoCredits(input: EnterpriseVideoPricingInput): number { const duration = Math.max(1, Math.ceil(Number(input.durationSeconds) || 1)); - return Number((getEnterpriseVideoCreditRate(input) * duration).toFixed(2)); + return Number((getEnterpriseVideoCreditRate(input) * duration * CREDITS_PER_CNY).toFixed(2)); } diff --git a/src/utils/taskLifecycle.ts b/src/utils/taskLifecycle.ts index ae3a850..757c4b2 100644 --- a/src/utils/taskLifecycle.ts +++ b/src/utils/taskLifecycle.ts @@ -32,8 +32,10 @@ export interface TextTokenUsage { totalTokens?: number; } -export const TEXT_INPUT_CREDITS_PER_MILLION = 2; -export const TEXT_OUTPUT_CREDITS_PER_MILLION = 5; +const CREDITS_PER_CNY = 100; + +export const TEXT_INPUT_CREDITS_PER_MILLION = 2 * CREDITS_PER_CNY; +export const TEXT_OUTPUT_CREDITS_PER_MILLION = 5 * CREDITS_PER_CNY; const IMAGE_TIMEOUT_POLICY: TaskTimeoutPolicy = { submitTimeoutMs: 90_000, @@ -151,7 +153,7 @@ export function estimateTextTokenCredits(usage: TextTokenUsage): number { } export function formatTextTokenUsage(usage?: TextTokenUsage | null): string { - const rule = "文本计费规则:输入 Token 每百万 2 积分,输出 Token 每百万 5 积分,实际以服务端结算为准。"; + const rule = "文本计费规则:输入 Token 每百万 200 积分,输出 Token 每百万 500 积分,实际以服务端结算为准。"; if (!usage) return rule; const promptTokens = Math.max(0, Number(usage.promptTokens || 0)); const completionTokens = Math.max(0, Number(usage.completionTokens || 0));