Files
sfera-new/logistics-statistics-warehouse-rules.md
Veronika Smirnova 89257c75b5 fix: завершение модуляризации системы и финальная организация проекта
## Структурные изменения:

### 📁 Организация архивных файлов:
- Перенос всех устаревших правил в 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>
2025-08-22 10:31:43 +03:00

290 lines
13 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ПРАВИЛА ЛОГИСТИКИ, СТАТИСТИКИ И СКЛАДСКИХ СИСТЕМ
## 📊 АНАЛИТИЧЕСКИЕ ВЫВОДЫ ИЗ КОДА
### 🚛 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 эндпоинты
- Описать административную систему
- Создать руководства по интеграции