fix(llm): relax guidance and preserve judge output
This commit is contained in:
@@ -7,6 +7,16 @@ $llm_guidance_auto_fetch = isset($llm_guidance_auto_fetch)
|
||||
? !!$llm_guidance_auto_fetch
|
||||
: !empty($llm_guidance['auto_fetch']);
|
||||
$llm_guidance_label = llm_guidance_mode_label($llm_guidance['mode']);
|
||||
$llm_guidance_level = isset($llm_guidance['level']) ? $llm_guidance['level'] : 'none';
|
||||
$llm_guidance_level_labels = array(
|
||||
'low' => '需要补全',
|
||||
'medium' => '已有有效尝试',
|
||||
'high' => '结构基本完整',
|
||||
'none' => '待分析',
|
||||
);
|
||||
$llm_guidance_level_label = isset($llm_guidance_level_labels[$llm_guidance_level])
|
||||
? $llm_guidance_level_labels[$llm_guidance_level]
|
||||
: $llm_guidance_level_labels['none'];
|
||||
?>
|
||||
|
||||
<?php if ($llm_guidance_visible): ?>
|
||||
@@ -35,8 +45,7 @@ $llm_guidance_label = llm_guidance_mode_label($llm_guidance['mode']);
|
||||
|
||||
<div class="ui raised segment" id="llm-section"
|
||||
data-guidance-mode="<?php echo htmlspecialchars($llm_guidance['mode'], ENT_QUOTES, 'UTF-8'); ?>"
|
||||
data-completion-level="<?php echo htmlspecialchars($llm_guidance['level'], ENT_QUOTES, 'UTF-8'); ?>"
|
||||
data-completion-score="<?php echo intval($llm_guidance['score']); ?>">
|
||||
data-completion-level="<?php echo htmlspecialchars($llm_guidance_level, ENT_QUOTES, 'UTF-8'); ?>">
|
||||
<h3 class="ui header llm-section-header" id="llm-toggle" style="cursor:pointer; user-select:none;">
|
||||
<i class="magic icon"></i>
|
||||
<div class="content">
|
||||
@@ -49,7 +58,7 @@ $llm_guidance_label = llm_guidance_mode_label($llm_guidance['mode']);
|
||||
<div id="llm-section-body">
|
||||
<div class="ui tiny labels llm-guidance-meta">
|
||||
<span class="ui blue basic label" id="llm-mode-label"><?php echo htmlspecialchars($llm_guidance_label, ENT_QUOTES, 'UTF-8'); ?></span>
|
||||
<span class="ui basic label" id="llm-completion-label">完成度 <?php echo intval($llm_guidance['score']); ?>%</span>
|
||||
<span class="ui basic label" id="llm-progress-label"><?php echo htmlspecialchars($llm_guidance_level_label, ENT_QUOTES, 'UTF-8'); ?></span>
|
||||
</div>
|
||||
|
||||
<div id="llm-review-loading" class="ui active inline text loader" style="margin:12px 0;">
|
||||
@@ -93,18 +102,31 @@ $llm_guidance_label = llm_guidance_mode_label($llm_guidance['mode']);
|
||||
flowchart: '流程图引导',
|
||||
focused_hint: '聚焦排错',
|
||||
output_diff: '输出差异定位',
|
||||
judge_output: '评测输出定位',
|
||||
compile_location: '编译错误定位'
|
||||
};
|
||||
return labels[mode] || 'AI 指导';
|
||||
}
|
||||
|
||||
function progressLabel(level) {
|
||||
var labels = {
|
||||
low: '需要补全',
|
||||
medium: '已有有效尝试',
|
||||
high: '结构基本完整',
|
||||
none: '待分析'
|
||||
};
|
||||
return labels[level] || labels.none;
|
||||
}
|
||||
|
||||
function applyMeta(data) {
|
||||
if (!data) return;
|
||||
var label = modeLabel(data.mode);
|
||||
var level = data.completion_band || section.getAttribute('data-completion-level') || 'none';
|
||||
section.setAttribute('data-guidance-mode', data.mode || '');
|
||||
section.setAttribute('data-completion-level', level);
|
||||
document.getElementById('llm-mode-label').textContent = label;
|
||||
document.getElementById('llm-mode-description').textContent = label;
|
||||
document.getElementById('llm-completion-label').textContent = '完成度 ' + parseInt(data.completion_score || 0, 10) + '%';
|
||||
document.getElementById('llm-progress-label').textContent = progressLabel(level);
|
||||
|
||||
var diff = document.getElementById('diff-section');
|
||||
if (diff && data.show_output_diff) diff.classList.add('guidance-diff-open');
|
||||
|
||||
@@ -245,13 +245,44 @@ i.icon.spinning {
|
||||
<?php echo isset($verdict_tip) ? htmlspecialchars($verdict_tip, ENT_QUOTES, 'UTF-8') : ''; ?>
|
||||
</div>
|
||||
|
||||
<!-- 3. 原始评测信息:按原权限保留,默认折叠 -->
|
||||
<div class="ui styled accordion" id="raw-info-accordion">
|
||||
<div class="title">
|
||||
<i class="dropdown icon"></i>
|
||||
<?php echo isset($MSG_RAW_ERROR) ? $MSG_RAW_ERROR : '查看原始评测信息'; ?>
|
||||
<?php if (!empty($view_reinfo_dedup_count)): ?>
|
||||
<span class="ui tiny teal label dedup-label">
|
||||
<?php echo sprintf(isset($MSG_DEDUP_HINT) ? $MSG_DEDUP_HINT : '已折叠 %d 个相同测试点', intval($view_reinfo_dedup_count)); ?>
|
||||
</span>
|
||||
<?php endif; ?>
|
||||
<?php if (trim($view_reinfo) === ''): ?>
|
||||
<span class="dedup-label empty-notice">(无)</span>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
<div class="content">
|
||||
<?php if (trim($view_reinfo) === ''): ?>
|
||||
<p class="empty-notice">当前判题结果没有原始评测信息(如 TLE/MLE 通常不会写 runtimeinfo)。</p>
|
||||
<?php else: ?>
|
||||
<pre id="errtxt"><?php
|
||||
// 普通用户:控制器提供的评测信息;管理员/源浏览者:完整原文
|
||||
if (isset($is_admin_session) && $is_admin_session) {
|
||||
echo htmlspecialchars($view_reinfo_raw, ENT_QUOTES, 'UTF-8');
|
||||
} elseif (isset($is_source_browser) && $is_source_browser) {
|
||||
echo htmlspecialchars($view_reinfo_raw, ENT_QUOTES, 'UTF-8');
|
||||
} else {
|
||||
echo htmlspecialchars($view_reinfo, ENT_QUOTES, 'UTF-8');
|
||||
}
|
||||
?></pre>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 3. AI 指导:仅错误终态渲染,并自动展开/请求一次 -->
|
||||
<!-- 4. AI 指导:仅错误终态渲染,并自动展开/请求一次 -->
|
||||
<?php if (isset($OJ_LLM_ENABLED) && $OJ_LLM_ENABLED) {
|
||||
require("template/$OJ_TEMPLATE/llm-guidance.php");
|
||||
} ?>
|
||||
|
||||
<!-- 3.5. 对比详情(WA/PE 时显示,diff 视图) -->
|
||||
<!-- 5. 对比详情(WA/PE 时显示,diff 视图) -->
|
||||
<?php if (!empty($diff_blocks) && is_array($diff_blocks)): ?>
|
||||
<div id="diff-section">
|
||||
<h3 class="ui header" style="margin-top: 0;">
|
||||
@@ -269,7 +300,7 @@ i.icon.spinning {
|
||||
<?php
|
||||
$download_base = llm_guidance_testcase_base($block['name']);
|
||||
$download_allowed = isset($OJ_DOWNLOAD) && $OJ_DOWNLOAD
|
||||
&& !empty($llm_guidance_download_allowed)
|
||||
&& !empty($testcase_download_allowed)
|
||||
&& $download_base !== null
|
||||
&& (!(isset($OJ_DL_1ST_WA_ONLY) && $OJ_DL_1ST_WA_ONLY) || $idx === 0);
|
||||
if ($download_allowed):
|
||||
@@ -320,39 +351,7 @@ i.icon.spinning {
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
|
||||
<!-- 4. 原始错误折叠(默认收起) -->
|
||||
<div class="ui styled accordion" id="raw-info-accordion">
|
||||
<div class="title">
|
||||
<i class="dropdown icon"></i>
|
||||
<?php echo isset($MSG_RAW_ERROR) ? $MSG_RAW_ERROR : '查看原始错误信息'; ?>
|
||||
<?php if (!empty($view_reinfo_dedup_count)): ?>
|
||||
<span class="ui tiny teal label dedup-label">
|
||||
<?php echo sprintf(isset($MSG_DEDUP_HINT) ? $MSG_DEDUP_HINT : '已折叠 %d 个相同测试点', intval($view_reinfo_dedup_count)); ?>
|
||||
</span>
|
||||
<?php endif; ?>
|
||||
<?php if (trim($view_reinfo) === ''): ?>
|
||||
<span class="dedup-label empty-notice">(无)</span>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
<div class="content">
|
||||
<?php if (trim($view_reinfo) === ''): ?>
|
||||
<p class="empty-notice">当前判题结果没有原始错误信息(如 TLE/MLE 通常不会写 runtimeinfo)。</p>
|
||||
<?php else: ?>
|
||||
<pre id="errtxt"><?php
|
||||
// 普通用户:折叠后;管理员/源浏览者:原文
|
||||
if (isset($is_admin_session) && $is_admin_session) {
|
||||
echo htmlspecialchars($view_reinfo_raw, ENT_QUOTES, 'UTF-8');
|
||||
} elseif (isset($is_source_browser) && $is_source_browser) {
|
||||
echo htmlspecialchars($view_reinfo_raw, ENT_QUOTES, 'UTF-8');
|
||||
} else {
|
||||
echo htmlspecialchars($view_reinfo, ENT_QUOTES, 'UTF-8');
|
||||
}
|
||||
?></pre>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 5. 快捷操作区 -->
|
||||
<!-- 6. 快捷操作区 -->
|
||||
<div class="quick-actions">
|
||||
<div class="ui horizontal divider">
|
||||
<?php echo isset($MSG_QUICK_ACTIONS) ? $MSG_QUICK_ACTIONS : '快捷操作'; ?>
|
||||
@@ -384,6 +383,8 @@ i.icon.spinning {
|
||||
$('#raw-info-accordion').accordion('open', 0);
|
||||
<?php } elseif (isset($is_source_browser) && $is_source_browser) { ?>
|
||||
$('#raw-info-accordion').accordion('open', 0);
|
||||
<?php } elseif (isset($llm_guidance['mode']) && $llm_guidance['mode'] === 'judge_output') { ?>
|
||||
$('#raw-info-accordion').accordion('open', 0);
|
||||
<?php } ?>
|
||||
|
||||
HustOJVditor.renderMarkdownBlocks('#errtxt', {
|
||||
@@ -451,6 +452,8 @@ i.icon.spinning {
|
||||
$('#raw-info-accordion').accordion('open', 0);
|
||||
<?php } elseif (isset($is_source_browser) && $is_source_browser) { ?>
|
||||
$('#raw-info-accordion').accordion('open', 0);
|
||||
<?php } elseif (isset($llm_guidance['mode']) && $llm_guidance['mode'] === 'judge_output') { ?>
|
||||
$('#raw-info-accordion').accordion('open', 0);
|
||||
<?php } ?>
|
||||
});
|
||||
</script>
|
||||
|
||||
Reference in New Issue
Block a user