# Prompt: Redesign Online Lesson Create Workflow (Draft & Submit for Review) ## Objective ปรับปรุงหน้า **Create Online Lesson** ``` /dashboard/online-lessons/manage/new ``` โดยเปลี่ยนจากการให้ผู้ใช้เลือก **สถานะ (Status)** ผ่าน Dropdown เป็นการใช้ **Action Button** เพื่อกำหนด Workflow แทน พร้อมปรับทั้ง Frontend, Backend, Validation, Permission และ Workflow ให้รองรับ Approval Process ของระบบ --- # Background ระบบกำลังเปลี่ยนจากการให้ผู้ใช้เลือก Status เอง เช่น ``` Draft Pending Review Published ``` ซึ่งไม่เหมาะสม เป็น Workflow Based โดยผู้ใช้จะไม่สามารถเลือก Status เองได้ แต่ Status จะถูกกำหนดจาก Action ที่ผู้ใช้เลือกแทน --- # Business Requirement Staff สามารถ - บันทึกฉบับร่าง - ส่งตรวจสอบ Manager สามารถ - ตรวจสอบ - อนุมัติ IT Admin สามารถ - ตรวจสอบ - อนุมัติ - เผยแพร่ Super Admin สามารถทำได้ทั้งหมด --- # IMPORTANT ก่อนแก้ไข AI ต้องตรวจสอบ Existing Architecture ก่อน ต้อง Audit - Online Lesson Form - Validation - Submit Handler - API - Status Enum - Status Constant - Workflow - Permission - Notification - Audit ห้ามเดา ห้าม Hardcode ห้ามสร้าง Pattern ใหม่ หากระบบมี Pattern เดิมอยู่แล้ว ต้อง Reuse - Shared Form - Shared Button - Shared Mutation - Shared Status - Shared Permission - Shared Dialog - Shared Toast - Shared Validation --- # Phase 0 — Architecture Audit ตรวจสอบ ## Frontend - Create Page - Edit Page - Form Component - Status Select - Submit Function - Button Component --- ## Backend ตรวจสอบ - API - Route Handler - Server Action - Validation - Service - Repository --- ## Database ตรวจสอบ Status Field เช่น ``` status workflowStatus lessonStatus ``` และ Enum ที่ระบบใช้อยู่จริง --- ## Permission ตรวจสอบ Permission First หรือ Compatibility Mode ห้ามใช้ ``` businessRole isHRD() ``` หากระบบมี Permission แล้ว --- # Phase 1 — Remove Status Field ลบ ``` สถานะ * ``` ออกจาก Online Lesson Create Form ผู้ใช้ ห้าม เลือก Status เอง --- ตรวจสอบ - Form - Schema - Validation - Default Value - Payload ให้สอดคล้องกันทั้งหมด --- # Phase 2 — Redesign Action Buttons เปลี่ยน Footer Action จาก ``` Cancel Create ``` เป็น ``` ยกเลิก บันทึกฉบับร่าง ส่งตรวจสอบ ``` --- Layout ``` --------------------------------------------------- Cancel Save Draft Submit For Review ``` Primary Button คือ ``` ส่งตรวจสอบ ``` Secondary Button คือ ``` บันทึกฉบับร่าง ``` --- # Phase 3 — Draft Action เมื่อกด ``` บันทึกฉบับร่าง ``` ระบบต้อง Save พร้อม Status ``` DRAFT ``` หรือ Status เดิมของระบบ ห้าม Hardcode --- Draft สามารถ Edit Delete ได้ เฉพาะ Owner ตาม Permission เดิม --- # Phase 4 — Submit For Review เมื่อกด ``` ส่งตรวจสอบ ``` ระบบต้อง Save พร้อม Status ``` PENDING_REVIEW ``` หรือ Status เดิมของระบบ ห้าม Hardcode --- Validation ต้องใช้ Validation สำหรับ Ready To Review ไม่ใช่ Validation ของ Draft --- เมื่อ Submit สำเร็จ แสดง Toast เช่น ``` ส่งบทเรียนเพื่อตรวจสอบเรียบร้อยแล้ว ``` --- # Phase 5 — Validation ตรวจสอบ Validation แยกตาม Action --- ## Save Draft Validation สามารถผ่อนปรนได้ หากระบบรองรับ Draft Validation เช่น Title อาจยังไม่ครบ แต่สามารถ Save ได้ --- ## Submit Validation ต้องครบทุก Field เช่น - Title - Description - Category - Video - Cover - Duration หรือ Field ที่ระบบกำหนด ต้องผ่านทั้งหมด --- # Phase 6 — Backend ตรวจสอบ API ห้ามรับ Status จาก User แบบอิสระ เช่น ``` Published Approved Rejected ``` ผ่าน Create API --- API ต้องรองรับ Action เช่น ``` draft submit ``` หรือ Status ที่ถูกตรวจสอบแล้ว ตาม Pattern ของระบบ --- ต้อง Validate Transition เช่น Draft ↓ Pending Review ถูกต้อง แต่ Draft ↓ Published ต้องห้าม --- # Phase 7 — Permission ## Staff เห็น ``` Save Draft Submit ``` ไม่เห็น Approve Publish Reject --- ## Manager สามารถ Approve Return Reject จากหน้า Review ไม่ใช่จากหน้า Create --- ## IT Admin สามารถ Approve Publish Return Reject ตาม Workflow --- ## Super Admin สามารถ ทำได้ทั้งหมด --- # Phase 8 — Notification เมื่อ Submit แจ้ง Manager IT --- เมื่อ Return แจ้ง Author --- เมื่อ Approve แจ้ง Author --- เมื่อ Publish แจ้ง Author --- ใช้ Notification Pattern เดิมของระบบ --- # Phase 9 — Audit สร้าง Audit เช่น ``` ONLINE_LESSON_DRAFT_SAVED ONLINE_LESSON_SUBMITTED ``` ข้อมูล - User - Action - Previous Status - New Status - Timestamp --- # Phase 10 — UI Status ไม่ต้องแสดง ใน Form แต่ List และ Detail ยังต้องแสดง Badge ตามเดิม เช่น ``` Draft Pending Review Approved Published ``` --- # Phase 11 — Regression Testing ตรวจสอบ ## UI - ไม่มี Status Dropdown - มี Save Draft - มี Submit --- ## Draft - Save สำเร็จ - Status ถูกต้อง - Edit ได้ - Delete ได้ --- ## Submit - Validation ครบ - Status Pending Review - Toast ถูกต้อง --- ## Permission Staff ไม่สามารถ Publish Approve Reject --- Manager Approve ได้ --- IT Publish ได้ --- ## Database Status ถูกต้อง --- ## API ไม่สามารถส่ง Published ตรงจาก Create --- ## Notification ส่งครบ --- ## Audit บันทึกครบ --- # Code Quality ตรวจสอบ - ไม่มี Duplicate Logic - ไม่มี Hardcode Status - ไม่มี Hardcode Role - ไม่มี any ใหม่ - ไม่มี console.log - ไม่มี Dead Code - Reuse Existing Components - Reuse Existing Workflow --- # Documentation สร้างรายงาน ``` docs/online-lesson-create-workflow-redesign-report.md ``` --- รายงานต้องมี ```md # Online Lesson Create Workflow Redesign Report ## Executive Summary ## Current Architecture ## Current Limitation ## Workflow Design ## Status Mapping ## Action Mapping ## Permission Matrix ## Validation Changes ## Backend Changes ## UI Changes ## Notification ## Audit Log ## Files Modified ## Testing Result ## Regression Result ## Risks ## Recommendations ``` --- # Future Improvements เสนอแนวทาง เช่น - Approval Timeline - Review Comment - Multiple Reviewer - Scheduled Publish - Workflow Configuration - Content Versioning --- # Constraints ห้าม - ให้ User เลือก Status เอง - Hardcode Status - Hardcode Permission - Duplicate Workflow - เพิ่ม Library ใหม่ - ใช้ any - เปลี่ยน Business Logic อื่น ต้อง - ใช้ Shared Workflow - ใช้ Shared Permission - ใช้ Shared Validation - ใช้ Shared Status - ใช้ Shared Notification - รักษา Type Safety - รักษา Coding Standard --- # Final Response เมื่อดำเนินการเสร็จ ให้สรุปเป็นภาษาไทย 1. Architecture ที่ตรวจพบ 2. Workflow ใหม่ 3. การ Mapping ระหว่าง Action กับ Status 4. Permission Matrix 5. Validation ที่เปลี่ยน 6. Backend ที่แก้ไข 7. Notification 8. Audit Log 9. รายชื่อไฟล์ที่แก้ไข 10. ผลการทดสอบ 11. ความเสี่ยงที่เหลือ 12. Path ของรายงาน ``` docs/online-lesson-create-workflow-redesign-report.md ```