BUG-019: 500 на списке юр. лиц после BR 1.4.4

Описание

После деплоя BR 1.4.4 (удаление enum, scope-based авторизация) при открытии вкладки «ТТ» (которая запрашивает список ЮЛ) под пользователем admin@erp.local — сервер возвращает 500.

Шаги воспроизведения

  1. Залогиниться как admin@erp.local / admin123
  2. Открыть любую страницу, которая вызывает GET /api/v1/admin/legal-entities?per_page=100
  3. Наблюдать 500

Запрос

GET https://erp-test.nirbi.ru/api/v1/admin/legal-entities?per_page=100
Status: 500 Internal Server Error
{
    "statusCode": 500,
    "error": "Internal Server Error",
    "message": "Unexpected end of JSON input"
}

Ожидаемое поведение

200 OK с массивом юридических лиц.

Фактическое поведение

500 Internal Server Error. Сообщение «Unexpected end of JSON input» указывает что Admin BFF получил пустой или обрезанный ответ от User Service.

Анализ

Вероятная причина: BR 1.4.4 переписал авторизацию в LegalEntityService с switch(user.getRole()) на scope-check через ScopeService. Возможные проблемы:

  1. ScopeService.computeScope() для admin@erp.local может падать: сотрудник является owner_user_id главного ЮЛ, но query legal_entities WHERE owner_user_id = ? AND deleted_at IS NULL может не найти запись (если deleted_at условие не совпадает, или FK-join с franchises ломается)
  2. LegalEntityService.list() — scope-check после рефакторинга может бросать необработанное исключение
  3. JwtAuthenticationFilter в User Service — делегирует в Auth Service, но если Auth Service возвращает scope=null или неожиданный формат — NPE
  4. BFF routes/legal-entities.ts — proxy получает от User Service ответ с ошибкой (не JSON) → JSON.parse падает → «Unexpected end of JSON input»

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

СервисПроблема
User ServiceВероятно LegalEntityService или ScopeService или JwtAuthenticationFilter
Admin BFFПоказывает ошибку «Unexpected end of JSON input» — proxy не обрабатывает non-JSON ответ
Auth ServiceЕсли validate endpoint возвращает некорректный scope