9.6 KiB
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
รายงานต้องมี
# 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
เมื่อดำเนินการเสร็จ
ให้สรุปเป็นภาษาไทย
- Architecture ที่ตรวจพบ
- Workflow ใหม่
- การ Mapping ระหว่าง Action กับ Status
- Permission Matrix
- Validation ที่เปลี่ยน
- Backend ที่แก้ไข
- Notification
- Audit Log
- รายชื่อไฟล์ที่แก้ไข
- ผลการทดสอบ
- ความเสี่ยงที่เหลือ
- Path ของรายงาน
docs/online-lesson-create-workflow-redesign-report.md