diff --git a/src/backend/base/langflow/api/v1/schemas.py b/src/backend/base/langflow/api/v1/schemas.py index 8a767fb3e..49021c436 100644 --- a/src/backend/base/langflow/api/v1/schemas.py +++ b/src/backend/base/langflow/api/v1/schemas.py @@ -287,7 +287,7 @@ class ResultDataResponse(BaseModel): return f"{obj[:max_length]}... [truncated]" return obj if isinstance(obj, datetime): - return obj.astimezone().isoformat() + return obj.replace(tzinfo=timezone.utc).isoformat() if isinstance(obj, Decimal): return float(obj) if isinstance(obj, UUID): diff --git a/src/backend/base/langflow/graph/utils.py b/src/backend/base/langflow/graph/utils.py index fe4840715..5589c0b3d 100644 --- a/src/backend/base/langflow/graph/utils.py +++ b/src/backend/base/langflow/graph/utils.py @@ -86,6 +86,9 @@ def serialize_field(value): if hasattr(value, "to_json"): return value.to_json() return value.dict() + # Handle datetime objects + if hasattr(value, "isoformat"): + return value.isoformat() return str(value) @@ -182,10 +185,10 @@ async def log_vertex_build( id=vertex_id, valid=valid, params=str(params) if params else None, - # ugly hack to get the model dump with weird datatypes - data=json.loads(data.model_dump_json()), - # ugly hack to get the model dump with weird datatypes - artifacts=json.loads(json.dumps(artifacts, default=str)), + # Serialize data using our custom serializer + data=serialize_field(data), + # Serialize artifacts using our custom serializer + artifacts=serialize_field(artifacts) if artifacts else None, ) async with session_getter(get_db_service()) as session: inserted = await crud_log_vertex_build(session, vertex_build)