Task #6066
openGET /api/dialogs/ — 500: Null value read for non-null constructor argument [description] of Dialog
0%
Description
Симптом
GET https://onerm.fun/api/dialogs/ (Authorization: <user jwt>)
=> 500
"Internal Server Error: Null value read for non-null constructor argument [description] of type: com.onerm.domains.messaging.dialogs.common.models.Dialog"
Причина
Dialog.description объявлен как non-null String, но в БД встречаются строки с description = NULL (в схеме dialogs.description изначально not null, но в проде ограничение фактически не соблюдается / данные созданы вне модели). При маппинге результата запроса DialogsPgRepository.findAllByUser Micronaut Data падает на non-null конструкторе.
Исправление
Dialog.description: String? = nullDialogDto.description: String? = null- Миграция
V134__20260823__drop_not_null_from_dialogs_description.sql—alter table dialogs alter column description drop not null; - Регрессионный тест
DialogsControllerTest.dialogsIndexWorksForUsersWhenDialogHasNoDescription— диалог сdescription = nullотдаётся в индексе с HTTP 200.
Updated by Redmine Admin 3 days ago
Тесты прогнаны локально: 527 тестов, все тесты по диалогам зелёные, включая новый регрессионный DialogsControllerTest.dialogsIndexWorksForUsersWhenDialogHasNoDescription.
Оставшиеся 67 падений — окружение, к этой правке отношения не имеют: отсутствуют локальные файлы кредов (./test_iiko_server_auth.json — 50 шт., yandex_authorized_keys.json, tmp/mock/...) и обращения к внешним API, которые отдают HTML вместо JSON (Bitrix24, Unisender, Checkoffice).