Files

45 lines
1.8 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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 });
}
}