# Prompt: Redesign Announcement List to Enterprise Data Table ## Objective ปรับปรุงหน้า **Announcements List** จาก Card Layout ให้เป็น **Enterprise Data Table** เพื่อให้เหมาะสำหรับการจัดการประกาศของผู้ดูแลระบบ (Admin / HRD / HRD Manager) เป้าหมายของงานนี้คือ - ลดพื้นที่แนวตั้งของรายการ - รองรับข้อมูลจำนวนมาก - ค้นหาและจัดการประกาศได้สะดวก - รองรับ Sorting, Filtering และ Bulk Actions - ใช้ Design System เดิมของระบบ (shadcn/ui + TailwindCSS) - ไม่เปลี่ยน Business Logic, Workflow หรือ Permission เดิม --- # Existing Implementation Compatibility ก่อนเริ่มพัฒนา ให้ตรวจสอบโครงสร้างเดิมทั้งหมด เช่น - Announcement List Page - Announcement Card Component - Query และ Pagination - Filters - Search - Status Badge - Action Menu - Permission - API - Server Actions - Shared Components หากสามารถ Reuse Component เดิมได้ ให้ Reuse เป็นหลัก ใช้หลัก > Reuse > Extend > Refactor > Create New ห้าม Rewrite Module ทั้งหมด --- # Scope ดำเนินการดังนี้ - เปลี่ยน Card Layout เป็น Data Table - คง Search เดิม - คง Filter เดิม - เพิ่ม Sorting - เพิ่ม Action Menu - รองรับ Bulk Selection (ถ้ามีโครงสร้างรองรับ) - แสดงสถานะและการปักหมุดใน Table - ตรวจสอบ Responsive --- # Table Columns เรียงลำดับดังนี้ 1. Checkbox (รองรับ Bulk Action) 2. Pin (📌) 3. หัวข้อประกาศ 4. สถานะ 5. วันที่เผยแพร่ 6. วันสิ้นสุด 7. ผู้สร้าง 8. ไฟล์แนบ 9. จัดการ ### หัวข้อประกาศ แสดง - ชื่อประกาศ - ข้อความย่อย (ถ้ามี) ใช้ `truncate` --- ### Status ใช้ Badge ตามมาตรฐานของระบบ - Draft - Pending Review - Approved - Published - Expired - Archived --- ### Pin หากประกาศถูกปักหมุด แสดงไอคอน 📌 หรือ Badge `Pinned` หากไม่ปักหมุด ไม่ต้องแสดงข้อความ --- ### Publish Date แสดงวันที่เผยแพร่ หากยังไม่เผยแพร่ แสดง "-" --- ### Expire Date แสดงวันสิ้นสุดการแสดงผล หากไม่มี แสดง "ไม่กำหนด" --- ### Attachment หากมีไฟล์แนบ แสดงไอคอนคลิปหนีบกระดาษ พร้อมจำนวนไฟล์ (ถ้ามีหลายไฟล์) หากไม่มี แสดง "-" --- ### Action Menu ใช้ Dropdown Menu รายการ Action ต้องเปลี่ยนตาม Status และ Permission ตัวอย่าง - ดูรายละเอียด - แก้ไข - ส่งตรวจสอบ - อนุมัติ - เผยแพร่ - ปักหมุด - ยกเลิกการปักหมุด - Archive - ลบ --- # Search คง Search เดิม ค้นหา - หัวข้อประกาศ - รายละเอียดประกาศ (ถ้าระบบรองรับ) --- # Filter คง Filter เดิม และปรับ Layout ให้เหมาะกับ Data Table รองรับ - Status - ประเภท - ผู้สร้าง - ปี - ปักหมุด --- # Sorting รองรับการเรียงลำดับ - หัวข้อ - สถานะ - วันที่เผยแพร่ - วันสิ้นสุด - ผู้สร้าง --- # Bulk Action หากระบบมี Permission และ API รองรับ เพิ่ม Bulk Actions - Publish - Archive - Delete - Pin - Unpin หากยังไม่มีโครงสร้างรองรับ ให้เตรียม UI และระบุในรายงานว่าเป็น Future Enhancement --- # Pagination ใช้ Pagination เดิมของระบบ ไม่เปลี่ยน Logic --- # Responsive Desktop ใช้ Data Table Mobile สามารถแสดงเป็น Card ได้ หาก Data Table ใช้งานยากบนหน้าจอเล็ก --- # Performance - Reuse Query เดิม - ไม่ Fetch ซ้ำ - ใช้ Memoization ตามมาตรฐานเดิม - ไม่กระทบ Server Pagination --- # Business Logic ห้ามแก้ไข - Approval Workflow - Publish Workflow - Schedule Publish - Permission - Validation - API Contract - Business Rules ให้เปลี่ยนเฉพาะการแสดงผล (Presentation Layer) --- # Deliverables เมื่อดำเนินการเสร็จ สร้างเอกสาร `docs/announcement-list-table-redesign.md` ประกอบด้วย - Existing Structure Review - Files Changed - UI Before / After - Table Columns - Action Menu - Responsive Result - Performance Impact - Regression Check - Future Improvements --- # Success Criteria งานถือว่าเสร็จเมื่อ - เปลี่ยน Card Layout เป็น Data Table - แสดงข้อมูลครบถ้วน - Search และ Filter ยังทำงานได้ - Action Menu ใช้งานได้ - Sorting ทำงานได้ - Responsive สมบูรณ์ - ไม่มี Regression - TypeScript ไม่มี Error - ESLint ผ่าน - Build ผ่าน - Report ถูกสร้างเรียบร้อย