|
@@ -1174,23 +1174,25 @@ class KbmService:
|
|
|
|
|
|
logger.info("分割完成")
|
|
logger.info("分割完成")
|
|
result = []
|
|
result = []
|
|
- inder = 1
|
|
|
|
|
|
+
|
|
|
|
+ page_inder = 0
|
|
for i, chunks in enumerate(text_chunks,1):
|
|
for i, chunks in enumerate(text_chunks,1):
|
|
|
|
+ inder = 1
|
|
image_name = page_images[i-1][0]
|
|
image_name = page_images[i-1][0]
|
|
for j, chunk in enumerate(chunks,1):
|
|
for j, chunk in enumerate(chunks,1):
|
|
KbmService.saveTaskSublist(
|
|
KbmService.saveTaskSublist(
|
|
document_id=document_id,
|
|
document_id=document_id,
|
|
name=image_name,
|
|
name=image_name,
|
|
page_number=i,
|
|
page_number=i,
|
|
- chunk_number= str(inder),
|
|
|
|
|
|
+ chunk_number=inder,
|
|
content=chunk['content'],
|
|
content=chunk['content'],
|
|
milvus_id=chunk['milvus_id']
|
|
milvus_id=chunk['milvus_id']
|
|
)
|
|
)
|
|
inder +=1
|
|
inder +=1
|
|
-
|
|
|
|
|
|
+ page_inder += inder
|
|
result.append({
|
|
result.append({
|
|
'page_number': i,
|
|
'page_number': i,
|
|
- 'chunk_number': len(chunks),
|
|
|
|
|
|
+ 'chunk_number': page_inder,
|
|
})
|
|
})
|
|
|
|
|
|
logger.info("解析结束")
|
|
logger.info("解析结束")
|
|
@@ -1563,22 +1565,64 @@ class KbmService:
|
|
return fail("Bucket ID 为空")
|
|
return fail("Bucket ID 为空")
|
|
|
|
|
|
try:
|
|
try:
|
|
- # 检查是否存在未删除的文档
|
|
|
|
- active_docs_count = DocumentKbm.objects.filter(kb_id=bucket_id).exclude(status=4).count()
|
|
|
|
|
|
+ # 获取知识库对象
|
|
|
|
+ try:
|
|
|
|
+ knowledgebase = Knowledgebase.objects.get(id=bucket_id)
|
|
|
|
+ except ObjectDoesNotExist:
|
|
|
|
+ return fail("指定的知识库不存在")
|
|
|
|
+
|
|
|
|
+ # 检查是否存在文档
|
|
|
|
+ active_docs_count = DocumentKbm.objects.filter(kb_id=bucket_id).count()
|
|
|
|
|
|
if active_docs_count > 0:
|
|
if active_docs_count > 0:
|
|
- return fail(f"无法删除知识库,还有 {active_docs_count} 个未删除的文档")
|
|
|
|
|
|
+ return fail(f"无法删除知识库,还有 {active_docs_count} 个文档")
|
|
|
|
|
|
- # 如果没有未删除的文档,则更新知识库状态
|
|
|
|
- updated_count = Knowledgebase.objects.filter(id=bucket_id).update(status=4,name=bucket_id, location=bucket_id)
|
|
|
|
|
|
+ # 删除相关的 File 记录
|
|
|
|
+ File.objects.filter(
|
|
|
|
+ name=knowledgebase.name,
|
|
|
|
+ source_type='knowledgebase',
|
|
|
|
+ type='folder'
|
|
|
|
+ ).delete()
|
|
|
|
|
|
- if updated_count == 0:
|
|
|
|
- return fail("指定的知识库不存在")
|
|
|
|
|
|
+ # 删除所有相关的 DocumentKbm 记录
|
|
|
|
+ DocumentKbm.objects.filter(kb_id=bucket_id).delete()
|
|
|
|
+
|
|
|
|
+ # 删除知识库
|
|
|
|
+ knowledgebase.delete()
|
|
|
|
+
|
|
|
|
+ # 可选:如果使用 MinIO 存储文件,删除 MinIO 中的文件
|
|
|
|
+ try:
|
|
|
|
+ minio_client.remove_bucket(bucket_id)
|
|
|
|
+ except Exception as e:
|
|
|
|
+ logger.warning(f"Failed to delete MinIO bucket {bucket_id}: {str(e)}")
|
|
|
|
|
|
return success("知识库已成功删除")
|
|
return success("知识库已成功删除")
|
|
|
|
|
|
except Exception as e:
|
|
except Exception as e:
|
|
|
|
+ logger.error(f"删除知识库时发生错误: {str(e)}", exc_info=True)
|
|
return fail(f"删除知识库时发生错误: {str(e)}")
|
|
return fail(f"删除知识库时发生错误: {str(e)}")
|
|
|
|
+ # bucket_id = request.POST.get("bucket_id")
|
|
|
|
+
|
|
|
|
+ # if not bucket_id:
|
|
|
|
+ # return fail("Bucket ID 为空")
|
|
|
|
+
|
|
|
|
+ # try:
|
|
|
|
+ # # 检查是否存在未删除的文档
|
|
|
|
+ # active_docs_count = DocumentKbm.objects.filter(kb_id=bucket_id).exclude(status=4).count()
|
|
|
|
+
|
|
|
|
+ # if active_docs_count > 0:
|
|
|
|
+ # return fail(f"无法删除知识库,还有 {active_docs_count} 个未删除的文档")
|
|
|
|
+
|
|
|
|
+ # # 如果没有未删除的文档,则更新知识库状态
|
|
|
|
+ # updated_count = Knowledgebase.objects.filter(id=bucket_id).update(status=4,name=bucket_id, location=bucket_id)
|
|
|
|
+
|
|
|
|
+ # if updated_count == 0:
|
|
|
|
+ # return fail("指定的知识库不存在")
|
|
|
|
+
|
|
|
|
+ # return success("知识库已成功删除")
|
|
|
|
+
|
|
|
|
+ # except Exception as e:
|
|
|
|
+ # return fail(f"删除知识库时发生错误: {str(e)}")
|
|
|
|
|
|
@staticmethod
|
|
@staticmethod
|
|
def getRunStatus(request):
|
|
def getRunStatus(request):
|