690525:1320 ADR-028-228-migration #06
This commit is contained in:
@@ -0,0 +1,8 @@
|
||||
-- Rollback: Drop ai_available_models table
|
||||
-- Date: 2026-05-25
|
||||
|
||||
-- Remove system setting first
|
||||
DELETE FROM system_settings WHERE setting_key = 'AI_ACTIVE_MODEL';
|
||||
|
||||
-- Drop table
|
||||
DROP TABLE IF EXISTS ai_available_models;
|
||||
@@ -0,0 +1,43 @@
|
||||
-- Delta: Create ai_available_models table for dynamic AI model selection
|
||||
-- Date: 2026-05-25
|
||||
-- Author: AI Assistant
|
||||
-- Related: ADR-027 AI Admin Console - Dynamic model control
|
||||
|
||||
-- Create table for available AI models
|
||||
CREATE TABLE IF NOT EXISTS ai_available_models (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
model_name VARCHAR(100) NOT NULL COMMENT 'ชื่อโมเดล เช่น gemma4:e2b, gemma4:e4b',
|
||||
model_version VARCHAR(50) NOT NULL COMMENT 'เวอร์ชั่นของโมเดล',
|
||||
description VARCHAR(500) NULL COMMENT 'รายละเอียดโมเดล',
|
||||
vram_gb DECIMAL(4,2) NULL COMMENT 'VRAM ที่ใช้โดยประมาณ (GB)',
|
||||
is_active BOOLEAN DEFAULT TRUE COMMENT 'สถานะใช้งาน',
|
||||
is_default BOOLEAN DEFAULT FALSE COMMENT 'โมเดลเริ่มต้น',
|
||||
created_by INT NULL,
|
||||
updated_by INT NULL,
|
||||
created_at DATETIME(3) DEFAULT CURRENT_TIMESTAMP(3),
|
||||
updated_at DATETIME(3) DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
|
||||
deleted_at DATETIME(3) NULL,
|
||||
|
||||
UNIQUE KEY uk_model_name (model_name),
|
||||
INDEX idx_is_active (is_active),
|
||||
INDEX idx_is_default (is_default)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
|
||||
COMMENT='ตารางเก็บรายการโมเดล AI ที่ให้เลือกใช้งานในระบบ (ADR-027)';
|
||||
|
||||
-- Insert default models per ADR-023A
|
||||
INSERT INTO ai_available_models (model_name, model_version, description, vram_gb, is_active, is_default) VALUES
|
||||
('gemma4:e2b', 'e2b', 'Gemma 4 E2B - 2-bit quantized, ~2GB VRAM, recommended per ADR-023A', 2.00, TRUE, TRUE),
|
||||
('gemma4:e4b', 'e4b', 'Gemma 4 E4B - 4-bit quantized, ~4GB VRAM', 4.00, TRUE, FALSE);
|
||||
|
||||
-- Add system setting for active model (reference to ai_available_models)
|
||||
INSERT INTO system_settings (setting_key, setting_value, data_type, category, description, is_public, created_at, updated_at)
|
||||
SELECT
|
||||
'AI_ACTIVE_MODEL',
|
||||
(SELECT model_name FROM ai_available_models WHERE is_default = TRUE LIMIT 1),
|
||||
'string',
|
||||
'ai',
|
||||
'โมเดล AI ที่ใช้งานอยู่ในระบบ (global)',
|
||||
TRUE,
|
||||
CURRENT_TIMESTAMP(3),
|
||||
CURRENT_TIMESTAMP(3)
|
||||
WHERE NOT EXISTS (SELECT 1 FROM system_settings WHERE setting_key = 'AI_ACTIVE_MODEL');
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
-- File: specs/03-Data-and-Storage/deltas/2026-05-25-grant-ai-permissions-to-superadmin.rollback.sql
|
||||
-- Change Log:
|
||||
-- - 2026-05-25: Rollback — ลบ ai.* permissions ออกจาก role_id=1 (Superadmin)
|
||||
-- ==========================================================
|
||||
DELETE rp FROM role_permissions rp
|
||||
JOIN permissions p ON rp.permission_id = p.permission_id
|
||||
WHERE rp.role_id = 1
|
||||
AND p.permission_name IN (
|
||||
'ai.suggest',
|
||||
'ai.rag_query',
|
||||
'ai.migration_manage',
|
||||
'ai.audit_log_delete',
|
||||
'ai.read_analytics',
|
||||
'ai.delete_audit'
|
||||
);
|
||||
@@ -0,0 +1,23 @@
|
||||
-- File: specs/03-Data-and-Storage/deltas/2026-05-25-grant-ai-permissions-to-superadmin.sql
|
||||
-- Change Log:
|
||||
-- - 2026-05-25: Grant ai.* permissions ให้ Superadmin (role_id=1) ที่ขาดหายไปจาก seed
|
||||
-- ==========================================================
|
||||
-- Root Cause:
|
||||
-- Seed script (lcbp3-v1.9.0-seed-permissions.sql) รัน:
|
||||
-- INSERT INTO role_permissions SELECT 1, permission_id FROM permissions WHERE is_active = 1
|
||||
-- ก่อนที่ ai.* permissions (permission_id 181-186) จะถูก INSERT เข้า permissions table
|
||||
-- ทำให้ role_id=1 (Superadmin) ไม่มี ai.* ใน role_permissions
|
||||
-- ผลกระทบ: migration_bot (user_id=5, role_id=1) ถูก RbacGuard block ที่ POST /api/ai/jobs
|
||||
-- ==========================================================
|
||||
INSERT IGNORE INTO role_permissions (role_id, permission_id)
|
||||
SELECT 1, permission_id
|
||||
FROM permissions
|
||||
WHERE permission_name IN (
|
||||
'ai.suggest',
|
||||
'ai.rag_query',
|
||||
'ai.migration_manage',
|
||||
'ai.audit_log_delete',
|
||||
'ai.read_analytics',
|
||||
'ai.delete_audit'
|
||||
)
|
||||
AND is_active = 1;
|
||||
Reference in New Issue
Block a user