get_charset_collate(); $table_products = $wpdb->prefix . 'aica_indexed_products'; $table_conversations = $wpdb->prefix . 'aica_conversations'; $table_analytics = $wpdb->prefix . 'aica_analytics'; $sql_products = "CREATE TABLE {$table_products} ( id bigint(20) NOT NULL AUTO_INCREMENT, product_id bigint(20) NOT NULL, content longtext NOT NULL, metadata longtext DEFAULT NULL, price decimal(10,2) DEFAULT NULL, stock_quantity int(11) DEFAULT NULL, categories varchar(255) DEFAULT NULL, embedding longtext DEFAULT NULL, last_updated datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (id), KEY product_id (product_id), KEY price (price), FULLTEXT KEY content (content) ) {$charset_collate};"; $sql_conversations = "CREATE TABLE {$table_conversations} ( id bigint(20) NOT NULL AUTO_INCREMENT, session_id varchar(100) NOT NULL, user_id bigint(20) DEFAULT NULL, message longtext NOT NULL, role varchar(20) NOT NULL, metadata longtext DEFAULT NULL, created_at datetime DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), KEY session_id (session_id), KEY user_id (user_id), KEY created_at (created_at) ) {$charset_collate};"; $sql_analytics = "CREATE TABLE {$table_analytics} ( id bigint(20) NOT NULL AUTO_INCREMENT, session_id varchar(100) NOT NULL, event_type varchar(50) NOT NULL, event_data longtext DEFAULT NULL, created_at datetime DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), KEY session_id (session_id), KEY event_type (event_type), KEY created_at (created_at) ) {$charset_collate};"; ob_start(); dbDelta( $sql_products ); dbDelta( $sql_conversations ); dbDelta( $sql_analytics ); ob_end_clean(); } /** * Default options */ private static function set_default_options() { if ( false === get_option( 'aica_settings', false ) ) { add_option( 'aica_settings', array( 'enable_widget' => 'yes', 'widget_position' => 'bottom-right', 'ai_provider' => 'openai', 'api_key' => '', 'model' => 'gpt-4o-mini', 'max_tokens' => 500, 'temperature' => 0.7, 'primary_color' => '#0066FF', 'widget_title' => __( 'AI Assistant', 'aica-smart-ai-commerce-assistant' ), 'greeting_message' => __( 'Hi! How can I help you today?', 'aica-smart-ai-commerce-assistant' ), 'enable_product_recommendations' => 'yes', 'enable_cart_actions' => 'yes', 'store_conversations' => 'yes', 'data_retention_days' => 30, ), '', false ); } } /** * Cron events */ private static function schedule_events() { if ( ! wp_next_scheduled( 'aica_reindex_products' ) ) { wp_schedule_event( time(), 'daily', 'aica_reindex_products' ); } if ( ! wp_next_scheduled( 'aica_cleanup_old_data' ) ) { wp_schedule_event( time(), 'weekly', 'aica_cleanup_old_data' ); } } /** * Check install state * * ZERO DB queries */ public static function tables_exist() { return (bool) get_option( 'aica_installed', false ); } }