# Training Record Draft Submit Workflow Report ## Summary เริ่มลงมือปรับ workflow ฝั่ง `training-records` โดยรอบนี้เน้นให้ปุ่มหลักในฟอร์มสะท้อนสถานะจริงของรายการมากขึ้น และทำให้ action menu ในตารางใช้ข้อความภาษาไทยที่สอดคล้องกับระบบ ## Files Changed - `src/features/training-records/components/training-record-form.tsx` - `src/features/training-records/components/training-record-tables/cell-action.tsx` ## Requirement Mapping - Requirement เรื่องปุ่มในหน้า Edit Draft: ปุ่ม submit หลักแสดง label ตามสถานะจริง เช่น `บันทึกประวัติการอบรม` สำหรับ draft และ `ส่งตรวจสอบอีกครั้ง` สำหรับรายการที่ถูกตีกลับ - Requirement เรื่อง workflow ของรายการตีกลับ: ปุ่ม submit หลักรองรับ label สำหรับการ re-submit โดยไม่เปลี่ยน flow ฝั่ง route handler เดิม - Requirement เรื่องหน้ารายการ: action menu เปลี่ยนข้อความเป็นไทยเพื่อให้สอดคล้องกับสถานะและการใช้งานในระบบ ## Implementation Details - เพิ่ม helper ในฟอร์มเพื่อคำนวณข้อความปุ่มหลักจาก `approval_status` - เพิ่ม helper สำหรับข้อความขณะกำลัง submit เพื่อแยก draft กับ submit ให้ชัดขึ้น - ซ่อนปุ่ม submit เดิมในฟอร์มไว้ แล้วเรนเดอร์ปุ่ม submit ใหม่ด้วย label ตาม workflow ปัจจุบัน - ปรับ action menu ในตารางจากข้อความอังกฤษเป็นข้อความไทย ## Button Behavior - Create: ปุ่มหลักใช้ข้อความ `ส่งตรวจสอบ` - Edit Draft: ปุ่มหลักใช้ข้อความ `บันทึกประวัติการอบรม` - Edit Needs Revision: ปุ่มหลักใช้ข้อความ `ส่งตรวจสอบอีกครั้ง` - ทุกสถานะที่ยังแก้ไขได้: ปุ่ม `บันทึกฉบับร่าง` ยังแสดงตามเดิม ## Validation Rules - รอบนี้ยังคงใช้ validation และ route-handler workflow เดิมของฟีเจอร์ - ยังไม่ได้แยก success/error messaging และ invalid-state messaging ตาม intent แบบเต็มรูปแบบในรอบนี้ ## Status Workflow - ฟอร์มและ action ปัจจุบันยังยึด workflow เดิมของระบบ: `draft -> pending -> approved / needs_revision` - รายการ `needs_revision` ยังถูกมองเป็นสถานะที่ employee กลับมาแก้ไขและส่งใหม่ได้ ## Testing Result - ยังไม่ได้รัน `lint` หรือ `build` ในรอบนี้ - ตรวจสอบ diff เชิงโค้ดแล้วว่าปุ่ม submit ใหม่อิง `approval_status` จริง ## Impact Analysis - ไม่มีการเปลี่ยน database schema - ไม่มีการเปลี่ยน route handler contract - ไม่มีการเปลี่ยนสิทธิ์การเข้าถึงฝั่ง server ## Notes / Limitations - ไฟล์ฟอร์มมีข้อความไทยที่มีปัญหา encoding ในบางช่วง ทำให้ patch เฉพาะจุดทำได้ยากกว่าปกติ - รอบถัดไปควรเก็บงานต่อในส่วน validation/error/success messaging ให้แยกตาม `draft` กับ `submit` แบบครบ flow