Files
alla-tms/plans/training-record-attachment-ui.md
2026-07-16 09:53:14 +07:00

11 KiB

Task: Refactor Attachment UI/UX for Training Record

Objective

ปรับปรุง UI/UX ส่วนจัดการไฟล์แนบของระบบ Training Management System (TMS) ให้ใช้งานง่าย ลดความซ้ำซ้อน และสอดคล้องกับ Workflow ของระบบ

ปัจจุบันหน้า Training Record มีทั้ง

  • อัปโหลดใบรับรอง
  • เอกสารประกอบ
  • Drag & Drop Area
  • รายการไฟล์แนบ

ซึ่งทำให้ผู้ใช้งานเกิดความสับสน เนื่องจากมีพื้นที่ Upload มากกว่า 1 จุด และมีการแสดงผลที่ซ้ำซ้อน

เป้าหมายคือ

  • แยกหน้าที่ของแต่ละส่วนให้ชัดเจน
  • ลด White Space
  • ปรับชื่อหัวข้อให้เข้าใจง่าย
  • ใช้ Component ร่วมกันทั้งระบบ
  • ไม่กระทบ Business Logic เดิม

Project Rules

ก่อนเริ่มแก้ไข ต้องตรวจสอบและปฏิบัติตาม

  • AGENTS.md
  • docs/AI_DEVELOPMENT_GUIDE.md
  • docs/PROJECT_ARCHITECTURE.md

ต้องตรวจสอบ Implementation เดิมก่อนทุกครั้ง

ห้ามสร้าง Component ใหม่ หากมี Shared Component อยู่แล้ว

หากสามารถ Reuse ได้ ให้ Reuse


Scope

ตรวจสอบทั้งโปรเจกต์

ห้ามแก้เฉพาะหน้าเดียว

ค้นหาและตรวจสอบทุก Component ที่เกี่ยวข้องกับ

  • File Upload
  • Attachment
  • Attachment List
  • Certificate Upload
  • Dropzone
  • Training Record
  • Shared Upload Component

หากเป็น Shared Component ให้แก้ที่ต้นทาง


Current Problems

Problem 1

หน้าเดียวกันมีพื้นที่ Upload มากกว่า 1 จุด

ตัวอย่าง

  • อัปโหลดใบรับรอง
  • เอกสารประกอบ

ผู้ใช้งานไม่ทราบว่าควร Upload ตรงไหน


Problem 2

ส่วน "เอกสารประกอบ"

แสดงทั้ง

  • Drag & Drop
  • ไม่มีไฟล์แนบ

พร้อมกัน

ทำให้ UI ซ้ำซ้อน


Problem 3

เมื่อไม่มีไฟล์

มีพื้นที่ว่างขนาดใหญ่โดยไม่จำเป็น

ทำให้หน้าจอดูยาว


Problem 4

ชื่อ

"เอกสารประกอบ"

ไม่สื่อว่าเป็น

รายการไฟล์ที่แนบแล้ว

ผู้ใช้อาจเข้าใจผิดว่าเป็นอีกจุดสำหรับ Upload


UX/UI Improvements

1. เปลี่ยนชื่อหัวข้อ

เดิม

เอกสารประกอบ

ใหม่

ไฟล์ที่แนบ

เหตุผล

  • เข้าใจง่าย
  • เป็นคำที่ผู้ใช้คุ้นเคย
  • สื่อว่าเป็นรายการไฟล์ที่มีอยู่แล้ว
  • ไม่ทำให้เข้าใจว่าเป็นพื้นที่ Upload

2. เปลี่ยนชื่อส่วน Upload

หากปัจจุบันใช้

อัปโหลดใบรับรอง

ให้พิจารณาเปลี่ยนเป็น

เพิ่มไฟล์แนบ

หรือ

อัปโหลดไฟล์

หากไม่กระทบ Business Requirement

แต่หาก Business Logic ระบุว่าต้องเป็น "ใบรับรอง"

สามารถคงชื่อเดิมไว้ได้


3. แยกหน้าที่ของแต่ละส่วน

ส่วน Upload

ใช้สำหรับ

  • Upload File
  • Drag & Drop

เท่านั้น


ส่วนไฟล์ที่แนบ

ใช้สำหรับ

  • แสดงรายการไฟล์
  • Download
  • Delete (เฉพาะ Draft)

ห้ามมี

  • Drag & Drop
  • Upload Area
  • Upload Button

ภายในส่วนนี้


Functional Requirements

Requirement 1

Dropzone

ต้องมีเพียงจุดเดียวในหน้า

ห้ามมีหลาย Dropzone ที่ทำหน้าที่เดียวกัน


Requirement 2

Dropzone

ต้องแสดงเฉพาะเมื่อระบบอนุญาตให้อัปโหลด

เช่น

  • Create
  • Edit Draft

หาก Record อยู่ในสถานะ

  • รอตรวจสอบ
  • อนุมัติ
  • ไม่อนุมัติ
  • ยกเลิก

ให้ซ่อน Dropzone ทั้งหมด


Requirement 3

ส่วน "ไฟล์ที่แนบ"

ต้องเป็น Read-only Area

ยกเว้นกรณี Draft

ที่สามารถลบไฟล์ได้


Requirement 4

เมื่อไม่มีไฟล์

ให้แสดง

📎 ไม่มีไฟล์แนบ

เพียงข้อความเดียว

ไม่ต้องมี Card สูง

ไม่ต้องมีพื้นที่ว่างขนาดใหญ่


Requirement 5

เมื่อมีไฟล์

แสดงเป็นรายการ

ตัวอย่าง

📄 Certificate.pdf

PDF • 1.2 MB

⬇ ดาวน์โหลด


📄 Activity.jpg

JPG • 800 KB

⬇ ดาวน์โหลด

หากเป็น Draft

แสดง

🗑 ลบ

ได้


Requirement 6

ลด White Space

Card

Padding

Margin

ให้เหมาะสม

ไม่ควรมีพื้นที่ว่างจำนวนมากเมื่อไม่มีไฟล์


Refactoring

ตรวจสอบ

  • Duplicate Upload Component
  • Duplicate Attachment Component
  • Duplicate File List
  • Duplicate Empty State

หากสามารถรวมเป็น Shared Component ได้

ให้ Refactor

โดย

ห้ามเปลี่ยน Business Logic


Do NOT

ห้าม

  • เปลี่ยน Database
  • เปลี่ยน API
  • เปลี่ยน Permission
  • เปลี่ยน Workflow
  • เปลี่ยน Validation
  • เปลี่ยน Business Rule

งานนี้เป็น

UI/UX Refactor

เท่านั้น


Expected UI

Create / Edit Draft

────────────────────

เพิ่มไฟล์แนบ

[ Drag & Drop ]

────────────────────

ไฟล์ที่แนบ

📄 Certificate.pdf

📄 Activity.jpg

────────────────────


ไม่มีไฟล์

────────────────────

ไฟล์ที่แนบ

📎 ไม่มีไฟล์แนบ

────────────────────


Waiting / Approved

────────────────────

ไฟล์ที่แนบ

📄 Certificate.pdf

📄 Activity.jpg

────────────────────

ไม่มี Dropzone


Acceptance Criteria

ต้องผ่านทั้งหมด

ไม่มี Dropzone ซ้ำในหน้าเดียว

ส่วน "ไฟล์ที่แนบ" ไม่มี Upload UI

Upload แสดงเฉพาะสถานะที่อนุญาต

ไม่มี White Space ขนาดใหญ่เมื่อไม่มีไฟล์

ชื่อหัวข้อใหม่เป็น "ไฟล์ที่แนบ"

หากมีไฟล์ แสดงรายการไฟล์จริง

หากไม่มีไฟล์ แสดง "📎 ไม่มีไฟล์แนบ"

Download ใช้งานได้

Delete ใช้งานได้เฉพาะ Draft

Responsive ทุกขนาดหน้าจอ


Regression Testing

ทดสอบ

Create

  • ไม่มีไฟล์
  • มีไฟล์
  • Upload

Edit Draft

  • Upload
  • Delete
  • Download

Waiting for Review

  • Download

Approved

  • Download

Rejected

ตรวจสอบตาม Business Rule


Empty State

ไม่มีไฟล์


Multiple Files

หลายไฟล์


Responsive

Desktop

Tablet

Mobile


Deliverables

หลังแก้ไขเสร็จ

สร้างรายงาน

docs/reports/training-record-attachment-ui-refactor-report.md

รายงานต้องประกอบด้วย

1. Scope

Component และหน้าที่ได้รับผลกระทบ

2. Files Changed

รายการไฟล์ทั้งหมดที่แก้ไข

3. Before vs After

สรุปการเปลี่ยนแปลง UI

4. Refactoring Summary

Component ที่รวมเข้าด้วยกัน

Component ที่ถูก Reuse

5. Functional Verification

ผลการทดสอบแต่ละ Workflow

  • Create
  • Edit Draft
  • Waiting
  • Approved
  • Rejected

6. Responsive Testing

Desktop

Tablet

Mobile

7. Regression Testing

สรุปผลการทดสอบทั้งหมด

8. Risks

ความเสี่ยงที่พบ

9. Recommendations

ข้อเสนอแนะเพิ่มเติมสำหรับการปรับปรุงในอนาคต


Final Checklist

ก่อนส่งมอบงาน ต้องตรวจสอบให้ครบทุกข้อ

  • ใช้ Shared Component หากมีอยู่แล้ว
  • ไม่มี Upload Area ซ้ำ
  • เปลี่ยนหัวข้อจาก "เอกสารประกอบ" เป็น "ไฟล์ที่แนบ"
  • แยกหน้าที่ Upload และ File List ชัดเจน
  • แสดง Empty State อย่างเหมาะสม
  • ลด White Space
  • UI ทุกหน้ามีความสอดคล้องกัน
  • ไม่กระทบ Business Logic
  • ไม่เกิด Regression
  • Report ถูกสร้างครบถ้วน