You've already forked DataMate
knowledge base pages (#43)
* 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.
This commit is contained in:
@@ -120,10 +120,11 @@ const MockAPI = {
|
||||
queryKnowledgeBaseByIdUsingGet: "/knowledge-base/:baseId", // 根据ID获取知识库详情
|
||||
updateKnowledgeBaseByIdUsingPut: "/knowledge-base/:baseId", // 更新知识库
|
||||
deleteKnowledgeBaseByIdUsingDelete: "/knowledge-base/:baseId", // 删除知识库
|
||||
queryKnowledgeGenerationTasksUsingPost: "/knowledge-base/tasks", // 获取知识生成任务列表
|
||||
addKnowledgeGenerationFilesUsingPost: "/knowledge-base/:baseId/files", // 添加文件到知识库
|
||||
queryKnowledgeGenerationFilesByIdUsingGet: "/knowledge-base/:baseId/files/:fileId", // 根据ID获取知识生成文件详情
|
||||
deleteKnowledgeGenerationTaskByIdUsingDelete: "/knowledge-base/:baseId/files", // 删除知识生成文件
|
||||
addKnowledgeBaseFilesUsingPost: "/knowledge-base/:baseId/files", // 添加文件到知识库
|
||||
queryKnowledgeBaseFilesGet: "/knowledge-base/:baseId/files", // 根据ID获取知识生成文件列表
|
||||
queryKnowledgeBaseFilesByIdUsingGet:
|
||||
"/knowledge-base/:baseId/files/:fileId", // 根据ID获取知识生成文件详情
|
||||
deleteKnowledgeBaseTaskByIdUsingDelete: "/knowledge-base/:baseId/files/:id", // 删除知识生成文件
|
||||
|
||||
// 算子市场
|
||||
queryOperatorsUsingPost: "/operators/list", // 获取算子列表
|
||||
|
||||
@@ -161,8 +161,6 @@ module.exports = function (router) {
|
||||
);
|
||||
}
|
||||
if (type) {
|
||||
console.log("filter type:", type);
|
||||
|
||||
filteredDatasets = filteredDatasets.filter(
|
||||
(dataset) => dataset.datasetType === type
|
||||
);
|
||||
|
||||
@@ -22,6 +22,29 @@ function KnowledgeBaseItem() {
|
||||
|
||||
const knowledgeBaseList = new Array(50).fill(null).map(KnowledgeBaseItem);
|
||||
|
||||
function fileItem() {
|
||||
return {
|
||||
id: Mock.Random.guid().replace(/[^a-zA-Z0-9]/g, ""),
|
||||
createdAt: Mock.Random.datetime("yyyy-MM-dd HH:mm:ss"),
|
||||
updatedAt: Mock.Random.datetime("yyyy-MM-dd HH:mm:ss"),
|
||||
createdBy: Mock.Random.cname(),
|
||||
updatedBy: Mock.Random.cname(),
|
||||
knowledgeBaseId: Mock.Random.pick(knowledgeBaseList).id,
|
||||
fileId: Mock.Random.guid().replace(/[^a-zA-Z0-9]/g, ""),
|
||||
fileName: Mock.Random.ctitle(5, 15),
|
||||
chunkCount: Mock.Random.integer(1, 100),
|
||||
metadata: {},
|
||||
status: Mock.Random.pick([
|
||||
"UNPROCESSED",
|
||||
"PROCESSING",
|
||||
"PROCESSED",
|
||||
"PROCESS_FAILED",
|
||||
]),
|
||||
};
|
||||
}
|
||||
|
||||
const fileList = new Array(20).fill(null).map(fileItem);
|
||||
|
||||
module.exports = function (router) {
|
||||
// 获取知识库列表
|
||||
router.post(API.queryKnowledgeBasesUsingPost, (req, res) => {
|
||||
@@ -56,15 +79,16 @@ module.exports = function (router) {
|
||||
});
|
||||
|
||||
// 获取知识库详情
|
||||
router.get(
|
||||
new RegExp(API.queryKnowledgeBaseByIdUsingGet.replace(":baseId", "(\\w+)")),
|
||||
(req, res) => {
|
||||
const id = req.params.baseId;
|
||||
const item =
|
||||
knowledgeBaseList.find((kb) => kb.id === id) || KnowledgeBaseItem();
|
||||
res.send(item);
|
||||
}
|
||||
);
|
||||
router.get(API.queryKnowledgeBaseByIdUsingGet, (req, res) => {
|
||||
const id = req.params.baseId;
|
||||
const item =
|
||||
knowledgeBaseList.find((kb) => kb.id === id) || KnowledgeBaseItem();
|
||||
res.send({
|
||||
code: "0",
|
||||
msg: "Success",
|
||||
data: item,
|
||||
});
|
||||
});
|
||||
|
||||
// 更新知识库
|
||||
router.put(API.updateKnowledgeBaseByIdUsingPut, (req, res) => {
|
||||
@@ -90,72 +114,63 @@ module.exports = function (router) {
|
||||
}
|
||||
});
|
||||
|
||||
// 获取知识生成任务列表
|
||||
router.post(API.queryKnowledgeGenerationTasksUsingPost, (req, res) => {
|
||||
const tasks = Mock.mock({
|
||||
"data|10": [
|
||||
{
|
||||
id: "@guid",
|
||||
name: "@ctitle(5,15)",
|
||||
status: '@pick(["pending","running","success","failed"])',
|
||||
createdAt: "@datetime",
|
||||
updatedAt: "@datetime",
|
||||
progress: "@integer(0,100)",
|
||||
},
|
||||
],
|
||||
total: 10,
|
||||
current: 1,
|
||||
pageSize: 10,
|
||||
// 添加文件到知识库
|
||||
router.post(API.addKnowledgeBaseFilesUsingPost, (req, res) => {
|
||||
const file = Mock.mock({
|
||||
id: "@guid",
|
||||
name: "@ctitle(5,15)",
|
||||
size: "@integer(1000,1000000)",
|
||||
status: "uploaded",
|
||||
createdAt: "@datetime",
|
||||
});
|
||||
res.send(tasks);
|
||||
res.status(201).send(file);
|
||||
});
|
||||
|
||||
// 添加文件到知识库
|
||||
router.post(
|
||||
new RegExp(
|
||||
API.addKnowledgeGenerationFilesUsingPost.replace(":baseId", "(\\w+)")
|
||||
),
|
||||
(req, res) => {
|
||||
const file = Mock.mock({
|
||||
id: "@guid",
|
||||
name: "@ctitle(5,15)",
|
||||
size: "@integer(1000,1000000)",
|
||||
status: "uploaded",
|
||||
createdAt: "@datetime",
|
||||
});
|
||||
res.status(201).send(file);
|
||||
}
|
||||
);
|
||||
|
||||
// 获取知识生成文件详情
|
||||
router.get(
|
||||
new RegExp(
|
||||
API.queryKnowledgeGenerationFilesByIdUsingGet
|
||||
.replace(":baseId", "(\\w+)")
|
||||
.replace(":fileId", "(\\w+)")
|
||||
),
|
||||
(req, res) => {
|
||||
const file = Mock.mock({
|
||||
id: req.params.fileId,
|
||||
name: "@ctitle(5,15)",
|
||||
size: "@integer(1000,1000000)",
|
||||
status: "uploaded",
|
||||
createdAt: "@datetime",
|
||||
});
|
||||
res.send(file);
|
||||
router.get(API.queryKnowledgeBaseFilesGet, (req, res) => {
|
||||
const { keyword, page, size } = req.query;
|
||||
let filteredList = fileList;
|
||||
if (keyword) {
|
||||
filteredList = fileList.filter((file) => file.fileName.includes(keyword));
|
||||
}
|
||||
);
|
||||
const start = page * size;
|
||||
const end = start + size;
|
||||
const totalElements = filteredList.length;
|
||||
const paginatedList = filteredList.slice(start, end);
|
||||
res.send({
|
||||
code: "0",
|
||||
msg: "Success",
|
||||
data: {
|
||||
totalElements,
|
||||
page,
|
||||
size,
|
||||
content: paginatedList,
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
router.get(API.queryKnowledgeBaseFilesByIdUsingGet, (req, res) => {
|
||||
const { baseId, fileId } = req.params;
|
||||
const item =
|
||||
fileList.find(
|
||||
(file) => file.knowledgeBaseId === baseId && file.id === fileId
|
||||
) || fileItem();
|
||||
res.send({
|
||||
code: "0",
|
||||
msg: "Success",
|
||||
data: item,
|
||||
});
|
||||
});
|
||||
|
||||
// 删除知识生成文件
|
||||
router.delete(
|
||||
new RegExp(
|
||||
API.deleteKnowledgeGenerationTaskByIdUsingDelete.replace(
|
||||
":baseId",
|
||||
"(\\w+)"
|
||||
)
|
||||
),
|
||||
(req, res) => {
|
||||
res.send({ success: true });
|
||||
router.delete(API.deleteKnowledgeBaseTaskByIdUsingDelete, (req, res) => {
|
||||
const { id } = req.params;
|
||||
const idx = fileList.findIndex((file) => file.id === id);
|
||||
if (idx >= 0) {
|
||||
fileList.splice(idx, 1);
|
||||
res.status(200).send({ success: true });
|
||||
return;
|
||||
}
|
||||
);
|
||||
res.status(404).send({ message: "Not found" });
|
||||
});
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user