Soft-launch чеклист
Контрольный список перед публичным запуском платформы. Проходим каждый блок по порядку и фиксируем результат в трекере (Linear/issues/#status).
1. Юридическая база
- [ ] Зарегистрировано ИП на УСН 6% (или ООО на УСН 15%); ОКВЭД
62.01,62.02,63.11. Расчётный счёт в банке открыт. - [ ] Реквизиты подставлены в
.env(LEGAL_*); страница/legal/requisites(см.frontend/src/pages/legal/Requisites.vue) показывает правильные ИНН/ОГРНИП/адрес. - [ ] Опубликована публичная оферта (
/legal/offer), утверждена дата вступления в силу (LEGAL_EFFECTIVE_DATE,LEGAL_OFFER_VERSION). - [ ] Опубликована политика конфиденциальности (
/legal/privacy), проверена юристом. - [ ] Опубликовано согласие на обработку ПД (
/legal/consent). - [ ] Подана уведомление оператора ПД в РКН (или подтверждено, что мы попадаем под исключения ст. 22 152-ФЗ). После регистрации в реестре номер записан в
LEGAL_PDN_OPERATOR_ID. - [ ] Регистрационная форма требует двух отдельных согласий (оферта + ПД); даты согласий хранятся в
users.accepted_offer_at,users.accepted_pdn_at.
2. Платежи (ЮKassa)
- [ ] Магазин в ЮKassa переведён в боевой режим, прошёл проверку.
- [ ] Боевые
YOOKASSA_SHOP_IDиYOOKASSA_SECRET_KEYлежат вinfra/secrets/.env.enc(sops/age). - [ ] В личном кабинете ЮKassa заведены webhook-ы:
payment.succeeded,payment.canceled,payment.waiting_for_capture,refund.succeeded. URL —https://app.<домен>/webhooks/yookassa?secret=<YOOKASSA_WEBHOOK_SECRET>. - [ ] IP-allowlist ЮKassa активен на Caddy (см.
infra/caddy/Caddyfile). - [ ] Чеки 54-ФЗ проходят: тестовый платёж → email с чеком получен.
- [ ] Возвраты: проверен сценарий рефанда из ЛК ЮKassa →
payment.status = refunded, баланс пользователя списан. - [ ] СБП и YooMoney включены как способы оплаты (если нужны).
3. Безопасность
- [ ] Пройден OWASP ZAP baseline (workflow
.github/workflows/zap-baseline.yml); все HIGH-алерты закрыты или обоснованно перенесены в.github/zap/rules.tsv. - [ ] HTTPS-рейтинг по SSL Labs ≥ A.
- [ ] HSTS, CSP, X-Frame-Options проверены через securityheaders.com — рейтинг ≥ A.
- [ ] Nuclei-сканер прошёл по списку популярных шаблонов (запуск из CI).
- [ ] Все секреты в
.env.encзашифрованы sops/age, ключ от age хранится только в GitHub Secrets и у ответственного DevOps. - [ ] Резервная копия age-ключа сохранена офлайн (бумажный QR/seed-фраза в сейфе).
- [ ] Включена двухфакторная аутентификация (TOTP) для аккаунтов с ролью
admin.
4. Резервирование данных
- [ ] Workflow
.github/workflows/backup.ymlотрабатывает успешно (тестовый запуск черезworkflow_dispatch). - [ ] Дамп
app-postgresвосстановлен на резервный инстанс, проверенSELECT count(*) FROM users;иpayments. - [ ] Retention 30 дней действует, S3-bucket приватный, ACL=private.
5. Наблюдаемость
- [ ] Все
*Down-алерты Prometheus тестово триггерились (kill контейнера) и доставлялись в Telegram (@llmgw_alerts). - [ ] Grafana-дашборды
llmgw · Overview,llmgw · LiteLLM & OpenRouter,llmgw · FastAPIзагружены и отображают данные. - [ ] Loki ловит логи с
level=errorза последние 24 часа, отфильтровано поrequest_id.
6. Бизнес-проверки
- [ ] Welcome-бонус 150 ₽ выдаётся один раз при пополнении ≥ 1000 ₽ (проверено
bonusestable). - [ ] Триал 30 ₽ начисляется при подтверждении email только однажды.
- [ ] При
balance ≤ 0все ключи блокируются, при пополнении — снова активируются (e2e сценарий пройден). - [ ] Тарифы синхронизированы с LiteLLM (
pricing_syncпрошёл без ошибок); цены в ₽ за 1M токенов отображаются в кабинете.
7. Документация и поддержка
- [ ] VitePress-доки на
docs.<домен>доступны,/quickstartкопируется без ошибок. - [ ] В
docs/index.mdобновлены контакты поддержки и ссылка на Telegram-канал. - [ ] Email
support@<домен>настроен на единый ящик; SLA в оферте соответствует реальному. - [ ] Telegram-канал статуса
t.me/llmgw_statusсоздан и закреплён.
8. Smoke-тест перед публикацией
bash
# 1. Регистрация
curl -X POST https://app.<домен>/api/v1/auth/register \
-H 'Content-Type: application/json' \
-d '{"email":"smoke@test.example","password":"Test12345!",
"accept_offer":true,"accept_pdn":true}'
# 2. Подтверждение почты, создание ключа, минимальное пополнение 100 ₽
# 3. curl на боевой LiteLLM
curl https://api.<домен>/v1/chat/completions \
-H "Authorization: Bearer $LLMBOX_KEY" \
-d '{"model":"openai/gpt-4o-mini",
"messages":[{"role":"user","content":"ping"}]}'
# 4. Проверка списания: баланс уменьшился, balance_ledger содержит запись.9. Анонс
- [ ] Лендинг готов, в Open Graph указаны корректные ссылки.
- [ ] Telegram-канал статуса работает.
- [ ] Подготовлен пост в Telegram-канал/VC.ru с описанием тарифов и особенностей.
- [ ] План пост-MVP (рефералы, чат, Telegram-бот) согласован.
10. Откат
- [ ]
infra/scripts/restore.shпроверен на staging. - [ ] DNS-записи имеют TTL ≤ 300 секунд (быстрый rollback).
- [ ] Документ «Disaster Recovery» (этот файл + раздел README) актуален.