Роудмап / Открытые вопросы
Обновлено: 27 мая, 12:30 МСК (актуальный аудит)

Открытые вопросы к заказчику

Актуальная ревизия на 27 мая. Сделал заново — каждый вопрос проверил против ТЗ (documentation/00-technical-specification.md) и против текущего кода. Те, на которые ответ уже есть в одном из источников — закрыл (внизу страницы). Осталось то, где действительно не хватает данных.

6
срочных
(нельзя двигать этап)
8
важных
(нужны до конкретного шага)
5
обычных
(можно решать по ходу)

🔴 Срочные — без ответа нельзя браться за этап

Эти вопросы блокируют конкретные крупные блоки. Каждый разобран по схеме «что в ТЗ → что в коде → чего не хватает».

Срочно

1. Способ вывода денег с основного баланса

📄 В ТЗ §8.1
Прямая цитата: «Вывод — пока не продумано». Конкретный способ не описан.
💾 В коде
Заявки на вывод (WithdrawalRequest) принимаются — модель есть, админка для модерации есть, валидация формы есть. Но сам вывод — заглушка: API-метод balance/withdraw возвращает «Заявка обрабатывается через админку» (HTTP 501). То есть и в коде путь не закрыт.
❓ Не хватает
Куда выводим (банковская карта / ЮMoney / криптовалюта / Steam-баланс)? Мин.сумма? Комиссия и кто её платит? Скорость (моментально или ручная проверка модератором)? Нужна ли проверка личности (паспорт) перед выводом?
Срочно

2. Платёжный провайдер для приёма денег

📄 В ТЗ §13.2.1
Указаны способы: СБП, СберПэй, банковские карты. Конкретный провайдер не назван.
💾 В коде
Только ProcessFakeDeposit — заглушка-симулятор для тестов. Реального подключения к платёжному сервису нет.
❓ Не хватает
Конкретный провайдер (ЮКасса / Тинькофф Эквайринг / CloudPayments / FreeKassa)? Есть ли юр.лицо для приёма денег? Страны (Россия + Узбекистан — там разные системы)? Нужны ли регулярные авто-списания (для автопродления Premium)?
Срочно

3. Базовая ширина макета и наличие готового дизайна в Figma

📄 В ТЗ §2.2
«Фиксированный макет, при сужении окна — горизонтальная прокрутка (аналог ggdrop.black)». Конкретная ширина не указана. В §11.4 есть ссылка на Figma — но только для одного окна «подбор замены».
💾 В коде
Вёрстка под Tailwind-классы. Сейчас отзывчивая, не фиксированная. Заказчик 25 мая прислал скрин с поломанной 3-колонкой на ~1280px → значит, на одной из стандартных ширин выглядит неправильно.
❓ Не хватает
Базовая фиксированная ширина: 1280, 1440 или 1920? Где макеты в Figma для главной, маркета, кейсов, апгрейда, премиум-кабинета — или верстать по образцам ggdrop.black + lis-skins.com?
Срочно

4. Юридический статус сайта и азартных игр

📄 В ТЗ
Не покрыто. Юрисдикция, лицензии, ограничения по возрасту в документе не упоминаются.
💾 В коде
Проверки возраста при регистрации нет. KYC-флоу (проверка паспорта) нет. Disclaimer об азартной природе сервиса нет.
❓ Не хватает
В какой юрисдикции работает сайт? Нужна ли лицензия на азартные игры? Должна ли быть проверка возраста 18+ перед регистрацией? Должны ли быть видны юридические disclaimer-ы (как у lis-skins / ggdrop)?
Срочно

5. Премиум-фаза 6: оплата подписки

📄 В ТЗ §13.2.1, §13.5
Тарифы: 3 дня (триал за 10₽), 1 неделя, 2 недели, 1 месяц. Способы: СБП, СберПэй, карты. После триала — автоматически платная на месяц.
💾 В коде
Премиум-фазы 1–5 закрыты (база, админка, плюшки, кабинет, anti-luck + код-пароль). API-метод premium/checkout есть — но это пустышка, ждёт реального PSP.
❓ Не хватает
Завязано на вопросы 1 и 2 — без выбранного провайдера и юр.лица фазу не начать. Также нужно подтвердить точные цены: триал 10₽ зафиксирован, остальные тарифы (1н / 2н / 1м) — сколько стоят?
Срочно

6. Скриншоты предметов на странице товара

📄 В ТЗ §7.7.3
«Кнопка Скриншот — генерирование скриншота предмета, должно быть аналогом на lis-skins.com».
💾 В коде
Нет ничего. По слову «screenshot» в проекте — пусто. Кнопка не реализована.
❓ Не хватает
Три варианта реализации с разной стоимостью:
(а) 3D-рендер скина своим движком — сложно, месяцы работы;
(б) сторонний сервис типа CSGOFloat / SteamApis — платный, $20-200/мес;
(в) статичная картинка из Steam API + наклеенные стикеры — просто, но не «как у lis-skins».
Какой вариант выбираем?

🟡 Важные — нужны до конкретного этапа

Можно отложить на 1-2 недели, но без ответа этап встанет.

Важно

7. Автопродление подписки — с карты или с баланса

📄 В ТЗ §13.3.8
«Автопродление вкл/выкл (по умолчанию вкл)». Способ списания не уточнён.
💾 В коде
API-метод premium/auto-renew переключает флаг в БД. Поле auto_renew у подписки есть. Сам процесс автоматического продления не реализован — ждёт фазы 6.
❓ Не хватает
Списываем с привязанной карты (нужен договор на регулярные платежи с банком + соблюдение PCI DSS) или с баланса на сайте? Если с баланса — что делать когда там не хватает (отключаем подписку или предупреждаем за день)?
Важно

8. Триал-период (3 дня за 10₽) — флоу автоконвертации в платный

📄 В ТЗ §13.5
«После окончания триала пользователь автоматически оформляет платную подписку на месяц».
💾 В коде
Флоу триала пока не реализован — ждёт фазы 6 (оплат).
❓ Не хватает
Технически — как пользователь даёт согласие на автосписание при покупке триала (галка в чекауте)? Нужен ли юридический disclaimer о автопродлении? За сколько часов до окончания триала уведомлять?
Важно

9. Источник базы скинов CS2 — оставляем ByMykel или переходим на платный

📄 В ТЗ §7.6, §9.8.7.5
«Все скины из игры», «подвязать стоимость со Стимом». Конкретный источник не указан.
💾 В коде
Каталог скинов синхронизируется из открытого источника ByMykel/CSGO-API (бесплатный JSON на GitHub) → таблица skin_catalog_items. Цены — отдельной командой skins:prices-sync из Steam Market API напрямую. Уже работает на проде. См. документацию documentation/08-skin-catalog-sync.md.
❓ Не хватает
Подтверждение: остаёмся на ByMykel (он не официальный, но бесплатный) или нужен платный коммерческий каталог (CSGOFloat, SteamApis, PriceEmpire — $20-200/мес дают официальную поддержку, обновление в реальном времени, гарантию доступности)?
Важно

10. Расширение — порядок выпуска в магазины браузеров

📄 В ТЗ §17
Chrome, Firefox, Edge (Chromium), Яндекс (Opera).
💾 В коде
Расширение собирается под Chrome (extension/dist/) и Firefox (extension/dist-firefox/) — есть готовый .xpi для Firefox. Технически готово к публикации, но в магазины не отправлено.
❓ Не хватает
Что первым публикуем: Chrome (требует разовый платёж $5 за аккаунт разработчика) или Firefox (бесплатно, но модерация может занять недели)? Яндекс и Edge — Chromium-совместимые, но требуют отдельной публикации.
Важно

11. Telegram-бот для уведомлений

📄 В ТЗ §6.5
«Подключить оповещения в Telegram». Параметры: бот, привязка юзера — не описаны.
💾 В коде
В конфиге есть только публичная ссылка на канал (https://t.me/skinsarena). Бота, привязки пользователей и отправки сообщений в Telegram — нет.
❓ Не хватает
Свой бот заводим? Привязка через deep-link с одноразовым токеном? Какие именно уведомления идут в Telegram — все типы (системные, финансовые, маркетинговые, тикеты) или только финансовые?
Важно

12. Email-уведомления — как реально отправляем

📄 В ТЗ §14.2
Email — один из каналов уведомлений (наряду с push и WebSocket). Управление в настройках юзера.
💾 В коде
Юзер может ввести и подтвердить email. Внутри Laravel MAIL_MAILER=log — то есть письма не уходят, только пишутся в лог. Реального SMTP/Mailgun/SendGrid не подключено.
❓ Не хватает
Через что отправляем (SMTP яндекс-почты / Mailgun / SendGrid / Postmark)? Есть ли бюджет? Должен ли email быть обязательным (для вывода денег, для KYC)?
Важно

13. Защита от DDoS

📄 В ТЗ §13.7
«Защита от ддос» упомянута без деталей.
💾 В коде / инфра
Специальной защиты нет. Сайт за Caddy на нашем VPS. На уровне Laravel — стандартный rate-limit middleware на ряде эндпоинтов (например 30 запросов в минуту на trade-operations).
❓ Не хватает
Cloudflare (~$20/мес базовый) или специализированный сервис ($200+/мес)? Какой бюджет?
Важно

14. Поддержка валют (рубль / сум / доллар)

📄 В ТЗ §2.3, §6.7
Локализация: RU / EN / UZ. Валюта в транзакциях: ₽ (рубли).
💾 В коде
Все балансы хранятся и отображаются в рублях. Курс Steam-цен фиксирован как currency=5 (RUB). Поддержки сума и доллара нет.
❓ Не хватает
Узбекская локализация без узбекского сума — это намеренно (показываем UZ-юзерам цены в ₽)? Или со временем нужно добавить мультивалютность? Если да — как пересчитываем балансы?

🔵 Обычные — можно решать по ходу работы

Не блокируют разработку, но в какой-то момент придётся задать.

Обычное

15. Цены в кейс-инвентаре — фиксированная или рыночная

📄 В ТЗ §11.2
«Рыночная стоимость в рублях на момент получения».
💾 В коде
Цена скина при открытии кейса фиксируется в записи CaseOpening на момент розыгрыша.
❓ Не хватает
При выводе с заменой: пользователь выиграл скин с зафиксированной ценой 5000₽, а на маркете подходящие сейчас стоят 4500–5500₽. Подбор замены идёт по нашей зафиксированной цене (5000₽ ±%) или по текущей рыночной?
Обычное

16. Бесплатные кейсы — дефолтные параметры

📄 В ТЗ §9.8.1.1
«Бесплатный тип: сколько открытий на пользователя, от какой цены пополнения бесплатность».
💾 В коде
Поддержка есть: модель UserFreeCaseOpening, у GameCase поля для условий, админка позволяет настраивать. Технически работает.
❓ Не хватает
Дефолтные значения от заказчика — какой порог пополнения, сколько раз в сутки, сколько кейсов считаются «бесплатными» по умолчанию?
Обычное

17. Email — обязателен или необязателен для критичных действий

📄 В ТЗ
Не уточняется. Авторизация только через Steam, email — отдельно в настройках.
💾 В коде
Email опционален. Можно зарегистрироваться через Steam и не указывать email вообще.
❓ Не хватает
Делать ли email обязательным для каких-то операций (вывод денег? покупка премиума? оформление триала)?
Обычное

18. Anti-luck система — поведение счётчика при перерыве

📄 В ТЗ §13.3.5
«10 последних открытий должны быть этим кейсом + все 10 неокупаемые → следующее бесплатное». Поведение при долгом перерыве не описано.
💾 В коде
Логика реализована (фаза 5 Premium). Счётчик считается по 10 последним открытиям без оглядки на даты.
❓ Не хватает
Юзер открыл 5 кейсов одного типа, потом 2 недели не заходил — счётчик «продолжается» (это и работает сейчас) или сбрасывается из-за неактивности? Возможно ли «накапливать» в течение года?
Обычное

19. VIP-цвет ника в Premium — полная палитра или предустановки

📄 В ТЗ §13.3.4
«Любая возможность создания цвета».
💾 В коде
Кабинет /premium позволяет выбрать цвет — нужно посмотреть UI на проде, точно ли это полная палитра или предустановленные варианты.
❓ Не хватает
«Любая возможность» = color-picker по всей RGB-палитре или предустановки (золото / красный / синий / зелёный)? Должны ли быть ограничения (например, без слишком тёмного на тёмном фоне)?

✅ Закрыто аудитом — было в старом 02-questions.md, но ответ есть в ТЗ или в коде

Источник вопросов: documentation/02-questions.md (датирован 7 мая) + ревизия по текущему коду от 27 мая. По мере получения ответов от заказчика — переношу в раздел «Закрыто» с указанием решения.