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