Направление работ: Back
Код раздела: 8.3.2 Администрирование > Тарифы > Публикация предложений
Статус: Готов
Ответственный: Панкова Л.А.
Версия: 0.1
Обновлено: 19.08.26


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

Раздел описывает Тарифы публикации (Размещения), предназначенные для расчета стоимости публикации Площадок и Услуг партнеров в публичных интерфейсах сервиса.

Параметры Тарифа публикации задают доступность Площадки в интерфейсах, источники публикации, стоимость размещения, условия кэшбека, квоты и включенные Рекламные услуги и Услуги сервиса.

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

Тариф — сущность, которая отвечает за процессы, связанные с реализацией услуг сервиса и возможностями системы для конкретного пользователя.

Тариф публикации (Размещения) — Тариф для расчета стоимости публикации Площадок и Услуг партнеров в публичных интерфейсах сервиса.

Условия по Площадкам — список условий покупки квот на размещение Площадок в интерфейсах и размера кэшбека по оплаченным Заказам на них.

Включенные услуги — список Рекламных услуг и Услуг сервиса, включенных в Тариф публикации.

3. Scope

Входит

S1 Тариф публикации: назначение и процессы, которые определяются параметрами Тарифа.

S2 Основные параметры: доступность Тарифа, Тариф по умолчанию, активации и расчетные периоды.

S3 Условия по Площадкам: область действия, стоимость, скидки, кэшбек и лимиты Площадок.

S4 Включенные услуги: состав Рекламных услуг и Услуг сервиса в Тарифе публикации.

Не входит

4. Требования

Правила и ограничения бизнеса на уровне данных, источник истины в системе.

IDТребованиеКомментарийТип требованияВесСтатус
S1: BR8.3.2-1Тариф публикации предназначен для расчета стоимости публикации Площадок и Услуг партнеров в публичных интерфейсах сервисаНастройка Тарифа: выполняется сотрудниками платформы с соответствующим доступом в Back: 8.1 Сервисная зона доступаБизнес1Частично
OQ8.3.2-1
S1: BR8.3.2-2Тариф публикации должен определять доступность Площадки партнера в публичных интерфейсах, стоимость ее размещения и условия начисления кэшбекаНа основании параметров Тарифа:
- Доступность в интерфейсах: у Площадки партнера заполняются данные о доступности
    - Источники: Мобильное приложение и Каталог указываются как доступные у Площадки по Back: 8.2.2 Интерфейсы и Источники
    - Условия кэшбека: задаются для бронирований на размещенную Площадку по Back: 8.4.2 Настройки балльной системы
- Стоимость размещения: рассчитывается по Back: 4.5 Стоимость размещения в интерфейсах
Бизнес1Частично
OQ8.3.2-1, OQ8.3.2-2
S2: BR8.3.2-3Тариф публикации должен хранить название, описание и срок действияСостав данных:
- Название Тарифа — краткое наименование
- Описание Тарифа — подробное описание
- Срок действия Тарифа — период доступности для использования: дата и время начала — дата и время окончания
Системное1Частично
OQ8.3.2-1
S2: BR8.3.2-4Тариф публикации с флагом По умолчанию должен бессрочно привязываться ко всем Площадкам и иметь стоимость 0 рублейОграничение: только один Тариф публикации может иметь флаг По умолчаниюСистемное1Частично
OQ8.3.2-1, OQ8.3.2-3
S2: BR8.3.2-5Тариф публикации должен ограничивать количество и повторность активацийКоличество активаций: задается целым числом и обозначает лимит использования по всем Партнерским зонам. В интерфейсах такой Тариф помечается как ограниченное предложение.

Флаг одноразового использования: задает одноразовое предложение или триал-период. При установленном флаге Тариф можно активировать только один раз на Партнерскую зону
Системное1Частично
OQ8.3.2-1, OQ8.3.2-2
S2: BR8.3.2-6Тариф публикации должен задавать расчетный период, ограничение на количество периодов и скидку за периодыТип расчетного периода (дни/месяц): количество дней или месяцев, которое выбирает пользователь для оплаты.
    - Расчет месяца: с даты и времени активации Тарифа по такую же дату и время следующего месяца. Пример: оплата произведена 7 апреля 15:48, Тариф будет действовать по 7 мая 15:48.

Значение периода (число): количество дней или месяцев, которые определяют один период.
    - Ограничение: максимальное значение отсутствует; 0 означает бессрочный период.

Количество доступных периодов для оплаты: ограничение на суммарное количество приобретаемых периодов.
    - Пример: ограничение установлено на 12 месяцев. Если оплачено 10 месяцев, активировать можно еще на 2.

Скидка в % за каждый период: скидка умножается на количество оплачиваемых периодов минус один период.
    - Формула: Сумма по тарифу = (количество периодов - 1) * размер скидки
Системное1Частично
OQ8.3.2-1
S3: BR8.3.2-7Тариф публикации должен хранить Условия по Площадкам (множественный выбор)Назначение: список условий покупки квот на размещение Площадок партнеров в интерфейсах и размера кэшбека по оплаченным Заказам на них.

Состав каждого условия и иерархия параметров:
- Название условия — наименование условия
- Город — множественный выбор городов Объекта, на Площадке которого действует условие, из Back: 8.2.3 Города и метро; пустое значение распространяет условие на все города
- Сфера — множественный выбор сфер Объекта, на Площадке которого действует условие, из Back: 8.2.1 Сферы и Опции; пустое значение распространяет условие на все сферы
- Стоимость в рублях за Площадку — фиксированная стоимость одной Площадки; для Тарифа По умолчанию равна 0 рублей
- Скидка в % за каждую Площадку — скидка за Площадки в рамках одного Объекта по формуле Сумма по тарифу = (количество Площадок - 1) * размер скидки
- Размер кэшбека в % за Площадку — размер кэшбека за Заказы на Площадку Объекта по Back: 8.4.2 Настройки балльной системы
    - Лимит Площадок — ограничение на суммарное количество Площадок, для которых доступна активация Тарифа с указанным условием кэшбека
    - Лимит Площадок в рамках сферы для одной Партнерской зоны — ограничение на суммарное количество Площадок одной сферы в одной Партнерской зоне, для которых доступна активация Тарифа с указанным условием кэшбека
Системное1Частично
OQ8.3.2-1
S4: BR8.3.2-8Тариф публикации должен хранить Включенные услуги (множественный выбор)Назначение: список включенных в Тариф Рекламных услуг и Услуг сервиса.

Состав каждой услуги:
- ID Тарифа — идентификатор Рекламного или Сервисного тарифа
- Вид Тарифа — рекламный или сервисный
- Наименование Тарифа — краткое наименование
- Описание Тарифа — подробное описание

Связанные разделы: Рекламные услуги раскрываются в Back: 8.3.3 Реклама, Услуги сервиса — в Back: 8.3.5 Внутренние
Системное1Частично
OQ8.3.2-1

5. Открытые вопросы

Первая полная сверка (дейлики сентябрь 2026): BRD 8.3.2 v0.1 · репозиторий booking-monorepo · commit 82359296 / main · 2026-09-08 · якорь src/services/booking.partner-management (PartnerZones.Domain/PlacementTariffAggregate, PlacementConditionAggregate, ServiceTariffAggregate). Гайдбук на вход не передавался — маршрутизация без сверки с гайдбуком. Сводка: 3 вопроса (Open 3 · все — Разработке). Все 8 требований раздела получили статус «Частично»: доменная модель и CQRS-хендлеры реализованы и по составу полей соответствуют BRD, но упираются в две сквозные проблемы — CRUD-ручки Тарифа публикации, Условий по Площадкам и Сервисных тарифов помечены в коде как неиспользуемые (OQ8.3.2-1), а модели активации/покупки Тарифа публикации (аналог ClientTariffPurchase у подписок) в анкере не найдено (OQ8.3.2-2).

IDИсточникВопросКомуСтатусРекомендацииИтоговое решение
OQ8.3.2-1Код BR8.3.2-1, BR8.3.2-3, BR8.3.2-4, BR8.3.2-5, BR8.3.2-6, BR8.3.2-7, BR8.3.2-8Требование говорит: Тариф публикации должен хранить название/описание/срок действия, флаг «По умолчанию», лимиты и одноразовость активаций, расчётный период со скидкой, Условия по Площадкам (город/сфера/цена/скидка/кэшбек/лимиты) и Включённые услуги (рекламные и сервисные тарифы). В коде доменная модель и CRUD-хендлеры реализуют весь этот состав полей корректно: PlacementTariffAggregate (Info/DateRange/ActivationCount/OnlyOnce/Period/PayPeriodLimit/PeriodDiscount/IsDefault + списки допустимых Advertising-/Service-/PlacementCondition-тарифов), PlacementConditionAggregate (Name/PricePerPlacement/PlacementDiscountPercent/CashbackPercent/PlacementLimit/SpherePlacementLimit/CityIds/SphereIds) — 1:1 соответствие требованиям BR8.3.2-3, -6, -7. Но сами команды создания/изменения помечены в коде как неиспользуемые, и по автосгенерированному словарю API ни одно клиентское приложение их не вызывает — создать или изменить Тариф публикации, Условие по Площадке или Сервисный тариф через существующие интерфейсы сейчас нельзя. \ PlacementTariffAggregate.cs:15-63; PlacementConditionAggregate.cs:10-76; CreatePlacementTariffCommand.cs:9 [Obsolete("unused")]; UpdatePlacementTariffCommand.cs:10 [Obsolete("unused")]; CreatePlacementConditionCommand.cs:8 [Obsolete("unused")]; UpdatePlacementConditionCommand.cs:9 [Obsolete("unused")]; Musbooking.ApiGateway/ApiDocs/api-dictionary.json:14332-14341 (CreatePlacementTariffService, deprecated: true, obsoleteInCode: true, deprecatedReason: "не вызывает ни одно клиентское приложение"), :15799-15810 (GetPlacementTariffsService), :16951-16961 (UpdatePlacementTariffService), :14433-14444 и :17030-17041 (CreateRoomPlacementCondition/UpdateRoomPlacementCondition — это и есть команды PlacementCondition)РазработкаOpenПодтвердить план вывода API из статуса «неиспользуемый»: кто и когда подключает AdmLk/WebLk к этим ручкам (июньская-июльская работа Ксении, коммиты 193fac6a, 1f7fb38c, cb89019c, 52481739, b93ceeda за 04–08.06.26, атрибут [Obsolete] добавлен позже коммитом a7ac4403 14.07.26 по всему монорепо разом — похоже на общий аудит, а не точечную пометку). Если интеграция не планируется в ближайшее время — явно отразить это в статусе раздела, а не показывать «Реализовано».
OQ8.3.2-2Код BR8.3.2-2, BR8.3.2-5Требование говорит: активированный Тариф публикации должен обновлять доступность Площадки в интерфейсах (Мобильное приложение/Каталог), задавать условия кэшбека для бронирований и ограничивать активации по количеству/одноразовости. В коде не найдено ни одной модели «активации/покупки» Тарифа публикации (аналог ClientTariffPurchaseAggregate у подписок, раздел 8.3.4, в booking.partner-management отсутствует), и в PartnerZones.Domain.RoomAggregate нет полей, ссылающихся на PlacementTariffId. Соответственно: (а) неясно, где и как фактически проставляются признаки доступности Площадки в источниках и условия кэшбека, описанные в BR8.3.2-2, и (б) лимит активаций/одноразовость из BR8.3.2-5 хранятся как числа, но ничем не проверяются. Оговорка: обход ограничен анкером booking.partner-management; связка могла бы жить в доменах «2.2 Площадки партнеров» и «4.5 Стоимость размещения», которые в этом BRD явно исключены из Scope («Не входит») и не проверялись. \ PlacementTariffAggregate.cs:25-30 (только списки ID допустимых тарифов, без активации); поиск PlacementTariffPurchase/PlacementTariffActivation по booking.partner-management — совпадений нет; поиск ссылок на PlacementTariff в PartnerZones.Domain.RoomAggregate — совпадений нетРазработкаOpenУточнить у разработки/при сверке разделов 2.2 и 4.5, где физически происходит применение Тарифа публикации к Площадке (обновление источников, кэшбека) и проверка лимитов активации — если такого кода нет вообще ни в одном сервисе, эффект требования BR8.3.2-2 сейчас не достигается независимо от готовности CRUD (OQ8.3.2-1).
OQ8.3.2-3Код BR8.3.2-4Требование говорит: только один Тариф публикации может иметь флаг «По умолчанию», и такой Тариф должен бессрочно привязываться ко всем Площадкам и иметь стоимость 0 рублей. В коде поле IsDefault хранится (PlacementTariffAggregate.cs:24, PlacementTariff.cs:43 — колонка is_default без уникального индекса), но ни CreatePlacementTariffCommandHandler, ни UpdatePlacementTariffCommandHandler не проверяют, что в системе уже есть Тариф с IsDefault = true — можно создать несколько. Также нет проверки, что срок действия Тарифа с IsDefault = true бессрочен, и нет проверки, что связанные Условия по Площадкам имеют PricePerPlacement = 0. \ CreatePlacementTariffCommandHandler.cs:24-61, UpdatePlacementTariffCommandHandler.cs:27-81 — валидации IsDefault-уникальности, бессрочности и нулевой цены нет; PlacementTariff.cs:43 (колонка is_default без атрибутов уникальности)РазработкаOpenЗавести задачу на добавление проверки единственности IsDefault = true (на уровне хендлера или БД-ограничения) и валидации «Тариф по умолчанию: to = null/бессрочный срок и цена условий = 0» при создании/обновлении.

0 items under this folder.