feat(ux): implement sprint 11 user experience module

This commit is contained in:
sdarbinyan
2026-07-09 01:13:54 +04:00
parent 1a8f916942
commit 92e1bdaff8
59 changed files with 2062 additions and 25 deletions

View File

@@ -0,0 +1,173 @@
# Sprint 11 - User Experience Module Report
## Scope
Implemented reusable customer experience capabilities for marketplace storefront UX while preserving established architecture constraints.
Implemented features:
- Wishlist (guest local storage + architecture-ready repository contract)
- Compare (configurable max count, reusable comparison table, compare page)
- Recently Viewed (auto tracking + reusable strip + widget compatibility)
- Continue Browsing (persist/restore filters, sort, page, scroll)
- Saved Searches (architecture + UI integration)
- Product Sharing (Web Share + clipboard fallback)
- Product Card action preparation without duplication
- Floating notifications and heart animation
## Architectural Constraints Compliance
Confirmed constraints:
- No modifications to authentication, payment, bootstrap loading flow, widget engine core, section engine core.
- No direct HttpClient usage in UI feature components.
- Product data path remains facade-driven.
- Existing ProductFacade contracts preserved (only UX facade added separately).
- Bootstrap contains feature configuration only; no business/user data payload.
## Implemented Modules and Components
### Core Domain and Repository Contracts
Added:
- src/app/core/user-experience/models/user-experience.model.ts
- src/app/core/user-experience/repositories/user-experience.repository.ts
- src/app/core/user-experience/repositories/local-user-experience.repository.ts
- src/app/core/user-experience/user-experience-repository.token.ts
- src/app/facades/platform/user-experience.facade.ts
Purpose:
- Create domain entities: FavoriteItem, ComparedProduct, RecentlyViewedItem, SavedSearch, ContinueBrowsingState.
- Provide repository abstraction for future authenticated backend synchronization.
- Implement guest mode via localStorage repository.
### Bootstrap Config Extensions
Added:
- src/app/shared/models/config/user-experience-config.model.ts
Updated:
- src/app/shared/models/config/bootstrap-config.model.ts
- src/app/shared/models/config/index.ts
- src/assets/mock/bootstrap/bootstrap.json
New bootstrap block:
- userExperience.wishlist
- userExperience.compare
- userExperience.recentlyViewed
- userExperience.share
- userExperience.continueBrowsing
- userExperience.savedSearches
### Wishlist
Added:
- src/app/features/website/user-experience/wishlist/containers/wishlist-page.component.ts
- src/app/features/website/user-experience/wishlist/containers/wishlist-page.component.html
- src/app/features/website/user-experience/wishlist/containers/wishlist-page.component.scss
Integrated:
- Header badge + counter in header component.
- Route: /wishlist.
### Compare
Added:
- src/app/features/website/user-experience/compare/components/compare-table.component.ts
- src/app/features/website/user-experience/compare/components/compare-table.component.html
- src/app/features/website/user-experience/compare/components/compare-table.component.scss
- src/app/features/website/user-experience/compare/containers/compare-page.component.ts
- src/app/features/website/user-experience/compare/containers/compare-page.component.html
- src/app/features/website/user-experience/compare/containers/compare-page.component.scss
Integrated:
- Route: /compare.
- Configurable max items from bootstrap userExperience.compare.maxItems.
- Hide-identical and highlight-differences controls.
- Responsive table wrapper.
### Recently Viewed
Added:
- src/app/features/website/user-experience/components/recently-viewed-strip/recently-viewed-strip.component.ts
- src/app/features/website/user-experience/components/recently-viewed-strip/recently-viewed-strip.component.html
- src/app/features/website/user-experience/components/recently-viewed-strip/recently-viewed-strip.component.scss
- src/app/widgets/ui/recently-viewed-widget.component.ts
Integrated:
- Auto-tracking in product details container after product load.
- Widget compatibility via widget registry bootstrap + manifest.
Updated widget integration:
- src/app/widgets/ui/index.ts
- src/app/widgets/registry/widget-registry.bootstrap.service.ts
- src/app/widgets/resolvers/data-source-resolver.service.ts
- src/assets/mock/bootstrap/widget-manifest.json
### Continue Browsing + Saved Searches
Integrated in catalog container:
- Persist selected filters, sort, page, layout, and scroll position.
- Restore state automatically on entry when route has no explicit category/query.
- Save current search and reuse/delete saved searches.
Updated:
- src/app/features/website/catalog/containers/catalog-container.component.ts
- src/app/features/website/catalog/containers/catalog-container.component.html
- src/app/features/website/catalog/containers/catalog-container.component.scss
### Product Sharing and Product Card Actions
Added:
- src/app/features/website/user-experience/services/product-share.service.ts
Updated Product Card to reusable actions (without duplication):
- src/app/components/product-card/product-card.component.ts
- src/app/components/product-card/product-card.component.html
- src/app/components/product-card/product-card.component.scss
Updated catalog grid/result propagation:
- src/app/features/website/catalog/components/product-grid/product-grid.component.ts
- src/app/features/website/catalog/components/product-grid/product-grid.component.html
- src/app/features/website/catalog/components/search-results/search-results.component.ts
- src/app/features/website/catalog/components/search-results/search-results.component.html
### UI/Animation/Notification Enhancements
Added:
- src/app/features/website/user-experience/services/user-notification.service.ts
- src/app/features/website/user-experience/components/floating-notifications/floating-notifications.component.ts
- src/app/features/website/user-experience/components/floating-notifications/floating-notifications.component.html
- src/app/features/website/user-experience/components/floating-notifications/floating-notifications.component.scss
Integrated globally in app shell:
- src/app/app.ts
- src/app/app.html
Heart animation:
- Added active pulse animation in product card favorite action.
### Routes and Header
Updated:
- src/app/app.routes.ts (wishlist/compare routes)
- src/app/components/header/header.component.ts
- src/app/components/header/header.component.html
- src/app/components/header/header.component.scss
### Localization
Updated translation contract and locale dictionaries:
- src/app/i18n/translations.ts
- src/app/i18n/en.ts
- src/app/i18n/ru.ts
- src/app/i18n/hy.ts
## Documentation Updates
Updated to include Sprint 11 bootstrap and backend contract expectations:
- docs/platform/02-bootstrap-json-spec.md
- docs/platform/06-api-contracts.md
- docs/platform/13-backend-requirements.md
- docs/backend-platform/business-apis.md
## Validation
Executed:
- npm run build
- npm run arch:check:boundaries
- npm run arch:check:cycles
Results:
- Build: PASS (existing bundle budget warning remains)
- Architecture boundaries: PASS
- Circular dependencies: PASS
## Notes
- Guest mode is fully functional using local storage.
- Authenticated synchronization is prepared by repository contracts and can be implemented via alternate repository provider without changing feature UI components.
- Bootstrap remains configuration-only and contains no user/business lists for wishlist/compare/recently viewed/saved searches.