CREATE TABLE saas_ai_bots (
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
user_id BIGINT UNSIGNED NOT NULL,
name VARCHAR(255) NOT NULL,
api_key VARCHAR(100) NOT NULL,
provider VARCHAR(50) DEFAULT 'openai',
provider_api_key TEXT,
model VARCHAR(100) DEFAULT 'gpt-4o-mini',
temperature DECIMAL(3,2) DEFAULT 0.50,
max_tokens INT DEFAULT 1024,
prompt_persona TEXT,
prompt_task TEXT,
prompt_context TEXT,
prompt_format TEXT,
ui_title VARCHAR(100) DEFAULT 'AI Assistant',
ui_welcome_msg VARCHAR(255) DEFAULT 'Hello! How can I help you today?',
ui_placeholder VARCHAR(100) DEFAULT 'Type a message...',
ui_color VARCHAR(20) DEFAULT '#1677ff',
ui_bg_color VARCHAR(20) DEFAULT '#FFFFFF',
ui_text_color VARCHAR(20) DEFAULT '#333333',
ui_btn_text VARCHAR(50) DEFAULT 'Send',
ui_pos_bottom VARCHAR(20) DEFAULT '20px',
ui_pos_right VARCHAR(20) DEFAULT '20px',
ui_trigger_icon VARCHAR(255) DEFAULT '💬',
ui_trigger_bg_transparent TINYINT(1) DEFAULT 0,
ui_trigger_border_radius VARCHAR(20) DEFAULT '50%',
ui_clear_on_close TINYINT(1) DEFAULT 0,
ui_pre_chat_form TINYINT(1) DEFAULT 0,
ui_pre_chat_msg VARCHAR(255),
ui_pre_chat_name_label VARCHAR(100),
ui_pre_chat_phone_label VARCHAR(100),
admin_timeout_mins INT DEFAULT 15,
history_limit INT DEFAULT 5,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (id),
UNIQUE KEY uk_api_key (api_key),
KEY idx_user (user_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE saas_ai_channels (
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
bot_id BIGINT UNSIGNED NOT NULL,
channel_type VARCHAR(50) NOT NULL,
channel_name VARCHAR(255) NOT NULL,
is_active TINYINT(1) DEFAULT 1,
config JSON NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id),
KEY idx_bot (bot_id),
KEY idx_channel_type (channel_type),
CONSTRAINT fk_channels_bot
FOREIGN KEY (bot_id)
REFERENCES saas_ai_bots(id)
ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE saas_ai_logs (
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
bot_id BIGINT UNSIGNED NOT NULL,
session_id VARCHAR(100) NOT NULL,
role ENUM('user','bot','admin') NOT NULL,
content LONGTEXT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id),
KEY idx_bot (bot_id),
KEY idx_session (session_id),
KEY idx_created (created_at),
CONSTRAINT fk_logs_bot
FOREIGN KEY (bot_id)
REFERENCES saas_ai_bots(id)
ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE saas_ai_rag (
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
bot_id BIGINT UNSIGNED NOT NULL,
title VARCHAR(255) NOT NULL,
source_type VARCHAR(50) NOT NULL,
content LONGTEXT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id),
KEY idx_bot (bot_id),
CONSTRAINT fk_rag_bot
FOREIGN KEY (bot_id)
REFERENCES saas_ai_bots(id)
ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE saas_ai_session_stats (
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
bot_id BIGINT UNSIGNED NOT NULL,
session_id VARCHAR(100) NOT NULL,
start_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
first_admin_time TIMESTAMP NULL,
last_admin_time TIMESTAMP NULL,
admin_msg_count INT DEFAULT 0,
is_emailed TINYINT(1) DEFAULT 0,
PRIMARY KEY (id),
UNIQUE KEY uk_session (session_id),
KEY idx_bot (bot_id),
CONSTRAINT fk_stats_bot
FOREIGN KEY (bot_id)
REFERENCES saas_ai_bots(id)
ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE saas_ai_leads (
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
bot_id BIGINT UNSIGNED NOT NULL,
session_id VARCHAR(100) NOT NULL,
customer_name VARCHAR(255) NOT NULL,
customer_phone VARCHAR(50) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id),
KEY idx_bot (bot_id),
KEY idx_phone (customer_phone),
CONSTRAINT fk_leads_bot
FOREIGN KEY (bot_id)
REFERENCES saas_ai_bots(id)
ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;