Направление работ: AdmLk Код раздела: 3.2 Раздел: Управление > Клиенты Статус: черновик Ответственный: Панкова Л.А. Версия: 0.1 Обновлено: 26.06.26


1. Назначение

Данный раздел обеспечивает сотруднику сервисного кабинета интерфейс для работы со списком клиентов.

Сотрудник видит клиентов в таблице, ищет и фильтрует список, настраивает отображение колонок, добавляет клиента и открывает карточку выбранного клиента.

Функциональное назначение раздела — дать точку входа в управление клиентами без описания внутренней работы карточки клиента и backend-операций.

Раздел зависит от Back: 1.3 Аккаунты и пользователи > Клиенты и Back: 8.5 Администрирование > Управление клиентами.

2. Ключевые понятия

Клиент — пользовательская характеристика аккаунта МАРТ, связанная с карточкой клиента.

Список клиентов — таблица клиентов в AdmLk 3.2.

Карточка клиента — отдельный экран AdmLk 3.2.1, который открывается из списка клиентов.

Фильтр клиентов — набор параметров для отбора клиентов в таблице.

Настройки отображения — меню управления видимостью и порядком колонок таблицы.

3. Scope

Входит

S1: Просмотр списка клиентов S2: Поиск и фильтрация клиентов S3: Добавление клиента S4: Настройка отображения таблицы S5: Переход к карточке клиента S6: Состояния интерфейса

Не входит

  • AdmLk 3.2.1 Управление > Клиенты > Карточка клиента
  • WebLk 6.4.1 Отчеты > Клиенты > Карточка клиента
  • Back 1.3.2 / 1.3.3 — характеристики клиента и группы клиентов
  • Back 3.2 / 3.2.1 / 3.2.2 — процессинг заказов, сборы и заявки
  • Back 8.5.1 — сервисные операции с клиентами внутри карточки
  • Расчет скидок, сборов, заказов и блокировок
  • Backend/API-контракты, структура БД и техническая реализация

4. BR

Указаны в пункте 4 разделов Back: 1.3 Аккаунты и пользователи > Клиенты и Back: 8.5 Администрирование > Управление клиентами.

5. Функциональные требования (UC + FR) {#5-funkcionalnye-trebovaniya-uc-fr}

FR – functional requirements, что интерфейс должен уметь делать по определенному UC.

IDCценарийФункциональное требованиеBRВесСтатус
S1: FR3.2-1Сотрудник открывает раздел клиентовИнтерфейс показывает заголовок “Клиенты”, навигацию и таблицу клиентов.1Частично OQ3.2-3
S1: FR3.2-2Сотрудник просматривает список клиентовИнтерфейс показывает в таблице: клиента, email, телефон, сбор, скидки, количество блокировок, заказы и источник создания.1Не реализовано OQ3.2-4
S1: FR3.2-3Сотрудник просматривает статус клиента (на будущую реализацию)Интерфейс показывает колонку “Статус” и визуально отличает заблокированного клиента в списке.3Не реализовано
S2: FR3.2-4Сотрудник ищет клиентаИнтерфейс позволяет найти клиента через поле поиска и обновляет список по введенному значению.1Не реализовано OQ3.2-5
S2: FR3.2-5Сотрудник фильтрует список клиентовИнтерфейс позволяет открыть фильтры и отобрать клиентов по группе клиентов (на будущее), наличию скидки, сбора и блокировок, а также кем создан клиент.2Не реализовано OQ3.2-7
S2: FR3.2-6Сотрудник фильтрует список по статусу клиента (на будущую реализацию)Интерфейс позволяет отобрать клиентов по статусу клиента.3Не реализовано
S2: FR3.2-7Сотрудник применяет фильтрИнтерфейс показывает примененный фильтр отдельным тегом и позволяет удалить его из списка фильтров.2Не реализовано OQ3.2-7
S3: FR3.2-8Сотрудник открывает добавление клиента (на будущую реализацию)Интерфейс открывает диалог “Добавить клиента” по кнопке добавления.3Не реализовано
S3: FR3.2-9Сотрудник заполняет данные клиента (на будущую реализацию)Интерфейс позволяет заполнить имя, фамилию, телефон, email и сообщение по клиенту.3Не реализовано
S3: FR3.2-10Сотрудник добавляет клиента в группу (на будущую реализацию)Интерфейс позволяет выбрать группу клиента в диалоге добавления клиента.3Не реализовано
S3: FR3.2-11Сотрудник сохраняет нового клиента (на будущую реализацию)Интерфейс активирует сохранение после заполнения обязательных полей и закрывает диалог после успешного сохранения.3Не реализовано
S3: FR3.2-12Сотрудник закрывает добавление клиента (на будущую реализацию)Интерфейс позволяет закрыть диалог добавления клиента без сохранения.3Не реализовано
S4: FR3.2-13Сотрудник открывает настройки отображенияИнтерфейс открывает меню “Настройки отображения” из действия “Дополнительно”.2Не реализовано OQ3.2-8
S4: FR3.2-14Сотрудник настраивает видимость колонокИнтерфейс показывает открытые и скрытые колонки, позволяет скрыть, показать отдельную колонку, скрыть все или показать все.2Не реализовано OQ3.2-8, OQ3.2-10
S4: FR3.2-15Сотрудник меняет порядок колонокИнтерфейс позволяет изменить порядок колонок в настройках отображения через перетаскивание.3Не реализовано OQ3.2-8, OQ3.2-11
S5: FR3.2-16Сотрудник открывает карточку клиентаИнтерфейс позволяет открыть карточку клиента и переносит сотрудника в интерфейс https://wiki.yandex.ru/homepage/d750da42741c/texnicheskaja-dokumentacija/brd/brds---servisnyjj-kabinet/3-upravlenie/3.2-klienty/3.2.1-kartochka-klienta/ .1Не реализовано OQ3.2-6
S6: FR3.2-17Список клиентов загружаетсяИнтерфейс показывает состояние загрузки для поиска, действий и таблицы клиентов.2Не реализовано OQ3.2-9
S6: FR3.2-18Сотрудник открывает список без результатовИнтерфейс показывает пустое состояние, если по поиску или фильтрам нет клиентов.2Не реализовано OQ3.2-9
S6: FR3.2-19Сотрудник использует список на разных ширинах экранаИнтерфейс адаптирует таблицу, поиск, фильтры и настройки отображения для desktop, laptop и tablet.2Не реализовано OQ3.2-9
S6: FR3.2-20Сотрудник выполняет действие, которое завершилось ошибкойИнтерфейс показывает ошибку в текущем контексте и позволяет повторить действие, если повтор доступен.2Не реализовано OQ3.2-9

6. Открытые вопросы {#6-otkrytye-voprosy}

Пин контекста: BRD 3.2 «Клиенты» v0.1 · репозиторий musbooking.weblk.adminpanel · commit c376579 / ветка main · дата сверки 2026-07-15 · якорь: pages/management/clients.vue, widgets/clients/, features/sidebar-navigation/model/menuItems.ts, shared/api/ClientsService.ts, shared/ui/drawer/DisplaySettingsDrawer.vue Сводка: 11 вопросов — Open бизнесу 3 · Open разработке 6 · Open совместных 1 · Закрывает PM 1 · Подтверждено 0. Отрезано находок обратного прохода: 2. Маршрутизация без сверки с гайдбуком (гайдбук на вход не передавался — там, где нужно решение «как должно быть», вопрос уходит бизнесу со статусом Open, а не закрывается сам). Главное: раздела в коде нет — по адресу /management/clients открывается заглушка из четырёх строк. Поэтому 19 требований из 20 имеют статус «Не реализовано», а подтверждённых требований веса 1 — ноль. Корневой (разблокирующий) вопрос — OQ3.2-2; остальные вопросы уточняют, что именно мешает реализации. Об обходе: обход полный по репозиторию (поиск по client/Clients/русским «клиент*» в pages/, features/, entities/, widgets/, shared/, app/), усечения нет. Гипотеза «добавление клиента уже работает» проверена отдельно и не подтвердилась: диалога добавления клиента в коде нет (FR3.2-8…FR3.2-12). Раздел «Клиентские справочники» (entities/client-references, pages/settings/client-references.vue) — это раздел Настроек, а не AdmLk 3.2, и в сверку не входит.

IDИсточникВопросКомуСтатусРекомендацииРешения
OQ3.2-1
OQ3.2-2Код (раздел целиком)Требование говорит: раздел 3.2 — рабочий интерфейс: таблица клиентов, поиск, фильтры, настройки отображения, добавление клиента, переход в карточку. В коде раздела нет ни в каком виде: по адресу /management/clients открывается страница-заглушка из четырёх строк — заголовок «Клиенты» и текст «Здесь будет управление клиентами». Ни таблицы, ни поиска, ни фильтров, ни диалога. Точно так же выглядят соседние разделы «Управление»: Партнёры, Рассылки, Модерация отзывов, Сотрудники и доступ — то есть весь раздел «Управление», кроме Промокодов и Заказов, ещё не начинали делать. Это не отставание в деталях, а отсутствие раздела. \ widgets/clients/ui/ClientsWidget.vue:1-14; соседние заглушки — widgets/partners/ui/PartnersWidget.vue:4, widgets/mailing/ui/MailingWidget.vue:4, widgets/review-moderation/ui/ReviewModerationWidget.vue:4, widgets/staff-access/ui/StaffAccessWidget.vue:4Бизнес (Герман)Open(А) Зафиксировать в шапке BRD, что 3.2 — проектный документ на будущую реализацию, а не описание существующего раздела (рекомендуется) — BRD v0.1 от 26.06.26 описывает целевое состояние, и без этой пометки сплошное «Не реализовано» читается как регресс, хотя разработка просто не начиналась. (Б) Если раздел считался готовым или частично готовым — это расхождение план/факт по всему направлению AdmLk «Управление», и его надо эскалировать отдельно от BRD. Разблокирует OQ3.2-3OQ3.2-9: пока нет ответа, что 3.2 в плане, остальные вопросы не имеют срока.Артем: Согласен с (А). Раздел начал делать. Это целевое описание на будущую реализацию, не регресс. Нужна пометка в шапке BRD.
OQ3.2-3Код FR3.2-1Требование говорит: сотрудник открывает раздел и видит заголовок «Клиенты», навигацию и таблицу клиентов. В коде две трети требования выполнены: пункт «Клиенты» есть и в боковом меню, и на странице раздела «Управление»; адрес /management/clients заведён, заголовок и «хлебная крошка» — «Клиенты», вход только для авторизованных. Таблицы нет — вместо неё текст-заглушка. То есть точка входа в раздел готова, содержимого нет. \ features/sidebar-navigation/model/menuItems.ts:30; pages/management/index.vue:13; pages/management/clients.vue:1-13; widgets/clients/ui/ClientsWidget.vue:3-4Разработка (Владислав)Open(А) Реализовать таблицу — единственная недостающая часть требования, каркас страницы и навигация уже готовы и переиспользуются (рекомендуется). (Б) Разделить FR3.2-1 на «точка входа в раздел» (готово) и «таблица клиентов» (не готово) — требование веса 1 сейчас нельзя закрыть целиком, и его статус всегда будет половинчатым. Связать с OQ3.2-2.Артем: Согласен с (А). Каркас готов, остаётся таблица.
OQ3.2-4Код FR3.2-2Требование говорит: в таблице показываются восемь колонок — клиент, email, телефон, сбор, скидки, количество блокировок, заказы и источник создания. В коде таблицы нет, и — что важнее для планирования — нет источника данных для пяти колонок из восьми. Единственное описание клиента, которое есть во фронте админ-панели, содержит только идентификатор, имя, фамилию, телефон, email и аватар. Сбор, скидки, количество блокировок, заказы и источник создания на фронт сейчас не приходят вообще. Причём это описание заведено под форму промокодов («краткая информация о клиенте для UI промокодов»), а не под список клиентов. \ shared/api/ClientsService.ts:1-2,7-14Разработка (Владислав)Open(А) До оценки раздела согласовать с бэкендом метод, отдающий все восемь полей списком (рекомендуется) — без этого таблица из FR3.2-2 физически не собирается, и любая оценка раздела будет заниженной: сейчас задача выглядит как «нарисовать таблицу», а на деле включает работу на бэкенде. (Б) Сузить первую версию таблицы до полей, которые бэкенд уже отдаёт (клиент, email, телефон), остальные колонки — следующей итерацией; нужно решение бизнеса о минимальном составе колонок. Связать с OQ3.2-5 и OQ3.2-7 — та же нехватка данных.Артем: Метод к данному моменту уже реализован. Таблица в процессе создания. От сущности “Кем создан” решено отказаться для релизной версии.
OQ3.2-5Код FR3.2-4Требование говорит: сотрудник находит клиента через поле поиска, список обновляется по введённому значению. В коде поля поиска в разделе нет. При этом готовый метод поиска клиентов существует: он умеет искать по строке и отдавать результат постранично — но обязательно требует указать партнёрскую зону, то есть ищет клиентов внутри одной партнёрской зоны. Сервисный кабинет по смыслу работает поверх всех партнёров сразу, поэтому существующий метод под задачу 3.2 напрямую не подходит: сквозного поиска клиентов у фронта сейчас нет. \ shared/api/ClientsService.ts:16-32, обязательный параметр партнёрской зоны — shared/api/ClientsService.ts:22-26; единственное использование метода — форма промокодов, features/promo-code-drawer/model/usePromoCodeDrawer.clients.ts:99Разработка (Владислав)Open(А) Запросить у бэкенда сквозной (кросс-партнёрский) поиск клиентов для сервисного кабинета (рекомендуется) — это архитектурное ограничение, а не мелочь: оно всплывёт и в фильтрах (OQ3.2-7), и в карточке клиента 3.2.1, поэтому решать его надо один раз и заранее. (Б) Строить список поверх выбранной партнёрской зоны, добавив её выбор в интерфейс — но это меняет смысл раздела (сервисный кабинет перестаёт быть сквозным) и требует решения бизнеса. Связать с OQ3.2-4.Артем: Решение (А) уже реализовано, метод уже создан.
OQ3.2-6Код FR3.2-16Требование говорит: сотрудник открывает карточку клиента из списка и попадает в раздел 3.2.1. В коде нет ни того, откуда переходить, ни того, куда переходить: списка нет, и отдельного экрана карточки клиента в разделе «Управление» тоже не заведено — нет ни страницы клиента, ни адреса вида /management/clients/<идентификатор>. Точка перехода, ради которой во многом существует раздел 3.2, ведёт в ещё не существующий экран. \ widgets/clients/ui/ClientsWidget.vue:1-14; в pages/management/ есть только clients.vue, index.vue, mailing.vue, partners.vue, promocodes.vue, review-edit.vue, staff-access.vue — страницы карточки клиента нетРазработка (Владислав)Open(А) Планировать 3.2 и 3.2.1 одной поставкой (рекомендуется) — список без карточки не закрывает ни одного пользовательского сценария: сотрудник приходит в раздел, чтобы открыть конкретного клиента, а не смотреть на таблицу. (Б) Сделать список раньше карточки, временно без перехода, и отметить в BRD, что FR3.2-16 ждёт 3.2.1. Связать с OQ3.2-2.Артем: Согласен с (А). Список без карточки бессмысленен.
OQ3.2-7Код FR3.2-5, FR3.2-7Требование говорит: сотрудник открывает фильтры и отбирает клиентов по группе, наличию скидки, сбора и блокировок, а также по тому, кем создан клиент; применённый фильтр показывается отдельным тегом, который можно удалить. В коде ни фильтров, ни тегов фильтра нет. Дополнительно: признаки, по которым предлагается фильтровать (скидка, сбор, блокировки, кем создан), сейчас на фронт не приходят — то есть фильтровать пока не по чему, это та же нехватка данных, что и по колонкам таблицы. \ widgets/clients/ui/ClientsWidget.vue:1-14; состав данных о клиенте — shared/api/ClientsService.ts:7-14Бизнес/РазработкаOpen(А) Сначала бизнес фиксирует обязательный набор фильтров первой версии, затем разработка запрашивает соответствующие поля у бэкенда (рекомендуется) — набор фильтров напрямую задаёт контракт метода из OQ3.2-4, и заказывать его надо один раз, вместе с колонками. (Б) Отложить фильтры до появления самого списка — приемлемо, если в первой версии хватит поиска. Первым нужно решение бизнеса: оно разблокирует техническую часть. Связать с OQ3.2-4.Артем: На данный момент все для создания фильтров есть. Реализую.
OQ3.2-8Код FR3.2-13, FR3.2-14, FR3.2-15Требование говорит: из действия «Дополнительно» открываются «Настройки отображения», где можно показать или скрыть колонку, скрыть все, показать все и поменять порядок колонок перетаскиванием. В коде для раздела «Клиенты» этого нет, но вся описанная механика уже готова как общий компонент админ-панели: окно с заголовком «Настройки отображения», секции «Открыто» и «Скрыто», кнопки «Скрыть все» и «Показать все», переключение видимости колонки по «глазу», перетаскивание колонок мышью. Компонент уже подключён к разделу «Промокоды» — там же видна готовая схема подключения (список + настройки колонок + окно формы). Для клиентов он просто не используется. \ shared/ui/drawer/DisplaySettingsDrawer.vue:4 (заголовок), :19-22 («Скрыть все»), :53-56 («Показать все»), :39-46 (видимость колонки), :32-35,163-175 (перетаскивание); пример подключения — widgets/promo-codes/ui/PromoCodesWidget.vue:15-20, features/promo-code-list/model/promoCodeColumns.ts:30Разработка (Владислав)Open(А) При разработке 3.2 переиспользовать общий компонент, а не писать свой (рекомендуется) — требования FR3.2-13, FR3.2-14 и FR3.2-15 закрываются подключением готового компонента и описанием списка колонок; собственной разработки там почти нет, и это заметно снижает оценку раздела. (Б) Своя реализация под клиентов — не рекомендуется: разойдётся поведение одинаковых на вид настроек в разных разделах админки. Порождает OQ3.2-10 и OQ3.2-11 — у готового компонента есть поведение, которого нет в BRD.Артем: Согласен с (А). Переиспользую DisplaySettingsDrawer, как в промокодах.
OQ3.2-9Код FR3.2-17, FR3.2-18, FR3.2-19, FR3.2-20Требование говорит: интерфейс показывает состояние загрузки, пустое состояние при отсутствии результатов, ошибку с возможностью повторить действие и адаптируется под desktop, laptop и tablet. В коде ничего из этого в разделе нет: заглушка не загружает данные, поэтому ни загрузки, ни пустого состояния, ни ошибки, ни адаптивной таблицы не существует. Это следствие того, что раздел не начат, а не четыре самостоятельных пропуска. \ widgets/clients/ui/ClientsWidget.vue:1-14Разработка (Владислав)Open(А) Включить состояния и адаптив в объём работ по списку с самого начала (рекомендуется) — закладывать их вместе с таблицей заметно дешевле, чем достраивать поверх готовой; в соседних разделах эти состояния уже описаны как отдельный Scope, и переиспользовать подход можно сразу. (Б) Вынести в отдельную итерацию — принимается, но тогда в первой версии сотрудник увидит пустой экран вместо ошибки при сбое загрузки. Связать с OQ3.2-2.Артем: Согласен с (А). Адаптив реализую при реализации сразу.
OQ3.2-10Код вне BRDЧто нашли: общий компонент «Настройки отображения», на который опираются FR3.2-13 и FR3.2-14, умеет две вещи, которых в BRD 3.2 нет. Первое — сброс к виду «По умолчанию» отдельным переключателем. Второе — защищённая колонка, которую нельзя скрыть: у неё выключена кнопка «глаза», и она остаётся видимой даже при нажатии «Скрыть все» (по умолчанию это колонка с названием). Если раздел «Клиенты» переиспользует компонент — а это рекомендуемый путь, — оба поведения появятся в разделе автоматически и разойдутся с текстом требований. \ shared/ui/drawer/DisplaySettingsDrawer.vue:10-15,131-136 (сброс «По умолчанию»), :42,63,99-101,152-153 (защищённая колонка и её поведение при «Скрыть все»)Бизнес (Герман)Open(А) Дописать оба поведения в FR3.2-14 и указать, какая колонка для клиентов остаётся незакрываемой — вероятно, «Клиент», иначе таблица теряет смысл (рекомендуется) — поведение всё равно будет в интерфейсе, дешевле описать его заранее, чем ловить как расхождение на приёмке. (Б) Отключить эти поведения для раздела — потребует доработки общего компонента и разойдётся с разделом «Промокоды», где они уже работают. Связать с OQ3.2-8.Артем: Согласен с (А). Поведение уже есть в общем компоненте - рекомендую дописать в BRD сброс «По умолчанию» и защищённую колонку «Клиент».
OQ3.2-11Код вне BRDЧто нашли: требование FR3.2-15 (порядок колонок перетаскиванием) помечено «на будущую реализацию» и имеет вес 3 — то есть сознательно отложено. При этом перетаскивание колонок уже написано и работает в общем компоненте настроек отображения: при подключении компонента ради FR3.2-13 и FR3.2-14 оно достанется разделу бесплатно, в том же объёме работ. Отложенным требование числится, судя по всему, из-за оценки трудоёмкости, которая уже неактуальна. \ shared/ui/drawer/DisplaySettingsDrawer.vue:32-35,64-68,163-175Бизнес (Герман)Open(А) Пересмотреть вес FR3.2-15 с 3 на 2 и снять отметку «на будущую реализацию» (рекомендуется) — отдельная стоимость требования близка к нулю, откладывать нечего, а в отложенном виде оно искажает картину объёма раздела. (Б) Оставить как есть, если перетаскивание решено сознательно скрыть в этом разделе — тогда это доработка общего компонента, то есть отдельные работы вместо экономии. Связать с OQ3.2-8, OQ3.2-10.Артем: Согласен с (А). Перетаскивание уже реализовано.
OQ3.2-12BRD 3.2, раздел 5 и раздел 6Проблема: в таблице требований колонка «BR» пуста у всех двадцати требований, хотя раздел 1 и раздел 4 BRD прямо ссылаются на Back: 1.3 «Аккаунты и пользователи > Клиенты» и Back: 8.5 «Администрирование > Управление клиентами». Из-за этого ни одно требование интерфейса нельзя проследить до конкретного бизнес-правила — и при сверке нечем проверить, полон ли набор требований. Кроме того, в разделе 6 «Открытые вопросы» осталась пустая строка-заготовка OQ3.2-1 без содержания. \ BRD 3.2 v0.1, раздел 5 (колонка BR — пуста во всех 20 строках), раздел 6 (строка OQ3.2-1)PMЗакрывает PMЗакрываю сам: проставить в колонке BR ссылки на конкретные правила Back 1.3 и Back 8.5 и убрать либо заполнить пустую заготовку OQ3.2-1 → правка BRD. Продуктового выбора здесь нет, решения бизнеса или разработки не требует.

Подстраницы

1 item under this folder.