มหาวิทยาลัยมหามกุฏราชวิทยาลัย · ระบบสาธิต (Demo)
ข้ามไปยังเนื้อหา

รายงาน Unit Test Coverage

งวดที่ 2 · รายงานอัตโนมัติ

ดาวน์โหลด .md
← กลับไปศูนย์เอกสารสร้างอัตโนมัติ · สร้างเมื่อ 3 ตุลาคม 2569 เวลา 09:26ข้อ TOR: 4.7.3

สร้างอัตโนมัติเมื่อ 2026-10-03T02:26:29Z

รายงาน Unit Test Coverage

อ้างอิง TOR: ข้อ 4.7.3 (Unit Test Coverage ≥ 80% ไม่นับไฟล์ config)

รายงานนี้สร้างโดย scripts/reports/coverage-report.ts (npm run report:coverage) จากผลจริงของ vitest run --coverage (provider v8) — ขอบเขตการวัดตาม vitest.config.ts: โค้ด business logic ใน src/domain/** และ use case ใน src/application/** (ไม่นับไฟล์ config, index.ts และ *.d.ts)

1. สรุปผล

รายการค่า
ผลตาม TOR 4.7.3ผ่าน — lines 97.9%, statements 95.7% (เกณฑ์ ≥ 80%)
วันที่วัด2026-10-03T02:26:29Z
จำนวนไฟล์ที่อยู่ในขอบเขต44 ไฟล์ (src/domain 21, src/application 23)
Test casesผ่าน 907 · ล้มเหลว 3 (รวม 910)
Test filesผ่าน 50 · ล้มเหลว 3 (รวม 53)
เวลาที่ใช้รันชุดทดสอบ30 วินาที

มี test ล้มเหลว 3 รายการในรอบนี้ — coverage ด้านล่างวัดจากการรันรอบเดียวกัน (--coverage.reportOnFailure) ต้องแก้ test ที่ล้มเหลวและรันรายงานนี้ใหม่ก่อนใช้เป็นหลักฐานตรวจรับ

2. Coverage รวมตามขอบเขต

ขอบเขตLinesStatementsFunctionsBranches
src/domain99.7% (930/933)99.0% (1,124/1,135)99.5% (193/194)95.1% (682/717)
src/application96.7% (1,439/1,488)93.8% (1,804/1,923)95.9% (420/438)81.1% (1,126/1,389)
รวม (เกณฑ์ TOR)97.9% (2,369/2,421)95.7% (2,928/3,058)97.0% (613/632)85.8% (1,808/2,106)

เกณฑ์: lines และ statements รวมของ src/domain + src/application ≥ 80% (vitest.config.ts ตั้ง threshold เพิ่มเติม: lines/functions/statements 80%, branches 75% — ถ้าต่ำกว่า npm run test:coverage จะล้มเหลวใน CI)

ตัวชี้วัดค่ารวม≥ 80%
lines97.9% (2,369/2,421)ผ่าน
statements95.7% (2,928/3,058)ผ่าน
functions97.0% (613/632)ผ่าน
branches85.8% (1,808/2,106)ผ่าน

3. Coverage รายไฟล์ (เรียงจากต่ำสุด)

ไฟล์LinesStatementsFunctionsBranches
src/application/privacy/purge.ts50.0%52.0%50.0%43.8%
src/application/config/pricing-usecases.ts88.2%83.3%88.9%70.8%
src/application/evaluation/runner.ts88.5%83.8%92.9%62.3%
src/application/chat/ask.ts90.3%90.5%75.0%75.0%
src/application/identity/auth-usecases.ts91.3%91.8%100.0%82.4%
src/application/privacy/privacy-usecases.ts95.4%92.4%94.1%81.5%
src/application/config/prompt-usecases.ts95.8%93.5%100.0%64.6%
src/application/evaluation/reports.ts96.8%90.7%90.5%72.5%
src/application/evaluation/run-registry.ts96.9%87.5%90.0%64.3%
src/application/config/ai-config-usecases.ts97.3%91.7%97.5%79.8%
src/application/config/guardrail-usecases.ts97.5%98.0%100.0%78.9%
src/domain/evaluation/scorers.ts98.3%96.8%97.6%93.7%
src/application/evaluation/datasets.ts98.7%93.9%95.8%82.1%
src/application/config/shared.ts100.0%83.3%100.0%75.0%
src/application/ops/backup.ts100.0%93.8%100.0%71.0%
src/application/ops/defects.ts100.0%96.4%100.0%94.6%
src/domain/retrieval/synonyms.ts100.0%97.4%100.0%95.9%
src/domain/retrieval/bm25.ts100.0%98.2%100.0%94.4%
src/application/ops/data-destruction.ts100.0%98.5%100.0%85.2%
src/domain/ai/guardrail-policy.ts100.0%99.0%100.0%92.7%
src/application/ops/dashboard.ts100.0%99.4%100.0%82.5%
src/application/identity/admin-user-usecases.ts100.0%100.0%100.0%100.0%
src/application/ingestion/coverage.ts100.0%100.0%100.0%94.3%
src/application/ingestion/kb-admin.ts100.0%100.0%100.0%90.0%
src/application/ops/range-query.ts100.0%100.0%100.0%100.0%
src/application/ops/range.ts100.0%100.0%100.0%100.0%
src/application/report/sla.ts100.0%100.0%100.0%94.2%
src/domain/ai/citation.ts100.0%100.0%100.0%95.8%
src/domain/ai/token-budget-policy.ts100.0%100.0%100.0%100.0%
src/domain/audit/hash-chain.ts100.0%100.0%100.0%100.0%
src/domain/config/ai-config.ts100.0%100.0%100.0%87.9%
src/domain/identity/lockout-policy.ts100.0%100.0%100.0%100.0%
src/domain/identity/password-policy.ts100.0%100.0%100.0%100.0%
src/domain/identity/rbac.ts100.0%100.0%100.0%100.0%
src/domain/ingestion/chunking-policy.ts100.0%100.0%100.0%95.4%
src/domain/ingestion/sanitize.ts100.0%100.0%100.0%100.0%
src/domain/privacy/pii-masking.ts100.0%100.0%100.0%97.4%
src/domain/report/sla-policy.ts100.0%100.0%100.0%100.0%
src/domain/retrieval/embedding.ts100.0%100.0%100.0%100.0%
src/domain/retrieval/heuristic-reranker.ts100.0%100.0%100.0%87.5%
src/domain/retrieval/relevance-scoring.ts100.0%100.0%100.0%100.0%
src/domain/retrieval/rrf.ts100.0%100.0%100.0%100.0%
src/domain/retrieval/tokenizer.ts100.0%100.0%100.0%100.0%
src/domain/retrieval/types.ts––––

– = ไฟล์ไม่มีรายการชนิดนั้นให้วัด (เช่นไฟล์ที่มีแต่ type หรือค่าคงที่)

ไฟล์ที่ lines ต่ำกว่า 80%: 1 ไฟล์ — เป็นลำดับแรกที่ควรเพิ่ม unit test

วิธีรันซ้ำ

npm run report:coverage                    # รันชุดทดสอบทั้งหมดพร้อม coverage แล้วสร้างรายงานนี้
npm run test:coverage                      # รันพร้อม coverage + threshold gate (ใช้ใน CI)
npx tsx scripts/reports/coverage-report.ts --from-existing --log=vitest.log   # สร้างรายงานจากผลที่รันไว้แล้ว

รายงาน HTML รายบรรทัด: npx vitest run --coverage แล้วเปิด coverage/index.html