Files
alla-tms/plans/online-lesson-create-workflow-redesign.md
2026-07-16 09:53:14 +07:00

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
```