690619:1226 240 #03
This commit is contained in:
@@ -34,4 +34,6 @@
|
||||
| 2026-06-18 | v1.9.10 | Feature-238 OCR AI Prompt Separation — SandboxTabs โหลด active prompts ทั้ง ocr_system + ocr_extraction, แสดง prompt info ทั้ง 2 steps, ส่ง active version ที่ถูกต้อง | ✅ Complete |
|
||||
| 2026-06-18 | v1.9.10 | VRAM Monitor Fix — Backend ส่ง loadedModels พร้อม vramUsageMB, frontend รองรับ format ใหม่, แสดง VRAM usage ถูกต้อง | ✅ Complete |
|
||||
| 2026-06-19 | v1.9.10 | Feature-240 AI Admin Console Collapsible Cards — เพิ่มปุ่มและฟังก์ชันพับ/คลี่การ์ดและเซกชัน พร้อมบันทึกสถานะลง localStorage และรักษา background query polling | ✅ Complete |
|
||||
| 2026-06-19 | v1.9.10 | Deployment Timeout Fix — Added clamav health check before recreation (skip if healthy), increased CI timeout 20→30 min | ✅ Complete |
|
||||
| 2026-06-19 | v1.9.10 | AI Admin Response Normalization — recursive data unwrap for VRAM/prompt payloads, fixed Sandbox `.map()` crash and false OOM Guard | ✅ Complete |
|
||||
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
# Session — 2026-06-19 (AI Admin Response Normalization)
|
||||
|
||||
## Summary
|
||||
|
||||
แก้ bug หน้า `admin/ai` เมื่อกดแท็บ `3-Step Pipeline Sandbox` แล้วขึ้น `Admin Panel Error e.map is not a function` และแก้ VRAM GPU Monitor ที่แสดง `0 MB / 0 MB` แต่ขึ้น `หน่วยความจำไม่เพียงพอ (OOM Guard)` ผิดสถานะ
|
||||
|
||||
## ปัญหาที่พบ (Root Cause)
|
||||
|
||||
Frontend AI Admin service unwrap API response ได้เพียงชั้นเดียว ทำให้ response ที่ถูกห่อ `data` ซ้อนกันอ่านค่า VRAM เป็น `0/0` และ prompt list กลายเป็น object แทน array ก่อนส่งเข้า component ที่ใช้ `.find()` / `.map()`
|
||||
|
||||
## การแก้ไข (Fix)
|
||||
|
||||
| ไฟล์ | การเปลี่ยนแปลง |
|
||||
| ---- | --------------- |
|
||||
| `frontend/lib/services/admin-ai.service.ts` | เพิ่ม recursive `extractData()` สำหรับ API envelope ซ้อนกัน และปรับ VRAM unknown capacity (`totalVRAMMB = 0`) ไม่ให้แสดง OOM Guard |
|
||||
| `frontend/lib/services/admin-ai-prompt.service.ts` | เพิ่ม response normalization ให้ `getPrompts()` คืน array เสมอ และ unwrap response สำหรับ create/activate/update note |
|
||||
| `frontend/lib/services/__tests__/admin-ai.service.test.ts` | เพิ่ม regression tests สำหรับ VRAM double-wrapper, unknown VRAM, prompt list wrapper, และ non-array prompt payload |
|
||||
|
||||
## กฎที่ Lock แล้ว
|
||||
|
||||
- AI Admin frontend service ต้อง normalize API response envelope ที่อาจซ้อน `data` ก่อนส่งให้ UI render
|
||||
- `totalVRAMMB = 0` ใน frontend หมายถึง capacity unknown ไม่ใช่ OOM; ห้ามแสดง OOM Guard จากข้อมูล VRAM ที่ไม่รู้ total
|
||||
|
||||
## Verification
|
||||
|
||||
- [x] `pnpm --filter lcbp3-frontend exec vitest run lib/services/__tests__/admin-ai.service.test.ts components/admin/ai/__tests__/SandboxTabs.test.tsx components/admin/ai/__tests__/sandbox-tabs.test.tsx` ผ่าน 3 files / 9 tests
|
||||
- [x] `pnpm --filter lcbp3-frontend exec tsc --noEmit` ผ่าน
|
||||
- [x] `git diff --check -- frontend/lib/services/admin-ai.service.ts frontend/lib/services/admin-ai-prompt.service.ts frontend/lib/services/__tests__/admin-ai.service.test.ts` ผ่าน
|
||||
@@ -0,0 +1,34 @@
|
||||
# Session — 2026-06-19 (Deployment Timeout Fix)
|
||||
|
||||
## Summary
|
||||
|
||||
Fixed CI/CD deployment timeout issue caused by ClamAV container recreation taking 5+ minutes during healthcheck, causing SSH connection to timeout before deployment completed.
|
||||
|
||||
## ปัญหาที่พบ (Root Cause)
|
||||
|
||||
**Error:** `context deadline exceeded` during container recreation on QNAP
|
||||
|
||||
**Root Cause:**
|
||||
- CI workflow SSH timeout: `ConnectTimeout=30` + `ServerAliveCountMax=10` (5 minutes total keepalive)
|
||||
- ClamAV healthcheck `start_period: 300s` (5 minutes) before it's considered healthy
|
||||
- Backend depends on clamav being healthy before starting
|
||||
- `docker compose up -d --force-recreate` recreates clamav first, which takes 5+ minutes to become healthy
|
||||
- No output during this period → SSH connection times out
|
||||
|
||||
## การแก้ไข (Fix)
|
||||
|
||||
| ไฟล์ | การเปลี่ยนแปลง |
|
||||
| -------------- | ---------------------- |
|
||||
| `scripts/deploy.sh` | Added clamav health check before recreation - if healthy, only recreate backend/frontend (skip 5-minute delay) |
|
||||
| `.gitea/workflows/ci-deploy.yml` | Increased CI timeout from 20 to 30 minutes as safety net |
|
||||
|
||||
## กฎที่ Lock แล้ว
|
||||
|
||||
- **D18:** Deploy script must check ClamAV health status before recreation to avoid unnecessary 5-minute healthcheck delay
|
||||
- **D19:** CI timeout should be at least 30 minutes to accommodate ClamAV startup if full recreation is needed
|
||||
|
||||
## Verification
|
||||
|
||||
- [ ] Deploy script tested locally to verify clamav health check logic
|
||||
- [ ] CI workflow tested with new timeout setting
|
||||
- [ ] Next deployment completes without SSH timeout
|
||||
Reference in New Issue
Block a user