async function testUserManagementIntegration() { console.log('🧪 測試用戶管理與資料庫整合...\n'); try { // 1. 測試獲取用戶列表 API console.log('1. 測試獲取用戶列表 API...'); const usersResponse = await fetch('http://localhost:3000/api/admin/users'); if (usersResponse.ok) { const usersData = await usersResponse.json(); console.log('✅ 用戶列表 API 成功'); console.log('用戶數量:', usersData.data?.users?.length || 0); console.log('統計數據:', { 總用戶數: usersData.data?.stats?.totalUsers || 0, 活躍用戶: usersData.data?.stats?.activeUsers || 0, 管理員: usersData.data?.stats?.adminCount || 0, 開發者: usersData.data?.stats?.developerCount || 0, 非活躍用戶: usersData.data?.stats?.inactiveUsers || 0, 本月新增: usersData.data?.stats?.newThisMonth || 0 }); } else { console.log('❌ 用戶列表 API 失敗:', usersResponse.status); const errorData = await usersResponse.text(); console.log('錯誤信息:', errorData); } // 2. 測試邀請用戶 API console.log('\n2. 測試邀請用戶 API...'); const inviteResponse = await fetch('http://localhost:3000/api/admin/users', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ email: 'test@example.com', role: 'user' }) }); if (inviteResponse.ok) { const inviteData = await inviteResponse.json(); console.log('✅ 邀請用戶 API 成功'); console.log('邀請連結:', inviteData.data?.invitationLink); } else { const errorData = await inviteResponse.text(); console.log('❌ 邀請用戶 API 失敗:', inviteResponse.status, errorData); } // 3. 測試管理員頁面載入 console.log('\n3. 測試管理員頁面載入...'); const adminResponse = await fetch('http://localhost:3000/admin'); if (adminResponse.ok) { console.log('✅ 管理員頁面載入成功'); const pageContent = await adminResponse.text(); if (pageContent.includes('用戶管理')) { console.log('✅ 用戶管理頁面正常顯示'); } else { console.log('⚠️ 用戶管理頁面可能未正常顯示'); } } else { console.log('❌ 管理員頁面載入失敗:', adminResponse.status); } console.log('\n🎉 用戶管理整合測試完成!'); console.log('\n📋 整合內容:'); console.log('✅ 創建了用戶管理 API 端點'); console.log('✅ 更新了 UserService 以支持管理功能'); console.log('✅ 連接了前端組件與後端 API'); console.log('✅ 實現了真實的數據載入和統計'); } catch (error) { console.error('❌ 測試過程中發生錯誤:', error); } } testUserManagementIntegration();