-- ChatScript Veritabanı Şeması
-- Çok kiracılı ChatAI sistemi için tam veritabanı yapısı

CREATE DATABASE IF NOT EXISTS chatscript_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE chatscript_db;

-- Documents tablosu - site içeriği ve dokümanlar
CREATE TABLE documents (
    id INT PRIMARY KEY AUTO_INCREMENT,
    site_id INT NOT NULL,
    type ENUM('page', 'post', 'product', 'category', 'custom') NOT NULL,
    title VARCHAR(500) NOT NULL,
    content LONGTEXT,
    url VARCHAR(1000),
    meta_data JSON,
    embedding_vector JSON,
    embedding_model VARCHAR(50) DEFAULT 'text-embedding-ada-002',
    indexed_at TIMESTAMP NULL,
    status ENUM('active', 'inactive', 'processing') DEFAULT 'active',
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    FOREIGN KEY (site_id) REFERENCES sites(id) ON DELETE CASCADE,
    INDEX idx_site_type (site_id, type),
    INDEX idx_site_status (site_id, status),
    INDEX idx_indexed (indexed_at),
    FULLTEXT idx_content (title, content)
);

-- Products tablosu - WooCommerce entegrasyonu için
CREATE TABLE products (
    id INT PRIMARY KEY AUTO_INCREMENT,
    site_id INT NOT NULL,
    external_id VARCHAR(100),
    name VARCHAR(500) NOT NULL,
    description LONGTEXT,
    short_description TEXT,
    price DECIMAL(10,2),
    sale_price DECIMAL(10,2),
    stock_quantity INT DEFAULT 0,
    sku VARCHAR(100),
    categories JSON,
    tags JSON,
    images JSON,
    attributes JSON,
    status ENUM('active', 'inactive', 'out_of_stock') DEFAULT 'active',
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    FOREIGN KEY (site_id) REFERENCES sites(id) ON DELETE CASCADE,
    INDEX idx_site_status (site_id, status),
    INDEX idx_sku (sku),
    INDEX idx_external (external_id),
    FULLTEXT idx_product_content (name, description, short_description)
);

-- Sessions tablosu - kullanıcı sohbet oturumları
CREATE TABLE sessions (
    id VARCHAR(64) PRIMARY KEY,
    site_id INT NOT NULL,
    user_identifier VARCHAR(255),
    ip_address VARCHAR(45),
    user_agent TEXT,
    language VARCHAR(10) DEFAULT 'tr',
    context_data JSON,
    started_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    last_activity_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    status ENUM('active', 'ended') DEFAULT 'active',
    FOREIGN KEY (site_id) REFERENCES sites(id) ON DELETE CASCADE,
    INDEX idx_site_activity (site_id, last_activity_at),
    INDEX idx_user (user_identifier),
    INDEX idx_status (status)
);

-- Analytics tablosu - istatistikler
CREATE TABLE analytics (
    id INT PRIMARY KEY AUTO_INCREMENT,
    site_id INT NOT NULL,
    date DATE NOT NULL,
    metric_type VARCHAR(50) NOT NULL,
    metric_value BIGINT DEFAULT 0,
    metadata JSON,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (site_id) REFERENCES sites(id) ON DELETE CASCADE,
    UNIQUE KEY unique_site_date_metric (site_id, date, metric_type),
    INDEX idx_site_date (site_id, date),
    INDEX idx_metric_type (metric_type)
);

-- FAQ tablosu - sık sorulan sorular
CREATE TABLE faqs (
    id INT PRIMARY KEY AUTO_INCREMENT,
    site_id INT NOT NULL,
    question TEXT NOT NULL,
    answer LONGTEXT NOT NULL,
    category VARCHAR(100),
    usage_count INT DEFAULT 0,
    auto_generated BOOLEAN DEFAULT FALSE,
    status ENUM('active', 'inactive', 'pending') DEFAULT 'active',
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    FOREIGN KEY (site_id) REFERENCES sites(id) ON DELETE CASCADE,
    INDEX idx_site_status (site_id, status),
    INDEX idx_category (category),
    FULLTEXT idx_question_answer (question, answer)
);

-- Cache tablosu - yanıt önbelleği
CREATE TABLE cache (
    id VARCHAR(128) PRIMARY KEY,
    site_id INT NOT NULL,
    key_hash VARCHAR(64) NOT NULL,
    data LONGTEXT NOT NULL,
    expires_at TIMESTAMP NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (site_id) REFERENCES sites(id) ON DELETE CASCADE,
    INDEX idx_site_key (site_id, key_hash),
    INDEX idx_expires (expires_at)
);

-- Test içeriği ekle
INSERT INTO documents (site_id, type, title, content, url, status) VALUES 
(1, 'page', 'Hakkımızda', 'Bu test sitesi ChatAI sistemi için oluşturulmuştur. Yapay zeka destekli müşteri hizmetleri sunuyoruz.', '/hakkimizda', 'active'),
(1, 'page', 'İletişim', 'Bizimle iletişime geçmek için info@localhost adresini kullanabilirsiniz.', '/iletisim', 'active'),
(1, 'page', 'Hizmetler', 'AI chatbot, müşteri desteği, otomatik yanıtlama sistemleri sunuyoruz.', '/hizmetler', 'active');

-- Test ürünleri ekle
INSERT INTO products (site_id, name, description, price, stock_quantity, sku, status) VALUES 
(1, 'ChatAI Premium', 'Gelişmiş yapay zeka sohbet sistemi', 299.99, 100, 'CHATAI-PREM', 'active'),
(1, 'ChatAI Basic', 'Temel yapay zeka sohbet sistemi', 99.99, 50, 'CHATAI-BASIC', 'active'),
(1, 'Custom Integration', 'Özel entegrasyon hizmeti', 499.99, 10, 'CUSTOM-INT', 'active');

-- Test FAQ'lar ekle
INSERT INTO faqs (site_id, question, answer, category, status) VALUES 
(1, 'ChatAI nasıl çalışır?', 'ChatAI, OpenAI GPT teknolojisi kullanarak sitenizin içeriğini analiz eder ve ziyaretçilerinize akıllı yanıtlar verir.', 'genel', 'active'),
(1, 'Fiyatlandırma nasıl?', 'Temel paket 99.99 TL, Premium paket 299.99 TL. Özel entegrasyon için 499.99 TL.', 'fiyat', 'active'),
(1, 'Kurulum ne kadar sürer?', 'Standart kurulum 1-2 saat, özel entegrasyonlar 1-3 gün içinde tamamlanır.', 'teknik', 'active');