-- File: specs/03-Data-and-Storage/deltas/2026-05-22-drop-migration-tables.rollback.sql -- Change Log: -- - 2026-05-22: กู้คืนโครงสร้างตาราง staging ทั้งหมด 5 ตารางสำหรับระบบย้ายข้อมูลกรณีเกิดเหตุฉุกเฉิน (Phase 6) -- Delta Rollback: กู้คืนตาราง Staging ชั่วคราว (Recreate Staging Tables) -- Date: 2026-05-22 -- Related ADR: ADR-028 -- ------------------------------------------------------------ -- การกู้คืนตาราง Staging ทั้งหมด 5 ตาราง -- ------------------------------------------------------------ -- 1. กู้คืนตารางความคืบหน้าของ Migration Progress CREATE TABLE IF NOT EXISTS migration_progress ( batch_id VARCHAR(50) PRIMARY KEY, last_processed_index INT DEFAULT 0, STATUS ENUM('RUNNING', 'COMPLETED', 'FAILED') DEFAULT 'RUNNING', updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = 'Migration: Batch Progress'; -- 2. กู้คืนตารางคิวตรวจสอบสำหรับเอกสาร (Review Queue) CREATE TABLE IF NOT EXISTS migration_review_queue ( id INT NOT NULL AUTO_INCREMENT, uuid CHAR(36) NOT NULL DEFAULT (uuid()) COMMENT 'UUID Public Identifier (ADR-019)', document_number VARCHAR(100) NOT NULL, subject TEXT COMMENT 'หัวข้อเรื่องภาษาไทยหรืออังกฤษ', original_subject TEXT COMMENT 'หัวข้อเรื่องเดิมจากระบบจัดเก็บเดิม', body TEXT NULL COMMENT 'เนื้อความย่อจาก AI', ai_suggested_category VARCHAR(50), ai_confidence DECIMAL(4, 3), ai_issues JSON, review_reason VARCHAR(255), status ENUM('PENDING', 'APPROVED', 'IMPORTED', 'REJECTED') NOT NULL DEFAULT 'PENDING', reviewed_by VARCHAR(100), reviewed_at TIMESTAMP NULL, project_id INT NULL COMMENT 'Project ID ของโครงการ', sender_organization_id INT NULL COMMENT 'Sender ID ของผู้ส่ง', receiver_organization_id INT NULL COMMENT 'Receiver ID ของผู้รับ', received_date DATE NULL, issued_date DATE NULL, remarks TEXT, ai_summary TEXT, extracted_tags JSON, temp_attachment_id INT NULL, ai_job_id VARCHAR(36) NULL COMMENT 'BullMQ Job ID สำหรับงานประมวลผล AI', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), UNIQUE KEY uq_doc_number (document_number), UNIQUE KEY uq_migration_review_uuid (uuid) ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = 'Migration: Review Queue'; -- 3. กู้คืนตารางแสดงประวัติข้อผิดพลาดการย้ายข้อมูล (Error Log) CREATE TABLE IF NOT EXISTS migration_errors ( id INT AUTO_INCREMENT PRIMARY KEY, batch_id VARCHAR(50), document_number VARCHAR(100), error_type ENUM( 'FILE_NOT_FOUND', 'MISSING_FILENAME', 'FILE_ERROR', 'AI_PARSE_ERROR', 'API_ERROR', 'DB_ERROR', 'SECURITY', 'UNKNOWN' ), error_message TEXT, job_id VARCHAR(100) NULL, raw_ai_response TEXT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, INDEX idx_batch_id (batch_id), INDEX idx_job_id (job_id), INDEX idx_error_type (error_type) ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = 'Migration: Error Log'; -- 4. กู้คืนตารางสถานะสำหรับ AI Model Fallback State CREATE TABLE IF NOT EXISTS migration_fallback_state ( id INT AUTO_INCREMENT PRIMARY KEY, batch_id VARCHAR(50) UNIQUE, recent_error_count INT DEFAULT 0, is_fallback_active BOOLEAN DEFAULT FALSE, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = 'Migration: Fallback Model State'; -- 5. กู้คืนตารางแสดงข้อมูลสรุปรายวันของ Migration (Daily Summary) CREATE TABLE IF NOT EXISTS migration_daily_summary ( id INT AUTO_INCREMENT PRIMARY KEY, batch_id VARCHAR(50), summary_date DATE, total_processed INT DEFAULT 0, auto_ingested INT DEFAULT 0, sent_to_review INT DEFAULT 0, rejected INT DEFAULT 0, errors INT DEFAULT 0, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, UNIQUE KEY uq_batch_date (batch_id, summary_date) ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = 'Migration: Daily Summary';