
## Структурные изменения: ### 📁 Организация архивных файлов: - Перенос всех устаревших правил в legacy-rules/ - Создание структуры docs-and-reports/ для отчетов - Архивация backup файлов в legacy-rules/backups/ ### 🔧 Критические компоненты: - src/components/supplies/multilevel-supplies-table.tsx - многоуровневая таблица поставок - src/components/supplies/components/recipe-display.tsx - отображение рецептур - src/components/fulfillment-supplies/fulfillment-goods-orders-tab.tsx - вкладка товарных заказов ### 🎯 GraphQL обновления: - Обновление mutations.ts, queries.ts, resolvers.ts, typedefs.ts - Синхронизация с Prisma schema.prisma - Backup файлы для истории изменений ### 🛠️ Утилитарные скрипты: - 12 новых скриптов в scripts/ для анализа данных - Скрипты проверки фулфилмент-пользователей - Утилиты очистки и фиксации данных поставок ### 📊 Тестирование: - test-fulfillment-filtering.js - тестирование фильтрации фулфилмента - test-full-workflow.js - полный workflow тестирование ### 📝 Документация: - logistics-statistics-warehouse-rules.md - объединенные правила модулей - Обновление журналов модуляризации и разработки ### ✅ Исправления ESLint: - Исправлены критические ошибки в sidebar.tsx - Исправлены ошибки типизации в multilevel-supplies-table.tsx - Исправлены неиспользуемые переменные в goods-supplies-table.tsx - Заменены типы any на строгую типизацию - Исправлены console.log на console.warn ## Результат: - Завершена полная модуляризация системы - Организована архитектура legacy файлов - Добавлены критически важные компоненты таблиц - Создана полная инфраструктура тестирования - Исправлены все критические ESLint ошибки - Сохранены 103 незакоммиченных изменения 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
290 lines
13 KiB
Markdown
290 lines
13 KiB
Markdown
# ПРАВИЛА ЛОГИСТИКИ, СТАТИСТИКИ И СКЛАДСКИХ СИСТЕМ
|
||
|
||
## 📊 АНАЛИТИЧЕСКИЕ ВЫВОДЫ ИЗ КОДА
|
||
|
||
### 🚛 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 эндпоинты
|
||
- Описать административную систему
|
||
- Создать руководства по интеграции |