6.7 KiB
6.7 KiB
Walkthrough: Context-Aware Prompt Templates & Database Typo CC Cleanup
โปรเจกต์ได้รับการดำเนินการอิมพลีเมนต์คุณสมบัติ Context-Aware Prompt Templates (ADR-030) และล้างข้อมูลช่องว่างในประเภทผู้รับ CC ('CC ') ได้สำเร็จลุล่วง 100% พร้อมผ่านการทดสอบและการตรวจสอบประเภทอย่างสมบูรณ์แบบ
การเปลี่ยนแปลงหลัก (Changes Made)
1. Database & Schema Alignment (ADR-009)
- [Modify] schema-02-tables.sql
- แก้ไขบรรทัดที่ 338 ของโครงสร้างตารางหลักเพื่อล้างช่องว่างของ ENUM: จาก
ENUM('TO', 'CC ')เป็นENUM('TO', 'CC')
- แก้ไขบรรทัดที่ 338 ของโครงสร้างตารางหลักเพื่อล้างช่องว่างของ ENUM: จาก
- [NEW] 2026-05-27-add-context-aware-prompts-and-cleanup.sql
- คำสั่ง SQL Delta สำหรับปรับปรุงข้อมูล CC เก่า ลบช่องว่าง และเพิ่มฟิลด์
context_configJSON ในตารางai_promptsรวมถึงการ Seed Prompt ภาษาไทยเวอร์ชัน 2
- คำสั่ง SQL Delta สำหรับปรับปรุงข้อมูล CC เก่า ลบช่องว่าง และเพิ่มฟิลด์
- [NEW] 2026-05-27-add-context-aware-prompts-and-cleanup.rollback.sql
- คำสั่งสำหรับย้อนกลับ Schema และข้อมูลในกรณีที่มีการถอยทัพ
2. Backend Modules & Entities Update (ADR-030)
- [Modify] ai-prompts.entity.ts
- เพิ่มคอลัมน์
contextConfigและทำการแมปลงฐานข้อมูล
- เพิ่มคอลัมน์
- [Modify] create-ai-prompt.dto.ts / ai-prompt-response.dto.ts
- รองรับฟิลด์
contextConfigสำหรับการป้อนข้อมูลและแสดงผลลัพธ์
- รองรับฟิลด์
- [Modify] ai-prompts.service.ts
- เพิ่มฟังก์ชัน
resolveContext()เพื่อสกัดและเตรียม Master Data (Projects, Organizations, Disciplines, CorrespondenceTypes, Tags) สอดคล้องกับ filter คอนฟิกใน template - บังคับใช้ Gatekeeper Security Rule ด้วยการโยน
ForbiddenExceptionทันทีที่พบการพยายามร้องขอ override project UUID นอกขอบเขตของโครงการที่ผูกไว้ใน prompt template
- เพิ่มฟังก์ชัน
- [Modify] ai-batch.processor.ts
- ปรับการดึงข้อมูล
master_data_contextไปแมปใน OCR Prompt เอนจิ้นอย่างไดนามิก - ปรับการวิเคราะห์ผลลัพธ์ JSON ของ AI รองรับโครงสร้างผู้รับเอกสารแบบใหม่เป็น Object Array เพื่อความเสถียรและทนทานของข้อมูล
- ปรับการดึงข้อมูล
- [Modify] ai-batch.processor.spec.ts
- เพิ่มการ Mock เมธอด
getActiveและresolveContextเพื่อป้องกันปัญหาTypeErrorใน unit tests
- เพิ่มการ Mock เมธอด
3. Frontend Alignment
- [Verify] detail.tsx
- ยืนยันการใช้งานฟังก์ชัน
normalizeRecipientTypeซึ่งครอบคลุมการล้างช่องว่างจากการกรองผู้รับ TO/CC ได้อย่างมีประสิทธิภาพอยู่แล้ว
- ยืนยันการใช้งานฟังก์ชัน
ผลการทดสอบและการตรวจสอบ (Validation Results)
1. การตรวจสอบการ Compile ของโค้ด (Type Verification Build)
- รันคำสั่งตรวจสอบประเภทโค้ด Backend:
pnpm --filter backend build - ผลลัพธ์: Compile สำเร็จ 100% ไม่มีข้อผิดพลาดด้าน TypeScript (Strict Mode Compliant)
2. ชุดการทดสอบระบบ (Jest Unit & Integration Test Suites)
- เพิ่มและปรับปรุงชุดการทดสอบใน:
- ai-prompts.service.spec.ts: ครอบคลุมการทดสอบดึงข้อมูล context, โยน
NotFoundExceptionและการล็อคสิทธิ์ความปลอดภัยป้องกันการเจาะข้อมูลข้ามโครงการด้วยForbiddenException
- ai-prompts.service.spec.ts: ครอบคลุมการทดสอบดึงข้อมูล context, โยน
- รันชุดทดสอบทั้งหมดใน AI Module:
npm run test -- src/modules/ai/ - ผลลัพธ์:
ผ่านการทดสอบทั้งหมด 100% ปราศจาก regression บัค!
Test Suites: 60 passed, 60 total Tests: 521 passed, 521 total Snapshots: 0 total Time: 50.15 s Ran all test suites.
สรุปสถานะความเสถียร (Stability Summary)
การอิมพลีเมนต์คุณสมบัติตาม ADR-030 และ ** whitespace cleanup ของ CC ** ได้รับการยอมรับผ่านกระบวนการตรวจสอบคุณภาพโค้ดระดับสูงของโปรเจกต์ DMS และพร้อมแล้วสำหรับการนำไปใช้งานจริงบนสภาพแวดล้อม QNAP Container Station และการเชื่อมต่อผ่าน n8n workflow ต่อไป