1. ข้อมูลทั่วไป — ตอนกดเพิ่มใหม่
4 ฟิลด์เป็น dialog แรกที่เจอเมื่อกด “เพิ่ม” ทีมทดสอบกรอกจริงแค่ 1 ฟิลด์ (รอบประเมิน) ที่เหลือระบบเติมให้อัตโนมัติ เมื่อบันทึกสำเร็จระบบจะสร้างเลขที่เอกสารและพาไปหน้าแก้ไข ซึ่งจะปลดล็อกส่วนที่ 2 (ข้อมูลเหตุการณ์ความเสียหาย)
| ชื่อฟิลด์ | FIELD_DB | ชนิดข้อมูล | สถานะ | เงื่อนไข / หมายเหตุ | ตัวอย่างข้อมูลทดสอบ |
|---|---|---|---|---|---|
| เลขที่เอกสาร | document_no | ข้อความ | อ่านอย่างเดียว | ระบบสร้างให้หลังบันทึก ก่อนบันทึกจะโชว์ข้อความ placeholder เฉยๆ | LD-2026-000123 |
| Workflow แบบบันทึกเหตุการณ์ความเสียหาย | workflow | ข้อความ | จำเป็นอ่านอย่างเดียว | เลือกอัตโนมัติจาก organization_level ของผู้สร้าง (90/110 → สาขา, อื่นๆ → สำนักงานใหญ่) | Workflow แบบบันทึกเหตุการณ์ความเสียหาย (สำนักงานใหญ่) |
| รอบประเมิน | assessment_period | เลือกจากรายการ (autocomplete) | จำเป็น | ฟิลด์เดียวที่ต้องกรอกจริงในหน้านี้ — ตรวจ validate ว่าห้ามว่างตอน submit อนุมัติด้วย | 2026 ไตรมาส 3 |
| ผู้สร้างแบบประเมิน | employee_name | ข้อความ | อ่านอย่างเดียว | ดึงจาก user ที่ login | สมชาย ใจดี |
2. ข้อมูลเหตุการณ์ความเสียหาย
28 ฟิลด์ปลดล็อกหลังบันทึกส่วนที่ 1 แล้วเท่านั้น (โหมดแก้ไข/ดู) กรอกผ่าน dialog เดียวกันทั้งหมด ฟิลด์ส่วนใหญ่หลัง “รายละเอียดเหตุการณ์” จะซ่อนไว้จนกว่าจะเลือก “ประเภทความเสียหาย” ก่อน — ดูตาราง “กติกา / เคสที่ควรทดสอบ” ด้านล่างประกอบ
2.1 ข้อมูลอ้างอิง (อ่านอย่างเดียวทั้งหมด)
| ชื่อฟิลด์ | FIELD_DB | ชนิดข้อมูล | สถานะ | เงื่อนไข / หมายเหตุ | ตัวอย่างข้อมูลทดสอบ |
|---|---|---|---|---|---|
| เลขที่เอกสารอ้างอิง (เอกสารต้นทาง) | ref_loss_document_no | ข้อความ | ไม่บังคับอ่านอย่างเดียว | มีค่าเมื่อสร้างจาก interface/เอกสารอื่น | REF-2026-0088 |
| ผู้รายงานเหตุการณ์ | reported_employee_name | ข้อความ | จำเป็นอ่านอย่างเดียว | แสดงชื่อ + รหัสพนักงาน | สมหญิง รักงาน (EMP00456) |
| หน่วยงาน (ผู้รายงาน) | reported_org_structure | แสดงผลเป็นผังองค์กร (popup) | อ่านอย่างเดียว | ปุ่มเปิดดู org chart เฉพาะโหมดแก้ไข/ดู ไม่ใช่ input | ฝ่ายสินเชื่อรายย่อย |
| สายธุรกิจ | loss_business_line_name | ข้อความ | ไม่บังคับอ่านอย่างเดียว | - | Retail Banking |
| ระบบงานอ้างอิง | interface_ref_system_name | ข้อความ | ไม่บังคับอ่านอย่างเดียว | - | Core Banking System |
| รูปแบบการสร้างแบบประเมิน | format_created_assessment_name | ข้อความ | ไม่บังคับอ่านอย่างเดียว | - | สร้างโดยผู้ใช้งาน |
2.2 วันเวลาที่เกิดเหตุ
| ชื่อฟิลด์ | FIELD_DB | ชนิดข้อมูล | สถานะ | เงื่อนไข / หมายเหตุ | ตัวอย่างข้อมูลทดสอบ |
|---|---|---|---|---|---|
| วันที่เกิดเหตุการณ์ | occurrence_start_date | วันที่ | จำเป็น | ควรทดสอบวันที่ในอนาคต (ต้อง reject) และย้อนหลังไกลมาก | 01/07/2026 |
| เวลาเริ่มต้น | occurrence_start_time | เวลา | จำเป็นเงื่อนไข | แสดงเฉพาะเมื่อ “ประเภทเหตุการณ์” ที่เลือกกำหนด is_require_time = true | 09:15 |
| วันที่สิ้นสุดเหตุการณ์ | occurrence_end_date | วันที่ | จำเป็น | ทดสอบเคส end date < start date ควรถูกเตือน | 01/07/2026 |
| เวลาสิ้นสุด | occurrence_end_time | เวลา | จำเป็นเงื่อนไข | เงื่อนไขเดียวกับเวลาเริ่มต้น | 09:45 |
| วันที่ตรวจพบ | discovery_date | วันที่ | จำเป็น | โดยธุรกิจควร ≥ วันที่เกิดเหตุ — ทดสอบเคสตรวจพบก่อนเกิดเหตุ | 02/07/2026 |
2.3 การจำแนกประเภทเหตุการณ์
| ชื่อฟิลด์ | FIELD_DB | ชนิดข้อมูล | สถานะ | เงื่อนไข / หมายเหตุ | ตัวอย่างข้อมูลทดสอบ |
|---|---|---|---|---|---|
| ประเภทความเสียหาย † | loss_type_code | เลือกจากรายการ | จำเป็น | Master: Loss Type — ค่า VL062 = Near Miss จะเปลี่ยนพฤติกรรมฟิลด์การเงินด้านล่างทั้งหมด (ดูหัวข้อกติกา) | ความเสียหายทางการเงิน |
| ประเภทเหตุการณ์ | loss_risk_category | เลือกจากรายการ | จำเป็น | Master: 7 หมวดตาม Basel operational risk (ดูตัวอย่าง) — กำหนดว่าต้องกรอกเวลาหรือไม่ | 2. ความเสียหายจากการฉ้อโกงโดยบุคคลภายนอก (External Fraud) |
| เหตุการณ์ย่อย | loss_subloss_event | เลือกจากรายการ | จำเป็น | เลือกได้อิสระ หรือเลือกหลังจากประเภทเหตุการณ์ (จะ filter ให้); เลือกแล้วจะ auto เติมประเภทเหตุการณ์กลับ | การปลอมแปลงเอกสาร |
| สาเหตุ | loss_cause | เลือกจากรายการ | จำเป็น | เลือกแล้ว auto เติม “เหตุการณ์ย่อย” และ “ประเภทเหตุการณ์” ให้ — ต้องทดสอบว่า auto-fill ถูกต้อง | เอกสารปลอมจากลูกค้า |
| รายละเอียดเหตุการณ์ | loss_desc | ข้อความยาว | จำเป็น | ทดสอบความยาวข้อความสูงสุด/ตัวอักษรพิเศษ/ภาษาไทย-อังกฤษปน | พนักงานตรวจพบเอกสารยืนยันรายได้ปลอมในการยื่นขอสินเชื่อของลูกค้ารายหนึ่ง... |
2.4 มูลค่าความเสียหาย (การเงิน)
| ชื่อฟิลด์ | FIELD_DB | ชนิดข้อมูล | สถานะ | เงื่อนไข / หมายเหตุ | ตัวอย่างข้อมูลทดสอบ |
|---|---|---|---|---|---|
| มูลค่าความเสียหาย (ถ้า Near Miss จะเปลี่ยนป้ายเป็น “มูลค่าความเสียหายที่อาจเกิดขึ้น”) | loss_amount | จำนวนเงิน | จำเป็นเงื่อนไข | ซ่อนจนกว่าจะเลือกประเภทความเสียหาย | 150,000.00 |
| มูลค่าที่เรียกคืนได้ | recovery_amount | จำนวนเงิน | ไม่บังคับเงื่อนไข | ซ่อนถ้ายังไม่เลือกประเภท หรือเลือกเป็น Near Miss (VL062) | 50,000.00 |
| วันที่ได้รับเงินคืน | recovery_date | วันที่ | ไม่บังคับเงื่อนไข | เงื่อนไขเดียวกับมูลค่าที่เรียกคืนได้ | 10/07/2026 |
| ค่าใช้จ่ายในการดำเนินการ | operating_expenses_amount | จำนวนเงิน | ไม่บังคับเงื่อนไข | เงื่อนไขเดียวกับด้านบน | 5,000.00 |
| มูลค่าความเสียหายรวม | total_loss_amount | จำนวนเงิน | คำนวณอัตโนมัติเงื่อนไข | สูตร = มูลค่าความเสียหาย + ค่าใช้จ่ายดำเนินการ — ห้ามพิมพ์เอง แต่ต้องเทสว่าคำนวณถูก | 155,000.00 |
| มูลค่าความเสียหายสุทธิ | net_loss_amount | จำนวนเงิน | คำนวณอัตโนมัติเงื่อนไข | สูตร = มูลค่าความเสียหายรวม − มูลค่าที่เรียกคืนได้ | 105,000.00 |
| มูลค่าความสูญเสียโอกาส | opportunity_cost_amount | จำนวนเงิน | ไม่บังคับเงื่อนไข | ซ่อนถ้ายังไม่เลือกประเภท หรือ Near Miss | 0.00 |
2.5 ผลกระทบที่ไม่ใช่ทางการเงิน & บัญชี
| ชื่อฟิลด์ | FIELD_DB | ชนิดข้อมูล | สถานะ | เงื่อนไข / หมายเหตุ | ตัวอย่างข้อมูลทดสอบ |
|---|---|---|---|---|---|
| ประเภทผลกระทบที่ไม่ใช่ทางการเงิน | loss_non_fin_impact_category | เลือกจากรายการ | จำเป็นเงื่อนไข | ซ่อนจนกว่าจะเลือกประเภทความเสียหาย (แสดงแม้เป็น Near Miss) | ชื่อเสียงองค์กร (Reputation) |
| การประเมินผลกระทบที่ไม่ใช่ทางการเงิน | loss_non_fin_impact_assessment | เลือกจากรายการ | จำเป็นเงื่อนไข | เงื่อนไขเดียวกับด้านบน | ผลกระทบต่ำ (Low) |
| วันที่มีผลทางบัญชี | accounting_date | วันที่ | ไม่บังคับเงื่อนไข | ซ่อนถ้ายังไม่เลือกประเภท หรือ Near Miss | 15/07/2026 |
| เลขอ้างอิงทางการเงิน | financial_reference_no | ข้อความ | ไม่บังคับเงื่อนไข | เงื่อนไขเดียวกับด้านบน | GL-2026-99871 |
2.6 สถานะ & แผนป้องกัน
| ชื่อฟิลด์ | FIELD_DB | ชนิดข้อมูล | สถานะ | เงื่อนไข / หมายเหตุ | ตัวอย่างข้อมูลทดสอบ |
|---|---|---|---|---|---|
| สถานะของเหตุการณ์ | loss_event_status | เลือกจากรายการ | จำเป็นเงื่อนไข | ซ่อนจนกว่าจะเลือกประเภทความเสียหาย | ปิดเคส (Closed) |
| การดำเนินการเพื่อป้องกันความเสียหายในอนาคต | preventive_action_plan | ข้อความยาว | จำเป็นเงื่อนไข | เงื่อนไขเดียวกับด้านบน | เพิ่มขั้นตอนตรวจสอบเอกสารกับหน่วยงานต้นทางก่อนอนุมัติสินเชื่อทุกครั้ง |
3. แบบบันทึกการบริหารความต่อเนื่องทางธุรกิจ (BCM)
3 ฟิลด์ · ตารางตารางแบบเพิ่มได้หลายแถว ผูกกับเอกสาร Incident Assessment ที่มีอยู่แล้ว — ต้องมีอย่างน้อย 1 แถวก่อนส่งอนุมัติ (validation กำหนด minItems = 1)
| ชื่อฟิลด์ | FIELD_DB | ชนิดข้อมูล | สถานะ | เงื่อนไข / หมายเหตุ | ตัวอย่างข้อมูลทดสอบ |
|---|---|---|---|---|---|
| เลขที่เอกสารแบบบันทึกการจัดการเหตุการณ์จริง | bcm_id | เลือกจากรายการ | ไม่บังคับต่อแถว | ดึงรายการจากเอกสาร Incident Assessment ที่มีอยู่แล้วในระบบ BCM; มีปุ่ม “สร้างใหม่” เปิดแท็บไปหน้า Incident Assessment ได้ด้วย | BCM-2026-0012 |
| เหตุการณ์ | event_name | ข้อความ | อ่านอย่างเดียว | Auto เติมจากเอกสารที่เลือก | ระบบ Core Banking ล่ม |
| Action | action_name | ข้อความ | อ่านอย่างเดียว | Auto เติมจากเอกสารที่เลือก | สำรองข้อมูลและกู้คืนระบบ |
กติกา / เคสที่ควรทดสอบเพิ่มเติม
Logic ที่ฝังอยู่ในฟอร์ม ควรออกแบบ test case ให้ครอบคลุมทั้งฝั่งแสดง/ซ่อนฟิลด์ และการคำนวณอัตโนมัติ
ลำดับการเปิดฟอร์ม
ต้องบันทึกส่วนที่ 1 (เพิ่มข้อมูล) สำเร็จก่อน ถึงจะเห็นส่วนที่ 2 และ 3 — ทดสอบว่าฟอร์มเพิ่มใหม่ยังไม่แสดง 2 ส่วนหลัง
Near Miss (loss_type_code = VL062)
ซ่อนฟิลด์: มูลค่าที่เรียกคืนได้, วันที่ได้รับเงินคืน, ค่าใช้จ่ายดำเนินการ, มูลค่ารวม/สุทธิ, มูลค่าเสียโอกาส, วันที่มีผลบัญชี, เลขอ้างอิงการเงิน — และเปลี่ยนป้าย “มูลค่าความเสียหาย” เป็น “มูลค่าความเสียหายที่อาจเกิดขึ้น”
ฟิลด์เวลา (start/end time)
แสดงเฉพาะเมื่อ “ประเภทเหตุการณ์” ที่เลือกกำหนด is_require_time = true — ต้องเทสทั้งกรณีที่ต้องกรอกเวลาและไม่ต้อง
Cascading dropdown
เลือก “สาเหตุ” → auto เติม “เหตุการณ์ย่อย” และ “ประเภทเหตุการณ์”; เลือก “เหตุการณ์ย่อย” → auto เติม “ประเภทเหตุการณ์” — ทดสอบว่าค่าที่ auto เติมตรงกับที่ผูกไว้จริง
การคำนวณอัตโนมัติ
total_loss_amount = loss_amount + operating_expenses_amountnet_loss_amount = total_loss_amount − recovery_amount — ทดสอบด้วยค่า 0, ค่าติดลบ (recovery มากกว่า loss) และทศนิยม
Validation ก่อนส่งอนุมัติ
ต้องมี “รอบประเมิน” ไม่ว่าง, ฟิลด์ required ทั้งหมดในส่วนที่ 2 ต้องผ่าน, และตาราง BCM ต้องมีอย่างน้อย 1 แถว มิฉะนั้นระบบเตือนและบล็อกการ submit
† = การเปลี่ยนค่าฟิลด์นี้จะ trigger ให้ฟิลด์อื่นแสดง/ซ่อน/รีเซ็ตใหม่ตามเงื่อนไขด้านบน