PRO.seller MVP — Проект
Версия: 1.0.0
Дата: 2025-12-19
Статус: Planning
1. ЦЕЛЬ MVP
Запустить работающую систему продаж за 2 недели:
- Принять реальный заказ через сайт
- Обработать заказ через интерфейс
- Отгрузить через OZON/СДЭК
- Получить деньги
- Проанализировать результаты
2. КРИТЕРИИ УСПЕХА MVP
| Метрика |
Цель |
Как измерить |
| Заказов через систему |
≥10 |
Счётчик в базе |
| Конверсия сайта |
≥2% |
Аналитика |
| Время обработки заказа |
<5 мин |
Таймер в системе |
| Ошибок синхронизации |
0 |
Логи |
| Uptime |
99% |
Мониторинг |
3. SCOPE MVP (ЧТО ВХОДИТ)
3.1 CORE (Ядро)
✅ Auth
├── [x] Логин/логаут
├── [x] JWT токены
├── [x] Роли (admin, manager, operator)
└── [x] Сессии
✅ Users
├── [x] CRUD пользователей
├── [x] Права доступа
└── [x] Профиль
✅ Settings
├── [x] Настройки системы
├── [x] API ключи (OZON, WB)
└── [x] Webhook URLs
3.2 PIM (Товары)
✅ Products
├── [x] Карточка товара
├── [x] SKU, название, описание
├── [x] Цены (закупка, база, МП)
├── [x] Изображения (до 5 шт)
├── [x] Габариты, вес
└── [x] Статус (активен/архив)
✅ Categories
├── [x] Дерево категорий
├── [x] Наценка по категории
└── [x] Маппинг на категории МП
✅ Inventory
├── [x] Остатки по складам
├── [x] Резервирование
└── [x] История движения
✅ Import
├── [x] Импорт из Excel
└── [x] Импорт из 1С (XML)
3.3 ERP (Заказы)
✅ Orders
├── [x] Список заказов
├── [x] Карточка заказа
├── [x] Статусы (workflow)
├── [x] Позиции заказа
├── [x] Данные клиента
└── [x] Комментарии
✅ Order Workflow
├── [x] new → approved → assembling → shipped → delivered
├── [x] Смена статуса вручную
├── [x] Автосмена при событиях МП
└── [x] История изменений
✅ Suppliers (базово)
├── [x] Список поставщиков
├── [x] Контакты
└── [x] Прайсы поставщиков
3.4 MARKET (Маркетплейсы)
✅ OZON
├── [x] Подключение аккаунта
├── [x] Синхронизация заказов (FBS)
├── [x] Статусы отправлений
├── [x] Создание отгрузки
└── [x] Печать этикеток
⬜ WB (после MVP)
⬜ YM (после MVP)
3.5 DELIVERY (Доставка)
✅ Warehouses
├── [x] Список складов
├── [x] Адреса
└── [x] Привязка к МП
✅ Shipments
├── [x] Создание отгрузки
├── [x] Статус отгрузки
└── [x] Трек-номер
⬜ СДЭК API (после MVP)
⬜ Почта API (после MVP)
3.6 CRM (Клиенты)
✅ Clients
├── [x] Карточка клиента
├── [x] История заказов
├── [x] Контакты (телефон, email)
└── [x] Комментарии
3.7 ANALYTICS (Аналитика)
✅ Dashboard
├── [x] Заказы сегодня/неделя/месяц
├── [x] Выручка
├── [x] Средний чек
└── [x] Топ товаров
✅ Reports (базово)
├── [x] Отчёт по продажам
└── [x] Отчёт по остаткам
3.8 ROBOTS (Автоматизация)
✅ Sync
├── [x] Авто-синхронизация заказов OZON (каждые 5 мин)
├── [x] Авто-обновление статусов
└── [x] Webhook приём
✅ Alerts
├── [x] Telegram-уведомления о заказах
└── [x] Alert при низком остатке
3.9 STOREFRONT (Витрина)
✅ Catalog
├── [x] Страница каталога
├── [x] Карточка товара
├── [x] Фильтры
└── [x] Поиск
✅ Cart & Checkout
├── [x] Корзина
├── [x] Оформление заказа
├── [x] Форма доставки
└── [x] Подтверждение
✅ Chat (WhatsApp/Telegram)
├── [x] Виджет на сайте
└── [x] Приём заказов через чат
4. НЕ ВХОДИТ В MVP
| Модуль |
Причина |
Когда |
| WB интеграция |
Сложность API |
v1.1 |
| YM интеграция |
Приоритет ниже |
v1.2 |
| Marketing (email, SMS) |
Не критично |
v1.1 |
| СДЭК/Почта API |
Можно вручную |
v1.1 |
| Биллинг SaaS |
Сначала для себя |
v2.0 |
| Мобильное приложение |
Веб достаточно |
v2.0 |
| AI-генерация контента |
Nice to have |
v1.2 |
5. АРХИТЕКТУРА MVP
┌─────────────────────────────────────────────────────────────────────┐
│ PRO.seller MVP │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ STOREFRONT │ │ ADMIN │ │ API │ │
│ │ :8600 │ │ :8510 │ │ :8500 │ │
│ │ │ │ │ │ │ │
│ │ • Каталог │ │ • Dashboard │ │ • REST │ │
│ │ • Корзина │ │ • PIM │ │ • Webhooks │ │
│ │ • Checkout │ │ • Orders │ │ • OZON sync │ │
│ │ • Чат │ │ • Analytics │ │ │ │
│ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ │
│ │ │ │ │
│ └────────────────────┼────────────────────┘ │
│ ▼ │
│ ┌─────────────────────┐ │
│ │ PostgreSQL │ │
│ │ pro_seller (MVP) │ │
│ └─────────────────────┘ │
│ │ │
│ ┌────────────────────┼────────────────────┐ │
│ ▼ ▼ ▼ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ OZON API │ │ Telegram │ │ S3/Disk │ │
│ │ │ │ Bot │ │ (images) │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────┘
6. БАЗА ДАННЫХ MVP
Схема таблиц
-- CORE
usr_users -- Пользователи системы
usr_sessions -- Сессии
-- PIM
cat_categories -- Категории
cat_products -- Товары
cat_images -- Изображения товаров
cat_attributes -- Атрибуты товаров
cat_warehouses -- Склады
cat_stock -- Остатки
cat_stock_history -- История движения
-- ERP
ord_orders -- Заказы
ord_items -- Позиции заказов
ord_history -- История изменений заказа
prc_suppliers -- Поставщики
prc_prices -- Прайсы поставщиков
-- CRM
crm_clients -- Клиенты
crm_client_orders -- Связь клиент-заказы
-- MARKET
mp_accounts -- Аккаунты МП (OZON, WB)
mp_orders -- Заказы с МП (сырые данные)
mp_sync_log -- Лог синхронизации
-- DELIVERY
shp_shipments -- Отгрузки
shp_tracking -- Трекинг
-- STOREFRONT
sf_cart -- Корзины
sf_cart_items -- Позиции корзин
sf_sessions -- Сессии посетителей
-- ANALYTICS
log_events -- События для аналитики
7. ТЕСТОВАЯ МОДЕЛЬ (USER SIMULATOR)
7.1 Концепция
┌─────────────────────────────────────────────────────────────────────┐
│ TEST SIMULATOR │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ BUYER │ │ OPERATOR │ │ MANAGER │ │
│ │ (bot) │ │ (bot) │ │ (bot) │ │
│ │ │ │ │ │ │ │
│ │ • Browsing │ │ • Process │ │ • Analytics │ │
│ │ • Add cart │ │ • Ship │ │ • Reports │ │
│ │ • Checkout │ │ • Update │ │ • Decisions │ │
│ │ • Pay │ │ │ │ │ │
│ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ │
│ │ │ │ │
│ └────────────────────┼────────────────────┘ │
│ ▼ │
│ ┌─────────────────────┐ │
│ │ PRO.seller │ │
│ │ (через UI/API) │ │
│ └─────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────┘
7.2 Роли симулятора
BUYER BOT (Покупатель)
class BuyerBot:
"""Симулирует поведение покупателя"""
scenarios = [
"browse_and_buy", # Просмотр → покупка
"browse_and_leave", # Просмотр → уход
"cart_abandon", # Бросил корзину
"quick_buy", # Быстрая покупка
"return_customer", # Повторный клиент
"chat_order", # Заказ через чат
]
actions = [
"visit_catalog", # Зайти в каталог
"view_product", # Посмотреть товар
"add_to_cart", # Добавить в корзину
"remove_from_cart", # Удалить из корзины
"proceed_checkout", # Перейти к оформлению
"fill_contacts", # Заполнить контакты
"select_delivery", # Выбрать доставку
"confirm_order", # Подтвердить заказ
"send_chat_message", # Написать в чат
]
OPERATOR BOT (Оператор)
class OperatorBot:
"""Симулирует работу оператора"""
scenarios = [
"process_new_orders", # Обработка новых
"handle_ozon_sync", # Обработка OZON
"create_shipment", # Создание отгрузки
"handle_return", # Обработка возврата
]
actions = [
"login", # Войти в систему
"view_dashboard", # Посмотреть дашборд
"open_orders_list", # Открыть список заказов
"open_order", # Открыть заказ
"change_status", # Сменить статус
"print_label", # Печать этикетки
"add_comment", # Добавить комментарий
"sync_ozon", # Синхронизировать OZON
]
MANAGER BOT (Менеджер)
class ManagerBot:
"""Симулирует работу менеджера"""
scenarios = [
"daily_review", # Ежедневный обзор
"weekly_report", # Недельный отчёт
"price_update", # Обновление цен
"stock_check", # Проверка остатков
]
actions = [
"view_analytics", # Аналитика
"export_report", # Выгрузить отчёт
"update_prices", # Обновить цены
"add_product", # Добавить товар
"edit_product", # Редактировать товар
]
7.3 Реализация симулятора
# tests/simulator/main.py
import asyncio
from playwright.async_api import async_playwright
from .bots import BuyerBot, OperatorBot, ManagerBot
from .scenarios import ScenarioRunner
from .reporter import TestReporter
class UserSimulator:
"""Главный класс симулятора"""
def __init__(self, config):
self.config = config
self.buyer = BuyerBot(config)
self.operator = OperatorBot(config)
self.manager = ManagerBot(config)
self.reporter = TestReporter()
async def run_full_cycle(self):
"""Полный цикл: покупка → обработка → отгрузка"""
# 1. Покупатель делает заказ
order_id = await self.buyer.run_scenario("browse_and_buy")
# 2. Оператор обрабатывает заказ
await self.operator.run_scenario("process_new_orders", order_id)
# 3. Оператор создаёт отгрузку
await self.operator.run_scenario("create_shipment", order_id)
# 4. Менеджер смотрит аналитику
await self.manager.run_scenario("daily_review")
# 5. Генерируем отчёт
self.reporter.generate_report()
async def run_load_test(self, concurrent_buyers=10):
"""Нагрузочный тест: много покупателей одновременно"""
tasks = [
self.buyer.run_scenario("browse_and_buy")
for _ in range(concurrent_buyers)
]
await asyncio.gather(*tasks)
8. ТЕСТОВЫЕ КЕЙСЫ
8.1 E2E Сценарии (End-to-End)
| # |
Сценарий |
Шаги |
Ожидаемый результат |
| E2E-001 |
Полный цикл заказа |
Каталог → Корзина → Оформление → Обработка → Отгрузка |
Заказ в статусе "shipped" |
| E2E-002 |
Заказ через OZON |
Заказ в OZON → Синхронизация → Обработка → Отгрузка |
Статус синхронизирован |
| E2E-003 |
Заказ через чат |
Сообщение в Telegram → Создание заказа → Обработка |
Заказ создан из чата |
| E2E-004 |
Повторный клиент |
Клиент делает 2-й заказ |
История клиента видна |
| E2E-005 |
Брошенная корзина |
Добавить товар → Уйти → Вернуться |
Корзина сохранена |
8.2 Функциональные тесты
PIM (Товары)
| # |
Тест |
Действие |
Проверка |
| PIM-001 |
Создание товара |
POST /api/products |
201, товар в БД |
| PIM-002 |
Редактирование товара |
PUT /api/products/{id} |
200, данные обновлены |
| PIM-003 |
Загрузка изображения |
POST /api/products/{id}/images |
201, файл на S3 |
| PIM-004 |
Импорт из Excel |
POST /api/import/excel |
200, товары созданы |
| PIM-005 |
Остатки по складам |
GET /api/stock |
Корректные остатки |
| PIM-006 |
Резервирование |
POST /api/stock/reserve |
Остаток уменьшен |
Orders (Заказы)
| # |
Тест |
Действие |
Проверка |
| ORD-001 |
Создание заказа |
POST /api/orders |
201, статус "new" |
| ORD-002 |
Смена статуса |
PUT /api/orders/{id}/status |
200, статус изменён |
| ORD-003 |
Добавление позиции |
POST /api/orders/{id}/items |
201, позиция добавлена |
| ORD-004 |
Удаление позиции |
DELETE /api/orders/{id}/items/{item_id} |
200, позиция удалена |
| ORD-005 |
Отмена заказа |
PUT /api/orders/{id}/cancel |
200, остатки возвращены |
| ORD-006 |
История изменений |
GET /api/orders/{id}/history |
Все изменения логируются |
OZON Integration
| # |
Тест |
Действие |
Проверка |
| OZON-001 |
Подключение аккаунта |
POST /api/ozon/accounts |
201, токен валиден |
| OZON-002 |
Синхронизация заказов |
POST /api/ozon/sync |
200, заказы загружены |
| OZON-003 |
Webhook приём |
POST /webhook/ozon |
200, заказ обновлён |
| OZON-004 |
Статус отгрузки |
PUT /api/ozon/shipments/{id} |
200, статус в OZON |
| OZON-005 |
Печать этикетки |
GET /api/ozon/labels/{posting_number} |
PDF файл |
Storefront (Витрина)
| # |
Тест |
Действие |
Проверка |
| SF-001 |
Главная страница |
GET / |
200, каталог отображён |
| SF-002 |
Карточка товара |
GET /product/{slug} |
200, данные корректны |
| SF-003 |
Поиск товаров |
GET /search?q=салют |
Релевантные результаты |
| SF-004 |
Фильтры |
GET /catalog?category=X&price_from=Y |
Фильтрация работает |
| SF-005 |
Добавление в корзину |
POST /cart/add |
Товар в корзине |
| SF-006 |
Оформление заказа |
POST /checkout |
Заказ создан |
8.3 Нагрузочные тесты
| # |
Тест |
Параметры |
Критерий |
| LOAD-001 |
Каталог |
100 RPS, 60 сек |
p95 < 500ms |
| LOAD-002 |
Создание заказов |
10 RPS, 60 сек |
p95 < 1000ms |
| LOAD-003 |
OZON sync |
50 заказов одновременно |
Все обработаны |
| LOAD-004 |
Dashboard |
20 пользователей |
p95 < 2000ms |
8.4 Smoke-тесты (быстрая проверка)
#!/bin/bash
# tests/smoke.sh
echo "=== PRO.seller Smoke Test ==="
# API Health
curl -s http://localhost:8500/health | grep "ok" || exit 1
# Admin Health
curl -s http://localhost:8510/health | grep "ok" || exit 1
# Storefront Health
curl -s http://localhost:8600/health | grep "ok" || exit 1
# Database
curl -s http://localhost:8500/api/products | grep "\[" || exit 1
# OZON connection
curl -s http://localhost:8500/api/ozon/status | grep "connected" || exit 1
echo "=== All checks passed ==="
9. ДЕМО-ДАННЫЕ
9.1 Источники данных
| Источник |
Данные |
Количество |
| pirotehnika NocoDB |
Товары |
~5000 |
| pirotehnika NocoDB |
Категории |
~50 |
| OZON O1 |
Реальные заказы |
~100 |
| Поставщики |
Прайсы |
3 прайса |
| Ручной ввод |
Тестовые клиенты |
20 |
9.2 Скрипт загрузки данных
# scripts/load_demo_data.py
async def load_demo_data():
"""Загрузка демо-данных из реальных источников"""
# 1. Товары из NocoDB pirotehnika
print("Loading products from NocoDB...")
products = await nocodb_client.get_all("Products")
for p in products:
await db.create_product({
"sku": p["article"],
"name": p["name"],
"cost_price": p["purchase_price"],
"base_price": p["base_price"],
"category": p["category"],
"brand": p["brand"],
})
print(f"Loaded {len(products)} products")
# 2. Категории
print("Loading categories...")
categories = await nocodb_client.get_all("Categories")
for c in categories:
await db.create_category({
"code": c["code"],
"name": c["name"],
"margin_percent": c["margin_percent"],
})
print(f"Loaded {len(categories)} categories")
# 3. Реальные заказы из OZON
print("Loading OZON orders...")
ozon_orders = await ozon_client.get_orders(days=30)
for o in ozon_orders:
await db.create_order_from_ozon(o)
print(f"Loaded {len(ozon_orders)} OZON orders")
# 4. Остатки
print("Loading stock...")
stock = await nocodb_client.get_all("Stock")
for s in stock:
await db.update_stock(s["article"], s["warehouse"], s["quantity"])
print(f"Loaded {len(stock)} stock records")
# 5. Тестовые клиенты
print("Creating test clients...")
test_clients = generate_test_clients(20)
for c in test_clients:
await db.create_client(c)
print("Created 20 test clients")
print("=== Demo data loaded! ===")
9.3 Генератор тестовых данных
# scripts/generators.py
from faker import Faker
fake = Faker('ru_RU')
def generate_test_clients(count=20):
"""Генерация тестовых клиентов"""
return [{
"name": fake.name(),
"phone": fake.phone_number(),
"email": fake.email(),
"city": fake.city(),
"address": fake.address(),
} for _ in range(count)]
def generate_test_orders(products, clients, count=50):
"""Генерация тестовых заказов"""
orders = []
for _ in range(count):
client = random.choice(clients)
items = random.sample(products, random.randint(1, 5))
orders.append({
"client": client,
"items": items,
"status": random.choice(["new", "approved", "shipped"]),
"source": random.choice(["site", "ozon", "chat"]),
})
return orders
10. ПЛАН РЕАЛЬНЫХ ПРОДАЖ
10.1 Сценарий тестовых продаж
НЕДЕЛЯ 1: Подготовка
├── День 1-2: Деплой MVP
├── День 3: Загрузка реальных товаров
├── День 4: Настройка OZON интеграции
├── День 5: Тестовые заказы (внутренние)
├── День 6: Исправление багов
└── День 7: Готовность к продажам
НЕДЕЛЯ 2: Реальные продажи
├── День 8: Запуск рекламы (Telegram)
├── День 9: Первые заказы через сайт
├── День 10: Обработка через интерфейс
├── День 11: Отгрузка через OZON
├── День 12: Анализ воронки
├── День 13: Оптимизация
└── День 14: Отчёт по MVP
10.2 Каналы привлечения (тест)
| Канал |
Бюджет |
Цель |
Метрика |
| Telegram (свой) |
0 ₽ |
50 переходов |
CTR |
| Telegram Ads |
3000 ₽ |
200 переходов |
CPC, CR |
| Яндекс.Директ |
5000 ₽ |
300 переходов |
CPC, CR |
| Avito |
0 ₽ |
20 заявок |
Заявки |
10.3 Воронка продаж (ожидаемая)
Посетители: 500
↓ (30%)
Просмотр товара: 150
↓ (20%)
Добавление в корзину: 30
↓ (50%)
Оформление заказа: 15
↓ (70%)
Оплата: 10
↓ (90%)
Выкуп: 9
10.4 Чек-лист запуска
□ Товары загружены (≥100 SKU)
□ Изображения загружены
□ Цены актуальны
□ Остатки синхронизированы
□ OZON подключён и работает
□ Telegram-бот настроен
□ Уведомления о заказах работают
□ Печать этикеток работает
□ Оплата настроена (если нужна)
□ SSL сертификат установлен
□ Домен настроен
□ Метрика/Analytics подключены
□ Тестовый заказ пройден от начала до конца
11. ПЛАН ТЕСТИРОВАНИЯ
11.1 Этапы тестирования
┌─────────────────────────────────────────────────────────────────────┐
│ ПЛАН ТЕСТИРОВАНИЯ │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ ЭТАП 1: Unit Tests (День 1-2) │
│ ├── Models tests │
│ ├── Services tests │
│ └── Utils tests │
│ │
│ ЭТАП 2: Integration Tests (День 3-4) │
│ ├── API endpoints │
│ ├── Database operations │
│ └── External services (OZON, Telegram) │
│ │
│ ЭТАП 3: E2E Tests (День 5-6) │
│ ├── User Simulator scenarios │
│ ├── Full order cycle │
│ └── Cross-browser testing │
│ │
│ ЭТАП 4: Load Tests (День 7) │
│ ├── Stress testing │
│ ├── Concurrent users │
│ └── Database performance │
│ │
│ ЭТАП 5: UAT (День 8-10) │
│ ├── Real user testing │
│ ├── Bug fixing │
│ └── Sign-off │
│ │
│ ЭТАП 6: Production Testing (День 11-14) │
│ ├── Real orders │
│ ├── Real shipments │
│ └── Real money │
│ │
└─────────────────────────────────────────────────────────────────────┘
11.2 Матрица тестового покрытия
| Модуль |
Unit |
Integration |
E2E |
Load |
UAT |
| Core/Auth |
✓ |
✓ |
✓ |
- |
✓ |
| PIM |
✓ |
✓ |
✓ |
✓ |
✓ |
| Orders |
✓ |
✓ |
✓ |
✓ |
✓ |
| OZON |
- |
✓ |
✓ |
✓ |
✓ |
| Storefront |
- |
✓ |
✓ |
✓ |
✓ |
| Analytics |
- |
✓ |
- |
- |
✓ |
11.3 Критерии приёмки MVP
| Критерий |
Порог |
Блокер? |
| Unit test coverage |
≥60% |
Нет |
| Integration tests pass |
100% |
Да |
| E2E tests pass |
100% |
Да |
| p95 response time |
<1000ms |
Да |
| Zero critical bugs |
0 |
Да |
| OZON sync works |
100% |
Да |
| 10 test orders completed |
10 |
Да |
12. TIMELINE
┌─────────────────────────────────────────────────────────────────────┐
│ MVP TIMELINE (14 дней) │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ НЕДЕЛЯ 1: Разработка │
│ ════════════════════ │
│ Д1 │████████│ Core: Auth, Users, Settings │
│ Д2 │████████│ PIM: Products, Categories, Stock │
│ Д3 │████████│ ERP: Orders, Workflow │
│ Д4 │████████│ OZON: Sync, Webhooks │
│ Д5 │████████│ Storefront: Catalog, Cart │
│ Д6 │████████│ Integration, Bug fixes │
│ Д7 │████████│ Testing, Demo data │
│ │
│ НЕДЕЛЯ 2: Тестирование и запуск │
│ ═══════════════════════════════ │
│ Д8 │████████│ User Simulator tests │
│ Д9 │████████│ Load tests, fixes │
│ Д10 │████████│ UAT, final fixes │
│ Д11 │████████│ Production deploy │
│ Д12 │████████│ Real sales start │
│ Д13 │████████│ Monitor, optimize │
│ Д14 │████████│ MVP Report │
│ │
└─────────────────────────────────────────────────────────────────────┘
13. КОМАНДА И РЕСУРСЫ
| Роль |
Кто |
Часы/день |
| Backend Dev |
Claude + Human |
6-8 |
| Frontend Dev |
Claude + Human |
2-4 |
| QA/Testing |
Claude (Simulator) |
2 |
| DevOps |
Claude + Human |
1-2 |
| Product |
Human |
1-2 |
Инфраструктура
| Ресурс |
Конфигурация |
Стоимость |
| VPS (DEV) |
91.218.142.168, 4GB RAM |
Есть |
| VPS (PROD) |
45.144.177.147, 4GB RAM |
Есть |
| PostgreSQL |
NocoDB, 256MB |
Есть |
| S3 Storage |
Beget, 10GB |
~200 ₽/мес |
| Domain |
seller1.ru |
Есть |
14. РИСКИ
| Риск |
Вероятность |
Влияние |
Митигация |
| OZON API изменится |
Низкая |
Высокое |
Абстракция, fallback |
| Нагрузка выше ожидаемой |
Средняя |
Среднее |
Кэширование, индексы |
| Баги в проде |
Высокая |
Среднее |
Smoke tests, rollback |
| Не успеем за 14 дней |
Средняя |
Среднее |
Сократить scope |
15. СЛЕДУЮЩИЕ ШАГИ
□ 1. Утвердить scope MVP
□ 2. Создать структуру проекта @pro.app
□ 3. Рефакторинг PRO.seller1 → модули
□ 4. Реализовать User Simulator
□ 5. Загрузить реальные данные
□ 6. Прогнать E2E тесты
□ 7. Запустить тестовые продажи
□ 8. Собрать метрики
□ 9. MVP Report
Версия: 1.0.0 | Автор: Claude | Дата: 2025-12-19