@customize-agent/server 4.60.31 → 4.60.33
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 +34 -31
- package/.next/prerender-manifest.json +3 -3
- package/.next/required-server-files.json +1 -1
- package/.next/server/chunks/1243.js +1 -1
- package/.next/server/chunks/1936.js +8 -8
- package/.next/server/chunks/2328.js +1 -1
- package/.next/server/chunks/6321.js +1 -1
- package/.next/server/chunks/6822.js +1 -1
- package/.next/server/chunks/{4722.js → 7848.js} +27 -27
- package/.next/server/chunks/8204.js +1 -1
- package/.next/server/chunks/9666.js +56 -55
- package/.next/server/instrumentation.js +1 -1
- package/.next/server/instrumentation.js.nft.json +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/config/embedding/healthCheck.js +2 -1
- package/.next/server/pages/api/config/embedding.js +2 -1
- package/.next/server/pages/api/config/healthCheck.js +2 -1
- package/.next/server/pages/api/config/models.js +2 -1
- package/.next/server/pages/api/config/providers/[provider].js +2 -1
- package/.next/server/pages/api/config/providers.js +2 -1
- package/.next/server/pages/api/config/reset.js +3 -0
- package/.next/server/pages/api/config/reset.js.nft.json +1 -0
- package/.next/server/pages/api/config/web-access.js +2 -1
- package/.next/server/pages/api/documents/export.js +1 -1
- package/.next/server/pages/api/documents/generate/preview.js +1 -1
- package/.next/server/pages/api/documents/generate.js +1 -1
- package/.next/server/pages/api/documents/generated/[id]/repair/[rid]/confirm.js +1 -1
- package/.next/server/pages/api/health.js +1 -1
- package/.next/server/pages/api/kb/features.js +2 -1
- package/.next/server/pages/api/prompt/chat.js +3 -2
- package/.next/server/pages/api/system/reset.js +1 -1
- package/.next/server/pages/canvas/[id].html +1 -1
- package/.next/server/pages/canvas.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/jobs.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/source-preview.html +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/skills/[id]/edit.html +1 -1
- package/.next/server/pages/skills/[id]/edit.js.nft.json +1 -1
- package/.next/server/pages/skills/[id].html +1 -1
- package/.next/server/pages/skills/[id].js.nft.json +1 -1
- package/.next/server/pages/skills/new.html +1 -1
- package/.next/server/pages/skills/new.js.nft.json +1 -1
- package/.next/server/pages/skills.html +1 -1
- package/.next/server/pages/system/logs.html +1 -1
- package/.next/server/pages-manifest.json +34 -33
- package/.next/static/84adacede7ff442362a497aa3e621351f0c7ab051b72c5c491f09a03bf4751e3/_buildManifest.js +1 -0
- package/.next/static/chunks/1141-d420a7685bc3623c.js +1 -0
- package/.next/static/chunks/2864-b040f2bffa08c139.js +6 -0
- package/.next/static/chunks/3456-70bb03a39473f693.js +1 -0
- package/.next/static/chunks/3980-73841c40d55ddfa1.js +1 -0
- package/.next/static/chunks/4337-a670a1a94ab505d9.js +1 -0
- package/.next/static/chunks/4530-8b9788da40548ec6.js +1 -0
- package/.next/static/chunks/6506-ac0ba7338cc84b7d.js +1 -0
- package/.next/static/chunks/6748-07b0b05bf03c72f0.js +1 -0
- package/.next/static/chunks/9937-e4b2deadd24e3962.js +1 -0
- package/.next/static/chunks/pages/{_app-73e5b40b24a7fe7d.js → _app-51c48c5efcf5c721.js} +13 -13
- package/.next/static/chunks/pages/canvas/{[id]-45da860b862e0743.js → [id]-18865f1b7e3a4696.js} +1 -1
- package/.next/static/chunks/pages/canvas-1d3589790493e955.js +1 -0
- package/.next/static/chunks/pages/knowledge/file-detail-3d1ffd43f4f0e47b.js +1 -0
- package/.next/static/chunks/pages/knowledge/{source-preview-40ff4936b832787e.js → source-preview-24936b9a746ed07f.js} +1 -1
- package/.next/static/chunks/pages/models-8a89dd5bf0f81242.js +1 -0
- package/.next/static/chunks/pages/skills/[id]/{edit-35892def57c4975f.js → edit-99e616d5019e80b1.js} +1 -1
- package/.next/static/chunks/pages/skills/[id]-71f696be252bbf0d.js +1 -0
- package/.next/static/chunks/pages/skills/{new-a279e6ca2f7aded7.js → new-00886ea4c676f927.js} +1 -1
- package/.next/static/css/9eb02c1a401fd278.css +1 -0
- package/messages/en-US.json +13 -1
- package/messages/zh-CN.json +13 -1
- package/package.json +4 -4
- package/scripts/brand-moon-fit.cjs +0 -47
- package/scripts/generate-brand-assets.cjs +0 -41
- package/scripts/half-built-scan.allow.json +16 -6
- package/scripts/half-built-scan.baseline.json +2 -17
- package/scripts/half-built-scan.mjs +1 -84
- package/.next/server/chunks/6021.js +0 -1
- package/.next/static/0fdab21c22b65a3042c22ee4ac8e49fbfd22e365df64d5e9b709ccb05aecf02e/_buildManifest.js +0 -1
- package/.next/static/chunks/2378-c6d25abe02815666.js +0 -1
- package/.next/static/chunks/2864-67ba808c5092c2f9.js +0 -6
- package/.next/static/chunks/3456-8b609f8475ae5030.js +0 -1
- package/.next/static/chunks/4530-e73bdd645bb7a953.js +0 -1
- package/.next/static/chunks/5046-abead1022185a99a.js +0 -1
- package/.next/static/chunks/5257-915621e439b56580.js +0 -1
- package/.next/static/chunks/6505-012e90937e1e8dae.js +0 -1
- package/.next/static/chunks/6748-04b5429330e1451e.js +0 -1
- package/.next/static/chunks/7955-3a7ee8cda4f857b9.js +0 -1
- package/.next/static/chunks/pages/canvas-a15773d02c97b7a6.js +0 -1
- package/.next/static/chunks/pages/knowledge/file-detail-5859f0c25af34ffe.js +0 -1
- package/.next/static/chunks/pages/models-0aaff5bfadc7b62f.js +0 -1
- package/.next/static/chunks/pages/skills/[id]-19c352e150e05c27.js +0 -1
- package/.next/static/css/837ac5def44e2eba.css +0 -1
- package/scripts/capture-baseline.mjs +0 -353
- /package/.next/static/{0fdab21c22b65a3042c22ee4ac8e49fbfd22e365df64d5e9b709ccb05aecf02e → 84adacede7ff442362a497aa3e621351f0c7ab051b72c5c491f09a03bf4751e3}/_ssgManifest.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4530],{8090:(e,t,n)=>{n.d(t,{EL:()=>et,zT:()=>ee,II:()=>$,bJ:()=>eo,Jr:()=>V,O0:()=>eh,uj:()=>H,GC:()=>U,qj:()=>es,x8:()=>Z,Kg:()=>ea,uH:()=>ep,Qs:()=>J,PI:()=>ei,dB:()=>ev,Jy:()=>em,uv:()=>O,vp:()=>Q,m_:()=>P,kH:()=>K,z9:()=>X,Aq:()=>ed,RV:()=>ec,Kq:()=>en});var r=n(97109),a=n(84662),l=n(30486),o=n(4527),i=n(80042),c=n(99650),s=n(25345),u=n(7851),d=n(33555),m=n(43240),p=n(26619),f=n(23216),h=n(46791),v=n(8579),g=n(26631),x=n(35459),y=n(64629),w=n(76824),b=n(83374),k=n(81668),j=n(39356),I=n(8263),A=n(61024),S=n(32919),M=n(96538);let C=["failed","paused","repairing","blocked","running","pending","completed"],E=["chars","costUsd"];function R(e,t){return e.seq!==t.seq?e.seq-t.seq:e.id===t.id?0:e.id<t.id?-1:1}function N(e){let t=new Map;for(let n of e){if(void 0===n.parentId)continue;let e=t.get(n.parentId);e?e.push(n):t.set(n.parentId,[n])}for(let e of t.values())e.sort(R);return t}function _(e){let t=new Map(e.map(e=>[e.id,e])),n=new Map;for(let r of e){let e=0,a=r,l=new Set([r.id]);for(;(null==a?void 0:a.parentId)!==void 0;){let n=t.get(a.parentId);if(!n||l.has(n.id))break;l.add(n.id),e+=1,a=n}n.set(r.id,e)}return n}let T=new Set(["prepare","understand","plan","blueprint","write","close","deliver","chapter","block","turn","round","round.decide","round.fix","repair.request","repair.localize","repair.impact","repair.transaction","repair.recheck","supervisor","resume.plan","skill.load"]),B=new Set(["failed","paused","repairing","blocked","running","pending","completed"]);var D=n(94394);let q={pending:{key:"common.statusWaiting",text:"等待中",color:"default"},running:{key:"common.statusRunning",text:D.uh.running,color:"processing"},completed:{key:"common.statusCompleted",text:D.uh.success,color:"success"},paused:{key:"common.statusPaused",text:"已暂停",color:"gold"},repairing:{key:"common.statusRepairing",text:"修复中",color:"warning"},blocked:{key:"common.statusBlocked",text:"已放弃(阻塞)",color:"warning"},failed:{key:"common.statusAbnormal",text:"异常",color:"error"}};function z(e,t,n,r){let a=e[t];if(!a)return"未知".concat(n,"(").concat(t||"空",")");if(a.key&&r){let e=r(a.key);if(e&&e!==a.key)return e}return a.text}function P(e,t){return z(q,e,"状态",t)}function O(e){var t,n;return null!=(n=null==(t=q[e])?void 0:t.color)?n:"default"}let F={queued:{key:"common.statusWaiting",text:"排队中",color:"default"},generating:{key:"common.statusRunning",text:"生成中",color:"processing"},paused:{key:"common.statusPaused",text:"已暂停",color:"gold"},completed:{key:"common.statusCompleted",text:"已完成",color:"success"},completed_with_issues:{key:"common.statusReview",text:"完成(有需复核项)",color:"warning"},warning:{key:"common.statusReview",text:"需复核",color:"warning"},failed:{key:"common.statusAbnormal",text:"失败",color:"error"},aborted:{key:"common.statusAbnormal",text:"已中止",color:"default"}};function U(e,t){return z(F,e,"记录状态",t)}function H(e){var t,n;return null!=(n=null==(t=F[e])?void 0:t.color)?n:"default"}let L=["failed","paused","repairing","blocked","running","pending","completed"];function Q(e){let t=L.indexOf(e);return t>=0?t:L.length}let Y={prepare:"生成准备",understand:"资料理解",plan:"规划",blueprint:"蓝图",write:"正文撰写",close:"收口",deliver:"交付",chapter:"章节",block:"块",turn:"轮次",round:"收口轮","round.decide":"收口\xb7判定","round.fix":"收口\xb7修复","repair.request":"修复\xb7请求","repair.localize":"修复\xb7定位","repair.impact":"修复\xb7影响面","repair.transaction":"修复\xb7事务","repair.recheck":"修复\xb7复检","skill.load":"技能命中",supervisor:"调度决策","resume.plan":"续跑任务书"};function X(e){var t;return e?null!=(t=Y[e])?t:e:"未知节点"}let G={role_binding:(0,r.createElement)(a.A),knowledge_retrieval:(0,r.createElement)(l.A),file_understanding:(0,r.createElement)(o.A),fact_extraction:(0,r.createElement)(i.A),chapter_generation:(0,r.createElement)(c.A),llm_review:(0,r.createElement)(s.A),validation:(0,r.createElement)(u.A),reference:(0,r.createElement)(d.A),prepare:(0,r.createElement)(m.A),understand:(0,r.createElement)(p.A),plan:(0,r.createElement)(f.A),blueprint:(0,r.createElement)(h.A),write:(0,r.createElement)(v.A),chapter:(0,r.createElement)(g.A),block:(0,r.createElement)(x.A),turn:(0,r.createElement)(y.A),round:(0,r.createElement)(w.A),close:(0,r.createElement)(b.A),deliver:(0,r.createElement)(k.A),repair:(0,r.createElement)(j.A),skill:(0,r.createElement)(I.A),supervisor:(0,r.createElement)(A.A),resume:(0,r.createElement)(S.A),default:(0,r.createElement)(m.A)};function K(e){var t;return null!=(t=G[e.split(".")[0]||e])?t:G.default}function J(e){var t;return null!=(t=G[e])?t:G.default}function W(e){var t,n;let r=e.issues;return{id:e.id,...void 0!==e.parentId?{parentId:e.parentId}:{},type:e.type||"block",title:null!=(t=e.title)?t:"",seq:"number"==typeof e.seq&&Number.isFinite(e.seq)?e.seq:0,status:"string"==typeof(n=e.status)&&B.has(n)?e.status:"failed",startedAt:"number"==typeof e.startedAt&&Number.isFinite(e.startedAt)&&e.startedAt>0?e.startedAt:0,...void 0!==e.completedAt?{completedAt:e.completedAt}:{},...e.progress?{progress:e.progress}:{},...e.metrics?{metrics:e.metrics}:{},...Array.isArray(r)&&r.length>0?{issues:r}:{},...void 0!==e.payloadRef?{payloadRef:e.payloadRef}:{}}}function V(e,t){let n=new Map(e.map(e=>[e.id,e]));return(function(e,t){let n=function(e){let t=N(e),n=_(e),r=[...e].sort((e,t)=>{var r,a;return(null!=(r=n.get(t.id))?r:0)-(null!=(a=n.get(e.id))?a:0)||R(e,t)}),a=new Map(e.map(e=>[e.id,e]));for(let e of r){let n=t.get(e.id);if(!n||0===n.length)continue;let r=n.map(e=>{var t;return null!=(t=a.get(e.id))?t:e});a.set(e.id,function(e,t){var n,r,a;if(0===t.length)return{...e};let l=[...t].sort(R),o={...null!=(r=e.metrics)?r:{}};for(let t of E){let n=function(e,t,n){var r,a;let l=0,o=!1,i=null==(r=e.metrics)?void 0:r[n];for(let e of("number"==typeof i&&Number.isFinite(i)&&(l+=i,o=!0),t)){let t=null==(a=e.metrics)?void 0:a[n];"number"==typeof t&&Number.isFinite(t)&&(l+=t,o=!0)}return o?l:void 0}(e,l,t);void 0===n?delete o[t]:o[t]=n}let i=null==(n=e.progress)?void 0:n.label,c={current:l.filter(e=>"completed"===e.status).length,total:l.length,...void 0!==i?{label:i}:{}},s=function(e){let t=new Set,n=[];for(let a of e){var r;let e=null==(r=a.provenance)?void 0:r.fingerprint;if("string"==typeof e&&e.length>0){if(t.has(e))continue;t.add(e)}n.push(a)}return n}(l.flatMap(e=>{var t;return null!=(t=e.issues)?t:[]})),u=null!=(a=function(e){let t,n=1/0;for(let r of e){let e=function(e){let t=C.indexOf(e);return t>=0?t:0}(r);e<n&&(n=e,t=r)}return t}(l.map(e=>e.status)))?a:e.status;return{...e,status:u,progress:c,...Object.keys(o).length>0?{metrics:o}:{},...s.length>0?{issues:s}:{}}}(e,r))}return[...e].sort(R).map(e=>{var t;return null!=(t=a.get(e.id))?t:e})}(e),r=N(n),a=new Set(n.map(e=>e.id)),l=1/0,o=(e,t)=>{var n;let a=t+1<l?(null!=(n=r.get(e.id))?n:[]).filter(t=>t.id!==e.id).map(e=>o(e,t+1)):[];return{...e,children:a}},i=n.filter(e=>void 0===e.parentId||!a.has(e.parentId)).sort(R).map(e=>o(e,0)),c=new Set,s=e=>{for(let t of e)c.add(t.id),s(t.children)};for(let e of(s(i),n))c.has(e.id)||i.push(o(e,0));return i})(function(e,t){if(void 0===t)return[...e];let n=_(e),r=Math.max(0,Math.floor(t));return e.filter(e=>{var t;return(null!=(t=n.get(e.id))?t:0)<r})}(e.map(W),t)).map(e=>(function e(t,n){var r,a;let l=n.get(t.id),o=null!=(r=null==l?void 0:l.type)?r:String(t.type),i=t.issues;return{id:t.id,...void 0!==t.parentId?{parentId:t.parentId}:{},type:o,unknownType:!("string"==typeof o&&T.has(o)),title:t.title||X(o),seq:t.seq,status:t.status,..."number"==typeof t.startedAt&&t.startedAt>0?{startedAt:t.startedAt}:{},...void 0!==t.completedAt?{completedAt:t.completedAt}:{},...t.progress?{progress:t.progress}:{},metrics:null!=(a=t.metrics)?a:{},issues:Array.isArray(i)?i:[],...void 0!==t.payloadRef?{payloadRef:t.payloadRef}:{},children:t.children.map(t=>e(t,n))}})(e,n))}function Z(e){let t=[],n=e=>{for(let r of e)t.push(r),n(r.children)};return n(e),t.sort(R)}function $(e,t){let n=[],r=(e,a)=>{for(let l of e){if(l.id===t)return n.push(...a),!0;if(r(l.children,[...a,l.id]))return!0}return!1};return r(e,[]),n}let ee=236,et=76;function en(e,t){var n;if(!t)return e;let r=new Map(e),a=null!=(n=r.get(t.id))?n:{dx:0,dy:0};return r.set(t.id,{dx:a.dx+t.dx,dy:a.dy+t.dy}),r}let er=new Set(["running","repairing"]);function ea(e){let t=new Set(e.nodes.filter(e=>er.has(e.node.status)).map(e=>e.node.id));if(0===t.size)return el;let n=new Set;for(let r of e.edges)t.has(r.fromId)&&n.add(r.id);return n}let el=new Set;function eo(e,t){if(0===t.size)return e;let n=e.nodes.map(e=>{let n=t.get(e.node.id);return n?{...e,x:e.x+n.dx,y:e.y+n.dy}:e}),r=e.edges.map(e=>{var n,r,a,l;let o=t.get(e.fromId),i=t.get(e.toId);return o||i?{...e,x1:e.x1+(null!=(n=null==o?void 0:o.dx)?n:0),y1:e.y1+(null!=(r=null==o?void 0:o.dy)?r:0),x2:e.x2+(null!=(a=null==i?void 0:i.dx)?a:0),y2:e.y2+(null!=(l=null==i?void 0:i.dy)?l:0)}:e});return{...e,nodes:n,edges:r}}function ei(e){let t=[],n=[],r=0,a=(e,l)=>{let o,i=e.children,c=40+l*(ee+72),s=i.map(e=>({id:e.id,...a(e,l+1)}));for(let a of(0===s.length?(o=40+r*(et+22),r+=1):o=(s[0].y+s[s.length-1].y)/2,t.push({node:e,x:c,y:o,depth:l}),s))n.push({id:"".concat(e.id,"->").concat(a.id),fromId:e.id,toId:a.id,x1:c+ee/2,y1:o+et,x2:a.x+ee/2,y2:a.y});return{x:c,y:o}};for(let t of e)a(t,0),r+=1;let l=t.reduce((e,t)=>Math.max(e,t.x+ee),0),o=t.reduce((e,t)=>Math.max(e,t.y+et),0);return{nodes:t,edges:n,width:l+40,height:o+40}}function ec(e,t){let n=["影响面:".concat(t.kind),"波及 ".concat(t.affectedNodeIds.length," 个节点"),...t.escalate?["超出阈值需人工确认"]:[],...t.rollbackable?[]:["不可回滚:按 11.1 需回滚或重新校准,不得当普通改动提交"]];return"请修复节点「".concat(e,"」(").concat(n.join(","),")")}function es(e,t){let n=t>0?t:1;return{dx:e.dx/n,dy:e.dy/n}}let eu=(e,t)=>e.left<t.right&&e.right>t.left&&e.top<t.bottom&&e.bottom>t.top;function ed(e){var t;let{node:n,view:r,box:a,panelWidth:l,panelHeight:o,gap:i=12,margin:c=8,obstacles:s=[]}=e,u=(e,t,n)=>Math.min(Math.max(e,t),Math.max(t,n)),d=Math.min(l,Math.max(0,a.width-2*c)),m=n.x*r.k+r.x,p=n.y*r.k+r.y,f=p+et*r.k,h={left:m,top:p,right:m+ee*r.k,bottom:f},v=a.width-d-c,g=(e,t)=>{let n=s.filter(n=>n.top>=t&&n.left<e+d&&n.right>e).map(e=>e.top-i);return Math.max(0,Math.min(a.height-c,...n,a.height-c)-t)},x=e=>{let t=a.height-e-c,n=(n,r)=>{if(n<c||r<c||n>v||r>t)return!1;let a={left:n,top:r,right:n+d,bottom:r+e};return!s.some(e=>eu(a,e))},l=m+(ee+i)*r.k,o=m-d-i*r.k,x=f+i,y=p-e-i;for(let[e,t]of[[l,x],[l,y],[o,x],[o,y]])if(n(e,t))return{left:e,top:t,maxHeight:Math.max(0,Math.min(g(e,t),a.height-t-c))};let w=[l,o,c,v],b=[x,y,c,t,...s.flatMap(t=>[t.bottom+i,t.top-e-i])],k=null,j=1/0;for(let r of w)for(let a of b){let l=u(r,c,v),o=u(a,c,Math.max(c,t));if(!n(l,o))continue;let i={left:l,top:o,right:l+d,bottom:o+e},s=Math.max(Math.max(0,h.left-i.right,i.left-h.right),Math.max(0,h.top-i.bottom,i.top-h.bottom))+1e3*!!eu(i,h);s<j&&(j=s,k={left:l,top:o})}return k?{...k,maxHeight:g(k.left,k.top)}:null};if(e.pin){let t=u(e.pin.left,c,v),n=u(e.pin.top,c,Math.max(c,a.height-2*c));return{left:t,top:n,maxHeight:Math.max(0,Math.min(g(t,n),a.height-n-c))}}let y=Math.min(o,Math.max(0,a.height-2*c)),w=x(y);if(w)return w;let b=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:8,r=e.height-n,a=t.map(e=>({start:Math.max(n,e.top),end:Math.min(r,e.bottom)})).filter(e=>e.end>e.start).sort((e,t)=>e.start-t.start),l=0,o=n;for(let e of a)e.start>o&&(l=Math.max(l,e.start-o)),o=Math.max(o,e.end);return Math.max(l,r-o)}(a,s,c)-i;if(b>0&&b<y){let e=x(Math.max(120,b));if(e)return e}return null!=(t=null!=w?w:x(Math.max(120,b)))?t:{left:u(m+(ee+i)*r.k,c,v),top:c,maxHeight:Math.max(0,a.height-2*c)}}function em(e){var t;if("number"!=typeof e.startedAt||(null==(t=e.metrics)?void 0:t.instantEvent)===!0)return;let n=("number"==typeof e.completedAt?e.completedAt:Date.now())-e.startedAt;return n>=0?n:void 0}function ep(e){return void 0===e?"—":(0,M.a)(e,{unit:"ms",style:"fine"})}let ef=[{key:"note",format:e=>String(e)},{key:"chars",format:e=>"".concat(Number(e).toLocaleString()," 字")},{key:"turn",format:e=>"第 ".concat(e," 轮")},{key:"residual",format:e=>"残余 ".concat(e)},{key:"toolCalls",format:e=>"工具 ".concat(e," 次")},{key:"attempt",format:e=>"第 ".concat(e," 次尝试")},{key:"failureKinds",format:e=>String(e)},{key:"chapters",format:e=>"".concat(e," 章")},{key:"facts",format:e=>"".concat(e," 条事实")}];function eh(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2,n=[];for(let{key:r,format:a}of ef){let l=e[r];if(void 0===l||""===l||!1===l)continue;let o=a(l);if(o.trim()&&(n.push(o),n.length>=t))break}return n}function ev(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:6;return Object.entries(e).slice(0,t).map(e=>{let[t,n]=e;return{key:t,text:"number"==typeof n?"".concat(t,": ").concat(Number.isInteger(n)?n:n.toFixed(2)):"".concat(t,": ").concat(String(n))}})}},8665:(e,t,n)=>{n.d(t,{_:()=>x});var r=n(65321),a=n(97109),l=n(48399),o=n(33442),i=n(14932),c=n(11702),s=n(85114),u=n(55897),d=n(57271),m=n(7576),p=n(96651),f=n(60470),h=n(54746),v=n(7492);let{Text:g}=l.A;function x(e){let{value:t,onChange:n,onSend:l,generating:x,submitting:y,disabled:w,disabledReason:b,selectedNode:k,onMentionSelected:j,resumable:I,onContinue:A,quickActions:S,requireGenerationSetup:M=!1,promptOptions:C=[],projectOptions:E=[],selectedPrompts:R=[],selectedProject:N=null,onSelectPrompts:_,onSelectProject:T,onPreviewStructure:B,collapsed:D=!1,onToggleCollapsed:q}=e,[z,P]=(0,a.useState)(!D);(0,a.useEffect)(()=>{if(!D)return void P(!0);let e=window.setTimeout(()=>P(!1),200);return()=>window.clearTimeout(e)},[D]);let O=(0,a.useRef)(null);(0,a.useEffect)(()=>{var e;D||null==(e=O.current)||e.focus()},[D,z]);let[F,U]=(0,a.useState)(!1),H=M?[0===R.length?"提示词":"",!N?"项目":""].filter(Boolean):[],L=H.length>0,Q=!M,Y=t.trim().length>0,X=w?b||"当前不可发起生成":L?"请先用上方「+」选择".concat(H.join(" 与 "),"——未选齐时不能发起生成"):x?"有任务正在运行:发送将加入生成队列(前面任务完成后自动开始)":Q||Y?"发送后将创建生成任务,画布随节点日志实时增长":"已选齐提示词与项目:需求可以不填,直接点「生成」",G=M?L?"先用输入框里的「+」选择".concat(H.join(" 与 "),"——缺一不可"):"已选好提示词与项目:直接点「生成」即可;有额外要求再写在这里(可不填)":"描述你的需求;可用上面的 @ 提及把节点带进正文(Enter 发送,Shift+Enter 换行)。篇幅由招标文件页数上限与标书类型自动决定:需求里写字数/页数不会改变篇幅目标";return(0,r.jsxs)("div",{className:"canvasInputBar".concat(D&&!z?" canvasInputBarCollapsed":""),children:[(0,r.jsx)("div",{className:"canvasInputHandleRow",children:(0,r.jsx)("button",{type:"button",className:"canvasInputHandle","aria-expanded":!D||!!z,"aria-label":D&&!z?"展开输入框":"收起输入框",onClick:()=>null==q?void 0:q(!(D&&!z)),children:D&&!z?(0,r.jsx)(p.A,{}):(0,r.jsx)(f.A,{})})}),z&&(0,r.jsxs)("div",{className:"canvasInputPanel".concat(D?" isLeaving":""),children:[(0,r.jsxs)("div",{className:"canvasInputTopRow",children:[(0,r.jsxs)(o.A,{wrap:!0,size:6,children:[k&&(0,r.jsx)(i.A,{title:"把「@".concat(k.title,"」插入输入框(可见文本,可自行修改)"),children:(0,r.jsx)(c.A,{color:"blue",style:{cursor:"pointer"},onClick:j,children:"@ ".concat(k.title)})}),!k&&(0,r.jsx)(g,{type:"secondary",style:{fontSize:12},children:"点选一个节点后可 @ 提及它"}),I&&!x&&(0,r.jsx)(s.Ay,{size:"small",type:"link",onClick:A,children:"继续生成"}),null==S?void 0:S.map(e=>(0,r.jsx)(s.Ay,{size:"small",type:"link",onClick:e.onClick,children:e.label},e.key))]}),(0,r.jsx)(o.A,{wrap:!0,size:10,children:(0,r.jsx)(u.A,{trigger:"click",placement:"topLeft",open:F,onOpenChange:U,content:(0,r.jsxs)("div",{style:{width:360,display:"flex",flexDirection:"column",gap:8},children:[M&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("div",{children:[(0,r.jsx)(g,{strong:!0,style:{fontSize:13},children:"提示词"}),(0,r.jsx)(d.A,{mode:"multiple",style:{width:"100%",marginTop:4},value:R.map(e=>e.value),placeholder:0===C.length?"该项目暂无提示词":"选择提示词(至少一份;可多选)",options:C,onChange:e=>null==_?void 0:_(e)})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)(g,{strong:!0,style:{fontSize:13},children:"项目"}),(0,r.jsx)(d.A,{style:{width:"100%",marginTop:4},value:null==N?void 0:N.value,showSearch:!0,optionFilterProp:"label",placeholder:0===E.length?"本项目知识库里还没有资料:先到知识库页上传并入库":"选择项目(= 知识库里这个项目的资料,决定本次用哪份材料)",options:E,onChange:e=>null==T?void 0:T(e)})]}),(0,r.jsx)(g,{type:"secondary",style:{fontSize:12},children:"两者选齐后才能点「生成」。「项目」选的是入库到本地知识库的那份项目资料(清单/图纸/招标文件都在其中)——本次生成只用它,不会把库里别的项目材料混进来。提示词的正文按名字进入对应链路(总控/写作 → 写作链,清单/图纸/提取 → 事实抽取链,排版 → 格式链);章节大纲取自其中带 <OUTLINE> 的那一份,且只能有一份声明大纲。"})]}),!M&&(0,r.jsx)(g,{type:"secondary",style:{fontSize:12},children:"提示词与项目取自这条记录本身(章节结构由记录里那份提示词的大纲派生),不需要在这里再选。"}),(0,r.jsx)("div",{children:(0,r.jsx)(s.Ay,{size:"small",block:!0,disabled:L,onClick:()=>{U(!1),null==B||B()},children:"结构预览(章清单与小节)"})})]}),children:(0,r.jsx)(s.Ay,{size:"small",icon:(0,r.jsx)(h.A,{}),type:L?"primary":"default",children:"提示词 / 项目"})})})]}),(0,r.jsxs)("div",{className:"canvasInputRow",children:[(0,r.jsxs)("div",{className:"canvasComposer".concat(w?" isDisabled":""),children:[(R.length>0||N)&&(0,r.jsxs)("div",{className:"canvasComposerChips",children:[R.map(e=>(0,r.jsx)(c.A,{color:"blue",closable:!0,onClose:t=>{t.preventDefault(),null==_||_(R.filter(t=>t.value!==e.value).map(e=>e.value))},children:"提示词:".concat(e.label)},e.value)),N&&(0,r.jsx)(c.A,{color:"geekblue",closable:!0,onClose:e=>{e.preventDefault(),null==T||T("")},children:"项目:".concat(N.label)})]}),(0,r.jsx)(m.A.TextArea,{className:"canvasComposerInput",ref:O,value:t,onChange:e=>n(e.target.value),onPressEnter:e=>{!e.shiftKey&&t.trim()&&(e.preventDefault(),w||L||y||l())},autoSize:{minRows:1,maxRows:5},placeholder:G,disabled:w})]}),(0,r.jsx)(i.A,{title:X,children:(0,r.jsx)(s.Ay,{type:"primary",icon:(0,r.jsx)(v.A,{}),loading:y,disabled:w||L||Q&&!Y,onClick:l,children:x?"排队提交":"生成"})})]})]})]})}},28629:(e,t,n)=>{n.d(t,{p:()=>r});function r(e,t){let n="/canvas/".concat(encodeURIComponent(e));return t?"".concat(n,"?projectRoot=").concat(encodeURIComponent(t)):n}},34038:(e,t,n)=>{n.d(t,{B:()=>u});var r=n(65321),a=n(48399),l=n(25258),o=n(85114),i=n(85493),c=n(38332);let{Paragraph:s}=a.A;function u(e){let{open:t,title:n,chapters:a,outlineSource:u,materialScope:d,onClose:m}=e,p=a.length>0?"结构预览:".concat(n,"(").concat(a.length," 章").concat(u?",大纲来源:".concat(u):"",")"):"结构预览:".concat(n);return(0,r.jsxs)(l.A,{open:t,title:p,centered:!0,onCancel:m,width:640,styles:{container:{maxHeight:"calc(100vh - 48px)",display:"flex",flexDirection:"column"},body:{overflowY:"auto",flex:1,minHeight:0}},footer:(0,r.jsx)(o.Ay,{type:"primary",onClick:m,children:"知道了"}),children:[(0,r.jsx)(s,{type:"secondary",style:{fontSize:12,marginBottom:8},children:"章和已声明小节来自用户提示词大纲。技能候选尚未确定位置;生成时会结合真实资料和技术职责进行专业规划,可能合并、调整或归入其他章节。 最终目录以完成规划后的文档为准。"}),d&&(0,r.jsx)(i.A,{type:"info",showIcon:!0,style:{marginBottom:8},message:"本次项目资料:".concat(d.root||"(未指定)","(").concat(d.fileCount," 份文件)"),description:"资料范围已锁定在所选项目资料内:库里其它项目的材料不会进入本篇。"}),0===a.length&&(0,r.jsx)(i.A,{type:"info",showIcon:!0,message:"本次没有派生出章清单",description:"派生的硬约束是提示词(或输入框要求)里要有 ≥2 章的显式大纲;缺大纲时服务端会直接拒绝这次生成,并在提示里说清缺什么。"}),(0,r.jsx)(c.A,{size:"small",dataSource:a,renderItem:(e,t)=>{var n;return(0,r.jsx)(c.A.Item,{children:(0,r.jsx)(c.A.Item.Meta,{title:"".concat(t+1,". ").concat(e.title),description:(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("div",{children:["用户声明:",(0,r.jsx)("span",{children:e.sections.length>0?e.sections.join("、"):"(未声明小节)"})]}),(null==(n=e.candidateSections)?void 0:n.length)?(0,r.jsxs)("div",{children:["技能候选(待规划):",(0,r.jsx)("span",{children:e.candidateSections.join("、")})]}):null]})})})}})]})}},45551:(e,t,n)=>{n.d(t,{Jm:()=>c,fw:()=>l,je:()=>r.j,mc:()=>s,z3:()=>a});var r=n(96538);function a(e){if(0===e)return"0 B";let t=Math.floor(Math.log(e)/Math.log(1024)),n=e/Math.pow(1024,t);return"".concat(n.toFixed(+(0!==t))," ").concat(["B","KB","MB","GB","TB"][t])}function l(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"zh-CN";if(!e||e<=0)return"en-US"===t?"Never":"从未";let n=Math.floor(Math.floor((Date.now()-e)/1e3)/60),r=Math.floor(n/60),a=Math.floor(r/24);return a>30?new Date(e).toLocaleDateString(t):"en-US"===t?a>0?"".concat(a,"d ago"):r>0?"".concat(r,"h ago"):n>0?"".concat(n,"m ago"):"Just now":a>0?"".concat(a," 天前"):r>0?"".concat(r," 小时前"):n>0?"".concat(n," 分钟前"):"刚刚"}let o={document:"文档",spreadsheet:"表格",image:"图片",cad:"图纸",code:"代码",data:"数据",web:"网页",diagram:"图表",archive:"压缩包",other:"其他"},i={document:"Document",spreadsheet:"Spreadsheet",image:"Image",cad:"CAD",code:"Code",data:"Data",web:"Web",diagram:"Diagram",archive:"Archive",other:"Other"};function c(e){var t;let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"zh-CN";return null!=(t=("en-US"===n?i:o)[e])?t:e}let s={active:"common.statusIndexed",outdated:"common.statusOutdated",error:"common.statusAbnormal",deleted:"common.statusDeleted",disk:"common.statusNotIndexed"}},52057:(e,t,n)=>{n.d(t,{B:()=>s,VF:()=>l,WF:()=>i,be:()=>c,s_:()=>u,xA:()=>o});var r=n(97109),a=n(8090);let l=24;function o(e,t,n,r){let a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:.15,l=r&&r.right>r.left&&r.bottom>r.top?r:{left:0,top:0,right:n.width,bottom:n.height},o=Math.max(1,l.right-l.left),i=Math.max(1,l.bottom-l.top),c=e.x*t.k+t.x,s=e.y*t.k+t.y,u=c+e.width*t.k,d=s+e.height*t.k,m=l.left+o*a,p=l.right-o*a,f=l.top+i*a,h=l.bottom-i*a;return c<m||s<f||u>p||d>h}let i=12e3;function c(e){if(!e.following)return{label:"跟随最新",title:"跟随已关闭:点一下重新打开(打开后会跟着当前活跃节点走)",paused:!1};if(e.pausedUntil>e.now){let t=Math.max(1,Math.ceil((e.pausedUntil-e.now)/1e3));return{label:"跟随暂停中",title:"跟随暂停:".concat(t,"s 后自动恢复(你刚动过视口;不是关掉了)"),paused:!0}}return e.node?{label:"跟随中",title:"正在跟随:".concat(e.node.title).concat(void 0!==e.node.round?"(第 ".concat(e.node.round," 轮)"):""),paused:!1}:{label:"跟随中",title:"跟随中:当前没有活跃节点可跟(生成开始后会自动跟上)",paused:!1}}function s(e,t,n){let r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:24,a=t.x,l=t.y,o=t.x+e.width*t.k,i=t.y+e.height*t.k,c=Math.min(o,n.right)-Math.max(a,n.left),s=Math.min(i,n.bottom)-Math.max(l,n.top);return c>=r&&s>=r?{dx:0,dy:0}:{dx:n.left+r-a,dy:n.top+r-l}}function u(){let[e,t]=(0,r.useState)({x:0,y:0,k:1}),n=(0,r.useRef)(null),l=(0,r.useRef)(null),o=(0,r.useRef)(e);(0,r.useEffect)(()=>{o.current=e},[e]);let i=(0,r.useCallback)((e,r,a)=>{t(t=>{var l;let o=Math.min(2,Math.max(.1,t.k*e)),i=null==(l=n.current)?void 0:l.getBoundingClientRect();if(!i||void 0===r||void 0===a)return{...t,k:o};let c=(r-i.left-t.x)/t.k,s=(a-i.top-t.y)/t.k;return{k:o,x:r-i.left-c*o,y:a-i.top-s*o}})},[]),[c,s]=(0,r.useState)(null);(0,r.useEffect)(()=>{var e,t;let r=null!=(t=null==(e=n.current)?void 0:e.parentElement)?t:n.current;r&&r!==c&&s(r)}),(0,r.useEffect)(()=>{if(!c)return;let e=e=>{(e=>{for(let t=e;t&&t!==c;t=t.parentElement)if(t.scrollHeight>t.clientHeight+1){let e=getComputedStyle(t).overflowY;if("auto"===e||"scroll"===e)return!0}return!1})(e.target)||(e.preventDefault(),i(Math.exp(-e.deltaY/320),e.clientX,e.clientY))};return c.addEventListener("wheel",e,{passive:!1}),()=>c.removeEventListener("wheel",e)},[c,i]);let u=(0,r.useCallback)(e=>{if(0!==e.button)return;e.currentTarget.setPointerCapture(e.pointerId);let t=o.current;l.current={pointerId:e.pointerId,startX:e.clientX,startY:e.clientY,originX:t.x,originY:t.y}},[]),d=(0,r.useCallback)(e=>{let n=l.current;n&&n.pointerId===e.pointerId&&t(t=>({...t,x:n.originX+(e.clientX-n.startX),y:n.originY+(e.clientY-n.startY)}))},[]),m=(0,r.useCallback)(()=>{l.current=null},[]),p=(0,r.useCallback)(()=>t({x:0,y:0,k:1}),[]),f=(e,t)=>null!=t?t:{left:0,top:0,right:e.width,bottom:e.height},h=(0,r.useCallback)((e,r,a)=>{t(t=>{var l;let o=null==(l=n.current)?void 0:l.getBoundingClientRect();if(!o||e<=0||r<=0)return{...t,x:0,y:0};let i=f(o,a),c=Math.max(1,i.right-i.left),s=Math.max(1,i.bottom-i.top),u=Math.min(2,Math.max(.1,Math.min(c/e,s/r)));return{k:u,x:i.left+(c-e*u)/2,y:i.top+(s-r*u)/2}})},[]),v=(0,r.useCallback)((e,r,l,o)=>{t(t=>{var i;let c=null==(i=n.current)?void 0:i.getBoundingClientRect();if(!c)return t;let s=f(c,o),u=null!=l?l:t.k,d=(s.left+s.right)/2,m=(s.top+s.bottom)/2;return{k:u,x:d-(e+a.zT/2)*u,y:m-(r+a.EL/2)*u}})},[]);return{view:e,containerRef:n,zoomAt:i,onPointerDown:u,onPointerMove:d,endDrag:m,reset:p,fit:h,centerOn:v,panBy:(0,r.useCallback)((e,n)=>{(0!==e||0!==n)&&t(t=>({...t,x:t.x+e,y:t.y+n}))},[])}}},57481:(e,t,n)=>{n.d(t,{_:()=>x});var r=n(65321),a=n(97109),l=n(17807),o=n(42700),i=n(84253),c=n(32965),s=n(14932),u=n(75174),d=n(1310),m=n(58209),p=n(39507),f=n(6578),h=n(93533),v=n(45551);let g="canvas:recordsBallPos";function x(e){let{currentDocumentId:t,projectRoot:n,onSelect:x,onCurrentDeleted:w}=e,b=(0,p.Vr)(),{message:k}=l.A.useApp(),j=(0,a.useRef)(null),[I,A]=(0,a.useState)([]),[S,M]=(0,a.useState)(!1),[C,E]=(0,a.useState)(!1),[R,N]=(0,a.useState)(1),[_,T]=(0,a.useState)(!1),[B,D]=(0,a.useState)([]),[q,z]=(0,a.useState)(!1),[P,O]=(0,a.useState)(null),[F,U]=(0,a.useState)(!0),H=(0,a.useRef)(null);(0,a.useEffect)(()=>{var e,t;let n=function(){try{let e=window.localStorage.getItem(g);if(!e)return null;let t=JSON.parse(e);return"number"==typeof(null==t?void 0:t.left)&&"number"==typeof(null==t?void 0:t.top)?{left:t.left,top:t.top}:null}catch(e){return null}}();if(!n)return;let r=null==(t=j.current)||null==(e=t.parentElement)?void 0:e.getBoundingClientRect();if(!r)return void O(n);O({left:Math.min(Math.max(8,n.left),Math.max(8,r.width-44-8)),top:Math.min(Math.max(8,n.top),Math.max(8,r.height-44-8))})},[]);let L=(0,a.useCallback)(async()=>{M(!0);try{let e=await (0,f.cQ)(n||void 0);A(e.documents||[])}catch(e){A([])}finally{M(!1)}},[n]);(0,a.useEffect)(()=>{L()},[L]),(0,a.useEffect)(()=>{C&&L()},[C,L]),(0,a.useEffect)(()=>{let e=setInterval(()=>{L()},3e3);return()=>clearInterval(e)},[L]),(0,a.useEffect)(()=>{N(1),D([])},[C]);let Q=(0,a.useMemo)(()=>I.slice((R-1)*8,8*R),[I,R]),Y=(0,a.useCallback)(e=>!(0,h.Ce)(e.status),[]),X=Q.filter(Y).map(e=>e.id),G=()=>{if(!C){var e,t,n;let r=null==(t=j.current)||null==(e=t.parentElement)?void 0:e.getBoundingClientRect(),a=null==(n=j.current)?void 0:n.getBoundingClientRect();U(!r||!a||a.top-r.top>252)}E(e=>!e)},K=async e=>{try{await (0,f.QG)(e.id,e.projectRoot||n||void 0),k.success(b("common.success")),D(t=>t.filter(t=>t!==e.id)),e.id===t&&w(),await L()}catch(e){k.error(b("common.error"))}},J=async()=>{let e=I.filter(e=>B.includes(e.id)&&Y(e));if(0!==e.length){z(!0);try{await Promise.all(e.map(e=>(0,f.QG)(e.id,e.projectRoot||n||void 0))),k.success(b("records.deletedCount").replace("{count}",String(e.length))),t&&e.some(e=>e.id===t)&&w(),D([]),T(!1),await L()}catch(e){k.error(b("common.error"))}finally{z(!1)}}},W=P?{left:P.left,top:P.top}:{right:24,bottom:96};return(0,r.jsxs)("div",{className:"canvasRecordsBall",ref:j,style:{position:"absolute",zIndex:3,...W},children:[C&&(0,r.jsxs)("div",{className:"canvasRecordsPanel",style:{position:"absolute",right:0,width:320,maxHeight:420,display:"flex",flexDirection:"column",...F?{bottom:52}:{top:52}},children:[(0,r.jsxs)("div",{className:"flex items-center justify-between gap-2 px-3 py-2 border-b border-[var(--canvasSectionBorder)] shrink-0",children:[(0,r.jsxs)("span",{className:"text-[13px] font-semibold text-[var(--colorText)]",children:[b("records.title"),(0,r.jsx)("span",{className:"ml-2 font-normal text-xs text-[var(--colorTextTertiary)]",children:I.length})]}),(0,r.jsx)("button",{type:"button",className:"canvasRecordsLink",onClick:()=>{T(e=>!e),D([])},children:_?b("common.cancel"):b("records.batch")})]}),(0,r.jsx)("div",{className:"flex-1 min-h-0 overflow-y-auto",children:S&&0===I.length?(0,r.jsx)("div",{className:"py-10 text-center",children:(0,r.jsx)(o.A,{size:"small"})}):0===I.length?(0,r.jsx)("div",{className:"py-8",children:(0,r.jsx)(i.A,{image:i.A.PRESENTED_IMAGE_SIMPLE,description:(0,r.jsx)("span",{className:"text-xs text-[var(--colorTextTertiary)]",children:b("records.empty")})})}):Q.map(e=>{var n;let a=e.id===t,l=Y(e);return(0,r.jsxs)("div",{className:"group flex items-start gap-2 px-3 py-2 border-b border-[var(--canvasSectionBorder)] last:border-b-0 transition-colors ".concat(a?"bg-[var(--colorBgSelected)]":"hover:bg-[var(--colorBgHover)]"),children:[_&&(0,r.jsx)("input",{type:"checkbox",className:"mt-1 shrink-0",disabled:!l,checked:B.includes(e.id),onChange:t=>D(n=>t.target.checked?[...n,e.id]:n.filter(t=>t!==e.id))}),(0,r.jsxs)("button",{type:"button",className:"min-w-0 flex-1 text-left bg-transparent border-0 p-0 cursor-pointer",title:e.title,onClick:()=>{x(e),E(!1)},children:[(0,r.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,r.jsx)("span",{className:"w-1.5 h-1.5 shrink-0 rounded-full ".concat(null!=(n=y[e.status])?n:"bg-[var(--colorTextTertiary)]")}),(0,r.jsx)("span",{className:"truncate text-[13px] ".concat(a?"font-semibold text-[var(--colorText)]":"text-[var(--colorText)]"),children:e.title}),a&&(0,r.jsx)("span",{className:"shrink-0 text-[10px] text-[var(--colorTextTertiary)]",children:b("records.current")})]}),(0,r.jsxs)("div",{className:"mt-0.5 pl-3 text-[11px] text-[var(--colorTextTertiary)]",children:[(0,r.jsx)(d.A,{className:"mr-1"}),(0,v.fw)(e.updatedAt,"zh-CN")]})]}),!_&&l&&(0,r.jsx)(c.A,{title:b("records.confirmDelete"),description:b("records.deleteHint"),onConfirm:()=>{K(e)},okText:b("common.confirm"),cancelText:b("common.cancel"),children:(0,r.jsx)("button",{type:"button",className:"canvasRecordsDelete",title:b("common.delete"),children:(0,r.jsx)(m.A,{})})}),!_&&!l&&(0,r.jsx)(s.A,{title:b("records.inFlightHint"),children:(0,r.jsx)("span",{className:"canvasRecordsDelete isDisabled",children:(0,r.jsx)(m.A,{})})})]},e.id)})}),I.length>8&&(0,r.jsx)("div",{className:"flex justify-center px-3 py-2 border-t border-[var(--canvasSectionBorder)] shrink-0",children:(0,r.jsx)(u.A,{size:"small",simple:!0,current:R,total:I.length,pageSize:8,onChange:N})}),_&&(0,r.jsxs)("div",{className:"flex items-center justify-between gap-2 px-3 py-2 border-t border-[var(--canvasSectionBorder)] shrink-0",children:[(0,r.jsx)("span",{className:"text-xs text-[var(--colorTextSecondary)]",children:b("records.checkedCount").replace("{count}",String(B.length))}),(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)("button",{type:"button",className:"canvasRecordsLink",onClick:()=>D(B.length===X.length?[]:X),children:B.length===X.length&&X.length>0?b("records.clearSelect"):b("records.selectPage")}),(0,r.jsx)(c.A,{title:b("records.confirmDeleteSelected").replace("{count}",String(B.length)),description:b("records.deleteHint"),disabled:0===B.length,onConfirm:()=>{J()},okText:b("common.confirm"),cancelText:b("common.cancel"),children:(0,r.jsxs)("button",{type:"button",className:"canvasRecordsDanger",disabled:0===B.length||q,children:[(0,r.jsx)(m.A,{className:"mr-1"}),b("records.deleteSelected")]})})]})]})]}),(0,r.jsxs)("div",{className:"canvasRecordsBallBtn",role:"button",tabIndex:0,"aria-label":"".concat(b("records.title"),"(").concat(I.length,")"),style:{width:44,height:44},onPointerDown:e=>{var t,n,r;let a=null==(n=j.current)||null==(t=n.parentElement)?void 0:t.getBoundingClientRect(),l=null==(r=j.current)?void 0:r.getBoundingClientRect();if(a&&l){H.current={pointerId:e.pointerId,startX:e.clientX,startY:e.clientY,originLeft:l.left-a.left,originTop:l.top-a.top,moved:!1};try{e.currentTarget.setPointerCapture(e.pointerId)}catch(e){}}},onPointerMove:e=>{var t,n;let r=H.current,a=null==(n=j.current)||null==(t=n.parentElement)?void 0:t.getBoundingClientRect();if(!r||r.pointerId!==e.pointerId||!a)return;let l=e.clientX-r.startX,o=e.clientY-r.startY;!r.moved&&5>Math.hypot(l,o)||(r.moved=!0,O({left:Math.min(Math.max(8,r.originLeft+l),Math.max(8,a.width-44-8)),top:Math.min(Math.max(8,r.originTop+o),Math.max(8,a.height-44-8))}))},onPointerUp:e=>{let t=H.current;H.current=null;try{e.currentTarget.releasePointerCapture(e.pointerId)}catch(e){}if(t){if(t.moved)return void O(e=>{if(e)try{window.localStorage.setItem(g,JSON.stringify(e))}catch(e){}return e});G()}},onKeyDown:e=>{("Enter"===e.key||" "===e.key)&&(e.preventDefault(),G())},children:[(0,r.jsx)(d.A,{}),(0,r.jsx)("span",{className:"canvasRecordsBallBadge".concat(0===I.length?" isZero":""),children:I.length>99?"99+":I.length})]})]})}let y={completed:"bg-[var(--colorOk)]",completed_with_issues:"bg-[var(--colorDanger)]",warning:"bg-[var(--colorWarning)]",failed:"bg-[var(--colorDanger)]",aborted:"bg-[var(--colorTextTertiary)]",generating:"bg-[var(--colorAccent)]",queued:"bg-[var(--colorTextTertiary)]",paused:"bg-[var(--colorWarning)]"}},93533:(e,t,n)=>{n.d(t,{Ce:()=>k,tl:()=>I});var r=n(97109),a=n(96538),l=n(94394),o=n(23216),i=n(26619),c=n(8263),s=n(16285),u=n(8579),d=n(29071),m=n(7851),p=n(1310),f=n(26631),h=n(83914),v=n(6578);async function g(e){let t,n=0;for(;;){var r,a;let l;if(e.cancelled())throw Error("用户中止");try{l=await e.read(t)}catch(t){if(e.cancelled())throw Error("用户中止",{cause:t});1===(n+=1)&&(null==(r=e.connectionInterrupted)||r.call(e,t)),await e.delay(Math.min(2e3*n,15e3));continue}n=0;let o=l.document;if(!o){if(!l.unchanged&&!l.status)throw Error("未找到生成记录,无法读取该任务进度");["paused","failed","aborted","completed","completed_with_issues","warning"].includes(null!=(a=l.status)?a:"")&&(t=void 0),await e.delay(1500);continue}if(t=o.updatedAt,e.apply(o),"paused"===o.status)return o;if("failed"===o.status||"aborted"===o.status)throw Error(o.error||("aborted"===o.status?"生成已中止":"生成失败"));if(["completed","completed_with_issues","warning"].includes(o.status)){if(o.draft)return o;throw Error(o.error||"服务任务已结束,但最终成稿未完成;已保存的正文可在生成记录中查看")}await e.delay(1500)}}let x=null,y=!1;function w(){null==x||x.listeners.forEach(e=>e())}let b=l.i_;function k(e){return"completed"!==e&&"completed_with_issues"!==e&&"warning"!==e&&"failed"!==e&&"aborted"!==e&&"paused"!==e}function j(e){var t,n,a,l,h,v,g,x,y;let w=null==(t=e.agentWorkflow)?void 0:t.nodes;if(!w||0===w.length)return null;let k=[...w].sort((e,t)=>{var n,r;return(null!=(n=e.seq)?n:0)-(null!=(r=t.seq)?r:0)}).map(e=>{let t=b[e.type]||e.title||e.type||"节点",n="failed"===e.status||"blocked"===e.status?"error":"paused"===e.status||"repairing"===e.status?"warning":"running"===e.status?"process":"pending"===e.status?"wait":"finish",a=Object.entries(e.metrics||{}).slice(0,4).map(e=>{let[t,n]=e;return"".concat(t,":").concat(String(n))}).join(" ");return{key:e.id,title:t,subtitle:e.progress?"".concat(e.progress.label||"进度",":").concat(e.progress.current,"/").concat(e.progress.total):"",description:a,status:n,icon:function(e){let t=e.split(".")[0]||e;return"role_binding"===e||"prepare"===t?(0,r.createElement)(o.A):"knowledge_retrieval"===e||"understand"===t?(0,r.createElement)(i.A):"file_understanding"===e||"skill"===t?(0,r.createElement)(c.A):"fact_extraction"===e?(0,r.createElement)(s.A):"chapter_generation"===e||"chapter"===t||"write"===t?(0,r.createElement)(u.A):"llm_review"===e||"turn"===t||"round"===t?(0,r.createElement)(d.A):"validation"===e||"repair"===t||"recheck"===t?(0,r.createElement)(m.A):"plan"===t||"blueprint"===t?(0,r.createElement)(o.A):"rollback"===t||"snapshot"===t?(0,r.createElement)(p.A):(0,r.createElement)(f.A)}(e.type),subSteps:[]}}),j="generating"===e.status||"queued"===e.status?null!=(g=null!=(v=null==(n=k.find(e=>"process"===e.status))?void 0:n.key)?v:null==(a=k.at(-1))?void 0:a.key)?g:null:("failed"===e.status||"aborted"===e.status)&&null!=(y=null!=(x=null==(l=k.find(e=>"error"===e.status))?void 0:l.key)?x:null==(h=k.at(-1))?void 0:h.key)?y:null;return{steps:k,activeKey:j}}function I(){var e,t;let n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{projectRoot:l,documents:o,onNotice:i,t:c,onGenerated:s}=n,[u,d]=(0,r.useState)([]),[m,p]=(0,r.useState)(null),[f,b]=(0,r.useState)(!1),[I,A]=(0,r.useState)(null),[S,M]=(0,r.useState)(""),[C,E]=(0,r.useState)(null),[R,N]=(0,r.useState)(null!=(e=n.documentId)?e:null),[_,T]=(0,r.useState)(null),[B,D]=(0,r.useState)(null!=o?o:[]),[q,z]=(0,r.useState)(0),[P,O]=(0,r.useState)(null),[F,U]=(0,r.useState)([]),[H,L]=(0,r.useState)(null),[Q,Y]=(0,r.useState)(null),X=(0,r.useRef)(""),G=(0,r.useRef)(new Map),K=(0,r.useRef)(new Map),J=(0,r.useRef)(!1),W=(0,r.useRef)(l),V=(0,r.useRef)(R),Z=(0,r.useRef)(u),$=(0,r.useRef)(m),ee=(0,r.useRef)(f),et=(0,r.useRef)(c),en=(0,r.useRef)(i),er=(0,r.useRef)(s);(0,r.useEffect)(()=>{W.current=l},[l]),(0,r.useEffect)(()=>{V.current=R},[R]),(0,r.useEffect)(()=>{Z.current=u},[u]),(0,r.useEffect)(()=>{$.current=m},[m]),(0,r.useEffect)(()=>{ee.current=f},[f]),(0,r.useEffect)(()=>{et.current=c},[c]),(0,r.useEffect)(()=>{en.current=i},[i]),(0,r.useEffect)(()=>{er.current=s},[s]);let ea=(0,r.useMemo)(()=>"activeGenDocId:".concat(l||"default"),[l]),el=(0,r.useCallback)(e=>{var t;null==(t=en.current)||t.call(en,e)},[]),eo=(0,r.useCallback)((e,t)=>{var n,r;return null!=(r=null==(n=et.current)?void 0:n.call(et,e))?r:t},[]);(0,r.useEffect)(()=>{let e=()=>{let e=x;e&&(d(e.flowSteps),p(e.activeFlowKey),b(e.loading),e.documentId&&N(e.documentId),e.draft&&A(e.draft),void 0!==e.content&&M(e.content))},t=x;return null==t||t.listeners.add(e),e(),()=>{null==t||t.listeners.delete(e)}},[]);let ei=(0,r.useRef)(!1),ec=(0,r.useCallback)(async()=>{try{D((await (0,v.cQ)(W.current||void 0)).documents),ei.current=!1}catch(e){ei.current||(ei.current=!0,el({kind:"error",text:"生成记录列表读取失败——界面显示的可能不是最新内容,请稍后重试或查看服务端日志"}))}},[el]);(0,r.useEffect)(()=>{o&&D(o)},[o]),(0,r.useEffect)(()=>{void 0!==n.documentId&&null!==n.documentId&&N(n.documentId)},[n.documentId]);let es=(0,r.useCallback)(function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:ee.current;(null==x?void 0:x.loading)&&(x.flowSteps=e,x.activeFlowKey=t,x.loading=n,w())},[]),eu=(0,r.useCallback)(e=>{let t=Date.now();for(let n of e){let e=G.current.get(n.key);"process"!==n.status||e?("finish"===n.status||"error"===n.status||"warning"===n.status)&&e&&!e.endedAt&&G.current.set(n.key,{...e,endedAt:t}):G.current.set(n.key,{startedAt:t})}},[]),ed=(0,r.useCallback)(e=>{var t,n,r,a,l,o,i,c,s,u,m;let f=(null==(t=e.agentWorkflow)?void 0:t.nodes)||[],h="".concat(e.id,"|").concat(e.updatedAt,"|").concat(e.status,"|").concat(e.error||"","|n").concat(f.length,":").concat(f.map(e=>{var t,n,r,a;return"".concat(e.id,"=").concat(e.status,":").concat(null!=(r=null==(t=e.progress)?void 0:t.current)?r:0,"/").concat(null!=(a=null==(n=e.progress)?void 0:n.total)?a:0)}).join(","));if(X.current===h)return;X.current=h,E(e);let{steps:v,activeKey:g}=function(e){var t;return arguments.length>1&&void 0!==arguments[1]&&arguments[1],null!=(t=j(e))?t:{steps:[],activeKey:null}}(e);eu(v);let x=k(e.status);d(v),p(g),b(x),es(v,g,x),T("failed"===e.status||"aborted"===e.status?e.error||("aborted"===e.status?"生成已中止":"生成失败"):null),("completed"===e.status||"completed_with_issues"===e.status||"warning"===e.status)&&(e.draft&&A(e.draft),M(e.editedMarkdown||e.markdown),U(e.exportReports||[]),Y({docId:e.id,...(null==(n=e.deliveryQuality)?void 0:n.receipt)||(null==(r=e.reviewMetadata)?void 0:r.contractQuality)?{contractQuality:null!=(u=null==(a=e.deliveryQuality)?void 0:a.receipt)?u:e.reviewMetadata.contractQuality}:{},...(null==(l=e.deliveryQuality)?void 0:l.stale)||(null==(o=e.reviewMetadata)?void 0:o.contractQualityStale)?{contractQualityStale:null!=(m=null==(i=e.deliveryQuality)?void 0:i.stale)?m:e.reviewMetadata.contractQualityStale}:{},...e.projectRoot?{projectRoot:e.projectRoot}:{},...(null==(s=e.reviewMetadata)||null==(c=s.telemetry)?void 0:c.repairChainNetChars)?{netChars:e.reviewMetadata.telemetry.repairChainNetChars}:{}}))},[es,eu]),em=(0,r.useCallback)(e=>{e.id&&N(e.id),ed(e)},[ed]),ep=(0,r.useCallback)((e,t)=>g({cancelled:()=>!!(null==t?void 0:t.aborted),apply:ed,delay:e=>new Promise(t=>window.setTimeout(t,e)),connectionInterrupted:()=>el({kind:"warning",text:"暂时无法读取生成进度,正在重新连接;生成状态以服务端回执为准"}),read:async n=>{let r=new AbortController;t&&(t.pollController=r);try{return await (0,v.v7)(e,!0,W.current||void 0,r.signal,n)}finally{(null==t?void 0:t.pollController)===r&&(t.pollController=void 0)}}}),[ed,el]),ef=(0,r.useCallback)(async(e,t)=>{if(!e.specId)return;let n=e.title,a=e.promptIds,l=e.projectRoot||W.current;if((null==x?void 0:x.aborted)&&(x=null),null==x?void 0:x.loading){if(J.current)return;if(!l)return void el({kind:"error",text:"未识别当前项目,请先选择或打开项目后再生成文件"});J.current=!0;try{let e=await (0,v.OX)({promptIds:a,...n?{title:n}:{},requirement:t,projectRoot:l});await ec(),el({kind:"info",text:e.queuePosition?"已加入生成队列(第 ".concat(e.queuePosition," 位):前面任务完成后将自动开始"):"生成任务已创建"})}catch(e){el({kind:"error",text:e instanceof Error?e.message:"创建生成任务失败"})}finally{J.current=!1}return}if(!l)return void el({kind:"error",text:"未识别当前项目,请先选择或打开项目后再生成文件"});b(!0);let o=Z.current,i=o.length>0?o:[{key:"prepare",title:"正在创建生成任务",description:"系统正在创建后台生成任务,请稍候。",status:"process",icon:(0,r.createElement)(h.A),subSteps:[{key:"start",title:"准备生成任务",status:"process"}]}],c=$.current||"prepare";d(i),p(c);let s=(0,v.OX)({promptIds:a,...n?{title:n}:{},requirement:t,projectRoot:l});x={id:Date.now(),specId:e.specId,loading:!0,flowSteps:i,activeFlowKey:c,promise:s,listeners:new Set};try{var u,m,f,g,k,I;let t=await s;t.documentId&&(localStorage.setItem(ea,t.documentId),N(t.documentId),(null==x?void 0:x.promise)===s&&(x.documentId=t.documentId)),await ec(),t.queuePosition&&el({kind:"info",text:"已加入生成队列(第 ".concat(t.queuePosition," 位):前面任务完成后将自动开始")});let n=t.documentId?await ep(t.documentId,(null==x?void 0:x.promise)===s?x:void 0):void 0;if((null==n?void 0:n.status)==="paused"){(null==x?void 0:x.promise)===s&&(x.loading=!1,w(),x=null),localStorage.removeItem(ea),await ec(),el({kind:"info",text:"生成已在节点边界暂停,已保存实际正文和执行状态"});return}let r=t.draft||(null==n?void 0:n.draft);if(!r)throw Error("生成结果为空");(t.documentId||(null==n?void 0:n.id))&&N(t.documentId||n.id),A(r),M((null==n?void 0:n.editedMarkdown)||(null==n?void 0:n.markdown)||r.markdown),(null==x?void 0:x.promise)===s&&(x.draft=r,x.content=(null==n?void 0:n.editedMarkdown)||(null==n?void 0:n.markdown)||r.markdown);let a=n||{id:t.documentId||"draft-".concat(Date.now()),templateId:(null==(u=t.record)?void 0:u.templateId)||(null==(m=t.documentSpec)?void 0:m.id)||e.specId,templateName:(null==(f=t.record)?void 0:f.templateName)||(null==(g=t.documentSpec)?void 0:g.title),title:r.title,requirement:r.requirement,projectRoot:r.projectRoot||W.current,projectId:r.projectId,markdown:r.markdown,status:r.validationIssues.some(e=>"error"===e.level||"warning"===e.level)||!r.exportGate.passed?"completed_with_issues":"completed",draft:r,executionStages:r.executionStages,assets:r.assets||[],createdAt:r.generatedAt,updatedAt:Date.now()},{steps:l}=null!=(I=j(a))?I:{steps:[],activeKey:null};d(l),es(l,"done",!1),p("done"),(null==x?void 0:x.promise)===s&&(x.activeFlowKey="done",x.loading=!1,w(),x=null),localStorage.removeItem(ea),await ec(),el("completed"===a.status?{kind:"success",text:"生成完成,专业交付检查已通过"}:{kind:"warning",text:"本轮运行已结束,实际稿仍有问题待复核,可导出审阅稿"}),(t.documentId||(null==n?void 0:n.id))&&(null==(k=er.current)||k.call(er,t.documentId||n.id))}catch(r){localStorage.removeItem(ea);let e=r instanceof Error?r.message:eo("common.error","出错了"),t=y;y=!1;let n=!t&&"用户中止"===e;T(e),t||d(t=>{let n=t.map(t=>"process"===t.status?{...t,status:"error",description:e,subSteps:t.subSteps.map((e,t)=>({...e,status:0===t?"error":e.status}))}:t);return es(n,$.current,!1),n}),(null==x?void 0:x.promise)===s&&(x.loading=!1,x.error=e,w(),x=null),await ec(),n?el({kind:"warning",text:"生成任务已被中止(可能来自其他窗口):可在列表中点击「继续生成」恢复"}):t||el({kind:"error",text:e})}finally{b(!1),y=!1,(null==x?void 0:x.promise)===s&&(x.loading=!1,w())}},[el,ec,es,ea,eo,ep]),eh=(0,r.useCallback)(e=>{let t=K.current.get(e);t&&(clearInterval(t),K.current.delete(e))},[]),ev=(0,r.useCallback)((e,t)=>{eh(e);let n=setInterval(()=>{(async()=>{try{let{document:n}=await (0,v.v7)(e,!0,t||W.current||void 0);if(!n)return;ed(n),await ec(),k(n.status)||(eh(e),localStorage.removeItem(ea))}catch(e){}})()},2e3);K.current.set(e,n)},[ed,ec,eh,ea]);(0,r.useEffect)(()=>()=>{for(let e of K.current.values())clearInterval(e);K.current.clear()},[]),(0,r.useEffect)(()=>{if(0===B.length)return;let e=localStorage.getItem(ea);if(!e)return;if(!B.find(t=>t.id===e&&("generating"===t.status||"queued"===t.status)))return void localStorage.removeItem(ea);N(e);let t=setInterval(()=>{(async()=>{try{let{document:n}=await (0,v.v7)(e,!1,W.current||void 0);if(!n)return;await ec(),"generating"!==n.status&&"queued"!==n.status&&(localStorage.removeItem(ea),clearInterval(t))}catch(e){clearInterval(t)}})()},3e3);return()=>clearInterval(t)},[B,ec,ea]),(0,r.useEffect)(()=>{var e;if(!R)return;let t=B.find(e=>e.id===R),n=null!=(e=null==t?void 0:t.status)?e:null==C?void 0:C.status;n&&k(n)?ev(R,(null==t?void 0:t.projectRoot)||W.current):eh(R)},[R,B,ev,eh,null==C?void 0:C.status]),(0,r.useEffect)(()=>{if(!f||!m)return;let e=window.setInterval(()=>d(e=>{let t=e.map(e=>{if(e.key!==m||"process"!==e.status)return e;let t=e.subSteps.findIndex(e=>"process"===e.status),n=t<0?0:Math.min(t+1,e.subSteps.length-1);return{...e,subSteps:e.subSteps.map((e,t)=>t<n?{...e,status:"finish"}:t===n?{...e,status:"process"}:{...e,status:"wait"})}});return es(t,m),t}),1400);return()=>window.clearInterval(e)},[m,f,es]),(0,r.useEffect)(()=>{if(!f)return;let e=window.setInterval(()=>z(e=>e+1),1e3);return()=>window.clearInterval(e)},[f]);let eg=(0,r.useCallback)(e=>{var t;let n=G.current.get(e);if(!n)return null;let r=null!=(t=n.endedAt)?t:Date.now(),l=(0,a.a)(r-n.startedAt,{unit:"ms",style:"fine"});return n.endedAt?l:"".concat(l,"(运行中)")},[q]),ex=(0,r.useCallback)(async e=>{x&&(y=!0);let t=V.current,n=null;if(t&&await (0,v.r)(t,e||W.current||void 0).catch(e=>{n=e}),x){var r;x.aborted=!0,null==(r=x.pollController)||r.abort(),x.loading=!1,x.error="用户中止",w(),x=null}for(let e of(localStorage.removeItem(ea),K.current.values()))clearInterval(e);K.current.clear(),b(!1),d([]),p(null),T("用户中止"),await ec(),el(n?{kind:"error",text:"本地已停止跟踪,但服务端未确认中止(".concat(n instanceof Error?n.message:String(n),")——任务可能仍在后台运行,请稍后重试或查看服务端日志")}:{kind:"success",text:"已中止生成任务"})},[el,ec,ea]),ey=(0,r.useCallback)(async e=>{if((null==x?void 0:x.loading)&&x.documentId===e.id){var t;y=!0,x.aborted=!0,null==(t=x.pollController)||t.abort(),x.loading=!1,x.error="用户中止",w(),x=null,b(!1)}localStorage.removeItem(ea),eh(e.id);try{await (0,v.r)(e.id,e.projectRoot||W.current||void 0),el({kind:"success",text:"queued"===e.status?"已取消排队任务":"已中止生成任务"})}catch(e){el({kind:"info",text:"任务已不在运行,已刷新状态"})}finally{await ec(),V.current===e.id&&(N(null),E(null),A(null),M(""))}},[el,ec,eh,ea]),ew=(0,r.useCallback)(async e=>{try{N(e.id),b(!0);let t=await (0,v.UQ)(e.id,e.projectRoot||W.current||void 0);localStorage.setItem(ea,t.documentId),await ec();let n=await ep(t.documentId);n.draft&&(A(n.draft),M(n.editedMarkdown||n.markdown||n.draft.markdown)),localStorage.removeItem(ea),await ec(),el("paused"===n.status?{kind:"info",text:"生成已暂停,实际稿已保存"}:"completed"===n.status?{kind:"success",text:"已继续生成并通过专业交付检查"}:{kind:"warning",text:"继续生成已结束,实际稿仍待复核,可导出审阅稿"})}catch(e){el({kind:"error",text:e instanceof Error?e.message:"继续生成失败"})}finally{b(!1)}},[el,ec,ea,ep]),eb=(0,r.useCallback)(async(e,t)=>{let n=await fetch("/api/documents/generated/".concat(encodeURIComponent(e),"/pause"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectRoot:t||W.current||void 0})});if(!n.ok)throw Error(await n.text()||"HTTP ".concat(n.status));let r=await n.json();return el({kind:"success",text:r.message||"已请求暂停:正在取消模型调用并保存已完成正文"}),await ec(),ev(e,t),r},[el,ec,ev]),ek=(0,r.useCallback)(async(e,t)=>{let n=await fetch("/api/documents/generated/".concat(encodeURIComponent(e),"/resume-generate"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectRoot:t||W.current||void 0})});if(!n.ok)throw Error(await n.text()||"HTTP ".concat(n.status));let r=await n.json().catch(()=>void 0),a=null==r?void 0:r.resumeReuse;el(a?{kind:0===a.blockers.length?"info":"warning",text:"已请求继续:".concat(a.reason)}:{kind:"info",text:"已请求继续:将复用已保存的检查点"}),await ec()},[el,ec]),ej=(0,r.useCallback)((e,t,n)=>{let r=new Blob([e],{type:n}),a=URL.createObjectURL(r),l=document.createElement("a");l.href=a,l.download=t,l.target="_self",l.rel="noopener",l.style.display="none",document.body.appendChild(l),l.dispatchEvent(new MouseEvent("click",{bubbles:!0,cancelable:!0,view:window})),l.remove(),window.setTimeout(()=>URL.revokeObjectURL(a),1e3)},[]),eI=(0,r.useCallback)(async(e,t)=>{let n=await (0,v.hU)(e,t);ej(n.blob,n.filename,"application/json;charset=utf-8")},[ej]),eA=(0,r.useCallback)(async(e,t,n)=>{try{let{blob:r,filename:a,receipt:l,gateIssues:o}=await (0,v.UE)(e);ej(r,a||t,n),L("review"===l.exportPurpose?{at:Date.now(),count:o.length,issues:o}:null),l.issuesReport&&await eI(e,l.issuesReport)}catch(t){throw t instanceof v.GA&&t.receipt.issuesReport&&await eI(e,t.receipt.issuesReport),t}},[ej,eI]),eS=(0,r.useMemo)(()=>({markdown:"text/markdown;charset=utf-8",html:"text/html;charset=utf-8",pdf:"application/pdf",docx:"application/vnd.openxmlformats-officedocument.wordprocessingml.document"}),[]),eM=(0,r.useCallback)(async(e,t)=>{var n,r;let a=void 0!==e.editedMarkdown?e.editedMarkdown:e.markdown||(null==(n=e.draft)?void 0:n.markdown)||"",l=void 0===e.editedMarkdown&&(null==(r=e.checkpointChapters)?void 0:r.some(e=>{var t;return null==(t=e.content)?void 0:t.trim()}));if(!a.trim()&&!l)return void el({kind:"warning",text:"该记录暂无可导出的正文内容"});O(t);let o={exportPurpose:"review",documentId:e.id,title:e.title,format:t,projectRoot:e.projectRoot||W.current||void 0};try{await eA(o,"".concat(e.title,".").concat(t),eS[t])}catch(e){el({kind:"error",text:e instanceof Error?e.message:"导出失败"})}finally{O(null)}},[eA,eS,el]),eC=(0,r.useCallback)(async e=>{if(!I)return;O(e);let t={exportPurpose:"review",documentId:V.current||void 0,title:I.title,markdown:S,format:e,exportGate:I.exportGate,useClientMarkdown:!0,projectRoot:I.projectRoot||W.current||void 0};try{if(await eA(t,"".concat(I.title,".").concat("markdown"===e?"md":e),eS[e]),V.current)try{let{document:e}=await (0,v.v7)(V.current,!1,I.projectRoot||W.current||void 0);e&&U(e.exportReports||[])}catch(e){}}catch(e){el({kind:"error",text:e instanceof Error?e.message:"导出失败"})}finally{O(null)}},[S,eA,I,eS,el]),eE=R&&null!=(t=B.find(e=>e.id===R))?t:C,eR=function(e,t){if(!e)return t?"running":"idle";switch(e){case"queued":return"queued";case"generating":return"running";case"paused":return"paused";case"failed":case"aborted":return"stopped";case"completed_with_issues":case"warning":return"issues";case"completed":return"done";default:return"idle"}}(null==eE?void 0:eE.status,f);return{flowSteps:u,activeFlowKey:m,loading:f,draft:I,content:S,workflowRecord:C,documentId:R,documents:B,error:_,phase:eR,flowTick:q,boundRecord:eE,canResume:function(e){var t,n,r,a,l,o,i,c;if(!e)return{resumable:!1,kind:"not-resumable",reason:"记录不存在"};let s=String(e.status||""),u=null!=(r=null==(t=e.checkpointChapters)?void 0:t.length)?r:0,d=u>0,m="number"==typeof e.interruptedAt||!!e.interruptionReason;if(null!=(a=e.running)?a:"generating"===s||"queued"===s)return{resumable:!1,kind:"not-resumable",reason:"这次生成还在跑(续跑入口不该在运行态出现)"};if("paused"===s)return{resumable:!0,kind:"paused",reason:"暂停是可逆的:从检查点接着跑,未受影响的章会被复用"};if(m)return d?{resumable:!0,kind:"interrupted",reason:"上次运行被中断(".concat(null!=(l=e.interruptionReason)?l:"中断标记",")且留有 ").concat(u," 个检查点章:续跑只补未完成的章")}:{resumable:!1,kind:"not-resumable",reason:"这次运行被中断且**没有检查点章**:续跑等于全量重跑,请用新建生成(这里不伪装成续跑)"};if("warning"===s)return d?{resumable:!0,kind:"interrupted",reason:"上次运行留下了 ".concat(u," 个检查点章(状态 warning):续跑只补未完成的章")}:{resumable:!1,kind:"not-resumable",reason:"warning 且没有检查点章:没有可接着跑的东西,请用新建生成"};let p=null!=(o=null==(n=e.draft)?void 0:n.exportGate)?o:e.exportGate;if((null==p?void 0:p.passed)===!1){let e=null!=(c=null==(i=p.blockingIssues)?void 0:i.length)?c:0;return{resumable:!0,kind:"gate-blocked-repair",reason:"门禁未过(".concat(e>0?"".concat(e," 项阻断"):"阻断清单未随记录落盘","):续跑把阻断项交回生成侧修复(回源修复,不是重新生成)")}}return"completed"===s?{resumable:!1,kind:"not-resumable",reason:'这份稿已完成:要再跑请新建生成("继续"会把已定的交付物再推一遍)'}:"completed_with_issues"===s||"failed"===s||"aborted"===s?{resumable:!0,kind:"resumable-terminal",reason:"completed_with_issues"===s?"已收口但有未过项:续跑把未过项交回生成侧修复(回源修复,不是重新生成)".concat(d?";复用 ".concat(u," 个检查点章"):""):"aborted"===s?"这份稿被中止过:续跑从中断处接着跑".concat(d?"(复用 ".concat(u," 个检查点章)"):"(无检查点 ⇒ 全量重跑)"):"上次生成失败:续跑接着跑".concat(d?"(复用 ".concat(u," 个检查点章)"):"(无检查点 ⇒ 全量重跑)")}:{resumable:!1,kind:"not-resumable",reason:"当前状态(".concat(s||"未知",")没有可续跑的线索")}}(eE).resumable,startGeneration:ef,abortGeneration:ex,abortDocument:ey,resumeDocument:ew,pauseDocument:eb,resumePausedDocument:ek,applyRecord:em,refreshDocuments:ec,waitForDoc:ep,stepDurationText:eg,setDraft:A,setContent:M,setExportReports:U,export:{exporting:P,nonDeliverableExport:H,exportRecord:eM,exportEditor:eC,downloadExport:eA,exportReports:F},deliveryReadings:Q}}},94394:(e,t,n)=>{n.d(t,{i_:()=>r,uh:()=>a});let r={role_binding:"项目角色配置绑定",knowledge_retrieval:"知识库证据检索",file_understanding:"项目资料理解",fact_extraction:"事实抽取",chapter_generation:"章节正文生成",llm_review:"独立复核",validation:"规则与准入校验",reference:"资料增强"},a={success:"完成",running:"进行中",failed:"失败",skipped:"跳过",partial:"部分生效",pending:"等待中"}},96538:(e,t,n)=>{n.d(t,{a:()=>a,j:()=>l});let r={coarse:function(e,t){let n=Math.floor(e/1e3),r=Math.floor(n/86400),a=Math.floor(n%86400/3600),l=Math.floor(n%3600/60),o="en-US"===t;return r>0?o?"".concat(r,"d ").concat(a,"h"):"".concat(r," 天 ").concat(a," 小时"):a>0?o?"".concat(a,"h ").concat(l,"m"):"".concat(a," 小时 ").concat(l," 分"):l>0?o?"".concat(l,"m"):"".concat(l," 分"):o?"Just now":"刚刚"},fine:function(e){let t=Math.round(e/1e3);if(t<60)return"".concat(t," 秒");let n=Math.floor(t/60);return n<60?"".concat(n," 分 ").concat(t%60," 秒"):"".concat(Math.floor(n/60)," 小时 ").concat(n%60," 分")},"fine-decimal":function(e){return e>=6e4?"".concat(Math.floor(e/6e4)," 分 ").concat(Math.round(e%6e4/1e3)," 秒"):"".concat((e/1e3).toFixed(1)," 秒")},metric:function(e){return e<1e3?"".concat(Math.round(e),"ms"):e<6e4?"".concat((e/1e3).toFixed(1),"s"):"".concat((e/6e4).toFixed(1),"min")}};function a(e,t){var n;return r[t.style](function(e,t){let n="s"===t?1e3*e:e;return Number.isFinite(n)&&n>0?n:0}(e,t.unit),null!=(n=t.locale)?n:"zh-CN")}function l(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"zh-CN";return a(e,{unit:"s",style:"coarse",locale:t})}}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6506],{76506:(e,t,l)=>{l.d(t,{A:()=>w});var n=l(97109),a=l(3638),o=l(92162),i=l(26047),r=l(19135),s=l(74567),d=l(27273),c=l(59609);let m={xxxl:4,xxl:3,xl:3,lg:3,md:3,sm:2,xs:1},p=n.createContext(null);var $=l(42644);let b=e=>{let{itemPrefixCls:t,component:l,span:r,className:s,style:d,labelStyle:c,contentStyle:m,bordered:$,label:b,content:u,colon:h,type:g,styles:y,classNames:f}=e,{classNames:x,styles:E}=n.useContext(p),[S,w]=(0,o.AV)([x,f],[E,y],{props:e}),N={...c,...w.label},A={...m,...w.content};if($){let e;"label"===g&&(e=N),"content"===g&&(e=A);let o=e?{...d,...e}:d;return n.createElement(l,{colSpan:r,style:o,className:(0,a.$)(s,{[`${t}-item-${g}`]:"label"===g||"content"===g,[S.label]:S.label&&"label"===g,[S.content]:S.content&&"content"===g})},(0,i.AZ)(b)&&n.createElement("span",null,b),(0,i.AZ)(u)&&n.createElement("span",null,u))}return n.createElement(l,{className:(0,a.$)(`${t}-item`,s),style:d,colSpan:r},n.createElement("div",{className:`${t}-item-container`},(0,i.AZ)(b)&&n.createElement("span",{style:N,className:(0,a.$)(`${t}-item-label`,S.label,{[`${t}-item-no-colon`]:!h})},b),(0,i.AZ)(u)&&n.createElement("span",{style:A,className:(0,a.$)(`${t}-item-content`,S.content)},u)))};function u(e,{colon:t,prefixCls:l,bordered:a},{component:o,type:i,showLabel:r,showContent:s,labelStyle:d,contentStyle:c,styles:m}){return e.map(({label:e,children:p,prefixCls:$=l,className:u,style:h,labelStyle:g,contentStyle:y,span:f=1,key:x,styles:E,classNames:S},w)=>{if("string"==typeof o)return n.createElement(b,{key:`${i}-${x||w}`,className:u,style:h,classNames:S,styles:{label:{...d,...m?.label,...g,...E?.label},content:{...c,...m?.content,...y,...E?.content}},span:f,colon:t,component:o,itemPrefixCls:$,bordered:a,label:r?e:null,content:s?p:null,type:i});let N={label:{...d,...m?.label,...g,...E?.label},content:{...c,...m?.content,...y,...E?.content}};return[n.createElement(b,{key:`label-${x||w}`,className:u,style:h,classNames:S,styles:N,span:1,colon:t,component:o[0],itemPrefixCls:$,bordered:a,label:e,type:"label"}),n.createElement(b,{key:`content-${x||w}`,className:u,style:h,classNames:S,styles:N,span:2*f-1,component:o[1],itemPrefixCls:$,bordered:a,content:p,type:"content"})]})}let h=e=>{let t=n.useContext(p),{prefixCls:l,vertical:a,row:o,index:i,bordered:r}=e;return a?n.createElement(n.Fragment,null,n.createElement("tr",{key:`label-${i}`,className:`${l}-row`},u(o,e,{component:"th",type:"label",showLabel:!0,...t})),n.createElement("tr",{key:`content-${i}`,className:`${l}-row`},u(o,e,{component:"td",type:"content",showContent:!0,...t}))):n.createElement("tr",{key:i,className:`${l}-row`},u(o,e,{component:r?["th","td"]:"td",type:"item",showLabel:!0,showContent:!0,...t}))};var g=l(15561),y=l(7961),f=l(10540),x=l(28403);let E=(0,f.OF)("Descriptions",e=>(e=>{let{componentCls:t,extraColor:l,itemPaddingBottom:n,itemPaddingEnd:a,colonMarginRight:o,colonMarginLeft:i,titleMarginBottom:r}=e;return{[t]:{...(0,y.dF)(e),...(e=>{let{componentCls:t,labelBg:l}=e;return{[`&${t}-bordered`]:{[`> ${t}-view`]:{border:`${(0,g.zA)(e.lineWidth)} ${e.lineType} ${e.colorSplit}`,"> table":{tableLayout:"auto"},[`${t}-row`]:{borderBottom:`${(0,g.zA)(e.lineWidth)} ${e.lineType} ${e.colorSplit}`,"&:first-child":{"> th:first-child, > td:first-child":{borderStartStartRadius:e.borderRadiusLG}},"&:last-child":{borderBottom:"none","> th:first-child, > td:first-child":{borderEndStartRadius:e.borderRadiusLG}},[`> ${t}-item-label, > ${t}-item-content`]:{padding:`${(0,g.zA)(e.padding)} ${(0,g.zA)(e.paddingLG)}`,borderInlineEnd:`${(0,g.zA)(e.lineWidth)} ${e.lineType} ${e.colorSplit}`,"&:last-child":{borderInlineEnd:"none"}},[`> ${t}-item-label`]:{color:e.colorTextSecondary,backgroundColor:l,"&::after":{display:"none"}}}},[`&${t}-medium`]:{[`${t}-row`]:{[`> ${t}-item-label, > ${t}-item-content`]:{padding:`${(0,g.zA)(e.paddingSM)} ${(0,g.zA)(e.paddingLG)}`}}},[`&${t}-small`]:{[`${t}-row`]:{[`> ${t}-item-label, > ${t}-item-content`]:{padding:`${(0,g.zA)(e.paddingXS)} ${(0,g.zA)(e.padding)}`}}}}}})(e),"&-rtl":{direction:"rtl"},[`${t}-header`]:{display:"flex",alignItems:"center",marginBottom:r},[`${t}-title`]:{...y.L9,flex:"auto",color:e.titleColor,fontWeight:e.fontWeightStrong,fontSize:e.fontSizeLG,lineHeight:e.lineHeightLG},[`${t}-extra`]:{marginInlineStart:"auto",color:l,fontSize:e.fontSize},[`${t}-view`]:{width:0,minWidth:"100%",borderRadius:e.borderRadiusLG,table:{width:"100%",tableLayout:"fixed",borderCollapse:"collapse"}},[`${t}-row`]:{"> th, > td":{paddingBottom:n,paddingInlineEnd:a},"> th:last-child, > td:last-child":{paddingInlineEnd:0},"&:last-child":{borderBottom:"none","> th, > td":{paddingBottom:0}}},[`${t}-item-label`]:{color:e.labelColor,fontWeight:"normal",fontSize:e.fontSize,lineHeight:e.lineHeight,textAlign:"start","&::after":{content:'":"',position:"relative",top:-.5,marginInline:`${(0,g.zA)(i)} ${(0,g.zA)(o)}`},[`&${t}-item-no-colon::after`]:{content:'""'}},[`${t}-item-no-label`]:{"&::after":{margin:0,content:'""'}},[`${t}-item-content`]:{display:"table-cell",flex:1,color:e.contentColor,fontSize:e.fontSize,lineHeight:e.lineHeight,wordBreak:"break-word",overflowWrap:"break-word"},[`${t}-item`]:{paddingBottom:0,verticalAlign:"top","&-container":{display:"flex",[`${t}-item-label`]:{display:"inline-flex",alignItems:"baseline"},[`${t}-item-content`]:{display:"inline-flex",alignItems:"baseline",minWidth:"1em"}}},"&-medium":{[`${t}-row`]:{"> th, > td":{paddingBottom:e.paddingSM}}},"&-small":{[`${t}-row`]:{"> th, > td":{paddingBottom:e.paddingXS}}}}}})((0,x.oX)(e,{})),e=>({labelBg:e.colorFillAlter,labelColor:e.colorTextTertiary,titleColor:e.colorText,titleMarginBottom:e.fontSizeSM*e.lineHeightSM,itemPaddingBottom:e.padding,itemPaddingEnd:e.padding,colonMarginRight:e.marginXS,colonMarginLeft:e.marginXXS/2,contentColor:e.colorText,extraColor:e.colorText})),S=e=>{let{prefixCls:t,title:l,extra:b,column:u,colon:g=!0,bordered:y,layout:f,children:x,className:S,rootClassName:w,style:N,size:A,labelStyle:z,contentStyle:C,styles:k,items:v,classNames:B,...L}=e,{getPrefixCls:M,direction:T,className:I,style:W,classNames:X,styles:G}=(0,s.TP)("descriptions"),H=M("descriptions",t),P=(0,c.A)(),R=n.useMemo(()=>(0,i.Et)(u)?u:(0,r.ko)(P,u)??(0,r.ko)(P,m)??3,[P,u]),F=function(e,t,l){let a=n.useMemo(()=>t||(0,$.$r)(l).map(e=>({...e?.props,key:e.key})),[t,l]);return n.useMemo(()=>a.map(({span:t,...l})=>"filled"===t?{...l,filled:!0}:{...l,span:(0,i.Et)(t)?t:(0,r.ko)(e,t)}),[a,e])}(P,v,x),Z=(0,d.A)(A),_=((e,t)=>{let[l,a]=(0,n.useMemo)(()=>(function(e,t){let l=[],n=[],a=!1,o=0;return e.filter(e=>e).forEach(e=>{let{filled:i,...r}=e;if(i){n.push(r),l.push(n),n=[],o=0;return}let s=t-o;(o+=e.span||1)>=t?(o>t?(a=!0,n.push({...r,span:s})):n.push(r),l.push(n),n=[],o=0):n.push(r)}),n.length>0&&l.push(n),[l=l.map(e=>{let l=e.reduce((e,t)=>e+(t.span||1),0);if(l<t){let n=e[e.length-1];n.span=t-(l-(n.span||1))}return e}),a]})(t,e),[t,e]);return l})(R,F),[V,D]=E(H),O={...e,column:R,items:F,size:Z},j=(0,o.XT)(W),q=(0,o.XT)(N),[J,K]=(0,o.AV)([X,B],[G,j,k,q],{props:O}),Q=n.useMemo(()=>({labelStyle:z,contentStyle:C,styles:{label:K.label,content:K.content},classNames:{label:J.label,content:J.content}}),[z,C,K.label,K.content,J.label,J.content]);return n.createElement(p.Provider,{value:Q},n.createElement("div",{className:(0,a.$)(H,I,J.root,{[`${H}-medium`]:"medium"===Z||"middle"===Z,[`${H}-small`]:"small"===Z,[`${H}-bordered`]:!!y,[`${H}-rtl`]:"rtl"===T},S,w,V,D),style:K.root,...L},(l||b)&&n.createElement("div",{className:(0,a.$)(`${H}-header`,J.header),style:K.header},l&&n.createElement("div",{className:(0,a.$)(`${H}-title`,J.title),style:K.title},l),b&&n.createElement("div",{className:(0,a.$)(`${H}-extra`,J.extra),style:K.extra},b)),n.createElement("div",{className:`${H}-view`},n.createElement("table",null,n.createElement("tbody",null,_.map((e,t)=>n.createElement(h,{key:t,index:t,colon:g,prefixCls:H,vertical:"vertical"===f,bordered:y,row:e})))))))};S.Item=e=>e.children;let w=S}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6748],{14524:(e,t,r)=>{r.d(t,{PZ:()=>d,RU:()=>u,jT:()=>h,n$:()=>m});var l=r(65321),n=r(48399),s=r(68787),i=r(33442),a=r(85114),c=r(58209);let{Text:o}=n.A;function d(e){let{title:t,description:r,hint:n,className:i,children:a}=e;return(0,l.jsxs)(s.A,{className:"rounded-2xl border-[var(--borderColor)] ".concat(null!=i?i:""),title:(0,l.jsx)("span",{className:"font-semibold",children:t}),extra:n?(0,l.jsx)("span",{className:"text-xs text-[var(--colorTextTertiary)]",children:n}):null,children:[r&&(0,l.jsx)("p",{className:"text-xs text-[var(--colorTextSecondary)] mb-4 mt-0 leading-relaxed",children:r}),a]})}function u(e){let{label:t,children:r,empty:n}=e,s=null==r||!1===r;return(0,l.jsxs)("div",{className:"grid grid-cols-1 sm:grid-cols-[132px_minmax(0,1fr)] gap-x-4 gap-y-1 py-2 border-b border-[var(--colorBorderSecondary)] last:border-0",children:[(0,l.jsx)("div",{className:"text-xs text-[var(--colorTextTertiary)] sm:pt-1",children:t}),(0,l.jsx)("div",{className:"min-w-0 text-sm leading-6",children:s?(0,l.jsx)(o,{type:"secondary",className:"text-xs",children:null!=n?n:"未声明"}):r})]})}function m(e){let{items:t,empty:r}=e;return 0===t.length?(0,l.jsx)(o,{type:"secondary",className:"text-xs",children:null!=r?r:"未声明"}):(0,l.jsx)("div",{className:"tagWrap flex flex-wrap gap-1 min-w-0",children:t.map((e,t)=>(0,l.jsx)("span",{className:"min-w-0",children:e},t))})}function h(e){let{children:t,columns:r="md:grid-cols-[minmax(0,2fr)_minmax(0,1fr)]",onRemove:n,removeLabel:s="删除这一行"}=e;return(0,l.jsxs)("div",{className:"flex items-start gap-3 rounded-xl border border-[var(--borderColor)] bg-[var(--colorFillAlter)] px-4 py-3 transition-colors hover:bg-[var(--colorBgHover)]",children:[(0,l.jsx)("div",{className:"min-w-0 flex-1 grid grid-cols-1 ".concat(r," gap-x-3 gap-y-1 items-start"),children:t}),(0,l.jsx)(i.A,{size:0,className:"self-center",children:(0,l.jsx)(a.Ay,{type:"text",danger:!0,size:"small",icon:(0,l.jsx)(c.A,{}),"aria-label":s,title:s,onClick:n})})]})}},23793:(e,t)=>{t.A={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M360 184h-8c4.4 0 8-3.6 8-8v8h304v-8c0 4.4 3.6 8 8 8h-8v72h72v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80h72v-72zm504 72H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zM731.3 840H292.7l-24.2-512h487l-24.2 512z"}}]},name:"delete",theme:"outlined"}},33061:(e,t,r)=>{r.d(t,{G:()=>s});var l=r(97109),n=r(35071);function s(){let[e,t]=(0,l.useState)([]),[r,s]=(0,l.useState)(),[i,a]=(0,l.useState)([]),[c,o]=(0,l.useState)(!0),[d,u]=(0,l.useState)(""),m=(0,l.useCallback)(async()=>{o(!0);let e=await (0,n.SS)("/api/skills");if(e.ok){var r;t(e.data.skills),s(e.data.options),a(null!=(r=e.data.invalid)?r:[]),u("")}else u(e.message);o(!1)},[]);return(0,l.useEffect)(()=>{m()},[m]),{skills:e,options:r,invalid:i,loading:c,failed:d,reload:m,applySkills:t}}},35071:(e,t,r)=>{r.d(t,{F:()=>s,Ie:()=>o,Oz:()=>a,RW:()=>m,SS:()=>n,eT:()=>l,m6:()=>c});let l={"Content-Type":"application/json"};async function n(e,t){try{let l,n=await fetch(e,t),s=await n.text();try{l=s?JSON.parse(s):void 0}catch(e){l=void 0}if(!n.ok){var r;let e=null!=l?l:{};return{ok:!1,status:n.status,message:null!=(r=e.error)?r:"HTTP ".concat(n.status),issues:Array.isArray(e.errors)?e.errors:[]}}return{ok:!0,data:l}}catch(e){return{ok:!1,status:0,message:e instanceof Error?e.message:"网络请求失败",issues:[]}}}let s="内置技能只读,随应用版本更新。可新建用户技能进行配置。";function i(e){return[...new Set((null!=e?e:[]).map(e=>e.trim()).filter(e=>e.length>0))]}function a(e){return"string"==typeof e?e:e.phrase}function c(e){return{id:e.id,enabled:e.enabled,match:{chapterDomain:e.match.chapterDomain,projectTypes:[...e.match.projectTypes],sectionKeywords:[...e.match.sectionKeywords],...e.match.sectionRegex?{sectionRegex:e.match.sectionRegex}:{}},requires:e.requires.map(e=>({...e})),structure:e.structure.map(e=>{var t;return{title:e.title,required:[...null!=(t=e.required)?t:[]]}}),forbidden:e.forbidden.map(a),knowledge:e.knowledge.map(e=>({kind:e.kind,...e.ids?{ids:[...e.ids]}:{},...e.note?{note:e.note}:{}})),acceptance:e.acceptance.map(e=>({kind:"llmChecklist",checklistItems:[...e.items]})),...void 0!==e.outputTitle?{outputTitle:e.outputTitle}:{},...e.chapterChecklist?{chapterChecklist:{...e.chapterChecklist,...e.chapterChecklist.sections?{sections:[...e.chapterChecklist.sections]}:{}}}:{}}}function o(){return{id:"skill-".concat(Date.now()),enabled:!0,match:{projectTypes:[],sectionKeywords:[]},requires:[{source:"boq",required:!1}],structure:[{}],forbidden:[],knowledge:[],acceptance:[{kind:"llmChecklist",checklistItems:[]}]}}function d(e){var t;return(null!=(t=e.ids)?t:[]).length>0}function u(e){var t;return(null!=(t=e.checklistItems)?t:[]).length>0}function m(e,t,r){var l,n,s,a,c,o,m,h,p,x;let v={chapterDomain:null==(l=e.match)?void 0:l.chapterDomain,projectTypes:[...null!=(o=null==(n=e.match)?void 0:n.projectTypes)?o:[]],sectionKeywords:i(null==(s=e.match)?void 0:s.sectionKeywords),...(null==(c=e.match)||null==(a=c.sectionRegex)?void 0:a.trim())?{sectionRegex:e.match.sectionRegex.trim()}:{}},f=(null!=(m=e.requires)?m:[]).filter(e=>{var t;return(null!=(t=e.key)?t:"").trim().length>0}).map(e=>{var t;return{key:(null!=(t=e.key)?t:"").trim(),source:e.source,required:!0===e.required}}),g=(null!=(h=e.structure)?h:[]).filter(e=>{var t;return(null!=(t=e.title)?t:"").trim().length>0}).map(e=>{var t;return{title:(null!=(t=e.title)?t:"").trim(),required:i(e.required)}}),k=(null!=(p=e.knowledge)?p:[]).filter(d).map(e=>{var t;return{kind:"processCard",ids:i(e.ids),...(null==(t=e.note)?void 0:t.trim())?{note:e.note.trim()}:{}}}),b=(null!=(x=e.acceptance)?x:[]).filter(u).map(e=>({kind:"llmChecklist",items:i(e.checklistItems),nonDeterministic:!0}));return{id:e.id.trim(),version:t,source:"user",enabled:!1!==e.enabled,match:v,requires:f,structure:g,forbidden:i(e.forbidden),knowledge:k,acceptance:b,...function(e){var t,r,l,n;let s=null!=(n=null==(t=e.outputTitle)?void 0:t.trim())?n:"",a=e.chapterChecklist,c={sections:i(null==a?void 0:a.sections),queries:i(null==a?void 0:a.queries),requiredFacts:i(null==a?void 0:a.requiredFacts),tableSections:i(null==a?void 0:a.tableSections),tableRequirements:i(null==a?void 0:a.tableRequirements),pinnedEvidenceFilePaths:i(null==a?void 0:a.pinnedEvidenceFilePaths)},o=!!(null==a||null==(r=a.purpose)?void 0:r.trim())||Object.values(c).some(e=>e.length>0);return{...s?{outputTitle:s}:{},...o?{chapterChecklist:{...(null==a||null==(l=a.purpose)?void 0:l.trim())?{purpose:a.purpose.trim()}:{},...Object.fromEntries(Object.entries(c).filter(e=>{let[,t]=e;return t.length>0}))}}:{}}}(e),...r?{examples:r}:{}}}},58209:(e,t,r)=>{r.d(t,{A:()=>a});var l=r(97109),n=r(23793),s=r(88483);function i(){return(i=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var l in r)Object.prototype.hasOwnProperty.call(r,l)&&(e[l]=r[l])}return e}).apply(this,arguments)}let a=l.forwardRef((e,t)=>l.createElement(s.A,i({},e,{ref:t,icon:n.A})))},85979:(e,t,r)=>{r.d(t,{k:()=>a});var l=r(65321),n=r(43220),s=r.n(n),i=r(91648);function a(e){let{backHref:t,backLabel:r,title:n,description:a,extra:c}=e;return(0,l.jsx)("div",{className:"mb-6 bg-[var(--colorBgContainer)] rounded-2xl overflow-hidden border border-[var(--borderColor)] p-6",children:(0,l.jsxs)("div",{className:"flex flex-col md:flex-row md:items-end justify-between gap-4 md:gap-6",children:[(0,l.jsxs)("div",{className:"flex items-center gap-3 min-w-0",children:[(0,l.jsxs)(s(),{href:t,prefetch:!1,className:"detailBack",children:[(0,l.jsx)(i.A,{size:16,strokeWidth:2,"aria-hidden":!0}),(0,l.jsx)("span",{children:r})]}),(0,l.jsxs)("div",{className:"min-w-0 space-y-1",children:[(0,l.jsx)("h1",{className:"text-2xl font-bold text-[var(--colorText)] m-0 truncate",children:n}),a?(0,l.jsx)("p",{className:"text-sm text-[var(--colorTextSecondary)] m-0 break-all",children:a}):null]})]}),c?(0,l.jsx)("div",{className:"shrink-0 flex items-center gap-2",children:c}):null]})})}},91648:(e,t,r)=>{r.d(t,{A:()=>l});let l=(0,r(1278).A)("ArrowLeft",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]])}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9937],{10218:(e,t,l)=>{l.d(t,{A:()=>f,H:()=>u});var s=l(97109),r=l(4932),a=l(42644);let i=e=>"object"==typeof e&&null!=e&&1===e.nodeType,n=(e,t)=>(!t||"hidden"!==e)&&"visible"!==e&&"clip"!==e,o=(e,t)=>{if(e.clientHeight<e.scrollHeight||e.clientWidth<e.scrollWidth){let l=getComputedStyle(e,null);return n(l.overflowY,t)||n(l.overflowX,t)||(e=>{let t=(e=>{if(!e.ownerDocument||!e.ownerDocument.defaultView)return null;try{return e.ownerDocument.defaultView.frameElement}catch(e){return null}})(e);return!!t&&(t.clientHeight<e.scrollHeight||t.clientWidth<e.scrollWidth)})(e)}return!1},c=(e,t,l,s,r,a,i,n)=>a<e&&i>t||a>e&&i<t?0:a<=e&&n<=l||i>=t&&n>=l?a-e-s:i>t&&n<l||a<e&&n>l?i-t+r:0,d=e=>{let t=e.parentElement;return null==t?e.getRootNode().host||null:t},m=(e,t)=>{var l,s,r,a;if("undefined"==typeof document)return[];let{scrollMode:n,block:m,inline:h,boundary:p,skipOverflowHiddenElements:u}=t,x="function"==typeof p?p:e=>e!==p;if(!i(e))throw TypeError("Invalid target");let f=document.scrollingElement||document.documentElement,g=[],j=e;for(;i(j)&&x(j);){if((j=d(j))===f){g.push(j);break}null!=j&&j===document.body&&o(j)&&!o(document.documentElement)||null!=j&&o(j,u)&&g.push(j)}let b=null!=(s=null==(l=window.visualViewport)?void 0:l.width)?s:innerWidth,v=null!=(a=null==(r=window.visualViewport)?void 0:r.height)?a:innerHeight,{scrollX:A,scrollY:y}=window,{height:k,width:N,top:w,right:I,bottom:C,left:S}=e.getBoundingClientRect(),{top:F,right:R,bottom:T,left:H}=(e=>{let t=window.getComputedStyle(e);return{top:parseFloat(t.scrollMarginTop)||0,right:parseFloat(t.scrollMarginRight)||0,bottom:parseFloat(t.scrollMarginBottom)||0,left:parseFloat(t.scrollMarginLeft)||0}})(e),M="start"===m||"nearest"===m?w-F:"end"===m?C+T:w+k/2-F+T,_="center"===h?S+N/2-H+R:"end"===h?I+R:S-H,q=[];for(let e=0;e<g.length;e++){let t=g[e],{height:l,width:s,top:r,right:a,bottom:i,left:d}=t.getBoundingClientRect();if("if-needed"===n&&w>=0&&S>=0&&C<=v&&I<=b&&(t===f&&!o(t)||w>=r&&C<=i&&S>=d&&I<=a))break;let p=getComputedStyle(t),u=parseInt(p.borderLeftWidth,10),x=parseInt(p.borderTopWidth,10),j=parseInt(p.borderRightWidth,10),F=parseInt(p.borderBottomWidth,10),R=0,T=0,H="offsetWidth"in t?t.offsetWidth-t.clientWidth-u-j:0,P="offsetHeight"in t?t.offsetHeight-t.clientHeight-x-F:0,W="offsetWidth"in t?0===t.offsetWidth?0:s/t.offsetWidth:0,L="offsetHeight"in t?0===t.offsetHeight?0:l/t.offsetHeight:0;if(f===t)R="start"===m?M:"end"===m?M-v:"nearest"===m?c(y,y+v,v,x,F,y+M,y+M+k,k):M-v/2,T="start"===h?_:"center"===h?_-b/2:"end"===h?_-b:c(A,A+b,b,u,j,A+_,A+_+N,N),R=Math.max(0,R+y),T=Math.max(0,T+A);else{R="start"===m?M-r-x:"end"===m?M-i+F+P:"nearest"===m?c(r,i,l,x,F+P,M,M+k,k):M-(r+l/2)+P/2,T="start"===h?_-d-u:"center"===h?_-(d+s/2)+H/2:"end"===h?_-a+j+H:c(d,a,s,u,j+H,_,_+N,N);let{scrollLeft:e,scrollTop:n}=t;R=0===L?0:Math.max(0,Math.min(n+R/L,t.scrollHeight-l/L+P)),T=0===W?0:Math.max(0,Math.min(e+T/W,t.scrollWidth-s/W+H)),M+=n-R,_+=e-T}q.push({el:t,top:R,left:T})}return q};var h=l(26047),p=l(44624);function u(e){return(0,p.$r)(e).join("_")}function x(e,t){let l=t.getFieldInstance(e),s=(0,a.rb)(l);if(s)return s;let r=(0,p.kV)((0,p.$r)(e),t.__INTERNAL__.name);if(r)return document.getElementById(r)}function f(e){let[t]=(0,r.mN)(),l=s.useRef({}),a=s.useMemo(()=>e??{...t,__INTERNAL__:{itemRef:e=>t=>{let s=u(e);t?l.current[s]=t:delete l.current[s]}},scrollToField:(e,t={})=>{let{focus:l,...s}=t,r=x(e,a);r&&(!function(e,t){if(!e.isConnected||!(e=>{let t=e;for(;t&&t.parentNode;){if(t.parentNode===document)return!0;t=t.parentNode instanceof ShadowRoot?t.parentNode.host:t.parentNode}return!1})(e))return;let l=(e=>{let t=window.getComputedStyle(e);return{top:parseFloat(t.scrollMarginTop)||0,right:parseFloat(t.scrollMarginRight)||0,bottom:parseFloat(t.scrollMarginBottom)||0,left:parseFloat(t.scrollMarginLeft)||0}})(e);if("object"==typeof t&&"function"==typeof t.behavior)return t.behavior(m(e,t));let s="boolean"==typeof t||null==t?void 0:t.behavior;for(let{el:r,top:a,left:i}of m(e,!1===t?{block:"end",inline:"nearest"}:t===Object(t)&&0!==Object.keys(t).length?t:{block:"start",inline:"nearest"})){let e=a-l.top+l.bottom,t=i-l.left+l.right;r.scroll({top:e,left:t,behavior:s})}}(r,{scrollMode:"if-needed",block:"nearest",...s}),l&&a.focusField(e))},focusField:e=>{let t=a.getFieldInstance(e);(0,h.Tn)(t?.focus)?t.focus():x(e,a)?.focus?.()},getFieldInstance:e=>{let t=u(e);return l.current[t]}},[e,t]);return[a]}},15437:(e,t,l)=>{l.d(t,{A:()=>s});let s=e=>{let{componentCls:t,antCls:l,motionDurationMid:s,motionEaseInOut:r}=e;return{[t]:{[`${l}-motion-collapse-legacy`]:{overflow:"hidden","&-active":{transition:`${["height","opacity"].map(e=>`${e} ${s} ${r}`).join(", ")} !important`}},[`${l}-motion-collapse`]:{overflow:"hidden",transition:`${["height","opacity"].map(e=>`${e} ${s} ${r}`).join(", ")} !important`}}}}},44624:(e,t,l)=>{l.d(t,{$r:()=>r,BS:()=>i,kV:()=>a});let s=["parentNode"];function r(e){return void 0===e||!1===e?[]:Array.isArray(e)?e:[e]}function a(e,t){if(!e.length)return;let l=e.join("_");return t?`${t}_${l}`:s.includes(l)?`form_item_${l}`:l}function i(e,t,l,s,r,a){let i=s;return void 0!==a?i=a:l.validating?i="validating":e.length?i="error":t.length?i="warning":(l.touched||r&&l.validated)&&(i="success"),i}},48476:(e,t,l)=>{l.d(t,{q:()=>M});var s=l(65321),r=l(97109),a=l(86109),i=l(48399),n=l(17807),o=l(63455),c=l(88762),d=l(85493),m=l(84253),h=l(85114),p=l(33442),u=l(99650),x=l(51307),f=l(88483);function g(){return(g=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var l=arguments[t];for(var s in l)Object.prototype.hasOwnProperty.call(l,s)&&(e[s]=l[s])}return e}).apply(this,arguments)}let j=r.forwardRef((e,t)=>r.createElement(f.A,g({},e,{ref:t,icon:x.A})));var b=l(43220),v=l.n(b),A=l(85979),y=l(7576),k=l(44534),N=l(57271),w=l(54746),I=l(39507),C=l(14524);let{Text:S}=i.A;function F(e){var t,l;let{form:r,options:a,idLocked:i}=e,n=(0,I.Vr)(),c=a.chapterDomains.map(e=>({value:e.value,label:e.label,title:e.note})),d=a.projectTypes.map(e=>({value:e.value,label:e.label})),m=a.factSources.map(e=>({value:e.value,label:e.label})),p=a.processCards.map(e=>({value:e.value,label:e.label}));return(0,s.jsxs)(o.A,{form:r,layout:"vertical",children:[(0,s.jsxs)("div",{className:"grid grid-cols-1 xl:grid-cols-2 gap-4 items-start",children:[(0,s.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,s.jsxs)(C.PZ,{title:"基本信息",description:"技能的身份与启停;ID 是落盘文件名,新建后不再改。",children:[(0,s.jsx)(o.A.Item,{name:"id",label:"技能 ID",rules:[{required:!0,message:"技能 ID 必填"}],extra:"使用小写字母、数字和连字符,以字母开头。",children:(0,s.jsx)(y.A,{disabled:i,placeholder:"例如 c02-major-content-building"})}),(0,s.jsx)(o.A.Item,{name:"enabled",label:"启用",valuePropName:"checked",extra:"停用后本条技能不参与本次生成的技能匹配。",className:"!mb-0",children:(0,s.jsx)(k.A,{checkedChildren:"启用",unCheckedChildren:"停用"})})]}),(0,s.jsxs)(C.PZ,{title:"匹配条件",description:"决定这条技能在什么章域、什么工程类型、什么样的章节标题下被选用。",children:[(0,s.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-x-4",children:[(0,s.jsx)(o.A.Item,{name:["match","chapterDomain"],label:"章域",rules:[{required:!0,message:"章域必选"}],extra:"本章所属的专业内容范围。",children:(0,s.jsx)(N.A,{options:c,placeholder:"选择本章所属的内容域"})}),(0,s.jsx)(o.A.Item,{name:["match","projectTypes"],label:"适用工程类型",extra:"留空表示不限定工程类型。",children:(0,s.jsx)(N.A,{mode:"multiple",allowClear:!0,options:d,placeholder:"全类型"})})]}),(0,s.jsx)(o.A.Item,{name:["match","sectionKeywords"],label:"小节标题关键词",extra:"用于匹配相关小节标题,可输入多个关键词。",children:(0,s.jsx)(N.A,{mode:"tags",tokenSeparators:[",",","," "],placeholder:"输入后回车,例如:主要施工 / 分部分项"})}),(0,s.jsx)(o.A.Item,{name:["match","sectionRegex"],label:"小节标题匹配表达式(可选)",extra:"填写正则表达式文本;复杂或不安全的表达式会被校验拒绝。",className:"!mb-0",children:(0,s.jsx)(y.A,{placeholder:"例如 交通导改|导行|管线保护"})})]}),(0,s.jsx)(C.PZ,{title:"禁写项",description:"这条技能明确要求避免的内容或表达;没有就留空。",children:(0,s.jsx)(o.A.Item,{name:"forbidden",extra:"填错一条会挡住真实存在的内容,宁可留空。",className:"!mb-0",children:(0,s.jsx)(N.A,{mode:"tags",tokenSeparators:[",",","],placeholder:"输入后回车,例如:管道闭水试验"})})}),(0,s.jsx)(C.PZ,{title:"相关专业主题",description:"本条技能提供的专业内容主题;主题下的小标签写这一主题要覆盖的工序、条件、控制点或验收要求。",children:(0,s.jsx)(o.A.List,{name:"structure",children:(e,t)=>{let{add:l,remove:r}=t;return(0,s.jsxs)("div",{className:"flex flex-col gap-2",children:[e.map(e=>{let{key:t,name:l,...a}=e;return(0,s.jsxs)(C.jT,{onRemove:()=>r(l),columns:"md:grid-cols-[minmax(0,1fr)_minmax(0,1fr)]",children:[(0,s.jsx)(o.A.Item,{...a,name:[l,"title"],rules:[{required:!0,message:"专业主题标题必填"}],className:"!mb-0",children:(0,s.jsx)(y.A,{placeholder:"专业主题标题"})}),(0,s.jsx)(o.A.Item,{...a,name:[l,"required"],extra:"按实际对象选用",className:"!mb-0",children:(0,s.jsx)(N.A,{mode:"tags",className:"w-full",placeholder:"工序、适用条件、控制要点或验收要求"})})]},t)}),(0,s.jsxs)(h.Ay,{type:"dashed",block:!0,icon:(0,s.jsx)(w.A,{}),onClick:()=>l({required:[]}),children:[n("common.add"),"专业主题"]})]})}})})]}),(0,s.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,s.jsx)(C.PZ,{title:"所需项目资料",description:"本条技能要求本次任务先查证的项目事实(事实键来自服务端闭集);标为必需而查不到时会被上游拦下。",children:(0,s.jsx)(o.A.List,{name:"requires",children:(e,t)=>{let{add:l,remove:r}=t;return(0,s.jsxs)("div",{className:"flex flex-col gap-2",children:[e.map(e=>{let{key:t,name:l,...a}=e;return(0,s.jsxs)(C.jT,{onRemove:()=>r(l),columns:"md:grid-cols-[minmax(0,2fr)_minmax(0,1fr)_auto]",children:[(0,s.jsx)(o.A.Item,{...a,name:[l,"key"],rules:[{required:!0,message:"事实键必填"}],className:"!mb-0",children:(0,s.jsx)(y.A,{placeholder:"事实键,如 boq.divisions"})}),(0,s.jsx)(o.A.Item,{...a,name:[l,"source"],rules:[{required:!0,message:"来源必选"}],className:"!mb-0",children:(0,s.jsx)(N.A,{options:m,placeholder:"事实来源"})}),(0,s.jsx)(o.A.Item,{...a,name:[l,"required"],valuePropName:"checked",className:"!mb-0",children:(0,s.jsx)(k.A,{checkedChildren:"必需",unCheckedChildren:"可选"})})]},t)}),(0,s.jsxs)(h.Ay,{type:"dashed",block:!0,icon:(0,s.jsx)(w.A,{}),onClick:()=>l({source:"boq",required:!1}),children:[n("common.add"),"事实需求"]})]})}})}),(0,s.jsxs)(C.PZ,{title:"文档业务提示",description:"给本次规划的建议:文档名称、本章职责与资料检索提示。实际章节职责由本次规划确定,专业主题在上面的卡片里单独填写。",children:[(0,s.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-x-4",children:[(0,s.jsx)(o.A.Item,{name:"outputTitle",label:"文档名称建议",extra:"提供文档名称建议,实际名称由本次生成配置确定。",children:(0,s.jsx)(y.A,{placeholder:"留空 = 本技能不对文档名称表态"})}),(0,s.jsx)(o.A.Item,{name:["chapterChecklist","purpose"],label:"章级内容提示",extra:"说明本章关注的专业内容。",children:(0,s.jsx)(y.A,{placeholder:"例如:说明本工程的安全管理目标与危大工程清单"})})]}),(0,s.jsxs)("div",{className:"mt-1 mb-3 border-t border-[var(--colorBorderSecondary)] pt-3",children:[(0,s.jsx)(S,{strong:!0,className:"text-sm",children:"章级清单"}),(0,s.jsx)(S,{type:"secondary",className:"text-xs ml-2",children:"章级候选内容与资料检索提示;实际职责由本次规划确定。"})]}),(0,s.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-x-4",children:[(0,s.jsx)(o.A.Item,{name:["chapterChecklist","queries"],label:"资料检索词",extra:"帮助定位相关资料。",children:(0,s.jsx)(N.A,{mode:"tags",tokenSeparators:[",",","],className:"w-full",placeholder:"回车添加"})}),(0,s.jsx)(o.A.Item,{name:["chapterChecklist","requiredFacts"],label:"待核事实提示",extra:"提示应查证的项目事实。",children:(0,s.jsx)(N.A,{mode:"tags",tokenSeparators:[",",","],className:"w-full",placeholder:"回车添加"})}),(0,s.jsx)(o.A.Item,{name:["chapterChecklist","tableSections"],label:"成表内容建议",extra:"提示适合用表格表达的内容。",children:(0,s.jsx)(N.A,{mode:"tags",tokenSeparators:[",",","],className:"w-full",placeholder:"回车添加"})}),(0,s.jsx)(o.A.Item,{name:["chapterChecklist","tableRequirements"],label:"表格表达提示",extra:"提示表格列项与表达方式。",children:(0,s.jsx)(N.A,{mode:"tags",tokenSeparators:[",",","],className:"w-full",placeholder:"回车添加"})})]}),(0,s.jsx)(o.A.Item,{name:["chapterChecklist","pinnedEvidenceFilePaths"],label:"相关证据文件",extra:"填写需要关注的文件名;实际读取范围和来源资格仍由本次任务核对。",className:"!mb-0",children:(0,s.jsx)(N.A,{mode:"tags",tokenSeparators:[",",","],placeholder:"回车添加文件名"})}),(null!=(l=null==(t=a.absentCarriers)?void 0:t.length)?l:0)>0&&(0,s.jsxs)("div",{className:"mt-4 rounded-xl border border-[var(--borderColor)] bg-[var(--colorFillAlter)] px-4 py-3",children:[(0,s.jsx)("div",{className:"text-xs font-semibold mb-1",children:"不在这里配置的事项"}),(0,s.jsx)("div",{className:"text-xs text-[var(--colorTextSecondary)]",children:a.absentCarriers.map(e=>(0,s.jsxs)("div",{children:[e.label,":","formatting"===e.id?"排版要求由招标资料与导出设置管理,技能编辑器提供专业内容。":e.note]},e.id))})]})]}),(0,s.jsx)(C.PZ,{title:"可加载工艺知识",description:"选用后,这些工艺卡会作为专业参考进入本次写作;引用是否存在由保存前的校验核对。",children:(0,s.jsx)(o.A.List,{name:"knowledge",children:(e,t)=>{let{add:l,remove:r}=t;return(0,s.jsxs)("div",{className:"flex flex-col gap-2",children:[e.map(e=>{let{key:t,name:l,...a}=e;return(0,s.jsxs)(C.jT,{onRemove:()=>r(l),columns:"md:grid-cols-[minmax(0,1fr)]",children:[(0,s.jsx)(o.A.Item,{...a,name:[l,"ids"],rules:[{required:!0,type:"array",min:1,message:"请选择实际工艺卡"}],className:"!mb-0",children:(0,s.jsx)(N.A,{mode:"multiple",showSearch:!0,optionFilterProp:"label",options:p,placeholder:"按工艺卡名称搜索"})}),(0,s.jsx)(o.A.Item,{...a,name:[l,"note"],className:"!mb-0 mt-2",children:(0,s.jsx)(y.A,{placeholder:"适用条件说明(可选):什么情况下加载这些工艺卡"})})]},t)}),(0,s.jsxs)(h.Ay,{type:"dashed",block:!0,icon:(0,s.jsx)(w.A,{}),onClick:()=>l({kind:"processCard",ids:[]}),children:[n("common.add"),"工艺知识"]})]})}})}),(0,s.jsx)(C.PZ,{title:"专业写作核对提示",description:"写清适用对象、方法和检验注意。提示供作者按具体任务选用,不构成评分、字数或参数数量要求。",children:(0,s.jsx)(o.A.List,{name:"acceptance",children:(e,t)=>{let{add:l,remove:r}=t;return(0,s.jsxs)("div",{className:"flex flex-col gap-2",children:[e.map(e=>{let{key:t,name:l,...a}=e;return(0,s.jsx)(C.jT,{onRemove:()=>r(l),columns:"md:grid-cols-[minmax(0,1fr)]",children:(0,s.jsx)(o.A.Item,{...a,name:[l,"checklistItems"],rules:[{required:!0,type:"array",min:1,message:"请输入专业注意事项"}],className:"!mb-0",children:(0,s.jsx)(N.A,{mode:"tags",className:"w-full",placeholder:"例如:保留实际检验对象、触发条件和转序要求"})})},t)}),(0,s.jsxs)(h.Ay,{type:"dashed",block:!0,icon:(0,s.jsx)(w.A,{}),onClick:()=>l({kind:"llmChecklist",checklistItems:[]}),children:[n("common.add"),"专业提示"]})]})}})})]})]}),(0,s.jsx)("div",{className:"mt-4",children:(0,s.jsx)(C.PZ,{title:"资料与采用边界",description:"以下边界由软件统一执行,技能不能扩大或豁免。",children:(0,s.jsx)("div",{className:"flex flex-col gap-2",children:a.isolationRules.map(e=>(0,s.jsxs)("div",{className:"flex flex-col sm:flex-row sm:items-baseline gap-1 sm:gap-2",children:[(0,s.jsx)(S,{className:"text-sm shrink-0",children:e.label}),(0,s.jsx)(S,{type:"secondary",className:"text-xs",children:e.note})]},e.id))})})})]})}var R=l(33061),T=l(35071);let{Text:H}=i.A;function M(e){let{mode:t,skillId:l}=e,{message:i}=n.A.useApp(),x=(0,a.useRouter)(),[f]=o.A.useForm(),g=(0,R.G)(),[b,y]=(0,r.useState)(!1),[k,N]=(0,r.useState)([]),w=(0,r.useMemo)(()=>"edit"===t&&l?g.skills.find(e=>e.id===l):void 0,[t,l,g.skills]),I="edit"===t&&!l,C="edit"===t&&!g.loading&&!g.failed&&!w&&void 0!==g.options,[S,M]=(0,r.useState)(!1);(0,r.useEffect)(()=>{if(S||g.loading||!g.options)return;if("create"===t){f.resetFields(),f.setFieldsValue((0,T.Ie)()),M(!0);return}if(!w)return;let e=w.promptBindings;Array.isArray(e)&&e.length>0&&i.warning("「".concat(w.id,"」里还留着 ").concat(e.length," 条已退休的提示词绑定(promptBindings):该字段已随角色配置页删除,本次保存会把它从技能里移除。")),f.resetFields(),f.setFieldsValue((0,T.m6)(w)),M(!0)},[S,g.loading,g.options,t,w,f,i]);let _=async()=>{let e;if(!g.options)return;try{e=await f.validateFields()}catch(e){return}let t=(0,T.RW)(e,g.options.contractVersion,null==w?void 0:w.examples);y(!0),N([]);try{var l,s,r;let a=await (0,T.SS)("/api/skills/validate",{method:"POST",headers:T.eT,body:JSON.stringify(t)});if(!a.ok){i.error("校验请求失败:".concat(a.message)),N(a.issues);return}if(!a.data.ok){N(a.data.errors),i.error("校验未通过:".concat(a.data.errors.length," 处问题,请核对技能字段和工艺卡引用。"));return}let n=w?await (0,T.SS)("/api/skills/".concat(encodeURIComponent(w.id)),{method:"PUT",headers:T.eT,body:JSON.stringify(t)}):await (0,T.SS)("/api/skills",{method:"POST",headers:T.eT,body:JSON.stringify(t)});if(!n.ok){N(n.issues),i.error("保存失败:".concat(n.message));return}(null==(l=n.data.warnings)?void 0:l.length)&&i.warning("已保存,但有 ".concat(n.data.warnings.length," 条提示:").concat(n.data.warnings.map(e=>e.message).join(";"))),i.success("已保存"),await x.push("/skills/".concat(encodeURIComponent(null!=(r=null==(s=n.data.skill)?void 0:s.id)?r:e.id)))}finally{y(!1)}};return I||g.loading?(0,s.jsxs)("div",{className:"space-y-5 animateFadeIn",children:[(0,s.jsx)(c.A,{active:!0,title:!0,paragraph:{rows:2}}),(0,s.jsx)(c.A,{active:!0,paragraph:{rows:12}})]}):g.failed?(0,s.jsxs)("div",{className:"space-y-5 animateFadeIn",children:[(0,s.jsx)(A.k,{backHref:"/skills",backLabel:"返回技能库",title:"create"===t?"新建技能":"编辑技能"}),(0,s.jsx)(d.A,{type:"error",showIcon:!0,message:"技能库读取失败",description:"".concat(g.failed,';这不是"技能不存在",请核对服务端状态后重试。')})]}):C?(0,s.jsxs)("div",{className:"space-y-5 animateFadeIn",children:[(0,s.jsx)(A.k,{backHref:"/skills",backLabel:"返回技能库",title:"编辑技能"}),(0,s.jsx)(m.A,{description:"技能库里没有「".concat(l,"」这条技能(可能已被删除或改名)"),children:(0,s.jsx)(v(),{href:"/skills",children:(0,s.jsx)(h.Ay,{type:"primary",children:"返回技能库"})})})]}):g.options?(null==w?void 0:w.builtIn)?(0,s.jsxs)("div",{className:"space-y-5 animateFadeIn",children:[(0,s.jsx)(A.k,{backHref:"/skills",backLabel:"返回技能库",title:"编辑技能 \xb7 ".concat(w.displayName),description:"内置技能随应用版本更新,不能在这里修改。",extra:(0,s.jsx)(v(),{href:"/skills/".concat(encodeURIComponent(w.id)),children:(0,s.jsx)(h.Ay,{icon:(0,s.jsx)(u.A,{}),children:"查看预览"})})}),(0,s.jsx)(d.A,{type:"info",showIcon:!0,message:"内置技能",description:T.F}),(0,s.jsx)("div",{children:(0,s.jsx)(v(),{href:"/skills/new",children:(0,s.jsx)(h.Ay,{type:"primary",children:"新建用户技能"})})})]}):(0,s.jsxs)("div",{className:"space-y-5 animateFadeIn",children:[(0,s.jsx)(A.k,{backHref:"/skills",backLabel:"返回技能库",title:w?"编辑技能 \xb7 ".concat(w.displayName):"新建技能",description:w?"改动会在保存前做一次字段与工艺卡引用校验,通过后写入技能文件。":"技能提供专业主题、资料需求、工艺知识和写作核对提示;保存前同样会做引用校验。",extra:(0,s.jsxs)(s.Fragment,{children:[w?(0,s.jsx)(v(),{href:"/skills/".concat(encodeURIComponent(w.id)),children:(0,s.jsx)(h.Ay,{children:"放弃改动并返回预览"})}):(0,s.jsx)(v(),{href:"/skills",children:(0,s.jsx)(h.Ay,{children:"取消"})}),(0,s.jsxs)(p.A,{size:4,children:[(0,s.jsx)(H,{type:"secondary",className:"text-xs",children:"保存后自动进入预览"}),(0,s.jsx)(h.Ay,{type:"primary",icon:(0,s.jsx)(j,{}),loading:b,onClick:()=>{_()},children:"保存"})]})]})}),(null==w?void 0:w.examples)&&(0,s.jsx)(d.A,{type:"info",showIcon:!0,message:"该技能带表达示例",description:"示例供理解专业表达,不能作为本项目事实;本编辑器不修改示例,保存时原样保留。"}),k.length>0&&(0,s.jsx)(d.A,{type:"error",showIcon:!0,message:"校验未通过:".concat(k.length," 处"),description:(0,s.jsx)("div",{className:"text-xs",children:k.map((e,t)=>{var l;return(0,s.jsxs)("div",{children:[(0,s.jsx)(H,{code:!0,children:e.path||"(root)"})," ",e.message]},"".concat(null!=(l=e.path)?l:"root","-").concat(t))})})}),(0,s.jsx)(F,{form:f,options:g.options,idLocked:!!w})]}):null}},51307:(e,t)=>{t.A={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M893.3 293.3L730.7 130.7c-7.5-7.5-16.7-13-26.7-16V112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V338.5c0-17-6.7-33.2-18.7-45.2zM384 184h256v104H384V184zm456 656H184V184h136v136c0 17.7 14.3 32 32 32h320c17.7 0 32-14.3 32-32V205.8l136 136V840zM512 442c-79.5 0-144 64.5-144 144s64.5 144 144 144 144-64.5 144-144-64.5-144-144-144zm0 224c-44.2 0-80-35.8-80-80s35.8-80 80-80 80 35.8 80 80-35.8 80-80 80z"}}]},name:"save",theme:"outlined"}}}]);
|