update
Some checks failed
Deploy / deploy (build, debian, 22, /root/OJDeploy/data/clientnext) (push) Has been cancelled
Deploy / deploy (build:staging, school, 8822, /root/OJ/data/dist) (push) Has been cancelled

This commit is contained in:
2026-05-09 03:29:20 -06:00
parent 315df11b5d
commit 3bf24ce319
2 changed files with 40 additions and 59 deletions

View File

@@ -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>