BR 6.1: Маркетинговая информация (Standby-карусель на POS)

Демо 29.05.2026 — Сценарий 1

Этот BR закрывает Сценарий 1 показа Лидеру департамента: до прихода гостя на кассе в зале крутится карусель из брендированных слайдов Альфа. Превью — HTML-демо.

Зависит от:

  • BR 1.4.4 — для permissions
  • SSE-инфраструктура (BR SSE-1…7, задачи #284–289) — уже задеплоена

Контекст

Сейчас касса desktop-pos, когда не используется, либо стоит на экране входа (логин), либо в режиме главного меню. Это «мёртвое» эфирное время — место, где можно показывать бренд, акции, новинки.

Альфа ERP — позиционируем как brand-first продукт. На демо 29.05 Лидер заходит в зал и первое, что видит — наш брендированный экран на реальной кассе. Это первое впечатление, оно работает само даже до начала презентации.

Что хочет бизнес

Маркетолог / владелец точки управляет витриной кассы — закидывает картинки (постеры от мерча, акции, фото блюд), задаёт порядок и активность, видит превью. На кассе автоматически запускается полноэкранная карусель этих картинок, когда касса не используется. Новый слайд появляется на экране без перезагрузки.

Функции «Маркетинговой информации»

  1. Список слайдов — все слайды текущей ТТ, drag-and-drop сортировка, превью каждого
  2. Загрузка слайда — загружает картинку с локального диска (jpg/png/webp до 10 МБ), задаёт заголовок и активность
  3. Редактирование слайда — изменить заголовок, активность, порядок
  4. Удаление слайда — с подтверждением
  5. Источник слайдаmanual (загруженный вручную) или ai_photo_studio (см. BR 6.2)
  6. Live-обновление на POS — при изменении слайдов касса подхватывает изменения моментально через SSE, без F5

Поведение на POS

  • Standby-режим запускается автоматически после N минут неактивности кассира (N по умолчанию 5, конфигурируется в настройках ТТ)
  • Касса показывает full-screen карусель активных слайдов
  • Авто-transition между слайдами: 8–10 секунд (по умолчанию 9, конфигурируется)
  • Любой клик / тач возвращает кассу в рабочее состояние (логин/главное меню)
  • Если активных слайдов нет — показывается дефолтная заставка с логотипом Альфы

Пользователи

ПрофильКтоPermissions
Маркетолог / владелец ТТУправляет слайдами своей ТТmarketing.read, marketing.write
Менеджер ТТВидит, но не редактируетmarketing.read
КассирВидит карусель на экране в standby (нет доступа в админке)

Сущности

marketing_slide

ПолеТипОписание
idUUIDPK
store_idUUID FKК stores.id
image_urlTEXTURL картинки в S3 (бакет erp-marketing)
titleVARCHAR(200)Заголовок (для админки, на экране кассы не отображается)
orderINTEGERПорядок в карусели (0, 1, 2, …)
activeBOOLEANАктивность слайда
sourceENUMmanual / ai_photo_studio
source_refJSONB nullableМетаданные источника (для AI: job_id, preset_id)
created_atTIMESTAMPTZ
updated_atTIMESTAMPTZ

Slides — per-store. Делиться между ТТ нельзя в MVP (можем добавить «общие» в Phase 2).

API (store-service)

МетодПутьОписание
GET/api/v1/admin/stores/{store_id}/marketing-slidesСписок слайдов точки
POST/api/v1/admin/stores/{store_id}/marketing-slidesСоздать слайд (multipart с картинкой)
PUT/api/v1/admin/stores/{store_id}/marketing-slides/{id}Обновить (title, active)
PATCH/api/v1/admin/stores/{store_id}/marketing-slides/reorderМассовая смена порядка
DELETE/api/v1/admin/stores/{store_id}/marketing-slides/{id}Удалить
GET/api/v1/public/stores/{store_id}/marketing-slides/activeАктивные слайды для POS (без auth, по store_token)

События (Kafka)

ТопикКогда
marketing.slide.changedПри любом CRUD: payload `{store_id, slide_id, action: ‘created'

POS-BFF слушает топик, форвардит через SSE в активные desktop-pos сессии этой ТТ.

Новые permissions

КлючОписание
marketing.readПросмотр слайдов
marketing.writeСоздание, редактирование, удаление, изменение порядка

Системная роль «Администратор» получает обе автоматически (миграция).

Что НЕ входит в текущий скоуп

  • Шеринг слайдов между ТТ одного партнёра — Phase 2
  • Расписание показа (с пн по пт, с 8 до 12) — Phase 2
  • A/B-тестирование слайдов — Phase 2
  • Аналитика по показам (импрессии, кликабельность) — Phase 2
  • Видео-слайды (mp4) — Phase 2, только статика на MVP

Затронутые сервисы и продукты

КомпонентЧто меняется
store-serviceНовая сущность marketing_slide, CRUD API, outbox-публикация marketing.slide.changed
admin-bffПрокси для CRUD + загрузка картинки в S3 (или прямой presigned upload)
erp-admin/webНовая вкладка «Маркетинговая информация» в карточке ТТ (слева в навигации)
erp-pos-desktopStandby-режим (новый route /standby), full-screen карусель, SSE-подписка
pos-bffForward marketing.slide.changed через SSE в активные сессии
erp-user-serviceДобавить marketing.read, marketing.write в PermissionCatalog

Acceptance criteria для демо 29.05

  1. На карточке ТТ есть вкладка «Маркетинговая информация» — открывается, показывает 3 seed-слайда (Hero CTA / Замена стека / AI inside)
  2. Загрузка нового слайда → появляется в списке за 1 секунду
  3. На реальной кассе (desktop-pos в зале) — после 5 минут неактивности запускается standby-карусель
  4. Карусель листает все активные слайды с интервалом 9 секунд
  5. При добавлении нового слайда в админке — он появляется в карусели на кассе без перезагрузки через ≤ 3 секунды
  6. Любой клик на кассе возвращает её в рабочее состояние

Ссылки