@@ -36,7 +36,7 @@ async def record_message(
3636 message_id = str (uuid .uuid4 ())
3737 message_data = {
3838 'id' : message_id ,
39- 'timestamp' : datetime .datetime .now (),
39+ 'timestamp' : datetime .datetime .now (datetime . timezone . utc ). replace ( tzinfo = None ),
4040 'bot_id' : bot_id ,
4141 'bot_name' : bot_name ,
4242 'pipeline_id' : pipeline_id ,
@@ -74,7 +74,7 @@ async def record_llm_call(
7474 call_id = str (uuid .uuid4 ())
7575 call_data = {
7676 'id' : call_id ,
77- 'timestamp' : datetime .datetime .now (),
77+ 'timestamp' : datetime .datetime .now (datetime . timezone . utc ). replace ( tzinfo = None ),
7878 'model_name' : model_name ,
7979 'input_tokens' : input_tokens ,
8080 'output_tokens' : output_tokens ,
@@ -114,8 +114,8 @@ async def record_session_start(
114114 'pipeline_id' : pipeline_id ,
115115 'pipeline_name' : pipeline_name ,
116116 'message_count' : 0 ,
117- 'start_time' : datetime .datetime .now (),
118- 'last_activity' : datetime .datetime .now (),
117+ 'start_time' : datetime .datetime .now (datetime . timezone . utc ). replace ( tzinfo = None ),
118+ 'last_activity' : datetime .datetime .now (datetime . timezone . utc ). replace ( tzinfo = None ),
119119 'is_active' : True ,
120120 'platform' : platform ,
121121 'user_id' : user_id ,
@@ -131,7 +131,7 @@ async def update_session_activity(self, session_id: str) -> None:
131131 sqlalchemy .update (persistence_monitoring .MonitoringSession )
132132 .where (persistence_monitoring .MonitoringSession .session_id == session_id )
133133 .values ({
134- 'last_activity' : datetime .datetime .now (),
134+ 'last_activity' : datetime .datetime .now (datetime . timezone . utc ). replace ( tzinfo = None ),
135135 'message_count' : persistence_monitoring .MonitoringSession .message_count + 1 ,
136136 })
137137 )
@@ -151,7 +151,7 @@ async def record_error(
151151 error_id = str (uuid .uuid4 ())
152152 error_data = {
153153 'id' : error_id ,
154- 'timestamp' : datetime .datetime .now (),
154+ 'timestamp' : datetime .datetime .now (datetime . timezone . utc ). replace ( tzinfo = None ),
155155 'error_type' : error_type ,
156156 'error_message' : error_message ,
157157 'bot_id' : bot_id ,
@@ -286,12 +286,16 @@ async def get_messages(
286286 query = query .limit (limit ).offset (offset )
287287
288288 result = await self .ap .persistence_mgr .execute_async (query )
289- messages = result .all ()
289+ messages_rows = result .all ()
290290
291- return (
292- [self .ap .persistence_mgr .serialize_model (persistence_monitoring .MonitoringMessage , msg ) for msg in messages ],
293- total ,
294- )
291+ serialized = []
292+ for row in messages_rows :
293+ # Extract model instance from Row (SQLAlchemy returns Row objects)
294+ msg = row [0 ] if isinstance (row , tuple ) else row
295+ serialized_msg = self .ap .persistence_mgr .serialize_model (persistence_monitoring .MonitoringMessage , msg )
296+ serialized .append (serialized_msg )
297+
298+ return (serialized , total )
295299
296300 async def get_llm_calls (
297301 self ,
@@ -332,10 +336,10 @@ async def get_llm_calls(
332336 query = query .limit (limit ).offset (offset )
333337
334338 result = await self .ap .persistence_mgr .execute_async (query )
335- llm_calls = result .all ()
339+ llm_calls_rows = result .all ()
336340
337341 return (
338- [self .ap .persistence_mgr .serialize_model (persistence_monitoring .MonitoringLLMCall , call ) for call in llm_calls ],
342+ [self .ap .persistence_mgr .serialize_model (persistence_monitoring .MonitoringLLMCall , row [ 0 ] if isinstance ( row , tuple ) else row ) for row in llm_calls_rows ],
339343 total ,
340344 )
341345
@@ -381,10 +385,10 @@ async def get_sessions(
381385 query = query .limit (limit ).offset (offset )
382386
383387 result = await self .ap .persistence_mgr .execute_async (query )
384- sessions = result .all ()
388+ sessions_rows = result .all ()
385389
386390 return (
387- [self .ap .persistence_mgr .serialize_model (persistence_monitoring .MonitoringSession , session ) for session in sessions ],
391+ [self .ap .persistence_mgr .serialize_model (persistence_monitoring .MonitoringSession , row [ 0 ] if isinstance ( row , tuple ) else row ) for row in sessions_rows ],
388392 total ,
389393 )
390394
@@ -427,9 +431,9 @@ async def get_errors(
427431 query = query .limit (limit ).offset (offset )
428432
429433 result = await self .ap .persistence_mgr .execute_async (query )
430- errors = result .all ()
434+ errors_rows = result .all ()
431435
432436 return (
433- [self .ap .persistence_mgr .serialize_model (persistence_monitoring .MonitoringError , error ) for error in errors ],
437+ [self .ap .persistence_mgr .serialize_model (persistence_monitoring .MonitoringError , row [ 0 ] if isinstance ( row , tuple ) else row ) for row in errors_rows ],
434438 total ,
435439 )
0 commit comments