diff --git a/b/cntoai/model_usage_admin_report.dspy b/b/cntoai/model_usage_admin_report.dspy index 6b235db..04e6861 100644 --- a/b/cntoai/model_usage_admin_report.dspy +++ b/b/cntoai/model_usage_admin_report.dspy @@ -178,7 +178,7 @@ async def _query_model_usage_rows(sor, conditions, limit=None, offset=None): sql = """ SELECT id, userid, llmid, original_price, orderid, bill_status, usage_content, created_at FROM model_usage - WHERE %s + WHERE %s AND bill_status != '0' ORDER BY created_at DESC """ % where_clause if limit is not None: @@ -188,7 +188,7 @@ async def _query_model_usage_rows(sor, conditions, limit=None, offset=None): async def _count_model_usage(sor, conditions): where_clause = ' AND '.join(conditions) if conditions else '1 = 1' - sql = 'SELECT COUNT(*) AS total_count FROM model_usage WHERE %s' % where_clause + sql = 'SELECT COUNT(*) AS total_count FROM model_usage WHERE %s AND bill_status != "0"' % where_clause return (await sor.sqlExe(sql, {}))[0]['total_count'] diff --git a/b/cntoai/model_usage_user_report.dspy b/b/cntoai/model_usage_user_report.dspy index 256d66d..aba1c67 100644 --- a/b/cntoai/model_usage_user_report.dspy +++ b/b/cntoai/model_usage_user_report.dspy @@ -95,7 +95,7 @@ def _normalize_usage_row(row, bill_amount_map=None): 'prompt_tokens': int(usage.get('prompt_tokens') or 0), 'completion_tokens': int(usage.get('completion_tokens') or 0), 'total_tokens': int(usage.get('total_tokens') or 0), - 'amount': round(amount, 4), + 'amount': round(amount, 2), 'bill_status': row.get('bill_status'), 'orderid': orderid, 'usage_time': row.get('created_at'), @@ -155,7 +155,7 @@ async def _query_model_usage_rows(sor, conditions, limit=None, offset=None): sql = """ SELECT id, userid, llmid, original_price, orderid, bill_status, usage_content, created_at FROM model_usage - WHERE %s + WHERE %s AND bill_status != '0' ORDER BY created_at DESC """ % where_clause if limit is not None: @@ -165,7 +165,7 @@ async def _query_model_usage_rows(sor, conditions, limit=None, offset=None): async def _count_model_usage(sor, conditions): where_clause = ' AND '.join(conditions) if conditions else '1 = 1' - sql = 'SELECT COUNT(*) AS total_count FROM model_usage WHERE %s' % where_clause + sql = 'SELECT COUNT(*) AS total_count FROM model_usage WHERE %s AND bill_status != "0"' % where_clause return (await sor.sqlExe(sql, {}))[0]['total_count'] diff --git a/b/cntoai/process_user_billing.dspy b/b/cntoai/process_user_billing.dspy index 2dc2e17..dc8c87a 100644 --- a/b/cntoai/process_user_billing.dspy +++ b/b/cntoai/process_user_billing.dspy @@ -260,6 +260,13 @@ async def process_user_billing(ns={}): 'status': 'error', 'msg': 'llmid必传' } + model_name = ns.get('model') + if not model_name: + debug(f"{userid} process_user_billing model必传") + return { + 'status': 'error', + 'msg': 'model必传' + } try: amount = round(float(amount), 12) @@ -275,6 +282,9 @@ async def process_user_billing(ns={}): async with db.sqlorContext('kboss') as sor: try: product_li = await sor.R('product', {'providerpid': llmid, 'del_flg': '0'}) + if not product_li: + product_li = await sor.R('product', {'product_code': model_name, 'del_flg': '0'}) + if not product_li: debug(f"{userid} process_user_billing 未找到对应产品,请确认") return { diff --git a/f/web-kboss/src/views/tokenUsage/index.vue b/f/web-kboss/src/views/tokenUsage/index.vue index 8c863c7..cf8efa7 100644 --- a/f/web-kboss/src/views/tokenUsage/index.vue +++ b/f/web-kboss/src/views/tokenUsage/index.vue @@ -7,7 +7,7 @@ -
查看模型调用 Token 消耗、调用次数和费用趋势。
@@ -17,7 +17,7 @@ --> - +