refactor: file to oss
Some checks are pending
sync2gitee / repo-sync (push) Waiting to run

This commit is contained in:
wxg0103 2025-06-06 11:42:31 +08:00
parent fb0d5b0de7
commit 93833849c1
24 changed files with 44 additions and 16 deletions

View File

@ -9,7 +9,7 @@ from application.flow.i_step_node import NodeResult
from application.flow.step_node.document_extract_node.i_document_extract_node import IDocumentExtractNode
from knowledge.models import File
from knowledge.serializers.document import split_handles, parse_table_handle_list, FileBufferHandle
from knowledge.serializers.file import FileSerializer
from oss.serializers.file import FileSerializer
def bytes_to_uploaded_file(file_bytes, file_name="file.txt"):

View File

@ -8,7 +8,7 @@ from langchain_core.messages import BaseMessage, HumanMessage, AIMessage
from application.flow.i_step_node import NodeResult
from application.flow.step_node.image_generate_step_node.i_image_generate_node import IImageGenerateNode
from common.utils.common import bytes_to_uploaded_file
from knowledge.serializers.file import FileSerializer
from oss.serializers.file import FileSerializer
from models_provider.tools import get_model_instance_by_model_user_id

View File

@ -130,7 +130,7 @@ class BaseImageUnderstandNode(IImageUnderstandNode):
file_id_list = [image.get('file_id') for image in image_list]
return HumanMessage(content=[
{'type': 'text', 'text': data['question']},
*[{'type': 'image_url', 'image_url': {'url': f'/api/file/{file_id}'}} for file_id in file_id_list]
*[{'type': 'image_url', 'image_url': {'url': f'/oss/file/{file_id}'}} for file_id in file_id_list]
])
return HumanMessage(content=chat_record.problem_text)

View File

@ -6,7 +6,7 @@ from django.core.files.uploadedfile import InMemoryUploadedFile
from application.flow.i_step_node import NodeResult
from application.flow.step_node.text_to_speech_step_node.i_text_to_speech_node import ITextToSpeechNode
from knowledge.serializers.file import FileSerializer
from oss.serializers.file import FileSerializer
from models_provider.tools import get_model_instance_by_model_user_id

View File

@ -110,7 +110,7 @@ class XlsxParseTableHandle(BaseParseTableHandle):
md_tables += md_table + '\n\n'
md_tables = md_tables.replace('/api/image/', '/api/file/')
md_tables = md_tables.replace('/api/image/', '/oss/file/')
return md_tables
except Exception as e:
max_kb.error(f'excel split handle error: {e}')

View File

@ -226,7 +226,7 @@ class DocSplitHandle(BaseSplitHandle):
doc = Document(io.BytesIO(buffer))
content = self.to_md(doc, image_list, get_image_id_func())
if len(image_list) > 0:
content = content.replace('/api/image/', '/api/file/')
content = content.replace('/api/image/', '/oss/file/')
save_image(image_list)
return content
except BaseException as e:

View File

@ -167,8 +167,8 @@ def write_image(zip_path: str, image_list: List[str]):
search = re.search("\(.*\)", image)
if search:
text = search.group()
if text.startswith('(/api/file/'):
r = text.replace('(/api/file/', '').replace(')', '')
if text.startswith('(/oss/file/'):
r = text.replace('(/oss/file/', '').replace(')', '')
r = r.strip().split(" ")[0]
if not is_valid_uuid(r):
break

View File

@ -46,7 +46,6 @@ from knowledge.models import Knowledge, Paragraph, Problem, Document, KnowledgeT
TaskType, File, FileSourceType
from knowledge.serializers.common import ProblemParagraphManage, BatchSerializer, \
get_embedding_model_id_by_knowledge_id, MetaSerializer, write_image, zip_dir
from knowledge.serializers.file import FileSerializer
from knowledge.serializers.paragraph import ParagraphSerializers, ParagraphInstanceSerializer, \
delete_problems_and_mappings
from knowledge.task.embedding import embedding_by_document, delete_embedding_by_document_list, \
@ -56,6 +55,7 @@ from knowledge.task.generate import generate_related_by_document_id
from knowledge.task.sync import sync_web_document
from maxkb.const import PROJECT_DIR
from models_provider.models import Model
from oss.serializers.file import FileSerializer
default_split_handle = TextSplitHandle()
split_handles = [

View File

@ -56,7 +56,5 @@ urlpatterns = [
path('workspace/<str:workspace_id>/knowledge/<str:knowledge_id>/problem/<int:current_page>/<int:page_size>', views.ProblemView.Page.as_view()),
path('workspace/<str:workspace_id>/knowledge/<str:knowledge_id>/document/<int:current_page>/<int:page_size>', views.DocumentView.Page.as_view()),
path('workspace/<str:workspace_id>/knowledge/<int:current_page>/<int:page_size>', views.KnowledgeView.Page.as_view()),
path('file', views.FileView.as_view()),
path('file/<str:file_id>', views.FileView.Operate.as_view()),
]

View File

@ -2,4 +2,3 @@ from .document import *
from .knowledge import *
from .paragraph import *
from .problem import *
from .file import *

View File

@ -28,7 +28,8 @@ urlpatterns = [
path("api/", include("knowledge.urls")),
path("api/", include("system_manage.urls")),
path("api/", include("application.urls")),
path("chat/", include("chat.urls"))
path("chat/", include("chat.urls")),
path('oss/', include('oss.urls')),
]
urlpatterns += [
path('schema/', SpectacularAPIView.as_view(), name='schema'), # schema的配置文件的路由下面两个ui也是根据这个配置文件来生成的

0
apps/oss/__init__.py Normal file
View File

3
apps/oss/admin.py Normal file
View File

@ -0,0 +1,3 @@
from django.contrib import admin
# Register your models here.

6
apps/oss/apps.py Normal file
View File

@ -0,0 +1,6 @@
from django.apps import AppConfig
class OssConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'oss'

View File

3
apps/oss/models.py Normal file
View File

@ -0,0 +1,3 @@
from django.db import models
# Create your models here.

View File

@ -0,0 +1 @@
# coding=utf-8

View File

@ -65,7 +65,7 @@ class FileSerializer(serializers.Serializer):
file_id = meta.get('file_id', uuid.uuid7())
file = File(id=file_id, file_name=self.data.get('file').name, meta=meta)
file.save(self.data.get('file').read())
return f'/api/file/{file_id}'
return f'/oss/file/{file_id}'
class Operate(serializers.Serializer):
id = serializers.UUIDField(required=True)

3
apps/oss/tests.py Normal file
View File

@ -0,0 +1,3 @@
from django.test import TestCase
# Create your tests here.

10
apps/oss/urls.py Normal file
View File

@ -0,0 +1,10 @@
from django.urls import path
from . import views
app_name = 'oss'
urlpatterns = [
path('file', views.FileView.as_view()),
path('file/<str:file_id>', views.FileView.Operate.as_view()),
]

3
apps/oss/views.py Normal file
View File

@ -0,0 +1,3 @@
from django.shortcuts import render
# Create your views here.

View File

@ -0,0 +1 @@
from .file import *

View File

@ -9,7 +9,7 @@ from common.auth import TokenAuth
from common.log.log import log
from common.result import result
from knowledge.api.file import FileUploadAPI, FileGetAPI
from knowledge.serializers.file import FileSerializer
from oss.serializers.file import FileSerializer
class FileView(APIView):

View File

@ -426,7 +426,7 @@ class ToolSerializer(serializers.Serializer):
)
file.save(self.data.get('image').read())
tool.icon = f'/api/file/{file_id}'
tool.icon = f'/oss/file/{file_id}'
tool.save()
return tool.icon