Дата: 2025-12-22
Статус: DRAFT
Цель: Полная инвентаризация всех данных для миграции в L2-DATA
Результат исследования проекта $WORKSPACE/projects/pirotehnika/
| Источник | Тип | Расположение | Владелец | Записей |
|---|---|---|---|---|
| NocoDB PostgreSQL | postgresql | 91.218.142.168:8085 | pirotehnika | ~28,000 |
| Schema | pt7k98pv0fwi1el |
Workspace ID NocoDB | 58 таблиц |
Физический сервер: @dev-pro.server
Статус: Production (active)
Backup: ?
| API | Тип | URL | Назначение | Протокол |
|---|---|---|---|---|
| OZON Seller API | REST | https://api-seller.ozon.ru | Заказы, товары, остатки | HTTPS |
| Почта России | REST | https://otpravka-api.pochta.ru | Отправка посылок | HTTPS |
| 1C | ? | ? | Каталог товаров | ? |
Вопросы:
- [ ] Как подключаемся к 1С? (API, файлы, БД?)
- [ ] Есть ли API у поставщиков или только файлы?
| Источник | Формат | Расположение | Частота | Размер |
|---|---|---|---|---|
| Прайсы поставщиков | XLSX, CSV | $DATASPACE/projects/pirotehnika/ | ? | ? |
| Изображения товаров | JPG, PNG | $DATASPACE/projects/pirotehnika/_shared/images/products/ | Manual | ? |
| Экспорты | CSV, JSON | $DATASPACE/projects/pirotehnika/exports/ | Auto | ? |
Хранилище: @beget-s3.storage
Вопросы:
- [ ] Где физически лежат прайсы? (FTP, email, локально?)
- [ ] Как часто обновляются прайсы?
- [ ] Сколько поставщиков? Какие форматы?
Группа: Управление товарами
| Таблица | Записей | Назначение | Master | Источник |
|---|---|---|---|---|
| pim_products | 1,042 | Товары с ценами и брендами | ✅ | Прайсы |
| pim_catalog | 762 | Характеристики пиротехники | ✅ | Manual |
| pim_cost_rules | 5 | Скидки по брендам | ✅ | Manual |
| pim_sku_mappings | 2,050 | Связь артикулов с SKU | PIM | |
| pim_bundle_items | 0 | Состав наборов | ✅ | Manual |
Итого: 5 таблиц, ~3,900 записей
Структура pim_products:
- article (PK)
- name
- brand_id → Brands
- supplier_id → Suppliers
- category_id → Categories
- base_price (из прайса)
- cost_price (base_price × скидка)
- sku (для OZON)
Структура pim_catalog:
- article (PK)
- caliber (калибр, мм)
- shots_count (выстрелов)
- duration_sec (время работы, сек)
- height_m (высота полёта, м)
- effects (JSON)
- safety_distance_m
- weight_kg
- certificate_number
- country
Группа: Основной каталог
| Таблица | Записей | Назначение | Master | Источник |
|---|---|---|---|---|
| Products | 4,626 | Каталог из 1С (БЕЗ цен!) | ✅ | 1C |
| OZON_Products | 2,051 | Карточки на OZON | OZON API | |
| PIM_Catalog | 762 | Устаревшая | Legacy | |
| Products_Market | 0 | Пустая | Manual |
Итого: 4 таблицы, ~7,400 записей
Связи:
Products (1C) ──article──> pim_products ──sku──> OZON_Products
│ │
└── Каталог БЕЗ цен └── Цены, бренды, себестоимость
Группа: Ценообразование
| Таблица | Записей | Назначение | Источник |
|---|---|---|---|
| pim_cost_rules | 5 | Скидки по брендам | Manual |
| PriceList | 2 | Прайс-листы поставщиков | Файлы |
| PriceListItem | 1,626 | Позиции прайс-листов | Файлы |
| Prices_History | 2,501 | История изменений цен | System |
Итого: 4 таблицы (+4 пустых), ~4,100 записей
Правила ценообразования:
base_price (из прайса) × (1 - скидка%) = cost_price
Скидки по брендам (pim_cost_rules):
- JF-Pyro: 50%
- Maxsem: 50%
- Стрелецкий: 50%
- Салют Люкс: 55%
- УПЗ: 60%
Группа: Заказы с маркетплейсов
| Таблица | Записей | Назначение | Источник |
|---|---|---|---|
| Order | 757 | Заказы NocoDB (старые) | OZON API |
| OrderItem | 783 | Позиции заказов | OZON API |
| OZON_Orders | 343 | Заказы OZON (сырые) | OZON API |
| OZON_OrderItems | 350 | Позиции OZON | OZON API |
Итого: 6 таблиц, ~2,200 записей
Группа: Справочные данные
| Таблица | Записей | Назначение |
|---|---|---|
| Suppliers | 5 | Поставщики |
| Brands | 6 | Бренды |
| Categories | 20 | Категории товаров |
| Channel | 6 | Каналы продаж (O1, O2, O3, WB, YM, Site) |
| Effects | 46 | Эффекты пиротехники |
| Attributes | 26 | Атрибуты товаров |
Итого: 9 таблиц, ~120 записей
Поставщики (5):
1. JF-Pyro (скидка 50%)
2. Maxsem (скидка 50%)
3. УПЗ (скидка 60%)
4. Стрелецкий (скидка 50%)
5. Салют Люкс (скидка 55%)
Каналы продаж (6):
- O1, O2, O3 (OZON аккаунты)
- WB (Wildberries)
- YM (Яндекс.Маркет)
- Site (pirotehnika.spb.ru)
Группа: Расчетные данные
| Таблица | Записей | Назначение |
|---|---|---|
| analytics_order_profitability | 39 | ROI, маржа, прибыль по заказам |
| analytics_product_profitability | 0 | Агрегация по товарам |
| OZON_Analytics_Stocks | 1,221 | Аналитика остатков |
Итого: 4 таблицы, ~1,300 записей
Группа: Маппинги между системами
| Таблица | Записей | Назначение |
|---|---|---|
| SKU_Mappings | 1,702 | Связь артикулов с SKU OZON |
| pim_sku_mappings | 2,050 | Связь PIM артикулов с SKU |
Итого: 4 таблицы, ~3,800 записей
| Таблица | Записей | Источник |
|---|---|---|
| OZON_Transactions | 830 | OZON API |
| OZON_Payouts | 0 | OZON API |
Итого: 3 таблицы, ~800 записей
| Таблица | Записей | Источник |
|---|---|---|
| Warehouse | 15 | Manual |
| OZON_Warehouses | 14 | OZON API |
Итого: 4 таблицы, ~30 записей
| Таблица | Записей | Назначение |
|---|---|---|
| CRM_Clients | 3,727 | Клиенты |
| CRM_Sales | 251 | Продажи |
Итого: 3 таблицы, ~4,000 записей
| Таблица | Записей | Назначение |
|---|---|---|
| _metadata_tables | 58 | Реестр таблиц |
| Users | 1 | Пользователи |
| LegalEntity | 3 | Юридические лица |
Итого: 5 таблиц, ~60 записей
ИСТОЧНИКИ ДАННЫХ
│
├─→ 1C
│ └─→ Products (4,626 товаров)
│ └─→ Каталог БЕЗ цен и брендов
│
├─→ ПРАЙСЫ (Excel от поставщиков)
│ └─→ PriceList → PriceListItem
│ └─→ pim_products (цены, бренды)
│
├─→ OZON API
│ ├─→ OZON_Products (2,051 карточек)
│ ├─→ OZON_Orders (343 заказа)
│ ├─→ OZON_Transactions (830 транзакций)
│ └─→ OZON_Analytics_Stocks (1,221 позиций)
│
└─→ MANUAL (Ручной ввод)
├─→ pim_catalog (характеристики пиротехники)
├─→ Categories, Brands, Suppliers
└─→ pim_cost_rules (правила скидок)
PIPELINE
│
1. ИМПОРТ ПРАЙСОВ
Excel → PriceListItem → pim_products
- Парсинг Excel файлов
- Нормализация данных
- Применение скидок по брендам
- Обновление себестоимости
│
2. СИНХРОНИЗАЦИЯ 1C
1C → Products
- Импорт каталога
- Обновление артикулов
- Статус синхронизации
│
3. СИНХРОНИЗАЦИЯ OZON
pim_products → OZON_Products
- Создание/обновление карточек
- Обновление цен и остатков
- Получение заказов
│
4. РАСЧЕТ АНАЛИТИКИ
Orders + Prices → analytics_order_profitability
- ROI по заказам
- Маржинальность
- Прибыльность товаров
ПОТРЕБИТЕЛИ ДАННЫХ
│
├─→ OZON (маркетплейс)
│ └── pim_products → OZON API
│ - Карточки товаров
│ - Цены
│ - Остатки
│
├─→ pirotehnika.spb.ru (сайт)
│ └── Products → OpenCart MySQL
│ - Каталог
│ - Цены
│
├─→ MP1 API (FastAPI)
│ └── NocoDB → REST API
│ - Дашборды
│ - Аналитика
│
└─→ Экспорты (CSV/JSON)
└── NocoDB → Files
- Выгрузки для маркетплейсов
- Отчеты
| Коннектор | Путь | Статус | Назначение |
|---|---|---|---|
| pochta | projects/pirotehnika/data/connectors/pochta/ |
✅ Active | Почта России API |
Структура:
pochta/
├── __init__.py
├── client.py
├── config.py
├── models.py
├── constants.py
├── mcp_server.py
└── README.md
| Коннектор | Приоритет | Назначение | Формат |
|---|---|---|---|
| nocodb | HIGH | Подключение к NocoDB PostgreSQL | Python client |
| ozon | HIGH | OZON Seller API | REST API |
| 1c | MEDIUM | Синхронизация с 1С | ? (уточнить) |
| suppliers | MEDIUM | Парсинг прайсов поставщиков | Excel/CSV |
| beget-s3 | LOW | S3 хранилище файлов | S3 API |
| Скрипт | Путь | Назначение |
|---|---|---|
sync_1c.py |
data/nocodb/scripts/ |
Синхронизация с 1С |
filemanager.py |
data/scripts/ |
Управление файлами |
process.py |
data/scripts/ |
Обработка данных |
Вопросы:
- [ ] Что делают эти скрипты точно?
- [ ] Как часто запускаются?
- [ ] Есть ли расписание (cron)?
| Обработчик | Назначение | Вход | Выход |
|---|---|---|---|
| price_parser | Парсинг прайсов Excel | XLSX/CSV | PriceListItem |
| product_normalizer | Нормализация данных товаров | Raw data | pim_products |
| ozon_sync | Синхронизация с OZON | pim_products | OZON_Products |
| analytics_calculator | Расчет аналитики | Orders + Prices | Analytics |
| Сервис | Тип | Использует данные |
|---|---|---|
| mp1 | FastAPI | NocoDB (все таблицы) |
| ozon | CLI scripts | pim_products, OZON_* |
| mini-erp | Streamlit | Orders, Analytics |
| erp | Odoo 18 | Planned |
| Система | Тип | Данные |
|---|---|---|
| pirotehnika.spb.ru | OpenCart | Products (синхронизация?) |
| pirofey.ru | Drupal | Products (синхронизация?) |
| OZON | Marketplace | OZON_Products, OZON_Orders |
Подключение к 1С:
- [ ] Как происходит синхронизация? (API, файлы, прямой доступ к БД?)
- [ ] Как часто?
- [ ] В каком направлении? (1C → NocoDB или bidirectional?)
Прайсы поставщиков:
- [ ] Где физически хранятся файлы?
- [ ] Как часто обновляются?
- [ ] Сколько поставщиков всего?
- [ ] Какие форматы (XLSX, CSV, другие)?
Физическое хранилище PostgreSQL:
- [ ] Где физически БД? (какая схема на сервере?)
- [ ] pt7k98pv0fwi1el - это workspace ID NocoDB, а какая настоящая схема PostgreSQL?
- [ ] Backup есть? Как часто?
Сайты (pirotehnika.spb.ru, pirofey.ru):
- [ ] Как синхронизируются товары с NocoDB?
- [ ] Есть ли коннектор?
- [ ] Какая база данных используется? (MySQL на beget?)
Дублирование таблиц:
- Products vs pim_products vs PIM_Catalog vs OZON_Products
- Order vs OZON_Orders vs orders
- Какая таблица master?
Пустые таблицы:
- orders (0), order_items (0), OZON_Shipments (0), и др.
- Зачем созданы? Планируется использование?
Устаревшие таблицы:
- PIM_Catalog (762) - устаревшая
- Bundles - старая
- Можно удалить?
Уточнить:
- [ ] Подключение к 1С
- [ ] Местоположение прайсов
- [ ] Физическая схема PostgreSQL
- [ ] Синхронизация с сайтами
Создать:
- [ ] Коннекторы (nocodb, ozon, 1c, suppliers)
- [ ] Схемы данных для L2-DATA
- [ ] План миграции
Обсудить:
- [ ] Какие таблицы master?
- [ ] Что делать с дубликатами?
- [ ] Что делать с пустыми/устаревшими таблицами?
Статус: DRAFT - требуется обсуждение и уточнение
Следующий шаг: Обсудить критические вопросы с пользователем