Configuration Settings
Complete configuration guide for the Suggested Products feature
Configuration Settings
The Suggested Products feature provides extensive configuration options to customize algorithm behavior, performance parameters, and business rules. This section covers all available settings and their impact on system behavior.
Configuration Files
Primary Configuration
The main configuration is stored in config/eva.php:
<?php
return [
// Core Algorithm Settings
'suggested_products_window_in_months' => env('SUGGESTED_PRODUCTS_WINDOW_MONTHS', 24),
'suggested_products_apriori_support' => env('SUGGESTED_PRODUCTS_APRIORI_SUPPORT', 0.1),
'suggested_products_confidence_support' => env('SUGGESTED_PRODUCTS_CONFIDENCE_SUPPORT', 0.5),
// Performance Settings
'suggested_products_chunk_size' => env('SUGGESTED_PRODUCTS_CHUNK_SIZE', 30),
'suggested_products_memory_limit' => env('SUGGESTED_PRODUCTS_MEMORY_LIMIT', '2G'),
'suggested_products_execution_timeout' => env('SUGGESTED_PRODUCTS_TIMEOUT', 0),
// Data Model Settings
'use_sales_order' => env('USE_SALES_ORDER', false),
'suggested_products_use_so' => env('SUGGESTED_PRODUCTS_USE_SO', false),
// Business Logic Settings
'suggested_products_limit' => env('SUGGESTED_PRODUCTS_LIMIT', 20),
'suggested_products_min_order_count' => env('SUGGESTED_PRODUCTS_MIN_ORDER_COUNT', 3),
'prefer_suggested_orders_from_recent_orders' => env('PREFER_RECENT_ORDERS', false),
// Recent Orders Configuration
'order_cycles_when_configuring_recent_suggested_products' => env('RECENT_ORDER_CYCLES', 5),
'suggested_products_filter_days' => env('SUGGESTED_PRODUCTS_FILTER_DAYS', null),
// Report Settings
'suggested_products_report_limit' => env('SUGGESTED_PRODUCTS_REPORT_LIMIT', 50),
'suggested_products_export_batch_size' => env('SUGGESTED_PRODUCTS_EXPORT_BATCH_SIZE', 1000),
// Error Handling
'suggested_products_log_level' => env('SUGGESTED_PRODUCTS_LOG_LEVEL', 'info'),
'suggested_products_error_retention_days' => env('SUGGESTED_PRODUCTS_ERROR_RETENTION_DAYS', 90),
];Environment Variables
Configure via .env file:
# Algorithm Parameters
SUGGESTED_PRODUCTS_WINDOW_MONTHS=24
SUGGESTED_PRODUCTS_APRIORI_SUPPORT=0.1
SUGGESTED_PRODUCTS_CONFIDENCE_SUPPORT=0.5
# Performance Tuning
SUGGESTED_PRODUCTS_CHUNK_SIZE=30
SUGGESTED_PRODUCTS_MEMORY_LIMIT=2G
SUGGESTED_PRODUCTS_TIMEOUT=0
# Data Sources
USE_SALES_ORDER=false
SUGGESTED_PRODUCTS_USE_SO=false
# Business Rules
SUGGESTED_PRODUCTS_LIMIT=20
SUGGESTED_PRODUCTS_MIN_ORDER_COUNT=3
PREFER_RECENT_ORDERS=false
# Recent Orders Analysis
RECENT_ORDER_CYCLES=5
SUGGESTED_PRODUCTS_FILTER_DAYS=
# Reporting
SUGGESTED_PRODUCTS_REPORT_LIMIT=50
SUGGESTED_PRODUCTS_EXPORT_BATCH_SIZE=1000
# Error Management
SUGGESTED_PRODUCTS_LOG_LEVEL=info
SUGGESTED_PRODUCTS_ERROR_RETENTION_DAYS=90Core Algorithm Settings
Analysis Window Configuration
'suggested_products_window_in_months' => 24Description: Defines how far back in time to analyze historical orders.
Impact:
- Larger values (36+ months): More comprehensive analysis, slower processing
- Smaller values (6-12 months): Faster processing, may miss seasonal patterns
- Recommended: 18-24 months for balanced performance and accuracy
Example Configuration:
// Seasonal businesses (e.g., retail)
'suggested_products_window_in_months' => 36,
// Fast-moving products (e.g., consumables)
'suggested_products_window_in_months' => 12,
// B2B with stable patterns
'suggested_products_window_in_months' => 18,Apriori Algorithm Parameters
Support Threshold
'suggested_products_apriori_support' => 0.1Description: Minimum frequency threshold for item sets to be considered frequent.
Formula: Support = (Transactions containing itemset) / (Total transactions)
Configuration Guide:
| Business Type | Recommended Support | Reasoning |
|---|---|---|
| Large Catalog (>10,000 products) | 0.05 - 0.08 | More products need lower threshold |
| Medium Catalog (1,000-10,000) | 0.1 - 0.15 | Balanced approach |
| Small Catalog (<1,000) | 0.15 - 0.25 | Higher threshold for quality |
| Specialized/Niche | 0.2 - 0.3 | Focus on strong patterns |
Confidence Threshold
'suggested_products_confidence_support' => 0.5Description: Minimum confidence level for association rules.
Formula: Confidence = Support(A ∪ B) / Support(A)
Configuration Guide:
| Use Case | Recommended Confidence | Result |
|---|---|---|
| Conservative Recommendations | 0.7 - 0.9 | High accuracy, fewer suggestions |
| Balanced Approach | 0.5 - 0.7 | Good balance of accuracy and coverage |
| Exploratory Recommendations | 0.3 - 0.5 | More suggestions, lower accuracy |
| Discovery Mode | 0.2 - 0.3 | Maximum suggestions, use with caution |
Advanced Algorithm Configuration
// Custom algorithm parameters
'suggested_products_advanced' => [
'lift_threshold' => 1.5, // Minimum lift value
'max_itemset_size' => 5, // Maximum items per set
'min_transactions_per_customer' => 3, // Minimum orders required
'exclude_single_item_orders' => true, // Skip single-product orders
'weight_recent_orders' => true, // Give more weight to recent data
'seasonal_adjustment' => false, // Apply seasonal factors
],Performance Settings
Memory Management
'suggested_products_memory_limit' => '2G'
'suggested_products_chunk_size' => 30Memory Limit Guidelines:
| Dataset Size | Customers | Recommended Memory | Chunk Size |
|---|---|---|---|
| Small | <1,000 | 512M | 50 |
| Medium | 1,000-10,000 | 1G | 30 |
| Large | 10,000-100,000 | 2G | 20 |
| Very Large | 100,000+ | 4G+ | 10 |
Optimization Examples:
// High-performance server
'suggested_products_memory_limit' => '4G',
'suggested_products_chunk_size' => 50,
'suggested_products_parallel_processing' => true,
// Resource-constrained environment
'suggested_products_memory_limit' => '512M',
'suggested_products_chunk_size' => 10,
'suggested_products_parallel_processing' => false,Execution Timeout
'suggested_products_execution_timeout' => 0 // 0 = no limitRecommended Values:
- Development: 300 (5 minutes)
- Small datasets: 600 (10 minutes)
- Large datasets: 1800 (30 minutes)
- Very large datasets: 0 (no limit)
Data Model Configuration
Sales Order Version Selection
'use_sales_order' => false // Global setting
'suggested_products_use_so' => false // Feature-specific overrideOrders v1 (Legacy):
'use_sales_order' => false,
'orders_table' => 'orders',
'order_details_table' => 'orderdetails',
'customer_id_field' => 'shop_id',
'order_id_field' => 'order_id',Orders v2 (Current):
'use_sales_order' => true,
'orders_table' => 'sales_order',
'order_details_table' => 'sales_order_details',
'customer_id_field' => 'customer_id',
'order_id_field' => 'sales_order_id',Data Filtering
'data_filters' => [
'exclude_cancelled_orders' => true,
'exclude_refunded_orders' => true,
'minimum_order_value' => 0,
'exclude_internal_customers' => true,
'valid_order_statuses' => ['completed', 'delivered', 'paid'],
'exclude_product_categories' => [99], // Internal use categories
],Business Logic Settings
Recommendation Limits
'suggested_products_limit' => 20
'suggested_products_min_order_count' => 3Limit Configuration by Business Type:
| Business Type | Max Suggestions | Min Orders | Reasoning |
|---|---|---|---|
| Retail | 10-15 | 2 | Quick decision making |
| B2B Manufacturing | 20-30 | 5 | Complex purchasing |
| Wholesale | 25-40 | 3 | Bulk ordering |
| Services | 5-10 | 3 | Focused offerings |
Recent Orders Configuration
'order_cycles_when_configuring_recent_suggested_products' => 5
'suggested_products_filter_days' => null
'prefer_suggested_orders_from_recent_orders' => falseConfiguration Strategies:
// Fast-moving consumer goods
'order_cycles_when_configuring_recent_suggested_products' => 3,
'suggested_products_filter_days' => 30,
'prefer_suggested_orders_from_recent_orders' => true,
// Industrial equipment
'order_cycles_when_configuring_recent_suggested_products' => 10,
'suggested_products_filter_days' => 180,
'prefer_suggested_orders_from_recent_orders' => false,
// Seasonal products
'order_cycles_when_configuring_recent_suggested_products' => 4,
'suggested_products_filter_days' => null, // Use cycles instead
'prefer_suggested_orders_from_recent_orders' => true,Reporting and Export Settings
Report Configuration
'suggested_products_report_limit' => 50
'suggested_products_export_batch_size' => 1000
'suggested_products_pagination_size' => 15Performance Impact:
| Setting | Small Data | Large Data | Very Large Data |
|---|---|---|---|
| Report Limit | 100 | 50 | 25 |
| Export Batch | 5000 | 1000 | 500 |
| Pagination | 25 | 15 | 10 |
Export Customization
'export_settings' => [
'include_customer_details' => true,
'include_product_details' => true,
'include_confidence_scores' => false,
'include_historical_data' => false,
'group_by_customer' => true,
'sort_by_priority' => true,
'file_format' => 'xlsx', // xlsx, csv, pdf
'max_export_rows' => 10000,
],Advanced Configuration
Seasonal Adjustments
'seasonal_factors' => [
'electronics' => [
1 => 0.8, // January
2 => 0.9, // February
3 => 1.0, // March
// ... continue for all months
11 => 1.4, // November (Black Friday)
12 => 1.5, // December (Holiday season)
],
'clothing' => [
3 => 1.2, // Spring collection
6 => 0.7, // Summer clearance
9 => 1.3, // Fall collection
12 => 1.1, // Holiday season
],
],Customer Segmentation Rules
'customer_segmentation' => [
'rfm_settings' => [
'recency_bins' => [30, 90, 180, 365], // Days
'frequency_bins' => [1, 3, 7, 15], // Order count
'monetary_bins' => [100, 500, 2000, 10000], // Currency
],
'segment_algorithms' => [
'champions' => ['r' => 4, 'f' => 4, 'm' => 4],
'loyal_customers' => ['r' => 3, 'f' => 3, 'm' => 3],
'potential_loyalists' => ['r' => 4, 'f' => 2, 'm' => 2],
'new_customers' => ['r' => 4, 'f' => 1, 'm' => 1],
'promising' => ['r' => 3, 'f' => 1, 'm' => 1],
'need_attention' => ['r' => 3, 'f' => 3, 'm' => 2],
'about_to_sleep' => ['r' => 2, 'f' => 2, 'm' => 2],
'at_risk' => ['r' => 2, 'f' => 3, 'm' => 3],
'cannot_lose_them' => ['r' => 1, 'f' => 4, 'm' => 4],
'hibernating' => ['r' => 1, 'f' => 2, 'm' => 2],
'lost' => ['r' => 1, 'f' => 1, 'm' => 1],
],
],Machine Learning Model Configuration
'ml_model_settings' => [
'cross_validation_folds' => 5,
'test_train_split' => 0.8,
'feature_selection' => [
'use_product_categories' => true,
'use_customer_segments' => true,
'use_seasonal_features' => true,
'use_price_sensitivity' => true,
],
'ensemble_methods' => [
'combine_apriori_and_recent' => true,
'weights' => [
'apriori' => 0.7,
'recent_orders' => 0.3,
],
],
],Role-Based Access Control
'roles' => [
'suggested_products' => [
'view' => ['admin', 'manager', 'analyst'],
'generate' => ['admin', 'manager'],
'export' => ['admin', 'manager', 'analyst'],
'configure' => ['admin'],
],
'suggested_products_api' => [
'read' => ['api_user', 'mobile_app'],
'write' => ['api_admin'],
],
],Environment-Specific Configurations
Development Environment
// config/eva_development.php
'suggested_products_window_in_months' => 6,
'suggested_products_chunk_size' => 10,
'suggested_products_limit' => 5,
'suggested_products_apriori_support' => 0.05,
'suggested_products_log_level' => 'debug',Production Environment
// config/eva_production.php
'suggested_products_window_in_months' => 24,
'suggested_products_chunk_size' => 50,
'suggested_products_limit' => 20,
'suggested_products_apriori_support' => 0.1,
'suggested_products_log_level' => 'warning',
'suggested_products_cache_ttl' => 3600,Testing Environment
// config/eva_testing.php
'suggested_products_window_in_months' => 3,
'suggested_products_chunk_size' => 5,
'suggested_products_limit' => 3,
'suggested_products_use_cache' => false,
'suggested_products_log_level' => 'debug',Configuration Validation
Validation Rules
class ConfigValidator
{
public function validate($config)
{
$rules = [
'suggested_products_apriori_support' => 'numeric|between:0,1',
'suggested_products_confidence_support' => 'numeric|between:0,1',
'suggested_products_window_in_months' => 'integer|between:1,60',
'suggested_products_chunk_size' => 'integer|between:1,100',
'suggested_products_limit' => 'integer|between:1,100',
];
return Validator::make($config, $rules);
}
}Configuration Health Check
php artisan eva:config-check suggested-productsThis command validates:
- Parameter value ranges
- Memory and performance settings
- Database connectivity
- Required dependencies
- Permission settings
Dynamic Configuration Updates
// Runtime configuration updates
Config::set('eva.suggested_products_limit', 30);
// Database-driven configuration
Setting::set('suggested_products_apriori_support', 0.15);
// Cache configuration for performance
Cache::put('eva_config', $config, 3600);This comprehensive configuration guide ensures optimal performance and accuracy of the Suggested Products feature across different business scenarios and technical environments.