feat(ux): implement sprint 11 user experience module
This commit is contained in:
@@ -56,6 +56,7 @@ Bootstrap JSON является главным конфигурационным
|
||||
- footer
|
||||
- catalog
|
||||
- productPage
|
||||
- userExperience
|
||||
- staticPages
|
||||
- widgetRegistry
|
||||
- visibility
|
||||
@@ -100,6 +101,24 @@ Bootstrap JSON является главным конфигурационным
|
||||
- productPage.tabs.items: array (description/specifications/reviews/questions/delivery/warranty)
|
||||
- productPage.relatedProducts.enabled: boolean
|
||||
|
||||
### User Experience Config (опционально)
|
||||
- userExperience.wishlist.enabled: boolean
|
||||
- userExperience.wishlist.headerBadgeEnabled: boolean
|
||||
- userExperience.compare.enabled: boolean
|
||||
- userExperience.compare.maxItems: number
|
||||
- userExperience.compare.hideIdenticalDefault: boolean
|
||||
- userExperience.compare.highlightDifferencesDefault: boolean
|
||||
- userExperience.recentlyViewed.enabled: boolean
|
||||
- userExperience.recentlyViewed.maxItems: number
|
||||
- userExperience.recentlyViewed.widgetEnabled: boolean
|
||||
- userExperience.share.enabled: boolean
|
||||
- userExperience.continueBrowsing.enabled: boolean
|
||||
- userExperience.savedSearches.enabled: boolean
|
||||
- userExperience.savedSearches.maxItems: number
|
||||
|
||||
Правило:
|
||||
- Для userExperience допускаются только feature-конфиги (flags/limits/default behaviors), без пользовательских списков (wishlist/compare/recentlyViewed/saved searches) и без product payloads.
|
||||
|
||||
## Пример полного минимального bootstrap
|
||||
```json
|
||||
{
|
||||
|
||||
@@ -50,6 +50,27 @@
|
||||
- Backend may introduce new sort IDs via bootstrap `catalog.availableSorts`.
|
||||
- Frontend must render unknown sort keys safely if label mapping is provided.
|
||||
|
||||
## User Experience API Expectations (architecture-ready)
|
||||
- Wishlist (authenticated mode, future-ready):
|
||||
- GET /me/wishlist
|
||||
- POST /me/wishlist
|
||||
- DELETE /me/wishlist/{itemId}
|
||||
- Compare list (optional sync for authenticated mode):
|
||||
- GET /me/compare
|
||||
- POST /me/compare
|
||||
- DELETE /me/compare/{itemId}
|
||||
- Saved searches:
|
||||
- GET /me/saved-searches
|
||||
- POST /me/saved-searches
|
||||
- DELETE /me/saved-searches/{id}
|
||||
- Recently viewed sync (optional):
|
||||
- GET /me/recently-viewed
|
||||
- POST /me/recently-viewed
|
||||
|
||||
Правила:
|
||||
- Guest mode может хранить UX данные локально (local storage) без backend-запросов.
|
||||
- UI не вызывает HttpClient напрямую: Feature -> Facade -> Repository/Provider.
|
||||
|
||||
## Пример API ответа: категории
|
||||
```json
|
||||
{
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
- Выдача навигации, статических страниц и feature flags.
|
||||
- Product Engagement API для рейтинга, отзывов и вопросов.
|
||||
- Advanced Search API для keyword/suggestions/filter metadata/sorting.
|
||||
- User Experience API (future-ready): wishlist/compare/saved-searches/recently-viewed sync for authenticated users.
|
||||
|
||||
### Контракт статических страниц
|
||||
Backend должен поддерживать формат:
|
||||
@@ -48,6 +49,19 @@ Backend должен поддерживать формат:
|
||||
- GET /search/suggestions?q={term} (future-ready)
|
||||
- GET /catalog/filters?category={id}&q={term} (future-ready)
|
||||
|
||||
## User Experience endpoints (future-ready)
|
||||
- GET /me/wishlist
|
||||
- POST /me/wishlist
|
||||
- DELETE /me/wishlist/{itemId}
|
||||
- GET /me/compare
|
||||
- POST /me/compare
|
||||
- DELETE /me/compare/{itemId}
|
||||
- GET /me/saved-searches
|
||||
- POST /me/saved-searches
|
||||
- DELETE /me/saved-searches/{id}
|
||||
- GET /me/recently-viewed
|
||||
- POST /me/recently-viewed
|
||||
|
||||
## Catalog bootstrap contract expectations
|
||||
- Backend should populate `catalog.availableSorts` and `catalog.enabledFilters`.
|
||||
- Backend should not include product list or filter results inside bootstrap.
|
||||
|
||||
Reference in New Issue
Block a user