import axios from 'axios';

const API_BASE_URL = 'http://localhost:3000/api';

const testAPI = async () => {
  try {
    console.log('🚀 开始测试 OpenSpec 1.1.0 新功能...\n');

    // 1. 测试题目类别管理
    console.log('📋 1. 测试题目类别管理');
    
    // 获取题目类别列表
    const categoriesResponse = await axios.get(`${API_BASE_URL}/question-categories`);
    console.log('✅ 获取题目类别列表成功:', categoriesResponse.data.data.length, '个类别');

    // 2. 测试考试科目管理
    console.log('\n📚 2. 测试考试科目管理');
    
    // 获取考试科目列表
    const subjectsResponse = await axios.get(`${API_BASE_URL}/exam-subjects`);
    console.log('✅ 获取考试科目列表成功:', subjectsResponse.data.data.length, '个科目');

    // 3. 测试用户登录（带密码验证）
    console.log('\n👤 3. 测试用户登录（带密码验证）');
    
    const userData = {
      name: '测试用户',
      phone: '13800138001',
      password: 'test123'
    };
    
    const userResponse = await axios.post(`${API_BASE_URL}/users`, userData);
    console.log('✅ 创建用户成功:', userResponse.data.data.name);
    
    // 测试密码验证
    const validateResponse = await axios.post(`${API_BASE_URL}/users/validate`, {
      name: userData.name,
      phone: userData.phone,
      password: userData.password
    });
    console.log('✅ 密码验证成功');

    // 4. 测试基于科目的答题
    console.log('\n📝 4. 测试基于科目的答题');
    
    if (subjectsResponse.data.data.length > 0) {
      const subjectId = subjectsResponse.data.data[0].id;
      const userId = userResponse.data.data.id;
      
      const quizResponse = await axios.post(`${API_BASE_URL}/quiz/generate`, {
        userId: userId,
        subjectId: subjectId
      });
      
      console.log('✅ 基于科目生成试卷成功:');
      console.log('  - 题目数量:', quizResponse.data.data.questions.length);
      console.log('  - 总分:', quizResponse.data.data.totalScore);
      console.log('  - 时长:', quizResponse.data.data.timeLimit, '分钟');
    }

    console.log('\n🎉 所有测试通过！OpenSpec 1.1.0 功能正常运行。');
    
  } catch (error) {
    console.error('❌ 测试失败:', error.response?.data?.message || error.message);
  }
};

// 等待服务器启动后执行测试
setTimeout(() => {
  testAPI();
}, 5000);