From aa44167424ad1196d75f94400e68164d89bf2784 Mon Sep 17 00:00:00 2001 From: wxg0103 <727495428@qq.com> Date: Thu, 23 Jan 2025 10:56:21 +0800 Subject: [PATCH 1/2] fix: Download template error MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --bug=1051908 --user=王孝刚 【知识库】导出的文档打开后里面为错误日志,无文档内容,导出的压缩包不能解压 https://www.tapd.cn/57709429/s/1650087 --- .../serializers/document_serializers.py | 19 ++++++++++-------- apps/dataset/template/csv_template_en.csv | 8 ++++++++ .../{csv_template.csv => csv_template_zh.csv} | 0 .../dataset/template/csv_template_zh_Hant.csv | 8 ++++++++ apps/dataset/template/excel_template_en.xlsx | Bin 0 -> 10799 bytes ...l_template.xlsx => excel_template_zh.xlsx} | Bin .../template/excel_template_zh_Hant.xlsx | Bin 0 -> 10819 bytes apps/dataset/template/table_template_en.csv | 13 ++++++++++++ apps/dataset/template/table_template_en.xlsx | Bin 0 -> 10071 bytes .../dataset/template/table_template_zh.csv | 0 .../dataset/template/table_template_zh.xlsx | Bin .../template/table_template_zh_Hant.csv | 13 ++++++++++++ .../template/table_template_zh_Hant.xlsx | Bin 0 -> 10051 bytes 13 files changed, 53 insertions(+), 8 deletions(-) create mode 100644 apps/dataset/template/csv_template_en.csv rename apps/dataset/template/{csv_template.csv => csv_template_zh.csv} (100%) create mode 100644 apps/dataset/template/csv_template_zh_Hant.csv create mode 100644 apps/dataset/template/excel_template_en.xlsx rename apps/dataset/template/{excel_template.xlsx => excel_template_zh.xlsx} (100%) create mode 100644 apps/dataset/template/excel_template_zh_Hant.xlsx create mode 100644 apps/dataset/template/table_template_en.csv create mode 100644 apps/dataset/template/table_template_en.xlsx rename "apps/dataset/template/MaxKB\350\241\250\346\240\274\346\250\241\346\235\277.csv" => apps/dataset/template/table_template_zh.csv (100%) rename "apps/dataset/template/MaxKB\350\241\250\346\240\274\346\250\241\346\235\277.xlsx" => apps/dataset/template/table_template_zh.xlsx (100%) create mode 100644 apps/dataset/template/table_template_zh_Hant.csv create mode 100644 apps/dataset/template/table_template_zh_Hant.xlsx diff --git a/apps/dataset/serializers/document_serializers.py b/apps/dataset/serializers/document_serializers.py index a4ba688abbd..9eefc7ad039 100644 --- a/apps/dataset/serializers/document_serializers.py +++ b/apps/dataset/serializers/document_serializers.py @@ -63,7 +63,8 @@ delete_embedding_by_document, update_embedding_dataset_id, delete_embedding_by_paragraph_ids, \ embedding_by_document_list from smartdoc.conf import PROJECT_DIR -from django.utils.translation import gettext_lazy as _, gettext +from django.utils.translation import gettext_lazy as _, gettext, to_locale +from django.utils.translation import get_language parse_qa_handle_list = [XlsParseQAHandle(), CsvParseQAHandle(), XlsxParseQAHandle(), ZipParseQAHandle()] parse_table_handle_list = [CsvSplitTableHandle(), XlsSplitTableHandle(), XlsxSplitTableHandle()] @@ -239,15 +240,15 @@ def get_request_params_api(): def export(self, with_valid=True): if with_valid: self.is_valid(raise_exception=True) - + language = get_language() if self.data.get('type') == 'csv': - file = open(os.path.join(PROJECT_DIR, "apps", "dataset", 'template', 'csv_template.csv'), "rb") + file = open(os.path.join(PROJECT_DIR, "apps", "dataset", 'template', f'csv_template_{to_locale(language)}.csv'), "rb") content = file.read() file.close() return HttpResponse(content, status=200, headers={'Content-Type': 'text/cxv', 'Content-Disposition': 'attachment; filename="csv_template.csv"'}) elif self.data.get('type') == 'excel': - file = open(os.path.join(PROJECT_DIR, "apps", "dataset", 'template', 'excel_template.xlsx'), "rb") + file = open(os.path.join(PROJECT_DIR, "apps", "dataset", 'template', f'csv_template_{to_locale(language)}.xlsx'), "rb") content = file.read() file.close() return HttpResponse(content, status=200, headers={'Content-Type': 'application/vnd.ms-excel', @@ -256,16 +257,18 @@ def export(self, with_valid=True): def table_export(self, with_valid=True): if with_valid: self.is_valid(raise_exception=True) - + language = get_language() if self.data.get('type') == 'csv': - file = open(os.path.join(PROJECT_DIR, "apps", "dataset", 'template', _('MaxKB table template.csv')), - "rb") + file = open( + os.path.join(PROJECT_DIR, "apps", "dataset", 'template', f'table_template_{to_locale(language)}.csv'), + "rb") content = file.read() file.close() return HttpResponse(content, status=200, headers={'Content-Type': 'text/cxv', 'Content-Disposition': 'attachment; filename="csv_template.csv"'}) elif self.data.get('type') == 'excel': - file = open(os.path.join(PROJECT_DIR, "apps", "dataset", 'template', _('MaxKB table template.xlsx')), + file = open(os.path.join(PROJECT_DIR, "apps", "dataset", 'template', + f'table_template_{to_locale(language)}.xlsx'), "rb") content = file.read() file.close() diff --git a/apps/dataset/template/csv_template_en.csv b/apps/dataset/template/csv_template_en.csv new file mode 100644 index 00000000000..99c2711b2e5 --- /dev/null +++ b/apps/dataset/template/csv_template_en.csv @@ -0,0 +1,8 @@ +Section title (optional), section content (required, question answer, no more than 4096 characters)), question (optional, one per line in the cell) +MaxKB product introduction, "MaxKB is a knowledge base question and answer system based on the LLM large language model. MaxKB = Max Knowledge Base aims to become the most powerful brain of the enterprise. +Out-of-the-box: supports direct uploading of documents, automatic crawling of online documents, automatic text splitting and vectorization, and a good intelligent Q&A interactive experience; +Seamless embedding: supports rapid embedding into third-party business systems with zero coding; +Multi-model support: Supports docking with mainstream large models, including Ollama local private large models (such as Llama 2, Llama 3, qwen), Tongyi Qianwen, OpenAI, Azure OpenAI, Kimi, Zhipu AI, iFlytek Spark and Baidu Qianfan Large models etc. ","What is MaxKB? +MaxKB product introduction +Large language model supported by MaxKB +MaxKB advantages" \ No newline at end of file diff --git a/apps/dataset/template/csv_template.csv b/apps/dataset/template/csv_template_zh.csv similarity index 100% rename from apps/dataset/template/csv_template.csv rename to apps/dataset/template/csv_template_zh.csv diff --git a/apps/dataset/template/csv_template_zh_Hant.csv b/apps/dataset/template/csv_template_zh_Hant.csv new file mode 100644 index 00000000000..5b675fee6b4 --- /dev/null +++ b/apps/dataset/template/csv_template_zh_Hant.csv @@ -0,0 +1,8 @@ +分段標題(選填),分段內容(必填,問題答案,最長不超過4096個字元)),問題(選填,單元格內一行一個) +MaxKB產品介紹,"MaxKB 是一款基於 LLM 大語言模型的知識庫問答系統。MaxKB = Max Knowledge Base,旨在成為企業的最強大大腦。 +開箱即用:支援直接上傳文檔、自動爬取線上文檔,支援文字自動分割、向量化,智慧問答互動體驗好; +無縫嵌入:支援零編碼快速嵌入到第三方業務系統; +多模型支援:支持對接主流的大模型,包括Ollama 本地私有大模型(如Llama 2、Llama 3、qwen)、通義千問、OpenAI、Azure OpenAI、Kimi、智譜AI、訊飛星火和百度千帆大模型等。 ","MaxKB是什麼? +MaxKB產品介紹 +MaxKB支援的大語言模型 +MaxKB優勢" \ No newline at end of file diff --git a/apps/dataset/template/excel_template_en.xlsx b/apps/dataset/template/excel_template_en.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..ded0c2daccf14d8eca41a5ab977e74c67c756072 GIT binary patch literal 10799 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 literal 0 HcmV?d00001 diff --git a/apps/dataset/template/table_template_en.csv b/apps/dataset/template/table_template_en.csv new file mode 100644 index 00000000000..d98e21c1698 --- /dev/null +++ b/apps/dataset/template/table_template_en.csv @@ -0,0 +1,13 @@ +Position, reimbursement type, first-tier city reimbursement standard (yuan), second-tier city reimbursement standard (yuan), third-tier city reimbursement standard (yuan) +Ordinary employees, accommodation expenses, 500, 400, 300 +Department head, accommodation fee, 600, 500, 400 +Department director, accommodation fee, 700, 600, 500 +Regional general manager, accommodation fee, 800, 700, 600 +Ordinary employees, food expenses, 50, 40, 30 +Department head, food expenses, 50, 40, 30 +Department director, food expenses, 50, 40, 30 +Regional general manager, food expenses, 50, 40, 30 +Ordinary employees, transportation expenses, 50, 40, 30 +Department head, transportation expenses, 50, 40, 30 +Department director, transportation expenses, 50, 40, 30 +Regional general manager, transportation expenses, 50, 40, 30 \ No newline at end of file diff --git a/apps/dataset/template/table_template_en.xlsx b/apps/dataset/template/table_template_en.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..1e4458226643e294f138d029c7b74f148762d6aa GIT binary patch literal 10071 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 JQIb93{tw62bUgq7 literal 0 HcmV?d00001 From 349c9f698dd7c414476670915538338871e25f03 Mon Sep 17 00:00:00 2001 From: wxg0103 <727495428@qq.com> Date: Thu, 23 Jan 2025 10:56:21 +0800 Subject: [PATCH 2/2] fix: Download template error MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --bug=1051908 --user=王孝刚 【知识库】导出的文档打开后里面为错误日志,无文档内容,导出的压缩包不能解压 https://www.tapd.cn/57709429/s/1650087 --- apps/dataset/serializers/document_serializers.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/apps/dataset/serializers/document_serializers.py b/apps/dataset/serializers/document_serializers.py index 53890aab7e8..dc2d41b5bee 100644 --- a/apps/dataset/serializers/document_serializers.py +++ b/apps/dataset/serializers/document_serializers.py @@ -23,7 +23,8 @@ from django.db.models import QuerySet, Count from django.db.models.functions import Substr, Reverse from django.http import HttpResponse -from django.utils.translation import gettext_lazy as _, gettext +from django.utils.translation import gettext_lazy as _, gettext, to_locale +from django.utils.translation import get_language from drf_yasg import openapi from openpyxl.cell.cell import ILLEGAL_CHARACTERS_RE from rest_framework import serializers @@ -65,8 +66,6 @@ embedding_by_document_list from setting.models import Model from smartdoc.conf import PROJECT_DIR -from django.utils.translation import gettext_lazy as _, gettext, to_locale -from django.utils.translation import get_language parse_qa_handle_list = [XlsParseQAHandle(), CsvParseQAHandle(), XlsxParseQAHandle(), ZipParseQAHandle()] parse_table_handle_list = [CsvSplitTableHandle(), XlsSplitTableHandle(), XlsxSplitTableHandle()]