{"repo": "6leokk/moyun-ai-novel", "files": {"ai-novel-vue/src/utils/aiSettings.js": {"16560bdcd27118288b80879bc9fdb8ffcdfaa780": {"t": 1785746683.5544763, "n": 1638, "h": "62214169dd2c5f8a", "c": "const PROVIDER_LABELS = {\n openai: 'OpenAI',\n anthropic: 'Anthropic',\n gemini: 'Gemini',\n deepseek: 'DeepSeek OpenAI 兼容服务',\n custom: '自定义 OpenAI 兼容服务',\n}\n\nconst DEFAULT_BASE_URLS = {\n deepseek: 'https://api.deepseek.com/v1',\n}\n\nexport function backendProviderFor(uiProvider) {\n if (uiProvider === 'custom' || uiProvider === 'deepseek') return 'openai'\n if (uiProvider === 'anthropic' || uiProvider === 'gemini') return uiProvider\n return 'openai'\n}\n\nexport function resolveAIModel(settings) {\n if (settings.aiModel === 'custom' && settings.aiModelCustom?.trim()) {\n return settings.aiModelCustom.trim()\n }\n return settings.aiModel || 'gpt-4o'\n}\n\nexport function buildAIKeyPayload(settings) {\n const apiKey = settings.aiApiKey?.trim()\n if (!apiKey) return null\n\n const provider = backendProviderFor(settings.aiProvider)\n const baseUrl = settings.aiProvider === 'custom'\n ? settings.aiBaseUrl?.trim()\n : DEFAULT_BASE_URLS[settings.aiProvider]\n\n return {\n provider,\n label: PROVIDER_LABELS[settings.aiProvider] || PROVIDER_LABELS[provider] || 'AI 服务',\n apiKey,\n ...(baseUrl ? { apiBaseUrl: baseUrl } : {}),\n isDefault: true,\n }\n}\n\nexport function buildPreferencePayload(settings) {\n return {\n defaultProvider: backendProviderFor(settings.aiProvider),\n defaultModel: resolveAIModel(settings),\n defaultTemp: settings.temperature / 100,\n autoPlanApprovalMode: settings.autoPlanApprovalMode,\n autoResultHandlingMode: settings.autoResultHandlingMode,\n }\n}\n\nexport function persistableSettings(settings) {\n const { aiApiKey: _apiKey, ...safeSettings } = settings\n return safeSettings\n}\n"}, "86496fc1552c55ffe08687c1fc84ef9a36cb4f4c": {"t": 1785766801.4370608, "n": 1638, "h": "62214169dd2c5f8a", "c": "const PROVIDER_LABELS = {\n openai: 'OpenAI',\n anthropic: 'Anthropic',\n gemini: 'Gemini',\n deepseek: 'DeepSeek OpenAI 兼容服务',\n custom: '自定义 OpenAI 兼容服务',\n}\n\nconst DEFAULT_BASE_URLS = {\n deepseek: 'https://api.deepseek.com/v1',\n}\n\nexport function backendProviderFor(uiProvider) {\n if (uiProvider === 'custom' || uiProvider === 'deepseek') return 'openai'\n if (uiProvider === 'anthropic' || uiProvider === 'gemini') return uiProvider\n return 'openai'\n}\n\nexport function resolveAIModel(settings) {\n if (settings.aiModel === 'custom' && settings.aiModelCustom?.trim()) {\n return settings.aiModelCustom.trim()\n }\n return settings.aiModel || 'gpt-4o'\n}\n\nexport function buildAIKeyPayload(settings) {\n const apiKey = settings.aiApiKey?.trim()\n if (!apiKey) return null\n\n const provider = backendProviderFor(settings.aiProvider)\n const baseUrl = settings.aiProvider === 'custom'\n ? settings.aiBaseUrl?.trim()\n : DEFAULT_BASE_URLS[settings.aiProvider]\n\n return {\n provider,\n label: PROVIDER_LABELS[settings.aiProvider] || PROVIDER_LABELS[provider] || 'AI 服务',\n apiKey,\n ...(baseUrl ? { apiBaseUrl: baseUrl } : {}),\n isDefault: true,\n }\n}\n\nexport function buildPreferencePayload(settings) {\n return {\n defaultProvider: backendProviderFor(settings.aiProvider),\n defaultModel: resolveAIModel(settings),\n defaultTemp: settings.temperature / 100,\n autoPlanApprovalMode: settings.autoPlanApprovalMode,\n autoResultHandlingMode: settings.autoResultHandlingMode,\n }\n}\n\nexport function persistableSettings(settings) {\n const { aiApiKey: _apiKey, ...safeSettings } = settings\n return safeSettings\n}\n"}}}}