BUG-019: 500 на списке юр. лиц после BR 1.4.4
Описание
После деплоя BR 1.4.4 (удаление enum, scope-based авторизация) при открытии вкладки «ТТ» (которая запрашивает список ЮЛ) под пользователем admin@erp.local — сервер возвращает 500.
Шаги воспроизведения
- Залогиниться как
admin@erp.local/admin123 - Открыть любую страницу, которая вызывает
GET /api/v1/admin/legal-entities?per_page=100 - Наблюдать 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. Возможные проблемы:
- ScopeService.computeScope() для
admin@erp.localможет падать: сотрудник являетсяowner_user_idглавного ЮЛ, но querylegal_entities WHERE owner_user_id = ? AND deleted_at IS NULLможет не найти запись (еслиdeleted_atусловие не совпадает, или FK-join сfranchisesломается) - LegalEntityService.list() — scope-check после рефакторинга может бросать необработанное исключение
- JwtAuthenticationFilter в User Service — делегирует в Auth Service, но если Auth Service возвращает
scope=nullили неожиданный формат — NPE - 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 |