From 75dc1680920026e88cec0e9c4ec6ea8298c38c57 Mon Sep 17 00:00:00 2001 From: icarus Date: Wed, 6 Aug 2025 17:00:16 +0800 Subject: [PATCH] =?UTF-8?q?refactor(types):=20=E4=BC=98=E5=8C=96OpenAIServ?= =?UTF-8?q?iceTier=E7=B1=BB=E5=9E=8B=E5=AE=9A=E4=B9=89=E5=92=8C=E6=A0=A1?= =?UTF-8?q?=E9=AA=8C=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 将OpenAIServiceTier定义为常量枚举类型,提升类型安全性 使用Object.values优化类型校验性能 统一服务层参数支持标志命名风格为isNotSupport前缀 --- src/renderer/src/types/index.ts | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/src/renderer/src/types/index.ts b/src/renderer/src/types/index.ts index 1376635508..9536d6c7fb 100644 --- a/src/renderer/src/types/index.ts +++ b/src/renderer/src/types/index.ts @@ -5,6 +5,7 @@ import type { CSSProperties } from 'react' import * as z from 'zod/v4' export * from './file' + import type { FileMetadata } from './file' import type { Message } from './newMessage' @@ -181,10 +182,8 @@ export type Provider = { isNotSupportStreamOptions?: boolean /** 是否不支持 message 的 role 为 developer */ isNotSupportDeveloperRole?: boolean - - // undefined 视为不支持,默认不支持 - /** 是否支持 service_tier 参数 */ - isSupportServiceTier?: boolean + /** 是否不支持 service_tier 参数. Only for OpenAI Models. */ + isNotSupportServiceTier?: boolean serviceTier?: OpenAIServiceTier isVertex?: boolean @@ -269,16 +268,6 @@ export const isSystemProvider = (provider: Provider): provider is SystemProvider return isSystemProviderId(provider.id) && !!provider.isSystem } -export type ProviderSupportedServiceTier = Provider & { - isSupportServiceTier: true - serviceTier: OpenAIServiceTier -} - -export function isProviderSupportedServiceTier(provider: Provider): provider is ProviderSupportedServiceTier { - const p = provider as ProviderSupportedServiceTier - return p.isSupportServiceTier && isOpenAIServiceTier(p.serviceTier || '') -} - export type ProviderType = | 'openai' | 'openai-response' @@ -914,10 +903,19 @@ export interface StoreSyncAction { } export type OpenAISummaryText = 'auto' | 'concise' | 'detailed' | 'off' -export type OpenAIServiceTier = 'auto' | 'default' | 'flex' + +export const OpenAIServiceTiers = { + AUTO: 'auto', + DEFAULT: 'default', + FLEX: 'flex' +} as const + +export type OpenAIServiceTier = (typeof OpenAIServiceTiers)[keyof typeof OpenAIServiceTiers] + +const openAIServiceTiersValues = Object.values(OpenAIServiceTiers) // for type guard perf export function isOpenAIServiceTier(tier: string): tier is OpenAIServiceTier { - return ['auto', 'default', 'flex'].includes(tier) + return openAIServiceTiersValues.some((value) => value === tier) } export type S3Config = {