mirror of
https://github.com/1Panel-dev/MaxKB.git
synced 2025-12-25 17:22:55 +00:00
refactor: streamline image handling by updating application and knowledge ID management
This commit is contained in:
parent
b121d95f10
commit
9c42965543
|
|
@ -51,19 +51,21 @@ class BaseDocumentExtractNode(IDocumentExtractNode):
|
|||
return NodeResult({'content': '', 'document_list': []}, {})
|
||||
|
||||
# 安全获取 application
|
||||
application = None
|
||||
application_id = None
|
||||
if (self.workflow_manage and
|
||||
self.workflow_manage.work_flow_post_handler and
|
||||
self.workflow_manage.work_flow_post_handler.chat_info):
|
||||
application = self.workflow_manage.work_flow_post_handler.chat_info.application
|
||||
application_id = self.workflow_manage.work_flow_post_handler.chat_info.application.id
|
||||
knowledge_id = self.workflow_params.get('knowledge_id')
|
||||
|
||||
# doc文件中的图片保存
|
||||
def save_image(image_list):
|
||||
for image in image_list:
|
||||
meta = {
|
||||
'debug': False if (application and application.id) else True,
|
||||
'debug': False if (application_id or knowledge_id) else True,
|
||||
'chat_id': chat_id,
|
||||
'application_id': str(application.id) if (application and application.id) else None,
|
||||
'application_id': str(application_id) if application_id else None,
|
||||
'knowledge_id': str(knowledge_id) if knowledge_id else None,
|
||||
'file_id': str(image.id)
|
||||
}
|
||||
file_bytes = image.meta.pop('content')
|
||||
|
|
@ -71,8 +73,9 @@ class BaseDocumentExtractNode(IDocumentExtractNode):
|
|||
FileSerializer(data={
|
||||
'file': f,
|
||||
'meta': meta,
|
||||
'source_id': meta['application_id'],
|
||||
'source_type': FileSourceType.APPLICATION.value
|
||||
'source_id': meta['application_id'] if meta['application_id'] else meta['knowledge_id'],
|
||||
'source_type': FileSourceType.APPLICATION.value if meta[
|
||||
'application_id'] else FileSourceType.KNOWLEDGE.value
|
||||
}).upload()
|
||||
|
||||
document_list = []
|
||||
|
|
|
|||
|
|
@ -4,11 +4,9 @@ import mimetypes
|
|||
from typing import List
|
||||
|
||||
from django.core.files.uploadedfile import InMemoryUploadedFile
|
||||
from django.db.models import QuerySet
|
||||
|
||||
from application.flow.i_step_node import NodeResult
|
||||
from application.flow.step_node.document_split_node.i_document_split_node import IDocumentSplitNode
|
||||
from knowledge.models import File, FileSourceType
|
||||
from knowledge.serializers.document import default_split_handle, FileBufferHandle
|
||||
|
||||
|
||||
|
|
@ -73,18 +71,7 @@ class BaseDocumentSplitNode(IDocumentSplitNode):
|
|||
return NodeResult({'paragraph_list': paragraph_list}, {})
|
||||
|
||||
def _save_image(self, image_list):
|
||||
if image_list is not None and len(image_list) > 0:
|
||||
exist_image_list = [str(i.get('id')) for i in
|
||||
QuerySet(File).filter(id__in=[i.id for i in image_list]).values('id')]
|
||||
save_image_list = [image for image in image_list if not exist_image_list.__contains__(str(image.id))]
|
||||
save_image_list = list({img.id: img for img in save_image_list}.values())
|
||||
# save image
|
||||
for file in save_image_list:
|
||||
file_bytes = file.meta.pop('content')
|
||||
file.meta['knowledge_id'] = self.context.get('knowledge_id')
|
||||
file.source_type = FileSourceType.KNOWLEDGE
|
||||
file.source_id = self.context.get('knowledge_id')
|
||||
file.save(file_bytes)
|
||||
pass
|
||||
|
||||
def _process_split_result(
|
||||
self, item, knowledge_id, source_file_id, file_name,
|
||||
|
|
|
|||
Loading…
Reference in New Issue