refactor(types): 优化OpenAIServiceTier类型定义和校验逻辑

将OpenAIServiceTier定义为常量枚举类型,提升类型安全性
使用Object.values优化类型校验性能
统一服务层参数支持标志命名风格为isNotSupport前缀
This commit is contained in:
icarus 2025-08-06 17:00:16 +08:00
parent 30ee6fba02
commit 75dc168092

View File

@ -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 = {