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 — не трогаем, handler MethodArgumentNotValidException → 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 /stores Request 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} с name 256+ символов → ожидаем 400 VALIDATION_ERROR с details:[{field:"name", message:"name must not exceed 255 characters"}]
  • Positive: PATCH /stores/{id} с name 255 символов → 200 OK
  • Regression: имена обычной длины (1-100 символов) — поведение не меняется

Деплой

  • Один сервис: erp-store-service
  • Триггер: gh workflow run -R nearbyErp/erp-store-service после git push на main (по команде пользователя)