4.0 KiB
Search Intelligence Engine - Sprint 12
Scope
Sprint 12 introduces a standalone Search Feature architecture reusable across marketplaces.
Constraints respected:
- No authentication changes
- No payment changes
- No runtime bootstrap changes
- No Widget Manifest changes
- No Section Engine changes
- No Product/Catalog business rule changes
Architecture
src/app/features/search/
components/
search-bar/
trending-searches/
empty-results/
services/
search-autocomplete.service.ts
search-history.service.ts
search-history.repository.ts
search-trending.service.ts
search-cache.service.ts
search-analytics.service.ts
facade/
search.facade.ts
models/
search.model.ts
search-state.model.ts
store/
search.store.ts
utils/
search-query-key.util.ts
Legacy compatibility kept:
src/app/facades/platform/search.facade.tsnow re-exports feature facadesrc/app/core/search/models/*re-export feature modelssrc/app/core/search/services/search-history.service.tsre-exports feature history service
Facade API
Search UI communicates through SearchFacade:
search(query)loadCatalog(query)suggestions(query, products, categories, limit)autocomplete(query, products, categories, limit)getSearchHistory()pushSearchHistory(term, maxHistory)clearSearchHistory()trending()- existing helpers reused by catalog: filters, sorting, pagination, query params
State Model
Managed in SearchStore:
- current query
- loading
- results
- suggestions
- recent searches
- popular searches
- selected filters
- current sort
- current page
- total results
Compatibility aliases preserved for existing catalog integration.
Suggestion Model
Each suggestion includes:
typetitlesubtitleicontarget
Supported suggestion types:
- product
- category
- brand
- collection
- seller
- static-page
- ai
Autocomplete
Behavior:
- Debounced typing (
debounceTime) - Previous request cancellation (
switchMap) - Distinct query suppression (
distinctUntilChanged) - Suggestion state controlled by facade/store
Current source:
- In-memory products/categories/tags
Future-ready for backend endpoint:
- autocomplete service can switch to API provider without UI changes
Search History
Abstraction:
SearchHistoryRepositoryLocalSearchHistoryRepositoryfor guest usersBackendSearchHistoryRepositoryplaceholder for logged users
Behavior:
- Newest first
- Configurable max length
- Clear history support
Trending Searches
SearchTrendingService contract introduced.
Current behavior:
- Returns
nullwhen endpoint unavailable - UI hides trending block gracefully
Empty Results UX
Reusable empty state supports:
- no results messaging
- popular categories
- popular searches
- recommended products
- reset filters action
Filters and Sorting Reuse
No duplicated filter/sort engines.
Search facade reuses existing catalog filter metadata generation, filter application, and sort application pathways.
Search Bar UX
Reusable SearchBarComponent supports:
- ESC closes suggestions/overlay
- arrow navigation
- Enter opens highlighted suggestion
- mouse selection
- loading indicator
- clear button
- mobile fullscreen overlay with large touch targets
Performance
Implemented:
- debounce
- switch-map cancellation
- duplicate suppression
- query-result cache for repeated searches
Analytics Architecture
SearchAnalyticsService provides event factory only.
Event shape:
- query
- tenant
- language
- timestamp
- result count
No analytics transport implementation in Sprint 12.
Configuration and Extension Points
Extension points:
- replace history repository with backend endpoint
- replace trending provider with backend endpoint
- replace autocomplete provider with API or AI provider
- enrich suggestion mapper with static pages/sellers/collections sources
Responsiveness and Accessibility
- Desktop suggestion dropdown behavior
- Mobile fullscreen overlay behavior
- ARIA labels and keyboard navigation
- touch target sizing in mobile mode