|
|
|
|
@ -132,7 +132,129 @@ const AdminConfig = () => {
|
|
|
|
|
database: databaseConfig,
|
|
|
|
|
server: serverConfig,
|
|
|
|
|
security: securityConfig,
|
|
|
|
|
dataSource: dataSourceConfig
|
|
|
|
|
dataSource: dataSourceConfig,
|
|
|
|
|
aiModel: {
|
|
|
|
|
models: [
|
|
|
|
|
{
|
|
|
|
|
id: 1,
|
|
|
|
|
name: "DeepSeek",
|
|
|
|
|
accuracy: "85%",
|
|
|
|
|
responseTime: "250ms",
|
|
|
|
|
enabled: true,
|
|
|
|
|
apiKey: "",
|
|
|
|
|
apiBaseUrl: "https://api.deepseek.com/v1/chat/completions",
|
|
|
|
|
temperature: 0.3,
|
|
|
|
|
maxTokens: 1000,
|
|
|
|
|
timeout: 30000,
|
|
|
|
|
retries: 3,
|
|
|
|
|
predictionPeriods: ["1H", "4H", "1D"],
|
|
|
|
|
confidenceThreshold: 70,
|
|
|
|
|
historyDataDays: 90,
|
|
|
|
|
technicalIndicators: {
|
|
|
|
|
enabled: true,
|
|
|
|
|
indicators: ["MACD", "RSI", "KDJ", "MA", "BOLL"]
|
|
|
|
|
},
|
|
|
|
|
fundamentalAnalysis: {
|
|
|
|
|
enabled: true,
|
|
|
|
|
factors: ["资金流向", "持仓分析", "现货价格", "库存变化"]
|
|
|
|
|
},
|
|
|
|
|
riskAssessment: {
|
|
|
|
|
enabled: true,
|
|
|
|
|
riskLevel: "medium"
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
id: 2,
|
|
|
|
|
name: "GPT-4",
|
|
|
|
|
accuracy: "88%",
|
|
|
|
|
responseTime: "350ms",
|
|
|
|
|
enabled: false,
|
|
|
|
|
apiKey: "",
|
|
|
|
|
apiBaseUrl: "https://api.openai.com/v1/chat/completions",
|
|
|
|
|
temperature: 0.3,
|
|
|
|
|
maxTokens: 1000,
|
|
|
|
|
timeout: 30000,
|
|
|
|
|
retries: 3,
|
|
|
|
|
predictionPeriods: ["1H", "4H", "1D"],
|
|
|
|
|
confidenceThreshold: 70,
|
|
|
|
|
historyDataDays: 90,
|
|
|
|
|
technicalIndicators: {
|
|
|
|
|
enabled: true,
|
|
|
|
|
indicators: ["MACD", "RSI", "KDJ", "MA", "BOLL"]
|
|
|
|
|
},
|
|
|
|
|
fundamentalAnalysis: {
|
|
|
|
|
enabled: true,
|
|
|
|
|
factors: ["资金流向", "持仓分析", "现货价格", "库存变化"]
|
|
|
|
|
},
|
|
|
|
|
riskAssessment: {
|
|
|
|
|
enabled: true,
|
|
|
|
|
riskLevel: "medium"
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
id: 3,
|
|
|
|
|
name: "Claude",
|
|
|
|
|
accuracy: "82%",
|
|
|
|
|
responseTime: "200ms",
|
|
|
|
|
enabled: false,
|
|
|
|
|
apiKey: "",
|
|
|
|
|
apiBaseUrl: "",
|
|
|
|
|
temperature: 0.3,
|
|
|
|
|
maxTokens: 1000,
|
|
|
|
|
timeout: 30000,
|
|
|
|
|
retries: 3,
|
|
|
|
|
predictionPeriods: ["1H", "4H", "1D"],
|
|
|
|
|
confidenceThreshold: 70,
|
|
|
|
|
historyDataDays: 90,
|
|
|
|
|
technicalIndicators: {
|
|
|
|
|
enabled: true,
|
|
|
|
|
indicators: ["MACD", "RSI", "KDJ", "MA", "BOLL"]
|
|
|
|
|
},
|
|
|
|
|
fundamentalAnalysis: {
|
|
|
|
|
enabled: true,
|
|
|
|
|
factors: ["资金流向", "持仓分析", "现货价格", "库存变化"]
|
|
|
|
|
},
|
|
|
|
|
riskAssessment: {
|
|
|
|
|
enabled: true,
|
|
|
|
|
riskLevel: "medium"
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
id: 4,
|
|
|
|
|
name: "自定义模型",
|
|
|
|
|
accuracy: "78%",
|
|
|
|
|
responseTime: "150ms",
|
|
|
|
|
enabled: false,
|
|
|
|
|
apiKey: "",
|
|
|
|
|
apiBaseUrl: "",
|
|
|
|
|
temperature: 0.3,
|
|
|
|
|
maxTokens: 1000,
|
|
|
|
|
timeout: 30000,
|
|
|
|
|
retries: 3,
|
|
|
|
|
predictionPeriods: ["1H", "4H", "1D"],
|
|
|
|
|
confidenceThreshold: 70,
|
|
|
|
|
historyDataDays: 90,
|
|
|
|
|
technicalIndicators: {
|
|
|
|
|
enabled: true,
|
|
|
|
|
indicators: ["MACD", "RSI", "KDJ", "MA", "BOLL"]
|
|
|
|
|
},
|
|
|
|
|
fundamentalAnalysis: {
|
|
|
|
|
enabled: true,
|
|
|
|
|
factors: ["资金流向", "持仓分析", "现货价格", "库存变化"]
|
|
|
|
|
},
|
|
|
|
|
riskAssessment: {
|
|
|
|
|
enabled: true,
|
|
|
|
|
riskLevel: "medium"
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
],
|
|
|
|
|
defaultModel: "DeepSeek",
|
|
|
|
|
predictionConfig: {
|
|
|
|
|
defaultPeriod: "1D",
|
|
|
|
|
defaultConfidenceThreshold: 70,
|
|
|
|
|
defaultHistoryDataDays: 90
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
// 处理配置变更
|
|
|
|
|
@ -146,6 +268,38 @@ const AdminConfig = () => {
|
|
|
|
|
}));
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// 处理AI模型配置变更
|
|
|
|
|
const handleAiModelConfigChange = (modelId, key, value) => {
|
|
|
|
|
setConfig(prev => ({
|
|
|
|
|
...prev,
|
|
|
|
|
aiModel: {
|
|
|
|
|
...prev.aiModel,
|
|
|
|
|
models: prev.aiModel.models.map(model =>
|
|
|
|
|
model.id === modelId ? { ...model, [key]: value } : model
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
}));
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// 处理AI模型详细配置变更
|
|
|
|
|
const handleAiModelDetailConfigChange = (modelId, section, key, value) => {
|
|
|
|
|
setConfig(prev => ({
|
|
|
|
|
...prev,
|
|
|
|
|
aiModel: {
|
|
|
|
|
...prev.aiModel,
|
|
|
|
|
models: prev.aiModel.models.map(model =>
|
|
|
|
|
model.id === modelId ? {
|
|
|
|
|
...model,
|
|
|
|
|
[section]: {
|
|
|
|
|
...model[section],
|
|
|
|
|
[key]: value
|
|
|
|
|
}
|
|
|
|
|
} : model
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
}));
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// 处理数据库配置变更
|
|
|
|
|
const handleDatabaseConfigChange = (dbType, key, value) => {
|
|
|
|
|
setConfig(prev => ({
|
|
|
|
|
@ -205,6 +359,128 @@ const AdminConfig = () => {
|
|
|
|
|
wind: { enabled: false, apiKey: '', apiSecret: '', url: 'https://api.wind.com.cn', timeout: 30000, retries: 3 },
|
|
|
|
|
sina: { enabled: false, url: 'https://finance.sina.com.cn', timeout: 10000, retries: 3, refreshInterval: 60000 },
|
|
|
|
|
defaultDataSource: 'tqsdk'
|
|
|
|
|
},
|
|
|
|
|
aiModel: newConfig.aiModel || {
|
|
|
|
|
models: [
|
|
|
|
|
{
|
|
|
|
|
id: 1,
|
|
|
|
|
name: "DeepSeek",
|
|
|
|
|
accuracy: "85%",
|
|
|
|
|
responseTime: "250ms",
|
|
|
|
|
enabled: true,
|
|
|
|
|
apiKey: "",
|
|
|
|
|
apiBaseUrl: "https://api.deepseek.com/v1/chat/completions",
|
|
|
|
|
temperature: 0.3,
|
|
|
|
|
maxTokens: 1000,
|
|
|
|
|
timeout: 30000,
|
|
|
|
|
retries: 3,
|
|
|
|
|
predictionPeriods: ["1H", "4H", "1D"],
|
|
|
|
|
confidenceThreshold: 70,
|
|
|
|
|
historyDataDays: 90,
|
|
|
|
|
technicalIndicators: {
|
|
|
|
|
enabled: true,
|
|
|
|
|
indicators: ["MACD", "RSI", "KDJ", "MA", "BOLL"]
|
|
|
|
|
},
|
|
|
|
|
fundamentalAnalysis: {
|
|
|
|
|
enabled: true,
|
|
|
|
|
factors: ["资金流向", "持仓分析", "现货价格", "库存变化"]
|
|
|
|
|
},
|
|
|
|
|
riskAssessment: {
|
|
|
|
|
enabled: true,
|
|
|
|
|
riskLevel: "medium"
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
id: 2,
|
|
|
|
|
name: "GPT-4",
|
|
|
|
|
accuracy: "88%",
|
|
|
|
|
responseTime: "350ms",
|
|
|
|
|
enabled: false,
|
|
|
|
|
apiKey: "",
|
|
|
|
|
apiBaseUrl: "https://api.openai.com/v1/chat/completions",
|
|
|
|
|
temperature: 0.3,
|
|
|
|
|
maxTokens: 1000,
|
|
|
|
|
timeout: 30000,
|
|
|
|
|
retries: 3,
|
|
|
|
|
predictionPeriods: ["1H", "4H", "1D"],
|
|
|
|
|
confidenceThreshold: 70,
|
|
|
|
|
historyDataDays: 90,
|
|
|
|
|
technicalIndicators: {
|
|
|
|
|
enabled: true,
|
|
|
|
|
indicators: ["MACD", "RSI", "KDJ", "MA", "BOLL"]
|
|
|
|
|
},
|
|
|
|
|
fundamentalAnalysis: {
|
|
|
|
|
enabled: true,
|
|
|
|
|
factors: ["资金流向", "持仓分析", "现货价格", "库存变化"]
|
|
|
|
|
},
|
|
|
|
|
riskAssessment: {
|
|
|
|
|
enabled: true,
|
|
|
|
|
riskLevel: "medium"
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
id: 3,
|
|
|
|
|
name: "Claude",
|
|
|
|
|
accuracy: "82%",
|
|
|
|
|
responseTime: "200ms",
|
|
|
|
|
enabled: false,
|
|
|
|
|
apiKey: "",
|
|
|
|
|
apiBaseUrl: "",
|
|
|
|
|
temperature: 0.3,
|
|
|
|
|
maxTokens: 1000,
|
|
|
|
|
timeout: 30000,
|
|
|
|
|
retries: 3,
|
|
|
|
|
predictionPeriods: ["1H", "4H", "1D"],
|
|
|
|
|
confidenceThreshold: 70,
|
|
|
|
|
historyDataDays: 90,
|
|
|
|
|
technicalIndicators: {
|
|
|
|
|
enabled: true,
|
|
|
|
|
indicators: ["MACD", "RSI", "KDJ", "MA", "BOLL"]
|
|
|
|
|
},
|
|
|
|
|
fundamentalAnalysis: {
|
|
|
|
|
enabled: true,
|
|
|
|
|
factors: ["资金流向", "持仓分析", "现货价格", "库存变化"]
|
|
|
|
|
},
|
|
|
|
|
riskAssessment: {
|
|
|
|
|
enabled: true,
|
|
|
|
|
riskLevel: "medium"
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
id: 4,
|
|
|
|
|
name: "自定义模型",
|
|
|
|
|
accuracy: "78%",
|
|
|
|
|
responseTime: "150ms",
|
|
|
|
|
enabled: false,
|
|
|
|
|
apiKey: "",
|
|
|
|
|
apiBaseUrl: "",
|
|
|
|
|
temperature: 0.3,
|
|
|
|
|
maxTokens: 1000,
|
|
|
|
|
timeout: 30000,
|
|
|
|
|
retries: 3,
|
|
|
|
|
predictionPeriods: ["1H", "4H", "1D"],
|
|
|
|
|
confidenceThreshold: 70,
|
|
|
|
|
historyDataDays: 90,
|
|
|
|
|
technicalIndicators: {
|
|
|
|
|
enabled: true,
|
|
|
|
|
indicators: ["MACD", "RSI", "KDJ", "MA", "BOLL"]
|
|
|
|
|
},
|
|
|
|
|
fundamentalAnalysis: {
|
|
|
|
|
enabled: true,
|
|
|
|
|
factors: ["资金流向", "持仓分析", "现货价格", "库存变化"]
|
|
|
|
|
},
|
|
|
|
|
riskAssessment: {
|
|
|
|
|
enabled: true,
|
|
|
|
|
riskLevel: "medium"
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
],
|
|
|
|
|
defaultModel: "DeepSeek",
|
|
|
|
|
predictionConfig: {
|
|
|
|
|
defaultPeriod: "1D",
|
|
|
|
|
defaultConfidenceThreshold: 70,
|
|
|
|
|
defaultHistoryDataDays: 90
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
@ -392,27 +668,29 @@ const AdminConfig = () => {
|
|
|
|
|
// 打开AI模型配置模态框
|
|
|
|
|
const openAiModelConfig = (model) => {
|
|
|
|
|
setCurrentAiModel(model);
|
|
|
|
|
// 从配置中获取模型数据
|
|
|
|
|
const modelConfig = config.aiModel.models.find(m => m.id === model.id) || model;
|
|
|
|
|
// 初始化表单数据
|
|
|
|
|
aiModelForm.setFieldsValue({
|
|
|
|
|
modelName: model.name,
|
|
|
|
|
apiKey: '',
|
|
|
|
|
apiBaseUrl: '',
|
|
|
|
|
temperature: 0.3,
|
|
|
|
|
maxTokens: 1000,
|
|
|
|
|
timeout: 30000,
|
|
|
|
|
retries: 3,
|
|
|
|
|
predictionPeriods: ['1H', '4H', '1D'],
|
|
|
|
|
confidenceThreshold: 70,
|
|
|
|
|
historyDataDays: 90,
|
|
|
|
|
technicalIndicators: {
|
|
|
|
|
modelName: modelConfig.name,
|
|
|
|
|
apiKey: modelConfig.apiKey || '',
|
|
|
|
|
apiBaseUrl: modelConfig.apiBaseUrl || '',
|
|
|
|
|
temperature: modelConfig.temperature || 0.3,
|
|
|
|
|
maxTokens: modelConfig.maxTokens || 1000,
|
|
|
|
|
timeout: modelConfig.timeout || 30000,
|
|
|
|
|
retries: modelConfig.retries || 3,
|
|
|
|
|
predictionPeriods: modelConfig.predictionPeriods || ['1H', '4H', '1D'],
|
|
|
|
|
confidenceThreshold: modelConfig.confidenceThreshold || 70,
|
|
|
|
|
historyDataDays: modelConfig.historyDataDays || 90,
|
|
|
|
|
technicalIndicators: modelConfig.technicalIndicators || {
|
|
|
|
|
enabled: true,
|
|
|
|
|
indicators: ['MACD', 'RSI', 'KDJ', 'MA', 'BOLL']
|
|
|
|
|
},
|
|
|
|
|
fundamentalAnalysis: {
|
|
|
|
|
fundamentalAnalysis: modelConfig.fundamentalAnalysis || {
|
|
|
|
|
enabled: true,
|
|
|
|
|
factors: ['资金流向', '持仓分析', '现货价格', '库存变化']
|
|
|
|
|
},
|
|
|
|
|
riskAssessment: {
|
|
|
|
|
riskAssessment: modelConfig.riskAssessment || {
|
|
|
|
|
enabled: true,
|
|
|
|
|
riskLevel: 'medium'
|
|
|
|
|
}
|
|
|
|
|
@ -423,7 +701,30 @@ const AdminConfig = () => {
|
|
|
|
|
// 保存AI模型配置
|
|
|
|
|
const saveAiModelConfig = (values) => {
|
|
|
|
|
console.log('AI模型配置保存:', values);
|
|
|
|
|
// 模拟保存操作
|
|
|
|
|
// 更新配置中的模型数据
|
|
|
|
|
setConfig(prev => ({
|
|
|
|
|
...prev,
|
|
|
|
|
aiModel: {
|
|
|
|
|
...prev.aiModel,
|
|
|
|
|
models: prev.aiModel.models.map(model =>
|
|
|
|
|
model.id === currentAiModel.id ? {
|
|
|
|
|
...model,
|
|
|
|
|
apiKey: values.apiKey,
|
|
|
|
|
apiBaseUrl: values.apiBaseUrl,
|
|
|
|
|
temperature: values.temperature,
|
|
|
|
|
maxTokens: values.maxTokens,
|
|
|
|
|
timeout: values.timeout,
|
|
|
|
|
retries: values.retries,
|
|
|
|
|
predictionPeriods: values.predictionPeriods,
|
|
|
|
|
confidenceThreshold: values.confidenceThreshold,
|
|
|
|
|
historyDataDays: values.historyDataDays,
|
|
|
|
|
technicalIndicators: values.technicalIndicators,
|
|
|
|
|
fundamentalAnalysis: values.fundamentalAnalysis,
|
|
|
|
|
riskAssessment: values.riskAssessment
|
|
|
|
|
} : model
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
}));
|
|
|
|
|
setAiModelModalVisible(false);
|
|
|
|
|
messageApi.success('AI模型配置已保存');
|
|
|
|
|
};
|
|
|
|
|
@ -1289,12 +1590,7 @@ const AdminConfig = () => {
|
|
|
|
|
{/* AI模型配置 */}
|
|
|
|
|
<Card title="AI模型配置" className="admin-config-card" style={{ marginBottom: 24 }}>
|
|
|
|
|
<Table
|
|
|
|
|
dataSource={[
|
|
|
|
|
{ id: 1, name: 'DeepSeek', accuracy: '85%', responseTime: '250ms', enabled: true },
|
|
|
|
|
{ id: 2, name: 'GPT-4', accuracy: '88%', responseTime: '350ms', enabled: false },
|
|
|
|
|
{ id: 3, name: 'Claude', accuracy: '82%', responseTime: '200ms', enabled: false },
|
|
|
|
|
{ id: 4, name: '自定义模型', accuracy: '78%', responseTime: '150ms', enabled: false }
|
|
|
|
|
]}
|
|
|
|
|
dataSource={config.aiModel.models}
|
|
|
|
|
columns={[
|
|
|
|
|
{
|
|
|
|
|
title: '模型名称',
|
|
|
|
|
@ -1315,8 +1611,11 @@ const AdminConfig = () => {
|
|
|
|
|
title: '默认模型',
|
|
|
|
|
dataIndex: 'enabled',
|
|
|
|
|
key: 'enabled',
|
|
|
|
|
render: (enabled) => (
|
|
|
|
|
<Switch checked={enabled} onChange={() => {}} />
|
|
|
|
|
render: (enabled, record) => (
|
|
|
|
|
<Switch
|
|
|
|
|
checked={enabled}
|
|
|
|
|
onChange={(checked) => handleAiModelConfigChange(record.id, 'enabled', checked)}
|
|
|
|
|
/>
|
|
|
|
|
)
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
@ -1338,8 +1637,14 @@ const AdminConfig = () => {
|
|
|
|
|
<Form layout="vertical">
|
|
|
|
|
<Row gutter={[16, 16]}>
|
|
|
|
|
<Col span={8}>
|
|
|
|
|
<Item label="预测周期">
|
|
|
|
|
<Select defaultValue="1D">
|
|
|
|
|
<Item label="预测周期" name="aiModel.predictionConfig.defaultPeriod">
|
|
|
|
|
<Select
|
|
|
|
|
defaultValue={config.aiModel.predictionConfig.defaultPeriod}
|
|
|
|
|
onChange={(value) => handleConfigChange('aiModel', 'predictionConfig', {
|
|
|
|
|
...config.aiModel.predictionConfig,
|
|
|
|
|
defaultPeriod: value
|
|
|
|
|
})}
|
|
|
|
|
>
|
|
|
|
|
<Option value="1H">1小时</Option>
|
|
|
|
|
<Option value="4H">4小时</Option>
|
|
|
|
|
<Option value="1D">1天</Option>
|
|
|
|
|
@ -1348,17 +1653,56 @@ const AdminConfig = () => {
|
|
|
|
|
</Item>
|
|
|
|
|
</Col>
|
|
|
|
|
<Col span={8}>
|
|
|
|
|
<Item label="置信度阈值">
|
|
|
|
|
<Input addonAfter="%" type="number" defaultValue={70} min={50} max={95} />
|
|
|
|
|
<Item label="置信度阈值" name="aiModel.predictionConfig.defaultConfidenceThreshold">
|
|
|
|
|
<Input
|
|
|
|
|
addonAfter="%"
|
|
|
|
|
type="number"
|
|
|
|
|
defaultValue={config.aiModel.predictionConfig.defaultConfidenceThreshold}
|
|
|
|
|
min={50}
|
|
|
|
|
max={95}
|
|
|
|
|
onChange={(e) => handleConfigChange('aiModel', 'predictionConfig', {
|
|
|
|
|
...config.aiModel.predictionConfig,
|
|
|
|
|
defaultConfidenceThreshold: parseInt(e.target.value) || 70
|
|
|
|
|
})}
|
|
|
|
|
/>
|
|
|
|
|
</Item>
|
|
|
|
|
</Col>
|
|
|
|
|
<Col span={8}>
|
|
|
|
|
<Item label="历史数据长度">
|
|
|
|
|
<Input addonAfter="天" type="number" defaultValue={90} min={30} max={365} />
|
|
|
|
|
<Item label="历史数据长度" name="aiModel.predictionConfig.defaultHistoryDataDays">
|
|
|
|
|
<Input
|
|
|
|
|
addonAfter="天"
|
|
|
|
|
type="number"
|
|
|
|
|
defaultValue={config.aiModel.predictionConfig.defaultHistoryDataDays}
|
|
|
|
|
min={30}
|
|
|
|
|
max={365}
|
|
|
|
|
onChange={(e) => handleConfigChange('aiModel', 'predictionConfig', {
|
|
|
|
|
...config.aiModel.predictionConfig,
|
|
|
|
|
defaultHistoryDataDays: parseInt(e.target.value) || 90
|
|
|
|
|
})}
|
|
|
|
|
/>
|
|
|
|
|
</Item>
|
|
|
|
|
</Col>
|
|
|
|
|
</Row>
|
|
|
|
|
<Button type="primary" style={{ marginTop: 8 }}>
|
|
|
|
|
<Button
|
|
|
|
|
type="primary"
|
|
|
|
|
style={{ marginTop: 8 }}
|
|
|
|
|
onClick={() => {
|
|
|
|
|
// 应用参数到所有模型
|
|
|
|
|
setConfig(prev => ({
|
|
|
|
|
...prev,
|
|
|
|
|
aiModel: {
|
|
|
|
|
...prev.aiModel,
|
|
|
|
|
models: prev.aiModel.models.map(model => ({
|
|
|
|
|
...model,
|
|
|
|
|
predictionPeriods: [prev.aiModel.predictionConfig.defaultPeriod],
|
|
|
|
|
confidenceThreshold: prev.aiModel.predictionConfig.defaultConfidenceThreshold,
|
|
|
|
|
historyDataDays: prev.aiModel.predictionConfig.defaultHistoryDataDays
|
|
|
|
|
}))
|
|
|
|
|
}
|
|
|
|
|
}));
|
|
|
|
|
messageApi.success('模型参数已应用');
|
|
|
|
|
}}
|
|
|
|
|
>
|
|
|
|
|
应用参数
|
|
|
|
|
</Button>
|
|
|
|
|
</Form>
|
|
|
|
|
|