Содержание ТЗ
Техническое заданиеВерсия 1.0 · 18.10.2026
08. НФТ, тестирование, роадмап и риски
Нефункциональные требования, тестирование, приёмка, роадмап, команда, риски и аналитика.
1. Нефункциональные требования
1.1. Производительность
| Показатель | Цель |
|---|---|
| p95 API чтения | ≤ 300 мс |
| p95 API записи | ≤ 500 мс |
| p95 приёма вебхука | ≤ 300 мс |
| p95 запуска (webhook → действие) | ≤ 10 с (MVP), ≤ 5 с (v1.0) |
| p95 рендера лендинга | LCP ≤ 2,5 с |
| p95 каталога (1000 связок) | ≤ 300 мс |
| Пропускная способность | 1000 событий/мин на 2 воркерах |
| Одновременные пользователи | 500 (MVP) |
1.2. Надёжность
- Доступность 99,5 % (MVP) → 99,9 %.
- At-least-once доставка, идемпотентность.
- Retry 5 попыток, DLQ.
- Circuit breaker на коннектор.
- Graceful shutdown воркеров (дождаться текущих задач ≤ 30 с).
- Health checks и авторестарт контейнеров.
1.3. Масштабируемость
- Горизонтальное масштабирование API и воркеров.
- Партиционирование
runs,events,run_logs. - Кэш каталога в Redis (TTL 60 с) + инвалидация при публикации.
- Read-реплика PostgreSQL при росте.
- Очереди с приоритетами.
1.4. Безопасность
- OWASP ASVS Level 2 (цель).
- TLS 1.2+, HSTS.
- Шифрование секретов AES-256-GCM.
- RBAC, аудит, 2FA для админов.
- Rate limiting, SSRF-защита, CSP.
- Ежедневный бэкап, проверка восстановления ежемесячно.
1.5. Совместимость
- Браузеры: Chrome/Edge/Firefox/Safari последние 2 версии, мобильные Safari/Chrome.
- Разрешения: 320–1920 px.
- Язык: русский (MVP), локализация P2.
- Часовые пояса: хранение UTC, отображение в TZ пользователя.
- API: JSON, UTF-8, ISO 8601.
1.6. Наблюдаемость
- 100 % запусков имеют
run_idиtrace_id. - Метрики, логи, алерты (см.
04-architecture.md). - Дашборды: API, очереди, коннекторы, биллинг.
- SLO-дашборд и error budget.
1.7. Сопровождаемость
- Покрытие unit-тестами ядра ≥ 70 %, коннекторов ≥ 80 %.
- Линтеры и форматирование в CI.
- ADR на архитектурные решения.
- Документация API (OpenAPI) и runbook.
- Conventional Commits, ревью не менее 1 человека.
1.8. Локализация и доступность
- Все пользовательские тексты — в i18n-файлах (ru).
- Форматы дат/чисел — русские.
- WCAG 2.1 AA.
prefers-reduced-motion.
1.9. Правовые и данные
- Данные в РФ, 152-ФЗ.
- Сроки хранения: запуски 90 дней, логи 30–90 дней, платежи 5 лет.
- Экспорт и удаление данных по запросу.
- DPA для B2B (P1).
2. Стратегия тестирования
2.1. Уровни
| Уровень | Инструмент | Что проверяем |
|---|---|---|
| Unit | Vitest | Маппинг, фильтры, валидаторы, биллинг-логика |
| Contract | Vitest + фикстуры | Коннекторы: успех, 401, 429, 5xx, таймаут |
| Integration | Testcontainers | API + PostgreSQL + Redis, очереди |
| E2E | Playwright | Регистрация → подключение → тест → активация → оплата (sandbox) |
| Нагрузка | k6 | Ingest 1000/мин, 100 одновременных пользователей |
| Безопасность | Semgrep, Trivy, OWASP ZAP | SAST, SCA, DAST |
| Accessibility | axe, ручная проверка | WCAG 2.1 AA |
| Визуальная регрессия | Playwright screenshots (P1) | Лендинг, кабинет |
2.2. Обязательные тест-кейсы
- Регистрация, подтверждение email, сброс пароля.
- Вход, блокировка после 5 попыток, выход из всех сессий.
- OAuth: успех, отказ, повторный state, истёкший state.
- Токен: неверный, отозванный, истёкший.
- Создание активации: без подключения, без обязательных полей, дубль.
- Авто-маппинг: все типы полей, пустые значения, длинные строки.
- Фильтр: все операторы, пустой результат →
skipped. - Вебхук: подпись, replay, дубль, большой payload, неверный токен.
- Polling: курсор, пропуск, повтор.
- Ошибки провайдера: 401, 429, 500, timeout, сетевой сбой.
- Retry: успех после 2 попыток, исчерпание, ручной retry.
- Пауза/возобновление, удаление, переподключение.
- Биллинг: trial, оплата, неудача, grace, возврат, чек.
- Права: чужой run/activation → 404/403.
- Экспорт и удаление аккаунта.
- Админка: публикация связки, блокировка, возврат, аудит.
- Мобильная версия и клавиатурная навигация.
- Rate limit и защита от абьюза.
2.3. Тестовые данные
- Sandbox-аккаунты провайдеров (Telegram-бот, тестовая amoCRM, Google-таблица).
- Фикстуры с обезличенными данными.
- Генератор событий для нагрузки.
- Отдельная БД для e2e, очистка между тестами.
2.4. Критерии качества релиза
- Все P0/P1 тесты зелёные.
- Нет критичных уязвимостей (CVSS ≥ 7).
- Покрытие ядра ≥ 70 %.
- Lighthouse ≥ 90.
- Успешный smoke на staging.
- Rollback-план проверен.
3. Приёмка MVP
3.1. Функциональная приёмка
- 15 сервисов и 40 связок опубликованы.
- Пользователь может зарегистрироваться и подключить Telegram и Tilda.
- Авто-маппинг работает для всех стартовых связок.
- Тестовый запуск доставляет сообщение/создаёт запись.
- Активация, пауза, возобновление, удаление работают.
- Вебхук и polling обрабатываются, дубли не создаются.
- Ошибки видны в истории, retry работает.
- Trial 7 дней, оплата 200 ₽, чек приходит.
- Уведомления об ошибках и оплате приходят.
- Админка позволяет управлять каталогом и пользователями.
- Экспорт/удаление данных работают.
- Юридические документы опубликованы.
3.2. Нефункциональная приёмка
- p95 ingest ≤ 300 мс, p95 запуска ≤ 10 с.
- 1000 событий/мин без потерь.
- 99,5 % успешных запусков на тесте.
- Lighthouse ≥ 90, WCAG AA.
- Нет критичных уязвимостей.
- Бэкап/восстановление проверены.
- Мониторинг и алерты работают.
- Runbook и документация готовы.
3.3. Бизнес-приёмка
- 10 пилотных пользователей прошли путь без помощи.
- TTFV ≤ 10 минут у 8 из 10.
- NPS пилота ≥ 30.
- Поддержка ответила на 100 % обращений в SLA.
- Юнит-экономика подтверждена (маржа ≥ 60 %).
4. Роадмап
Этап 0. Подготовка (2 недели)
- Финализация ТЗ, дизайн-система, прототипы.
- Юрлицо, ЮKassa, домен, SSL, инфраструктура.
- Регистрация OAuth-приложений (Tilda, Google, amoCRM, Битрикс24, VK).
- Выбор стартовых 15 сервисов и 40 связок.
Этап 1. Каркас (3 недели)
- Монорепо, CI/CD, Docker Compose.
- Auth, сессии, профиль.
- Каталог, страницы связок.
- БД, миграции, базовый API.
- Дизайн-система и лендинг.
Этап 2. Подключения и коннекторы (4 недели)
- OAuth-флоу, токены, шифрование.
- SDK и манифесты.
- Коннекторы: Telegram, Tilda, Google Sheets, Яндекс Формы, webhook.
- Проверка подключений, состояния, переподключение.
Этап 3. Runtime (4 недели)
- Ingest, очереди, воркеры.
- Маппинг, фильтры, трансформации.
- Ретраи, дедупликация, circuit breaker.
- Polling, расписание.
- История запусков, детали, retry.
Этап 4. Биллинг и кабинет (3 недели)
- Trial, подписки, ЮKassa, чеки, вебхуки.
- Дашборд, уведомления.
- Админка (каталог, пользователи, запуски, платежи).
- Экспорт/удаление данных.
Этап 5. Остальные коннекторы и бета (4 недели)
- Остальные 10 сервисов, 40 связок.
- E2E, нагрузка, безопасность.
- Пилот 10–20 пользователей.
- Исправления, контент, база знаний.
Этап 6. Запуск (2 недели)
- Маркетинг, аналитика, поддержка.
- Публичный запуск.
- Мониторинг 2 недели, стабилизация.
Итого до публичного запуска: ~20–22 недели (5 месяцев). При команде 4–5 человек и параллельной работе — 16–18 недель.
4.1. Оценка трудозатрат
| Блок | Человеко-недели |
|---|---|
| Дизайн и прототипы | 6 |
| Frontend (лендинг, кабинет, админка) | 20 |
| Backend (auth, каталог, активации) | 18 |
| Runtime и очереди | 14 |
| Коннекторы (15) | 24 |
| Биллинг и юридические тексты | 8 |
| DevOps, мониторинг, безопасность | 8 |
| QA и автоматизация | 12 |
| Контент и поддержка | 5 |
| Итого | ≈ 115 человеко-недель |
5. Команда
| Роль | Загрузка | Зона |
|---|---|---|
| Product Manager | 1,0 | Приоритеты, каталог, метрики |
| UX/UI Designer | 0,5–1,0 | Дизайн-система, макеты, прототипы |
| Full-stack / Frontend | 1,0 | Next.js, кабинет, лендинг |
| Backend | 1,0 | API, runtime, биллинг |
| Connector Engineer | 1,0 | 15 коннекторов, SDK |
| QA | 0,5–1,0 | Тест-планы, автоматизация |
| DevOps | 0,3 | Инфраструктура, CI/CD, мониторинг |
| Support / Content | 0,5 | База знаний, первая линия |
Минимальная команда: PM + 2 full-stack + connector + QA (5 человек). Дизайнер и DevOps — part-time.
6. Риски и митигация
| # | Риск | Вер. | Влияние | Митигация |
|---|---|---|---|---|
| 1 | Модерация OAuth затягивается | Выс. | Выс. | Ранний старт, резервные токен-подключения |
| 2 | Провайдер меняет API | Выс. | Сред. | Версии, мониторинг, тесты, быстрый патч |
| 3 | Мало связок → низкая конверсия | Выс. | Выс. | Топ-40 сценариев, универсальный webhook |
| 4 | Абьюз (спам через SMS/Telegram) | Сред. | Выс. | Верификация, лимиты, модерация, блокировки |
| 5 | Высокая нагрузка поддержки | Сред. | Выс. | База знаний, диагностика, шаблоны |
| 6 | Низкая маржа | Сред. | Выс. | Автоматизация, контроль инфраструктуры |
| 7 | Утечка токенов | Низ. | Крит. | Шифрование, аудит, минимизация, пентест |
| 8 | Сбой платежей | Сред. | Выс. | Ретраи, второй провайдер (P1), мониторинг |
| 9 | Конкуренты демпингуют | Сред. | Сред. | Скорость, поддержка, ниша, бренд |
| 10 | Блокировки зарубежных API | Сред. | Выс. | Российские альтернативы, статус коннекторов |
| 11 | Юридические претензии по ПДн | Низ. | Выс. | 152-ФЗ, DPA, минимизация, аудит |
| 12 | Рост стоимости инфраструктуры | Сред. | Сред. | Лимиты fair use, оптимизация, тарифы |
7. Аналитика
7.1. События (пример)
| Событие | Свойства |
|---|---|
page_view | path, referrer, utm |
bundle_view | bundle_slug, source, target |
signup_started | bundle_slug |
signup_completed | method |
connection_started | service, auth_type |
connection_succeeded | service, duration_ms |
connection_failed | service, error_type |
test_run | bundle_slug, status |
activation_created | bundle_slug |
trial_started | activation_id |
checkout_started | amount, activations |
payment_succeeded | amount, activations |
payment_failed | reason |
run_succeeded | bundle_slug, duration_ms |
run_failed | bundle_slug, error_type |
activation_paused | reason |
support_opened | source, run_id |
7.2. Дашборды
- Воронка: visit → bundle_view → signup → connect → test → activation → payment.
- Продукт: active bundles, runs/day, success rate, top errors.
- Коннекторы: latency, error rate, availability.
- Биллинг: MRR, trial conversion, churn, failed payments.
- Поддержка: тикеты, SLA, топ-темы.
7.3. Инструменты
- Яндекс Метрика (с согласием), серверная аналитика в PostgreSQL.
- Собственный event pipeline (P1) или PostHog self-hosted (P2).
- A/B тесты через feature flags (P1).
7.4. Приватность аналитики
- Не отправлять email, телефоны, payload в аналитику.
user_id— хеш.- Согласие на аналитические cookie.
- Срок хранения событий — 12 месяцев.
8. План запуска (launch checklist)
За 4 недели
- Контент лендинга и каталога готов.
- Юридические документы опубликованы.
- ЮKassa в боевом режиме.
- Мониторинг и алерты.
- Пилотная группа 10–20 человек.
- База знаний топ-20 статей.
За 1 неделю
- Нагрузочный тест.
- Проверка бэкапа/восстановления.
- Проверка платежей и чеков.
- Smoke-тест всех 40 связок.
- Поддержка на связи, шаблоны ответов.
- План отката.
День запуска
- Деплой, миграции, smoke.
- Проверка лендинга, каталога, регистрации.
- Проверка оплаты.
- Мониторинг 4 часа.
- Публикация в каналах.
После запуска
- Ежедневный обзор ошибок 2 недели.
- Сбор обратной связи.
- Приоритизация улучшений.
- Постмортем через 30 дней.