Files
Document_translator/schema_generated.sql
2025-10-02 17:13:24 +08:00

185 lines
9.6 KiB
SQL
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- ============================================================================
-- 自動生成的資料表 Schema
-- 生成時間: 2025-10-01 14:49:58
-- 警告: 此檔案由 generate_schema_from_models.py 自動生成
-- 請勿手動編輯!
-- ============================================================================
USE db_A060;
-- User
DROP TABLE IF EXISTS `dt_users`;
CREATE TABLE IF NOT EXISTS `dt_users` (
`id` INTEGER NOT NULL AUTO_INCREMENT,
`username` VARCHAR(100) NOT NULL COMMENT 'AD帳號',
`display_name` VARCHAR(200) NOT NULL COMMENT '顯示名稱',
`email` VARCHAR(255) NOT NULL COMMENT '電子郵件',
`department` VARCHAR(100) COMMENT '部門',
`is_admin` BOOL DEFAULT 0 COMMENT '是否為管理員',
`last_login` DATETIME COMMENT '最後登入時間',
`created_at` DATETIME COMMENT '建立時間',
`updated_at` DATETIME ON UPDATE CURRENT_TIMESTAMP COMMENT '更新時間',
PRIMARY KEY (`id`),
INDEX `ix_dt_users_email` (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- SysUser
DROP TABLE IF EXISTS `sys_user`;
CREATE TABLE IF NOT EXISTS `sys_user` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`username` VARCHAR(255) NOT NULL COMMENT '登入帳號',
`password_hash` VARCHAR(512) COMMENT '密碼雜湊 (如果需要本地儲存)',
`email` VARCHAR(255) NOT NULL COMMENT '電子郵件',
`display_name` VARCHAR(255) COMMENT '顯示名稱',
`api_user_id` VARCHAR(255) COMMENT 'API 回傳的使用者 ID',
`api_access_token` TEXT COMMENT 'API 回傳的 access_token',
`api_token_expires_at` DATETIME COMMENT 'API Token 過期時間',
`auth_method` ENUM('API','LDAP') DEFAULT 'API' COMMENT '認證方式',
`last_login_at` DATETIME COMMENT '最後登入時間',
`last_login_ip` VARCHAR(45) COMMENT '最後登入 IP',
`login_count` INTEGER DEFAULT 0 COMMENT '登入次數',
`login_success_count` INTEGER DEFAULT 0 COMMENT '成功登入次數',
`login_fail_count` INTEGER DEFAULT 0 COMMENT '失敗登入次數',
`is_active` BOOL DEFAULT 1 COMMENT '是否啟用',
`is_locked` BOOL DEFAULT 0 COMMENT '是否鎖定',
`locked_until` DATETIME COMMENT '鎖定至何時',
`created_at` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '建立時間',
`updated_at` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新時間',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_username` (`username`),
UNIQUE KEY `uk_email` (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- LoginLog
DROP TABLE IF EXISTS `login_logs`;
CREATE TABLE IF NOT EXISTS `login_logs` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`username` VARCHAR(255) NOT NULL COMMENT '登入帳號',
`auth_method` ENUM('API','LDAP') NOT NULL COMMENT '認證方式',
`login_success` BOOL NOT NULL COMMENT '是否成功',
`error_message` TEXT COMMENT '錯誤訊息(失敗時)',
`ip_address` VARCHAR(45) COMMENT 'IP 地址',
`user_agent` TEXT COMMENT '瀏覽器資訊',
`api_response_summary` JSON COMMENT 'API 回應摘要',
`login_at` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '登入時間',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- TranslationJob
DROP TABLE IF EXISTS `dt_translation_jobs`;
CREATE TABLE IF NOT EXISTS `dt_translation_jobs` (
`id` INTEGER NOT NULL AUTO_INCREMENT,
`job_uuid` VARCHAR(36) NOT NULL COMMENT '任務唯一識別碼',
`user_id` INTEGER NOT NULL COMMENT '使用者ID',
`original_filename` VARCHAR(500) NOT NULL COMMENT '原始檔名',
`file_extension` VARCHAR(10) NOT NULL COMMENT '檔案副檔名',
`file_size` BIGINT NOT NULL COMMENT '檔案大小(bytes)',
`file_path` VARCHAR(1000) NOT NULL COMMENT '檔案路徑',
`source_language` VARCHAR(50) COMMENT '來源語言',
`target_languages` JSON NOT NULL COMMENT '目標語言陣列',
`status` ENUM('PENDING','PROCESSING','COMPLETED','FAILED','RETRY') DEFAULT 'PENDING' COMMENT '任務狀態',
`progress` NUMERIC(5, 2) DEFAULT 0.0 COMMENT '處理進度(%)',
`retry_count` INTEGER DEFAULT 0 COMMENT '重試次數',
`error_message` TEXT COMMENT '錯誤訊息',
`total_tokens` INTEGER DEFAULT 0 COMMENT '總token數',
`total_cost` NUMERIC(10, 4) DEFAULT 0.0 COMMENT '總成本',
`conversation_id` VARCHAR(100) COMMENT 'Dify對話ID用於維持翻譯上下文',
`processing_started_at` DATETIME COMMENT '開始處理時間',
`completed_at` DATETIME COMMENT '完成時間',
`created_at` DATETIME COMMENT '建立時間',
`updated_at` DATETIME ON UPDATE CURRENT_TIMESTAMP COMMENT '更新時間',
`deleted_at` DATETIME COMMENT '軟刪除時間',
PRIMARY KEY (`id`),
CONSTRAINT `fk_dt_translation_jobs_user_id` FOREIGN KEY (`user_id`) REFERENCES `dt_users` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- JobFile
DROP TABLE IF EXISTS `dt_job_files`;
CREATE TABLE IF NOT EXISTS `dt_job_files` (
`id` INTEGER NOT NULL AUTO_INCREMENT,
`job_id` INTEGER NOT NULL COMMENT '任務ID',
`file_type` ENUM('source','translated') NOT NULL COMMENT '檔案類型',
`language_code` VARCHAR(50) COMMENT '語言代碼(翻譯檔案)',
`original_filename` VARCHAR(255) NOT NULL COMMENT '原始檔名',
`stored_filename` VARCHAR(255) NOT NULL COMMENT '儲存檔名',
`file_path` VARCHAR(500) NOT NULL COMMENT '檔案路徑',
`file_size` BIGINT DEFAULT 0 COMMENT '檔案大小',
`mime_type` VARCHAR(100) COMMENT 'MIME 類型',
`created_at` DATETIME COMMENT '建立時間',
PRIMARY KEY (`id`),
CONSTRAINT `fk_dt_job_files_job_id` FOREIGN KEY (`job_id`) REFERENCES `dt_translation_jobs` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- SystemLog
DROP TABLE IF EXISTS `dt_system_logs`;
CREATE TABLE IF NOT EXISTS `dt_system_logs` (
`id` INTEGER NOT NULL AUTO_INCREMENT,
`level` ENUM('DEBUG','INFO','WARNING','ERROR','CRITICAL') NOT NULL COMMENT '日誌等級',
`module` VARCHAR(100) NOT NULL COMMENT '模組名稱',
`user_id` INTEGER COMMENT '使用者ID',
`job_id` INTEGER COMMENT '任務ID',
`message` TEXT NOT NULL COMMENT '日誌訊息',
`extra_data` JSON COMMENT '額外資料',
`created_at` DATETIME COMMENT '建立時間',
PRIMARY KEY (`id`),
CONSTRAINT `fk_dt_system_logs_user_id` FOREIGN KEY (`user_id`) REFERENCES `dt_users` (`id`) ON DELETE CASCADE,
CONSTRAINT `fk_dt_system_logs_job_id` FOREIGN KEY (`job_id`) REFERENCES `dt_translation_jobs` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- TranslationCache
DROP TABLE IF EXISTS `dt_translation_cache`;
CREATE TABLE IF NOT EXISTS `dt_translation_cache` (
`id` INTEGER NOT NULL AUTO_INCREMENT,
`source_text_hash` VARCHAR(64) NOT NULL COMMENT '來源文字hash',
`source_language` VARCHAR(50) NOT NULL COMMENT '來源語言',
`target_language` VARCHAR(50) NOT NULL COMMENT '目標語言',
`source_text` TEXT NOT NULL COMMENT '來源文字',
`translated_text` TEXT NOT NULL COMMENT '翻譯文字',
`created_at` DATETIME COMMENT '建立時間',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_cache` (`source_text_hash`, `source_language`, `target_language`),
INDEX `idx_languages` (`source_language`, `target_language`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- APIUsageStats
DROP TABLE IF EXISTS `dt_api_usage_stats`;
CREATE TABLE IF NOT EXISTS `dt_api_usage_stats` (
`id` INTEGER NOT NULL AUTO_INCREMENT,
`user_id` INTEGER NOT NULL COMMENT '使用者ID',
`job_id` INTEGER COMMENT '任務ID',
`api_endpoint` VARCHAR(200) NOT NULL COMMENT 'API端點',
`prompt_tokens` INTEGER DEFAULT 0 COMMENT 'Prompt token數',
`completion_tokens` INTEGER DEFAULT 0 COMMENT 'Completion token數',
`total_tokens` INTEGER DEFAULT 0 COMMENT '總token數',
`prompt_unit_price` NUMERIC(10, 8) DEFAULT 0.0 COMMENT '單價',
`prompt_price_unit` VARCHAR(20) DEFAULT 'USD' COMMENT '價格單位',
`cost` NUMERIC(10, 4) DEFAULT 0.0 COMMENT '成本',
`response_time_ms` INTEGER DEFAULT 0 COMMENT '回應時間(毫秒)',
`success` BOOL DEFAULT 1 COMMENT '是否成功',
`error_message` TEXT COMMENT '錯誤訊息',
`created_at` DATETIME COMMENT '建立時間',
PRIMARY KEY (`id`),
CONSTRAINT `fk_dt_api_usage_stats_user_id` FOREIGN KEY (`user_id`) REFERENCES `dt_users` (`id`) ON DELETE CASCADE,
CONSTRAINT `fk_dt_api_usage_stats_job_id` FOREIGN KEY (`job_id`) REFERENCES `dt_translation_jobs` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- Notification
DROP TABLE IF EXISTS `dt_notifications`;
CREATE TABLE IF NOT EXISTS `dt_notifications` (
`id` INTEGER NOT NULL AUTO_INCREMENT,
`notification_uuid` VARCHAR(36) NOT NULL COMMENT '通知唯一識別碼',
`user_id` INTEGER NOT NULL COMMENT '使用者ID',
`type` VARCHAR(20) NOT NULL DEFAULT 'info' COMMENT '通知類型',
`title` VARCHAR(255) NOT NULL COMMENT '通知標題',
`message` TEXT NOT NULL COMMENT '通知內容',
`job_uuid` VARCHAR(36) COMMENT '關聯任務UUID',
`link` VARCHAR(500) COMMENT '相關連結',
`is_read` BOOL NOT NULL DEFAULT 0 COMMENT '是否已讀',
`read_at` DATETIME COMMENT '閱讀時間',
`created_at` DATETIME NOT NULL COMMENT '建立時間',
`expires_at` DATETIME COMMENT '過期時間',
`extra_data` JSON COMMENT '額外數據',
PRIMARY KEY (`id`),
CONSTRAINT `fk_dt_notifications_user_id` FOREIGN KEY (`user_id`) REFERENCES `dt_users` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;