Solutech Engineering
Innovations/Suggested Products

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=90

Core Algorithm Settings

Analysis Window Configuration

'suggested_products_window_in_months' => 24

Description: 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.1

Description: Minimum frequency threshold for item sets to be considered frequent.

Formula: Support = (Transactions containing itemset) / (Total transactions)

Configuration Guide:

Business TypeRecommended SupportReasoning
Large Catalog (>10,000 products)0.05 - 0.08More products need lower threshold
Medium Catalog (1,000-10,000)0.1 - 0.15Balanced approach
Small Catalog (<1,000)0.15 - 0.25Higher threshold for quality
Specialized/Niche0.2 - 0.3Focus on strong patterns

Confidence Threshold

'suggested_products_confidence_support' => 0.5

Description: Minimum confidence level for association rules.

Formula: Confidence = Support(A ∪ B) / Support(A)

Configuration Guide:

Use CaseRecommended ConfidenceResult
Conservative Recommendations0.7 - 0.9High accuracy, fewer suggestions
Balanced Approach0.5 - 0.7Good balance of accuracy and coverage
Exploratory Recommendations0.3 - 0.5More suggestions, lower accuracy
Discovery Mode0.2 - 0.3Maximum 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' => 30

Memory Limit Guidelines:

Dataset SizeCustomersRecommended MemoryChunk Size
Small<1,000512M50
Medium1,000-10,0001G30
Large10,000-100,0002G20
Very Large100,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 limit

Recommended 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 override

Orders 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' => 3

Limit Configuration by Business Type:

Business TypeMax SuggestionsMin OrdersReasoning
Retail10-152Quick decision making
B2B Manufacturing20-305Complex purchasing
Wholesale25-403Bulk ordering
Services5-103Focused offerings

Recent Orders Configuration

'order_cycles_when_configuring_recent_suggested_products' => 5
'suggested_products_filter_days' => null
'prefer_suggested_orders_from_recent_orders' => false

Configuration 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' => 15

Performance Impact:

SettingSmall DataLarge DataVery Large Data
Report Limit1005025
Export Batch50001000500
Pagination251510

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-products

This 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.