From 3c3e0a35f430e14ce6fe3e97e97cc5c0e05357b1 Mon Sep 17 00:00:00 2001 From: jyong <718720800@qq.com> Date: Fri, 28 Feb 2025 16:34:11 +0800 Subject: [PATCH] add metadata migration --- api/fields/dataset_fields.py | 1 + api/models/dataset.py | 38 ++++++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/api/fields/dataset_fields.py b/api/fields/dataset_fields.py index 90da34e22a..397532af93 100644 --- a/api/fields/dataset_fields.py +++ b/api/fields/dataset_fields.py @@ -79,6 +79,7 @@ dataset_detail_fields = { "external_knowledge_info": fields.Nested(external_knowledge_info_fields), "external_retrieval_model": fields.Nested(external_retrieval_model_fields, allow_null=True), "doc_metadata": fields.List(fields.Nested(doc_metadata_fields)), + "built_in_field_enabled": fields.Boolean, } dataset_query_detail_fields = { diff --git a/api/models/dataset.py b/api/models/dataset.py index 8429e49d7d..76f73776df 100644 --- a/api/models/dataset.py +++ b/api/models/dataset.py @@ -16,6 +16,7 @@ from sqlalchemy.dialects.postgresql import JSONB from sqlalchemy.orm import Mapped from configs import dify_config +from core.rag.index_processor.constant.built_in_field import BuiltInField from core.rag.retrieval.retrieval_methods import RetrievalMethod from extensions.ext_storage import storage from services.entities.knowledge_entities.knowledge_entities import ParentMode, Rule @@ -444,8 +445,45 @@ class Document(db.Model): # type: ignore[name-defined] "value": self.doc_metadata.get(metadata.type), } metadata_list.append(metadata_dict) + # deal built-in fields + metadata_list.extend(self.get_built_in_fields()) + return metadata_list return None + + def get_built_in_fields(self): + built_in_fields = [] + built_in_fields.append({ + "id": "built-in", + "name": BuiltInField.document_name, + "type": "string", + "value": self.name, + }) + built_in_fields.append({ + "id": "built-in", + "name": BuiltInField.uploader, + "type": "string", + "value": self.uploader, + }) + built_in_fields.append({ + "id": "built-in", + "name": BuiltInField.upload_date, + "type": "date", + "value": self.created_at, + }) + built_in_fields.append({ + "id": "built-in", + "name": BuiltInField.last_update_date, + "type": "date", + "value": self.updated_at, + }) + built_in_fields.append({ + "id": "built-in", + "name": BuiltInField.source, + "type": "string", + "value": self.data_source_info, + }) + return built_in_fields def process_rule_dict(self): if self.dataset_process_rule_id: