fix: 参考答案图片存完整 data URL (含 mime),修复无图时提示词顺序一致化
This commit is contained in:
+23
-17
@@ -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`, {
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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}`
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user