# 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 มากขึ้น