Files
Fulfilled-Knowledge/wishfulfilled-dashboard/assets/RagAssistant-B-bW6zDi.js
2026-05-27 15:40:32 +08:00

6 lines
5.2 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import{a as m,j as e}from"./react-vendor-BVoutfaX.js";import{u as p}from"./index-DoKF8LKc.js";import"./xyflow-CYMCcsWN.js";import"./graph-layout-7tFr_anw.js";import"./elk-CXeXGyKz.js";import"./graphology-BgTy_cc3.js";function u(r){return Array.isArray(r)?r.join(" "):typeof r=="string"?r:""}function b(r){var n;return[r.name,r.summary,r.filePath,r.tags.join(" "),u((n=r.knowledgeMeta)==null?void 0:n.content)].join(`
`)}function f(r){const n=r.toLowerCase(),a=n.match(/[a-z0-9_\-\.]{2,}/g)??[],t=n.match(/[\u4e00-\u9fa5]/g)??[],c=[];for(let s=0;s<t.length-1;s+=1)c.push(`${t[s]}${t[s+1]}`);return Array.from(new Set([...a,...c,...t].filter(s=>s.trim().length>0)))}function h(r,n){const a=r.replace(/\s+/g," ").trim();if(!a)return"";const t=a.toLowerCase(),c=n.map(i=>t.indexOf(i.toLowerCase())).filter(i=>i>=0).sort((i,d)=>i-d)[0],s=Math.max(0,(c??0)-80),l=a.slice(s,s+220);return`${s>0?"…":""}${l}${s+220<a.length?"…":""}`}function g(r,n){const a=f(n);return a.length===0?[]:r.map(t=>{const c=b(t),s=c.toLowerCase();let l=0;for(const i of a){const d=i.toLowerCase();if(!d)continue;const x=s.split(d).length-1;x>0&&(l+=x*Math.min(d.length,8))}return s.includes(n.toLowerCase())&&(l+=40),t.name.toLowerCase().includes(n.toLowerCase())&&(l+=80),{node:t,score:l,snippet:h(c,a)}}).filter(t=>t.score>0&&t.snippet).sort((t,c)=>c.score-t.score).slice(0,8)}function j(r,n){if(!r.trim())return"请输入要检索或提问的内容。";if(n.length===0)return"知识库未检索到明确依据。建议换一个关键词,或确认相关文档是否已经加入 05_需求文档 / 07_技术文档 / 08_测试相关。";const a=n.slice(0,4);return[`结论:已基于本地知识库检索到 ${n.length} 条相关依据。以下是可追溯摘要:`,"",...a.map((t,c)=>`${c+1}. ${t.node.name}
${t.snippet}
来源:${t.node.filePath??t.node.id}`),"","说明:当前为本地抽取式 RAG不调用外部大模型回答只基于知识库原文片段生成。"].join(`
`)}function L({onClose:r}){const n=p(o=>o.graph),a=p(o=>o.navigateToNodeInLayer),[t,c]=m.useState(""),[s,l]=m.useState(""),i=m.useMemo(()=>g((n==null?void 0:n.nodes)??[],s),[n,s]),d=m.useMemo(()=>j(s,i),[s,i]),x=()=>l(t.trim());return e.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/65 backdrop-blur-sm p-4 sm:p-6",onMouseDown:r,children:e.jsxs("div",{className:"w-[calc(100vw-32px)] max-w-[920px] h-[calc(100vh-64px)] max-h-[760px] rounded-lg border border-border-medium bg-surface shadow-2xl overflow-hidden flex flex-col",onMouseDown:o=>o.stopPropagation(),children:[e.jsxs("div",{className:"flex items-center justify-between px-5 py-4 border-b border-border-subtle bg-elevated/40",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"font-heading text-lg text-text-primary",children:"知识库 RAG 问答"}),e.jsx("p",{className:"text-xs text-text-muted mt-1",children:"本地检索 knowledge-graph.json 中的文档内容,返回可追溯来源。"})]}),e.jsx("button",{type:"button",onClick:r,className:"text-text-muted hover:text-accent transition-colors text-xl leading-none",children:"×"})]}),e.jsxs("div",{className:"p-5 border-b border-border-subtle",children:[e.jsxs("div",{className:"flex gap-2",children:[e.jsx("textarea",{value:t,onChange:o=>c(o.target.value),onKeyDown:o=>{(o.ctrlKey||o.metaKey)&&o.key==="Enter"&&x()},placeholder:"例如:如愿系统的真实人额度规则是什么?客服工单怎么流转?",className:"flex-1 min-h-[76px] resize-none bg-elevated text-text-primary text-sm rounded-lg px-3 py-2 border border-border-subtle focus:outline-none focus:border-accent/50 placeholder-text-muted"}),e.jsx("button",{type:"button",onClick:x,className:"px-4 py-2 rounded-lg bg-accent/20 text-accent hover:text-accent-bright border border-accent/30 text-sm font-semibold transition-colors",children:"检索问答"})]}),e.jsx("div",{className:"mt-2 text-[11px] text-text-muted",children:"快捷键Ctrl + Enter 提交"})]}),e.jsxs("div",{className:"flex-1 min-h-0 overflow-auto p-5 grid grid-cols-1 lg:grid-cols-[1fr_320px] gap-5",children:[e.jsxs("section",{className:"min-w-0",children:[e.jsx("h3",{className:"text-[11px] font-semibold text-accent uppercase tracking-wider mb-2",children:"回答"}),e.jsx("pre",{className:"whitespace-pre-wrap text-sm leading-relaxed text-text-secondary bg-elevated/50 border border-border-subtle rounded-lg p-4 font-sans",children:s?d:"输入问题后点击“检索问答”。"})]}),e.jsxs("section",{className:"min-w-0",children:[e.jsx("h3",{className:"text-[11px] font-semibold text-accent uppercase tracking-wider mb-2",children:"命中文档"}),e.jsxs("div",{className:"space-y-2",children:[i.length===0&&s&&e.jsx("div",{className:"text-sm text-text-muted border border-border-subtle rounded-lg p-3",children:"暂无命中。"}),i.map(o=>e.jsxs("button",{type:"button",onClick:()=>a(o.node.id),className:"w-full text-left border border-border-subtle bg-elevated/40 hover:border-accent/40 rounded-lg p-3 transition-colors",children:[e.jsx("div",{className:"text-sm text-text-primary truncate",children:o.node.name}),e.jsx("div",{className:"text-[11px] text-text-muted mt-1 truncate",children:o.node.filePath??o.node.id}),e.jsx("div",{className:"text-xs text-text-secondary mt-2 line-clamp-3",children:o.snippet})]},o.node.id))]})]})]})]})})}export{L as default};