commit
This commit is contained in:
94
docs/sprint-6-phase-3-announcement-review.md
Normal file
94
docs/sprint-6-phase-3-announcement-review.md
Normal file
@@ -0,0 +1,94 @@
|
||||
# Sprint 6 Phase 3 Announcement Review
|
||||
|
||||
## 1. Summary
|
||||
|
||||
เพิ่ม Announcement Module ครบทั้งฝั่ง HRD และ Employee โดยเชื่อมกับ Auth.js, Drizzle, Notification Service และ Audit Log Service ตาม architecture เดิมของระบบ
|
||||
|
||||
## 2. Files Changed
|
||||
|
||||
- `src/app/api/announcements/route.ts`
|
||||
- `src/app/api/announcements/[id]/route.ts`
|
||||
- `src/app/dashboard/announcements/page.tsx`
|
||||
- `src/app/dashboard/announcements/[id]/page.tsx`
|
||||
- `src/features/announcements/api/types.ts`
|
||||
- `src/features/announcements/api/service.ts`
|
||||
- `src/features/announcements/api/queries.ts`
|
||||
- `src/features/announcements/api/mutations.ts`
|
||||
- `src/features/announcements/schemas/announcement.ts`
|
||||
- `src/features/announcements/server/announcement-data.ts`
|
||||
- `src/features/announcements/components/announcements-listing.tsx`
|
||||
- `src/features/announcements/components/announcements-page.tsx`
|
||||
- `src/features/announcements/components/announcement-view-page.tsx`
|
||||
- `src/features/announcements/components/announcement-form.tsx`
|
||||
- `src/features/audit-logs/server/audit-service.ts`
|
||||
- `src/features/audit-logs/constants/audit-log-options.ts`
|
||||
- `src/features/notifications/server/notification-data.ts`
|
||||
- `src/lib/announcement-storage.ts`
|
||||
- `src/lib/searchparams.ts`
|
||||
- `src/proxy.ts`
|
||||
|
||||
## 3. Database Changes
|
||||
|
||||
ไม่มีการเปลี่ยน schema และไม่มี migration เพิ่ม ใช้งานตาราง `announcements` ที่มีอยู่แล้ว
|
||||
|
||||
## 4. Routes Added
|
||||
|
||||
- `GET /api/announcements`
|
||||
- `POST /api/announcements`
|
||||
- `GET /api/announcements/[id]`
|
||||
- `PATCH /api/announcements/[id]`
|
||||
- `/dashboard/announcements`
|
||||
- `/dashboard/announcements/[id]`
|
||||
|
||||
## 5. Notification Integration
|
||||
|
||||
- เมื่อประกาศถูกเผยแพร่ ระบบจะเรียก `createAnnouncementNotification()`
|
||||
- Notification เก็บ `referenceType = announcement` และ `referenceId = announcement.id`
|
||||
- ปรับปลายทาง notification ให้เปิดไปยังหน้ารายละเอียดประกาศโดยตรง
|
||||
|
||||
## 6. Audit Events Added
|
||||
|
||||
- `ANNOUNCEMENT_CREATE`
|
||||
- `ANNOUNCEMENT_UPDATE`
|
||||
- `ANNOUNCEMENT_PUBLISH`
|
||||
- `ANNOUNCEMENT_ARCHIVE`
|
||||
|
||||
## 7. Permission Rules
|
||||
|
||||
- HRD: สร้าง แก้ไข เผยแพร่ ปักหมุด และเก็บถาวรได้
|
||||
- Employee: ดูได้เฉพาะประกาศที่ `published` และอยู่ในช่วงวันที่อนุญาตให้แสดง
|
||||
- การบังคับสิทธิ์ทำที่ server route
|
||||
|
||||
## 8. Responsive Notes
|
||||
|
||||
- หน้า list ใช้ card layout รองรับ mobile และ tablet
|
||||
- filter bar ยุบเป็นแนวตั้งบนจอเล็ก
|
||||
- action buttons และ pagination รองรับการใช้งานบนหน้าจอแคบ
|
||||
|
||||
## 9. Thai Localization Notes
|
||||
|
||||
- ข้อความหลักในหน้า list, detail, form, loading, empty, error และ toast เป็นภาษาไทย
|
||||
|
||||
## 10. Manual Test Checklist
|
||||
|
||||
- HRD เปิด `/dashboard/announcements` แล้วเห็นรายการทั้งหมด
|
||||
- HRD สร้างประกาศแบบ draft ได้
|
||||
- HRD สร้างประกาศแบบ published ได้และเกิด notification
|
||||
- HRD แก้ไขประกาศและแทนที่ไฟล์แนบได้
|
||||
- HRD ปักหมุดและยกเลิกปักหมุดได้
|
||||
- HRD เก็บถาวรประกาศได้
|
||||
- Employee เห็นเฉพาะประกาศที่เผยแพร่แล้ว
|
||||
- Employee เปิด notification แล้วเข้าหน้ารายละเอียดประกาศได้
|
||||
- ค้นหา กรอง และเปลี่ยนหน้าใน announcement list ได้
|
||||
|
||||
## 11. Known Limitations
|
||||
|
||||
- ยังไม่มี rich text editor สำหรับ content
|
||||
- attachment upload ใช้ local file storage ตามแนวทางเดียวกับ certificate
|
||||
- ยังไม่มี route ยกเลิกเผยแพร่ถาวร เพราะ requirement ไม่ได้ระบุ
|
||||
|
||||
## 12. Next Phase Recommendation
|
||||
|
||||
- เพิ่ม announcement analytics เช่นยอดอ่านหรือ acknowledgement
|
||||
- เพิ่ม scheduling UX สำหรับประกาศที่จะเผยแพร่ล่วงหน้า
|
||||
- พิจารณาเพิ่ม editor ที่รองรับรูปแบบข้อความ หากมี requirement ด้าน communication มากขึ้น
|
||||
Reference in New Issue
Block a user