95 lines
4.8 KiB
SQL
95 lines
4.8 KiB
SQL
-- ════════════════════════════════════════════════════════════
|
|
-- مُصادَق — Complete Phase 1 Migration (MySQL 8.0 Compatible)
|
|
-- ════════════════════════════════════════════════════════════
|
|
|
|
-- 1. Invoice Line Items (AI extracted data)
|
|
CREATE TABLE IF NOT EXISTS invoice_lines (
|
|
id CHAR(36) PRIMARY KEY DEFAULT (UUID()),
|
|
invoice_id CHAR(36) NOT NULL,
|
|
line_number INT NOT NULL,
|
|
description VARCHAR(255) NOT NULL,
|
|
quantity DECIMAL(10,3) DEFAULT 1,
|
|
unit_price DECIMAL(15,4) NOT NULL,
|
|
tax_rate DECIMAL(5,2) DEFAULT 16.00,
|
|
tax_amount DECIMAL(15,4) DEFAULT 0,
|
|
discount DECIMAL(15,4) DEFAULT 0,
|
|
total_amount DECIMAL(15,4) NOT NULL,
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
INDEX idx_invoice (invoice_id),
|
|
FOREIGN KEY (invoice_id) REFERENCES invoices(id) ON DELETE CASCADE
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
-- 2. JoFotara Submissions Log
|
|
CREATE TABLE IF NOT EXISTS jofotara_submissions (
|
|
id CHAR(36) PRIMARY KEY DEFAULT (UUID()),
|
|
invoice_id CHAR(36) NOT NULL,
|
|
tenant_id CHAR(36) NOT NULL,
|
|
company_id CHAR(36) NOT NULL,
|
|
jofotara_uuid VARCHAR(100) NULL,
|
|
xml_content LONGTEXT NULL,
|
|
status ENUM('accepted', 'rejected', 'pending') DEFAULT 'pending',
|
|
qr_code_raw TEXT NULL,
|
|
response_body JSON NULL,
|
|
submitted_at DATETIME NULL,
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
INDEX idx_invoice (invoice_id),
|
|
INDEX idx_tenant (tenant_id),
|
|
FOREIGN KEY (invoice_id) REFERENCES invoices(id) ON DELETE CASCADE
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
-- 3. AI Usage Log
|
|
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),
|
|
FOREIGN KEY (tenant_id) REFERENCES tenants(id) ON DELETE CASCADE
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
-- 4. 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),
|
|
FOREIGN KEY (tenant_id) REFERENCES tenants(id) ON DELETE CASCADE
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
-- ════════════════════════════════════════════════════════════
|
|
-- 5. Safe ALTER TABLE (MySQL 8 compatible — no IF NOT EXISTS)
|
|
-- Run each block separately. If column already exists,
|
|
-- MySQL will show "Duplicate column" error — just skip it.
|
|
-- ════════════════════════════════════════════════════════════
|
|
|
|
-- 5a. Companies: JoFotara credentials
|
|
-- Run these ONE BY ONE. Skip any that say "Duplicate column name"
|
|
|
|
ALTER TABLE companies ADD COLUMN jofotara_client_id VARCHAR(255) NULL;
|
|
ALTER TABLE companies ADD COLUMN jofotara_secret_key VARCHAR(255) NULL;
|
|
ALTER TABLE companies ADD COLUMN jofotara_status ENUM('active', 'inactive', 'pending') DEFAULT 'inactive';
|
|
|
|
-- 5b. Invoices: AI + JoFotara metadata
|
|
-- Run these ONE BY ONE. Skip any that say "Duplicate column name"
|
|
|
|
ALTER TABLE invoices ADD COLUMN invoice_category ENUM('simplified', 'standard') DEFAULT 'simplified';
|
|
ALTER TABLE invoices ADD COLUMN ubl_type_code VARCHAR(10) DEFAULT '388';
|
|
ALTER TABLE invoices ADD COLUMN payment_method_code VARCHAR(10) DEFAULT '013';
|
|
ALTER TABLE invoices ADD COLUMN validation_warnings JSON NULL;
|
|
ALTER TABLE invoices ADD COLUMN ai_confidence DECIMAL(5,2) DEFAULT 0;
|
|
ALTER TABLE invoices ADD COLUMN jofotara_uuid VARCHAR(100) NULL;
|