# 🚨 ПЛАН БЕЗОПАСНОЙ МИГРАЦИИ: useAuth → AuthContext **Проект:** SFERA **Дата:** 18.09.2025 **Критичность:** ВЫСОКАЯ **Статус:** ЭКСТРЕННАЯ МИГРАЦИЯ --- ## 📊 ТЕКУЩАЯ СИТУАЦИЯ ### ✅ МИГРИРОВАНО (8 компонентов): - `/src/components/layout/app-shell.tsx` - `/src/components/dashboard/sidebar/index.tsx` - `/src/components/dashboard/sidebar/SellerSidebar.tsx` - `/src/components/dashboard/sidebar/FulfillmentSidebar.tsx` - `/src/components/dashboard/sidebar/LogistSidebar.tsx` - `/src/components/dashboard/sidebar/WholesaleSidebar.tsx` - `/src/components/auth-guard.tsx` - `/src/components/seller-statistics/seller-statistics-dashboard.tsx` ### ❌ ТРЕБУЕТ МИГРАЦИИ (56 компонентов): **🔴 КРИТИЧЕСКИЕ УГРОЗЫ:** 8 компонентов **⚠️ ВЫСОКИЙ РИСК:** 15 компонентов **📋 СРЕДНИЙ РИСК:** 20 компонентов **🟢 НИЗКИЙ РИСК:** 13 компонентов --- ## 🚨 КРИТИЧЕСКИЕ УЯЗВИМОСТИ ### 1. **SECURITY HOLE** - Обход авторизации ролей **Компонент:** `useRoleGuard.ts` (используется на 49 страницах) **Проблема:** Селлеры могут получить доступ к данным фулфилмента **Бизнес-риск:** Нарушение конфиденциальности клиентских данных ### 2. **INFINITE LOOPS** - Бесконечные циклы регистрации **Компонент:** `auth-flow.tsx` **Проблема:** `window.location.reload()` при рассинхроне состояний **Бизнес-риск:** Потеря новых клиентов, невозможность регистрации ### 3. **PROFILE CORRUPTION** - Коррупция пользовательских данных **Компонент:** `user-settings.tsx` **Проблема:** Обновления не отражаются в интерфейсе **Бизнес-риск:** Пользователи думают что система не работает --- ## 🛡️ СТРАТЕГИЯ БЕЗОПАСНОЙ МИГРАЦИИ ### 🎯 ПРИНЦИПЫ: 1. **Rollback First** - каждое изменение должно иметь план отката 2. **Test Everything** - тестирование на каждом этапе 3. **Monitor Always** - мониторинг состояния на каждом шаге 4. **Backup Critical** - резервные копии критических компонентов 5. **Incremental Progress** - поэтапная миграция с проверками ### 📋 CHECKPOINT SYSTEM: - **Checkpoint Alpha** - после каждого критического компонента - **Checkpoint Beta** - после группы высокого риска - **Checkpoint Gamma** - после средней группы - **Checkpoint Final** - полное тестирование --- ## 🔥 ФАЗА 1: ЭКСТРЕННАЯ МИГРАЦИЯ (24 часа) ### ⚡ ЭТАП 1.1: КРИТИЧЕСКИЕ ИСПРАВЛЕНИЯ (2 часа) #### 🎯 **ЦЕЛЬ:** Устранить security hole и routing issues **1.1.1 useRoleGuard.ts** - КРИТИЧНО (15 минут) ```bash # Backup cp src/hooks/useRoleGuard.ts src/hooks/useRoleGuard.ts.backup # Rollback plan git stash push -m "useRoleGuard migration rollback point" ``` **Изменения:** ```typescript // BEFORE import { useAuth } from '@/hooks/useAuth' const { user } = useAuth() // AFTER import { useAuthContext } from '@/contexts/AuthContext' const { user } = useAuthContext() ``` **Тестирование:** - [ ] Селлер не может зайти в /fulfillment/* - [ ] Фулфилмент не может зайти в /seller/* - [ ] Логист не может зайти в /wholesale/* - [ ] Правильные редиректы на home страницы **Rollback условия:** Если любой из тестов провален --- **1.1.2 app/page.tsx** - КРИТИЧНО (10 минут) **Изменения:** ```typescript // BEFORE import { useAuth } from '@/hooks/useAuth' const { user } = useAuth() // AFTER import { useAuthContext } from '@/contexts/AuthContext' const { user } = useAuthContext() ``` **Тестирование:** - [ ] Неавторизованные пользователи видят landing - [ ] Авторизованные перенаправляются в dashboard - [ ] Нет infinite redirects --- ### ⚡ ЭТАП 1.2: АУТЕНТИФИКАЦИЯ (4 часа) #### 🎯 **ЦЕЛЬ:** Исправить flow регистрации и SMS **1.2.1 auth-flow.tsx** - КРИТИЧНО (45 минут) **Backup и Rollback Plan:** ```bash cp src/components/auth/auth-flow.tsx src/components/auth/auth-flow.tsx.backup git stash push -m "auth-flow migration rollback point" ``` **Изменения:** ```typescript // ОПАСНЫЙ КОД (УДАЛИТЬ): if (isAuthenticated && user && !user.organization) { localStorage.removeItem('authToken') window.location.reload() // 🚨 CAUSES INFINITE LOOPS } // БЕЗОПАСНЫЙ КОД: if (isAuthenticated && user && !user.organization) { logout() // Use AuthContext logout method } ``` **Детальная замена:** ```typescript // BEFORE import { useAuth } from '@/hooks/useAuth' const { isAuthenticated, user } = useAuth() // AFTER import { useAuthContext } from '@/contexts/AuthContext' const { isAuthenticated, user, logout } = useAuthContext() ``` **Критическое тестирование:** - [ ] Новая регистрация работает без циклов - [ ] Существующие пользователи без организации проходят регистрацию - [ ] Полные пользователи перенаправляются в dashboard - [ ] НЕТ `window.location.reload()` в консоли браузера --- **1.2.2 sms-step.tsx** - ВЫСОКИЙ РИСК (30 минут) **Изменения:** ```typescript // BEFORE import { useAuth } from '@/hooks/useAuth' const { verifySmsCode } = useAuth() // AFTER import { useAuthContext } from '@/contexts/AuthContext' const { verifySmsCode } = useAuthContext() ``` **Тестирование:** - [ ] SMS коды работают для новых пользователей - [ ] SMS коды работают для существующих пользователей - [ ] Правильные редиректы после верификации - [ ] Состояние пользователя синхронизировано --- ### 📋 CHECKPOINT ALPHA - КРИТИЧЕСКАЯ ПРОВЕРКА **Обязательные тесты перед продолжением:** 1. **Безопасность ролей:** ```bash # Тест: попытка доступа селлера к фулфилменту curl -H "Authorization: Bearer SELLER_TOKEN" http://localhost:3000/fulfillment/dashboard # Ожидаемый результат: 403 или редирект ``` 2. **Регистрационный flow:** - Регистрация нового селлера: ✅/❌ - Регистрация нового фулфилмента: ✅/❌ - SMS верификация: ✅/❌ - Завершение регистрации: ✅/❌ 3. **Состояние системы:** - Нет ошибок в консоли: ✅/❌ - Сайдбар синхронизирован: ✅/❌ - Роутинг работает: ✅/❌ **🛑 STOP CONDITIONS:** Если любой из тестов провален → ROLLBACK всех изменений фазы 1 --- ## 🔥 ФАЗА 2: ПРОФИЛИ И НАСТРОЙКИ (24-48 часов) ### 🎯 ЭТАП 2.1: ПОЛЬЗОВАТЕЛЬСКИЕ ДАННЫЕ **2.1.1 user-settings.tsx** - СРЕДНИЙ РИСК (60 минут) **Особенности миграции:** - Компонент использует `updateUser` для мгновенного обновления sidebar - Сложная логика сохранения профиля и организации - API ключи должны синхронизироваться с AuthContext **Детальный план:** ```typescript // КРИТИЧЕСКАЯ ЗАМЕНА: // BEFORE const { user, updateUser } = useAuth() // AFTER const { user, updateUser } = useAuthContext() ``` **Тестирование:** - [ ] Изменения профиля отражаются в sidebar немедленно - [ ] API ключи сохраняются и отображаются - [ ] Аватар обновляется корректно - [ ] Организационные данные синхронизируются --- **2.1.2 confirmation-step.tsx** - ВЫСОКАЯ СЛОЖНОСТЬ (120 минут) **⚠️ СПЕЦИАЛЬНАЯ ОСТОРОЖНОСТЬ:** Этот компонент содержит критическую бизнес-логику создания организаций с системой rollback. **Анализ сложности:** ```typescript // Три разных метода регистрации: const { registerFulfillmentOrganization, // Для фулфилмента/логистики/опта registerSellerOrganization, // Для селлеров registerOrganization // Новый универсальный } = useAuth() // A/B тестирование между методами (линии 50, 88-111) // Rollback механизм в useAuth (восстановление состояния при ошибках) ``` **Пошаговая миграция:** 1. Проверить что все три метода есть в AuthContext ✅ 2. Заменить импорт 3. Протестировать каждый тип организации отдельно 4. Проверить rollback механизм работает **Критическое тестирование:** - [ ] Фулфилмент регистрация с ИНН - [ ] Селлер регистрация с API ключами - [ ] Универсальная регистрация - [ ] Rollback при ошибках сети - [ ] Партнерские и реферальные коды --- ## 🔥 ФАЗА 3: БИЗНЕС-КОМПОНЕНТЫ (48-72 часа) ### 🎯 ЭТАП 3.1: ДАШБОРДЫ И СТАТИСТИКА **Приоритетные компоненты:** 1. `dashboard-home.tsx` - главная страница всех ролей 2. `economics-page-wrapper.tsx` - экономические данные 3. `fulfillment-warehouse-dashboard/index.tsx` - управление складом 4. `supplier-orders-tabs-v2.tsx` - заказы поставщиков **Стратегия миграции:** - Один дашборд за раз - Полное тестирование каждого типа пользователя - Проверка доступа к данным --- ### 🎯 ЭТАП 3.2: КОММУНИКАЦИИ И СЕРВИСЫ **Компоненты:** 1. `messenger-chat.tsx` - система сообщений 2. `file-uploader.tsx` - загрузка файлов 3. `voice-recorder.tsx` - голосовые записи **Особенности:** - Могут содержать user ID для авторизации запросов - Низкий риск, но важны для UX --- ## 🔥 ФАЗА 4: ПОСТАВКИ И ЗАКАЗЫ (72-96 часов) ### 🎯 МАССОВАЯ МИГРАЦИЯ КОМПОНЕНТОВ ПОСТАВОК **Категории:** - **Создание поставок:** 8 компонентов - **Управление поставками:** 12 компонентов - **Отчеты и аналитика:** 6 компонентов **Batching strategy:** - Мигрируем по функциональным группам - Тестируем весь workflow поставок сразу --- ## 🔥 ФАЗА 5: ДОЛГОСРОЧНЫЕ КОМПОНЕНТЫ (96+ часов) ### 🎯 ЭТАП 5.1: ДОМАШНИЕ СТРАНИЦЫ - `seller-home-page.tsx` - `fulfillment-home-page.tsx` - `logist-home-page.tsx` - `wholesale-home-page.tsx` ### 🎯 ЭТАП 5.2: СПЕЦИАЛИЗИРОВАННЫЕ КОМПОНЕНТЫ - Advertising таблицы - Warehouse управление - Logistics заказы --- ## 🛡️ СИСТЕМА БЕЗОПАСНОСТИ И ROLLBACK ### 📋 ROLLBACK TRIGGERS **Автоматический rollback при:** - Ошибки аутентификации > 5% пользователей - Невозможность входа в систему - Критические ошибки в console (> 100/минуту) - Жалобы пользователей на недоступность ### 🔄 ROLLBACK PROCEDURE **Для каждой фазы:** ```bash # 1. Остановить миграцию git stash push -m "emergency_rollback_$(date)" # 2. Вернуться к последнему стабильному состоянию git checkout HEAD~1 # 3. Быстрый деплой npm run build && npm start # 4. Проверить работоспособность curl -f http://localhost:3000/health || echo "ROLLBACK FAILED" # 5. Уведомить команду echo "ROLLBACK EXECUTED: $(date)" >> rollback.log ``` ### 📊 МОНИТОРИНГ **Метрики для отслеживания:** - Успешные аутентификации (должно остаться > 95%) - Время загрузки страниц (не должно увеличиться > 20%) - Ошибки JavaScript в console (< 50/час) - User registration completion rate (> 80%) --- ## 🧪 ОБЯЗАТЕЛЬНОЕ ТЕСТИРОВАНИЕ И ДИАГНОСТИКА ПОСЛЕ КАЖДОЙ ФАЗЫ ### 📋 ПРОТОКОЛ ТЕСТИРОВАНИЯ **ПРАВИЛО:** После завершения каждой фазы проводится полная диагностика системы. Переход к следующей фазе ТОЛЬКО после успешного прохождения всех тестов. ### 🔴 CHECKPOINT ALPHA - ПОСЛЕ ФАЗЫ 1 (Критические исправления) #### 🚨 ОБЯЗАТЕЛЬНЫЕ ТЕСТЫ БЕЗОПАСНОСТИ: **1. Тест авторизации ролей (КРИТИЧЕСКИЙ):** ```bash # Создаем тестовых пользователей каждой роли node scripts/create-test-users.js # Тестируем изоляцию ролей curl -H "Authorization: Bearer SELLER_TOKEN" http://localhost:3000/fulfillment/dashboard # Ожидаемо: 403 или редирект на /seller/dashboard curl -H "Authorization: Bearer FULFILLMENT_TOKEN" http://localhost:3000/seller/statistics # Ожидаемо: 403 или редирект на /fulfillment/dashboard curl -H "Authorization: Bearer WHOLESALE_TOKEN" http://localhost:3000/logist/orders # Ожидаемо: 403 или редирект на /wholesale/dashboard ``` **2. Тест регистрационного потока (КРИТИЧЕСКИЙ):** ```javascript // Автоматизированный тест в browser console async function testRegistrationFlow() { const testResults = [] // Тест 1: Новая регистрация селлера try { await fetch('/api/graphql', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ query: `mutation { sendSmsCode(phone: "79999999999") { success message } }` }) }) testResults.push('✅ SMS отправка работает') } catch (e) { testResults.push('❌ SMS отправка сломана: ' + e.message) } return testResults } ``` **3. Диагностика состояния системы:** ```bash # Проверка отсутствия window.location.reload() в auth-flow grep -r "window.location.reload" src/components/auth/ # Ожидаемо: НЕТ результатов # Проверка использования AuthContext grep -r "useAuthContext" src/components/auth/ | wc -l # Ожидаемо: > 3 (auth-flow, sms-step, confirmation-step) # Проверка отсутствия useAuth в критических компонентах grep -r "useAuth" src/hooks/useRoleGuard.ts src/app/page.tsx # Ожидаемо: НЕТ результатов ``` #### 📊 МЕТРИКИ ПРОИЗВОДИТЕЛЬНОСТИ ПОСЛЕ ФАЗЫ 1: ```bash # Время загрузки главной страницы curl -w "@curl-format.txt" -o /dev/null -s http://localhost:3000/ # Количество ошибок JavaScript # Мониторинг console.error за 5 минут, должно быть < 10 # Memory usage node --inspect src/app/page.tsx # Baseline для сравнения с последующими фазами ``` #### 🛑 STOP CONDITIONS ДЛЯ ФАЗЫ 1: - Любой тест авторизации ролей провален → ROLLBACK - Регистрация не работает → ROLLBACK - > 50 JavaScript ошибок в час → ROLLBACK - Infinite redirects обнаружены → ROLLBACK --- ### 🔴 CHECKPOINT BETA - ПОСЛЕ ФАЗЫ 2 (Профили и настройки) #### 🧪 ТЕСТЫ ПОЛЬЗОВАТЕЛЬСКИХ ДАННЫХ: **1. Тест синхронизации профиля:** ```javascript // Тест обновления профиля и отражения в sidebar async function testProfileSync() { // 1. Открыть настройки пользователя // 2. Изменить имя/аватар // 3. Сохранить // 4. Проверить что sidebar обновился МГНОВЕННО // 5. Перезагрузить страницу // 6. Проверить что изменения сохранились const beforeName = document.querySelector('[data-testid="sidebar-user-name"]').textContent // Симуляция изменения профиля await updateProfile({ managerName: 'Test Name Updated' }) const afterName = document.querySelector('[data-testid="sidebar-user-name"]').textContent return beforeName !== afterName ? '✅ Профиль синхронизирован' : '❌ Синхронизация сломана' } ``` **2. Тест API ключей:** ```bash # Добавление WB API ключа через настройки # Проверка что ключ появился в статистике curl -X POST http://localhost:3000/api/graphql \ -H "Authorization: Bearer USER_TOKEN" \ -d '{"query":"mutation { addMarketplaceApiKey(input: {marketplace: WILDBERRIES, apiKey: \"test_key\"}) { success } }"}' # Проверка что ключ доступен в статистике curl -X POST http://localhost:3000/api/graphql \ -H "Authorization: Bearer USER_TOKEN" \ -d '{"query":"query { getWildberriesStatistics(period: \"week\") { success message } }"}' ``` **3. Тест создания организаций:** ```javascript // Тест всех трех методов регистрации const testOrganizationCreation = async () => { const results = [] // Тест универсального метода try { const result = await registerOrganization({ phone: '79999999998', type: 'SELLER', wbApiKey: 'test_key' }) results.push(result.success ? '✅ Универсальная регистрация' : '❌ Универсальная регистрация') } catch (e) { results.push('❌ Универсальная регистрация: ' + e.message) } return results } ``` #### 📊 ДИАГНОСТИКА СОСТОЯНИЯ ПОСЛЕ ФАЗЫ 2: ```bash # Проверка количества мигрированных компонентов grep -r "useAuthContext" src/ | grep -v "node_modules" | wc -l # Ожидаемо: ~15-20 (базовые + профильные компоненты) # Проверка оставшихся useAuth grep -r "useAuth" src/ | grep -v "useAuthContext" | grep -v "node_modules" | wc -l # Ожидаемо: ~40-45 (уменьшение на 10-15 компонентов) # Memory leak detection node --expose-gc --inspect index.js # Проверка отсутствия утечек памяти от дублирующихся состояний ``` #### 🛑 STOP CONDITIONS ДЛЯ ФАЗЫ 2: - Профиль не синхронизируется с sidebar → ROLLBACK - API ключи не сохраняются → ROLLBACK - Регистрация организаций сломана → ROLLBACK - Memory leaks обнаружены → INVESTIGATE & FIX --- ### 🔴 CHECKPOINT GAMMA - ПОСЛЕ ФАЗЫ 3 (Бизнес-компоненты) #### 🏢 ТЕСТЫ БИЗНЕС-ФУНКЦИЙ: **1. Тест дашбордов всех ролей:** ```bash # Создаем полный workflow тест node tests/business-dashboard-test.js # Тест доступа к экономическим данным # Тест доступа к складским данным # Тест доступа к заказам поставщиков ``` **2. Тест целостности данных:** ```javascript // Проверка что все типы пользователей видят правильные данные async function testDataIntegrity() { const roles = ['SELLER', 'FULFILLMENT', 'LOGIST', 'WHOLESALE'] const results = [] for (const role of roles) { const user = await loginAsRole(role) const dashboardData = await fetchDashboardData() // Проверяем что данные соответствуют роли if (role === 'SELLER' && !dashboardData.wildberriesStats) { results.push(`❌ ${role}: отсутствуют WB статистики`) } else if (role === 'FULFILLMENT' && !dashboardData.warehouseData) { results.push(`❌ ${role}: отсутствуют складские данные`) } else { results.push(`✅ ${role}: данные корректны`) } } return results } ``` #### 📊 ДИАГНОСТИКА ПРОИЗВОДИТЕЛЬНОСТИ ПОСЛЕ ФАЗЫ 3: ```bash # Benchmark основных страниц curl -w "@curl-format.txt" -o /dev/null -s http://localhost:3000/seller/dashboard curl -w "@curl-format.txt" -o /dev/null -s http://localhost:3000/fulfillment/dashboard curl -w "@curl-format.txt" -o /dev/null -s http://localhost:3000/warehouse/dashboard # Ожидаемо: время загрузки < 2 секунд для каждой # API requests count # Мониторинг количества GET_ME запросов # Ожидаемо: 1 запрос на сессию (вместо N на каждый компонент) ``` #### 🛑 STOP CONDITIONS ДЛЯ ФАЗЫ 3: - Любой дашборд недоступен → ROLLBACK - Данные отображаются неправильно → ROLLBACK - Время загрузки > 3 секунд → INVESTIGATE & OPTIMIZE - Critical business functions broken → IMMEDIATE ROLLBACK --- ### 🔴 CHECKPOINT DELTA - ПОСЛЕ ФАЗЫ 4 (Поставки и заказы) #### 📦 ТЕСТЫ SUPPLY CHAIN: **1. End-to-end тест поставок:** ```javascript // Полный цикл: создание → управление → отчеты async function testSupplyChain() { const results = [] // 1. Создание поставки const supply = await createSupply({ type: 'FULFILLMENT_GOODS', items: [{ productId: 'test', quantity: 10 }] }) results.push(supply.success ? '✅ Создание поставки' : '❌ Создание поставки') // 2. Обновление статуса const statusUpdate = await updateSupplyStatus(supply.id, 'IN_PROGRESS') results.push(statusUpdate.success ? '✅ Обновление статуса' : '❌ Обновление статуса') // 3. Генерация отчета const report = await generateSupplyReport(supply.id) results.push(report.success ? '✅ Отчеты работают' : '❌ Отчеты сломаны') return results } ``` **2. Тест заказов поставщиков:** ```bash # Тест workflow заказов node tests/supplier-orders-workflow.js # Проверка уведомлений # Проверка статусов заказов # Проверка расчетов ``` #### 📊 ПОЛНАЯ ДИАГНОСТИКА СИСТЕМЫ ПОСЛЕ ФАЗЫ 4: ```bash # Состояние миграции echo "=== MIGRATION STATUS ===" grep -r "useAuthContext" src/ | wc -l # Ожидаемо: ~50+ grep -r "useAuth" src/ | grep -v "useAuthContext" | wc -l # Ожидаемо: ~10-15 # Performance metrics echo "=== PERFORMANCE ===" node scripts/performance-benchmark.js # Memory usage echo "=== MEMORY ===" node --expose-gc scripts/memory-test.js # Error rates echo "=== ERROR MONITORING ===" grep "ERROR" logs/app.log | tail -100 ``` #### 🛑 STOP CONDITIONS ДЛЯ ФАЗЫ 4: - Supply chain workflow broken → IMMEDIATE ROLLBACK - Data corruption in orders → IMMEDIATE ROLLBACK - Performance degradation > 50% → INVESTIGATE - Memory usage > baseline + 30% → OPTIMIZE --- ### 🔴 CHECKPOINT FINAL - ПОСЛЕ ФАЗЫ 5 (Финализация) #### 🎯 ПОЛНОЕ РЕГРЕССИОННОЕ ТЕСТИРОВАНИЕ: **1. Автоматизированный тест всех функций:** ```bash # Запуск полного test suite npm run test:e2e npm run test:integration npm run test:security # Ожидаемо: 100% pass rate ``` **2. Нагрузочное тестирование:** ```bash # Симуляция 100 одновременных пользователей npm run test:load # Проверка стабильности при нагрузке # Проверка memory leaks # Проверка response times ``` **3. Безопасность финальная:** ```bash # Security audit npm audit npm run test:security # Проверка отсутствия useAuth grep -r "import.*useAuth" src/ | grep -v "useAuthContext" # Ожидаемо: ТОЛЬКО в useAuth.ts файле (если оставляем для compatibility) ``` #### 📊 ФИНАЛЬНЫЕ МЕТРИКИ: ```bash echo "=== FINAL MIGRATION REPORT ===" echo "Components migrated: $(grep -r "useAuthContext" src/ | wc -l)" echo "Components remaining: $(grep -r "useAuth" src/ | grep -v "useAuthContext" | wc -l)" echo "Performance improvement: $(node scripts/performance-compare.js)" echo "Memory reduction: $(node scripts/memory-compare.js)" echo "API calls reduction: $(node scripts/api-calls-compare.js)" ``` **Ожидаемые результаты:** - ✅ Components migrated: 56+ - ✅ Components remaining: 0 (кроме useAuth.ts если оставляем) - ✅ Performance improvement: 80%+ - ✅ Memory reduction: 85%+ - ✅ API calls reduction: 90%+ #### 🛑 FINAL APPROVAL CONDITIONS: - Все e2e тесты пройдены: ✅/❌ - Нагрузочные тесты стабильны: ✅/❌ - Security audit чистый: ✅/❌ - Performance targets достигнуты: ✅/❌ - No critical bugs: ✅/❌ **ТОЛЬКО при 100% SUCCESS → Миграция считается ЗАВЕРШЕННОЙ** --- ### 🔴 КРИТИЧЕСКИЕ ТЕСТЫ (ПОСЛЕ КАЖДОГО ЭТАПА) **1. Базовая аутентификация:** ```javascript // Тест в browser console localStorage.setItem('authToken', 'valid_token') window.location.reload() // Проверить: пользователь автоматически авторизован ``` **2. Переключение ролей:** ```bash # Селлер пытается зайти в фулфилмент GET /fulfillment/dashboard # Ожидаемо: редирект на /seller/dashboard ``` **3. Регистрационный flow:** - SMS код → Верификация → Выбор типа → Создание организации → Dashboard ### 📋 ИНТЕГРАЦИОННЫЕ ТЕСТЫ **1. Синхронизация состояния:** - Обновить профиль → Проверить sidebar → Проверить user-settings **2. API ключи:** - Добавить WB ключ → Проверить статистику → Проверить настройки **3. Роли и доступы:** - Каждая роль → Проверить доступные разделы → Проверить запрещенные разделы --- ## 📈 ПЛАН ПРОИЗВОДИТЕЛЬНОСТИ ### ⚡ ОПТИМИЗАЦИИ **1. Устранение дублирования состояния:** - До: 56 компонентов × useState = 56 экземпляров состояния - После: 1 AuthContext = 1 глобальное состояние - Экономия памяти: ~85% **2. Уменьшение API запросов:** - До: Каждый useAuth делает GET_ME при монтировании - После: 1 запрос в AuthContext для всех компонентов - Экономия запросов: ~90% **3. Улучшение UX:** - Мгновенная синхронизация данных между компонентами - Нет задержек при обновлении профиля - Консистентное состояние загрузки --- ## 🎯 SUCCESS CRITERIA ### ✅ ОБЯЗАТЕЛЬНЫЕ РЕЗУЛЬТАТЫ **Безопасность:** - [ ] Нет security holes в авторизации ролей - [ ] Все компоненты используют AuthContext - [ ] Нет утечек состояния между useAuth и AuthContext **Функциональность:** - [ ] Все типы регистрации работают - [ ] SMS верификация стабильна - [ ] Профили синхронизируются - [ ] API ключи сохраняются **Производительность:** - [ ] Время загрузки < 2 секунд - [ ] Memory usage снижен на 80%+ - [ ] API запросы сокращены на 85%+ **UX:** - [ ] Нет infinite loops - [ ] Мгновенное обновление интерфейса - [ ] Стабильная работа во всех браузерах --- ## 📞 ПЛАН КОММУНИКАЦИИ ### 🚨 КРИТИЧЕСКИЕ УВЕДОМЛЕНИЯ **Команде разработки:** - Начало каждой фазы: Slack + Email - Критические проблемы: Немедленный звонок - Успешное завершение: Отчет в Slack **Бизнес-команде:** - Ежедневные отчеты о прогрессе - Уведомления о рисках заранее - Финальный отчет с метриками ### 📅 ГРАФИК УВЕДОМЛЕНИЙ | Время | Событие | Кому | Канал | |-------|---------|------|-------| | Старт фазы | Начало миграции | Dev team | Slack | | +2 часа | Checkpoint Alpha | Dev + QA | Slack | | +24 часа | Фаза 1 завершена | Все | Email | | +48 часов | Фаза 2 завершена | Все | Email | | Завершение | Полная миграция | Все | Meeting | --- ## 📋 CHECKLIST ВЫПОЛНЕНИЯ ### 🔥 ФАЗА 1: КРИТИЧЕСКАЯ (24 часа) - [ ] useRoleGuard.ts мигрирован - [ ] app/page.tsx мигрирован - [ ] auth-flow.tsx исправлен (убран window.reload) - [ ] sms-step.tsx мигрирован - [ ] Checkpoint Alpha пройден - [ ] Безопасность ролей работает - [ ] Регистрация стабильна ### 🔥 ФАЗА 2: ПРОФИЛИ (48 часов) - [ ] user-settings.tsx мигрирован - [ ] confirmation-step.tsx мигрирован - [ ] Профили синхронизируются с sidebar - [ ] API ключи работают - [ ] Все типы регистрации протестированы ### 🔥 ФАЗА 3: БИЗНЕС (72 часа) - [ ] dashboard-home.tsx мигрирован - [ ] economics компоненты мигрированы - [ ] warehouse дашборды мигрированы - [ ] Все типы пользователей протестированы ### 🔥 ФАЗА 4: ПОСТАВКИ (96 часов) - [ ] Создание поставок мигрировано - [ ] Управление поставками мигрировано - [ ] Отчеты мигрированы - [ ] Full supply chain workflow протестирован ### 🔥 ФАЗА 5: ФИНАЛИЗАЦИЯ (120+ часов) - [ ] Все домашние страницы мигрированы - [ ] Специализированные компоненты мигрированы - [ ] useAuth.ts удален из кодовой базы - [ ] Полное регрессионное тестирование --- ## 🎯 ЗАКЛЮЧЕНИЕ Данный план обеспечивает **безопасную поэтапную миграцию** с минимальным риском для бизнеса. **Ключевые принципы:** - **Safety First** - безопасность превыше скорости - **Test Everything** - тестирование на каждом шаге - **Rollback Ready** - готовность к откату в любой момент - **Monitor Always** - постоянный мониторинг состояния **Ожидаемые результаты:** - ✅ Устранение критических уязвимостей безопасности - ✅ Стабильная работа всех компонентов - ✅ Улучшение производительности на 80%+ - ✅ Единое состояние аутентификации для всего приложения **Временные рамки:** 5-7 дней активной разработки + тестирование --- *Документ подготовлен: 18.09.2025* *Статус: ГОТОВ К ВЫПОЛНЕНИЮ* *Приоритет: КРИТИЧЕСКИЙ*