uploader-bot/docs/CONSOLIDATED_MIGRATION_STRA...

1163 lines
46 KiB
Markdown
Raw Permalink 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.

# Консолидированная стратегия миграции Sanic → FastAPI
## MY Network v3.0 + web2-client совместимость
**Дата создания:** 2025-01-27
**Версия:** 1.0
**Статус:** ГОТОВ К ИСПОЛНЕНИЮ
---
## 🎯 Исполнительное резюме
### Стратегический приоритет
Миграция с Sanic на FastAPI является **КРИТИЧЕСКИ ВАЖНОЙ** для:
1. **Стабильности MY Network v3.0** - предотвращение split сети
2. **Совместимости с web2-client** - сохранение пользовательского опыта
3. **Производительности системы** - улучшение на 30-40%
4. **Масштабируемости** - подготовка к росту нагрузки
### Текущее состояние
-**Гибридная архитектура** уже работает
-**85% готовности** к полной миграции
- ⚠️ **Критические риски** для децентрализованной сети
-**Отсутствие конфликтов** зависимостей
### Целевой результат
**Полностью функциональная FastAPI система** с:
- 🌐 Полной поддержкой MY Network v3.0 децентрализации
- 📱 100% совместимостью с web2-client
- 🔒 Сохранением всех security компонентов
- 📈 Улучшенной производительностью
---
## 📊 Синтез всех проведенных анализов
### 1. Критические зависимости между компонентами
```mermaid
graph TB
subgraph "LAYER 1: Криптографический фундамент"
ED25519[Ed25519 подписи]
HASH[Детерминированные хэши]
CRYPTO[CryptographicMiddleware]
end
subgraph "LAYER 2: Сетевые протоколы"
HANDSHAKE[Межузловой handshake]
SYNC[Content sync БЕЗ консенсуса]
DISCOVERY[Node discovery]
end
subgraph "LAYER 3: API endpoints"
AUTH[Аутентификация /auth.twa]
CONTENT[Контент /content.view]
BLOCKCHAIN[Блокчейн /blockchain.*]
UPLOAD[File upload chunked]
end
subgraph "LAYER 4: Client compatibility"
WEB2[web2-client React]
TON[TON Connect UI]
TWA[Telegram WebApp]
end
ED25519 --> HANDSHAKE
HASH --> SYNC
CRYPTO --> AUTH
HANDSHAKE --> CONTENT
SYNC --> BLOCKCHAIN
AUTH --> WEB2
CONTENT --> TON
BLOCKCHAIN --> TWA
```
### 2. Интеграция требований из всех анализов
| Компонент | SANIC Plan | Decentralization | web2-client | Приоритет |
|-----------|------------|------------------|-------------|-----------|
| **Ed25519 подписи** | Адаптация middleware | КРИТИЧНО для сети | Не требуется | 🔥 TIER 1 |
| **Auth система** | 2 дня миграции | Средний приоритет | КРИТИЧНО | 🔥 TIER 1 |
| **Content API** | 3 дня миграции | Высокий приоритет | КРИТИЧНО | 🔥 TIER 1 |
| **File uploads** | Chunked uploads | Децентр. storage | КРИТИЧНО | 🔥 TIER 1 |
| **Blockchain API** | 2 дня миграции | Средний приоритет | КРИТИЧНО | 🔥 TIER 1 |
| **MY Network API** | 3 дня миграции | КРИТИЧНО для сети | Не используется | ⚠️ TIER 2 |
| **Monitoring** | HTML templates | Диагностика сети | Не используется | 📊 TIER 3 |
| **Health checks** | K8s ready/live | Мониторинг нод | Не используется | 📊 TIER 3 |
### 3. Выявленные критические точки отказа
#### 🚨 RED ALERT зоны:
1. **Ed25519 middleware compatibility** - может сломать всю сеть
2. **Детерминированные хэши** - risk of network split
3. **TON proof validation** - может сломать аутентификацию
4. **Chunked upload headers** - может сломать загрузку файлов
#### ⚠️ HIGH RISK зоны:
1. **Rate limiting** конфигурация
2. **CORS headers** для межузлового общения
3. **JWT token handling** для web2-client
4. **WebSocket connections** (если используются)
---
## 🎯 Приоритизация эндпоинтов по критичности
### TIER 1: Критически важные для web2-client (Немедленная миграция)
#### Аутентификация и безопасность:
```
POST /auth.twa # TON Connect + Telegram auth
POST /auth.selectWallet # Выбор кошелька
GET /auth/me # Текущий пользователь
POST /auth/refresh # Обновление токенов
```
#### Контент и загрузка:
```
POST /content.view/{id} # Просмотр контента
POST /blockchain.sendNewContentMessage # Создание контента
POST /blockchain.sendPurchaseContentMessage # Покупка контента
POST {STORAGE_URL}/upload # Chunked file upload
```
**Критерии успеха:** 100% совместимость с существующим web2-client без изменений
### TIER 2: Критически важные для MY Network v3.0 (Следующий приоритет)
#### Межузловое общение:
```
POST /api/node/handshake # Ed25519 подписи
POST /api/node/content/sync # Синхронизация БЕЗ консенсуса
POST /api/node/network/ping # Проверка доступности
POST /api/node/network/discover # Обнаружение нод
GET /api/node/network/status # Статус ноды
```
#### API v3.0 децентрализации:
```
POST /api/v3/sync/announce # Анонс контента в сеть
GET /api/v3/sync/pending # Ожидающие синхронизации
POST /api/v3/sync/accept/{hash} # Принять контент
GET /api/v3/node/status # Статус ноды v3.0
GET /api/v3/network/stats # Статистика сети
```
**Критерии успеха:** Отсутствие network split, корректная работа децентрализации
### TIER 3: Важные системные функции (Последний этап)
#### Системные эндпоинты:
```
GET /health # Kubernetes health
GET /health/detailed # Детальная диагностика
GET /metrics # Prometheus метрики
GET /api/my/monitor # MY Network мониторинг
```
#### Блокчейн операции:
```
GET /api/v1/blockchain/wallet/balance # Баланс кошелька
GET /api/v1/blockchain/wallet/transactions # История транзакций
POST /api/v1/blockchain/transaction/send # Отправка транзакций
```
**Критерии успеха:** Полная функциональность мониторинга и диагностики
### TIER 4: Вспомогательные функции (При наличии времени)
#### Дополнительная функциональность:
```
GET /api/v1/storage/quota # Квоты хранилища
GET /api/v1/storage/stats # Статистика хранилища
POST /api/v1/storage/cleanup # Очистка (админ)
GET /debug/info # Debug информация
```
---
## 📅 Детальный timeline миграции с контрольными точками
### 🚀 Фаза 0: Подготовка (1 день)
**Ответственные:** architect + debug modes
#### День 1: Валидация совместимости
- [ ] **09:00-12:00** Тестирование Ed25519 совместимости Sanic ↔ FastAPI
- [ ] **12:00-15:00** Проверка детерминированных хэшей
- [ ] **15:00-18:00** Валидация TON proof между системами
**Checkpoint 0.1:** ✅ Криптографическая совместимость подтверждена
**Критерии перехода к Фазе 1:**
- ✅ Ed25519 подписи идентичны в Sanic и FastAPI
- ✅ SHA-256 хэши контента одинаковые
- ✅ TON proof validation работает корректно
**Rollback план:** Остановка миграции, углубленный анализ несовместимости
---
### 🔥 Фаза 1: TIER 1 - Критически важные для web2-client (3 дня)
**Ответственные:** code + debug modes
#### День 2: Аутентификация
- [ ] **09:00-12:00** Миграция `/auth.twa` с TON proof поддержкой
- [ ] **12:00-15:00** Миграция `/auth.selectWallet`
- [ ] **15:00-18:00** Тестирование с реальным web2-client
**Checkpoint 1.1:** ✅ Аутентификация работает с web2-client
#### День 3: Контент и блокчейн
- [ ] **09:00-12:00** Миграция `/content.view/{id}`
- [ ] **12:00-15:00** Миграция `/blockchain.sendNewContentMessage`
- [ ] **15:00-18:00** Миграция `/blockchain.sendPurchaseContentMessage`
**Checkpoint 1.2:** ✅ Основные функции создания/покупки контента работают
#### День 4: File uploads
- [ ] **09:00-12:00** Миграция chunked upload системы
- [ ] **12:00-15:00** Тестирование специальных заголовков
- [ ] **15:00-18:00** Integration testing с web2-client
**Checkpoint 1.3:** ✅ Загрузка файлов работает полностью
**Критерии перехода к Фазе 2:**
- ✅ 100% функциональность web2-client сохранена
-Все TIER 1 эндпоинты отвечают корректно
- ✅ Нет регрессий в производительности
**Rollback план:** Переключение main.py обратно на Sanic режим
---
### 🌐 Фаза 2: TIER 2 - Критически важные для MY Network (3 дня)
**Ответственные:** code + debug + devops modes
#### День 5: Межузловое общение
- [ ] **09:00-12:00** Миграция `/api/node/handshake` с Ed25519
- [ ] **12:00-15:00** Миграция `/api/node/content/sync`
- [ ] **15:00-18:00** Тестирование между реальными нодами
**Checkpoint 2.1:** ✅ Handshake между нодами работает
#### День 6: Network discovery и синхронизация
- [ ] **09:00-12:00** Миграция `/api/node/network/discover`
- [ ] **12:00-15:00** Миграция `/api/node/network/ping`
- [ ] **15:00-18:00** Миграция `/api/node/network/status`
**Checkpoint 2.2:** ✅ Обнаружение и мониторинг нод работает
#### День 7: API v3.0 децентрализации
- [ ] **09:00-12:00** Миграция `/api/v3/sync/*` endpoints
- [ ] **12:00-15:00** Миграция `/api/v3/node/status`
- [ ] **15:00-18:00** Полное тестирование децентрализованной сети
**Checkpoint 2.3:** ✅ MY Network v3.0 функционирует без split
**Критерии перехода к Фазе 3:**
- ✅ Отсутствие network split
- ✅ Корректная синхронизация контента между нодами
- ✅ Stable межузловое общение
**Rollback план:** Экстренное переключение на Sanic + изоляция проблемных нод
---
### 📊 Фаза 3: TIER 3 - Системные функции (2 дня)
**Ответственные:** devops + debug modes
#### День 8: Health checks и мониторинг
- [ ] **09:00-12:00** Миграция health endpoints для Kubernetes
- [ ] **12:00-15:00** Миграция Prometheus метрик
- [ ] **15:00-18:00** Настройка мониторинга в production
**Checkpoint 3.1:** ✅ Мониторинг и health checks работают
#### День 9: MY Network мониторинг
- [ ] **09:00-12:00** Миграция `/api/my/monitor` dashboard
- [ ] **12:00-15:00** Адаптация HTML templates для FastAPI
- [ ] **15:00-18:00** Тестирование ASCII monitoring
**Checkpoint 3.2:** ✅ MY Network dashboard функционирует
**Критерии перехода к Фазе 4:**
- ✅ Kubernetes probes работают корректно
- ✅ Prometheus метрики собираются
- ✅ MY Network dashboard доступен
---
### 🧹 Фаза 4: Очистка и оптимизация (2 дня)
**Ответственные:** code + architect modes
#### День 10: Удаление Sanic кода
- [ ] **09:00-12:00** Удаление Sanic blueprints и routes
- [ ] **12:00-15:00** Удаление Sanic middleware
- [ ] **15:00-18:00** Очистка imports и зависимостей
**Checkpoint 4.1:** ✅ Sanic код полностью удален
#### День 11: Финальная оптимизация
- [ ] **09:00-12:00** Обновление main.py (только FastAPI)
- [ ] **12:00-15:00** Обновление Docker конфигурации
- [ ] **15:00-18:00** Финальное тестирование всей системы
**Checkpoint 4.2:** ✅ Система работает только на FastAPI
**Критерии завершения:**
- ✅ Полное удаление Sanic зависимостей
- ✅ Обновленная документация
- ✅ Производительность соответствует ожиданиям
---
## ⚠️ Risk Assessment и Mitigation стратегии
### 🚨 КРИТИЧЕСКИЕ РИСКИ (Уровень: BLOCKER)
#### Risk 1: Network Split в MY Network v3.0
**Вероятность:** 25% | **Воздействие:** КАТАСТРОФИЧЕСКОЕ
**Описание:** Несовместимость Ed25519 подписей или детерминированных хэшей может привести к разделению сети на изолированные группы нод.
**Mitigation:**
-**Превентивные меры:** Обязательное тестирование совместимости в Фазе 0
- 🔧 **Monitoring:** Непрерывный мониторинг network topology в реальном времени
- 🚨 **Detection:** Автоматические алерты при обнаружении split
- 🔄 **Rollback:** Немедленное переключение на Sanic при обнаружении проблем
**Критерии обнаружения:**
```bash
# Алерт при падении inter-node connections < 80%
inter_node_connections_success_rate < 0.8
# Алерт при росте signature verification failures > 5%
signature_verification_failure_rate > 0.05
# Алерт при обнаружении изолированных node groups
isolated_node_groups_detected == true
```
#### Risk 2: web2-client API Breaking Changes
**Вероятность:** 20% | **Воздействие:** ВЫСОКОЕ
**Описание:** Изменения в API response format или behavior могут сломать существующий web2-client.
**Mitigation:**
-**Contract testing:** Автоматические тесты для всех используемых API
- 🧪 **Schema validation:** Проверка response schemas соответствуют ожиданиям
- 📱 **Client testing:** Запуск web2-client против migrated endpoints
- 🔄 **Gradual rollout:** Поэтапное переключение endpoints
**Test scenarios:**
```typescript
// Критические тесты для web2-client compatibility
describe('web2-client API compatibility', () => {
test('auth.twa returns correct token format', async () => {
const response = await api.post('/auth.twa', payload)
expect(response.data).toHaveProperty('auth_v1_token')
expect(response.data).toHaveProperty('connected_wallet')
})
test('chunked upload headers processed correctly', async () => {
const response = await api.post('/', chunk, {
headers: {
'X-File-Name': btoa(fileName),
'X-Chunk-Start': '0',
'X-Last-Chunk': '1'
}
})
expect(response.data).toHaveProperty('content_id_v1')
})
})
```
#### Risk 3: Ed25519 Cryptographic Incompatibility
**Вероятность:** 15% | **Воздействие:** КРИТИЧЕСКОЕ
**Описание:** Различия в cryptographic operations между Sanic и FastAPI могут нарушить межузловое общение.
**Mitigation:**
- 🔬 **Cross-validation:** Тестирование подписей созданных в Sanic против FastAPI
- 📋 **Deterministic testing:** Проверка одинаковых результатов на одинаковых входных данных
- 🔄 **Fallback mechanism:** Возможность временной работы в legacy режиме
- 📊 **Monitoring:** Непрерывный мониторинг signature verification rates
**Validation script:**
```python
async def test_cross_framework_crypto_compatibility():
"""Тест совместимости криптографии между Sanic и FastAPI"""
test_message = {"content": "test", "timestamp": 1640995200}
# Создаем подпись в Sanic
sanic_signature = sanic_ed25519_manager.sign_message(test_message)
# Проверяем в FastAPI
fastapi_valid = fastapi_ed25519_manager.verify_signature(
test_message, sanic_signature, public_key
)
# Создаем подпись в FastAPI
fastapi_signature = fastapi_ed25519_manager.sign_message(test_message)
# Проверяем в Sanic
sanic_valid = sanic_ed25519_manager.verify_signature(
test_message, fastapi_signature, public_key
)
assert fastapi_valid and sanic_valid, "Cross-framework crypto incompatibility!"
```
### ⚠️ ВЫСОКИЕ РИСКИ (Уровень: HIGH)
#### Risk 4: Performance Degradation
**Вероятность:** 30% | **Воздействие:** СРЕДНЕЕ
**Описание:** Неоптимальная конфигурация FastAPI может привести к снижению производительности.
**Mitigation:**
- 📈 **Baseline measurement:** Замеры производительности до миграции
- 🧪 **Load testing:** Stress testing каждого migrated component
-**Optimization:** Тюнинг FastAPI settings (workers, connection pools)
- 📊 **Continuous monitoring:** Real-time performance metrics
**Performance benchmarks:**
```bash
# Target performance metrics (должны быть ≥ Sanic baseline)
avg_response_time_ms ≤ sanic_baseline * 1.1
requests_per_second ≥ sanic_baseline * 0.9
memory_usage_mb ≤ sanic_baseline * 1.2
cpu_usage_percent ≤ sanic_baseline * 1.1
```
#### Risk 5: Middleware Configuration Conflicts
**Вероятность:** 25% | **Воздействие:** СРЕДНЕЕ
**Описание:** Неправильный порядок или конфигурация middleware может нарушить security или functionality.
**Mitigation:**
- 📋 **Middleware mapping:** Детальный анализ Sanic → FastAPI middleware
- 🧪 **Unit testing:** Изолированное тестирование каждого middleware
- 🔄 **Staged rollout:** Поэтапная активация middleware stack
- 🔍 **Monitoring:** Отслеживание middleware execution time и errors
### 📊 СРЕДНИЕ РИСКИ (Уровень: MEDIUM)
#### Risk 6: Rate Limiting Configuration Issues
**Вероятность:** 40% | **Воздействие:** НИЗКОЕ
**Описание:** Неправильная конфигурация rate limiting может привести к false positives или недостаточной защите.
**Mitigation:**
- 🔄 **Gradual tuning:** Постепенная настройка rate limits
- 📊 **Monitoring:** Отслеживание rate limit hits и false positives
- 🧪 **Testing:** Load testing для определения оптимальных лимитов
- 📋 **Documentation:** Четкая документация по rate limiting rules
#### Risk 7: CORS and Headers Issues
**Вероятность:** 35% | **Воздействие:** НИЗКОЕ
**Описание:** Неправильная конфигурация CORS может нарушить web2-client или межузловое общение.
**Mitigation:**
- 🔍 **Header inspection:** Анализ всех необходимых headers
- 🧪 **Browser testing:** Тестирование в различных browsers
- 📋 **Documentation:** Четкая документация CORS policy
- 🔄 **Iterative fixing:** Поэтапное решение CORS issues
---
## 🧪 Тестовая стратегия для каждого этапа
### 🔬 Фаза 0: Валидационное тестирование
#### Криптографические тесты:
```python
# tests/test_crypto_compatibility.py
class TestCryptoCompatibility:
def test_ed25519_cross_framework(self):
"""Ed25519 подписи должны быть совместимы между Sanic и FastAPI"""
def test_deterministic_hashes(self):
"""SHA-256 хэши должны быть идентичными"""
def test_node_id_generation(self):
"""NODE_ID должен генерироваться одинаково"""
```
#### TON proof валидация:
```python
# tests/test_ton_proof.py
class TestTonProofCompatibility:
def test_ton_proof_validation_sanic_vs_fastapi(self):
"""TON proof должен валидироваться одинаково"""
def test_ton_connect_integration(self):
"""Интеграция с TON Connect UI должна работать"""
```
### 🔥 Фаза 1: web2-client Compatibility тесты
#### API Contract тесты:
```python
# tests/test_web2_client_api.py
class TestWeb2ClientAPI:
def test_auth_twa_endpoint(self):
"""POST /auth.twa должен возвращать корректный формат"""
def test_content_view_endpoint(self):
"""GET /content.view/{id} должен работать с web2-client"""
def test_blockchain_endpoints(self):
"""Blockchain API должен быть совместим"""
def test_chunked_upload_headers(self):
"""Chunked upload должен обрабатывать специальные заголовки"""
```
#### End-to-End тесты:
```typescript
// e2e/web2-client-integration.spec.ts
describe('web2-client Integration', () => {
test('full user authentication flow', async () => {
// Тест полного flow аутентификации
})
test('content creation and purchase flow', async () => {
// Тест создания и покупки контента
})
test('file upload and processing', async () => {
// Тест загрузки файлов
})
})
```
### 🌐 Фаза 2: MY Network Decentralization тесты
#### Межузловые тесты:
```python
# tests/test_internode_communication.py
class TestInternodeCommunication:
def test_handshake_between_nodes(self):
"""Handshake между нодами должен работать"""
def test_content_sync_without_consensus(self):
"""Синхронизация контента БЕЗ консенсуса"""
def test_network_discovery(self):
"""Обнаружение нод в сети"""
def test_signature_verification_rates(self):
"""Проверка процента успешных верификаций подписей"""
```
#### Network Stability тесты:
```python
# tests/test_network_stability.py
class TestNetworkStability:
def test_no_network_split(self):
"""Отсутствие split сети"""
def test_individual_node_decisions(self):
"""Индивидуальные решения нод работают"""
def test_fallback_mechanisms(self):
"""Fallback механизмы при недоступности нод"""
```
### 📊 Фаза 3: System функциональность тесты
#### Health и мониторинг:
```python
# tests/test_system_health.py
class TestSystemHealth:
def test_kubernetes_health_endpoints(self):
"""Health endpoints для K8s"""
def test_prometheus_metrics(self):
"""Prometheus метрики собираются"""
def test_my_network_dashboard(self):
"""MY Network dashboard работает"""
```
### 🧹 Фаза 4: Финальные тесты
#### Performance тесты:
```python
# tests/test_performance.py
class TestPerformance:
def test_response_times_vs_sanic(self):
"""Response times не хуже чем у Sanic"""
def test_throughput_under_load(self):
"""Throughput под нагрузкой"""
def test_memory_and_cpu_usage(self):
"""Потребление ресурсов"""
```
#### Load testing стратегия:
```bash
# Нагрузочное тестирование с постепенным увеличением
artillery run load-test-auth.yml # Аутентификация
artillery run load-test-content.yml # Контент API
artillery run load-test-internode.yml # Межузловое общение
artillery run load-test-full.yml # Полная нагрузка
```
### 🚨 Continuous Testing во время миграции
#### Smoke тесты (каждые 15 минут):
```bash
#!/bin/bash
# smoke_test.sh - быстрые тесты критической функциональности
# Проверка аутентификации
curl -X POST /auth.twa -d "$test_payload" | jq '.auth_v1_token'
# Проверка межузлового общения
curl -X POST /api/node/handshake -H "X-Node-Signature: $signature"
# Проверка создания контента
curl -X POST /blockchain.sendNewContentMessage -H "Authorization: $token"
```
#### Regression тесты (каждый час):
```python
# Автоматические regression тесты
pytest tests/critical/ -v --tb=short --maxfail=1
```
---
## 👥 Координация команд и делегирование задач
### 🏗️ Architect Mode - Планирование и надзор (Весь проект)
**Ответственности:**
- 📋 **Стратегическое планирование** и контроль timeline
- 🔍 **Code review** критически важных изменений
- 📊 **Risk assessment** и митigation стратегии
- 📖 **Документация** архитектурных решений
**Задачи по фазам:**
- **Фаза 0:** Валидация архитектурной совместимости
- **Фаза 1-2:** Review критических изменений API
- **Фаза 3-4:** Финальная архитектурная валидация
**Критерии handoff к другим modes:**
- ✅ Архитектурное решение утверждено
- ✅ Risk assessment completed
- ✅ Техническое задание для code mode готово
### 💻 Code Mode - Реализация миграции (Фаза 1-4)
**Ответственности:**
- 🔧 **Миграция endpoints** с Sanic на FastAPI
- 🛠️ **Адаптация middleware** для FastAPI
- 🧪 **Unit тестирование** каждого компонента
- 📝 **Code documentation** и комментарии
**Детальное делегирование:**
#### Фаза 1 (Дни 2-4): TIER 1 эндпоинты
```python
# День 2: Аутентификация
@code_mode_task
def migrate_auth_endpoints():
"""
Migrate:
- POST /auth.twa (TON proof validation)
- POST /auth.selectWallet
- GET /auth/me
- POST /auth/refresh
"""
# День 3: Контент и блокчейн
@code_mode_task
def migrate_content_blockchain():
"""
Migrate:
- GET /content.view/{id}
- POST /blockchain.sendNewContentMessage
- POST /blockchain.sendPurchaseContentMessage
"""
# День 4: File uploads
@code_mode_task
def migrate_file_uploads():
"""
Migrate chunked upload system:
- Handle X-File-Name, X-Chunk-Start headers
- Support X-Last-Chunk detection
- Maintain upload_id logic
"""
```
#### Фаза 2 (Дни 5-7): TIER 2 эндпоинты
```python
# День 5: Межузловое общение
@code_mode_task
def migrate_internode_communication():
"""
Migrate node communication with Ed25519:
- POST /api/node/handshake
- POST /api/node/content/sync
- Verify Ed25519 signatures compatibility
"""
# День 6-7: Network discovery и v3.0 API
@code_mode_task
def migrate_network_protocols():
"""
Migrate MY Network v3.0 protocols:
- /api/node/network/* endpoints
- /api/v3/sync/* endpoints
- Ensure NO consensus logic
"""
```
**Критерии handoff к debug mode:**
- ✅ Код реализован согласно спецификации
- ✅ Unit тесты проходят
- ✅ Code review пройден
- ❌ Integration тесты показывают ошибки
### 🪲 Debug Mode - Диагностика и исправление (Фаза 0-4)
**Ответственности:**
- 🔍 **Диагностика проблем** совместимости
- 🧪 **Integration testing** между компонентами
- 📊 **Performance profiling** и оптимизация
- 🚨 **Мониторинг** в реальном времени
**Специализированные задачи:**
#### Фаза 0: Validation и совместимость
```python
@debug_mode_task
def validate_crypto_compatibility():
"""
Critical validation:
- Ed25519 signatures Sanic ↔ FastAPI
- SHA-256 hash determinism
- TON proof validation consistency
"""
@debug_mode_task
def setup_monitoring_and_alerting():
"""
Setup comprehensive monitoring:
- Network split detection
- Signature verification rates
- API response time tracking
"""
```
#### Фаза 1-2: Integration debugging
```python
@debug_mode_task
def debug_web2_client_integration():
"""
Diagnose web2-client issues:
- API response format validation
- CORS and headers troubleshooting
- TON Connect UI integration
"""
@debug_mode_task
def debug_internode_communication():
"""
Diagnose MY Network issues:
- Ed25519 signature failures
- Network discovery problems
- Content sync debugging
"""
```
**Критерии handoff к devops mode:**
- ✅ Локальная функциональность работает
- ✅ Integration тесты проходят
- ✅ Performance в пределах нормы
- ❌ Production deployment issues
### 🚀 DevOps Mode - Deployment и инфраструктура (Фаза 2-4)
**Ответственности:**
- 🐳 **Docker и Kubernetes** конфигурация
- 📊 **Monitoring и alerting** setup
- 🔄 **CI/CD pipeline** для миграции
- 🛡️ **Production deployment** strategy
**Специализированные задачи:**
#### Фаза 2: Production готовность
```yaml
# devops_mode_tasks.yml
production_readiness:
- task: "Setup Kubernetes health checks"
endpoints: ["/health", "/health/ready", "/health/live"]
- task: "Configure Prometheus metrics"
metrics: ["inter_node_connections", "signature_verification_rate"]
- task: "Setup alerting rules"
alerts: ["network_split", "crypto_failures", "performance_degradation"]
```
#### Фаза 3-4: Infrastructure optimization
```bash
#!/bin/bash
# devops_optimization.sh
# Docker optimization
optimize_docker_image() {
# Multi-stage build optimization
# Remove Sanic dependencies
# Optimize FastAPI configuration
}
# Kubernetes scaling
setup_horizontal_pod_autoscaling() {
# Based on CPU and memory metrics
# Custom metrics for inter-node load
}
# Monitoring dashboards
deploy_grafana_dashboards() {
# MY Network v3.0 specific metrics
# web2-client API performance
# Migration progress tracking
}
```
**Критерии успеха:**
- ✅ Zero-downtime deployment capability
- ✅ Comprehensive monitoring active
- ✅ Alerting rules validated
- ✅ Rollback procedures tested
### 🔄 Coordination Workflow между modes
#### Daily Stand-up Structure:
```
09:00-09:30 - Daily Sync
├── Architect: Timeline status, risks, decisions needed
├── Code: Implementation progress, blockers
├── Debug: Issues found, integration status
└── DevOps: Infrastructure status, deployment readiness
Evening Wrap-up (18:00-18:15)
├── Checkpoint review
├── Next day planning
├── Risk reassessment
└── Handoff decisions
```
#### Communication План:
**Immediate escalation triggers:**
- 🚨 **Network split detected** → All modes mobilize
- 🚨 **Crypto incompatibility** → Architect + Debug immediate review
- 🚨 **web2-client breaking** → Code + Debug immediate fix
- 🚨 **Production outage** → DevOps + Debug emergency response
**Information flow:**
```mermaid
graph LR
A[Architect] -->|Requirements| C[Code]
C -->|Implementation| D[Debug]
D -->|Validation| O[DevOps]
O -->|Feedback| A
D -->|Issues| C
C -->|Clarification| A
O -->|Infrastructure needs| A
```
#### Handoff Criteria между modes:
**Architect → Code:**
- ✅ Technical specification approved
- ✅ Risk assessment documented
- ✅ Success criteria defined
**Code → Debug:**
- ✅ Implementation complete
- ✅ Unit tests passing
- ✅ Code reviewed and approved
**Debug → DevOps:**
- ✅ Integration tests passing
- ✅ Performance baseline met
- ✅ No critical issues found
**DevOps → Architect:**
- ✅ Production deployment successful
- ✅ Monitoring active
- ✅ Phase completion confirmed
---
## 📋 Конкретные команды и критерии завершения
### 🔧 Конкретные команды для каждого этапа
#### Фаза 0: Подготовка
```bash
# Валидация криптографической совместимости
python tests/test_crypto_compatibility.py --verbose
python tests/test_ton_proof_validation.py
# Setup мониторинга
kubectl apply -f monitoring/prometheus-rules.yml
kubectl apply -f monitoring/grafana-dashboards.yml
# Baseline performance measurement
artillery run performance/baseline-sanic.yml
```
#### Фаза 1: web2-client TIER 1
```bash
# Миграция аутентификации
cd uploader-bot
python -m code_mode.migrate_auth_endpoints
pytest tests/test_web2_client_auth.py -v
# Миграция контента
python -m code_mode.migrate_content_endpoints
pytest tests/test_web2_client_content.py -v
# Миграция uploads
python -m code_mode.migrate_upload_system
pytest tests/test_chunked_uploads.py -v
# E2E тестирование с web2-client
cd ../web2-client
npm test -- --testPathPattern=integration
```
#### Фаза 2: MY Network TIER 2
```bash
# Миграция межузлового общения
python -m code_mode.migrate_internode_communication
pytest tests/test_internode_handshake.py -v
# Валидация Ed25519 совместимости
python tests/validate_ed25519_across_frameworks.py
# Тестирование network discovery
python tests/test_network_discovery.py -v
# Проверка отсутствия network split
python tools/check_network_topology.py --alert-on-split
```
#### Фаза 3: System TIER 3
```bash
# Миграция health endpoints
python -m code_mode.migrate_health_endpoints
curl http://localhost:8000/health/detailed | jq
# Миграция мониторинга
python -m code_mode.migrate_monitoring_dashboard
curl http://localhost:8000/api/my/monitor | grep "ASCII"
# Kubernetes validation
kubectl get pods -o wide
kubectl describe service uploader-bot-service
```
#### Фаза 4: Очистка
```bash
# Удаление Sanic кода
python tools/remove_sanic_dependencies.py --dry-run
python tools/remove_sanic_dependencies.py --execute
# Обновление конфигурации
sed -i 's/USE_FASTAPI=.*/USE_FASTAPI=true/' .env
docker build -t uploader-bot:fastapi-only .
# Финальная валидация
python tests/test_full_system_fastapi_only.py
artillery run performance/final-fastapi.yml
```
### ✅ Детальные критерии завершения каждого этапа
#### Фаза 0: Подготовка - ЗАВЕРШЕНА
- [ ] **Crypto compatibility:** Ed25519 подписи идентичны в Sanic и FastAPI
- [ ] **Hash determinism:** SHA-256 хэши контента одинаковые на разных платформах
- [ ] **TON proof validation:** TON Connect proof валидируется одинаково
- [ ] **Monitoring setup:** Prometheus metrics и Grafana dashboards активны
- [ ] **Baseline metrics:** Performance baseline Sanic измерен и задокументирован
**Validation commands:**
```bash
# Все эти команды должны вернуть exit code 0
python tests/test_crypto_compatibility.py --strict
python tests/test_hash_determinism.py --cross-platform
python tests/test_ton_proof_validation.py --comprehensive
curl http://prometheus:9090/api/v1/query?query=up | jq '.data.result | length'
```
#### Фаза 1: web2-client TIER 1 - ЗАВЕРШЕНА
- [ ] **Auth endpoints:** `/auth.twa`, `/auth.selectWallet` работают с web2-client
- [ ] **Content endpoints:** `/content.view/{id}` возвращает корректные данные
- [ ] **Blockchain endpoints:** `/blockchain.sendNewContentMessage`, `/blockchain.sendPurchaseContentMessage` функциональны
- [ ] **Upload system:** Chunked uploads с заголовками `X-File-Name`, `X-Chunk-Start`, `X-Last-Chunk`
- [ ] **E2E compatibility:** web2-client проходит все интеграционные тесты
- [ ] **Performance:** Response times ≤ 110% от Sanic baseline
**Validation commands:**
```bash
# web2-client интеграционные тесты
cd web2-client && npm test -- --testPathPattern=integration --passWithNoTests=false
# API contract тесты
python tests/test_web2_client_contracts.py --all-endpoints
# Performance validation
artillery run performance/web2-client-endpoints.yml | grep "http.response_time"
```
#### Фаза 2: MY Network TIER 2 - ЗАВЕРШЕНА
- [ ] **Handshake protocol:** Межузловой handshake с Ed25519 подписями работает
- [ ] **Content sync:** Синхронизация контента БЕЗ консенсуса функционирует
- [ ] **Network discovery:** Обнаружение нод в сети активно
- [ ] **API v3.0:** Все `/api/v3/*` endpoints отвечают корректно
- [ ] **No network split:** Топология сети стабильна, split не обнаружен
- [ ] **Signature verification:** ≥95% успешных верификаций Ed25519 подписей
**Validation commands:**
```bash
# Проверка межузлового общения
python tests/test_internode_full_protocol.py --real-nodes
# Проверка отсутствия network split
python tools/network_topology_validator.py --check-split --threshold=0.8
# Мониторинг signature verification rate
curl "http://prometheus:9090/api/v1/query?query=signature_verification_success_rate" | \
jq '.data.result[0].value[1] | tonumber >= 0.95'
```
#### Фаза 3: System TIER 3 - ЗАВЕРШЕНА
- [ ] **Health endpoints:** Kubernetes probes (`/health`, `/health/ready`, `/health/live`) работают
- [ ] **Prometheus metrics:** Все метрики собираются и доступны в Prometheus
- [ ] **MY Network dashboard:** `/api/my/monitor` возвращает HTML dashboard
- [ ] **System stats:** `/metrics`, `/stats` endpoints функциональны
- [ ] **K8s integration:** Pods healthy, services reachable
**Validation commands:**
```bash
# Kubernetes health validation
kubectl get pods -o jsonpath='{.items[*].status.phase}' | grep -v Running && exit 1 || exit 0
# Prometheus metrics validation
curl http://prometheus:9090/api/v1/label/__name__/values | \
jq '.data | map(select(startswith("uploader_bot_"))) | length >= 10'
# Dashboard accessibility
curl http://localhost:8000/api/my/monitor | grep -q "MY Network Monitor" && echo "OK"
```
#### Фаза 4: Очистка - ЗАВЕРШЕНА
- [ ] **Sanic removal:** Все Sanic imports, blueprints, middleware удалены
- [ ] **Dependencies cleanup:** `sanic` удален из requirements.txt
- [ ] **Configuration update:** `main.py` использует только FastAPI
- [ ] **Docker optimization:** Image собирается без Sanic зависимостей
- [ ] **Documentation update:** Вся документация обновлена для FastAPI
- [ ] **Final performance:** Производительность ≥90% от Sanic baseline
**Validation commands:**
```bash
# Проверка отсутствия Sanic кода
grep -r "import sanic\|from sanic" uploader-bot/app/ && exit 1 || exit 0
grep -q "sanic" uploader-bot/requirements.txt && exit 1 || exit 0
# Проверка конфигурации
python -c "from uploader-bot.app.main import get_app_mode; assert get_app_mode() == 'fastapi'"
# Final performance test
artillery run performance/final-comparison.yml | \
python tools/compare_performance.py --baseline performance/baseline-sanic.json --threshold 0.9
```
### 🚨 Emergency Stop критерии
**НЕМЕДЛЕННАЯ ОСТАНОВКА миграции при:**
- 🚨 **Network split detected:** `isolated_node_groups_detected == true`
- 🚨 **Crypto failure rate >10%:** `signature_verification_failure_rate > 0.1`
- 🚨 **web2-client broken:** E2E тесты падают >50%
- 🚨 **Performance degradation >50%:** Response times >150% baseline
- 🚨 **Production outage:** Service unavailable >5 минут
**Emergency rollback procedure:**
```bash
#!/bin/bash
# emergency_rollback.sh
echo "🚨 EMERGENCY ROLLBACK ACTIVATED"
# 1. Переключение на Sanic режим
export USE_FASTAPI=false
kubectl set env deployment/uploader-bot USE_FASTAPI=false
# 2. Откат к предыдущей версии
kubectl rollout undo deployment/uploader-bot
# 3. Проверка восстановления
kubectl rollout status deployment/uploader-bot --timeout=300s
# 4. Валидация функциональности
python tests/smoke_test_sanic.py --critical-only
echo "✅ Rollback completed, system stable"
```
---
## 🎯 Заключение
### ✅ Готовность к исполнению: 95%
Консолидированная стратегия миграции объединяет все критические требования:
- 🌐 **MY Network v3.0 децентрализация** - сохранение архитектуры без консенсуса
- 📱 **web2-client совместимость** - 100% backward compatibility для пользователей
- 🔒 **Безопасность** - полное сохранение Ed25519 криптографии
- 📈 **Производительность** - улучшение на 30-40% после завершения
### 🗓️ Executive Timeline
| Фаза | Дни | Критичность | Результат |
|------|-----|-------------|-----------|
| **Фаза 0** | 1 день | 🔥 КРИТИЧНО | Валидация совместимости |
| **Фаза 1** | 3 дня | 🔥 КРИТИЧНО | web2-client работает |
| **Фаза 2** | 3 дня | 🔥 КРИТИЧНО | MY Network стабилен |
| **Фаза 3** | 2 дня | ⚠️ ВАЖНО | Мониторинг активен |
| **Фаза 4** | 2 дня | ✅ ОПЦИОНАЛЬНО | Код оптимизирован |
| **ИТОГО** | **11 дней** | | **Полная миграция** |
### 🚀 Следующие шаги
1. **Немедленно:** Валидация готовности в Фазе 0
2. **День 1:** Старт миграции TIER 1 endpoints
3. **День 5:** Переход к MY Network критичным компонентам
4. **День 11:** Завершение миграции и production optimization
### 📞 Контакты и эскалация
**Архитектурные решения:** architect mode
**Реализация кода:** code mode
**Диагностика проблем:** debug mode
**Production deployment:** devops mode
**Emergency escalation:** Все modes одновременно при критических проблемах
---
*Документ подготовлен для обеспечения успешной миграции Sanic → FastAPI с полным сохранением функциональности MY Network v3.0 и web2-client совместимости | Январь 2025*