Commit 1958c2bb by YunaiV

【功能新增】AI:知识库文档上传:90%,ProcessStep 已完成

parent 809fb9fd
This source diff could not be displayed because it is too large. You can view the blob instead.
import request from '@/config/axios'
// AI 知识库分片 VO
export interface AiKnowledgeSegmentRespVO {
id: number // 编号
documentId: number // 文档编号
knowledgeId: number // 知识库编号
vectorId: string // 向量库编号
content: string // 切片内容
contentLength: number // 切片内容长度
tokens: number // token 数量
retrievalCount: number // 召回次数
status: number // 文档状态
createTime: number // 创建时间
}
// AI 知识库分片 API
export const KnowledgeSegmentApi = {
// 查询知识库分片分页
getKnowledgeSegmentPage: async (params: any) => {
return await request.get({ url: `/ai/knowledge/segment/page`, params })
},
// 查询知识库分片详情
getKnowledgeSegment: async (id: number) => {
return await request.get({ url: `/ai/knowledge/segment/get?id=` + id })
},
// 删除知识库分片
deleteKnowledgeSegment: async (id: number) => {
return await request.delete({ url: `/ai/knowledge/segment/delete?id=` + id })
},
// 切片内容
splitContent: async (url: string, segmentMaxTokens: number) => {
return await request.get({
url: `/ai/knowledge/segment/split`,
params: { url, segmentMaxTokens }
})
},
// 获取文档处理列表
getKnowledgeSegmentProcessList: async (documentIds: number[]) => {
return await request.get({
url: `/ai/knowledge/segment/get-process-list`,
params: { documentIds: documentIds.join(',') }
})
}
}
......@@ -188,13 +188,13 @@ const handleSave = async () => {
try {
if (modelData.value.id) {
// 修改场景
modelData.value.ids = await KnowledgeDocumentApi.updateKnowledgeDocument({
await KnowledgeDocumentApi.updateKnowledgeDocument({
id: modelData.value.id,
segmentMaxTokens: modelData.value.segmentMaxTokens
})
} else {
// 新增场景
modelData.value.ids = await KnowledgeDocumentApi.createKnowledgeDocumentList({
const data = await KnowledgeDocumentApi.createKnowledgeDocumentList({
knowledgeId: modelData.value.knowledgeId,
segmentMaxTokens: modelData.value.segmentMaxTokens,
list: modelData.value.list.map((item: any) => ({
......@@ -202,6 +202,9 @@ const handleSave = async () => {
url: item.url
}))
})
modelData.value.list.forEach((document: any, index: number) => {
document.id = data[index]
})
}
// 进入下一步
......
......@@ -89,16 +89,17 @@ const formData = ref({
id: undefined, // 编辑的文档编号(documentId)
segmentMaxTokens: 500, // 分段最大 token 数
list: [] as Array<{
name: string
url: string
id: number // 文档编号
name: string // 文档名称
url: string // 文档 URL
segments: Array<{
content?: string
contentLength?: number
tokens?: number
}>
}>, // 用于存储上传的文件列表
documentIds: [], // 最终提交的创建/修改的文档编号,用于 ProcessStep 组件的轮询
status: 0 // 0: 草稿, 1: 处理中, 2: 已完成
count?: number // 段落数量
process?: number // 处理进度
}> // 用于存储上传的文件列表
}) // 表单数据
provide('parent', getCurrentInstance()) // 提供 parent 给子组件使用
......@@ -119,6 +120,7 @@ const initData = async () => {
formData.value.segmentMaxTokens = document.segmentMaxTokens
formData.value.list = [
{
id: document.id,
name: document.name,
url: document.url,
segments: []
......@@ -139,6 +141,17 @@ const initData = async () => {
]
goToNextStep()
}
if (false) {
formData.value.list = [
{
id: 1,
name: '项目说明文档.pdf',
url: 'https://static.iocoder.cn/README_yudao.md',
segments: []
}
]
goToNextStep()
}
}
/** 切换到下一步 */
......@@ -179,7 +192,8 @@ onBeforeUnmount(() => {
/** 暴露方法给子组件使用 */
defineExpose({
goToNextStep,
goToPrevStep
goToPrevStep,
handleBack
})
</script>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment