fix: 参考答案图片存完整 data URL (含 mime),修复无图时提示词顺序一致化

This commit is contained in:
2026-07-16 10:16:03 +08:00
parent 25b8cfb787
commit ba7aff17d7
3 changed files with 25 additions and 19 deletions
+23 -17
View File
@@ -280,13 +280,16 @@ export function setupIpc(win: BrowserWindow): void {
log.info(`rubric:getData: ${rows.length} rows`)
if (rows.length) {
return {
questions: rows.map(r => ({
questionTitle: r.question_title,
maxScore: r.max_score,
referenceAnswer: r.reference_answer,
rubric: r.rubric,
referenceAnswerImage: r.reference_answer_image || undefined
})),
questions: rows.map(r => {
const img = r.reference_answer_image
return {
questionTitle: r.question_title,
maxScore: r.max_score,
referenceAnswer: r.reference_answer,
rubric: r.rubric,
referenceAnswerImage: img && !img.startsWith('data:') ? `data:image/png;base64,${img}` : (img || undefined)
}
}),
currentIndex: 0
}
}
@@ -297,13 +300,16 @@ export function setupIpc(win: BrowserWindow): void {
const d = getDb()
const rows: any[] = d.prepare('SELECT * FROM rubric ORDER BY sort_order').all()
if (!rows.length) throw new Error('暂无评分标准可导出')
const questions = rows.map(r => ({
questionTitle: r.question_title,
maxScore: r.max_score,
referenceAnswer: r.reference_answer,
rubric: r.rubric,
referenceAnswerImage: r.reference_answer_image || undefined
}))
const questions = rows.map(r => {
const img = r.reference_answer_image
return {
questionTitle: r.question_title,
maxScore: r.max_score,
referenceAnswer: r.reference_answer,
rubric: r.rubric,
referenceAnswerImage: img && !img.startsWith('data:') ? `data:image/png;base64,${img}` : (img || undefined)
}
})
const result = await dialogBox.showSaveDialog({
defaultPath: '评分标准.json',
filters: [{ name: 'JSON', extensions: ['json'] }]
@@ -418,11 +424,11 @@ ${extras?.maxScore ?? 100}
? [
{ type: 'text', text: prompt },
{ type: 'image_url', image_url: { url: `data:image/png;base64,${imageBase64}` } },
{ type: 'image_url', image_url: { url: `data:image/png;base64,${extras!.referenceAnswerImage}` } }
{ type: 'image_url', image_url: { url: extras!.referenceAnswerImage } }
]
: [
{ type: 'image_url', image_url: { url: `data:image/png;base64,${imageBase64}` } },
{ type: 'text', text: prompt }
{ type: 'text', text: prompt },
{ type: 'image_url', image_url: { url: `data:image/png;base64,${imageBase64}` } }
]
const response = await axios.post(`${config.baseUrl}/chat/completions`, {
+1 -1
View File
@@ -28,7 +28,7 @@
<div class="result-section" v-if="currentQuestion.referenceAnswer">
<div class="section-title">参考答案</div>
<div class="reference-text">{{ currentQuestion.referenceAnswer }}</div>
<img v-if="currentQuestion.referenceAnswerImage" class="ref-image" :src="'data:image/png;base64,' + currentQuestion.referenceAnswerImage" />
<img v-if="currentQuestion.referenceAnswerImage" class="ref-image" :src="currentQuestion.referenceAnswerImage" />
</div>
<div class="result-score">
+1 -1
View File
@@ -142,7 +142,7 @@ async function uploadRefImage(idx: number) {
if (!window.electronAPI) return
const data = await window.electronAPI.dialog.openImage()
if (data) {
questions.value[idx].referenceAnswerImage = data.base64
questions.value[idx].referenceAnswerImage = `data:${data.mime};base64,${data.base64}`
}
}