Files
sfera-new/docs/development/V1_VS_V2_ANALYSIS_REPORT.md
Veronika Smirnova be891f5354 feat: завершить полную миграцию V1→V2 с модульной архитектурой и документацией
- Завершить миграцию фулфилмента на 100% V2 (удалить legacy компонент)
- Создать полную V2 систему для расходников селлера (SellerConsumableInventory)
- Автоматическое пополнение инвентаря при статусе DELIVERED
- Удалить весь код создания V1 Supply для расходников
- Исправить фильтрацию: расходники селлера только на странице consumables
- Исправить Organization.inn null ошибку с fallback значениями
- Создать документацию V2 систем и отчет о миграции
- Обновить import порядок для ESLint совместимости

BREAKING CHANGES: V1 система поставок расходников полностью удалена
2025-09-01 00:11:48 +03:00

268 lines
10 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.

# 🔍 ДЕТАЛЬНЫЙ АНАЛИЗ: 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 домене где работают ОБЕ системы параллельно.