feat: add support tickets and imrpove web app loading

This commit is contained in:
3252a8
2026-05-20 16:38:24 +03:00
parent 3b846f0d44
commit d8a1da1f13
78 changed files with 8990 additions and 168 deletions
+111 -1
View File
@@ -946,6 +946,7 @@
"admin_settings_section_referral": "Referral program",
"admin_settings_section_notifications": "Notifications",
"admin_settings_section_devices": "Devices",
"admin_settings_section_support": "Support",
"admin_sync_started": "Synchronization started",
"admin_sync_error": "Synchronization error",
"admin_error": "Error",
@@ -1385,6 +1386,22 @@
"admin_settings_field_log_level_description": "Controls the 'Log Level' setting in admin overrides.",
"admin_settings_field_log_chat_id_label": "Log Chat ID",
"admin_settings_field_log_thread_id_label": "Log Thread ID",
"admin_settings_field_log_support_thread_id_label": "Support thread ID",
"admin_settings_field_log_support_thread_id_description": "Log chat thread for support ticket notifications.",
"admin_settings_field_support_tickets_enabled_label": "Support tickets enabled",
"admin_settings_field_support_tickets_enabled_description": "Enable the support tickets section in the user account and allow users to create tickets.",
"admin_settings_field_support_admin_email_notifications_enabled_label": "Admin email notifications",
"admin_settings_field_support_admin_email_notifications_enabled_description": "When disabled, new tickets and user replies are sent only to Telegram and the log chat.",
"admin_settings_field_support_admin_notification_cooldown_seconds_label": "Telegram notification cooldown",
"admin_settings_field_support_admin_notification_cooldown_seconds_description": "Minimum seconds between repeated Telegram/log notifications for the same unread ticket.",
"admin_settings_field_support_admin_email_cooldown_seconds_label": "Email notification cooldown",
"admin_settings_field_support_admin_email_cooldown_seconds_description": "Minimum seconds between repeated email notifications for the same unread ticket.",
"admin_settings_field_support_ticket_max_body_length_label": "Max message length",
"admin_settings_field_support_ticket_max_body_length_description": "Maximum number of characters in a ticket message.",
"admin_settings_field_support_ticket_max_subject_length_label": "Max subject length",
"admin_settings_field_support_ticket_max_subject_length_description": "Maximum number of characters in a ticket subject.",
"admin_settings_field_support_ticket_rate_limit_per_hour_label": "Ticket limit per hour",
"admin_settings_field_support_ticket_rate_limit_per_hour_description": "How many new tickets a user can create per hour. 0 means unlimited.",
"admin_settings_field_my_devices_section_enabled_label": "My Devices Section Enabled",
"admin_settings_field_user_hwid_device_limit_label": "User HWID Device Limit",
"admin_settings_field_user_traffic_limit_gb_label": "User Traffic Limit Gb",
@@ -1410,5 +1427,98 @@
"wa_password_mismatch": "Passwords do not match",
"wa_password_code_send_failed": "Could not send the code",
"wa_password_set_failed": "Could not save password",
"wa_password_set_success": "Password saved"
"wa_password_set_success": "Password saved",
"wa_nav_support": "Support",
"wa_support_title": "Support",
"wa_support_subtitle": "Tickets and replies from the team",
"wa_support_new_ticket": "New request",
"wa_support_contact_support": "Contact support",
"wa_support_subject": "Subject",
"wa_support_subject_placeholder": "Briefly describe the issue",
"wa_support_category": "Category",
"wa_support_priority": "Priority",
"wa_support_message": "Message",
"wa_support_message_placeholder": "Tell us what happened. More details help us respond faster.",
"wa_support_create": "Create ticket",
"wa_support_creating": "Creating...",
"wa_support_empty": "No tickets yet",
"wa_support_no_open_tickets": "No open requests",
"wa_support_empty_hint": "Create a new request if you need help with billing, connection, or your account.",
"wa_support_not_found": "Ticket not found",
"wa_support_send": "Send",
"wa_support_reply_placeholder": "Write a reply",
"wa_support_closed_hint": "This ticket is closed",
"wa_support_create_failed": "Could not create ticket",
"wa_support_send_failed": "Could not send reply",
"wa_support_filter_all": "All",
"wa_support_filter_active": "Active",
"wa_support_filter_label": "Ticket filter",
"wa_support_ticket_number": "Ticket #{id}",
"wa_support_no_messages": "No messages yet",
"wa_support_role_user": "You",
"wa_support_role_admin": "Support",
"wa_support_role_system": "System",
"wa_support_internal_note": "Internal note",
"wa_support_open_ticket": "Open ticket",
"wa_support_open_ticket_hint": "Open the ticket in Mini App.",
"wa_support_category_billing": "Billing",
"wa_support_category_technical": "Technical",
"wa_support_category_account": "Account",
"wa_support_category_other": "Other",
"wa_support_priority_low": "Low",
"wa_support_priority_normal": "Normal",
"wa_support_priority_high": "High",
"wa_support_priority_urgent": "Urgent",
"wa_support_status_open": "Open",
"wa_support_status_awaiting_user": "Awaiting user",
"wa_support_status_awaiting_admin": "Awaiting admin",
"wa_support_status_resolved": "Resolved",
"wa_support_status_closed": "Closed",
"admin_nav_support": "Support",
"admin_section_support_title": "Support",
"admin_section_support_subtitle": "Ticket inbox and user replies",
"admin_support_search": "Search",
"admin_support_empty": "No tickets yet",
"admin_support_select_ticket": "Select a ticket",
"admin_support_close_ticket": "Close",
"admin_support_internal_note": "Internal note",
"admin_support_reply_placeholder": "Reply",
"admin_support_no_messages": "No messages yet",
"admin_support_filter_all": "All",
"admin_support_filter_active": "Active",
"admin_support_filter_closed": "Closed",
"admin_support_filter_all_priorities": "Any priority",
"admin_support_filter_all_categories": "All categories",
"admin_support_ticket_number": "Ticket #{id}",
"admin_support_priority": "Priority",
"admin_support_category": "Category",
"admin_support_role_user": "User",
"admin_support_role_admin": "Admin",
"admin_support_role_system": "System",
"admin_support_user_context": "User",
"admin_support_open_user": "User card",
"admin_support_tariff": "Tariff",
"admin_support_status": "Status",
"admin_support_remaining": "Remaining",
"admin_support_unread": "Unread",
"admin_support_summary": "Support summary",
"admin_support_ticket_dialog": "Support conversation",
"admin_support_status_open": "Open",
"admin_support_status_awaiting_user": "Awaiting user",
"admin_support_status_awaiting_admin": "Awaiting admin",
"admin_support_status_resolved": "Resolved",
"admin_support_status_closed": "Closed",
"admin_support_priority_low": "Low",
"admin_support_priority_normal": "Normal",
"admin_support_priority_high": "High",
"admin_support_priority_urgent": "Urgent",
"admin_support_category_billing": "Billing",
"admin_support_category_technical": "Technical",
"admin_support_category_account": "Account",
"admin_support_category_other": "Other",
"admin_support_sort_importance_desc": "Most important",
"admin_sort_updated_desc": "Newest activity",
"admin_sort_updated_asc": "Oldest activity",
"admin_sort_created_desc": "Newest created",
"admin_sort_created_asc": "Oldest created"
}
+111 -1
View File
@@ -946,6 +946,7 @@
"admin_settings_section_referral": "Реферальная программа",
"admin_settings_section_notifications": "Уведомления",
"admin_settings_section_devices": "Устройства",
"admin_settings_section_support": "Поддержка",
"admin_sync_started": "Синхронизация запущена",
"admin_sync_error": "Ошибка синхронизации",
"admin_error": "Ошибка",
@@ -1385,6 +1386,22 @@
"admin_settings_field_log_level_description": "DEBUG / INFO / WARNING / ERROR",
"admin_settings_field_log_chat_id_label": "ID чата для логов",
"admin_settings_field_log_thread_id_label": "ID треда (для супергрупп)",
"admin_settings_field_log_support_thread_id_label": "ID треда поддержки",
"admin_settings_field_log_support_thread_id_description": "Тред лог-чата для уведомлений о тикетах поддержки.",
"admin_settings_field_support_tickets_enabled_label": "Тикеты поддержки включены",
"admin_settings_field_support_tickets_enabled_description": "Показывает раздел поддержки в ЛК и включает создание тикетов.",
"admin_settings_field_support_admin_email_notifications_enabled_label": "Email-уведомления админам",
"admin_settings_field_support_admin_email_notifications_enabled_description": "Если выключено, новые тикеты и ответы пользователей останутся только в Telegram и лог-чате.",
"admin_settings_field_support_admin_notification_cooldown_seconds_label": "Пауза Telegram-уведомлений",
"admin_settings_field_support_admin_notification_cooldown_seconds_description": "Минимум секунд между повторными Telegram/log уведомлениями по одному непрочитанному тикету.",
"admin_settings_field_support_admin_email_cooldown_seconds_label": "Пауза email-уведомлений",
"admin_settings_field_support_admin_email_cooldown_seconds_description": "Минимум секунд между повторными email-уведомлениями по одному непрочитанному тикету.",
"admin_settings_field_support_ticket_max_body_length_label": "Макс. длина сообщения",
"admin_settings_field_support_ticket_max_body_length_description": "Максимальное количество символов в сообщении тикета.",
"admin_settings_field_support_ticket_max_subject_length_label": "Макс. длина темы",
"admin_settings_field_support_ticket_max_subject_length_description": "Максимальное количество символов в теме тикета.",
"admin_settings_field_support_ticket_rate_limit_per_hour_label": "Лимит тикетов в час",
"admin_settings_field_support_ticket_rate_limit_per_hour_description": "Сколько новых тикетов пользователь может создать за час. 0 — без лимита.",
"admin_settings_field_my_devices_section_enabled_label": "Раздел «Мои устройства»",
"admin_settings_field_user_hwid_device_limit_label": "Лимит устройств по умолчанию (0 = ∞)",
"admin_settings_field_user_traffic_limit_gb_label": "Лимит трафика пользователя (ГБ)",
@@ -1410,5 +1427,98 @@
"wa_password_mismatch": "Пароли не совпадают",
"wa_password_code_send_failed": "Не удалось отправить код",
"wa_password_set_failed": "Не удалось сохранить пароль",
"wa_password_set_success": "Пароль сохранён"
"wa_password_set_success": "Пароль сохранён",
"wa_nav_support": "Поддержка",
"wa_support_title": "Поддержка",
"wa_support_subtitle": "Тикеты и ответы команды",
"wa_support_new_ticket": "Новое обращение",
"wa_support_contact_support": "Связаться с поддержкой",
"wa_support_subject": "Тема",
"wa_support_subject_placeholder": "Кратко опишите вопрос",
"wa_support_category": "Категория",
"wa_support_priority": "Приоритет",
"wa_support_message": "Сообщение",
"wa_support_message_placeholder": "Расскажите, что произошло. Чем больше деталей, тем быстрее поможем.",
"wa_support_create": "Создать тикет",
"wa_support_creating": "Создаём...",
"wa_support_empty": "Тикетов пока нет",
"wa_support_no_open_tickets": "Нет открытых обращений",
"wa_support_empty_hint": "Создайте новое обращение, если нужна помощь с оплатой, подключением или аккаунтом.",
"wa_support_not_found": "Тикет не найден",
"wa_support_send": "Отправить",
"wa_support_reply_placeholder": "Напишите ответ",
"wa_support_closed_hint": "Тикет закрыт",
"wa_support_create_failed": "Не удалось создать тикет",
"wa_support_send_failed": "Не удалось отправить ответ",
"wa_support_filter_all": "Все",
"wa_support_filter_active": "Активные",
"wa_support_filter_label": "Фильтр обращений",
"wa_support_ticket_number": "Тикет #{id}",
"wa_support_no_messages": "Сообщений пока нет",
"wa_support_role_user": "Вы",
"wa_support_role_admin": "Поддержка",
"wa_support_role_system": "Система",
"wa_support_internal_note": "Внутренняя заметка",
"wa_support_open_ticket": "Открыть тикет",
"wa_support_open_ticket_hint": "Откройте тикет в Mini App.",
"wa_support_category_billing": "Оплата",
"wa_support_category_technical": "Техническое",
"wa_support_category_account": "Аккаунт",
"wa_support_category_other": "Другое",
"wa_support_priority_low": "Низкий",
"wa_support_priority_normal": "Обычный",
"wa_support_priority_high": "Высокий",
"wa_support_priority_urgent": "Срочный",
"wa_support_status_open": "Открыт",
"wa_support_status_awaiting_user": "Ждёт пользователя",
"wa_support_status_awaiting_admin": "Ждёт админа",
"wa_support_status_resolved": "Решён",
"wa_support_status_closed": "Закрыт",
"admin_nav_support": "Поддержка",
"admin_section_support_title": "Поддержка",
"admin_section_support_subtitle": "Инбокс тикетов и ответы пользователям",
"admin_support_search": "Поиск",
"admin_support_empty": "Тикетов пока нет",
"admin_support_select_ticket": "Выберите тикет",
"admin_support_close_ticket": "Закрыть",
"admin_support_internal_note": "Внутренняя заметка",
"admin_support_reply_placeholder": "Ответ",
"admin_support_no_messages": "Сообщений пока нет",
"admin_support_filter_all": "Все",
"admin_support_filter_active": "Активные",
"admin_support_filter_closed": "Закрытые",
"admin_support_filter_all_priorities": "Любой приоритет",
"admin_support_filter_all_categories": "Все категории",
"admin_support_ticket_number": "Тикет #{id}",
"admin_support_priority": "Приоритет",
"admin_support_category": "Категория",
"admin_support_role_user": "Пользователь",
"admin_support_role_admin": "Админ",
"admin_support_role_system": "Система",
"admin_support_user_context": "Пользователь",
"admin_support_open_user": "Карточка",
"admin_support_tariff": "Тариф",
"admin_support_status": "Статус",
"admin_support_remaining": "Осталось",
"admin_support_unread": "Непрочитано",
"admin_support_summary": "Сводка поддержки",
"admin_support_ticket_dialog": "Диалог поддержки",
"admin_support_status_open": "Открыт",
"admin_support_status_awaiting_user": "Ждёт пользователя",
"admin_support_status_awaiting_admin": "Ждёт админа",
"admin_support_status_resolved": "Решён",
"admin_support_status_closed": "Закрыт",
"admin_support_priority_low": "Низкий",
"admin_support_priority_normal": "Обычный",
"admin_support_priority_high": "Высокий",
"admin_support_priority_urgent": "Срочный",
"admin_support_category_billing": "Оплата",
"admin_support_category_technical": "Техническое",
"admin_support_category_account": "Аккаунт",
"admin_support_category_other": "Другое",
"admin_support_sort_importance_desc": "Важные сверху",
"admin_sort_updated_desc": "Сначала новые",
"admin_sort_updated_asc": "Сначала старые",
"admin_sort_created_desc": "Созданы недавно",
"admin_sort_created_asc": "Созданы давно"
}