Центр Управления: Дневник Алкаша
Центр управления облаком, монетизацией и аналитикой
Firebase Realtime Database или Supabase
Код для события RuStore задаёте здесь и вписываете в заявку магазина. Начало и конец — период, когда код можно применить. Время указано по Москве.
| Код | Бонус | Срок МСК | Использовано | Статус | Действие |
|---|---|---|---|---|---|
| {{ item.code }} | {{ item.reward_type === 'premium_days' ? item.premium_days + ' дн. Premium' : item.plan + ' за ' + item.offer_price + ' ₽' }} | {{ formatDate(item.starts_at * 1000) }} — {{ formatDate(item.ends_at * 1000) }} | {{ item.uses }} / {{ item.max_uses || '∞' }} | {{ item.active ? 'Включён' : 'Выключен' }} |
Кодов пока нет.
| Время | Код | Device ID | Событие | Причина / детали |
|---|---|---|---|---|
| {{ formatDate(item.created_at) }} | {{ item.code }} | {{ item.device_id }} {{ deviceStatus(item.device_id).text }} | {{ item.action }} | {{ item.detail }} |
Попыток пока нет.
Проверки API, базы, таймера и доставки уведомлений. VPS выполняет только таймер.
Проверено {{ formatDate(serverStatus.checked_at) }}
Общий CPU/RAM и квота аккаунта недоступны из PHP на общем хостинге; свободное место файловой системы не равно квоте Beget.
Таблица metrics не содержит колонку payload. Из-за этого события от пользователей с полезной нагрузкой отклоняются базой.
Аудитория и DAU/WAU/MAU — по всей истории действий на сервере, сутки по МСК. Остальные графики и логи — последние 25 000 событий.
Сутки: 00:00–23:59 МСК. «Впервые в учёте» — первое сохранившееся действие Device ID, не обязательно первая установка. «Приняли условия» включает тех, кто открыл приложение раньше; их число показано отдельно. DAU, WAU и MAU — устройства с действиями за 1, 7 и 30 календарных дней.
История действий с {{ formatMskDay(dailyStatsCoverage) }}, согласий — с {{ formatMskDay(dailyStatsConsentCoverage) }}. «—» означает, что учёт согласий тогда ещё не велся. Сегодняшний день ещё не завершён.
| Дата (МСК) | Приняли условия | Из них заходили раньше | Впервые в учёте | DAU | WAU | MAU | Оплат |
|---|---|---|---|---|---|---|---|
| {{ formatMskDay(row.date_msk, true) }} сегодня | {{ row.new_users === null ? '—' : row.new_users }} | {{ row.prior_consents === null ? '—' : row.prior_consents }} | {{ row.first_launches }} | {{ row.dau }} | {{ row.wau }} | {{ row.mau }} | {{ row.payments }} |
По дате установки, пересчёт на сегодня (МСК). Нажмите на группу, чтобы увидеть ID и подготовить акцию.
Все числа — уникальные Device ID. «Получили» означает, что окно акции действительно открылось в приложении. Оплаты учитываются после подтверждения Robokassa.
{{ offerStatsError }}
| Даты акции | Когорта | Акция | Получили | Закрыли × первый показ |
«БЕРУ!» первый показ | «БЕРУ!» с баннера |
«БЕРУ!» повторный показ | Оплатили |
|---|---|---|---|---|---|---|---|---|
| {{ formatOfferDate(campaign.starts_at) }} — {{ formatOfferDate(campaign.expires_at) }} | {{ getCohortLabel(campaign.cohort) }} | {{ getOfferPlanLabel(campaign.offer_plan) }}: {{ offerBasePriceForPlan(campaign.offer_plan) }} ₽ → {{ campaign.offer_price }} ₽ {{ campaign.id }} |
{{ campaign.counts.impression }} | {{ campaign.counts.close_first }} | {{ campaign.counts.click_first }} | {{ campaign.counts.click_banner }} | {{ campaign.counts.click_repeat }} | {{ campaign.counts.payment }} |
| Акций пока нет. Статистика показов и нажатий начнёт собираться после обновления приложения у пользователей. | ||||||||
Последние 30 дней: уникальные устройства, просмотр → клик. Оплаты подтверждены отдельно.
ID из профилей и последних 25 000 событий, по последней активности. Логи показывают отдельные действия.
| Device ID | Статус | Событий | Последняя активность | Действие |
|---|---|---|---|---|
|
{{ deviceStatus(user.deviceId).text }}
|
{{ deviceStatus(user.deviceId).text }} VIP / БОГ Обычный | {{ user.eventCount }} | {{ user.lastSeen ? formatDate(user.lastSeen) : 'Нет данных' }} | В списке |
| {{ userList.length === 0 ? 'Пока нет событий в таблице metrics.' : 'Ничего не найдено по запросу.' }} | ||||
Добавьте нужные ID и удалите лишние перед сохранением. Изменение действующей акции не продлевает её срок.
Кнопка оплаты акции работает в обновлённом приложении. Проверьте Device ID именно той установки, где будете тестировать.

Срок акции — 48 часов с момента первого сохранения. После закрытия окна в новой версии приложения появится плашка с обратным отсчётом.
{{ offerDraft.announcement_text || 'Текст акции' }}
Фиксируются: попытки покупок подписки, просмотры тарифов, запуски приложения и взаимодействие с пушами
| Время | Событие | Детали действия | Device ID | Статус |
|---|---|---|---|---|
|
{{ formatDate(log.timestamp) }}
{{ formatRelativeTime(log.timestamp) }}
|
{{ log.icon }} {{ log.badgeText }} |
{{ logTitle(log) }}
{{ log.details }}
|
{{ deviceStatus(log.deviceId).text }}
|
{{ deviceStatus(log.deviceId).text }} |
| {{ activityLogs.length === 0 ? 'Событий пока нет. Они появятся при активности пользователей.' : 'Ничего не найдено по текущему фильтру или поиску.' }} | ||||
Укажите Device ID устройств (по одному в строке). Пользователи с этими ID получат вечный бесплатный Премиум.
Действуют три фиксированных тарифа.
Установите свой собственный PIN-код для входа с телефона и компьютера.
Применяются у всех пользователей при следующем входе
Ключ и эндпоинт для ИИ-аналитика и AI push-уведомлений
Задает характер, стиль общения и формат ответов нейросети
Загрузите PNG-картинку, укажите название и цену в шкаликах. Ачивка встанет в первый свободный слот.
Создайте ачивку с условием открытия. Пользователи получат её автоматически при выполнении условий.
Принудительная отправка в шторку Android, всплывающие окна и сбор мнений аудитории
Отправляет срочное уведомление в шторку смартфона целевой аудитории
Всплывает у пользователей при входе в приложение с красивой анимацией
Сколько раз показывать окно, пока пользователь закрывает его крестиком. При ответе/клике показ навсегда завершается.
Если пользователь нажмет один из этих ответов — откроется шаг с благодарностью и полем ввода текста.
Входящие обращения пользователей, быстрые ответы, двусторонний онлайн-чат и Push-уведомления
Вы: {{ chat.last_message }}
Последняя активность: {{ formatDate(activeSupportChat.last_updated) }}
Нажмите на пользователя из списка, чтобы просмотреть переписку и отправить ответ с мгновенным push-уведомлением на телефон.
Учет поступлений, транзакций Robokassa, среднего чека и когорты платящих пользователей
Если оплата прошла в банке/СБП, но не отобразилась, введите номер заказа (InvId) для автоматической проверки через сервер Robokassa
Кликните на Device ID для просмотра карточки пользователя
| Время | Device ID | Тариф | Сумма | Статус |
|---|---|---|---|---|
|
{{ formatDate(pay.timestamp) }}
{{ formatRelativeTime(pay.timestamp) }}
|
{{ deviceStatus(pay.deviceId).text }} | {{ pay.planLabel }} | {{ pay.amount }} ₽ | Оплачено Ошибка В процессе |
| Платежей пока не зафиксировано. | ||||
Самые лояльные пользователи, принесшие наибольшую выручку
| # | Device ID | Потрачено | Оплат |
|---|---|---|---|
| 🥇 🥈 🥉 #{{ idx + 1 }} | {{ deviceStatus(cust.deviceId).text }} | {{ formatMoney(cust.totalSpent) }} ₽ | {{ cust.paymentCount }} |
| Пока нет данных о платящих клиентах. | |||
Группировка поступлений выручки и объема платежей
| Период | Сумма выручки | Количество оплат | Средний чек |
|---|---|---|---|
| {{ item.periodLabel }} | {{ formatMoney(item.revenue) }} ₽ | {{ item.count }} шт. | {{ formatMoney(item.avgCheck) }} ₽ |
| Нет данных за выбранный период. | |||
Промт и API для генерации push-уведомлений. Отдельно от ИИ-анализа в приложении.
Приложение автоматически добавит в конец промта блок с данными пользователя (дни трезвости, траты, ачивки, баланс монет, статус подписки) и инструкцию вернуть JSON массив из 15 фраз.
Если пусто — используется тот же API, что для ИИ-анализа
Если пусто — используется ключ из настроек ИИ-анализа
Если пусто — используется модель из настроек ИИ-анализа
Уведомления будут приходить прямо в системную шторку на ваш телефон
ID вашего устройства в приложении (Poco X3 Pro)
Если пусто, сервер автоматически берет токен из базы push_tokens
Нажмите кнопку, чтобы отправить тестовый push-сигнал на Poco X3 Pro
Отметьте события, о которых сервер должен мгновенно оповещать вас
Самый точный индустриальный метод детекции удалений (AppsFlyer, Adjust, OneSignal)
В Android нет нативного события "приложение удалено". Сервер отправляет на устройство Silent Push (data-only сообщение без показа плашки в шторке). Если пользователь удалил приложение, Google FCM возвращает ошибку 404 NOT_FOUND / UNREGISTERED. Сервер мгновенно помечает в базе, что данный пользователь удалил приложение.
Сервер проверит зарегистрированные FCM токены и выявит удаливших пользователей
Настройка планировщика Cron на сервере Beget для ежедневной отправки отчета
/srv/dnevnik/public/cron.php
php /srv/dnevnik/public/cron.php > /dev/null-A "Mozilla/5.0" обязателен, чтобы Nginx Beget не блокировал вызов ошибкой 403 Forbidden!
Реестр пользователей, нажавших «Продолжить →» в начальном юридическом окне «Перед началом»
| # | Device ID пользователя | Дата согласия | Статус в приложении | Платформа | Действия |
|---|---|---|---|---|---|
|
📭
Согласия пока не зафиксированы
Как только пользователь подтвердит окно «Перед началом» на телефоне, его ID появится здесь автоматически.
|
|||||
| {{ idx + 1 }} |
{{ deviceStatus(u.deviceId).text }}
|
{{ u.acceptedAt ? formatDate(u.acceptedAt) : 'Да (подтверждено)' }}
{{ formatRelativeTime(u.acceptedAt) }}
|
👑 VIP 💎 Премиум ⏳ Триал Базовый | {{ u.platform === 'ios' ? '🍏 iOS' : '🤖 Android' }} |
|
Сквозная статистика генераций, воронка конверсий, расход кредитов Kie.ai и журнал действий
Путь пользователя от клика кнопки до сохранения MP3 и перехода в «ПеснеПлёт AI»
Все нажатия кнопок, генерации, скачивания, оплаты и переходы в хронологическом порядке
| Время | Действие | Тип | Устройство | Подробности | Инфо |
|---|---|---|---|---|---|
| События по песням пока не зафиксированы или не соответствуют фильтру | |||||
| {{ new Date(log.timestamp).toLocaleString('ru-RU', { day: '2-digit', month: '2-digit', hour: '2-digit', minute: '2-digit', second: '2-digit' }) }} |
{{ log.icon }}
{{ log.title }}
|
{{ log.badgeText }} | {{ log.deviceId }} {{ deviceStatus(log.deviceId).text }} | {{ log.details }} | |
Аналитическая карточка пользователя
Открыть переписку с этим пользователем. Сообщение появится у него в приложении и будет отправлено как push-уведомление.
Отправит команду удаленного сброса (AsyncStorage) на устройство. При следующем запуске приложение обнулится. История в логах сохранится.
ID: {{ replyingFeedback.device_id }} {{ deviceStatus(replyingFeedback.device_id).text }}