Направление работ: WebLk Код раздела: 5.5 Раздел: Заказы > Абонементы Статус: черновик Ответственный: Панкова Л.А. Версия: 0.1 Обновлено: 10.08.26
1. Назначение
Данный раздел обеспечивает партнёру поиск и просмотр абонементов в календаре и отдельном списке WebLk, настройку отображения списка и экспорт данных.
Создание абонемента описано в WebLk 5.5.1 «Создание абонемента», работа с экраном управления — в WebLk 5.5.2 «Карточка абонемента», оплата — в WebLk 5.5.3 «Оплата абонемента». Состав и статусы заказов определяются в Back: 3.1 «Состав заказа» и 3.2 «Процессинг заказов», обработка групп — в Back: 3.3.1 «Процессинговые группы заказов».
2. Ключевые понятия
Абонемент — объединённая в WebLk группа заказов одного клиента, для которой отображаются общий период, состав, стоимость и состояние оплаты.
Группа заказов — совокупность связанных заказов, обрабатываемых в рамках общего пользовательского сценария.
Партнерская зона — сущность для хранения всей связанной информации по площадкам и услугам представленных в интерфейсах платформы.
3. Scope
Входит
S1: Поиск и просмотр абонементов
S2: Фильтрация, настройка и экспорт списка
S3: Ограничение экспорта по правам пользователя
S4: Адаптивы раздела и его подразделов
Не входит
- WebLk 5.5.1 «Создание абонемента»
- WebLk 5.5.2 «Карточка абонемента»
- WebLk 5.5.3 «Оплата абонемента»
- WebLk 5.2 «Календарь» — работа с календарём вне блока абонементов
- WebLk 6.4.1 «Карточка клиента» — просмотр и изменение данных клиента
4. BR
Указаны в пункте 4 разделов Back: 3.1 «Состав заказа», 3.2 «Процессинг заказов», 3.3.1 «Процессинговые группы заказов» и 4.2.1 «Расчёт в группах заказов».
5. Функциональные требования (UC + FR)
| ID | Сценарий | Функциональное требование | BR | Вес | Статус |
|---|---|---|---|---|---|
| S1: FR5.5-1 | Партнёр просматривает абонементы в календаре | В календаре интерфейс показывает отдельный блок «Абонементы» со строкой поиска и карточками доступных абонементов. | 1 | Частично \ OQ5.5-2 | |
| S1: FR5.5-2 | Партнёр ищет абонемент в календаре | Поле «Найти абонемент» фильтрует карточки абонементов по ФИО или номеру телефона клиента. | 1 | Частично \ OQ5.5-12, OQ5.5-18 | |
| S1: FR5.5-3 | Партнёр просматривает карточку абонемента в календаре | Карточка показывает имя, телефон, Email, количество заказов, общую стоимость и оплаченную сумму, а также признак подписки клиента при наличии (на будущую реализацию). | 1 | Реализовано \ OQ5.5-14 | |
| S1: FR5.5-4 | Партнёр открывает список абонементов | Страница «Абонементы» показывает список с данными клиента, датами начала и окончания, объектами, наличием комментария, количеством заказов, общей стоимостью, оплаченной суммой и суммой к оплате. | 1 | Реализовано \ OQ5.5-15, OQ5.5-10, OQ5.5-11 | |
| S1: FR5.5-5 | Партнёр просматривает итоги списка | В нижней строке таблицы интерфейс показывает итоговые значения по количеству заказов, общей стоимости, оплаченной сумме и сумме к оплате для текущей выборки. | 2 | Не реализовано \ OQ5.5-3 | |
| S1: FR5.5-6 | Партнёр открывает абонемент | Клик по карточке абонемента в календаре или по строке списка, кроме данных клиента, открывает страницу «Управление абонементом». | 1 | Частично \ OQ5.5-1, OQ5.5-4, OQ5.5-16 | |
| S1: FR5.5-7 | Партнёр открывает карточку клиента из списка | Клик по данным клиента открывает WebLk 6.4.1 «Карточка клиента». | 1 | Не реализовано \ OQ5.5-4 | |
| S1: FR5.5-8 | Партнёр наводит указатель на строку | Интерфейс показывает доступные действия со строкой только при наведении. | 2 | Не реализовано \ OQ5.5-7 | |
| S2: FR5.5-9 | Партнёр ищет абонемент в списке | Поле «Найти» фильтрует список абонементов по ФИО или номеру телефона клиента. | 1 | Частично \ OQ5.5-8, OQ5.5-12 | |
| S2: FR5.5-10 | Партнёр ограничивает период | Поля «С» и «До» фильтруют абонементы по выбранному диапазону дат. | 1 | Частично \ OQ5.5-8, OQ5.5-17 | |
| S2: FR5.5-11 | Партнёр фильтрует абонементы по оплате | Фильтр «Оплачено» позволяет выбрать значения «Все», «Не оплачено», «Частично» или «Полностью». | 1 | Частично \ OQ5.5-8, OQ5.5-9 | |
| S2: FR5.5-12 | Партнёр настраивает отображение таблицы | Меню «Настройки отображения» позволяет показать или скрыть доступные столбцы и восстановить набор по умолчанию. | 2 | Реализовано \ OQ5.5-17, OQ5.5-8 | |
| S2: FR5.5-13 | Партнёр экспортирует список | Действие экспорта позволяет скачать текущий список в формате CSV или XLS, если пользователю доступно право экспорта. | 2 | Частично \ OQ5.5-5, OQ5.5-6 | |
| S3: FR5.5-14 | Пользователь не имеет права экспортировать данные | Интерфейс не показывает действие экспорта в списке абонементов и на странице управления абонементом. | 1 | Не реализовано \ OQ5.5-5 | |
| S4: FR5.5-15 | Пользователь работает на поддерживаемом устройстве | Интерфейс адаптирует список абонементов, страницу управления абонементом, таблицы, фильтры, панели создания, редактирования, групповых действий и оплаты для desktop, laptop и tablet и mobile (на будущую реализацию). | 2 | — \ OQ5.5-13 |
6. Открытые вопросы
Сверка с кодом: BRD 5.5 v0.1 · репозиторий
musbooking_personal_account· commit93383777/main· 12.08.26 · якоряfeatures.fsd/processing-groups-list(блок абонементов в календаре),features.fsd/processing-groups-table(список, фильтры, экспорт),widgets.fsd/processing-groups-table(страница управления абонементом),entities.fsd/processing-group(данные и геттеры группы),pages/orders/index.vue(страница раздела с календарём),pages/orders/processing-group(маршруты абонемента),stores/permissions.ts(права) Сводка: 15 требований — Реализовано 3 · Частично 7 · Не реализовано 4 · без вердикта 1. 13 открытых вопросов (Бизнес 0 · Разработка 9 · Бизнес/Разработка 4) и 5 подтверждённых блоков без расхождений. Маршрутизация без сверки с гайдбуком (гайдбук не передавался).
| ID | Источник | Вопрос | Кому | Статус | Рекомендации | Итоговое решение |
|---|---|---|---|---|---|---|
| OQ5.5-1 | Код FR5.5-6, FR5.5-1 | Требование говорит: клик по карточке абонемента в календаре открывает страницу «Управление абонементом». В коде карточка на клик не реагирует вообще: обработчик клика в ней объявлен, но в разметке карточки ни к чему не привязан — на корневом элементе нет обработчика, а объявленное событие click не пропускает и нативный клик к родителю. Вдобавок на самой странице обработчик клика по карточке — заглушка с пометкой «TODO: Открыть детали группы / навигация». При этом карточка визуально ведёт себя как кликабельная: курсор-палец и подсветка при наведении, то есть партнёр жмёт и не получает ничего. \ features.fsd/processing-groups-list/ui/ProcessingGroupCard.vue:1-45,68-70,79-81,88-99; features.fsd/processing-groups-list/ui/index.vue:17-26,97-99; pages/orders/index.vue:189-192 | Разработка | Open | Завести тикет в Bitrix: навесить обработчик клика на корневой элемент карточки абонемента и реализовать в обработчике страницы переход на /orders/processing-group/{id} вместо заглушки. Это блокер сценария FR5.5-6 в календаре. | |
| OQ5.5-2 | Код FR5.5-1 | Требование говорит: в календаре есть отдельный блок «Абонементы» со строкой поиска и карточками. В коде блок смонтирован справа от календаря только на странице раздела «Заказы» (/orders), а на странице «Календарь» (/orders/calendar) — отдельном пункте меню, где работает вся карточка заказа, — блока абонементов нет. То есть у партнёра фактически два разных календарных экрана, и абонементы видны только на одном из них. Заголовка «Абонементы» у блока тоже нет — только поле поиска и кнопка-стрелка на полный список. \ pages/orders/index.vue:8-41; pages/orders/calendar.vue:1-8; widgets.fsd/order-calendar/ui/OrderCalendar.vue:1-14; components/sidebar/Menu.vue:169-192; features.fsd/processing-groups-list/ui/index.vue:1-27 | Бизнес/Разработка | Open | (А) определить, какая из двух страниц является «календарём» из BRD, и смонтировать блок абонементов именно там, добавив заголовок блока (рекомендуется: сейчас наличие абонементов зависит от того, каким пунктом меню партнёр вошёл); (Б) зафиксировать в BRD, что блок живёт на странице раздела «Заказы» рядом с календарём, а не внутри календаря. | |
| OQ5.5-3 | Код FR5.5-5 | Требование говорит: в нижней строке таблицы показываются итоги по количеству заказов, общей стоимости, оплаченной сумме и сумме к оплате для текущей выборки. В коде итоговой строки нет: таблица рендерится с отключённым футером, и слота итогов у компонента таблицы не предусмотрено. При этом сервер уже отдаёт агрегаты по выборке — общую стоимость, оплаченное и неоплаченное, — но форматтер списка их выбрасывает: наверх уходит только массив строк. Итог по количеству заказов сервер не отдаёт, его придётся считать на фронте. \ shared.fsd/api-contracts/processing-groups/processing-groups.schema.ts:87-95; shared.fsd/api/processing-groups/processing-groups.api.ts:51-52; entities.fsd/processing-group/lib/processing-group.getters.ts:353-361; entities.fsd/processing-group/store/processing-group.api.ts:316-331; components/UI/table/DataTable.vue:3-13 | Разработка | Open | Завести тикет в Bitrix: пробросить агрегаты из ответа сервера (они уже есть) в таблицу абонементов и добавить итоговую строку; количество заказов суммировать по колонке. | |
| OQ5.5-4 | Код FR5.5-7, FR5.5-6 | Требование говорит: клик по данным клиента открывает карточку клиента, а вся остальная строка ведёт в абонемент. В коде обработчик клика висит на всей строке целиком, включая ячейку «Клиент», и всегда ведёт на страницу абонемента; ссылки на карточку клиента в ячейке нет. Страница карточки клиента в приложении при этом существует (/clients/{id}), и идентификатор клиента в строке списка есть — не хватает только ссылки и исключения ячейки из клика по строке. \ features.fsd/processing-groups-table/ui/index.vue:84-89,327-330; components/UI/table/DataTable.vue:45-53,299-301; pages/orders/processing-group/index.vue:38-40; entities.fsd/processing-group/lib/processing-group.getters.ts:14-20 | Разработка | Open | Завести тикет в Bitrix: сделать ячейку «Клиент» ссылкой на карточку клиента и остановить всплытие клика, чтобы строка не уводила в абонемент. | |
| OQ5.5-5 | Код FR5.5-13, FR5.5-14 | Требование говорит: экспорт доступен только пользователю с правом экспорта, а без права действие не показывается ни в списке абонементов, ни на странице управления абонементом. В коде проверок прав в разделе нет вовсе: хранилище прав используется только в разделе сотрудников (там оно про редактирование ролей, а не про доступ текущего пользователя), пункты меню помечены признаком доступа жёстко значением «истина». Кнопка «Скачать» с вариантами CSV и Excel показывается всем и в списке абонементов, и на странице абонемента. \ stores/permissions.ts:15; components/staff/forms/Permissions.vue:175; components/sidebar/Menu.vue:186-191; features.fsd/processing-groups-table/ui/index.vue:32-48; features.fsd/processing-groups-table/ui/details.vue:161-176 | Разработка | Open | Завести тикет в Bitrix: подключить проверку прав текущего пользователя и скрывать действие экспорта при отсутствии права. Корневой вопрос общий с OQ5.3.2-8 и OQ5.3.4-6 — решать один раз для всех разделов. | |
| OQ5.5-6 | Код FR5.5-13 | Требование говорит: действие экспорта скачивает текущий список в формате CSV или XLS. В коде экспорт есть (CSV и Excel/XLSX), но файл собирается на клиенте из сырых значений полей, а не из того, что видно в таблице: даты уходят в техническом ISO-формате, «Объект(ы)» — списком идентификаторов баз вместо названий, суммы — без форматирования. Кроме того, в файл попадают только строки, уже загруженные на клиент: список запрашивается пачкой в 500 записей, пагинации в таблице нет — при большем числе абонементов и выгрузка, и сам список молча окажутся неполными. \ features.fsd/processing-groups-table/ui/index.vue:337-380,102-104,92-99; features.fsd/processing-groups-table/model/processing-groups-table.ui.ts:41 | Разработка | Open | Завести тикет в Bitrix: выгружать в файл отображаемые значения (те же форматтеры, что в ячейках) и решить вопрос с лимитом 500 записей — либо серверный экспорт, либо пагинация с явным предупреждением о неполной выгрузке. | |
| OQ5.5-7 | Код FR5.5-8 | Требование говорит: доступные действия со строкой показываются только при наведении. В коде у строки нет никаких действий — ни при наведении, ни постоянно: таблица рисует только ячейки с данными, при наведении меняется лишь фон строки. Из формулировки FR тоже не следует, какие именно действия предполагаются (открыть, оплатить, архивировать?), поэтому подтвердить требование нечем. \ features.fsd/processing-groups-table/ui/index.vue:76-143; components/UI/table/DataTable.vue:3-13,45-91 | Бизнес/Разработка | Open | (А) перечислить в BRD конкретный состав действий строки и реализовать hover-панель (рекомендуется: сейчас требование непроверяемо); (Б) убрать FR5.5-8, если действий у строки не предусмотрено и открытие абонемента кликом достаточно. | |
| OQ5.5-8 | Код FR5.5-9, FR5.5-10, FR5.5-11, FR5.5-12 | Требование говорит: поля «С» и «До», фильтр «Оплачено» со значениями «Все / Не оплачено / Частично / Полностью», меню «Настройки отображения», поле «Найти». В коде подписи другие: период выбирается одним полем-диапазоном «Дата» с плейсхолдером «Выберите даты» (двух отдельных полей «С» и «До» нет); фильтр называется «Статус оплаты», значения — «Все», «Не оплачено», «Частично оплачено», «Оплачено»; меню столбцов называется «Колонки»; поле поиска в списке — «Найти абонемент». По поведению всё соответствует BRD, расходятся только надписи, но именно по ним раздел будут принимать и описывать в инструкциях. \ features.fsd/processing-groups-table/ui/index.vue:4-13,16-25,54-70,250-255; components/Reports/ReportHeader.vue:31-50; components/UI/fields/CoreDateField.vue:21,121-125 | Бизнес/Разработка | Open | Завести тикет в Bitrix: привести подписи фильтров и меню к формулировкам BRD (или, если решение обратное, зафиксировать фактические подписи в BRD одной правкой — но выбрать один вариант). | |
| OQ5.5-9 | Код FR5.5-11 | Что нашли: статус оплаты фильтруется дважды — параметр уходит на сервер и повторно применяется на клиенте по собственным правилам: «не оплачено» = есть долг и оплачено ноль, «частично» = есть и оплата, и долг, «оплачено» = долга нет и сумма больше нуля. Абонемент с нулевой стоимостью не попадает ни в одну категорию, кроме «Все». Если серверная трактовка отличается от клиентской, партнёр получит пустой список без каких-либо объяснений, а причину расхождения будет не видно ни в интерфейсе, ни в логах. \ features.fsd/processing-groups-table/model/processing-groups-table.ui.ts:35-42,171-187 | Разработка | Open | Завести тикет в Bitrix: оставить один источник правды по фильтру оплаты — либо серверный параметр, либо клиентскую фильтрацию — и зафиксировать трактовку нулевой стоимости. | |
| OQ5.5-10 | Код FR5.5-4 | Что нашли: колонки «Дата начала» и «Дата окончания» сервер в списке не отдаёт — фронт на каждый абонемент отдельно запрашивает все его заказы (пачками до 500) и берёт минимальную и максимальную дату. На выборке в сотню абонементов это сотня дополнительных запросов при открытии списка; результат кешируется в памяти и не пересчитывается при смене периода или фильтров, то есть после изменения выборки даты могут остаться от прошлой. Пока заказы не подгрузились, в обеих колонках стоит прочерк. \ features.fsd/processing-groups-table/model/processing-groups-table.ui.ts:91-156; entities.fsd/processing-group/lib/processing-group.getters.ts:326-328 | Разработка | Open | Завести тикет в Bitrix: запросить у бэкенда даты начала и окончания абонемента прямо в ответе списка и убрать вычисление на фронте; до тех пор — сбрасывать кеш дат при смене фильтров. | |
| OQ5.5-11 | Код FR5.5-4 | Требование говорит: список показывает «данные клиента». В коде это одна колонка «Клиент» с ФИО (или подстановка «Без имени», если ФИО пустое); телефона, e-mail и аватара в таблице нет — они есть только в карточке абонемента в календаре. Что бизнес понимает под «данными клиента» в списке, из формулировки FR не следует, поэтому сверить состав нечем. \ features.fsd/processing-groups-table/ui/index.vue:87-89,258-273; entities.fsd/processing-group/lib/processing-group.getters.ts:14-41 | Бизнес/Разработка | Open | (А) перечислить в FR5.5-4 точный состав данных клиента в списке (ФИО / телефон / e-mail) и дополнить таблицу (рекомендуется: телефон — основной способ идентификации клиента у администратора); (Б) зафиксировать, что в списке достаточно ФИО, а остальное — в карточке клиента. | |
| OQ5.5-12 | Код FR5.5-2, FR5.5-9 | Требование говорит: поиск фильтрует абонементы по ФИО или номеру телефона клиента. В коде и в блоке календаря, и в списке строка поиска целиком уходит на сервер одним параметром — на фронте никакой фильтрации нет, поэтому правило «ФИО или телефон» статической сверкой подтвердить нельзя: это поведение бэкенда. Дополнительно: запрос уходит на каждое нажатие клавиши, без задержки ввода — при быстром наборе это серия лишних запросов. \ features.fsd/processing-groups-list/ui/index.vue:4-9,86-95; features.fsd/processing-groups-table/ui/index.vue:11-12; features.fsd/processing-groups-table/model/processing-groups-table.ui.ts:35-42; shared.fsd/api-contracts/processing-groups/processing-groups.schema.ts:116-123 | Разработка | Open | Завести тикет в Bitrix: подтвердить у бэкенда, что поиск действительно ищет и по ФИО, и по телефону (и зафиксировать это в BRD Back), а также добавить задержку ввода перед запросом. | |
| OQ5.5-13 | Код FR5.5-15 | Требование говорит: список абонементов, страница управления, таблицы, фильтры и панели адаптируются под desktop, laptop, tablet и mobile. В коде подтверждается только частичная адаптация: панель фильтров списка имеет три раскладки (≥1000 px — одна строка, 520–999 px — две, менее 520 px — стек), страница «Заказы» перестраивает календарь и блок абонементов на 767 и 1280 px, а виджет списка перестаёт сжимать таблицу под панель на ширине менее 768 px. При этом сам блок абонементов в календаре имеет фиксированную ширину 320 px и высоту 78dvh, а таблица — фиксированную высоту 62dvh. Полноту адаптации под четыре класса устройств статическая сверка не подтверждает. \ features.fsd/processing-groups-table/ui/index.vue:82,165-215; widgets.fsd/processing-groups-table/ui/index.vue:28-52; pages/orders/index.vue:233-248; features.fsd/processing-groups-list/ui/index.vue:105-136 | Разработка | Open | Завести тикет в Bitrix: проверить список абонементов и блок в календаре на четырёх контрольных ширинах вручную (или e2e) — в первую очередь фиксированные 320 px блока и высоты 62/78dvh на планшете и мобильном. | |
| OQ5.5-14 | Код FR5.5-3 | Что подтверждено: карточка абонемента в календаре показывает блок клиента (аватар, имя, телефон, e-mail) и четыре плитки — «Оплачено», «К оплате», «Кол-во заказов», «Общая стоим.». Признак подписки, помеченный в BRD как «на будущую реализацию», по факту уже есть — бейдж «Pro» на аватаре при соответствующем тарифе клиента. Сверх BRD карточка показывает ещё и сумму «К оплате». \ features.fsd/processing-groups-list/ui/ProcessingGroupCard.vue:1-45; entities.fsd/client/ui/Card.vue:10-75 | — | Подтверждено | Расхождения по составу нет. → правка BRD: снять с признака подписки пометку «на будущую реализацию» и дописать в FR5.5-3 сумму «К оплате». | — |
| OQ5.5-15 | Код FR5.5-4 | Что подтверждено: страница «Абонементы» показывает таблицу с колонками «Клиент», «Дата начала», «Дата окончания», «Объект(ы)», «Комментарий», «Заказов», «Стоимость», «К оплате», «Оплачено»; объекты выводятся названиями баз, комментарий — текстом (или «Нет», если его нет), суммы — с разделителями и знаком рубля. Для пустой выборки показывается состояние «Абонементов не найдено», под таблицей — легенда статусов заказов. \ features.fsd/processing-groups-table/ui/index.vue:76-146,258-273,383-403 | — | Подтверждено | Расхождения по составу колонок нет; открытыми остаются состав «данных клиента» (OQ5.5-11) и способ получения дат (OQ5.5-10). | — |
| OQ5.5-16 | Код FR5.5-6 | Что подтверждено: клик по строке списка открывает страницу управления абонементом /orders/processing-group/{id} — с заголовком «Абонементы», возвратом к списку и виджетом управления группой. Переход работает по всей строке. \ features.fsd/processing-groups-table/ui/index.vue:84,327-330; widgets.fsd/processing-groups-table/ui/index.vue:7-12,80-82; pages/orders/processing-group/index.vue:38-40; pages/orders/processing-group/[id]/index.vue:1-7 | — | Подтверждено | Расхождения нет — кроме оговорки «кроме данных клиента» (OQ5.5-4) и клика по карточке в календаре (OQ5.5-1). | — |
| OQ5.5-17 | Код FR5.5-10, FR5.5-11, FR5.5-12 | Что подтверждено: период, строка поиска и статус оплаты уходят в запрос списка и перезапрашивают данные; по умолчанию период — от месяца назад до месяца вперёд. Меню столбцов позволяет скрыть и показать каждый столбец по отдельности, а также «Показать все», «Скрыть все» и «По умолчанию»; порядок столбцов меняется перетаскиванием, выбранный набор сохраняется между сессиями. Перетаскивание и сохранение набора — сверх BRD. \ features.fsd/processing-groups-table/model/processing-groups-table.ui.ts:19-47,210-226; features.fsd/processing-groups-table/ui/index.vue:54-70,275-300; components/UI/filters/ColumnsMenu.vue:24,54,80 | — | Подтверждено | Поведение соответствует BRD. → правка BRD: дописать в FR5.5-12 сохранение набора столбцов и изменение их порядка; расхождения в подписях — OQ5.5-8. | — |
| OQ5.5-18 | Код FR5.5-2 | Что подтверждено: в блоке абонементов в календаре есть поле «Найти абонемент», ввод перезапрашивает список карточек, рядом — кнопка-стрелка, ведущая на полный список абонементов. Карточки перерисовываются по результату запроса. \ features.fsd/processing-groups-list/ui/index.vue:3-26,86-95; features.fsd/processing-groups-list/model/processing-groups-list.ui.ts:63-67,160-163 | — | Подтверждено | Расхождения по наличию поля нет; семантика поиска (ФИО/телефон) — OQ5.5-12. | — |
Отрезано в обратном проходе (не бизнес-значимо, 4 находки): в списке абонементов заведено состояние меню создания (createMenu), которое ни к чему не привязано, а в виджете объявлен и нигде не используется обработчик закрытия панели создания (features.fsd/processing-groups-table/ui/index.vue:246,322-325; widgets.fsd/processing-groups-table/ui/index.vue:95-99) — мёртвый код; в карточке клиента рядом с именем безусловно выводится иконка-предупреждение (треугольник), из-за чего в каждой карточке абонемента постоянно висит значок тревоги (entities.fsd/client/ui/Card.vue:33-39) — косметика, относится к карточке клиента, а не к разделу 5.5; при смене партнёрской зоны страница «Заказы» перезаписывает параметры блока абонементов своей пустой строкой поиска, сбрасывая введённый партнёром запрос (pages/orders/index.vue:199-214 против features.fsd/processing-groups-list/ui/index.vue:86-95) — редкий сценарий; README фичи описывает компонент ProcessingGroupsList.vue, которого в фиче нет — файл называется index.vue (features.fsd/processing-groups-list/README.md:13,25,40,104) — устаревшая документация.