56 lines
2.1 KiB
TypeScript
56 lines
2.1 KiB
TypeScript
import { api } from './http';
|
|
|
|
export interface KBDTO {
|
|
id: string;
|
|
name: string;
|
|
description: string;
|
|
ownerId: string;
|
|
isPublic: boolean;
|
|
createdAt: number;
|
|
updatedAt: number;
|
|
access: 'owner' | 'view' | 'none';
|
|
}
|
|
|
|
export interface KBFileDTO {
|
|
id: string;
|
|
originalName: string;
|
|
filename: string;
|
|
size: number;
|
|
status: 'indexing' | 'ready' | 'error';
|
|
chunkCount?: number;
|
|
createdAt?: number;
|
|
}
|
|
|
|
export const KnowledgeBaseAPI = {
|
|
// 核心管理
|
|
listKBs: () => api.get<{ data: KBDTO[] }>('/kbs').then((r) => r.data.data),
|
|
getKB: (id: string) => api.get<{ data: KBDTO }>(`/kbs/${id}`).then((r) => r.data.data),
|
|
createKB: (data: { name: string; description: string; isPublic: boolean }) =>
|
|
api.post<{ data: KBDTO }>('/kbs', data).then((r) => r.data.data),
|
|
updateKB: (id: string, data: Partial<{ name: string; description: string; isPublic: boolean }>) =>
|
|
api.patch<{ data: KBDTO }>(`/kbs/${id}`, data).then((r) => r.data.data),
|
|
deleteKB: (id: string) => api.delete(`/kbs/${id}`).then((r) => r.data),
|
|
|
|
// 文件管理
|
|
listFiles: (id: string) => api.get<{ data: KBFileDTO[] }>(`/kbs/${id}/files`).then((r) => r.data.data),
|
|
uploadFiles: (id: string, files: File[]) => {
|
|
const formData = new FormData();
|
|
files.forEach((file) => formData.append('files', file));
|
|
return api.post<{ data: KBFileDTO[] }>(`/kbs/${id}/files`, formData).then((r) => r.data.data);
|
|
},
|
|
removeFile: (kbId: string, fileId: string) =>
|
|
api.delete(`/kbs/${kbId}/files/${fileId}`).then((r) => r.data),
|
|
|
|
// 授权与共享
|
|
shareKB: (id: string, data: { subjectType: 'user' | 'team'; subjectId: string }) =>
|
|
api.post(`/kbs/${id}/shares`, data).then((r) => r.data),
|
|
unshareKB: (id: string, data: { subjectType: 'user' | 'team'; subjectId: string }) =>
|
|
api.delete(`/kbs/${id}/shares`, { data }).then((r) => r.data),
|
|
|
|
// 智能体关联
|
|
mountToAgent: (agentId: string, kbId: string) =>
|
|
api.post(`/agents/${agentId}/kbs/${kbId}`).then((r) => r.data),
|
|
unmountFromAgent: (agentId: string, kbId: string) =>
|
|
api.delete(`/agents/${agentId}/kbs/${kbId}`).then((r) => r.data),
|
|
};
|