BR 2.6 — User Service

Репозиторий

nearbyErp/erp-user-service

Контекст

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.accessAI СтудияБазовый доступ к сервису AI Студии
gensvc.photo.createAI СтудияСоздание заданий на генерацию фото
gensvc.history.readAI СтудияПросмотр своей истории заданий
gensvc.history.read.allAI СтудияПросмотр истории всех сотрудников
gensvc.deleteAI СтудияУдаление заданий
gensvc.preset.adminAI СтудияУправление системными пресетами
  • Убедиться что 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.key
FROM roles r
CROSS 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.* ключи

Связанные контракты

Ссылки