Files
common_agent/frontend/src/api/ragDocuments.ts

138 lines
3.6 KiB
TypeScript

import { get, post } from './request';
/** 附件来源类型:标识该附件归属于 RAG 知识库业务。 */
export const SOURCE_TYPE_RAG = 'RAG';
export interface RagDocument {
id?: string;
storeId: string;
attachmentId?: string | null;
documentTitle?: string | null;
documentSummary?: string | null;
parseStatus?: string | null;
indexStatus?: string | null;
enabled?: boolean | null;
errorMessage?: string | null;
remark?: string | null;
createTime?: string | null;
updateTime?: string | null;
}
export interface RagDocumentQueryRequest {
storeId?: string;
attachmentId?: string;
parseStatus?: string;
indexStatus?: string;
enabled?: boolean;
}
export interface RagDocumentSaveRequest {
id?: string;
storeId: string;
attachmentId?: string;
documentTitle?: string;
documentSummary?: string;
parseStatus?: string;
indexStatus?: string;
enabled?: boolean;
errorMessage?: string;
remark?: string;
}
export interface RagDocumentBatchUploadRequest {
storeId: string;
sourceType?: string;
files: File[];
documentSummary?: string;
remark?: string;
}
/**
* RAG 切片策略枚举值。
* <p>
* 前后端统一传递枚举值,不再传递字符串名称。
*/
export const RAG_CHUNK_STRATEGY = {
FIXED_LENGTH: 1,
PARAGRAPH: 2,
HEADING: 3,
TABLE_ROW: 4,
DELIMITER: 5,
SEMANTIC: 6,
} as const;
export type RagChunkStrategy = (typeof RAG_CHUNK_STRATEGY)[keyof typeof RAG_CHUNK_STRATEGY];
export interface RagDocumentParseRequest {
documentIds: string[];
}
export interface RagDocumentChunkRequest {
documentIds: string[];
chunkStrategy: RagChunkStrategy;
chunkSize?: number;
chunkOverlap?: number;
delimiter?: string;
}
export interface RagDocumentParseResponse {
documentId: string;
parseStatus: string;
textLength?: number | null;
pageCount?: number | null;
sheetCount?: number | null;
metadata?: Record<string, unknown>;
}
export function listRagDocuments() {
return post<RagDocument[]>('/rag/documents/list');
}
export function queryRagDocuments(query?: RagDocumentQueryRequest) {
return post<RagDocument[], RagDocumentQueryRequest | undefined>('/rag/documents/query', query);
}
export function getRagDocumentById(id: string) {
return get<RagDocument>('/rag/documents/detail', {
params: { id },
});
}
export function saveRagDocument(data: RagDocumentSaveRequest) {
return post<boolean, RagDocumentSaveRequest>('/rag/documents/save', data);
}
export function deleteRagDocument(id: string) {
return post<boolean>('/rag/documents/delete', undefined, {
params: { id },
});
}
export function batchUploadRagDocuments(data: RagDocumentBatchUploadRequest) {
const formData = new FormData();
formData.append('storeId', data.storeId);
formData.append('sourceType', data.sourceType || SOURCE_TYPE_RAG);
data.files.forEach((file) => {
formData.append('files', file);
});
if (data.documentSummary) {
formData.append('documentSummary', data.documentSummary);
}
if (data.remark) {
formData.append('remark', data.remark);
}
return post<RagDocument[], FormData>('/rag/documents/batchUpload', formData);
}
export function parseRagDocuments(data: RagDocumentParseRequest) {
return post<RagDocumentParseResponse[], RagDocumentParseRequest>('/rag/documents/parse', data);
}
export function retryParseRagDocuments(data: RagDocumentParseRequest) {
return post<RagDocumentParseResponse[], RagDocumentParseRequest>('/rag/documents/retryParse', data);
}
export function chunkRagDocuments(data: RagDocumentChunkRequest) {
return post<boolean, RagDocumentChunkRequest>('/rag/documents/chunk', data);
}