commit
This commit is contained in:
882
plans/online-lesson-create-workflow-redesign.md
Normal file
882
plans/online-lesson-create-workflow-redesign.md
Normal file
@@ -0,0 +1,882 @@
|
||||
# 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
|
||||
```
|
||||
Reference in New Issue
Block a user