690524:1919 ADR-028-228-migration #04
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user