fix sql transaction error in statistic API (#1586)

This commit is contained in:
waltcow 2023-11-22 14:28:21 +08:00 committed by GitHub
parent caa330c91f
commit 3c0fbf3a6a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -62,16 +62,15 @@ class DailyConversationStatistic(Resource):
sql_query += ' GROUP BY date order by date' sql_query += ' GROUP BY date order by date'
with db.engine.begin() as conn:
rs = conn.execute(db.text(sql_query), arg_dict)
response_data = [] response_data = []
for i in rs: with db.engine.begin() as conn:
response_data.append({ rs = conn.execute(db.text(sql_query), arg_dict)
'date': str(i.date), for i in rs:
'conversation_count': i.conversation_count response_data.append({
}) 'date': str(i.date),
'conversation_count': i.conversation_count
})
return jsonify({ return jsonify({
'data': response_data 'data': response_data
@ -124,16 +123,15 @@ class DailyTerminalsStatistic(Resource):
sql_query += ' GROUP BY date order by date' sql_query += ' GROUP BY date order by date'
with db.engine.begin() as conn:
rs = conn.execute(db.text(sql_query), arg_dict)
response_data = [] response_data = []
for i in rs: with db.engine.begin() as conn:
response_data.append({ rs = conn.execute(db.text(sql_query), arg_dict)
'date': str(i.date), for i in rs:
'terminal_count': i.terminal_count response_data.append({
}) 'date': str(i.date),
'terminal_count': i.terminal_count
})
return jsonify({ return jsonify({
'data': response_data 'data': response_data
@ -187,18 +185,17 @@ class DailyTokenCostStatistic(Resource):
sql_query += ' GROUP BY date order by date' sql_query += ' GROUP BY date order by date'
with db.engine.begin() as conn:
rs = conn.execute(db.text(sql_query), arg_dict)
response_data = [] response_data = []
for i in rs: with db.engine.begin() as conn:
response_data.append({ rs = conn.execute(db.text(sql_query), arg_dict)
'date': str(i.date), for i in rs:
'token_count': i.token_count, response_data.append({
'total_price': i.total_price, 'date': str(i.date),
'currency': 'USD' 'token_count': i.token_count,
}) 'total_price': i.total_price,
'currency': 'USD'
})
return jsonify({ return jsonify({
'data': response_data 'data': response_data
@ -256,16 +253,15 @@ LEFT JOIN conversations c on c.id=subquery.conversation_id
GROUP BY date GROUP BY date
ORDER BY date""" ORDER BY date"""
response_data = []
with db.engine.begin() as conn: with db.engine.begin() as conn:
rs = conn.execute(db.text(sql_query), arg_dict) rs = conn.execute(db.text(sql_query), arg_dict)
for i in rs:
response_data = [] response_data.append({
'date': str(i.date),
for i in rs: 'interactions': float(i.interactions.quantize(Decimal('0.01')))
response_data.append({ })
'date': str(i.date),
'interactions': float(i.interactions.quantize(Decimal('0.01')))
})
return jsonify({ return jsonify({
'data': response_data 'data': response_data
@ -320,20 +316,19 @@ class UserSatisfactionRateStatistic(Resource):
sql_query += ' GROUP BY date order by date' sql_query += ' GROUP BY date order by date'
with db.engine.begin() as conn:
rs = conn.execute(db.text(sql_query), arg_dict)
response_data = [] response_data = []
for i in rs: with db.engine.begin() as conn:
response_data.append({ rs = conn.execute(db.text(sql_query), arg_dict)
'date': str(i.date), for i in rs:
'rate': round((i.feedback_count * 1000 / i.message_count) if i.message_count > 0 else 0, 2), response_data.append({
}) 'date': str(i.date),
'rate': round((i.feedback_count * 1000 / i.message_count) if i.message_count > 0 else 0, 2),
})
return jsonify({ return jsonify({
'data': response_data 'data': response_data
}) })
class AverageResponseTimeStatistic(Resource): class AverageResponseTimeStatistic(Resource):
@ -383,16 +378,15 @@ class AverageResponseTimeStatistic(Resource):
sql_query += ' GROUP BY date order by date' sql_query += ' GROUP BY date order by date'
with db.engine.begin() as conn:
rs = conn.execute(db.text(sql_query), arg_dict)
response_data = [] response_data = []
for i in rs: with db.engine.begin() as conn:
response_data.append({ rs = conn.execute(db.text(sql_query), arg_dict)
'date': str(i.date), for i in rs:
'latency': round(i.latency * 1000, 4) response_data.append({
}) 'date': str(i.date),
'latency': round(i.latency * 1000, 4)
})
return jsonify({ return jsonify({
'data': response_data 'data': response_data
@ -447,16 +441,15 @@ WHERE app_id = :app_id'''
sql_query += ' GROUP BY date order by date' sql_query += ' GROUP BY date order by date'
with db.engine.begin() as conn:
rs = conn.execute(db.text(sql_query), arg_dict)
response_data = [] response_data = []
for i in rs: with db.engine.begin() as conn:
response_data.append({ rs = conn.execute(db.text(sql_query), arg_dict)
'date': str(i.date), for i in rs:
'tps': round(i.tokens_per_second, 4) response_data.append({
}) 'date': str(i.date),
'tps': round(i.tokens_per_second, 4)
})
return jsonify({ return jsonify({
'data': response_data 'data': response_data