259 lines
5.7 KiB
Markdown
259 lines
5.7 KiB
Markdown
# 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
|