# АНАЛИЗ РИСКОВ: РЕФАКТОРИНГ СИСТЕМЫ РЕГИСТРАЦИИ ОРГАНИЗАЦИЙ

**Дата:** 17 сентября 2025  
**Проект:** SFERA - Рефакторинг registerOrganization  
**Статус:** Детальный анализ рисков  

---

## 🚨 КРИТИЧЕСКИЕ РИСКИ (P0)

### 1. Breaking Changes для Frontend
**Вероятность:** ВЫСОКАЯ | **Влияние:** КРИТИЧЕСКОЕ  
**Описание:** Изменение названий GraphQL мутаций сломает все UI формы регистрации

**Затронутые файлы:**
- `/src/hooks/useAuth.ts` - основные функции регистрации
- `/src/components/auth/` - все компоненты регистрации  
- `/src/app/register/page.tsx` - страница регистрации
- Все компоненты использующие `registerFulfillmentOrganization`/`registerSellerOrganization`

**Последствия:**
- ❌ Полная блокировка новых регистраций
- ❌ Runtime ошибки в production
- ❌ Потеря новых пользователей

**Мера защиты:**
```typescript
// Вариант 1: Старые мутации (для отката)  
/*
mutation RegisterFulfillmentOrganization($input: FulfillmentRegistrationInput!) {
  registerFulfillmentOrganization(input: $input) { ... }
}
*/

// Вариант 2: Новая мутация (активная)
mutation RegisterOrganization($input: OrganizationRegistrationInput!) {
  registerOrganization(input: $input) { ... }
}
```

### 2. Database Integrity 
**Вероятность:** СРЕДНЯЯ | **Влияние:** КРИТИЧЕСКОЕ  
**Описание:** Ошибки в новой логике могут создать inconsistent данные

**Риски:**
- Orphan записи пользователей без организаций
- Duplicate организации при сбоях
- Broken реферальные связи
- Invalid API keys записи

**Последствия:**
- 💾 Коррупция данных в production
- 🔗 Нарушение связей между сущностями  
- 👥 Пользователи без доступа к кабинетам

**Мера защиты:**
```typescript
// Обязательные транзакции
const result = await prisma.$transaction(async (tx) => {
  const organization = await tx.organization.create({...})
  const user = await tx.user.upsert({...})
  const partnership = await tx.counterparty.create({...})
  return { organization, user, partnership }
}, {
  timeout: 30000, // 30 секунд
  maxWait: 5000   // Максимум 5 секунд ожидания
})
```

### 3. Authentication Flow Failure
**Вероятность:** НИЗКАЯ | **Влияние:** КРИТИЧЕСКОЕ  
**Описание:** Нарушение базового flow регистрации → блокировка новых пользователей

**Критические точки:**
- SMS отправка и верификация
- JWT token генерация
- Session создание
- User context установка

**Последствия:**
- 🚫 Полная блокировка onboarding новых пользователей
- 💸 Потеря revenue от новых клиентов
- 📞 Рост support tickets

**Мера защиты:**
```typescript
// Rollback на старую систему при критических ошибках  
const REGISTRATION_ROLLBACK_ENABLED = process.env.REGISTRATION_ROLLBACK === 'true'

if (REGISTRATION_ROLLBACK_ENABLED && errorRate > 5%) {
  // Автоматический откат на старые функции
  return await legacyRegisterOrganization(input)
}
```

### 4. Transaction Safety
**Вероятность:** ВЫСОКАЯ | **Влияние:** КРИТИЧЕСКОЕ  
**Описание:** Отсутствие proper транзакций может создать partial records

**Текущие проблемы:**
```typescript
// ❌ ПРОБЛЕМА: Нет транзакций
const organization = await prisma.organization.create({...})
// Если сбой здесь - organization создана, но user нет!  
const user = await prisma.user.create({...})
```

**Исправление:**
```typescript  
// ✅ РЕШЕНИЕ: Atomic операции
await prisma.$transaction([
  prisma.organization.create({...}),
  prisma.user.create({...}),
  prisma.counterparty.create({...})
])
```

---

## ⚠️ ВЫСОКИЕ РИСКИ (P1)

### 5. API Keys Validation
**Вероятность:** СРЕДНЯЯ | **Влияние:** ВЫСОКОЕ  
**Описание:** Новая логика валидации может отклонять валидные ключи

**Проблемные сценарии:**
- Wildberries API изменяет формат ключей  
- Ozon добавляет новые поля валидации
- Временные недоступности внешних API
- Rate limiting от маркетплейсов

**Последствия:**
- 🛒 Селлеры не могут зарегистрироваться
- 📊 Потеря данных о товарах
- 🤝 Нарушение partnership flow

**Мера защиты:**
```typescript
// Fallback валидация для API ключей
async validateMarketplaceKeys(keys: ApiKeys) {
  try {
    // Новая строгая валидация
    await strictValidation(keys)
  } catch (error) {
    console.warn('Strict validation failed, trying legacy:', error)
    // Откат на старую менее строгую валидацию  
    return await legacyValidation(keys)
  }
}
```

### 6. Partnership Logic
**Вероятность:** СРЕДНЯЯ | **Влияние:** ВЫСОКОЕ  
**Описание:** Изменения могут нарушить автопартнерство и реферальную систему

**Критические компоненты:**
- Partner code обработка (строки 312-396)  
- Автоматическое создание counterparty записей
- Referral points начисление
- Notification система

**Потенциальные поломки:**
```typescript
// Риск: Если partner не найден, создание организации все равно продолжается
// но партнерские связи не создаются
const partner = await prisma.organization.findUnique({
  where: { referralCode: args.input.partnerCode }
})

if (!partner) {
  // ❌ РИСК: Тихий сбой партнерства
  console.warn('Partner not found, but continuing...')  
  // Должно быть более явное handling
}
```

**Мера защиты:** Comprehensive audit logging для всех partnership операций

### 7. DaData Integration  
**Вероятность:** СРЕДНЯЯ | **Влияние:** ВЫСОКОЕ  
**Описание:** Внешний API может изменить формат или стать недоступным

**Зависимости:**
- `/src/services/dadata-service.ts` - внешний API
- Валидация ИНН организаций
- Автозаполнение реквизитов
- Проверка актуальности данных

**Риски отказа:**
- 🌐 Network timeouts
- 📋 API rate limits  
- 💰 Billing issues с DaData
- 🔄 Breaking changes в API

**Мера защиты:**
```typescript
// Circuit breaker pattern для DaData
class DaDataCircuitBreaker {
  private failureCount = 0
  private lastFailureTime = 0
  private readonly FAILURE_THRESHOLD = 5
  private readonly TIMEOUT = 60000 // 1 минута
  
  async call(operation: () => Promise<any>) {
    if (this.shouldReject()) {
      throw new Error('DaData circuit breaker OPEN')
    }
    
    try {
      const result = await operation()
      this.onSuccess()
      return result
    } catch (error) {  
      this.onFailure()
      throw error
    }
  }
}
```

---

## 🔶 УМЕРЕННЫЕ РИСКИ (P2)

### 8. Performance Impact
**Вероятность:** ВЫСОКАЯ | **Влияние:** СРЕДНЕЕ  
**Описание:** Единая функция может работать медленнее из-за дополнительной логики

**Факторы замедления:**
- Больше условных проверок
- Комплексная валидация всех типов
- Multiple external API calls в одной функции
- Database queries оптимизация

**Benchmark цели:**
- Регистрация SELLER: <15 секунд  
- Регистрация бизнес-org: <30 секунд
- API availability: >99.5%
- Error rate: <2%

### 9. Code Complexity
**Вероятность:** ВЫСОКАЯ | **Влияние:** СРЕДНЕЕ  
**Описание:** Объединение может усложнить понимание и поддержку кода

**Проблемы сложности:**
- Большая функция с множественной логикой
- Сложные условные ветвления по типам
- Testing становится комплекснее
- Debugging труднее

**Мера защиты:** Разбиение на smaller focused функции:
```typescript
class OrganizationRegistrationService {
  // Основная функция-оркестратор
  async registerOrganization(input: Input): Promise<Result> {
    if (isBusinessOrganization(input.type)) {
      return this.registerBusinessOrganization(input)
    } else {
      return this.registerSellerOrganization(input)  
    }
  }
  
  // Специализированные функции
  private async registerBusinessOrganization(input: BusinessInput) { }
  private async registerSellerOrganization(input: SellerInput) { }
}
```

### 10. Testing Coverage
**Вероятность:** СРЕДНЯЯ | **Влияние:** СРЕДНЕЕ  
**Описание:** Нужно тестировать больше edge cases в одной функции

**Testing challenges:**
- 4 типа организаций × множественные сценарии
- External API mocking (DaData, SMS, маркетплейсы)  
- Partnership и referral logic coverage
- Error handling для всех paths

**Решение:** Comprehensive test matrix:
```typescript
describe('registerOrganization', () => {
  describe('FULFILLMENT organization', () => {
    it('should create with valid INN')
    it('should fail with invalid INN')  
    it('should handle DaData failures')
    it('should create partnership links')
    // ... 20+ test cases
  })
  
  describe('SELLER organization', () => {
    it('should create with WB API key')
    it('should create with Ozon API key')
    it('should fail without API keys')
    // ... 15+ test cases  
  })
})
```

---

## 🛡️ ОБЩАЯ СТРАТЕГИЯ МИТИГАЦИИ РИСКОВ

### 1. Фазированный подход
- **Фаза 1:** Исправление текущих critical bugs
- **Фаза 2:** Создание новой системы ПАРАЛЛЕЛЬНО старой  
- **Фаза 3:** A/B testing между системами
- **Фаза 4:** Постепенное переключение
- **Фаза 5:** Откат старой системы

### 2. Мониторинг и алерты  
```typescript
// Критические метрики для мониторинга
const CRITICAL_METRICS = {
  registrationErrorRate: '<1%',
  registrationLatency: '<30s p95', 
  databaseConsistency: '100%',
  apiKeyValidationRate: '>95%',
  partnershipCreationRate: '>98%'
}

// Автоматические алерты  
if (errorRate > 1% || latency > 30000) {
  await sendAlert('CRITICAL: Registration issues detected')
  if (errorRate > 5%) {
    await enableRollbackMode()
  }
}
```

### 3. Rollback готовность
- **Feature flags** для быстрого отключения
- **Database migrations** с rollback scripts  
- **Комментарии-переключатели** для instant code rollback
- **Monitoring dashboards** для real-time visibility

### 4. Тестовая стратегия
- **Unit tests:** >90% coverage для новой логики
- **Integration tests:** Все external API interactions
- **E2E tests:** Complete registration flows  
- **Load tests:** Performance под нагрузкой
- **Chaos engineering:** Failure scenarios

---

## 📊 RISK MATRIX

| Риск | Вероятность | Влияние | Приоритет | Мера защиты |
|------|-------------|---------|-----------|-------------|
| Breaking Changes Frontend | Высокая | Критическое | P0 | Комментарии-переключатели |
| Database Integrity | Средняя | Критическое | P0 | Транзакции + мониторинг |  
| Auth Flow Failure | Низкая | Критическое | P0 | Feature flags + rollback |
| Transaction Safety | Высокая | Критическое | P0 | Atomic операции |
| API Keys Validation | Средняя | Высокое | P1 | Fallback валидация |
| Partnership Logic | Средняя | Высокое | P1 | Audit logging |
| DaData Integration | Средняя | Высокое | P1 | Circuit breaker |
| Performance Impact | Высокая | Среднее | P2 | Benchmarking + оптимизация |
| Code Complexity | Высокая | Среднее | P2 | Модульное разбиение |
| Testing Coverage | Средняя | Среднее | P2 | Test matrix |

---

## ✅ ГОТОВНОСТЬ К РИСК-МИНИМИЗАЦИИ

**Статус:** ✅ Все критические риски идентифицированы  
**Защита:** ✅ Меры митигации определены для каждого риска  
**Мониторинг:** ✅ Метрики и алерты подготовлены  
**Rollback:** ✅ Стратегия отката через комментарии готова  

**ВЫВОД:** Проект готов к безопасной реализации с comprehensive risk mitigation.