feat(settings): add system status page and improve models page

This commit is contained in:
2025-10-22 16:32:49 +08:00
parent 9137ae3063
commit 73274300ec
7 changed files with 385 additions and 59 deletions

View File

@@ -47,7 +47,7 @@ export const useDialogState = () => {
};
// API Key 对话框管理
export const useApiKeyDialog = () => {
export const useApiKeyDialog = (onSuccess?: () => void) => {
const dialogState = useDialogState();
const showMessage = useMessage();
const [factoryName, setFactoryName] = useState('');
@@ -77,12 +77,17 @@ export const useApiKeyDialog = () => {
await userService.set_api_key(params);
showMessage.success('API Key 配置成功');
dialogState.closeDialog();
// 调用成功回调
if (onSuccess) {
onSuccess();
}
} catch (error) {
logger.error('API Key 配置失败:', error);
} finally {
dialogState.setLoading(false);
}
}, [factoryName, dialogState]);
}, [factoryName, dialogState, onSuccess]);
return {
...dialogState,
@@ -191,7 +196,7 @@ export const useOllamaDialog = () => {
};
// 删除操作管理
export const useDeleteOperations = () => {
export const useDeleteOperations = (onSuccess?: () => void) => {
const showMessage = useMessage();
const [loading, setLoading] = useState(false);
@@ -203,12 +208,17 @@ export const useDeleteOperations = () => {
llm_name: modelName,
});
showMessage.success('模型删除成功');
// 调用成功回调
if (onSuccess) {
onSuccess();
}
} catch (error) {
logger.error('模型删除失败:', error);
} finally {
setLoading(false);
}
}, []);
}, [onSuccess]);
const deleteFactory = useCallback(async (factoryName: string) => {
setLoading(true);
@@ -217,12 +227,17 @@ export const useDeleteOperations = () => {
llm_factory: factoryName,
});
showMessage.success('模型工厂删除成功');
// 调用成功回调
if (onSuccess) {
onSuccess();
}
} catch (error) {
logger.error('模型工厂删除失败:', error);
} finally {
setLoading(false);
}
}, []);
}, [onSuccess]);
return {
loading,
@@ -232,7 +247,7 @@ export const useDeleteOperations = () => {
};
// 系统默认模型设置
export const useSystemModelSetting = () => {
export const useSystemModelSetting = (onSuccess?: () => void) => {
const dialogState = useDialogState();
const showMessage = useMessage();
@@ -301,6 +316,11 @@ export const useSystemModelSetting = () => {
showMessage.success('系统默认模型设置成功');
dialogState.closeDialog();
fetchTenantInfo();
// 调用成功回调
if (onSuccess) {
onSuccess();
}
} catch (error) {
logger.error('系统默认模型设置失败:', error);
showMessage.error('系统默认模型设置失败');
@@ -308,7 +328,7 @@ export const useSystemModelSetting = () => {
} finally {
dialogState.setLoading(false);
}
}, [dialogState]);
}, [dialogState, onSuccess]);
return {
...dialogState,
@@ -319,13 +339,13 @@ export const useSystemModelSetting = () => {
};
// 统一的模型对话框管理器
export const useModelDialogs = () => {
const apiKeyDialog = useApiKeyDialog();
export const useModelDialogs = (onSuccess?: () => void) => {
const apiKeyDialog = useApiKeyDialog(onSuccess);
const azureDialog = useAzureOpenAIDialog();
const bedrockDialog = useBedrockDialog();
const ollamaDialog = useOllamaDialog();
const systemDialog = useSystemModelSetting();
const deleteOps = useDeleteOperations();
const systemDialog = useSystemModelSetting(onSuccess);
const deleteOps = useDeleteOperations(onSuccess);
// 根据工厂类型打开对应的对话框
const openFactoryDialog = useCallback((factoryName: string, data?: any, isEdit = false) => {