Направление работ: AdmLk Код раздела: 3.5 Раздел: Управление > Рассылки Статус: черновик Ответственный: Панкова Л.А. Версия: 0.1 Обновлено: 27.07.26


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

Данный раздел обеспечивает сотруднику сервисного кабинета интерфейс для управления почтовыми рассылками.

Сотрудник просматривает и фильтрует список рассылок, создает новую рассылку, настраивает немедленную или отложенную отправку, редактирует рассылки с учетом их состояния, архивирует и восстанавливает их.

Интерфейс также показывает ход отправки писем по адресатам и результат каждой попытки.

Раздел зависит от Back: 7.3 Уведомления > Рассылки, а выбор шаблона и процесс доставки связаны с Back: 7.1 Уведомления > Шаблоны уведомлений и список событий и Back: 7.2 Уведомления > Процессинг и каналы доставки уведомлений.

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

Рассылка — почтовая отправка по заданному списку адресов, которой сотрудник управляет в разделе AdmLk 3.5.

Шаблон уведомления — заранее подготовленный шаблон, который сотрудник выбирает для рассылки.

Процесс отправки — выполнение отправки писем адресатам с отображением результата каждой попытки в интерфейсе.

Отложенная рассылка — рассылка, для которой заданы дата и время начала отправки.

Отправленная рассылка — рассылка, по которой процесс отправки уже начался.

Архивная рассылка — рассылка с включенным признаком «Архив».

Состояние рассылки — неизменяемый признак того, была ли рассылка проведена.

Статус рассылки — признак архивности рассылки.

Статус письма — отображаемый результат отправки письма отдельному адресату, например «Доставлено», «Ожидает отправки» или «Ошибка».

3. Scope

Входит

S1: Просмотр и фильтрация рассылок

S2: Создание рассылки

S3: Редактирование отправленной рассылки

S4: Редактирование неотправленной рассылки

S5: Архивация рассылки

S6: Восстановление рассылки

S7: Адаптивное отображение раздела

Не входит

4. BR

Указаны в пункте 4 раздела Back: 7.3 Уведомления > Рассылки.

5. Функциональные требования (UC + FR)

IDСценарийФункциональное требованиеBRВесСтатус
S1: FR3.5-1Сотрудник открывает раздел «Рассылки»Интерфейс показывает заголовок «Рассылки», панель поиска и фильтров, действие добавления и таблицу ранее созданных рассылок.1Реализовано
S1: FR3.5-2Сотрудник просматривает список рассылокИнтерфейс показывает для каждой рассылки колонки «Название», «Шаблон», «Старт», «Состояние», «Ок», «Ошибки» и «Статус». В колонке «Состояние» отображается неизменяемый признак того, была ли рассылка проведена, а в колонке «Статус» — признак архивности.1Реализовано
S1: FR3.5-3Сотрудник ищет рассылкуИнтерфейс позволяет найти рассылку через поле «Найти» и обновляет таблицу по введенному значению.1Частично #[OQ3.5-2]
S1: FR3.5-4Сотрудник фильтрует рассылки по дате стартаИнтерфейс позволяет задать начало и окончание периода через поля «С» и «До» и показывает рассылки, соответствующие выбранному периоду.2Частично #[OQ3.5-2]
S1: FR3.5-7Список рассылок загружаетсяИнтерфейс показывает состояние загрузки в области поиска, фильтров и таблицы до получения данных.2Реализовано
S1: FR3.5-8Сотрудник открывает рассылкуИнтерфейс открывает страницу «Редактирование рассылки» с данными выбранной рассылки и таблицей отправки писем.1Частично #[OQ3.5-2]
S1: FR3.5-9Сотрудник просматривает отправку писемПосле начала отправки интерфейс заполняет таблицу с колонками «Статус», «Дата», «Попыток» и «Email» результатами по адресатам, включая «Доставлено», «Ожидает отправки» и «Ошибка».1Частично #[OQ3.5-2] #[OQ3.5-3]
S1: FR3.5-10Сотрудник ищет и фильтрует результаты отправкиПосле начала отправки интерфейс позволяет искать записи в таблице и фильтровать их через поле «Статус письма». До начала отправки эти действия недоступны.2Частично #[OQ3.5-2]
S1: FR3.5-5Сотрудник фильтрует письма по статусуИнтерфейс позволяет выбрать в фильтре «Статус письма» значение «Все», «Доставлено», «Ожидает отправки» или «Ошибка» и обновляет таблицу согласно выбранному значению.2Частично #[OQ3.5-2]
S1: FR3.5-6Сотрудник фильтрует письма по статусу «Отменено» (на будущую реализацию)Интерфейс показывает значение «Отменено» в фильтре «Статус письма» и позволяет отобрать соответствующие рассылки.3Не реализовано #[OQ3.5-5]
S2: FR3.5-11Сотрудник инициирует создание рассылкиИнтерфейс открывает страницу «Создание рассылки» по действию добавления в списке рассылок.1Реализовано
S2: FR3.5-12Сотрудник заполняет данные рассылкиИнтерфейс позволяет указать «Название», выбрать «Шаблон», задать дату «Старт с» и «Время», а также заполнить список «Почтовые адреса».1Реализовано
S2: FR3.5-13Сотрудник очищает дату и время стартаИнтерфейс позволяет сбросить ранее выбранные значения в полях «Старт с» и «Время».2Реализовано
S2: FR3.5-14Сотрудник заполняет обязательные данныеИнтерфейс оставляет действия «Сохранить» и «Разослать» недоступными, пока не заполнены обязательные поля, и активирует применимое действие после корректного заполнения.1Реализовано
S2: FR3.5-15Сотрудник создает отложенную рассылкуЕсли заполнены дата и время старта, интерфейс делает действие «Разослать» недоступным и позволяет сохранить рассылку для отправки по заданному таймеру.1Частично #[OQ3.5-2]
S2: FR3.5-16Сотрудник сохраняет или отправляет рассылку без даты стартаЕсли дата и время старта не заданы, интерфейс позволяет выполнить действие «Сохранить» без запуска отправки или действие «Разослать» для немедленного начала отправки.1Частично #[OQ3.5-2]
S2: FR3.5-17Отправка писем начинаетсяИнтерфейс наполняет таблицу результатами отправки по адресатам и добавляет новую рассылку в общую таблицу раздела.1Частично #[OQ3.5-2] #[OQ3.5-3]
S2: FR3.5-18Сотрудник отменяет рассылку (на будущую реализацию)Интерфейс позволяет выполнить действие «Отменить» и отображает рассылку со статусом «Отменено».3Не реализовано #[OQ3.5-5]
S3: FR3.5-19Сотрудник открывает отправленную рассылкуИнтерфейс открывает данные отправленной рассылки и показывает заполненную таблицу результатов по адресатам.1Частично #[OQ3.5-2]
S3: FR3.5-20Сотрудник редактирует отправленную рассылкуИнтерфейс позволяет изменить «Название» и признак «Архив», а поля «Шаблон», «Старт с», «Время» и «Почтовые адреса» оставляет недоступными для редактирования.1Реализовано
S3: FR3.5-21Сотрудник копирует почтовые адреса отправленной рассылкиИнтерфейс позволяет скопировать отображаемые значения из списка «Почтовые адреса».3Не реализовано #[OQ3.5-4]
S3: FR3.5-22Сотрудник сохраняет изменения отправленной рассылкиИнтерфейс активирует действие «Сохранить» после изменения доступных данных и сохраняет внесенные изменения.1Частично #[OQ3.5-2]
S4: FR3.5-23Сотрудник открывает неотправленную рассылкуИнтерфейс открывает данные рассылки, процесс отправки которой еще не начался, и показывает пустую таблицу результатов по адресатам.1Частично #[OQ3.5-2]
S4: FR3.5-24Сотрудник редактирует неотправленную рассылкуИнтерфейс позволяет изменить «Название», «Шаблон», дату «Старт с», «Время» и список «Почтовые адреса».1Реализовано
S4: FR3.5-25Сотрудник изменяет способ старта неотправленной рассылкиИнтерфейс применяет доступность действий «Сохранить» и «Разослать» согласно наличию или отсутствию даты и времени старта.1Реализовано
S4: FR3.5-26Сотрудник сохраняет неотправленную рассылкуИнтерфейс активирует действие «Сохранить» после изменения данных и сохраняет внесенные изменения.1Частично #[OQ3.5-2]
S5: FR3.5-27Сотрудник открывает рассылку для архивацииИнтерфейс показывает в форме редактирования выключенный переключатель «Архив» для неархивной рассылки.1Частично #[OQ3.5-2]
S5: FR3.5-28Сотрудник архивирует рассылкуИнтерфейс позволяет включить переключатель «Архив» и активирует действие «Сохранить».1Реализовано
S5: FR3.5-29Архивация сохраненаПосле сохранения интерфейс возвращает сотрудника к списку и отображает рассылку как архивную в колонке «Статус».1Частично #[OQ3.5-2]
S6: FR3.5-30Сотрудник открывает архивную рассылкуИнтерфейс позволяет открыть архивную рассылку из списка и показывает включенный переключатель «Архив».1Частично #[OQ3.5-2]
S6: FR3.5-31Сотрудник восстанавливает рассылкуИнтерфейс позволяет выключить переключатель «Архив» и активирует действие «Сохранить».1Реализовано
S6: FR3.5-32Восстановление сохраненоПосле сохранения интерфейс возвращает сотрудника к списку и отображает рассылку как неархивную в колонке «Статус».1Частично #[OQ3.5-2]
S7: FR3.5-33Сотрудник использует раздел на разных ширинах экранаИнтерфейс адаптирует страницу раздела рассылок, карточки, связанные блоки, формы редактирования и таблицы для desktop, laptop и tablet.2Реализовано

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

Контекст сверки. BRD версия 0.1 (обновлено 27.07.26). Репозиторий: musbooking.weblk.adminpanel, commit 3a107bd5278c71559b98c4701a1b47aa8b7ab0e0 (origin/main, 2026-09-06). Кросс-слой проверялся в booking-monorepo, commit 82359296 (2026-09-07). Дата сверки: 2026-09-08. Якорь в коде: widgets/mailing/**, entities/mailing/**, features/mailing-form/**, features/mailing-drawer/**, features/mailing-list/**, pages/management/mailing/**, shared/api-contracts/mailings/mailings.schema.ts, shared/api/MailingsService.ts; на бэке — src/services/booking.notifications/src/Booking.Notifications/Features/Mailing/**, Database/Models/Mailing.cs, Database/Models/EmailNotification.cs, BaseServiceImplementation.cs. Первая полная сверка — колонка «Статус» была пустой у всех 33 требований. Гайдбук не передавался — маршрутизация вопросов без сверки с гайдбуком.

IDИсточникВопросКомуСтатусРекомендацииИтоговое решение
OQ3.5-1FR3.5-1 – FR3.5-33 (весь раздел) / Back 7.3 Уведомления > РассылкиТребование говорит: сотрудник создаёт разовую рассылку по явному списку почтовых адресов, с немедленной либо однократной отложенной отправкой (дата+время «Старт с» / «Время»), и видит результат доставки по каждому адресату («Доставлено» / «Ожидает отправки» / «Ошибка»). В коде бэкенда (Booking.Notifications) модель рассылки — принципиально другая: Mailing/MailingSetting описывают периодическую рассылку по расписанию (Frequency, TimeFrom/TimeTo, DateFrom/DateTo), без списка email-адресов и без единого «результата отправки» на саму рассылку — src/services/booking.notifications/src/Booking.Notifications/Database/Models/Mailing.cs:8-58. Команды CreateMailingCommand/UpdateMailingCommand не содержат полей Emails, StartAt, SendImmediately, IsSent — Features/Mailing/Create/CreateMailingCommand.cs:8-16, Features/Mailing/Update/UpdateMailingCommand.cs:8-16.БизнесOpenПодтвердить с продуктом/аналитиком целевую модель рассылки: разовая по явному списку адресов (как в BRD AdmLk 3.5 и в текущем фронте) или периодическая по расписанию (как в текущей структуре БД бэкенда). От решения зависит объём доработки: переписывать backend-модель рассылок под контракт фронта или наоборот.
OQ3.5-2FR3.5-3, FR3.5-4, FR3.5-5, FR3.5-8, FR3.5-9, FR3.5-10, FR3.5-15, FR3.5-16, FR3.5-17, FR3.5-19, FR3.5-22, FR3.5-23, FR3.5-26, FR3.5-27, FR3.5-29, FR3.5-30, FR3.5-32Требование говорит: список рассылок загружается и фильтруется, карточка рассылки открывается с реальными данными, создание/редактирование/отправка/архивация сохраняются на сервере. В коде фронта это реализовано через вызовы GetMailingsService, GetMailingByIdService, CreateMailingService, UpdateMailingService сервиса NotificationService — shared/api/MailingsService.ts:19-86; сам файл прямо фиксирует состояние: «Методов в swagger пока нет — вызовы будут падать до готовности бэка» (shared/api/MailingsService.ts:1-3). В коде бэкенда ни один из этих 4 методов не зарегистрирован: в Features/Mailing/ есть только подпапки Create/, Update/ и Services/ (нет Get/List), а сами команды CreateMailingCommand.cs и UpdateMailingCommand.cs не помечены атрибутом [RpcMethod(...)] — для сравнения, рабочий метод шаблонов помечен явно: Features/Template/Create/CreateTemplateCommand.cs:10 → [RpcMethod("CreateTemplateService")]. Диспетчер BaseServiceImplementation.BuildHandlers() (BaseServiceImplementation.cs:52-68) регистрирует обработчик метода только по наличию атрибута RpcMethodAttribute — соответственно любой из 4 вызовов рассылок вернёт ошибку «метод не найден».РазработкаOpenЗавести тикет в Bitrix на реализацию и регистрацию ([RpcMethod]) методов GetMailingsService, GetMailingByIdService, CreateMailingService, UpdateMailingService в Booking.Notifications — после решения по OQ3.5-1, так как текущая модель БД под контракт фронта не подходит и потребует миграции схемы (emails, startAt, sendImmediately, isSent, получатели).
OQ3.5-3FR3.5-9, FR3.5-17Требование говорит: после отправки рассылки интерфейс показывает по каждому адресату статус доставки («Доставлено» / «Ожидает отправки» / «Ошибка»), дату и число попыток. В коде бэкенда job, который должен выполнять фактическую отправку и фиксировать результат по адресату, — пустая заглушка: SendMailingJob.Execute только пишет пустую строку в консоль и ничего не делает — Features/Mailing/Services/SendMailingJob.cs:8-11. Таблица email_notification (Database/Models/EmailNotification.cs:8-38) технически содержит нужные поля (RecipientEmail, Attempts, Status, MailingId), но ничем не заполняется для рассылок.РазработкаOpenРеализовать логику SendMailingJob (реальная отправка + запись результата в email_notification по каждому адресату) как часть работ по OQ3.5-2 — без неё таблица результатов отправки останется пустой даже после появления RPC-методов.
OQ3.5-4FR3.5-21Требование говорит: сотрудник может скопировать отображаемые почтовые адреса отправленной рассылки. В коде такого действия нет: в features/mailing-drawer/ui/MailingDrawer.vue поле «Почтовые адреса» — обычное readonly-текстовое поле без кнопки/иконки копирования (features/mailing-drawer/ui/MailingDrawer.vue:86-99), и по всему разделу (widgets/mailing, features/mailing-form, features/mailing-list, features/mailing-drawer, entities/mailing) не встречается ни одного упоминания copy/clipboard/«скопир».РазработкаOpenВ отличие от FR3.5-6/FR3.5-18, это требование НЕ помечено в BRD как «на будущую реализацию» — похоже на пропущенный кусок скоупа, а не осознанное решение. Уточнить у разработки, планировалась ли кнопка копирования, и завести тикет при подтверждении.
OQ3.5-5FR3.5-6, FR3.5-18Что подтверждено: оба требования в самом BRD помечены «(на будущую реализацию)». Код это подтверждает: статус «Отменено» / Cancelled отсутствует в перечислении статусов письма (features/mailing-form/model/mailingRecipientStatus.ts:7-11,20-25, shared/api-contracts/mailings/mailings.schema.ts:8); действия «Отменить» нет ни в features/mailing-drawer/ui/MailingDrawer.vue (кнопки только «Сохранить» / «Разослать», :112-134), ни в features/mailing-form/ui/MailingForm.vue.РазработкаПодтвержденоДействий не требуется — расхождения с BRD нет, реализация сознательно отложена.—

0 items under this folder.