fix: rubric:storeData 空数据保护防止误清
This commit is contained in:
@@ -254,9 +254,14 @@ export function setupIpc(win: BrowserWindow): void {
|
|||||||
// --- Rubric data bridge (toolbar ↔ rubric window), persisted to DB ---
|
// --- Rubric data bridge (toolbar ↔ rubric window), persisted to DB ---
|
||||||
ipcMain.handle('rubric:storeData', (_event, data: any) => {
|
ipcMain.handle('rubric:storeData', (_event, data: any) => {
|
||||||
const d = getDb()
|
const d = getDb()
|
||||||
|
const questions = data?.questions || []
|
||||||
|
// Don't clear rubric data when saving empty data (preserve existing)
|
||||||
|
if (questions.length === 0) {
|
||||||
|
rubricPayload = data
|
||||||
|
return
|
||||||
|
}
|
||||||
d.prepare('DELETE FROM rubric').run()
|
d.prepare('DELETE FROM rubric').run()
|
||||||
const insert = d.prepare('INSERT INTO rubric (question_title, max_score, reference_answer, rubric, sort_order) VALUES (?, ?, ?, ?, ?)')
|
const insert = d.prepare('INSERT INTO rubric (question_title, max_score, reference_answer, rubric, sort_order) VALUES (?, ?, ?, ?, ?)')
|
||||||
const questions = data?.questions || []
|
|
||||||
for (let i = 0; i < questions.length; i++) {
|
for (let i = 0; i < questions.length; i++) {
|
||||||
const q = questions[i]
|
const q = questions[i]
|
||||||
insert.run(q.questionTitle || '', q.maxScore ?? 100, q.referenceAnswer || '', q.rubric || '', i)
|
insert.run(q.questionTitle || '', q.maxScore ?? 100, q.referenceAnswer || '', q.rubric || '', i)
|
||||||
@@ -300,7 +305,7 @@ async function callAiApi(imageBase64: string, rubric: string, config: { apiKey:
|
|||||||
deductions: string[]
|
deductions: string[]
|
||||||
comment: string
|
comment: string
|
||||||
}> {
|
}> {
|
||||||
const systemRole = `你是高校阅卷专家,严格按照评分标准逐项评分。`
|
const systemRole = `你是高校阅卷专家,严格按照评分标准逐项评分。只输出JSON,不包含任何其他文字。`
|
||||||
|
|
||||||
const prompt = `${extras?.questionTitle ? `【题目】\n${extras.questionTitle}\n` : ''}【评分标准】
|
const prompt = `${extras?.questionTitle ? `【题目】\n${extras.questionTitle}\n` : ''}【评分标准】
|
||||||
${rubric || '无'}
|
${rubric || '无'}
|
||||||
@@ -322,7 +327,8 @@ ${extras?.maxScore ?? 100}
|
|||||||
3. 如果学生答案为空、空白或明显与题目无关,直接给0分
|
3. 如果学生答案为空、空白或明显与题目无关,直接给0分
|
||||||
4. 部分正确时按评分标准酌情给分
|
4. 部分正确时按评分标准酌情给分
|
||||||
|
|
||||||
请严格按照以下JSON格式返回结果,不要包含任何markdown标记或其他文字:
|
【输出要求】
|
||||||
|
只输出以下JSON,不要包含markdown代码块、\`\`\`标记、注释或任何其他文字:
|
||||||
{
|
{
|
||||||
"score": <总分>,
|
"score": <总分>,
|
||||||
"confidence": <置信度0~1>,
|
"confidence": <置信度0~1>,
|
||||||
|
|||||||
Reference in New Issue
Block a user