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`)
|
log.info(`rubric:getData: ${rows.length} rows`)
|
||||||
if (rows.length) {
|
if (rows.length) {
|
||||||
return {
|
return {
|
||||||
questions: rows.map(r => ({
|
questions: rows.map(r => {
|
||||||
questionTitle: r.question_title,
|
const img = r.reference_answer_image
|
||||||
maxScore: r.max_score,
|
return {
|
||||||
referenceAnswer: r.reference_answer,
|
questionTitle: r.question_title,
|
||||||
rubric: r.rubric,
|
maxScore: r.max_score,
|
||||||
referenceAnswerImage: r.reference_answer_image || undefined
|
referenceAnswer: r.reference_answer,
|
||||||
})),
|
rubric: r.rubric,
|
||||||
|
referenceAnswerImage: img && !img.startsWith('data:') ? `data:image/png;base64,${img}` : (img || undefined)
|
||||||
|
}
|
||||||
|
}),
|
||||||
currentIndex: 0
|
currentIndex: 0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -297,13 +300,16 @@ export function setupIpc(win: BrowserWindow): void {
|
|||||||
const d = getDb()
|
const d = getDb()
|
||||||
const rows: any[] = d.prepare('SELECT * FROM rubric ORDER BY sort_order').all()
|
const rows: any[] = d.prepare('SELECT * FROM rubric ORDER BY sort_order').all()
|
||||||
if (!rows.length) throw new Error('暂无评分标准可导出')
|
if (!rows.length) throw new Error('暂无评分标准可导出')
|
||||||
const questions = rows.map(r => ({
|
const questions = rows.map(r => {
|
||||||
questionTitle: r.question_title,
|
const img = r.reference_answer_image
|
||||||
maxScore: r.max_score,
|
return {
|
||||||
referenceAnswer: r.reference_answer,
|
questionTitle: r.question_title,
|
||||||
rubric: r.rubric,
|
maxScore: r.max_score,
|
||||||
referenceAnswerImage: r.reference_answer_image || undefined
|
referenceAnswer: r.reference_answer,
|
||||||
}))
|
rubric: r.rubric,
|
||||||
|
referenceAnswerImage: img && !img.startsWith('data:') ? `data:image/png;base64,${img}` : (img || undefined)
|
||||||
|
}
|
||||||
|
})
|
||||||
const result = await dialogBox.showSaveDialog({
|
const result = await dialogBox.showSaveDialog({
|
||||||
defaultPath: '评分标准.json',
|
defaultPath: '评分标准.json',
|
||||||
filters: [{ name: 'JSON', extensions: ['json'] }]
|
filters: [{ name: 'JSON', extensions: ['json'] }]
|
||||||
@@ -418,11 +424,11 @@ ${extras?.maxScore ?? 100}
|
|||||||
? [
|
? [
|
||||||
{ type: 'text', text: prompt },
|
{ 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,${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`, {
|
const response = await axios.post(`${config.baseUrl}/chat/completions`, {
|
||||||
|
|||||||
@@ -28,7 +28,7 @@
|
|||||||
<div class="result-section" v-if="currentQuestion.referenceAnswer">
|
<div class="result-section" v-if="currentQuestion.referenceAnswer">
|
||||||
<div class="section-title">参考答案</div>
|
<div class="section-title">参考答案</div>
|
||||||
<div class="reference-text">{{ currentQuestion.referenceAnswer }}</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>
|
||||||
|
|
||||||
<div class="result-score">
|
<div class="result-score">
|
||||||
|
|||||||
@@ -142,7 +142,7 @@ async function uploadRefImage(idx: number) {
|
|||||||
if (!window.electronAPI) return
|
if (!window.electronAPI) return
|
||||||
const data = await window.electronAPI.dialog.openImage()
|
const data = await window.electronAPI.dialog.openImage()
|
||||||
if (data) {
|
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