fix: use accounting_status='accounted' instead of !='failed'

Only explicitly accounted records count as successful transactions.
This commit is contained in:
Hermes Agent 2026-06-19 15:23:03 +08:00
parent 7dd85acafa
commit 2a7be96ec9

View File

@ -10,7 +10,7 @@ async def get_today_usage(request):
env = request._run_ns env = request._run_ns
today = env.curDateString() today = env.curDateString()
async with get_sor_context(env, 'sage') as sor: async with get_sor_context(env, 'sage') as sor:
sql = "SELECT COUNT(*) as cnt FROM llmusage WHERE use_date = ${today}$ AND accounting_status != 'failed'" sql = "SELECT COUNT(*) as cnt FROM llmusage WHERE use_date = ${today}$ AND accounting_status = 'accounted'"
recs = await sor.sqlExe(sql, {'today': today}) recs = await sor.sqlExe(sql, {'today': today})
cnt = int(recs[0].get('cnt', 0)) if recs else 0 cnt = int(recs[0].get('cnt', 0)) if recs else 0
return cnt return cnt
@ -21,7 +21,7 @@ async def get_today_amount(request):
env = request._run_ns env = request._run_ns
today = env.curDateString() today = env.curDateString()
async with get_sor_context(env, 'sage') as sor: async with get_sor_context(env, 'sage') as sor:
sql = "SELECT COALESCE(SUM(amount), 0) as total_amount FROM llmusage WHERE use_date = ${today}$ AND accounting_status != 'failed'" sql = "SELECT COALESCE(SUM(amount), 0) as total_amount FROM llmusage WHERE use_date = ${today}$ AND accounting_status = 'accounted'"
recs = await sor.sqlExe(sql, {'today': today}) recs = await sor.sqlExe(sql, {'today': today})
amount = float(recs[0].get('total_amount', 0)) if recs else 0.0 amount = float(recs[0].get('total_amount', 0)) if recs else 0.0
return amount return amount
@ -34,12 +34,12 @@ async def get_usage_trend(request):
yesterday = (date.today() - timedelta(days=1)).isoformat() yesterday = (date.today() - timedelta(days=1)).isoformat()
async with get_sor_context(env, 'sage') as sor: async with get_sor_context(env, 'sage') as sor:
# 今日 # 今日
sql_today = "SELECT COUNT(*) as cnt FROM llmusage WHERE use_date = ${today}$ AND accounting_status != 'failed'" sql_today = "SELECT COUNT(*) as cnt FROM llmusage WHERE use_date = ${today}$ AND accounting_status = 'accounted'"
recs_today = await sor.sqlExe(sql_today, {'today': today}) recs_today = await sor.sqlExe(sql_today, {'today': today})
today_cnt = int(recs_today[0].get('cnt', 0)) if recs_today else 0 today_cnt = int(recs_today[0].get('cnt', 0)) if recs_today else 0
# 昨日 # 昨日
sql_yesterday = "SELECT COUNT(*) as cnt FROM llmusage WHERE use_date = ${yesterday}$ AND accounting_status != 'failed'" sql_yesterday = "SELECT COUNT(*) as cnt FROM llmusage WHERE use_date = ${yesterday}$ AND accounting_status = 'accounted'"
recs_yesterday = await sor.sqlExe(sql_yesterday, {'yesterday': yesterday}) recs_yesterday = await sor.sqlExe(sql_yesterday, {'yesterday': yesterday})
yesterday_cnt = int(recs_yesterday[0].get('cnt', 0)) if recs_yesterday else 0 yesterday_cnt = int(recs_yesterday[0].get('cnt', 0)) if recs_yesterday else 0
@ -66,12 +66,12 @@ async def get_amount_trend(request):
yesterday = (date.today() - timedelta(days=1)).isoformat() yesterday = (date.today() - timedelta(days=1)).isoformat()
async with get_sor_context(env, 'sage') as sor: async with get_sor_context(env, 'sage') as sor:
# 今日 # 今日
sql_today = "SELECT COALESCE(SUM(amount), 0) as total_amount FROM llmusage WHERE use_date = ${today}$ AND accounting_status != 'failed'" sql_today = "SELECT COALESCE(SUM(amount), 0) as total_amount FROM llmusage WHERE use_date = ${today}$ AND accounting_status = 'accounted'"
recs_today = await sor.sqlExe(sql_today, {'today': today}) recs_today = await sor.sqlExe(sql_today, {'today': today})
today_amount = float(recs_today[0].get('total_amount', 0)) if recs_today else 0.0 today_amount = float(recs_today[0].get('total_amount', 0)) if recs_today else 0.0
# 昨日 # 昨日
sql_yesterday = "SELECT COALESCE(SUM(amount), 0) as total_amount FROM llmusage WHERE use_date = ${yesterday}$ AND accounting_status != 'failed'" sql_yesterday = "SELECT COALESCE(SUM(amount), 0) as total_amount FROM llmusage WHERE use_date = ${yesterday}$ AND accounting_status = 'accounted'"
recs_yesterday = await sor.sqlExe(sql_yesterday, {'yesterday': yesterday}) recs_yesterday = await sor.sqlExe(sql_yesterday, {'yesterday': yesterday})
yesterday_amount = float(recs_yesterday[0].get('total_amount', 0)) if recs_yesterday else 0.0 yesterday_amount = float(recs_yesterday[0].get('total_amount', 0)) if recs_yesterday else 0.0