-- ============ TENANT (pelanggan kamu) ============
CREATE TABLE tenants (
    id INT AUTO_INCREMENT PRIMARY KEY,
    public_id VARCHAR(20) UNIQUE NOT NULL,     -- INI YANG DIPAKAI DI WIDGET: "1001", "1002"
    brand_name VARCHAR(100) NOT NULL,          -- "CAIRBOS88", "Toko Budi"
    slug VARCHAR(60) UNIQUE NOT NULL,          -- "cairbos88"
    email VARCHAR(150) UNIQUE NOT NULL,        -- login email
    password_hash VARCHAR(255) NOT NULL,
    domain VARCHAR(255) NULL,                  -- whitelist domain (opsional)
    
    -- BRANDING (bisa diubah tenant sendiri)
    logo_url VARCHAR(500) NULL,
    color VARCHAR(7) DEFAULT '#3b82f6',
    welcome_message TEXT NULL,
    quick_links JSON NULL,
    announcement TEXT NULL,
    prechat_enabled TINYINT(1) DEFAULT 1,
    prechat_fields VARCHAR(50) DEFAULT 'username',
    operating_hours VARCHAR(255) NULL,
    
    -- PLAN
    plan ENUM('free','pro','enterprise') DEFAULT 'free',
    max_agents INT DEFAULT 1,
    max_chats_month INT DEFAULT 100,
    
    -- STATUS
    status ENUM('pending','active','suspended') DEFAULT 'pending',
    email_verified TINYINT(1) DEFAULT 0,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- ============ AGENT (operator per tenant) ============
CREATE TABLE agents (
    id INT AUTO_INCREMENT PRIMARY KEY,
    tenant_id INT NOT NULL,
    email VARCHAR(150) NOT NULL,
    password_hash VARCHAR(255) NOT NULL,
    name VARCHAR(100) NOT NULL,
    avatar_url VARCHAR(500) NULL,
    role ENUM('owner','admin','agent') DEFAULT 'agent',
    status ENUM('online','away','offline') DEFAULT 'offline',
    max_concurrent INT DEFAULT 5,
    last_seen_at TIMESTAMP NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    UNIQUE KEY uk_tenant_email (tenant_id, email),
    FOREIGN KEY (tenant_id) REFERENCES tenants(id) ON DELETE CASCADE
);

-- ============ SUPER ADMIN (kamu) ============
CREATE TABLE super_admins (
    id INT AUTO_INCREMENT PRIMARY KEY,
    email VARCHAR(150) UNIQUE NOT NULL,
    password_hash VARCHAR(255) NOT NULL,
    name VARCHAR(100) NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- ... visitors, chats, messages, typing_status sama seperti sebelumnya
-- (ganti widget_key → public_id di tabel chats/messages via tenant_id tetap)