update
This commit is contained in:
@@ -71,6 +71,18 @@ const evaluation = ref<Evaluation>({
|
||||
criteria_details: {},
|
||||
})
|
||||
const page = ref(1)
|
||||
const suggestionLines = computed(() =>
|
||||
splitSuggestionLines(evaluation.value.suggestions),
|
||||
)
|
||||
|
||||
function splitSuggestionLines(suggestions?: string | null) {
|
||||
return suggestions
|
||||
? suggestions
|
||||
.split("\n")
|
||||
.map((suggestion) => suggestion.trim())
|
||||
.filter(Boolean)
|
||||
: []
|
||||
}
|
||||
|
||||
// ==================== WebSocket 相关函数 ====================
|
||||
// 处理 WebSocket 消息
|
||||
@@ -306,7 +318,7 @@ onUnmounted(() => {
|
||||
</n-gi>
|
||||
|
||||
<!-- 右侧:评分详情区域 -->
|
||||
<n-gi :span="2" style="max-height: 550px; overflow: auto;">
|
||||
<n-gi :span="2" style="max-height: 550px; overflow: auto">
|
||||
<!-- AI反馈 -->
|
||||
<n-card
|
||||
v-if="evaluation.feedback"
|
||||
@@ -319,12 +331,19 @@ onUnmounted(() => {
|
||||
|
||||
<!-- 改进建议 -->
|
||||
<n-card
|
||||
v-if="evaluation.suggestions"
|
||||
v-if="suggestionLines.length"
|
||||
size="small"
|
||||
title="改进建议"
|
||||
style="margin-bottom: 16px"
|
||||
>
|
||||
<n-text>{{ evaluation.suggestions }}</n-text>
|
||||
<n-flex vertical :size="6">
|
||||
<n-text
|
||||
v-for="(suggestion, index) in suggestionLines"
|
||||
:key="`${index}-${suggestion}`"
|
||||
>
|
||||
{{ suggestion }}
|
||||
</n-text>
|
||||
</n-flex>
|
||||
</n-card>
|
||||
|
||||
<!-- 详细评分 -->
|
||||
|
||||
@@ -43,24 +43,19 @@
|
||||
|
||||
<!-- 改进建议 -->
|
||||
<n-card
|
||||
v-if="suggestionItems.length"
|
||||
v-if="suggestionLines.length"
|
||||
size="small"
|
||||
title="改进建议"
|
||||
style="margin-bottom: 16px"
|
||||
>
|
||||
<div class="suggestion-list">
|
||||
<div
|
||||
v-for="(item, index) in suggestionItems"
|
||||
:key="`${index}-${item.text}`"
|
||||
class="suggestion-item"
|
||||
:class="{ 'suggestion-item--important': item.important }"
|
||||
<n-flex vertical :size="6">
|
||||
<n-text
|
||||
v-for="(suggestion, index) in suggestionLines"
|
||||
:key="`${index}-${suggestion}`"
|
||||
>
|
||||
<n-tag v-if="item.important" type="warning" size="small">
|
||||
重点
|
||||
</n-tag>
|
||||
<n-text>{{ item.text }}</n-text>
|
||||
</div>
|
||||
</div>
|
||||
{{ suggestion }}
|
||||
</n-text>
|
||||
</n-flex>
|
||||
</n-card>
|
||||
|
||||
<!-- 详细评分 -->
|
||||
@@ -120,30 +115,18 @@ const submission = ref<FlowchartSubmission | null>(null)
|
||||
const loading = ref(false)
|
||||
const rendering = ref(false)
|
||||
const showLargeImage = ref(false)
|
||||
const suggestionLines = computed(() =>
|
||||
splitSuggestionLines(submission.value?.ai_suggestions),
|
||||
)
|
||||
|
||||
const suggestionItems = computed(() => {
|
||||
const suggestions = submission.value?.ai_suggestions ?? ""
|
||||
|
||||
function splitSuggestionLines(suggestions?: string | null) {
|
||||
return suggestions
|
||||
.split(/\r?\n/)
|
||||
.flatMap((line) => line.split(/(?=【重点】)/))
|
||||
.map((raw) => raw.trim())
|
||||
.filter(Boolean)
|
||||
.map((raw) => {
|
||||
const textWithoutBullet = raw
|
||||
.replace(/^(?:[-*]\s*|\d+[.)、]\s*)/, "")
|
||||
.trim()
|
||||
const important = textWithoutBullet.startsWith("【重点】")
|
||||
const text = important
|
||||
? textWithoutBullet.replace(/^【重点】\s*/, "").trim()
|
||||
: textWithoutBullet
|
||||
|
||||
return {
|
||||
important,
|
||||
text: text || textWithoutBullet,
|
||||
}
|
||||
})
|
||||
})
|
||||
? suggestions
|
||||
.split("\n")
|
||||
.map((suggestion) => suggestion.trim())
|
||||
.filter(Boolean)
|
||||
: []
|
||||
}
|
||||
|
||||
function getPercentType(percent: number) {
|
||||
if (percent >= 0.8) return "primary"
|
||||
@@ -199,25 +182,4 @@ watch(() => props.submissionId, loadSubmission, { immediate: true })
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.suggestion-list {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 8px;
|
||||
}
|
||||
|
||||
.suggestion-item {
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
gap: 8px;
|
||||
padding: 8px 10px;
|
||||
border-radius: 6px;
|
||||
background: var(--n-color);
|
||||
line-height: 1.6;
|
||||
}
|
||||
|
||||
.suggestion-item--important {
|
||||
border: 1px solid var(--n-warning-color);
|
||||
background: var(--n-warning-color-suppl);
|
||||
}
|
||||
</style>
|
||||
|
||||
Reference in New Issue
Block a user