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

10 KiB
Raw Blame History

🔍 ДЕТАЛЬНЫЙ АНАЛИЗ: 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: CreateFulfillmentConsumablesSupplyPagecreateSupplyOrder 🟡
  • Статус: 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:

// 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:

// 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 домене где работают ОБЕ системы параллельно.