feat: add convert_uuid_to_str function for UUID serialization in document metadata

--bug=1058357 --user=刘瑞斌 【知识库】通用知识库-上传QA问答对csv和excel文档失败 https://www.tapd.cn/62980211/s/1726470
This commit is contained in:
CaptainB 2025-07-09 10:47:39 +08:00
parent ec2ddedf93
commit 6a87ccd908

View File

@ -74,6 +74,17 @@ parse_qa_handle_list = [XlsParseQAHandle(), CsvParseQAHandle(), XlsxParseQAHandl
parse_table_handle_list = [CsvParseTableHandle(), XlsParseTableHandle(), XlsxParseTableHandle()]
def convert_uuid_to_str(obj):
if isinstance(obj, dict):
return {k: convert_uuid_to_str(v) for k, v in obj.items()}
elif isinstance(obj, list):
return [convert_uuid_to_str(i) for i in obj]
elif isinstance(obj, uuid.UUID):
return str(obj)
else:
return obj
class BatchCancelInstanceSerializer(serializers.Serializer):
id_list = serializers.ListField(required=True, child=serializers.UUIDField(required=True), label=_('id list'))
type = serializers.IntegerField(required=True, label=_('task type'))
@ -844,6 +855,9 @@ class DocumentSerializers(serializers.Serializer):
@staticmethod
def get_document_paragraph_model(knowledge_id, instance: Dict):
source_meta = {'source_file_id': instance.get('source_file_id')} if instance.get('source_file_id') else {}
meta = {**instance.get('meta'), **source_meta} if instance.get('meta') is not None else source_meta
meta = convert_uuid_to_str(meta)
document_model = Document(
**{
'knowledge_id': knowledge_id,
@ -853,8 +867,7 @@ class DocumentSerializers(serializers.Serializer):
lambda x, y: x + y,
[len(p.get('content')) for p in instance.get('paragraphs', [])],
0),
'meta': {**instance.get('meta'), **source_meta} if instance.get(
'meta') is not None else source_meta,
'meta': meta,
'type': instance.get('type') if instance.get('type') is not None else KnowledgeType.BASE
})