feat(ai): ADR-032 Typhoon OCR integration - models, processors, cache, VRAM monitor, sandbox UI
CI / CD Pipeline / build (push) Successful in 4m51s
CI / CD Pipeline / deploy (push) Successful in 12m7s

This commit is contained in:
2026-05-30 22:18:51 +07:00
parent f86fcc05f5
commit ae1b1f35e1
56 changed files with 4057 additions and 153 deletions
@@ -0,0 +1,50 @@
-- File: specs/03-Data-and-Storage/deltas/2026-05-30-add-typhoon-ocr-prompt.sql
-- เพิ่ม Typhoon OCR System Prompt ลงใน ai_prompts table
-- ตาม ADR-029: Dynamic Prompt Management, ADR-032: Typhoon OCR Integration
-- Change Log:
-- - 2026-05-30: Initial seed สำหรับ typhoon_ocr_system prompt (T005)
-- - 2026-05-30: Fix: เพิ่ม public_id (UUID) และ context_config (NULL)
-- ai_prompts entity มี publicId NOT NULL column ตาม ADR-019 (เพิ่มเมื่อ 2026-05-27)
-- ใช้ UUID() ของ MariaDB เพื่อสร้าง UUIDv4 ที่ valid
INSERT INTO ai_prompts (
public_id,
prompt_type,
version_number,
template,
field_schema,
context_config,
is_active,
manual_note,
activated_at,
created_by
)
SELECT
UUID(),
'typhoon_ocr_system',
1,
'สกัดข้อความภาษาไทยและอังกฤษทั้งหมดจากภาพนี้อย่างถูกต้อง รักษาโครงสร้างบรรทัดและการเว้นวรรคให้ใกล้เคียงต้นฉบับมากที่สุด ห้ามเพิ่มคำอธิบายใดๆ',
JSON_OBJECT(
'type', 'system_prompt',
'model', 'scb10x/typhoon-ocr-3b',
'temperature', 0.0,
'top_p', 0.9,
'repeat_penalty', 1.0,
'keep_alive', 0
),
NULL,
1,
'System prompt สำหรับ Typhoon OCR-3B เพื่อสกัดข้อความภาษาไทย/อังกฤษจากภาพเอกสาร (ADR-032)',
CURRENT_TIMESTAMP,
(
SELECT user_id
FROM users
WHERE username = 'superadmin'
LIMIT 1
)
WHERE NOT EXISTS (
SELECT 1 FROM ai_prompts
WHERE prompt_type = 'typhoon_ocr_system'
AND version_number = 1
)
ON DUPLICATE KEY UPDATE prompt_type = prompt_type;
@@ -0,0 +1,21 @@
-- File: specs/03-Data-and-Storage/deltas/2026-05-30-extend-ai-audit-logs.sql
-- เพิ่ม fields สำหรับ Typhoon OCR integration ใน ai_audit_logs
-- ตาม ADR-032: modelType, vramUsageMB, cacheHit
-- Change Log:
-- - 2026-05-30: Initial delta สำหรับ Typhoon OCR audit fields (T004)
-- เพิ่ม modelType: ระบุประเภทของ model ที่ใช้ (tesseract, typhoon-ocr-3b, typhoon2.1-gemma3-4b)
ALTER TABLE ai_audit_logs
ADD COLUMN IF NOT EXISTS model_type VARCHAR(50) NULL COMMENT 'ประเภท OCR/LLM model ที่ใช้ เช่น tesseract, typhoon-ocr-3b' AFTER model_name;
-- เพิ่ม vramUsageMB: การใช้ VRAM จริง (MB) หลังประมวลผล
ALTER TABLE ai_audit_logs
ADD COLUMN IF NOT EXISTS vram_usage_mb INT NULL COMMENT 'VRAM ที่ใช้จริง (MB) ณ เวลาประมวลผล' AFTER model_type;
-- เพิ่ม cacheHit: ระบุว่าผลลัพธ์นี้มาจาก Redis cache หรือ OCR จริง
ALTER TABLE ai_audit_logs
ADD COLUMN IF NOT EXISTS cache_hit TINYINT(1) NOT NULL DEFAULT 0 COMMENT '1 = ผลลัพธ์มาจาก Redis cache, 0 = OCR ใหม่' AFTER vram_usage_mb;
-- เพิ่ม index สำหรับ model_type เพื่อ analytics queries
ALTER TABLE ai_audit_logs
ADD INDEX IF NOT EXISTS idx_ai_audit_model_type (model_type);
@@ -0,0 +1,24 @@
-- Delta: Seed Typhoon model option into ai_available_models
-- Date: 2026-05-30
-- Related: ADR-027, ADR-032, specs/200-fullstacks/232-typhoon-ocr-integration
INSERT INTO ai_available_models (
model_name,
model_version,
description,
vram_gb,
is_active,
is_default
)
SELECT
'typhoon2.1-gemma3-4b',
'4b',
'Typhoon 2.1 Gemma3 4B - Thai-focused local LLM option for AI Admin Console',
4.50,
TRUE,
FALSE
WHERE NOT EXISTS (
SELECT 1
FROM ai_available_models
WHERE model_name = 'typhoon2.1-gemma3-4b'
);