import { computed, ref } from 'vue' export default { name: 'AuditView' , setup(props, { emit }) { const tabs = ['全部技能', '已上线', '草稿中', '待评审', '异常告警'] const filters = ['按分类筛选', '按模型筛选', '按负责人筛选'] const activeTab = ref(tabs[0]) const selectedSkill = ref(null) const skills = [ { id: 'SKL-001', short: 'TR', name: '差旅申请助手', summary: '生成出差申请、补齐行程信息并关联预订动作。', category: '流程型 Skill', owner: '张晓明', scope: '员工自助', model: 'GPT-5.4', version: 'v2.3', status: '已上线', statusTone: 'success', hitRate: '92.6%', updatedAt: '2026-05-05 09:20', badgeTone: 'emerald', triggerMode: '显式入口 + 语义触发', spotlight: true, promptSections: [ { title: '系统定位', intent: '约束 Skill 目标与边界', content: '负责帮助员工完成差旅申请草稿生成、行程补齐和预订前核对。禁止直接跳过必要审批节点。' }, { title: '输入预期', intent: '定义需要抽取的字段', content: '抽取出发地、目的地、出差日期、事由、同行人、预算中心与是否需要预订机票/酒店。缺失时逐步追问。' }, { title: '输出格式', intent: '约束最终返回结构', content: '输出申请摘要、缺失项清单、下一步操作建议。若信息齐全,生成结构化草稿并提示用户确认。' } ], outputRules: [ '优先返回结构化摘要,再给行动建议。', '缺失信息必须列成 checklist,不可混写在段落里。', '遇到预算冲突时必须提示人工审批节点。' ], tests: [ { name: '基础申请生成', input: '北京到上海,后天出差两天', result: '通过', tone: 'success' }, { name: '缺失预算中心追问', input: '我要去深圳见客户', result: '通过', tone: 'success' }, { name: '异常日期冲突', input: '返回日期早于出发日期', result: '待修复', tone: 'warning' } ], triggers: ['差旅申请', '出差申请', '预订机票', '补齐行程'], tools: [ { name: '预订系统 API', scope: '机票 / 酒店查询', mode: '只读', tone: 'safe' }, { name: '报销草稿生成器', scope: '创建申请草稿', mode: '写入', tone: 'active' }, { name: '预算中心校验', scope: '预算占用校验', mode: '校验', tone: 'safe' } ], history: [ { version: 'v2.3', note: '补充预算冲突追问逻辑', time: '05-05 09:20' }, { version: 'v2.2', note: '优化酒店预订字段抽取', time: '05-01 17:45' }, { version: 'v2.1', note: '新增同行人识别', time: '04-28 11:10' } ] }, { id: 'SKL-002', short: 'AU', name: '审批意见生成器', summary: '基于单据、风险点和制度命中结果生成审批意见。', category: '审核型 Skill', owner: '李文静', scope: '财务审批', model: 'GPT-5.4', version: 'v1.8', status: '待评审', statusTone: 'warning', hitRate: '88.4%', updatedAt: '2026-05-04 19:10', badgeTone: 'violet', triggerMode: '审批中心按钮触发', promptSections: [ { title: '系统定位', intent: '聚焦审批建议生成', content: '读取单据、制度命中和风险标签后,生成可直接复用的审批意见,不代替最终审批决定。' }, { title: '输入预期', intent: '依赖字段', content: '依赖报销类型、金额、风险项、附件齐备情况、历史审批结论。' }, { title: '输出格式', intent: '生成标准话术', content: '输出通过 / 驳回 / 补件三种意见模板,并附上判断依据。' } ], outputRules: [ '意见必须引用风险点或制度条款作为依据。', '驳回类结论需明确补充动作。', '避免输出过长段落,优先三段式表达。' ], tests: [ { name: '高风险驳回意见', input: '重复发票 + 缺附件', result: '通过', tone: 'success' }, { name: '低风险通过意见', input: '规则全通过', result: '通过', tone: 'success' }, { name: '混合场景表达', input: '超标但说明充分', result: '评审中', tone: 'warning' } ], triggers: ['生成审批意见', '通过意见', '驳回意见', '补件说明'], tools: [ { name: '审批单据上下文', scope: '当前单据读取', mode: '只读', tone: 'safe' }, { name: '制度命中服务', scope: '条款引用', mode: '校验', tone: 'safe' }, { name: '审批结果写回', scope: '保存意见', mode: '写入', tone: 'active' } ], history: [ { version: 'v1.8', note: '调整高风险话术严谨度', time: '05-04 19:10' }, { version: 'v1.7', note: '补充制度条款引用模板', time: '05-02 10:30' } ] }, { id: 'SKL-003', short: 'KB', name: '知识检索编排器', summary: '根据问题意图匹配制度、FAQ 与最近更新文档。', category: '知识型 Skill', owner: '王磊', scope: '知识管理', model: 'GPT-5.2', version: 'v3.1', status: '已上线', statusTone: 'success', hitRate: '94.1%', updatedAt: '2026-05-03 15:40', badgeTone: 'blue', triggerMode: '问答语义召回', promptSections: [ { title: '系统定位', intent: '文档命中与答案编排', content: '识别问题主题后,优先召回制度文档、FAQ 与近期更新资料,再组织成引用式回答。' }, { title: '输入预期', intent: '需要识别的意图', content: '识别报销、发票、差旅、借款、预算等主题,以及用户是否在追问例外情况。' }, { title: '输出格式', intent: '答案结构', content: '先结论,再条款引用,再相关文档链接。若知识不足,明确提示未命中。' } ], outputRules: [ '必须区分“制度原文依据”和“解释性建议”。', '引用命中不足时,不可编造制度条款。', '输出需附上最近更新时间。' ], tests: [ { name: '标准知识问答', input: '住宿超标怎么办', result: '通过', tone: 'success' }, { name: '跨文档综合问答', input: '差旅借款后如何冲销', result: '通过', tone: 'success' } ], triggers: ['制度查询', '差旅标准', '发票规范', '借款冲销'], tools: [ { name: '知识库索引', scope: '文档召回', mode: '只读', tone: 'safe' }, { name: 'FAQ 排序器', scope: '答案重排', mode: '校验', tone: 'safe' } ], history: [ { version: 'v3.1', note: '加入最近更新知识优先级', time: '05-03 15:40' }, { version: 'v3.0', note: '知识命中格式重构', time: '04-29 18:20' } ] }, { id: 'SKL-004', short: 'RK', name: '风险解释助手', summary: '向员工解释拦截原因,并给出补件或修正建议。', category: '解释型 Skill', owner: '陈杰', scope: '员工自助', model: 'GPT-5.4-Mini', version: 'v1.4', status: '草稿中', statusTone: 'draft', hitRate: '79.8%', updatedAt: '2026-05-02 11:05', badgeTone: 'amber', triggerMode: '风险拦截后提示入口', promptSections: [ { title: '系统定位', intent: '解释风控结论', content: '将复杂风控规则解释成员工可执行的修正动作,不暴露内部评分细节。' }, { title: '输入预期', intent: '关注异常标签', content: '读取异常标签、相关票据、制度限制和当前流程节点。' }, { title: '输出格式', intent: '行动导向', content: '按“原因 - 影响 - 处理建议”输出,不使用过于生硬的审计口吻。' } ], outputRules: [ '建议必须可以执行,避免空泛表述。', '不展示内部风控分值。', '涉及附件缺失时输出具体材料名称。' ], tests: [ { name: '住宿超标解释', input: '酒店单晚超标 18%', result: '通过', tone: 'success' }, { name: '重复发票风险解释', input: '发票号重复', result: '待修复', tone: 'warning' } ], triggers: ['为什么被拦截', '风险原因', '补件说明'], tools: [ { name: '风险标签读取', scope: '异常原因', mode: '只读', tone: 'safe' }, { name: '制度比对服务', scope: '规则解释', mode: '校验', tone: 'safe' } ], history: [ { version: 'v1.4', note: '新增补件导向模板', time: '05-02 11:05' }, { version: 'v1.3', note: '优化语气控制', time: '04-30 16:48' } ] } ] const visibleSkills = computed(() => { if (activeTab.value === '全部技能') return skills const map = { 已上线: '已上线', 草稿中: '草稿中', 待评审: '待评审', 异常告警: '异常告警' } return skills.filter((item) => item.status === map[activeTab.value]) }) return { tabs, filters, activeTab, selectedSkill, skills, visibleSkills } } }