Направление работ: WebLk Код раздела: 4.2 Раздел: Контент > Площадки Статус: черновик Ответственный: Панкова Л.А. Версия: 0.2 Обновлено: 01.07.26
1. Назначение
Данный раздел обеспечивает партнеру интерфейс для создания, просмотра и управления площадками в партнерской зоне.
Партнер создает площадку, редактирует ее данные, управляет медиа, райдером, удобствами, условиями работы, правилами, публикационным статусом и связанными блоками.
Раздел зависит от Back: 2.2 Объекты и предложения > Площадки партнеров.
2. Ключевые понятия
Площадка партнера — помещение, привязанное к объекту партнера, на которое пользователь может оформить заказ.
Страница площадки — экран WebLk 4.2 с данными площадки и действиями по управлению площадкой.
Райдер площадки — описание оборудования, света, звука и других технических характеристик площадки.
Удобства площадки — параметры площадки для поиска клиентами: оборудование, тип площадки и интерьер.
Условия работы — настройки режима работы, уведомлений и формата работы площадки.
Публикационный статус — состояние площадки в сервисе: на модерации, опубликована, снята с публикации или в архиве.
3. Scope
Входит
S1: Просмотр страницы площадки S2: Создание площадки S3: Редактирование информации о площадке S4: Услуги размещения и продвижения S5: Статус модерации площадки S6: Снятие площадки с публикации S7: Публикация площадки S8: Архивирование площадки S9: Восстановление площадки из архива S10: Правила и условия площадки S11: Состояния интерфейса и адаптивы
Не входит
- WebLk 4.1 Контент > Объекты
- WebLk 4.2.1 Контент > Площадки > Модерация данных площадки
- WebLk 4.4 Контент > Цены
- WebLk 4.5 Контент > Позиции
- WebLk 4.6 Контент > Скидки и акции
- WebLk 3.4 Профиль партнера > Настройки правил работы
- Back 2.2.1 — площадки, связанные одним расписанием
- Back 2.4 / 2.5 / 2.6 / 2.7 — правила заказов, позиции, цены, скидки и баллы
- Mobile, Widget и Catalog-отображение площадки для клиента
- Backend/API-контракты, структура БД и техническая реализация
4. BR
Указаны в пункте 4 раздела Back: 2.2 Объекты и предложения > Площадки партнеров.
5. Функциональные требования (UC + FR) {#5-funkcionalnye-trebovaniya-uc-fr}
FR – functional requirements, что интерфейс должен уметь делать по определенному UC.
| ID | Cценарий | Функциональное требование | BR | Вес | Статус |
|---|---|---|---|---|---|
| S1: FR4.2-1 | Партнер открывает страницу площадки | Интерфейс показывает название площадки, объект, цвет, описание, габариты, площадь, вместимость, схему, дополнительные материалы и статус доступности в сервисе. | 1 | Частично OQ4.2-5 | |
| S1: FR4.2-2 | Партнер просматривает медиа и описание площадки | Интерфейс показывает фото и видео площадки, текстовый райдер, удобства, оборудование, тип площадки и интерьер. | 1 | Частично OQ4.2-10, OQ4.2-15 | |
| S1: FR4.2-3 | Партнер просматривает уведомления, условия работы и правила | Интерфейс показывает условия работы (время и формат), адреса для уведомлений, типы уведомлений, правила оказания услуг, правила создания заказов, правила отмены и условия оплаты. | 1 | Частично OQ4.2-3, OQ4.2-4 | |
| S1: FR4.2-4 | Партнер просматривает связанные блоки площадки | Интерфейс показывает связанные позиции, цены, внешние сервисы и связанные площадки без полного управления этими разделами. | 2 | Частично OQ4.2-20 | |
| S1: FR4.2-5 | Партнер просматривает промокоды и акции площадки | Интерфейс показывает связанные промокоды и акции площадки с названием, периодом действия, скидкой и условиями активации. | 2 | Реализовано | |
| S1: FR4.2-6 | Партнер запускает синхронизацию | Интерфейс позволяет запустить синхронизацию внешних сервисов или связанных площадок из блока “Синхронизация данных”. Подробная синхронизация описана в https://wiki.yandex.ru/homepage/d750da42741c/texnicheskaja-dokumentacija/brd/f0421948614f/3-profil-partnera/277e9836202c/ | 2 | Не реализовано OQ4.2-19 | |
| S1: FR4.2-7 | Партнер просматривает показатели площадки (на будущую реализацию) | Интерфейс показывает рейтинг, количество отзывов, добавления в избранное, актуальность информации и диапазон стоимости. | 3 | Не реализовано | |
| S1: FR4.2-8 | Партнер просматривает список оборудования | Интерфейс показывает в формате списка оборудование и услуги. С категорией, названием, фото, ценой, количеством и площадки | 2 | Частично OQ4.2-26 | |
| S2: FR4.2-9 | Партнер начинает создание площадки | Интерфейс открывает сценарий создания площадки и показывает пошаговый процесс с кнопками отмены и продолжения. | 1 | Реализовано OQ4.2-38 | |
| S2: FR4.2-10 | Партнер заполняет основные данные площадки | Интерфейс позволяет указать название, цвет, описание, габариты, площадь, вместимость, схему площадки. | 1 | Частично OQ4.2-11, OQ4.2-14 | |
| S2: FR4.2-11 | Партнер задает удобства площадки | Интерфейс позволяет выбрать дополнительные характеристики для поиска клиентами: оборудование, тип площадки и интерьер. | 1 | Реализовано OQ4.2-10 | |
| S2: FR4.2-12 | Партнер заполняет райдер | Интерфейс позволяет описать технический райдер. | 1 | Реализовано OQ4.2-39 | |
| S2: FR4.2-13 | Партнер заполняет медиа | Интерфейс позволяет загрузить минимум 3 фото, выбрать заглавное фото и добавить видео. | 1 | Частично OQ4.2-6, OQ4.2-7 | |
| S2: FR4.2-14 | Партнер завершает создание площадки | Интерфейс позволяет сохранить созданную площадку и показывает ее статус после создания. | 1 | Частично OQ4.2-8 | |
| S3: FR4.2-15 | Партнер открывает редактирование площадки | Интерфейс открывает форму редактирования с полями названия, цвета, описания (не более 500 символов), габаритов, площади, вместимости, схемы. | 1 | Реализовано OQ4.2-40 | |
| S3: FR4.2-16 | Партнер сохраняет изменения площадки | Интерфейс позволяет сохранить изменения и показывает уведомление, что новое название, описание или схема отобразятся в интерфейсах (после модерации в будущем). | 1 | Частично OQ4.2-9 | |
| S3: FR4.2-17 | Партнер редактирует райдер и удобства | Интерфейс позволяет изменить текст райдера и выбранные удобства площадки. | 1 | Реализовано OQ4.2-41 | |
| S3: FR4.2-18 | Партнер меняет условия работы площадки | Интерфейс позволяет изменить режим работы, адреса и типы уведомлений, а при изменении времени работы показывает плашку с пояснением влияния изменения на остальные площадки объекта. | 2 | Частично OQ4.2-3, OQ4.2-18 | |
| S3: FR4.2-19 | Партнер редактирует фото площадки | Интерфейс позволяет добавить новые фотографии или видео, удалить старые и изменить их расположение. | 2 | Частично OQ4.2-23, OQ4.2-25 | |
| S3: FR4.2-20 | Партнер редактирует или добавляет дополнительные материалы | Интерфейс позволяет создать папки с дополнительными материалами и задать им название, разместить в них фото, видео, аудио или текстовый документ; изменить расположение или удалить. | 2 | Частично OQ4.2-23, OQ4.2-24 | |
| S4: FR4.2-21 | Партнер просматривает услуги размещения и продвижения (на будущую реализацию) | Интерфейс показывает тариф размещения, стоимость размещения, услуги продвижения, сумму к оплате, статистику и действие оплаты или подключения. | 3 | Не реализовано | |
| S5: FR4.2-22 | Партнер видит статус модерации площадки (на будущую реализацию) | Интерфейс показывает статус модерации площадки, дату модерации и количество элементов, ожидающих проверки. | 3 | Не реализовано | |
| S6: FR4.2-23 | Партнер снимает площадку с публикации (на будущую реализацию) | Интерфейс показывает действие “Снять с публикации”, запрашивает подтверждение и после подтверждения переводит площадку в статус “Снята с публикации”. | 3 | Частично OQ4.2-16, OQ4.2-31 | |
| S7: FR4.2-24 | Партнер публикует площадку (на будущую реализацию) | Интерфейс показывает действие “Опубликовать”, запрашивает подтверждение и предупреждает, что при изменениях можно опубликовать старый контент или новый после завершения модерации. | 3 | Частично OQ4.2-16 | |
| S8: FR4.2-25 | Партнер архивирует площадку (на будущую реализацию) | Интерфейс показывает действие “Архивировать”, запрашивает подтверждение и предупреждает, что редактирование площадки будет недоступно до восстановления. | 3 | Частично OQ4.2-16, OQ4.2-17 | |
| S9: FR4.2-26 | Партнер восстанавливает площадку из архива (на будущую реализацию) | Интерфейс показывает действие “Восстановить”, запрашивает подтверждение и позволяет выбрать публикацию вручную или автоматически после модерации. | 3 | Частично OQ4.2-16 | |
| S10: FR4.2-27 | Партнер открывает правила и условия площадки | Интерфейс открывает страницу правил и условий для выбранной площадки и показывает правила оказания услуг, создания заказов, отмены и условий оплаты. Настройка правил совершается как в https://wiki.yandex.ru/homepage/d750da42741c/texnicheskaja-dokumentacija/brd/f0421948614f/3-profil-partnera/efb00c15e244/ , по умолчанию применяются правила из объекта. | 1 | Частично OQ4.2-12 | |
| S10: FR4.2-28 | Партнер просматривает правила площадки | Интерфейс показывает действующие и архивные правила, стандартные правила объекта и площадки, к которым они применяются. | 1 | Частично OQ4.2-2, OQ4.2-13 | |
| S10: FR4.2-29 | Партнер возвращается к странице площадки | Интерфейс позволяет вернуться из правил и условий на страницу выбранной площадки. | 2 | Частично OQ4.2-27 | |
| S11: FR4.2-30 | Данные площадки загружаются | Интерфейс показывает состояние загрузки для основных данных, медиа, условий работы, правил, позиций, цен, скидок и синхронизации. | 2 | Частично OQ4.2-22, OQ4.2-28 | |
| S11: FR4.2-31 | Часть данных площадки отсутствует | Интерфейс показывает пустое состояние в блоках, где нет оборудования, услуг, цен, промокодов, акций, внешних сервисов или связанных площадок. | 2 | Частично OQ4.2-20 | |
| S11: FR4.2-32 | Партнер использует страницу на разных ширинах экрана | Интерфейс адаптирует страницу площадки, карточки, связанные блоки, формы редактирования и таблицы для desktop, laptop и tablet и mobile. | 2 | Частично OQ4.2-21, OQ4.2-29 | |
| S11: FR4.2-33 | Партнер выполняет действие с ошибкой | Интерфейс показывает ошибку в текущем контексте и не теряет данные формы или текущую площадку. | 2 | Частично OQ4.2-30 |
6. Открытые вопросы {#6-otkrytye-voprosy}
Подстраницы
Открытые вопросы
Пин контекста: BRD 4.2 «Площадки» v0.2 · репозиторий
musbooking_personal_account· commitb9a7a706/ веткаtest· дата сверки 2026-07-15 · якорь:pages/content/rooms/[roomId]/,entities.fsd/room/,entities.fsd/room-folder/,features.fsd/room-drawer/,features.fsd/room-details/,widgets.fsd/room-drawer/,widgets.fsd/room-details-viewer/,shared.fsd/api/rooms/,shared.fsd/api-contracts/rooms/(+ смежныеwidgets.fsd/work-conditions/,widgets.fsd/rules-tabs/, легасиstores/rooms.ts,classes/api/RoomsService.ts,components/UI/ImageManager.vue) Сводка: 40 вопросов — Open бизнесу 19 · Open разработке 3 · Закрывает PM 14 · Подтверждено 4. Отрезано находок обратного прохода: 12. Маршрутизация без сверки с гайдбуком (гайдбук на вход не передавался — там, где нужно решение «как должно быть», вопрос уходит бизнесу со статусом Open, а не закрывается сам). В коде площадка =room, объект =base. «Райдер» в интерфейсе — это полеequipment; «удобства» — полеfeatures.
| ID | Источник | Вопрос | Кому | Статус | Рекомендации |
|---|---|---|---|---|---|
| OQ4.2-2 | Код FR4.2-28 | Требование говорит: партнёр видит действующие и архивные правила площадки. В коде архивных правил не увидеть ни в одной из четырёх вкладок: во всех запросах правил признак «показывать архивные» жёстко выставлен в «нет» и переключателя для партнёра нет. Единственное место, где архивные записи запрашиваются, — справочник площадок для подписей «Применено к площадкам», а не сами правила. \ pages/content/rooms/[roomId]/booking-rules-settings/index.vue:626, components/PaymentMethods/PaymentTermsTab.vue:682, features.fsd/cancel-rules-management/ui/CancelRulesTab.vue:186, components/BookingRules/AppliedRulesSection.vue:146 | Бизнес (Герман) | Open | (А) Добавить переключатель «показывать архивные правила» во все четыре вкладки — приводит код к BRD, но нужен ответ, зачем партнёру архив правил и что он с ним делает. (Б) Убрать «архивные» из требования и оставить только действующие (рекомендуется как временный шаг) — сейчас архив правил не создаёт ценности ни в одном сценарии BRD, а требование веса 1 висит невыполненным. Решение бизнеса разблокирует оценку. |
| OQ4.2-3 | Код FR4.2-3 | Требование говорит: на странице площадки видны адреса для уведомлений и типы уведомлений (и по FR4.2-18 — редактируются). В коде у площадки уведомлений нет вообще: ни блока на экране, ни поля в модели площадки, ни поля в контракте обмена с сервером. Уведомления существуют только на уровне объекта — там есть и адрес, и дополнительные адреса, и галочки типов уведомлений. \ не найдено за обход features.fsd/room-drawer/, features.fsd/room-details/, widgets.fsd/room-details-viewer/, entities.fsd/room/types/room.types.ts, shared.fsd/api-contracts/rooms/rooms.schema.ts; реализация у объекта — features.fsd/base-drawer/ui/BaseNotificationsStep.vue:9,88 | Бизнес (Герман) | Open | (А) Признать, что уведомления настраиваются только на объекте, и убрать их из FR4.2-3 и FR4.2-18, дав на странице площадки ссылку на настройки объекта (рекомендуется) — соответствует и коду, и здравому смыслу: адрес уведомлений един для объекта. (Б) Завести уведомления на уровне площадки — это новая сущность и на фронте, и на бэке, оценивать отдельно. Ответ нужен до правки FR4.2-18. |
| OQ4.2-4 | Код FR4.2-3 | Требование говорит: интерфейс показывает условия работы площадки — время и формат. В коде формат работы («Онлайн-бронирование» / «По заявке») на странице площадки показывается, но всегда берётся из объекта, а переключатели отключены — партнёр видит формат объекта, а не площадки. В модели площадки собственное поле формата есть, но оно не читается. В коде оставлен комментарий «Формат работы - всегда из base». \ widgets.fsd/work-conditions/ui/WorkConditions.vue:31,95; неиспользуемое поле — entities.fsd/room/types/room.types.ts:97 | Бизнес (Герман) | Open | (А) Зафиксировать в BRD: формат работы — свойство объекта, на площадке показывается только справочно (рекомендуется) — так работает код, и поле в модели площадки тогда надо убрать как вводящее в заблуждение. (Б) Разрешить площадке свой формат работы — тогда нужно решить, что делать, когда площадка «по заявке», а объект «онлайн». Связать с OQ4.2-18 — тот же вопрос про приоритет объекта над площадкой. |
| OQ4.2-5 | Код FR4.2-1 | Требование говорит: на странице площадки показываются дополнительные материалы. В коде карточка «Дополнительные материалы» на экране есть, но она ничего не показывает: внутри пять нарисованных значков (картинка, документ, музыка, видео, часы), жёстко зашитых в вёрстку и никак не связанных с данными. Ни одного реального материала партнёра на карточке не видно — карточка работает только как кнопка, открывающая редактор материалов. \ features.fsd/room-details/info-editor/ui/RoomInfoEditor.vue:95-114; открытие редактора — pages/content/rooms/[roomId]/index.vue:155 | Бизнес (Герман) | Open | (А) Показывать на карточке реальное содержимое: количество папок и материалов, значки по фактическим типам файлов (рекомендуется) — требование веса 1 сейчас не выполняется, а данные о папках уже загружаются. (Б) Признать карточку точкой входа и переписать FR4.2-1 как «показывает доступ к дополнительным материалам». Нужно решение бизнеса: карточка-витрина или карточка-кнопка. |
| OQ4.2-6 | Код FR4.2-13 | Требование говорит: при создании площадки партнёр может добавить видео. В коде видео при создании добавить нельзя: поддержка видео в загрузчике есть, но она включается отдельным признаком, который шаг создания не передаёт, поэтому по умолчанию выключена. Видео не попадает в список выбираемых файлов, а при перетаскивании выдаётся ошибка «Загрузка видео отключена». При этом шаг называется «Фото и видео», а подсказка обещает «Поместите изображение или видео» — партнёр видит обещание, которого интерфейс не выполняет. \ features.fsd/room-drawer/ui/RoomMediaStep.vue:25-46,38, components/UI/ImageManager.vue:262,305-314,492-495; название шага — widgets.fsd/room-drawer/ui/RoomDrawer.vue:172 | Бизнес (Герман) | Open | (А) Включить видео на шаге создания (рекомендуется) — правка малая (передать признак поддержки видео), а сейчас интерфейс обещает то, чего не делает. (Б) Убрать видео из FR4.2-13 и переименовать шаг в «Фото» — тогда надо решить, где партнёр вообще добавляет видео впервые. В любом варианте текст шага и подсказку надо привести в соответствие. |
| OQ4.2-7 | Код FR4.2-13 | Требование говорит: партнёр выбирает заглавное фото. В коде явного выбора нет: заглавным всегда считается первое фото в списке, над ним просто рисуется подпись «Заглавное фото». Кнопки «сделать заглавным» или отдельного признака у фотографии не существует — единственный способ сменить заглавное фото — перетащить нужное на первое место. \ components/UI/ImageManager.vue:738-740,49-54; перетаскивание — features.fsd/room-drawer/ui/RoomMediaStep.vue:33,40 | Бизнес (Герман) | Open | (А) Считать «перетащить на первое место» достаточной реализацией выбора и уточнить формулировку FR4.2-13 (рекомендуется) — механизм рабочий и понятный, отдельная кнопка дублировала бы его. (Б) Добавить явное действие «сделать заглавным» — нужно, если порядок фото и заглавное фото должны задаваться независимо. Внимание: сейчас порядок фотографий на сервере не сохраняется — см. OQ4.2-23, без его решения вариант (А) работать не будет. |
| OQ4.2-8 | Код FR4.2-14 | Требование говорит: после создания интерфейс показывает статус созданной площадки. В коде статус не показывается, и показывать нечего: у площадки нет никакого статуса, кроме признака «в архиве», а в данных на создание поля статуса нет вовсе. Сообщения об успешном создании тоже нет — единственный признак, что всё получилось, это переход на страницу новой площадки. \ widgets.fsd/room-drawer/ui/RoomDrawer.vue:435-446,473-478; отсутствие статуса в модели — entities.fsd/room/types/room.types.ts:133-146, entities.fsd/room/types/room.types.ts:63 | Бизнес (Герман) | Open | (А) Определить, какой статус партнёр должен видеть после создания («На модерации»? «Черновик»? «Опубликована»?), и завести его в модели (рекомендуется как целевое) — сейчас у площадки нет жизненного цикла, только «в архиве / не в архиве»; это же блокирует S5–S9, см. OQ4.2-16. (Б) Ограничиться сообщением «Площадка создана» и убрать «статус» из FR4.2-14 — дёшево, закрывает пробел в обратной связи, но не закрывает вопрос жизненного цикла. Связать с OQ4.2-16 (разблокирующий). |
| OQ4.2-9 | Код FR4.2-16 | Требование говорит: после сохранения изменений партнёр видит уведомление, что новое название, описание или схема отобразятся в интерфейсах (в будущем — после модерации). В коде такого уведомления нет нигде в контуре площадки. Более того, при сохранении основных данных, райдера, удобств, медиа и времени работы партнёр не получает вообще никакого подтверждения — сообщение об успехе показывается только в редакторе дополнительных материалов. \ не найдено за обход по текстам «модерац / отобраз / появятся / после проверки» в widgets.fsd/, features.fsd/, entities.fsd/, pages/, shared.fsd/; единственное сообщение об успехе — features.fsd/room-drawer/ui/RoomMaterialsStep.vue:487 | Бизнес (Герман) | Open | (А) Добавить подтверждение сохранения на всех шагах и текст про отображение изменений (рекомендуется) — отсутствие любой обратной связи при сохранении это самостоятельный дефект, независимо от модерации. (Б) Отложить текст про модерацию до появления самой модерации (S5), но подтверждение сохранения добавить сейчас. Нужно решение бизнеса по формулировке текста. |
| OQ4.2-10 | Код FR4.2-2, FR4.2-11 | Требование говорит: интерфейс показывает и позволяет выбрать оборудование, тип площадки и интерьер. В коде таких трёх понятий не существует как отдельных полей — есть единый механизм «удобств»: категории и их значения полностью приходят справочником с сервера, а интерфейс рисует столько групп, сколько пришло. Появятся ли группы с названиями «Оборудование», «Тип площадки», «Интерьер» — определяется данными сферы на сервере, по коду фронта это проверить нельзя. \ features.fsd/room-drawer/ui/RoomAmenitiesStep.vue:80-83,121-162; отображение групп — features.fsd/room-details/info-editor/ui/RoomInfoEditor.vue:207,400-427; намерение зафиксировано в features.fsd/room-drawer/index.ts:7 | Бизнес (Герман) | Open | (А) Уточнить в BRD, что оборудование / тип площадки / интерьер — это категории справочника удобств, а не отдельные поля, и приложить требование к содержимому справочника (рекомендуется) — механизм есть и работает, расходится только язык описания. (Б) Требовать три жёстко заданные секции в интерфейсе — противоречит текущей архитектуре, где справочник настраивается на сервере. Не проверяется статикой: фактическое наличие этих трёх категорий нужно смотреть в данных сферы, а не в коде. |
| OQ4.2-11 | Код FR4.2-10 | Требование говорит: партнёр «может указать» название, цвет, описание, габариты, площадь, вместимость и схему — обязательным по тексту выглядит только заполнение как таковое. В коде габариты (длина, ширина, высота) и вместимость фактически обязательны: пока каждое из них не больше нуля, кнопка «Продолжить» заблокирована. При этом поля не помечены как обязательные, а текст ошибки «Заполните все обязательные поля» вычисляется, но на экран не выводится — партнёр видит неактивную кнопку без объяснения причины. \ features.fsd/room-drawer/model/useRoomValidation.ts:97-102,176; невыведенная ошибка — widgets.fsd/room-drawer/ui/RoomDrawer.vue:241 | Бизнес (Герман) | Open | (А) Подтвердить обязательность габаритов и вместимости, зафиксировать это в BRD и пометить поля в интерфейсе (рекомендуется) — правило разумное (без габаритов площадку не найти в поиске), не хватает только честной подписи. (Б) Сделать поля необязательными, если бизнес допускает площадку без габаритов. В обоих случаях текст ошибки надо начать показывать — см. OQ4.2-30. |
| OQ4.2-12 | Код FR4.2-27 | Проблема: требование говорит, что по умолчанию к площадке применяются правила объекта. Код это умеет — подстановка правил объекта написана, причём в двух местах, — но никогда не выполняется. Оба места сначала проверяют, что известен идентификатор объекта, и берут его из адреса страницы; в адресе страницы площадки такого параметра нет (там только идентификатор площадки), поэтому проверка не проходит и загрузка правил не запускается. Следствие: на странице правил площадки правила объекта не подставляются, а в блоке правил на карточке площадки текстовые правила не загружаются вообще — партнёр видит пустоту. \ components/Settings/Tab/MapItemRulesTab.vue:250,254,262, widgets.fsd/rules-tabs/ui/tabs/ObjectRulesTab.vue:111,149; маршрут без параметра объекта — pages/content/rooms/[roomId]/booking-rules-settings/index.vue, shared.fsd/config/routes/pageRoutes.ts:27 | Разработка (Владислав) | Закрывает PM | Закрываю сам: брать идентификатор объекта не из адреса страницы, а из данных загруженной площадки (поле связи с объектом уже есть), либо передавать его свойством компонента — сейчас ObjectRulesTab вообще не объявляет входные свойства, поэтому передаваемые ему значения теряются → тикет в Bitrix. Разблокирующий: пока это не починено, OQ4.2-13 и половина FR4.2-28 непроверяемы вживую. |
| OQ4.2-13 | Код FR4.2-28 | Проблема: требование говорит про стандартные правила объекта, применяемые к площадке. В интерфейсе галочка «Буду использовать стандартные правила объекта» есть, но она ничего не делает: обработчик её переключения — пустая заготовка с комментарием «TODO: Загрузить стандартные правила из стора/API». Автоматическое включение галочки (когда у площадки своих правил нет, а у объекта есть) написано, но недостижимо по той же причине, что и в OQ4.2-12. В блоке правил на карточке площадки та же галочка вдобавок отключена и служит только индикатором. \ components/Settings/Tab/MapItemRulesTab.vue:165-169,271-274, widgets.fsd/rules-tabs/ui/tabs/ObjectRulesTab.vue:6-12 | Разработка (Владислав) | Закрывает PM | Закрываю сам: после починки OQ4.2-12 дописать обработчик переключения галочки (подставлять/снимать правила объекта) → тикет в Bitrix. Связать с OQ4.2-12 — общая первопричина, чинить одним заходом. |
| OQ4.2-14 | Код FR4.2-10 | Проблема: требование говорит, что при создании площадки партнёр указывает схему. Поле схемы на шаге есть, PDF выбирается, имя файла показывается — но при создании файл на сервер не уходит и молча теряется: выбранный файл кладётся в черновик и попадает в итоговый набор данных, однако завершающий код создания его не читает и загружает только фотографии. Загрузка схемы написана только для режима редактирования. Партнёр прикрепляет схему на создании и получает площадку без схемы, без единого сообщения. \ features.fsd/room-drawer/ui/RoomMainInfoStep.vue:364, features.fsd/room-drawer/model/useRoomDraft.ts:378, widgets.fsd/room-drawer/ui/RoomDrawer.vue:435-471; рабочая загрузка в режиме редактирования — features.fsd/room-drawer/ui/RoomMainInfoStep.vue:505-541 | Разработка (Владислав) | Закрывает PM | Закрываю сам: после успешного создания площадки загружать файл схемы из черновика тем же способом, что и в режиме редактирования → тикет в Bitrix. Попутно: файл не-PDF сейчас отбрасывается молча (RoomMainInfoStep.vue:361) — добавить сообщение. |
| OQ4.2-15 | Код FR4.2-2 | Проблема: требование говорит, что интерфейс показывает фото и видео площадки. Видеофайлы в список медиа попадают, но выводятся тем же способом, что и фотографии — как картинка. Проигрывателя или превью для видео нет, и из числа кликабельных элементов видео явно исключено. Партнёр видит на месте видео пустой прямоугольник. \ features.fsd/room-details/info-editor/ui/RoomInfoEditor.vue:374,183-186,180 | Разработка (Владислав) | Закрывает PM | Закрываю сам: выводить видео проигрывателем (или превью с кнопкой воспроизведения) вместо тега картинки → тикет в Bitrix. Связать с OQ4.2-6: если бизнес решит, что видео не нужно, оба вопроса снимаются вместе. |
| OQ4.2-16 | Код FR4.2-23, FR4.2-24, FR4.2-25, FR4.2-26 | Что нашли: BRD объявляет снятие с публикации, публикацию, архивирование и восстановление четырьмя отдельными сценариями «на будущую реализацию». В коде все четыре уже работают — но слиты в один переключатель «в архиве / не в архиве» на одной кнопке. Публикация — это просто снятие признака архива; отдельного статуса «Снята с публикации» не существует, как и промежуточного состояния «восстановлена, но не опубликована»; выбора «опубликовать вручную или автоматически после модерации» при восстановлении нет; предупреждения про старый/новый контент нет. Публикационный статус как отдельная сущность в системе отсутствует — есть только признак архива и дата архивации. \ features.fsd/room-details/info-editor/model/useRoomArchive.ts:15,30-41,47-67, features.fsd/room-details/info-editor/ui/RoomInfoEditor.vue:138-147,151-161, entities.fsd/room/types/room.types.ts:62-64; отсутствие статусов — не найдено за обход shared.fsd/api-contracts/rooms/rooms.schema.ts, shared.fsd/api/rooms/rooms.api.ts | Бизнес (Герман) | Open | (А) Признать, что «снят с публикации» и «в архиве» — одно и то же состояние, и переписать S6–S9 как два действия вместо четырёх (рекомендуется как ближайший шаг) — это то, что реально работает сегодня, и BRD станет честным. (Б) Развести публикацию и архив в разные состояния — это полноценный жизненный цикл площадки (черновик → на модерации → опубликована → снята → в архиве), затрагивает бэкенд и связан с модерацией (S5). Разблокирующий: от этого ответа зависят OQ4.2-8, OQ4.2-17, OQ4.2-31 и статусы FR4.2-22…26. |
| OQ4.2-17 | Код FR4.2-25 | Требование говорит: при архивировании партнёра предупреждают, что редактирование площадки будет недоступно до восстановления. В коде нет ни предупреждения, ни самого ограничения: архивная площадка остаётся полностью редактируемой. Признак «в архиве» влияет ровно на две вещи — подпись «Площадка заархивирована» вместо списка интерфейсов и цвет кнопки. Ни один блок страницы (условия работы, правила, цены, позиции, скидки, связанные площадки) не блокируется, все кнопки редактирования работают. \ features.fsd/room-details/info-editor/ui/RoomInfoEditor.vue:125,141,291, widgets.fsd/room-details-viewer/ui/RoomDetailsViewer.vue:15; текст предупреждения — features.fsd/room-details/info-editor/model/useRoomArchive.ts:40 | Бизнес (Герман) / Разработка (Владислав) | Open | (А) Запретить редактирование архивной площадки и добавить предупреждение (рекомендуется, если подтверждается (А) в OQ4.2-16) — иначе требование остаётся декларацией, а данные архивной площадки можно менять незаметно. (Б) Разрешить редактирование в архиве осознанно и убрать предупреждение из FR4.2-25 — допустимо, если архив это «скрыт от клиентов», а не «заморожен». Сначала нужен ответ бизнеса по смыслу архива (OQ4.2-16), затем реализация. |
| OQ4.2-18 | Код FR4.2-18 | Требование говорит: при изменении времени работы площадки показывается плашка с пояснением, как изменение повлияет на остальные площадки объекта. В коде плашки нет, а логика устроена противоположным образом: время площадки не влияет на объект — наоборот, оно обязано укладываться внутрь времени работы объекта (начало не раньше, конец не позже), и поля выбора времени ограничены часами объекта. При нарушении сохранение молча не срабатывает — причина уходит только в технический журнал. \ features.fsd/room-drawer/ui/RoomWorkingHoursStep.vue:127,143,157,59; не найдено за обход по текстам «повлия / влия / остальны / все площадк / других площадк» в widgets.fsd/, features.fsd/, entities.fsd/, pages/, shared.fsd/ | Бизнес (Герман) | Open | (А) Переписать FR4.2-18 под фактическую модель: время площадки ограничено временем объекта, и показывать партнёру именно это ограничение (рекомендуется) — модель в коде непротиворечива, а требование, похоже, писалось от другой картины мира (площадки делят одно расписание). (Б) Если имелся в виду сценарий связанных одним расписанием площадок (Back 2.2.1, вне scope этого раздела) — уточнить и вынести требование туда. В любом варианте: молчаливую блокировку сохранения заменить видимым сообщением — см. OQ4.2-30. |
| OQ4.2-19 | Код FR4.2-6 | Требование говорит: партнёр запускает синхронизацию внешних сервисов или связанных площадок из блока «Синхронизация данных» на странице площадки. В коде такого блока на странице площадки нет — страница состоит ровно из четырёх групп (основные данные, условия работы и правила, цены/позиции/скидки, связанные площадки). Сами методы синхронизации существуют и работают, но вызываются только со страницы интеграций в профиле партнёра. Синхронизации связанных площадок не найдено нигде. \ widgets.fsd/room-details-viewer/ui/RoomDetailsViewer.vue:1-43; работающая синхронизация на другом экране — classes/api/IntegrationsService.ts:209,292,353, pages/partner-profile/tools/integrations.vue:92,134 | Бизнес (Герман) | Open | (А) Добавить блок «Синхронизация данных» на страницу площадки, переиспользовав существующие методы (рекомендуется, если партнёр действительно синхронизирует площадку поштучно). (Б) Признать, что синхронизация живёт на странице интеграций, и заменить FR4.2-6 ссылкой-переходом туда — дешевле и не плодит вторую точку управления. Техническое ограничение к сведению: методы синхронизации не возвращают результат, нужен повторный запрос данных (IntegrationsService.ts:350-351). |
| OQ4.2-20 | Код FR4.2-4, FR4.2-31 | Требование говорит: на странице площадки показываются связанные внешние сервисы, а при их отсутствии — пустое состояние. В коде блока «Внешние сервисы» на странице площадки нет вообще, поэтому нет и пустого состояния. Остальные связанные блоки требования (позиции, цены, связанные площадки) на месте и работают. Внешние сервисы как понятие в интерфейсе есть только на дашборде и на странице интеграций. \ widgets.fsd/room-details-viewer/ui/RoomDetailsViewer.vue:1-43; не найдено за обход по «externalService / внешн. сервис / integration» в контуре площадки; вне контура — components/dashboard/Integrations.vue:10, pages/partner-profile/tools/integrations.vue:84 | Бизнес (Герман) | Open | (А) Добавить блок внешних сервисов площадки с пустым состоянием — если партнёру важно видеть, из каких сервисов приезжает эта конкретная площадка. (Б) Убрать «внешние сервисы» из FR4.2-4 и FR4.2-31, оставив их на странице интеграций (рекомендуется) — привязка сервисов делается на уровне партнёра, а не площадки; тогда же снимается часть OQ4.2-19. Связать с OQ4.2-19 — один и тот же вопрос «нужен ли контур интеграций на странице площадки». |
| OQ4.2-21 | Код FR4.2-32 | Требование говорит: страница адаптируется под четыре ширины экрана — desktop, laptop, tablet и mobile. В коде ступеней три: mobile (до 767px), tablet (768–1279px) и всё остальное от 1280px. Отдельной ступени «laptop» не существует нигде в разделе — ноутбук и большой монитор получают одинаковую вёрстку. Вдобавок в проекте сосуществуют три несогласованных набора ширин: вёрстка раздела (767/1279), блок цен со своей ступенью 1600px и общий механизм определения ширины экрана с набором 600/960/1280/1920/2560, который в разделе площадок не используется ни разу. \ widgets.fsd/room-details-viewer/ui/RoomDetailsViewer.vue:153,187,216; чужая ступень в ценах — widgets.fsd/prices-list/ui/RoomPriceCard.vue:403; неиспользуемый механизм — composables/useBreakpoint.ts:14 | Бизнес (Герман) | Open | (А) Убрать laptop из требования, зафиксировав три ступени (рекомендуется) — так свёрстан весь раздел; введение четвёртой ступени задним числом это переработка всех экранов раздела. (Б) Ввести laptop как отдельную ступень — тогда нужно определить границу (1280–1919?) и что именно на ней меняется. Отдельно от продуктового решения: согласовать три набора ширин в один — см. OQ4.2-29. |
| OQ4.2-22 | Код FR4.2-30 | Требование говорит: состояние загрузки показывается для восьми блоков — основных данных, медиа, условий работы, правил, позиций, цен, скидок и синхронизации. В коде список не сходится: у медиа отдельного состояния загрузки нет (блок накрыт общим скелетоном карточки, а догрузка файла схемы идёт вообще без индикатора); блока синхронизации не существует (см. OQ4.2-19); у цен используется скелетон из чужого раздела, а специально сделанный скелетон цен площадки — мёртвый код, он экспортируется, но никем не используется; скелетон правил отрабатывает вхолостую, потому что сама загрузка правил в этом месте закомментирована и всегда возвращает пустой список. Зато есть скелетон «Связанных площадок», которого в списке BRD нет. \ features.fsd/room-details/info-editor/ui/RoomInfoEditor.vue:3,164,313, shared.fsd/ui/skeletons/room/index.ts:14, features.fsd/room-details/prices-list/ui/RoomPricesList.vue:1, widgets.fsd/prices-list/ui/PricesList.vue:3, composables/useVenueRules.ts:104, features.fsd/room-details/shared-rooms/ui/SharedRoomsList.vue:3 | Разработка (Владислав) | Open | (А) Привести список BRD к факту: убрать синхронизацию, добавить «Связанные площадки», и завести отдельное состояние загрузки для медиа (рекомендуется). (Б) Реализовать все восемь как написано — упирается в OQ4.2-19. Отдельно и независимо: удалить мёртвый скелетон цен площадки или начать его использовать вместо чужого, и разобраться с закомментированной загрузкой правил (useVenueRules.ts:91-104) — связать с OQ4.2-12. |
| OQ4.2-23 | Код FR4.2-19, FR4.2-20 | Проблема: требование говорит, что партнёр может изменить расположение фотографий и материалов. Перетаскивание работает и порядок меняется на экране, но на сервер он не отправляется: при сохранении уходят только новые файлы, а позиция уже загруженных не обновляется — после перезагрузки страницы порядок возвращается к прежнему. В папках материалов ещё жёстче: все файлы отправляются с одинаковой позицией «0», то есть порядок внутри папки не сохраняется в принципе. \ features.fsd/room-drawer/ui/RoomMediaStep.vue:269, components/UI/ImageManager.vue:659, features.fsd/room-drawer/ui/RoomMaterialsStep.vue:460; не найдено за обход: вызова обновления позиции существующих файлов в RoomMediaStep.vue, RoomMaterialsStep.vue, ImageManager.vue | Разработка (Владислав) | Закрывает PM | Закрываю сам: при сохранении отправлять новый порядок для всех файлов (а не только для новых), в папках — передавать фактическую позицию вместо нуля → тикет в Bitrix. Важно: от этого зависит OQ4.2-7 — если заглавным считается первое фото, а порядок не сохраняется, то и заглавное фото не сохраняется. |
| OQ4.2-24 | Код FR4.2-20 | Проблема: требование говорит, что в папку материалов можно положить фото, видео, аудио или текстовый документ. Фактически диалог выбора файла пропускает только jpg, jpeg, png и mp4 — текстовый документ выбрать невозможно, хотя подсказка обещает «Поместите изображение, видео или документ». Аудио заявлено, но сломано: формат mp3 попал в список видео-форматов, и тип файла собирается как несуществующий video/mp3 вместо audio/mpeg — такой фильтр не пропустит ни один реальный mp3. \ features.fsd/room-drawer/ui/RoomMaterialsStep.vue:86,89-90, components/UI/ImageManager.vue:305; подсказка — features.fsd/room-drawer/ui/RoomMaterialsStep.vue:55 | Разработка (Владислав) | Закрывает PM | Закрываю сам: исправить тип для mp3 на audio/mpeg и добавить документы (pdf/doc/txt) в список принимаемых форматов — обработчик уже умеет распознавать тип «документ», он просто недостижим на этом экране → тикет в Bitrix. Если бизнес не хочет документов в материалах — тогда правка BRD и подсказки, но текущее состояние неверно в любом случае. |
| OQ4.2-25 | Код FR4.2-19 | Проблема: требование говорит, что партнёр удаляет старые фотографии в форме редактирования. Удаление работает, но происходит сразу на сервере, в момент клика по корзине — ещё до нажатия «Сохранить». Кнопка «Отменить» удалённый файл не возвращает: партнёр, передумавший и закрывший форму, всё равно потеряет фотографию. В комментарии к коду при этом заявлено «сначала удаления, потом загрузки при сохранении» — этой логики в коде нет. \ components/UI/ImageManager.vue:607; несоответствующий комментарий — features.fsd/room-drawer/ui/RoomMediaStep.vue:8-11 | Разработка (Владислав) | Закрывает PM | Закрываю сам: копить удаления и применять их при сохранении (как заявлено в комментарии), либо — если это дорого — предупреждать «файл будет удалён сразу и безвозвратно» → тикет в Bitrix. Первый вариант предпочтительнее: он делает «Отменить» честной кнопкой. |
| OQ4.2-26 | Код FR4.2-8 | Проблема: требование говорит, что интерфейс показывает оборудование и услуги списком с категорией, названием, фото, ценой, количеством и площадкой. Все шесть атрибутов выводятся, но есть скрытая потеря данных: позиция показывается только если у неё заполнена и категория, и группа. Позиции без категории молча выпадают из списка — при этом в подсчёте «список пуст или нет» они учитываются. То есть возможно состояние «блок не пустой, но не показывает ни одной позиции». Отдельно: BRD говорит «в формате списка», а в коде оборудование и услуги разведены по двум вкладкам и свёрнуты в раскрывающиеся группы. \ features.fsd/room-details/positions-list/ui/RoomPositionsList.vue:146,139,100-104 | Разработка (Владислав) | Закрывает PM | Закрываю сам: показывать позиции без категории в группе «Без категории» вместо молчаливого отбрасывания, либо согласовать подсчёт пустоты с фактической выборкой → тикет в Bitrix. Про вкладки вместо единого списка: считаю формулировку BRD неточной, а не код неверным → правка BRD (вкладки «Оборудование» / «Услуги» удобнее одного списка). |
| OQ4.2-27 | Код FR4.2-29 | Проблема: требование говорит, что партнёр возвращается со страницы правил на страницу выбранной площадки. Кнопка «назад» есть, но она возвращает по истории браузера, а не на конкретную площадку: если партнёр попал на правила по прямой ссылке (а такие ссылки поддерживаются — вкладка передаётся в адресе) или перезагрузил страницу, кнопка уведёт куда угодно, только не на площадку. Хлебные крошки ведут мимо: они указывают на общий список объектов, а не на площадку. Готовый способ построить адрес страницы площадки в проекте есть и не используется. \ pages/content/rooms/[roomId]/booking-rules-settings/index.vue:3,239,242,524, components/UI/layout/BackTitle.vue:34; неиспользуемый помощник — shared.fsd/config/routes/pageRoutes.ts:26 | Разработка (Владислав) | Закрывает PM | Закрываю сам: возвращать адресно на страницу площадки по её идентификатору (помощник pageRoutes.roomById уже есть) и починить хлебные крошки, добавив в них площадку → тикет в Bitrix. Продуктового выбора здесь нет — требование однозначно. |
| OQ4.2-28 | Код FR4.2-30 | Проблема: состояние загрузки блока «Скидки» показывается по условию «грузятся промокоды И грузятся акции». Это два независимых запроса: как только завершится любой из них, скелетон исчезнет, хотя второй ещё в пути — партнёр увидит мигание пустого состояния или половину данных. Ожидается «ИЛИ». \ features.fsd/room-details/promos-list/ui/RoomPromosList.vue:3,97,108 | Разработка (Владислав) | Закрывает PM | Закрываю сам: заменить «И» на «ИЛИ» в условии показа скелетона скидок → тикет в Bitrix. Однострочная правка, продуктового выбора нет. |
| OQ4.2-29 | Код FR4.2-32 | Проблема: требование говорит про адаптацию таблиц и связанных блоков. Страница правил и условий — единственный экран раздела без единого правила адаптации, при этом ширины в ней зашиты жёстко в пикселях (колонка 400px, боковая панель 420px, отступ 42px, высота через вычитание 200px). На планшете и телефоне эта раскладка не перестраивается. Без адаптации также остались блоки «Связанные площадки», «Скидки» и виджет правил. \ pages/content/rooms/[roomId]/booking-rules-settings/index.vue:573,583,820,826,851; блоки без адаптации — features.fsd/room-details/shared-rooms/, features.fsd/room-details/promos-list/, widgets.fsd/rules-tabs/ | Разработка (Владислав) | Закрывает PM | Закрываю сам: адаптировать страницу правил и три блока по действующим ступеням раздела (767/1279) → тикет в Bitrix. Заодно свести три несогласованных набора ширин к одному — см. OQ4.2-21 (объём зависит от ответа бизнеса про laptop). |
| OQ4.2-30 | Код FR4.2-33 | Проблема: требование говорит, что при ошибке партнёр видит её в текущем контексте. Фактически сообщение об ошибке показывается только при архивировании. Везде остальное ошибки гасятся молча: при создании и сохранении площадки стоят пустые перехватчики с комментарием «прерываем создание без вывода в консоль»; при загрузке правил, сохранении условий оплаты и справочников ошибка уходит только в технический журнал; на странице площадки ветки ошибки нет вообще — результат запроса читается без признака ошибки. Вдобавок все методы обмена с сервером по площадкам сами гасят ошибки и возвращают «пусто» или «неуспех», из-за чего интерфейс не может отличить сбой сервера от «не сохранилось». Данные формы при ошибке действительно не теряются, но случайно: сброс черновика стоит в ветке успеха, до него просто не доходит. Черновик нигде не сохраняется и стирается при уходе со страницы. \ widgets.fsd/room-drawer/ui/RoomDrawer.vue:479-481,493-494,473, pages/content/rooms/[roomId]/booking-rules-settings/index.vue:648-650,685,770, pages/content/rooms/[roomId]/index.vue:137,74, shared.fsd/api/rooms/rooms.api.ts:59-62,172-177,218-221, entities.fsd/room/store/room.api.ts:67-69; работающий пример — features.fsd/room-details/info-editor/model/useRoomArchive.ts:20,24 | Разработка (Владислав) | Закрывает PM | Закрываю сам: распространить механизм сообщений, уже работающий в архивировании, на создание/сохранение площадки и загрузку правил; перестать гасить ошибки в слое обмена с сервером (пробрасывать наверх); добавить ветку ошибки на странице площадки → тикет в Bitrix. Разблокирующий для читаемости интерфейса: от этого зависят видимость сообщений в OQ4.2-11, OQ4.2-14 и OQ4.2-18 — там правила уже работают, просто молча. |
| OQ4.2-31 | Код FR4.2-23 | Проблема: одна и та же операция названа в интерфейсе двумя разными словами. Партнёр нажимает кнопку «Снять с публикации», подтверждает в окне «Вы уверены что хотите снять объект с публикации?» — и получает всплывающее сообщение «Площадка архивирована». В обратную сторону: «Опубликовать» → «Площадка разархивирована». Тексты ошибок при этом снова публикационные: «Не удалось снять площадку с публикации». Всё это в пределах одного файла. Отдельно: в тексте окна подтверждения есть звёздочка «…и совершать бронирования*», но сноски к ней нигде нет. \ features.fsd/room-details/info-editor/model/useRoomArchive.ts:32-33,37-41,53,58, shared.fsd/lib/errors-text/errorsText.ts:61 | Разработка (Владислав) | Закрывает PM | Закрываю сам: привести тексты к одному словарю и убрать висящую звёздочку → тикет в Bitrix. Какое именно слово оставить — зависит от OQ4.2-16: если бизнес подтвердит, что публикация и архив это одно состояние, оставляем «снять с публикации» как более понятное партнёру; если разведёт — правка будет больше косметической. |
| OQ4.2-32 | Код вне BRD | Что нашли: на странице площадки одновременно живут три независимых источника данных об одной и той же площадке: новый (карточка основных данных, создание, сохранение, архивирование), старый стор (блок «Связанные площадки», вкладки правил, окно редактирования условий работы) и третий стор для цен, который сам зависит от старого. Кэши между ними не связаны: обновление площадки через новый механизм не сбрасывает старый кэш, а сохранение через старый не сбрасывает новый — партнёр может увидеть разные версии одной площадки в соседних блоках одного экрана. Отдельный риск: старое сохранение работает по принципу «поле не передано — возьму из своего кэша» (в коде это помечено как «КРИТИЧНО»), то есть при рассинхроне может записать устаревшие значения поверх свежих. \ features.fsd/room-details/shared-rooms/ui/SharedRoomsList.vue:95,110,126,195, widgets.fsd/rules-tabs/ui/tabs/ObjectRulesTab.vue:58,137, components/UI/modals/WorkConditionsEditModal.vue:405, stores/rooms.ts:205,293, stores/prices.ts:12,251, entities.fsd/room/model/useRoomEntityQueries.ts:143,161, widgets.fsd/room-details-viewer/ui/RoomDetailsViewer.vue:46-54 | Разработка (Владислав) | Open | (А) Достроить миграцию: перевести «Связанные площадки», вкладки правил и окно условий работы на новый механизм данных (рекомендуется) — пометка «мигрирован» в classes/api/todo.md:143 не соответствует факту, миграция остановилась на полпути. (Б) Минимальный шаг: при сохранении через любой из механизмов сбрасывать кэш второго — лечит симптом, не причину. Это техническая находка вне BRD, но она объясняет часть «плавающих» дефектов раздела. |
| OQ4.2-33 | Код вне BRD | Что нашли: архивирование площадки — не отдельная операция, а обычное сохранение площадки с признаком «в архиве». Отдельного метода «архивировать» на сервере (в терминах фронтового контракта) не существует. Следствия: нельзя выдать раздельные права «редактировать» и «архивировать», нельзя отличить их в журнале действий, и любое сохранение площадки потенциально может изменить её архивность, потому что признак архива объявлен обычным необязательным полем формы. Тот же приём применён и в соседних разделах (позиции, цены, акции, заказы) — то есть это сквозная договорённость продукта, а не решение для площадок. \ shared.fsd/api/rooms/rooms.api.ts:228-230,237-239, shared.fsd/api-contracts/rooms/rooms.schema.ts:157; сквозной приём — pages/content/prices/index.vue:704, features.fsd/position-drawer/ui/PositionDrawer.vue:843 | Разработка (Владислав) | Open | (А) Оставить как есть и зафиксировать в BRD, что архив — свойство площадки, а не отдельная операция (рекомендуется) — так устроен весь продукт, точечное исключение для площадок создаст разнобой. (Б) Завести отдельные операции архивирования/восстановления — оправдано только вместе с (Б) в OQ4.2-16 (полноценный жизненный цикл). Требует решения на стороне бэкенда — вне scope этого BRD. |
| OQ4.2-34 | Код вне BRD | Что нашли: мастер создания площадки состоит из четырёх шагов (основные данные, райдер, удобства, фото), шага «Время работы» в нём нет — при создании время работы всегда отправляется пустым. Партнёр задаёт часы только после создания, отдельным действием на карточке. BRD сценарий S2 про время работы молчит, поэтому расхождением это не считается, но пробел заметный: только что созданная площадка не имеет расписания. \ widgets.fsd/room-drawer/ui/RoomDrawer.vue:445,153-158; отдельный режим редактирования часов — pages/content/rooms/[roomId]/index.vue:149 | Бизнес (Герман) | Open | (А) Добавить шаг «Время работы» в мастер или подставлять часы объекта по умолчанию (рекомендуется второе) — площадка без расписания бесполезна, а часы объекта уже известны и всё равно ограничивают площадку (см. OQ4.2-18). (Б) Оставить как есть и дописать в S2, что расписание задаётся после создания — честно, но оставляет партнёра с нерабочей площадкой сразу после мастера. |
| OQ4.2-35 | Код вне BRD | Что нашли: на медиа площадки действуют ограничения, которых нет в BRD: не более 10 файлов, форматы только jpg/jpeg/png/webp, размер до 50 МБ, изображения автоматически сжимаются до 1920×1080 с качеством 0.85. В папках материалов — до 50 файлов по 50 МБ. Отдельно: описание шага задаёт неписаное правило контента — «Добавьте минимум 3 цветные фотографии, без людей и контактов», но ни цветность, ни отсутствие людей и контактов кодом не проверяются — это требование к партнёру, а не к интерфейсу. \ features.fsd/room-drawer/ui/RoomMediaStep.vue:36,37, components/UI/ImageManager.vue:254, features.fsd/room-drawer/ui/RoomMaterialsStep.vue:81; текст правила — widgets.fsd/room-drawer/ui/RoomDrawer.vue:178 | Бизнес (Герман) | Open | (А) Зафиксировать лимиты (10 фото, форматы, 50 МБ, сжатие) в FR4.2-13 (рекомендуется) — они реально работают и влияют на партнёра, а в требованиях их нет. (Б) Пересмотреть лимиты, если 10 фото мало для площадки. Отдельно нужно решение: правило «цветные, без людей и контактов» — это модерация (S5) или просто рекомендация в тексте? Сейчас оно ничем не обеспечено. |
| OQ4.2-36 | Код вне BRD | Что нашли: площадь площадки рассчитывается автоматически как длина × ширина, пока партнёр не введёт её вручную; после ручного ввода авторасчёт отключается, а при очистке поля — возобновляется. В BRD (FR4.2-10) площадь описана как обычное поле ввода, про автоматический расчёт не сказано. Также не описан цвет по умолчанию — при создании подставляется красный B61D1C. \ features.fsd/room-drawer/ui/RoomMainInfoStep.vue:328-343,321-325,204-210 | Бизнес (Герман) | Open | (А) Дописать оба правила в FR4.2-10 (рекомендуется) — поведение удобное и рабочее, требование просто отстаёт от кода. (Б) Отказаться от авторасчёта, если бизнес считает, что площадь не всегда прямоугольная и подстановка вводит в заблуждение. Замечание: подсказки-помощники у габаритов сейчас содержат текст-заглушку «Текст» (RoomMainInfoStep.vue:75) — их всё равно надо заполнить. |
| OQ4.2-37 | Код вне BRD | Проблема: два из семи блоков в папке раздела — пустые заготовки, которые никогда не выполняются. RoomRulesTabs.vue содержит только заголовок «Room Rules Tabs», номер площадки и три пометки «TODO: скопировать табы»; RoomWorkConditions.vue — устаревшая копия рабочего блока условий работы без загрузки данных. Оба экспортируются наружу, но ни один компонент их не подключает — реально работают их двойники из папки виджетов. Риск: при сверке или доработке легко принять заготовку за реализацию и сделать вывод «функциональность есть». \ features.fsd/room-details/rules-tabs/ui/RoomRulesTabs.vue:3,16,20, features.fsd/room-details/work-conditions/ui/RoomWorkConditions.vue; рабочие двойники — widgets.fsd/rules-tabs/ui/RulesTabs.vue, widgets.fsd/work-conditions/ui/WorkConditions.vue, подключение — widgets.fsd/room-details-viewer/ui/RoomDetailsViewer.vue:51-52 | Разработка (Владислав) | Закрывает PM | Закрываю сам: удалить обе заготовки вместе с их экспортами (заодно — мёртвый скелетон цен площадки из OQ4.2-22 и неиспользуемые методы получения площадок по партнёрской зоне shared.fsd/api/rooms/rooms.api.ts:100) → тикет в Bitrix. Продуктового решения не требует, это уборка. |
| OQ4.2-38 | Код FR4.2-9 | Что подтверждено: создание площадки открывается отдельным пошаговым сценарием и показывает прогресс. Мастер состоит из четырёх шагов — «Основные настройки», «Райдер», «Удобства», «Фото и видео», — с индикатором прогресса, кнопкой «Отменить» и кнопкой продолжения, которая на последнем шаге становится «Создать». Возврат на предыдущий шаг — стрелкой в шапке. Перескочить вперёд через незаполненный шаг нельзя. Точка входа — кнопка «Создать площадку» в списке площадок объекта. \ widgets.fsd/room-drawer/ui/RoomDrawer.vue:10,28,104,153-158,172,185-190,205-210, features.fsd/base-details/platforms-list/ui/BasePlatformsList.vue:76,240, pages/content/rooms/[roomId]/index.vue:86,93 | — | Подтверждено | Расхождения нет. Оговорка к сведению: отдельной кнопки «Назад» в нижней части нет — только стрелка в шапке; если BRD подразумевал кнопку в одном ряду с «Отменить», это отдельная мелкая правка. |
| OQ4.2-39 | Код FR4.2-12 | Что подтверждено: заполнение технического райдера реализовано отдельным шагом мастера — «Райдер» с описанием «Опишите технический райдер площадки» и большим текстовым полем с примером (пианино, микшер, мониторы, микрофоны). Поле обязательно к заполнению. \ features.fsd/room-drawer/ui/RoomEquipmentStep.vue:7-17,84-88,105, features.fsd/room-drawer/model/useRoomValidation.ts:115-118, widgets.fsd/room-drawer/ui/RoomDrawer.vue:172,175 | — | Подтверждено | Расхождения нет. Оговорка для разработки: в интерфейсе это «Райдер», а в данных поле называется equipment; поле rider в модели существует, но не используется — читается только как запасной вариант при открытии на редактирование (useRoomDraft.ts:243). Терминология путает, но на поведение не влияет. |
| OQ4.2-40 | Код FR4.2-15 | Что подтверждено: редактирование площадки открывается тем же окном, что и создание, но в режиме правки: прогресс скрыт, кнопка — «Сохранить», открывается кликом по нужной карточке на странице площадки сразу на нужном шаге. Все семь полей требования на месте и редактируются: название, цвет (с палитрой и ручным вводом кода), описание, длина/ширина/высота, площадь, вместимость, схема (загрузка, замена, удаление PDF). \ pages/content/rooms/[roomId]/index.vue:85,139, widgets.fsd/room-drawer/ui/RoomDrawer.vue:9,205, features.fsd/room-drawer/ui/RoomMainInfoStep.vue:7,18,57,87,114,123,133,496 | — | Подтверждено | Расхождения нет. Оговорка: в отличие от создания, здесь схема сохраняется корректно (см. OQ4.2-14 — там она теряется). К сведению разработки: при сохранении, если в форме схемы нет, а на сервере есть — существующая схема удаляется (RoomMainInfoStep.vue:535); при непрогретом черновике это потенциальная потеря схемы. |
| OQ4.2-41 | Код FR4.2-17 | Что подтверждено: райдер и удобства редактируются. Клик по карточке «Райдер» открывает шаг с текстом райдера, клик по карточке «Удобства» — шаг с выбором удобств чипами по группам, множественный выбор; оба сохраняются на сервер. \ features.fsd/room-drawer/ui/RoomEquipmentStep.vue:9,105, features.fsd/room-drawer/ui/RoomAmenitiesStep.vue:31,243, features.fsd/room-details/info-editor/ui/RoomInfoEditor.vue:195,199 | — | Подтверждено | Расхождения нет. К сведению разработки: сохранение любого шага отправляет площадку целиком и дочитывает недостающие поля из кэша — в коде это отмечено комментарием «API требует ВСЕ поля, иначе сбрасывает неотправленные» (RoomWorkingHoursStep.vue:195, RoomAmenitiesStep.vue:243, RoomEquipmentStep.vue:105). При холодном кэше это риск затирания данных — связать с OQ4.2-32. |
Отрезанные находки обратного прохода (12)
Найдены и осознанно не вынесены в вопросы — техническая мелочь, плумбинг или чужой scope. Перечислены, чтобы усечение не читалось как «всё покрыто»:
- Сигналы «площадка заархивирована / разархивирована» отправляются из карточки, но никто их не слушает — заготовка под будущий сценарий (
RoomInfoEditor.vue:303-304). - Метод получения площадок по партнёрской зоне и его обёртка — мёртвый код, ноль вызовов (
rooms.api.ts:100,useRoomEntityQueries.ts:110). Частично покрыто OQ4.2-37. - Старые методы создания площадки в легаси-слое — мёртвый код (
stores/rooms.ts:33,classes/api/RoomsService.ts:40). - Ответ на создание площадки принимается в четырёх разных формах (строка, три варианта объекта) — признак нестабильного контракта (
rooms.api.ts:155-170). - Порядок карточек площадок в списке объекта хранится только на клиенте, на сервер не уходит (
stores/rooms.ts:386) — чужой scope: WebLk 4.1 Объекты. - Описание виджета создания устарело и не соответствует фактическим параметрам (
widgets.fsd/room-drawer/README.md:17-22). - Два шага мастера пишут черновик через метод, помеченный как устаревший, с предупреждением в журнал (
RoomAmenitiesStep.vue:296,RoomEquipmentStep.vue:158). - Контракт площадки пропускает неизвестные поля с сервера (
rooms.schema.ts:110) — важная оговорка: отсутствие модерации на фронте не доказывает её отсутствия на бэкенде; проверка модерации — предмет Back-сверки, не этого раздела. - Файлы в папках материалов удаляются дважды — сразу из загрузчика и повторно при сохранении по накопленным ключам (
RoomMaterialsStep.vue:444,ImageManager.vue:607). - Направление операции архивирования вычисляется с приоритетом черновика над серверными данными (
RoomInfoEditor.vue:291) — кнопка скрыта вне режима просмотра, поэтому не стреляет. - Синхронизация черновика и формы на первом шаге защищена от зацикливания таймером 400 мс поверх задержки 300 мс — хрупкая гонка (
RoomMainInfoStep.vue:249-251). - У режима редактирования нет собственного адреса страницы — режимы хранятся в памяти и не отражаются в адресной строке (
pages/content/rooms/[roomId]/index.vue:85-90); заход на создание без параметров объекта в адресе тихо обрывает сохранение (index.vue:129).