Направление работ: AdmLk Код раздела: 1.2 Раздел: Главная страница Статус: черновик Ответственный: Панкова Л.А. Версия: 0.1 Обновлено: 15.07.26
1. Назначение
Раздел описывает главную страницу сервисного кабинета, которая открывается пользователю после успешного входа в сервисную зону.
Интерфейс должен показать стартовую страницу AdmLk, обозначить текущий раздел и дать пользователю доступ к быстрым ссылкам на рабочие ресурсы.
Сценарии входа, проверки учетных данных и настройки доступа к сервисной зоне описываются в соседних разделах.
2. Ключевые понятия
Главная страница сервисного кабинета — стартовый экран AdmLk, который пользователь видит после успешного входа.
Сервисная зона — зона управления системой и глобальными настройками.
Блок быстрых ссылок — интерфейсная область на главной странице, в которой ссылки сгруппированы по рабочим ресурсам.
Быстрая ссылка — элемент блока быстрых ссылок с названием, описанием и переходом к связанному ресурсу.
3. Scope
Входит
S1. Открытие главной страницы сервисного кабинета после успешного входа.
S2. Просмотр главной страницы сервисного кабинета.
S3. Взаимодействие с блоком быстрых ссылок.
Не входит
- AdmLk 1.1 — Авторизация > Вход.
- Back 1.1.2 — Аккаунты и пользователи > Организация аккаунтов > Вход в систему.
- Back 1.2 — Аккаунты и пользователи > Организация доступа к системе.
- Back 8.1 — Администрирование > Настройка доступа к сервисной зоне.
4. BR
Указаны в пункте 4 разделов Back: 1.1.2 Аккаунты и пользователи > Организация аккаунтов > Вход в систему и Back: 1.2 Аккаунты и пользователи > Организация доступа к системе.
5. Функциональные требования
| ID | Сценарий | Функциональное требование | BR | Вес | Статус |
|---|---|---|---|---|---|
| FR1.2-1 | S1. Пользователь успешно входит в сервисный кабинет | Интерфейс открывает главную страницу сервисного кабинета, если вход выполнен успешно и у пользователя есть доступ к сервисной зоне. | 1 | Частично \ #OQ1.2-2 | |
| FR1.2-2 | S2. Пользователь просматривает главную страницу | Интерфейс показывает заголовок «Главная», верхний хедер с аватаром аккаунта, логотип сервиса и область основного содержимого. | 1 | Частично \ #OQ1.2-5 | |
| FR1.2-3 | S2. Пользователь просматривает навигацию | Интерфейс показывает боковую навигацию по основным разделам сервисного кабинета и выделяет главную страницу как текущий раздел. | 1 | Частично \ #OQ1.2-6 | |
| FR1.2-4 | S3. Пользователь просматривает доступные ссылки на сторонние рабочие ресурсы | Интерфейс показывает доступные ссылки на сторонние рабочие ресурсы, сгруппированные по ресурсам «Битрикс 24», «Yandex Wiki», «Google» и «Продукты». Для каждой ссылки отображаются название ссылки, описание и иконка связанного ресурса; если в группе несколько ссылок, интерфейс показывает их в составе одной группы, включая компактное отображение нескольких ссылок в одной строке. | 1 | Не реализовано \ #OQ1.2-1 \ #OQ1.2-4 | |
| FR1.2-5 | S3. Пользователь выбирает быструю ссылку | Интерфейс позволяет перейти по выбранной быстрой ссылке к связанному ресурсу. | 1 | Не реализовано \ #OQ1.2-1 \ #OQ1.2-3 | |
| FR1.2-6 | S3. Пользователь редактирует блок быстрых ссылок | Интерфейс позволяет перейти к редактированию блока быстрых ссылок с главной страницы (на будущую реализацию). | 3 | Не реализовано (по плану) \ #OQ1.2-1 |
6. Открытые вопросы
| ID | Источник | Вопрос | Кому | Статус | Рекомендации | Итоговое решение |
|---|---|---|---|---|---|---|
| #OQ1.2-1 | Код FR1.2-4, FR1.2-5, FR1.2-6 | Требование говорит: блок быстрых ссылок — у каждой ссылки название, описание, иконка; переход к ресурсу; редактирование блока. В коде данные захардкожены в конфиге и заглушечные: у всех ссылок название «Ссылка», описание «Описание», URL нет — реальных ресурсов и адресов не заведено. Источник контента (хардкод vs бэкенд/редактируемый) не определён. \ features/home-links/model/homeLinksConfig.ts:11-40 | Бизнес (Герман) | Open | Корневой вопрос блока: откуда берётся контент. От ответа зависят сразу три FR (включая FR1.2-6 «редактирование»). (А, рекоменд.) вынести ссылки в редактируемый источник (бэкенд-настройка) — это же закрывает FR1.2-6; (Б) оставить хардкод-конфиг, но заполнить реальными названиями/описаниями/URL и принять, что «редактирование» = правка кода при деплое. Связать с OQ1.2-3 (переход не реализован). | Артем: если ссылки не будут меняться, то можно оставить их на фронте |
| #OQ1.2-2 | Код FR1.2-1 | Требование говорит: главная открывается, если вход успешен и у пользователя есть доступ к сервисной зоне. В коде фронт проверяет только наличие auth_token в куках; понятия «доступ к сервисной зоне»/роли на фронте нет (в аккаунте — только партнёрские зоны owned/allowed). Кто ограничивает вход — бэкенд или фронт-гейт — не зафиксировано. \ middleware/auth.ts:35-37; entities/account/store/account.session.ts:21-27,30-42 | Бизнес/Разработка | Open | Требование веса 1: половина условия («есть доступ») на фронте не проверяется. Согласовать с Back: 1.2 / 8.1. (А, рекоменд.) подтвердить контрактом, что бэкенд пускает во вход//api/auth только аккаунты с доступом к сервисной зоне (тогда фронт-проверки по токену достаточно); (Б) добавить на фронте явную проверку доступа и состояние «нет доступа к сервисной зоне» с редиректом на вход. Тот же узел, что AdmLk 1.1/OQ1.1-2 (экран «Отсутствует доступ») — решать вместе. | Артем: нужна доработка на бэке. Текущая реализация черновая |
| #OQ1.2-3 | Код FR1.2-5 | Проблема: ссылка — это <button type="button"> без @click/href/навигации: клик ничего не делает. Кнопка-стрелка «Открыть раздел» на карточке тоже без обработчика. Переход не реализован. \ features/home-links/ui/HomeLinksGrid.vue:11-21 | Разработка | Закрывает PM | FR1.2-5 (вес 1) заблокирован, продуктового выбора нет. Закрываю сам (приоритет): сделать элемент ссылки <a :href> / NuxtLink с реальным URL из конфига (для внешних ресурсов — target="_blank" rel="noopener"), навесить переход на карточку и стрелку → тикет в Bitrix. Работает только после появления URL — связать с OQ1.2-1. | Артем: для реализации нужны требования по ссылкам |
| #OQ1.2-4 | Код FR1.2-4 | Требование говорит: для каждой ссылки — иконка связанного ресурса; при нескольких ссылках — компактное отображение нескольких в одной строке. В коде иконка задана только на уровне группы (карточки), у отдельных ссылок иконки нет; ссылки рендерятся колонкой по одной в строке — компактного вывода нет. \ features/home-links/ui/HomeLinksGrid.vue:6-21,120-124 | Бизнес (Герман) | Open | Расхождение по раскладке — нужна фиксация ожидаемого вида. (А) уточнить BRD: иконка на группу, а не на каждую ссылку — тогда текущее поведение верно; (Б) добавить per-link иконку и режим компактного отображения нескольких ссылок в одной строке. Решает продукт/дизайн по макету. | Артем: для реализации нужны требования по ссылкам |
| #OQ1.2-5 | Код FR1.2-2 | Требование говорит: верхний хедер с аватаром аккаунта и логотипом сервиса. В коде оба элемента хедера — статические логотипы (logo-left.svg / logo-right.svg) через UiAvatar; данные аккаунта / аватар пользователя не отображаются. Заголовок «Главная» и область основного содержимого присутствуют. \ widgets/app-header/ui/AppHeader.vue:4-12,27-28 | Бизнес/Разработка | Open | «Аватар аккаунта» подменён статическим логотипом. (А, рекоменд.) добавить в правый кластер хедера аватар/меню аккаунта на данных сессии (getAccountFullName/инициалы); (Б) если продукт отказывается от аватара аккаунта — скорректировать формулировку FR1.2-2. | Артем: реализую после решения бизнеса |
| #OQ1.2-6 | Код FR1.2-3 | Требование говорит: боковая навигация по разделам + выделение главной как текущего раздела. В коде навигация есть (Главная/Настройки/Управление/Отчёты), но подсветка активного раздела работает только в свёрнутом (rail) режиме — в развёрнутом её нет. Плюс сайдбар полностью скрыт при ширине < 640px. \ features/sidebar-navigation/model/menuItems.ts:4-49; SidebarNavigationItemRail.vue:107-120; SidebarNavigationItemExpanded.vue:54-68; SidebarNavigation.vue:53-55 | Разработка | Закрывает PM | Требование однозначно («выделяет текущий раздел»), продуктового выбора нет. Закрываю сам: перенести вычисление isActive в родительский пункт и применять класс .active в обоих режимах → тикет в Bitrix. Отдельно: поведение навигации при ширине < 640px не описано в BRD (сейчас разделы на мобильном недоступны) — при необходимости уточнить у продукта. | Артем: уже поправил. По мобильной версии - требования к этому изначально не было. В сервисном кабинете все реализуется только для десктопных версий |
Вопросы по сверке с кодом
BRD 1.2 v0.1 · musbooking.weblk.adminpanel · commit c376579/main · 2026-07-10 · якорь
pages/index.vue→widgets/home-dashboard→features/home-links;layouts/default.vue→widgets/app-header(features/header-breadcrumbs,header-shell) +widgets/app-sidebar→features/sidebar-navigationСводка: вопросов 6 (бизнесовых 2 / программных 4) · подтверждено без вопросов 1 (FR1.2-6 — редактирование корректно не реализовано как «на будущую реализацию»; смежно с Б1 по источнику данных) · отрезано находок обратного прохода 2 (rail-режим / всплывающие подменю / бейджи-счётчики сайдбара; кнопка «Назад» на самой главной) Под особым вниманием: FR1.2-4 и FR1.2-5 (вес 1) — быстрые ссылки заглушечные и некликабельные; FR1.2-1 (вес 1) — доступ к сервисной зоне на фронте не проверяется.
Бизнесовые
| № | Связано с | Что в BRD | Что в коде | Где в коде |
|---|---|---|---|---|
| Б1 | FR1.2-4, FR1.2-5, FR1.2-6 | Блок быстрых ссылок: для каждой ссылки название, описание, иконка; переход к ресурсу; редактирование блока | Данные захардкожены в конфиге и заглушечные: у всех ссылок название «Ссылка», описание «Описание», URL нет — реальных ресурсов и адресов не заведено. Источник контента (хардкод vs бэкенд/редактируемый) не определён — нужно решение | features/home-links/model/homeLinksConfig.ts:11-40 |
| Б2 | FR1.2-1 | Главная открывается, если вход успешен И у пользователя есть доступ к сервисной зоне | Фронт проверяет только наличие auth_token в куках; понятия «доступ к сервисной зоне»/роли на фронте нет (в аккаунте — только партнёрские зоны owned/allowed). Кто ограничивает вход — бэкенд или фронт-гейт — не зафиксировано; нужно решение | middleware/auth.ts:35-37; entities/account/store/account.session.ts:21-27,30-42 |
Рекомендация / варианты решения
- Источник данных быстрых ссылок (Б1) — сейчас статичная заглушка без URL, реального контента нет. Вариант А (рекоменд.): вынести ссылки в редактируемый источник (бэкенд-настройка) — это же закрывает FR1.2-6 (редактирование блока). Вариант Б: оставить хардкод-конфиг, но заполнить реальными названиями/описаниями/URL и принять, что «редактирование» = правка кода при деплое.
- Гейт доступа к сервисной зоне (Б2) — Вариант А (рекоменд.): подтвердить контрактом, что бэкенд пускает во вход/
/api/authтолько аккаунты с доступом к сервисной зоне (тогда фронт-проверки по токену достаточно). Вариант Б: добавить на фронте явную проверку доступа и состояние «нет доступа к сервисной зоне» с редиректом на вход.
Программные
| № | Связано с | Что в BRD | Что в коде | Где в коде |
|---|---|---|---|---|
| П1 | FR1.2-5 | Интерфейс позволяет перейти по выбранной быстрой ссылке к связанному ресурсу | Ссылка — <button type="button"> без @click/href/навигации: клик ничего не делает. Кнопка-стрелка «Открыть раздел» на карточке тоже без обработчика. Переход не реализован | features/home-links/ui/HomeLinksGrid.vue:11-21 |
| П2 | FR1.2-4 | Для каждой ссылки — иконка связанного ресурса; при нескольких ссылках компактное отображение нескольких в одной строке | Иконка задана только на уровне группы (карточки); у отдельных ссылок иконки нет. Ссылки рендерятся колонкой по одной в строке (flex-direction: column) — компактного вывода нескольких ссылок в одну строку нет | features/home-links/ui/HomeLinksGrid.vue:6-21,120-124 |
| П3 | FR1.2-2 | Верхний хедер с аватаром аккаунта и логотипом сервиса | Оба элемента хедера — статические логотипы (logo-left.svg / logo-right.svg) через UiAvatar; данные аккаунта / аватар пользователя не отображаются. Заголовок «Главная» (через хлебные крошки из route.meta.title) и область основного содержимого — присутствуют | widgets/app-header/ui/AppHeader.vue:4-12,27-28 |
| П4 | FR1.2-3 | Боковая навигация по основным разделам + выделение главной как текущего раздела | Навигация есть (Главная/Настройки/Управление/Отчёты). Подсветка active реализована только в свёрнутом (rail) режиме; в развёрнутом режиме подсветки текущего раздела нет. Сайдбар полностью скрыт при ширине < 640px | features/sidebar-navigation/model/menuItems.ts:4-49; ui/SidebarNavigationItemRail.vue:107-120; ui/SidebarNavigationItemExpanded.vue:54-68; ui/SidebarNavigation.vue:53-55 |
Рекомендация / варианты решения
- Некликабельные ссылки (П1) — сделать элемент ссылки
<a :href>/NuxtLinkс реальным URL из конфига (для внешних ресурсов —target="_blank" rel="noopener"), навесить переход на карточку/стрелку. Блокирует FR1.2-5 (вес 1) — приоритетно. - Иконка на ссылку и компактный ряд (П2) — либо уточнить BRD (иконка на группу, а не на каждую ссылку — тогда текущее поведение верно), либо добавить per-link иконку и режим компактного отображения нескольких ссылок в одной строке. Нужна фиксация ожидаемой раскладки.
- Аватар аккаунта (П3) — добавить в правый кластер хедера аватар/меню аккаунта на данных сессии (
getAccountFullName/инициалы); либо, если продукт отказывается от аватара аккаунта, скорректировать формулировку FR1.2-2. - Подсветка текущего раздела в развёрнутом меню (П4) — перенести вычисление
isActiveв родительский пункт (SidebarNavigationItem) и применять класс.activeв обоих режимах; определить поведение навигации при ширине < 640px (сейчас разделы на мобильном недоступны).