commit
This commit is contained in:
258
plans/announcement-approval-workflow.md
Normal file
258
plans/announcement-approval-workflow.md
Normal file
@@ -0,0 +1,258 @@
|
||||
# Announcement Approval Workflow
|
||||
|
||||
## Background
|
||||
|
||||
ปัจจุบันโมดูล Announcement และ Online Lesson มี Workflow ที่แตกต่างกัน ส่งผลให้ผู้ใช้งานเกิดความสับสน และทำให้ระบบมี Business Logic ซ้ำกันหลายส่วน
|
||||
|
||||
ต้องการให้ Announcement ใช้ Approval Workflow เดียวกับ Online Lesson ทั้งในด้าน UI, Validation, Permission, Status และ Notification โดยยังคงพฤติกรรมของ Online Lesson ที่ทำงานถูกต้องอยู่แล้ว
|
||||
|
||||
---
|
||||
|
||||
# Requirement ที่เข้าใจ
|
||||
|
||||
## Objective
|
||||
|
||||
ปรับปรุงโมดูล Announcement ให้ใช้ Approval Workflow เดียวกับ Online Lesson
|
||||
|
||||
### Workflow
|
||||
|
||||
ผู้สร้าง
|
||||
|
||||
- Admin
|
||||
- HRD Staff
|
||||
|
||||
สามารถ
|
||||
|
||||
- บันทึกฉบับร่าง
|
||||
- ส่งตรวจสอบ
|
||||
|
||||
HRD Manager
|
||||
|
||||
สามารถ
|
||||
|
||||
- Preview
|
||||
- Approve
|
||||
- Reject พร้อม Comment
|
||||
|
||||
หลัง Approve
|
||||
|
||||
เปลี่ยนสถานะเป็น
|
||||
|
||||
Approved
|
||||
|
||||
โดยไม่ Publish ทันที
|
||||
|
||||
HRD Manager จึงสามารถ
|
||||
|
||||
- Publish
|
||||
- Schedule Publish
|
||||
|
||||
ได้ภายหลัง
|
||||
|
||||
IT Admin และ Super Admin ยังคงสามารถดำเนินการทุกขั้นตอนได้ตามสิทธิ์
|
||||
|
||||
---
|
||||
|
||||
## UI
|
||||
|
||||
หน้าเพิ่มประกาศ
|
||||
|
||||
- ลบ Dropdown สถานะ
|
||||
- ใช้ปุ่ม
|
||||
- บันทึกฉบับร่าง
|
||||
- ส่งตรวจสอบ
|
||||
|
||||
เหมือนหน้าเพิ่มบทเรียนออนไลน์ทุกประการ
|
||||
|
||||
---
|
||||
|
||||
## Validation
|
||||
|
||||
ใช้ Validation เดียวกับ Online Lesson
|
||||
|
||||
Draft
|
||||
|
||||
- บันทึกได้ตาม Logic ปัจจุบัน
|
||||
|
||||
Submit
|
||||
|
||||
- ต้องผ่าน Validation ทั้งหมด
|
||||
|
||||
หาก Validation ไม่ผ่าน
|
||||
|
||||
- ไม่เปลี่ยน Status
|
||||
- แสดง Error ทุก Field
|
||||
- ผู้ใช้สามารถแก้ไขแล้ว Submit ใหม่ได้
|
||||
|
||||
---
|
||||
|
||||
## Status
|
||||
|
||||
Announcement ต้องรองรับ
|
||||
|
||||
- Draft
|
||||
- Pending Approval
|
||||
- Approved
|
||||
- Published
|
||||
- Scheduled
|
||||
- Rejected
|
||||
- Archived
|
||||
|
||||
ใช้ Business Logic เดียวกับ Online Lesson
|
||||
|
||||
---
|
||||
|
||||
## Permission
|
||||
|
||||
Admin / HRD Staff
|
||||
|
||||
- Create
|
||||
- Edit Draft
|
||||
- Delete Draft
|
||||
- Submit
|
||||
|
||||
HRD Manager
|
||||
|
||||
- View Pending
|
||||
- Approve
|
||||
- Reject
|
||||
- Publish
|
||||
- Schedule Publish
|
||||
- Archive
|
||||
|
||||
IT Admin
|
||||
|
||||
- Full Access
|
||||
|
||||
Super Admin
|
||||
|
||||
- Full Access
|
||||
|
||||
Employee
|
||||
|
||||
- View Published Only
|
||||
|
||||
---
|
||||
|
||||
## Notification
|
||||
|
||||
เมื่อ Submit
|
||||
|
||||
แจ้งเตือน HRD Manager
|
||||
|
||||
เมื่อ Approve
|
||||
|
||||
แจ้งเตือนผู้สร้าง
|
||||
|
||||
เมื่อ Reject
|
||||
|
||||
แจ้งเตือนผู้สร้างพร้อมเหตุผล
|
||||
|
||||
เมื่อ Publish
|
||||
|
||||
แจ้งเตือนผู้สร้าง
|
||||
|
||||
ใช้ Notification Pattern เดียวกับ Online Lesson
|
||||
|
||||
---
|
||||
|
||||
# Scope of Work
|
||||
|
||||
- แก้ไขเฉพาะโมดูล Announcement
|
||||
- ห้ามเปลี่ยนพฤติกรรมของ Online Lesson ที่ทำงานถูกต้องอยู่แล้ว
|
||||
- ห้ามเกิด Regression กับ Online Lesson
|
||||
- หากพบ Business Logic ซ้ำ สามารถ Refactor ได้เฉพาะส่วนที่ปลอดภัย
|
||||
- Reuse Shared Component, Shared Hook และ Shared Service หากมีอยู่แล้ว
|
||||
- ห้าม Copy Logic ของ Online Lesson มาใหม่โดยไม่จำเป็น
|
||||
|
||||
---
|
||||
|
||||
# Technical Requirements
|
||||
|
||||
ก่อนแก้ไขโค้ด
|
||||
|
||||
- ตรวจสอบ Architecture ปัจจุบัน
|
||||
- ตรวจสอบ Shared Component
|
||||
- ตรวจสอบ Shared Hook
|
||||
- ตรวจสอบ Shared Service
|
||||
- ตรวจสอบ Permission Middleware
|
||||
- ตรวจสอบ Approval Flow
|
||||
- ตรวจสอบ Notification Flow
|
||||
|
||||
ระหว่างแก้ไข
|
||||
|
||||
- ใช้มาตรฐานของ Project
|
||||
- รักษา Type Safety
|
||||
- ไม่เพิ่ม Dead Code
|
||||
- ไม่เพิ่ม Duplicate Logic
|
||||
|
||||
หลังแก้ไข
|
||||
|
||||
- ตรวจสอบ TypeScript Error
|
||||
- ตรวจสอบ ESLint
|
||||
- ตรวจสอบ Build Error
|
||||
- ตรวจสอบ Permission
|
||||
- ตรวจสอบ Approval Workflow
|
||||
- ตรวจสอบ Notification
|
||||
- ตรวจสอบ UI Regression
|
||||
|
||||
---
|
||||
|
||||
# Deliverables
|
||||
|
||||
เมื่อดำเนินการเสร็จ
|
||||
|
||||
ต้องส่งมอบ
|
||||
|
||||
- โค้ดที่แก้ไขเรียบร้อย
|
||||
- ไม่มี TypeScript Error
|
||||
- ไม่มี ESLint Error
|
||||
- ไม่มี Build Error
|
||||
- Permission ทำงานถูกต้อง
|
||||
- Workflow ทำงานถูกต้อง
|
||||
- Validation ทำงานถูกต้อง
|
||||
- Notification ทำงานถูกต้อง
|
||||
- ไม่กระทบ Online Lesson
|
||||
|
||||
และสร้างเอกสาร
|
||||
|
||||
docs/announcement-approval-workflow-implementation-report.md
|
||||
|
||||
ภายในเอกสารต้องประกอบด้วย
|
||||
|
||||
1. Executive Summary
|
||||
|
||||
2. Architecture Review
|
||||
|
||||
3. Files Modified
|
||||
|
||||
4. Business Logic Changes
|
||||
|
||||
5. UI Changes
|
||||
|
||||
6. Permission Changes
|
||||
|
||||
7. Workflow Changes
|
||||
|
||||
8. Refactoring Summary
|
||||
|
||||
9. Breaking Changes (ถ้ามี)
|
||||
|
||||
10. Regression Risk
|
||||
|
||||
11. Test Checklist
|
||||
|
||||
- Create Draft
|
||||
- Submit
|
||||
- Approve
|
||||
- Reject
|
||||
- Publish
|
||||
- Schedule Publish
|
||||
- Notification
|
||||
- Permission
|
||||
- UI
|
||||
- Validation
|
||||
|
||||
12. Known Issues (ถ้ามี)
|
||||
|
||||
13. Recommendation
|
||||
Reference in New Issue
Block a user