Направление работ: WebLk Код раздела: 6.4.1 Раздел: Отчеты > Клиенты > Карточка клиента Статус: черновик Ответственный: Панкова Л.А. Версия: 0.2 Обновлено: 20.07.26
1. Назначение
Данный раздел обеспечивает партнеру интерфейс для просмотра карточки клиента в разделе отчетов.
Партнер видит основные сведения о клиенте, партнерские данные, сообщения, блокировку, сбор, промокоды, условия оплаты и историю изменений в рамках своей партнерской зоны.
Функциональное назначение раздела — дать партнеру краткую точку просмотра клиента без перехода к управлению заказами, заявками или финансовыми отчетами.
Раздел зависит от Back: 1.3 Аккаунты и пользователи > Клиенты.
2. Ключевые понятия
Карточка клиента — экран просмотра данных клиента в разделе WebLk 6.4.1.
Основные сведения — блок с именем, контактами, признаками клиента, баллами и группами клиента.
Партнерские данные клиента — данные, которые партнер ведет по клиенту в рамках своей партнерской зоны: группы, блокировка, сообщения и другие доступные признаки.
Сообщения по клиенту — записи партнера о клиенте, отображаемые в карточке клиента.
Клиент с блокировкой — признак клиента, которому запрещено совершать заказы в текущей партнерской зоне.
История изменений — вкладка с событиями по карточке клиента.
3. Scope
Входит
S1: Открытие карточки клиента из отчета по клиентам S2: Просмотр основных сведений клиента S3: Просмотр партнерских данных клиента S4: Работа с сообщениями по клиенту S5: Просмотр вкладок карточки клиента S6: Состояния интерфейса
Не входит
- WebLk 6.2 Отчеты > Заказы и заявки
- WebLk 5.1 Заказы > Главный экран
- WebLk 5.3 Заказы > Работа с заказами
- WebLk 6.5 Отчеты > Финансовые отчеты
- WebLk 6.6.1 Отчеты > Аналитика и глобальные данные > Новые и постоянные клиенты
- Back 1.3.2 / 1.3.3 — характеристики клиента и группы клиентов
- Back 3.1 / 3.2 / 3.2.2 — состав заказа, процессинг заказов и заявки
- Back 8.2.5 — клиентские справочники
- AdmLk 3.2 / 3.2.1 — управление клиентами и карточка клиента в админке
- Backend/API-контракты, структура БД и техническая реализация
4. BR
Указаны в пункте 4 раздела Back: 1.3 Аккаунты и пользователи > Клиенты.
5. Функциональные требования (UC + FR)
FR – functional requirements, что интерфейс должен уметь делать по определенному UC.
| ID | Cценарий | Функциональное требование | BR | Вес | Статус |
|---|---|---|---|---|---|
| S1: #FR6.4.1-1 | Партнер открывает карточку клиента | Интерфейс открывает карточку выбранного клиента из отчета по клиентам и показывает данные только в контексте текущей партнерской зоны. | 1 | Реализовано | |
| S1: #FR6.4.1-2 | Партнер возвращается к отчету по клиентам | Интерфейс позволяет вернуться к отчету по клиентам с сохранением предыдущего контекста просмотра, если он доступен. | 2 | Частично \ #OQ6.4.1-7 | |
| S2: #FR6.4.1-3 | Партнер просматривает основные сведения клиента | Интерфейс показывает имя клиента, контакты, аватар или заменяющий элемент, признаки клиента и доступные идентификаторы. | 1 | Частично \ #OQ6.4.1-13 | |
| S2: #FR6.4.1-4 | Партнер просматривает баллы и группы клиента | Интерфейс показывает баллы клиента. Группы клиента отображаются, если они есть у клиента в рамках текущей партнерской зоны. | 2 | Частично \ #OQ6.4.1-5 | |
| S3: #FR6.4.1-5 | Партнер просматривает дополнительные сведения клиента | Интерфейс позволяет раскрыть блок дополнительных сведений и показывает заполненные поля без перехода к редактированию справочников. | 2 | Не реализовано \ #OQ6.4.1-6 | |
| S3: #FR6.4.1-6 | Партнер просматривает деятельность клиента | Интерфейс позволяет раскрыть блок деятельности клиента и показывает доступные характеристики клиента без изменения их состава. | 2 | Не реализовано \ #OQ6.4.1-6 | |
| S3: #FR6.4.1-7 | Партнер видит блокировку клиента | Интерфейс показывает признак блокировки клиента, если блокировка была применима к текущей партнерской зоне. | 2 | Реализовано | |
| S4: #FR6.4.1-8 | Партнер просматривает сообщения по клиенту | Интерфейс показывает сообщения по клиенту с датой, текстом, автором и доступными данными автора. | 1 | Частично \ #OQ6.4.1-9 | |
| S4: #FR6.4.1-9 | Партнер добавляет сообщение по клиенту | Интерфейс позволяет ввести сообщение, выбрать доступный тип или контекст сообщения и отправить запись в карточку клиента. | 1 | Реализовано | |
| S4: #FR6.4.1-10 | Партнер редактирует сообщение по клиенту | Интерфейс позволяет перейти в режим редактирования сообщения, сохранить изменения или отменить редактирование без изменения записи. | 2 | Не реализовано \ #OQ6.4.1-8 | |
| S4: #FR6.4.1-11 | Партнер удаляет сообщение по клиенту | Интерфейс позволяет в меню редактирования сообщения выбрать удаление сообщения. | 2 | Не реализовано \ #OQ6.4.1-8 | |
| S5: #FR6.4.1-12 | Партнер переключает вкладки карточки клиента | Интерфейс позволяет переключаться между вкладками “Сообщения по клиенту”, “Информация по клиенту”, “Сбор”, “Промокоды” и “Условия оплаты” без выхода из карточки. | 2 | Частично \ #OQ6.4.1-2 \ #OQ6.4.1-14 | |
| S5: #FR6.4.1-13 | Партнер просматривает вкладку “Сбор” | Интерфейс показывает сумму сбора и связанные данные по сбору в карточке клиента без действий с оплатой. | 2 | Частично \ #OQ6.4.1-3 \ #OQ6.4.1-10 | |
| S5: #FR6.4.1-14 | Партнер просматривает историю изменений | Интерфейс показывает события истории изменений с датой, автором и содержанием изменения, если такие данные доступны. | 2 | Не реализовано \ #OQ6.4.1-4 | |
| S5: #FR6.4.1-15 | Партнер видит связанные разделы по клиенту | Интерфейс может показывать связанные области по заказам, заявкам, сборам или финансовым данным как отдельные разделы, которые описаны в соседних BRD. | 2 | Реализовано | |
| S6: #FR6.4.1-16 | Партнер открывает карточку, данные загружаются | Интерфейс показывает состояние загрузки для карточки клиента и не позволяет выполнять действия, пока ключевые данные не загружены. | 2 | Реализовано | |
| S6: #FR6.4.1-17 | Партнер открывает карточку без части данных | Интерфейс показывает пустое состояние в блоках, где у клиента нет сообщений, дополнительных сведений или истории изменений. | 2 | Частично \ #OQ6.4.1-12 | |
| S6: #FR6.4.1-18 | Партнер выполняет действие, которое завершилось ошибкой | Интерфейс показывает ошибку в текущем контексте и дает возможность повторить действие, если повтор доступен. | 2 | Частично \ #OQ6.4.1-11 |
6. Открытые вопросы
| ID | Источник | Вопрос | Кому | Статус | Рекомендации | Решение |
|---|---|---|---|---|---|---|
| #OQ6.4.1-1 | Figma / Back: 1.3 | Уточнить состав полей в блоках “Дополнительная информация” и “Деятельность”. | Продукт | Open | Вопрос стадии A, живой. Код-сторона — в OQ6.4.1-6 (блоки сейчас заглушки). Закрывается решением продукта о составе полей. | Интерфейс карточки клиента поменялся (см. здесь) Поле дополнительная информация ушло. Поле деаятельность требует создания (или доработки старого) ендпоинта. На данный момент не проработана логика функционала. Решение: спроектировать логику и способ получения данных |
| #OQ6.4.1-2 | Код FR6.4.1-12 | Требование говорит: пять вкладок, включая «Условия оплаты». В коде реализовано 4: messages / info / forfeit / promocodes; вкладки «Условия оплаты» в наборе нет. \ widgets.fsd/client-profile/ui/InformationCard.vue:13-38 | Бизнес (Герман) | Open | (А, рекоменд.) если «Условия оплаты» нужны — завести под вкладку отдельную задачу (каркаса нет); (Б) если это задел на будущее — пометить вкладку в BRD как v-next, чтобы сверка не считала расхождением. | Решение: A, нужно реализовать функционал |
| #OQ6.4.1-3 | Код FR6.4.1-13 | Требование говорит: вкладка «Сбор» — сумма и связанные данные, без действий с оплатой. В коде кроме списка сборов на вкладке есть поле ввода и кнопка «Начислить» (действие начисления) — противоречит «без действий». Сумма вынесена в заголовок вкладки. \ ForfeitTab.vue:45-59; InformationCard.vue:28 | Бизнес (Герман) | Open | (А, рекоменд.) убрать/скрыть ввод и кнопку в контексте карточки-просмотра (только просмотр); (Б) если начисление сбора здесь нужно — расширить FR6.4.1-13, явно разрешив действие, и доделать его (см. OQ6.4.1-10). | Ршение: Нужно реализовать функционал |
| #OQ6.4.1-4 | Код FR6.4.1-14 | Требование говорит: вкладка «История изменений» (дата, автор, содержание). В коде её нет: в наборе вкладок отсутствует; по репозиторию «История изменений» встречается только в заказах и карточке сотрудника. \ InformationCard.vue:13-38 | Бизнес (Герман) | Open | (А) если история нужна — завести отдельную задачу (каркаса нет); (Б) если задел на будущее — пометить в BRD как v-next. Продуктовое решение о наличии вкладки. | Решение: Б - это задел на будущее |
| #OQ6.4.1-5 | Код FR6.4.1-4 | Требование говорит: баллы и группы клиента (если есть в текущей ПЗ). В коде баллы выводятся; группы — нет: в ячейке «Группа клиентов» только кнопка «+» без обработчика, в модели ClientI поля групп нет. \ ClientCard.vue:54-61; entities.fsd/client/types.ts:17-33 | Бизнес/Разработка | Open | Редактирование справочников — вне scope (Back 1.3.2/1.3.3). (А, рекоменд.) выводить группы клиента текущей ПЗ read-only (нужны данные из модели/бэка), неактивную кнопку «+» убрать; (Б) если групп в ПЗ нет по данным — показывать пустое состояние вместо кнопки. | UI в фигме обновился, групп в ui нет, кнопки тоже. Решение: нужно согласовать в каком ендпоинте будут приходить баллы и реализовать ui для показа баллов |
| #OQ6.4.1-6 | Код FR6.4.1-5, FR6.4.1-6 | Требование говорит: раскрываемые блоки «Дополнительная информация» и «Деятельность» с заполненными полями. В коде оба — статичный индикатор прогресса с захардкоженными current-step=2 / total-steps=5 (комментарий: «значение захардкожено, потому что информация бека не приходит»); блоки не раскрываются, полей нет. \ ClientCard.vue:62-80 | Бизнес (Продукт) | Open | Не баг — прямо связано с OQ6.4.1-1 (состав полей уточняется). Рекомендация: дождаться решения по составу полей (OQ6.4.1-1), затем заменить прогресс-заглушку реальными раскрываемыми блоками. До закрытия OQ6.4.1-1 багом не считать. | Решение: дождаться решения по составу полей |
| #OQ6.4.1-7 | Код FR6.4.1-2 | Требование говорит: возврат к отчёту с сохранением контекста. В коде явной кнопки возврата нет: заголовок UITitle без пропа to. Контекст отчёта (фильтры/страница) хранится в persist-сторе useClientReportStore → при возврате браузером сохраняется. Готовый BackTitle (router.back()) в карточке не используется. \ pages/clients/[clientId].vue:4; components/UI/layout/BackTitle.vue:34-36 | Разработка | Open | Контекст технически сохраняется, но явного элемента «Назад» нет. (А, рекоменд.) использовать существующий BackTitle в шапке карточки; (Б) оставить навигацию браузером/меню и зафиксировать как осознанное UX-решение. Нужно подтверждение UX возврата. | Решение: данный функционал не реализован, реализовать переход назад |
| #OQ6.4.1-8 | Код FR6.4.1-10, FR6.4.1-11 | Требование говорит: редактирование (режим save/cancel) и удаление сообщения (через меню). В коде мутации useUpdateClientMessageMutation и useDeleteClientMessageMutation (= archive) объявлены в entity, но в UI не используются: у ClientMessageItem нет ни меню редактирования, ни удаления — действия недоступны. \ useClientMessageQueries.ts:56-84; ClientMessageItem.vue | Разработка | Закрывает PM | Бэк-мутации готовы, не хватает UI. Закрываю сам: добавить в ClientMessageItem меню (редактировать → режим save/cancel; удалить → archive), подключив существующие мутации → тикет в Bitrix. Если по продукту эти действия в v0.2 не нужны — снять FR6.4.1-10/11 из scope (правка BRD). | Решение: реализовать ui функцинал |
| #OQ6.4.1-9 | Код FR6.4.1-8 | Требование говорит: сообщения с датой, текстом, автором и данными автора. В коде дата/текст/автор показываются, но данные автора урезаны: mapClientMessageAuthor возвращает name = createdBy (id), phone = null, avatar = null (TODO: «приходит только id createdBy»). ФИО/контакты автора не выводятся. \ client-messages.ui.ts:12-20 | Бизнес/Разработка | Open | Нужен контракт «данные автора по createdBy»; согласовать с Back. (А, рекоменд.) доработать контракт/маппинг, чтобы подтягивались имя/телефон/аватар автора; (Б, временно) пока бэк не отдаёт — показывать «Сотрудник» без телефона и не подставлять id как имя. | Решение: согласовать контракт |
| #OQ6.4.1-10 | Код FR6.4.1-13 | Проблема: блок ввода и кнопка «Начислить» на вкладке «Сбор» неактивны: у TextField нет v-model, у кнопки нет @click. Данные партнёра в подвале захардкожены («Hendrix Studio», «+7 (922) 143-12-24»). \ ForfeitTab.vue:45-59 | Разработка | Open | Связано с OQ6.4.1-3 (нужно ли действие вообще). Если «Начислить» остаётся — доделать (v-model, обработчик, реальные данные партнёра вместо хардкода); если убирается — удалить блок ввода целиком. Зависит от решения по OQ6.4.1-3. | Решение: доделать функциональный блок и прокинуть данные |
| #OQ6.4.1-11 | Код FR6.4.1-18 | Требование говорит: показать ошибку в контексте и дать повторить. В коде ошибки загрузки отдаются только тостом (notifyError), без кнопки повтора; при ошибке загрузки клиента ClientProfile не рисует ни скелетон, ни карточку → пустой контейнер. Повтора в UI нет. \ useClientEntityQueries.ts:61-67; ClientProfile.vue:13-26 | Разработка | Закрывает PM | FR требует повтор, продуктового выбора нет. Закрываю сам: показывать состояние ошибки в карточке с кнопкой «Повторить» (перезапуск query); как минимум не оставлять пустой контейнер — рендерить fallback с действием повтора → тикет в Bitrix. | Ошибка с получением клиента - мало вероятна, поскольку здесь может только оборваться соединение между клиентом и сервером. В этом случае пользователь может перезагрузить страницу. Кропка повтора не нужна. |
| #OQ6.4.1-12 | Код FR6.4.1-17 | Требование говорит: пустое состояние в блоках без данных. В коде пустые состояния есть у сообщений («Сообщений по клиенту пока нет») и промокодов, а у вкладки «Сбор» пустого состояния нет: при пустом списке v-for по forfeits ?? [] не рендерит ничего. \ ForfeitTab.vue:26; MessagesTab.vue:62 | Разработка | Закрывает PM | Продуктового выбора нет. Закрываю сам: добавить пустое состояние «Сборов по клиенту пока нет» на вкладку «Сбор» по аналогии с сообщениями/промокодами → тикет в Bitrix. | Нужно реализовать в макетах пустое состояние |
| #OQ6.4.1-13 | Код FR6.4.1-3 | Проблема: аватар всегда рендерится с is-pro (захардкожено) независимо от реального статуса клиента → потенциально вводящий в заблуждение признак. Отчество (patronymic) есть в модели, но в имени не выводится (только lastName firstName). \ ClientCard.vue:20,32 | Разработка | Закрывает PM | Хардкод признака is-pro — дефект (показывает pro всем). Закрываю сам: привязать is-pro к реальным данным клиента (или убрать до готовности контракта) → тикет в Bitrix. Оговорка: выводить ли отчество в имени — небольшое продуктовое решение, уточнить. | На данный момент с бека не приходит состояние о подписке клиента. Нужно согласовать контракт |
| #OQ6.4.1-14 | Код FR6.4.1-12 | Проблема: вкладка «Информация по клиенту» переключается, но её содержимое — таблица на моковых данных (clientPartnerConditionsMock), не связана с бэком; проп clientId помечен TODO «если после реализации пропс не нужен — убрать». Пользователь видит статичные тестовые данные. \ ClientPartnerConditions.vue:3,11-19 | Бизнес/Разработка | Open | Показ моков вместо контрактных данных. Согласовать с Back контракт данных вкладки. (А, рекоменд.) привязать таблицу «Информация по клиенту» к реальным данным бэка; (Б) убрать вкладку до готовности контракта, чтобы не показывать тестовые данные. | Требуется согласовать контракт |
Вопросы по сверке с кодом
BRD 6.4.1 v0.2 · musbooking_personal_account · commit b9a7a706/test · 2026-07-09 · якорь
pages/clients/[clientId].vue→widgets.fsd/client-profile/*Сводка: вопросов 13 (бизнесовых 6 / программных 7) · подтверждено без вопросов 5 (FR6.4.1-1, FR6.4.1-7, FR6.4.1-9, FR6.4.1-15, FR6.4.1-16) · отрезано находок обратного прохода 3 Под особым вниманием: FR6.4.1-1 (контекст ПЗ) — подтверждён; FR6.4.1-8 (данные автора); FR6.4.1-9 (добавление) — подтверждён; FR6.4.1-12 (состав вкладок); FR6.4.1-13 (Сбор без действий с оплатой)
Бизнесовые
| № | Связано с | Что в BRD | Что в коде | Где в коде |
|---|---|---|---|---|
| Б1 | FR6.4.1-12 | Пять вкладок: «Сообщения по клиенту», «Информация по клиенту», «Сбор», «Промокоды», «Условия оплаты» | Реализовано 4 вкладки: messages / info / forfeit / promocodes. Вкладки «Условия оплаты» в наборе нет — нужно решение: добавить вкладку или снять из BRD. | widgets.fsd/client-profile/ui/InformationCard.vue:13-38 |
| Б2 | FR6.4.1-13 | Вкладка «Сбор»: сумма сбора и связанные данные, «без действий с оплатой» | Кроме списка сборов на вкладке есть поле ввода и кнопка «Начислить» (действие начисления сбора) — противоречит «без действий с оплатой». Сумма сбора вынесена в заголовок вкладки (Сбор: {{ client.forfeit }}). Нужно подтверждение: оставлять ли действие начисления в карточке-просмотре. | widgets.fsd/client-profile/ui/tabs/ForfeitTab.vue:45-59; InformationCard.vue:28 |
| Б3 | FR6.4.1-14 | История изменений (дата, автор, содержание) | Вкладки/блока «История изменений» в карточке клиента нет: в наборе вкладок отсутствует; по репозиторию строка «История изменений» встречается только в заказах и карточке сотрудника. Нужно решение: реализовать или снять требование. | widgets.fsd/client-profile/ui/InformationCard.vue:13-38 (нет в наборе вкладок) |
| Б4 | FR6.4.1-4 | Баллы и группы клиента (если есть в текущей ПЗ) | Баллы выводятся. Группы клиента не отображаются: в ячейке «Группа клиентов» только кнопка «+» (без обработчика), в модели ClientI поля групп нет. Нужно решение: выводить группы (и убрать ли неактивную кнопку добавления — редактирование вне scope). | widgets.fsd/client-profile/ui/ClientCard.vue:54-61; entities.fsd/client/types.ts:17-33 |
| Б5 | FR6.4.1-5, FR6.4.1-6 | Раскрываемые блоки «Дополнительная информация» и «Деятельность» с заполненными полями | Оба блока — статичный индикатор прогресса с захардкоженными current-step=2 / total-steps=5 (комментарий в коде: «значение захардкожено, потому что на данный момент информация бека не приходит»); блоки не раскрываются, полей нет. Ожидаемо на фоне OQ6.4.1-1 (состав полей уточняется) — фиксируем факт, не как баг. | widgets.fsd/client-profile/ui/ClientCard.vue:62-80 |
| Б6 | FR6.4.1-2 | Возврат к отчёту с сохранением контекста просмотра | Явной кнопки возврата в карточке нет: заголовок UITitle без пропа to. Контекст отчёта (фильтры/страница) хранится в persist-сторе useClientReportStore → при возврате браузером сохраняется. Готовый компонент BackTitle (router.back()) в карточке не используется. Нужно подтверждение UX возврата. | pages/clients/[clientId].vue:4; components/UI/layout/BackTitle.vue:34-36 |
Рекомендация / варианты решения
- Состав вкладок и история (Б1, Б3) — карточка даёт 4 из 5 вкладок и не имеет истории изменений. Вариант А (рекоменд.): подтвердить у продукта целевой набор; если «Условия оплаты» и «История изменений» нужны — завести под них отдельные задачи (каркаса сейчас нет). Вариант Б: если это задел на будущее — пометить их в BRD как v-next, чтобы сверка не считала расхождением.
- Вкладка «Сбор» (Б2) — есть действие «Начислить», а BRD ограничивает вкладку просмотром. Вариант А (рекоменд.): убрать/скрыть ввод и кнопку в контексте карточки-отчёта (только просмотр). Вариант Б: если начисление сбора здесь нужно продукту — расширить FR6.4.1-13, явно разрешив действие, и тогда доделать его (см. П3).
- Группы клиента (Б4) — не выводятся, вместо этого неактивная кнопка «+». Вариант А (рекоменд.): выводить группы клиента текущей ПЗ read-only, кнопку добавления убрать (редактирование справочников — вне scope, Back 1.3.2/1.3.3). Вариант Б: если групп в ПЗ нет по данным — показывать пустое состояние вместо кнопки.
- Блоки «Доп. информация» / «Деятельность» (Б5) — заглушки с хардкодом, напрямую связаны с OQ6.4.1-1. Рекомендация: дождаться решения по составу полей, затем заменить прогресс-заглушку реальными раскрываемыми блоками. До закрытия OQ6.4.1-1 багом не считать.
- Возврат к отчёту (Б6) — контекст технически сохраняется через стор, но нет явного элемента «Назад». Вариант А (рекоменд.): использовать существующий
BackTitleв шапке карточки. Вариант Б: оставить навигацию браузером/меню и зафиксировать это как осознанное UX-решение.
Программные
| № | Связано с | Что в BRD | Что в коде | Где в коде |
|---|---|---|---|---|
| П1 | FR6.4.1-10, FR6.4.1-11 | Редактирование сообщения (режим, сохранить/отменить) и удаление (через меню редактирования) | Мутации useUpdateClientMessageMutation и useDeleteClientMessageMutation (= archive) объявлены в entity, но в UI не используются: у ClientMessageItem нет ни кнопки/меню редактирования, ни удаления. Действия недоступны пользователю. | entities.fsd/client/model/useClientMessageQueries.ts:56-84; features.fsd/client-messages/ui/ClientMessageItem.vue (нет меню действий) |
| П2 | FR6.4.1-8 | Сообщения с датой, текстом, автором и доступными данными автора | Список показывает дату/текст/автора, но данные автора урезаны: mapClientMessageAuthor возвращает name = createdBy (id), phone = null, avatar = null (TODO: «приходит только id createdBy»). Реальные ФИО/контакты автора не выводятся. | features.fsd/client-messages/model/client-messages.ui.ts:12-20 |
| П3 | FR6.4.1-13 | Вкладка «Сбор» показывает данные по сбору | Блок ввода и кнопка «Начислить» неактивны: у TextField нет v-model, у кнопки нет @click. Данные партнёра в подвале захардкожены («Hendrix Studio», «+7 (922) 143-12-24»). | widgets.fsd/client-profile/ui/tabs/ForfeitTab.vue:45-59 |
| П4 | FR6.4.1-18 | Показ ошибки в контексте и возможность повторить действие | Ошибки загрузки отдаются только тост-уведомлением (notifyError), без кнопки повтора; при ошибке загрузки клиента ClientProfile не рисует ни скелетон, ни карточку → пустой контейнер. Повтора действия в UI нет. | entities.fsd/client/model/useClientEntityQueries.ts:61-67; widgets.fsd/client-profile/ClientProfile.vue:13-26 |
| П5 | FR6.4.1-17 | Пустые состояния блоков (нет сообщений / сведений / истории) | Пустые состояния есть у сообщений («Сообщений по клиенту пока нет») и промокодов. У вкладки «Сбор» пустого состояния нет: при пустом списке v-for по forfeits ?? [] не рендерит ничего. | widgets.fsd/client-profile/ui/tabs/ForfeitTab.vue:26; features.fsd/client-messages/ui/MessagesTab.vue:62 |
| П6 | FR6.4.1-3 | Аватар/заменитель и признаки клиента | Аватар всегда рендерится с is-pro (захардкожено) независимо от реального статуса клиента → потенциально вводящий в заблуждение признак. Отчество (patronymic) есть в модели, но в имени не выводится (только lastName firstName). | widgets.fsd/client-profile/ui/ClientCard.vue:20,32 |
| П7 | FR6.4.1-12 | Вкладка «Информация по клиенту» | Вкладка переключается, но её содержимое — таблица на моковых данных (clientPartnerConditionsMock), не связана с бэком; проп clientId помечен TODO «если после реализации пропс не нужен — убрать». Пользователь видит статичные тестовые данные. | features.fsd/client-partner-conditions/ui/ClientPartnerConditions.vue:3,11-19 |
Рекомендация / варианты решения
- Редактирование/удаление сообщений (П1) — бэк-мутации готовы, не хватает UI. Вариант А (рекоменд.): добавить в
ClientMessageItemменю (редактировать → режим save/cancel; удалить → archive), подключив существующие мутации. Вариант Б: если по продукту эти действия в v0.2 не нужны — снять FR6.4.1-10/11 из scope. - Данные автора сообщения (П2) — выводится id вместо ФИО/контактов. Вариант А (рекоменд.): доработать контракт/маппинг, чтобы по
createdByподтягивались имя/телефон/аватар автора. Вариант Б (временно): пока бэк не отдаёт — показывать «Сотрудник» без телефона и не подставлять id как имя. - Инертный ввод на вкладке «Сбор» (П3) — связано с Б2. Если действие «Начислить» остаётся — доделать (v-model, обработчик, реальные данные партнёра вместо хардкода); если убирается — удалить блок ввода целиком.
- Ошибки и повтор (П4) — нет ретрая, при ошибке загрузки пустой экран. Вариант А (рекоменд.): показывать состояние ошибки в карточке с кнопкой «Повторить» (перезапуск query). Вариант Б: как минимум не оставлять пустой контейнер — рендерить fallback с действием повтора.
- Пустое состояние «Сбор» (П5) — добавить сообщение вида «Сборов по клиенту пока нет» по аналогии с сообщениями/промокодами.
- Хардкод признака
is-proи содержимого вкладки «Информация» (П6, П7) — общая первопричина: интерфейс показывает захардкоженные/моковые данные вместо контрактных. Рекомендация: привязать признак pro и таблицу «Информация по клиенту» к реальным данным бэка (или убрать до готовности контракта). Отдельно решить, выводить ли отчество в имени.