@@ -625,12 +625,26 @@ def _extract_fields(mem_item):
625625 or mem_item .get ("old_memory" )
626626 or mem_item .get ("original_content" )
627627 )
628- return mem_id , mem_memory , original_content
628+ source_doc_id = None
629+ if isinstance (mem_item , dict ):
630+ source_doc_id = (
631+ mem_item .get ("source_doc_id" )
632+ or mem_item .get ("doc_id" )
633+ or (mem_item .get ("metadata" ) or {}).get ("source_doc_id" )
634+ )
635+ else :
636+ metadata = getattr (mem_item , "metadata" , None )
637+ if metadata :
638+ source_doc_id = getattr (metadata , "source_doc_id" , None ) or getattr (
639+ metadata , "doc_id" , None
640+ )
641+
642+ return mem_id , mem_memory , original_content , source_doc_id
629643
630644 kb_log_content : list [dict ] = []
631645
632646 for mem_item in add_records or []:
633- mem_id , mem_memory , _ = _extract_fields (mem_item )
647+ mem_id , mem_memory , _ , source_doc_id = _extract_fields (mem_item )
634648 if mem_id and mem_memory :
635649 kb_log_content .append (
636650 {
@@ -640,7 +654,7 @@ def _extract_fields(mem_item):
640654 "memory_id" : mem_id ,
641655 "content" : mem_memory ,
642656 "original_content" : None ,
643- "source_doc_id" : None ,
657+ "source_doc_id" : source_doc_id ,
644658 }
645659 )
646660 else :
@@ -654,7 +668,7 @@ def _extract_fields(mem_item):
654668 )
655669
656670 for mem_item in update_records or []:
657- mem_id , mem_memory , original_content = _extract_fields (mem_item )
671+ mem_id , mem_memory , original_content , source_doc_id = _extract_fields (mem_item )
658672 if mem_id and mem_memory :
659673 kb_log_content .append (
660674 {
@@ -664,7 +678,7 @@ def _extract_fields(mem_item):
664678 "memory_id" : mem_id ,
665679 "content" : mem_memory ,
666680 "original_content" : original_content ,
667- "source_doc_id" : None ,
681+ "source_doc_id" : source_doc_id ,
668682 }
669683 )
670684 else :
0 commit comments