BUG-017: Декомпозиция
Баг 1: GET 404 → пустой объект
User Service (erp-user-service)
-
LegalDetailsService.get(): вместо 404 при отсутствии записи возвращать 200 с пустым объектом (все поля null)// Было: .orElseThrow(() -> new ApiException("LEGAL_DETAILS_NOT_FOUND", ...)) // Стало: .orElse(EmployeeLegalDetails.builder().employeeId(employeeId).build())
Баг 2: PUT 500 — несовпадение полей
Admin Web (erp-admin/web)
-
ViewPage.tsxвкладка “Юридические детали”: исправить имена полей формы:passport→ разделить наpassport_series(4 цифры) +passport_number(6 цифр) — два отдельных inputdriver_license→driver_license_numberinn— оставить, но добавить валидацию: ровно 12 цифр (физлицо)- Добавить поле
driver_license_expiry(date input) — отсутствует на форме
Shared Types (erp-admin/shared)
- Проверить что
UpsertLegalDetailsRequestв shared types совпадает с бэкенд DTO (passport_series, passport_number, driver_license_number, driver_license_expiry, inn, snils)
Тестирование
- GET legal-details для сотрудника без данных → 200 с null полями
- PUT legal-details с правильными полями → 200, данные сохранены
- GET после PUT → 200 с заполненными полями
- PUT с невалидным inn (10 цифр) → 400 VALIDATION_ERROR
- PUT с невалидным snils → 400 VALIDATION_ERROR