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

