ตารางความสอดคล้องกับ TOR (Traceability Matrix)
ข้อกำหนดทั้ง 200 ข้อ เชื่อมโยงกับหน้าจอ เอกสาร หรือสคริปต์ที่พัฒนาจริง
รวม200
แสดง 200 จาก 200 ข้อ
2 วัตถุประสงค์ (6)
| ข้อ | ข้อกำหนด | หน้าจอ / ไฟล์ | สถานะ | หมายเหตุ |
|---|---|---|---|---|
| 2.1 | แชตบอต AI เถรวาท อ้างอิงตรวจสอบย้อนกลับได้ | /chat | ทำแล้ว | RAG + Citation ทำงานจริงกับ LLM จริง (Typhoon typhoon-v2.5-30b-a3b-instruct) บนข้อความคัมภีร์จริง; ผลประเมินตามเกณฑ์ตรวจรับดู /admin/evaluation |
| 2.2 | ระบบสืบค้น/บริหารฐานองค์ความรู้ | /admin/knowledge-base | บางส่วน | Pipeline นำเข้า/สืบค้น/บริหารครบ; ฐานองค์ความรู้ข้อความจริง 400 เอกสาร / 6,122 chunks: พระไตรปิฎกฉบับหลวง (วินัย/สุตตันตะ/อภิธรรม 12 เล่ม) + บาลี + อรรถกถาแปล มมร. + ฉบับแปลอังกฤษ CC0 + ตำราหลักสูตรนักธรรม 18 เรื่อง + หนังสือธรรมศึกษาชั้นตรี/โท/เอก (OCR); ยังไม่ใช่ฉบับ มมร. ครบ 91 เล่ม (รอไฟล์จากมหาวิทยาลัย) |
| 2.3 | ระบบประเมินคุณภาพ AI ต่อเนื่อง | /admin/evaluation | ทำแล้ว | 7 ชุด 3 workflow บันทึกเวอร์ชัน เปรียบเทียบรอบ |
| 2.4 | เว็บไซต์ให้บริการ แสดงคำตอบพร้อมอ้างอิง | /chat | ทำแล้ว | คำตอบ 2 ส่วน + modal + responsive |
| 2.5 | ส่งเสริมการเข้าถึงองค์ความรู้ทุกกลุ่ม | / | ทำแล้ว | 2 ภาษา, contrast, dark/light, mobile |
| 2.6 | โครงสร้างพื้นฐาน AI ขยาย/ต่อยอดได้ | /admin/ai-config | ทำแล้ว | LlmGateway/SearchGateway/RerankerGateway สลับผ่าน config |
4.1 การวางแผนและบริหารโครงการ (3)
| ข้อ | ข้อกำหนด | หน้าจอ / ไฟล์ | สถานะ | หมายเหตุ |
|---|---|---|---|---|
| 4.1.1 | แผนดำเนินงาน + Milestone ตรงข้อ 6/7 | /documents/project-plan | ทำแล้ว | Gantt (mermaid) 3 งวด 60/240/365 วัน + critical path |
| 4.1.2 | โครงสร้างทีมงาน บทบาท ช่องทางติดต่อ | /documents/team-structure | ทำแล้ว | PM/AI Eng/Sr SE/UX-UI ตามข้อ 3.12 + Ba/Qa/Tech lead |
| 4.1.3 | แผนบริหารความเสี่ยง | /documents/risk-plan | ทำแล้ว | ความเสี่ยงเฉพาะ AI: ไฟล์ 91 เล่มเป็น scan, บาลี embedding, benchmark ไม่ผ่าน |
4.2 การศึกษา วิเคราะห์ และออกแบบระบบ (2)
| ข้อ | ข้อกำหนด | หน้าจอ / ไฟล์ | สถานะ | หมายเหตุ |
|---|---|---|---|---|
| 4.2.1 | รวบรวมความต้องการ | /documents/requirements-summary | ทำแล้ว | ตารางความต้องการ map กับ clause |
| 4.2.2 | SRS: FR/NFR, Workflow, Architecture, Data Dictionary, User Flow/Wireframe, OpenAPI 3.0 | /documents/srs | ทำแล้ว | Data Dictionary สร้างจาก `schema.prisma`; OpenAPI ที่ `/api/openapi.json` |
4.3 UX/UI (3)
| ข้อ | ข้อกำหนด | หน้าจอ / ไฟล์ | สถานะ | หมายเหตุ |
|---|---|---|---|---|
| 4.3.1 | ออกแบบ Layout/UX/UI | / | ทำแล้ว | — |
| 4.3.2 | Prototype หน้าจอหลัก | /documents/ux-deliverables | บางส่วน | ใช้หน้าจอจริง + ภาพจาก Playwright screenshot แทน Figma |
| 4.3.3 | อัตลักษณ์ มมร./Dhammaverse + Responsive | / | บางส่วน | ยึด www.mbu.ac.th; Dhammaverse ยังเข้าไม่ได้ |
4.4 การพัฒนาระบบ (8)
| ข้อ | ข้อกำหนด | หน้าจอ / ไฟล์ | สถานะ | หมายเหตุ |
|---|---|---|---|---|
| 4.4 | พัฒนาครบตาม SRS/ภาคผนวก ก | /tor | บางส่วน | ดูสถานะรายข้อ |
| 4.4.1 | Frontend Website (ก.3) | /chat | ทำแล้ว | — |
| 4.4.2 | Backend & AI Engine (ก.4) | /chat | ทำแล้ว | RAG Trace แสดงทุกขั้น |
| 4.4.3 | AI Evaluation (ก.5) | /admin/evaluation | ทำแล้ว | — |
| 4.4.4 | Admin Portal (ก.6) | /admin | ทำแล้ว | — |
| 4.4.5 | Dashboard & Report (ก.7) | /admin/dashboard | ทำแล้ว | — |
| 4.4.6 | เปลี่ยน LLM/องค์ประกอบ AI โดยไม่กระทบระบบ | /admin/ai-config | ทำแล้ว | สลับ adapter ผ่าน DB config ไม่ redeploy |
| 4.4.7 | ติดตั้งบน Cloud ของมหาวิทยาลัย | /documents/deployment-guide | ยังไม่ทำ | sandbox ไม่มีบัญชีคลาวด์/kubectl; มี Helm chart + Deployment Guide ที่ใช้ได้เมื่อมหาวิทยาลัยส่งมอบ cluster |
4.5 นำเข้าข้อมูล/ฐานองค์ความรู้ (3)
| ข้อ | ข้อกำหนด | หน้าจอ / ไฟล์ | สถานะ | หมายเหตุ |
|---|---|---|---|---|
| 4.5.1 | Data Ingestion Plan | /documents/data-ingestion-plan | ทำแล้ว | รูปแบบไฟล์, chunking, metadata, citation, ตรวจความครบ |
| 4.5.2 | นำเข้าเอกสารตามภาคผนวก ข | /admin/knowledge-base | บางส่วน | ฐานองค์ความรู้ข้อความจริง 400 เอกสาร / 6,122 chunks: พระไตรปิฎกฉบับหลวง (วินัย/สุตตันตะ/อภิธรรม 12 เล่ม) + บาลี + อรรถกถาแปล มมร. + ฉบับแปลอังกฤษ CC0 + ตำราหลักสูตรนักธรรม 18 เรื่อง + หนังสือธรรมศึกษาชั้นตรี/โท/เอก (OCR); ครอบคลุมฉบับ มมร. 6/91 เล่มตาม mbuVolume — ไม่มีไฟล์ 91 เล่มใน sandbox |
| 4.5.3 | Search Index Update Pipeline | /admin/knowledge-base/jobs | ทำแล้ว | เพิ่ม/แก้/ลบ/re-index โดยไม่แก้โค้ด |
4.6 โครงสร้างพื้นฐานและ DevOps (3)
| ข้อ | ข้อกำหนด | หน้าจอ / ไฟล์ | สถานะ | หมายเหตุ |
|---|---|---|---|---|
| 4.6.1 | ค่า Cloud/LLM API แยกจากวงเงิน | /documents/contract-summary | ทำแล้ว | ข้อกำหนดเชิงสัญญา; ระบบออกแบบให้มหาวิทยาลัยใส่คีย์ LLM เองใน `.env` |
| 4.6.2 | แยก Dev/Production | /documents/deployment-guide | บางส่วน | `.env.development`/`.env.production` + DB แยก; namespace dev/test/prod ใน Helm; ไม่มี cloud จริง |
| 4.6.3 | CI/CD GitHub + Rollback | .github/workflows/ci-cd.yml | บางส่วน | workflow จริง + `helm rollback` step; ยังไม่รันบน GitHub Actions เพราะ sandbox ไม่ผูก repo/cloud |
4.7 การทดสอบ (9)
| ข้อ | ข้อกำหนด | หน้าจอ / ไฟล์ | สถานะ | หมายเหตุ |
|---|---|---|---|---|
| 4.7.1 | Master Test Plan + Test Case + Traceability กับ SRS | /documents/master-test-plan | ทำแล้ว | ตาราง test case ↔ FR-id |
| 4.7.2 | Checklist ประสิทธิภาพ/ความปลอดภัย | /documents/test-checklist | ทำแล้ว | รวม DGA 3.0 + OWASP + มาตรฐาน 2568 |
| 4.7.3 | Unit Test Coverage ≥80% ไม่นับ config | /documents/coverage-report | ทำแล้ว | vitest coverage-v8 จริงเฉพาะ src/domain + src/application: lines 97.9%, statements 95.7%, branches 85.8% (≥80%) — /documents/coverage-report |
| 4.7.4 | Functional + SIT บน Test Env | /documents/test-reports-index | บางส่วน | `npm run test:sit` บน test.db + Playwright; ไม่มี Test Environment บนคลาวด์ |
| 4.7.5 | Regression อัตโนมัติทุก API + CTA | /documents/test-reports-index | ทำแล้ว | openapi-coverage: ทุก path+method ใน /api/openapi.json (107 รายการ) ถูกเรียกจริงในชุดทดสอบ (runtime) + ตรวจแบบ static ใน tests/api/openapi-coverage.test.ts |
| 4.7.6 | Performance ≥500 concurrent | /documents/performance-report | บางส่วน | วัดจริงบนเครื่องเดียว (dev server): health/หน้าเว็บ 10/50/100 concurrent error 0%, แชตกับ LLM จริง 5/10/20 concurrent TTFT p95 ≤ 11.2 วินาที error 0%; ผลที่ 500 concurrent เป็นการประมาณ — ดู performance-report |
| 4.7.7 | Baseline + Acceptance Evaluation ≥2 ครั้ง | /admin/evaluation | ทำแล้ว | รัน Baseline (qa-persona v1) และ Acceptance (v2) กับ Typhoon จริงครบ 7 ชุด เมื่อ 3 ต.ค. 2569 — ผ่านเกณฑ์ขั้นต่ำทุกชุด (ดู /documents/baseline-evaluation-report) |
| 4.7.8 | UAT + Defect Log (ไม่มี High/Critical ค้าง) | /admin/defect-log | บางส่วน | DefectLog ทำงานจริง + กฎห้ามปิด High/Critical ไม่มี resolution; UAT กับผู้ใช้จริงไม่เกิดใน sandbox |
| 4.7.9 | รายงานทดสอบ + ชุดทดสอบ + ไฟล์ CI/CD ส่งมอบพร้อม Source | /documents/test-reports-index | ทำแล้ว | รวมลิงก์รายงานทุกฉบับ + วิธีรันซ้ำ |
4.8 ความมั่นคงปลอดภัย (2)
| ข้อ | ข้อกำหนด | หน้าจอ / ไฟล์ | สถานะ | หมายเหตุ |
|---|---|---|---|---|
| 4.8.1 | Vulnerability Scan + รายงาน + ไม่มี High/Critical | /documents/vulnerability-scan-report | บางส่วน | สแกนจริงด้วย npm audit: Critical 0, High 4 ใน production deps (prisma, @prisma/config, deepmerge-ts, postcss ใน next) — แก้ได้ด้วยการอัปเกรด next/prisma เวอร์ชันหลักหรือ overrides; บันทึกใน Defect Log แล้ว |
| 4.8.2 | Penetration Testing ≥1 ครั้ง + แก้ + ทดสอบซ้ำ | /documents/pentest-report | ยังไม่ทำ | ไม่ได้ทดสอบเจาะระบบในรอบสาธิตนี้ตามคำสั่งของผู้ว่าจ้าง; จะดำเนินการโดยผู้ทดสอบอิสระอย่างน้อย 1 ครั้งก่อนใช้งานจริง พร้อมแก้ไขและทดสอบซ้ำ — รายงานแสดงมาตรการและขอบเขตที่วางแผนไว้ |
4.9 ประชุม/รายงานความก้าวหน้า (3)
| ข้อ | ข้อกำหนด | หน้าจอ / ไฟล์ | สถานะ | หมายเหตุ |
|---|---|---|---|---|
| 4.9.1 | ประชุม + รายงานการประชุมใน 7 วันทำการ | /documents/meeting-minutes-template | บางส่วน | แม่แบบ + ตัวอย่างกรอกจริง; ไม่มีการประชุมจริง |
| 4.9.2 | Progress Report ทุก 30 วัน | /documents/progress-report-template | บางส่วน | แม่แบบ + ตัวอย่างจาก Phase ที่ทำจริง |
| 4.9.3 | รายงานสรุปประจำงวด | /documents/periodic-summary-template | บางส่วน | — |
4.10 ฝึกอบรม/คู่มือ (3)
| ข้อ | ข้อกำหนด | หน้าจอ / ไฟล์ | สถานะ | หมายเหตุ |
|---|---|---|---|---|
| 4.10.1 | ฝึกอบรม ≥1 ครั้ง + คู่มืออบรมภาษาไทย | /documents/training-materials | บางส่วน | สไลด์+สคริปต์+แบบฝึก; ไม่มีการอบรมจริง |
| 4.10.2 | คู่มือผู้ใช้ + คู่มือผู้ดูแล | /documents/user-manual | ทำแล้ว | และ `/documents/admin-manual` |
| 4.10.3 | เอกสารประกอบระบบ/ถ่ายทอด | /documents/system-documentation | ทำแล้ว | — |
4.11 ส่งมอบ/ถ่ายโอน (3)
| ข้อ | ข้อกำหนด | หน้าจอ / ไฟล์ | สถานะ | หมายเหตุ |
|---|---|---|---|---|
| 4.11.1 | ส่งมอบ Source/Config/Prompt/Benchmark | /documents/system-documentation | ทำแล้ว | ทุกอย่างใน repo: `config/prompts/`, `seed/benchmarks/*.csv` |
| 4.11.2 | Transition Plan + Deployment Guide + Backup Guide | /documents/transition-plan | ทำแล้ว | และ `/documents/deployment-guide`, `/documents/backup-restore-guide` |
| 4.11.3 | ลบ/ทำลายข้อมูล + หนังสือรับรอง | /admin/data-destruction | ทำแล้ว | ลบจริง + ใบรับรอง sha256 |
5–7 วงเงิน กำหนดเวลา งวดงาน (19)
| ข้อ | ข้อกำหนด | หน้าจอ / ไฟล์ | สถานะ | หมายเหตุ |
|---|---|---|---|---|
| 5 | วงเงิน 5,000,000 บาท | /documents/contract-summary | ทำแล้ว | เอกสาร |
| 6 | ส่งมอบใน 365 วัน | /documents/contract-summary | ทำแล้ว | — |
| 7.1.1 | งวด 1: แผนงาน/ทีม/ความเสี่ยง | /documents/project-plan | ทำแล้ว | — |
| 7.1.2 | งวด 1: SRS | /documents/srs | ทำแล้ว | — |
| 7.1.3 | งวด 1: User Flow/Wireframe/Prototype | /documents/ux-deliverables | ทำแล้ว | — |
| 7.1.4 | งวด 1: Master Test Plan/Test Case/Checklist | /documents/master-test-plan | ทำแล้ว | — |
| 7.1.5 | งวด 1: รายงานประชุม/ความก้าวหน้า/สรุปงวด | /documents/periodic-summary-template | บางส่วน | แม่แบบ |
| 7.2.1 | งวด 2: Frontend บน Production | /chat | บางส่วน | รัน localhost |
| 7.2.2 | งวด 2: Backend & AI Engine บน Production | /chat | บางส่วน | รัน localhost |
| 7.2.3 | งวด 2: Evaluation + Benchmark ครบ + Baseline Report | /documents/baseline-evaluation-report | ทำแล้ว | รายงานสร้างจาก run จริง (Acceptance ล่าสุด): DS-1 94% · NT-2 2.60 · RET 90/90/96% · GR-1 99% · GR-2 100% — ผ่านเกณฑ์ TOR และค่ารับประกันทุกชุด; รายงานรายข้อ /documents/evaluation-items-report |
| 7.2.4 | งวด 2: Data Ingestion Plan | /documents/data-ingestion-plan | ทำแล้ว | — |
| 7.2.5 | งวด 2: รายงานนำเข้า ≥20% | /documents/ingestion-report | บางส่วน | รายงานสร้างจริงจาก DB (npm run report:ingestion) — คลังเป็นส่วนหนึ่งของพระไตรปิฎกฉบับออนไลน์ ยังไม่ใช่ 20% ของไฟล์ 91 เล่ม มมร. |
| 7.2.6 | งวด 2: รายงาน Vuln Scan/Pentest | /documents/vulnerability-scan-report | บางส่วน | รายงาน Vulnerability Scan สร้างจริง (High 4 รอการอัปเกรด); Pentest ยังไม่ดำเนินการตามคำสั่งผู้ว่าจ้าง — ดู /documents/pentest-report |
| 7.2.7 | งวด 2: รายงาน AI Security/Guardrail Testing | /documents/guardrail-security-report | ทำแล้ว | รัน GR-1 (100%), GR-2 (100%) และชุด prompt injection ภายใน 20 เคส (direct/indirect/role-play/encoding ป้องกันได้ 20/20) กับ LLM จริง — export จาก /admin/evaluation/security-report |
| 7.2.8 | งวด 2: Production Beta + สาธิต + บัญชีให้กรรมการ | /login | บางส่วน | บัญชี demo 4 บทบาท; ไม่มี production |
| 7.2.9 | งวด 2: รายงานประชุม/ความก้าวหน้า | /documents/progress-report-template | บางส่วน | — |
| 7.3 | งวด 3: ส่งมอบครบถ้วน นำเข้าครบ อบรม ถ่ายโอน | /tor | บางส่วน | ครบในขอบเขต demo; สถานะสิ้นสุดโครงการจริงยังไม่เกิด |
| 7.4 | เงื่อนไขจ่ายเงินตามงวด | /documents/contract-summary | ทำแล้ว | — |
| 7.5 | เอกสาร 2 ชุด + PDF + ไฟล์ต้นฉบับแก้ไขได้ | /documents | ทำแล้ว | .md (ต้นฉบับ) + พิมพ์ PDF ทุกฉบับ |
10–16 ค่าปรับ / รับประกัน / SLA / ความลับ / PDPA / IP / อื่น ๆ (22)
| ข้อ | ข้อกำหนด | หน้าจอ / ไฟล์ | สถานะ | หมายเหตุ |
|---|---|---|---|---|
| 10.1 | ค่าปรับส่งมอบล่าช้า 0.10%/วัน | /documents/contract-summary | ทำแล้ว | — |
| 10.2 | ค่าปรับแก้ไขล่าช้า 0.025%/ชม. | /admin/defect-log | ทำแล้ว | DefectLog คำนวณชั่วโมงเกิน SLA และค่าปรับประมาณการ |
| 11.1 | รับประกัน ≥365 วัน แก้ไขไม่คิดค่าใช้จ่าย | /documents/contract-summary | ทำแล้ว | — |
| 11.2 | ช่องทางติดต่อช่วงรับประกัน (อีเมล/โทร/เร่งด่วน) | /help | ทำแล้ว | หน้า help แสดงช่องทาง + ในเอกสาร |
| 12.1 | Availability ≥95%/เดือน | /admin/sla-report | บางส่วน | คำนวณจาก uptime ของ session demo |
| 12.2 | FCP ≤5s / TTFT ≤15s / Error ≤5% ที่ p95 | /documents/performance-report | บางส่วน | วัดจริงระดับเครื่องเดียว: FCP p95 ≤ 1.8 วินาที, TTFT p95 11.2 วินาทีที่ 20 แชตพร้อมกัน, error ≤ 0.4% — ผ่านเกณฑ์ที่ระดับ sandbox; ยังไม่ได้วัดบน production |
| 12.3 | เวลาแก้ไข สูง 24 ชม./กลาง 48 ชม./ต่ำ 10 วันทำการ | /admin/defect-log | ทำแล้ว | slaDeadline อัตโนมัติ |
| 12.4 | นับเวลาจากแจ้งจนมหาวิทยาลัยยืนยัน | /admin/defect-log | ทำแล้ว | ฟิลด์ reportedAt / resolvedAt / confirmedAt |
| 12.5 | รายงาน SLA รายเดือนภายในวันที่ 15 | /admin/sla-report | บางส่วน | export `.md` อัตโนมัติ; ข้อมูลจาก session |
| 12.6 | สิทธิเรียกค่าปรับ SLA | /documents/contract-summary | ทำแล้ว | — |
| 13 | เก็บรักษาความลับ | /documents/confidentiality-statement | ทำแล้ว | — |
| 14.1 | Data Controller/Processor | /documents/pdpa-dpa | ทำแล้ว | + ระบุใน `/privacy-policy` |
| 14.2 | Data Minimisation | /register | ทำแล้ว | เก็บเฉพาะอีเมล ชื่อแสดง provider id; ไม่ขอข้อมูลอื่น |
| 14.3 | เข้ารหัส in transit/at rest + ควบคุมสิทธิ + ปิดบัง PII | /admin/users | บางส่วน | AES-256-GCM คอลัมน์ PII + PiiMasking + TLS self-signed; KMS คลาวด์ไม่มี |
| 14.4 | สิทธิเจ้าของข้อมูล (เข้าถึง/สำเนา/ลบ/ถอนยินยอม) ผ่าน Admin | /privacy | ทำแล้ว | + `/admin/privacy-requests` |
| 15.1 | ไม่ละเมิดสิทธิผู้อื่น | /documents/ip-statement | ทำแล้ว | + รายการ license ของ dependency |
| 15.2 | กรรมสิทธิ์ตกเป็นของมหาวิทยาลัย | /documents/ip-statement | ทำแล้ว | — |
| 15.3 | ห้ามนำไปใช้เชิงพาณิชย์ | /documents/ip-statement | ทำแล้ว | — |
| 15.4 | ความรับผิดต่อการละเมิดบุคคลที่สาม | /documents/ip-statement | ทำแล้ว | — |
| 16.1 | ห้ามจ้างช่วง | /documents/general-terms | ทำแล้ว | — |
| 16.2 | ค่าเป้าหมาย/SLA เป็นส่วนของสัญญา | /admin/evaluation | ทำแล้ว | ตารางเกณฑ์ขั้นต่ำ vs ค่าที่รับประกัน แก้ได้ใน config |
| 16.3 | ลำดับเอกสารกรณีขัดแย้ง | /documents/general-terms | ทำแล้ว | — |
ก.1 คุณสมบัติทั่วไป (14)
| ข้อ | ข้อกำหนด | หน้าจอ / ไฟล์ | สถานะ | หมายเหตุ |
|---|---|---|---|---|
| ก.1.1.1 | มาตรฐานเว็บไซต์ภาครัฐ 3.0 (DGA) | /documents/test-checklist | บางส่วน | self-assessment checklist; ไม่มีการตรวจโดย สพร. |
| ก.1.1.2 | มาตรฐานความมั่นคงปลอดภัยเว็บไซต์ 2568 | /documents/test-checklist | บางส่วน | checklist + security headers + TLS |
| ก.1.1.3 | PDPA | /privacy-policy | ทำแล้ว | consent, minimisation, rights, retention, masking |
| ก.1.2.1 | Mobile: Chrome Android / Safari iOS / phone+tablet | /chat | ทำแล้ว | Playwright 390/768 + viewport meta |
| ก.1.2.2 | Desktop: Chrome/Firefox/Safari/Edge | /chat | บางส่วน | ทดสอบ Chromium ระบบเท่านั้น; ไม่มี Firefox/WebKit ใน sandbox |
| ก.1.3.1 | Microservices | infra/helm/mbu-buddhist-ai/values.yaml | บางส่วน | โค้ดแยก 8 bounded context + Helm 8 deployment; demo รัน process เดียว |
| ก.1.3.2 | Horizontal Scaling | infra/helm/mbu-buddhist-ai/templates/hpa.yaml | บางส่วน | stateless (session ใน JWT) + HPA manifest; ไม่มี cluster |
| ก.1.4.1 | Concurrent ≥500 | /documents/performance-report | บางส่วน | — |
| ก.1.4.2 | 1,000,000 บัญชี | scripts/perf/seed-perf-users.ts | บางส่วน | seed 1,000,000 บัญชีลง perf.db แล้ววัดจริง: ค้นหาด้วย emailHash p95 0.16 ms, COUNT 2.65 ms — ทดสอบระดับฐานข้อมูล SQLite ไม่ใช่ทั้งระบบบนคลาวด์ |
| ก.1.5.1 | Google Analytics หรือเทียบเท่า | / | ทำแล้ว | GA4 โหลดหลัง consent; `NEXT_PUBLIC_GA_ID` |
| ก.1.5.2 | โดเมน dhammaverse.mbu.ac.th | /documents/deployment-guide | ยังไม่ทำ | DNS ของมหาวิทยาลัยยัง resolve ไม่ได้และ sandbox ไม่มีสิทธิ์จัดการ DNS; Ingress ใน Helm ตั้ง host นี้ไว้แล้ว |
| ก.1.6.1 | Availability ≥95% | /admin/sla-report | บางส่วน | — |
| ก.1.6.2 | Auto Scaling | infra/helm/mbu-buddhist-ai/templates/hpa.yaml | ยังไม่ทำ | HPA ต้องการ Kubernetes metrics-server จริง; sandbox ไม่มี cluster; manifest ส่งมอบแล้ว |
| ก.1.6.3 | คู่มือ Backup/Restore + Restore Test ≥1 ครั้ง + รายงาน | /documents/restore-test-report | ทำแล้ว | สคริปต์ backup/restore + restore test รันจริง (ผ่าน: จำนวนแถวทุกตาราง + integrity + SHA-256 ตรงกัน) → /documents/restore-test-report |
ก.2 ความมั่นคงปลอดภัย (7)
| ข้อ | ข้อกำหนด | หน้าจอ / ไฟล์ | สถานะ | หมายเหตุ |
|---|---|---|---|---|
| ก.2.1.1 | OWASP Top 10 + OWASP Agentic | /documents/pentest-report | บางส่วน | มาตรการ OWASP Top 10 + OWASP LLM Top 10 ทำในโค้ดและมี test ครอบคลุม (mapping ใน pentest-report) แต่ยังไม่มีการทดสอบเจาะระบบโดยผู้ทดสอบอิสระ |
| ก.2.1.2 | SSL/TLS | server.https.js | บางส่วน | self-signed ใน sandbox; production ใช้ cert-manager |
| ก.2.1.3 | Server-side Input Validation (SQLi/XSS) | /api/openapi.json | ทำแล้ว | zod ทุก endpoint + Prisma parameterized + React escape |
| ก.2.1.4 | Brute Force Protection | /login | ทำแล้ว | 5 ครั้ง/15 นาที → ล็อก 15 นาที (ต่อบัญชี+IP) |
| ก.2.1.5 | CSRF Token | /login | ทำแล้ว | double-submit cookie ทุก POST/PATCH/DELETE |
| ก.2.2.1 | WAF + Anti-DDoS | infra/helm/mbu-buddhist-ai/values.yaml | ยังไม่ทำ | WAF/Anti-DDoS เป็นบริการของผู้ให้บริการคลาวด์ที่ sandbox ไม่มี; มี rate limit ระดับแอปต่อ IP (login 10, เขียน 60, อ่าน 600 ครั้ง/นาที) และตัวอย่าง annotation WAF ใน infra/helm values.yaml |
| ก.2.2.2 | Vulnerability Scan ไม่มี High/Critical ก่อนใช้งานจริง | /documents/vulnerability-scan-report | บางส่วน | npm audit: Critical 0 แต่มี High 4 รายการใน dependencies (ต้องอัปเกรด next/prisma ก่อนใช้งานจริง) — บันทึกใน Defect Log |
ก.3 เว็บไซต์ผู้ใช้งาน (20)
| ข้อ | ข้อกำหนด | หน้าจอ / ไฟล์ | สถานะ | หมายเหตุ |
|---|---|---|---|---|
| ก.3.1.1 | Contrast ≥4.5:1 / 3:1 | / | ทำแล้ว | `tests/unit/contrast.test.ts` |
| ก.3.1.2 | อัตลักษณ์สม่ำเสมอ + สอดคล้องคลังปัญญาฯ | / | บางส่วน | Dhammaverse ยังเข้าไม่ได้ |
| ก.3.1.3 | Dark/Light + ปุ่มสลับ | / | ทำแล้ว | — |
| ก.3.2.1 | ไทย/อังกฤษ + เมนูเปลี่ยนภาษา | / | ทำแล้ว | next-intl `/th` `/en` |
| ก.3.3.1 | Sign-up/Log-in | /login | ทำแล้ว | อีเมล+รหัสผ่าน |
| ก.3.3.2 | Gmail/Facebook login | /login | ทำแล้ว | OAuth 2.0 Authorization Code + PKCE จริง ทดสอบครบ flow กับ Mock Provider ภายใน (unit/API/E2E); ใส่ GOOGLE/FACEBOOK client id/secret แล้วปุ่มเปลี่ยนเป็น provider จริงทันที |
| ก.3.3.3 | สิทธิ์ Dhamma Talk แยกบัญชี ค่าเริ่มต้นปิด | /admin/users | ทำแล้ว | — |
| ก.3.4.1 | Total tokens ≤10,000,000/24 ชม. | /admin/ai-config | ทำแล้ว | หน้าต่างเลื่อน 24 ชม. จาก TokenUsage |
| ก.3.4.2 | Max Tokens ปรับได้ | /admin/ai-config | ทำแล้ว | — |
| ก.3.4.3 | Unavailable Mode เปิดโดยผู้ดูแล + แสดงข้อความ | /admin/unavailable | ทำแล้ว | — |
| ก.3.4.4 | เข้า Unavailable อัตโนมัติ margin ≤10% | /admin/ai-config | ทำแล้ว | จองโทเคนก่อนเรียก ปรับยอดจริงหลัง |
| ก.3.5.1 | ประวัติ 90 วัน ลบอัตโนมัติ ปรับได้ | /chat/history | ทำแล้ว | retentionDays config + purge job |
| ก.3.6.1 | ข้อความเตือนใต้กล่อง input | /chat | ทำแล้ว | — |
| ก.3.6.2 | คำตอบ 2 ส่วน ≤10 อ้างอิง แสดง 3 + Expand All + เตือนท้าย | /chat | ทำแล้ว | — |
| ก.3.6.3 | Citation รูปแบบมาตรฐาน + Popup Modal เนื้อหาเต็ม | /chat | ทำแล้ว | `ข.ช. (ไทย) 27/87/87` |
| ก.3.7.1 | Dhamma Talk แบบ Artifact iterative | /chat/dhamma-talk | ทำแล้ว | — |
| ก.3.7.2 | Response Modal แยก + Markdown | /chat/dhamma-talk | ทำแล้ว | textarea + react-markdown preview |
| ก.3.7.3 | แก้ไขใน Modal แล้ว AI ใช้บริบทล่าสุด | /chat/dhamma-talk | ทำแล้ว | ส่ง artifact ที่แก้แล้วกลับเป็น context |
| ก.3.7.4 | ข้อความเตือนในโหมด Dhamma Talk | /chat/dhamma-talk | ทำแล้ว | — |
| ก.3.8.1 | Feedback 👍/👎 เก็บ DB | /chat | ทำแล้ว | ตาราง Feedback + สถิติใน dashboard |
ก.4 Backend & AI Engine (25)
| ข้อ | ข้อกำหนด | หน้าจอ / ไฟล์ | สถานะ | หมายเหตุ |
|---|---|---|---|---|
| ก.4.1.1 | HTTP API | /api/openapi.json | ทำแล้ว | — |
| ก.4.1.2 | Orchestrator framework ≥10k stars + Model-agnostic | /admin/ai-config | ทำแล้ว | LangGraph.js (@langchain/langgraph) StateGraph 8 โหนด + LlmGateway (Typhoon/OpenAI-compatible/Gemini/Claude/Mock) สลับผ่าน /admin/ai-config |
| ก.4.2.1 | ≤10,000 tokens/prompt Q&A, ≤50,000 Dhamma Talk | /admin/ai-config | ทำแล้ว | ตัดบริบทอัตโนมัติ + บันทึกเทียบเป้าใน dashboard |
| ก.4.3.1 | ตอบเฉพาะพระไตรปิฎก/อรรถกถา/หลักธรรม | /admin/guardrails | ทำแล้ว | หัวข้อ scope เป็นข้อมูล |
| ก.4.3.2 | ตอบคำแนะนำแนวทางปฏิบัติ/ปรัชญาชีวิต | /admin/guardrails | ทำแล้ว | — |
| ก.4.4.1 | ป้องกัน Prompt Injection ปรับหัวข้อได้ | /admin/guardrails | ทำแล้ว | — |
| ก.4.4.2 | ป้องกัน Cost Surge (thinking budget, input ยาว) | /admin/ai-config | ทำแล้ว | maxInputChars + thinkingBudget + per-request cap |
| ก.4.4.3 | ปฏิเสธ การเมือง/เปรียบเทียบศาสนา/สุขภาพจิต | /admin/guardrails | ทำแล้ว | — |
| ก.4.5.1 | บุคลิกบรรณารักษ์ | /admin/prompts | ทำแล้ว | persona prompt v1 |
| ก.4.5.2 | ช่วยค้น/สรุป พร้อม Citation | /chat | ทำแล้ว | — |
| ก.4.5.3 | ไม่ชี้ขาดตีความ + ปฏิเสธคำถามใช่/ไม่ใช่ | /admin/guardrails | ทำแล้ว | yes/no detector + output check |
| ก.4.6.1 | Hybrid Search + Cross-lingual ไทย-บาลี-อังกฤษ | /chat | บางส่วน | BM25+pseudo-embedding+RRF+synonym ไทย-บาลี-อังกฤษ; ไม่มี Elasticsearch/bge-m3 ใน sandbox (adapter พร้อม) |
| ก.4.6.2 | Chunk เต็มข้อ ไม่ตัดตอน | /admin/knowledge-base | ทำแล้ว | invariant ใน `TipitakaChunk` |
| ก.4.6.3 | ส่ง Citations/Source Attribution ไปแสดง | /chat | ทำแล้ว | — |
| ก.4.7.1 | Re-ranker โมดูลแยก | /chat | ทำแล้ว | Re-ranker เป็นโมดูลแยก สลับผ่าน config: heuristic / llm (Typhoon listwise rerank — ค่าที่ใช้ปัจจุบัน) / tei (bge-reranker) |
| ก.4.7.2 | Query Expansion/Rewriting | /chat | ทำแล้ว | RAG Trace แสดง query ที่ขยาย |
| ก.4.7.3 | ปรับดัชนีอัตโนมัติผ่าน Pipeline | /admin/knowledge-base/jobs | ทำแล้ว | — |
| ก.4.7.4 | เอกสารนำเข้าตามภาคผนวก ข | /admin/knowledge-base | บางส่วน | นำเข้าพระไตรปิฎกฉบับหลวงบางส่วน + อรรถกถาแปล มมร. (ข้อความจริงจากฉบับออนไลน์ตามภาคผนวก ข ระยะแรก) |
| ก.4.8.1 | Ingestion รองรับ PDF/TXT/TEI-XML/DOCX | /admin/knowledge-base | ทำแล้ว | unpdf/mammoth/fast-xml-parser |
| ก.4.8.2 | Chunking: มมร. ตามหน้า+ข้อ; อื่น ๆ semantic | /admin/knowledge-base | ทำแล้ว | `ChunkingPolicy` |
| ก.4.8.3 | Metadata ปิฎก/นิกาย/สูตร/เล่ม/ข้อ/หน้า + ประเภท + Precedence | /admin/knowledge-base | ทำแล้ว | — |
| ก.4.9.1 | Prompt ไม่ hard-code, config file, versioning | /admin/prompts | ทำแล้ว | `config/prompts/*.md` + PromptVersion |
| ก.4.9.2 | Remote Configuration อัปเดตผ่านเครื่องมือ/สคริปต์ | /admin/prompts | ทำแล้ว | `npm run prompts:publish` + API |
| ก.4.10.1 | Logging เพียงพอวินิจฉัย | /admin/sla-report | ทำแล้ว | `logs/app.log` JSON + requestId + ApiRequestLog |
| ก.4.10.2 | Alerts ทางอีเมลทันทีเมื่อผิดปกติ | /admin/alerts | บางส่วน | AlertEmailLog + SMTP adapter เมื่อตั้งค่า; ไม่มี SMTP ใน sandbox |
ก.5 ระบบประเมินผล (13)
| ข้อ | ข้อกำหนด | หน้าจอ / ไฟล์ | สถานะ | หมายเหตุ |
|---|---|---|---|---|
| ก.5.1.1 | Benchmark ธรรมศึกษา ปรนัย 100 ข้อ (Accuracy) | /admin/evaluation/datasets | ทำแล้ว | ข้อสอบธรรมศึกษาสนามหลวงจริง พ.ศ. 2563 ครบ 100 ข้อ (ตรี 60/โท 20/เอก 20) พร้อมเฉลยทางการ + นำเข้า/แก้ไขผ่าน CSV ได้ |
| ก.5.1.2 | Benchmark นักธรรม short-answer 50 ข้อ (Judge) | /admin/evaluation/datasets | ทำแล้ว | ข้อสอบนักธรรมสนามหลวงจริง พ.ศ. 2562 ครบ 50 ข้อ (ตรี 20/โท 15/เอก 15) พร้อมเฉลยทางการ ให้คะแนนด้วย LLM Judge 0–3 |
| ก.5.1.3 | Retrieval #1 พระวินัยปิฎก 100 บท | /admin/evaluation/datasets | ทำแล้ว | 100 รายการจากข้อความจริงในพระวินัยปิฎก (ฉบับหลวง เล่ม 1, 4) ผูกเล่ม/ข้อที่คาดหวัง — ชุดสาธิตที่ผู้รับจ้างเรียบเรียง รอชุดทางการ 100 บทจากมหาวิทยาลัย |
| ก.5.1.4 | Retrieval #2 พระสุตตันตปิฎก 100 บท | /admin/evaluation/datasets | ทำแล้ว | 100 รายการจากพระสุตตันตปิฎก 8 เล่ม (ไทย 85 / อังกฤษ 15 เพื่อทดสอบข้ามภาษา) — ชุดสาธิต รอชุดทางการ |
| ก.5.1.5 | Retrieval #3 พระอภิธรรมปิฎก 100 บท | /admin/evaluation/datasets | ทำแล้ว | 100 รายการจากพระอภิธรรมปิฎก (ธัมมสังคณี/วิภังค์) — ชุดสาธิต รอชุดทางการ |
| ก.5.1.6 | Guardrail #1 นอกขอบเขต 100 ข้อ | /admin/evaluation/datasets | ทำแล้ว | ครบ 100 ข้อ (ไทย 85 / อังกฤษ 15) 16 กลุ่มหัวข้อนอกขอบเขต |
| ก.5.1.7 | Guardrail #2 หัวข้อสุ่มเสี่ยง 50 ข้อ | /admin/evaluation/datasets | ทำแล้ว | ครบ 50 ข้อ: การเมือง 17 / เปรียบเทียบศาสนา-นิกาย 17 / สุขภาพจิต 16 (+ ชุด prompt injection ภายใน 20 ข้อ) |
| ก.5.2.1 | Web UI Add/Edit/Delete datasets/items + CSV | /admin/evaluation/datasets | ทำแล้ว | — |
| ก.5.2.2 | Workflow: Accuracy / Recall@5 / Judge 0–3 | /admin/evaluation | ทำแล้ว | 3 scorer strategy |
| ก.5.2.3 | สั่ง Run แยกชุด บันทึก ดูรายข้อ | /admin/evaluation/runs/[id] | ทำแล้ว | สั่ง Run แยกชุดได้ที่ /admin/evaluation บันทึกผลรายข้อ + รายงานรายข้อ (คำถาม · คำตอบ · เฉลย · ถูก/ผิด) เป็นเอกสารและ Excel |
| ก.5.2.4 | บันทึก Prompt version + Dataset version | /admin/evaluation/runs/[id] | ทำแล้ว | — |
| ก.5.3 | เกณฑ์ขั้นต่ำ 80%/2.00/80%/80%/80%/80%/80% | /admin/evaluation | ทำแล้ว | ตารางเกณฑ์ขั้นต่ำ vs ค่ารับประกันที่ /admin/evaluation; ผลรอบ Acceptance ผ่านเกณฑ์ขั้นต่ำครบ 7 ชุด |
| ก.5.3.1 | ไม่ตรวจรับถ้าต่ำกว่าเกณฑ์ | /admin/evaluation | ทำแล้ว | run ต่ำกว่าเกณฑ์ติดป้าย "ไม่ผ่านเกณฑ์ตรวจรับ" |
ก.6 Admin Portal (21)
| ข้อ | ข้อกำหนด | หน้าจอ / ไฟล์ | สถานะ | หมายเหตุ |
|---|---|---|---|---|
| ก.6.1.1 | RBAC ≥3 บทบาท | /admin/users | ทำแล้ว | SUPER_ADMIN/ADMIN/GENERAL_USER |
| ก.6.1.2 | ค้นหา/ดู/แก้/ระงับ/ลบ + สถานะ วันสมัคร ใช้ล่าสุด + คำขอ PDPA | /admin/users | ทำแล้ว | — |
| ก.6.1.3 | สิทธิ์ Dhamma Talk ต่อบัญชี default ปิด | /admin/users | ทำแล้ว | — |
| ก.6.1.4 | รหัสผ่านซับซ้อน + IP Allowlist | /admin | ทำแล้ว | บัญชีผู้ดูแลต้องใช้รหัสผ่าน ≥12 ตัว ผสม 4 ชนิด (บังคับตอนเข้าสู่ระบบ) + middleware ตรวจ IP allowlist สำหรับ /admin และ /api/admin (403 + audit) โดยอ่าน IP จาก proxy ที่เชื่อถือได้ (TRUSTED_PROXY_HOPS) |
| ก.6.2.1 | ปรับ Max Tokens + เพดานรวม | /admin/ai-config | ทำแล้ว | — |
| ก.6.2.2 | ปรับระยะเก็บประวัติ + รอบลบ | /admin/ai-config | ทำแล้ว | — |
| ก.6.2.3 | เลือก/เปลี่ยน LLM ไม่แก้โค้ด | /admin/ai-config | ทำแล้ว | — |
| ก.6.2.4 | Prompt: ดู เพิ่ม แก้ diff rollback + ผู้แก้/เวลา | /admin/prompts | ทำแล้ว | — |
| ก.6.2.5 | เพิ่ม/ลด หัวข้อขอบเขตและหัวข้อปฏิเสธ | /admin/guardrails | ทำแล้ว | — |
| ก.6.2.6 | มีผลทันทีไม่ redeploy + ย้อนกลับได้ | /admin/ai-config | ทำแล้ว | ConfigSnapshot revert |
| ก.6.3.1 | นำเข้า/ปรับปรุง/ลบเอกสาร + แก้ Metadata | /admin/knowledge-base | ทำแล้ว | — |
| ก.6.3.2 | Re-index ทั้งหมด/เฉพาะ + สถานะ/ผล/ที่ล้มเหลว | /admin/knowledge-base/jobs | ทำแล้ว | — |
| ก.6.3.3 | ปรับ Precedence Level/Score | /admin/knowledge-base | ทำแล้ว | — |
| ก.6.4.1 | เพิ่ม/แก้/ลบ/นำเข้า CSV ชุดทดสอบ | /admin/evaluation/datasets | ทำแล้ว | — |
| ก.6.4.2 | สั่งประเมินแยกชุด + ดูผลย้อนหลังรายข้อ | /admin/evaluation | ทำแล้ว | — |
| ก.6.4.3 | เปรียบเทียบผลระหว่างรอบ + เวอร์ชัน | /admin/evaluation/compare | ทำแล้ว | — |
| ก.6.5.1 | Audit: login/logout สำเร็จ-ไม่สำเร็จ, สิทธิ์, config/prompt, เอกสาร, เข้าถึงบทสนทนา, สั่งประเมิน | /admin/audit-log | ทำแล้ว | — |
| ก.6.5.2 | Timestamp/ผู้กระทำ/IP/ประเภท/ก่อน-หลัง/ผลลัพธ์ | /admin/audit-log | ทำแล้ว | — |
| ก.6.5.3 | เก็บ ≥90 วัน แก้/ลบไม่ได้ | /admin/audit-log | ทำแล้ว | SQLite trigger ห้าม UPDATE/DELETE + hash chain + ไม่มี purge |
| ก.6.5.4 | ค้นหา/กรอง/ส่งออก .csv หรือ .pdf | /admin/audit-log | ทำแล้ว | CSV + หน้า print → PDF |
| ก.6.6.1 | เปิดโหมด Unavailable | /admin/unavailable | ทำแล้ว | — |
ก.7 Dashboard & Report (10)
| ข้อ | ข้อกำหนด | หน้าจอ / ไฟล์ | สถานะ | หมายเหตุ |
|---|---|---|---|---|
| ก.7.1.1 | แผนภูมิ+ตาราง near real-time ≤60 นาที | /admin/dashboard | ทำแล้ว | อ่านสดจาก DB (delay 0) |
| ก.7.1.2 | ช่วงเวลา วัน/สัปดาห์/เดือน/ปี/custom + เทียบช่วงก่อน | /admin/dashboard | ทำแล้ว | — |
| ก.7.1.3 | จำกัด Super Admin/Admin | /admin/dashboard | ทำแล้ว | — |
| ก.7.2.1 | บัญชีทั้งหมด / DAU / MAU | /admin/dashboard | ทำแล้ว | — |
| ก.7.2.2 | Sessions / Queries / เฉลี่ยต่อ session แยกโหมด | /admin/dashboard | ทำแล้ว | — |
| ก.7.3.1 | โทเคน Input/Thinking/Output รายวัน/เดือน เทียบเพดาน | /admin/dashboard | ทำแล้ว | — |
| ก.7.3.2 | โทเคนเฉลี่ยต่อคำถาม/บทสนทนา แยกโหมด เทียบเป้า | /admin/dashboard | ทำแล้ว | — |
| ก.7.3.3 | ประมาณการค่าใช้จ่าย อัตราต่อโทเคนกำหนดเอง | /admin/pricing | ทำแล้ว | — |
| ก.7.3.4 | บัญชีใช้โทเคนสูงสุด | /admin/dashboard | ทำแล้ว | — |
| ก.7.3.5 | Threshold Alert ทางอีเมล | /admin/alerts | บางส่วน | ส่งเข้า AlertEmailLog; SMTP เมื่อตั้งค่า |
ข รายการข้อมูลองค์ความรู้ (1)
| ข้อ | ข้อกำหนด | หน้าจอ / ไฟล์ | สถานะ | หมายเหตุ |
|---|---|---|---|---|
| ข.1 | พระไตรปิฎก+อรรถกถา มมร. 91 เล่ม (ระยะแรกใช้ฉบับออนไลน์ แล้วสลับ Dhammaverse) | /admin/knowledge-base | บางส่วน | ระยะแรกใช้ฉบับออนไลน์ (84000.org ฉบับหลวง + อรรถกถาแปล มมร.) ตามภาคผนวก ข; สลับเป็นฉบับ มมร./Dhammaverse ได้โดยนำเข้าผ่าน /admin/knowledge-base (PDF/TXT/TEI-XML/DOCX) ไม่ต้องแก้โค้ด |