feat(supplier-orders): добавить параметры поставки в таблицу заявок

- Добавлены колонки Объём и Грузовые места между Цена товаров и Статус
- Реализованы инпуты для ввода volume и packagesCount в статусе PENDING для роли WHOLESALE
- Добавлена мутация UPDATE_SUPPLY_PARAMETERS с проверками безопасности
- Скрыта строка Поставщик для роли WHOLESALE (поставщик знает свои данные)
- Исправлено выравнивание таблицы при скрытии уровня поставщика
- Реорганизованы документы: legacy-rules/, docs/, docs-and-reports/

ВНИМАНИЕ: Компонент multilevel-supplies-table.tsx (1697 строк) нарушает правило модульной архитектуры (>800 строк требует рефакторинга)

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Veronika Smirnova
2025-08-23 18:47:23 +03:00
parent 35cbbac504
commit 12fd8ddf61
27 changed files with 1250 additions and 208 deletions

View File

@ -0,0 +1,290 @@
# ПРАВИЛА ЛОГИСТИКИ, СТАТИСТИКИ И СКЛАДСКИХ СИСТЕМ
## 📊 АНАЛИТИЧЕСКИЕ ВЫВОДЫ ИЗ КОДА
### 🚛 1. ЛОГИСТИЧЕСКИЕ МОДУЛИ
#### 1.1 Логистическая Система Перевозок (LogisticsDashboard)
**Файл:** `src/components/logistics/logistics-dashboard.tsx`
**ОБНАРУЖЕННЫЕ ПРАВИЛА:**
- **Статусы маршрутов:** `planned`, `in_transit`, `delivered`, `cancelled`
- **Структура маршрута:** точка отправления → точка назначения
- **Обязательные поля:** номер маршрута, адреса, груз, цена, расстояние, время
- **Цветовая кодировка статусов:**
- Запланировано: синий (`text-blue-300 border-blue-400/30`)
- В пути: желтый (`text-yellow-300 border-yellow-400/30`)
- Доставлено: зеленый (`text-green-300 border-green-400/30`)
- Отменено: красный (`text-red-300 border-red-400/30`)
**КЛЮЧЕВЫЕ ТОЧКИ ДОСТАВКИ:**
- Садовод (14-й км МКАД)
- SFERAV Logistics (Складская, 15)
- Коледино WB (Подольск)
- Тверь Ozon (Складская, 88)
#### 1.2 Система Логистических Заказов (LogisticsOrdersDashboard)
**Файл:** `src/components/logistics-orders/logistics-orders-dashboard.tsx`
**WORKFLOW ЛОГИСТИКИ:**
```
SUPPLIER_APPROVED → LOGISTICS_CONFIRMED → SHIPPED → DELIVERED
↓ ↓ ↓ ↓
Требует Подтверждено В пути Доставлено
подтверждения логистом
```
**ДЕЙСТВИЯ ЛОГИСТА:**
- Подтверждение заказа (`LOGISTICS_CONFIRM_ORDER`)
- Отклонение заказа с причиной (`LOGISTICS_REJECT_ORDER`)
- Статистика по статусам
**ПРАВА ЛОГИСТА:**
- Подтверждать заказы поставщиков
- Отклонять заказы с указанием причины
- Просматривать детали маршрута и товаров
### 📈 2. СИСТЕМА СТАТИСТИКИ И АНАЛИТИКИ
#### 2.1 Статистика Селлера (SellerStatisticsDashboard)
**Файл:** `src/components/seller-statistics/seller-statistics-dashboard.tsx`
**АРХИТЕКТУРА КЭШИРОВАНИЯ:**
- **Локальный кэш:** Map для salesCache и advertisingCache
- **Database кэш:** через GraphQL мутации `SAVE_SELLER_STATS_CACHE`
- **Время жизни кэша:** 24 часа
- **Ключи кэша:** период + даты для custom диапазонов
**ВКЛАДКИ СТАТИСТИКИ:**
1. **Продажи** (SalesTab) - данные о продажах товаров
2. **Реклама** (AdvertisingTab) - рекламная статистика
3. **Иное** - зарезервировано для будущих функций
**ПЕРИОДЫ АНАЛИЗА:**
- Неделя (`week`)
- Месяц
- Квартал
- Пользовательский диапазон (`custom`)
#### 2.2 Статистика Фулфилмента (FulfillmentStatisticsDashboard)
**Файл:** `src/components/fulfillment-statistics/fulfillment-statistics-dashboard.tsx`
**БЛОКИ СТАТИСТИКИ:**
1. **Накопленная статистика:**
- Обработано товаров
- Выявлено брака
- Поставок получено
- Общий доход
2. **Отгрузка на площадки:**
- Wildberries (фиолетовый)
- Ozon (синий)
- Другие маркетплейсы (зеленый)
3. **Аналитика производительности:**
- Среднее время обработки
- Уровень брака
- Уровень возвратов
- Рейтинг качества
4. **AI-аналитика и прогнозы:**
- Прогноз роста (+23% в следующем квартале)
- Оптимизация процессов (-18% времени при автоматизации)
- Сезонные тренды (+45% в ноябре-декабре)
**УПРАВЛЕНИЕ БЛОКАМИ:**
- Все блоки сворачиваемые/разворачиваемые
- Состояние сохраняется в `expandedSections`
#### 2.3 Экономическая Система (Economics Modules)
**Файлы:** `src/components/economics/*.tsx`
**СПЕЦИАЛИЗАЦИЯ ПО ТИПАМ ОРГАНИЗАЦИЙ:**
- `fulfillment-economics-page.tsx` - экономика фулфилмента
- `logist-economics-page.tsx` - экономика логистики
- `seller-economics-page.tsx` - экономика селлера
- `wholesale-economics-page.tsx` - экономика оптовых поставщиков
- `economics-page-wrapper.tsx` - роутер по типу организации
### 🏬 3. СКЛАДСКИЕ СИСТЕМЫ
#### 3.1 Wildberries Warehouse (WBWarehouseDashboard)
**Файл:** `src/components/wb-warehouse/wb-warehouse-dashboard.tsx`
**ИНТЕГРАЦИЯ С WB API:**
- **Аутентификация:** через API ключи в `organization.apiKeys`
- **Валидация ключей:** проверка `marketplace === 'WILDBERRIES'` и `isActive`
- **Токен доступа:** из `validationData.token|apiKey|key`
**АЛГОРИТМ ЗАГРУЗКИ ДАННЫХ:**
1. Получение карточек товаров (`WildberriesService.getAllCards`)
2. Извлечение nmIds из карточек
3. Получение аналитики для каждого nmId (`getStocksReportByOffices`)
4. Комбинирование данных через `combineCardsWithIndividualAnalytics`
5. Кэширование результата через `SAVE_WB_WAREHOUSE_CACHE`
**СТРУКТУРА ДАННЫХ СКЛАДА:**
```typescript
interface WBStock {
nmId: number
vendorCode: string
title: string
brand: string
price: number
stocks: Array<{
warehouseId: number
warehouseName: string
quantity: number
quantityFull: number
inWayToClient: number
inWayFromClient: number
}>
totalQuantity: number
totalReserved: number
// ... media, characteristics, etc
}
```
**СТАТИСТИКА СКЛАДА:**
- Всего товаров
- Общий остаток
- Зарезервировано
- Возвраты от клиентов
- Активные склады
#### 3.2 Общий Склад (WarehouseDashboard)
**Файл:** `src/components/warehouse/warehouse-dashboard.tsx`
**ТОВАРНЫЕ ПОЗИЦИИ:**
- **Типы:** `PRODUCT` (товар) / `CONSUMABLE` (расходник)
- **Поля:** название, артикул, описание, цена, количество
- **Опциональные:** setQuantity, ordered, inTransit, stock, sold
**ИНТЕГРАЦИЯ С РЫНКАМИ:**
- **Поддерживаемые рынки:** `sadovod`, `tyak-moscow`
- **Цветовая кодировка:**
- Садовод: зеленый (`bg-green-500/20 text-green-300`)
- ТЯК Москва: синий (`bg-blue-500/20 text-blue-300`)
**РЕЖИМЫ ОТОБРАЖЕНИЯ:**
- **Карточки** (`cards`) - сетка карточек товаров
- **Таблица** (`table`) - табличное представление
**СТАТУСЫ ОСТАТКОВ:**
- 0 единиц: красный (`text-red-400`)
- < 10 единиц: желтый (`text-yellow-400`)
- 10 единиц: зеленый (`text-green-400`)
#### 3.3 Фулфилмент Склад (FulfillmentWarehouse)
**Файлы:** `src/components/fulfillment-warehouse/*.tsx`
**МОДУЛЬНАЯ АРХИТЕКТУРА:**
- **Основной:** `fulfillment-warehouse-dashboard.tsx`
- **Компоненты:** StatCard, TableHeader, блоки (17 файлов)
- **Специализированные:** поставки, статистика, претензии WB
**ФУНКЦИОНАЛЬНОСТЬ:**
- Управление поставками
- Статистика склада
- Обработка возвратов WB
- Детали доставки
## 🎯 ВЫЯВЛЕННЫЕ СТАНДАРТЫ И ПАТТЕРНЫ
### 1. АРХИТЕКТУРНЫЕ ПАТТЕРНЫ
#### Glass Morphism Design
```css
glass-card: "bg-white/10 backdrop-blur border-white/20"
glass-secondary: "bg-white/5 backdrop-blur border-white/10"
glass-input: прозрачные инпуты с размытием
```
#### Цветовая Система Статусов
- **Синий:** планирование, информация, подтверждение
- **Желтый:** ожидание, предупреждения, в процессе
- **Зеленый:** успех, доставлено, высокие показатели
- **Красный:** ошибки, отмены, критические состояния
- **Фиолетовый:** премиум функции, аналитика, WB
#### Система Кэширования
```javascript
// Паттерн многоуровневого кэша:
1. Local State (Map/useState)
2. GraphQL Cache (Apollo)
3. Database Cache (через мутации)
4. External API (последний ресурс)
```
### 2. БИЗНЕС-ПРАВИЛА
#### Workflow Логистики
```
Поставщик → Логист → Фулфилмент → Маркетплейс → Клиент
↓ ↓ ↓ ↓ ↓
Заказ → Подтверждение → Отгрузка → Доставка → Возврат
```
#### Роли в Логистике
- **Поставщик:** создает заказ поставки
- **Логист:** подтверждает/отклоняет, организует доставку
- **Фулфилмент:** принимает груз, обрабатывает товары
- **Система:** автоматически отслеживает статусы
#### Экономические Правила
- Каждый тип организации имеет свой экономический модуль
- Данные кэшируются на 24 часа
- Поддерживаются пользовательские временные диапазоны
- AI-аналитика предоставляет прогнозы и рекомендации
### 3. ИНТЕГРАЦИОННЫЕ ПРАВИЛА
#### Маркетплейсы
- **Wildberries:** полная интеграция через API, поддержка складов, аналитика
- **Ozon:** поддержка в workflow, данные статистики
- **Другие:** Яндекс.Маркет, Авито (ограниченная поддержка)
#### Склады и Рынки
- **Садовод:** зеленая палитра, первичные поставщики
- **ТЯК Москва:** синяя палитра, альтернативные поставщики
- **WB Склады:** автоматическое определение из API данных
## 🚀 ТЕХНИЧЕСКИЕ ТРЕБОВАНИЯ
### Обязательные Хуки
- `useSidebar()` - управление боковой панелью
- `useAuth()` - аутентификация и права доступа
- Для WB: проверка `hasWBApiKey` перед загрузкой
### GraphQL Операции
**Логистика:**
- `GET_SUPPLY_ORDERS` - получение заказов
- `LOGISTICS_CONFIRM_ORDER` - подтверждение логистом
- `LOGISTICS_REJECT_ORDER` - отклонение с причиной
**Статистика:**
- `GET_SELLER_STATS_CACHE` - кэш статистики селлера
- `SAVE_SELLER_STATS_CACHE` - сохранение кэша
- `GET_WB_WAREHOUSE_DATA` - данные склада WB
**Склады:**
- `GET_MY_PRODUCTS` - товары пользователя
- `SAVE_WB_WAREHOUSE_CACHE` - кэш WB склада
### Внешние Сервисы
- **WildberriesService:** интеграция с API WB
- **Токены:** хранение в `organization.apiKeys`
- **Rate Limiting:** 1 секунда между запросами для WB API
## 📋 ВЫВОДЫ И РЕКОМЕНДАЦИИ
1. **Логистическая система** полноценно реализована с workflow и статусами
2. **Статистические модули** используют сложное многоуровневое кэширование
3. **Складские системы** имеют разную степень интеграции (WB - полная, остальные - базовая)
4. **Экономические модули** специализированы по типам организаций
5. **Дизайн-система** консистентна во всех модулях
**СЛЕДУЮЩИЕ ШАГИ:**
- Документировать API эндпоинты
- Описать административную систему
- Создать руководства по интеграции