first-update
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
import { NextResponse } from 'next/server';
|
||||
import { db } from '@/lib/db/index';
|
||||
|
||||
/**
|
||||
* Get current question info (including random swap info)
|
||||
*/
|
||||
export async function GET(request, { params }) {
|
||||
const { projectId, taskId } = params;
|
||||
|
||||
try {
|
||||
if (!projectId || !taskId) {
|
||||
return NextResponse.json({ error: 'Missing required parameters' }, { status: 400 });
|
||||
}
|
||||
|
||||
// Fetch task
|
||||
const task = await db.task.findUnique({
|
||||
where: { id: taskId }
|
||||
});
|
||||
|
||||
if (!task || task.taskType !== 'blind-test') {
|
||||
return NextResponse.json({ error: 'Task not found' }, { status: 404 });
|
||||
}
|
||||
|
||||
// Parse task detail
|
||||
const detail = JSON.parse(task.detail || '{}');
|
||||
// Support both evalDatasetIds and questionIds
|
||||
const questionIds = detail.questionIds || detail.evalDatasetIds || [];
|
||||
const currentIndex = detail.currentIndex || 0;
|
||||
|
||||
// Check if task is completed
|
||||
if (questionIds.length === 0 || currentIndex >= questionIds.length) {
|
||||
return NextResponse.json({
|
||||
completed: true,
|
||||
currentIndex,
|
||||
totalQuestions: questionIds.length
|
||||
});
|
||||
}
|
||||
|
||||
// Fetch current question
|
||||
const currentQuestionId = questionIds[currentIndex];
|
||||
const currentQuestion = await db.evalDatasets.findUnique({
|
||||
where: { id: currentQuestionId }
|
||||
});
|
||||
|
||||
if (!currentQuestion) {
|
||||
return NextResponse.json({ error: 'Question not found' }, { status: 404 });
|
||||
}
|
||||
|
||||
// Randomly decide whether to swap (core blind-test behavior)
|
||||
const isSwapped = Math.random() > 0.5;
|
||||
|
||||
return NextResponse.json({
|
||||
questionId: currentQuestion.id,
|
||||
question: currentQuestion.question,
|
||||
answer: currentQuestion.correctAnswer || '',
|
||||
questionIndex: currentIndex + 1,
|
||||
totalQuestions: questionIds.length,
|
||||
isSwapped
|
||||
});
|
||||
} catch (error) {
|
||||
console.error('Failed to fetch question info:', error);
|
||||
return NextResponse.json({ error: error.message }, { status: 500 });
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user