fix: 统计聚合中成本字段 float 改 Decimal,修复与数据库 Numeric

字段相加的类型错误
This commit is contained in:
fawney19
2026-03-08 21:33:05 +08:00
parent 2c5654d694
commit 73db997e92

View File

@@ -9,6 +9,7 @@ import os
import uuid
from dataclasses import dataclass
from datetime import date, datetime, time, timedelta, timezone
from decimal import Decimal
from typing import Any
from sqlalchemy import Float, and_, case, cast, func
@@ -961,8 +962,8 @@ class StatsAggregatorService:
summary.all_time_output_tokens = int(daily_aggregated.output_tokens or 0)
summary.all_time_cache_creation_tokens = int(daily_aggregated.cache_creation_tokens or 0)
summary.all_time_cache_read_tokens = int(daily_aggregated.cache_read_tokens or 0)
summary.all_time_cost = float(daily_aggregated.total_cost or 0)
summary.all_time_actual_cost = float(daily_aggregated.actual_total_cost or 0)
summary.all_time_cost = Decimal(str(daily_aggregated.total_cost or 0))
summary.all_time_actual_cost = Decimal(str(daily_aggregated.actual_total_cost or 0))
summary.total_users = total_users
summary.active_users = active_users
summary.total_api_keys = total_api_keys
@@ -1010,8 +1011,8 @@ class StatsAggregatorService:
"output_tokens": 0,
"cache_creation_tokens": 0,
"cache_read_tokens": 0,
"total_cost": 0.0,
"actual_total_cost": 0.0,
"total_cost": Decimal(0),
"actual_total_cost": Decimal(0),
"avg_response_time_ms": 0.0,
"unique_models": 0,
"unique_providers": 0,
@@ -1027,8 +1028,8 @@ class StatsAggregatorService:
"output_tokens": int(getattr(aggregated, "output_tokens", 0) or 0),
"cache_creation_tokens": int(getattr(aggregated, "cache_creation_tokens", 0) or 0),
"cache_read_tokens": int(getattr(aggregated, "cache_read_tokens", 0) or 0),
"total_cost": float(getattr(aggregated, "total_cost", 0) or 0.0),
"actual_total_cost": float(getattr(aggregated, "actual_total_cost", 0) or 0.0),
"total_cost": Decimal(str(getattr(aggregated, "total_cost", 0) or 0)),
"actual_total_cost": Decimal(str(getattr(aggregated, "actual_total_cost", 0) or 0)),
"avg_response_time_ms": float(getattr(aggregated, "avg_response_time", 0) or 0.0),
"unique_models": int(getattr(aggregated, "unique_models", 0) or 0),
"unique_providers": int(getattr(aggregated, "unique_providers", 0) or 0),