883 lines
9.6 KiB
Markdown
883 lines
9.6 KiB
Markdown
# 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
|
|
```
|