aura-web/src/api/knowledgeBase.ts

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),
};