Исправление бага статистики

This commit is contained in:
Your Name 2024-12-04 12:07:45 +03:00
parent e124f45b35
commit 71bfb67807

19
api.py
View File

@ -5,6 +5,7 @@ from datetime import datetime, timedelta
from statistics import median from statistics import median
from uuid import uuid4 from uuid import uuid4
from random import randint from random import randint
from time import sleep
# Fix 3.3 + 0.15 = 3.4499999999999997 # Fix 3.3 + 0.15 = 3.4499999999999997
from decimal import Decimal as d from decimal import Decimal as d
@ -24,12 +25,20 @@ def token_check(token):
else: else:
return False return False
############## STATS ##################
STAT_RUN = False
def stat_run(cdm_change): def stat_run(cdm_change):
# Общий баланс, среднее значение, медиана # Общий баланс, среднее значение, медиана
# Низшее значение, высшее значение # Низшее значение, высшее значение
# Изменение баланса и time2cdm # Изменение баланса и time2cdm
# Прирост за счёт алмазов, за счёт time2cdm # Прирост за счёт алмазов, за счёт time2cdm
# Защита от конфликтов
global STAT_RUN
while STAT_RUN:
sleep(1)
STAT_RUN = True
# Получаем все балансы # Получаем все балансы
db = read() db = read()
bals = [] bals = []
@ -72,6 +81,9 @@ def stat_run(cdm_change):
stat[date] = stats stat[date] = stats
write(stat, 'stat.json') write(stat, 'stat.json')
STAT_RUN = False
#######################
class User_in_db(BaseModel): class User_in_db(BaseModel):
token: str token: str
@ -333,7 +345,6 @@ class Add_time(BaseModel):
def add_time(it: Add_time): def add_time(it: Add_time):
token, id, time = it.token, it.id, int(it.time) token, id, time = it.token, it.id, int(it.time)
if token_check(token): if token_check(token):
stat_run(0)
course = read('conf.json')['time2cdm'] course = read('conf.json')['time2cdm']
amount = time*course amount = time*course
# Пополнение баланса # Пополнение баланса
@ -353,6 +364,8 @@ def add_time(it: Add_time):
stat = read('stat.json') stat = read('stat.json')
stat[date]['time2cdm'] += amount stat[date]['time2cdm'] += amount
write(stat, 'stat.json') write(stat, 'stat.json')
stat_run(0)
return 'OK' return 'OK'
else: else:
return 'Error' return 'Error'
@ -452,10 +465,12 @@ def get_time(it: Get_time2cdm):
class Get_stat(BaseModel): class Get_stat(BaseModel):
token: str token: str
date: Optional[str] = datetime.today().strftime('%Y-%m-%d') date: Optional[str] = None
@app.post('/api/get_stat/') @app.post('/api/get_stat/')
def get_stat(it: Get_stat): def get_stat(it: Get_stat):
token, date = it.token, it.date token, date = it.token, it.date
if not date:
date = datetime.today().strftime('%Y-%m-%d')
if token_check(token): if token_check(token):
stat_run(0) stat_run(0)
db = read('stat.json') db = read('stat.json')