Files
Excel-project/server/backend/handlers/yandex_handler.py
2025-11-01 19:48:15 +03:00

25 lines
2.0 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from pydantic import ValidationError
from server.backend.pydantic import ExcelInfo
import re
def process_sheet(df, multiply_price=1, sheet_name=''):
# INLINE regex к колонке 'arti'
pattern = r'[A-ZА-Я]{0,1}\d{4}[A-ZА-Я]{1,2}\d{1}'
df = df[['Ваш SKU', 'Количество, шт.', 'Сумма транзакции, ₽']].copy().dropna() #выбираем нужные колонки, делаем копию, чтобы можно было удалить None inline модом
df['Сумма транзакции, ₽'] *= multiply_price #умножаем на -1 для возвратов
df.rename(columns={'Ваш SKU': 'arti', 'Количество, шт.': 'counts', 'Сумма транзакции, ₽': 'price'}, inplace=True) #переименовываем для pydantic
df['arti'] = df['arti'].astype(str).str.extract(f'({pattern})', flags=re.IGNORECASE) #
validated_rows, errors = [], []
for i, row in df.iterrows(): #проходит построчно по df, где i - индекс строки, row - данные строки
try:
validated_rows.append(ExcelInfo(**row.to_dict())) #добавляем в список проверенные данные полученные от pydantic, которые туда передаются в виде dict
except ValidationError as e:
errors.append((i, e.errors())) #выводит ошибку и пишет номер строки
if errors:
raise Exception(f"There are some errors with validation in {sheet_name}, check it ", errors)
return validated_rows
def evaluating(dfs):
validated_rows_1 = process_sheet(dfs["Получено от потребителей"], sheet_name="Получено от потребителей")
validated_rows_2 = process_sheet(dfs["Возвращено потребителям"], multiply_price=-1, sheet_name="Возвращено потребителям")
return validated_rows_1, validated_rows_2