@@ -559,28 +559,37 @@ def _add_message_consumer(self, messages: list[ScheduleMessageItem]) -> None:
559559
560560 def _mem_feedback_message_consumer (self , messages : list [ScheduleMessageItem ]) -> None :
561561 try :
562+ if not messages :
563+ return
562564 message = messages [0 ]
563565 mem_cube = self .current_mem_cube
564566
565567 user_id = message .user_id
566568 mem_cube_id = message .mem_cube_id
567569 content = message .content
568570
569- feedback_data = json .loads (content )
571+ try :
572+ feedback_data = json .loads (content ) if isinstance (content , str ) else content
573+ if not isinstance (feedback_data , dict ):
574+ logger .error (f"Failed to decode feedback_data or it is not a dict: { feedback_data } " )
575+ return
576+ except json .JSONDecodeError :
577+ logger .error (f"Invalid JSON content for feedback message: { content } " , exc_info = True )
578+ return
570579
571580 feedback_result = self .feedback_server .process_feedback (
572581 user_id = user_id ,
573582 user_name = mem_cube_id ,
574- session_id = feedback_data [ "session_id" ] ,
575- chat_history = feedback_data [ "history" ] ,
576- retrieved_memory_ids = feedback_data [ "retrieved_memory_ids" ] ,
577- feedback_content = feedback_data [ "feedback_content" ] ,
578- feedback_time = feedback_data [ "feedback_time" ] ,
579- task_id = feedback_data [ "task_id" ] ,
583+ session_id = feedback_data . get ( "session_id" ) ,
584+ chat_history = feedback_data . get ( "history" , []) ,
585+ retrieved_memory_ids = feedback_data . get ( "retrieved_memory_ids" , []) ,
586+ feedback_content = feedback_data . get ( "feedback_content" ) ,
587+ feedback_time = feedback_data . get ( "feedback_time" ) ,
588+ task_id = feedback_data . get ( "task_id" ) ,
580589 )
581590
582591 logger .info (
583- f"Successfully feedback memories for user_id={ user_id } , mem_cube_id={ mem_cube_id } "
592+ f"Successfully processed feedback for user_id={ user_id } , mem_cube_id={ mem_cube_id } "
584593 )
585594
586595 should_send_log = (
@@ -590,13 +599,25 @@ def _mem_feedback_message_consumer(self, messages: list[ScheduleMessageItem]) ->
590599 )
591600 if feedback_result and should_send_log :
592601 feedback_content = []
593- for _i , mem_item in enumerate (feedback_result ):
594- feedback_content .append (
595- {
596- "content" : mem_item .memory ,
597- "id" : mem_item ["id" ],
598- }
599- )
602+ for mem_item in feedback_result :
603+ # Safely access attributes, assuming mem_item could be dict or object
604+ mem_id = getattr (mem_item , 'id' , None ) or mem_item .get ('id' ) if isinstance (mem_item , dict ) else None
605+ mem_memory = getattr (mem_item , 'memory' , None ) or mem_item .get ('memory' ) if isinstance (mem_item , dict ) else None
606+
607+ if mem_id and mem_memory :
608+ feedback_content .append (
609+ {
610+ "content" : mem_memory ,
611+ "id" : mem_id ,
612+ }
613+ )
614+ else :
615+ logger .warning (f"Skipping malformed mem_item in feedback_result: { mem_item } " )
616+
617+ if not feedback_content :
618+ logger .warning ("No valid feedback content generated from feedback_result." )
619+ return
620+
600621 event = self .create_event_log (
601622 label = "feedbackMemory" ,
602623 from_memory_type = USER_INPUT_TYPE ,
0 commit comments