Spaces:
Sleeping
Sleeping
""" | |
Класс для представления документа как сущности. | |
""" | |
from dataclasses import dataclass | |
from .linker_entity import LinkerEntity, register_entity | |
class DocumentAsEntity(LinkerEntity): | |
""" | |
Класс для представления документа как сущности в системе извлечения и сборки. | |
""" | |
doc_type: str = "unknown" | |
def deserialize(cls, data: LinkerEntity) -> 'DocumentAsEntity': | |
""" | |
Десериализует DocumentAsEntity из объекта LinkerEntity. | |
Args: | |
data: Объект LinkerEntity для преобразования в DocumentAsEntity | |
Returns: | |
Десериализованный объект DocumentAsEntity | |
""" | |
metadata = data.metadata or {} | |
# Получаем тип документа из метаданных или используем значение по умолчанию | |
doc_type = metadata.get('_doc_type', 'unknown') | |
# Создаем чистые метаданные без служебных полей | |
clean_metadata = {k: v for k, v in metadata.items() if not k.startswith('_')} | |
return cls( | |
id=data.id, | |
name=data.name, | |
text=data.text, | |
in_search_text=data.in_search_text, | |
metadata=clean_metadata, | |
source_id=data.source_id, | |
target_id=data.target_id, | |
number_in_relation=data.number_in_relation, | |
type="DocumentAsEntity", | |
doc_type=doc_type | |
) | |