refactor: 执行详情里展示文档提取日志时多个文件单独显示,最多500字符

This commit is contained in:
CaptainB 2024-11-28 16:30:44 +08:00
parent 2a07a50a60
commit 80aeecfe01
2 changed files with 9 additions and 8 deletions

View File

@ -7,7 +7,6 @@ from django.db.models import QuerySet
from application.flow.i_step_node import NodeResult from application.flow.i_step_node import NodeResult
from application.flow.step_node.document_extract_node.i_document_extract_node import IDocumentExtractNode from application.flow.step_node.document_extract_node.i_document_extract_node import IDocumentExtractNode
from application.models import Chat
from dataset.models import File from dataset.models import File
from dataset.serializers.document_serializers import split_handles, parse_table_handle_list, FileBufferHandle from dataset.serializers.document_serializers import split_handles, parse_table_handle_list, FileBufferHandle
from dataset.serializers.file_serializers import FileSerializer from dataset.serializers.file_serializers import FileSerializer
@ -36,15 +35,16 @@ def bytes_to_uploaded_file(file_bytes, file_name="file.txt"):
return uploaded_file return uploaded_file
splitter = '\n`-----------------------------------`\n'
class BaseDocumentExtractNode(IDocumentExtractNode): class BaseDocumentExtractNode(IDocumentExtractNode):
def execute(self, document, chat_id, **kwargs): def execute(self, document, chat_id, **kwargs):
get_buffer = FileBufferHandle().get_buffer get_buffer = FileBufferHandle().get_buffer
self.context['document_list'] = document self.context['document_list'] = document
content = [] content = []
splitter = '\n`-----------------------------------`\n'
if document is None or not isinstance(document, list): if document is None or not isinstance(document, list):
return NodeResult({'content': content}, {}) return NodeResult({'content': ''}, {})
application = self.workflow_manage.work_flow_post_handler.chat_info.application application = self.workflow_manage.work_flow_post_handler.chat_info.application
@ -76,14 +76,14 @@ class BaseDocumentExtractNode(IDocumentExtractNode):
return NodeResult({'content': splitter.join(content)}, {}) return NodeResult({'content': splitter.join(content)}, {})
def get_details(self, index: int, **kwargs): def get_details(self, index: int, **kwargs):
content = self.context.get('content', '').split(splitter)
# 不保存content全部内容因为content内容可能会很大 # 不保存content全部内容因为content内容可能会很大
content = (self.context.get('content')[:500] + '...') if len(self.context.get('content')) > 0 else ''
return { return {
'name': self.node.properties.get('stepName'), 'name': self.node.properties.get('stepName'),
"index": index, "index": index,
'run_time': self.context.get('run_time'), 'run_time': self.context.get('run_time'),
'type': self.node.type, 'type': self.node.type,
'content': content, 'content': [file_content[:500] for file_content in content],
'status': self.status, 'status': self.status,
'err_message': self.err_message, 'err_message': self.err_message,
'document_list': self.context.get('document_list') 'document_list': self.context.get('document_list')

View File

@ -231,12 +231,13 @@
</h5> </h5>
<div class="p-8-12 border-t-dashed lighter"> <div class="p-8-12 border-t-dashed lighter">
<el-scrollbar height="150"> <el-scrollbar height="150">
<el-card shadow="never" style="--el-card-padding: 8px"> <el-card shadow="never" style="--el-card-padding: 8px" v-for="(file_content, index) in item.content"
:key="index" class="mb-8">
<MdPreview <MdPreview
v-if="item.content" v-if="file_content"
ref="editorRef" ref="editorRef"
editorId="preview-only" editorId="preview-only"
:modelValue="item.content" :modelValue="file_content"
style="background: none" style="background: none"
/> />
<template v-else> - </template> <template v-else> - </template>