690524:1919 ADR-028-228-migration #04
CI / CD Pipeline / build (push) Successful in 4m10s
CI / CD Pipeline / deploy (push) Successful in 3m52s

This commit is contained in:
2026-05-24 19:19:46 +07:00
parent 93fd95a6b3
commit 1564f8648d
22 changed files with 1422 additions and 255 deletions
@@ -13,29 +13,29 @@
- Backend: NestJS Module (IntentClassifierModule) พร้อม Service สำหรับ Pattern Matching และ LLM Fallback
- Database: ตาราง `ai_intent_definitions` และ `ai_intent_patterns` (SQL Delta ตาม ADR-009)
- Caching: Redis (TTL 5 นาที) สำหรับ Patterns
- AI: Ollama gemma4:e4b Q8_0 บน Admin Desktop (Desk-5439) สำหรับ LLM Fallback
- AI: Ollama gemma4:e2b บน Admin Desktop (Desk-5439) สำหรับ LLM Fallback
- Frontend: Admin UI สำหรับจัดการ Intent และ Patterns + Test Console
---
## Technical Context
**Language/Version**: TypeScript 5.x (NestJS 11) + Next.js 16
**Primary Dependencies**:
**Language/Version**: TypeScript 5.x (NestJS 11) + Next.js 16
**Primary Dependencies**:
- Backend: NestJS, TypeORM, ioredis (Redis), axios (Ollama HTTP)
- Frontend: React, TanStack Query, shadcn/ui components
**Storage**: MariaDB 11.8 (Intent Definitions/Patterns), Redis (Cache), Ollama (LLM)
**Testing**: Jest (Backend Unit/Integration), Vitest (Frontend Unit), Playwright (E2E)
**Target Platform**: QNAP NAS (Docker), Admin Desktop (Ollama)
**Project Type**: Web application (Backend + Frontend)
**Performance Goals**:
- Frontend: React, TanStack Query, shadcn/ui components
**Storage**: MariaDB 11.8 (Intent Definitions/Patterns), Redis (Cache), Ollama (LLM)
**Testing**: Jest (Backend Unit/Integration), Vitest (Frontend Unit), Playwright (E2E)
**Target Platform**: QNAP NAS (Docker), Admin Desktop (Ollama)
**Project Type**: Web application (Backend + Frontend)
**Performance Goals**:
- Pattern Match: < 10ms (cache hit), < 50ms (cache miss)
- LLM Fallback: < 2000ms (รวม Pattern Check)
**Constraints**:
**Constraints**:
- GPU Budget: RTX 2060 Super 8GB (ใช้ร่วมกับ RAG, OCR, Embedding)
- LLM Semaphore: Max 3 concurrent calls
- Bilingual Input: ไทย/อังกฤษปน + typo tolerance
**Scale/Scope**:
**Scale/Scope**:
- 12 Intent Definitions (v1)
- 50+ concurrent users
- 70-80% Pattern Hit Rate target
@@ -146,7 +146,7 @@ frontend/
**หัวข้อที่ต้อง Research**:
1. Redis Cache Strategy สำหรับ Patterns (TTL + Invalidation)
2. Ollama HTTP API Integration (gemma4:e4b Q8_0)
2. Ollama HTTP API Integration (gemma4:e2b)
3. Semaphore Pattern ใน NestJS (p-limit หรือ RxJS)
4. Regex Validation ใน TypeORM/Class-Validator
@@ -1,13 +1,13 @@
# Quick Start: Intent Classification System
**Feature**: 224-intent-classification
**Feature**: 224-intent-classification
**Date**: 2026-05-19
---
## Prerequisites
- Ollama Server บน Admin Desktop (Desk-5439) พร้อม Model `gemma4:e4b`
- Ollama Server บน Admin Desktop (Desk-5439) พร้อม Model `gemma4:e2b`
- Redis Server พร้อมใช้งาน
- Database Schema อัปเดตผ่าน SQL Delta
@@ -56,7 +56,7 @@ INSERT INTO ai_intent_definitions (intent_code, description_th, description_en,
```env
# Ollama Configuration
OLLAMA_BASE_URL=http://192.168.10.10:11434
OLLAMA_MODEL=gemma4:e4b
OLLAMA_MODEL=gemma4:e2b
OLLAMA_TIMEOUT_MS=5000
# Intent Classification
@@ -1,8 +1,8 @@
# Feature Specification: Intent Classification System
**Feature Branch**: `224-intent-classification`
**Created**: 2026-05-19
**Status**: Draft
**Feature Branch**: `224-intent-classification`
**Created**: 2026-05-19
**Status**: Draft
**Input**: ADR-024 Intent Classification Strategy + CONTEXT.md AI Runtime Layer
---
@@ -93,7 +93,7 @@
- **FR-004**: ระบบต้องรองรับ Pattern Type 2 แบบ: `keyword` (case-insensitive includes) และ `regex` (RegExp.test)
- **FR-005**: ระบบต้องมี Caching Layer ด้วย Redis (Key: `ai:intent:patterns:active`, TTL: 300 วินาที) เพื่อลดการ Query DB
- **FR-006**: ระบบต้องทำ Pattern Matching ตามลำดับ Priority (ASC) — Pattern ที่มี priority ต่ำกว่าจะถูกตรวจสอบก่อน
- **FR-007**: หากไม่มี Pattern Match → ระบบต้องเรียก LLM Fallback (Ollama gemma4:e4b Q8_0) แบบ Synchronous
- **FR-007**: หากไม่มี Pattern Match → ระบบต้องเรียก LLM Fallback (Ollama gemma4:e2b) แบบ Synchronous
- **FR-008**: LLM Fallback ต้องใช้ Semaphore จำกัด Concurrent Calls สูงสุด 3 รายการพร้อมกัน
- **FR-009**: ระบบต้อง Validate Confidence Score จาก LLM และ Override เป็น `FALLBACK` หาก confidence < 0.4
- **FR-010**: ระบบต้องบันทึกทุก Classification Request ลง `ai_audit_logs` โดยมีข้อมูล: input, output, method, latency, projectPublicId, userPublicId
@@ -128,7 +128,7 @@
### Dependencies
- Ollama Server บน Admin Desktop (Desk-5439) พร้อม Model gemma4:e4b Q8_0
- Ollama Server บน Admin Desktop (Desk-5439) พร้อม Model gemma4:e2b
- Redis Cache Server พร้อมใช้งาน
- Database Schema ตาราง `ai_intent_definitions` และ `ai_intent_patterns` (เพิ่มผ่าน SQL Delta)
- AI Gateway Module ที่มีอยู่แล้ว (ADR-023A)