/* Copyright (C) 2025 QuantumNous This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . For commercial licensing, please contact support@quantumnous.com */ import React, { useEffect, useState } from 'react'; import { Card, Spin } from '@douyinfe/semi-ui'; import SettingsGeneral from '../../pages/Setting/Operation/SettingsGeneral'; import SettingsHeaderNavModules from '../../pages/Setting/Operation/SettingsHeaderNavModules'; import SettingsSidebarModulesAdmin from '../../pages/Setting/Operation/SettingsSidebarModulesAdmin'; import SettingsSensitiveWords from '../../pages/Setting/Operation/SettingsSensitiveWords'; import SettingsLog from '../../pages/Setting/Operation/SettingsLog'; import SettingsMonitoring from '../../pages/Setting/Operation/SettingsMonitoring'; import SettingsCreditLimit from '../../pages/Setting/Operation/SettingsCreditLimit'; import { API, showError, toBoolean } from '../../helpers'; const OperationSetting = () => { let [inputs, setInputs] = useState({ /* 额度相关 */ QuotaForNewUser: 0, PreConsumedQuota: 0, QuotaForInviter: 0, QuotaForInvitee: 0, 'quota_setting.enable_free_model_pre_consume': true, /* 通用设置 */ TopUpLink: '', 'general_setting.docs_link': '', QuotaPerUnit: 0, USDExchangeRate: 0, RetryTimes: 0, 'general_setting.quota_display_type': 'USD', DisplayTokenStatEnabled: false, DefaultCollapseSidebar: false, DemoSiteEnabled: false, SelfUseModeEnabled: false, /* 顶栏模块管理 */ HeaderNavModules: '', /* 左侧边栏模块管理(管理员) */ SidebarModulesAdmin: '', /* 敏感词设置 */ CheckSensitiveEnabled: false, CheckSensitiveOnPromptEnabled: false, SensitiveWords: '', /* 日志设置 */ LogConsumeEnabled: false, /* 监控设置 */ ChannelDisableThreshold: 0, QuotaRemindThreshold: 0, AutomaticDisableChannelEnabled: false, AutomaticEnableChannelEnabled: false, AutomaticDisableKeywords: '', 'monitor_setting.auto_test_channel_enabled': false, 'monitor_setting.auto_test_channel_minutes': 10, }); let [loading, setLoading] = useState(false); const getOptions = async () => { const res = await API.get('/api/option/'); const { success, message, data } = res.data; if (success) { let newInputs = {}; data.forEach((item) => { if (typeof inputs[item.key] === 'boolean') { newInputs[item.key] = toBoolean(item.value); } else { newInputs[item.key] = item.value; } }); setInputs(newInputs); } else { showError(message); } }; async function onRefresh() { try { setLoading(true); await getOptions(); // showSuccess('刷新成功'); } catch (error) { showError('刷新失败'); } finally { setLoading(false); } } useEffect(() => { onRefresh(); }, []); return ( <> {/* 通用设置 */} {/* 顶栏模块管理 */}
{/* 左侧边栏模块管理(管理员) */}
{/* 屏蔽词过滤设置 */} {/* 日志设置 */} {/* 监控设置 */} {/* 额度设置 */}
); }; export default OperationSetting;