Files
alla-tms/docs/sprint-6-phase-3-announcement-review.md
2026-07-16 09:53:14 +07:00

4.8 KiB

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