Skip to content
This repository was archived by the owner on Mar 19, 2026. It is now read-only.

Latest commit

 

History

History
96 lines (77 loc) · 3.24 KB

File metadata and controls

96 lines (77 loc) · 3.24 KB

🔧 Fix cho 3 API 400 Errors - Submissions Page

🎯 Vấn Đề

Trang Submissions đang gặp 3 lỗi 400 từ các API endpoints:

  • submissions-summary?top=5 - trả về {"success": false, "message": "Please login to access this"}
  • all-submissions?page=1&limit=10... - hiển thị màu đỏ (lỗi)
  • submission-statistics - hiển thị màu đỏ (lỗi)

🔍 Nguyên Nhân

  1. API endpoints chưa tồn tại: Các endpoints này chưa được implement ở backend
  2. Authentication issues: User có thể chưa đăng nhập hoặc không có quyền admin
  3. Frontend gọi sai URL: Đang gọi trực tiếp đến backend server thay vì local API

✅ Giải Pháp Đã Áp Dụng

1. Tạo Local API Routes

Đã tạo 3 API routes mới trong Next.js:

// src/app/api/revenue/all-submissions/route.ts
// src/app/api/revenue/submission-statistics/route.ts  
// src/app/api/revenue/submissions-summary/route.ts

2. Thêm Authentication Check

Tạo utility function để check admin role:

// src/lib/auth-utils.ts
export async function checkAdminAuth(request: NextRequest) {
  // Check NextAuth session và admin role
}

3. Cập Nhật Frontend

Thay đổi URL từ backend server sang local API:

// Trước
const response = await fetch(`${process.env.NEXT_PUBLIC_SERVER_URI}/revenue/all-submissions?${params}`);

// Sau  
const response = await fetch(`/api/revenue/all-submissions?${params}`);

🚀 Cách Hoạt Động

1. Authentication Flow

User Request → NextAuth Session Check → Admin Role Check → API Response

2. API Endpoints

  • GET /api/revenue/all-submissions - Danh sách submissions với pagination
  • GET /api/revenue/submission-statistics - Thống kê tổng quan
  • GET /api/revenue/submissions-summary?top=5 - Top instructors

3. Response Format

{
  success: boolean,
  data: {
    submissions: SubmissionData[],
    pagination: PaginationData
  }
}

📊 Mock Data

Hiện tại sử dụng mock data cho development:

  • 5 instructors với thông tin đầy đủ
  • Statistics với các metrics quan trọng
  • Top 5 instructors theo submission amount

🔒 Bảo Mật

  • Authentication required: Chỉ user đã đăng nhập mới truy cập được
  • Admin role required: Chỉ admin mới có quyền xem submissions
  • Proper error handling: Trả về status code và message phù hợp

🎯 Kết Quả

  • 3 API calls thành công: Không còn lỗi 400
  • Authentication working: User phải đăng nhập và có role admin
  • Data loading: Trang submissions hiển thị dữ liệu đầy đủ
  • Fallback mechanism: Vẫn có mock data khi API không khả dụng

🔄 Chuyển Sang Production

Khi backend sẵn sàng, chỉ cần:

  1. Thay thế mock data bằng real database queries
  2. Cập nhật URL về backend server
  3. Xóa mock indicators trong UI

📝 Lưu Ý

  • Các API routes này chỉ dành cho admin users
  • Mock data được sử dụng cho development
  • Authentication dựa trên NextAuth session
  • Error handling đầy đủ với proper HTTP status codes