diff --git a/call_sale_api.py b/call_sale_api.py index c19c74d..18bd560 100644 --- a/call_sale_api.py +++ b/call_sale_api.py @@ -4,16 +4,17 @@ import json # Конфигурация API BASE_URL = "http://127.0.0.1:8001" -API_KEY = "672a1437-70e8-461f-9bff-20f5ce4a023d" -REF = "9bd1a6bd-98e1-48f4-a120-3b3d016011c0" +API_KEY = "de058226-37d3-4d0e-a483-3c2a7fac3573" +REF = "0d9aaa96-80e6-424c-84c9-ff70a6eb915e" # Данные для запроса на создание продажи # Замените эти значения на актуальные для вашей продажи sale_data = { - "cost": 100.50, # Стоимость продажи + "cost": 100, # Стоимость продажи "ref": REF, # Ваш реферальный код "sale_id": str(uuid.uuid4()), # Уникальный идентификатор продажи для вашей компании - "category": 1 # id категории (например, 1 - basic) + "category": "vip", # название категории (например, 'basic', 'premium', 'vip') + "group_sale_id": str(uuid.uuid4()) # уникальный идентификатор группы продаж } # Эндпоинты diff --git a/fill_db.py b/fill_db.py index 755019f..6c442b8 100644 --- a/fill_db.py +++ b/fill_db.py @@ -198,7 +198,9 @@ def fill_db(): all_categories = session.query(SaleCategory).filter_by(company_id=company.id).all() for ref in refs: sale_count = random.randint(20, int(20 * 1.25)) # от 20 до 25 - for _ in range(sale_count): + group_size = 5 + group_sale_ids = [str(uuid4()) for _ in range((sale_count // group_size) + 1)] + for idx in range(sale_count): cost = round(random.uniform(100, 1000), 2) sale_category = random.choice(all_categories) crediting = round(cost * (sale_category.perc / 100.0), 2) @@ -208,11 +210,13 @@ def fill_db(): time_diff = end_dttm - start_dttm random_seconds = random.uniform(0, time_diff.total_seconds()) sale_dttm = start_dttm + timedelta(seconds=random_seconds) + group_sale_id = group_sale_ids[idx // group_size] sale = Sale( cost=cost, crediting=crediting, ref=ref.id, sale_id=str(uuid4()), + group_sale_id=group_sale_id, company_id=company.id, category=sale_category.id, sale_dttm=sale_dttm, diff --git a/integration_api.py b/integration_api.py index 17d49db..1d2b41f 100644 --- a/integration_api.py +++ b/integration_api.py @@ -257,6 +257,7 @@ async def create_sale( crediting=crediting_amount, ref=referral.id, sale_id=req.sale_id, + group_sale_id=req.group_sale_id, company_id=company.id, category=sale_category.id, sale_dttm=datetime.utcnow() diff --git a/integration_models.py b/integration_models.py index bb39284..77e6194 100644 --- a/integration_models.py +++ b/integration_models.py @@ -20,7 +20,8 @@ class SaleCreateRequest(BaseModel): promocode: Optional[str] = None sale_id: str cost: float - category: int # id категории продажи + category: str # название категории продажи + group_sale_id: str # новое поле для группировки продаж class SaleCreateResponse(BaseModel): msg: str diff --git a/sql_create.sql b/sql_create.sql index 24e80b0..08ac627 100644 --- a/sql_create.sql +++ b/sql_create.sql @@ -164,6 +164,7 @@ CREATE TABLE sale ( crediting FLOAT NOT NULL, ref INTEGER NOT NULL, sale_id VARCHAR NOT NULL, + group_sale_id VARCHAR NOT NULL, company_id INTEGER NOT NULL, category INTEGER NOT NULL, sale_dttm DATETIME NOT NULL, diff --git a/sql_models.py b/sql_models.py index d528bc5..2845f17 100644 --- a/sql_models.py +++ b/sql_models.py @@ -69,6 +69,7 @@ class Sale(SQLModel, table=True): crediting: float # сколько начислено за продажу ref: int = Field(foreign_key="ref.id") sale_id: str + group_sale_id: str # новое поле для группировки продаж company_id: int = Field(foreign_key="company.id") category: int = Field(foreign_key="salecategory.id") # новая ссылка на категорию sale_dttm: datetime = Field(default_factory=datetime.utcnow)