diff --git a/src/components/image-editor/ImageCanvasGenerationModel.ts b/src/components/image-editor/ImageCanvasGenerationModel.ts index 2051dd23c..c5d407f2e 100644 --- a/src/components/image-editor/ImageCanvasGenerationModel.ts +++ b/src/components/image-editor/ImageCanvasGenerationModel.ts @@ -90,22 +90,22 @@ export const PUBLICATION_FRAME_DISPLAY_SIZE: Record< 'publication-detail-gallery': { width: 360, height: 640 }, 'publication-promo-poster': { width: 560, height: 315 }, }; +// `gpt-image-2` 仍是持久化在历史画布项里的模型值,配置保留为防御性别名; +// 生产读取会先经过 normalizeEditorImageModel 归一,因此 legacy 档位必须与 +// `gpt-image-2.5` 同值,这里直接复用同一份常量避免两处字面量各自漂移。 +const GPT_IMAGE_2_5_TIER_PRICES = { + '1K': 3, + '2K': 5, +} as const; export const EDITOR_IMAGE_MODEL_MUD_POINT_CONFIG = { [IMAGE_MODEL_NANOBANANA2]: { '0.5K': 8, '1K': 12, '2K': 24, }, - [IMAGE_MODEL_GPT_IMAGE_2_5]: { - '1K': 3, - '2K': 5, - }, - // Legacy persisted model value; keep readable for old assets without exposing - // it as a new selectable model. - [IMAGE_MODEL_GPT_IMAGE_2]: { - '1K': 3, - '2K': 5, - }, + [IMAGE_MODEL_GPT_IMAGE_2_5]: GPT_IMAGE_2_5_TIER_PRICES, + // 历史持久化值;不作为新的可选模型暴露,只保证旧值可读。 + [IMAGE_MODEL_GPT_IMAGE_2]: GPT_IMAGE_2_5_TIER_PRICES, } as const; export const SPEC_GENERATION_COST = EDITOR_IMAGE_MODEL_MUD_POINT_CONFIG[SPEC_GENERATION_MODEL][ @@ -139,19 +139,18 @@ export const EDITOR_IMAGE_MODEL_OPTIONS = [ { label: 'GPT Image 2.5', value: IMAGE_MODEL_GPT_IMAGE_2_5 }, ] as const; export const QUICK_EDIT_MODEL_OPTIONS = EDITOR_IMAGE_MODEL_OPTIONS; +// 同上:legacy `gpt-image-2` 与 `gpt-image-2.5` 共用同一份尺寸档位常量。 +const GPT_IMAGE_2_5_DIMENSION_OPTIONS = { + aspectRatios: ['1:1', '4:3', '3:2', '2:3', '9:16', '16:9'], + imageSizes: ['1K', '2K'], +} as const; export const EDITOR_IMAGE_DIMENSION_OPTIONS = { [IMAGE_MODEL_NANOBANANA2]: { aspectRatios: ['1:1', '4:3', '3:2', '2:3', '9:16', '16:9'], imageSizes: ['0.5K', '1K', '2K'], }, - [IMAGE_MODEL_GPT_IMAGE_2_5]: { - aspectRatios: ['1:1', '4:3', '3:2', '2:3', '9:16', '16:9'], - imageSizes: ['1K', '2K'], - }, - [IMAGE_MODEL_GPT_IMAGE_2]: { - aspectRatios: ['1:1', '4:3', '3:2', '2:3', '9:16', '16:9'], - imageSizes: ['1K', '2K'], - }, + [IMAGE_MODEL_GPT_IMAGE_2_5]: GPT_IMAGE_2_5_DIMENSION_OPTIONS, + [IMAGE_MODEL_GPT_IMAGE_2]: GPT_IMAGE_2_5_DIMENSION_OPTIONS, } as const; type EditorImageFrameSize = {