import apiConfig from './api_config.js';
import request from '../utils/request.js';

// Fiber 后端请求函数
// 注意：request 函数内部已经会拼接 baseURL，所以这里只需要传入相对路径
function fiberRequest(options) {
      return request({
            url: options.url, // 只传入相对路径，request 函数会拼接 baseURL
            method: options.method || 'GET',
            data: options.data,
            header: options.header || {}
      });
}

export const questionApi = {
      /**
       * 获取试卷详情（使用 Fiber 后端）
       * @param {string} paperId 试卷ID
       * @returns {Promise} 试卷数据
       */
      getPaperDetail: (paperId) => {
            return fiberRequest({
                  url: `/paper/detail?id=${paperId}`,
                  method: 'GET'
            }).then(res => {
                  // 转换 Fiber 后端返回格式为前端期望的格式
                  if (res.success && res.paper) {
                        return {
                              success: true,
                              code: 200,
                              data: res.paper,
                              paper: res.paper // 兼容旧格式
                        };
                  }
                  return res;
            });
      },

      /**
       * 获取试卷（兼容旧接口，接受 paperId 和 taskId）
       * @param {string} paperId 试卷ID
       * @param {string} taskId 任务ID（可选）
       * @returns {Promise} 试卷数据
       */
      getExamPaper: (paperId, taskId) => {
            return questionApi.getPaperDetail(paperId);
      },

      /**
       * 获取试卷详情（包含答案和解析，用于答题结果页面）
       * @param {string} paperId 试卷ID
       * @returns {Promise} 试卷数据（包含答案和解析）
       */
      getPaperWithAnswers: (paperId) => {
            return fiberRequest({
                  url: `/paper/result?id=${paperId}`,
                  method: 'GET'
            }).then(res => {
                  // 转换 Fiber 后端返回格式为前端期望的格式
                  if (res.success && (res.paper || res.data)) {
                        const paper = res.paper || res.data;
                        return {
                              success: true,
                              code: 200,
                              data: paper,
                              paper: paper // 兼容旧格式
                        };
                  }
                  return res;
            });
      },

      /**
       * 创建答题记录（使用 Fiber 后端）
       * @param {object} data 答题记录数据
       * @param {string} data.user_id 用户ID
       * @param {string} data.paper_id 试卷ID
       * @param {number} data.start_time 开始时间（Unix时间戳，秒）
       * @param {number} data.end_time 结束时间（Unix时间戳，秒）
       * @param {array} data.answers 答案数组
       * @returns {Promise} 创建结果
       */
      createAnswerRecord: (data) => {
            // 转换前端数据格式为 Fiber 后端期望的格式
            const fiberData = {
                  user_id: String(data.user_id),
                  paper_id: String(data.paper_id),
                  task_id: data.task_id ? String(data.task_id) : '',  // 打卡营任务ID，用于不同打卡营的答题隔离
                  start_time: data.start_time || Math.floor(Date.now() / 1000),
                  end_time: data.end_time || Math.floor(Date.now() / 1000),
                  answers: (data.answers || []).map(answer => ({
                        question_id: String(answer.question_id),
                        user_answer: String(answer.user_answer || '')
                  }))
            };

            return fiberRequest({
                  url: `/answer_record/create`,
                  method: 'POST',
                  data: fiberData
            }).then(res => {
                  // 转换 Fiber 后端返回格式为前端期望的格式
                  if (res.success) {
                        return {
                              success: true,
                              code: 200,
                              ...res
                        };
                  }
                  return res;
            });
      },

      /**
       * 获取答题记录（使用 Fiber 后端）
       * @param {string} userId 用户ID
       * @param {string} paperId 试卷ID
       * @param {number} page 页码
       * @param {number} pageSize 每页数量
       * @returns {Promise} 答题记录列表
       */
      getAnswerRecord: (userId, paperId, page = 1, pageSize = 100, taskId = '') => {
            let url = `/answer_record/detail?user_id=${userId}&paper_id=${paperId}&page=${page}&page_size=${pageSize}`;
            if (taskId) {
                  url += `&task_id=${taskId}`;
            }
            return fiberRequest({
                  url: url,
                  method: 'GET'
            }).then(res => {
                  // 转换 Fiber 后端返回格式为前端期望的格式
                  if (res.success) {
                        return {
                              success: true,
                              code: 200,
                              ...res
                        };
                  }
                  return res;
            });
      }
};


