-- eduSign 學生線上簽署系統 - 資料庫建立腳本
-- 建立時間: 2025-12-26

-- 建立 eduSign 資料庫
CREATE DATABASE IF NOT EXISTS `eduSign`
DEFAULT CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;

USE `eduSign`;

-- =====================================================
-- 管理員資料表
-- =====================================================
CREATE TABLE IF NOT EXISTS `t_admin` (
    `id` INT NOT NULL AUTO_INCREMENT,
    `username` VARCHAR(50) NOT NULL UNIQUE COMMENT '帳號',
    `password` VARCHAR(255) NOT NULL COMMENT '密碼(password_hash加密)',
    `name` VARCHAR(100) NOT NULL COMMENT '姓名',
    `email` VARCHAR(100) DEFAULT NULL COMMENT '電子郵件',
    `permission` TINYINT NOT NULL DEFAULT 1 COMMENT '權限等級',
    `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '建立時間',
    `updated_at` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新時間',
    PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='管理員帳號表';

-- =====================================================
-- 登入記錄資料表
-- =====================================================
CREATE TABLE IF NOT EXISTS `t_login_log` (
    `id` BIGINT NOT NULL AUTO_INCREMENT,
    `uid` VARCHAR(100) NOT NULL COMMENT '使用者帳號',
    `user_type` ENUM('admin', 'teacher', 'student', 'guest') NOT NULL COMMENT '使用者類型',
    `login_method` ENUM('ldap', 'google', 'google_guest', 'database', 'guest') NOT NULL COMMENT '登入方式',
    `login_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '登入時間',
    `ip_address` VARCHAR(45) DEFAULT NULL COMMENT 'IP位址(支援IPv6)',
    `user_agent` VARCHAR(500) DEFAULT NULL COMMENT '瀏覽器資訊',
    `status` ENUM('success', 'failed') NOT NULL COMMENT '登入狀態',
    `fail_reason` VARCHAR(255) DEFAULT NULL COMMENT '失敗原因',
    PRIMARY KEY (`id`),
    INDEX `idx_uid` (`uid`),
    INDEX `idx_login_time` (`login_time`),
    INDEX `idx_user_type` (`user_type`),
    INDEX `idx_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='登入記錄表';

-- =====================================================
-- 插入預設管理員帳號
-- 預設密碼: admin123 (請登入後立即修改)
-- =====================================================
INSERT INTO `t_admin` (`username`, `password`, `name`, `email`, `permission`) VALUES
('admin', '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', '系統管理員', NULL, 1);
-- 注意: 上述密碼 hash 對應 'password'，實際部署時請使用以下 PHP 產生新密碼:
-- echo password_hash('your_password', PASSWORD_DEFAULT);
