修正 vercal 部署失敗問題
This commit is contained in:
@@ -446,7 +446,7 @@ function UsersManagementContent() {
|
||||
{user.role === "admin" ? "管理員" : "一般用戶"}
|
||||
</Badge>
|
||||
</TableCell>
|
||||
<TableCell>{new Date(user.created_at).toLocaleDateString("zh-TW")}</TableCell>
|
||||
<TableCell>{new Date(user.createdAt).toLocaleDateString("zh-TW")}</TableCell>
|
||||
<TableCell>
|
||||
<div className="flex gap-2">
|
||||
<Button variant="ghost" size="sm" onClick={() => handleEditUser(user)}>
|
||||
|
@@ -94,14 +94,14 @@ export async function GET(request: NextRequest) {
|
||||
console.log('Debug: 所有創意題目數量:', allCreativeQuestions.length)
|
||||
|
||||
for (let i = 0; i < answerEntries.length; i++) {
|
||||
const [questionIndex, score] = answerEntries[i]
|
||||
const [questionIndex, score] = answerEntries[i] as [string, number]
|
||||
const question = allCreativeQuestions[parseInt(questionIndex)] // 使用索引獲取題目
|
||||
if (question) {
|
||||
questions.push({
|
||||
...question,
|
||||
type: 'creative',
|
||||
userAnswer: score.toString(), // 創意題的答案就是分數
|
||||
score: score as number,
|
||||
score: score,
|
||||
isReverse: question.is_reverse
|
||||
})
|
||||
}
|
||||
|
@@ -35,21 +35,24 @@ export async function GET(request: NextRequest) {
|
||||
if (result.test_type === 'logic') {
|
||||
const logicAnswers = await getLogicTestAnswersByTestResultId(result.id)
|
||||
if (logicAnswers.length > 0) {
|
||||
const logicAnswer = logicAnswers[0]
|
||||
const correctAnswers = logicAnswers.filter(answer => answer.is_correct).length
|
||||
const totalQuestions = logicAnswers.length
|
||||
const accuracy = totalQuestions > 0 ? Math.round((correctAnswers / totalQuestions) * 100) : 0
|
||||
details = {
|
||||
correctAnswers: logicAnswer.correct_answers,
|
||||
totalQuestions: logicAnswer.total_questions,
|
||||
accuracy: logicAnswer.accuracy
|
||||
correctAnswers,
|
||||
totalQuestions,
|
||||
accuracy
|
||||
}
|
||||
}
|
||||
} else if (result.test_type === 'creative') {
|
||||
const creativeAnswers = await getCreativeTestAnswersByTestResultId(result.id)
|
||||
if (creativeAnswers.length > 0) {
|
||||
const creativeAnswer = creativeAnswers[0]
|
||||
const totalScore = creativeAnswers.reduce((sum, answer) => sum + answer.score, 0)
|
||||
const maxScore = creativeAnswers.length * 5 // Assuming max score per question is 5
|
||||
details = {
|
||||
dimensionScores: creativeAnswer.dimension_scores,
|
||||
totalScore: creativeAnswer.total_score,
|
||||
maxScore: creativeAnswer.max_score
|
||||
dimensionScores: {}, // This would need to be calculated based on question categories
|
||||
totalScore,
|
||||
maxScore
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -37,21 +37,24 @@ export async function GET(request: NextRequest) {
|
||||
if (result.test_type === 'logic') {
|
||||
const logicAnswers = await getLogicTestAnswersByTestResultId(result.id)
|
||||
if (logicAnswers.length > 0) {
|
||||
const logicAnswer = logicAnswers[0] // 取第一個答案記錄
|
||||
const correctAnswers = logicAnswers.filter(answer => answer.is_correct).length
|
||||
const totalQuestions = logicAnswers.length
|
||||
const accuracy = totalQuestions > 0 ? Math.round((correctAnswers / totalQuestions) * 100) : 0
|
||||
details = {
|
||||
correctAnswers: logicAnswer.correct_answers,
|
||||
totalQuestions: logicAnswer.total_questions,
|
||||
accuracy: logicAnswer.accuracy
|
||||
correctAnswers,
|
||||
totalQuestions,
|
||||
accuracy
|
||||
}
|
||||
}
|
||||
} else if (result.test_type === 'creative') {
|
||||
const creativeAnswers = await getCreativeTestAnswersByTestResultId(result.id)
|
||||
if (creativeAnswers.length > 0) {
|
||||
const creativeAnswer = creativeAnswers[0] // 取第一個答案記錄
|
||||
const totalScore = creativeAnswers.reduce((sum, answer) => sum + answer.score, 0)
|
||||
const maxScore = creativeAnswers.length * 5 // Assuming max score per question is 5
|
||||
details = {
|
||||
dimensionScores: creativeAnswer.dimension_scores,
|
||||
totalScore: creativeAnswer.total_score,
|
||||
maxScore: creativeAnswer.max_score
|
||||
dimensionScores: {}, // This would need to be calculated based on question categories
|
||||
totalScore,
|
||||
maxScore
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -2,13 +2,11 @@ import { NextRequest, NextResponse } from "next/server"
|
||||
import * as XLSX from "xlsx"
|
||||
import {
|
||||
createLogicQuestion,
|
||||
updateLogicQuestion,
|
||||
getAllLogicQuestions,
|
||||
clearLogicQuestions
|
||||
} from "@/lib/database/models/logic_question"
|
||||
import {
|
||||
createCreativeQuestion,
|
||||
updateCreativeQuestion,
|
||||
getAllCreativeQuestions,
|
||||
clearCreativeQuestions
|
||||
} from "@/lib/database/models/creative_question"
|
||||
|
@@ -110,8 +110,7 @@ export async function POST(request: NextRequest) {
|
||||
console.error('上傳邏輯測驗結果失敗:', error)
|
||||
console.error('錯誤詳情:', {
|
||||
message: error instanceof Error ? error.message : '未知錯誤',
|
||||
stack: error instanceof Error ? error.stack : undefined,
|
||||
body: body
|
||||
stack: error instanceof Error ? error.stack : undefined
|
||||
})
|
||||
return NextResponse.json(
|
||||
{
|
||||
|
@@ -42,7 +42,7 @@ export default function CreativeResultsPage() {
|
||||
|
||||
if (data.success && data.data.length > 0) {
|
||||
// 按創建時間排序,取最新的結果
|
||||
const sortedResults = data.data.sort((a, b) => new Date(b.created_at) - new Date(a.created_at))
|
||||
const sortedResults = data.data.sort((a: any, b: any) => new Date(b.created_at).getTime() - new Date(a.created_at).getTime())
|
||||
const latestResult = sortedResults[0]
|
||||
|
||||
// 獲取題目資料來計算各維度分數
|
||||
|
Reference in New Issue
Block a user