# Tài Liệu Frontend GoodGo - Triển Khai i18n & Accessibility

## 📚 Mục Lục Tài Liệu

Gói này chứa tài liệu toàn diện cho việc triển khai **hỗ trợ i18n next-intl (Tiếng Việt + Tiếng Anh)** và **sửa lỗi accessibility theo WCAG 2.1 AA** trong frontend Next.js của GoodGo Platform (`apps/web`).

### 📄 Các Tài Liệu Được Cung Cấp

#### 1. **EXPLORATION_SUMMARY.txt** ⭐ BẮT ĐẦU TỪ ĐÂY
**Đọc trong 15 phút | Tổng quan điều hành**

Tóm tắt cấp cao về các phát hiện:
- Điểm mạnh và khoảng trống chính
- Tổng quan về tech stack
- Kiểm kê nội dung (200+ mục cần dịch)
- Các tệp quan trọng cần cập nhật
- Kết quả kiểm tra A11y
- Ước tính thời gian (19-27 giờ)

**Phù hợp nhất cho:** Quản lý dự án, các bên liên quan, tổng quan nhanh

---

#### 2. **docs/audits/FRONTEND_EXPLORATION.md** 📋 TÀI LIỆU THAM KHẢO CHI TIẾT
**Đọc trong 45 phút | Phân tích toàn diện**

Phân tích cực kỳ chi tiết:
- Cấu trúc thư mục đầy đủ kèm mô tả
- Toàn bộ 90+ tệp được phân tích
- Phân tích chi tiết package.json
- Trạng thái hiện tại của root layout
- Logic định tuyến middleware
- Cấu hình Tailwind CSS
- Vị trí nội dung văn bản (hardcoded)
- Trạng thái accessibility hiện tại
- Cấu trúc dữ liệu & enum
- Thiết lập kiểm thử

**Phù hợp nhất cho:** Lập trình viên, kiến trúc sư, lập kế hoạch triển khai

---

#### 3. **IMPLEMENTATION_QUICK_REFERENCE.md** 🚀 HƯỚNG DẪN KHỞI ĐẦU NHANH
**Đọc trong 30 phút | Định hướng hành động**

Hướng dẫn triển khai tập trung:
- Các phát hiện chính tổng quan
- Các điểm vào chiến lược (i18n, A11y, cấu trúc message)
- Danh sách kiểm tra triển khai 5 giai đoạn
- Kiểm kê nội dung văn bản theo loại
- Tệp ưu tiên Quan trọng / Cao / Trung bình
- Lộ trình ưu tiên A11y
- Chiến lược kiểm thử
- Yêu cầu về dependency
- Cơ hội thắng lợi nhanh

**Phù hợp nhất cho:** Trưởng nhóm kỹ thuật, lập kế hoạch sprint, phân chia công việc

---

#### 4. **FILE_MAPPING_GUIDE.md** 🗂️ KẾ HOẠCH TRIỂN KHAI CHI TIẾT
**Đọc trong 60 phút | Hướng dẫn từng tệp**

Hướng dẫn cập nhật tệp theo từng giai đoạn:
- **Giai đoạn 1:** Hạ tầng (middleware, root layout, config)
- **Giai đoạn 2:** Cập nhật core component (layouts, pages)
- **Giai đoạn 3:** Cập nhật form & validation
- **Giai đoạn 4:** Cập nhật tiện ích & API
- **Giai đoạn 5:** Sửa lỗi accessibility
- **Giai đoạn 6:** Cập nhật thiết lập kiểm thử

Mỗi phần bao gồm:
- Trạng thái hiện tại
- Các thay đổi cần thực hiện
- Ví dụ code (pseudo-code)
- Đánh giá độ phức tạp cụ thể
- Hướng dẫn thiết lập kiểm thử

Được tổ chức theo độ phức tạp của tệp:
- Đơn giản (5 phút) - 5 tệp
- Dễ (15-30 phút) - 12 tệp
- Trung bình (30-60 phút) - 10 tệp
- Phức tạp (1-2 giờ) - 4 tệp
- Hạ tầng quan trọng - 3 tệp

**Phù hợp nhất cho:** Nhóm triển khai, lập trình viên, viết code thực tế

---

## 🎯 Cách Sử Dụng Tài Liệu Này

### Tình huống 1: Tôi là Quản Lý Dự Án
1. Đọc **EXPLORATION_SUMMARY.txt** (15 phút)
2. Chia sẻ timeline và công sức với nhóm
3. Tham khảo **IMPLEMENTATION_QUICK_REFERENCE.md** để biết định nghĩa từng giai đoạn

### Tình huống 2: Tôi là Tech Lead Lập Kế Hoạch Công Việc
1. Đọc **EXPLORATION_SUMMARY.txt** (15 phút)
2. Đọc **IMPLEMENTATION_QUICK_REFERENCE.md** (30 phút)
3. Lướt qua **FILE_MAPPING_GUIDE.md** để hiểu phân bố độ phức tạp
4. Tạo task sprint dựa trên đánh giá độ phức tạp của từng tệp

### Tình huống 3: Tôi là Lập Trình Viên Triển Khai i18n
1. Xem nhanh **EXPLORATION_SUMMARY.txt** (5 phút)
2. Đọc sâu các phần liên quan đến task của bạn trong **docs/audits/FRONTEND_EXPLORATION.md**
3. Dùng **FILE_MAPPING_GUIDE.md** như hướng dẫn từng bước
4. Tham khảo các ví dụ code và pseudo-code được cung cấp

### Tình huống 4: Tôi Đang Triển Khai Sửa Lỗi A11y
1. Đọc phần A11y trong **EXPLORATION_SUMMARY.txt**
2. Tham khảo phần A11y trong **IMPLEMENTATION_QUICK_REFERENCE.md**
3. Dùng Giai đoạn 5 của **FILE_MAPPING_GUIDE.md** để biết các sửa lỗi cụ thể
4. Kiểm tra danh sách xác nhận trước khi coi là hoàn thành

## 🗂️ Tổ Chức Tài Liệu Theo Chủ Đề

### Về Triển Khai i18n
- **EXPLORATION_SUMMARY.txt** → phần "Text Content Requiring Translation"
- **IMPLEMENTATION_QUICK_REFERENCE.md** → Strategic Entry Points, Giai đoạn 1-2
- **FILE_MAPPING_GUIDE.md** → Giai đoạn 1-3, phần cấu trúc tệp message

### Về Sửa Lỗi Accessibility
- **EXPLORATION_SUMMARY.txt** → phần "Accessibility Audit Findings"
- **IMPLEMENTATION_QUICK_REFERENCE.md** → phần A11y Implementation Priority
- **FILE_MAPPING_GUIDE.md** → Giai đoạn 5, cập nhật component cụ thể

### Về Thiết Lập Hạ Tầng
- **IMPLEMENTATION_QUICK_REFERENCE.md** → Danh sách kiểm tra Giai đoạn 1
- **FILE_MAPPING_GUIDE.md** → Giai đoạn 1: Infrastructure Setup

### Về Kiểm Thử & QA
- **IMPLEMENTATION_QUICK_REFERENCE.md** → phần Testing Strategy
- **FILE_MAPPING_GUIDE.md** → Giai đoạn 6: Test Setup Updates, Validation Checklist

## 📊 Thống Kê Chính

| Chỉ số | Giá trị |
|--------|---------|
| Tệp trong apps/web | 90+ |
| Tệp cần cập nhật | 50-60 |
| Mục văn bản cần dịch | 200+ |
| Component cần cập nhật | 35+ |
| Trang cần cập nhật | 15+ |
| Lỗi A11y phát hiện | 10+ |
| Thời gian triển khai ước tính | 19-27 giờ (~3-4 ngày) |
| Thiết lập i18n hiện tại | Không có (0%) |
| Độ phủ A11y hiện tại | 60-70% |

## ✅ Danh Sách Kiểm Tra Trước Triển Khai

Trước khi bắt đầu triển khai:
- [ ] Xem lại **EXPLORATION_SUMMARY.txt**
- [ ] Cài đặt gói **next-intl** (`npm install next-intl`)
- [ ] Phân bổ **3-4 ngày** cho triển khai đầy đủ
- [ ] Nhóm có kinh nghiệm với Next.js App Router
- [ ] Có quyền truy cập **axe DevTools** để kiểm thử accessibility
- [ ] Lập kế hoạch kiểm thử với screen reader (NVDA hoặc JAWS)

## 🚀 Khởi Đầu Nhanh

### Buổi Sáng Ngày 1
1. Đọc **EXPLORATION_SUMMARY.txt** (15 phút)
2. Đọc **IMPLEMENTATION_QUICK_REFERENCE.md** (30 phút)
3. Cài đặt next-intl: `npm install next-intl`
4. Tạo tệp cấu hình i18n: `i18n/config.ts`
5. Tạo tệp message: `public/locales/en.json` và `vi.json`

### Buổi Chiều Ngày 1
6. Bắt đầu với Giai đoạn 1 của **FILE_MAPPING_GUIDE.md**
7. Cập nhật **middleware.ts** (30-45 phút)
8. Cập nhật **app/layout.tsx** (30 phút)

### Ngày 2
- Tiếp tục với Giai đoạn 2-3 của **FILE_MAPPING_GUIDE.md**
- Cập nhật các tệp core layout và page
- Trích xuất văn bản từ validation

### Ngày 3
- Tiếp tục Giai đoạn 3-4
- Cập nhật các component còn lại
- Bắt đầu sửa lỗi A11y

### Ngày 4
- Hoàn thành sửa lỗi A11y
- Chạy kiểm thử toàn diện
- Sửa các vấn đề phát hiện được

## 📞 Câu Hỏi Trong Khi Triển Khai?

Tham khảo các phần cụ thể:

**H: Cách cấu trúc tệp message như thế nào?**
Đ: Xem FILE_MAPPING_GUIDE.md → Giai đoạn 1 → cấu trúc `public/locales/en.json`

**H: Tôi cập nhật tệp nào trước?**
Đ: Xem IMPLEMENTATION_QUICK_REFERENCE.md → Critical Files for i18n

**H: Cách thêm focus trapping vào dialog như thế nào?**
Đ: Xem FILE_MAPPING_GUIDE.md → Giai đoạn 5 → `components/ui/dialog.tsx`

**H: Timeline cho công việc này là bao lâu?**
Đ: Xem EXPLORATION_SUMMARY.txt → phần Implementation Timeline

**H: Có những thắng lợi nhanh nào tôi có thể làm ngay không?**
Đ: Có! Xem IMPLEMENTATION_QUICK_REFERENCE.md → Quick Win Opportunities

## 🔍 Chỉ Số Chất Lượng Tài Liệu

| Chỉ số | Giá trị |
|--------|---------|
| Độ sâu phân tích | Rất kỹ lưỡng |
| Độ phủ tệp | 100% của app/web |
| Ví dụ code được cung cấp | Có (40+ đoạn) |
| Pseudo-code được bao gồm | Có |
| Đánh giá độ phức tạp | Có (chi tiết) |
| Độ phủ kiểm thử | Có |
| Danh sách xác nhận | Có |

## 📌 Lưu Ý Quan Trọng

1. **Không có i18n hiện tại:** Tất cả đều được hardcode bằng tiếng Việt. Đây là triển khai i18n từ đầu (greenfield).

2. **A11y đã được thực hiện một phần:** Nền tảng tốt đã có sẵn (HTML ngữ nghĩa, ARIA label, skip link), nhưng quản lý focus và một số thuộc tính ARIA vẫn còn thiếu.

3. **Công nghệ đã sẵn sàng:** Tất cả thư viện cần thiết đã được cài đặt. Đây là dự án tái cấu trúc/bổ sung, không phải thay đổi framework.

4. **TypeScript hỗ trợ:** Type safety sẽ phát hiện nhiều vấn đề trong quá trình tái cấu trúc.

5. **Kiểm thử rất quan trọng:** Cả hai locale đều cần được kiểm thử kỹ lưỡng.

## 📚 Tài Nguyên Bổ Sung

Tài liệu tham chiếu:
- Next.js App Router: cấu trúc thư mục `/app`
- Thư viện next-intl: cấu hình và thiết lập
- WCAG 2.1 AA: tiêu chuẩn accessibility
- Tailwind CSS: phương pháp tạo kiểu
- Zod: schema validation
- TypeScript: type safety

## 🎓 Lộ Trình Học Tập

Nếu bạn mới làm quen với codebase này:
1. Bắt đầu với **EXPLORATION_SUMMARY.txt** để có cái nhìn tổng quan
2. Đọc phần "Directory Structure Overview" trong **docs/audits/FRONTEND_EXPLORATION.md**
3. Hiểu cấu trúc App Router
4. Xem lại các pattern component hiện tại
5. Sau đó bắt đầu triển khai với **FILE_MAPPING_GUIDE.md**

## 📝 Phiên Bản & Lịch Sử

**Phiên bản hiện tại:** 1.0 - Trước khi triển khai  
**Được tạo:** 9 tháng 4, 2026  
**Loại phân tích:** Rất kỹ lưỡng  
**Mức độ tin cậy:** CAO ✅  
**Trạng thái:** Sẵn sàng triển khai  

---

## 🎯 Tiêu Chí Thành Công

Triển khai hoàn thành khi:
- ✅ Cả hai route `/en/*` và `/vi/*` đều hoạt động
- ✅ Tất cả văn bản hardcoded đến từ tệp message
- ✅ Metadata thay đổi theo locale
- ✅ Thông báo validation được dịch
- ✅ Tất cả enum sử dụng i18n
- ✅ Focus trap hoạt động trong dialog
- ✅ Lỗi form được liên kết với aria-describedby
- ✅ Tất cả nút icon có aria-label
- ✅ Độ tương phản màu đạt WCAG AA
- ✅ Điều hướng bằng bàn phím hoạt động
- ✅ Kiểm thử vượt qua cho cả hai locale
- ✅ Kiểm tra axe DevTools vượt qua

---

**Sẵn sàng triển khai? Bắt đầu với EXPLORATION_SUMMARY.txt, sau đó chuyển sang FILE_MAPPING_GUIDE.md** 🚀
