User Service хранит каталог permission-ключей — это константа в коде (back-office: 17 разделов, 32 ключа; POS: 14 ключей). Нужно добавить 6 новых ключей gensvc.* в каталог, чтобы:
Их можно было назначать permissions-ролям через Админку Франшизы
Auth Service возвращал их в ответе POST /internal/auth/validate
При bootstrap новой франшизы системная роль «Администратор» получала все 6 ключей автоматически
Каталог — константа в коде
Судя по Overview, каталог permission-ключей — const в Java-коде (не таблица в БД). Изменение = добавить 6 строк в enum/константу и перезапустить сервис.
Задачи
1. Добавить 6 ключей gensvc.* в каталог permissions
Найти в коде файл/класс с константой permission-ключей (предположительно что-то вроде PermissionCatalog.java или перечень в RoleService)
Добавить новую категорию «AI Студия» (или gensvc) со следующими ключами:
Ключ
Категория
Описание
gensvc.access
AI Студия
Базовый доступ к сервису AI Студии
gensvc.photo.create
AI Студия
Создание заданий на генерацию фото
gensvc.history.read
AI Студия
Просмотр своей истории заданий
gensvc.history.read.all
AI Студия
Просмотр истории всех сотрудников
gensvc.delete
AI Студия
Удаление заданий
gensvc.preset.admin
AI Студия
Управление системными пресетами
Убедиться что endpoint GET /internal/users/{id}/permissions возвращает эти ключи когда роль с ними назначена сотруднику
2. Проверить отображение в Админке Франшизы
Открыть UI управления ролями (Настройки → Роли → Создать роль)
Убедиться что в списке permissions появилась категория «AI Студия» с 6 опциями
Создать тестовую роль с gensvc.access + gensvc.photo.create + gensvc.history.read
Назначить её тестовому сотруднику
3. Bootstrap: системная роль «Администратор» получает все 6 ключей
Найти seed/bootstrap скрипт для создания системной роли «Администратор»
Добавить все 6 ключей gensvc.* в набор permissions системной роли
Если seed уже выполнен для существующих франшиз — написать SQL-миграцию, которая добавляет эти ключи к существующим системным ролям «Администратор»
SQL-миграция для существующих данных
Если в продакшене уже созданы франшизы — системная роль «Администратор» там уже существует и не пересоздаётся при деплое. Нужна отдельная data-migration:
-- Пример (точный запрос зависит от схемы User Service)INSERT INTO role_permissions (role_id, permission_key)SELECT r.id, p.keyFROM roles rCROSS JOIN (VALUES ('gensvc.access'), ('gensvc.photo.create'), ('gensvc.history.read'), ('gensvc.history.read.all'), ('gensvc.delete'), ('gensvc.preset.admin')) AS p(key)WHERE r.is_system = true AND r.name = 'Администратор' AND NOT EXISTS ( SELECT 1 FROM role_permissions rp WHERE rp.role_id = r.id AND rp.permission_key = p.key );
4. Проверка интеграции с Auth Service
После выполнения п.1-3: войти в систему как тестовый сотрудник с gensvc.* ролью
Вызвать POST /internal/auth/validate с его токеном
Убедиться что permissions[] содержит назначенные gensvc.* ключи