This commit is contained in:
2026-07-16 09:53:14 +07:00
parent 0fc112a2e8
commit 29cec708a3
1236 changed files with 212848 additions and 0 deletions

View 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