feat: 对照检查页面支持导入范式写作要求

- 新增「导入范式要求」按钮
- 自动从 activeParadigm 提取:
  - expertGuidelines(专家指令)
  - systemConstraints(系统约束)
  - validationRules(质检规则)
- 空白状态显示快捷导入入口
This commit is contained in:
empty
2026-01-08 16:05:59 +08:00
parent 97e4240308
commit f5c66e1712

View File

@@ -24,13 +24,29 @@
<h2 class="text-sm font-medium text-amber-400 flex items-center gap-2">
📋 写作要求
</h2>
<span class="text-xs text-slate-500">{{ leftParagraphs.length }} </span>
<div class="flex items-center gap-2">
<button
v-if="hasParadigmRules"
@click="importParadigmRules"
class="text-xs px-2 py-1 rounded bg-amber-900/50 text-amber-300 border border-amber-700/50 hover:bg-amber-800/50 transition flex items-center gap-1"
>
📥 导入范式要求
</button>
<span class="text-xs text-slate-500">{{ leftParagraphs.length }} </span>
</div>
</div>
<div class="flex-1 overflow-y-auto p-4 space-y-3 min-h-0">
<div v-if="!leftContent" class="h-full flex items-center justify-center">
<div class="text-center">
<span class="text-4xl opacity-20 block mb-2">📝</span>
<p class="text-slate-600 text-sm">请在下方输入写作要求</p>
<p class="text-slate-600 text-sm mb-3">请在下方输入写作要求</p>
<button
v-if="hasParadigmRules"
@click="importParadigmRules"
class="text-xs px-3 py-1.5 rounded bg-amber-600 text-white hover:bg-amber-500 transition"
>
📥 {{ activeParadigmName }}导入
</button>
</div>
</div>
<div
@@ -184,9 +200,12 @@
<script setup>
import { ref, computed } from 'vue'
import { storeToRefs } from 'pinia'
import { useAppStore } from '../stores/app'
import { PARADIGMS } from '../config/paradigms'
const appStore = useAppStore()
const { activeParadigm } = storeToRefs(appStore)
// 内容
const leftContent = ref('')
@@ -201,6 +220,53 @@ const isComparing = ref(false)
const lastCheckResult = ref(null)
const checkResults = ref({})
// 范式相关
const hasParadigmRules = computed(() => {
if (!activeParadigm.value) return false
const paradigm = PARADIGMS[activeParadigm.value]
return paradigm && (paradigm.expertGuidelines || paradigm.systemConstraints)
})
const activeParadigmName = computed(() => {
if (!activeParadigm.value) return ''
const paradigm = PARADIGMS[activeParadigm.value]
return paradigm?.name || ''
})
// 导入范式写作要求
const importParadigmRules = () => {
if (!activeParadigm.value) return
const paradigm = PARADIGMS[activeParadigm.value]
if (!paradigm) return
const rules = []
// 从 expertGuidelines 提取
if (paradigm.expertGuidelines) {
paradigm.expertGuidelines.forEach(g => {
rules.push(`${g.title}${g.description}`)
})
}
// 从 systemConstraints 提取
if (paradigm.systemConstraints) {
paradigm.systemConstraints.forEach(c => {
rules.push(c)
})
}
// 从 validationRules 提取
if (paradigm.validationRules) {
Object.values(paradigm.validationRules).forEach(rule => {
if (rule.name && rule.failMessage) {
rules.push(`${rule.name}${rule.failMessage}`)
}
})
}
leftContent.value = rules.join('\n\n')
}
// 解析段落
const leftParagraphs = computed(() => {
return leftContent.value