运营报表小数点后精确到8位
This commit is contained in:
parent
9ed276a313
commit
b2837683cb
@ -103,6 +103,30 @@ def _group_key(dt, group_by):
|
|||||||
return dt.strftime('%Y-%m-%d')
|
return dt.strftime('%Y-%m-%d')
|
||||||
|
|
||||||
|
|
||||||
|
def _round_amount(value):
|
||||||
|
return round(float(value or 0), 8)
|
||||||
|
|
||||||
|
|
||||||
|
def _format_amount(value):
|
||||||
|
return '%.8f' % _round_amount(value)
|
||||||
|
|
||||||
|
|
||||||
|
def _format_amount_item(item):
|
||||||
|
formatted = dict(item)
|
||||||
|
formatted['amount'] = _format_amount(formatted.get('amount'))
|
||||||
|
return formatted
|
||||||
|
|
||||||
|
|
||||||
|
def _format_amount_items(items):
|
||||||
|
return [_format_amount_item(item) for item in items]
|
||||||
|
|
||||||
|
|
||||||
|
def _format_amount_summary(summary):
|
||||||
|
formatted = dict(summary)
|
||||||
|
formatted['amount'] = _format_amount(formatted.get('amount'))
|
||||||
|
return formatted
|
||||||
|
|
||||||
|
|
||||||
def _normalize_usage_row(row, bill_amount_map=None):
|
def _normalize_usage_row(row, bill_amount_map=None):
|
||||||
usage = _parse_usage_content(row.get('usage_content'))
|
usage = _parse_usage_content(row.get('usage_content'))
|
||||||
orderid = row.get('orderid')
|
orderid = row.get('orderid')
|
||||||
@ -118,7 +142,7 @@ def _normalize_usage_row(row, bill_amount_map=None):
|
|||||||
'prompt_tokens': int(usage.get('prompt_tokens') or 0),
|
'prompt_tokens': int(usage.get('prompt_tokens') or 0),
|
||||||
'completion_tokens': int(usage.get('completion_tokens') or 0),
|
'completion_tokens': int(usage.get('completion_tokens') or 0),
|
||||||
'total_tokens': int(usage.get('total_tokens') or 0),
|
'total_tokens': int(usage.get('total_tokens') or 0),
|
||||||
'amount': round(amount, 8),
|
'amount': _round_amount(amount),
|
||||||
'bill_status': row.get('bill_status'),
|
'bill_status': row.get('bill_status'),
|
||||||
'orderid': orderid,
|
'orderid': orderid,
|
||||||
'usage_time': row.get('created_at'),
|
'usage_time': row.get('created_at'),
|
||||||
@ -303,7 +327,7 @@ def _aggregate_admin_summary(items, user_map, org_map):
|
|||||||
bucket['prompt_tokens'] += item.get('prompt_tokens') or 0
|
bucket['prompt_tokens'] += item.get('prompt_tokens') or 0
|
||||||
bucket['completion_tokens'] += item.get('completion_tokens') or 0
|
bucket['completion_tokens'] += item.get('completion_tokens') or 0
|
||||||
bucket['total_tokens'] += item.get('total_tokens') or 0
|
bucket['total_tokens'] += item.get('total_tokens') or 0
|
||||||
bucket['amount'] = round(bucket['amount'] + float(item.get('amount') or 0), 8)
|
bucket['amount'] = _round_amount(bucket['amount'] + float(item.get('amount') or 0))
|
||||||
bucket['request_count'] += 1
|
bucket['request_count'] += 1
|
||||||
usage_time = item.get('usage_time')
|
usage_time = item.get('usage_time')
|
||||||
if usage_time:
|
if usage_time:
|
||||||
@ -350,7 +374,7 @@ def _aggregate_items(items, group_by=None):
|
|||||||
bucket['prompt_tokens'] += item.get('prompt_tokens') or 0
|
bucket['prompt_tokens'] += item.get('prompt_tokens') or 0
|
||||||
bucket['completion_tokens'] += item.get('completion_tokens') or 0
|
bucket['completion_tokens'] += item.get('completion_tokens') or 0
|
||||||
bucket['total_tokens'] += item.get('total_tokens') or 0
|
bucket['total_tokens'] += item.get('total_tokens') or 0
|
||||||
bucket['amount'] = round(bucket['amount'] + float(item.get('amount') or 0), 8)
|
bucket['amount'] = _round_amount(bucket['amount'] + float(item.get('amount') or 0))
|
||||||
bucket['request_count'] += 1
|
bucket['request_count'] += 1
|
||||||
|
|
||||||
return sorted(buckets.values(), key=lambda x: x['period'], reverse=True)
|
return sorted(buckets.values(), key=lambda x: x['period'], reverse=True)
|
||||||
@ -362,7 +386,7 @@ def _summarize(items):
|
|||||||
'prompt_tokens': sum(i.get('prompt_tokens') or 0 for i in items),
|
'prompt_tokens': sum(i.get('prompt_tokens') or 0 for i in items),
|
||||||
'completion_tokens': sum(i.get('completion_tokens') or 0 for i in items),
|
'completion_tokens': sum(i.get('completion_tokens') or 0 for i in items),
|
||||||
'total_tokens': sum(i.get('total_tokens') or 0 for i in items),
|
'total_tokens': sum(i.get('total_tokens') or 0 for i in items),
|
||||||
'amount': round(sum(float(i.get('amount') or 0) for i in items), 8),
|
'amount': _round_amount(sum(float(i.get('amount') or 0) for i in items)),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -429,9 +453,9 @@ async def model_usage_user_report(ns={}):
|
|||||||
'userid': userid,
|
'userid': userid,
|
||||||
'start_time': _format_datetime(start_dt),
|
'start_time': _format_datetime(start_dt),
|
||||||
'end_time': _format_datetime(end_dt),
|
'end_time': _format_datetime(end_dt),
|
||||||
'summary': _summarize(all_items),
|
'summary': _format_amount_summary(_summarize(all_items)),
|
||||||
'group_by': group_by,
|
'group_by': group_by,
|
||||||
'groups': grouped,
|
'groups': _format_amount_items(grouped),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -449,11 +473,11 @@ async def model_usage_user_report(ns={}):
|
|||||||
'userid': userid,
|
'userid': userid,
|
||||||
'start_time': _format_datetime(start_dt),
|
'start_time': _format_datetime(start_dt),
|
||||||
'end_time': _format_datetime(end_dt),
|
'end_time': _format_datetime(end_dt),
|
||||||
'summary': _summarize(all_items),
|
'summary': _format_amount_summary(_summarize(all_items)),
|
||||||
'total_count': total_count,
|
'total_count': total_count,
|
||||||
'current_page': current_page,
|
'current_page': current_page,
|
||||||
'page_size': page_size,
|
'page_size': page_size,
|
||||||
'items': items,
|
'items': _format_amount_items(items),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
@ -519,7 +543,7 @@ async def model_usage_admin_report(ns={}):
|
|||||||
'orgid': orgid,
|
'orgid': orgid,
|
||||||
'start_time': _format_datetime(start_dt),
|
'start_time': _format_datetime(start_dt),
|
||||||
'end_time': _format_datetime(end_dt),
|
'end_time': _format_datetime(end_dt),
|
||||||
'summary': _summarize([]),
|
'summary': _format_amount_summary(_summarize([])),
|
||||||
'total_count': 0,
|
'total_count': 0,
|
||||||
'current_page': current_page,
|
'current_page': current_page,
|
||||||
'page_size': page_size,
|
'page_size': page_size,
|
||||||
@ -530,7 +554,7 @@ async def model_usage_admin_report(ns={}):
|
|||||||
'orgid': orgid,
|
'orgid': orgid,
|
||||||
'start_time': _format_datetime(start_dt),
|
'start_time': _format_datetime(start_dt),
|
||||||
'end_time': _format_datetime(end_dt),
|
'end_time': _format_datetime(end_dt),
|
||||||
'summary': _summarize([]),
|
'summary': _format_amount_summary(_summarize([])),
|
||||||
'group_by': group_by,
|
'group_by': group_by,
|
||||||
'groups': [],
|
'groups': [],
|
||||||
}
|
}
|
||||||
@ -564,9 +588,9 @@ async def model_usage_admin_report(ns={}):
|
|||||||
'orgid': orgid,
|
'orgid': orgid,
|
||||||
'start_time': _format_datetime(start_dt),
|
'start_time': _format_datetime(start_dt),
|
||||||
'end_time': _format_datetime(end_dt),
|
'end_time': _format_datetime(end_dt),
|
||||||
'summary': _summarize(all_items),
|
'summary': _format_amount_summary(_summarize(all_items)),
|
||||||
'group_by': group_by,
|
'group_by': group_by,
|
||||||
'groups': grouped,
|
'groups': _format_amount_items(grouped),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -581,11 +605,11 @@ async def model_usage_admin_report(ns={}):
|
|||||||
'orgid': orgid,
|
'orgid': orgid,
|
||||||
'start_time': _format_datetime(start_dt),
|
'start_time': _format_datetime(start_dt),
|
||||||
'end_time': _format_datetime(end_dt),
|
'end_time': _format_datetime(end_dt),
|
||||||
'summary': _summarize(all_items),
|
'summary': _format_amount_summary(_summarize(all_items)),
|
||||||
'total_count': total_count,
|
'total_count': total_count,
|
||||||
'current_page': current_page,
|
'current_page': current_page,
|
||||||
'page_size': page_size,
|
'page_size': page_size,
|
||||||
'items': page_items,
|
'items': _format_amount_items(page_items),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user