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>
This commit is contained in:
290
logistics-statistics-warehouse-rules.md
Normal file
290
logistics-statistics-warehouse-rules.md
Normal 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 эндпоинты
|
||||
- Описать административную систему
|
||||
- Создать руководства по интеграции
|
Reference in New Issue
Block a user