- 知识库 REST API: 10 个端点 (references/guides CRUD + re-embed) - search_medical_knowledge Agent Tool: 语义检索参考资料和临床指南 - VectorKnowledgeSource: 实现 KnowledgeSource trait,自动降级 - 沙箱配置: Patient/MedicalStaff 允许使用知识库检索 - 前端 AiKnowledgePage: Tabs(参考资料/临床指南) + Table + Modal CRUD - 权限码 seed 迁移: ai.knowledge.list + ai.knowledge.manage + 菜单
111 lines
3.0 KiB
TypeScript
111 lines
3.0 KiB
TypeScript
import client from '../client';
|
|
|
|
// === Types ===
|
|
|
|
export interface KnowledgeReference {
|
|
id: string;
|
|
tenant_id: string;
|
|
title: string;
|
|
analysis_type: string;
|
|
source_name: string;
|
|
content_summary: string;
|
|
tags: Record<string, unknown> | null;
|
|
is_enabled: boolean;
|
|
created_at: string;
|
|
updated_at: string;
|
|
}
|
|
|
|
export interface KnowledgeGuide {
|
|
id: string;
|
|
tenant_id: string;
|
|
title: string;
|
|
analysis_type: string;
|
|
content: string;
|
|
category: string | null;
|
|
is_enabled: boolean;
|
|
created_at: string;
|
|
updated_at: string;
|
|
}
|
|
|
|
export interface CreateReferenceReq {
|
|
title: string;
|
|
analysis_type: string;
|
|
source_name: string;
|
|
content_summary: string;
|
|
tags?: Record<string, unknown>;
|
|
is_enabled?: boolean;
|
|
}
|
|
|
|
export interface UpdateReferenceReq {
|
|
title?: string;
|
|
analysis_type?: string;
|
|
source_name?: string;
|
|
content_summary?: string;
|
|
tags?: Record<string, unknown>;
|
|
is_enabled?: boolean;
|
|
}
|
|
|
|
export interface CreateGuideReq {
|
|
title: string;
|
|
analysis_type: string;
|
|
content: string;
|
|
category?: string;
|
|
is_enabled?: boolean;
|
|
}
|
|
|
|
export interface UpdateGuideReq {
|
|
title?: string;
|
|
analysis_type?: string;
|
|
content?: string;
|
|
category?: string;
|
|
is_enabled?: boolean;
|
|
}
|
|
|
|
// === API ===
|
|
|
|
export const knowledgeApi = {
|
|
// References
|
|
listReferences: async (params?: { analysis_type?: string }) => {
|
|
const resp = await client.get('/ai/knowledge/references', { params });
|
|
return resp.data.data as { data: KnowledgeReference[]; total: number };
|
|
},
|
|
createReference: async (data: CreateReferenceReq) => {
|
|
const resp = await client.post('/ai/knowledge/references', data);
|
|
return resp.data.data as { id: string };
|
|
},
|
|
updateReference: async (id: string, data: UpdateReferenceReq) => {
|
|
const resp = await client.put(`/ai/knowledge/references/${id}`, data);
|
|
return resp.data.data as { id: string };
|
|
},
|
|
deleteReference: async (id: string) => {
|
|
const resp = await client.delete(`/ai/knowledge/references/${id}`);
|
|
return resp.data.data as { id: string };
|
|
},
|
|
reEmbedReference: async (id: string) => {
|
|
const resp = await client.post(`/ai/knowledge/references/${id}/re-embed`);
|
|
return resp.data.data as { id: string };
|
|
},
|
|
|
|
// Guides
|
|
listGuides: async (params?: { analysis_type?: string }) => {
|
|
const resp = await client.get('/ai/knowledge/guides', { params });
|
|
return resp.data.data as { data: KnowledgeGuide[]; total: number };
|
|
},
|
|
createGuide: async (data: CreateGuideReq) => {
|
|
const resp = await client.post('/ai/knowledge/guides', data);
|
|
return resp.data.data as { id: string };
|
|
},
|
|
updateGuide: async (id: string, data: UpdateGuideReq) => {
|
|
const resp = await client.put(`/ai/knowledge/guides/${id}`, data);
|
|
return resp.data.data as { id: string };
|
|
},
|
|
deleteGuide: async (id: string) => {
|
|
const resp = await client.delete(`/ai/knowledge/guides/${id}`);
|
|
return resp.data.data as { id: string };
|
|
},
|
|
reEmbedGuide: async (id: string) => {
|
|
const resp = await client.post(`/ai/knowledge/guides/${id}/re-embed`);
|
|
return resp.data.data as { id: string };
|
|
},
|
|
};
|