You've already forked DataMate
* feat: Update site name to DataMate and refine text for AI data processing * feat: Refactor settings page and implement model access functionality - Created a new ModelAccess component for managing model configurations. - Removed the old Settings component and replaced it with a new SettingsPage component that integrates ModelAccess, SystemConfig, and WebhookConfig. - Added SystemConfig component for managing system settings. - Implemented WebhookConfig component for managing webhook configurations. - Updated API functions for model management in settings.apis.ts. - Adjusted routing to point to the new SettingsPage component. * feat: Implement Data Collection Page with Task Management and Execution Log - Created DataCollectionPage component to manage data collection tasks. - Added TaskManagement and ExecutionLog components for task handling and logging. - Integrated task operations including start, stop, edit, and delete functionalities. - Implemented filtering and searching capabilities in task management. - Introduced SimpleCronScheduler for scheduling tasks with cron expressions. - Updated CreateTask component to utilize new scheduling and template features. - Enhanced BasicInformation component to conditionally render fields based on visibility settings. - Refactored ImportConfiguration component to remove NAS import section. * feat: Update task creation API endpoint and enhance task creation form with new fields and validation * Refactor file upload and operator management components - Removed unnecessary console logs from file download and export functions. - Added size property to TaskItem interface for better task management. - Simplified TaskUpload component by utilizing useFileSliceUpload hook for file upload logic. - Enhanced OperatorPluginCreate component to handle file uploads and parsing more efficiently. - Updated ConfigureStep component to use Ant Design Form for better data handling and validation. - Improved PreviewStep component to navigate back to the operator market. - Added support for additional file types in UploadStep component. - Implemented delete operator functionality in OperatorMarketPage with confirmation prompts. - Cleaned up unused API functions in operator.api.ts to streamline the codebase. - Fixed number formatting utility to handle zero values correctly. * Refactor Knowledge Generation to Knowledge Base - Created new API service for Knowledge Base operations including querying, creating, updating, and deleting knowledge bases and files. - Added constants for Knowledge Base status and type mappings. - Defined models for Knowledge Base and related files. - Removed obsolete Knowledge Base creation and home components, replacing them with new implementations under the Knowledge Base structure. - Updated routing to reflect the new Knowledge Base paths. - Adjusted menu items to align with the new Knowledge Base terminology. - Modified ModelAccess interface to include modelName and type properties. * feat: Implement Knowledge Base Page with CRUD operations and data management - Added KnowledgeBasePage component for displaying and managing knowledge bases. - Integrated search and filter functionalities with SearchControls component. - Implemented CreateKnowledgeBase component for creating and editing knowledge bases. - Enhanced AddDataDialog for file uploads and dataset selections. - Introduced TableTransfer component for managing data transfers between tables. - Updated API functions for knowledge base operations, including file management. - Refactored knowledge base model to include file status and metadata. - Adjusted routing to point to the new KnowledgeBasePage. * feat: enhance OperatorPluginCreate and ConfigureStep for better upload handling and UI updates * refactor: remove unused components and clean up API logging in KnowledgeBase * feat: update icons in various components and improve styling for better UI consistency * fix: adjust upload step handling and improve error display in configuration step * feat: Add RatioTransfer component for dataset selection and configuration - Implemented RatioTransfer component to manage dataset selection and ratio configuration. - Integrated dataset fetching with search and filter capabilities. - Added RatioConfig component for displaying and updating selected datasets' configurations. - Enhanced SelectDataset component with improved UI and functionality for dataset selection. - Updated RatioTasksPage to utilize new ratio task status mapping and improved error handling for task deletion. - Refactored ratio model and constants for better type safety and clarity. - Changed Vite configuration to use local backend service for development. * feat: Add .editorconfig and enhance SystemConfig with table for settings display
191 lines
5.5 KiB
TypeScript
191 lines
5.5 KiB
TypeScript
import { Divider, Input, Select, Switch, Button, Form, App, Table } from "antd";
|
|
import { PlusOutlined } from "@ant-design/icons";
|
|
import { useState } from "react";
|
|
|
|
export default function SystemConfig() {
|
|
const { message } = App.useApp();
|
|
// System Settings State
|
|
const [systemConfig, setSystemConfig] = useState({
|
|
siteName: "DataMate",
|
|
maxFileSize: "100",
|
|
autoBackup: true,
|
|
logLevel: "info",
|
|
sessionTimeout: "30",
|
|
enableNotifications: true,
|
|
});
|
|
const configData = [
|
|
{
|
|
key: "1",
|
|
parameter: "站点名称",
|
|
value: systemConfig.siteName,
|
|
description: "系统的显示名称",
|
|
},
|
|
{
|
|
key: "2",
|
|
parameter: "最大文件大小 (MB)",
|
|
value: systemConfig.maxFileSize,
|
|
description: "允许上传的最大文件大小",
|
|
},
|
|
{
|
|
key: "3",
|
|
parameter: "自动备份",
|
|
value: systemConfig.autoBackup ? "启用" : "禁用",
|
|
description: "定期自动备份系统数据",
|
|
},
|
|
{
|
|
key: "4",
|
|
parameter: "日志级别",
|
|
value: systemConfig.logLevel,
|
|
description: "系统日志的详细程度",
|
|
},
|
|
{
|
|
key: "5",
|
|
parameter: "会话超时 (分钟)",
|
|
value: systemConfig.sessionTimeout,
|
|
description: "用户会话的超时时间",
|
|
},
|
|
];
|
|
|
|
const logLevelOptions = [
|
|
{ value: "debug", label: "Debug" },
|
|
{ value: "info", label: "Info" },
|
|
{ value: "warn", label: "Warning" },
|
|
{ value: "error", label: "Error" },
|
|
];
|
|
|
|
const handleSaveSystemSettings = () => {
|
|
// Save system settings logic
|
|
console.log("Saving system settings:", systemConfig);
|
|
message.success("系统设置已保存");
|
|
};
|
|
|
|
const columns = [
|
|
{
|
|
title: "参数",
|
|
dataIndex: "parameter",
|
|
key: "parameter",
|
|
},
|
|
{
|
|
title: "值",
|
|
dataIndex: "value",
|
|
key: "value",
|
|
},
|
|
{
|
|
title: "描述",
|
|
dataIndex: "description",
|
|
key: "description",
|
|
},
|
|
{
|
|
title: "是否启用",
|
|
dataIndex: "enabled",
|
|
key: "enabled",
|
|
render: (_: any, record: any) => (
|
|
<Switch
|
|
checked={
|
|
record.key === "3"
|
|
? systemConfig.autoBackup
|
|
: record.key === "5"
|
|
? systemConfig.enableNotifications
|
|
: false
|
|
}
|
|
onChange={(checked) => {
|
|
if (record.key === "3") {
|
|
setSystemConfig((prevConfig) => ({
|
|
...prevConfig,
|
|
autoBackup: checked,
|
|
}));
|
|
} else if (record.key === "5") {
|
|
setSystemConfig((prevConfig) => ({
|
|
...prevConfig,
|
|
enableNotifications: checked,
|
|
}));
|
|
}
|
|
}}
|
|
/>
|
|
),
|
|
}
|
|
];
|
|
|
|
return (
|
|
<div className="h-full flex flex-col">
|
|
<div className="flex items-top justify-between">
|
|
<h2 className="text-lg font-medium mb-4">参数配置</h2>
|
|
<Button
|
|
type="primary"
|
|
icon={<PlusOutlined />}
|
|
onClick={() => {
|
|
setIsEditMode(false);
|
|
form.resetFields();
|
|
setNewModel({
|
|
name: "",
|
|
provider: "",
|
|
model: "",
|
|
apiKey: "",
|
|
endpoint: "",
|
|
});
|
|
setShowModelDialog(true);
|
|
}}
|
|
>
|
|
添加模型
|
|
</Button>
|
|
</div>
|
|
<div className="flex-1 border-card overflow-auto p-6">
|
|
<Table columns={columns} data={configData} />
|
|
<Form
|
|
onValuesChange={(changedValues) => {
|
|
setSystemConfig((prevConfig) => ({
|
|
...prevConfig,
|
|
...changedValues,
|
|
}));
|
|
}}
|
|
layout="vertical"
|
|
>
|
|
<div className="grid grid-cols-2 gap-6 mt-6">
|
|
<Form.Item name="siteName" label="站点名称">
|
|
<Input />
|
|
</Form.Item>
|
|
<Form.Item name="maxFileSize" label="最大文件大小 (MB)">
|
|
<Input type="number" />
|
|
</Form.Item>
|
|
<Form.Item name="logLevel" label="日志级别">
|
|
<Select options={logLevelOptions}></Select>
|
|
</Form.Item>
|
|
<Form.Item name="sessionTimeout" label="会话超时 (分钟)">
|
|
<Input type="number" />
|
|
</Form.Item>
|
|
</div>
|
|
<Divider />
|
|
<div className="space-y-4">
|
|
<h4 className="font-medium">功能开关</h4>
|
|
<div className="space-y-3">
|
|
<div className="flex items-center justify-between">
|
|
<div>
|
|
<span>自动备份</span>
|
|
<p className="text-sm text-gray-500">定期自动备份系统数据</p>
|
|
</div>
|
|
<Form.Item name="autoBackup" valuePropName="checked">
|
|
<Switch />
|
|
</Form.Item>
|
|
</div>
|
|
<div className="flex items-center justify-between">
|
|
<div>
|
|
<span>启用通知</span>
|
|
<p className="text-sm text-gray-500">接收系统通知和提醒</p>
|
|
</div>
|
|
<Form.Item name="enableNotifications" valuePropName="checked">
|
|
<Switch />
|
|
</Form.Item>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div className="flex justify-end mt-6">
|
|
<Button type="primary" onClick={handleSaveSystemSettings}>
|
|
保存设置
|
|
</Button>
|
|
</div>
|
|
</Form>
|
|
</div>
|
|
</div>
|
|
);
|
|
}
|