127 lines
4.3 KiB
Markdown
127 lines
4.3 KiB
Markdown
# Digitalization Project
|
||
|
||
Pet Проект предназначен для автоматической обработки Excel-отчетов из различных маркетплейсов (OZON, Yandex, WB), нормализации артикулов, расчета аналитических показателей и сохранения результатов с условным форматированием.
|
||
|
||
---
|
||
|
||
## 📁 Структура проекта
|
||
```
|
||
digitalization/
|
||
│
|
||
├─ handlers/
|
||
│ ├─ handler.py # Классы BaseHandler и Handler для работы с Excel
|
||
│ └─ s_daemon.py # Поиск файлов в директории input
|
||
│
|
||
├─ schema/
|
||
│ └─ pydantic.py # Классы Settings, JsonRead, Translit
|
||
│
|
||
├─ input/ # Папка для исходных файлов Excel
|
||
├─ output/ # Папка для сохранения обработанных файлов
|
||
├─ columns.json # JSON-файл с настройками колонок для каждого маркетплейса
|
||
├─ run.py # Основной скрипт запуска обработки
|
||
└─ .env # Файл с настройками проекта (пути и шаблон артикула)
|
||
```
|
||
---
|
||
|
||
## ⚙️ Установка
|
||
|
||
1. Клонировать репозиторий:
|
||
|
||
```bash
|
||
git clone <репозиторий>
|
||
cd digitalization
|
||
```
|
||
2. Создать виртуальное окружение:
|
||
```
|
||
python -m venv .venv
|
||
```
|
||
3. Установить зависимости:
|
||
```
|
||
pip install -r requirements
|
||
```
|
||
|
||
⸻
|
||
|
||
📝 Настройка
|
||
|
||
Создать .env файл в корне проекта:
|
||
```
|
||
INPUTDIR=./input
|
||
OUTPUTDIR=./output
|
||
PATTERN=[A-Z0-9]+
|
||
```
|
||
Создать columns.json с настройками колонок для каждого маркетплейса:
|
||
```
|
||
{
|
||
"ozon": {
|
||
"Артикул": 0,
|
||
"Наименование": 1,
|
||
"Выручка": 2,
|
||
"Прибыль": 3,
|
||
"Все_удержания_магазина": 4
|
||
},
|
||
"yandex": {
|
||
"Артикул": 0,
|
||
"Наименование": 1,
|
||
"Выручка": 2,
|
||
"Прибыль": 3
|
||
}
|
||
}
|
||
```
|
||
|
||
⸻
|
||
|
||
🚀 Запуск
|
||
```
|
||
python run.py или make run
|
||
```
|
||
После обработки файлы будут сохранены в папку output/ с условным форматированием:
|
||
• Колонки "Маржинальность" и "Прибыль" окрашиваются:
|
||
• Красный для отрицательных значений
|
||
• Зеленый для положительных значений
|
||
|
||
⸻
|
||
|
||
🛠️ Основные классы
|
||
```
|
||
BaseHandler
|
||
• Конструктор: __init__(file_path:str) — сохраняет путь к файлу
|
||
• Методы:
|
||
• struct() — возвращает структуру Excel (ExcelFile)
|
||
• read() — читает весь Excel в DataFrame
|
||
|
||
Handler(BaseHandler)
|
||
• get_articles_with_sales(columns: dict, sheet_name: str)
|
||
• Нормализация артикулов
|
||
• Группировка по артикулу
|
||
• Расчет дополнительных колонок:
|
||
• “Все удержания в %”
|
||
• “Всего заказано” и “Процент выкупа”
|
||
• “Маржинальность”
|
||
• Сортировка по колонке "Прибыль"
|
||
• Условное форматирование Excel (цвета)
|
||
|
||
Settings и JsonRead
|
||
• Settings — хранит конфигурацию проекта из .env
|
||
• JsonRead — загружает соответствие колонок для каждого маркетплейса из columns.json
|
||
• Translit — словарь для транслитерации кириллицы в латиницу
|
||
```
|
||
⸻
|
||
|
||
⚠️ Зависимости
|
||
• Python ≥ 3.10
|
||
• pandas
|
||
• openpyxl
|
||
• pydantic, pydantic-settings
|
||
• jinja2
|
||
|
||
⸻
|
||
|
||
🔧 Примечания
|
||
• Файлы Excel должны иметь корректное название (ozon, yandex, wb)
|
||
• Папки input и output создаются автоматически
|
||
• Поддерживаются только Excel-файлы (.xlsx)
|
||
“””
|
||
|
||
---
|