readme
This commit is contained in:
127
README.md
127
README.md
@@ -0,0 +1,127 @@
|
|||||||
|
# Digitalization Project
|
||||||
|
|
||||||
|
Проект предназначен для автоматической обработки 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)
|
||||||
|
“””
|
||||||
|
|
||||||
|
---
|
||||||
|
|||||||
Reference in New Issue
Block a user