BR 2.6: Интеграция AI Photo Studio Service — «AI Студия»

Зависит от:

Контекст

Внешний сервис AI Photo Studio (gensvc) уже существует как работающий прототип (Go + chi, PostgreSQL, MinIO, Polza.ai). Сервис генерирует и улучшает фотографии блюд с помощью AI (Polza Nano Banana 2).

Задача — интегрировать сервис в ERP-платформу франшизы: подключить к единой системе аутентификации (Auth Service), добавить нужные permissions в каталог User Service, обеспечить доступ нужным сотрудникам через Админку Франшизы.

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

Владельцы точек и контент-менеджеры хотят получать студийного качества фото блюд без фотографа — загружают обычное фото, выбирают стиль (пресет), AI делает красивую картинку для меню, рекламы и соцсетей.

Функции «AI Студии»

  1. Фото в стиле (photo-studio) — загружают фото блюда + выбирают пресет (системный или личный) → AI переносит стиль
  2. Улучшение (enhance) — загружают фото + описывают желаемое → AI улучшает сцену, сохраняя блюдо
  3. Мои стили — личная библиотека reference-изображений сотрудника (до 50 шт.), используются как кастомные пресеты
  4. История заданий — список своих заданий с результатами (SSE real-time статус)
  5. Каталог пресетов — системные пресеты сгруппированы по категориям (bar, delivery, pastry и т.д.)
  6. Управление пресетами — администраторы могут создавать, редактировать, скрывать системные пресеты

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

Доступ к сервису получают сотрудники с permission gensvc.access. Типичные роли в терминах бизнеса:

ПрофильКтоPermissions
Контент-менеджерСоздаёт фото для меню и рекламыgensvc.access, gensvc.photo.create, gensvc.history.read
Владелец точкиПолный доступ к студии в рамках своего ЮЛgensvc.access, gensvc.photo.create, gensvc.history.read
Администратор франшизыВидит всю историю, управляет пресетами+ gensvc.history.read.all, gensvc.delete, gensvc.preset.admin

Мультитенантность

Сервис уже хранит franchise_id в каждом задании — данные разных франшиз изолированы.

Что нужно от других сервисов

СервисЧто нужноЗачем
Auth ServicePOST /internal/auth/validate — валидация JWT + возврат permissionsВместо JWKS-only валидации сервис будет проверять токены через единый introspection endpoint
User ServiceДобавить 6 ключей gensvc.* в каталог permissionsЧтобы их можно было назначать ролям в Админке Франшизы
Админка Франшизы (фронт)Категория «AI Студия» в управлении ролямиUI для назначения gensvc.* permissions сотрудникам

Новые permissions (6 ключей)

КлючОписание
gensvc.accessБазовый доступ к сервису. Без него — 401 на все endpoints
gensvc.photo.createСоздание заданий на генерацию/улучшение фото
gensvc.history.readПросмотр своей истории заданий
gensvc.history.read.allПросмотр истории всех сотрудников франшизы
gensvc.deleteУдаление заданий (своих или чужих при read.all)
gensvc.preset.adminУправление системными пресетами (CRUD)

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

  • Интерфейс «AI Студии» в Админке Франшизы (фронтенд для генерации) — отдельный BR
  • Выгрузка результатов напрямую в карточку товара Каталога — Phase 2
  • Kafka-события от Photo Studio Service — не требуется в MVP
  • Биллинг/лимиты на количество генераций — не требуется в MVP

Принятые решения (2026-05-07, Захар)

Подключение через API Gateway

Photo Studio Service подключается через API Gateway с маршрутом /api/v1/gensvc/*http://photo-studio:8080/v1/* (Gateway rewrite). Без отдельного BFF — наш Go-сервис сам отдаёт нужные DTO. Внешний URL (https://photo.nirbi.ru) только для UI; API всегда через Gateway.

UI — отдельный микро-фронт

Фронт AI Студии — отдельный SPA на photo.nirbi.ru (React + Vite, текущий прототип). В основном фронте Админки Франшизы добавляется только кнопка/ссылка перехода в раздел навигации (видна при наличии gensvc.access). Кнопка → новая вкладка с авто-передачей JWT.

Себестоимость генерации — ~4 ₽ за фото

Polza Nano Banana 2 (google/gemini-3.1-flash-image-preview) — ~4 ₽ за одно изображение. При count=4 за один job — ~16 ₽. Лимиты per-franchise/per-user в MVP не вводятся — мониторим биллинг Polza, при росте расходов вводим квоты в Phase 2.

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

КомпонентЧто меняется
Photo Studio Service (внешний прототип)Переключить auth с JWKS на token introspection через Auth Service
Auth ServiceБез изменений — /internal/auth/validate уже реализован
User ServiceДобавить 6 ключей gensvc.* в каталог permissions
Админка Франшизы (фронт)Категория «AI Студия» в UI управления ролями

Ссылки