Add platform status switch
This commit is contained in:
@@ -560,6 +560,24 @@ export function App() {
|
||||
}
|
||||
}
|
||||
|
||||
async function savePlatformStatus(platform: IntegrationPlatform, status: 'enabled' | 'disabled') {
|
||||
setCoreState('loading');
|
||||
setCoreMessage('');
|
||||
try {
|
||||
const input = platformStatusUpdatePayload(platform, status);
|
||||
const updated = await updatePlatform(token, platform.id, input);
|
||||
const platformForState = withCredentialPreviewFallback(updated, input, platform);
|
||||
setPlatforms((current) => current.map((item) => item.id === platform.id ? platformForState : item));
|
||||
invalidateDataKeys('modelCatalog', 'modelRateLimits', 'playgroundModels');
|
||||
setCoreState('ready');
|
||||
setCoreMessage(status === 'enabled' ? '平台已启用。' : '平台已禁用。');
|
||||
} catch (err) {
|
||||
setCoreState('error');
|
||||
setCoreMessage(err instanceof Error ? err.message : '切换平台状态失败');
|
||||
throw err;
|
||||
}
|
||||
}
|
||||
|
||||
async function savePlatformDynamicPriority(platformId: string, input: PlatformDynamicPriorityUpdateRequest) {
|
||||
setCoreState('loading');
|
||||
setCoreMessage('');
|
||||
@@ -1029,6 +1047,7 @@ export function App() {
|
||||
onResetBaseModel={resetBaseModelToDefault}
|
||||
onSavePlatform={savePlatformWithModels}
|
||||
onSavePlatformDynamicPriority={savePlatformDynamicPriority}
|
||||
onTogglePlatformStatus={savePlatformStatus}
|
||||
onSaveProvider={saveProvider}
|
||||
onSavePricingRuleSet={savePricingRuleSet}
|
||||
onSaveRunnerPolicy={saveRunnerPolicy}
|
||||
@@ -1105,6 +1124,25 @@ function mergeExistingPlatformModelInput(input: PlatformModelBindingInput, curre
|
||||
};
|
||||
}
|
||||
|
||||
function platformStatusUpdatePayload(platform: IntegrationPlatform, status: 'enabled' | 'disabled'): PlatformCreateInput {
|
||||
return {
|
||||
provider: platform.provider,
|
||||
platformKey: platform.platformKey,
|
||||
name: platform.name,
|
||||
internalName: platform.internalName,
|
||||
baseUrl: platform.baseUrl,
|
||||
authType: platform.authType,
|
||||
config: platform.config ?? {},
|
||||
retryPolicy: platform.retryPolicy ?? {},
|
||||
rateLimitPolicy: platform.rateLimitPolicy ?? {},
|
||||
defaultPricingMode: platform.defaultPricingMode,
|
||||
defaultDiscountFactor: platform.defaultDiscountFactor,
|
||||
pricingRuleSetId: platform.pricingRuleSetId,
|
||||
priority: platform.priority,
|
||||
status,
|
||||
};
|
||||
}
|
||||
|
||||
function withCredentialPreviewFallback(
|
||||
platform: IntegrationPlatform,
|
||||
input: PlatformCreateInput,
|
||||
|
||||
Reference in New Issue
Block a user