BUG-026: Декомпозиция
Минимальный фикс серверной валидации длины stores.name. Скоуп — только поле name, остальные строковые поля (phone, city, email, timezone) заводятся отдельными finding’ами по мере необходимости (см. секцию «Out of scope» в Баг).
Код
Store Service (erp-store-service)
-
src/main/java/com/erp/store/dto/request/UpdateStoreRequest.java— добавить@Size(max = 255, message = "name must not exceed 255 characters")над полемname. Импортjakarta.validation.constraints.Size. -
src/main/java/com/erp/store/dto/request/CreateStoreRequest.java— добавить тот же@Size(max = 255, message = "name must not exceed 255 characters")рядом с существующим@NotBlank. -
mvn compile -q -DskipTests— проверить компиляцию (JDK 21). - Контроллер
PublicStoreController:69— не трогаем,@Validуже стоит. -
GlobalExceptionHandler— не трогаем, handlerMethodArgumentNotValidException → 400 VALIDATION_ERRORуже работает.
Admin Franchise (web/bff)
Не требуется. web/src/pages/stores/EditPage.tsx:198 и CreatePage.tsx:156 уже имеют maxLength={255} на инпуте name. Обработка errors.name рядом с полем уже работает (EditPage.tsx:199).
Спеки
-
03-Services/Store Service/API.md— секцияPOST /storesRequest Body: указатьname: string, required, max length 255+ пометка*(Уточнено в [[07-Tasks/Bugs/BUG-026 Store name PATCH POST 500 на длинной строке/Баг|BUG-026]])* -
03-Services/Store Service/API.md— секцияPATCH /stores/{id}Request Body: указатьname: string, optional, max length 255+ та же пометка
Тест
- Negative:
PATCH /stores/{id}сname256+ символов → ожидаем 400 VALIDATION_ERROR сdetails:[{field:"name", message:"name must not exceed 255 characters"}] - Positive:
PATCH /stores/{id}сname255 символов → 200 OK - Regression: имена обычной длины (1-100 символов) — поведение не меняется
Деплой
- Один сервис:
erp-store-service - Триггер:
gh workflow run -R nearbyErp/erp-store-serviceпослеgit pushна main (по команде пользователя)