План реализации доп. ТЗ (промо, бонусы, подкрутка, админка)
Разобрал присланное ТЗ (10 блоков) против текущего кода. Сгруппировал по фазам: сначала фундамент (на нём стоят остальные), потом промо/привлечение и контрольные механики. Оценка объёма: S малый · M средний · L крупный. Где затронуты деньги/честность экономики/безопасность — поднял флаг заказчику.
📍 Обновлено 05.06 — Фаза A + рандом-кейс ✅ ВЫКАЧЕНЫ В ПРОД (462 теста, прокликано):
- ✅ Фаза A целиком — В ПРОДЕ: подкрутка (движок аккуратно вплетён в новую экономику кейсов + раздел «Пресеты Подкрутки» + поля у юзера, вкл/выкл точечно), журнал действий (§6.8, spatie/activitylog), комментарий по юзеру (§6.9). Прокликано: подкрутка 80%/95% → 7 из 8 дорогих. Подкрутка по умолчанию выключена у всех.
- ✅ Фаза B — «Рандомный кейс» (§2) — бэкенд В ПРОДЕ: эндпоинт с фильтром доступности + тесты. Фронт-кнопка — отдельно (фаза B).
- ✅ Фаза B — промокоды (§1/§6.1) — В ПРОДЕ 05.06: тип «фикс-кейс» (N бесплатных открытий конкретного кейса, переиспользует UserFreeCaseOpening; OpenCaseAction открывает бесплатно любой кейс при наличии счётчика), активация POST /api/v1/promo-codes/activate (лимиты на юзера/общий/срок), админка Промокоды (CRUD + вкладка «Активации» §6.1). Прокликано: 2 бесплатных открытия платного кейса при 0 балансе, 3-е платно. 469 тестов.
- ⏳ Не начато в B: бонус новичкам (§3, переиспользует подкрутку); фронт-кнопки/модалки Фазы B (рандом-кейс, ввод промокода) — пачкой в конце фазы.
- ⏳ Дальше фазы: C (запреты/лимиты вывода, подозрительная активность) → D (менеджеры) → E (демо-ссылка, бесплатный кейс при выводе).
Как продолжить: ветка feat/tz2-phase-a, worktree ~/work/sa-tz2-phaseA. Тесты: php artisan test (на момент остановки 365 зелёных). Чтобы я продолжил — напиши в чат: «брат, продолжай доп.ТЗ — Фаза B, промокоды» (детали у меня в памяти).
Фаза A — Фундамент (делать первым, на нём держатся #3, #4, контроль)
6.7. Подкрутка (пресеты исхода вне экономики)
Lядро открытия кейсовденьги/честность
- Модель пресета: название | порог «% от цены кейса» | % шанса; срок действия. Переключатель «Подкрутка вкл/выкл» в карточке пользователя (админка).
- В движке открытия кейса — ветка: если у юзера активна подкрутка → берём цену кейса, по пресету определяем порог стоимости и шанс, выдаём предмет по упрощённой схеме; стандартные уровни и проверка условий фонда игнорируются, НО фонд пополняется/списывается штатно.
- Срок действия пресета; по истечении/выключении — стандартная система.
- Логировать каждое открытие с подкруткой.
Флаг заказчику: это намеренная «подкрутка» исходов вне честной механики. Подтвердить, что так и задумано, и где это юридически раскрывается (страница «честность»/оферта), т.к. у нас уже есть provably-fair по кейсам — подкрутка его обходит.
6.8. Журнал действий (логи админки/менеджеров)
Mсквозное
- Централизованный раздел «Журнал действий»: кто, что, когда, какой объект. Фильтры.
- Вложенные истории: в карточке пользователя «История действий», в промокоде/кейсе «История изменений».
- Логировать действия всех админ-разделов + отдельно действия менеджеров по их разделам.
- Технически: пакет аудита (spatie/activitylog) + хук на админ-действия.
6.9. Комментарий по пользователю
S
- В редактировании пользователя (админка) — поле «Комментарий» (свободный текст, для своих). Простое поле + сохранение.
Фаза B — Промо и вовлечение
1. Промокод на бесплатное открытие кейса (фикс-кейс)
Mрасширяет промокоды
- Новый тип промокода «Фикс-кейс» + выбор конкретного кейса. Лимиты: на юзера, общий; срок действия.
- При активации — право открыть указанный кейс N раз (переиспользуем механизм бесплатных открытий UserFreeCaseOpening, привязав к кейсу). На баланс не влияет.
- У пользователя цена этого кейса показывается «Бесплатно». Открытие учитывается в статистике кейса как обычное.
- Активации фиксируются в логах; повторно после исчерпания лимита — нельзя.
6.1. Промокоды — детальная статистика активаций
Mидёт в паре с #1
- Карточка промокода → вкладка «Активации» (юзер, сумма пополнения, итоговая сумма, дата).
- Карточка пользователя → блок «Активированные промокоды».
- Сводка по промокоду: суммы пополнений/бонусов, число активаций, новые/старые юзеры, повторные. В реальном времени.
2. Кнопка «Рандомный кейс»
Mфронт + эндпоинт
- Кнопка в разделе кейсов (десктоп + мобила) → модалка: название, цена, «Открыть», «Ещё раз».
- Эндпоинт «случайный доступный кейс»: только активные/открываемые; не показывать дороже баланса; бесплатный-при-пополнении показывать только если доступен юзеру.
3. Бонус новым пользователям (новорег + подкрутка)
Lзависит от 6.7
- После регистрации — группа «новорег». В админке: вкл/выкл, число бонусных открытий N, выбор пресета подкрутки (из 6.7), фильтры (конкретные кейсы / исключения по цене).
- Открытие с активным бонусом — по пресетам подкрутки (стандартные шансы игнорируются, фонд штатно пополняется/списывается). После N — стандарт.
- Аналитика с фильтрами: все / новореги / остальные. Логирование.
Зависимость: сначала 6.7 (движок пресетов), потом этот блок переиспользует его.
Фаза C — Контроль и анти-фрод (деньги — критично, тесно с выводом)
6.4. Запреты на вывод / покупку / изменение баланса
Lтрогает много эндпоинтов
- В разделе «Клиенты» — 3 кнопки блокировки: вывод; покупка предметов; любое изменение баланса (покупка/продажа/кейсы/апгрейд). У каждой — срок + причина (для админки и для пользователя).
- Enforcement на всех соответствующих эндпоинтах; при заблокированном действии — модалка с причиной из админки.
6.6. Лимиты на вывод + очередь заявок
Lденьги-критичнозависит от 6.4
- Настройки лимитов: общий на всех за 24ч, на одного за 24ч, общий за 1ч.
- При превышении — заявка в очередь на одобрение; деньги СНИМАЮТСЯ, транзакция заморожена до решения админа.
- Окно заявок: юзер + сумма + сколько вывел за 24ч/1ч. «Одобрить» → транзакция проходит. «Отклонить» → возврат + блок всех операций на 48ч (п.6.4) с причиной.
- Пользователю — модалка: «вывод временно прекращён, заявка отправлена…».
Флаг: «деньги снимаются, транзакция заморожена до клика админа» — уточнить точную механику заморозки (отдельный статус сделки/холд), чтобы не зависало и не задваивалось. Ляжет на нашу систему вывода и холда.
6.5. Подозрительная активность (топ-выигрыши)
M
- Новая вкладка админки: пользователи, выигравшие в кейсах/апгрейде больше настроенной суммы за настраиваемое время.
- Показ сумм за неделю/день/час с подсветкой подозрительного; переход на юзера.
Фаза D — Роли и партнёры
6.2. Рекламные менеджеры (роль с ограниченными правами)
Lроли/доступы
- Раздел «Управление менеджерами»; роль «Рекламный менеджер» с НАСТРАИВАЕМЫМ доступом к разделам (баннер, аналитика только просмотр, промокоды без финансовых настроек, клиенты только остановка вывода).
- Все действия логируются (6.8). Глобальные настройки менеджеру недоступны.
6.3. Менеджеры-партнёров (связка с LosReferidos)
Lинтеграция LR
- 3 менеджера; каждый видит промокоды и количество посетителей/продаж по СВОЕМУ перечню партнёров; фильтр по своему промокоду.
- В LR менеджер видит своих партнёров и их продажи; на cs-skins — промокоды партнёров и их опции.
Флаг: уточнить, какие именно данные тянем из LR и как привязываем менеджер→партнёры (по offer_id/промокодам). Зависит от текущей LR-интеграции.
Фаза E — Привлечение
4. Демо-баланс по скрытой ссылке (песочница для неавторизованных)
Lбезопасностьзависит от 6.7
- Админка: генерация скрытых ссылок вида /case/<токен>; срок, лимит переходов, сумма демо-баланса (деф. 10 000 ₽).
- Неавторизованный по ссылке: демо-баланс, изолированное открытие кейсов; фонд НЕ трогается, аналитика не пишется; шансы демо настраиваются отдельно (как пресеты 6.7).
- При выпадении — «Забрать» → авторизация/регистрация. Истекла/лимит — «Ссылка недействительна».
Флаг: полностью изолировать демо от реальной экономики (отдельный неавторизованный контур, ноль влияния на фонд/балансы/аналитику) — безопасность.
5. Бесплатный кейс при попытке вывода
Mв связке с выводом
- При «Вывести», если сумма ≥ порога и прошло ≥24ч с последнего показа — уведомление (не модалка, само не закрывается): «Открыть кейс» (бесплатно, в инвентарь) / «Закрыть». После любого выбора — кулдаун 24ч.
- Не блокирует вывод; продолжение вывода закрывает уведомление и сжигает бонус. Показ — перед отправкой заявки на вывод.
- Админка: вкл/выкл, мин. сумма, кейс, текст, кулдаун.
Что нужно от заказчика до старта 4
Заказчику1. Подкрутка (6.7/#3/#4): подтвердить намеренность «нечестной» механики и где её раскрывать юридически (у нас есть provably-fair, подкрутка его обходит).
Заказчику2. Лимиты вывода (6.6): точная механика «деньги сняты, заморожены до одобрения» — отдельный статус/холд, чтобы не зависало.
Заказчику3. Менеджеры-партнёры (6.3): какие данные из LR и как привязка менеджер→партнёры.
Заказчику4. Приоритет: с какой фазы начинать? Предлагаю A (фундамент: подкрутка + логи) → B (промо) → C (контроль). Подтвердить или переставить.
История
01.06 Получено доп. ТЗ (10 блоков), разобрано против кода, составлен план по фазам.