Личный кабинет клиента
Личный кабинет (ЛК) — веб-портал самообслуживания клиента по адресу
/lk/. Здесь клиент видит баланс и тариф, пополняет счёт, меняет
тариф, подключает услуги и ТВ, общается с поддержкой и AI-ассистентом, управляет
профилем и безопасностью входа. Доступен с компьютера и телефона (адаптивная
вёрстка) и продублирован мобильными приложениями Android / iOS.

Содержание раздела
- 1. Обзор
- 2. Вход и способы авторизации
- 3. Дашборд
- 4. Финансы
- 5. Тарифы
- 6. Услуги и ТВ
- 6.1. Что попадает в каталог
- 6.2. Два способа заказа: сразу и по заявке
- 6.3. Отключение клиентом
- 7. Поддержка и заявки
- 8. AI-ассистент
- 9. Профиль и безопасность
- 10. Дополнительные возможности
- 11. Тёмная тема и мобильный вид
- 12. Карта раздела
- 13. Настройка ЛК в админке
- Область действия настроек и организации
- Обзор: у кого что включено
- Поиск, сохранение и проверки
- Фон страницы входа
- 14. Мобильные приложения и Public API
- Force-update
- Push-уведомления (Firebase)
Содержание
- 1. Обзор
- 2. Вход и способы авторизации
- 3. Дашборд
- 4. Финансы (баланс, пополнение, история)
- 5. Тарифы
- 6. Услуги и ТВ
- — Что попадает в каталог
- — Заказ: сразу и по заявке
- — Отключение клиентом
- 7. Поддержка и заявки
- 8. AI-ассистент
- 9. Профиль и безопасность
- 10. Доп. возможности (сессии, тест скорости, ОП, рефералы)
- 11. Тёмная тема и мобильный вид
- 12. Карта раздела
- 13. Настройка ЛК в админке
- — Область действия и организации
- — Обзор: у кого что включено
- — Поиск, сохранение и проверки
- — Фон страницы входа
- 14. Мобильные приложения и Public API
1. Обзор
Кабинет глазами клиента: вход, баланс и расчётный период, пополнение, «за что списали», смена тарифа, заказ услуг и ТВ, AI-ассистент, мобильное приложение.
ЛК закрывает весь цикл самообслуживания, разгружая поддержку:
- Финансы — баланс, онлайн-пополнение (ЮKassa / Wallet One), история платежей и операций, обещанный платёж.
- Тариф и услуги — смена тарифа, подключение/отключение услуг, интерактивное ТВ (IPTV).
- Связь — заявки в поддержку, сообщения, AI-ассистент 24/7.
- Профиль — контакты, смена пароля, привязка соцсетей, безопасность входа.
- Сервис — активные подключения (сессии), тест скорости, реферальная программа, добровольная блокировка.
Брендинг, набор включённых функций и тексты настраиваются администратором в разделе «ЛК и мобильные»; при мультиоператорной конфигурации — отдельно для каждой организации.
2. Вход и способы авторизации

Страница входа /lk/login/. Основной вход — по логину
и паролю (договор / логин клиента). Дополнительно доступны способы входа,
которые включает оператор:
- VK, Google, Apple, Яндекс — вход через OAuth-аккаунт.
- Telegram — вход через Telegram-виджет.
- Passkey (FIDO2 / WebAuthn) — вход по биометрии/ключу без пароля.
Восстановление пароля (/lk/forgot-password/) —
по SMS или Email (выбирается оператором). Фон страницы входа и страницы заполнения
контактов настраивается в брендинге.
3. Дашборд

Главная страница /lk/ — сводка по клиенту:
- Баланс крупной цифрой + кнопка «Пополнить».
- Договор и статус подключения (Активен / Заблокирован / Приостановлен).
- Текущий тариф + быстрая кнопка «Сменить тариф».
- Поддержка — индикатор активных заявок и быстрая ссылка «Написать».
- Последний платёж.
- Расчётный период — списано с начала месяца, сравнение с тем же окном прошлого месяца («на N ₽ больше/меньше»), прогресс дня месяца и «Следующее списание 1 числа — ≈сумма абонплаты».
- Состав тарифа — чеклист услуг тарифа (интернет со скоростью, ТВ и т.д.) прямо в карточке тарифа.
- Баннер уведомлений — текст от оператора (техработы, акции) сверху.
Слева — навигация по разделам, сгруппированная: Финансы, Услуги, Поддержка. Справа в шапке — баланс, договор, переключатель темы и меню профиля. AI-чат доступен плавающей кнопкой в правом нижнем углу.
4. Финансы

- Пополнить баланс (
/lk/payments/pay/) — ввод суммы и оплата картой через ЮKassa или Wallet One. После успешной оплаты баланс зачисляется автоматически по webhook. - История платежей (
/lk/payments/) — список пополнений с датой/суммой/способом, экспорт в CSV. - История операций (
/lk/audit/) — все списания и начисления (абонплата, услуги, корректировки), бесконечная прокрутка. - Обещанный платёж (
/lk/promise-pay/) — временный кредит доверия, если включён оператором.
5. Тарифы

Страница /lk/tariff/: вверху — карточка текущего тарифа (скорость,
цена, линейка услуг), ниже — доступные для перехода тарифы с ценой и скоростью и
кнопкой «Перейти на этот тариф». Смена применяется сразу или со следующего
расчётного периода в зависимости от настроек тарифа.
6. Услуги и ТВ

- Дополнительные услуги (
/lk/services/) — подключённые услуги клиента и каталог того, что он может заказать сам. - Интерактивное ТВ (
/lk/iptv/) — подключение IPTV-пакетов (TVIP / LFStream «Смотрёшка»). ТВ заказывается только здесь: вместе с услугой создаётся подписка у оператора ТВ, чего обычное подключение услуги не делает.
6.1. Что попадает в каталог
Услуга видна клиенту, если у неё стоит галка «Показывать в ЛК» (вкладка «ЛК клиента» в карточке услуги) и она проходит правила каталога:
- принадлежит организации клиента либо не привязана ни к одной (общая);
- не удалена, не в архиве, не помечена служебной;
- не относится к типам, которые клиент не заказывает: абонплата тарифа (Трафик), гостевой Wi-Fi, обещанный платёж, бонусы, системные;
- не относится к типу с собственным разделом — ТВ заказывается в «Интерактивном ТВ».
Те же правила действуют в мобильном приложении — каталог общий
(billing/services/lk_service_catalog.py).
6.2. Два способа заказа: сразу и по заявке
| Что за услуга | Кнопка у клиента | Что происходит |
|---|---|---|
| Периодическая (абонплата) дешевле порога | «Подключить» | Услуга подключается сразу. Списание идёт обычным биллингом, а не в момент нажатия. Если у услуги включена проверка баланса — при нехватке средств кнопка недоступна. |
| Разовая работа или услуга дороже порога | «Оставить заявку» | Услуга не подключается. В Поддержке создаётся обращение с ценой по прайсу и контактами клиента; оператор согласует сроки и подключает сам. |
Порог задаётся в Настройки → Личный кабинет → Функции → «Заказ услуги без заявки до» (по умолчанию 3000 ₽; 0 — любая услуга только заявкой). Отдельная услуга может обойти правило галкой «Подключать сразу, без заявки» в своей карточке — для работ с выездом и договором её не ставят.
6.3. Отключение клиентом
Клиент отключает услугу сам, только если в карточке услуги стоит «Разрешить отключение в ЛК». Поле «Разрешить отключение через N месяцев» задаёт минимальный срок: до этой даты кнопка заменяется датой, с которой отключение станет доступно. Правило одинаково работает в ЛК и в мобильном приложении.
7. Поддержка и заявки

Раздел /lk/support/ — заявки в техподдержку (нативная Поддержка СмИТ
Биллинг): список обращений со статусами, создание новой заявки, переписка с
оператором и вложения. Отдельно — Сообщения (/lk/messages/):
уведомления и рассылки от оператора.
8. AI-ассистент

AI-ассистент (/lk/chat/ + плавающий виджет) отвечает на вопросы 24/7
на базе AI-агента биллинга, использует базу знаний
поддержки и видит контекст клиента (баланс, тариф). При сложном вопросе
автоматически создаёт заявку и передаёт диалог живому оператору. Клиент может
оценить ответы 👍/👎. Срок хранения истории чата настраивается оператором.
9. Профиль и безопасность

Страница /lk/profile/: контактные данные (email/телефон с
подтверждением), смена пароля (/lk/password/),
привязка соцсетей (VK / Telegram / Google / Apple / Яндекс) и
passkey, переключатель темы. При первом входе, если оператор требует контакты,
клиент проходит экран /lk/profile/contacts-required/.
10. Дополнительные возможности
- Подключения (
/lk/sessions/) — активные и недавние сессии клиента (IP, время, трафик). - Тест скорости (
/lk/speedtest/) — замер скорости канала. - История операций (
/lk/audit/) — см. ниже. - Реферальная программа (
/lk/referral/) — приглашение друзей и бонусы. - Добровольная блокировка (
/lk/block/) — «отпуск»: приостановка услуг на время отъезда.

11. Тёмная тема и мобильный вид
ЛК поддерживает тёмную тему (переключатель в шапке; выбор сохраняется в браузере) и полностью адаптивен — на телефоне навигация сворачивается, карточки перестраиваются в одну колонку.

12. Карта раздела
flowchart TB
LOGIN["Вход /lk/login/
пароль · VK · TG · Google
Apple · Яндекс · passkey"] --> DASH["Дашборд /lk/
баланс · тариф · статус"]
DASH --> FIN["Финансы"]
DASH --> SRV["Услуги"]
DASH --> SUP["Поддержка"]
DASH --> PROF["Профиль"]
FIN --> PAY["Пополнить
ЮKassa · W1"]
FIN --> HIST["История платежей
/операций · ОП"]
SRV --> TAR["Тарифы"]
SRV --> SVC["Услуги · IPTV"]
SUP --> TICK["Заявки · Сообщения"]
SUP --> AI["AI-ассистент
24/7"]
PROF --> SEC["Пароль · соцсети
passkey · контакты"]
AI -.->|"сложный вопрос"| TICK
style LOGIN fill:#1e3a5f,stroke:#5BA89D,color:#fff
style DASH fill:#134e4a,stroke:#43b77a,color:#fff
style PAY fill:#43b77a,stroke:#2d9a5f,color:#fff
style AI fill:#1e3a5f,stroke:#5BA89D,color:#fff
style TICK fill:#78350f,stroke:#d97706,color:#fff
13. Настройка ЛК в админке
Раздел Настройки → ЛК и мобильные (/admin/settings/lk/) —
7 вкладок. вкладки загружаются по одной: открытая приходит с сервера,
остальные — при переходе.
- Обзор — сводка: подключения приложений, привязки соцсетей, текущая конфигурация, статистика AI-ассистента.
- Брендинг (
#lk-admin-branding) — баннер уведомлений (с живым примером), цвет ЛК, визуальные эффекты (тёмная тема / анимация / стекло), фоны страниц логина и онбординга (с превью в модалке). - Функции (
#lk-admin-features) — флаги видимости разделов (Услуги, Аудит, HelpDesk, смена MAC и др.) и поведения. - Способы входа — VK, Telegram, Apple, Google, Яндекс, passkey: креды и переключатели. Вынесены из «Функций»: у них своя область действия (переопределяются организацией) и правят их другие люди.
- AI-чат — каналы (веб-ЛК / мобильное), сбор оценок, автоэскалация, срок хранения истории.
- Безопасность (
#lk-admin-security) — вход по IP, автологин по IP, запрет смены пароля. - Мобильное (
#lk-admin-mobile) — версии Android/iOS, ссылки в сторы (с превью приложения), тексты force-update, push, особенности.
Область действия настроек и организации
На одной инсталляции живут несколько организаций, у каждой свой домен личного кабинета. Настройка может быть общей — действует на все организации, или своей — принадлежит одной.

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

Когда в шапке админки выбрана организация, поля показывают, откуда взято значение: унаследовано — приходит из общих настроек, своя — принадлежит организации, рядом кнопка «к общему». Сверху — счётчик своих настроек и «сбросить все к общим».
Какие настройки переопределяются
| Группа | Что входит | Механизм |
|---|---|---|
| Брендинг | фон входа, баннер, цвет, PWA, ссылка на сайт | LK_SETTING_ORG + резолвер |
| Мобильное | тексты обновления, push, особенности | |
| Функции | видимость разделов, обещанный платёж | |
| Безопасность | пароли, блокировки, привязка по IP | |
| Способы входа | VK / Telegram / Apple / Google / Яндекс / passkey | LKAuthOrg |
| AI-чат | каналы, автоэскалация, оценки | LKAiChatOrg |
Состав групп задаётся настройкой LK_ORG_OVERRIDABLE_GROUPS, весь
механизм выключается одним LK_ORG_OVERRIDES_ENABLED. Резолвер работает
«fail-open»: если переопределения недоступны, ЛК берёт общее значение — настройки
не повод не пустить клиента в кабинет.
Обзор: у кого что включено

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

- Поиск (Ctrl+K) — по всем 141 настройке раздела, включая вкладки, которые ещё не загружены: выбор результата открывает нужную вкладку и подсвечивает поле.
- Единая панель несохранённого внизу экрана — показывает, в каких разделах есть правки, и сохраняет их одним нажатием.
- Проверки на месте: тестовый push на устройство клиента, письмо восстановления пароля, вопрос AI-ассистенту — без входа в ЛК под тестовой учётной записью.
Фон страницы входа
Фон настраивается в Брендинг → Фон страницы логина.
- Галерея — картинки и зацикленные полноэкранные ролики. У каждого элемента своя тема (светлая / тёмная / любая), устройство (десктоп / мобильные / все) и выравнивание. До 5 вариантов на связку тема×устройство; если подходящих несколько — показывается случайный.
- Видео грузится лениво и только когда уместно: не при
prefers-reduced-motion, не в режиме экономии трафика, не на 2G и по умолчанию не на мобильных — там показывается постер. На скрытой вкладке ролик встаёт на паузу. - Сжатие при загрузке: ролик перекодируется в 1080p, H.264 CRF 23, без звука, с быстрым стартом, из первого кадра снимается постер. Требуется ffmpeg в контейнере.
- Анимированные фоны (порты с 21st.dev): «Линии», «Точки», «Сетка»,
«Лучи по сетке», «Волны сияния», «Звёздная сетка», «Сияние (CSS)». Рисуются акцентным
цветом организации, следят за темой, замирают при
prefers-reduced-motionи на скрытой вкладке. - Связка ролика и анимации: тумблер «Показывать анимацию, когда ролик не играет» превращает анимированный фон в дублёра — он работает на мобильных без видео, при экономии трафика и пока грузится первый кадр. Выключен — анимация полностью заменяет галерею.
Сводка «что увидит клиент» над галереей пересчитывается на лету и показывает раздельно для десктопа и мобильных, что именно получит посетитель при текущих настройках.
14. Мобильные приложения и Public API
ЛК продублирован приложениями Android (Google Play) и
iOS (App Store / TestFlight) на Flutter. Приложения используют
Public Mobile API (/mobile-api/v1/, JWT-авторизация):
баланс/тариф/блокировки, платежи, тарифы, услуги, заявки поддержки, AI-чат,
регистрация push-токена.
Force-update
В админке (вкладка «Мобильное») задаются текущая и минимальная версии Android/iOS. Если у клиента версия старее минимальной — приложение показывает диалог обязательного обновления со ссылкой в стор; для версий между минимальной и текущей — мягкое предложение обновиться.
Push-уведомления (Firebase)
Push работают при загруженном файле сервисного аккаунта firebase-key.json
и включаются на странице Сообщения → Push. Низкий баланс, истечение
обещанного платежа и рассылки оператора уходят пушами в приложение. Расписание
отправки — глобальное (Настройки системы → Сообщения).
Скриншоты и обложка: gs://uspeshnyy-projects/smit/billing/lk_v1206/.
Production: /lk/.