feat: 实现范式库到工作台的数据流转机制
- 新增 src/config/paradigms.js:范式配置库,包含专家指令和评价量表 - 实现范式预设填充:点击卡片自动注入参考案例、标签、约束 - WriterPanel.vue:新增「专家指令」只读展示区(金色高亮) - AnalysisPanel.vue:使用统一的范式配置,调用 loadParadigmPreset - appStore.js:新增 activeParadigm、expertGuidelines、qualityReport 状态 - 支持民主生活会对照检查等6种范式的完整专家标准
This commit is contained in:
@@ -25,17 +25,17 @@
|
||||
<div class="space-y-3">
|
||||
<div
|
||||
v-for="paradigm in paradigms"
|
||||
:key="paradigm.type"
|
||||
:key="paradigm.id"
|
||||
@click="selectParadigm(paradigm)"
|
||||
:class="['bg-slate-700/50 rounded-lg p-4 border transition cursor-pointer',
|
||||
selectedParadigm?.type === paradigm.type
|
||||
selectedParadigm?.id === paradigm.id
|
||||
? 'border-blue-500 bg-blue-900/20'
|
||||
: 'border-slate-600 hover:border-blue-500']"
|
||||
>
|
||||
<div class="flex justify-between items-start mb-2">
|
||||
<h4 class="font-medium text-white">{{ paradigm.icon }} {{ paradigm.name }}</h4>
|
||||
<button
|
||||
v-if="selectedParadigm?.type === paradigm.type"
|
||||
v-if="selectedParadigm?.id === paradigm.id"
|
||||
@click.stop="applyParadigm(paradigm)"
|
||||
class="text-xs px-2 py-1 bg-blue-600 text-white rounded hover:bg-blue-500 transition"
|
||||
>
|
||||
@@ -108,9 +108,10 @@ import { ref, onMounted } from 'vue'
|
||||
import { storeToRefs } from 'pinia'
|
||||
import { useAppStore } from '../stores/app'
|
||||
import DeepSeekAPI from '../api/deepseek.js'
|
||||
import { getParadigmList } from '../config/paradigms.js'
|
||||
|
||||
const appStore = useAppStore()
|
||||
const { analysisText, isAnalyzing, selectedTags, inputTask } = storeToRefs(appStore)
|
||||
const { analysisText, isAnalyzing } = storeToRefs(appStore)
|
||||
|
||||
// 选中的范式
|
||||
const selectedParadigm = ref(null)
|
||||
@@ -118,84 +119,17 @@ const selectedParadigm = ref(null)
|
||||
// 分析历史
|
||||
const analysisHistory = ref([])
|
||||
|
||||
const paradigms = [
|
||||
{
|
||||
type: 'tech',
|
||||
name: '技术博客范式',
|
||||
icon: '📝',
|
||||
description: '适用于技术分享、教程类文章',
|
||||
tags: ['问题引入', '解决方案', '代码示例', '总结'],
|
||||
tagClass: 'bg-blue-900/30 text-blue-300',
|
||||
prompt: '请按照技术博客的范式写作,包含:1) 问题背景引入 2) 具体解决方案 3) 代码示例说明 4) 总结与最佳实践',
|
||||
constraints: ['Markdown格式', '总分总结构', '数据支撑']
|
||||
},
|
||||
{
|
||||
type: 'business',
|
||||
name: '商业分析范式',
|
||||
icon: '📊',
|
||||
description: '适用于行业分析、市场报告',
|
||||
tags: ['背景介绍', '数据支撑', '趋势分析', '建议'],
|
||||
tagClass: 'bg-green-900/30 text-green-300',
|
||||
prompt: '请按照商业分析的范式写作,包含:1) 行业背景介绍 2) 数据分析与支撑 3) 趋势预测 4) 战略建议',
|
||||
constraints: ['Markdown格式', '数据支撑', '引用权威来源']
|
||||
},
|
||||
{
|
||||
type: 'marketing',
|
||||
name: '产品文案范式',
|
||||
icon: '🎯',
|
||||
description: '适用于产品介绍、营销文案',
|
||||
tags: ['痛点切入', '价值主张', '功能亮点', '行动号召'],
|
||||
tagClass: 'bg-purple-900/30 text-purple-300',
|
||||
prompt: '请按照产品文案的范式写作,包含:1) 用户痛点切入 2) 核心价值主张 3) 产品功能亮点 4) 明确的行动号召',
|
||||
constraints: ['语气幽默', '严禁被动语态']
|
||||
},
|
||||
{
|
||||
type: 'academic',
|
||||
name: '学术论文范式',
|
||||
icon: '📖',
|
||||
description: '适用于学术写作、研究报告',
|
||||
tags: ['摘要', '引言', '文献综述', '方法论', '结果'],
|
||||
tagClass: 'bg-orange-900/30 text-orange-300',
|
||||
prompt: '请按照学术论文的范式写作,包含:1) 摘要 2) 引言 3) 文献综述 4) 研究方法论 5) 结果与讨论 6) 结论',
|
||||
constraints: ['引用权威来源', '严禁被动语态']
|
||||
},
|
||||
{
|
||||
type: 'party-review',
|
||||
name: '民主生活会对照检查',
|
||||
icon: '🏛️',
|
||||
description: '适用于党政机关民主生活会个人对照检查材料',
|
||||
tags: ['开篇引言', '对照查摆', '根源剖析', '整改措施', '表态'],
|
||||
tagClass: 'bg-red-900/30 text-red-300',
|
||||
prompt: '请按照民主生活会对照检查材料的范式写作,包含:1) 开篇说明会议主题和学习依据 2) 对照查摆存在的主要问题(按要求逐条分析) 3) 问题产生的根源剖析 4) 下一步整改措施 5) 结尾总结表态。语言要规范使用政治术语,体现自我批评精神,问题剖析要深入,整改措施要具体可行。',
|
||||
constraints: ['总分总结构', '引用权威来源']
|
||||
},
|
||||
{
|
||||
type: 'gov-report',
|
||||
name: '政府工作报告',
|
||||
icon: '📋',
|
||||
description: '适用于政府工作总结、述职报告',
|
||||
tags: ['工作回顾', '成绩总结', '问题分析', '下步计划'],
|
||||
tagClass: 'bg-cyan-900/30 text-cyan-300',
|
||||
prompt: '请按照政府工作报告的范式写作,包含:1) 过去工作回顾 2) 主要成绩和亮点 3) 存在问题和不足 4) 下一步工作计划和目标。语言要严谨规范,数据要准确,措施要具体。',
|
||||
constraints: ['Markdown格式', '数据支撑', '总分总结构']
|
||||
}
|
||||
]
|
||||
// 从配置文件获取范式列表
|
||||
const paradigms = getParadigmList()
|
||||
|
||||
// 选择范式
|
||||
const selectParadigm = (paradigm) => {
|
||||
selectedParadigm.value = paradigm
|
||||
}
|
||||
|
||||
// 应用范式到写作
|
||||
// 应用范式到写作(使用新的 loadParadigmPreset 方法)
|
||||
const applyParadigm = (paradigm) => {
|
||||
// 更新写作任务
|
||||
inputTask.value = paradigm.prompt
|
||||
|
||||
// 更新选中的约束标签
|
||||
selectedTags.value = [...paradigm.constraints]
|
||||
|
||||
// 切换到写作页面
|
||||
appStore.switchPage('writer')
|
||||
appStore.loadParadigmPreset(paradigm.id)
|
||||
|
||||
// 显示提示
|
||||
alert(`已应用"${paradigm.name}"到写作任务`)
|
||||
|
||||
@@ -99,6 +99,40 @@
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- 专家指令(范式预设时显示) -->
|
||||
<section v-if="activeParadigm">
|
||||
<div class="flex justify-between items-center mb-2">
|
||||
<label class="text-sm font-medium text-amber-400 flex items-center gap-1">
|
||||
⭐ 专家指令 (Expert Guidelines)
|
||||
</label>
|
||||
<button
|
||||
@click="clearParadigm"
|
||||
class="text-[10px] text-slate-500 hover:text-red-400 transition"
|
||||
>
|
||||
清除范式
|
||||
</button>
|
||||
</div>
|
||||
<div class="bg-amber-950/20 border border-amber-500/30 rounded-lg p-3 space-y-2">
|
||||
<div class="flex items-center gap-2 mb-2">
|
||||
<span class="text-amber-400">{{ activeParadigm.icon }}</span>
|
||||
<span class="text-xs font-medium text-amber-300">已加载【{{ activeParadigm.name }}】专家标准</span>
|
||||
</div>
|
||||
<div class="space-y-1.5">
|
||||
<div
|
||||
v-for="(guideline, idx) in expertGuidelines"
|
||||
:key="idx"
|
||||
class="text-[11px] text-slate-400 flex items-start gap-2"
|
||||
>
|
||||
<span class="text-amber-500/70 shrink-0">{{ idx + 1 }}.</span>
|
||||
<div>
|
||||
<span class="text-amber-300/80 font-medium">{{ guideline.title }}:</span>
|
||||
<span class="text-slate-500">{{ guideline.description }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- 输出规范 -->
|
||||
<section>
|
||||
<label class="block text-sm font-medium text-slate-400 mb-2">3. 输出规范 (Constraints)</label>
|
||||
@@ -194,6 +228,8 @@ const {
|
||||
newRefContent,
|
||||
selectedTags,
|
||||
customConstraint,
|
||||
activeParadigm,
|
||||
expertGuidelines,
|
||||
isGenerating,
|
||||
showPromptDebug,
|
||||
apiUrl,
|
||||
@@ -203,7 +239,7 @@ const {
|
||||
outlinePoints
|
||||
} = storeToRefs(appStore)
|
||||
|
||||
const { switchPage } = appStore
|
||||
const { switchPage, clearParadigm } = appStore
|
||||
|
||||
const presetTags = ['Markdown格式', '总分总结构', '数据支撑', '语气幽默', '严禁被动语态', '引用权威来源']
|
||||
|
||||
|
||||
Reference in New Issue
Block a user