{{ t.icon }} {{ t.text }}
🔍 /
Поиск...
Ничего не найдено
🔔
{{ bellAlerts.length }}
🎾 {{ padelHealth.environment }}@{{ padelHealth.release_sha.slice(0,7) }}
{{ hubStats.server_time || '...' }}
⚠️
{{ dashErr }}
⚠️
{{ uErr }}
👥
{{ uSearch ? 'Ничего не найдено по запросу «'+uSearch+'»' : 'Нет пользователей' }}
⚠️
{{ tErr }}
🏆
{{ tSearch||tStatus||tFormat ? 'Ничего не найдено' : 'Нет турниров' }}
⚠️
{{ eErr }}
📋
{{ eName||eUser ? 'Ничего не найдено' : 'Нет событий' }}
⚠️
{{ aErr }}
🔍
{{ aFilter ? 'Нет записей для «'+aFilter+'»' : 'Нет записей аудита' }}
👥 Получатели
{{ bcSelected.size }} выбрано
{{ bcSelected.has(u.id) ? '✓' : '' }}
{{ u.name }}
{{ u.username ? '@'+u.username : u.telegram_id || u.id }}
Ничего не найдено
Нажмите 🔄 чтобы загрузить
✍️ Сообщение
Текст сообщения
Формат:
Предпросмотр Telegram {{ bcParseMode || 'plain text' }}
🤖
Padel Counter Bot
бот
{{ new Date().toLocaleTimeString('ru-RU',{hour:'2-digit',minute:'2-digit'}) }}
Получатели: {{ bcSelected.size }} · Символов: {{ bcMsg.length }}/4096
Результат
Всего: {{ bcResult.total }}
Отправлено: {{ bcResult.sent }}
Ошибок: {{ bcResult.failed }}
{{ e.user_id }}: {{ e.error }}
...и ещё {{ bcResult.errors.length - 5 }}
{{ i+1 }}
{{ step.label }}
{{ step.name }}
{{ step.count }}
{{ step.rate }}% конверсия
🔻
Загрузка...
🗓 Активность по часам и дням
#ИгрокТурнировПобедВинрейт
{{ i+1 }} {{ u.name }}
{{ u.username ? '@'+u.username : '' }}
{{ u.tournaments_joined }} {{ u.tournaments_won }}
{{ u.winrate }}%
🏅
Нет данных
{{ col.label }}
{{ m.value }}
{{ m.label }}
📊 Изменения
{{ d.label }}: {{ d.value >= 0 ? '+' : '' }}{{ d.value }}%
⚖️
Загрузка...
{{ h.app_id }}
{{ h.status }}
Env: {{ h.env }} Latency: {{ h.latency_ms }}ms HTTP: {{ h.status_code || '—' }}
{{ h.message }}
{{ fmtDT(h.checked_at) }}
💚
Нет данных. Нажмите "Проверить сейчас".
🔔 Активные алерты ({{ monAlerts.length }})
{{ a.severity }} {{ a.rule_name }}
{{ fmtDT(a.created_at) }}
{{ a.message }}
Нет активных алертов
📜 История алертов
ВремяПравилоСерверСтатусСообщение
{{ fmtDT(a.created_at) }} {{ a.rule_name }} {{ a.app_id }}:{{ a.env }} {{ a.status }} {{ a.message }}
IDНазваниеТипПорогПриложениеВключено
{{ r.id }} {{ r.name }} {{ r.type }} {{ r.threshold }}{{ r.type==='high_latency' ? 'ms' : 's' }} {{ r.app_id || 'все' }}
#ВремяДействиеДеталиIP
{{ e.id }} {{ fmtDT(e.created_at) }} {{ e.action }} {{ e.details || '—' }} {{ e.ip }}
📝
Нет записей
🤖
Статус бота
{{ bot.connected ? 'Подключён' : 'Отключён' }}
{{ bot.tokenMasked || 'Не настроен' }}
🌐
Активный API
{{ bot.activeApiBase || '—' }}
📡
Webhook
{{ bot.webhookInfo?.url || 'Не настроен' }}
⚠ {{ bot.webhookInfo.last_error_message }}
✉️ Тестовое сообщение
📋 Webhook-лог
ВремяТипChatДетали
{{ w.timestamp ? fmtDT(w.timestamp) : '—' }} {{ w.type || 'update' }} {{ w.chat_id || '—' }} {{ w.text || w.data || '—' }}
📡
Нет событий
🪞 Зеркала Telegram API
URLСтатусLatency
{{ m.url || m.base }} {{ m.ok ? 'OK' : 'FAIL' }} {{ m.latencyMs ? m.latencyMs+'ms' : '—' }}
⏱️
Uptime
{{ health.uptime_seconds ? fmtUptime(health.uptime_seconds) : '—' }}
💾
Размер БД
{{ health.database?.size_bytes ? fmtBytes(health.database.size_bytes) : '—' }}
🌍
Окружение
{{ health.environment || '—' }}
🔐
Auth
{{ health.auth_mode || '—' }}
🤖
Telegram
{{ health.telegram_configured ? 'Настроен' : 'Нет' }}
🏷️
Release
{{ health.release_sha || '—' }}
🖥 BooApp Hub
Uptime
{{ hubStats.uptime || '—' }}
RAM
{{ hubStats.mem_alloc_mb || 0 }} MB
heap: {{ hubStats.mem_heap_mb || 0 }} MB
CPU
{{ hubStats.num_cpu || '—' }} cores
{{ hubStats.goroutines || 0 }} goroutines
GC
{{ hubStats.gc_runs || 0 }}
cycles
Go
{{ hubStats.go_version || '—' }}
{{ hubStats.os_arch || '' }}
Config
{{ hubStats.config_size ? fmtBytes(hubStats.config_size) : '—' }}
📊 Таблицы базы данных
{{ name }} {{ cnt }}
📦 GitVerse — последние деплои
КоммитСообщениеАвторДата
{{ c.short_id }} {{ c.title }} {{ c.author_name }} {{ fmtDT(c.committed_date) }}
{{ gvMessage || 'Загрузка...' }}
Открыть репозиторий ↗
🐳 Docker контейнеры (Dockge)
Открыть Dockge ↗
⚠️
{{ diagErr }}
🔬
{{ diagFilterUserId||diagFilterLaunchId||diagFilterEnv||diagFilterOutcome ? 'Ничего не найдено' : 'Нет диагностических данных' }}
Данные появятся после того, как Padel Counter отправит диагностические события
🔐 Смена пароля
Текущий пароль
Новый пароль
💾 Бэкап конфигурации
📱 Приложения
ПриложениеPROD APIDEV APIAdmin Secret
{{ a.icon }} {{ a.title }}
{{ a.id }}
{{ a.admin_api_url_prod || '—' }} {{ a.admin_api_url_dev || '—' }} {{ a.admin_secret ? '••••' : 'не задан' }}
🤖 Боты
БотUsernameОкружениеPROD URLDEV URL
{{ b.name }} {{ b.username }} {{ b.environment }} {{ b.prod_url }} {{ b.dev_url }}
📌 Закладки
НазваниеURLИконка
{{ b.title }} {{ b.url }} {{ b.icon || '🔗' }}