# 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 ถูกสร้างครบถ้วน
