Направление работ: 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.
| ID | Cценарий | Функциональное требование | 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· commitc376579/ ветка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-3…OQ3.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-12 | BRD 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. Продуктового выбора здесь нет, решения бизнеса или разработки не требует. |