From 3d801ecbb66935c003184034470af4114dc675d6 Mon Sep 17 00:00:00 2001 From: five-plus-one <5plus1@five-plus-one.com> Date: Fri, 3 Jul 2026 21:34:10 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E8=AF=84=E5=88=86?= =?UTF-8?q?=E7=90=86=E7=94=B1=E7=BC=96=E8=BE=91=E5=8A=9F=E8=83=BD=E5=8F=8A?= =?UTF-8?q?=E9=A2=84=E8=A7=88=E5=8C=BA=EF=BC=8C=E6=94=AF=E6=8C=81=20Markdo?= =?UTF-8?q?wn=20=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/correction.js | 46 +++++++++++++++++++++++++++++++++++++++--- 1 file changed, 43 insertions(+), 3 deletions(-) diff --git a/src/core/correction.js b/src/core/correction.js index e891ea4..89848ab 100644 --- a/src/core/correction.js +++ b/src/core/correction.js @@ -281,6 +281,7 @@ function showCorrectionPanel(context) { let editedRubric = ''; let editedAnswerData = null; // 完整字段数据(可能是 string 或 {text, images, format}) let editedRubricData = null; + let editedReasonData = ''; // 评分理由(Markdown 文本) function updateStepsBar() { const bar = document.getElementById('cor-steps-bar'); @@ -359,7 +360,9 @@ function showCorrectionPanel(context) {
- +
+ 点击此处输入评分理由(支持 Markdown 和公式)... +
`; @@ -373,7 +376,9 @@ function showCorrectionPanel(context) {
- +
+ 点击此处输入评分理由(支持 Markdown 和公式)... +
`; @@ -420,10 +425,45 @@ function showCorrectionPanel(context) { inp.addEventListener('keydown', e => { if (e.key === 'Enter') e.preventDefault(); }); }); + // 构建 callConfig(复用 ProviderManager 中已保存的 API Key) + var _step1CallConfig = null; + try { + var _step1WfId = context?.config?.workflowId || 'fast'; + var _step1Wf = typeof WorkflowManager !== 'undefined' ? WorkflowManager.getWorkflow(_step1WfId) : null; + if (_step1Wf) { + var _step1PName = _step1Wf.model?.provider || (typeof ProviderManager !== 'undefined' ? ProviderManager.data.activeProvider : ''); + var _step1MName = _step1Wf.model?.model || (typeof ProviderManager !== 'undefined' ? ProviderManager.data.activeModel : ''); + var _step1Prov = typeof ProviderManager !== 'undefined' ? ProviderManager.getProvider(_step1PName) : null; + _step1CallConfig = { endpoint: _step1Prov?.endpoint || '', apiKey: _step1Prov?.apiKey || '', model: _step1MName, reasoningEffort: _step1Wf.model?.reasoningEffort || '' }; + } + } catch (e) { /* ignore */ } + + // 评分理由预览区 → 打开 Markdown 编辑器 + var _corReasonPreview = body.querySelector('#cor-reason-preview'); + if (_corReasonPreview) { + _corReasonPreview.onclick = function () { + if (typeof openMarkdownEditor !== 'function') return; + openMarkdownEditor({ + field: 'correction-reason', label: '评分理由', + initialText: editedReasonData || '', + initialImages: [], + callConfig: _step1CallConfig, + onConfirm: function (newText) { + editedReasonData = newText || ''; + corRenderPreview('cor-reason-preview', newText); + } + }); + }; + // 初始渲染预览(如果有内容) + if (editedReasonData) { + corRenderPreview('cor-reason-preview', editedReasonData); + } + } + footer.querySelector('#cor-cancel').onclick = e => { e.stopPropagation(); cleanup(); if (context.onCancel) context.onCancel(); }; footer.querySelector('#cor-next').onclick = e => { e.stopPropagation(); - const reasonVal = body.querySelector('#cor-teacher-reason').value.trim(); + const reasonVal = editedReasonData || ''; if (hasSubScores) { const subInputs = body.querySelectorAll('.cor-sub-score-input');