Social Pulse

Доступ заблокирован
00:00:00
Ожидайте до разблокировки
Дашборд

Обзор аудитории

Перетаскивайте и растягивайте блоки в режиме настройки — расположение сохраняется

Скрытые виджеты — нажмите, чтобы добавить на дашборд
Всего пользователей
—
— за 7 дней
Онлайн сегодня
—
— новых сегодня
Premium + VIP
—
— от базы
Мест в каталоге
—
— спонсорских
Запросов к AI
—
за 7 дней
Заблокировано
—
— от базы

География аудитории

По телефону — точно · по языку — оценка
По номеру телефона Оценка по языку

Язык интерфейса

Рост аудитории

Монетизация

Текущий баланс звёзд Telegram: —

Популярные разделы

Активность по часам

Удержание

Топ мест каталога

рейтинг · спонсорские — первыми

Загрузка...

Все пользователи

ID Имя Username Местоположение Подписка Доступ Статус Онлайн Дата регистрации Действия
Загрузка...

Статус парсера событий

Загрузка...

События

IDФотоНазваниеКатегорияДатаМестоЦенаДействия
Загрузка...
Изменения здесь пока не влияют на бота. Бот строит меню из файла menu_data.py (захардкожено на 8 языков), а не из этой таблицы — правки, сохранённые тут, реального меню не касаются. Подключение бота к динамическому меню из БД — отдельная задача (нужно менять обработку кнопок во всех хендлерах бота). Используйте этот раздел для планирования структуры, а фактические правки текста кнопок пока вносите через menu_data.py в коде.

Дерево меню

Редактор узла

ФлагСтранаРегионАдресТелефонСайтЧасыДействия
Загрузка...
Источники — это ссылки, по которым бот автоматически парсит рецепты и купоны (расписание — раз в PARSER_INTERVAL_HOURS часов, по умолчанию 12). Кнопка «Спарсить сейчас» запускает парсинг конкретного источника немедленно.

Источники контента

IDТипКухняНазваниеСсылкаСтатусПоследний парсингДействия
Загрузка...

Рецепты

IDКухняКатегорияНазваниеИнгредиентыИсточникДействия
Загрузка...

Купоны аптек

IDАптекаНазваниеКодСкидкаДействует доАктивенДействия
Загрузка...
Данные — из официального открытого портала Dubai Pulse (DLD) через импорт CSV, либо введены вручную. Полный путь получения ключа Dubai Pulse и разбор колонок выгрузки — в README_CHANGES.md.

Карта по районам

Обзор рынка (Market Intelligence)

ГодОбщий объём (AED)Всего сделокСредняя стоимость (AED)Активных районовДействия
Загрузка...

Районы — продажи

IDРайонГодЦена/фут²СделокОбъём (AED)Доходность арендыИсточникДействия
Загрузка...

Районы — аренда

IDРайонТип жильяГодГодовая аренда (AED)ЗаполняемостьYoYДействия
Загрузка...

Настройка ленты алертов

Если каналов много и постов пришло больше этого числа — остальные разошлются в следующем цикле, не все разом.

Пост не разошлётся, даже если совпал с фильтром источника, если содержит любое из этих слов. Указывайте основу слова, не полную форму — иначе не совпадёт с падежами.

Лента алертов (Telegram-каналы)

Рассылается VIP-подписчикам автоматически
IDКаналТекст постаКлючевое словоРазосланоДействия
Загрузка...
Управляет видимостью кнопок нижней навигации в Telegram Mini App. Выключенная кнопка просто не показывается пользователю — остальные при этом работают полностью. Полезно, пока для раздела нет партнёрского API (бронирование, расширенная реклама) — скрыли кнопку сейчас, включили обратно после того как добавили ключ в .env, без пересборки проекта.

Разделы Mini App

Кнопки меню

Управляет видимостью кнопок верхней навигации (фильтров категорий) в каталоге Mini App. Выключенная кнопка просто не показывается пользователю — остальные при этом работают полностью. Удобно, пока раздел наполняется данными: скрыли кнопку сейчас, включили обратно после того как добавили места, без пересборки проекта. Рядом с каждой категорией показано, сколько в ней мест.

Баннеры показываются каруселью на главном экране Mini App. Ссылка может вести либо на внешний URL, либо на конкретное место из каталога (тогда открывается карточка места внутри самого приложения). «Действует до» — необязательно; баннер с истёкшей датой перестаёт показываться сам, без ручного выключения. Выделенные карточки мест управляются отдельно — через галочку «Спонсорское размещение» в форме места (Каталог мест).

Баннеры

ПревьюНазваниеСсылкаПорядокДействует доАктивенДействия
Загрузка...

Спонсорские места (включая истёкшие)

Здесь — все места с активной галочкой «Спонсорское размещение», включая уже истёкшие (серым, для продления). Эта карусель в Mini App показывает только активные, не истёкшие — истёкшие пропадают из приложения сами, без ручного выключения. Продлить срок, снять размещение или удалить место целиком — прямо здесь, кнопками справа.

НазваниеКатегорияРейтингСпонсорское размещение доСтатусДействия
Загрузка...

Отчёт для рекламодателя

Показы — сколько раз место появилось в выдаче каталога/карты в боте или Mini App (событие sponsored_impression). Переходы — сколько раз открыли карточку места в Mini App (событие place_view; в боте отдельного экрана карточки нет, только список — поэтому переходы считаются из Mini App). CTR — переходы делённые на показы. Файл .xlsx можно переслать рекламодателю напрямую как подтверждение.

МестоКатегорияПоказыПереходыCTRРазмещение
Загрузка...
AI-аватар — видеособеседник в Mini App (Профиль → «Открыть ассистента»). Доступен только VIP-подписчикам: минуты стриминга платные, поэтому тариф проверяется на сервере, а не только скрытием кнопки. Лицо, голос и распознавание речи обеспечивает Anam, а содержание ответов даёт ваш собственный AI (настройки — в разделе «Настройка AI»), поэтому аватар отвечает теми же знаниями, что и текстовый чат бота.

Как настроить — по шагам

Шаг 1. Аккаунт Anam. Зарегистрируйтесь на lab.anam.ai. Аватар — это платный сервис: списание идёт за минуты активного разговора, поэтому сразу посмотрите тариф и остаток на балансе.

Шаг 2. Ключ API. В консоли Anam создайте API-ключ и вставьте его в поле ниже. Ключ хранится на сервере и обратно в браузер не отдаётся — здесь будет виден только статус «задан». Если ключ когда-либо попадал в переписку или скриншот, отзовите его и выпустите новый: по нему можно расходовать ваши оплаченные минуты.

Шаг 3. Аватар (лицо). В разделе Lab → Avatars загрузите фотографию лица и получите Avatar ID. Требования Anam: анфас, хорошее освещение, лицо занимает основную часть кадра. Для фотографий, созданных нейросетью, подходит режим создания аватара из изображения — верификация реального человека, как у Synthesia или HeyGen, здесь не требуется.

Шаг 4. Голос. В Lab → Voices выберите голос и скопируйте Voice ID. Проверьте, что он звучит на всех языках, которые вы поддерживаете: у голосов разное качество на арабском и китайском. Поле можно оставить пустым — тогда Anam возьмёт голос по умолчанию.

Шаг 5. Модель. По умолчанию cara-3. Если у вашего аккаунта есть доступ к более новой модели, укажите её здесь — обычно это выше разрешение и лучше мимика.

Шаг 6. Проверка. Нажмите «Проверить связку» — панель выпустит пробную сессию теми же параметрами, что использует Mini App. Это проверяет ключ, ID аватара, голос и модель разом, а не просто «поле заполнено».

Шаг 7. Включение. Раздел показывается, пока включён флаг «AI-аватар» в Настройки → Кнопки. Пользователю нужен VIP и разрешение на микрофон в Telegram.

Если ключ задан в файле .env на сервере, он имеет приоритет над значением из этой формы, а поле будет помечено как «задан через .env». Так на боевом сервере можно запретить смену ключа через веб-интерфейс.

Настройки

—

Обратно не отображается. Чтобы удалить — сохраните пустое поле.

У части аккаунтов Anam принимает только готовую персону, созданную в Lab, а конфигурацию «россыпью» (Avatar ID + голос + модель) молча игнорирует: токен выдаётся, но видеосвязь не стартует — «Invalid request to start session». Признак этого — в диагностике ниже Anam возвращает только personaName, без аватара. Если это ваш случай, создайте персону в Lab → Personas, выберите там аватар, голос и режим внешнего LLM, и вставьте её ID сюда.

Именно UUID, а не название. Ранее здесь передавалось значение CUSTOMER_CLIENT_V1 — Anam принимает его при выдаче токена, но отклоняет при старте видеосвязи, из-за чего возникала ошибка «Invalid request to start session». Если поле заполнено, разговор ведёт модель Anam с промптом из поля «Характер» ниже. Оставьте пустым, чтобы Anam взял модель из настроек персоны.

Добавляется к общему промпту из «Настройка AI». Аватар говорит вслух, поэтому в базовых правилах ему уже запрещены списки, разметка и эмодзи — вслух они звучат неестественно. Здесь задаётся тон и приоритеты.

Диагностика конфигурации

Anam проверяет настройки в два этапа: часть — при выдаче токена, остальные — уже при старте видеосвязи в приложении. Второй случай даёт ошибку «Invalid request to start session», и по обычной проверке его не видно: токен-то выдаётся. Здесь можно выпустить токен и посмотреть, что Anam в него записал — поля, которых в ответе нет, сервис отбросил как неизвестные. Снимая галочки, можно найти поле, из-за которого не стартует сессия, не трогая код.

Пользователи приглашают друзей своей ссылкой и получают дни Premium и VIP. Приглашение засчитывается не в момент перехода по ссылке, а когда приглашённый нажмёт хотя бы одну кнопку в боте — регистрация пустых аккаунтов награды не даёт. Большой перевес «ожидают» над «подтверждено» у одного человека — типичный признак накрутки.

Кто сколько привёл

#ПользовательПодтвержденоОжидаютНаград выданоТариф
Загрузка...

Ступени наград

Объекты для аренды и покупки. Пользователь в боте выбирает аренда/покупка → тип жилья и получает список, отсортированный от минимальной цены. Цена — целое число в AED: для аренды принято указывать за год, для продажи — полную стоимость. Объект со скрытой галочкой не показывается пользователю, но остаётся в базе.

Объекты

НазваниеСделкаТипРайонЦена, AEDСпальниДействия
Загрузка...

Районы и рейтинг проживания

РайонНазвание (RU)РейтингОбъектовОтзывовДействия
Загрузка...

Отзывы о районах

РайонАвторОценкаТекстДействия
Загрузка...
Общественный транспорт RTA — автобусы, паром и метро в одном разделе. Автобусная и паромная сеть загружаются из официального фида Dubai Pulse GTFS (открытый портал RTA, скачивание без ключа). Один и тот же файл содержит оба вида транспорта сразу — его нужно загрузить дважды, по разу на вкладки «Автобусы» и «Паром»: парсер сам отберёт нужный вид и запишет в свою часть базы, не трогая другую. Загрузка заменяет сеть выбранного вида целиком — это снимок актуального состояния, а не дополнение к старому. Станции метро редактируются вручную на вкладке «Метро» — их всего несколько десятков, в отличие от тысяч автобусных и паромных остановок.

Загрузка сети — автобусы

1. Откройте страницу датасета на Dubai Pulse и скачайте архив (обычно в 7z — пересохраните как zip, если нужно).
2. Загрузите файл здесь — тот же файл подходит для обеих вкладок GTFS.
3. Проверьте раздел «Транспорт» в Mini App или соответствующую кнопку в боте.


Остановки

GTFS от RTA — не идеальный источник: часть остановок приходит без координат (тогда такая остановка не появится в поиске «рядом со мной»), у части координата может быть неточной. Правьте вручную, не дожидаясь следующего обновления архива. Добавленная здесь вручную остановка переживёт повторный импорт — у неё отдельный идентификатор, GTFS её не затронет. Отметьте чекбоксом одну или несколько остановок, чтобы удалить их разом.

НазваниеКоординатыХабДействия
Загрузка...
Объекты для раздела «Гид по геолокации»: пользователь отправляет геолокацию и получает ближайшие достопримечательности с интересным фактом о каждой. Раньше список был зашит в коде — 8 объектов, изменить которые можно было только пересборкой. Без координат объект в гиде не появится. Факты переводятся на 8 языков; непереведённый показывается на языке оригинала.

Достопримечательности

ПорядокНазваниеКатегорияКоординатыПоказыватьДействия
Загрузка...
Два справочника для раздела SOS: полицейские участки (кнопка «Найти отделение») и больницы и клиники (ответ на отправку геолокации). Пользователь отправляет геолокацию и получает ближайшие объекты. Без координат участок в поиске не появится — заполните широту и долготу или воспользуйтесь геокодером в разделе «Каталог мест». Повторная загрузка того же файла безопасна: совпадающие по названию и адресу записи пропускаются.

Участки

НазваниеРайонАдресТелефонКоординатыПоказыватьДействия
Загрузка...
Вакансии показываются в боте (кнопка «Работа») и в Mini App. Каждая вакансия автоматически переводится AI на все 8 языков при сохранении и живёт одну неделю, после чего удаляется сама — в списке всегда только свежее. Дубли не добавляются: если работодатель и текст совпадают с уже имеющейся вакансией, запись отклоняется. Показать или скрыть раздел целиком — Настройки → Кнопки → Разделы Mini App, переключатель «Работа».

Вакансии

РаботодательКонтактыОписаниеИсточникДействует доДействия
Загрузка...
Здесь — вся структура меню бота так, как её видит пользователь. Разделы с пометкой «текст» показывают статичное описание (например, Услуги → Ремонт и стройка → Сантехник) — его можно отредактировать на любом из 8 языков прямо отсюда. Разделы, отмеченные «каталог», текст не используют: они показывают места из «Каталога мест», и наполнять их нужно там. Правки применяются к боту в течение нескольких минут, перезапуск не требуется.

Разделы бота

Загрузка...
Здесь можно переопределить ответные сообщения бота, не трогая код. Кнопки главного меню сюда намеренно не попадают — их текст завязан на логику навигации, изменение привело бы к тому, что кнопка показывает новый текст, но перестаёт срабатывать по нажатию. Правки применяются не мгновенно — бот подхватывает их из общего кэша раз в несколько минут.

Массовый перевод (для переводчика)

6 из 8 языков сейчас покрыты примерно на 8% (45 из 504 ключей) — переводить по одному ключу нереалистично. Скачайте файл целиком, отдайте переводчику, загрузите обратно. Английский и русский уже переведены полностью — их в файле нет.

Загрузка статуса...

Ключи сообщений

КлючТекст (en, по умолчанию)Переопределён
Введите запрос для поиска — ключей слишком много, чтобы показать все разом
Настройки применяются мгновенно — не нужно ждать несколько минут, как с текстами бота (AI и так делает сетевой запрос на секунды, лишняя проверка БД перед этим ничего не замедляет). Действует и на обычный AI-чат, и на голосовые сообщения.

Поведение AI-ассистента

Добавляется ПОВЕРХ базовых инструкций (роль ассистента, язык ответа) — не заменяет их, поэтому базовое поведение бота не сломается от этой настройки.

Ниже — более точные, предсказуемые ответы. Выше — более разнообразные, творческие (и менее предсказуемые).

Примерно 600 токенов ≈ 400-450 слов. Больше — длиннее и подробнее ответы, но дольше генерация.

Переводится интерфейс самого Mini App (навигация, заголовки экранов, кнопки) — не данные из каталога (названия мест, описания событий, это отдельная история). Скачайте файл, впишите переводы в нужные колонки, загрузите обратно тем же файлом.

Перевод интерфейса

Загрузка статуса...
Сообщение отправляется напрямую в чат с ботом, минуя команды/кнопки — так же, как любое обычное сообщение от бота. Поддерживается Markdown-разметка (*жирный*, _курсив_). Рассылка выполняется в фоне, может занять время при большом числе получателей — не более 20 сообщений в секунду, чтобы не упереться в лимиты Telegram.

Новое уведомление

Загрузка числа получателей...

История оплат

ID пользователяИмяТарифЗвёздCharge IDКогда
Загрузка...

Просмотр только для чтения. Произвольные SQL-запросы из панели выполнять нельзя — это осознанное ограничение безопасности после аудита.

Таблицы

Загрузка...

Просмотр

Выберите таблицу слева

Секреты живут только в файле .env на сервере и не передаются в браузер. Здесь — только статус (задан / не задан). Чтобы изменить значение, отредактируйте .env (или запустите python3 setup_env.py) и перезапустите контейнеры.

Внешние API

TELEGRAM_BOT_TOKEN—
OPENWEATHER_API_KEY—
GROQ_API_KEY—
OPENAI_API_KEY—
GOOGLE_GEOCODING_API_KEY—
GEOAPIFY_API_KEY—
LOCATIONIQ_API_KEY—

Ключи сервисов геокодирования

Используются кнопкой «Запуск Геокодера» в разделе «Каталог мест» для определения координат по адресам. Достаточно одного любого — выбрать сервис можно при запуске. Ключи хранятся на сервере и обратно в браузер никогда не отдаются: выше показан только статус «задан / не задан». Чтобы удалить ключ, сохраните пустое поле. Ключ из .env имеет приоритет над введённым здесь.

Доступ к панели

WEB_ADMIN_LOGIN—
JWT_SECRET—
ALLOWED_IPS—

Радиус поиска «рядом со мной»

Радиусы раздельные, потому что плотность объектов разная. Аптек много — 500 метров разумно: человеку нужна та, до которой можно дойти. Отделений полиции на весь город несколько десятков, и при 500 метрах запрос почти всегда возвращал бы пустоту. Если в радиусе ничего не нашлось, бот всё равно покажет ближайшие варианты с указанием расстояния.

Суточные лимиты AI по тарифам

Считаются запросы пользователя к AI: текстовый чат, голосовые сообщения и разговор с аватаром. Служебные вызовы — перевод вакансий, станций метро, разбор файлов при импорте — не считаются. Счётчик обнуляется в полночь. 0 означает «без ограничений». Каждый запрос к AI оплачивается вами, поэтому без потолка расход на бесплатном тарифе ничем не ограничен.

Логи

Ожидание...