Добавлены новые модели для интеграционных токенов в bff_models.py и sql_models.py. Реализованы функции для создания, обновления и удаления токенов в main.py, а также обновлено заполнение базы данных в fill_db.py для генерации токенов. Обновлены запросы к базе данных для учета новых полей и логики работы с токенами.
This commit is contained in:
44
fill_db.py
44
fill_db.py
@@ -1,7 +1,7 @@
|
||||
import random
|
||||
from uuid import uuid4
|
||||
from sqlmodel import Session
|
||||
from sql_models import TgAgent, Ref, Sale, Account, Company, AgentTransaction, PartnerTransaction, CompanyBalance, AgentBalance
|
||||
from sql_models import TgAgent, Ref, Sale, Account, Company, AgentTransaction, PartnerTransaction, CompanyBalance, AgentBalance, IntegrationToken
|
||||
from sqlalchemy import text
|
||||
from datetime import datetime, timedelta
|
||||
from hashlib import sha256
|
||||
@@ -90,6 +90,23 @@ def fill_db():
|
||||
session.add(company)
|
||||
session.commit()
|
||||
session.refresh(company)
|
||||
|
||||
# 0.1 IntegrationTokens
|
||||
for _ in range(3): # Создаем 3 токена для каждой компании
|
||||
new_token_value = str(uuid4()) # Генерируем уникальный токен
|
||||
token_hash = sha256(new_token_value.encode()).hexdigest() # Хешируем токен для хранения
|
||||
masked_token = new_token_value[:5] + "***********************" + new_token_value[-4:] # Генерируем замаскированный токен
|
||||
|
||||
integration_token = IntegrationToken(
|
||||
description=random.choice(DESCRIPTIONS), # Используем существующие описания
|
||||
token_hash=token_hash,
|
||||
masked_token=masked_token,
|
||||
company_id=company.id,
|
||||
use_dttm=random.choice(date_list) if random.random() < 0.7 else None # Пример: 70% токенов будут иметь дату использования
|
||||
)
|
||||
session.add(integration_token)
|
||||
session.commit()
|
||||
|
||||
# 1. Accounts
|
||||
accounts = []
|
||||
for i in range(4):
|
||||
@@ -158,16 +175,23 @@ def fill_db():
|
||||
for _ in range(sale_count):
|
||||
cost = round(random.uniform(100, 1000), 2)
|
||||
crediting = round(cost * random.uniform(0.5, 1.0), 2)
|
||||
dt = random.choice(date_list)
|
||||
|
||||
# Генерируем случайную дату и время в пределах последних 7 дней
|
||||
end_dttm = datetime.utcnow()
|
||||
start_dttm = end_dttm - timedelta(days=7)
|
||||
time_diff = end_dttm - start_dttm
|
||||
random_seconds = random.uniform(0, time_diff.total_seconds())
|
||||
sale_dttm = start_dttm + timedelta(seconds=random_seconds)
|
||||
|
||||
sale = Sale(
|
||||
cost=cost,
|
||||
crediting=crediting,
|
||||
ref=ref.id,
|
||||
sale_id=str(uuid4()),
|
||||
company_id=company.id,
|
||||
sale_date=dt,
|
||||
create_dttm=dt,
|
||||
update_dttm=dt
|
||||
sale_dttm=sale_dttm,
|
||||
create_dttm=sale_dttm, # create_dttm также будет случайным в этом диапазоне
|
||||
update_dttm=sale_dttm # update_dttm также будет случайным в этом диапазоне
|
||||
)
|
||||
session.add(sale)
|
||||
session.commit()
|
||||
@@ -204,13 +228,21 @@ def fill_db():
|
||||
PARTNER_TRANSACTION_TYPES = ['deposit', 'agent_payout', 'service_fee']
|
||||
PARTNER_TRANSACTION_STATUSES = ['process', 'done', 'error', 'new']
|
||||
|
||||
waiting_transactions_to_ensure = 7
|
||||
waiting_transactions_count = 0
|
||||
|
||||
for tg_agent in tg_agents:
|
||||
# Генерируем несколько групп транзакций для каждого агента
|
||||
for _ in range(random.randint(3, 6)): # От 3 до 6 групп на агента
|
||||
transaction_group_id = uuid4()
|
||||
dt = random.choice(date_list)
|
||||
agent_trans_amount = round(random.uniform(500, 3000), 2)
|
||||
agent_trans_status = random.choice(AGENT_TRANSACTION_STATUSES)
|
||||
|
||||
if waiting_transactions_count < waiting_transactions_to_ensure:
|
||||
agent_trans_status = 'waiting'
|
||||
waiting_transactions_count += 1
|
||||
else:
|
||||
agent_trans_status = random.choice(AGENT_TRANSACTION_STATUSES)
|
||||
|
||||
# Создаем AgentTransaction
|
||||
agent_transaction = AgentTransaction(
|
||||
|
||||
Reference in New Issue
Block a user