| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 |
- import { apiClient } from './apiClient';
- import { KnowledgeFile } from '../types';
- export const knowledgeBaseService = {
- async getAll(
- authToken: string,
- options: {
- page?: number;
- limit?: number;
- name?: string;
- status?: string;
- groupId?: string;
- } = {}
- ): Promise<{ items: KnowledgeFile[]; total: number; page: number; limit: number }> {
- const queryParams = new URLSearchParams();
- if (options.page) queryParams.append('page', options.page.toString());
- if (options.limit) queryParams.append('limit', options.limit.toString());
- if (options.name) queryParams.append('name', options.name);
- if (options.status) queryParams.append('status', options.status);
- if (options.groupId) queryParams.append('groupId', options.groupId);
- const queryString = queryParams.toString();
- const url = `/knowledge-bases${queryString ? `?${queryString}` : ''}`;
- const response = await apiClient.request(url, {});
- if (!response.ok) {
- throw new Error('Failed to fetch knowledge base files');
- }
- const data = await response.json();
- console.log('Knowledge base API response:', data);
- const items = Array.isArray(data) ? data : (data.items || []);
- const total = Array.isArray(data) ? data.length : (data.total || 0);
- const page = Array.isArray(data) ? 1 : (data.page || 1);
- const limit = Array.isArray(data) ? items.length : (data.limit || 12);
- return {
- items: items.map((item: any) => ({
- id: item.id,
- name: item.originalName,
- originalName: item.originalName,
- type: item.mimetype,
- size: item.size,
- status: item.status,
- groups: item.groups || [],
- createdAt: item.createdAt,
- updatedAt: item.updatedAt,
- })),
- total,
- page,
- limit,
- };
- },
- async getStatuses(ids: string[], authToken: string): Promise<{ id: string, status: KnowledgeFile['status'], updatedAt: string }[]> {
- const response = await apiClient.request('/knowledge-bases/statuses', {
- method: 'POST',
- headers: {
- 'Content-Type': 'application/json',
- },
- body: JSON.stringify({ ids }),
- });
- if (!response.ok) {
- throw new Error('Failed to fetch knowledge base statuses');
- }
- return response.json();
- },
- async getStats(authToken: string): Promise<{ total: number, uncategorized: number }> {
- const response = await apiClient.request('/knowledge-bases/stats', {
- method: 'GET'
- });
- if (!response.ok) {
- throw new Error('Failed to fetch knowledge base stats');
- }
- return response.json();
- },
- async clearAll(authToken: string): Promise<void> {
- const response = await apiClient.request('/knowledge-bases/clear', {
- method: 'DELETE',
- });
- if (!response.ok) {
- throw new Error('Failed to clear knowledge base');
- }
- },
- async search(query: string, topK: number = 5, authToken: string): Promise<any> {
- const response = await apiClient.request('/knowledge-bases/search', {
- method: 'POST',
- headers: {
- 'Content-Type': 'application/json',
- },
- body: JSON.stringify({ query, topK }),
- });
- if (!response.ok) {
- throw new Error('Failed to search knowledge base');
- }
- return response.json();
- },
- async deleteFile(fileId: string, authToken: string): Promise<void> {
- const response = await apiClient.request(`/knowledge-bases/${fileId}`, {
- method: 'DELETE',
- });
- if (!response.ok) {
- throw new Error('Failed to delete file');
- }
- },
- async retryFile(fileId: string, authToken: string): Promise<KnowledgeFile> {
- const response = await apiClient.request(`/knowledge-bases/${fileId}/retry`, {
- method: 'POST',
- });
- if (!response.ok) {
- throw new Error('Failed to retry file');
- }
- const item = await response.json();
- return {
- id: item.id,
- name: item.originalName,
- originalName: item.originalName,
- type: item.mimetype,
- size: item.size,
- status: item.status,
- groups: item.groups || [],
- createdAt: item.createdAt,
- updatedAt: item.updatedAt,
- };
- },
- async getFileChunks(fileId: string, authToken: string) {
- const response = await apiClient.request(`/knowledge-bases/${fileId}/chunks`, {});
- if (!response.ok) {
- throw new Error('Failed to get file chunks');
- }
- return response.json();
- },
- getPageImageUrl(fileId: string, pageIndex: number): string {
- return `/api/knowledge-bases/${fileId}/page/${pageIndex}`;
- },
- };
|