73 lines
3.3 KiB
SQL
73 lines
3.3 KiB
SQL
-- ════════════════════════════════════════════════════════════
|
|
-- مُصادَق — Phase 1: AI Usage Tracking + Notifications
|
|
-- ════════════════════════════════════════════════════════════
|
|
|
|
-- AI Usage Log (tracks every AI request)
|
|
CREATE TABLE IF NOT EXISTS ai_usage_log (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
tenant_id CHAR(36) NOT NULL,
|
|
user_id CHAR(36) NULL,
|
|
company_id CHAR(36) NULL,
|
|
action_type ENUM('invoice_extraction','voice_transcribe','voice_intent','report_generation','chatbot') NOT NULL,
|
|
model_name VARCHAR(50) NOT NULL,
|
|
prompt_tokens INT DEFAULT 0,
|
|
completion_tokens INT DEFAULT 0,
|
|
total_tokens INT DEFAULT 0,
|
|
estimated_cost DECIMAL(10,6) DEFAULT 0,
|
|
request_metadata JSON NULL,
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
INDEX idx_tenant_date (tenant_id, created_at),
|
|
INDEX idx_action (action_type),
|
|
FOREIGN KEY (tenant_id) REFERENCES tenants(id) ON DELETE CASCADE
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
-- Notifications
|
|
CREATE TABLE IF NOT EXISTS notifications (
|
|
id CHAR(36) PRIMARY KEY DEFAULT (UUID()),
|
|
tenant_id CHAR(36) NOT NULL,
|
|
user_id CHAR(36) NULL,
|
|
type ENUM('invoice_processed','invoice_rejected','quota_warning','month_end','system','achievement') NOT NULL,
|
|
title VARCHAR(255) NOT NULL,
|
|
body TEXT NOT NULL,
|
|
is_read BOOLEAN DEFAULT FALSE,
|
|
metadata JSON NULL,
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
INDEX idx_user_read (user_id, is_read),
|
|
INDEX idx_tenant (tenant_id),
|
|
FOREIGN KEY (tenant_id) REFERENCES tenants(id) ON DELETE CASCADE
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
-- Referral Codes (Phase 2 prep)
|
|
CREATE TABLE IF NOT EXISTS referral_codes (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
user_id CHAR(36) NOT NULL,
|
|
code VARCHAR(20) NOT NULL UNIQUE,
|
|
uses_count INT DEFAULT 0,
|
|
max_uses INT DEFAULT 50,
|
|
reward_months INT DEFAULT 1,
|
|
is_active BOOLEAN DEFAULT TRUE,
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
-- Referral Uses (Phase 2 prep)
|
|
CREATE TABLE IF NOT EXISTS referral_uses (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
code_id INT NOT NULL,
|
|
referred_tenant_id CHAR(36) NOT NULL,
|
|
reward_applied BOOLEAN DEFAULT FALSE,
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY (code_id) REFERENCES referral_codes(id)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
-- User Achievements (Phase 2 prep)
|
|
CREATE TABLE IF NOT EXISTS user_achievements (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
user_id CHAR(36) NOT NULL,
|
|
achievement_code VARCHAR(50) NOT NULL,
|
|
points INT NOT NULL DEFAULT 0,
|
|
earned_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
|
|
UNIQUE KEY uq_user_achievement (user_id, achievement_code)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|