# Prompt: Implement Approval Workflow for Online Lessons & Announcements ## Objective ออกแบบและพัฒนาระบบ Approval Workflow สำหรับ - Online Lessons - Announcements โดยใช้ Workflow เดียวกันทั้งสอง Module Workflow นี้ต้องรองรับ - Draft - Submit for Review - Review - Approve - Publish - Reject - Return for Revision และทำงานตาม Permission ของผู้ใช้งาน --- # Background ปัจจุบัน Staff สามารถสร้างบทเรียนออนไลน์และประกาศได้ แต่ยังไม่มี Approval Workflow ระบบต้องเปลี่ยนเป็น Staff ↓ สร้างข้อมูล ↓ ส่งตรวจสอบ ↓ Manager / IT Admin ตรวจสอบ ↓ อนุมัติ ↓ เผยแพร่ โดยห้ามเผยแพร่ได้ทันที --- # IMPORTANT ก่อนแก้ไข AI ต้องตรวจสอบ Architecture เดิมของ Project ก่อน ต้อง Audit - Existing Status - Existing Permission - Existing Workflow - Existing Components - Existing API - Existing Validation ห้ามสร้าง Pattern ใหม่ หากระบบมี Pattern อยู่แล้ว ต้อง Reuse - Shared Dialog - Shared Form - Shared Badge - Shared Table - Shared Status Component - Shared Permission Helper - Shared Audit - Shared Notification - Shared Toast - Shared Query Pattern --- # Scope ครอบคลุม Module - Online Lessons - Announcements ทั้ง Frontend Backend Database Workflow Permission Notification Audit Testing Documentation --- # Phase 0 — Architecture Audit ก่อนแก้ไข ตรวจสอบ ## Database ตรวจสอบ Model OnlineLesson Announcement ว่ามี field เช่น ``` status publishedAt approvedAt approvedBy reviewedBy ``` อยู่แล้วหรือไม่ ห้ามเดา อ้างอิงจาก Schema จริง --- ## Frontend ตรวจสอบ - Create Form - Edit Form - List - Detail - Badge - Action Menu --- ## Backend ตรวจสอบ - Route Handler - Server Action - Service - Validation - Query --- ## Permission ตรวจสอบว่า Project ใช้ Permission Template First หรือ Business Role หรือ Compatibility Mode หากมี Permission แล้ว ห้ามใช้ ``` isHRD() businessRole ``` --- # Phase 1 — Workflow Design Workflow ใหม่ ``` Draft ↓ Pending Review ↓ Approved ↓ Published ``` หรือ ``` Draft ↓ Pending Review ↓ Rejected ``` หรือ ``` Draft ↓ Pending Review ↓ Returned For Revision ↓ Draft ↓ Pending Review ``` Workflow Diagram ``` Create ↓ Save Draft ↓ Submit For Review ↓ Pending Review ↓ Approve ↓ Approved ↓ Publish ↓ Published ``` หรือ ``` Pending Review ↓ Return For Revision ↓ Draft ``` หรือ ``` Pending Review ↓ Reject ``` --- # Status Design ระบบต้องรองรับอย่างน้อย ``` DRAFT PENDING_REVIEW APPROVED PUBLISHED RETURNED REJECTED ``` หากระบบมี Status เดิม ให้ Reuse ห้ามสร้าง Status ซ้ำ --- # Phase 2 — Permission Matrix ## Staff สามารถ ✅ Create ✅ Save Draft ✅ Edit Draft ✅ Delete Draft ✅ Submit For Review ❌ Approve ❌ Publish ❌ Reject --- ## Manager สามารถ ✅ View Pending ✅ Approve ✅ Return ✅ Reject ✅ Publish --- ## IT Admin สามารถ ทำได้ทั้งหมด รวมถึง Approve Publish Return Reject Edit Delete Manage --- ## Super Admin ทำได้ทั้งหมด --- # Phase 3 — Create Page Module Online Lessons หน้า ``` /dashboard/online-lessons/manage/new ``` ต้องปรับ --- ## Staff ปุ่ม เดิม ``` สร้างบทเรียน ``` เปลี่ยนเป็น ``` บันทึกฉบับร่าง ``` และ ``` ส่งตรวจสอบ ``` เมื่อกด ส่งตรวจสอบ Status ``` PENDING_REVIEW ``` --- ## Manager / IT สามารถ ``` บันทึกฉบับร่าง ``` หรือ ``` อนุมัติ ``` หรือ ``` เผยแพร่ ``` ตาม Workflow --- # Phase 4 — Review Page สร้างหรือใช้หน้าปัจจุบัน สำหรับ ``` Pending Review ``` ต้องแสดง - Title - Author - Organization - Created Date - Status Action ``` Approve Return Reject ``` --- # Approve เมื่อกด Approve Status ``` APPROVED ``` ยังไม่เผยแพร่ --- # Publish เมื่อกด Publish Status ``` PUBLISHED ``` และ ``` publishedAt publishedBy ``` ต้องถูกบันทึก --- # Return เมื่อกด Return Status ``` RETURNED ``` ผู้สร้าง สามารถ Edit แล้ว Submit ใหม่ --- # Reject Status ``` REJECTED ``` หาก Reject ไม่สามารถ Publish ได้ จนกว่าจะถูกแก้ไขและ Submit ใหม่ --- # Phase 5 — Edit Rules ## Draft Staff แก้ไขได้ --- ## Pending Review Staff แก้ไขไม่ได้ จนกว่า Manager จะ Return --- ## Returned Staff แก้ไขได้ แล้ว Submit ใหม่ --- ## Approved Manager แก้ไขได้ IT แก้ไขได้ --- ## Published แก้ไขได้เฉพาะ Manager IT Super Admin หากระบบรองรับ Versioning ให้ใช้ Version เดิม หากไม่มี ให้ใช้ Current Version --- # Phase 6 — UI Badge ``` Draft Pending Review Approved Published Returned Rejected ``` ใช้สีตาม Design System เดิม --- Action Menu แสดงตาม Permission ตัวอย่าง Staff ``` Edit Delete Submit ``` Manager ``` Approve Return Reject Publish ``` --- # Phase 7 — Notification เมื่อ Submit แจ้ง Manager IT --- Approve แจ้ง Author --- Publish แจ้ง Author --- Return แจ้ง Author พร้อม Comment --- Reject แจ้ง Author พร้อมเหตุผล --- หากระบบมี Email In-App Notification ให้ Reuse --- # Phase 8 — Comment Manager ต้องสามารถ ใส่ Comment ตอน Approve Return Reject Comment ต้องถูกเก็บใน Database พร้อม User Time --- # Phase 9 — Audit Log สร้าง Audit เช่น ``` ONLINE_LESSON_SUBMITTED ONLINE_LESSON_APPROVED ONLINE_LESSON_RETURNED ONLINE_LESSON_REJECTED ONLINE_LESSON_PUBLISHED ``` Announcement เช่น ``` ANNOUNCEMENT_SUBMITTED ANNOUNCEMENT_APPROVED ANNOUNCEMENT_RETURNED ANNOUNCEMENT_REJECTED ANNOUNCEMENT_PUBLISHED ``` Audit ต้องเก็บ - User - Action - Status Before - Status After - Comment - Timestamp --- # Phase 10 — Announcement Workflow เหมือน Online Lesson ทุกประการ ห้าม Duplicate Logic ต้องสร้าง Shared Workflow หากเป็นไปได้ --- # Phase 11 — Validation ตรวจสอบ - Permission - Status Transition - Invalid Transition - Unauthorized Action เช่น Draft ↓ Publish ต้องห้าม --- Pending Review ↓ Publish ต้องห้าม --- Approve ↓ Approve ต้องห้าม --- Published ↓ Submit ต้องห้าม --- # Phase 12 — Regression Testing ตรวจสอบ ## Staff - Save Draft - Edit Draft - Delete Draft - Submit - ไม่เห็น Approve - ไม่เห็น Publish --- ## Manager - เห็น Pending - Approve - Return - Reject - Publish --- ## IT ทำได้ทุกอย่าง --- ## Notification ส่งครบ --- ## Audit บันทึกครบ --- ## Permission ไม่มี Role ไหน ทำ Action ที่ไม่ควรได้ --- ## UI Badge Button Action ถูกต้องตาม Status --- # Documentation สร้างรายงาน ``` docs/content-approval-workflow-implementation-report.md ``` --- รายงานต้องมี ```md # Content Approval Workflow Report ## Executive Summary ## Current Architecture ## Workflow Design ## Permission Matrix ## Status Transition ## UI Changes ## Backend Changes ## Notification ## Audit Log ## Files Modified ## Testing Result ## Regression Result ## Risks ## Recommendations ## Future Improvements ``` --- # Future Improvements เสนอแนวทางเพิ่มเติม เช่น - Scheduled Publish - Workflow Configuration - Multiple Reviewer - Approval History Timeline - Versioning - Escalation - SLA - Email Template - Dashboard Pending Review --- # Constraints ห้าม - Hardcode Role - Hardcode Status - Duplicate Workflow - Duplicate Logic - เพิ่ม Library ใหม่ - ใช้ any - เปลี่ยน Business Logic อื่น ต้อง - ใช้ Shared Workflow - ใช้ Shared Permission - ใช้ Shared Status Component - ใช้ Shared Notification - ใช้ Shared Audit - รักษา Type Safety - รักษา Coding Standard - รองรับการขยายไปยัง Module อื่นในอนาคต --- # Final Response เมื่อดำเนินการเสร็จ ให้สรุปเป็นภาษาไทย 1. Architecture ที่ตรวจพบ 2. Workflow ที่สร้าง 3. Status ที่รองรับ 4. Permission Matrix 5. Notification Flow 6. Audit Log 7. ไฟล์ที่แก้ไข 8. ผลการทดสอบ 9. ความเสี่ยงที่เหลือ 10. Path ของรายงาน ``` docs/content-approval-workflow-implementation-report.md ```