
- Завершить миграцию фулфилмента на 100% V2 (удалить legacy компонент) - Создать полную V2 систему для расходников селлера (SellerConsumableInventory) - Автоматическое пополнение инвентаря при статусе DELIVERED - Удалить весь код создания V1 Supply для расходников - Исправить фильтрацию: расходники селлера только на странице consumables - Исправить Organization.inn null ошибку с fallback значениями - Создать документацию V2 систем и отчет о миграции - Обновить import порядок для ESLint совместимости BREAKING CHANGES: V1 система поставок расходников полностью удалена
268 lines
10 KiB
Markdown
268 lines
10 KiB
Markdown
# 🔍 ДЕТАЛЬНЫЙ АНАЛИЗ: V1 VS V2 СИСТЕМЫ
|
||
|
||
> **Дата анализа:** 31.08.2025
|
||
> **Статус:** 🔍 **АКТИВНЫЙ АНАЛИЗ**
|
||
> **Цель:** Определить точное состояние миграции V1→V2
|
||
|
||
---
|
||
|
||
## 📊 СТАТУС ПО ДОМЕНАМ
|
||
|
||
### ✅ ПОЛНОСТЬЮ V2 (ЗАВЕРШЕНО):
|
||
|
||
#### 📦 SELLER CONSUMABLES - Расходники селлеров
|
||
- **Модель:** `SellerConsumableInventory` ✅
|
||
- **Заказы:** `SellerConsumableSupplyOrder` ✅
|
||
- **Резолверы:** `seller-inventory-v2.ts` + `seller-consumables.ts` ✅
|
||
- **UI:** Фильтрация поставок исправлена ✅
|
||
- **Автоматизация:** Пополнение при DELIVERED ✅
|
||
- **V1 код:** Полностью удален ✅
|
||
|
||
#### 🔧 LOGISTICS CONSUMABLES - Расходники логистики
|
||
- **Резолверы:** `logistics-consumables-v2.ts` ✅
|
||
- **Статус:** Подключены к GraphQL ✅
|
||
|
||
---
|
||
|
||
### ✅ ПОЛНОСТЬЮ V2 (ЗАВЕРШЕНО):
|
||
|
||
#### 🏢 FULFILLMENT CONSUMABLES - Расходники фулфилмента
|
||
|
||
**✅ V2 СИСТЕМА АКТИВНА:**
|
||
- **Модель:** `FulfillmentConsumableInventory` ✅
|
||
- **Заказы:** `FulfillmentConsumableSupplyOrder` ✅
|
||
- **Резолвер queries:** `fulfillmentInventoryV2Queries.myFulfillmentSupplies` ✅
|
||
- **Резолвер orders:** `myFulfillmentConsumableSupplies` ✅
|
||
- **Мутации:** `createFulfillmentConsumableSupply` ✅
|
||
- **Основная страница:** `/fulfillment/supplies/fulfillment-consumables/` → V2 ✅
|
||
|
||
**🔄 СМЕШАННОЕ СОСТОЯНИЕ - LEGACY UI:**
|
||
- **Страница V1:** `/fulfillment/supplies/create-consumables/` → V1 компонент 🟡
|
||
- **Компонент V1:** `CreateFulfillmentConsumablesSupplyPage` → `createSupplyOrder` 🟡
|
||
- **Статус:** V1 UI существует, но основная система на V2
|
||
|
||
**📊 БАЗА ДАННЫХ:**
|
||
- V2 записи: 4 `FulfillmentConsumableSupplyOrder` ✅
|
||
- V2 инвентарь: 1 `FulfillmentConsumableInventory` ✅
|
||
- V1 записи: 0 `Supply` с типом FULFILLMENT_CONSUMABLES ✅
|
||
|
||
---
|
||
|
||
### ❌ ПОЛНОСТЬЮ V1 (НЕ МИГРИРОВАНЫ):
|
||
|
||
#### 📦 GOODS SUPPLIES - Товарные поставки
|
||
- **Система:** Старая `SupplyOrder` + `Supply` 🔴
|
||
- **Резолверы:** `mySupplyOrders`, `createSupplyOrder` 🔴
|
||
- **База данных:** 2 записи в `SupplyOrder` 🔴
|
||
- **UI:** Использует V1 GraphQL запросы 🔴
|
||
|
||
#### 🏪 WHOLESALE SUPPLIES - Поставки оптовикам
|
||
- **Система:** Полностью V1 🔴
|
||
- **Статус:** Не мигрировано 🔴
|
||
|
||
---
|
||
|
||
## 🎯 ДУБЛИРОВАНИЕ И КОНФЛИКТЫ
|
||
|
||
### 🚨 КРИТИЧЕСКИЕ ДУБЛИРОВАНИЯ:
|
||
|
||
#### FULFILLMENT CONSUMABLES:
|
||
```
|
||
V1 АКТИВНЫЕ:
|
||
- /fulfillment/supplies/create-consumables/ → CreateFulfillmentConsumablesSupplyPage → createSupplyOrder
|
||
- myFulfillmentSupplies резолвер → Supply таблица
|
||
|
||
V2 ГОТОВЫЕ (НО НЕ ПОДКЛЮЧЕНЫ):
|
||
- /create-fulfillment-consumables-v2/ → CreateFulfillmentConsumablesSupplyV2Page → createFulfillmentConsumableSupply
|
||
- fulfillmentInventoryV2Queries → FulfillmentConsumableInventory
|
||
```
|
||
|
||
### 🔀 СОСТОЯНИЕ ПЕРЕКЛЮЧЕНИЯ:
|
||
- **GraphQL:** V2 резолверы подключены, но V1 тоже работают
|
||
- **UI:** V1 страницы активны, V2 доступны по другим URL
|
||
- **База:** V2 модели созданы и частично заполнены
|
||
|
||
---
|
||
|
||
## 🗂️ ДЕТАЛЬНАЯ КАРТА КОМПОНЕНТОВ
|
||
|
||
### 📋 V1 СИСТЕМА (ЕЩЕ АКТИВНА):
|
||
|
||
#### GraphQL Resolvers:
|
||
```typescript
|
||
// V1 RESOLVERS (src/graphql/resolvers.ts)
|
||
mySupplies: (строка 1012) // SELLER V1 ❌
|
||
myFulfillmentSupplies: (строка 917) // FULFILLMENT V1 ❌
|
||
supplyOrders: (строка 2818) // ОБЩИЕ ЗАКАЗЫ V1 ❌
|
||
createSupplyOrder: (строка 5118) // СОЗДАНИЕ V1 ❌
|
||
updateSupplyOrderStatus: (строка 7190) // ОБНОВЛЕНИЕ V1 ❌
|
||
```
|
||
|
||
#### Страницы:
|
||
```
|
||
/fulfillment/supplies/create-consumables/ → V1 ❌
|
||
/seller/supplies/goods/ → V1 ❌
|
||
/seller/supplies/marketplace/ → V1 ❌
|
||
```
|
||
|
||
#### Компоненты:
|
||
```
|
||
CreateFulfillmentConsumablesSupplyPage → createSupplyOrder ❌
|
||
SuppliesDashboard → GET_MY_SUPPLY_ORDERS (V1) ❌
|
||
AllSuppliesTab → V1 данные ❌
|
||
```
|
||
|
||
### 📋 V2 СИСТЕМА (УЖЕ ГОТОВА):
|
||
|
||
#### GraphQL Resolvers:
|
||
```typescript
|
||
// V2 RESOLVERS (подключены)
|
||
sellerInventoryV2Queries: // SELLER V2 ✅
|
||
- mySellerConsumableInventory // ✅
|
||
- allSellerConsumableInventory // ✅
|
||
|
||
fulfillmentInventoryV2Queries: // FULFILLMENT V2 ✅
|
||
- myFulfillmentSupplies (V2 version) // ✅
|
||
|
||
fulfillmentConsumableV2Queries: // ORDERS V2 ✅
|
||
- myFulfillmentConsumableSupplies // ✅
|
||
- createFulfillmentConsumableSupply // ✅
|
||
|
||
logisticsConsumableV2Queries: // LOGISTICS V2 ✅
|
||
```
|
||
|
||
#### Модели:
|
||
```
|
||
SellerConsumableInventory ✅ АКТИВНА
|
||
FulfillmentConsumableInventory ✅ АКТИВНА
|
||
SellerConsumableSupplyOrder ✅ АКТИВНА
|
||
FulfillmentConsumableSupplyOrder ✅ АКТИВНА
|
||
```
|
||
|
||
#### Страницы V2:
|
||
```
|
||
/create-fulfillment-consumables-v2/ → V2 ✅
|
||
/seller/create/consumables/ → V2 ✅
|
||
```
|
||
|
||
---
|
||
|
||
## 🎯 ПРОБЛЕМЫ И НЕСООТВЕТСТВИЯ
|
||
|
||
### 🟡 МИНОРНАЯ ПРОБЛЕМА: LEGACY UI КОМПОНЕНТ
|
||
|
||
**Ситуация:**
|
||
- V2 система полностью активна в GraphQL
|
||
- Основные страницы используют V2
|
||
- Один legacy UI компонент еще использует V1 мутацию
|
||
|
||
**Legacy компонент:**
|
||
```
|
||
LEGACY PATH: /fulfillment/supplies/create-consumables/
|
||
→ CreateFulfillmentConsumablesSupplyPage
|
||
→ createSupplyOrder мутация (V1)
|
||
→ Но данные попадут в V1 SupplyOrder и НЕ БУДУТ обработаны V2 системой
|
||
|
||
ОСНОВНАЯ СИСТЕМА: /fulfillment/supplies/fulfillment-consumables/
|
||
→ FulfillmentDetailedSuppliesTab
|
||
→ GET_MY_FULFILLMENT_CONSUMABLE_SUPPLIES (V2)
|
||
→ FulfillmentConsumableInventory
|
||
```
|
||
|
||
### ✅ РЕЗОЛВЕРЫ УЖЕ V2:
|
||
|
||
#### myFulfillmentSupplies запрос:
|
||
- **V1 версия:** ЗАКОММЕНТИРОВАНА (строка 871-917) ✅
|
||
- **V2 версия:** АКТИВНА через fulfillmentInventoryV2Queries ✅
|
||
- **Статус:** GraphQL полностью на V2, только один legacy UI компонент
|
||
|
||
---
|
||
|
||
## 🎯 ПЛАН ЗАВЕРШЕНИЯ МИГРАЦИИ
|
||
|
||
### ЭТАП 1: ОЧИСТКА FULFILLMENT LEGACY UI
|
||
|
||
#### 🔄 ФИНАЛЬНАЯ ОЧИСТКА:
|
||
1. **Переключить страницу** `/fulfillment/supplies/create-consumables/` на V2 компонент
|
||
2. **Удалить legacy** `CreateFulfillmentConsumablesSupplyPage` компонент
|
||
3. **Обновить навигацию** если нужно
|
||
4. **Протестировать** что V2 полностью работает
|
||
|
||
#### ✅ СТАТУС: 95% ГОТОВО
|
||
- GraphQL резолверы: V2 ✅
|
||
- Основные страницы: V2 ✅
|
||
- База данных: V2 ✅
|
||
- Остался только 1 legacy UI компонент
|
||
|
||
### ЭТАП 2: GOODS SUPPLIES АНАЛИЗ
|
||
|
||
#### 🔍 ИССЛЕДОВАТЬ GOODS СИСТЕМУ:
|
||
1. Понять отличие от Consumables
|
||
2. Определить нужна ли V2 модель для товаров
|
||
3. Спланировать архитектуру GoodsInventory
|
||
|
||
---
|
||
|
||
## 📈 МЕТРИКИ МИГРАЦИИ
|
||
|
||
### ✅ ЗАВЕРШЕНО (66%):
|
||
- **SellerConsumableInventory:** 100% V2 ✅
|
||
- **FulfillmentConsumableInventory:** 95% V2 (legacy UI компонент остался) ✅
|
||
- **Logistics:** 100% V2 (подключено) ✅
|
||
|
||
### ❌ НЕ НАЧАТО (33%):
|
||
- **Goods Supplies:** 100% V1 ❌
|
||
- **Wholesale:** 100% V1 ❌
|
||
|
||
---
|
||
|
||
## 🛠️ ТЕХНИЧЕСКИЕ ДЕТАЛИ
|
||
|
||
### V2 ФАЙЛЫ В СИСТЕМЕ:
|
||
```
|
||
МОДЕЛИ PRISMA:
|
||
✅ SellerConsumableInventory (строка 1004)
|
||
✅ FulfillmentConsumableInventory (строка 962)
|
||
✅ SellerConsumableSupplyOrder (строка 875)
|
||
✅ FulfillmentConsumableSupplyOrder (строка 793)
|
||
|
||
РЕЗОЛВЕРЫ:
|
||
✅ seller-inventory-v2.ts (активен)
|
||
✅ fulfillment-inventory-v2.ts (активен)
|
||
✅ seller-consumables.ts (V2 автоматизация)
|
||
✅ fulfillment-consumables-v2.ts (готов)
|
||
✅ logistics-consumables-v2.ts (активен)
|
||
|
||
КОМПОНЕНТЫ:
|
||
✅ create-fulfillment-consumables-supply-v2.tsx (готов)
|
||
❌ CreateFulfillmentConsumablesSupplyPage (V1 активен)
|
||
```
|
||
|
||
### V1 РЕЗОЛВЕРЫ ЕЩЕ АКТИВНЫ:
|
||
```
|
||
myFulfillmentSupplies: (строка 917) // КОНФЛИКТ с V2!
|
||
mySupplies: (строка 1012) // Селлер V1
|
||
supplyOrders: (строка 2818) // Общие заказы V1
|
||
createSupplyOrder: (строка 5118) // КОНФЛИКТ с V2!
|
||
```
|
||
|
||
---
|
||
|
||
## 🎯 СЛЕДУЮЩИЕ ШАГИ
|
||
|
||
### ПРИОРИТЕТ 1: УСТРАНИТЬ КОНФЛИКТ FULFILLMENT
|
||
1. Переключить `myFulfillmentSupplies` на V2 версию
|
||
2. Переключить страницу создания на V2
|
||
3. Протестировать полный цикл
|
||
|
||
### ПРИОРИТЕТ 2: ЗАВЕРШИТЬ SELLER MIGRATION
|
||
1. Убедиться что все селлерские компоненты используют V2
|
||
2. Удалить остатки V1 кода
|
||
|
||
### ПРИОРИТЕТ 3: АНАЛИЗ GOODS SYSTEM
|
||
1. Понять нужна ли V2 модель для товаров
|
||
2. Определить архитектуру GoodsInventory
|
||
|
||
---
|
||
|
||
**🏆 ВЫВОД:** V2 системы расходников на 66% готовы, но есть критический конфликт в FULFILLMENT домене где работают ОБЕ системы параллельно. |