import server.backend.services.excel as excel from server.backend.schemas.pydantic import settings from pathlib import Path DIR = Path(settings.DIR) handlers = { #метки какие файлы есть и должны быть занесены с вызовами функций из файла "period_closure_income": excel.YandexHandler, "0": excel.WBHandler, "отчет о реализации товара": excel.OZONHandler, "realizationreportcis": excel.OZONPurchasesHandler, "уведомление о выкупе": excel.WBPurchasesHandler, "Товары, переданные на комиссию озон": excel.OZONComHandler, "Товары, переданные на комиссию вб": excel.WBComHandler, "Товары, переданные на комиссию яндекс": excel.YandexComHandler, "Яндекс":excel.YandexDigital, "Озон":excel.OzonDigital, "ВБ":excel.WBDigital } #Проход по всем файлам в директории def validating(): if not DIR.exists(): raise (f"Директория {DIR} не существует") #Проверка существует ли директория for file in DIR.rglob("*.xlsx"): if file.name.startswith("~$"): #Проверка не редактируемый ли файл continue name = file.stem.lower() print(f"\n🔹 Файл: {file.name}") label = None match file: case _ if "period_closure_income" in name: label = "period_closure_income" case _ if name == "0" or "weekly_report" in name: label = "0" case _ if "отчет о реализации товара" in name: label = "отчет о реализации товара" case _ if "вб" in name: label = "Товары, переданные на комиссию вб" case _ if "озон" in name: label = "Товары, переданные на комиссию озон" case _ if "яндекс" in name: label = "Товары, переданные на комиссию яндекс" case _ if "realizationreportcis" in name: label = "realizationreportcis" case _ if "уведомление о выкупе" in name: label = "уведомление о выкупе" case _ if "yandex" in name: label = "Яндекс" case _ if "ozon" in name: label = "Озон" case _ if "wb" in name: label = "ВБ" case _: #Для неизвестных файлов print("Неизвестный файл") if label: handler_class = handlers.get(label) if handler_class: # создаём объект для текущего файла handler = handler_class(file) # передаём путь к файлу handler.process() # dfs читается внутри объекта else: print(f"⚠️ Нет обработчика для метки '{label}'")