BR 6.2: AI-постер из Photo Studio в карусель

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

Этот BR закрывает Сценарий 2 показа: Денис Осин берёт любой предмет с витрины (пончик, кофе, бургер), Лёша фотографирует его, AI Photo Studio генерирует брендовый постер с гостем и предметом, постер моментально становится новым слайдом в карусели на той же кассе из BR 6.1. Превью — HTML-демо.

Зависит от:

  • BR 6.1 — карусель и сущность marketing_slide
  • BR 2.6 — AI Photo Studio в админке
  • ADR-021 — архитектурное решение интеграции

Контекст

AI Photo Studio уже интегрирован в админку как iframe-модалка на карточке товара (BR 2.6 + задачи #295–298). Сейчас результат генерации применяется к изображению продукта (product.image_url). Это первый use-case — фото блюда.

Второй use-case — постер. Тип job-а заявлен в Overview (функция #3), но конкретный flow «постер с гостем → витрина кассы» не реализован: нет шаблонов промптов под бренд Альфы, нет связки output → карусель из BR 6.1.

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

Маркетолог открывает админку, нажимает «Создать AI-постер», загружает фото (например, гостя с пончиком), выбирает один из заготовленных брендовых шаблонов («Постер Альфа ERP, портрет с предметом», «Сезонная акция», «Новинка дня»), AI генерирует постер в стиле Альфы. Маркетолог одним кликом отправляет постер в карусель конкретной ТТ — там он моментально появляется как новый слайд.

Функции «AI-постер»

  1. Шаблоны промптов — 3–5 предустановленных brand-aligned промптов, заданных контент-командой
  2. Job-type poster — новый тип задания в AI Photo Studio (рядом с photo-studio, enhance)
  3. Кнопка «Добавить в карусель ТТ» — после успешной генерации, выбор ТТ → создание marketing_slide через API BR 6.1
  4. Прослеживаемость — слайд хранит source = 'ai_photo_studio', source_ref = { job_id, preset_id, template_id }

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

ПрофильКтоPermissions
МаркетологСоздаёт постеры и закидывает в карусельgensvc.photo.create, marketing.write
Владелец точкиМожет в рамках своей ТТте же
Администратор франшизыУправляет шаблонами промптов+ gensvc.poster.template.admin

Сущности

poster_prompt_template (в БД gensvc)

ПолеТипОписание
idUUIDPK
franchise_idUUIDТенант
nameVARCHAR(120)Название («Постер с гостем», «Сезонная акция»)
prompt_textTEXTТело промпта (с placeholder’ами {object}, {guest_name} и т.д.)
cover_urlTEXT nullableПример результата
activeBOOLEAN
created_atTIMESTAMPTZ

Шаблоны общие на франшизу (не per-store).

API (AI Photo Studio — расширение)

МетодПутьОписание
GET/v1/poster-templatesСписок шаблонов франшизы
POST/v1/jobs/posterСоздать job типа poster с template_id + input image
GET/v1/jobs/{id}Существующий — статус job

API связки с каруселью

После завершения poster-job, admin-bff проксирует кнопку «Добавить в карусель»:

POST /api/v1/admin/stores/{store_id}/marketing-slides
multipart: image (скачивается с output_url AI Photo Studio)
+ JSON: { source: 'ai_photo_studio', source_ref: { job_id, preset_id, template_id } }

Новые permissions

КлючОписание
gensvc.poster.createСоздание postгер-job (если хотим отделить от gensvc.photo.create)
gensvc.poster.template.adminУправление шаблонами промптов

Решение: gensvc.poster.create совмещаем с уже существующим gensvc.photo.create — не плодим. Admin шаблонов — отдельно.

Заготовленные шаблоны промптов (3–5 шт)

Минимум для демо:

  1. «Гость с предметом» — портрет человека с предметом в руках в фирменном стиле Альфы (для Сценария 2)
  2. «Сезонная акция» — постер с продуктом + текст акции
  3. «Новинка дня» — постер с одной фокусной позицией

Точные тексты — задача контент-команды. Создаём 3 шаблона в БД на демо-франшизу через seed.

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

  • Распознавание лица гостя (face-preserving generation) — Phase 2 / отдельный BR
  • Видео-постеры — Phase 2
  • Шаблоны от пользователя (custom prompt templates) — Phase 2
  • A/B тестирование постеров — Phase 2

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

КомпонентЧто меняется
ai-photo-studio-backendНовая таблица poster_prompt_template, эндпоинт POST /v1/jobs/poster с template_id, S3-бакет для шаблонов-превью
admin-bffПрокси для template list + создание postгер-job + «Добавить в карусель ТТ»
erp-admin/webВ AI Photo Studio Modal новая вкладка/режим «Постер»: выбор шаблона, генерация, кнопка «Добавить в карусель ТТ» с выбором store_id
erp-user-servicePermission gensvc.poster.template.admin
erp-store-service(без изменений — API из BR 6.1)

Acceptance criteria для демо 29.05

  1. В админке открывается AI Photo Studio в режиме «Постер» с 3 готовыми шаблонами
  2. Загрузка фото гостя → выбор шаблона «Гость с предметом» → AI генерирует постер за ≤ 30 секунд
  3. После генерации показан результат + кнопка «Добавить в карусель ТТ» с дропдауном выбора ТТ
  4. Клик «Добавить» → постер моментально создаётся как marketing_slide (source=ai_photo_studio)
  5. На реальной кассе через ≤ 3 секунды появляется новый слайд (через SSE из BR 6.1)
  6. В админке в списке слайдов виден новый постер с тегом «AI» и job_id в деталях

Ссылки