import { NextResponse } from 'next/server';
import { getQuestionsForTree, getQuestionsByTag } from '@/lib/db/questions';

/**
 * 获取项目的问题树形视图数据
 * @param {Request} request - 请求对象
 * @param {Object} params - 路由参数
 * @returns {Promise<Response>} - 包含问题数据的响应
 */
export async function GET(request, { params }) {
  try {
    const { projectId } = params;

    // 验证项目ID
    if (!projectId) {
      return NextResponse.json({ error: '项目ID不能为空' }, { status: 400 });
    }

    const { searchParams } = new URL(request.url);
    const tag = searchParams.get('tag');
    const input = searchParams.get('input');
    const tagsOnly = searchParams.get('tagsOnly') === 'true';
    const isDistill = searchParams.get('isDistill') === 'true';
    // 默认排除图片问题（label='image'），可通过 excludeImage=false 参数改变
    const excludeImage = searchParams.get('excludeImage') !== 'false';

    if (tag) {
      // 获取指定标签的问题数据（包含完整字段）
      const questions = await getQuestionsByTag(projectId, tag, input, isDistill, excludeImage);
      return NextResponse.json(questions);
    } else if (tagsOnly) {
      // 只获取标签信息（仅包含 id 和 label 字段）
      const treeData = await getQuestionsForTree(projectId, input, isDistill, excludeImage);
      return NextResponse.json(treeData);
    } else {
      // 兼容原有请求，获取树形视图数据（仅包含 id 和 label 字段）
      const treeData = await getQuestionsForTree(projectId, null, isDistill, excludeImage);
      return NextResponse.json(treeData);
    }
  } catch (error) {
    console.error('获取问题树形数据失败:', String(error));
    return NextResponse.json({ error: error.message || '获取问题树形数据失败' }, { status: 500 });
  }
}
