From 3ff0ac3a74ffc4bb2033d22ab998fbcb0751375b Mon Sep 17 00:00:00 2001 From: ogabrielluiz Date: Mon, 17 Jun 2024 11:32:26 -0300 Subject: [PATCH] Refactor schema.py to use timezone-aware datetime for timestamp field --- src/backend/base/langflow/services/monitor/schema.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/backend/base/langflow/services/monitor/schema.py b/src/backend/base/langflow/services/monitor/schema.py index 69a1fc7ab..2294678fe 100644 --- a/src/backend/base/langflow/services/monitor/schema.py +++ b/src/backend/base/langflow/services/monitor/schema.py @@ -1,5 +1,5 @@ import json -from datetime import datetime +from datetime import datetime, timezone from typing import Any, Optional from pydantic import BaseModel, Field, field_serializer, field_validator @@ -17,7 +17,7 @@ class DefaultModel(BaseModel): def json(self, **kwargs): # Usa a função de serialização personalizada - return super().json(**kwargs, encoder=self.custom_encoder) + return super().model_dump_json(**kwargs, encoder=self.custom_encoder) @staticmethod def custom_encoder(obj): @@ -83,7 +83,7 @@ class TransactionModelResponse(DefaultModel): class MessageModel(DefaultModel): index: Optional[int] = Field(default=None) flow_id: Optional[str] = Field(default=None, alias="flow_id") - timestamp: datetime = Field(default_factory=datetime.now) + timestamp: datetime = Field(default_factory=lambda: datetime.now(timezone.utc)) sender: str sender_name: str session_id: str @@ -97,6 +97,12 @@ class MessageModel(DefaultModel): v = json.loads(v) return v + @field_serializer("timestamp") + @classmethod + def serialize_timestamp(cls, v): + v = v.replace(microsecond=0) + return v.strftime("%Y-%m-%d %H:%M:%S") + @field_serializer("files") @classmethod def serialize_files(cls, v):