@customize-agent/server 4.0.2 → 4.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/build-manifest.json +8 -8
- package/.next/prerender-manifest.json +3 -3
- package/.next/server/chunks/3445.js +40 -14
- package/.next/server/chunks/8204.js +1 -1
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/pages/api/assets/generated/preview.js +1 -1
- package/.next/server/pages/api/assets/generated.js +1 -1
- package/.next/server/pages/api/context.js +25 -1
- package/.next/server/pages/api/documents/export.js +1 -1
- package/.next/server/pages/api/documents/generate.js +1 -1
- package/.next/server/pages/api/documents/generated/[id].js +1 -1
- package/.next/server/pages/api/documents/generated.js +1 -1
- package/.next/server/pages/asset-library.html +1 -1
- package/.next/server/pages/context/long-term.html +1 -1
- package/.next/server/pages/context/short-term.html +1 -1
- package/.next/server/pages/document-roles.html +1 -1
- package/.next/server/pages/document-specs.html +1 -1
- package/.next/server/pages/documents.html +1 -1
- package/.next/server/pages/guide.html +1 -1
- package/.next/server/pages/index.html +1 -1
- package/.next/server/pages/knowledge/file-detail.html +1 -1
- package/.next/server/pages/knowledge/files.html +1 -1
- package/.next/server/pages/knowledge/manage.html +1 -1
- package/.next/server/pages/knowledge/search.html +1 -1
- package/.next/server/pages/knowledge/search.js.nft.json +1 -1
- package/.next/server/pages/knowledge.html +1 -1
- package/.next/server/pages/models.html +1 -1
- package/.next/server/pages/overview.html +1 -1
- package/.next/server/pages/prompt.html +1 -1
- package/.next/server/pages/settings.html +1 -1
- package/.next/server/pages/system/logs.html +1 -1
- package/.next/server/pages-manifest.json +19 -19
- package/.next/static/{JSSClm7Ao89P7zD8JkYIG → EVrkML0hycPAccjnhV5B4}/_buildManifest.js +1 -1
- package/.next/static/chunks/pages/{_app-38ff7f551a80399f.js → _app-03f3204a695aa8bc.js} +14 -14
- package/.next/static/chunks/pages/documents-471786ecea050f17.js +1 -0
- package/.next/static/chunks/pages/guide-2a3ec07403e02e1f.js +1 -0
- package/.next/static/chunks/pages/knowledge/search-ad678d4bc8137cb5.js +1 -0
- package/.next/static/chunks/pages/{models-a37db9926d9a0a52.js → models-1788b9741155e3ce.js} +1 -1
- package/.next/static/chunks/pages/overview-5235c02260509635.js +1 -0
- package/next.config.ts +3 -0
- package/package.json +1 -1
- package/.next/static/chunks/pages/documents-c04e4ed600384e6a.js +0 -1
- package/.next/static/chunks/pages/guide-c5ef2e13eab4c312.js +0 -1
- package/.next/static/chunks/pages/knowledge/search-72a46d6d1200ef93.js +0 -1
- package/.next/static/chunks/pages/overview-3dd4c539302d7349.js +0 -1
- /package/.next/static/{JSSClm7Ao89P7zD8JkYIG → EVrkML0hycPAccjnhV5B4}/_ssgManifest.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4298],{16403:(e,t,s)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/documents",function(){return s(19562)}])},19562:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>ei});var n=s(65321),r=s(97109),i=s(7576),l=s(35292),a=s(17807),o=s(63455),c=s(88762),d=s(85114),u=s(68787),p=s(84253),m=s(38332),h=s(26171),x=s(11702),g=s(33442),f=s(85493),v=s(34052),w=s(9730),j=s(42700),y=s(58569),A=s(76506),k=s(25258),S=s(2256),I=s(38770),b=s(57271),T=s(23216),C=s(16285),_=s(26619),z=s(8263),D=s(8579),F=s(75548),M=s(7851),E=s(84742),B=s(29071),L=s(63552),P=s(26631),R=s(76830),q=s(83914),W=s(58209),G=s(54746),O=s(71330),H=s(64068),N=s(93051),K=s(38762),U=s(64629),X=s(67547),V=s(99811),Q=s(6578),J=s(32620);let{TextArea:Y}=i.A,{Paragraph:Z,Text:$}=l.A,ee=null;function et(){null==ee||ee.listeners.forEach(e=>e())}let es={role_binding:(0,n.jsx)(T.A,{}),context_recall:(0,n.jsx)(C.A,{}),knowledge_retrieval:(0,n.jsx)(_.A,{}),file_understanding:(0,n.jsx)(z.A,{}),fact_extraction:(0,n.jsx)(C.A,{}),chapter_generation:(0,n.jsx)(D.A,{}),asset_generation:(0,n.jsx)(F.A,{}),validation:(0,n.jsx)(M.A,{}),formatting:(0,n.jsx)(E.A,{}),llm_review:(0,n.jsx)(B.A,{}),export_ready:(0,n.jsx)(L.A,{}),reference:(0,n.jsx)(F.A,{})},en={施工组织设计:(0,n.jsx)(M.A,{}),投标文件:(0,n.jsx)(L.A,{}),技术方案:(0,n.jsx)(C.A,{}),报告:(0,n.jsx)(P.A,{}),自定义:(0,n.jsx)(D.A,{})},er={role_binding:"角色配置绑定",context_recall:"上下文召回",knowledge_retrieval:"知识库检索",file_understanding:"多模态文件理解",fact_extraction:"LLM 事实抽取",chapter_generation:"LLM 章节生成",asset_generation:"多模态资源生成",validation:"规则校验",formatting:"格式化排版",llm_review:"LLM 审查优化",export_ready:"导出就绪",reference:"参考资源处理"};function ei(){let e=(0,J.Vr)(),{message:t}=a.A.useApp(),[s]=o.A.useForm(),l=(0,r.useRef)(null),[Z,ei]=(0,r.useState)([]),[el,ea]=(0,r.useState)("construction-organization-design"),[eo,ec]=(0,r.useState)([]),[ed,eu]=(0,r.useState)([]),[ep,em]=(0,r.useState)([]),[eh,ex]=(0,r.useState)(!0),[eg,ef]=(0,r.useState)(!1),[ev,ew]=(0,r.useState)(null),[ej,ey]=(0,r.useState)(""),[eA,ek]=(0,r.useState)([]),[eS,eI]=(0,r.useState)(null),[eb,eT]=(0,r.useState)(null),[eC,e_]=(0,r.useState)(null),[ez,eD]=(0,r.useState)(!1),[eF,eM]=(0,r.useState)({}),[eE,eB]=(0,r.useState)([]),[eL,eP]=(0,r.useState)(null),[eR,eq]=(0,r.useState)("templates"),[eW,eG]=(0,r.useState)(!1),[eO,eH]=(0,r.useState)("workflow"),eN=(0,r.useRef)(null),eK=async()=>{try{ek((await (0,Q.cQ)()).documents)}catch(e){ek([])}};(0,r.useEffect)(()=>{let e=()=>{ee&&(eB(ee.flowSteps),eP(ee.activeFlowKey),ef(ee.loading),ee.documentId&&eI(ee.documentId),ee.draft&&ew(ee.draft),void 0!==ee.content&&ey(ee.content))},t=ee;return null==t||t.listeners.add(e),e(),()=>{null==t||t.listeners.delete(e)}},[]),(0,r.useEffect)(()=>{ex(!0),Promise.all([(0,Q.Dl)().then(e=>{var t,s;ei(e.templates),ea(null!=(s=null==(t=e.templates[0])?void 0:t.id)?s:"construction-organization-design")}),(0,Q.lv)().then(e=>{ec(e.roles),eu(e.configs)}),(0,Q.mx)().then(e=>em(e.specs)),eK()]).catch(()=>t.error(e("common.error"))).finally(()=>ex(!1))},[t,e]),(0,r.useEffect)(()=>{if(0===eA.length)return;let e=localStorage.getItem("activeGenDocId");if(!e)return;if(!eA.find(t=>t.id===e&&"generating"===t.status))return void localStorage.removeItem("activeGenDocId");let t=setInterval(()=>{(async()=>{try{let{document:s}=await (0,Q.v7)(e);await eK(),"generating"!==s.status&&(localStorage.removeItem("activeGenDocId"),clearInterval(t))}catch(e){clearInterval(t)}})()},3e3);return()=>clearInterval(t)},[eA]);let eU=(0,r.useMemo)(()=>Z.find(e=>e.id===el),[Z,el]),eX=ed.map(e=>({label:e.name,value:e.id})),eV=ep.map(e=>({label:e.name,value:e.id})),eQ=Math.max(0,eE.findIndex(e=>e.key===eL)),eJ=e=>{ea(e),eI(null),ew(null),ey(""),eH("workflow"),eG(!0),eq("drafts")},eY=async s=>{eI(s.id),ea(s.templateId);let n=e0(s.status);if(n||"failed"===s.status){ti.current=!0,ew(null),ey(""),ef(n),eH("workflow"),eG(!0);try{let{document:e}=await (0,Q.v7)(s.id);e6(e),e0(e.status)?e8(e.id):await eK()}catch(e){e6(s)}return}eH("editor"),eB([]),eP(null);try{let{document:e}=await (0,Q.v7)(s.id);ew(e.draft||null),ey(e.editedMarkdown||e.markdown)}catch(s){t.error(e("common.error"))}eG(!0)},eZ=e=>e.map((e,t)=>({key:"sub-".concat(t),title:e,status:"wait"})),e$=function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:eU,s=ep.find(e=>e.id===(null==t?void 0:t.documentSpecId)),r=ed.find(e=>e.id===(null==t?void 0:t.projectRoleConfigId)),i=((null==r?void 0:r.fileRoles)||[]).map(e=>{var t;return(null==(t=eo.find(t=>t.id===e.roleId))?void 0:t.name)||e.roleId}),l=((null==r?void 0:r.promptRoles)||[]).map(e=>{var t;return(null==(t=eo.find(t=>t.id===e.roleId))?void 0:t.name)||e.roleId}),a=(null==s?void 0:s.factFields.map(e=>e.name))||(null==t?void 0:t.chapters.flatMap(e=>e.requiredFacts))||[],o=(null==t?void 0:t.chapters.map(e=>e.title))||[],c=l.some(e=>/封面|图片|资源|cover|image/iu.test(e));return[{key:"prepare",title:e("documents.flowPrepare"),description:'读取"'.concat((null==t?void 0:t.name)||"当前模板",'"并创建后台生成任务'),status:"process",icon:(0,n.jsx)(P.A,{}),subSteps:eZ(["读取模板参数",(null==t?void 0:t.documentSpecId)?"加载规范包:".concat((null==s?void 0:s.name)||t.documentSpecId):"未绑定规范包,使用模板章节要求","创建后台生成任务"])},{key:"role_binding",title:"动态角色配置绑定",description:"绑定 ".concat(i.length," 个文件角色、").concat(l.length," 个提示词角色"),status:"wait",icon:(0,n.jsx)(T.A,{}),subSteps:eZ([...i.length?i.map(e=>"文件角色:".concat(e)):["没有文件角色,使用模板绑定文件"],...l.length?l.map(e=>"提示词角色:".concat(e)):["没有提示词角色,使用默认生成策略"]].slice(0,10))},{key:"context_recall",title:"短期/长期上下文召回",description:"从项目记忆中召回用户偏好、历史纠偏和已生成文档摘要,并注入生成提示词",status:"wait",icon:(0,n.jsx)(C.A,{}),subSteps:eZ(["召回相关项目记忆","注入章节生成提示词","生成完成后沉淀新记忆"])},{key:"knowledge_retrieval",title:"知识库证据检索",description:"按 ".concat(o.length," 个章节检索文本、文档、表格、图片、图纸和附件"),status:"wait",icon:(0,n.jsx)(_.A,{}),subSteps:eZ(o.length?o.slice(0,10).map(e=>"检索章节:".concat(e)):["按模板标题检索证据"])},{key:"file_understanding",title:"多类型文件理解",description:"按文件角色处理文本、PDF/Word、表格、图片、图纸和附件",status:"wait",icon:(0,n.jsx)(z.A,{}),subSteps:eZ(["识别文件类型和角色","构建结构化资源证据包","必要时调用多模态文件理解"])},{key:"fact_extraction",title:"动态 schema 事实抽取",description:"按 ".concat(a.length," 个规范/章节事实字段抽取并检测冲突"),status:"wait",icon:(0,n.jsx)(C.A,{}),subSteps:eZ(a.length?a.slice(0,10).map(e=>"抽取事实:".concat(e)):["抽取模板要求的事实","合并来源和角色","检测事实冲突"])},{key:"chapter_generation",title:"章节生成",description:"按 ".concat(o.length," 个模板章节逐章生成"),status:"wait",icon:(0,n.jsx)(D.A,{}),subSteps:eZ(o.length?o.slice(0,10).map(e=>"生成:".concat(e)):["构造章节提示词","等待 LLM 生成","整理章节证据"])},...c?[{key:"asset_generation",title:"生成资源处理",description:"根据资源/图片提示词生成或登记本地资源",status:"wait",icon:(0,n.jsx)(F.A,{}),subSteps:eZ(["生成资源提示词","保存到 generatedDocuments/assets","登记资源元数据"])}]:[],{key:"validation",title:"规范包与门禁校验",description:s?"执行 ".concat(s.gateRules.length," 条门禁规则"):"执行模板基础校验",status:"wait",icon:(0,n.jsx)(M.A,{}),subSteps:eZ([...(null==s?void 0:s.factFields.filter(e=>e.required).map(e=>"必填事实:".concat(e.name)))||[],...(null==s?void 0:s.gateRules.map(e=>"门禁:".concat(e.name)))||["检查章节证据","检查缺失项","检查导出门禁"]].slice(0,10))},{key:"formatting",title:e("documents.flowFormatting"),description:"整理标题、表格、图片、附件引用和正式 Markdown",status:"wait",icon:(0,n.jsx)(E.A,{}),subSteps:eZ(["整理标题层级","整理多类型资源引用","生成正式 Markdown"])},{key:"llm_review",title:"LLM 审查优化",description:"再次使用动态 schema、角色和结构化证据审查优化初稿",status:"wait",icon:(0,n.jsx)(B.A,{}),subSteps:eZ(["构造审查提示词","检查事实来源和冲突","回填优化后的 Markdown"])},{key:"export_ready",title:"导出就绪",description:"确认 Markdown/HTML/DOCX/PDF 可导出",status:"wait",icon:(0,n.jsx)(L.A,{}),subSteps:eZ(["生成导出检查清单","确认阻断项","准备导出格式"])},{key:"done",title:e("documents.flowDone"),description:e("documents.flowDoneDesc"),status:"wait",icon:(0,n.jsx)(R.A,{}),subSteps:eZ(["展示生成结果","允许编辑正文","允许导出文件"])}]},e0=e=>"completed"!==e&&"warning"!==e&&"failed"!==e,e1=function(e,t){let s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:eg;(null==ee?void 0:ee.loading)&&(ee.flowSteps=e,ee.activeFlowKey=t,ee.loading=s,et())},e2=(e,t)=>{if("wait"===t)return e.subSteps.map(e=>({...e,status:"wait"}));if("finish"===t)return e.subSteps.map(e=>({...e,status:"finish"}));if("error"===t)return e.subSteps.map((e,t)=>({...e,status:0===t?"error":e.status}));let s=e.subSteps.findIndex(e=>"wait"===e.status);return e.subSteps.map((e,t)=>t<s||-1===s?{...e,status:"finish"}:t===s?{...e,status:"process"}:e)},e6=e=>{let{steps:t,activeKey:s}=(e=>{var t,s,n;let r,i=Z.find(t=>t.id===e.templateId)||eU,l=e.executionStages||(null==(t=e.draft)?void 0:t.executionStages)||[],a=new Map(l.map(e=>[e.type,e])),o=e$(i).map(t=>{let s;if("prepare"===t.key){let s=l.length>0?"finish":"generating"===e.status?"process":"finish";return{...t,status:s,subSteps:e2(t,s)}}if("done"===t.key){let s="completed"===e.status?"finish":"warning"===e.status?"warning":"wait";return{...t,status:s,subSteps:e2(t,s)}}let n=a.get(t.key);if(!n)return t;let r="failed"===(s=n.status)?"error":"fallback"===s?"warning":"finish";return{...t,status:r,description:n.message||t.description,subSteps:e2(t,r)}});if("generating"===e.status){let e=Math.max(-1,...l.map(e=>o.findIndex(t=>t.key===e.type)).filter(e=>e>=0)),t=o.slice(e+1).find(e=>"done"!==e.key&&"wait"===e.status)||o.find(e=>"process"===e.status)||o.find(e=>"done"===e.key);for(let e of(r=(null==t?void 0:t.key)||"prepare",o))e.key===r&&"wait"===e.status&&(e.status="process",e.subSteps=e2(e,"process"))}else r="failed"===e.status?(null==(s=o.find(e=>"error"===e.status))?void 0:s.key)||(null==(n=l.at(-1))?void 0:n.type)||"prepare":"done";return{steps:o,activeKey:r}})(e);eB(t),eP(s),ef(e0(e.status)),"failed"===e.status&&eH("workflow"),("completed"===e.status||"warning"===e.status)&&e.draft&&(ew(e.draft),ey(e.editedMarkdown||e.markdown),eH("editor"),eB([]),eP(null))},e8=e=>{eN.current&&clearInterval(eN.current),eN.current=setInterval(()=>{(async()=>{try{let{document:t}=await (0,Q.v7)(e);e6(t),await eK(),e0(t.status)||(eN.current&&clearInterval(eN.current),eN.current=null,localStorage.removeItem("activeGenDocId"))}catch(e){}})()},2e3)},e7=(e,t,s)=>{eP(e),eB(n=>{let r=n.map(n=>n.key===e?{...n,status:t,description:s||n.description,subSteps:e2(n,t)}:n);return e1(r,e),r})};(0,r.useEffect)(()=>{if(!eg||!eL)return;let e=window.setInterval(()=>eB(e=>{let t=e.map(e=>{if(e.key!==eL||"process"!==e.status)return e;let t=e.subSteps.findIndex(e=>"process"===e.status),s=t<0?0:Math.min(t+1,e.subSteps.length-1);return{...e,subSteps:e.subSteps.map((e,t)=>t<s?{...e,status:"finish"}:t===s?{...e,status:"process"}:{...e,status:"wait"})}});return e1(t,eL),t}),1400);return()=>window.clearInterval(e)},[eL,eg]);let e3=e=>{eB(t=>{let s=t.findIndex(t=>t.key===e),n=t.map((e,t)=>t<s&&"error"!==e.status?{...e,status:"finish",subSteps:e2(e,"finish")}:e);return e1(n,e),n})},e5=e=>{let t=null!=e?e:{id:"tpl-".concat(Date.now()),name:"",description:"",category:"自定义",outputTitle:"",projectRoleConfigId:void 0,documentSpecId:void 0,chapters:[]};s.setFieldsValue({...t,chapters:t.chapters.map(e=>({...e,queriesText:e.queries.join("\n"),requiredFactsText:e.requiredFacts.join("\n"),pinnedEvidenceText:(e.pinnedEvidenceFilePaths||[]).join("\n")}))}),eD(!0)},e4=async()=>{try{let n=await s.validateFields(),r={...n,chapters:(n.chapters||[]).map(e=>({...e,queries:String(e.queriesText||"").split(/\r?\n/u).map(e=>e.trim()).filter(Boolean),requiredFacts:String(e.requiredFactsText||"").split(/\r?\n/u).map(e=>e.trim()).filter(Boolean),pinnedEvidenceFilePaths:String(e.pinnedEvidenceText||"").split(/\r?\n/u).map(e=>e.trim()).filter(Boolean),queriesText:void 0,requiredFactsText:void 0,pinnedEvidenceText:void 0}))},i=await (0,Q.l2)(r);ei(i.templates),ea(i.template.id),eD(!1),await eK(),t.success(e("common.success"))}catch(e){e instanceof Error&&t.error(e.message)}},e9=async s=>{try{let n=await (0,Q.bV)(s);ei(n.templates),ea(n.template.id),t.success(e("common.success"))}catch(s){t.error(e("common.error"))}},te=async s=>{try{var n,r;let i=await (0,Q.h0)(s);ei(i.templates),ea(null!=(r=null==(n=i.templates[0])?void 0:n.id)?r:""),t.success(e("common.success"))}catch(s){t.error(e("common.error"))}},tt=async e=>{try{let{validation:s}=await (0,Q.SM)(e);eM(t=>({...t,[e]:s}));let n=s.issues.filter(e=>"error"===e.level);if(ea(e),n.length>0)return void t.warning("模板运行前检查未通过,请先处理阻断项");if(s.issues.length>0)return void t.warning("模板存在警告,可在检查面板确认后继续运行");eJ(e)}catch(e){t.error(e instanceof Error?e.message:"模板运行前检查失败")}},ts=async s=>{try{await (0,Q.QG)(s),eS===s&&(eI(null),ew(null),ey("")),await eK(),t.success(e("common.success"))}catch(s){t.error(e("common.error"))}},tn=async e=>{let t=[{k:"chapter_generation",m:"后台任务已创建,正在轮询等待 LLM 章节生成完成…"},{k:"asset_generation",m:"正在轮询等待封面和生成资源写入本地记录…"},{k:"validation",m:"正在轮询等待校验、导出门禁和格式化完成…"},{k:"llm_review",m:"正在轮询等待 LLM 审查优化完成…"}],s=0;for(;;){var n;let{document:r}=await (0,Q.v7)(e);if(e6(r),("completed"===r.status||"warning"===r.status)&&r.draft)return r;if("failed"===r.status)throw Error(r.error||"生成失败");if(0===(r.executionStages||(null==(n=r.draft)?void 0:n.executionStages)||[]).length){let e=t[Math.min(s,t.length-1)];e3(e.k),e7(e.k,"process",e.m)}s++,await new Promise(e=>window.setTimeout(e,1500))}},tr=async()=>{if(!el)return;if(null==ee?void 0:ee.loading){eB(ee.flowSteps),eP(ee.activeFlowKey),ef(!0);return}ef(!0);let s=e$(Z.find(e=>e.id===el)||eU),n=(0,Q.OX)({templateId:el});ee={id:Date.now(),templateId:el,loading:!0,flowSteps:s,activeFlowKey:"prepare",promise:n,listeners:new Set},eB(s),eP("prepare");let r=[{k:"role_binding",m:"正在读取模板、文件角色、提示词角色和文档规范包…"},{k:"knowledge_retrieval",m:"正在从知识库检索章节证据、表格、图片和附件…"},{k:"file_understanding",m:"正在准备多模态文件理解…"},{k:"fact_extraction",m:"正在等待 LLM 事实抽取和后续章节生成结果…"}].map((e,t)=>window.setTimeout(()=>{e3(e.k),e7(e.k,"process",e.m)},600+900*t));try{let s=await n;s.documentId&&(localStorage.setItem("activeGenDocId",s.documentId),eI(s.documentId),(null==ee?void 0:ee.promise)===n&&(ee.documentId=s.documentId)),await eK();let i=s.documentId?await tn(s.documentId):void 0,a=s.draft||(null==i?void 0:i.draft);if(!a)throw Error("生成结果为空");(s.documentId||(null==i?void 0:i.id))&&eI(s.documentId||i.id),r.forEach(e=>window.clearTimeout(e)),e3("done"),ew(a),ey((null==i?void 0:i.editedMarkdown)||(null==i?void 0:i.markdown)||a.markdown),(null==ee?void 0:ee.promise)===n&&(ee.draft=a,ee.content=(null==i?void 0:i.editedMarkdown)||(null==i?void 0:i.markdown)||a.markdown),eB(t=>{let s=t.map(t=>{let s=a.executionStages.find(e=>e.type===t.key);if("prepare"===t.key)return{...t,status:"finish",description:e("documents.flowPrepareDone"),subSteps:e2(t,"finish")};if("done"===t.key){var n;let s=a.validationIssues.some(e=>"error"===e.level||"warning"===e.level)||!a.exportGate.passed,r=s?"warning":"finish",i=null==(n=a.validationIssues.find(e=>"error"===e.level||"warning"===e.level))?void 0:n.message;return{...t,status:r,description:s?"生成完成,但需复核:".concat(i||e("documents.flowGateFailed")):e("documents.flowDoneDesc"),subSteps:e2(t,r)}}if(!s)return"process"===t.status?{...t,status:"finish",subSteps:e2(t,"finish")}:t;let r="failed"===s.status?"error":"finish";return{...t,status:r,description:"".concat(s.status.toUpperCase(),":").concat(s.message||t.description),subSteps:e2(t,r)}});return e1(s,"done",!1),s}),eP("done"),(null==ee?void 0:ee.promise)===n&&(ee.activeFlowKey="done",ee.loading=!1,et()),localStorage.removeItem("activeGenDocId"),await eK(),t.success(e("common.success")),window.setTimeout(()=>{var e;return null==(e=l.current)?void 0:e.scrollIntoView({behavior:"smooth",block:"start"})},200)}catch(r){localStorage.removeItem("activeGenDocId");let s=r instanceof Error?r.message:e("common.error");eB(e=>{let t=e.map(e=>"process"===e.status?{...e,status:"error",description:s,subSteps:e2(e,"error")}:e);return e1(t,eL,!1),t}),(null==ee?void 0:ee.promise)===n&&(ee.loading=!1,ee.error=s,et()),t.error(s)}finally{r.forEach(e=>window.clearTimeout(e)),ef(!1),(null==ee?void 0:ee.promise)===n&&(ee.loading=!1,et())}},ti=(0,r.useRef)(!1),tl=async s=>{(null==ee?void 0:ee.loading)&&(ee.loading=!1,ee.error="用户中止",et(),ee=null,ef(!1)),localStorage.removeItem("activeGenDocId"),eN.current&&(clearInterval(eN.current),eN.current=null);try{await (0,Q.r)(s.id),await eK(),eS===s.id&&(eI(null),ew(null),ey("")),t.success("已中止生成任务")}catch(s){t.error(e("common.error"))}};(0,r.useEffect)(()=>{eW&&"workflow"===eO&&!ti.current&&!(null==ee?void 0:ee.loading)&&(null==eU?void 0:eU.projectRoleConfigId)&&(ti.current=!0,window.setTimeout(()=>{tr()},300)),eW||(ti.current=!1)},[eW,eO]);let ta=async s=>{if(ev){eT(s);try{var n;let e="markdown"===s?"md":s,t=null==(n=ep.find(e=>e.id===(null==eU?void 0:eU.documentSpecId)))?void 0:n.wordTemplatePath,r=await (0,Q.UE)({documentId:eS||void 0,title:ev.title,markdown:ej,format:s,enforceGate:!1,exportGate:ev.exportGate,wordTemplatePath:t});((e,t,s)=>{let n=new Blob([e],{type:s}),r=URL.createObjectURL(n),i=document.createElement("a");i.href=r,i.download=t,i.target="_self",i.rel="noopener",i.style.display="none",document.body.appendChild(i),i.dispatchEvent(new MouseEvent("click",{bubbles:!0,cancelable:!0,view:window})),i.remove(),window.setTimeout(()=>URL.revokeObjectURL(r),1e3)})(r,"".concat(ev.title,".").concat(e),{markdown:"text/markdown;charset=utf-8",html:"text/html;charset=utf-8",pdf:"application/pdf",docx:"application/vnd.openxmlformats-officedocument.wordprocessingml.document"}[s])}catch(s){t.error(s instanceof Error?s.message:e("common.error"))}finally{eT(null)}}},to=async()=>{if(ev)try{if(eS)await (0,Q.a6)(eS,{editedMarkdown:ej,markdown:ej});else{let e=await (0,Q.Af)({...ev,markdown:ej});ew(e.draft)}await eK(),t.success(e("common.success"))}catch(s){t.error(e("common.error"))}},tc=async s=>{if(ev){e_(s.id);try{var n,r;let i=await (0,Q.R1)({templateId:ev.templateId,chapterId:s.id,documentId:eS||void 0,currentMarkdown:ej,existingFacts:null==(n=ev.structuredFacts)?void 0:n.map(e=>e.value)});ew({...ev,chapters:ev.chapters.map(e=>e.id===s.id?i.chapter:e)}),r=i.chapter,ey(e=>e.includes(s.content)?e.replace(s.content,r.content):"".concat(e,"\n\n").concat(r.content)),t.success(e("common.success"))}catch(s){t.error(e("common.error"))}finally{e_(null)}}};if(eh)return(0,n.jsxs)("div",{className:"space-y-5 animateFadeIn",children:[(0,n.jsx)(c.A,{active:!0,title:!0,paragraph:{rows:1}}),(0,n.jsx)(c.A,{active:!0,paragraph:{rows:2}}),(0,n.jsx)(c.A,{active:!0,paragraph:{rows:8}})]});let td="workflow"===eO?"工作流:".concat((null==eU?void 0:eU.name)||"选择模板"):"编辑:".concat((null==ev?void 0:ev.title)||(null==eU?void 0:eU.outputTitle)||"文档");return(0,n.jsxs)("div",{className:"space-y-5 animateFadeIn",children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",flexWrap:"wrap",gap:12},children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("h1",{className:"pageTitle",children:e("documents.title")}),(0,n.jsx)("p",{className:"pageDesc",children:e("documents.description")})]}),(0,n.jsx)(d.Ay,{type:"primary",icon:(0,n.jsx)(G.A,{}),onClick:()=>e5(),children:e("documents.newTemplate")})]}),(0,n.jsx)(u.A,{size:"small",tabList:[{key:"templates",label:"模板库 (".concat(Z.length,")")},{key:"drafts",label:"生成记录 (".concat(eA.length,")")}],activeTabKey:eR,onTabChange:eq,children:"templates"===eR?0===Z.length?(0,n.jsx)(p.A,{description:e("common.noData")}):(0,n.jsx)(m.A,{dataSource:Z,renderItem:(t,s)=>(0,n.jsx)(m.A.Item,{style:{cursor:"pointer",padding:"10px 0"},actions:[(0,n.jsx)(d.Ay,{size:"small",icon:(0,n.jsx)(O.A,{}),onClick:e=>{e.stopPropagation(),e5(t)},children:"配置"},"cfg"),(0,n.jsx)(d.Ay,{size:"small",type:"primary",icon:(0,n.jsx)(H.A,{}),onClick:e=>{e.stopPropagation(),tt(t.id)},children:"运行"},"run"),(0,n.jsx)(d.Ay,{size:"small",icon:(0,n.jsx)(N.A,{}),onClick:e=>{e.stopPropagation(),e9(t.id)}},"copy"),(0,n.jsx)(h.A,{title:e("documents.deleteTemplateConfirm"),disabled:t.builtIn,onConfirm:e=>{null==e||e.stopPropagation(),te(t.id)},children:(0,n.jsx)(d.Ay,{size:"small",danger:!0,icon:(0,n.jsx)(W.A,{}),disabled:t.builtIn,onClick:e=>e.stopPropagation()})},"del")],onClick:()=>ea(t.id),children:(0,n.jsxs)("div",{style:{display:"flex",alignItems:"flex-start",gap:10,minWidth:0,flex:1},children:[function(e,t){let s=en[e]||(0,n.jsx)(P.A,{});return(0,n.jsx)("span",{style:{color:t?"var(--colorAccent)":"var(--colorTextSecondary)",fontSize:16,marginTop:2,flexShrink:0},children:s})}(t.category,el===t.id),(0,n.jsxs)("div",{style:{minWidth:0,flex:1},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:6,marginBottom:2},children:[(0,n.jsx)("span",{style:{fontWeight:el===t.id?600:400,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:t.name}),t.builtIn&&(0,n.jsx)(x.A,{color:"gold",style:{margin:0,fontSize:10,lineHeight:"16px",flexShrink:0},children:"内置"}),el===t.id&&(0,n.jsx)(x.A,{color:"blue",style:{margin:0,fontSize:10,lineHeight:"16px",flexShrink:0},children:"当前"}),(0,n.jsx)(x.A,{style:{margin:0,fontSize:10,lineHeight:"16px",flexShrink:0},children:t.category}),eF[t.id]&&(0,n.jsxs)(x.A,{color:eF[t.id].issues.some(e=>"error"===e.level)?"error":eF[t.id].issues.length?"warning":"success",style:{margin:0,fontSize:10,lineHeight:"16px",flexShrink:0},children:["检查 ",eF[t.id].fileDiagnostics.length," 文件 / ",eF[t.id].promptDiagnostics.length," 提示词"]})]}),t.description&&(0,n.jsx)($,{type:"secondary",style:{fontSize:12,lineHeight:"18px"},children:t.description}),eF[t.id]&&(0,n.jsx)("div",{onClick:e=>e.stopPropagation(),style:{marginTop:8,padding:10,border:"1px solid ".concat(eF[t.id].issues.some(e=>"error"===e.level)?"var(--colorErrorBorder)":eF[t.id].issues.length?"var(--colorWarningBorder)":"var(--colorSuccessBorder)"),borderRadius:10,background:eF[t.id].issues.some(e=>"error"===e.level)?"var(--colorErrorBg)":eF[t.id].issues.length?"var(--colorWarningBg)":"var(--colorSuccessBg)"},children:(0,n.jsxs)(g.A,{direction:"vertical",size:6,style:{width:"100%"},children:[(0,n.jsxs)(g.A,{wrap:!0,children:[(0,n.jsx)($,{strong:!0,children:eF[t.id].issues.some(e=>"error"===e.level)?"运行前检查未通过":eF[t.id].issues.length?"运行前检查存在警告":"运行前检查通过"}),(0,n.jsxs)(x.A,{color:"blue",children:["文件角色 ",eF[t.id].fileDiagnostics.length]}),(0,n.jsxs)(x.A,{color:"purple",children:["提示词角色 ",eF[t.id].promptDiagnostics.length]}),eF[t.id].spec&&(0,n.jsxs)(x.A,{color:"cyan",children:["规范包 ",eF[t.id].spec.name]})]}),eF[t.id].issues.length>0?eF[t.id].issues.map(e=>(0,n.jsx)(f.A,{type:"error"===e.level?"error":"warning",message:e.message,showIcon:!0},e.message)):(0,n.jsx)(f.A,{type:"success",message:"文件角色、提示词角色和规范包检查通过,可以运行。",showIcon:!0}),!eF[t.id].issues.some(e=>"error"===e.level)&&eF[t.id].issues.length>0&&(0,n.jsx)("div",{children:(0,n.jsx)(d.Ay,{size:"small",type:"primary",icon:(0,n.jsx)(H.A,{}),onClick:()=>eJ(t.id),children:"忽略警告并继续运行"})})]})})]})]})})}):0===eA.length?(0,n.jsx)(p.A,{description:e("common.noData")}):(0,n.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:8},children:eA.slice(0,15).map((e,t)=>{var s,r,i;let l,a;return(0,n.jsxs)("div",{style:{display:"flex",alignItems:"flex-start",gap:10,padding:"10px 12px",border:"1px solid var(--colorBorderSecondary)",borderRadius:10,cursor:"pointer",background:eS===e.id?"var(--colorFillAlter)":void 0,minWidth:0},onClick:()=>{eY(e)},children:["completed"===e.status?(0,n.jsx)(E.A,{style:{fontSize:18,color:"var(--colorOk)",flexShrink:0,marginTop:2}}):"failed"===e.status?(0,n.jsx)(K.A,{style:{fontSize:18,color:"var(--colorDanger)",flexShrink:0,marginTop:2}}):"warning"===e.status?(0,n.jsx)(M.A,{style:{fontSize:18,color:"var(--colorWarning)",flexShrink:0,marginTop:2}}):(0,n.jsx)(U.A,{spin:!0,style:{fontSize:18,color:"#1677ff",flexShrink:0,marginTop:2}}),(0,n.jsxs)("div",{style:{minWidth:0,flex:1},children:[(0,n.jsx)("div",{style:{fontWeight:600,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",marginBottom:3},children:e.title}),(0,n.jsxs)("div",{style:{display:"flex",flexWrap:"wrap",gap:"4px 10px",color:"var(--colorTextSecondary)",fontSize:11},children:[(0,n.jsx)("span",{children:new Date(e.updatedAt).toLocaleString()}),(0,n.jsxs)("span",{children:["耗时 ",(e=>{let t=Math.max(0,Math.round(((e.completedAt||e.updatedAt)-e.createdAt)/1e3));if(t<60)return"".concat(t," 秒");let s=Math.floor(t/60),n=t%60;if(s<60)return n?"".concat(s," 分 ").concat(n," 秒"):"".concat(s," 分");let r=Math.floor(s/60),i=s%60;return i?"".concat(r," 小时 ").concat(i," 分"):"".concat(r," 小时")})(e)]})]}),("warning"===e.status||"failed"===e.status)&&(0,n.jsx)("div",{style:{marginTop:3,color:"failed"===e.status?"var(--colorError)":"var(--colorWarning)",fontSize:11,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:(null==(s=e.warningIssues)?void 0:s[0])||(null==(i=e.draft)||null==(r=i.validationIssues.find(e=>"error"===e.level||"warning"===e.level))?void 0:r.message)||"需复核"})]}),(0,n.jsxs)(g.A,{size:4,align:"center",children:[(0,n.jsx)(x.A,{color:"completed"===(l=e.status)?"success":"warning"===l?"warning":"failed"===l?"error":"processing",style:{margin:0,fontSize:10,lineHeight:"18px"},children:"completed"===(a=e.status)?"已完成":"warning"===a?"需复核":"failed"===a?"失败":"生成中"}),(0,n.jsxs)(x.A,{style:{margin:0,fontSize:10,lineHeight:"18px"},children:["#",t+1]}),(0,n.jsx)(h.A,{title:"确认删除?",onConfirm:t=>{null==t||t.stopPropagation(),ts(e.id)},children:(0,n.jsx)(d.Ay,{size:"small",danger:!0,icon:(0,n.jsx)(W.A,{}),onClick:e=>e.stopPropagation()})}),e0(e.status)&&(0,n.jsx)(h.A,{title:"确定中止此生成任务?",onConfirm:t=>{null==t||t.stopPropagation(),tl(e)},children:(0,n.jsx)(d.Ay,{size:"small",danger:!0,onClick:e=>e.stopPropagation(),children:"中止"})}),(0,n.jsx)(d.Ay,{size:"small",type:"primary",icon:e0(e.status)?(0,n.jsx)(U.A,{spin:!0}):(0,n.jsx)(H.A,{}),onClick:t=>{t.stopPropagation(),eY(e)},children:"打开"})]})]},e.id)})})}),(0,n.jsx)(v.A,{title:td,open:eW,onClose:()=>{eG(!1),eN.current&&(clearInterval(eN.current),eN.current=null)},width:800,maskClosable:!1,style:{borderRadius:"12px 0 0 12px"},styles:{body:{padding:"16px 24px"},header:{borderRadius:"12px 0 0 0",borderBottom:"1px solid var(--colorBorderSecondary)"}},extra:ev?(0,n.jsxs)(g.A,{wrap:!0,children:[(0,n.jsx)(d.Ay,{icon:(0,n.jsx)(X.A,{}),onClick:()=>{to()},children:e("documents.saveDraft")}),(0,n.jsx)(d.Ay,{icon:(0,n.jsx)(R.A,{}),loading:"markdown"===eb,onClick:()=>{ta("markdown")},children:"MD"}),(0,n.jsx)(d.Ay,{loading:"html"===eb,onClick:()=>{ta("html")},children:"HTML"}),(0,n.jsx)(d.Ay,{loading:"docx"===eb,onClick:()=>{ta("docx")},children:"DOCX"}),(0,n.jsx)(d.Ay,{type:"primary",loading:"pdf"===eb,onClick:()=>{ta("pdf")},children:"PDF"})]}):eg&&"workflow"===eO?(0,n.jsx)(d.Ay,{danger:!0,onClick:()=>{(async()=>{eS&&await (0,Q.r)(eS).catch(()=>void 0),ee&&(ee.loading=!1,ee.error="用户中止",et(),ee=null),localStorage.removeItem("activeGenDocId"),eN.current&&(clearInterval(eN.current),eN.current=null),ef(!1),eB([]),eP(null),eG(!1),await eK(),t.info("已中止生成任务")})()},children:"中止任务"}):void 0,children:(0,n.jsxs)(g.A,{direction:"vertical",style:{width:"100%"},size:"middle",children:["workflow"===eO&&eE.length>0&&(0,n.jsx)(w.A,{direction:"vertical",size:"small",current:eQ,items:eE.map(e=>{let t;return{title:e.title,description:(0,n.jsxs)("div",{children:[(0,n.jsx)("div",{children:e.description}),(0,n.jsx)("div",{style:{marginTop:4},children:e.subSteps.map(e=>{var t;return(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:4,fontSize:12,color:"var(--colorTextSecondary)"},children:["process"===(t=e.status)?(0,n.jsx)(q.A,{}):"finish"===t?(0,n.jsx)(E.A,{}):"warning"===t?(0,n.jsx)(M.A,{style:{color:"var(--colorWarning)"}}):"error"===t?(0,n.jsx)(W.A,{}):(0,n.jsx)("span",{style:{display:"inline-block",height:6,width:6,borderRadius:"50%",background:"var(--colorTextTertiary)"}}),(0,n.jsx)("span",{children:e.title})]},e.key)})})]}),status:"warning"===(t=e.status)?"finish":t,icon:"process"===e.status?(0,n.jsx)(q.A,{}):"warning"===e.status?(0,n.jsx)(M.A,{style:{color:"var(--colorWarning)"}}):e.icon}})}),"workflow"===eO&&eg&&0===eE.length&&(0,n.jsx)("div",{style:{textAlign:"center",padding:40},children:(0,n.jsx)(j.A,{tip:"正在准备生成…"})}),ev&&(0,n.jsx)("div",{ref:l,children:(0,n.jsx)(y.A,{items:[{key:"edit",label:e("documents.edit"),children:(0,n.jsx)(Y,{rows:35,value:ej,onChange:e=>ey(e.target.value)})},{key:"chapters-facts",label:"章节与事实",children:(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:16},children:[ev.chapters.length>0&&(0,n.jsxs)("div",{children:[(0,n.jsxs)($,{strong:!0,style:{fontSize:13,marginBottom:8,display:"block"},children:["章节 (",ev.chapters.length,")"]}),(0,n.jsx)(m.A,{size:"small",dataSource:ev.chapters,renderItem:e=>(0,n.jsx)(m.A.Item,{actions:[(0,n.jsx)(d.Ay,{size:"small",icon:(0,n.jsx)(V.A,{}),loading:eC===e.id,onClick:()=>{tc(e)},children:"重新生成"},"regen")],children:(0,n.jsx)(m.A.Item.Meta,{title:e.title,description:"证据: ".concat(e.evidence.length," \xb7 缺失: ").concat(e.missingFacts.length)})})})]}),ev.structuredFacts.length>0&&(0,n.jsxs)("div",{children:[(0,n.jsxs)($,{strong:!0,style:{fontSize:13,marginBottom:8,display:"block"},children:["结构化事实 (",ev.structuredFacts.length,")"]}),(0,n.jsx)(A.A,{size:"small",column:1,bordered:!0,children:ev.structuredFacts.map((e,t)=>(0,n.jsxs)(A.A.Item,{label:e.key,children:[(0,n.jsx)("span",{children:e.value}),(0,n.jsx)(x.A,{style:{marginLeft:8},children:e.confidence.toFixed(2)}),(0,n.jsx)($,{type:"secondary",style:{fontSize:11,marginLeft:8},children:e.sourceFile})]},t))})]})]})},{key:"sources-missing",label:"来源与缺失",children:(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:16},children:[(0,n.jsxs)("div",{children:[(0,n.jsxs)($,{strong:!0,style:{fontSize:13,marginBottom:8,display:"block"},children:["引用来源 (",ev.sources.length,")"]}),0===ev.sources.length?(0,n.jsx)(p.A,{description:"暂无"}):(0,n.jsx)("div",{style:{display:"flex",flexWrap:"wrap",gap:4},children:ev.sources.map(e=>(0,n.jsxs)(x.A,{color:"blue",children:[e.filePath," (",e.count,")"]},e.filePath))})]}),(0,n.jsxs)("div",{children:[(0,n.jsxs)($,{strong:!0,style:{fontSize:13,marginBottom:8,display:"block"},children:["缺失项 (",ev.missingItems.length,")"]}),0===ev.missingItems.length?(0,n.jsx)(p.A,{description:"无缺失"}):(0,n.jsx)(m.A,{size:"small",dataSource:ev.missingItems,renderItem:e=>(0,n.jsx)(m.A.Item,{children:e})})]})]})},{key:"validation",label:"校验 (".concat(ev.validationIssues.length,")"),children:0===ev.validationIssues.length?(0,n.jsx)(p.A,{description:"校验通过"}):(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:8},children:[ev.validationIssues.map(e=>(0,n.jsxs)("div",{style:{border:"1px solid var(--colorBorderSecondary)",borderRadius:8,padding:12},children:[(0,n.jsx)(x.A,{color:"error"===e.level?"error":"warning"===e.level?"warning":"blue",children:e.level}),(0,n.jsx)("div",{style:{marginTop:6,whiteSpace:"pre-wrap",overflowWrap:"anywhere",wordBreak:"break-all",lineHeight:1.6},children:e.message}),e.suggestion&&(0,n.jsx)("div",{style:{marginTop:6,color:"var(--colorTextSecondary)",whiteSpace:"pre-wrap",overflowWrap:"anywhere",wordBreak:"break-all"},children:e.suggestion})]},"".concat(e.level,"-").concat(e.message))),ev.exportGate.checklist.length>0&&(0,n.jsxs)("div",{style:{marginTop:8},children:[(0,n.jsx)($,{strong:!0,style:{fontSize:13,marginBottom:8,display:"block"},children:"导出门禁"}),(0,n.jsx)(m.A,{size:"small",dataSource:ev.exportGate.checklist,renderItem:e=>(0,n.jsxs)(m.A.Item,{children:[(0,n.jsx)($,{style:{overflowWrap:"anywhere",wordBreak:"break-word"},children:e.label}),(0,n.jsx)(x.A,{color:e.passed?"success":"error",children:e.passed?"PASS":"FAIL"})]})})]})]})},{key:"stages",label:"执行阶段 (".concat(ev.executionStages.length,")"),children:(0,n.jsx)(m.A,{size:"small",dataSource:ev.executionStages,renderItem:e=>(0,n.jsxs)(m.A.Item,{children:[(0,n.jsx)(m.A.Item.Meta,{avatar:es[e.type]||(0,n.jsx)(P.A,{}),title:(0,n.jsx)($,{style:{overflowWrap:"anywhere",wordBreak:"break-word"},children:"".concat(er[e.type]||e.type," \xb7 ").concat(e.roleId)}),description:(0,n.jsx)($,{type:"secondary",style:{whiteSpace:"pre-wrap",overflowWrap:"anywhere",wordBreak:"break-word"},children:e.message})}),(0,n.jsx)(x.A,{color:"success"===e.status?"success":"failed"===e.status?"error":"skipped"===e.status?"default":"warning",children:e.status})]})})}]})})]})}),(0,n.jsx)(k.A,{maskClosable:!1,title:e("documents.templateEditor"),open:ez,onOk:()=>{e4()},onCancel:()=>eD(!1),width:760,centered:!0,okText:e("common.save"),cancelText:e("common.cancel"),children:(0,n.jsxs)(o.A,{form:s,layout:"vertical",requiredMark:"optional",children:[(0,n.jsxs)(S.A,{gutter:12,children:[(0,n.jsx)(o.A.Item,{name:"id",hidden:!0,children:(0,n.jsx)(i.A,{})}),(0,n.jsx)(I.A,{xs:24,md:8,children:(0,n.jsx)(o.A.Item,{name:"name",label:e("documents.templateName"),rules:[{required:!0}],children:(0,n.jsx)(i.A,{})})}),(0,n.jsx)(I.A,{xs:24,md:8,children:(0,n.jsx)(o.A.Item,{name:"category",label:e("documents.templateCategory"),children:(0,n.jsx)(i.A,{})})}),(0,n.jsx)(I.A,{xs:24,md:8,children:(0,n.jsx)(o.A.Item,{name:"outputTitle",label:e("documents.outputTitle"),children:(0,n.jsx)(i.A,{})})}),(0,n.jsx)(I.A,{xs:24,md:12,children:(0,n.jsx)(o.A.Item,{name:"description",label:e("documents.templateDescription"),children:(0,n.jsx)(i.A,{})})})]}),(0,n.jsx)(o.A.Item,{name:"projectRoleConfigId",label:e("documents.projectRoleConfig"),rules:[{required:!0,message:e("documents.projectRoleConfigRequired")}],children:(0,n.jsx)(b.A,{showSearch:!0,placeholder:e("documents.projectRoleConfigRequired"),options:eX})}),(0,n.jsx)(o.A.Item,{name:"documentSpecId",label:e("documents.documentSpec"),children:(0,n.jsx)(b.A,{allowClear:!0,showSearch:!0,placeholder:e("documents.documentSpecPlaceholder"),options:eV})}),(0,n.jsx)(o.A.List,{name:"chapters",children:(e,t)=>{let{add:s,remove:r}=t;return(0,n.jsxs)("div",{children:[(0,n.jsxs)(g.A,{style:{marginBottom:8},children:[(0,n.jsx)($,{strong:!0,children:"章节结构"}),(0,n.jsx)(d.Ay,{size:"small",icon:(0,n.jsx)(G.A,{}),onClick:()=>s({id:"chapter-".concat(Date.now()),title:"",purpose:"",queries:[],requiredFacts:[]}),children:"添加章节"})]}),e.map(e=>(0,n.jsx)(u.A,{size:"small",style:{marginBottom:8},children:(0,n.jsxs)(S.A,{gutter:8,children:[(0,n.jsx)(I.A,{span:6,children:(0,n.jsx)(o.A.Item,{name:[e.name,"id"],label:"章节 ID",rules:[{required:!0}],children:(0,n.jsx)(i.A,{})})}),(0,n.jsx)(I.A,{span:8,children:(0,n.jsx)(o.A.Item,{name:[e.name,"title"],label:"标题",rules:[{required:!0}],children:(0,n.jsx)(i.A,{})})}),(0,n.jsx)(I.A,{span:8,children:(0,n.jsx)(o.A.Item,{name:[e.name,"purpose"],label:"目的",children:(0,n.jsx)(i.A,{})})}),(0,n.jsx)(I.A,{span:2,children:(0,n.jsx)(d.Ay,{danger:!0,size:"small",onClick:()=>r(e.name),children:"删除"})}),(0,n.jsx)(I.A,{span:12,children:(0,n.jsx)(o.A.Item,{name:[e.name,"queriesText"],label:"查询词(每行一个)",children:(0,n.jsx)(Y,{rows:3})})}),(0,n.jsx)(I.A,{span:12,children:(0,n.jsx)(o.A.Item,{name:[e.name,"requiredFactsText"],label:"必需事实(每行一个)",children:(0,n.jsx)(Y,{rows:3})})}),(0,n.jsx)(I.A,{span:24,children:(0,n.jsx)(o.A.Item,{name:[e.name,"pinnedEvidenceText"],label:"高级可选:人工确认优先证据",children:(0,n.jsx)(Y,{rows:2,placeholder:"通常无需手动填写。仅当系统自动检索不稳定或必须指定官方资料时,每行填写一个 knowledgeBase 相对路径"})})})]})},e.key))]})}})]})})]})}}},e=>{e.O(0,[347,8787,4277,7889,4833,7271,7576,2884,9144,9189,3455,5292,4052,6506,4427,3057,2225,6578,636,6593,8792],()=>e(e.s=16403)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6920],{2548:(e,s,l)=>{"use strict";l.r(s),l.d(s,{default:()=>b});var i=l(65321),r=l(35292),c=l(68787),n=l(2256),d=l(38770),t=l(11702),x=l(9730),h=l(13399),j=l(55122),a=l(15622),o=l(71330),g=l(8579),m=l(66926),A=l(7851),p=l(84742),u=l(32620);let{Paragraph:k,Title:z,Text:N}=r.A,y=[{icon:(0,i.jsx)(o.A,{}),title:"准备阶段",color:"blue",items:["配置模型","上传知识库资料","创建提示词"]},{icon:(0,i.jsx)(g.A,{}),title:"编排阶段",color:"purple",items:["创建文件角色","创建提示词角色","创建项目角色配置并排序"]},{icon:(0,i.jsx)(m.A,{}),title:"生成阶段",color:"geekblue",items:["创建模板","上下文召回","知识库证据增强","动态执行状态"]},{icon:(0,i.jsx)(A.A,{}),title:"交付阶段",color:"green",items:["审查事实和来源","检查导出门禁","导出正式文件"]}],w=[{title:"第一步:配置模型",goal:"让系统具备 LLM JSON 事实抽取、章节生成和校验能力。",path:"左侧菜单 → 模型配置",steps:["点击新增供应商,选择 OpenAI、DeepSeek、OpenRouter、Ollama 或其他兼容 OpenAI 协议的服务。","填写 Base URL、API Key、供应商名称并保存。","添加模型名称,建议至少准备一个用于生成和推理的模型。","把模型设置为当前启用模型。","执行健康检查,确认模型可调用。"],checks:["模型健康检查通过","至少有一个启用模型","API Key 和 Base URL 正确"],tips:"如果模型不可用,系统会回退到本地确定性抽取,但事实抽取质量会下降。"},{title:"第二步:上传知识库资料",goal:"把项目资料放入系统,让后续文件角色可以绑定。",path:"左侧菜单 → 知识库 → 文件管理 / 管理",steps:["上传招标文件、工程概况、合同条件、技术要求等项目事实资料。","上传工程量清单、劳动力计划、机械设备计划、材料计划等表格资料。","上传图纸目录、图纸说明、设计说明等图纸类资料。","上传规范、规程、企业标准、评分办法、编制要求等规则类资料。","等待索引完成,并在知识库文件列表中确认文件可见。"],checks:["文件上传成功","索引完成","文件能在文件角色绑定下拉框中看到"],tips:"表格资料最好有清晰表头;图纸资料最好附带目录或文字说明。"},{title:"第三步:创建提示词",goal:"定义每个执行阶段的模型行为。",path:"左侧菜单 → 提示词管理",steps:["创建事实抽取提示词:要求只抽取资料中明确出现的事实,返回结构化 JSON,不允许编造。","创建章节生成提示词:定义文档类型、专业语气、章节风格、引用事实和禁止事项。","创建校验提示词:检查工程名称、工期、质量目标、数字、表格引用、章节完整性。","创建格式化提示词:定义封面、目录、编号、表格、分页和正式输出样式。","保存后确认提示词能在提示词角色绑定下拉框中看到。"],checks:["事实抽取提示词已创建","章节生成提示词已创建","校验或格式化提示词已创建"],tips:"提示词越明确,生成结果越稳定。建议明确写上“没有来源的数据不要写”。"},{title:"第四步:创建文件角色",goal:"告诉系统每个文件在生成流程中的用途。",path:"左侧菜单 → 角色配置 → 新建文件角色",steps:["填写角色名称,例如“招标文件事实源”“工程量清单表格”“图纸说明文件”。","选择处理类型:规则文件、项目事实文件、表格数据、图纸文件、规范文件或参考资料。","绑定对应知识库文件。","保存角色。","按文件用途创建多个文件角色,不建议把不同用途资料混在一个角色里。"],checks:["文件角色有名称","已选择处理类型","已绑定知识库文件"],tips:"处理类型很重要:系统会根据它决定是否进行表格解析、事实抽取、规则引用或来源追踪。"},{title:"第五步:创建提示词角色",goal:"告诉系统每条提示词在哪个执行阶段使用。",path:"左侧菜单 → 角色配置 → 新建提示词角色",steps:["填写角色名称,例如“施工组织设计事实抽取”“章节生成规则”“导出前校验规则”。","选择执行类型:事实抽取、章节生成、校验、格式化或参考。","绑定对应提示词。","保存角色。","一个执行阶段可以有多个提示词角色,后续在项目角色配置中排序。"],checks:["提示词角色有名称","已选择执行类型","已绑定提示词"],tips:"角色名称可以完全自定义,但执行类型必须选对。系统依赖执行类型驱动多阶段流程。"},{title:"第六步:创建项目角色配置并排序",goal:"把文件角色和提示词角色组合成一个可复用的项目生成方案。",path:"左侧菜单 → 角色配置 → 新建项目配置",steps:["填写配置名称,例如“某项目施工组织设计配置”。","添加文件角色,并设置顺序。推荐:规则文件 → 项目事实文件 → 表格数据 → 图纸文件 → 规范文件 → 参考资料。","添加提示词角色,并设置顺序。推荐:事实抽取 → 章节生成 → 校验 → 格式化 → 参考。","保存项目角色配置。","后续模板只绑定项目角色配置,不再重复绑定文件和提示词。"],checks:["至少包含一个文件角色","至少包含一个提示词角色","顺序符合业务流程"],tips:"排序决定系统读取资料和应用提示词的优先级,是生产级生成稳定性的关键。"},{title:"第七步:创建模板并绑定项目配置",goal:"定义要生成哪种文档,以及使用哪套项目角色配置。",path:"左侧菜单 → 生成编辑 → 新建模板",steps:["填写模板 ID。ID 由系统生成或保持唯一,不建议手动频繁修改。","填写模板名称,例如“施工组织设计”“技术标文件”“专项施工方案”。","填写分类、输出标题和模板说明。","选择第六步创建的项目角色配置。","为章节填写查询词和必需事实;系统会自动按章节检索知识库证据。","高级优先证据通常无需填写;只有必须指定某份官方资料、图纸或表格时才使用。","保存模板。"],checks:["模板名称清晰","输出标题正确","已绑定项目角色配置"],tips:"模板负责文档入口;项目角色配置负责资料、提示词和顺序。两者分离后更容易复用。"},{title:"第八步:执行生成并查看状态",goal:"让用户明确知道生成流程进行到哪一步。",path:"左侧菜单 → 生成编辑 → 选择模板 → 点击生成",steps:["点击生成按钮后,页面会出现“执行状态”卡片。","系统会先绑定文件角色和提示词角色,再按当前项目召回短期/长期上下文;上下文只作为偏好和历史纠偏参考,不覆盖知识库事实。","系统会按章节自动检索知识库证据;只有在必须指定官方资料、图纸或表格时,才需要使用高级优先证据。","执行状态会根据当前模板、文档规范包、文件角色、提示词角色、上下文召回、证据增强和章节自动生成,不是固定工程流程。","当前执行节点会高亮显示,子状态会展示正在处理的章节、事实字段、文件角色、增强贡献或门禁规则。","生成任务在后台运行,页面通过 documentId 轮询;切换页面后回到生成编辑仍可恢复状态。","生成完成后,系统会用后端真实 executionStages 回填最终状态。","如果导出门禁未通过,生成完成节点会提示需要检查校验结果。"],checks:["执行状态 Card 出现","当前节点有高亮","生成完成后有执行阶段结果"],tips:"如果长时间停留在某一步,优先检查模型配置、知识库索引和文件角色绑定。"},{title:"第九步:审查结果并导出",goal:"确保文档可追溯、可校验、可交付,同时能区分阻断问题和可复核 warning。",path:"生成编辑 → 编辑器下方 Tabs → 导出按钮 / 草稿历史",steps:["查看“结构化事实”,确认事实字段是否按文档规范包动态 schema 抽取,并检查冲突提示。","查看“来源”,确认事实来自规范包要求的文件角色和绑定资料。","查看“缺失项”,补齐缺失资料或调整角色配置。","查看“校验”,优先处理 error;warning 表示可导出但建议复核。","查看“导出门禁”,真实 blockingIssues 会阻断 PDF/DOCX 导出,普通 warning 不阻断。","在草稿历史中确认生成状态、warning 原因、整体生成耗时,并可删除不需要的记录。","可以先导出 HTML 预览排版,再导出 DOCX/PDF。"],checks:["无真实阻断问题","关键事实有来源","章节有证据","warning 原因已复核","导出文件可打开"],tips:"导出不是简单放行:真实阻断仍会拦截;生成完成但存在可复核问题时显示 warning,用户可以继续导出并按原因优化资料。"}];function b(){let e=(0,u.Vr)();return(0,i.jsxs)("div",{className:"space-y-6 animateFadeIn",children:[(0,i.jsxs)(c.A,{className:"cardGlass",styles:{body:{padding:24}},children:[(0,i.jsx)(z,{level:2,className:"mb-2",children:e("guide.title")}),(0,i.jsx)(k,{className:"pageDesc mb-0",children:e("guide.description")})]}),(0,i.jsx)(n.A,{gutter:[16,16],children:y.map(e=>(0,i.jsx)(d.A,{xs:24,md:12,xl:6,children:(0,i.jsx)(c.A,{className:"h-full",title:(0,i.jsxs)("span",{className:"flex items-center gap-2",children:[e.icon,e.title]}),children:(0,i.jsx)("div",{className:"space-y-2",children:e.items.map(s=>(0,i.jsx)("div",{children:(0,i.jsx)(t.A,{color:e.color,children:s})},s))})})},e.title))}),(0,i.jsx)(c.A,{title:e("guide.fullFlow"),children:(0,i.jsx)(x.A,{direction:"vertical",items:w.map(e=>({title:e.title,description:"".concat(e.goal,"(入口:").concat(e.path,")")}))})}),(0,i.jsx)(c.A,{title:"详细步骤说明:照着做即可跑通",children:(0,i.jsx)(h.A,{mode:"left",items:w.map(e=>({dot:(0,i.jsx)(p.A,{}),children:(0,i.jsxs)("div",{className:"space-y-3",children:[(0,i.jsx)(z,{level:4,className:"mb-0",children:e.title}),(0,i.jsxs)(k,{children:[(0,i.jsx)(N,{strong:!0,children:"目标:"}),e.goal]}),(0,i.jsxs)(k,{children:[(0,i.jsx)(N,{strong:!0,children:"入口:"}),e.path]}),(0,i.jsxs)("div",{children:[(0,i.jsx)(N,{strong:!0,children:"操作步骤:"}),(0,i.jsx)("ol",{className:"list-decimal pl-6 mt-2 space-y-1",children:e.steps.map(e=>(0,i.jsx)("li",{children:e},e))})]}),(0,i.jsxs)("div",{children:[(0,i.jsx)(N,{strong:!0,children:"完成检查:"}),(0,i.jsx)("div",{className:"mt-2 flex flex-wrap gap-2",children:e.checks.map(e=>(0,i.jsx)(t.A,{color:"success",children:e},e))})]}),(0,i.jsxs)(k,{children:[(0,i.jsx)(N,{strong:!0,children:"提示:"}),e.tips]}),(0,i.jsx)(j.A,{})]})}))})}),(0,i.jsxs)(n.A,{gutter:[16,16],children:[(0,i.jsx)(d.A,{xs:24,lg:12,children:(0,i.jsxs)(c.A,{title:e("guide.roleDesign"),children:[(0,i.jsx)(k,{children:e("guide.roleDesignDesc")}),(0,i.jsxs)("div",{className:"space-y-3",children:[(0,i.jsxs)("div",{children:[(0,i.jsx)(t.A,{color:"blue",children:"file"}),(0,i.jsx)(N,{strong:!0,children:e("guide.fileRole")}),(0,i.jsx)(k,{children:e("guide.fileRoleDesc")})]}),(0,i.jsxs)("div",{children:[(0,i.jsx)(t.A,{color:"purple",children:"prompt"}),(0,i.jsx)(N,{strong:!0,children:e("guide.promptRole")}),(0,i.jsx)(k,{children:e("guide.promptRoleDesc")})]}),(0,i.jsxs)("div",{children:[(0,i.jsx)(t.A,{color:"geekblue",children:"config"}),(0,i.jsx)(N,{strong:!0,children:e("guide.projectConfig")}),(0,i.jsx)(k,{children:e("guide.projectConfigDesc")})]})]})]})}),(0,i.jsx)(d.A,{xs:24,lg:12,children:(0,i.jsxs)(c.A,{title:e("guide.generationEngine"),children:[(0,i.jsx)(k,{children:e("guide.generationEngineDesc")}),(0,i.jsxs)("div",{className:"space-y-2",children:[(0,i.jsx)(t.A,{children:e("roles.factExtraction")}),(0,i.jsx)(t.A,{children:e("roles.chapterGeneration")}),(0,i.jsx)(t.A,{children:e("roles.validation")}),(0,i.jsx)(t.A,{children:e("roles.formatting")}),(0,i.jsx)(t.A,{children:e("documents.exportGate")})]})]})})]}),(0,i.jsx)(c.A,{title:"文件角色和提示词角色案例:它们在模板生成中到底起什么作用",children:(0,i.jsxs)(n.A,{gutter:[16,16],children:[(0,i.jsx)(d.A,{xs:24,lg:12,children:(0,i.jsxs)(c.A,{size:"small",title:"案例 A:创建文件角色“招标文件事实源”",children:[(0,i.jsxs)(k,{children:[(0,i.jsx)(N,{strong:!0,children:"怎么创建:"}),"类型选择 file,处理类型选择“项目事实文件”,绑定招标文件、合同摘要或项目概况。"]}),(0,i.jsxs)(k,{children:[(0,i.jsx)(N,{strong:!0,children:"生成时的作用:"}),"系统会从这个角色绑定的文件里抽取工程名称、建设地点、工期、质量目标、范围边界等事实,并把来源带入结构化事实和章节证据。"]}),(0,i.jsxs)(k,{children:[(0,i.jsx)(N,{strong:!0,children:"带来的提升:"}),"模型不再凭空补项目事实;章节生成和导出校验都会追踪“这句话来自哪个文件角色、哪个文件”。"]})]})}),(0,i.jsx)(d.A,{xs:24,lg:12,children:(0,i.jsxs)(c.A,{size:"small",title:"案例 B:创建文件角色“工程量清单表格”",children:[(0,i.jsxs)(k,{children:[(0,i.jsx)(N,{strong:!0,children:"怎么创建:"}),"类型选择 file,处理类型选择“表格数据”,绑定 Excel、CSV、清单表或计划表。"]}),(0,i.jsxs)(k,{children:[(0,i.jsx)(N,{strong:!0,children:"生成时的作用:"}),"系统会读取 Sheet、表头、行列和来源范围,把表格数据转换成可引用的结构化资源证据。"]}),(0,i.jsxs)(k,{children:[(0,i.jsx)(N,{strong:!0,children:"带来的提升:"}),"章节中涉及数量、清单、计划、资源配置时,优先引用表格来源,减少数字编造和漏项。"]})]})}),(0,i.jsx)(d.A,{xs:24,lg:12,children:(0,i.jsxs)(c.A,{size:"small",title:"案例 C:创建提示词角色“章节生成规则”",children:[(0,i.jsxs)(k,{children:[(0,i.jsx)(N,{strong:!0,children:"怎么创建:"}),"先在提示词管理中写好生成规则,例如“必须引用来源、不要写无来源数据、输出正式报告语气”;再创建 prompt 角色,执行类型选择“章节生成”。"]}),(0,i.jsxs)(k,{children:[(0,i.jsx)(N,{strong:!0,children:"生成时的作用:"}),"系统生成每个章节时会把这个提示词加入 LLM 上下文,用它约束语气、结构、引用方式和禁止事项。"]}),(0,i.jsxs)(k,{children:[(0,i.jsx)(N,{strong:!0,children:"带来的提升:"}),"同一套资料可以生成更稳定的文档风格;不同模板只需替换提示词角色,就能调整写法而不改知识库文件。"]})]})}),(0,i.jsx)(d.A,{xs:24,lg:12,children:(0,i.jsxs)(c.A,{size:"small",title:"案例 D:创建提示词角色“导出前校验规则”",children:[(0,i.jsxs)(k,{children:[(0,i.jsx)(N,{strong:!0,children:"怎么创建:"}),"提示词内容写清楚必须检查的交付要求,例如“不能出现资料未提供、图片引用必须可访问、关键事实必须有来源”;prompt 角色执行类型选择“校验”或“格式化”。"]}),(0,i.jsxs)(k,{children:[(0,i.jsx)(N,{strong:!0,children:"生成时的作用:"}),"生成完成后,系统会结合文档规范包、证据来源和导出门禁检查文档是否可交付。"]}),(0,i.jsxs)(k,{children:[(0,i.jsx)(N,{strong:!0,children:"带来的提升:"}),"把人工审稿经验前置到生成流程,降低导出后才发现缺来源、缺图片、格式不合格的概率。"]})]})})]})}),(0,i.jsx)(c.A,{title:"我的数据、内置示例和门禁规则说明",children:(0,i.jsxs)(n.A,{gutter:[16,16],children:[(0,i.jsx)(d.A,{xs:24,md:8,children:(0,i.jsx)(c.A,{size:"small",title:"默认优先看我的数据",children:(0,i.jsx)(k,{children:"文件、提示词、角色配置和规范包默认优先展示用户自己创建的内容。内置示例只用于学习,不能直接覆盖或删除,需要使用时请先复制。"})})}),(0,i.jsx)(d.A,{xs:24,md:8,children:(0,i.jsx)(c.A,{size:"small",title:"自定义门禁类型会执行",children:(0,i.jsx)(k,{children:"用户在文档规范包中创建的门禁类型,需要选择校验对象和校验方式。保存后它会和系统门禁类型一样参与生成校验,不只是备注说明。"})})}),(0,i.jsx)(d.A,{xs:24,md:8,children:(0,i.jsx)(c.A,{size:"small",title:"上传后关注索引状态",children:(0,i.jsx)(k,{children:"文件上传完成后,知识库索引会继续在后台写入。请在文件管理页查看状态,如果失败,页面会展示原因,方便重新配置模型或重试。"})})})]})}),(0,i.jsx)(c.A,{title:"上下文、知识库证据和增强贡献说明",children:(0,i.jsxs)(n.A,{gutter:[16,16],children:[(0,i.jsx)(d.A,{xs:24,md:8,children:(0,i.jsx)(c.A,{size:"small",title:"上下文召回不是事实来源",children:(0,i.jsx)(k,{children:"生成前会按当前项目召回短期/长期上下文,但它只用于用户偏好、历史纠偏和连续性参考。如果上下文与知识库证据冲突,系统提示词会要求以知识库证据、模板要求和规范包为准。"})})}),(0,i.jsx)(d.A,{xs:24,md:8,children:(0,i.jsx)(c.A,{size:"small",title:"自动检索为主",children:(0,i.jsx)(k,{children:"模板章节的查询词、章节目的和必需事实会驱动系统自动检索知识库证据。高级优先证据只是兜底能力,用于必须指定官方资料、图纸或表格的场景,不是日常必填项。"})})}),(0,i.jsx)(d.A,{xs:24,md:8,children:(0,i.jsx)(c.A,{size:"small",title:"增强贡献可追踪",children:(0,i.jsx)(k,{children:"生成流程会展示知识库证据、人工确认/固定证据、项目上下文和自动检索证据的数量,帮助判断本次增强是否真的参与生成,而不是增加用户维护成本。"})})})]})}),(0,i.jsx)(c.A,{title:"动态 schema、证据和执行状态说明",children:(0,i.jsxs)(n.A,{gutter:[16,16],children:[(0,i.jsx)(d.A,{xs:24,md:8,children:(0,i.jsx)(c.A,{size:"small",title:"动态事实 schema",children:(0,i.jsx)(k,{children:"系统不会写死工程字段。文档规范包的事实字段、模板章节 requiredFacts、字段 sourceRoleIds 和 extractionHint 会共同组成抽取 schema,并驱动事实抽取、冲突检测和导出门禁。"})})}),(0,i.jsx)(d.A,{xs:24,md:8,children:(0,i.jsx)(c.A,{size:"small",title:"结构化资源证据",children:(0,i.jsx)(k,{children:"文本、PDF/Word、Excel/CSV、图片、地图图纸和其他附件都会被整理成资源证据,包含文件角色、处理类型、正文用途、关联事实和证据片段,模型据此理解资料关系。"})})}),(0,i.jsx)(d.A,{xs:24,md:8,children:(0,i.jsx)(c.A,{size:"small",title:"动态执行状态",children:(0,i.jsx)(k,{children:"生成编辑页的执行节点会随模板、规范包、文件角色、提示词角色、章节和门禁规则变化;用户生成不同项目文件时看到的是对应项目的流程,而不是固定示例流程。"})})})]})}),(0,i.jsx)(c.A,{title:"生成记录、warning 和导出门禁怎么理解",children:(0,i.jsxs)(n.A,{gutter:[16,16],children:[(0,i.jsx)(d.A,{xs:24,lg:8,children:(0,i.jsxs)(c.A,{size:"small",title:"草稿历史记录",children:[(0,i.jsxs)(k,{children:["每次后台生成都会写入全局项目目录 ",(0,i.jsxs)(N,{code:!0,children:["~/.customize-agent/projects/","{projectId}","/generatedDocuments"]}),"。记录会保存标题、模板、状态、创建时间、完成时间、生成耗时、正文、结构化结果和资源引用。"]}),(0,i.jsxs)("ul",{className:"list-disc pl-5 space-y-1",children:[(0,i.jsx)("li",{children:"completed:生成完成且无需要关注的问题。"}),(0,i.jsx)("li",{children:"warning:生成完成,但存在可复核问题。"}),(0,i.jsx)("li",{children:"failed:生成失败,需要查看错误原因。"}),(0,i.jsx)("li",{children:"generating:后台任务仍在执行,可轮询恢复。"})]})]})}),(0,i.jsx)(d.A,{xs:24,lg:8,children:(0,i.jsxs)(c.A,{size:"small",title:"warning 不是失败",children:[(0,i.jsx)(k,{children:"warning 用于提醒用户“文档已经生成,但建议复核”。例如必需事实没有在最佳来源角色中抽到、部分来源需要人工确认、格式或内容有优化建议。warning 会显示在草稿历史和校验详情中,并保留导出能力。"}),(0,i.jsx)(k,{children:"如果是明确阻断问题,例如正文包含临时图片生成 URL、出现“资料未提供”占位、真实 blockingIssues 未解决,则导出门禁仍会阻断 DOCX/PDF。"})]})}),(0,i.jsx)(d.A,{xs:24,lg:8,children:(0,i.jsxs)(c.A,{size:"small",title:"导出门禁规则",children:[(0,i.jsx)(k,{children:"门禁分为“真实阻断”和“复核建议”。系统不会因为普通 warning 简单禁止导出,但会在出现阻断级问题时保护交付质量。"}),(0,i.jsxs)("ul",{className:"list-disc pl-5 space-y-1",children:[(0,i.jsx)("li",{children:"Markdown/HTML 更适合快速预览和人工调整。"}),(0,i.jsx)("li",{children:"DOCX/PDF 会启用真实门禁检查。"}),(0,i.jsx)("li",{children:"草稿历史可保留多个版本,便于对比和再次导出。"})]})]})})]})}),(0,i.jsx)(c.A,{title:"生成资源和知识库的关系",children:(0,i.jsxs)(n.A,{gutter:[16,16],children:[(0,i.jsx)(d.A,{xs:24,md:12,children:(0,i.jsxs)(c.A,{size:"small",title:"生成资源自动回流知识库",children:[(0,i.jsx)(k,{children:"模型生成的图片、封面或后处理资源会登记到生成资源管理页,并自动回流到 knowledgeBase/生成资源 下完成索引。"}),(0,i.jsx)(k,{children:"后续文档可以继续检索和复用这些已生成资源,资源管理页也会展示入库状态。"})]})}),(0,i.jsx)(d.A,{xs:24,md:12,children:(0,i.jsxs)(c.A,{size:"small",title:"资源预览和坏图处理",children:[(0,i.jsx)(k,{children:"资源预览会从全局 generatedDocuments 目录解析文件,不依赖当前页面临时路径。图片下载会识别“image is generating”等占位响应,并校验 PNG/JPEG/WebP 字节,避免把占位文本当成图片保存。"}),(0,i.jsx)(k,{children:"如果预览失败,优先查看资源管理页中的文件路径、资源状态和原始生成记录。"})]})})]})}),(0,i.jsx)(c.A,{title:"文件角色处理类型大白话说明",children:(0,i.jsxs)(n.A,{gutter:[16,16],children:[(0,i.jsx)(d.A,{xs:24,md:12,children:(0,i.jsx)(c.A,{size:"small",title:"规则文件",children:(0,i.jsx)(k,{children:"用来告诉系统“必须怎么写、不能怎么写、按什么标准判断”。适合放评分办法、甲方编制要求、攻略写作要求、输出格式要求。生成时会优先作为约束使用。"})})}),(0,i.jsx)(d.A,{xs:24,md:12,children:(0,i.jsx)(c.A,{size:"small",title:"项目事实文件",children:(0,i.jsx)(k,{children:"用来告诉系统“真实情况是什么”。适合放项目概况、合同摘要、招标文件关键信息、游戏角色资料、产品资料。事实字段通常从这里抽取。"})})}),(0,i.jsx)(d.A,{xs:24,md:12,children:(0,i.jsx)(c.A,{size:"small",title:"表格数据",children:(0,i.jsx)(k,{children:"用来解析结构化数据。适合放 Excel、CSV、清单、计划表、评分表、推荐指数表。系统会读取 Sheet、表头、行列和来源范围。"})})}),(0,i.jsx)(d.A,{xs:24,md:12,children:(0,i.jsx)(c.A,{size:"small",title:"图纸文件",children:(0,i.jsx)(k,{children:"用来表达空间关系、路线、结构、站位或设计说明。可以是图纸目录、设计说明、路线示意、阵型图说明。没有 CAD 时也可以用文字图纸说明。"})})}),(0,i.jsx)(d.A,{xs:24,md:12,children:(0,i.jsx)(c.A,{size:"small",title:"规范文件",children:(0,i.jsx)(k,{children:"用来作为专业依据。适合放国家规范、行业标准、企业标准、攻略结构规范、质量标准。校验和生成时会把它当成依据。"})})}),(0,i.jsx)(d.A,{xs:24,md:12,children:(0,i.jsx)(c.A,{size:"small",title:"参考资料",children:(0,i.jsx)(k,{children:"只作为辅助阅读材料,不建议放关键事实。适合放图片来源、公开网页链接、背景资料、案例资料。系统可以参考,但不应把它当成强事实。"})})})]})}),(0,i.jsx)(c.A,{title:"推荐资料清单",children:(0,i.jsxs)(n.A,{gutter:[16,16],children:[(0,i.jsx)(d.A,{xs:24,md:8,children:(0,i.jsx)(c.A,{size:"small",title:"必备资料",children:(0,i.jsxs)("ul",{className:"list-disc pl-5",children:[(0,i.jsx)("li",{children:"项目事实文件"}),(0,i.jsx)("li",{children:"招标或编制规则"}),(0,i.jsx)("li",{children:"章节生成提示词"})]})})}),(0,i.jsx)(d.A,{xs:24,md:8,children:(0,i.jsx)(c.A,{size:"small",title:"强烈建议",children:(0,i.jsxs)("ul",{className:"list-disc pl-5",children:[(0,i.jsx)("li",{children:"表格数据"}),(0,i.jsx)("li",{children:"图纸说明"}),(0,i.jsx)("li",{children:"规范或企业标准"})]})})}),(0,i.jsx)(d.A,{xs:24,md:8,children:(0,i.jsx)(c.A,{size:"small",title:"导出前确认",children:(0,i.jsxs)("ul",{className:"list-disc pl-5",children:[(0,i.jsx)("li",{children:"无 error 校验"}),(0,i.jsx)("li",{children:"事实有来源"}),(0,i.jsx)("li",{children:"导出门禁通过"})]})})})]})}),(0,i.jsx)(c.A,{title:"生产级生成前检查清单",children:(0,i.jsxs)(n.A,{gutter:[16,16],children:[(0,i.jsx)(d.A,{xs:24,md:12,xl:6,children:(0,i.jsx)(c.A,{size:"small",title:"资料完整性",children:(0,i.jsxs)("ul",{className:"list-disc pl-5 space-y-1",children:[(0,i.jsx)("li",{children:"事实源、规则源、表格源、图片/图纸源分开绑定。"}),(0,i.jsx)("li",{children:"关键事实在知识库检索中可以搜索到。"}),(0,i.jsx)("li",{children:"表格有清晰表头,图片和图纸有说明文字。"}),(0,i.jsx)("li",{children:"只有必须指定资料时才维护高级优先证据。"})]})})}),(0,i.jsx)(d.A,{xs:24,md:12,xl:6,children:(0,i.jsx)(c.A,{size:"small",title:"角色配置",children:(0,i.jsxs)("ul",{className:"list-disc pl-5 space-y-1",children:[(0,i.jsx)("li",{children:"文件角色处理类型选对。"}),(0,i.jsx)("li",{children:"提示词角色执行类型选对。"}),(0,i.jsx)("li",{children:"项目角色配置排序符合生成流程。"}),(0,i.jsx)("li",{children:"生成后查看增强贡献,确认上下文和证据是否真实参与。"})]})})}),(0,i.jsx)(d.A,{xs:24,md:12,xl:6,children:(0,i.jsx)(c.A,{size:"small",title:"规范包",children:(0,i.jsxs)("ul",{className:"list-disc pl-5 space-y-1",children:[(0,i.jsx)("li",{children:"required fact 不要过度配置。"}),(0,i.jsx)("li",{children:"sourceRoleIds 只绑定真正应该提供该事实的角色。"}),(0,i.jsx)("li",{children:"gateRules 区分 error 和 warning。"})]})})}),(0,i.jsx)(d.A,{xs:24,md:12,xl:6,children:(0,i.jsx)(c.A,{size:"small",title:"交付检查",children:(0,i.jsxs)("ul",{className:"list-disc pl-5 space-y-1",children:[(0,i.jsx)("li",{children:"草稿历史记录状态合理。"}),(0,i.jsx)("li",{children:"warning 原因已经阅读。"}),(0,i.jsx)("li",{children:"导出文件打开正常,图片和表格可读。"})]})})})]})}),(0,i.jsx)(c.A,{title:"常见问题和处理建议",children:(0,i.jsx)(a.A,{items:[{key:"warning-export",label:"为什么生成完成后显示 warning,但仍然可以导出?",children:(0,i.jsx)(k,{children:"warning 表示文档已生成,但存在建议复核的问题,例如来源角色不完全匹配、某些事实需要人工确认或格式可优化。它不是失败,也不是导出阻断。只有真实 blockingIssues 或 error 级门禁问题才会阻断 DOCX/PDF 导出。"})},{key:"missing-facts",label:"为什么提示必需事实缺失?",children:(0,i.jsx)(k,{children:"优先检查文档规范包中的 factFields、sourceRoleIds、模板章节 requiredFacts 和文件角色绑定。很多情况下不是模型失败,而是资料没有被绑定到正确角色,或字段要求比资料实际内容更严格。"})},{key:"draft-duration",label:"草稿历史里的耗时怎么计算?",children:(0,i.jsx)(k,{children:"耗时使用生成记录的 createdAt 到 completedAt 计算;旧记录或未完成记录会使用 updatedAt 兜底。它用于判断本次生成链路整体成本,包括知识库检索、事实抽取、章节生成、资源处理、校验和格式化。"})},{key:"asset-index",label:"生成资源会如何进入知识库?",children:(0,i.jsx)(k,{children:"生成资源完成后会自动回流到 knowledgeBase/生成资源 并建立索引,便于后续模板继续复用。资源管理页会展示入库状态,错误资源可以删除后重新生成。"})},{key:"context-accuracy",label:"上下文召回会不会影响准确度?",children:(0,i.jsx)(k,{children:"上下文只作为当前项目的偏好、历史纠偏和连续性参考,不作为事实来源。生成和审查提示词都要求:如果上下文与知识库证据、模板要求或规范包冲突,以知识库证据和规范包为准。"})},{key:"priority-evidence",label:"什么时候需要维护高级优先证据?",children:(0,i.jsx)(k,{children:"日常不需要维护。只有当某章必须引用指定官方资料、图纸、表格,或自动检索结果不稳定时,才从知识库搜索页复制文件路径并填入章节高级优先证据。"})}]})}),(0,i.jsx)(a.A,{items:[{key:"prepare",label:e("guide.prepareTitle"),children:(0,i.jsx)(k,{children:e("guide.prepareContent")})},{key:"roles",label:e("guide.rolesTitle"),children:(0,i.jsx)(k,{children:e("guide.rolesContent")})},{key:"template",label:e("guide.templateTitle"),children:(0,i.jsx)(k,{children:e("guide.templateContent")})},{key:"generate",label:e("guide.generateTitle"),children:(0,i.jsx)(k,{children:e("guide.generateContent")})},{key:"qa",label:e("guide.qaTitle"),children:(0,i.jsx)(k,{children:e("guide.qaContent")})}]})]})}},34899:(e,s,l)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/guide",function(){return l(2548)}])}},e=>{e.O(0,[347,8787,4277,4833,5292,4427,8326,636,6593,8792],()=>e(e.s=34899)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[5207],{838:(e,t)=>{"use strict";t.A={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z"}}]},name:"down",theme:"outlined"}},4184:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>E});var r=s(65321),l=s(43220),a=s.n(l),i=s(97109),n=s(35292),c=s(17807),o=s(85114),u=s(85493),d=s(68787),h=s(33442),_=s(7576),m=s(48318),p=s(76506),y=s(11702),x=s(42700),j=s(84253),f=s(30486),w=s(32620),g=s(6578),A=s(14569),b=s.n(A);let{Paragraph:v}=n.A,C=["keyword","vector","rewrite","hybridBonus"],S=["keywordScore","bm25Score","vectorScore","rerankBoost","hybridScore"];function P(e){return"number"==typeof e?e.toFixed(2):"-"}function k(e,t,s){let r=e(t);return r===t?s:r}function E(){var e,t,s;let{message:l}=c.A.useApp(),n=(0,w.Vr)("knowledge"),[A,E]=(0,i.useState)(""),[I,R]=(0,i.useState)(!1),[N,L]=(0,i.useState)([]),[O,T]=(0,i.useState)(),[z,B]=(0,i.useState)(),[M,F]=(0,i.useState)(""),[D,V]=(0,i.useState)({keyword:1,vector:.9,rewrite:.72,hybridBonus:.35}),H=async e=>{await navigator.clipboard.writeText(e),l.success(n("copyPriorityEvidenceSuccess"))},W=async()=>{let e=A.trim();if(e){R(!0),F("");try{let t=await (0,g.W2)(e,{limit:10,weights:D});L(t.results),T(t.queryTimeMs),B(t.debug)}catch(e){L([]),F(e instanceof Error?e.message:n("searchFailed"))}finally{R(!1)}}};return(0,r.jsxs)("div",{className:"space-y-6 animateFadeIn",children:[(0,r.jsxs)("div",{className:"flex items-start justify-between gap-4",children:[(0,r.jsxs)("div",{children:[(0,r.jsx)("h1",{className:"pageTitle",children:n("searchTitle")}),(0,r.jsx)("p",{className:"pageDesc",children:n("searchDesc")})]}),(0,r.jsx)(a(),{href:"/documents",children:(0,r.jsx)(o.Ay,{children:n("goToDocuments")})})]}),(0,r.jsx)(u.A,{type:"info",showIcon:!0,message:n("autoSearchFirst"),description:n("autoSearchFirstDesc")}),(0,r.jsx)(d.A,{size:"small",children:(0,r.jsxs)(h.A.Compact,{className:"w-full",children:[(0,r.jsx)(_.A,{value:A,onChange:e=>E(e.target.value),onPressEnter:()=>{W()},placeholder:n("searchContentPlaceholder")}),(0,r.jsx)(o.Ay,{type:"primary",icon:(0,r.jsx)(f.A,{}),loading:I,onClick:()=>{W()},children:n("searchAction")})]})}),(0,r.jsx)(d.A,{size:"small",title:n("recallWeightTuning"),children:(0,r.jsx)(h.A,{wrap:!0,children:C.map(e=>(0,r.jsxs)("span",{children:[k(n,"weights.".concat(e),e)," ",(0,r.jsx)(m.A,{min:0,max:"hybridBonus"===e?2:5,step:"hybridBonus"===e?.05:.1,value:D[e],onChange:t=>V(s=>({...s,[e]:Number(null!=t?t:s[e])}))})]},e))})}),z&&(0,r.jsx)(d.A,{size:"small",title:n("debugPanel"),children:(0,r.jsxs)(p.A,{size:"small",column:2,bordered:!0,children:[(0,r.jsx)(p.A.Item,{label:n("originalQuery"),children:z.originalQuery}),(0,r.jsx)(p.A.Item,{label:n("reranker"),children:z.reranker}),(0,r.jsx)(p.A.Item,{label:n("rewrittenQueries"),span:2,children:(0,r.jsx)(h.A,{wrap:!0,children:null==(e=z.rewrittenQueries)?void 0:e.map(e=>(0,r.jsx)(y.A,{children:e},e))})}),(0,r.jsx)(p.A.Item,{label:n("recallCounts"),span:2,children:(0,r.jsx)(h.A,{wrap:!0,children:Object.entries(null!=(t=z.recallCounts)?t:{}).map(e=>{let[t,s]=e;return(0,r.jsxs)(y.A,{children:[k(n,"recallSources.".concat(t),t),": ",s]},t)})})}),(0,r.jsx)(p.A.Item,{label:n("recallWeights"),span:2,children:(0,r.jsx)(h.A,{wrap:!0,children:Object.entries(null!=(s=z.weights)?s:{}).map(e=>{let[t,s]=e;return(0,r.jsxs)(y.A,{children:[k(n,"weights.".concat(t),t),": ",s]},t)})})})]})}),(0,r.jsxs)(d.A,{size:"small",title:n("searchResults"),extra:"number"==typeof O?"".concat(O," ms"):void 0,children:[M?(0,r.jsx)(u.A,{type:"error",showIcon:!0,message:n("searchFailed"),description:M,className:"mb-4"}):null,I?(0,r.jsx)(x.A,{}):0===N.length?(0,r.jsx)(j.A,{description:n("noSearchResults")}):(0,r.jsx)("div",{className:b().searchResultList,children:N.map((e,t)=>{var s,l;return(0,r.jsxs)("div",{className:b().searchResultItem,children:[(0,r.jsxs)("div",{className:b().searchResultHeader,children:[(0,r.jsxs)(h.A,{size:8,wrap:!0,children:[(0,r.jsxs)(y.A,{children:[n("resultIndex")," ",t+1]}),(0,r.jsx)(y.A,{color:"hybrid"===e.source?"purple":"vector"===e.source?"blue":"green",children:k(n,"recallSources.".concat(null!=(s=e.source)?s:"keyword"),null!=(l=e.source)?l:"keyword")}),(0,r.jsx)(y.A,{children:k(n,"scopes.".concat(e.scope),e.scope)}),e.chunkKind&&(0,r.jsx)(y.A,{color:"geekblue",children:e.chunkKind}),e.rowRange&&(0,r.jsxs)(y.A,{color:"gold",children:[n("rowRange")," ",e.rowRange]}),e.sectionTitle&&(0,r.jsx)(y.A,{color:"cyan",children:e.sectionTitle})]}),(0,r.jsx)("strong",{children:P(e.score)})]}),(0,r.jsx)("div",{className:b().statusPath,children:(0,r.jsxs)(h.A,{size:8,wrap:!0,children:[(0,r.jsx)(a(),{href:"/knowledge/file-detail?relativePath=".concat(encodeURIComponent(e.filePath)),children:e.filePath}),"number"==typeof e.chunkIndex?" #".concat(e.chunkIndex):"",(0,r.jsx)(o.Ay,{size:"small",onClick:()=>{H(e.filePath)},children:n("copyAsPriorityEvidence")})]})}),(0,r.jsx)(v,{ellipsis:{rows:6,expandable:!0,symbol:n("expand")},className:b().searchContent,children:function(e,t){let s=[t.trim(),...t.split(/[\s,,。;;::、]+/u)].filter(Boolean).sort((e,t)=>t.length-e.length);if(0===s.length)return e;let l=RegExp("(".concat(s.map(e=>e.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&")).join("|"),")"),"giu");return e.split(l).map((e,t)=>s.some(t=>t.toLowerCase()===e.toLowerCase())?(0,r.jsx)("mark",{children:e},t):e)}(e.content,A)}),e.facets&&Object.keys(e.facets).length>0&&(0,r.jsx)("div",{className:b().statusMeta,children:Object.entries(e.facets).slice(0,8).map(e=>{let[t,s]=e;return(0,r.jsxs)("span",{children:[t," ",(0,r.jsx)("b",{children:Array.isArray(s)?s.join(", "):String(s)})]},t)})}),(0,r.jsx)("div",{className:b().statusMeta,children:S.map(t=>{var s;return(0,r.jsxs)("span",{children:[k(n,"scoreDetails.".concat(t),t)," ",(0,r.jsx)("b",{children:P(null==(s=e.scoreDetails)?void 0:s[t])})]},t)})})]},e.id)})})]})]})}},9208:(e,t,s)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/knowledge/search",function(){return s(4184)}])},14569:e=>{e.exports={featureLabel:"style_featureLabel__XFSTX",featureValue:"style_featureValue__I_wMP",filterInput:"style_filterInput__4_Elu",filterSelect:"style_filterSelect__vUBJ9",statusCard:"style_statusCard__H7Mee",statusSummary:"style_statusSummary__7KavF",statusSummaryText:"style_statusSummaryText__Shw3j",statusClearBtn:"style_statusClearBtn__uJ9bE",statusExpandBtn:"style_statusExpandBtn__HhgIj",statusFilters:"style_statusFilters__g_LbG",filterPill:"style_filterPill__1pjFW",filterPillActive:"style_filterPillActive___UZVi",statusPanel:"style_statusPanel__9arTu",statusEmpty:"style_statusEmpty__8LWzH",timelineList:"style_timelineList__dqJrz",timelineItem:"style_timelineItem__dbuL_",timelineStatusIcon:"style_timelineStatusIcon__SkRwb",timelinePercent:"style_timelinePercent__pEyH4",timelineRow:"style_timelineRow__EDOVa",timelineTitle:"style_timelineTitle__Yujr8",timelineClose:"style_timelineClose__Byx_9",timelineDetail:"style_timelineDetail__nALei",timelineDesc:"style_timelineDesc__FMjWE",timelinePath:"style_timelinePath__C9VQI",timelineMeta:"style_timelineMeta__u_pCn",timelineMetaTag:"style_timelineMetaTag__G3jF1",timelineExpandArrow:"style_timelineExpandArrow__xIBdF",timelineExpandArrowOpen:"style_timelineExpandArrowOpen__TWWDC",fileNameCell:"style_fileNameCell__EHsnt",folderName:"style_folderName__VhLXP",folderRow:"style_folderRow__d7k9S",searchResultList:"style_searchResultList__cVKZg",searchResultItem:"style_searchResultItem__boj6D",searchResultHeader:"style_searchResultHeader__meVdJ",searchContent:"style_searchContent__XbUVk",pdfPreviewStrip:"style_pdfPreviewStrip__94_eG",drawingPreview:"style_drawingPreview__lkk_L"}},30486:(e,t,s)=>{"use strict";s.d(t,{A:()=>n});var r=s(97109),l=s(58758),a=s(88483);function i(){return(i=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var s=arguments[t];for(var r in s)Object.prototype.hasOwnProperty.call(s,r)&&(e[r]=s[r])}return e}).apply(this,arguments)}let n=r.forwardRef((e,t)=>r.createElement(a.A,i({},e,{ref:t,icon:l.A})))},58758:(e,t)=>{"use strict";t.A={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z"}}]},name:"search",theme:"outlined"}},60470:(e,t,s)=>{"use strict";s.d(t,{A:()=>n});var r=s(97109),l=s(838),a=s(88483);function i(){return(i=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var s=arguments[t];for(var r in s)Object.prototype.hasOwnProperty.call(s,r)&&(e[r]=s[r])}return e}).apply(this,arguments)}let n=r.forwardRef((e,t)=>r.createElement(a.A,i({},e,{ref:t,icon:l.A})))},73458:(e,t)=>{"use strict";t.A={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M257.7 752c2 0 4-.2 6-.5L431.9 722c2-.4 3.9-1.3 5.3-2.8l423.9-423.9a9.96 9.96 0 000-14.1L694.9 114.9c-1.9-1.9-4.4-2.9-7.1-2.9s-5.2 1-7.1 2.9L256.8 538.8c-1.5 1.5-2.4 3.3-2.8 5.3l-29.5 168.2a33.5 33.5 0 009.4 29.8c6.6 6.4 14.9 9.9 23.8 9.9zm67.4-174.4L687.8 215l73.3 73.3-362.7 362.6-88.9 15.7 15.6-89zM880 836H144c-17.7 0-32 14.3-32 32v36c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-36c0-17.7-14.3-32-32-32z"}}]},name:"edit",theme:"outlined"}},99650:(e,t,s)=>{"use strict";s.d(t,{A:()=>n});var r=s(97109),l=s(73458),a=s(88483);function i(){return(i=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var s=arguments[t];for(var r in s)Object.prototype.hasOwnProperty.call(s,r)&&(e[r]=s[r])}return e}).apply(this,arguments)}let n=r.forwardRef((e,t)=>r.createElement(a.A,i({},e,{ref:t,icon:l.A})))}},e=>{e.O(0,[347,8787,4277,7889,4833,7576,2884,5292,6506,5938,6578,636,6593,8792],()=>e(e.s=9208)),_N_E=e.O()}]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4046],{22708:(e,l,s)=>{"use strict";s.r(l),s.d(l,{default:()=>U});var o=s(65321),a=s(97109),r=s(32620),i=s(17807),t=s(88762),n=s(68787),c=s(85114),d=s(2256),m=s(38770),h=s(33442),p=s(26171),x=s(11702),v=s(85493),y=s(57271),u=s(7576),j=s(48318),g=s(34052),A=s(63455),b=s(56985),f=s(54746),S=s(29071),w=s(59188),z=s(4216),C=s(13114),k=s(99650),T=s(58209),B=s(76981),I=s(61825),K=s(6578);let P=[{label:"OpenAI 兼容",value:"openai"},{label:"Anthropic",value:"anthropic"},{label:"Google",value:"google"},{label:"Ollama",value:"ollama"},{label:"OpenRouter",value:"openrouter"}],E=[{key:"reader",labelKey:"models.tierReader",descKey:"models.tierReaderDesc"},{key:"reasoning",labelKey:"models.tierReasoning",descKey:"models.tierReasoningDesc"},{key:"action",labelKey:"models.tierAction",descKey:"models.tierActionDesc"}],N=[{key:"imageGeneration",label:"图片生成"},{key:"imageUnderstanding",label:"图片理解"},{key:"fileUnderstanding",label:"文件理解"},{key:"audio",label:"音频能力"},{key:"video",label:"视频能力"}];function U(){let e=(0,r.Vr)(),{message:l}=i.A.useApp(),[s,U]=(0,a.useState)(!0),[_,O]=(0,a.useState)([]),[R,F]=(0,a.useState)(null),[D,W]=(0,a.useState)({provider:"transformers-local",model:"BAAI/bge-small-zh-v1.5",dimensions:512}),[H,M]=(0,a.useState)(!1),[G,L]=(0,a.useState)(!1),[X,Z]=(0,a.useState)(null),[V,q]=(0,a.useState)(null),[J,Q]=(0,a.useState)({}),[Y,$]=(0,a.useState)(!1),[ee,el]=(0,a.useState)(!1),[es,eo]=(0,a.useState)(""),[ea,er]=(0,a.useState)(""),[ei,et]=(0,a.useState)(""),[en,ec]=(0,a.useState)(""),[ed,em]=(0,a.useState)("openai"),[eh,ep]=(0,a.useState)(!1),[ex,ev]=(0,a.useState)({}),[ey,eu]=(0,a.useState)(!1),ej=async()=>{U(!0);try{let[e,l,s]=await Promise.all([(0,K.Z3)().catch(()=>[]),(0,K.zr)().catch(()=>null),(0,K.II)().catch(()=>({provider:"transformers-local",model:"BAAI/bge-small-zh-v1.5",dimensions:512}))]);O(e),F(l),W(s)}catch(s){l.error(e("common.error"))}finally{U(!1)}};(0,a.useEffect)(()=>{ej()},[]);let eg=async e=>{el(!0),eo(e.name),er(e.name),et(""),ec(e.baseUrl||""),em(e.protocol||e.detectedProtocol||"openai"),ev(e.capabilities||{});try{let l=await (0,K.Bh)(e.name);et(l.apiKey?"••••••••":""),ec(l.baseUrl||""),ev(l.capabilities||{})}catch(e){}$(!0)},eA=async()=>{if(ea.trim()){eu(!0);try{let s=ee&&ei.includes("•")?void 0:ei||void 0;await (0,K._m)(ea.trim(),{oldName:ee?es:void 0,apiKey:s,baseUrl:en||void 0,protocol:ed,directEndpoint:eh,capabilities:ex}),$(!1),await ej(),l.success(e("common.success"))}catch(s){l.error(e("common.error"))}finally{eu(!1)}}},eb=async s=>{try{await (0,K.h1)(s),await ej(),l.success(e("common.success"))}catch(s){l.error(e("common.error"))}},ef=async s=>{q(s);try{let o=await (0,K.bZ)(s);Q(e=>({...e,[s]:o.success})),l[o.success?"success":"error"](o.success?e("models.connected"):e("models.connectionFailed"))}catch(e){Q(e=>({...e,[s]:!1}))}finally{q(null)}},eS=async(s,o)=>{if(!R)return;let a={...R},r=a[s];if(!o){r.active="",F(a);try{await (0,K.aP)(a)}catch(s){l.error(e("common.error"))}return}let[i,t]=o.includes(":")?o.split(":"):[o,o];r.active=t,r.list.some(e=>e.name===t&&e.provider===i)||r.list.push({name:t,provider:i}),F(a);try{await (0,K.aP)(a)}catch(s){l.error(e("common.error"))}},ew=async()=>{M(!0);try{let s=await (0,K.dd)(D);W(s),Z(null),l.success(e("common.success"))}catch(s){l.error(e("common.error"))}finally{M(!1)}},ez=async()=>{L(!0);try{let s=await (0,K.u6)();Z(s.success),l[s.success?"success":"error"](s.message||(s.success?e("models.connected"):e("models.connectionFailed")))}catch(e){Z(!1)}finally{L(!1)}};return s?(0,o.jsxs)("div",{className:"space-y-5 animateFadeIn",children:[(0,o.jsx)(t.A,{active:!0,title:!0,paragraph:{rows:1}}),(0,o.jsx)(n.A,{size:"small",children:(0,o.jsx)(t.A,{active:!0,paragraph:{rows:6}})}),(0,o.jsx)(n.A,{size:"small",children:(0,o.jsx)(t.A,{active:!0,paragraph:{rows:4}})}),(0,o.jsx)(n.A,{size:"small",children:(0,o.jsx)(t.A,{active:!0,paragraph:{rows:3}})})]}):(0,o.jsxs)("div",{className:"space-y-5 animateFadeIn",children:[(0,o.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",flexWrap:"wrap",gap:12},children:[(0,o.jsxs)("div",{children:[(0,o.jsx)("h1",{className:"pageTitle",children:e("models.title")}),(0,o.jsx)("p",{className:"pageDesc",children:e("models.description")})]}),(0,o.jsx)(c.Ay,{type:"primary",icon:(0,o.jsx)(f.A,{}),onClick:()=>{el(!1),eo(""),er(""),et(""),ec(""),em("openai"),ep(!1),ev({}),$(!0)},children:e("models.addModel")})]}),(0,o.jsx)(n.A,{size:"small",title:"".concat(e("models.modelList")," (").concat(_.length,")"),children:0===_.length?(0,o.jsx)("span",{style:{color:"var(--colorTextSecondary)",fontSize:12},children:e("models.noProviders")}):(0,o.jsx)(d.A,{gutter:[12,12],children:_.map((l,s)=>(0,o.jsx)(m.A,{xs:24,sm:12,lg:8,xl:6,children:(0,o.jsxs)(n.A,{size:"small",hoverable:!0,style:{height:"100%"},children:[(0,o.jsxs)("div",{style:{display:"flex",alignItems:"flex-start",justifyContent:"space-between",gap:8,marginBottom:8,minWidth:0},children:[(0,o.jsxs)("div",{style:{minWidth:0,flex:1},children:[(0,o.jsx)("div",{style:{fontWeight:600,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:l.name}),(0,o.jsxs)("div",{style:{fontSize:12,color:"var(--colorTextSecondary)"},children:[(0,o.jsx)(S.A,{})," ",l.protocol||l.detectedProtocol||"openai"]})]}),(0,o.jsxs)(h.A,{size:2,children:[(0,o.jsx)(c.Ay,{size:"small",loading:V===l.name,onClick:()=>{ef(l.name)},icon:!0===J[l.name]?(0,o.jsx)(w.A,{style:{color:"var(--colorOk)"}}):!1===J[l.name]?(0,o.jsx)(z.A,{style:{color:"var(--colorDanger)"}}):(0,o.jsx)(C.A,{})}),(0,o.jsx)(c.Ay,{size:"small",icon:(0,o.jsx)(k.A,{}),onClick:()=>{eg(l)}}),(0,o.jsx)(p.A,{title:e("models.deleteProviderConfirm"),onConfirm:()=>{eb(l.name)},children:(0,o.jsx)(c.Ay,{size:"small",danger:!0,icon:(0,o.jsx)(T.A,{})})})]})]}),(0,o.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:4},children:[(0,o.jsxs)("span",{style:{fontSize:12,color:"var(--colorTextSecondary)"},children:[(0,o.jsx)(B.A,{})," ",l.hasApiKey?"••••••••":"—"]}),l.baseUrl&&(0,o.jsxs)("span",{style:{fontSize:12,color:"var(--colorTextSecondary)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},title:l.baseUrl,children:[(0,o.jsx)(I.A,{})," ",l.baseUrl]}),(0,o.jsx)(h.A,{size:4,wrap:!0,children:N.filter(e=>{var s;return null==(s=l.capabilities)?void 0:s[e.key]}).map(e=>(0,o.jsx)(x.A,{color:"purple",style:{margin:0,fontSize:10,lineHeight:"16px"},children:e.label},e.key))})]})]})},l.name))})}),(0,o.jsxs)(n.A,{size:"small",title:e("models.embeddingConfig"),children:[(0,o.jsx)(v.A,{type:"info",showIcon:!0,message:e("models.embeddingHint"),style:{marginBottom:16}}),(0,o.jsxs)(d.A,{gutter:[12,12],children:[(0,o.jsxs)(m.A,{xs:24,sm:8,children:[(0,o.jsx)("div",{style:{fontSize:12,marginBottom:4,color:"var(--colorTextSecondary)"},children:e("models.embeddingProvider")}),(0,o.jsx)(y.A,{value:D.provider,style:{width:"100%"},options:[{label:"本地语义模型(推荐)",value:"transformers-local"},{label:"外部 Embedding(高级)",value:"openai-compatible"}],onChange:e=>W(l=>({...l,provider:e,model:"transformers-local"===e?l.model||"BAAI/bge-small-zh-v1.5":l.model,dimensions:"transformers-local"===e?512:l.dimensions||1024}))})]}),"openai-compatible"===D.provider&&(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(m.A,{xs:24,sm:8,children:[(0,o.jsx)("div",{style:{fontSize:12,marginBottom:4,color:"var(--colorTextSecondary)"},children:"Base URL"}),(0,o.jsx)(u.A,{value:D.baseUrl,onChange:e=>W(l=>({...l,baseUrl:e.target.value})),placeholder:"http://localhost:11434/v1"})]}),(0,o.jsxs)(m.A,{xs:24,sm:8,children:[(0,o.jsx)("div",{style:{fontSize:12,marginBottom:4,color:"var(--colorTextSecondary)"},children:e("models.model")}),(0,o.jsx)(u.A,{value:D.model,onChange:e=>W(l=>({...l,model:e.target.value})),placeholder:"bge-m3"})]}),(0,o.jsxs)(m.A,{xs:24,sm:8,children:[(0,o.jsx)("div",{style:{fontSize:12,marginBottom:4,color:"var(--colorTextSecondary)"},children:e("models.apiKey")}),(0,o.jsx)(u.A.Password,{value:D.apiKey,onFocus:()=>{var e;(null==(e=D.apiKey)?void 0:e.includes("•"))&&W(e=>({...e,apiKey:""}))},onChange:e=>W(l=>({...l,apiKey:e.target.value})),placeholder:e("models.optional")}),D.hasApiKey&&(0,o.jsx)("div",{style:{fontSize:11,color:"var(--colorTextSecondary)",marginTop:4},children:e("models.embeddingApiKeyHint")})]})]}),"transformers-local"===D.provider&&(0,o.jsxs)(m.A,{xs:24,sm:8,children:[(0,o.jsx)("div",{style:{fontSize:12,marginBottom:4,color:"var(--colorTextSecondary)"},children:e("models.model")}),(0,o.jsx)(u.A,{value:D.model,onChange:e=>W(l=>({...l,model:e.target.value})),placeholder:"BAAI/bge-small-zh-v1.5"})]}),(0,o.jsxs)(m.A,{xs:24,sm:8,children:[(0,o.jsx)("div",{style:{fontSize:12,marginBottom:4,color:"var(--colorTextSecondary)"},children:e("models.dimensions")}),(0,o.jsx)(j.A,{style:{width:"100%"},min:1,value:D.dimensions,onChange:e=>W(l=>({...l,dimensions:Number(e||("transformers-local"===l.provider?512:1024))}))})]}),(0,o.jsxs)(m.A,{xs:24,sm:8,children:[(0,o.jsx)("div",{style:{fontSize:12,marginBottom:4,color:"var(--colorTextSecondary)"},children:e("models.status")}),(0,o.jsxs)(h.A,{children:[(0,o.jsx)(x.A,{color:"blue",children:"transformers-local"===D.provider?"本地语义模型":e("models.openAICompatible")}),!0===X&&(0,o.jsx)(x.A,{color:"success",children:e("models.connected")}),!1===X&&(0,o.jsx)(x.A,{color:"error",children:e("models.connectionFailed")})]})]})]}),(0,o.jsxs)(h.A,{style:{marginTop:16},children:[(0,o.jsx)(c.Ay,{type:"primary",loading:H,onClick:()=>{ew()},children:e("models.saveEmbedding")}),(0,o.jsx)(c.Ay,{loading:G,onClick:()=>{ez()},children:e("models.testEmbedding")})]})]}),R&&(0,o.jsx)(n.A,{size:"small",title:e("models.modelTiers"),children:(0,o.jsx)(d.A,{gutter:[12,12],children:E.map(s=>{var a;let{key:r,labelKey:i,descKey:t}=s,c=R[r],d=c.list.map(e=>({label:"".concat(e.provider," / ").concat(e.name),value:"".concat(e.provider,":").concat(e.name)})),h=_.filter(e=>!c.list.some(l=>l.provider===e.name)).map(e=>({label:e.name,value:"".concat(e.name,":").concat(e.name)}));return(0,o.jsx)(m.A,{xs:24,lg:8,children:(0,o.jsxs)(n.A,{size:"small",title:(0,o.jsx)("span",{style:{fontSize:13},children:e(i)}),children:[(0,o.jsx)("div",{style:{fontSize:12,color:"var(--colorTextSecondary)",marginBottom:8},children:e(t)}),(0,o.jsx)(y.A,{value:c.active?"".concat((null==(a=c.list.find(e=>e.name===c.active))?void 0:a.provider)||"",":").concat(c.active):void 0,onChange:e=>{eS(r,e)},allowClear:!0,placeholder:e("models.selectModelPlaceholder"),style:{width:"100%"},options:[...d,...h]}),c.list.length>0&&(0,o.jsx)("div",{style:{display:"flex",flexWrap:"wrap",gap:4,marginTop:8},children:c.list.map(s=>(0,o.jsxs)(x.A,{color:s.name===c.active?"blue":void 0,closable:!0,onClose:()=>{var o,a;let i={...R},t=i[r];t.list=t.list.filter(e=>e.name!==s.name||e.provider!==s.provider),t.active===s.name&&(t.active=null!=(a=null==(o=t.list[0])?void 0:o.name)?a:""),F(i),(0,K.aP)(i).catch(()=>l.error(e("common.error")))},style:{margin:0,fontSize:11},children:[s.provider,"/",s.name]},"".concat(s.provider,":").concat(s.name)))})]})},r)})})}),(0,o.jsx)(g.A,{title:ee?e("models.editModel"):e("models.addModel"),open:Y,onClose:()=>$(!1),width:800,maskClosable:!1,style:{borderRadius:"12px 0 0 12px"},styles:{body:{padding:"16px 24px"},header:{borderRadius:"12px 0 0 0",borderBottom:"1px solid var(--colorBorderSecondary)"}},extra:(0,o.jsx)(c.Ay,{type:"primary",loading:ey,onClick:()=>{eA()},children:e("common.save")}),children:(0,o.jsxs)(A.A,{layout:"vertical",children:[(0,o.jsx)(A.A.Item,{label:e("models.modelName"),children:(0,o.jsx)(u.A,{value:ea,onChange:e=>er(e.target.value),placeholder:e("models.modelNamePlaceholder")})}),(0,o.jsx)(A.A.Item,{label:e("models.apiKey"),help:ee?e("models.apiKeyEditHint"):void 0,children:(0,o.jsx)(u.A.Password,{value:ei,onFocus:()=>{ee&&ei.includes("•")&&et("")},onChange:e=>et(e.target.value),placeholder:ee?e("models.apiKeyEditPlaceholder"):"sk-..."})}),(0,o.jsx)(A.A.Item,{label:e("models.baseUrl"),children:(0,o.jsx)(u.A,{value:en,onChange:e=>ec(e.target.value),placeholder:"https://api.openai.com/v1"})}),(0,o.jsx)(A.A.Item,{label:e("models.protocol"),children:(0,o.jsx)(y.A,{value:ed,onChange:em,options:P})}),(0,o.jsx)(A.A.Item,{label:"直连端点",children:(0,o.jsx)(b.A,{checked:eh,onChange:e=>ep(e.target.checked),children:"Base URL 是完整接口地址"})}),(0,o.jsx)(A.A.Item,{label:"多模态能力",children:(0,o.jsx)(b.A.Group,{value:N.filter(e=>ex[e.key]).map(e=>e.key),options:N.map(e=>({label:e.label,value:e.key})),onChange:e=>ev(Object.fromEntries(N.map(l=>[l.key,e.includes(l.key)])))})})]})})]})}},77305:(e,l,s)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/models",function(){return s(22708)}])}},e=>{e.O(0,[347,8787,4277,7889,4833,7271,7576,9144,6985,3455,4052,5938,9773,6578,636,6593,8792],()=>e(e.s=77305)),_N_E=e.O()}]);
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4046],{22708:(e,l,s)=>{"use strict";s.r(l),s.d(l,{default:()=>U});var o=s(65321),a=s(97109),r=s(32620),i=s(17807),t=s(88762),n=s(68787),c=s(85114),d=s(2256),m=s(38770),h=s(33442),p=s(26171),x=s(11702),y=s(85493),v=s(57271),u=s(7576),j=s(48318),g=s(34052),A=s(63455),f=s(56985),b=s(54746),S=s(29071),w=s(59188),z=s(4216),k=s(13114),C=s(99650),B=s(58209),I=s(76981),T=s(61825),K=s(6578);let P=[{label:"OpenAI 兼容",value:"openai"},{label:"Anthropic",value:"anthropic"},{label:"Google",value:"google"},{label:"Ollama",value:"ollama"},{label:"OpenRouter",value:"openrouter"}],E=[{key:"reader",labelKey:"models.tierReader",descKey:"models.tierReaderDesc"},{key:"reasoning",labelKey:"models.tierReasoning",descKey:"models.tierReasoningDesc"},{key:"action",labelKey:"models.tierAction",descKey:"models.tierActionDesc"}],N=[{key:"imageGeneration",label:"图片生成"},{key:"imageUnderstanding",label:"图片理解"},{key:"fileUnderstanding",label:"文件理解"},{key:"audio",label:"音频能力"},{key:"video",label:"视频能力"}];function U(){let e=(0,r.Vr)(),{message:l}=i.A.useApp(),[s,U]=(0,a.useState)(!0),[_,O]=(0,a.useState)([]),[R,F]=(0,a.useState)(null),[H,D]=(0,a.useState)({provider:"transformers-local",model:"BAAI/bge-small-zh-v1.5",dimensions:512}),[W,M]=(0,a.useState)(!1),[G,L]=(0,a.useState)(!1),[X,Z]=(0,a.useState)(null),[V,q]=(0,a.useState)(null),[J,Q]=(0,a.useState)({}),[Y,$]=(0,a.useState)(!1),[ee,el]=(0,a.useState)(!1),[es,eo]=(0,a.useState)(""),[ea,er]=(0,a.useState)(""),[ei,et]=(0,a.useState)(""),[en,ec]=(0,a.useState)(""),[ed,em]=(0,a.useState)("openai"),[eh,ep]=(0,a.useState)(!1),[ex,ey]=(0,a.useState)({}),[ev,eu]=(0,a.useState)(!1),ej=async()=>{U(!0);try{let[e,l,s]=await Promise.all([(0,K.Z3)().catch(()=>[]),(0,K.zr)().catch(()=>null),(0,K.II)().catch(()=>({provider:"transformers-local",model:"BAAI/bge-small-zh-v1.5",dimensions:512}))]);O(e),F(l),D(s)}catch(s){l.error(e("common.error"))}finally{U(!1)}};(0,a.useEffect)(()=>{ej()},[]);let eg=async e=>{el(!0),eo(e.name),er(e.name),et(""),ec(e.baseUrl||""),em(e.protocol||e.detectedProtocol||"openai"),ey(e.capabilities||{});try{let l=await (0,K.Bh)(e.name);et(l.apiKey?"••••••••":""),ec(l.baseUrl||""),ey(l.capabilities||{})}catch(e){}$(!0)},eA=async()=>{if(ea.trim()){eu(!0);try{let s=ee&&ei.includes("•")?void 0:ei||void 0;await (0,K._m)(ea.trim(),{oldName:ee?es:void 0,apiKey:s,baseUrl:en||void 0,protocol:ed,directEndpoint:eh,capabilities:ex}),$(!1),await ej(),l.success(e("common.success"))}catch(s){l.error(e("common.error"))}finally{eu(!1)}}},ef=async s=>{try{await (0,K.h1)(s),await ej(),l.success(e("common.success"))}catch(s){l.error(e("common.error"))}},eb=async s=>{q(s);try{let o=await (0,K.bZ)(s);Q(e=>({...e,[s]:o.success})),l[o.success?"success":"error"](o.success?e("models.connected"):e("models.connectionFailed"))}catch(e){Q(e=>({...e,[s]:!1}))}finally{q(null)}},eS=async(s,o)=>{if(!R)return;let a={...R},r=a[s];if(!o){r.active="",F(a);try{await (0,K.aP)(a)}catch(s){l.error(e("common.error"))}return}let[i,t]=o.includes(":")?o.split(":"):[o,o];r.active=t,r.list.some(e=>e.name===t&&e.provider===i)||r.list.push({name:t,provider:i}),F(a);try{await (0,K.aP)(a)}catch(s){l.error(e("common.error"))}},ew=async()=>{M(!0);try{let s=await (0,K.dd)(H);D(s),Z(null),l.success(e("common.success"))}catch(s){l.error(e("common.error"))}finally{M(!1)}},ez=async()=>{L(!0);try{let s=await (0,K.u6)();Z(s.success),l[s.success?"success":"error"](s.message||(s.success?e("models.connected"):e("models.connectionFailed")))}catch(e){Z(!1)}finally{L(!1)}};return s?(0,o.jsxs)("div",{className:"space-y-5 animateFadeIn",children:[(0,o.jsx)(t.A,{active:!0,title:!0,paragraph:{rows:1}}),(0,o.jsx)(n.A,{size:"small",children:(0,o.jsx)(t.A,{active:!0,paragraph:{rows:6}})}),(0,o.jsx)(n.A,{size:"small",children:(0,o.jsx)(t.A,{active:!0,paragraph:{rows:4}})}),(0,o.jsx)(n.A,{size:"small",children:(0,o.jsx)(t.A,{active:!0,paragraph:{rows:3}})})]}):(0,o.jsxs)("div",{className:"space-y-5 animateFadeIn",children:[(0,o.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",flexWrap:"wrap",gap:12},children:[(0,o.jsxs)("div",{children:[(0,o.jsx)("h1",{className:"pageTitle",children:e("models.title")}),(0,o.jsx)("p",{className:"pageDesc",children:e("models.description")})]}),(0,o.jsx)(c.Ay,{type:"primary",icon:(0,o.jsx)(b.A,{}),onClick:()=>{el(!1),eo(""),er(""),et(""),ec(""),em("openai"),ep(!1),ey({}),$(!0)},children:e("models.addModel")})]}),(0,o.jsx)(n.A,{size:"small",title:"".concat(e("models.modelList")," (").concat(_.length,")"),children:0===_.length?(0,o.jsx)("span",{style:{color:"var(--colorTextSecondary)",fontSize:12},children:e("models.noProviders")}):(0,o.jsx)(d.A,{gutter:[12,12],children:_.map((l,s)=>(0,o.jsx)(m.A,{xs:24,sm:12,lg:8,xl:6,children:(0,o.jsxs)(n.A,{size:"small",hoverable:!0,style:{height:"100%"},children:[(0,o.jsxs)("div",{style:{display:"flex",alignItems:"flex-start",justifyContent:"space-between",gap:8,marginBottom:8,minWidth:0},children:[(0,o.jsxs)("div",{style:{minWidth:0,flex:1},children:[(0,o.jsx)("div",{style:{fontWeight:600,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:l.name}),(0,o.jsxs)("div",{style:{fontSize:12,color:"var(--colorTextSecondary)"},children:[(0,o.jsx)(S.A,{})," ",l.protocol||l.detectedProtocol||"openai"]})]}),(0,o.jsxs)(h.A,{size:2,children:[(0,o.jsx)(c.Ay,{size:"small",loading:V===l.name,onClick:()=>{eb(l.name)},icon:!0===J[l.name]?(0,o.jsx)(w.A,{style:{color:"var(--colorOk)"}}):!1===J[l.name]?(0,o.jsx)(z.A,{style:{color:"var(--colorDanger)"}}):(0,o.jsx)(k.A,{})}),(0,o.jsx)(c.Ay,{size:"small",icon:(0,o.jsx)(C.A,{}),onClick:()=>{eg(l)}}),(0,o.jsx)(p.A,{title:e("models.deleteProviderConfirm"),onConfirm:()=>{ef(l.name)},children:(0,o.jsx)(c.Ay,{size:"small",danger:!0,icon:(0,o.jsx)(B.A,{})})})]})]}),(0,o.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:4},children:[(0,o.jsxs)("span",{style:{fontSize:12,color:"var(--colorTextSecondary)"},children:[(0,o.jsx)(I.A,{})," ",l.hasApiKey?"••••••••":"—"]}),l.baseUrl&&(0,o.jsxs)("span",{style:{fontSize:12,color:"var(--colorTextSecondary)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},title:l.baseUrl,children:[(0,o.jsx)(T.A,{})," ",l.baseUrl]}),(0,o.jsx)(h.A,{size:4,wrap:!0,children:N.filter(e=>{var s;return null==(s=l.capabilities)?void 0:s[e.key]}).map(e=>(0,o.jsx)(x.A,{color:"purple",style:{margin:0,fontSize:10,lineHeight:"16px"},children:e.label},e.key))})]})]})},l.name))})}),(0,o.jsxs)(n.A,{size:"small",title:e("models.embeddingConfig"),children:[(0,o.jsx)(y.A,{type:"info",showIcon:!0,message:e("models.embeddingHint"),style:{marginBottom:16}}),(0,o.jsxs)(d.A,{gutter:[12,12],children:[(0,o.jsxs)(m.A,{xs:24,sm:8,children:[(0,o.jsx)("div",{style:{fontSize:12,marginBottom:4,color:"var(--colorTextSecondary)"},children:e("models.embeddingProvider")}),(0,o.jsx)(v.A,{value:H.provider,style:{width:"100%"},options:[{label:"本地语义模型(推荐)",value:"transformers-local"},{label:"外部 Embedding(高级)",value:"openai-compatible"}],onChange:e=>D(l=>({...l,provider:e,model:"transformers-local"===e?l.model||"BAAI/bge-small-zh-v1.5":l.model,dimensions:"transformers-local"===e?512:l.dimensions||1024}))})]}),"openai-compatible"===H.provider&&(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(m.A,{xs:24,sm:8,children:[(0,o.jsx)("div",{style:{fontSize:12,marginBottom:4,color:"var(--colorTextSecondary)"},children:"Base URL"}),(0,o.jsx)(u.A,{value:H.baseUrl,onChange:e=>D(l=>({...l,baseUrl:e.target.value})),placeholder:"http://localhost:11434/v1"})]}),(0,o.jsxs)(m.A,{xs:24,sm:8,children:[(0,o.jsx)("div",{style:{fontSize:12,marginBottom:4,color:"var(--colorTextSecondary)"},children:e("models.model")}),(0,o.jsx)(u.A,{value:H.model,onChange:e=>D(l=>({...l,model:e.target.value})),placeholder:"bge-m3"})]}),(0,o.jsxs)(m.A,{xs:24,sm:8,children:[(0,o.jsx)("div",{style:{fontSize:12,marginBottom:4,color:"var(--colorTextSecondary)"},children:e("models.apiKey")}),(0,o.jsx)(u.A.Password,{value:H.apiKey,onFocus:()=>{var e;(null==(e=H.apiKey)?void 0:e.includes("•"))&&D(e=>({...e,apiKey:""}))},onChange:e=>D(l=>({...l,apiKey:e.target.value})),placeholder:e("models.optional")}),H.hasApiKey&&(0,o.jsx)("div",{style:{fontSize:11,color:"var(--colorTextSecondary)",marginTop:4},children:e("models.embeddingApiKeyHint")})]})]}),"transformers-local"===H.provider&&(0,o.jsxs)(m.A,{xs:24,sm:8,children:[(0,o.jsx)("div",{style:{fontSize:12,marginBottom:4,color:"var(--colorTextSecondary)"},children:e("models.model")}),(0,o.jsx)(u.A,{value:H.model,onChange:e=>D(l=>({...l,model:e.target.value})),placeholder:"BAAI/bge-small-zh-v1.5"})]}),(0,o.jsxs)(m.A,{xs:24,sm:8,children:[(0,o.jsx)("div",{style:{fontSize:12,marginBottom:4,color:"var(--colorTextSecondary)"},children:e("models.dimensions")}),(0,o.jsx)(j.A,{style:{width:"100%"},min:1,value:H.dimensions,onChange:e=>D(l=>({...l,dimensions:Number(e||("transformers-local"===l.provider?512:1024))}))})]}),(0,o.jsxs)(m.A,{xs:24,sm:8,children:[(0,o.jsx)("div",{style:{fontSize:12,marginBottom:4,color:"var(--colorTextSecondary)"},children:e("models.status")}),(0,o.jsxs)(h.A,{children:[(0,o.jsx)(x.A,{color:"blue",children:"transformers-local"===H.provider?"本地语义模型":e("models.openAICompatible")}),!0===X&&(0,o.jsx)(x.A,{color:"success",children:e("models.connected")}),!1===X&&(0,o.jsx)(x.A,{color:"error",children:e("models.connectionFailed")})]})]})]}),(0,o.jsxs)(h.A,{style:{marginTop:16},children:[(0,o.jsx)(c.Ay,{type:"primary",loading:W,onClick:()=>{ew()},children:e("models.saveEmbedding")}),(0,o.jsx)(c.Ay,{loading:G,onClick:()=>{ez()},children:e("models.testEmbedding")})]})]}),R&&(0,o.jsx)(n.A,{size:"small",title:e("models.modelTiers"),children:(0,o.jsx)(d.A,{gutter:[12,12],children:E.map(l=>{let{key:s,labelKey:a,descKey:r}=l,i=R[s],t=i.list.map(e=>({label:"".concat(e.provider," / ").concat(e.name),value:"".concat(e.provider,":").concat(e.name)})),c=_.filter(e=>!i.list.some(l=>l.provider===e.name)).map(e=>({label:e.name,value:"".concat(e.name,":").concat(e.name)})),d=i.active?i.list.find(e=>e.name===i.active):null;return(0,o.jsx)(m.A,{xs:24,lg:8,children:(0,o.jsxs)(n.A,{size:"small",title:(0,o.jsx)("span",{style:{fontSize:14},children:e(a)}),style:{height:"100%"},children:[(0,o.jsx)("div",{style:{fontSize:12,color:"var(--colorTextSecondary)",marginBottom:8,lineHeight:1.5},children:e(r)}),(0,o.jsx)(v.A,{value:i.active?"".concat((null==d?void 0:d.provider)||"",":").concat(i.active):void 0,onChange:e=>{eS(s,e)},allowClear:!0,placeholder:e("models.selectModelPlaceholder"),style:{width:"100%"},options:[...t,...c]}),d&&(()=>{let e=_.find(e=>e.name===d.provider);return(0,o.jsxs)("div",{style:{marginTop:12,padding:"8px 12px",background:"var(--colorBgElevated)",borderRadius:6,border:"1px solid var(--colorBorderSecondary)",display:"flex",alignItems:"center",gap:8},children:[(0,o.jsx)(k.A,{style:{color:"var(--colorAccent)",fontSize:14,flexShrink:0}}),(0,o.jsx)("span",{style:{fontSize:12,fontWeight:500,flex:1,minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:d.provider}),(null==e?void 0:e.capabilities)&&N.filter(l=>e.capabilities[l.key]).length>0&&(0,o.jsx)(h.A,{size:4,wrap:!0,style:{flexShrink:0},children:N.filter(l=>e.capabilities[l.key]).slice(0,2).map(e=>(0,o.jsx)(x.A,{color:"purple",style:{margin:0,fontSize:10,lineHeight:"16px"},children:e.label},e.key))}),(0,o.jsx)(x.A,{color:"blue",style:{margin:0,fontSize:10,lineHeight:"18px",flexShrink:0},children:"激活"})]})})()]})},s)})})}),(0,o.jsx)(g.A,{title:ee?e("models.editModel"):e("models.addModel"),open:Y,onClose:()=>$(!1),width:800,maskClosable:!1,style:{borderRadius:"12px 0 0 12px"},styles:{body:{padding:"16px 24px"},header:{borderRadius:"12px 0 0 0",borderBottom:"1px solid var(--colorBorderSecondary)"}},extra:(0,o.jsx)(c.Ay,{type:"primary",loading:ev,onClick:()=>{eA()},children:e("common.save")}),children:(0,o.jsxs)(A.A,{layout:"vertical",children:[(0,o.jsx)(A.A.Item,{label:e("models.modelName"),children:(0,o.jsx)(u.A,{value:ea,onChange:e=>er(e.target.value),placeholder:e("models.modelNamePlaceholder")})}),(0,o.jsx)(A.A.Item,{label:e("models.apiKey"),help:ee?e("models.apiKeyEditHint"):void 0,children:(0,o.jsx)(u.A.Password,{value:ei,onFocus:()=>{ee&&ei.includes("•")&&et("")},onChange:e=>et(e.target.value),placeholder:ee?e("models.apiKeyEditPlaceholder"):"sk-..."})}),(0,o.jsx)(A.A.Item,{label:e("models.baseUrl"),children:(0,o.jsx)(u.A,{value:en,onChange:e=>ec(e.target.value),placeholder:"https://api.openai.com/v1"})}),(0,o.jsx)(A.A.Item,{label:e("models.protocol"),children:(0,o.jsx)(v.A,{value:ed,onChange:em,options:P})}),(0,o.jsx)(A.A.Item,{label:"直连端点",children:(0,o.jsx)(f.A,{checked:eh,onChange:e=>ep(e.target.checked),children:"Base URL 是完整接口地址"})}),(0,o.jsx)(A.A.Item,{label:"多模态能力",children:(0,o.jsx)(f.A.Group,{value:N.filter(e=>ex[e.key]).map(e=>e.key),options:N.map(e=>({label:e.label,value:e.key})),onChange:e=>ey(Object.fromEntries(N.map(l=>[l.key,e.includes(l.key)])))})})]})})]})}},77305:(e,l,s)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/models",function(){return s(22708)}])}},e=>{e.O(0,[347,8787,4277,7889,4833,7271,7576,9144,6985,3455,4052,5938,9773,6578,636,6593,8792],()=>e(e.s=77305)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[5449],{27795:(e,l,s)=>{"use strict";s.r(l),s.d(l,{default:()=>T});var t=s(65321),r=s(97109),i=s(32620),c=s(85114),o=s(2256),n=s(38770),a=s(68787),x=s(99605),d=s(54849),h=s(33442),v=s(11702),m=s(99811),u=s(520),j=s(93314),A=s(13114),y=s(29071),p=s(26631),g=s(84742),f=s(38762),w=s(8579),k=s(9020),z=s(32632),S=s(95118),N=s(24810),_=s(6578);function T(){var e,l,s,T,P,b,O,C,D,E,M,F;let I=(0,i.Vr)(),[B,W]=(0,r.useState)(null),[U,X]=(0,r.useState)(!0),[R,V]=(0,r.useState)(0),[Z,q]=(0,r.useState)(0),[G,H]=(0,r.useState)(0),[J,K]=(0,r.useState)(0),[L,Q]=(0,r.useState)(0),[Y,$]=(0,r.useState)(null),ee=(0,r.useCallback)(async()=>{X(!0);try{let[e,l,s,t,r,i]=await Promise.all([(0,_.FC)(),(0,_.Z3)().catch(()=>[]),(0,_.lv)().catch(()=>({roles:[],configs:[]})),(0,_.mx)().catch(()=>({specs:[]})),(0,_.Dl)().catch(()=>({templates:[]})),(0,_.II)().catch(()=>null)]);W(e),V(Array.isArray(l)?l.length:0);let c=Array.isArray(s.roles)?s.roles:[];q(c.filter(e=>"file"===e.type).length),H(c.filter(e=>"prompt"===e.type).length),K(Array.isArray(t.specs)?t.specs.length:0),Q(Array.isArray(r.templates)?r.templates.length:0),$(i)}catch(e){}finally{X(!1)}},[]);(0,r.useEffect)(()=>{ee();let e=setInterval(()=>{ee()},1e4);return()=>clearInterval(e)},[ee]);let el=(null!=(l=null==B?void 0:B.cpu.usagePercent)?l:0)>80?"var(--colorDanger)":(null!=(s=null==B?void 0:B.cpu.usagePercent)?s:0)>50?"var(--colorWarning)":"var(--colorOk)",es=(null!=(T=null==B?void 0:B.memory.usagePercent)?T:0)>80?"var(--colorDanger)":(null!=(P=null==B?void 0:B.memory.usagePercent)?P:0)>50?"var(--colorWarning)":"var(--colorOk)",et=(null==B?void 0:B.tasks.total)?Math.round(B.tasks.success/B.tasks.total*100):0,er=null==B||null==(e=B.models)?void 0:e[0];return(0,t.jsxs)("div",{className:"space-y-6 animateFadeIn",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("h1",{className:"pageTitle",children:I("overview.title")}),(0,t.jsx)("p",{className:"pageDesc",children:I("overview.description")})]}),(0,t.jsx)(c.Ay,{icon:(0,t.jsx)(m.A,{spin:U}),loading:U,onClick:()=>{ee()},children:I("common.retry")})]}),(0,t.jsxs)(o.A,{gutter:[16,16],children:[(0,t.jsx)(n.A,{xs:24,sm:12,children:(0,t.jsx)(a.A,{size:"small",title:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(u.A,{})," CPU"]}),children:(0,t.jsxs)("div",{style:{textAlign:"center"},children:[(0,t.jsx)(x.A,{type:"circle",percent:null!=(b=null==B?void 0:B.cpu.usagePercent)?b:0,size:120,strokeColor:el,format:e=>"".concat(null==e?void 0:e.toFixed(1),"%")}),(0,t.jsxs)("div",{className:"text-xs mt-2",style:{color:"var(--colorTextSecondary)"},children:[null!=(O=null==B?void 0:B.cpu.cores)?O:0," ",I("overview.cores")]})]})})}),(0,t.jsx)(n.A,{xs:24,sm:12,children:(0,t.jsx)(a.A,{size:"small",title:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(j.A,{})," ",I("overview.memory")]}),children:(0,t.jsxs)("div",{style:{textAlign:"center"},children:[(0,t.jsx)(x.A,{type:"circle",percent:null!=(C=null==B?void 0:B.memory.usagePercent)?C:0,size:120,strokeColor:es,format:e=>"".concat(e,"%")}),(0,t.jsxs)("div",{className:"text-xs mt-2",style:{color:"var(--colorTextSecondary)"},children:[null!=(D=null==B?void 0:B.memory.processMB)?D:0," MB / ",null!=(E=null==B?void 0:B.memory.totalMB)?E:0," MB"]})]})})})]}),(0,t.jsxs)(o.A,{gutter:[16,16],children:[(0,t.jsx)(n.A,{xs:12,sm:6,children:(0,t.jsx)(a.A,{size:"small",children:(0,t.jsx)(d.A,{title:"运行时间",value:B?Math.floor(B.uptime/3600):0,suffix:"小时",prefix:(0,t.jsx)(A.A,{})})})}),(0,t.jsx)(n.A,{xs:12,sm:6,children:(0,t.jsx)(a.A,{size:"small",children:(0,t.jsx)(d.A,{title:I("overview.tokensUsed"),value:null!=(M=null==B?void 0:B.tokens.total)?M:0,prefix:(0,t.jsx)(y.A,{})})})}),(0,t.jsx)(n.A,{xs:12,sm:6,children:(0,t.jsx)(a.A,{size:"small",children:(0,t.jsx)(d.A,{title:I("overview.tasksTotal"),value:null!=(F=null==B?void 0:B.tasks.total)?F:0,prefix:(0,t.jsx)(p.A,{})})})}),(0,t.jsx)(n.A,{xs:12,sm:6,children:(0,t.jsx)(a.A,{size:"small",children:(0,t.jsx)(d.A,{title:I("overview.successRate"),value:et,suffix:"%",prefix:et>80?(0,t.jsx)(g.A,{style:{color:"var(--colorOk)"}}):(0,t.jsx)(f.A,{style:{color:"var(--colorDanger)"}})})})})]}),(0,t.jsx)(a.A,{size:"small",title:"资源概览",children:(0,t.jsxs)(o.A,{gutter:[16,16],children:[(0,t.jsx)(n.A,{xs:24,sm:12,md:8,lg:4,children:(0,t.jsx)(a.A,{size:"small",style:{height:"100%"},children:(0,t.jsx)(d.A,{title:"文件角色",value:Z,prefix:(0,t.jsx)(p.A,{style:{color:"var(--colorAccent)"}})})})}),(0,t.jsx)(n.A,{xs:24,sm:12,md:8,lg:4,children:(0,t.jsx)(a.A,{size:"small",style:{height:"100%"},children:(0,t.jsx)(d.A,{title:"提示词角色",value:G,prefix:(0,t.jsx)(w.A,{style:{color:"var(--colorWarning)"}})})})}),(0,t.jsx)(n.A,{xs:24,sm:12,md:8,lg:4,children:(0,t.jsx)(a.A,{size:"small",style:{height:"100%"},children:(0,t.jsx)(d.A,{title:"文档规范包",value:J,prefix:(0,t.jsx)(k.A,{style:{color:"var(--colorOk)"}})})})}),(0,t.jsx)(n.A,{xs:24,sm:12,md:8,lg:4,children:(0,t.jsx)(a.A,{size:"small",style:{height:"100%"},children:(0,t.jsx)(d.A,{title:"模板",value:L,prefix:(0,t.jsx)(z.A,{style:{color:"var(--colorDanger)"}})})})}),(0,t.jsx)(n.A,{xs:24,sm:12,md:8,lg:4,children:(0,t.jsxs)(a.A,{size:"small",style:{height:"100%",overflow:"hidden"},children:[(0,t.jsx)(d.A,{title:"语义模型",value:(null==Y?void 0:Y.provider)==="openai-compatible"?"外部 Embedding":Y?"本地语义模型":"—",prefix:(0,t.jsx)(S.A,{style:{color:"var(--colorAccent)"}}),valueStyle:{fontSize:18,whiteSpace:"nowrap"}}),(null==Y?void 0:Y.model)&&(0,t.jsxs)("div",{className:"text-xs mt-1",style:{color:"var(--colorTextSecondary)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},title:"".concat(Y.model).concat(Y.dimensions?" \xb7 ".concat(Y.dimensions,"维"):""),children:[Y.model,Y.dimensions?" \xb7 ".concat(Y.dimensions,"维"):""]})]})}),(0,t.jsx)(n.A,{xs:24,sm:12,md:8,lg:4,children:(0,t.jsx)(a.A,{size:"small",style:{height:"100%"},children:(0,t.jsx)(d.A,{title:"模型供应商",value:R,prefix:(0,t.jsx)(N.A,{style:{color:"var(--colorAccent)"}})})})})]})}),(0,t.jsxs)(o.A,{gutter:[16,16],children:[(0,t.jsx)(n.A,{xs:24,sm:12,children:(0,t.jsx)(a.A,{size:"small",title:I("overview.topModel"),style:{height:"100%"},children:er?(0,t.jsxs)("div",{className:"flex items-center gap-4",children:[(0,t.jsx)(A.A,{style:{fontSize:24,color:"var(--colorAccent)"}}),(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{className:"font-semibold",children:er.model}),(0,t.jsxs)("div",{style:{color:"var(--colorTextSecondary)",fontSize:12},children:["@",er.provider," — ",er.count," ",I("overview.calls")]})]})]}):(0,t.jsx)("span",{style:{color:"var(--colorTextSecondary)"},children:I("common.noData")})})}),(0,t.jsx)(n.A,{xs:24,sm:12,children:(0,t.jsx)(a.A,{size:"small",title:I("overview.taskTypes"),style:{height:"100%"},children:(null==B?void 0:B.tasks.types)&&Object.keys(B.tasks.types).length>0?(0,t.jsx)(h.A,{wrap:!0,children:Object.entries(B.tasks.types).map(e=>{let[l,s]=e;return(0,t.jsxs)(v.A,{children:[l.slice(0,30),": ",s]},l)})}):(0,t.jsx)("span",{style:{color:"var(--colorTextSecondary)"},children:I("common.noData")})})})]})]})}},53139:(e,l,s)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/overview",function(){return s(27795)}])}},e=>{e.O(0,[347,8787,4277,8732,261,6578,636,6593,8792],()=>e(e.s=53139)),_N_E=e.O()}]);
|
package/next.config.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { NextConfig } from 'next';
|
|
2
2
|
|
|
3
|
+
/** 需要在服务端而非客户端打包的外部依赖(原生模块/大型库) */
|
|
3
4
|
const serverExternalPackages = [
|
|
4
5
|
'@customize-agent/knowledge',
|
|
5
6
|
'@customize-agent/llm',
|
|
@@ -32,6 +33,7 @@ const nextConfig: NextConfig = {
|
|
|
32
33
|
async headers() {
|
|
33
34
|
return [
|
|
34
35
|
{
|
|
36
|
+
// 对所有非静态资源路由设置禁止缓存,确保内容实时更新
|
|
35
37
|
source: '/((?!_next/static|_next/image|favicon.ico).*)',
|
|
36
38
|
headers: [
|
|
37
39
|
{ key: 'Cache-Control', value: 'no-store, must-revalidate' },
|
|
@@ -41,6 +43,7 @@ const nextConfig: NextConfig = {
|
|
|
41
43
|
},
|
|
42
44
|
async redirects() {
|
|
43
45
|
return [
|
|
46
|
+
// 将多个入口路径统一重定向到 /overview
|
|
44
47
|
{ source: '/', destination: '/overview', permanent: false },
|
|
45
48
|
{ source: '/dashboard', destination: '/overview', permanent: false },
|
|
46
49
|
{ source: '/console', destination: '/overview', permanent: false },
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4298],{16403:(e,t,s)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/documents",function(){return s(19562)}])},19562:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>ei});var r=s(65321),n=s(97109),i=s(7576),l=s(35292),a=s(17807),o=s(63455),c=s(88762),d=s(85114),u=s(68787),p=s(84253),m=s(38332),h=s(26171),x=s(11702),g=s(33442),f=s(85493),v=s(34052),w=s(9730),j=s(42700),y=s(58569),A=s(76506),k=s(25258),S=s(2256),I=s(38770),b=s(57271),T=s(23216),z=s(26619),C=s(8263),_=s(16285),D=s(8579),M=s(75548),F=s(7851),L=s(84742),B=s(29071),E=s(63552),R=s(26631),P=s(76830),q=s(83914),W=s(58209),G=s(54746),H=s(71330),O=s(64068),N=s(93051),K=s(38762),U=s(64629),X=s(67547),V=s(99811),Q=s(6578),J=s(32620);let{TextArea:Y}=i.A,{Paragraph:Z,Text:$}=l.A,ee=null;function et(){null==ee||ee.listeners.forEach(e=>e())}let es={role_binding:(0,r.jsx)(T.A,{}),knowledge_retrieval:(0,r.jsx)(z.A,{}),file_understanding:(0,r.jsx)(C.A,{}),fact_extraction:(0,r.jsx)(_.A,{}),chapter_generation:(0,r.jsx)(D.A,{}),asset_generation:(0,r.jsx)(M.A,{}),validation:(0,r.jsx)(F.A,{}),formatting:(0,r.jsx)(L.A,{}),llm_review:(0,r.jsx)(B.A,{}),export_ready:(0,r.jsx)(E.A,{}),reference:(0,r.jsx)(M.A,{})},er={施工组织设计:(0,r.jsx)(F.A,{}),投标文件:(0,r.jsx)(E.A,{}),技术方案:(0,r.jsx)(_.A,{}),报告:(0,r.jsx)(R.A,{}),自定义:(0,r.jsx)(D.A,{})},en={role_binding:"角色配置绑定",knowledge_retrieval:"知识库检索",file_understanding:"多模态文件理解",fact_extraction:"LLM 事实抽取",chapter_generation:"LLM 章节生成",asset_generation:"多模态资源生成",validation:"规则校验",formatting:"格式化排版",llm_review:"LLM 审查优化",export_ready:"导出就绪",reference:"参考资源处理"};function ei(){let e=(0,J.Vr)(),{message:t}=a.A.useApp(),[s]=o.A.useForm(),l=(0,n.useRef)(null),[Z,ei]=(0,n.useState)([]),[el,ea]=(0,n.useState)("construction-organization-design"),[eo,ec]=(0,n.useState)([]),[ed,eu]=(0,n.useState)([]),[ep,em]=(0,n.useState)([]),[eh,ex]=(0,n.useState)(!0),[eg,ef]=(0,n.useState)(!1),[ev,ew]=(0,n.useState)(null),[ej,ey]=(0,n.useState)(""),[eA,ek]=(0,n.useState)([]),[eS,eI]=(0,n.useState)(null),[eb,eT]=(0,n.useState)(!1),[ez,eC]=(0,n.useState)(null),[e_,eD]=(0,n.useState)(!1),[eM,eF]=(0,n.useState)({}),[eL,eB]=(0,n.useState)([]),[eE,eR]=(0,n.useState)(null),[eP,eq]=(0,n.useState)("templates"),[eW,eG]=(0,n.useState)(!1),[eH,eO]=(0,n.useState)("workflow"),eN=(0,n.useRef)(null),eK=async()=>{try{ek((await (0,Q.cQ)()).documents)}catch(e){ek([])}};(0,n.useEffect)(()=>{let e=()=>{ee&&(eB(ee.flowSteps),eR(ee.activeFlowKey),ef(ee.loading),ee.documentId&&eI(ee.documentId),ee.draft&&ew(ee.draft),void 0!==ee.content&&ey(ee.content))},t=ee;return null==t||t.listeners.add(e),e(),()=>{null==t||t.listeners.delete(e)}},[]),(0,n.useEffect)(()=>{ex(!0),Promise.all([(0,Q.Dl)().then(e=>{var t,s;ei(e.templates),ea(null!=(s=null==(t=e.templates[0])?void 0:t.id)?s:"construction-organization-design")}),(0,Q.lv)().then(e=>{ec(e.roles),eu(e.configs)}),(0,Q.mx)().then(e=>em(e.specs)),eK()]).catch(()=>t.error(e("common.error"))).finally(()=>ex(!1))},[t,e]),(0,n.useEffect)(()=>{if(0===eA.length)return;let e=localStorage.getItem("activeGenDocId");if(!e)return;if(!eA.find(t=>t.id===e&&"generating"===t.status))return void localStorage.removeItem("activeGenDocId");let t=setInterval(()=>{(async()=>{try{let{document:s}=await (0,Q.v7)(e);await eK(),"generating"!==s.status&&(localStorage.removeItem("activeGenDocId"),clearInterval(t))}catch(e){clearInterval(t)}})()},3e3);return()=>clearInterval(t)},[eA]);let eU=(0,n.useMemo)(()=>Z.find(e=>e.id===el),[Z,el]),eX=ed.map(e=>({label:e.name,value:e.id})),eV=ep.map(e=>({label:e.name,value:e.id})),eQ=Math.max(0,eL.findIndex(e=>e.key===eE)),eJ=e=>{ea(e),eI(null),ew(null),ey(""),eO("workflow"),eG(!0),eq("drafts")},eY=async s=>{eI(s.id),ea(s.templateId);let r=e0(s.status);if(r||"failed"===s.status){ti.current=!0,ew(null),ey(""),ef(r),eO("workflow"),eG(!0);try{let{document:e}=await (0,Q.v7)(s.id);e6(e),e0(e.status)?e8(e.id):await eK()}catch(e){e6(s)}return}eO("editor"),eB([]),eR(null);try{let{document:e}=await (0,Q.v7)(s.id);ew(e.draft||null),ey(e.editedMarkdown||e.markdown)}catch(s){t.error(e("common.error"))}eG(!0)},eZ=e=>e.map((e,t)=>({key:"sub-".concat(t),title:e,status:"wait"})),e$=function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:eU,s=ep.find(e=>e.id===(null==t?void 0:t.documentSpecId)),n=ed.find(e=>e.id===(null==t?void 0:t.projectRoleConfigId)),i=((null==n?void 0:n.fileRoles)||[]).map(e=>{var t;return(null==(t=eo.find(t=>t.id===e.roleId))?void 0:t.name)||e.roleId}),l=((null==n?void 0:n.promptRoles)||[]).map(e=>{var t;return(null==(t=eo.find(t=>t.id===e.roleId))?void 0:t.name)||e.roleId}),a=(null==s?void 0:s.factFields.map(e=>e.name))||(null==t?void 0:t.chapters.flatMap(e=>e.requiredFacts))||[],o=(null==t?void 0:t.chapters.map(e=>e.title))||[],c=l.some(e=>/封面|图片|资源|cover|image/iu.test(e));return[{key:"prepare",title:e("documents.flowPrepare"),description:'读取"'.concat((null==t?void 0:t.name)||"当前模板",'"并创建后台生成任务'),status:"process",icon:(0,r.jsx)(R.A,{}),subSteps:eZ(["读取模板参数",(null==t?void 0:t.documentSpecId)?"加载规范包:".concat((null==s?void 0:s.name)||t.documentSpecId):"未绑定规范包,使用模板章节要求","创建后台生成任务"])},{key:"role_binding",title:"动态角色配置绑定",description:"绑定 ".concat(i.length," 个文件角色、").concat(l.length," 个提示词角色"),status:"wait",icon:(0,r.jsx)(T.A,{}),subSteps:eZ([...i.length?i.map(e=>"文件角色:".concat(e)):["没有文件角色,使用模板绑定文件"],...l.length?l.map(e=>"提示词角色:".concat(e)):["没有提示词角色,使用默认生成策略"]].slice(0,10))},{key:"knowledge_retrieval",title:"知识库证据检索",description:"按 ".concat(o.length," 个章节检索文本、文档、表格、图片、图纸和附件"),status:"wait",icon:(0,r.jsx)(z.A,{}),subSteps:eZ(o.length?o.slice(0,10).map(e=>"检索章节:".concat(e)):["按模板标题检索证据"])},{key:"file_understanding",title:"多类型文件理解",description:"按文件角色处理文本、PDF/Word、表格、图片、图纸和附件",status:"wait",icon:(0,r.jsx)(C.A,{}),subSteps:eZ(["识别文件类型和角色","构建结构化资源证据包","必要时调用多模态文件理解"])},{key:"fact_extraction",title:"动态 schema 事实抽取",description:"按 ".concat(a.length," 个规范/章节事实字段抽取并检测冲突"),status:"wait",icon:(0,r.jsx)(_.A,{}),subSteps:eZ(a.length?a.slice(0,10).map(e=>"抽取事实:".concat(e)):["抽取模板要求的事实","合并来源和角色","检测事实冲突"])},{key:"chapter_generation",title:"章节生成",description:"按 ".concat(o.length," 个模板章节逐章生成"),status:"wait",icon:(0,r.jsx)(D.A,{}),subSteps:eZ(o.length?o.slice(0,10).map(e=>"生成:".concat(e)):["构造章节提示词","等待 LLM 生成","整理章节证据"])},...c?[{key:"asset_generation",title:"生成资源处理",description:"根据资源/图片提示词生成或登记本地资源",status:"wait",icon:(0,r.jsx)(M.A,{}),subSteps:eZ(["生成资源提示词","保存到 generatedDocuments/assets","登记资源元数据"])}]:[],{key:"validation",title:"规范包与门禁校验",description:s?"执行 ".concat(s.gateRules.length," 条门禁规则"):"执行模板基础校验",status:"wait",icon:(0,r.jsx)(F.A,{}),subSteps:eZ([...(null==s?void 0:s.factFields.filter(e=>e.required).map(e=>"必填事实:".concat(e.name)))||[],...(null==s?void 0:s.gateRules.map(e=>"门禁:".concat(e.name)))||["检查章节证据","检查缺失项","检查导出门禁"]].slice(0,10))},{key:"formatting",title:e("documents.flowFormatting"),description:"整理标题、表格、图片、附件引用和正式 Markdown",status:"wait",icon:(0,r.jsx)(L.A,{}),subSteps:eZ(["整理标题层级","整理多类型资源引用","生成正式 Markdown"])},{key:"llm_review",title:"LLM 审查优化",description:"再次使用动态 schema、角色和结构化证据审查优化初稿",status:"wait",icon:(0,r.jsx)(B.A,{}),subSteps:eZ(["构造审查提示词","检查事实来源和冲突","回填优化后的 Markdown"])},{key:"export_ready",title:"导出就绪",description:"确认 Markdown/HTML/DOCX/PDF 可导出",status:"wait",icon:(0,r.jsx)(E.A,{}),subSteps:eZ(["生成导出检查清单","确认阻断项","准备导出格式"])},{key:"done",title:e("documents.flowDone"),description:e("documents.flowDoneDesc"),status:"wait",icon:(0,r.jsx)(P.A,{}),subSteps:eZ(["展示生成结果","允许编辑正文","允许导出文件"])}]},e0=e=>"completed"!==e&&"warning"!==e&&"failed"!==e,e1=function(e,t){let s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:eg;(null==ee?void 0:ee.loading)&&(ee.flowSteps=e,ee.activeFlowKey=t,ee.loading=s,et())},e2=(e,t)=>{if("wait"===t)return e.subSteps.map(e=>({...e,status:"wait"}));if("finish"===t)return e.subSteps.map(e=>({...e,status:"finish"}));if("error"===t)return e.subSteps.map((e,t)=>({...e,status:0===t?"error":e.status}));let s=e.subSteps.findIndex(e=>"wait"===e.status);return e.subSteps.map((e,t)=>t<s||-1===s?{...e,status:"finish"}:t===s?{...e,status:"process"}:e)},e6=e=>{let{steps:t,activeKey:s}=(e=>{var t,s,r;let n,i=Z.find(t=>t.id===e.templateId)||eU,l=e.executionStages||(null==(t=e.draft)?void 0:t.executionStages)||[],a=new Map(l.map(e=>[e.type,e])),o=e$(i).map(t=>{let s;if("prepare"===t.key){let s=l.length>0?"finish":"generating"===e.status?"process":"finish";return{...t,status:s,subSteps:e2(t,s)}}if("done"===t.key){let s="completed"===e.status?"finish":"warning"===e.status?"warning":"wait";return{...t,status:s,subSteps:e2(t,s)}}let r=a.get(t.key);if(!r)return t;let n="failed"===(s=r.status)?"error":"fallback"===s?"warning":"finish";return{...t,status:n,description:r.message||t.description,subSteps:e2(t,n)}});if("generating"===e.status){let e=Math.max(-1,...l.map(e=>o.findIndex(t=>t.key===e.type)).filter(e=>e>=0)),t=o.slice(e+1).find(e=>"done"!==e.key&&"wait"===e.status)||o.find(e=>"process"===e.status)||o.find(e=>"done"===e.key);for(let e of(n=(null==t?void 0:t.key)||"prepare",o))e.key===n&&"wait"===e.status&&(e.status="process",e.subSteps=e2(e,"process"))}else n="failed"===e.status?(null==(s=o.find(e=>"error"===e.status))?void 0:s.key)||(null==(r=l.at(-1))?void 0:r.type)||"prepare":"done";return{steps:o,activeKey:n}})(e);eB(t),eR(s),ef(e0(e.status)),"failed"===e.status&&eO("workflow"),("completed"===e.status||"warning"===e.status)&&e.draft&&(ew(e.draft),ey(e.editedMarkdown||e.markdown),eO("editor"),eB([]),eR(null))},e8=e=>{eN.current&&clearInterval(eN.current),eN.current=setInterval(()=>{(async()=>{try{let{document:t}=await (0,Q.v7)(e);e6(t),await eK(),e0(t.status)||(eN.current&&clearInterval(eN.current),eN.current=null,localStorage.removeItem("activeGenDocId"))}catch(e){}})()},2e3)},e7=(e,t,s)=>{eR(e),eB(r=>{let n=r.map(r=>r.key===e?{...r,status:t,description:s||r.description,subSteps:e2(r,t)}:r);return e1(n,e),n})};(0,n.useEffect)(()=>{if(!eg||!eE)return;let e=window.setInterval(()=>eB(e=>{let t=e.map(e=>{if(e.key!==eE||"process"!==e.status)return e;let t=e.subSteps.findIndex(e=>"process"===e.status),s=t<0?0:Math.min(t+1,e.subSteps.length-1);return{...e,subSteps:e.subSteps.map((e,t)=>t<s?{...e,status:"finish"}:t===s?{...e,status:"process"}:{...e,status:"wait"})}});return e1(t,eE),t}),1400);return()=>window.clearInterval(e)},[eE,eg]);let e3=e=>{eB(t=>{let s=t.findIndex(t=>t.key===e),r=t.map((e,t)=>t<s&&"error"!==e.status?{...e,status:"finish",subSteps:e2(e,"finish")}:e);return e1(r,e),r})},e5=e=>{let t=null!=e?e:{id:"tpl-".concat(Date.now()),name:"",description:"",category:"自定义",outputTitle:"",projectRoleConfigId:void 0,documentSpecId:void 0,chapters:[]};s.setFieldsValue({...t,chapters:t.chapters.map(e=>({...e,queriesText:e.queries.join("\n"),requiredFactsText:e.requiredFacts.join("\n")}))}),eD(!0)},e4=async()=>{try{let r=await s.validateFields(),n={...r,chapters:(r.chapters||[]).map(e=>({...e,queries:String(e.queriesText||"").split(/\r?\n/u).map(e=>e.trim()).filter(Boolean),requiredFacts:String(e.requiredFactsText||"").split(/\r?\n/u).map(e=>e.trim()).filter(Boolean),queriesText:void 0,requiredFactsText:void 0}))},i=await (0,Q.l2)(n);ei(i.templates),ea(i.template.id),eD(!1),await eK(),t.success(e("common.success"))}catch(e){e instanceof Error&&t.error(e.message)}},e9=async s=>{try{let r=await (0,Q.bV)(s);ei(r.templates),ea(r.template.id),t.success(e("common.success"))}catch(s){t.error(e("common.error"))}},te=async s=>{try{var r,n;let i=await (0,Q.h0)(s);ei(i.templates),ea(null!=(n=null==(r=i.templates[0])?void 0:r.id)?n:""),t.success(e("common.success"))}catch(s){t.error(e("common.error"))}},tt=async e=>{try{let{validation:s}=await (0,Q.SM)(e);eF(t=>({...t,[e]:s}));let r=s.issues.filter(e=>"error"===e.level);if(ea(e),r.length>0)return void t.warning("模板运行前检查未通过,请先处理阻断项");if(s.issues.length>0)return void t.warning("模板存在警告,可在检查面板确认后继续运行");eJ(e)}catch(e){t.error(e instanceof Error?e.message:"模板运行前检查失败")}},ts=async s=>{try{await (0,Q.QG)(s),eS===s&&(eI(null),ew(null),ey("")),await eK(),t.success(e("common.success"))}catch(s){t.error(e("common.error"))}},tr=async e=>{let t=[{k:"chapter_generation",m:"后台任务已创建,正在轮询等待 LLM 章节生成完成…"},{k:"asset_generation",m:"正在轮询等待封面和生成资源写入本地记录…"},{k:"validation",m:"正在轮询等待校验、导出门禁和格式化完成…"},{k:"llm_review",m:"正在轮询等待 LLM 审查优化完成…"}],s=0;for(;;){var r;let{document:n}=await (0,Q.v7)(e);if(e6(n),("completed"===n.status||"warning"===n.status)&&n.draft)return n;if("failed"===n.status)throw Error(n.error||"生成失败");if(0===(n.executionStages||(null==(r=n.draft)?void 0:r.executionStages)||[]).length){let e=t[Math.min(s,t.length-1)];e3(e.k),e7(e.k,"process",e.m)}s++,await new Promise(e=>window.setTimeout(e,1500))}},tn=async()=>{if(!el)return;if(null==ee?void 0:ee.loading){eB(ee.flowSteps),eR(ee.activeFlowKey),ef(!0);return}ef(!0);let s=e$(Z.find(e=>e.id===el)||eU),r=(0,Q.OX)({templateId:el});ee={id:Date.now(),templateId:el,loading:!0,flowSteps:s,activeFlowKey:"prepare",promise:r,listeners:new Set},eB(s),eR("prepare");let n=[{k:"role_binding",m:"正在读取模板、文件角色、提示词角色和文档规范包…"},{k:"knowledge_retrieval",m:"正在从知识库检索章节证据、表格、图片和附件…"},{k:"file_understanding",m:"正在准备多模态文件理解…"},{k:"fact_extraction",m:"正在等待 LLM 事实抽取和后续章节生成结果…"}].map((e,t)=>window.setTimeout(()=>{e3(e.k),e7(e.k,"process",e.m)},600+900*t));try{let s=await r;s.documentId&&(localStorage.setItem("activeGenDocId",s.documentId),eI(s.documentId),(null==ee?void 0:ee.promise)===r&&(ee.documentId=s.documentId)),await eK();let i=s.documentId?await tr(s.documentId):void 0,a=s.draft||(null==i?void 0:i.draft);if(!a)throw Error("生成结果为空");(s.documentId||(null==i?void 0:i.id))&&eI(s.documentId||i.id),n.forEach(e=>window.clearTimeout(e)),e3("done"),ew(a),ey((null==i?void 0:i.editedMarkdown)||(null==i?void 0:i.markdown)||a.markdown),(null==ee?void 0:ee.promise)===r&&(ee.draft=a,ee.content=(null==i?void 0:i.editedMarkdown)||(null==i?void 0:i.markdown)||a.markdown),eB(t=>{let s=t.map(t=>{let s=a.executionStages.find(e=>e.type===t.key);if("prepare"===t.key)return{...t,status:"finish",description:e("documents.flowPrepareDone"),subSteps:e2(t,"finish")};if("done"===t.key){var r;let s=a.validationIssues.some(e=>"error"===e.level||"warning"===e.level)||!a.exportGate.passed,n=s?"warning":"finish",i=null==(r=a.validationIssues.find(e=>"error"===e.level||"warning"===e.level))?void 0:r.message;return{...t,status:n,description:s?"生成完成,但需复核:".concat(i||e("documents.flowGateFailed")):e("documents.flowDoneDesc"),subSteps:e2(t,n)}}if(!s)return"process"===t.status?{...t,status:"finish",subSteps:e2(t,"finish")}:t;let n="failed"===s.status?"error":"finish";return{...t,status:n,description:"".concat(s.status.toUpperCase(),":").concat(s.message||t.description),subSteps:e2(t,n)}});return e1(s,"done",!1),s}),eR("done"),(null==ee?void 0:ee.promise)===r&&(ee.activeFlowKey="done",ee.loading=!1,et()),localStorage.removeItem("activeGenDocId"),await eK(),t.success(e("common.success")),window.setTimeout(()=>{var e;return null==(e=l.current)?void 0:e.scrollIntoView({behavior:"smooth",block:"start"})},200)}catch(n){localStorage.removeItem("activeGenDocId");let s=n instanceof Error?n.message:e("common.error");eB(e=>{let t=e.map(e=>"process"===e.status?{...e,status:"error",description:s,subSteps:e2(e,"error")}:e);return e1(t,eE,!1),t}),(null==ee?void 0:ee.promise)===r&&(ee.loading=!1,ee.error=s,et()),t.error(s)}finally{n.forEach(e=>window.clearTimeout(e)),ef(!1),(null==ee?void 0:ee.promise)===r&&(ee.loading=!1,et())}},ti=(0,n.useRef)(!1),tl=async s=>{(null==ee?void 0:ee.loading)&&(ee.loading=!1,ee.error="用户中止",et(),ee=null,ef(!1)),localStorage.removeItem("activeGenDocId"),eN.current&&(clearInterval(eN.current),eN.current=null);try{await (0,Q.r)(s.id),await eK(),eS===s.id&&(eI(null),ew(null),ey("")),t.success("已中止生成任务")}catch(s){t.error(e("common.error"))}};(0,n.useEffect)(()=>{eW&&"workflow"===eH&&!ti.current&&!(null==ee?void 0:ee.loading)&&(null==eU?void 0:eU.projectRoleConfigId)&&(ti.current=!0,window.setTimeout(()=>{tn()},300)),eW||(ti.current=!1)},[eW,eH]);let ta=async s=>{if(ev){eT(!0);try{var r;let e="markdown"===s?"md":s,t=null==(r=ep.find(e=>e.id===(null==eU?void 0:eU.documentSpecId)))?void 0:r.wordTemplatePath,n=await (0,Q.UE)({documentId:eS||void 0,title:ev.title,markdown:ej,format:s,enforceGate:!1,exportGate:ev.exportGate,wordTemplatePath:t});((e,t,s)=>{let r=new Blob([e],{type:s}),n=URL.createObjectURL(r),i=document.createElement("a");i.href=n,i.download=t,i.target="_self",i.rel="noopener",i.style.display="none",document.body.appendChild(i),i.dispatchEvent(new MouseEvent("click",{bubbles:!0,cancelable:!0,view:window})),i.remove(),window.setTimeout(()=>URL.revokeObjectURL(n),1e3)})(n,"".concat(ev.title,".").concat(e),{markdown:"text/markdown;charset=utf-8",html:"text/html;charset=utf-8",pdf:"application/pdf",docx:"application/vnd.openxmlformats-officedocument.wordprocessingml.document"}[s])}catch(s){t.error(s instanceof Error?s.message:e("common.error"))}finally{eT(!1)}}},to=async()=>{if(ev)try{if(eS)await (0,Q.a6)(eS,{editedMarkdown:ej,markdown:ej});else{let e=await (0,Q.Af)({...ev,markdown:ej});ew(e.draft)}await eK(),t.success(e("common.success"))}catch(s){t.error(e("common.error"))}},tc=async s=>{if(ev){eC(s.id);try{var r,n;let i=await (0,Q.R1)({templateId:ev.templateId,chapterId:s.id,documentId:eS||void 0,currentMarkdown:ej,existingFacts:null==(r=ev.structuredFacts)?void 0:r.map(e=>e.value)});ew({...ev,chapters:ev.chapters.map(e=>e.id===s.id?i.chapter:e)}),n=i.chapter,ey(e=>e.includes(s.content)?e.replace(s.content,n.content):"".concat(e,"\n\n").concat(n.content)),t.success(e("common.success"))}catch(s){t.error(e("common.error"))}finally{eC(null)}}};if(eh)return(0,r.jsxs)("div",{className:"space-y-5 animateFadeIn",children:[(0,r.jsx)(c.A,{active:!0,title:!0,paragraph:{rows:1}}),(0,r.jsx)(c.A,{active:!0,paragraph:{rows:2}}),(0,r.jsx)(c.A,{active:!0,paragraph:{rows:8}})]});let td="workflow"===eH?"工作流:".concat((null==eU?void 0:eU.name)||"选择模板"):"编辑:".concat((null==ev?void 0:ev.title)||(null==eU?void 0:eU.outputTitle)||"文档");return(0,r.jsxs)("div",{className:"space-y-5 animateFadeIn",children:[(0,r.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",flexWrap:"wrap",gap:12},children:[(0,r.jsxs)("div",{children:[(0,r.jsx)("h1",{className:"pageTitle",children:e("documents.title")}),(0,r.jsx)("p",{className:"pageDesc",children:e("documents.description")})]}),(0,r.jsx)(d.Ay,{type:"primary",icon:(0,r.jsx)(G.A,{}),onClick:()=>e5(),children:e("documents.newTemplate")})]}),(0,r.jsx)(u.A,{size:"small",tabList:[{key:"templates",label:"模板库 (".concat(Z.length,")")},{key:"drafts",label:"生成记录 (".concat(eA.length,")")}],activeTabKey:eP,onTabChange:eq,children:"templates"===eP?0===Z.length?(0,r.jsx)(p.A,{description:e("common.noData")}):(0,r.jsx)(m.A,{dataSource:Z,renderItem:(t,s)=>(0,r.jsx)(m.A.Item,{style:{cursor:"pointer",padding:"10px 0"},actions:[(0,r.jsx)(d.Ay,{size:"small",icon:(0,r.jsx)(H.A,{}),onClick:e=>{e.stopPropagation(),e5(t)},children:"配置"},"cfg"),(0,r.jsx)(d.Ay,{size:"small",type:"primary",icon:(0,r.jsx)(O.A,{}),onClick:e=>{e.stopPropagation(),tt(t.id)},children:"运行"},"run"),(0,r.jsx)(d.Ay,{size:"small",icon:(0,r.jsx)(N.A,{}),onClick:e=>{e.stopPropagation(),e9(t.id)}},"copy"),(0,r.jsx)(h.A,{title:e("documents.deleteTemplateConfirm"),disabled:t.builtIn,onConfirm:e=>{null==e||e.stopPropagation(),te(t.id)},children:(0,r.jsx)(d.Ay,{size:"small",danger:!0,icon:(0,r.jsx)(W.A,{}),disabled:t.builtIn,onClick:e=>e.stopPropagation()})},"del")],onClick:()=>ea(t.id),children:(0,r.jsxs)("div",{style:{display:"flex",alignItems:"flex-start",gap:10,minWidth:0,flex:1},children:[function(e,t){let s=er[e]||(0,r.jsx)(R.A,{});return(0,r.jsx)("span",{style:{color:t?"var(--colorAccent)":"var(--colorTextSecondary)",fontSize:16,marginTop:2,flexShrink:0},children:s})}(t.category,el===t.id),(0,r.jsxs)("div",{style:{minWidth:0,flex:1},children:[(0,r.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:6,marginBottom:2},children:[(0,r.jsx)("span",{style:{fontWeight:el===t.id?600:400,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:t.name}),t.builtIn&&(0,r.jsx)(x.A,{color:"gold",style:{margin:0,fontSize:10,lineHeight:"16px",flexShrink:0},children:"内置"}),el===t.id&&(0,r.jsx)(x.A,{color:"blue",style:{margin:0,fontSize:10,lineHeight:"16px",flexShrink:0},children:"当前"}),(0,r.jsx)(x.A,{style:{margin:0,fontSize:10,lineHeight:"16px",flexShrink:0},children:t.category}),eM[t.id]&&(0,r.jsxs)(x.A,{color:eM[t.id].issues.some(e=>"error"===e.level)?"error":eM[t.id].issues.length?"warning":"success",style:{margin:0,fontSize:10,lineHeight:"16px",flexShrink:0},children:["检查 ",eM[t.id].fileDiagnostics.length," 文件 / ",eM[t.id].promptDiagnostics.length," 提示词"]})]}),t.description&&(0,r.jsx)($,{type:"secondary",style:{fontSize:12,lineHeight:"18px"},children:t.description}),eM[t.id]&&(0,r.jsx)("div",{onClick:e=>e.stopPropagation(),style:{marginTop:8,padding:10,border:"1px solid ".concat(eM[t.id].issues.some(e=>"error"===e.level)?"var(--colorErrorBorder)":eM[t.id].issues.length?"var(--colorWarningBorder)":"var(--colorSuccessBorder)"),borderRadius:10,background:eM[t.id].issues.some(e=>"error"===e.level)?"var(--colorErrorBg)":eM[t.id].issues.length?"var(--colorWarningBg)":"var(--colorSuccessBg)"},children:(0,r.jsxs)(g.A,{direction:"vertical",size:6,style:{width:"100%"},children:[(0,r.jsxs)(g.A,{wrap:!0,children:[(0,r.jsx)($,{strong:!0,children:eM[t.id].issues.some(e=>"error"===e.level)?"运行前检查未通过":eM[t.id].issues.length?"运行前检查存在警告":"运行前检查通过"}),(0,r.jsxs)(x.A,{color:"blue",children:["文件角色 ",eM[t.id].fileDiagnostics.length]}),(0,r.jsxs)(x.A,{color:"purple",children:["提示词角色 ",eM[t.id].promptDiagnostics.length]}),eM[t.id].spec&&(0,r.jsxs)(x.A,{color:"cyan",children:["规范包 ",eM[t.id].spec.name]})]}),eM[t.id].issues.length>0?eM[t.id].issues.map(e=>(0,r.jsx)(f.A,{type:"error"===e.level?"error":"warning",message:e.message,showIcon:!0},e.message)):(0,r.jsx)(f.A,{type:"success",message:"文件角色、提示词角色和规范包检查通过,可以运行。",showIcon:!0}),!eM[t.id].issues.some(e=>"error"===e.level)&&eM[t.id].issues.length>0&&(0,r.jsx)("div",{children:(0,r.jsx)(d.Ay,{size:"small",type:"primary",icon:(0,r.jsx)(O.A,{}),onClick:()=>eJ(t.id),children:"忽略警告并继续运行"})})]})})]})]})})}):0===eA.length?(0,r.jsx)(p.A,{description:e("common.noData")}):(0,r.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:8},children:eA.slice(0,15).map((e,t)=>{var s,n,i;let l,a;return(0,r.jsxs)("div",{style:{display:"flex",alignItems:"flex-start",gap:10,padding:"10px 12px",border:"1px solid var(--colorBorderSecondary)",borderRadius:10,cursor:"pointer",background:eS===e.id?"var(--colorFillAlter)":void 0,minWidth:0},onClick:()=>{eY(e)},children:["completed"===e.status?(0,r.jsx)(L.A,{style:{fontSize:18,color:"var(--colorOk)",flexShrink:0,marginTop:2}}):"failed"===e.status?(0,r.jsx)(K.A,{style:{fontSize:18,color:"var(--colorDanger)",flexShrink:0,marginTop:2}}):"warning"===e.status?(0,r.jsx)(F.A,{style:{fontSize:18,color:"var(--colorWarning)",flexShrink:0,marginTop:2}}):(0,r.jsx)(U.A,{spin:!0,style:{fontSize:18,color:"#1677ff",flexShrink:0,marginTop:2}}),(0,r.jsxs)("div",{style:{minWidth:0,flex:1},children:[(0,r.jsx)("div",{style:{fontWeight:600,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",marginBottom:3},children:e.title}),(0,r.jsxs)("div",{style:{display:"flex",flexWrap:"wrap",gap:"4px 10px",color:"var(--colorTextSecondary)",fontSize:11},children:[(0,r.jsx)("span",{children:new Date(e.updatedAt).toLocaleString()}),(0,r.jsxs)("span",{children:["耗时 ",(e=>{let t=Math.max(0,Math.round(((e.completedAt||e.updatedAt)-e.createdAt)/1e3));if(t<60)return"".concat(t," 秒");let s=Math.floor(t/60),r=t%60;if(s<60)return r?"".concat(s," 分 ").concat(r," 秒"):"".concat(s," 分");let n=Math.floor(s/60),i=s%60;return i?"".concat(n," 小时 ").concat(i," 分"):"".concat(n," 小时")})(e)]})]}),("warning"===e.status||"failed"===e.status)&&(0,r.jsx)("div",{style:{marginTop:3,color:"failed"===e.status?"var(--colorError)":"var(--colorWarning)",fontSize:11,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:(null==(s=e.warningIssues)?void 0:s[0])||(null==(i=e.draft)||null==(n=i.validationIssues.find(e=>"error"===e.level||"warning"===e.level))?void 0:n.message)||"需复核"})]}),(0,r.jsxs)(g.A,{size:4,align:"center",children:[(0,r.jsx)(x.A,{color:"completed"===(l=e.status)?"success":"warning"===l?"warning":"failed"===l?"error":"processing",style:{margin:0,fontSize:10,lineHeight:"18px"},children:"completed"===(a=e.status)?"已完成":"warning"===a?"需复核":"failed"===a?"失败":"生成中"}),(0,r.jsxs)(x.A,{style:{margin:0,fontSize:10,lineHeight:"18px"},children:["#",t+1]}),(0,r.jsx)(h.A,{title:"确认删除?",onConfirm:t=>{null==t||t.stopPropagation(),ts(e.id)},children:(0,r.jsx)(d.Ay,{size:"small",danger:!0,icon:(0,r.jsx)(W.A,{}),onClick:e=>e.stopPropagation()})}),e0(e.status)&&(0,r.jsx)(h.A,{title:"确定中止此生成任务?",onConfirm:t=>{null==t||t.stopPropagation(),tl(e)},children:(0,r.jsx)(d.Ay,{size:"small",danger:!0,onClick:e=>e.stopPropagation(),children:"中止"})}),(0,r.jsx)(d.Ay,{size:"small",type:"primary",icon:e0(e.status)?(0,r.jsx)(U.A,{spin:!0}):(0,r.jsx)(O.A,{}),onClick:t=>{t.stopPropagation(),eY(e)},children:"打开"})]})]},e.id)})})}),(0,r.jsx)(v.A,{title:td,open:eW,onClose:()=>{eG(!1),eN.current&&(clearInterval(eN.current),eN.current=null)},width:800,maskClosable:!1,style:{borderRadius:"12px 0 0 12px"},styles:{body:{padding:"16px 24px"},header:{borderRadius:"12px 0 0 0",borderBottom:"1px solid var(--colorBorderSecondary)"}},extra:ev?(0,r.jsxs)(g.A,{wrap:!0,children:[(0,r.jsx)(d.Ay,{icon:(0,r.jsx)(X.A,{}),onClick:()=>{to()},children:e("documents.saveDraft")}),(0,r.jsx)(d.Ay,{icon:(0,r.jsx)(P.A,{}),loading:eb,onClick:()=>{ta("markdown")},children:"MD"}),(0,r.jsx)(d.Ay,{loading:eb,onClick:()=>{ta("html")},children:"HTML"}),(0,r.jsx)(d.Ay,{loading:eb,onClick:()=>{ta("docx")},children:"DOCX"}),(0,r.jsx)(d.Ay,{type:"primary",loading:eb,onClick:()=>{ta("pdf")},children:"PDF"})]}):eg&&"workflow"===eH?(0,r.jsx)(d.Ay,{danger:!0,onClick:()=>{(async()=>{eS&&await (0,Q.r)(eS).catch(()=>void 0),ee&&(ee.loading=!1,ee.error="用户中止",et(),ee=null),localStorage.removeItem("activeGenDocId"),eN.current&&(clearInterval(eN.current),eN.current=null),ef(!1),eB([]),eR(null),eG(!1),await eK(),t.info("已中止生成任务")})()},children:"中止任务"}):void 0,children:(0,r.jsxs)(g.A,{direction:"vertical",style:{width:"100%"},size:"middle",children:["workflow"===eH&&eL.length>0&&(0,r.jsx)(u.A,{size:"small",type:"inner",title:e("documents.executionStatus"),style:{maxHeight:360,overflow:"auto"},children:(0,r.jsx)(w.A,{direction:"vertical",size:"small",current:eQ,items:eL.map(e=>{let t;return{title:e.title,description:(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{children:e.description}),(0,r.jsx)("div",{style:{marginTop:4},children:e.subSteps.map(e=>{var t;return(0,r.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:4,fontSize:12,color:"var(--colorTextSecondary)"},children:["process"===(t=e.status)?(0,r.jsx)(q.A,{}):"finish"===t?(0,r.jsx)(L.A,{}):"warning"===t?(0,r.jsx)(F.A,{style:{color:"var(--colorWarning)"}}):"error"===t?(0,r.jsx)(W.A,{}):(0,r.jsx)("span",{style:{display:"inline-block",height:6,width:6,borderRadius:"50%",background:"var(--colorTextTertiary)"}}),(0,r.jsx)("span",{children:e.title})]},e.key)})})]}),status:"warning"===(t=e.status)?"finish":t,icon:"process"===e.status?(0,r.jsx)(q.A,{}):"warning"===e.status?(0,r.jsx)(F.A,{style:{color:"var(--colorWarning)"}}):e.icon}})})}),"workflow"===eH&&eg&&0===eL.length&&(0,r.jsx)("div",{style:{textAlign:"center",padding:40},children:(0,r.jsx)(j.A,{tip:"正在准备生成…"})}),ev&&(0,r.jsx)("div",{ref:l,children:(0,r.jsx)(u.A,{size:"small",title:"编辑器",children:(0,r.jsx)(y.A,{items:[{key:"edit",label:e("documents.edit"),children:(0,r.jsx)(Y,{rows:22,value:ej,onChange:e=>ey(e.target.value)})},{key:"chapters-facts",label:"章节与事实",children:(0,r.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:16,maxHeight:500,overflow:"auto"},children:[ev.chapters.length>0&&(0,r.jsxs)("div",{children:[(0,r.jsxs)($,{strong:!0,style:{fontSize:13,marginBottom:8,display:"block"},children:["章节 (",ev.chapters.length,")"]}),(0,r.jsx)(m.A,{size:"small",dataSource:ev.chapters,renderItem:e=>(0,r.jsx)(m.A.Item,{actions:[(0,r.jsx)(d.Ay,{size:"small",icon:(0,r.jsx)(V.A,{}),loading:ez===e.id,onClick:()=>{tc(e)},children:"重新生成"},"regen")],children:(0,r.jsx)(m.A.Item.Meta,{title:e.title,description:"证据: ".concat(e.evidence.length," \xb7 缺失: ").concat(e.missingFacts.length)})})})]}),ev.structuredFacts.length>0&&(0,r.jsxs)("div",{children:[(0,r.jsxs)($,{strong:!0,style:{fontSize:13,marginBottom:8,display:"block"},children:["结构化事实 (",ev.structuredFacts.length,")"]}),(0,r.jsx)(A.A,{size:"small",column:1,bordered:!0,children:ev.structuredFacts.map((e,t)=>(0,r.jsxs)(A.A.Item,{label:e.key,children:[(0,r.jsx)("span",{children:e.value}),(0,r.jsx)(x.A,{style:{marginLeft:8},children:e.confidence.toFixed(2)}),(0,r.jsx)($,{type:"secondary",style:{fontSize:11,marginLeft:8},children:e.sourceFile})]},t))})]})]})},{key:"sources-missing",label:"来源与缺失",children:(0,r.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:16},children:[(0,r.jsxs)("div",{children:[(0,r.jsxs)($,{strong:!0,style:{fontSize:13,marginBottom:8,display:"block"},children:["引用来源 (",ev.sources.length,")"]}),0===ev.sources.length?(0,r.jsx)(p.A,{description:"暂无"}):(0,r.jsx)("div",{style:{display:"flex",flexWrap:"wrap",gap:4},children:ev.sources.map(e=>(0,r.jsxs)(x.A,{color:"blue",children:[e.filePath," (",e.count,")"]},e.filePath))})]}),(0,r.jsxs)("div",{children:[(0,r.jsxs)($,{strong:!0,style:{fontSize:13,marginBottom:8,display:"block"},children:["缺失项 (",ev.missingItems.length,")"]}),0===ev.missingItems.length?(0,r.jsx)(p.A,{description:"无缺失"}):(0,r.jsx)(m.A,{size:"small",dataSource:ev.missingItems,renderItem:e=>(0,r.jsx)(m.A.Item,{children:e})})]})]})},{key:"validation",label:"校验 (".concat(ev.validationIssues.length,")"),children:0===ev.validationIssues.length?(0,r.jsx)(p.A,{description:"校验通过"}):(0,r.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:8,maxHeight:500,overflow:"auto"},children:[ev.validationIssues.map(e=>(0,r.jsxs)("div",{style:{border:"1px solid var(--colorBorderSecondary)",borderRadius:8,padding:12},children:[(0,r.jsx)(x.A,{color:"error"===e.level?"error":"warning"===e.level?"warning":"blue",children:e.level}),(0,r.jsx)("div",{style:{marginTop:6,whiteSpace:"pre-wrap",overflowWrap:"anywhere",wordBreak:"break-all",lineHeight:1.6},children:e.message}),e.suggestion&&(0,r.jsx)("div",{style:{marginTop:6,color:"var(--colorTextSecondary)",whiteSpace:"pre-wrap",overflowWrap:"anywhere",wordBreak:"break-all"},children:e.suggestion})]},"".concat(e.level,"-").concat(e.message))),ev.exportGate.checklist.length>0&&(0,r.jsxs)("div",{style:{marginTop:8},children:[(0,r.jsx)($,{strong:!0,style:{fontSize:13,marginBottom:8,display:"block"},children:"导出门禁"}),(0,r.jsx)(m.A,{size:"small",dataSource:ev.exportGate.checklist,renderItem:e=>(0,r.jsxs)(m.A.Item,{children:[(0,r.jsx)($,{style:{overflowWrap:"anywhere",wordBreak:"break-word"},children:e.label}),(0,r.jsx)(x.A,{color:e.passed?"success":"error",children:e.passed?"PASS":"FAIL"})]})})]})]})},{key:"stages",label:"执行阶段 (".concat(ev.executionStages.length,")"),children:(0,r.jsx)(m.A,{size:"small",dataSource:ev.executionStages,renderItem:e=>(0,r.jsxs)(m.A.Item,{children:[(0,r.jsx)(m.A.Item.Meta,{avatar:es[e.type]||(0,r.jsx)(R.A,{}),title:(0,r.jsx)($,{style:{overflowWrap:"anywhere",wordBreak:"break-word"},children:"".concat(en[e.type]||e.type," \xb7 ").concat(e.roleId)}),description:(0,r.jsx)($,{type:"secondary",style:{whiteSpace:"pre-wrap",overflowWrap:"anywhere",wordBreak:"break-word"},children:e.message})}),(0,r.jsx)(x.A,{color:"success"===e.status?"success":"failed"===e.status?"error":"skipped"===e.status?"default":"warning",children:e.status})]})})}]})})})]})}),(0,r.jsx)(k.A,{maskClosable:!1,title:e("documents.templateEditor"),open:e_,onOk:()=>{e4()},onCancel:()=>eD(!1),width:760,centered:!0,okText:e("common.save"),cancelText:e("common.cancel"),children:(0,r.jsxs)(o.A,{form:s,layout:"vertical",requiredMark:"optional",children:[(0,r.jsxs)(S.A,{gutter:12,children:[(0,r.jsx)(o.A.Item,{name:"id",hidden:!0,children:(0,r.jsx)(i.A,{})}),(0,r.jsx)(I.A,{xs:24,md:8,children:(0,r.jsx)(o.A.Item,{name:"name",label:e("documents.templateName"),rules:[{required:!0}],children:(0,r.jsx)(i.A,{})})}),(0,r.jsx)(I.A,{xs:24,md:8,children:(0,r.jsx)(o.A.Item,{name:"category",label:e("documents.templateCategory"),children:(0,r.jsx)(i.A,{})})}),(0,r.jsx)(I.A,{xs:24,md:8,children:(0,r.jsx)(o.A.Item,{name:"outputTitle",label:e("documents.outputTitle"),children:(0,r.jsx)(i.A,{})})}),(0,r.jsx)(I.A,{xs:24,md:12,children:(0,r.jsx)(o.A.Item,{name:"description",label:e("documents.templateDescription"),children:(0,r.jsx)(i.A,{})})})]}),(0,r.jsx)(o.A.Item,{name:"projectRoleConfigId",label:e("documents.projectRoleConfig"),rules:[{required:!0,message:e("documents.projectRoleConfigRequired")}],children:(0,r.jsx)(b.A,{showSearch:!0,placeholder:e("documents.projectRoleConfigRequired"),options:eX})}),(0,r.jsx)(o.A.Item,{name:"documentSpecId",label:e("documents.documentSpec"),children:(0,r.jsx)(b.A,{allowClear:!0,showSearch:!0,placeholder:e("documents.documentSpecPlaceholder"),options:eV})}),(0,r.jsx)(o.A.List,{name:"chapters",children:(e,t)=>{let{add:s,remove:n}=t;return(0,r.jsxs)("div",{children:[(0,r.jsxs)(g.A,{style:{marginBottom:8},children:[(0,r.jsx)($,{strong:!0,children:"章节结构"}),(0,r.jsx)(d.Ay,{size:"small",icon:(0,r.jsx)(G.A,{}),onClick:()=>s({id:"chapter-".concat(Date.now()),title:"",purpose:"",queries:[],requiredFacts:[]}),children:"添加章节"})]}),e.map(e=>(0,r.jsx)(u.A,{size:"small",style:{marginBottom:8},children:(0,r.jsxs)(S.A,{gutter:8,children:[(0,r.jsx)(I.A,{span:6,children:(0,r.jsx)(o.A.Item,{name:[e.name,"id"],label:"章节 ID",rules:[{required:!0}],children:(0,r.jsx)(i.A,{})})}),(0,r.jsx)(I.A,{span:8,children:(0,r.jsx)(o.A.Item,{name:[e.name,"title"],label:"标题",rules:[{required:!0}],children:(0,r.jsx)(i.A,{})})}),(0,r.jsx)(I.A,{span:8,children:(0,r.jsx)(o.A.Item,{name:[e.name,"purpose"],label:"目的",children:(0,r.jsx)(i.A,{})})}),(0,r.jsx)(I.A,{span:2,children:(0,r.jsx)(d.Ay,{danger:!0,size:"small",onClick:()=>n(e.name),children:"删除"})}),(0,r.jsx)(I.A,{span:12,children:(0,r.jsx)(o.A.Item,{name:[e.name,"queriesText"],label:"查询词(每行一个)",children:(0,r.jsx)(Y,{rows:3})})}),(0,r.jsx)(I.A,{span:12,children:(0,r.jsx)(o.A.Item,{name:[e.name,"requiredFactsText"],label:"必需事实(每行一个)",children:(0,r.jsx)(Y,{rows:3})})})]})},e.key))]})}})]})})]})}}},e=>{e.O(0,[347,8787,4277,7889,4833,7271,7576,2884,9144,9189,3455,5292,4052,6506,4427,3057,2225,6578,636,6593,8792],()=>e(e.s=16403)),_N_E=e.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6920],{2548:(e,s,l)=>{"use strict";l.r(s),l.d(s,{default:()=>D});var i=l(65321),c=l(35292),r=l(68787),n=l(2256),d=l(38770),t=l(11702),x=l(9730),h=l(13399),a=l(55122),j=l(15622),o=l(71330),m=l(8579),g=l(66926),p=l(7851),A=l(84742),u=l(32620);let{Paragraph:k,Title:N,Text:w}=c.A,y=[{icon:(0,i.jsx)(o.A,{}),title:"准备阶段",color:"blue",items:["配置模型","上传知识库资料","创建提示词"]},{icon:(0,i.jsx)(m.A,{}),title:"编排阶段",color:"purple",items:["创建文件角色","创建提示词角色","创建项目角色配置并排序"]},{icon:(0,i.jsx)(g.A,{}),title:"生成阶段",color:"geekblue",items:["创建模板","后台生成轮询","动态执行状态"]},{icon:(0,i.jsx)(p.A,{}),title:"交付阶段",color:"green",items:["审查事实和来源","检查导出门禁","导出正式文件"]}],z=[{title:"第一步:配置模型",goal:"让系统具备 LLM JSON 事实抽取、章节生成和校验能力。",path:"左侧菜单 → 模型配置",steps:["点击新增供应商,选择 OpenAI、DeepSeek、OpenRouter、Ollama 或其他兼容 OpenAI 协议的服务。","填写 Base URL、API Key、供应商名称并保存。","添加模型名称,建议至少准备一个用于生成和推理的模型。","把模型设置为当前启用模型。","执行健康检查,确认模型可调用。"],checks:["模型健康检查通过","至少有一个启用模型","API Key 和 Base URL 正确"],tips:"如果模型不可用,系统会回退到本地确定性抽取,但事实抽取质量会下降。"},{title:"第二步:上传知识库资料",goal:"把项目资料放入系统,让后续文件角色可以绑定。",path:"左侧菜单 → 知识库 → 文件管理 / 管理",steps:["上传招标文件、工程概况、合同条件、技术要求等项目事实资料。","上传工程量清单、劳动力计划、机械设备计划、材料计划等表格资料。","上传图纸目录、图纸说明、设计说明等图纸类资料。","上传规范、规程、企业标准、评分办法、编制要求等规则类资料。","等待索引完成,并在知识库文件列表中确认文件可见。"],checks:["文件上传成功","索引完成","文件能在文件角色绑定下拉框中看到"],tips:"表格资料最好有清晰表头;图纸资料最好附带目录或文字说明。"},{title:"第三步:创建提示词",goal:"定义每个执行阶段的模型行为。",path:"左侧菜单 → 提示词管理",steps:["创建事实抽取提示词:要求只抽取资料中明确出现的事实,返回结构化 JSON,不允许编造。","创建章节生成提示词:定义文档类型、专业语气、章节风格、引用事实和禁止事项。","创建校验提示词:检查工程名称、工期、质量目标、数字、表格引用、章节完整性。","创建格式化提示词:定义封面、目录、编号、表格、分页和正式输出样式。","保存后确认提示词能在提示词角色绑定下拉框中看到。"],checks:["事实抽取提示词已创建","章节生成提示词已创建","校验或格式化提示词已创建"],tips:"提示词越明确,生成结果越稳定。建议明确写上“没有来源的数据不要写”。"},{title:"第四步:创建文件角色",goal:"告诉系统每个文件在生成流程中的用途。",path:"左侧菜单 → 角色配置 → 新建文件角色",steps:["填写角色名称,例如“招标文件事实源”“工程量清单表格”“图纸说明文件”。","选择处理类型:规则文件、项目事实文件、表格数据、图纸文件、规范文件或参考资料。","绑定对应知识库文件。","保存角色。","按文件用途创建多个文件角色,不建议把不同用途资料混在一个角色里。"],checks:["文件角色有名称","已选择处理类型","已绑定知识库文件"],tips:"处理类型很重要:系统会根据它决定是否进行表格解析、事实抽取、规则引用或来源追踪。"},{title:"第五步:创建提示词角色",goal:"告诉系统每条提示词在哪个执行阶段使用。",path:"左侧菜单 → 角色配置 → 新建提示词角色",steps:["填写角色名称,例如“施工组织设计事实抽取”“章节生成规则”“导出前校验规则”。","选择执行类型:事实抽取、章节生成、校验、格式化或参考。","绑定对应提示词。","保存角色。","一个执行阶段可以有多个提示词角色,后续在项目角色配置中排序。"],checks:["提示词角色有名称","已选择执行类型","已绑定提示词"],tips:"角色名称可以完全自定义,但执行类型必须选对。系统依赖执行类型驱动多阶段流程。"},{title:"第六步:创建项目角色配置并排序",goal:"把文件角色和提示词角色组合成一个可复用的项目生成方案。",path:"左侧菜单 → 角色配置 → 新建项目配置",steps:["填写配置名称,例如“某项目施工组织设计配置”。","添加文件角色,并设置顺序。推荐:规则文件 → 项目事实文件 → 表格数据 → 图纸文件 → 规范文件 → 参考资料。","添加提示词角色,并设置顺序。推荐:事实抽取 → 章节生成 → 校验 → 格式化 → 参考。","保存项目角色配置。","后续模板只绑定项目角色配置,不再重复绑定文件和提示词。"],checks:["至少包含一个文件角色","至少包含一个提示词角色","顺序符合业务流程"],tips:"排序决定系统读取资料和应用提示词的优先级,是生产级生成稳定性的关键。"},{title:"第七步:创建模板并绑定项目配置",goal:"定义要生成哪种文档,以及使用哪套项目角色配置。",path:"左侧菜单 → 生成编辑 → 新建模板",steps:["填写模板 ID。ID 由系统生成或保持唯一,不建议手动频繁修改。","填写模板名称,例如“施工组织设计”“技术标文件”“专项施工方案”。","填写分类、输出标题和模板说明。","选择第六步创建的项目角色配置。","保存模板。"],checks:["模板名称清晰","输出标题正确","已绑定项目角色配置"],tips:"模板负责文档入口;项目角色配置负责资料、提示词和顺序。两者分离后更容易复用。"},{title:"第八步:执行生成并查看状态",goal:"让用户明确知道生成流程进行到哪一步。",path:"左侧菜单 → 生成编辑 → 选择模板 → 点击生成",steps:["点击生成按钮后,页面会出现“执行状态”卡片。","执行状态会根据当前模板、文档规范包、文件角色、提示词角色和章节自动生成,不是固定工程流程。","当前执行节点会高亮显示,子状态会展示正在处理的章节、事实字段、文件角色或门禁规则。","生成任务在后台运行,页面通过 documentId 轮询;切换页面后回到生成编辑仍可恢复状态。","生成完成后,系统会用后端真实 executionStages 回填最终状态。","如果导出门禁未通过,生成完成节点会提示需要检查校验结果。"],checks:["执行状态 Card 出现","当前节点有高亮","生成完成后有执行阶段结果"],tips:"如果长时间停留在某一步,优先检查模型配置、知识库索引和文件角色绑定。"},{title:"第九步:审查结果并导出",goal:"确保文档可追溯、可校验、可交付,同时能区分阻断问题和可复核 warning。",path:"生成编辑 → 编辑器下方 Tabs → 导出按钮 / 草稿历史",steps:["查看“结构化事实”,确认事实字段是否按文档规范包动态 schema 抽取,并检查冲突提示。","查看“来源”,确认事实来自规范包要求的文件角色和绑定资料。","查看“缺失项”,补齐缺失资料或调整角色配置。","查看“校验”,优先处理 error;warning 表示可导出但建议复核。","查看“导出门禁”,真实 blockingIssues 会阻断 PDF/DOCX 导出,普通 warning 不阻断。","在草稿历史中确认生成状态、warning 原因、整体生成耗时,并可删除不需要的记录。","可以先导出 HTML 预览排版,再导出 DOCX/PDF。"],checks:["无真实阻断问题","关键事实有来源","章节有证据","warning 原因已复核","导出文件可打开"],tips:"导出不是简单放行:真实阻断仍会拦截;生成完成但存在可复核问题时显示 warning,用户可以继续导出并按原因优化资料。"}];function D(){let e=(0,u.Vr)();return(0,i.jsxs)("div",{className:"space-y-6 animateFadeIn",children:[(0,i.jsxs)(r.A,{className:"cardGlass",styles:{body:{padding:24}},children:[(0,i.jsx)(N,{level:2,className:"mb-2",children:e("guide.title")}),(0,i.jsx)(k,{className:"pageDesc mb-0",children:e("guide.description")})]}),(0,i.jsx)(n.A,{gutter:[16,16],children:y.map(e=>(0,i.jsx)(d.A,{xs:24,md:12,xl:6,children:(0,i.jsx)(r.A,{className:"h-full",title:(0,i.jsxs)("span",{className:"flex items-center gap-2",children:[e.icon,e.title]}),children:(0,i.jsx)("div",{className:"space-y-2",children:e.items.map(s=>(0,i.jsx)("div",{children:(0,i.jsx)(t.A,{color:e.color,children:s})},s))})})},e.title))}),(0,i.jsx)(r.A,{title:e("guide.fullFlow"),children:(0,i.jsx)(x.A,{direction:"vertical",items:z.map(e=>({title:e.title,description:"".concat(e.goal,"(入口:").concat(e.path,")")}))})}),(0,i.jsx)(r.A,{title:"详细步骤说明:照着做即可跑通",children:(0,i.jsx)(h.A,{mode:"left",items:z.map(e=>({dot:(0,i.jsx)(A.A,{}),children:(0,i.jsxs)("div",{className:"space-y-3",children:[(0,i.jsx)(N,{level:4,className:"mb-0",children:e.title}),(0,i.jsxs)(k,{children:[(0,i.jsx)(w,{strong:!0,children:"目标:"}),e.goal]}),(0,i.jsxs)(k,{children:[(0,i.jsx)(w,{strong:!0,children:"入口:"}),e.path]}),(0,i.jsxs)("div",{children:[(0,i.jsx)(w,{strong:!0,children:"操作步骤:"}),(0,i.jsx)("ol",{className:"list-decimal pl-6 mt-2 space-y-1",children:e.steps.map(e=>(0,i.jsx)("li",{children:e},e))})]}),(0,i.jsxs)("div",{children:[(0,i.jsx)(w,{strong:!0,children:"完成检查:"}),(0,i.jsx)("div",{className:"mt-2 flex flex-wrap gap-2",children:e.checks.map(e=>(0,i.jsx)(t.A,{color:"success",children:e},e))})]}),(0,i.jsxs)(k,{children:[(0,i.jsx)(w,{strong:!0,children:"提示:"}),e.tips]}),(0,i.jsx)(a.A,{})]})}))})}),(0,i.jsxs)(n.A,{gutter:[16,16],children:[(0,i.jsx)(d.A,{xs:24,lg:12,children:(0,i.jsxs)(r.A,{title:e("guide.roleDesign"),children:[(0,i.jsx)(k,{children:e("guide.roleDesignDesc")}),(0,i.jsxs)("div",{className:"space-y-3",children:[(0,i.jsxs)("div",{children:[(0,i.jsx)(t.A,{color:"blue",children:"file"}),(0,i.jsx)(w,{strong:!0,children:e("guide.fileRole")}),(0,i.jsx)(k,{children:e("guide.fileRoleDesc")})]}),(0,i.jsxs)("div",{children:[(0,i.jsx)(t.A,{color:"purple",children:"prompt"}),(0,i.jsx)(w,{strong:!0,children:e("guide.promptRole")}),(0,i.jsx)(k,{children:e("guide.promptRoleDesc")})]}),(0,i.jsxs)("div",{children:[(0,i.jsx)(t.A,{color:"geekblue",children:"config"}),(0,i.jsx)(w,{strong:!0,children:e("guide.projectConfig")}),(0,i.jsx)(k,{children:e("guide.projectConfigDesc")})]})]})]})}),(0,i.jsx)(d.A,{xs:24,lg:12,children:(0,i.jsxs)(r.A,{title:e("guide.generationEngine"),children:[(0,i.jsx)(k,{children:e("guide.generationEngineDesc")}),(0,i.jsxs)("div",{className:"space-y-2",children:[(0,i.jsx)(t.A,{children:e("roles.factExtraction")}),(0,i.jsx)(t.A,{children:e("roles.chapterGeneration")}),(0,i.jsx)(t.A,{children:e("roles.validation")}),(0,i.jsx)(t.A,{children:e("roles.formatting")}),(0,i.jsx)(t.A,{children:e("documents.exportGate")})]})]})})]}),(0,i.jsx)(r.A,{title:"我的数据、内置示例和门禁规则说明",children:(0,i.jsxs)(n.A,{gutter:[16,16],children:[(0,i.jsx)(d.A,{xs:24,md:8,children:(0,i.jsx)(r.A,{size:"small",title:"默认优先看我的数据",children:(0,i.jsx)(k,{children:"文件、提示词、角色配置和规范包默认优先展示用户自己创建的内容。内置示例只用于学习,不能直接覆盖或删除,需要使用时请先复制。"})})}),(0,i.jsx)(d.A,{xs:24,md:8,children:(0,i.jsx)(r.A,{size:"small",title:"自定义门禁类型会执行",children:(0,i.jsx)(k,{children:"用户在文档规范包中创建的门禁类型,需要选择校验对象和校验方式。保存后它会和系统门禁类型一样参与生成校验,不只是备注说明。"})})}),(0,i.jsx)(d.A,{xs:24,md:8,children:(0,i.jsx)(r.A,{size:"small",title:"上传后关注索引状态",children:(0,i.jsx)(k,{children:"文件上传完成后,知识库索引会继续在后台写入。请在文件管理页查看状态,如果失败,页面会展示原因,方便重新配置模型或重试。"})})})]})}),(0,i.jsx)(r.A,{title:"动态 schema、证据和执行状态说明",children:(0,i.jsxs)(n.A,{gutter:[16,16],children:[(0,i.jsx)(d.A,{xs:24,md:8,children:(0,i.jsx)(r.A,{size:"small",title:"动态事实 schema",children:(0,i.jsx)(k,{children:"系统不会写死工程字段。文档规范包的事实字段、模板章节 requiredFacts、字段 sourceRoleIds 和 extractionHint 会共同组成抽取 schema,并驱动事实抽取、冲突检测和导出门禁。"})})}),(0,i.jsx)(d.A,{xs:24,md:8,children:(0,i.jsx)(r.A,{size:"small",title:"结构化资源证据",children:(0,i.jsx)(k,{children:"文本、PDF/Word、Excel/CSV、图片、地图图纸和其他附件都会被整理成资源证据,包含文件角色、处理类型、正文用途、关联事实和证据片段,模型据此理解资料关系。"})})}),(0,i.jsx)(d.A,{xs:24,md:8,children:(0,i.jsx)(r.A,{size:"small",title:"动态执行状态",children:(0,i.jsx)(k,{children:"生成编辑页的执行节点会随模板、规范包、文件角色、提示词角色、章节和门禁规则变化;用户生成不同项目文件时看到的是对应项目的流程,而不是固定示例流程。"})})})]})}),(0,i.jsx)(r.A,{title:"生成记录、warning 和导出门禁怎么理解",children:(0,i.jsxs)(n.A,{gutter:[16,16],children:[(0,i.jsx)(d.A,{xs:24,lg:8,children:(0,i.jsxs)(r.A,{size:"small",title:"草稿历史记录",children:[(0,i.jsxs)(k,{children:["每次后台生成都会写入全局项目目录 ",(0,i.jsxs)(w,{code:!0,children:["~/.customize-agent/projects/","{projectId}","/generatedDocuments"]}),"。记录会保存标题、模板、状态、创建时间、完成时间、生成耗时、正文、结构化结果和资源引用。"]}),(0,i.jsxs)("ul",{className:"list-disc pl-5 space-y-1",children:[(0,i.jsx)("li",{children:"completed:生成完成且无需要关注的问题。"}),(0,i.jsx)("li",{children:"warning:生成完成,但存在可复核问题。"}),(0,i.jsx)("li",{children:"failed:生成失败,需要查看错误原因。"}),(0,i.jsx)("li",{children:"generating:后台任务仍在执行,可轮询恢复。"})]})]})}),(0,i.jsx)(d.A,{xs:24,lg:8,children:(0,i.jsxs)(r.A,{size:"small",title:"warning 不是失败",children:[(0,i.jsx)(k,{children:"warning 用于提醒用户“文档已经生成,但建议复核”。例如必需事实没有在最佳来源角色中抽到、部分来源需要人工确认、格式或内容有优化建议。warning 会显示在草稿历史和校验详情中,并保留导出能力。"}),(0,i.jsx)(k,{children:"如果是明确阻断问题,例如正文包含临时图片生成 URL、出现“资料未提供”占位、真实 blockingIssues 未解决,则导出门禁仍会阻断 DOCX/PDF。"})]})}),(0,i.jsx)(d.A,{xs:24,lg:8,children:(0,i.jsxs)(r.A,{size:"small",title:"导出门禁规则",children:[(0,i.jsx)(k,{children:"门禁分为“真实阻断”和“复核建议”。系统不会因为普通 warning 简单禁止导出,但会在出现阻断级问题时保护交付质量。"}),(0,i.jsxs)("ul",{className:"list-disc pl-5 space-y-1",children:[(0,i.jsx)("li",{children:"Markdown/HTML 更适合快速预览和人工调整。"}),(0,i.jsx)("li",{children:"DOCX/PDF 会启用真实门禁检查。"}),(0,i.jsx)("li",{children:"草稿历史可保留多个版本,便于对比和再次导出。"})]})]})})]})}),(0,i.jsx)(r.A,{title:"生成资源和知识库的关系",children:(0,i.jsxs)(n.A,{gutter:[16,16],children:[(0,i.jsx)(d.A,{xs:24,md:12,children:(0,i.jsxs)(r.A,{size:"small",title:"生成资源自动回流知识库",children:[(0,i.jsx)(k,{children:"模型生成的图片、封面或后处理资源会登记到生成资源管理页,并自动回流到 knowledgeBase/生成资源 下完成索引。"}),(0,i.jsx)(k,{children:"后续文档可以继续检索和复用这些已生成资源,资源管理页也会展示入库状态。"})]})}),(0,i.jsx)(d.A,{xs:24,md:12,children:(0,i.jsxs)(r.A,{size:"small",title:"资源预览和坏图处理",children:[(0,i.jsx)(k,{children:"资源预览会从全局 generatedDocuments 目录解析文件,不依赖当前页面临时路径。图片下载会识别“image is generating”等占位响应,并校验 PNG/JPEG/WebP 字节,避免把占位文本当成图片保存。"}),(0,i.jsx)(k,{children:"如果预览失败,优先查看资源管理页中的文件路径、资源状态和原始生成记录。"})]})})]})}),(0,i.jsx)(r.A,{title:"文件角色处理类型大白话说明",children:(0,i.jsxs)(n.A,{gutter:[16,16],children:[(0,i.jsx)(d.A,{xs:24,md:12,children:(0,i.jsx)(r.A,{size:"small",title:"规则文件",children:(0,i.jsx)(k,{children:"用来告诉系统“必须怎么写、不能怎么写、按什么标准判断”。适合放评分办法、甲方编制要求、攻略写作要求、输出格式要求。生成时会优先作为约束使用。"})})}),(0,i.jsx)(d.A,{xs:24,md:12,children:(0,i.jsx)(r.A,{size:"small",title:"项目事实文件",children:(0,i.jsx)(k,{children:"用来告诉系统“真实情况是什么”。适合放项目概况、合同摘要、招标文件关键信息、游戏角色资料、产品资料。事实字段通常从这里抽取。"})})}),(0,i.jsx)(d.A,{xs:24,md:12,children:(0,i.jsx)(r.A,{size:"small",title:"表格数据",children:(0,i.jsx)(k,{children:"用来解析结构化数据。适合放 Excel、CSV、清单、计划表、评分表、推荐指数表。系统会读取 Sheet、表头、行列和来源范围。"})})}),(0,i.jsx)(d.A,{xs:24,md:12,children:(0,i.jsx)(r.A,{size:"small",title:"图纸文件",children:(0,i.jsx)(k,{children:"用来表达空间关系、路线、结构、站位或设计说明。可以是图纸目录、设计说明、路线示意、阵型图说明。没有 CAD 时也可以用文字图纸说明。"})})}),(0,i.jsx)(d.A,{xs:24,md:12,children:(0,i.jsx)(r.A,{size:"small",title:"规范文件",children:(0,i.jsx)(k,{children:"用来作为专业依据。适合放国家规范、行业标准、企业标准、攻略结构规范、质量标准。校验和生成时会把它当成依据。"})})}),(0,i.jsx)(d.A,{xs:24,md:12,children:(0,i.jsx)(r.A,{size:"small",title:"参考资料",children:(0,i.jsx)(k,{children:"只作为辅助阅读材料,不建议放关键事实。适合放图片来源、公开网页链接、背景资料、案例资料。系统可以参考,但不应把它当成强事实。"})})})]})}),(0,i.jsx)(r.A,{title:"推荐资料清单",children:(0,i.jsxs)(n.A,{gutter:[16,16],children:[(0,i.jsx)(d.A,{xs:24,md:8,children:(0,i.jsx)(r.A,{size:"small",title:"必备资料",children:(0,i.jsxs)("ul",{className:"list-disc pl-5",children:[(0,i.jsx)("li",{children:"项目事实文件"}),(0,i.jsx)("li",{children:"招标或编制规则"}),(0,i.jsx)("li",{children:"章节生成提示词"})]})})}),(0,i.jsx)(d.A,{xs:24,md:8,children:(0,i.jsx)(r.A,{size:"small",title:"强烈建议",children:(0,i.jsxs)("ul",{className:"list-disc pl-5",children:[(0,i.jsx)("li",{children:"表格数据"}),(0,i.jsx)("li",{children:"图纸说明"}),(0,i.jsx)("li",{children:"规范或企业标准"})]})})}),(0,i.jsx)(d.A,{xs:24,md:8,children:(0,i.jsx)(r.A,{size:"small",title:"导出前确认",children:(0,i.jsxs)("ul",{className:"list-disc pl-5",children:[(0,i.jsx)("li",{children:"无 error 校验"}),(0,i.jsx)("li",{children:"事实有来源"}),(0,i.jsx)("li",{children:"导出门禁通过"})]})})})]})}),(0,i.jsx)(r.A,{title:"生产级生成前检查清单",children:(0,i.jsxs)(n.A,{gutter:[16,16],children:[(0,i.jsx)(d.A,{xs:24,md:12,xl:6,children:(0,i.jsx)(r.A,{size:"small",title:"资料完整性",children:(0,i.jsxs)("ul",{className:"list-disc pl-5 space-y-1",children:[(0,i.jsx)("li",{children:"事实源、规则源、表格源、图片/图纸源分开绑定。"}),(0,i.jsx)("li",{children:"关键事实在知识库检索中可以搜索到。"}),(0,i.jsx)("li",{children:"表格有清晰表头,图片和图纸有说明文字。"})]})})}),(0,i.jsx)(d.A,{xs:24,md:12,xl:6,children:(0,i.jsx)(r.A,{size:"small",title:"角色配置",children:(0,i.jsxs)("ul",{className:"list-disc pl-5 space-y-1",children:[(0,i.jsx)("li",{children:"文件角色处理类型选对。"}),(0,i.jsx)("li",{children:"提示词角色执行类型选对。"}),(0,i.jsx)("li",{children:"项目角色配置排序符合生成流程。"})]})})}),(0,i.jsx)(d.A,{xs:24,md:12,xl:6,children:(0,i.jsx)(r.A,{size:"small",title:"规范包",children:(0,i.jsxs)("ul",{className:"list-disc pl-5 space-y-1",children:[(0,i.jsx)("li",{children:"required fact 不要过度配置。"}),(0,i.jsx)("li",{children:"sourceRoleIds 只绑定真正应该提供该事实的角色。"}),(0,i.jsx)("li",{children:"gateRules 区分 error 和 warning。"})]})})}),(0,i.jsx)(d.A,{xs:24,md:12,xl:6,children:(0,i.jsx)(r.A,{size:"small",title:"交付检查",children:(0,i.jsxs)("ul",{className:"list-disc pl-5 space-y-1",children:[(0,i.jsx)("li",{children:"草稿历史记录状态合理。"}),(0,i.jsx)("li",{children:"warning 原因已经阅读。"}),(0,i.jsx)("li",{children:"导出文件打开正常,图片和表格可读。"})]})})})]})}),(0,i.jsx)(r.A,{title:"常见问题和处理建议",children:(0,i.jsx)(j.A,{items:[{key:"warning-export",label:"为什么生成完成后显示 warning,但仍然可以导出?",children:(0,i.jsx)(k,{children:"warning 表示文档已生成,但存在建议复核的问题,例如来源角色不完全匹配、某些事实需要人工确认或格式可优化。它不是失败,也不是导出阻断。只有真实 blockingIssues 或 error 级门禁问题才会阻断 DOCX/PDF 导出。"})},{key:"missing-facts",label:"为什么提示必需事实缺失?",children:(0,i.jsx)(k,{children:"优先检查文档规范包中的 factFields、sourceRoleIds、模板章节 requiredFacts 和文件角色绑定。很多情况下不是模型失败,而是资料没有被绑定到正确角色,或字段要求比资料实际内容更严格。"})},{key:"draft-duration",label:"草稿历史里的耗时怎么计算?",children:(0,i.jsx)(k,{children:"耗时使用生成记录的 createdAt 到 completedAt 计算;旧记录或未完成记录会使用 updatedAt 兜底。它用于判断本次生成链路整体成本,包括知识库检索、事实抽取、章节生成、资源处理、校验和格式化。"})},{key:"asset-index",label:"生成资源会如何进入知识库?",children:(0,i.jsx)(k,{children:"生成资源完成后会自动回流到 knowledgeBase/生成资源 并建立索引,便于后续模板继续复用。资源管理页会展示入库状态,错误资源可以删除后重新生成。"})}]})}),(0,i.jsx)(j.A,{items:[{key:"prepare",label:e("guide.prepareTitle"),children:(0,i.jsx)(k,{children:e("guide.prepareContent")})},{key:"roles",label:e("guide.rolesTitle"),children:(0,i.jsx)(k,{children:e("guide.rolesContent")})},{key:"template",label:e("guide.templateTitle"),children:(0,i.jsx)(k,{children:e("guide.templateContent")})},{key:"generate",label:e("guide.generateTitle"),children:(0,i.jsx)(k,{children:e("guide.generateContent")})},{key:"qa",label:e("guide.qaTitle"),children:(0,i.jsx)(k,{children:e("guide.qaContent")})}]})]})}},34899:(e,s,l)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/guide",function(){return l(2548)}])}},e=>{e.O(0,[347,8787,4277,4833,5292,4427,8326,636,6593,8792],()=>e(e.s=34899)),_N_E=e.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[5207],{838:(e,t)=>{"use strict";t.A={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z"}}]},name:"down",theme:"outlined"}},4184:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>g});var l=s(65321),r=s(43220),n=s.n(r),i=s(97109),a=s(35292),c=s(68787),o=s(33442),d=s(7576),u=s(85114),h=s(48318),_=s(76506),m=s(11702),p=s(85493),x=s(42700),j=s(84253),y=s(30486),f=s(6578),b=s(14569),w=s.n(b);let{Paragraph:v}=a.A;function A(e){return"number"==typeof e?e.toFixed(2):"-"}function g(){var e,t,s;let[r,a]=(0,i.useState)(""),[b,g]=(0,i.useState)(!1),[C,k]=(0,i.useState)([]),[S,E]=(0,i.useState)(),[P,N]=(0,i.useState)(),[I,R]=(0,i.useState)(""),[L,O]=(0,i.useState)({keyword:1,vector:.9,rewrite:.72,hybridBonus:.35}),B=async()=>{let e=r.trim();if(e){g(!0),R("");try{let t=await (0,f.W2)(e,{limit:10,weights:L});k(t.results),E(t.queryTimeMs),N(t.debug)}catch(e){k([]),R(e instanceof Error?e.message:"搜索失败")}finally{g(!1)}}};return(0,l.jsxs)("div",{className:"space-y-6 animateFadeIn",children:[(0,l.jsxs)("div",{children:[(0,l.jsx)("h1",{className:"pageTitle",children:"知识库搜索"}),(0,l.jsx)("p",{className:"pageDesc",children:"查看 hybrid 检索、parent 回填、分块来源和评分明细。"})]}),(0,l.jsx)(c.A,{size:"small",children:(0,l.jsxs)(o.A.Compact,{className:"w-full",children:[(0,l.jsx)(d.A,{value:r,onChange:e=>a(e.target.value),onPressEnter:()=>{B()},placeholder:"输入要搜索的知识库内容"}),(0,l.jsx)(u.Ay,{type:"primary",icon:(0,l.jsx)(y.A,{}),loading:b,onClick:()=>{B()},children:"搜索"})]})}),(0,l.jsx)(c.A,{size:"small",title:"召回权重调节",children:(0,l.jsxs)(o.A,{wrap:!0,children:[(0,l.jsxs)("span",{children:["Keyword ",(0,l.jsx)(h.A,{min:0,max:5,step:.1,value:L.keyword,onChange:e=>O(t=>({...t,keyword:Number(null!=e?e:1)}))})]}),(0,l.jsxs)("span",{children:["Vector ",(0,l.jsx)(h.A,{min:0,max:5,step:.1,value:L.vector,onChange:e=>O(t=>({...t,vector:Number(null!=e?e:.9)}))})]}),(0,l.jsxs)("span",{children:["Rewrite ",(0,l.jsx)(h.A,{min:0,max:5,step:.1,value:L.rewrite,onChange:e=>O(t=>({...t,rewrite:Number(null!=e?e:.72)}))})]}),(0,l.jsxs)("span",{children:["Hybrid Bonus ",(0,l.jsx)(h.A,{min:0,max:2,step:.05,value:L.hybridBonus,onChange:e=>O(t=>({...t,hybridBonus:Number(null!=e?e:.35)}))})]})]})}),P&&(0,l.jsx)(c.A,{size:"small",title:"检索调试面板",children:(0,l.jsxs)(_.A,{size:"small",column:2,bordered:!0,children:[(0,l.jsx)(_.A.Item,{label:"原始查询",children:P.originalQuery}),(0,l.jsx)(_.A.Item,{label:"Reranker",children:P.reranker}),(0,l.jsx)(_.A.Item,{label:"查询改写",span:2,children:(0,l.jsx)(o.A,{wrap:!0,children:null==(e=P.rewrittenQueries)?void 0:e.map(e=>(0,l.jsx)(m.A,{children:e},e))})}),(0,l.jsx)(_.A.Item,{label:"召回数量",span:2,children:(0,l.jsx)(o.A,{wrap:!0,children:Object.entries(null!=(t=P.recallCounts)?t:{}).map(e=>{let[t,s]=e;return(0,l.jsxs)(m.A,{children:[t,": ",s]},t)})})}),(0,l.jsx)(_.A.Item,{label:"召回权重",span:2,children:(0,l.jsx)(o.A,{wrap:!0,children:Object.entries(null!=(s=P.weights)?s:{}).map(e=>{let[t,s]=e;return(0,l.jsxs)(m.A,{children:[t,": ",s]},t)})})})]})}),(0,l.jsxs)(c.A,{size:"small",title:"搜索结果",extra:"number"==typeof S?"".concat(S," ms"):void 0,children:[I?(0,l.jsx)(p.A,{type:"error",showIcon:!0,message:"搜索失败",description:I,className:"mb-4"}):null,b?(0,l.jsx)(x.A,{}):0===C.length?(0,l.jsx)(j.A,{description:"暂无结果"}):(0,l.jsx)("div",{className:w().searchResultList,children:C.map((e,t)=>{var s,i,a,c,d,u;return(0,l.jsxs)("div",{className:w().searchResultItem,children:[(0,l.jsxs)("div",{className:w().searchResultHeader,children:[(0,l.jsxs)(o.A,{size:8,wrap:!0,children:[(0,l.jsxs)(m.A,{children:["序号 ",t+1]}),(0,l.jsx)(m.A,{color:"hybrid"===e.source?"purple":"vector"===e.source?"blue":"green",children:null!=(u=e.source)?u:"keyword"}),(0,l.jsx)(m.A,{children:e.scope}),e.chunkKind&&(0,l.jsx)(m.A,{color:"geekblue",children:e.chunkKind}),e.rowRange&&(0,l.jsxs)(m.A,{color:"gold",children:["行 ",e.rowRange]}),e.sectionTitle&&(0,l.jsx)(m.A,{color:"cyan",children:e.sectionTitle})]}),(0,l.jsx)("strong",{children:A(e.score)})]}),(0,l.jsxs)("div",{className:w().statusPath,children:[(0,l.jsx)(n(),{href:"/knowledge/file-detail?relativePath=".concat(encodeURIComponent(e.filePath)),children:e.filePath}),"number"==typeof e.chunkIndex?" #".concat(e.chunkIndex):""]}),(0,l.jsx)(v,{ellipsis:{rows:6,expandable:!0,symbol:"展开"},className:w().searchContent,children:function(e,t){let s=[t.trim(),...t.split(/[\s,,。;;::、]+/u)].filter(Boolean).sort((e,t)=>t.length-e.length);if(0===s.length)return e;let r=RegExp("(".concat(s.map(e=>e.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&")).join("|"),")"),"giu");return e.split(r).map((e,t)=>s.some(t=>t.toLowerCase()===e.toLowerCase())?(0,l.jsx)("mark",{children:e},t):e)}(e.content,r)}),e.facets&&Object.keys(e.facets).length>0&&(0,l.jsx)("div",{className:w().statusMeta,children:Object.entries(e.facets).slice(0,8).map(e=>{let[t,s]=e;return(0,l.jsxs)("span",{children:[t," ",(0,l.jsx)("b",{children:Array.isArray(s)?s.join(", "):String(s)})]},t)})}),(0,l.jsxs)("div",{className:w().statusMeta,children:[(0,l.jsxs)("span",{children:["keyword ",(0,l.jsx)("b",{children:A(null==(s=e.scoreDetails)?void 0:s.keywordScore)})]}),(0,l.jsxs)("span",{children:["bm25 ",(0,l.jsx)("b",{children:A(null==(i=e.scoreDetails)?void 0:i.bm25Score)})]}),(0,l.jsxs)("span",{children:["vector ",(0,l.jsx)("b",{children:A(null==(a=e.scoreDetails)?void 0:a.vectorScore)})]}),(0,l.jsxs)("span",{children:["rerank ",(0,l.jsx)("b",{children:A(null==(c=e.scoreDetails)?void 0:c.rerankBoost)})]}),(0,l.jsxs)("span",{children:["hybrid ",(0,l.jsx)("b",{children:A(null==(d=e.scoreDetails)?void 0:d.hybridScore)})]})]})]},e.id)})})]})]})}},9208:(e,t,s)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/knowledge/search",function(){return s(4184)}])},14569:e=>{e.exports={featureLabel:"style_featureLabel__XFSTX",featureValue:"style_featureValue__I_wMP",filterInput:"style_filterInput__4_Elu",filterSelect:"style_filterSelect__vUBJ9",statusCard:"style_statusCard__H7Mee",statusSummary:"style_statusSummary__7KavF",statusSummaryText:"style_statusSummaryText__Shw3j",statusClearBtn:"style_statusClearBtn__uJ9bE",statusExpandBtn:"style_statusExpandBtn__HhgIj",statusFilters:"style_statusFilters__g_LbG",filterPill:"style_filterPill__1pjFW",filterPillActive:"style_filterPillActive___UZVi",statusPanel:"style_statusPanel__9arTu",statusEmpty:"style_statusEmpty__8LWzH",timelineList:"style_timelineList__dqJrz",timelineItem:"style_timelineItem__dbuL_",timelineStatusIcon:"style_timelineStatusIcon__SkRwb",timelinePercent:"style_timelinePercent__pEyH4",timelineRow:"style_timelineRow__EDOVa",timelineTitle:"style_timelineTitle__Yujr8",timelineClose:"style_timelineClose__Byx_9",timelineDetail:"style_timelineDetail__nALei",timelineDesc:"style_timelineDesc__FMjWE",timelinePath:"style_timelinePath__C9VQI",timelineMeta:"style_timelineMeta__u_pCn",timelineMetaTag:"style_timelineMetaTag__G3jF1",timelineExpandArrow:"style_timelineExpandArrow__xIBdF",timelineExpandArrowOpen:"style_timelineExpandArrowOpen__TWWDC",fileNameCell:"style_fileNameCell__EHsnt",folderName:"style_folderName__VhLXP",folderRow:"style_folderRow__d7k9S",searchResultList:"style_searchResultList__cVKZg",searchResultItem:"style_searchResultItem__boj6D",searchResultHeader:"style_searchResultHeader__meVdJ",searchContent:"style_searchContent__XbUVk",pdfPreviewStrip:"style_pdfPreviewStrip__94_eG",drawingPreview:"style_drawingPreview__lkk_L"}},30486:(e,t,s)=>{"use strict";s.d(t,{A:()=>a});var l=s(97109),r=s(58758),n=s(88483);function i(){return(i=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var s=arguments[t];for(var l in s)Object.prototype.hasOwnProperty.call(s,l)&&(e[l]=s[l])}return e}).apply(this,arguments)}let a=l.forwardRef((e,t)=>l.createElement(n.A,i({},e,{ref:t,icon:r.A})))},58758:(e,t)=>{"use strict";t.A={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z"}}]},name:"search",theme:"outlined"}},60470:(e,t,s)=>{"use strict";s.d(t,{A:()=>a});var l=s(97109),r=s(838),n=s(88483);function i(){return(i=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var s=arguments[t];for(var l in s)Object.prototype.hasOwnProperty.call(s,l)&&(e[l]=s[l])}return e}).apply(this,arguments)}let a=l.forwardRef((e,t)=>l.createElement(n.A,i({},e,{ref:t,icon:r.A})))},73458:(e,t)=>{"use strict";t.A={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M257.7 752c2 0 4-.2 6-.5L431.9 722c2-.4 3.9-1.3 5.3-2.8l423.9-423.9a9.96 9.96 0 000-14.1L694.9 114.9c-1.9-1.9-4.4-2.9-7.1-2.9s-5.2 1-7.1 2.9L256.8 538.8c-1.5 1.5-2.4 3.3-2.8 5.3l-29.5 168.2a33.5 33.5 0 009.4 29.8c6.6 6.4 14.9 9.9 23.8 9.9zm67.4-174.4L687.8 215l73.3 73.3-362.7 362.6-88.9 15.7 15.6-89zM880 836H144c-17.7 0-32 14.3-32 32v36c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-36c0-17.7-14.3-32-32-32z"}}]},name:"edit",theme:"outlined"}},99650:(e,t,s)=>{"use strict";s.d(t,{A:()=>a});var l=s(97109),r=s(73458),n=s(88483);function i(){return(i=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var s=arguments[t];for(var l in s)Object.prototype.hasOwnProperty.call(s,l)&&(e[l]=s[l])}return e}).apply(this,arguments)}let a=l.forwardRef((e,t)=>l.createElement(n.A,i({},e,{ref:t,icon:r.A})))}},e=>{e.O(0,[347,8787,4277,7889,4833,7576,2884,5292,6506,5938,6578,636,6593,8792],()=>e(e.s=9208)),_N_E=e.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[5449],{27795:(e,l,s)=>{"use strict";s.r(l),s.d(l,{default:()=>T});var r=s(65321),t=s(97109),i=s(32620),c=s(85114),n=s(2256),o=s(38770),a=s(68787),x=s(99605),d=s(54849),m=s(33442),v=s(11702),u=s(99811),j=s(520),h=s(93314),A=s(13114),y=s(29071),p=s(26631),g=s(84742),f=s(38762),k=s(8579),w=s(9020),z=s(32632),S=s(95118),N=s(24810),_=s(6578);function T(){var e,l,s,T,b,P,C,D,E,O,M,F;let I=(0,i.Vr)(),[B,W]=(0,t.useState)(null),[U,X]=(0,t.useState)(!0),[R,V]=(0,t.useState)(0),[Z,q]=(0,t.useState)(0),[G,H]=(0,t.useState)(0),[J,K]=(0,t.useState)(0),[L,Q]=(0,t.useState)(0),[Y,$]=(0,t.useState)(null),ee=(0,t.useCallback)(async()=>{X(!0);try{let[e,l,s,r,t,i]=await Promise.all([(0,_.FC)(),(0,_.Z3)().catch(()=>[]),(0,_.lv)().catch(()=>({roles:[],configs:[]})),(0,_.mx)().catch(()=>({specs:[]})),(0,_.Dl)().catch(()=>({templates:[]})),(0,_.II)().catch(()=>null)]);W(e),V(Array.isArray(l)?l.length:0);let c=Array.isArray(s.roles)?s.roles:[];q(c.filter(e=>"file"===e.type).length),H(c.filter(e=>"prompt"===e.type).length),K(Array.isArray(r.specs)?r.specs.length:0),Q(Array.isArray(t.templates)?t.templates.length:0),$(i)}catch(e){}finally{X(!1)}},[]);(0,t.useEffect)(()=>{ee();let e=setInterval(()=>{ee()},1e4);return()=>clearInterval(e)},[ee]);let el=(null!=(l=null==B?void 0:B.cpu.usagePercent)?l:0)>80?"var(--colorDanger)":(null!=(s=null==B?void 0:B.cpu.usagePercent)?s:0)>50?"var(--colorWarning)":"var(--colorOk)",es=(null!=(T=null==B?void 0:B.memory.usagePercent)?T:0)>80?"var(--colorDanger)":(null!=(b=null==B?void 0:B.memory.usagePercent)?b:0)>50?"var(--colorWarning)":"var(--colorOk)",er=(null==B?void 0:B.tasks.total)?Math.round(B.tasks.success/B.tasks.total*100):0,et=null==B||null==(e=B.models)?void 0:e[0];return(0,r.jsxs)("div",{className:"space-y-6 animateFadeIn",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between",children:[(0,r.jsxs)("div",{children:[(0,r.jsx)("h1",{className:"pageTitle",children:I("overview.title")}),(0,r.jsx)("p",{className:"pageDesc",children:I("overview.description")})]}),(0,r.jsx)(c.Ay,{icon:(0,r.jsx)(u.A,{spin:U}),loading:U,onClick:()=>{ee()},children:I("common.retry")})]}),(0,r.jsxs)(n.A,{gutter:[16,16],children:[(0,r.jsx)(o.A,{xs:24,sm:12,children:(0,r.jsx)(a.A,{size:"small",title:(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(j.A,{})," CPU"]}),children:(0,r.jsxs)("div",{style:{textAlign:"center"},children:[(0,r.jsx)(x.A,{type:"circle",percent:null!=(P=null==B?void 0:B.cpu.usagePercent)?P:0,size:120,strokeColor:el,format:e=>"".concat(null==e?void 0:e.toFixed(1),"%")}),(0,r.jsxs)("div",{className:"text-xs mt-2",style:{color:"var(--colorTextSecondary)"},children:[null!=(C=null==B?void 0:B.cpu.cores)?C:0," ",I("overview.cores")]})]})})}),(0,r.jsx)(o.A,{xs:24,sm:12,children:(0,r.jsx)(a.A,{size:"small",title:(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(h.A,{})," ",I("overview.memory")]}),children:(0,r.jsxs)("div",{style:{textAlign:"center"},children:[(0,r.jsx)(x.A,{type:"circle",percent:null!=(D=null==B?void 0:B.memory.usagePercent)?D:0,size:120,strokeColor:es,format:e=>"".concat(e,"%")}),(0,r.jsxs)("div",{className:"text-xs mt-2",style:{color:"var(--colorTextSecondary)"},children:[null!=(E=null==B?void 0:B.memory.processMB)?E:0," MB / ",null!=(O=null==B?void 0:B.memory.totalMB)?O:0," MB"]})]})})})]}),(0,r.jsxs)(n.A,{gutter:[16,16],children:[(0,r.jsx)(o.A,{xs:12,sm:6,children:(0,r.jsx)(a.A,{size:"small",children:(0,r.jsx)(d.A,{title:"运行时间",value:B?Math.floor(B.uptime/3600):0,suffix:"小时",prefix:(0,r.jsx)(A.A,{})})})}),(0,r.jsx)(o.A,{xs:12,sm:6,children:(0,r.jsx)(a.A,{size:"small",children:(0,r.jsx)(d.A,{title:I("overview.tokensUsed"),value:null!=(M=null==B?void 0:B.tokens.total)?M:0,prefix:(0,r.jsx)(y.A,{})})})}),(0,r.jsx)(o.A,{xs:12,sm:6,children:(0,r.jsx)(a.A,{size:"small",children:(0,r.jsx)(d.A,{title:I("overview.tasksTotal"),value:null!=(F=null==B?void 0:B.tasks.total)?F:0,prefix:(0,r.jsx)(p.A,{})})})}),(0,r.jsx)(o.A,{xs:12,sm:6,children:(0,r.jsx)(a.A,{size:"small",children:(0,r.jsx)(d.A,{title:I("overview.successRate"),value:er,suffix:"%",prefix:er>80?(0,r.jsx)(g.A,{style:{color:"var(--colorOk)"}}):(0,r.jsx)(f.A,{style:{color:"var(--colorDanger)"}})})})})]}),(0,r.jsx)(a.A,{size:"small",title:"资源概览",children:(0,r.jsxs)(n.A,{gutter:[16,16],children:[(0,r.jsx)(o.A,{xs:24,sm:12,md:8,lg:4,children:(0,r.jsx)(a.A,{size:"small",children:(0,r.jsx)(d.A,{title:"文件角色",value:Z,prefix:(0,r.jsx)(p.A,{style:{color:"var(--colorAccent)"}})})})}),(0,r.jsx)(o.A,{xs:24,sm:12,md:8,lg:4,children:(0,r.jsx)(a.A,{size:"small",children:(0,r.jsx)(d.A,{title:"提示词角色",value:G,prefix:(0,r.jsx)(k.A,{style:{color:"var(--colorWarning)"}})})})}),(0,r.jsx)(o.A,{xs:24,sm:12,md:8,lg:4,children:(0,r.jsx)(a.A,{size:"small",children:(0,r.jsx)(d.A,{title:"文档规范包",value:J,prefix:(0,r.jsx)(w.A,{style:{color:"var(--colorOk)"}})})})}),(0,r.jsx)(o.A,{xs:24,sm:12,md:8,lg:4,children:(0,r.jsx)(a.A,{size:"small",children:(0,r.jsx)(d.A,{title:"模板",value:L,prefix:(0,r.jsx)(z.A,{style:{color:"var(--colorDanger)"}})})})}),(0,r.jsx)(o.A,{xs:24,sm:12,md:8,lg:4,children:(0,r.jsxs)(a.A,{size:"small",children:[(0,r.jsx)(d.A,{title:"Embedding",value:(null==Y?void 0:Y.provider)==="openai-compatible"?"外部 Embedding":Y?"本地语义模型":"—",prefix:(0,r.jsx)(S.A,{style:{color:"var(--colorAccent)"}})}),(null==Y?void 0:Y.model)&&(0,r.jsxs)("div",{className:"text-xs mt-1",style:{color:"var(--colorTextSecondary)"},children:[Y.model,Y.dimensions?" \xb7 ".concat(Y.dimensions,"维"):""]})]})}),(0,r.jsx)(o.A,{xs:24,sm:12,md:8,lg:4,children:(0,r.jsx)(a.A,{size:"small",children:(0,r.jsx)(d.A,{title:"模型供应商",value:R,prefix:(0,r.jsx)(N.A,{style:{color:"var(--colorAccent)"}})})})})]})}),(0,r.jsxs)(n.A,{gutter:[16,16],children:[(0,r.jsx)(o.A,{xs:24,sm:12,children:(0,r.jsx)(a.A,{size:"small",title:I("overview.topModel"),style:{height:"100%"},children:et?(0,r.jsxs)("div",{className:"flex items-center gap-4",children:[(0,r.jsx)(A.A,{style:{fontSize:24,color:"var(--colorAccent)"}}),(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{className:"font-semibold",children:et.model}),(0,r.jsxs)("div",{style:{color:"var(--colorTextSecondary)",fontSize:12},children:["@",et.provider," — ",et.count," ",I("overview.calls")]})]})]}):(0,r.jsx)("span",{style:{color:"var(--colorTextSecondary)"},children:I("common.noData")})})}),(0,r.jsx)(o.A,{xs:24,sm:12,children:(0,r.jsx)(a.A,{size:"small",title:I("overview.taskTypes"),style:{height:"100%"},children:(null==B?void 0:B.tasks.types)&&Object.keys(B.tasks.types).length>0?(0,r.jsx)(m.A,{wrap:!0,children:Object.entries(B.tasks.types).map(e=>{let[l,s]=e;return(0,r.jsxs)(v.A,{children:[l.slice(0,30),": ",s]},l)})}):(0,r.jsx)("span",{style:{color:"var(--colorTextSecondary)"},children:I("common.noData")})})})]})]})}},53139:(e,l,s)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/overview",function(){return s(27795)}])}},e=>{e.O(0,[347,8787,4277,8732,261,6578,636,6593,8792],()=>e(e.s=53139)),_N_E=e.O()}]);
|
|
File without changes
|