diff --git a/backend/services/usage_metrics_service.py b/backend/services/usage_metrics_service.py index 8b1e09ba6..af9dafaa7 100644 --- a/backend/services/usage_metrics_service.py +++ b/backend/services/usage_metrics_service.py @@ -4,7 +4,7 @@ import math import os from typing import Any, Optional -from datetime import datetime +from datetime import datetime, timezone import aiohttp from loguru import logger @@ -464,7 +464,7 @@ def _safe_int(self, value: Any) -> int: def _format_created_at(self, created_at) -> str: """Format created_at to ISO8601 string.""" if created_at is None: - return datetime.utcnow().isoformat() + return datetime.now(timezone.utc).isoformat() if isinstance(created_at, datetime): return created_at.isoformat() diff --git a/tests/unit/test_usage_metrics_service.py b/tests/unit/test_usage_metrics_service.py index f670b12d5..00e7b9305 100644 --- a/tests/unit/test_usage_metrics_service.py +++ b/tests/unit/test_usage_metrics_service.py @@ -378,3 +378,18 @@ def test_extract_llm_calls_falls_back_to_primary_without_token_metrics(): "costUsd": 0, } ] + + +def test_format_created_at_returns_utc_isoformat(): + service = UsageMetricsService() + result = service._format_created_at(None) + assert "+" in result # timezone-aware ISO string includes offset like "+00:00" + assert "Z" not in result # should use +00:00, not Z suffix + + +def test_format_created_at_returns_original_datetime_isoformat(): + from datetime import datetime, timezone + service = UsageMetricsService() + dt = datetime(2024, 1, 1, 12, 0, 0, tzinfo=timezone.utc) + result = service._format_created_at(dt) + assert result == "2024-01-01T12:00:00+00:00"