Show More Behavior - Architecture Documentation
Table of Contents
- Overview
- System Architecture
- Data Flow
- State Management
- Normal Cases
- Edge Cases
- Context Preservation
- Performance & Optimization
- Testing Scenarios
Overview
The "Show More" feature enables users to request additional products while maintaining search context. It functions as an intelligent pagination system that:
- Preserves search parameters across requests
- Excludes previously shown products
- Maintains conversation context (budget, category, product type)
- Handles edge cases gracefully (pool exhaustion, context switches)
Key Capabilities
- Multi-language support (Estonian & English)
- Context preservation across turns
- Smart exclude list management
- Graceful degradation (fallback)
- Pool exhaustion detection
- Context switch detection
System Architecture
High-Level Component Overview
Component Responsibilities
Data Flow
Complete Request-Response Cycle
Data Flow with Edge Cases
State Management
Frontend State Transitions
Backend Context Preservation Flow
Normal Cases
Case 1: Simple Show More Chain
Case 2: Show More with Budget Refinement
Case 3: Timeline View of Product Chain
Edge Cases
Edge Case 1: Pool Exhaustion
Pool Depletion Visualization
Edge Case 2: Context Switch Detection
Edge Case 3: Exclude List Pruning
Pruning Impact Timeline
Edge Case 4: Pure Show More vs False Positive
Edge Case 5: Concurrent Requests
Context Preservation
Preservation Priority Hierarchy
Field-Specific Preservation Rules
Force Preservation Logic
Performance & Optimization
Exclude List Performance Analysis
Request Timing Breakdown
Performance Metrics
Testing Scenarios
Test Coverage Matrix
Test Execution Flow
Critical Test Scenarios
Implementation Files Reference
File Structure
Monitoring & Observability
Telemetry Dashboard Metrics
Debug Logging Flow
Future Enhancements
Enhancement Roadmap
Proposed Features
Conclusion
Feature Summary
Quality Metrics
Document Version: 1.0
Last Updated: 2025-11-16
Maintained By: Engineering Team
Related Docs: COMPREHENSIVE-FOLLOWUP-TEST-SCENARIOS.md, FALLBACK_ACKNOWLEDGMENT_FEATURE.md
Quick Reference
Critical Code Snippets
Detection:
function isShowMoreMessage(text: string): boolean {
return /(näita|rohkem|veel|more|show\s+me\s+more|next)/i.test(text);
}
Reset Logic:
if (currentIntent === 'show_more_products') return false;
if (previousProductType !== currentProductType && bothSpecific) return true;
Preservation:
const preservedCategoryHints = Array.isArray(request.lastSearchParams?.categoryHints)
? request.lastSearchParams.categoryHints // PRIORITY 1
: Array.isArray(storedContext?.giftContext?.categoryHints)
? storedContext.giftContext.categoryHints // Priority 2
: undefined;
Pruning:
if (finalExcludeIds.length > MAX_EXCLUDE_LIST_SIZE) {
finalExcludeIds = finalExcludeIds.slice(-MAX_EXCLUDE_LIST_SIZE); // Keep last 30
}