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');