feat: add knowledge management functionality with CRUD operations and database schema
- Implemented KnowledgeHandler for managing knowledge groups and items, including listing, creating, updating, and deleting operations. - Added database migration scripts to create necessary tables for knowledge management, including knowledge_groups, knowledge_items, knowledge_parse_tasks, and knowledge_chunks_meta. - Introduced prompt_rule_knowledge_groups table to associate prompt rules with knowledge groups.
This commit is contained in:
@@ -18,6 +18,11 @@ import type {
|
||||
InstantTaskListParams,
|
||||
InstantTaskListResponse,
|
||||
JsonValue,
|
||||
KnowledgeGroup,
|
||||
KnowledgeGroupRequest,
|
||||
KnowledgeItem,
|
||||
KnowledgeTextItemRequest,
|
||||
KnowledgeURLItemRequest,
|
||||
Keyword,
|
||||
KeywordRequest,
|
||||
LoginRequest,
|
||||
@@ -225,6 +230,51 @@ export const articlesApi = {
|
||||
},
|
||||
};
|
||||
|
||||
export const knowledgeApi = {
|
||||
listGroups() {
|
||||
return apiClient.get<KnowledgeGroup[]>("/api/tenant/knowledge/groups");
|
||||
},
|
||||
createGroup(payload: KnowledgeGroupRequest) {
|
||||
return apiClient.post<KnowledgeGroup, KnowledgeGroupRequest>("/api/tenant/knowledge/groups", payload);
|
||||
},
|
||||
updateGroup(id: number, payload: KnowledgeGroupRequest) {
|
||||
return apiClient.put<null, KnowledgeGroupRequest>(`/api/tenant/knowledge/groups/${id}`, payload);
|
||||
},
|
||||
removeGroup(id: number) {
|
||||
return apiClient.remove<null>(`/api/tenant/knowledge/groups/${id}`);
|
||||
},
|
||||
listItems(groupId?: number) {
|
||||
return apiClient.get<KnowledgeItem[]>("/api/tenant/knowledge/items", {
|
||||
params: groupId ? { group_id: groupId } : undefined,
|
||||
});
|
||||
},
|
||||
createTextItem(payload: KnowledgeTextItemRequest) {
|
||||
return apiClient.post<KnowledgeItem, KnowledgeTextItemRequest>(
|
||||
"/api/tenant/knowledge/items/text",
|
||||
payload,
|
||||
);
|
||||
},
|
||||
createURLItem(payload: KnowledgeURLItemRequest) {
|
||||
return apiClient.post<KnowledgeItem, KnowledgeURLItemRequest>(
|
||||
"/api/tenant/knowledge/items/url",
|
||||
payload,
|
||||
);
|
||||
},
|
||||
async createFileItem(payload: { group_id: number; name?: string; file: File }) {
|
||||
const form = new FormData();
|
||||
form.set("group_id", String(payload.group_id));
|
||||
if (payload.name?.trim()) {
|
||||
form.set("name", payload.name.trim());
|
||||
}
|
||||
form.set("file", payload.file);
|
||||
const { data } = await apiClient.raw.post("/api/tenant/knowledge/items/file", form);
|
||||
return data.data as KnowledgeItem;
|
||||
},
|
||||
removeItem(id: number) {
|
||||
return apiClient.remove<null>(`/api/tenant/knowledge/items/${id}`);
|
||||
},
|
||||
};
|
||||
|
||||
export interface ArticleGenerationStreamEvent {
|
||||
type: string;
|
||||
article_id: number;
|
||||
|
||||
Reference in New Issue
Block a user