-- =============================================
-- Migration: Auto-Tagging & PWA Support
-- =============================================

-- Table des tags de conversations
CREATE TABLE IF NOT EXISTS conversation_tags (
    id INT PRIMARY KEY AUTO_INCREMENT,
    conversation_id INT NOT NULL,
    tag VARCHAR(50) NOT NULL,
    is_auto BOOLEAN DEFAULT TRUE,
    added_by INT NULL,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (conversation_id) REFERENCES conversations(id) ON DELETE CASCADE,
    FOREIGN KEY (added_by) REFERENCES users(id) ON DELETE SET NULL,
    UNIQUE INDEX idx_conversation_tag (conversation_id, tag),
    INDEX idx_tag (tag)
) ENGINE=InnoDB;

-- Tags prédéfinis (référentiel)
CREATE TABLE IF NOT EXISTS tag_definitions (
    id INT PRIMARY KEY AUTO_INCREMENT,
    entreprise_id INT NULL,
    tag VARCHAR(50) NOT NULL,
    category ENUM('type', 'sujet', 'sentiment', 'priorite', 'custom') DEFAULT 'custom',
    color VARCHAR(20) DEFAULT '#6366f1',
    description VARCHAR(255),
    is_active BOOLEAN DEFAULT TRUE,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (entreprise_id) REFERENCES entreprises(id) ON DELETE CASCADE,
    INDEX idx_entreprise (entreprise_id),
    INDEX idx_category (category)
) ENGINE=InnoDB;

-- Ajouter colonne tags JSON à conversations
ALTER TABLE conversations 
ADD COLUMN tags JSON NULL;

-- Table pour les souscriptions push (PWA)
CREATE TABLE IF NOT EXISTS push_subscriptions (
    id INT PRIMARY KEY AUTO_INCREMENT,
    user_id INT NOT NULL,
    entreprise_id INT NOT NULL,
    endpoint TEXT NOT NULL,
    p256dh VARCHAR(255) NOT NULL,
    auth VARCHAR(255) NOT NULL,
    user_agent VARCHAR(500),
    is_active BOOLEAN DEFAULT TRUE,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
    FOREIGN KEY (entreprise_id) REFERENCES entreprises(id) ON DELETE CASCADE,
    INDEX idx_user (user_id),
    INDEX idx_entreprise (entreprise_id)
) ENGINE=InnoDB;

-- Préférences notifications par utilisateur
ALTER TABLE users 
ADD COLUMN push_enabled BOOLEAN DEFAULT TRUE;

ALTER TABLE users 
ADD COLUMN notification_sound BOOLEAN DEFAULT TRUE;

ALTER TABLE users 
ADD COLUMN notification_types JSON NULL;

-- Insérer les tags prédéfinis globaux
INSERT INTO tag_definitions (entreprise_id, tag, category, color, description) VALUES
(NULL, 'question', 'type', '#3b82f6', 'Question générale'),
(NULL, 'plainte', 'type', '#ef4444', 'Réclamation ou plainte'),
(NULL, 'demande_info', 'type', '#8b5cf6', 'Demande d\'information'),
(NULL, 'assistance', 'type', '#06b6d4', 'Demande d\'aide'),
(NULL, 'feedback', 'type', '#10b981', 'Retour ou suggestion'),
(NULL, 'urgence', 'type', '#f97316', 'Demande urgente'),
(NULL, 'facturation', 'sujet', '#eab308', 'Sujet facturation'),
(NULL, 'technique', 'sujet', '#6366f1', 'Problème technique'),
(NULL, 'compte', 'sujet', '#ec4899', 'Gestion de compte'),
(NULL, 'livraison', 'sujet', '#14b8a6', 'Sujet livraison'),
(NULL, 'produit', 'sujet', '#f59e0b', 'Question produit'),
(NULL, 'service', 'sujet', '#8b5cf6', 'Question service'),
(NULL, 'remboursement', 'sujet', '#ef4444', 'Demande remboursement'),
(NULL, 'positif', 'sentiment', '#10b981', 'Sentiment positif'),
(NULL, 'négatif', 'sentiment', '#ef4444', 'Sentiment négatif'),
(NULL, 'neutre', 'sentiment', '#6b7280', 'Sentiment neutre'),
(NULL, 'urgent', 'priorite', '#ef4444', 'Priorité urgente'),
(NULL, 'haute', 'priorite', '#f97316', 'Priorité haute'),
(NULL, 'normale', 'priorite', '#3b82f6', 'Priorité normale'),
(NULL, 'basse', 'priorite', '#6b7280', 'Priorité basse');
