You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Поля DTO бэкенда не совпадают 1:1 с моделями клиента (firstname/lastname vs firstName/lastName), бэкенд может присылать лишние поля. Сейчас это заклеено временным FAIL_ON_UNKNOWN_PROPERTIES (см. // FIXME в ApiClient), из-за чего:
firstName/lastName молча null после логина;
по-настоящему неизвестные поля тоже игнорируются — дрейф контракта не ловится.
Что сделать
Ввести явный слой мапперов DTO → entity:
UserDto → User (firstname → firstName, lastname → lastName);
ResourceDto → Resource, FileDto → FileInfo (вынести из приватных toEntity в impl'ах сервиса в отдельные мапперы);
DTO повторяет контракт бэкенда 1:1, вернуть строгий парсинг (убрать disable + // FIXME);
unit-тесты на мапперы: все поля, null-список файлов → пустой список.
Критерии приёмки
// FIXME в ApiClient удалён, строгость возвращена;
mvn verify зелёный, интеграционные против живого бэкенда зелёные.
Activity
vladcheck commentedon Oct 6, 2026
@Deatheh что думаешь?
Deatheh commentedon Oct 6, 2026
Думаю норм. Ввести mapper отличная идея
fix: явные мапперы dto в entity и строгий парсинг
fix: явные мапперы dto в entity и строгий парсинг
fix: явные мапперы dto в entity и строгий парсинг (#38)