You've already forked DataMate
change settings page and add ratio task detail page (#77)
* 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 * feat: Enhance parameter configuration for range inputs and update default values * feat: Update site name to DataMate and refine text for AI data processing * 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 * 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: Update site name to DataMate and refine text for AI data processing * 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 * 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 settings drawer and integrate SettingsPage component * feat: add ratio task management features including detail view and API integration
This commit is contained in:
@@ -92,6 +92,17 @@ const MockAPI = {
|
||||
deleteInstructionTemplateByIdUsingDelete: "/synthesis/templates/:templateId", // 删除指令模板
|
||||
instructionTuningUsingPost: "/synthesis/instruction-tuning", // 指令微调
|
||||
cotDistillationUsingPost: "/synthesis/cot-distillation", // Cot蒸馏
|
||||
|
||||
// 数据配比接口
|
||||
createRatioTaskUsingPost: "/synthesis/ratio-task", // 创建配比任务
|
||||
queryRatioTasksUsingGet: "/synthesis/ratio-task", // 获取配比任务列表
|
||||
queryRatioTaskByIdUsingGet: "/synthesis/ratio-task/:taskId", // 根据ID获取配比任务详情
|
||||
deleteRatioTaskByIdUsingDelete: "/synthesis/ratio-task/:taskId", // 删除配比任务
|
||||
updateRatioTaskByIdUsingPut: "/synthesis/ratio-task/:taskId", // 更新配比任务
|
||||
executeRatioTaskByIdUsingPost: "/synthesis/ratio-task/:taskId/execute", // 执行配比任务
|
||||
stopRatioTaskByIdUsingPost: "/synthesis/ratio-task/:taskId/stop", // 停止配比任务
|
||||
queryRatioJobStatusUsingGet: "/synthesis/ratio-task/:taskId/status", // 获取配比任务状态
|
||||
queryRatioModelsUsingGet: "/synthesis/ratio-models", // 获取配比模型列表
|
||||
|
||||
// 数据评测接口
|
||||
queryEvaluationTasksUsingPost: "/evaluation/tasks", // 获取评测任务列表
|
||||
|
||||
@@ -443,7 +443,6 @@ module.exports = function (router) {
|
||||
const { id } = req.params;
|
||||
const operator = operatorList.find((op) => op.id === id);
|
||||
console.log("获取算子详情:", id, operator);
|
||||
|
||||
if (operator) {
|
||||
// 增加浏览次数模拟
|
||||
operator.viewCount = (operator.viewCount || 0) + 1;
|
||||
|
||||
220
frontend/src/mock/mock-seed/data-ratio.cjs
Normal file
220
frontend/src/mock/mock-seed/data-ratio.cjs
Normal file
@@ -0,0 +1,220 @@
|
||||
|
||||
const Mock = require("mockjs");
|
||||
const API = require("../mock-apis.cjs");
|
||||
|
||||
function ratioJobItem() {
|
||||
return {
|
||||
id: Mock.Random.guid().replace(/[^a-zA-Z0-9]/g, ""),
|
||||
name: Mock.Random.ctitle(5, 15),
|
||||
description: Mock.Random.csentence(10, 30),
|
||||
status: Mock.Random.pick(["PENDING", "RUNNING", "COMPLETED", "FAILED", "PAUSED"]),
|
||||
totals: Mock.Random.integer(1000, 10000),
|
||||
ratio_method: Mock.Random.pick(["DATASET", "TAG"]),
|
||||
target_dataset_id: Mock.Random.guid().replace(/[^a-zA-Z0-9]/g, ""),
|
||||
target_dataset_name: Mock.Random.ctitle(3, 8),
|
||||
config: [
|
||||
{
|
||||
datasetId: Mock.Random.guid().replace(/[^a-zA-Z0-9]/g, ""),
|
||||
counts: Mock.Random.integer(100, 1000).toString(),
|
||||
filter_conditions: "",
|
||||
},
|
||||
{
|
||||
datasetId: Mock.Random.guid().replace(/[^a-zA-Z0-9]/g, ""),
|
||||
counts: Mock.Random.integer(100, 1000).toString(),
|
||||
filter_conditions: "",
|
||||
},
|
||||
],
|
||||
created_at: Mock.Random.datetime("yyyy-MM-dd HH:mm:ss"),
|
||||
updated_at: Mock.Random.datetime("yyyy-MM-dd HH:mm:ss"),
|
||||
};
|
||||
}
|
||||
|
||||
const ratioJobList = new Array(20).fill(null).map(ratioJobItem);
|
||||
|
||||
|
||||
module.exports = function (router) {
|
||||
// 获取配比任务列表
|
||||
router.get(API.queryRatioTasksUsingGet, (req, res) => {
|
||||
const { page = 0, size = 10, status } = req.query;
|
||||
let filteredJobs = ratioJobList;
|
||||
if (status) {
|
||||
filteredJobs = ratioJobList.filter((job) => job.status === status);
|
||||
}
|
||||
const startIndex = page * size;
|
||||
const endIndex = startIndex + parseInt(size);
|
||||
const pageData = filteredJobs.slice(startIndex, endIndex);
|
||||
res.send({
|
||||
code: "0",
|
||||
msg: "Success",
|
||||
data: {
|
||||
content: pageData,
|
||||
totalElements: filteredJobs.length,
|
||||
totalPages: Math.ceil(filteredJobs.length / size),
|
||||
size: parseInt(size),
|
||||
number: parseInt(page),
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
// 创建配比任务
|
||||
router.post(API.createRatioTaskUsingPost, (req, res) => {
|
||||
const newJob = {
|
||||
...ratioJobItem(),
|
||||
...req.body,
|
||||
id: Mock.Random.guid().replace(/[^a-zA-Z0-9]/g, ""),
|
||||
status: "PENDING",
|
||||
createdAt: new Date().toISOString(),
|
||||
};
|
||||
ratioJobList.push(newJob);
|
||||
res.status(201).send({
|
||||
code: "0",
|
||||
msg: "Ratio job created successfully",
|
||||
data: newJob,
|
||||
});
|
||||
});
|
||||
|
||||
// 获取配比任务详情
|
||||
router.get(API.queryRatioTaskByIdUsingGet, (req, res) => {
|
||||
const { taskId } = req.params;
|
||||
const job = ratioJobList.find((j) => j.id === taskId);
|
||||
if (job) {
|
||||
res.send({
|
||||
code: "0",
|
||||
msg: "Success",
|
||||
data: job,
|
||||
});
|
||||
} else {
|
||||
res.status(404).send({
|
||||
code: "1",
|
||||
msg: "Ratio job not found",
|
||||
data: null,
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
// 删除配比任务
|
||||
router.delete(API.deleteRatioTaskByIdUsingDelete, (req, res) => {
|
||||
const { taskId } = req.params;
|
||||
const index = ratioJobList.findIndex((j) => j.id === taskId);
|
||||
if (index !== -1) {
|
||||
ratioJobList.splice(index, 1);
|
||||
res.send({
|
||||
code: "0",
|
||||
msg: "Ratio job deleted successfully",
|
||||
data: null,
|
||||
});
|
||||
} else {
|
||||
res.status(404).send({
|
||||
code: "1",
|
||||
msg: "Ratio job not found",
|
||||
data: null,
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
// 更新配比任务
|
||||
router.put(API.updateRatioTaskByIdUsingPut, (req, res) => {
|
||||
const { taskId } = req.params;
|
||||
const index = ratioJobList.findIndex((j) => j.id === taskId);
|
||||
if (index !== -1) {
|
||||
ratioJobList[index] = {
|
||||
...ratioJobList[index],
|
||||
...req.body,
|
||||
updatedAt: new Date().toISOString(),
|
||||
};
|
||||
res.send({
|
||||
code: "0",
|
||||
msg: "Ratio job updated successfully",
|
||||
data: ratioJobList[index],
|
||||
});
|
||||
} else {
|
||||
res.status(404).send({
|
||||
code: "1",
|
||||
msg: "Ratio job not found",
|
||||
data: null,
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
// 执行配比任务
|
||||
router.post(API.executeRatioTaskByIdUsingPost, (req, res) => {
|
||||
const { taskId } = req.params;
|
||||
const job = ratioJobList.find((j) => j.id === taskId);
|
||||
if (job) {
|
||||
job.status = "RUNNING";
|
||||
job.startedAt = new Date().toISOString();
|
||||
res.send({
|
||||
code: "0",
|
||||
msg: "Ratio job execution started",
|
||||
data: {
|
||||
executionId: Mock.Random.guid().replace(/[^a-zA-Z0-9]/g, ""),
|
||||
status: "RUNNING",
|
||||
message: "Job execution started successfully",
|
||||
},
|
||||
});
|
||||
} else {
|
||||
res.status(404).send({
|
||||
code: "1",
|
||||
msg: "Ratio job not found",
|
||||
data: null,
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
// 停止配比任务
|
||||
router.post(API.stopRatioTaskByIdUsingPost, (req, res) => {
|
||||
const { taskId } = req.params;
|
||||
const job = ratioJobList.find((j) => j.id === taskId);
|
||||
if (job) {
|
||||
job.status = "STOPPED";
|
||||
job.finishedAt = new Date().toISOString();
|
||||
res.send({
|
||||
code: "0",
|
||||
msg: "Ratio job stopped successfully",
|
||||
data: null,
|
||||
});
|
||||
} else {
|
||||
res.status(404).send({
|
||||
code: "1",
|
||||
msg: "Ratio job not found",
|
||||
data: null,
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
// 获取配比任务状态
|
||||
router.get(API.queryRatioJobStatusUsingGet, (req, res) => {
|
||||
const { taskId } = req.params;
|
||||
const job = ratioJobList.find((j) => j.id === taskId);
|
||||
if (job) {
|
||||
res.send({
|
||||
code: "0",
|
||||
msg: "Success",
|
||||
data: {
|
||||
status: job.status,
|
||||
progress: job.progress,
|
||||
},
|
||||
});
|
||||
} else {
|
||||
res.status(404).send({
|
||||
code: "1",
|
||||
msg: "Ratio job not found",
|
||||
data: null,
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
// 获取配比模型列表
|
||||
router.get(API.queryRatioModelsUsingGet, (req, res) => {
|
||||
const models = [
|
||||
{ id: "model1", name: "均匀分配模型", description: "将目标数量均匀分配到各数据集。" },
|
||||
{ id: "model2", name: "标签优先模型", description: "优先满足标签配比需求。" },
|
||||
{ id: "model3", name: "自定义模型", description: "支持自定义分配逻辑。" },
|
||||
];
|
||||
res.send({
|
||||
code: "0",
|
||||
msg: "Success",
|
||||
data: models,
|
||||
});
|
||||
});
|
||||
};
|
||||
Reference in New Issue
Block a user