@customize-agent/server 4.60.5 → 4.60.11
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 +3 -3
- package/.next/prerender-manifest.json +3 -3
- package/.next/required-server-files.json +1 -1
- package/.next/server/chunks/1001.js +1 -1
- package/.next/server/chunks/1243.js +1 -1
- package/.next/server/chunks/2328.js +1 -1
- package/.next/server/chunks/3806.js +1 -1
- package/.next/server/chunks/{7848.js → 4722.js} +65 -65
- package/.next/server/chunks/8204.js +1 -1
- package/.next/server/chunks/9666.js +76 -76
- 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/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]/instruction.js +1 -1
- package/.next/server/pages/api/documents/generated/[id]/pause.js +1 -1
- package/.next/server/pages/api/health.js +1 -1
- package/.next/server/pages/api/kb/upload.js +2 -2
- package/.next/server/pages/api/system/data-health.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/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].html +1 -1
- package/.next/server/pages/skills/new.html +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 +30 -30
- package/.next/static/{bcd9506c939180bc91621d6b3be7ff59672127f893afe452d0b04ec42a25b8a7 → 36956db6655c7ce7a67c9b6862b2ca1b6b5308f268b5595d430facff6c0f4152}/_buildManifest.js +1 -1
- package/.next/static/chunks/pages/{_app-3f5aa4ff7951feca.js → _app-28228d95968c4d44.js} +1 -1
- package/package.json +2 -2
- package/scripts/capture-baseline.mjs +4 -2
- package/scripts/half-built-scan.allow.json +1 -1
- package/scripts/kb-index-worker.cjs +2 -2
- package/scripts/kb-worker-ipc.cjs +1 -1
- package/scripts/upload-matrix.cjs +44 -25
- /package/.next/static/{bcd9506c939180bc91621d6b3be7ff59672127f893afe452d0b04ec42a25b8a7 → 36956db6655c7ce7a67c9b6862b2ca1b6b5308f268b5595d430facff6c0f4152}/_ssgManifest.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html><head><meta charSet="utf-8" data-next-head=""/><meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" data-next-head=""/><link rel="icon" type="image/svg+xml" href="/favicon.svg" data-next-head=""/><link rel="icon" href="/favicon.ico" sizes="any" data-next-head=""/><link rel="apple-touch-icon" href="/apple-touch-icon.png" data-next-head=""/><title data-next-head="">500: Internal Server Error</title><link rel="preload" href="/_next/static/css/f4f2d386cfeae8e4.css" as="style"/><link rel="stylesheet" href="/_next/static/css/f4f2d386cfeae8e4.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" noModule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-6224d37324e372cb.js" defer=""></script><script src="/_next/static/chunks/framework-4b565b3ddc94cdac.js" defer=""></script><script src="/_next/static/chunks/main-0c91f573696223ca.js" defer=""></script><script src="/_next/static/chunks/pages/_app-3f5aa4ff7951feca.js" defer=""></script><script src="/_next/static/chunks/pages/_error-282257fbdcc167b4.js" defer=""></script><script src="/_next/static/bcd9506c939180bc91621d6b3be7ff59672127f893afe452d0b04ec42a25b8a7/_buildManifest.js" defer=""></script><script src="/_next/static/bcd9506c939180bc91621d6b3be7ff59672127f893afe452d0b04ec42a25b8a7/_ssgManifest.js" defer=""></script></head><body><div id="__next"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}if(u)p(u);else try{let n=localStorage.getItem(i)||s,y=l&&n==="system"?c():n;p(y)}catch(n){}})("class","theme","system",null,["light","dark"],null,true,true)</script><div class="css-1pi45l5 ant-app css-var-_R_56_"><aside class="sidebar sidebarCollapsedSelf"><div class="sidebarLogoRow"><a class="min-w-0 flex-1" href="/overview"><div class="sidebarLogo"><div class="w-8 h-8 rounded-lg bg-black dark:bg-white flex items-center justify-center shrink-0"><svg width="26" height="26" viewBox="0 0 24 24" class="text-white dark:text-black" aria-hidden="true" focusable="false"><g transform="translate(12.2475 11.7525) scale(1.0500) translate(0.9636 0.0000) rotate(5.00)"><path d="M8.561 5.168 A10 10 0 1 1 1.544 -9.880 A8.5 8.5 0 1 0 8.561 5.168 Z" fill="currentColor"></path></g></svg></div><div class="sidebarLogoTitle"><span class="logoGradient">Customize Agent</span></div></div></a></div><nav class="sidebarNav mt-2"><a href="/overview"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-layout-dashboard"><rect width="7" height="9" x="3" y="3" rx="1"></rect><rect width="7" height="5" x="14" y="3" rx="1"></rect><rect width="7" height="9" x="14" y="12" rx="1"></rect><rect width="7" height="5" x="3" y="16" rx="1"></rect></svg><span class="sidebarLabel">总览</span></div></a><a href="/knowledge"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-database"><ellipse cx="12" cy="5" rx="9" ry="3"></ellipse><path d="M3 5V19A9 3 0 0 0 21 19V5"></path><path d="M3 12A9 3 0 0 0 21 12"></path></svg><span class="sidebarLabel">知识库</span></div></a><a href="/models"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-cpu"><rect width="16" height="16" x="4" y="4" rx="2"></rect><rect width="6" height="6" x="9" y="9" rx="1"></rect><path d="M15 2v2"></path><path d="M15 20v2"></path><path d="M2 15h2"></path><path d="M2 9h2"></path><path d="M20 15h2"></path><path d="M20 9h2"></path><path d="M9 2v2"></path><path d="M9 20v2"></path></svg><span class="sidebarLabel">模型配置</span></div></a><a href="/prompt"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-message-square"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"></path></svg><span class="sidebarLabel">提示词管理</span></div></a><a href="/skills"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-shield-check"><path d="M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"></path><path d="m9 12 2 2 4-4"></path></svg><span class="sidebarLabel">技能库</span></div></a><a href="/canvas"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-network"><rect x="16" y="16" width="6" height="6" rx="1"></rect><rect x="2" y="16" width="6" height="6" rx="1"></rect><rect x="9" y="2" width="6" height="6" rx="1"></rect><path d="M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3"></path><path d="M12 12V8"></path></svg><span class="sidebarLabel">生成画布</span></div></a><a href="/guide"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-book-open"><path d="M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z"></path><path d="M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z"></path></svg><span class="sidebarLabel">指引</span></div></a><a href="/settings"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-settings"><path d="M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z"></path><circle cx="12" cy="12" r="3"></circle></svg><span class="sidebarLabel">设置</span></div></a></nav></aside><div class="mainContent"><header class="topbar"><div class="flex-1"></div><span class="ant-badge css-1pi45l5 css-var-_R_56_"><button type="button" class="ant-btn css-1pi45l5 css-var-_R_56_ ant-btn-default ant-btn-color-default ant-btn-variant-outlined topbarBtn"><span class="ant-btn-icon"><span role="img" aria-label="clock-circle" class="anticon anticon-clock-circle"><svg viewBox="64 64 896 896" focusable="false" data-icon="clock-circle" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"></path><path d="M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z"></path></svg></span></span><span>后台任务</span></button></span><button class="topbarBtn"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-moon"><path d="M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z"></path></svg><span>深色</span></button><button class="topbarBtn"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-languages"><path d="m5 8 6 6"></path><path d="m4 14 6-6 2-3"></path><path d="M2 5h12"></path><path d="M7 2h1"></path><path d="m22 22-5-10-5 10"></path><path d="M14 18h6"></path></svg><span>English</span></button></header><main class="mainInner"><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error<!-- -->.</h2></div></div></div></main></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":500}},"page":"/_error","query":{},"buildId":"bcd9506c939180bc91621d6b3be7ff59672127f893afe452d0b04ec42a25b8a7","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
|
|
1
|
+
<!DOCTYPE html><html><head><meta charSet="utf-8" data-next-head=""/><meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" data-next-head=""/><link rel="icon" type="image/svg+xml" href="/favicon.svg" data-next-head=""/><link rel="icon" href="/favicon.ico" sizes="any" data-next-head=""/><link rel="apple-touch-icon" href="/apple-touch-icon.png" data-next-head=""/><title data-next-head="">500: Internal Server Error</title><link rel="preload" href="/_next/static/css/f4f2d386cfeae8e4.css" as="style"/><link rel="stylesheet" href="/_next/static/css/f4f2d386cfeae8e4.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" noModule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-6224d37324e372cb.js" defer=""></script><script src="/_next/static/chunks/framework-4b565b3ddc94cdac.js" defer=""></script><script src="/_next/static/chunks/main-0c91f573696223ca.js" defer=""></script><script src="/_next/static/chunks/pages/_app-28228d95968c4d44.js" defer=""></script><script src="/_next/static/chunks/pages/_error-282257fbdcc167b4.js" defer=""></script><script src="/_next/static/36956db6655c7ce7a67c9b6862b2ca1b6b5308f268b5595d430facff6c0f4152/_buildManifest.js" defer=""></script><script src="/_next/static/36956db6655c7ce7a67c9b6862b2ca1b6b5308f268b5595d430facff6c0f4152/_ssgManifest.js" defer=""></script></head><body><div id="__next"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}if(u)p(u);else try{let n=localStorage.getItem(i)||s,y=l&&n==="system"?c():n;p(y)}catch(n){}})("class","theme","system",null,["light","dark"],null,true,true)</script><div class="css-1pi45l5 ant-app css-var-_R_56_"><aside class="sidebar sidebarCollapsedSelf"><div class="sidebarLogoRow"><a class="min-w-0 flex-1" href="/overview"><div class="sidebarLogo"><div class="w-8 h-8 rounded-lg bg-black dark:bg-white flex items-center justify-center shrink-0"><svg width="26" height="26" viewBox="0 0 24 24" class="text-white dark:text-black" aria-hidden="true" focusable="false"><g transform="translate(12.2475 11.7525) scale(1.0500) translate(0.9636 0.0000) rotate(5.00)"><path d="M8.561 5.168 A10 10 0 1 1 1.544 -9.880 A8.5 8.5 0 1 0 8.561 5.168 Z" fill="currentColor"></path></g></svg></div><div class="sidebarLogoTitle"><span class="logoGradient">Customize Agent</span></div></div></a></div><nav class="sidebarNav mt-2"><a href="/overview"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-layout-dashboard"><rect width="7" height="9" x="3" y="3" rx="1"></rect><rect width="7" height="5" x="14" y="3" rx="1"></rect><rect width="7" height="9" x="14" y="12" rx="1"></rect><rect width="7" height="5" x="3" y="16" rx="1"></rect></svg><span class="sidebarLabel">总览</span></div></a><a href="/knowledge"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-database"><ellipse cx="12" cy="5" rx="9" ry="3"></ellipse><path d="M3 5V19A9 3 0 0 0 21 19V5"></path><path d="M3 12A9 3 0 0 0 21 12"></path></svg><span class="sidebarLabel">知识库</span></div></a><a href="/models"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-cpu"><rect width="16" height="16" x="4" y="4" rx="2"></rect><rect width="6" height="6" x="9" y="9" rx="1"></rect><path d="M15 2v2"></path><path d="M15 20v2"></path><path d="M2 15h2"></path><path d="M2 9h2"></path><path d="M20 15h2"></path><path d="M20 9h2"></path><path d="M9 2v2"></path><path d="M9 20v2"></path></svg><span class="sidebarLabel">模型配置</span></div></a><a href="/prompt"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-message-square"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"></path></svg><span class="sidebarLabel">提示词管理</span></div></a><a href="/skills"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-shield-check"><path d="M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"></path><path d="m9 12 2 2 4-4"></path></svg><span class="sidebarLabel">技能库</span></div></a><a href="/canvas"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-network"><rect x="16" y="16" width="6" height="6" rx="1"></rect><rect x="2" y="16" width="6" height="6" rx="1"></rect><rect x="9" y="2" width="6" height="6" rx="1"></rect><path d="M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3"></path><path d="M12 12V8"></path></svg><span class="sidebarLabel">生成画布</span></div></a><a href="/guide"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-book-open"><path d="M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z"></path><path d="M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z"></path></svg><span class="sidebarLabel">指引</span></div></a><a href="/settings"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-settings"><path d="M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z"></path><circle cx="12" cy="12" r="3"></circle></svg><span class="sidebarLabel">设置</span></div></a></nav></aside><div class="mainContent"><header class="topbar"><div class="flex-1"></div><span class="ant-badge css-1pi45l5 css-var-_R_56_"><button type="button" class="ant-btn css-1pi45l5 css-var-_R_56_ ant-btn-default ant-btn-color-default ant-btn-variant-outlined topbarBtn"><span class="ant-btn-icon"><span role="img" aria-label="clock-circle" class="anticon anticon-clock-circle"><svg viewBox="64 64 896 896" focusable="false" data-icon="clock-circle" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"></path><path d="M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z"></path></svg></span></span><span>后台任务</span></button></span><button class="topbarBtn"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-moon"><path d="M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z"></path></svg><span>深色</span></button><button class="topbarBtn"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-languages"><path d="m5 8 6 6"></path><path d="m4 14 6-6 2-3"></path><path d="M2 5h12"></path><path d="M7 2h1"></path><path d="m22 22-5-10-5 10"></path><path d="M14 18h6"></path></svg><span>English</span></button></header><main class="mainInner"><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error<!-- -->.</h2></div></div></div></main></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":500}},"page":"/_error","query":{},"buildId":"36956db6655c7ce7a67c9b6862b2ca1b6b5308f268b5595d430facff6c0f4152","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
|
|
@@ -25,4 +25,4 @@ th,td{font-family:${a.bodyFontFamily};font-size:${Math.max(a.bodyPt-1,9)}pt;line
|
|
|
25
25
|
th{background:${b?"#fff":"#f3f4f6"};font-weight:700;text-align:center}
|
|
26
26
|
pre{white-space:pre-wrap;font-family:${a.bodyFontFamily};font-size:${a.bodyCss};line-height:${a.lineCss};page-break-inside:avoid;break-inside:avoid}.page-break{page-break-after:always;break-after:page;height:0}
|
|
27
27
|
@media print{body{-webkit-print-color-adjust:exact;print-color-adjust:exact}a{text-decoration:none;color:#111827}}
|
|
28
|
-
`}(e,d)}</style></head><body>${f}</body></html>`}(a,(await (0,u.c)()).parse(b,{async:!1}).replace(/<h2([^>]*)>(第[一二三四五六七八九十百千万\d]+章\s*[\s\S]*?)<\/h2>/gu,(a,b,c)=>/\bclass=/iu.test(b)?`<h2${b.replace(/class=(['"])(.*?)\1/iu,(a,b,c)=>`class=${b}${c} document-chapter-heading${b}`)}>${c}</h2>`:`<h2${b} class="document-chapter-heading">${c}</h2>`).replace(/<p>\s*\|\s*:?-{3,}:?\s*(?:\|\s*:?-{3,}:?\s*)*\|?\s*<\/p>/giu,"").replace(/<p>([^<]*(?:<(?:strong|em)>[^<]*<\/(?:strong|em)>[^<]*)*)<\/p>\s*<table>/gu,"<table><caption>$1</caption>"),c,e),d,f)}async function aZ(a,b,d){let{chromium:e}=await Promise.resolve().then(c.bind(c,83237)),f=[{label:"playwright-bundled-chromium",options:{headless:!0,args:["--no-sandbox","--disable-setuid-sandbox"]}},{label:"system-chrome-channel",options:{channel:"chrome",headless:!0,args:["--no-sandbox","--disable-setuid-sandbox"]}},{label:"system-msedge-channel",options:{channel:"msedge",headless:!0,args:["--no-sandbox","--disable-setuid-sandbox"]}},...(function(){let a=[process.env.PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH,process.env.CHROME_PATH].filter(Boolean),b=z.homedir();return[...new Set([...a,..."darwin"===process.platform?["/Applications/Google Chrome.app/Contents/MacOS/Google Chrome","/Applications/Chromium.app/Contents/MacOS/Chromium","/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge","/Applications/Brave Browser.app/Contents/MacOS/Brave Browser",k.join(b,"Applications/Google Chrome.app/Contents/MacOS/Google Chrome"),k.join(b,"Applications/Chromium.app/Contents/MacOS/Chromium")]:"win32"===process.platform?[k.join(process.env.PROGRAMFILES||"C:\\Program Files","Google/Chrome/Application/chrome.exe"),k.join(process.env["PROGRAMFILES(X86)"]||"C:\\Program Files (x86)","Google/Chrome/Application/chrome.exe"),k.join(process.env.LOCALAPPDATA||"","Google/Chrome/Application/chrome.exe"),k.join(process.env.PROGRAMFILES||"C:\\Program Files","Microsoft/Edge/Application/msedge.exe")]:["/usr/bin/google-chrome","/usr/bin/google-chrome-stable","/usr/bin/chromium","/usr/bin/chromium-browser","/snap/bin/chromium","/usr/bin/microsoft-edge"]].filter(a=>a&&i.existsSync(a)))]})().map(a=>({label:a,options:{executablePath:a,headless:!0,args:["--no-sandbox","--disable-setuid-sandbox"]}}))],g=[];for(let c of f)try{let f=await e.launch(c.options);try{let c=await f.newPage({locale:"zh-CN"});await c.setContent(a,{waitUntil:"load"}),await c.evaluate(async()=>{await document.fonts.ready}),await c.waitForFunction(()=>Array.from(document.images).every(a=>a.complete),void 0,{timeout:1e4}).catch(()=>void 0),await c.emulateMedia({media:"print"});let e=aw(b),g=d?.headersFooters==="forbidden"?{displayHeaderFooter:!1}:{displayHeaderFooter:!0,headerTemplate:"<div></div>",footerTemplate:`<div style="font-family:${e.fontFamily};font-size:10.5pt;line-height:12pt;width:100%;text-align:center;color:#666;">第 <span class="pageNumber"></span> 页 / 共 <span class="totalPages"></span> 页</div>`},h=async()=>Buffer.from(await c.pdf({format:e.paper,printBackground:!0,preferCSSPageSize:!0,outline:!0,tagged:!0,margin:{top:e.marginTop,right:e.marginRight,bottom:e.marginBottom,left:e.marginLeft},...g})),i=await h();for(let a=0;a<3;a+=1){let a=await J(i);if(!a)throw Error("PDF实际页树/章节书签无法读取,不能编造目录页码");if(!await c.evaluate(a=>{let b=!1;for(let c of document.querySelectorAll("[data-toc-title]")){let d=c.dataset.tocTitle,e=void 0===a[d]?"":String(a[d]);c.textContent!==e&&(c.textContent=e,b=!0)}return b},a))return i;i=await h()}throw Error("PDF目录页码实际排版校验未收敛")}finally{await f.close()}}catch(a){g.push(`${c.label}: ${a instanceof Error?a.message:String(a)}`)}throw Error(g.join("\n"))}function a$(a,b,c,d,e=[],f,g,h,i){if(a)try{let j=a.draft,k=j?.reviewMetadata?.diagnostics?.quality,l=a.completedAt?Math.max(0,a.completedAt-a.createdAt):Math.max(0,Date.now()-a.createdAt),n=(a.draft?.exportGate?.manualReviewIssues||[]).map(a=>({...a,level:a.level??"warning"})),o=[...e,...n],p=o.length>0?(0,O.aF)(o,j?.chapters):void 0,q={format:b,exportPurpose:h,reviewReport:i,exportedAt:Date.now(),durationMs:l,ruleSummary:(j?.promptRules?.executionSummary||[]).slice(0,12),repairedCount:k?.repairedCount,blockingCount:k?.blockingCount,gatePassed:j?.exportGate?.passed===!0&&0===e.length&&(d?.blockerCount??0)===0,...a.runId&&j?.reviewMetadata?.contractQuality?{sourceIdentity:{runId:a.runId,documentHash:j.reviewMetadata.contractQuality.documentHash,contractId:j.reviewMetadata.contractQuality.contractId,buildId:(0,w.S)()?.sourceFingerprint}}:{},...g?{artifact:{sha256:(0,m.createHash)("sha256").update(g.content).digest("hex"),bytes:Buffer.byteLength(g.content)},renderDurationMs:Math.max(0,Date.now()-g.startedAt)}:{},healthAlerts:j?.reviewMetadata?.telemetry?.healthAlerts,repairHeat:j?.reviewMetadata?.telemetry?.repairHeat,...d?{renderAudit:d}:{},...p?{gateIssueCount:e.length,gateChecklist:p}:{},...f?{realPages:f}:{}};a.runId&&(0,s.tv)((0,D.Gl)(c),`export-receipt-${(0,m.createHash)("sha256").update(JSON.stringify(q)).digest("hex")}.json`,q,a.runId);let r=(0,D.getGeneratedDocument)(a.id,c),t=[...r?.exportReports||a.exportReports||[],q].slice(-20);(0,D.a6)(a.id,{exportReports:t},c)}catch(a){console.warn(`[export] 渲染审计报告归档失败(不影响本次导出,但该次导出不会进历史对照):${a instanceof Error?a.message:String(a)}`)}}async function a_(a,b){let c,d=Date.now();if("POST"!==a.method&&"GET"!==a.method)return b.status(405).json({error:"Method not allowed"});if("GET"===a.method&&("string"!=typeof a.query?.reviewReportId||Object.values(a.query).some(a=>"string"!=typeof a)))return b.status(400).json({error:"REVIEW_REPORT_REQUEST_REQUIRED"});let e="GET"===a.method?a.query:a.body;if(!e||"object"!=typeof e||Array.isArray(e))return b.status(400).json({error:"INVALID_EXPORT_REQUEST"});let f=new Set(["documentId","title","markdown","format","exportPurpose","reviewReportId","reviewRunId","useClientMarkdown","exportGate","wordTemplatePath","projectRoot"]);if(Object.keys(e).some(a=>!f.has(a)))return b.status(400).json({error:"INVALID_EXPORT_OPTION",message:"存在不受支持的导出参数,请使用明确的 exportPurpose。"});if(void 0!==e.exportPurpose&&"review"!==e.exportPurpose&&"delivery"!==e.exportPurpose)return b.status(400).json({error:"INVALID_EXPORT_PURPOSE"});let g=e.exportPurpose??"review",h=e.projectRoot||(0,L.aY)(),i=e.documentId?(0,D.getGeneratedDocument)(e.documentId,h):null;if(e.documentId&&(!i||i.id!==e.documentId))return b.status(404).json({error:"Document not found"});if(e.reviewReportId){if(!/^[a-f0-9]{64}$/u.test(e.reviewReportId))return b.status(400).json({error:"INVALID_REVIEW_REPORT_ID"});let a=function(a,b,c){if(!/^[a-f0-9]{64}$/u.test(b))throw Error("INVALID_REVIEW_REPORT_ID");let d=(0,s.HM)(a,`review-export-${b}.json`,c);if(!j().existsSync(d))return;let e=j().readFileSync(d);if(Q(e)!==b)throw Error("REVIEW_REPORT_IDENTITY_MISMATCH");let f=JSON.parse(e.toString("utf8"));if(f.runId!==(c??null))throw Error("REVIEW_REPORT_RUN_MISMATCH");return f}((0,D.Gl)(h),e.reviewReportId,e.reviewRunId);return a&&a.documentId===(i?.id??null)?(b.setHeader("Content-Type","application/json; charset=utf-8"),b.setHeader("Content-Disposition",`attachment; filename*=UTF-8''${encodeURIComponent(`${aa(a.title)}_审阅问题报告_${a.body.sha256.slice(0,12)}.json`)}`),b.status(200).send(JSON.stringify(a))):b.status(404).json({error:"REVIEW_REPORT_NOT_FOUND"})}let k=i?.draft?.bidComposition,p=e.title||i?.title||"document",u=(0,N.b2)(k?.formatRules),v=function(a,b){if(void 0!==b)return b;if(a?.editedMarkdown!==void 0)return a.editedMarkdown;let c=a?.markdown||a?.draft?.markdown;return c?.trim()?c:(a?.checkpointChapters??[]).filter(a=>(0,t.a1)(a.content??"")).map(a=>a.content).join("\n\n")}(i,e.useClientMarkdown&&"string"==typeof e.markdown?e.markdown:i?void 0:e.markdown),y=v;if("review"!==g||e.useClientMarkdown||i?.editedMarkdown||(v=function(a,b,c,d){if(!a?.runId||!a.id||!d.includes("```mermaid"))return d;let e=l().dirname((0,s.HM)(b,"document-model-author.json",a.runId));if(!j().existsSync(e))return d;let f=j().readdirSync(e).filter(a=>/^document-model-checkpoint-\d+\.json$/u.test(a)).sort().at(-1);if(!f)return d;let g=JSON.parse(j().readFileSync(l().join(e,f),"utf8"));if(!g||"object"!=typeof g||!g.tasks||"object"!=typeof g.tasks)throw Error("当前审阅结构化稿无法读取,不能把图源假装渲染成功");let h=(0,q.rZ)({generatedDir:b,projectRoot:c,documentId:a.id}),i=d;for(let a of Object.values(g.tasks))for(let b of a.current?.output?.units??[]){if("figure"!==b.kind)continue;let a={...b,heading:void 0},c=(0,r.renderAuthorUnit)(a),d=c.indexOf("```mermaid");if(d<0)continue;let e=c.slice(d);if(!i.includes(e))continue;let f=h.renderer(a),g=("string"==typeof f?[f]:f).map((b,c)=>`![${a.caption.replaceAll("[","").replaceAll("]","")}${c?"(续)":""}](${b})`).join("\n\n");i=i.replace(e,g)}let k=h.receipts();if(k.length){let c=(0,m.createHash)("sha256").update(d).digest("hex"),e=(0,m.createHash)("sha256").update(i).digest("hex"),g=(0,m.createHash)("sha256").update(JSON.stringify([c,e,f])).digest("hex");(0,s.tv)(b,`review-figure-assets-${g}.json`,{runId:a.runId,documentId:a.id,modelFile:f,sourceHash:c,renderedHash:e,renderedFromExistingUnitsOnly:!0,receipts:k},a.runId)}return i}(i,(0,D.Gl)(h),h,v)),!(0,t.a1)(v))return b.status(422).json({error:"EMPTY_EXPORT_BODY",message:"当前没有已写入的正文,不能生成空白审阅文件。"});let z=i?.reviewMetadata?.contractQuality??i?.draft?.reviewMetadata?.contractQuality,A=i?.draft?.markdown||i?.markdown||"",B=aX(v,A===y?v:A),{markdown:C,audit:E}=B,F=e.format;if(!F||!["markdown","html","pdf","docx"].includes(F))return b.status(400).json({error:"INVALID_EXPORT_FORMAT",message:"请选择有效的导出格式。"});B.issues.length>0&&b.setHeader(Z.contentIssues,encodeURIComponent(JSON.stringify(B.issues.slice(0,20))));let G=_(E);G&&b.setHeader(Z.renderAudit,encodeURIComponent(JSON.stringify(G)));let H=i?.draft?.exportGate||e.exportGate,J=(H?.blockingIssues||[]).map(a=>({level:"error",...a})),O=H?.passed===!1&&0===J.length?[{level:"error",message:"导出门禁未通过:存在未完成的检查项"}]:[],U=[...J,...O],W=[i?.draft?.exportGate?.deliveryFingerprint,i?.draft?.exportGate?.textFingerprint].find(a=>"string"==typeof a&&a.length>0),X=(0,M.c6)(v),Y=W?W===X?"matched":"mismatch":"absent";"matched"!==Y&&b.setHeader(Z.gateBinding,Y);let $="mismatch"===Y?[{level:"error",severity:"blocker",message:"将交付的正文与门禁判定时的正文**不是同一份**(收口后被编辑/替换):放行依据对不上这份文本,本份正文尚未取得交付资格。",suggestion:"若改动是有意的:重新生成或重跑校验后再导出;若只是留档:请用审阅导出。"}]:[],ab=z&&(z.documentHash!==(0,x.Sl)(i?.draft?.chapters??[],v)||!(0,x.R3)(z))?[{level:"error",severity:"blocker",message:z.documentHash!==(0,x.Sl)(i?.draft?.chapters??[],v)?"正文已经变更,冻结合同的七维评价回执属于旧版本,须重新评价后交付。":"当前协议的七维职责核验及专业档位尚未达标,历史回执和客户端门禁声明不能替代。"}]:[],ac=i&&i.draft?.exportGate?.passed===!0&&"absent"!==Y||U.length||$.length||ab.length?[]:[{level:"error",severity:"blocker",message:"未取得服务端对本份正文的已通过评价及绑定回执;本次仅可作审阅导出,客户端声明不能替代评价。"}],ad=[...U,...$,...ab,...z?(0,x.ie)(z):[],...ac,...(function(a,b,c){if(!a?.runId)return["交付导出缺少当前生成运行身份"];let d=S(b,a.runId,"run-inputs.json").data,e=S(b,a.runId,"document-contract.json").data,f=S(b,a.runId,"project-model.json").data,g=S(b,a.runId,"contract-quality.json").data,h=S(b,a.runId,"tender-requirements.json").data,i=S(b,a.runId,"tender-source-coverage-review.json").data,j=a.reviewMetadata?.contractQuality??a.draft?.reviewMetadata?.contractQuality,k=(0,x.Sl)(a.draft?.chapters??[],c),l=[];if(j&&j.documentHash===k&&(0,x.R3)(j)&&g&&JSON.stringify(g)===JSON.stringify(j)||l.push("缺少本份正文的当前实际冻结合同七维评价回执"),e&&f&&j&&j.contractId===e.id&&j.projectSnapshotId===f.snapshotId||l.push("评价回执与冻结合同、项目来源身份未绑定"),e){e.version!==P.GM&&l.push("冻结合同属于历史协议,须按当前写作及评价协议重新生成");let{id:a,...b}=e;a!==Q(JSON.stringify(b))&&l.push("冻结合同原始内容与身份不一致")}if(f){let{snapshotId:a,...b}=f;a!==Q(JSON.stringify(b))&&l.push("项目来源快照原始内容与身份不一致")}d&&d.runId===a.runId&&d.documentId===a.id&&Array.isArray(d.sources)&&d.sources.length||l.push("缺少本次运行的完整来源输入绑定");let m=a.draft?.exportGate?.checklist?.filter(a=>"tender-source-completeness"===a.key),n=R(h?.sourceLibrary),o=Array.isArray(n?.units)?n.units:void 0,p=Array.isArray(i?.batches)?i.batches.map(R):void 0,q=p?.flatMap(a=>Array.isArray(a?.requestedIndices)?a.requestedIndices:[]),r=p?.flatMap(a=>Array.isArray(a?.responseIndices)?a.responseIndices:[]),s=o?.map(a=>R(a)?.index),t=(a,b)=>!!(a&&b&&a.every(a=>Number.isSafeInteger(a)&&Number(a)>=0)&&new Set(a).size===a.length&&a.length===b.length&&a.every(a=>b.includes(a)));return!(!m||1!==m.length||!0!==m[0].passed||!i||"tender-source-coverage-review-v5"!==i.version||"measured"!==i.status||i.documentHash!==k||!n||i.sourceHash!==Q(JSON.stringify(n))||!Array.isArray(i.omissions)||!Array.isArray(i.bodyFindings)||i.bodyFindings.length!==i.omissions.length||i.bodyFindings.some((a,b)=>{let d=R(a);return!d||d.omissionIndex!==b||"covered"!==d.status||"string"!=typeof d.reason||!d.reason.trim()||!Array.isArray(d.quotes)||!d.quotes.length||d.quotes.some(a=>"string"!=typeof a||!a.trim()||!c.includes(a))})||!p?.length||p.some(a=>!Array.isArray(a?.errors)||a.errors.length||!t(Array.isArray(a.responseIndices)?a.responseIndices:void 0,Array.isArray(a.requestedIndices)?a.requestedIndices:void 0)))&&s?.length&&t(q,s)&&t(r,s)||l.push("完整来源技术义务漏项审阅未通过或回执与本份正文、原来源不一致"),l})(i,(0,D.Gl)(h),v).map(a=>({level:"error",severity:"blocker",message:a}))],ae=0===ad.length&&0===E.blockers.length,af=(a,d,e)=>{let f=function(a){let{record:b}=a,c=S(a.generatedDir,b?.runId,"run-inputs.json"),d=S(a.generatedDir,b?.runId,"document-contract.json").data,e=S(a.generatedDir,b?.runId,"document-model-final.json"),f=e.data?e:S(a.generatedDir,b?.runId,"document-model-author.json"),g=f.data,h=Array.isArray(c.data?.sources)?c.data.sources:void 0,i=T(d?.chapters??b?.draft?.chapters),j=(b?.draft?.chapters??b?.checkpointChapters??[]).filter(a=>(0,t.a1)(a.content??"")),k=T(j).filter(b=>j.some(c=>c.id===b.id&&a.markdown.includes(c.content))),l=i.length>0&&k.length===j.length,m=b?.reviewMetadata?.contractQuality??b?.draft?.reviewMetadata?.contractQuality,n=S(a.generatedDir,b?.runId,"tender-source-coverage-review.json"),o=R(c.data?.buildIdentity),p=!!(h&&c.sha256&&c.data?.runId===b?.runId&&c.data?.documentId===b?.id);return{version:1,purpose:a.purpose,capturedAt:Date.now(),documentId:b?.id??null,runId:b?.runId??null,title:a.title,format:a.format??"unmeasured",body:{sha256:Q(a.markdown),bytes:Buffer.byteLength(a.markdown),chars:a.markdown.length},identity:{exportBuildId:a.buildId??null,generationBuildId:"string"==typeof o?.sourceFingerprint?o.sourceFingerprint:null,runInputsSha256:c.sha256??null,sourceSnapshotSha256:h?Q(JSON.stringify(h)):null,sourceCount:h?.length??null,status:p?"bound":"unmeasured"},generation:{status:b?.status??"editor",error:b?.error??null,warnings:b?.warningIssues??[]},chapters:{status:l?"measured":"unmeasured",expected:i,written:k,missing:l?i.filter(a=>!k.some(b=>b.id===a.id)):[],...!l?{reason:"缺少完整章计划,或编辑后正文无法与原章节快照逐字对位;不把无法对位冒充已证缺章"}:{}},acceptance:{passed:a.acceptancePassed,issues:[...a.issues]},sourceCompleteness:{checklist:b?.draft?.exportGate?.checklist?.find(a=>"tender-source-completeness"===a.key)??null,receipt:n.data??null,receiptSha256:n.sha256??null},quality:{status:m?m.documentHash===(0,x.Sl)(b?.draft?.chapters??[],a.markdown)?"current":"historical":"unmeasured",receipt:m??null},rework:{status:g?"recorded":"unmeasured",modelSha256:f.sha256??null,authorPassSealed:"boolean"==typeof g?.authorPassSealed?g.authorPassSealed:null,c0ReferenceChars:"number"==typeof g?.c0ReferenceChars?g.c0ReferenceChars:null,ledger:g?.rework??null,revisionCount:Array.isArray(g?.revisions)?g.revisions.length:null,userRevisionCount:b?.revisionLog?.length??0},render:a.render??{status:"pending"}}}({record:i,generatedDir:(0,D.Gl)(h),markdown:v,title:p,purpose:g,format:F,buildId:(0,w.S)()?.sourceFingerprint,acceptancePassed:ae&&0===ad.length&&0===E.blockers.length,issues:[...ad.map(a=>a.message),...B.issues],render:{status:a,...d?{error:d}:{},audit:_(E),...void 0!==e?{artifact:{sha256:(0,m.createHash)("sha256").update(e).digest("hex"),bytes:Buffer.byteLength(e)}}:{}}});c={...function(a,b){let c=Q(JSON.stringify(b)),d=(0,s.tv)(a,`review-export-${c}.json`,b,b.runId??void 0);return{id:c,sha256:d.sha256,bodySha256:b.body.sha256}}((0,D.Gl)(h),f),...i?.runId?{runId:i.runId}:{}},b.setHeader(Z.issuesReport,encodeURIComponent(JSON.stringify(c))),b.setHeader(Z.bodySha256,f.body.sha256),b.setHeader(Z.exportPurpose,g),b.setHeader(Z.gatePassed,f.acceptance.passed?"true":"false")};if(af("pending"),"delivery"===g&&E.blockers.length>0)return af("failed",E.blockers.map(a=>a.message).join(";")),b.status(422).json({error:"EXPORT_SOURCE_STRUCTURAL_DEFECT",message:`导出源存在结构性缺陷,已按纯渲染模式阻断(不再补造表头):${E.blockers.slice(0,3).map(a=>a.message).join(";")}`,issues:E.blockers.slice(0,20)});if(!ae&&"delivery"===g)return af("failed","当前正文尚未通过交付验收"),b.status(422).json({error:"EXPORT_GATE_BLOCKED",message:`导出门禁未通过(${ad.length} 项阻断),文档未达交付标准,已阻止导出。请先使用审阅导出供专业人员核对,交付导出须通过本份正文的验收。`,issues:ad.slice(0,20)});b.setHeader(Z.gatePassed,ae?"true":"false"),b.setHeader(Z.notDeliverable,"review"===g?"true":"false"),ae||(b.setHeader(Z.gateIssues,encodeURIComponent(JSON.stringify(ad.map(a=>a.message).slice(0,20)))),b.setHeader(Z.gateIssueCount,String(ad.length)));let ag="review"===g?function(a){let b=a.lastIndexOf("."),c=b>0?a.slice(0,b):a;return c.endsWith("_审阅稿")?a:b>0?`${c}_审阅稿${a.slice(b)}`:`${a}_审阅稿`}(aa(p)):aa(p),ah=a=>{let c=function(a,b,c="enforce"){let d=b?.pageMin,e=b?.pageLimit;if("informational"===c)return{status:"informational",passed:!0,reason:"本轮按专业内容验收,真实页数仅供后续人工排版参考",pages:a??null,min:d??null,max:e??null};if(void 0===d&&void 0===e)return{status:"not-applicable",passed:!0,reason:"本轮没有页数上下限义务",pages:a??null,min:null,max:null};if(void 0!==d&&(!Number.isInteger(d)||d<=0)||void 0!==e&&(!Number.isInteger(e)||e<=0)||void 0!==d&&void 0!==e&&d>e)return{status:"unmeasured",passed:!1,reason:"冻结的页数义务不完整或上下限冲突,须回到合同编译处理",pages:a??null,min:d??null,max:e??null};if(void 0===a||!Number.isInteger(a)||a<=0)return{status:"unmeasured",passed:!1,reason:"实际渲染页数未完成测量,不能以字数或估算页数代替",pages:null,min:d??null,max:e??null};let f=(void 0===d||a>=d)&&(void 0===e||a<=e);return{status:f?"met":"not-met",passed:f,reason:f?`实际${a}页满足页数义务`:`实际${a}页未满足${void 0===d?"":`不少于${d}页`}${void 0!==d&&void 0!==e?"、":""}${void 0===e?"":`不超过${e}页`}`,pages:a,min:d??null,max:e??null}}(a,k?.formatRules,"informational"),d=k?.formatRules.pageLimit;if(d&&a&&a>d){let e=k?.formatRules.pageEvidence?.filter(a=>"max"===a.kind&&a.value===d),f=e?.length&&e.every(a=>"recommendation"===a.status)?"来源篇幅建议":"尚未核定适用范围的篇幅候选";b.setHeader(Z.pageLimit,encodeURIComponent(`${f}:当前${a}页,参考${d}页;${c.reason}`))}};try{if("markdown"===F){let a=an(C,h,E),e=_(E);return e&&b.setHeader(Z.renderAudit,encodeURIComponent(JSON.stringify(e))),b.setHeader(Z.figureInline,encodeURIComponent(JSON.stringify({inlined:a.report.inlined,failed:a.report.failed.map(a=>`${a.name}:${a.reason}`).slice(0,20)}))),af("succeeded",void 0,a.markdown),a$(i,F,h,e||G,ad,void 0,{content:a.markdown,startedAt:d},g,c),b.setHeader("Content-Type","text/markdown; charset=utf-8"),b.setHeader("Content-Disposition",`attachment; filename*=UTF-8''${encodeURIComponent(`${ag}.md`)}`),b.status(200).send(a.markdown)}if("docx"===F){let a=E.blockers.length,f=await aI(p,C,u,"review"===g?void 0:e.wordTemplatePath,h,E,k?.formatRules,"review"===g),j=f.buffer;if(f.imageReceipt.embedded!==f.imageReceipt.expected||f.imageReceipt.layoutIssues?.length){let a=f.imageReceipt.layoutIssues?.join(";")??`DOCX图件未完整进包:应有${f.imageReceipt.expected}处,实际${f.imageReceipt.embedded}处;不能以文字占位代替图件交付`;if(ad.push({level:"error",severity:"blocker",message:a}),"delivery"===g)return af("failed",a),b.status(422).json({error:"EXPORT_FIGURE_NOT_CONSERVED",message:a});b.setHeader(Z.gatePassed,"false"),b.setHeader(Z.notDeliverable,"true"),b.setHeader(Z.gateIssues,encodeURIComponent(JSON.stringify(ad.map(a=>a.message).slice(0,20)))),b.setHeader(Z.gateIssueCount,String(ad.length))}f.templateWarning&&(b.setHeader(Z.templateWarning,encodeURIComponent(f.templateWarning)),console.error(`[export] ${f.templateWarning}`));let l=_(E);if(l&&b.setHeader(Z.renderAudit,encodeURIComponent(JSON.stringify(l))),"delivery"===g&&E.blockers.length>a){let c=E.blockers.slice(a);return af("failed",c.map(a=>a.message).join(";")),b.status(422).json({error:"EXPORT_RENDER_NOT_PURE",message:`docx 渲染阶段存在未声明的正文改动,已按纯渲染模式阻断:${c.slice(0,3).map(a=>a.message).join(";")}`,issues:c.slice(0,20)})}let m=await K(j).catch(a=>({unavailableReason:`渲染器异常:${a instanceof Error?a.message.split("\n")[0]:String(a)}`})),n=void 0!==m.pages&&null!==m.pages?{pages:m.pages,renderer:m.renderer||"unknown"}:{unavailableReason:m.unavailableReason||"未知原因"};return ah(m.pages),af("succeeded",void 0,j),a$(i,F,h,l||G,ad,n,{content:j,startedAt:d},g,c),b.setHeader("Content-Type","application/vnd.openxmlformats-officedocument.wordprocessingml.document"),b.setHeader("Content-Disposition",`attachment; filename*=UTF-8''${encodeURIComponent(`${ag}.docx`)}`),b.status(200).send(j)}let f=await aY(p,C,u,h,k?.formatRules.monoColor===!0,E);"review"===g&&(f=function(a){let b=j().readFileSync(o()).toString("base64"),c=`<style>@font-face{font-family:"${n}";src:url(data:font/otf;base64,${b}) format("opentype");font-weight:400;font-style:normal;}body,body *{font-family:"${n}",sans-serif!important;}</style>`;if(!a.includes("</head>"))throw Error("审阅HTML缺少文档头,无法可靠嵌入中文字体");return a.replace("</head>",`${c}</head>`)}(f),E.notices.push({code:"review-font-fallback",message:"审阅HTML/PDF嵌入Noto Sans CJK SC,保证跨环境中文可读;字体替代未认定为指定投标字体达标"}));let l=_(E);if(l&&b.setHeader(Z.renderAudit,encodeURIComponent(JSON.stringify(l))),"html"===F)return af("succeeded",void 0,f),a$(i,F,h,l||G,ad,void 0,{content:f,startedAt:d},g,c),b.setHeader("Content-Type","text/html; charset=utf-8"),b.setHeader("Content-Disposition",`attachment; filename*=UTF-8''${encodeURIComponent(`${ag}.html`)}`),b.status(200).send(f);try{let a=await aZ(f,u,k?.formatRules),e=await I(a);return ah(e),af("succeeded",void 0,a),a$(i,F,h,l||G,ad,e?{pages:e,renderer:"chromium-pdf-page-tree"}:{unavailableReason:"PDF页树解析失败,实际页数未完成验收"},{content:a,startedAt:d},g,c),b.setHeader("Content-Type","application/pdf"),e&&b.setHeader(Z.pdfPageCount,String(e)),b.setHeader("Content-Disposition",`attachment; filename*=UTF-8''${encodeURIComponent(`${ag}.pdf`)}`),b.status(200).send(a)}catch(c){return af("failed",c instanceof Error?c.message:String(c)),(0,V.wF)({level:"error",source:"api/documents/export",functionName:"pdfExportChromium",error:c,req:a,meta:{fallback:"system-browser-attempted"}}),b.status(500).json({error:"PDF_RENDER_FAILED",message:"PDF 渲染失败:未找到或无法启动可用的 Chrome/Chromium/Edge。请安装 Chrome,或设置 PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH 后重试。"})}}catch(a){return af("failed",a instanceof Error?a.message:String(a)),b.status(500).json({error:"EXPORT_RENDER_FAILED",message:"渲染失败,独立审阅报告已保留。"})}}let a0={inlineLocalImages:ah,inlineMarkdownFigures:an,createInlineImageResolver:ag,resolveLocalImagePath:af,rasterizeMarkdownSvgFigures:aA,buildDocxInternal:aK,createExportRenderAudit:$,exportRenderAuditReport:_,canonicalExportText:aS,exportConservationDiff:function(a,b){return aT(aS(a),aS(b))},diffCanonicalText:aT,docxVisibleText:aU,canonicalDocxText:aV,docxStageConservationDiff:aW,prepareExportMarkdown:aX,stripInlineMarkdown:ar,enhanceTocHtml:aN,buildExportHtml:aY,renderPdfBuffer:aZ,resolveExportStyle:aw,buildDocx:aI,markdownToDocxXml:aG,validateExportMarkdown:aR,isTableCaptionLine:aC,DOCX_TOC_FIELD_PLACEHOLDER:aD},a1=(0,W.j)("api/documents/export",a_);var a2=c(68970),a3=c(50296);let a4=(0,h.M)(d,"default"),a5=(0,h.M)(d,"config"),a6=new g.PagesAPIRouteModule({definition:{kind:f.A.PAGES_API,page:"/api/documents/export",pathname:"/api/documents/export",bundlePath:"",filename:""},userland:d,distDir:".next",relativeProjectDir:""});async function a7(a,b,c){let d=await a6.prepare(a,b,{srcPage:"/api/documents/export"});if(!d){b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve());return}let{query:f,params:g,prerenderManifest:h,routerServerContext:i}=d;try{let c=a.method||"GET",d=(0,a2.getTracer)(),e=d.getActiveScopeSpan(),j=a6.instrumentationOnRequestError.bind(a6),k=async e=>a6.render(a,b,{query:{...f,...g},params:g,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:h.preview,propagateError:!1,dev:a6.isDev,page:"/api/documents/export",internalRevalidate:null==i?void 0:i.revalidate,onError:(...b)=>j(a,...b)}).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let f=d.getRootSpanAttributes();if(!f)return;if(f.get("next.span_type")!==a3.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${f.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let g=f.get("next.route");if(g){let a=`${c} ${g}`;e.setAttributes({"next.route":g,"http.route":g,"next.span_name":a}),e.updateName(a)}else e.updateName(`${c} ${a.url}`)});e?await k(e):await d.withPropagatedContext(a.headers,()=>d.trace(a3.BaseServerSpan.handleRequest,{spanName:`${c} ${a.url}`,kind:a2.SpanKind.SERVER,attributes:{"http.method":c,"http.target":a.url}},k))}catch(a){if(a6.isDev)throw a;(0,e.sendError)(b,500,"Internal Server Error")}finally{null==c.waitUntil||c.waitUntil.call(c,Promise.resolve())}}},28183:a=>{a.exports=require("@napi-rs/canvas")},29021:a=>{a.exports=require("fs")},31421:a=>{a.exports=require("node:child_process")},33873:a=>{a.exports=require("path")},48161:a=>{a.exports=require("node:os")},55511:a=>{a.exports=require("crypto")},57975:a=>{a.exports=require("node:util")},73024:a=>{a.exports=require("node:fs")},75600:a=>{a.exports=require("next/dist/compiled/next-server/pages-api.runtime.prod.js")},76760:a=>{a.exports=require("node:path")},77598:a=>{a.exports=require("node:crypto")},83142:a=>{a.exports=import("marked")},83237:a=>{a.exports=import("playwright")},85497:(a,b,c)=>{c.d(b,{c:()=>d});async function d(a){let{Marked:b}=await Promise.resolve().then(c.bind(c,83142));return new b({async:!1,gfm:!0,breaks:!0,...a?{renderer:a}:{},tokenizer:{del(a){if(a.startsWith("~~"))return!1}}})}},88194:a=>{a.exports=require("jszip")},95393:a=>{a.exports=require("@customize-agent/llm")},96770:a=>{a.exports=require("@customize-agent/runtime")},97864:a=>{a.exports=import("pdfjs-dist/legacy/build/pdf.worker.mjs")}};var b=require("../../../webpack-api-runtime.js");b.C(a);var c=b.X(0,[9705,5746,5304,3806,2434,1243,1001,9666],()=>b(b.s=26735));module.exports=c})();
|
|
28
|
+
`}(e,d)}</style></head><body>${f}</body></html>`}(a,(await (0,u.c)()).parse(b,{async:!1}).replace(/<h2([^>]*)>(第[一二三四五六七八九十百千万\d]+章\s*[\s\S]*?)<\/h2>/gu,(a,b,c)=>/\bclass=/iu.test(b)?`<h2${b.replace(/class=(['"])(.*?)\1/iu,(a,b,c)=>`class=${b}${c} document-chapter-heading${b}`)}>${c}</h2>`:`<h2${b} class="document-chapter-heading">${c}</h2>`).replace(/<p>\s*\|\s*:?-{3,}:?\s*(?:\|\s*:?-{3,}:?\s*)*\|?\s*<\/p>/giu,"").replace(/<p>([^<]*(?:<(?:strong|em)>[^<]*<\/(?:strong|em)>[^<]*)*)<\/p>\s*<table>/gu,"<table><caption>$1</caption>"),c,e),d,f)}async function aZ(a,b,d){let{chromium:e}=await Promise.resolve().then(c.bind(c,83237)),f=[{label:"playwright-bundled-chromium",options:{headless:!0,args:["--no-sandbox","--disable-setuid-sandbox"]}},{label:"system-chrome-channel",options:{channel:"chrome",headless:!0,args:["--no-sandbox","--disable-setuid-sandbox"]}},{label:"system-msedge-channel",options:{channel:"msedge",headless:!0,args:["--no-sandbox","--disable-setuid-sandbox"]}},...(function(){let a=[process.env.PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH,process.env.CHROME_PATH].filter(Boolean),b=z.homedir();return[...new Set([...a,..."darwin"===process.platform?["/Applications/Google Chrome.app/Contents/MacOS/Google Chrome","/Applications/Chromium.app/Contents/MacOS/Chromium","/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge","/Applications/Brave Browser.app/Contents/MacOS/Brave Browser",k.join(b,"Applications/Google Chrome.app/Contents/MacOS/Google Chrome"),k.join(b,"Applications/Chromium.app/Contents/MacOS/Chromium")]:"win32"===process.platform?[k.join(process.env.PROGRAMFILES||"C:\\Program Files","Google/Chrome/Application/chrome.exe"),k.join(process.env["PROGRAMFILES(X86)"]||"C:\\Program Files (x86)","Google/Chrome/Application/chrome.exe"),k.join(process.env.LOCALAPPDATA||"","Google/Chrome/Application/chrome.exe"),k.join(process.env.PROGRAMFILES||"C:\\Program Files","Microsoft/Edge/Application/msedge.exe")]:["/usr/bin/google-chrome","/usr/bin/google-chrome-stable","/usr/bin/chromium","/usr/bin/chromium-browser","/snap/bin/chromium","/usr/bin/microsoft-edge"]].filter(a=>a&&i.existsSync(a)))]})().map(a=>({label:a,options:{executablePath:a,headless:!0,args:["--no-sandbox","--disable-setuid-sandbox"]}}))],g=[];for(let c of f)try{let f=await e.launch(c.options);try{let c=await f.newPage({locale:"zh-CN"});await c.setContent(a,{waitUntil:"load"}),await c.evaluate(async()=>{await document.fonts.ready}),await c.waitForFunction(()=>Array.from(document.images).every(a=>a.complete),void 0,{timeout:1e4}).catch(()=>void 0),await c.emulateMedia({media:"print"});let e=aw(b),g=d?.headersFooters==="forbidden"?{displayHeaderFooter:!1}:{displayHeaderFooter:!0,headerTemplate:"<div></div>",footerTemplate:`<div style="font-family:${e.fontFamily};font-size:10.5pt;line-height:12pt;width:100%;text-align:center;color:#666;">第 <span class="pageNumber"></span> 页 / 共 <span class="totalPages"></span> 页</div>`},h=async()=>Buffer.from(await c.pdf({format:e.paper,printBackground:!0,preferCSSPageSize:!0,outline:!0,tagged:!0,margin:{top:e.marginTop,right:e.marginRight,bottom:e.marginBottom,left:e.marginLeft},...g})),i=await h();for(let a=0;a<3;a+=1){let a=await J(i);if(!a)throw Error("PDF实际页树/章节书签无法读取,不能编造目录页码");if(!await c.evaluate(a=>{let b=!1;for(let c of document.querySelectorAll("[data-toc-title]")){let d=c.dataset.tocTitle,e=void 0===a[d]?"":String(a[d]);c.textContent!==e&&(c.textContent=e,b=!0)}return b},a))return i;i=await h()}throw Error("PDF目录页码实际排版校验未收敛")}finally{await f.close()}}catch(a){g.push(`${c.label}: ${a instanceof Error?a.message:String(a)}`)}throw Error(g.join("\n"))}function a$(a,b,c,d,e=[],f,g,h,i){if(a)try{let j=a.draft,k=j?.reviewMetadata?.diagnostics?.quality,l=a.completedAt?Math.max(0,a.completedAt-a.createdAt):Math.max(0,Date.now()-a.createdAt),n=(a.draft?.exportGate?.manualReviewIssues||[]).map(a=>({...a,level:a.level??"warning"})),o=[...e,...n],p=o.length>0?(0,O.aF)(o,j?.chapters):void 0,q={format:b,exportPurpose:h,reviewReport:i,exportedAt:Date.now(),durationMs:l,ruleSummary:(j?.promptRules?.executionSummary||[]).slice(0,12),repairedCount:k?.repairedCount,blockingCount:k?.blockingCount,gatePassed:j?.exportGate?.passed===!0&&0===e.length&&(d?.blockerCount??0)===0,...a.runId&&j?.reviewMetadata?.contractQuality?{sourceIdentity:{runId:a.runId,documentHash:j.reviewMetadata.contractQuality.documentHash,contractId:j.reviewMetadata.contractQuality.contractId,buildId:(0,w.S)()?.sourceFingerprint}}:{},...g?{artifact:{sha256:(0,m.createHash)("sha256").update(g.content).digest("hex"),bytes:Buffer.byteLength(g.content)},renderDurationMs:Math.max(0,Date.now()-g.startedAt)}:{},healthAlerts:j?.reviewMetadata?.telemetry?.healthAlerts,repairHeat:j?.reviewMetadata?.telemetry?.repairHeat,...d?{renderAudit:d}:{},...p?{gateIssueCount:e.length,gateChecklist:p}:{},...f?{realPages:f}:{}};a.runId&&(0,s.tv)((0,D.Gl)(c),`export-receipt-${(0,m.createHash)("sha256").update(JSON.stringify(q)).digest("hex")}.json`,q,a.runId);let r=(0,D.getGeneratedDocument)(a.id,c),t=[...r?.exportReports||a.exportReports||[],q].slice(-20);(0,D.a6)(a.id,{exportReports:t},c)}catch(a){console.warn(`[export] 渲染审计报告归档失败(不影响本次导出,但该次导出不会进历史对照):${a instanceof Error?a.message:String(a)}`)}}async function a_(a,b){let c,d=Date.now();if("POST"!==a.method&&"GET"!==a.method)return b.status(405).json({error:"Method not allowed"});if("GET"===a.method&&("string"!=typeof a.query?.reviewReportId||Object.values(a.query).some(a=>"string"!=typeof a)))return b.status(400).json({error:"REVIEW_REPORT_REQUEST_REQUIRED"});let e="GET"===a.method?a.query:a.body;if(!e||"object"!=typeof e||Array.isArray(e))return b.status(400).json({error:"INVALID_EXPORT_REQUEST"});let f=new Set(["documentId","title","markdown","format","exportPurpose","reviewReportId","reviewRunId","useClientMarkdown","exportGate","wordTemplatePath","projectRoot"]);if(Object.keys(e).some(a=>!f.has(a)))return b.status(400).json({error:"INVALID_EXPORT_OPTION",message:"存在不受支持的导出参数,请使用明确的 exportPurpose。"});if(void 0!==e.exportPurpose&&"review"!==e.exportPurpose&&"delivery"!==e.exportPurpose)return b.status(400).json({error:"INVALID_EXPORT_PURPOSE"});let g=e.exportPurpose??"review",h=e.projectRoot||(0,L.aY)(),i=e.documentId?(0,D.getGeneratedDocument)(e.documentId,h):null;if(e.documentId&&(!i||i.id!==e.documentId))return b.status(404).json({error:"Document not found"});if(e.reviewReportId){if(!/^[a-f0-9]{64}$/u.test(e.reviewReportId))return b.status(400).json({error:"INVALID_REVIEW_REPORT_ID"});let a=function(a,b,c){if(!/^[a-f0-9]{64}$/u.test(b))throw Error("INVALID_REVIEW_REPORT_ID");let d=(0,s.HM)(a,`review-export-${b}.json`,c);if(!j().existsSync(d))return;let e=j().readFileSync(d);if(Q(e)!==b)throw Error("REVIEW_REPORT_IDENTITY_MISMATCH");let f=JSON.parse(e.toString("utf8"));if(f.runId!==(c??null))throw Error("REVIEW_REPORT_RUN_MISMATCH");return f}((0,D.Gl)(h),e.reviewReportId,e.reviewRunId);return a&&a.documentId===(i?.id??null)?(b.setHeader("Content-Type","application/json; charset=utf-8"),b.setHeader("Content-Disposition",`attachment; filename*=UTF-8''${encodeURIComponent(`${aa(a.title)}_审阅问题报告_${a.body.sha256.slice(0,12)}.json`)}`),b.status(200).send(JSON.stringify(a))):b.status(404).json({error:"REVIEW_REPORT_NOT_FOUND"})}let k=i?.draft?.bidComposition,p=e.title||i?.title||"document",u=(0,N.b2)(k?.formatRules),v=function(a,b){if(void 0!==b)return b;if(a?.editedMarkdown!==void 0)return a.editedMarkdown;let c=a?.markdown||a?.draft?.markdown;return c?.trim()?c:(a?.checkpointChapters??[]).filter(a=>(0,t.a1)(a.content??"")).map(a=>a.content).join("\n\n")}(i,e.useClientMarkdown&&"string"==typeof e.markdown?e.markdown:i?void 0:e.markdown),y=v;if("review"!==g||e.useClientMarkdown||i?.editedMarkdown||(v=function(a,b,c,d){if(!a?.runId||!a.id||!d.includes("```mermaid"))return d;let e=l().dirname((0,s.HM)(b,"document-model-author.json",a.runId));if(!j().existsSync(e))return d;let f=j().readdirSync(e).filter(a=>/^document-model-checkpoint-\d+\.json$/u.test(a)).sort().at(-1);if(!f)return d;let g=JSON.parse(j().readFileSync(l().join(e,f),"utf8"));if(!g||"object"!=typeof g||!g.tasks||"object"!=typeof g.tasks)throw Error("当前审阅结构化稿无法读取,不能把图源假装渲染成功");let h=(0,q.rZ)({generatedDir:b,projectRoot:c,documentId:a.id}),i=d;for(let a of Object.values(g.tasks))for(let b of a.current?.output?.units??[]){if("figure"!==b.kind)continue;let a={...b,heading:void 0},c=(0,r.renderAuthorUnit)(a),d=c.indexOf("```mermaid");if(d<0)continue;let e=c.slice(d);if(!i.includes(e))continue;let f=h.renderer(a),g=("string"==typeof f?[f]:f).map((b,c)=>`![${a.caption.replaceAll("[","").replaceAll("]","")}${c?"(续)":""}](${b})`).join("\n\n");i=i.replace(e,g)}let k=h.receipts();if(k.length){let c=(0,m.createHash)("sha256").update(d).digest("hex"),e=(0,m.createHash)("sha256").update(i).digest("hex"),g=(0,m.createHash)("sha256").update(JSON.stringify([c,e,f])).digest("hex");(0,s.tv)(b,`review-figure-assets-${g}.json`,{runId:a.runId,documentId:a.id,modelFile:f,sourceHash:c,renderedHash:e,renderedFromExistingUnitsOnly:!0,receipts:k},a.runId)}return i}(i,(0,D.Gl)(h),h,v)),!(0,t.a1)(v))return b.status(422).json({error:"EMPTY_EXPORT_BODY",message:"当前没有已写入的正文,不能生成空白审阅文件。"});let z=i?.reviewMetadata?.contractQuality??i?.draft?.reviewMetadata?.contractQuality,A=i?.draft?.markdown||i?.markdown||"",B=aX(v,A===y?v:A),{markdown:C,audit:E}=B,F=e.format;if(!F||!["markdown","html","pdf","docx"].includes(F))return b.status(400).json({error:"INVALID_EXPORT_FORMAT",message:"请选择有效的导出格式。"});B.issues.length>0&&b.setHeader(Z.contentIssues,encodeURIComponent(JSON.stringify(B.issues.slice(0,20))));let G=_(E);G&&b.setHeader(Z.renderAudit,encodeURIComponent(JSON.stringify(G)));let H=i?.draft?.exportGate||e.exportGate,J=(H?.blockingIssues||[]).map(a=>({level:"error",...a})),O=H?.passed===!1&&0===J.length?[{level:"error",message:"导出门禁未通过:存在未完成的检查项"}]:[],U=[...J,...O],W=[i?.draft?.exportGate?.deliveryFingerprint,i?.draft?.exportGate?.textFingerprint].find(a=>"string"==typeof a&&a.length>0),X=(0,M.c6)(v),Y=W?W===X?"matched":"mismatch":"absent";"matched"!==Y&&b.setHeader(Z.gateBinding,Y);let $="mismatch"===Y?[{level:"error",severity:"blocker",message:"将交付的正文与门禁判定时的正文**不是同一份**(收口后被编辑/替换):放行依据对不上这份文本,本份正文尚未取得交付资格。",suggestion:"若改动是有意的:重新生成或重跑校验后再导出;若只是留档:请用审阅导出。"}]:[],ab=z&&(z.documentHash!==(0,x.Sl)(i?.draft?.chapters??[],v)||!(0,x.R3)(z))?[{level:"error",severity:"blocker",message:z.documentHash!==(0,x.Sl)(i?.draft?.chapters??[],v)?"正文已经变更,冻结合同的七维评价回执属于旧版本,须重新评价后交付。":"当前协议的七维职责核验及专业档位尚未达标,历史回执和客户端门禁声明不能替代。"}]:[],ac=i&&i.draft?.exportGate?.passed===!0&&"absent"!==Y||U.length||$.length||ab.length?[]:[{level:"error",severity:"blocker",message:"未取得服务端对本份正文的已通过评价及绑定回执;本次仅可作审阅导出,客户端声明不能替代评价。"}],ad=[...U,...$,...ab,...z?(0,x.ie)(z):[],...ac,...(function(a,b,c){if(!a?.runId)return["交付导出缺少当前生成运行身份"];let d=S(b,a.runId,"run-inputs.json").data,e=S(b,a.runId,"document-contract.json").data,f=S(b,a.runId,"project-model.json").data,g=S(b,a.runId,"contract-quality.json").data,h=S(b,a.runId,"tender-requirements.json").data,i=S(b,a.runId,"tender-source-coverage-review.json").data,j=S(b,a.runId,"professional-outline-plan.json").data,k=a.reviewMetadata?.contractQuality??a.draft?.reviewMetadata?.contractQuality,l=(0,x.Sl)(a.draft?.chapters??[],c),m=[];if(k&&k.documentHash===l&&(0,x.R3)(k)&&g&&JSON.stringify(g)===JSON.stringify(k)||m.push("缺少本份正文的当前实际冻结合同七维评价回执"),e&&f&&k&&k.contractId===e.id&&k.projectSnapshotId===f.snapshotId||m.push("评价回执与冻结合同、项目来源身份未绑定"),e){e.version!==P.GM&&m.push("冻结合同属于历史协议,须按当前写作及评价协议重新生成");let{id:a,...b}=e;a!==Q(JSON.stringify(b))&&m.push("冻结合同原始内容与身份不一致")}if(f){let{snapshotId:a,...b}=f;a!==Q(JSON.stringify(b))&&m.push("项目来源快照原始内容与身份不一致")}d&&d.runId===a.runId&&d.documentId===a.id&&Array.isArray(d.sources)&&d.sources.length||m.push("缺少本次运行的完整来源输入绑定");let n=a.draft?.exportGate?.checklist?.filter(a=>"tender-source-completeness"===a.key),o=R(h?.sourceLibrary),p=Array.isArray(o?.units)?o.units:void 0,q=Array.isArray(i?.batches)?i.batches.map(R):void 0,r=q?.flatMap(a=>Array.isArray(a?.requestedIndices)?a.requestedIndices:[]),s=q?.flatMap(a=>Array.isArray(a?.responseIndices)?a.responseIndices:[]),t=p?.map(a=>R(a)?.index),u=(a,b)=>!!(a&&b&&a.every(a=>Number.isSafeInteger(a)&&Number(a)>=0)&&new Set(a).size===a.length&&a.length===b.length&&a.every(a=>b.includes(a)));return!(!n||1!==n.length||!0!==n[0].passed||!i||"tender-source-coverage-review-v6-source-duty-routes"!==i.version||"measured"!==i.status||j?.version!=="professional-outline-plan-v7-source-duty-channels"||!Array.isArray(j.requirementAssignments)||i.candidateRoutesHash!==Q(JSON.stringify(j.requirementAssignments))||i.documentHash!==l||!o||i.sourceHash!==Q(JSON.stringify(o))||!Array.isArray(i.omissions)||!Array.isArray(i.bodyFindings)||i.bodyFindings.length!==i.omissions.length||i.bodyFindings.some((a,b)=>{let d=R(a);return!d||d.omissionIndex!==b||"covered"!==d.status||"string"!=typeof d.reason||!d.reason.trim()||!Array.isArray(d.quotes)||!d.quotes.length||d.quotes.some(a=>"string"!=typeof a||!a.trim()||!c.includes(a))})||!q?.length||q.some(a=>!Array.isArray(a?.errors)||a.errors.length||!u(Array.isArray(a.responseIndices)?a.responseIndices:void 0,Array.isArray(a.requestedIndices)?a.requestedIndices:void 0)))&&t?.length&&u(r,t)&&u(s,t)||m.push("完整来源技术义务漏项审阅未通过或回执与本份正文、原来源不一致"),m})(i,(0,D.Gl)(h),v).map(a=>({level:"error",severity:"blocker",message:a}))],ae=0===ad.length&&0===E.blockers.length,af=(a,d,e)=>{let f=function(a){let{record:b}=a,c=S(a.generatedDir,b?.runId,"run-inputs.json"),d=S(a.generatedDir,b?.runId,"document-contract.json").data,e=S(a.generatedDir,b?.runId,"document-model-final.json"),f=e.data?e:S(a.generatedDir,b?.runId,"document-model-author.json"),g=f.data,h=Array.isArray(c.data?.sources)?c.data.sources:void 0,i=T(d?.chapters??b?.draft?.chapters),j=(b?.draft?.chapters??b?.checkpointChapters??[]).filter(a=>(0,t.a1)(a.content??"")),k=T(j).filter(b=>j.some(c=>c.id===b.id&&a.markdown.includes(c.content))),l=i.length>0&&k.length===j.length,m=b?.reviewMetadata?.contractQuality??b?.draft?.reviewMetadata?.contractQuality,n=S(a.generatedDir,b?.runId,"tender-source-coverage-review.json"),o=R(c.data?.buildIdentity),p=!!(h&&c.sha256&&c.data?.runId===b?.runId&&c.data?.documentId===b?.id);return{version:1,purpose:a.purpose,capturedAt:Date.now(),documentId:b?.id??null,runId:b?.runId??null,title:a.title,format:a.format??"unmeasured",body:{sha256:Q(a.markdown),bytes:Buffer.byteLength(a.markdown),chars:a.markdown.length},identity:{exportBuildId:a.buildId??null,generationBuildId:"string"==typeof o?.sourceFingerprint?o.sourceFingerprint:null,runInputsSha256:c.sha256??null,sourceSnapshotSha256:h?Q(JSON.stringify(h)):null,sourceCount:h?.length??null,status:p?"bound":"unmeasured"},generation:{status:b?.status??"editor",error:b?.error??null,warnings:b?.warningIssues??[]},chapters:{status:l?"measured":"unmeasured",expected:i,written:k,missing:l?i.filter(a=>!k.some(b=>b.id===a.id)):[],...!l?{reason:"缺少完整章计划,或编辑后正文无法与原章节快照逐字对位;不把无法对位冒充已证缺章"}:{}},acceptance:{passed:a.acceptancePassed,issues:[...a.issues]},sourceCompleteness:{checklist:b?.draft?.exportGate?.checklist?.find(a=>"tender-source-completeness"===a.key)??null,receipt:n.data??null,receiptSha256:n.sha256??null},quality:{status:m?m.documentHash===(0,x.Sl)(b?.draft?.chapters??[],a.markdown)?"current":"historical":"unmeasured",receipt:m??null},rework:{status:g?"recorded":"unmeasured",modelSha256:f.sha256??null,authorPassSealed:"boolean"==typeof g?.authorPassSealed?g.authorPassSealed:null,c0ReferenceChars:"number"==typeof g?.c0ReferenceChars?g.c0ReferenceChars:null,ledger:g?.rework??null,revisionCount:Array.isArray(g?.revisions)?g.revisions.length:null,userRevisionCount:b?.revisionLog?.length??0},render:a.render??{status:"pending"}}}({record:i,generatedDir:(0,D.Gl)(h),markdown:v,title:p,purpose:g,format:F,buildId:(0,w.S)()?.sourceFingerprint,acceptancePassed:ae&&0===ad.length&&0===E.blockers.length,issues:[...ad.map(a=>a.message),...B.issues],render:{status:a,...d?{error:d}:{},audit:_(E),...void 0!==e?{artifact:{sha256:(0,m.createHash)("sha256").update(e).digest("hex"),bytes:Buffer.byteLength(e)}}:{}}});c={...function(a,b){let c=Q(JSON.stringify(b)),d=(0,s.tv)(a,`review-export-${c}.json`,b,b.runId??void 0);return{id:c,sha256:d.sha256,bodySha256:b.body.sha256}}((0,D.Gl)(h),f),...i?.runId?{runId:i.runId}:{}},b.setHeader(Z.issuesReport,encodeURIComponent(JSON.stringify(c))),b.setHeader(Z.bodySha256,f.body.sha256),b.setHeader(Z.exportPurpose,g),b.setHeader(Z.gatePassed,f.acceptance.passed?"true":"false")};if(af("pending"),"delivery"===g&&E.blockers.length>0)return af("failed",E.blockers.map(a=>a.message).join(";")),b.status(422).json({error:"EXPORT_SOURCE_STRUCTURAL_DEFECT",message:`导出源存在结构性缺陷,已按纯渲染模式阻断(不再补造表头):${E.blockers.slice(0,3).map(a=>a.message).join(";")}`,issues:E.blockers.slice(0,20)});if(!ae&&"delivery"===g)return af("failed","当前正文尚未通过交付验收"),b.status(422).json({error:"EXPORT_GATE_BLOCKED",message:`导出门禁未通过(${ad.length} 项阻断),文档未达交付标准,已阻止导出。请先使用审阅导出供专业人员核对,交付导出须通过本份正文的验收。`,issues:ad.slice(0,20)});b.setHeader(Z.gatePassed,ae?"true":"false"),b.setHeader(Z.notDeliverable,"review"===g?"true":"false"),ae||(b.setHeader(Z.gateIssues,encodeURIComponent(JSON.stringify(ad.map(a=>a.message).slice(0,20)))),b.setHeader(Z.gateIssueCount,String(ad.length)));let ag="review"===g?function(a){let b=a.lastIndexOf("."),c=b>0?a.slice(0,b):a;return c.endsWith("_审阅稿")?a:b>0?`${c}_审阅稿${a.slice(b)}`:`${a}_审阅稿`}(aa(p)):aa(p),ah=a=>{let c=function(a,b,c="enforce"){let d=b?.pageMin,e=b?.pageLimit;if("informational"===c)return{status:"informational",passed:!0,reason:"本轮按专业内容验收,真实页数仅供后续人工排版参考",pages:a??null,min:d??null,max:e??null};if(void 0===d&&void 0===e)return{status:"not-applicable",passed:!0,reason:"本轮没有页数上下限义务",pages:a??null,min:null,max:null};if(void 0!==d&&(!Number.isInteger(d)||d<=0)||void 0!==e&&(!Number.isInteger(e)||e<=0)||void 0!==d&&void 0!==e&&d>e)return{status:"unmeasured",passed:!1,reason:"冻结的页数义务不完整或上下限冲突,须回到合同编译处理",pages:a??null,min:d??null,max:e??null};if(void 0===a||!Number.isInteger(a)||a<=0)return{status:"unmeasured",passed:!1,reason:"实际渲染页数未完成测量,不能以字数或估算页数代替",pages:null,min:d??null,max:e??null};let f=(void 0===d||a>=d)&&(void 0===e||a<=e);return{status:f?"met":"not-met",passed:f,reason:f?`实际${a}页满足页数义务`:`实际${a}页未满足${void 0===d?"":`不少于${d}页`}${void 0!==d&&void 0!==e?"、":""}${void 0===e?"":`不超过${e}页`}`,pages:a,min:d??null,max:e??null}}(a,k?.formatRules,"informational"),d=k?.formatRules.pageLimit;if(d&&a&&a>d){let e=k?.formatRules.pageEvidence?.filter(a=>"max"===a.kind&&a.value===d),f=e?.length&&e.every(a=>"recommendation"===a.status)?"来源篇幅建议":"尚未核定适用范围的篇幅候选";b.setHeader(Z.pageLimit,encodeURIComponent(`${f}:当前${a}页,参考${d}页;${c.reason}`))}};try{if("markdown"===F){let a=an(C,h,E),e=_(E);return e&&b.setHeader(Z.renderAudit,encodeURIComponent(JSON.stringify(e))),b.setHeader(Z.figureInline,encodeURIComponent(JSON.stringify({inlined:a.report.inlined,failed:a.report.failed.map(a=>`${a.name}:${a.reason}`).slice(0,20)}))),af("succeeded",void 0,a.markdown),a$(i,F,h,e||G,ad,void 0,{content:a.markdown,startedAt:d},g,c),b.setHeader("Content-Type","text/markdown; charset=utf-8"),b.setHeader("Content-Disposition",`attachment; filename*=UTF-8''${encodeURIComponent(`${ag}.md`)}`),b.status(200).send(a.markdown)}if("docx"===F){let a=E.blockers.length,f=await aI(p,C,u,"review"===g?void 0:e.wordTemplatePath,h,E,k?.formatRules,"review"===g),j=f.buffer;if(f.imageReceipt.embedded!==f.imageReceipt.expected||f.imageReceipt.layoutIssues?.length){let a=f.imageReceipt.layoutIssues?.join(";")??`DOCX图件未完整进包:应有${f.imageReceipt.expected}处,实际${f.imageReceipt.embedded}处;不能以文字占位代替图件交付`;if(ad.push({level:"error",severity:"blocker",message:a}),"delivery"===g)return af("failed",a),b.status(422).json({error:"EXPORT_FIGURE_NOT_CONSERVED",message:a});b.setHeader(Z.gatePassed,"false"),b.setHeader(Z.notDeliverable,"true"),b.setHeader(Z.gateIssues,encodeURIComponent(JSON.stringify(ad.map(a=>a.message).slice(0,20)))),b.setHeader(Z.gateIssueCount,String(ad.length))}f.templateWarning&&(b.setHeader(Z.templateWarning,encodeURIComponent(f.templateWarning)),console.error(`[export] ${f.templateWarning}`));let l=_(E);if(l&&b.setHeader(Z.renderAudit,encodeURIComponent(JSON.stringify(l))),"delivery"===g&&E.blockers.length>a){let c=E.blockers.slice(a);return af("failed",c.map(a=>a.message).join(";")),b.status(422).json({error:"EXPORT_RENDER_NOT_PURE",message:`docx 渲染阶段存在未声明的正文改动,已按纯渲染模式阻断:${c.slice(0,3).map(a=>a.message).join(";")}`,issues:c.slice(0,20)})}let m=await K(j).catch(a=>({unavailableReason:`渲染器异常:${a instanceof Error?a.message.split("\n")[0]:String(a)}`})),n=void 0!==m.pages&&null!==m.pages?{pages:m.pages,renderer:m.renderer||"unknown"}:{unavailableReason:m.unavailableReason||"未知原因"};return ah(m.pages),af("succeeded",void 0,j),a$(i,F,h,l||G,ad,n,{content:j,startedAt:d},g,c),b.setHeader("Content-Type","application/vnd.openxmlformats-officedocument.wordprocessingml.document"),b.setHeader("Content-Disposition",`attachment; filename*=UTF-8''${encodeURIComponent(`${ag}.docx`)}`),b.status(200).send(j)}let f=await aY(p,C,u,h,k?.formatRules.monoColor===!0,E);"review"===g&&(f=function(a){let b=j().readFileSync(o()).toString("base64"),c=`<style>@font-face{font-family:"${n}";src:url(data:font/otf;base64,${b}) format("opentype");font-weight:400;font-style:normal;}body,body *{font-family:"${n}",sans-serif!important;}</style>`;if(!a.includes("</head>"))throw Error("审阅HTML缺少文档头,无法可靠嵌入中文字体");return a.replace("</head>",`${c}</head>`)}(f),E.notices.push({code:"review-font-fallback",message:"审阅HTML/PDF嵌入Noto Sans CJK SC,保证跨环境中文可读;字体替代未认定为指定投标字体达标"}));let l=_(E);if(l&&b.setHeader(Z.renderAudit,encodeURIComponent(JSON.stringify(l))),"html"===F)return af("succeeded",void 0,f),a$(i,F,h,l||G,ad,void 0,{content:f,startedAt:d},g,c),b.setHeader("Content-Type","text/html; charset=utf-8"),b.setHeader("Content-Disposition",`attachment; filename*=UTF-8''${encodeURIComponent(`${ag}.html`)}`),b.status(200).send(f);try{let a=await aZ(f,u,k?.formatRules),e=await I(a);return ah(e),af("succeeded",void 0,a),a$(i,F,h,l||G,ad,e?{pages:e,renderer:"chromium-pdf-page-tree"}:{unavailableReason:"PDF页树解析失败,实际页数未完成验收"},{content:a,startedAt:d},g,c),b.setHeader("Content-Type","application/pdf"),e&&b.setHeader(Z.pdfPageCount,String(e)),b.setHeader("Content-Disposition",`attachment; filename*=UTF-8''${encodeURIComponent(`${ag}.pdf`)}`),b.status(200).send(a)}catch(c){return af("failed",c instanceof Error?c.message:String(c)),(0,V.wF)({level:"error",source:"api/documents/export",functionName:"pdfExportChromium",error:c,req:a,meta:{fallback:"system-browser-attempted"}}),b.status(500).json({error:"PDF_RENDER_FAILED",message:"PDF 渲染失败:未找到或无法启动可用的 Chrome/Chromium/Edge。请安装 Chrome,或设置 PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH 后重试。"})}}catch(a){return af("failed",a instanceof Error?a.message:String(a)),b.status(500).json({error:"EXPORT_RENDER_FAILED",message:"渲染失败,独立审阅报告已保留。"})}}let a0={inlineLocalImages:ah,inlineMarkdownFigures:an,createInlineImageResolver:ag,resolveLocalImagePath:af,rasterizeMarkdownSvgFigures:aA,buildDocxInternal:aK,createExportRenderAudit:$,exportRenderAuditReport:_,canonicalExportText:aS,exportConservationDiff:function(a,b){return aT(aS(a),aS(b))},diffCanonicalText:aT,docxVisibleText:aU,canonicalDocxText:aV,docxStageConservationDiff:aW,prepareExportMarkdown:aX,stripInlineMarkdown:ar,enhanceTocHtml:aN,buildExportHtml:aY,renderPdfBuffer:aZ,resolveExportStyle:aw,buildDocx:aI,markdownToDocxXml:aG,validateExportMarkdown:aR,isTableCaptionLine:aC,DOCX_TOC_FIELD_PLACEHOLDER:aD},a1=(0,W.j)("api/documents/export",a_);var a2=c(68970),a3=c(50296);let a4=(0,h.M)(d,"default"),a5=(0,h.M)(d,"config"),a6=new g.PagesAPIRouteModule({definition:{kind:f.A.PAGES_API,page:"/api/documents/export",pathname:"/api/documents/export",bundlePath:"",filename:""},userland:d,distDir:".next",relativeProjectDir:""});async function a7(a,b,c){let d=await a6.prepare(a,b,{srcPage:"/api/documents/export"});if(!d){b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve());return}let{query:f,params:g,prerenderManifest:h,routerServerContext:i}=d;try{let c=a.method||"GET",d=(0,a2.getTracer)(),e=d.getActiveScopeSpan(),j=a6.instrumentationOnRequestError.bind(a6),k=async e=>a6.render(a,b,{query:{...f,...g},params:g,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:h.preview,propagateError:!1,dev:a6.isDev,page:"/api/documents/export",internalRevalidate:null==i?void 0:i.revalidate,onError:(...b)=>j(a,...b)}).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let f=d.getRootSpanAttributes();if(!f)return;if(f.get("next.span_type")!==a3.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${f.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let g=f.get("next.route");if(g){let a=`${c} ${g}`;e.setAttributes({"next.route":g,"http.route":g,"next.span_name":a}),e.updateName(a)}else e.updateName(`${c} ${a.url}`)});e?await k(e):await d.withPropagatedContext(a.headers,()=>d.trace(a3.BaseServerSpan.handleRequest,{spanName:`${c} ${a.url}`,kind:a2.SpanKind.SERVER,attributes:{"http.method":c,"http.target":a.url}},k))}catch(a){if(a6.isDev)throw a;(0,e.sendError)(b,500,"Internal Server Error")}finally{null==c.waitUntil||c.waitUntil.call(c,Promise.resolve())}}},28183:a=>{a.exports=require("@napi-rs/canvas")},29021:a=>{a.exports=require("fs")},31421:a=>{a.exports=require("node:child_process")},33873:a=>{a.exports=require("path")},48161:a=>{a.exports=require("node:os")},55511:a=>{a.exports=require("crypto")},57975:a=>{a.exports=require("node:util")},73024:a=>{a.exports=require("node:fs")},75600:a=>{a.exports=require("next/dist/compiled/next-server/pages-api.runtime.prod.js")},76760:a=>{a.exports=require("node:path")},77598:a=>{a.exports=require("node:crypto")},83142:a=>{a.exports=import("marked")},83237:a=>{a.exports=import("playwright")},85497:(a,b,c)=>{c.d(b,{c:()=>d});async function d(a){let{Marked:b}=await Promise.resolve().then(c.bind(c,83142));return new b({async:!1,gfm:!0,breaks:!0,...a?{renderer:a}:{},tokenizer:{del(a){if(a.startsWith("~~"))return!1}}})}},88194:a=>{a.exports=require("jszip")},95393:a=>{a.exports=require("@customize-agent/llm")},96770:a=>{a.exports=require("@customize-agent/runtime")},97864:a=>{a.exports=import("pdfjs-dist/legacy/build/pdf.worker.mjs")}};var b=require("../../../webpack-api-runtime.js");b.C(a);var c=b.X(0,[9705,5746,5304,3806,2434,1243,1001,9666],()=>b(b.s=26735));module.exports=c})();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";(()=>{var a={};a.id=8202,a.ids=[8202],a.modules={15751:a=>{a.exports=require("xlsx")},16698:a=>{a.exports=require("node:async_hooks")},19898:a=>{a.exports=require("@customize-agent/knowledge")},29021:a=>{a.exports=require("fs")},31421:a=>{a.exports=require("node:child_process")},33873:a=>{a.exports=require("path")},48161:a=>{a.exports=require("node:os")},55511:a=>{a.exports=require("crypto")},73024:a=>{a.exports=require("node:fs")},75600:a=>{a.exports=require("next/dist/compiled/next-server/pages-api.runtime.prod.js")},76760:a=>{a.exports=require("node:path")},77598:a=>{a.exports=require("node:crypto")},83823:(a,b,c)=>{c.r(b),c.d(b,{config:()=>r,default:()=>q,handler:()=>t});var d={};c.r(d),c.d(d,{default:()=>n});var e=c(11400),f=c(50029),g=c(71086),h=c(38513),i=c(16006),j=c(
|
|
1
|
+
"use strict";(()=>{var a={};a.id=8202,a.ids=[8202],a.modules={15751:a=>{a.exports=require("xlsx")},16698:a=>{a.exports=require("node:async_hooks")},19898:a=>{a.exports=require("@customize-agent/knowledge")},29021:a=>{a.exports=require("fs")},31421:a=>{a.exports=require("node:child_process")},33873:a=>{a.exports=require("path")},48161:a=>{a.exports=require("node:os")},55511:a=>{a.exports=require("crypto")},73024:a=>{a.exports=require("node:fs")},75600:a=>{a.exports=require("next/dist/compiled/next-server/pages-api.runtime.prod.js")},76760:a=>{a.exports=require("node:path")},77598:a=>{a.exports=require("node:crypto")},83823:(a,b,c)=>{c.r(b),c.d(b,{config:()=>r,default:()=>q,handler:()=>t});var d={};c.r(d),c.d(d,{default:()=>n});var e=c(11400),f=c(50029),g=c(71086),h=c(38513),i=c(16006),j=c(69096),k=c(60939),l=c(70610);async function m(a,b){if("POST"!==a.method)return b.status(405).json({error:"Method not allowed"});let{promptIds:c,requirement:d,title:e,projectName:f,materialRoot:g,projectRoot:h}=a.body;if(!h)return b.status(400).json({error:"projectRoot required"});try{let a=(0,k.iA)({promptIds:c??[],requirement:d,projectRoot:h,title:e,projectName:f}),i=(0,j.ZRt)(h,(0,k.TQ)(a),[...(0,l.Z0)(c??[],{projectRoot:h}).map(a=>a.content),d||""].filter(Boolean).join("\n\n"),g?{materialRoot:g}:{});if(i.ambiguous||!i.locked||0===i.selectedFiles.length)return b.status(422).json({error:`结构预览失败:资料范围未锁定:${i.reason}`,issues:[{level:"error",message:`资料范围未锁定:${i.reason}`,missing:[]}],missing:[]});return b.status(200).json({title:a.title,documentType:a.documentType,chapterCount:a.chapters.length,chapters:a.chapters.map((b,c)=>({title:b.title,sections:a.derivation.perChapter[c].sectionsFromOutline,candidateSections:a.derivation.perChapter[c].sectionsFromSkills})),derivation:a.derivation,materialScope:{root:i.selectedRoots[0],fileCount:i.selectedFiles.length,reason:i.reason}})}catch(c){let a=(0,k.MW)(c);return b.status(422).json({error:`结构预览失败:${a[0]?.message||"文档规格派生失败"}`,issues:a,missing:a[0]?.missing??[]})}}let n=(0,i.j)("api/documents/generate/preview",m);var o=c(68970),p=c(50296);let q=(0,h.M)(d,"default"),r=(0,h.M)(d,"config"),s=new g.PagesAPIRouteModule({definition:{kind:f.A.PAGES_API,page:"/api/documents/generate/preview",pathname:"/api/documents/generate/preview",bundlePath:"",filename:""},userland:d,distDir:".next",relativeProjectDir:""});async function t(a,b,c){let d=await s.prepare(a,b,{srcPage:"/api/documents/generate/preview"});if(!d){b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve());return}let{query:f,params:g,prerenderManifest:h,routerServerContext:i}=d;try{let c=a.method||"GET",d=(0,o.getTracer)(),e=d.getActiveScopeSpan(),j=s.instrumentationOnRequestError.bind(s),k=async e=>s.render(a,b,{query:{...f,...g},params:g,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:h.preview,propagateError:!1,dev:s.isDev,page:"/api/documents/generate/preview",internalRevalidate:null==i?void 0:i.revalidate,onError:(...b)=>j(a,...b)}).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let f=d.getRootSpanAttributes();if(!f)return;if(f.get("next.span_type")!==p.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${f.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let g=f.get("next.route");if(g){let a=`${c} ${g}`;e.setAttributes({"next.route":g,"http.route":g,"next.span_name":a}),e.updateName(a)}else e.updateName(`${c} ${a.url}`)});e?await k(e):await d.withPropagatedContext(a.headers,()=>d.trace(p.BaseServerSpan.handleRequest,{spanName:`${c} ${a.url}`,kind:o.SpanKind.SERVER,attributes:{"http.method":c,"http.target":a.url}},k))}catch(a){if(s.isDev)throw a;(0,e.sendError)(b,500,"Internal Server Error")}finally{null==c.waitUntil||c.waitUntil.call(c,Promise.resolve())}}},95393:a=>{a.exports=require("@customize-agent/llm")},96770:a=>{a.exports=require("@customize-agent/runtime")}};var b=require("../../../../webpack-api-runtime.js");b.C(a);var c=b.X(0,[9705,5746,5304,3806,2434,1243,1001,9666],()=>b(b.s=83823));module.exports=c})();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";(()=>{var a={};a.id=6011,a.ids=[6011],a.modules={13684:(a,b,c)=>{c.r(b),c.d(b,{config:()=>v,default:()=>u,handler:()=>x});var d={};c.r(d),c.d(d,{default:()=>r});var e=c(11400),f=c(50029),g=c(71086),h=c(38513),i=c(70949),j=c(16006),k=c(
|
|
1
|
+
"use strict";(()=>{var a={};a.id=6011,a.ids=[6011],a.modules={13684:(a,b,c)=>{c.r(b),c.d(b,{config:()=>v,default:()=>u,handler:()=>x});var d={};c.r(d),c.d(d,{default:()=>r});var e=c(11400),f=c(50029),g=c(71086),h=c(38513),i=c(70949),j=c(16006),k=c(69096),l=c(76760),m=c(45462),n=c(60939),o=c(70610),p=c(46026);async function q(a,b){if("POST"!==a.method)return b.status(405).json({error:"Method not allowed"});let{promptIds:c,requirement:d,title:e,projectName:f,materialRoot:g,maxEvidencePerChapter:h,projectRoot:j,resumeDocumentId:q}=a.body;if(!j)return b.status(400).json({error:"projectRoot required"});let r=f??(q?(0,i.getGeneratedDocument)(q,j)?.projectName:void 0),s=function(a){try{return{spec:(0,n.iA)(a),promptTexts:(0,o.Z0)(a.promptIds,{projectRoot:a.projectRoot}).map(a=>a.content)}}catch(a){return{issues:(0,n.MW)(a)}}}({promptIds:c??[],requirement:d,projectRoot:j,title:e,projectName:r});if("issues"in s){let a=s.issues??(0,n.MW)(Error("文档规格派生失败"));return b.status(422).json({error:`生成前检查未通过:${a[0]?.message||"文档规格派生失败"}`,issues:a,missing:a[0]?.missing??[]})}let{spec:t,promptTexts:u}=s,v=function(a,b,c,d,e){let f=[...c,d||""].filter(Boolean).join("\n\n");return(0,k.ZRt)(a,(0,n.TQ)(b),f,e?{materialRoot:e}:{})}(j,t,u,d,g);if(v.ambiguous||!v.locked||0===v.selectedFiles.length)return b.status(422).json({error:`生成前检查未通过:资料范围未锁定:${v.reason}`,issues:[{level:"error",message:`资料范围未锁定:${v.reason}`,missing:[]}]});let w=[...function(a){if(0===a.length)return[];let b=[],c=new Map,d=new Map;for(let b of a){let{kind:a}=(0,m.O)(b);c.set(a,(c.get(a)??0)+1);let e=d.get(a)??[];e.length<3&&e.push(l.basename(b)),d.set(a,e)}let e=a=>{let b=c.get(a)??0;return b>0?`${b} 份(${(d.get(a)??[]).join("、")}${b>3?" 等":""})`:"**缺失**"},f=`招标 ${e("tender_document")}|清单 ${e("bill_of_quantities")}|图纸 ${e("drawing")}|补疑 ${e("addendum")}`;for(let a of[{kind:"tender_document",label:"招标文件",hint:"缺招标文件则编制规格、评审要求与响应锚点无从提取,要求实体响应(权重 0.30)无判定对象"},{kind:"bill_of_quantities",label:"工程量清单",hint:"缺清单则工程量/规格/资源计划类权威值全部不可推导,蓝图不可用"},{kind:"drawing",label:"图纸/设计资料",hint:"缺图纸则施工方法、专业接口与构造做法无依据,针对性章无法成稿"}].filter(a=>(c.get(a.kind)??0)===0))b.push({level:"error",message:`资料不齐备:未识别到${a.label}。${a.hint}。请补充后重新索引再生成。(当前资料构成:${f})`});return(c.get("addendum")??0)===0&&b.push({level:"warning",message:`未识别到补疑/答疑澄清资料(若本项目确无答疑可忽略)。当前资料构成:${f}`}),b}(v.selectedFiles),...(0,p.$)(j,v.selectedFiles)],x=w.filter(a=>"error"===a.level);if(x.length>0)return b.status(422).json({error:`生成前检查未通过:${x[0].message}`,issues:[...x,...w.filter(a=>"warning"===a.level)]});let y=(0,i.YL)({promptIds:c??[],requirement:d,title:t.title,projectName:r,materialRoot:v.selectedRoots[0],maxEvidencePerChapter:h,resumeDocumentId:q},j);b.status(202).json({...y,documentSpec:{id:t.id,title:t.title,documentType:t.documentType,chapterCount:t.chapters.length},derivation:t.derivation,materialScope:{root:v.selectedRoots[0],fileCount:v.selectedFiles.length,reason:v.reason},warnings:w})}let r=(0,j.j)("api/documents/generate",q);var s=c(68970),t=c(50296);let u=(0,h.M)(d,"default"),v=(0,h.M)(d,"config"),w=new g.PagesAPIRouteModule({definition:{kind:f.A.PAGES_API,page:"/api/documents/generate",pathname:"/api/documents/generate",bundlePath:"",filename:""},userland:d,distDir:".next",relativeProjectDir:""});async function x(a,b,c){let d=await w.prepare(a,b,{srcPage:"/api/documents/generate"});if(!d){b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve());return}let{query:f,params:g,prerenderManifest:h,routerServerContext:i}=d;try{let c=a.method||"GET",d=(0,s.getTracer)(),e=d.getActiveScopeSpan(),j=w.instrumentationOnRequestError.bind(w),k=async e=>w.render(a,b,{query:{...f,...g},params:g,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:h.preview,propagateError:!1,dev:w.isDev,page:"/api/documents/generate",internalRevalidate:null==i?void 0:i.revalidate,onError:(...b)=>j(a,...b)}).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let f=d.getRootSpanAttributes();if(!f)return;if(f.get("next.span_type")!==t.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${f.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let g=f.get("next.route");if(g){let a=`${c} ${g}`;e.setAttributes({"next.route":g,"http.route":g,"next.span_name":a}),e.updateName(a)}else e.updateName(`${c} ${a.url}`)});e?await k(e):await d.withPropagatedContext(a.headers,()=>d.trace(t.BaseServerSpan.handleRequest,{spanName:`${c} ${a.url}`,kind:s.SpanKind.SERVER,attributes:{"http.method":c,"http.target":a.url}},k))}catch(a){if(w.isDev)throw a;(0,e.sendError)(b,500,"Internal Server Error")}finally{null==c.waitUntil||c.waitUntil.call(c,Promise.resolve())}}},15751:a=>{a.exports=require("xlsx")},16698:a=>{a.exports=require("node:async_hooks")},19898:a=>{a.exports=require("@customize-agent/knowledge")},29021:a=>{a.exports=require("fs")},31421:a=>{a.exports=require("node:child_process")},33873:a=>{a.exports=require("path")},48161:a=>{a.exports=require("node:os")},55511:a=>{a.exports=require("crypto")},73024:a=>{a.exports=require("node:fs")},75600:a=>{a.exports=require("next/dist/compiled/next-server/pages-api.runtime.prod.js")},76760:a=>{a.exports=require("node:path")},77598:a=>{a.exports=require("node:crypto")},95393:a=>{a.exports=require("@customize-agent/llm")},96770:a=>{a.exports=require("@customize-agent/runtime")}};var b=require("../../../webpack-api-runtime.js");b.C(a);var c=b.X(0,[9705,5746,5304,3806,2434,1243,1001,9666],()=>b(b.s=13684));module.exports=c})();
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";(()=>{var a={};a.id=7396,a.ids=[7396],a.modules={15751:a=>{a.exports=require("xlsx")},16698:a=>{a.exports=require("node:async_hooks")},19898:a=>{a.exports=require("@customize-agent/knowledge")},29021:a=>{a.exports=require("fs")},31421:a=>{a.exports=require("node:child_process")},33873:a=>{a.exports=require("path")},48161:a=>{a.exports=require("node:os")},55511:a=>{a.exports=require("crypto")},73024:a=>{a.exports=require("node:fs")},75600:a=>{a.exports=require("next/dist/compiled/next-server/pages-api.runtime.prod.js")},76760:a=>{a.exports=require("node:path")},77598:a=>{a.exports=require("node:crypto")},90191:(a,b,c)=>{c.r(b),c.d(b,{config:()=>x,default:()=>w,handler:()=>z});var d={};c.r(d),c.d(d,{default:()=>t});var e=c(11400),f=c(50029),g=c(71086),h=c(38513),i=c(76760),j=c(16006),k=c(70949),l=c(22328),m=c(48479),n=c(
|
|
1
|
+
"use strict";(()=>{var a={};a.id=7396,a.ids=[7396],a.modules={15751:a=>{a.exports=require("xlsx")},16698:a=>{a.exports=require("node:async_hooks")},19898:a=>{a.exports=require("@customize-agent/knowledge")},29021:a=>{a.exports=require("fs")},31421:a=>{a.exports=require("node:child_process")},33873:a=>{a.exports=require("path")},48161:a=>{a.exports=require("node:os")},55511:a=>{a.exports=require("crypto")},73024:a=>{a.exports=require("node:fs")},75600:a=>{a.exports=require("next/dist/compiled/next-server/pages-api.runtime.prod.js")},76760:a=>{a.exports=require("node:path")},77598:a=>{a.exports=require("node:crypto")},90191:(a,b,c)=>{c.r(b),c.d(b,{config:()=>x,default:()=>w,handler:()=>z});var d={};c.r(d),c.d(d,{default:()=>t});var e=c(11400),f=c(50029),g=c(71086),h=c(38513),i=c(76760),j=c(16006),k=c(70949),l=c(22328),m=c(48479),n=c(52686),o=c(13807),p=c(58543),q=c(76193);async function r(a,b){let c,d,e,f;if("POST"!==a.method)return b.status(405).json({error:"Method not allowed"});let g=a.query.id,h=a.body??{},j=h.projectRoot,r=(0,k.getGeneratedDocument)(g,j);if(!r)return b.status(404).json({error:"Document not found"});let t=(r.draft?.chapters??r.checkpointChapters??[]).filter(a=>a?.id&&a?.title).map(a=>({id:a.id,title:a.title})),u={chapters:t,criteriaIds:[...new Set([...q.Yu,...q.dR,...q.tr].map(a=>a.id))]},v=String(h.text??"").trim();if(h.acceptedCandidate?.kind&&(c={kind:h.acceptedCandidate.kind,target:h.acceptedCandidate.target??{},rawText:v||"(用户在候选中选定)",confidence:"classified",reason:"用户在系统给出的候选里选定(不是系统猜的)"}),!c&&v&&!(c=(0,o.Su)(v,u))){let a,b=(0,o.mo)(v),d=await (0,n.bb)(b.system,b.user,{callKind:"instruction-parse",maxTokens:200,temperature:0}).catch(b=>{a=b instanceof Error?b.message:String(b),console.warn(`[instruction] 受限分类调用失败(不是"置信不足"):${a}`)});c=(0,o.zm)(v,d,u)??{kind:"requirement",target:{},rawText:v,confidence:"ambiguous",candidates:(0,o.rh)(v,u),reason:a?`规则未命中,且受限分类调用**失败**(${a.slice(0,120)})——给候选让人选,不猜;可稍后重试`:"规则未命中且受限分类置信不足 —— 给候选让人选,不猜"}}if(!c)return b.status(400).json({error:"需要 text(一句话指令)或在 acceptedCandidate 里指定候选择项"});let w=r.status,x={taskState:"generating"===w?"running":"paused"===w?"paused":"finished"};switch(c.kind){case"pause":if("generating"!==r.status){var y;e="rejected",y=c,d=`暂停未生效:当前记录状态不允许该动作(原话:${y.rawText})——**没有替你执行**。`;break}(0,k.jA)(g,j),e="executed",d="已执行:暂停请求已下达——章节边界停住(在飞的块照常跑完,产出照常入检查点)。";break;case"abort":{let a=(0,k.r)(g,j);a.aborted?(e="executed",d='已执行:本次生成已中止(已完成的章原样保留在记录里,可随时说"继续生成"接着跑)。'):(e="rejected",d=`未执行:${a.note||"没有可中止的运行中任务"}`);break}case"resume":"paused"===r.status?((0,k.$v)(g,j),e="executed",d="已执行:从暂停继续(按**修复式续跑**:带着上一轮的账本,只补该补的)。"):"failed"===r.status||"aborted"===r.status||"warning"===r.status?((0,k.YL)({title:r.templateName||r.title,requirement:r.requirement,...r.promptIds?{promptIds:r.promptIds}:{},...r.materialRoot?{materialRoot:r.materialRoot}:{},resumeDocumentId:g},r.projectRoot),e="executed",d="已执行:已按**修复式续跑**重启(复用已完成的章,带着上一轮的失败账本继续)。"):(e="rejected",d=`当前状态是「${r.status}」,没有可继续的生成(要新写一份请在新建页发起)。`);break;case"status":e="readonly",f=(0,o.jV)(function(a){let b=a.partialChapters??[],c=a.draft,d=c?.resumeLedger;return{status:a.status,...s(a)?{currentStage:s(a)}:{},chaptersDone:b.filter(a=>"completed"===a.status).length,chaptersTotal:b.length||void 0,...void 0!==a.wordCount?{words:a.wordCount}:{},...c?.exportGate?{blockers:c.exportGate.blockingIssues.length}:{},...a.warningIssues?{warnings:a.warningIssues.length}:{},...d?.readings.firstPassRate!==void 0?{firstPassRate:d.readings.firstPassRate}:{},...d?.chapterFailures?.length?{failedChapters:d.chapterFailures.map(a=>({title:a.chapterTitle,reason:a.reason}))}:{},...(c?.clarificationRequests?.length??0)+(c?.exportGate?.manualReviewIssues?.length??0)>0?{pendingHuman:(c?.clarificationRequests?.length??0)+(c?.exportGate?.manualReviewIssues?.length??0)}:{}}}(r)),d="只读回答(未改动任何内容)。";break;case"repair":{let a=c.target.chapterId??c.target.chapterTitle,b=c.target.chapterId;if(t.length>0&&b&&(r.draft?.chapters??r.checkpointChapters??[]).some(a=>a.id===b&&(a.content??"").trim().length>0)){c={...c,requiresConfirmation:!0};let a=function(a,b,c){let d;try{let e=(0,k.getGeneratedDocument)(a,b);if(!e||!(0,p.Jd)(e))throw Error("文档缺少可核对的生成与评审记录");d={method:"literal-search",candidates:(0,p.Du)(e,b??e.projectRoot,(0,l.I4)(c.rawText))}}catch{d={method:"literal-search",candidates:[]}}let e={id:`repair-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`,source:"user",...c.target.nodeId?{targetNodeId:c.target.nodeId}:{},userMessage:c.rawText,localization:d,impact:{affectedNodeIds:[],reason:"",class:"local"}},f=i.join((0,k.Gl)(b),"drafts");(0,l.rN)(a,e,f);let g=(0,l.oy)(a,f).length;return(0,m.Wl)({documentId:a},{batch:"finalize.pipeline",baseDir:(0,k.Gl)(b),id:`repair.request.${e.id}`,type:"repair.request",title:`修复请求(来自输入框指令):${(0,o.pM)(c.target)||"需定位"}`,status:"completed",metrics:{requestId:e.id,来源:"instruction",候选数:d.candidates.length,待处理:g}}),e}(g,j??r.projectRoot,c);e="pending",d=`已登记修复请求(${a.id}):目标${(0,o.pM)(c.target)||"(未点名到章/块,需先定位)"}。**需你在画布上确认定位后才会执行**——自然语言不直接改稿。`+(a.localization?.candidates?.length?`已算出 ${a.localization.candidates.length} 处候选。`:"未算出逐字命中的候选,请引用要改的原文或 @节点 指定。")}else"generating"===w?(e="queued",d=`已投递给运行中的任务${a?`(${(0,o.pM)(c.target)})`:""}:该章**还没写到**,写到它时按你的要求处理(不是立刻改稿)。`):(e="pending",d='当前没有运行中的任务:这条要求已登记,说"继续生成"时按它处理。');break}case"resize":case"requirement":"generating"===w?(e="queued",d=`已投递给运行中的任务,将在**下一个决策点**消费(不是立刻改稿):${(0,o.hM)(c,x)}`):(e="pending",d=`已登记(当前没有运行中的任务):说"继续生成"时按它处理。${(0,o.hM)(c,x)}`);break;default:e="pending",d=(0,o.hM)(c,x)}let z=(0,k.S8)(g,c,f?`${d}
|
|
2
2
|
${f}`:d,e,j);b.status(200).json({ok:!0,recorded:z,instruction:{kind:c.kind,target:c.target,confidence:c.confidence,reason:c.reason},candidates:"ambiguous"===c.confidence?c.candidates:void 0,receipt:d,answer:f})}function s(a){let b=a.executionStages??[];for(let a=b.length-1;a>=0;a-=1){let c=b[a];if(c?.message&&("running"===c.status||"failed"===c.status||"partial"===c.status))return c.message}return b[b.length-1]?.message}let t=(0,j.j)("api/documents/generated/[id]/instruction",r);var u=c(68970),v=c(50296);let w=(0,h.M)(d,"default"),x=(0,h.M)(d,"config"),y=new g.PagesAPIRouteModule({definition:{kind:f.A.PAGES_API,page:"/api/documents/generated/[id]/instruction",pathname:"/api/documents/generated/[id]/instruction",bundlePath:"",filename:""},userland:d,distDir:".next",relativeProjectDir:""});async function z(a,b,c){let d=await y.prepare(a,b,{srcPage:"/api/documents/generated/[id]/instruction"});if(!d){b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve());return}let{query:f,params:g,prerenderManifest:h,routerServerContext:i}=d;try{let c=a.method||"GET",d=(0,u.getTracer)(),e=d.getActiveScopeSpan(),j=y.instrumentationOnRequestError.bind(y),k=async e=>y.render(a,b,{query:{...f,...g},params:g,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:h.preview,propagateError:!1,dev:y.isDev,page:"/api/documents/generated/[id]/instruction",internalRevalidate:null==i?void 0:i.revalidate,onError:(...b)=>j(a,...b)}).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let f=d.getRootSpanAttributes();if(!f)return;if(f.get("next.span_type")!==v.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${f.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let g=f.get("next.route");if(g){let a=`${c} ${g}`;e.setAttributes({"next.route":g,"http.route":g,"next.span_name":a}),e.updateName(a)}else e.updateName(`${c} ${a.url}`)});e?await k(e):await d.withPropagatedContext(a.headers,()=>d.trace(v.BaseServerSpan.handleRequest,{spanName:`${c} ${a.url}`,kind:u.SpanKind.SERVER,attributes:{"http.method":c,"http.target":a.url}},k))}catch(a){if(y.isDev)throw a;(0,e.sendError)(b,500,"Internal Server Error")}finally{null==c.waitUntil||c.waitUntil.call(c,Promise.resolve())}}},95393:a=>{a.exports=require("@customize-agent/llm")},96770:a=>{a.exports=require("@customize-agent/runtime")}};var b=require("../../../../../webpack-api-runtime.js");b.C(a);var c=b.X(0,[9705,5746,5304,3806,2434,1243,1001,9666,2328],()=>b(b.s=90191));module.exports=c})();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";(()=>{var a={};a.id=3930,a.ids=[3930],a.modules={15751:a=>{a.exports=require("xlsx")},16698:a=>{a.exports=require("node:async_hooks")},19898:a=>{a.exports=require("@customize-agent/knowledge")},21391:(a,b,c)=>{c.r(b),c.d(b,{config:()=>p,default:()=>o,handler:()=>r});var d={};c.r(d),c.d(d,{default:()=>l});var e=c(11400),f=c(50029),g=c(71086),h=c(38513),i=c(16006),j=c(70949);async function k(a,b){if("POST"!==a.method)return b.status(405).json({error:"Method not allowed"});let c=a.query.id,d=a.body?.projectRoot||void 0
|
|
1
|
+
"use strict";(()=>{var a={};a.id=3930,a.ids=[3930],a.modules={15751:a=>{a.exports=require("xlsx")},16698:a=>{a.exports=require("node:async_hooks")},19898:a=>{a.exports=require("@customize-agent/knowledge")},21391:(a,b,c)=>{c.r(b),c.d(b,{config:()=>p,default:()=>o,handler:()=>r});var d={};c.r(d),c.d(d,{default:()=>l});var e=c(11400),f=c(50029),g=c(71086),h=c(38513),i=c(16006),j=c(70949);async function k(a,b){if("POST"!==a.method)return b.status(405).json({error:"Method not allowed"});let c=a.query.id,d=a.body?.projectRoot||void 0,e=(0,j.jA)(c,d);return e.record?e.requested?void b.status(202).json({accepted:!0,effectiveAt:"request-cancellation",status:e.record.status,message:"paused"===e.record.status?"已暂停":"已请求暂停:正在取消模型调用并保存已完成正文"}):b.status(409).json({accepted:!1,status:e.record.status,message:e.note||"未请求暂停"}):b.status(404).json({error:"Document not found"})}let l=(0,i.j)("api/documents/generated/[id]/pause",k);var m=c(68970),n=c(50296);let o=(0,h.M)(d,"default"),p=(0,h.M)(d,"config"),q=new g.PagesAPIRouteModule({definition:{kind:f.A.PAGES_API,page:"/api/documents/generated/[id]/pause",pathname:"/api/documents/generated/[id]/pause",bundlePath:"",filename:""},userland:d,distDir:".next",relativeProjectDir:""});async function r(a,b,c){let d=await q.prepare(a,b,{srcPage:"/api/documents/generated/[id]/pause"});if(!d){b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve());return}let{query:f,params:g,prerenderManifest:h,routerServerContext:i}=d;try{let c=a.method||"GET",d=(0,m.getTracer)(),e=d.getActiveScopeSpan(),j=q.instrumentationOnRequestError.bind(q),k=async e=>q.render(a,b,{query:{...f,...g},params:g,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:h.preview,propagateError:!1,dev:q.isDev,page:"/api/documents/generated/[id]/pause",internalRevalidate:null==i?void 0:i.revalidate,onError:(...b)=>j(a,...b)}).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let f=d.getRootSpanAttributes();if(!f)return;if(f.get("next.span_type")!==n.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${f.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let g=f.get("next.route");if(g){let a=`${c} ${g}`;e.setAttributes({"next.route":g,"http.route":g,"next.span_name":a}),e.updateName(a)}else e.updateName(`${c} ${a.url}`)});e?await k(e):await d.withPropagatedContext(a.headers,()=>d.trace(n.BaseServerSpan.handleRequest,{spanName:`${c} ${a.url}`,kind:m.SpanKind.SERVER,attributes:{"http.method":c,"http.target":a.url}},k))}catch(a){if(q.isDev)throw a;(0,e.sendError)(b,500,"Internal Server Error")}finally{null==c.waitUntil||c.waitUntil.call(c,Promise.resolve())}}},29021:a=>{a.exports=require("fs")},31421:a=>{a.exports=require("node:child_process")},33873:a=>{a.exports=require("path")},48161:a=>{a.exports=require("node:os")},55511:a=>{a.exports=require("crypto")},73024:a=>{a.exports=require("node:fs")},75600:a=>{a.exports=require("next/dist/compiled/next-server/pages-api.runtime.prod.js")},76760:a=>{a.exports=require("node:path")},77598:a=>{a.exports=require("node:crypto")},95393:a=>{a.exports=require("@customize-agent/llm")},96770:a=>{a.exports=require("@customize-agent/runtime")}};var b=require("../../../../../webpack-api-runtime.js");b.C(a);var c=b.X(0,[9705,5746,5304,3806,2434,1243,1001,9666],()=>b(b.s=21391));module.exports=c})();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";(()=>{var a={};a.id=5189,a.ids=[5189],a.modules={12152:(a,b,c)=>{function d(a){let b=e()?.semanticFingerprints?.[a];return"string"==typeof b&&/^[a-f0-9]{64}$/u.test(b)?b:void 0}function e(){let a='{"version":1,"sourceFingerprint":"
|
|
1
|
+
"use strict";(()=>{var a={};a.id=5189,a.ids=[5189],a.modules={12152:(a,b,c)=>{function d(a){let b=e()?.semanticFingerprints?.[a];return"string"==typeof b&&/^[a-f0-9]{64}$/u.test(b)?b:void 0}function e(){let a='{"version":1,"sourceFingerprint":"36956db6655c7ce7a67c9b6862b2ca1b6b5308f268b5595d430facff6c0f4152","semanticFingerprints":{"projectFacts":"6f372f4cec3e4a9138ebf95525ccbc825ce69d19b6e24706492fee1a8e595fdd","documentGeneration":"61493fb15152bc31cbc3aeca7fdd5c27ac6cb2b0948ba96557d7159931014e14"},"gitCommit":"b96422a199d83cf56f96a5e0f8ed2254ebd711f8","serverVersion":"4.60.11","sourceFiles":724,"capturedAt":"2026-10-13T05:38:11.442Z"}';if(a)try{let b=JSON.parse(a);if(1!==b.version||!/^[a-f0-9]{64}$/u.test(b.sourceFingerprint??"")||"string"!=typeof b.serverVersion||"number"!=typeof b.sourceFiles||"string"!=typeof b.capturedAt||null!==b.gitCommit&&"string"!=typeof b.gitCommit)return;return b}catch{return}}c.d(b,{C:()=>d,S:()=>e})},29021:a=>{a.exports=require("fs")},33873:a=>{a.exports=require("path")},51195:(a,b,c)=>{c.r(b),c.d(b,{config:()=>r,default:()=>q,handler:()=>t});var d={};c.r(d),c.d(d,{default:()=>n});var e=c(11400),f=c(50029),g=c(71086),h=c(38513),i=c(29021),j=c(33873),k=c(12152);let l=[(0,j.join)(process.cwd(),".next","BUILD_ID"),(0,j.join)(process.cwd(),"apps","server",".next","BUILD_ID")].find(i.existsSync),m=process.env.CUSTOMIZE_DASHBOARD_BUILD_ID??null;if(!m&&l)try{m=(0,i.readFileSync)(l,"utf-8").trim()}catch{m=null}function n(a,b){if("GET"!==a.method)return b.status(405).json({error:"Method not allowed"});try{b.status(200).json({status:"ok",uptime:Math.round(process.uptime()),timestamp:new Date().toISOString(),buildId:m,buildIdentity:(0,k.S)()??null,pid:process.pid})}catch(a){console.error("[api] health",a),b.status(500).json({error:"Internal server error"})}}var o=c(68970),p=c(50296);let q=(0,h.M)(d,"default"),r=(0,h.M)(d,"config"),s=new g.PagesAPIRouteModule({definition:{kind:f.A.PAGES_API,page:"/api/health",pathname:"/api/health",bundlePath:"",filename:""},userland:d,distDir:".next",relativeProjectDir:""});async function t(a,b,c){let d=await s.prepare(a,b,{srcPage:"/api/health"});if(!d){b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve());return}let{query:f,params:g,prerenderManifest:h,routerServerContext:i}=d;try{let c=a.method||"GET",d=(0,o.getTracer)(),e=d.getActiveScopeSpan(),j=s.instrumentationOnRequestError.bind(s),k=async e=>s.render(a,b,{query:{...f,...g},params:g,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:h.preview,propagateError:!1,dev:s.isDev,page:"/api/health",internalRevalidate:null==i?void 0:i.revalidate,onError:(...b)=>j(a,...b)}).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let f=d.getRootSpanAttributes();if(!f)return;if(f.get("next.span_type")!==p.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${f.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let g=f.get("next.route");if(g){let a=`${c} ${g}`;e.setAttributes({"next.route":g,"http.route":g,"next.span_name":a}),e.updateName(a)}else e.updateName(`${c} ${a.url}`)});e?await k(e):await d.withPropagatedContext(a.headers,()=>d.trace(p.BaseServerSpan.handleRequest,{spanName:`${c} ${a.url}`,kind:o.SpanKind.SERVER,attributes:{"http.method":c,"http.target":a.url}},k))}catch(a){if(s.isDev)throw a;(0,e.sendError)(b,500,"Internal Server Error")}finally{null==c.waitUntil||c.waitUntil.call(c,Promise.resolve())}}},75600:a=>{a.exports=require("next/dist/compiled/next-server/pages-api.runtime.prod.js")}};var b=require("../../webpack-api-runtime.js");b.C(a);var c=b.X(0,[9705],()=>b(b.s=51195));module.exports=c})();
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";(()=>{var a={};a.id=9452,a.ids=[9452],a.modules={15151:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{config:()=>
|
|
2
|
-
`,"utf8"),e.renameSync(d,c);let g=k.get(a);g&&(g.mtimeMs=l(c))}let j=Math.round(Date.now()-1e3*process.uptime()),k=new Map;function l(a){try{return e.statSync(a).mtimeMs}catch{return 0}}function m(a){let b=h(a),c=l(b),d=k.get(a);if(d&&d.mtimeMs===c)return d.records;let f=function(a){let b=function(a){let b=h(a);return e.existsSync(b)?e.readFileSync(b,"utf8").split("\n").filter(Boolean).flatMap(a=>{try{return[JSON.parse(a)]}catch{return[]}}):[]}(a),c=b.filter(a=>"processing"===a.status&&a.updatedAt<j);if(c.length>0){let d=Date.now();for(let a of c)a.status="error",a.stage="error",a.error="服务重启导致任务中断,未完成",a.message=a.error,a.updatedAt=d;i(a,b)}return b}(a);return k.set(a,{mtimeMs:l(b),records:f}),f}function n(a,b){let c=Date.now(),d=m(a),e=d.findIndex(a=>a.id===b.id),f=e>=0?d[e]:void 0,g={id:b.id,type:b.type,title:b.title,stage:b.stage??f?.stage??"uploading",status:b.status??f?.status??"processing",message:b.message??f?.message??"",percent:b.percent??f?.percent??0,fileName:b.fileName??f?.fileName,filePath:b.filePath??f?.filePath,chunkCount:b.chunkCount??f?.chunkCount,textLength:b.textLength??f?.textLength,extractionMode:b.extractionMode??f?.extractionMode,error:b.status&&"error"!==b.status?void 0:b.error??f?.error,details:b.details??f?.details,createdAt:f?.createdAt??c,updatedAt:c};return e>=0?d[e]=g:d.push(g),i(a,d),g}function o(a,b=50){return m(a).sort((a,b)=>b.updatedAt-a.updatedAt).slice(0,b)}function p(a,b){return m(a).find(a=>a.id===b)}function q(a,b){return m(a).filter(a=>!b||a.type===b).sort((a,b)=>b.updatedAt-a.updatedAt)[0]}function r(a){let b=m(a),c=h(a);return e.existsSync(c)&&e.unlinkSync(c),k.delete(a),b.length}function s(a,b){let c=m(a),d=c.findIndex(a=>a.id===b);return!(d<0)&&(c.splice(d,1),i(a,c),!0)}},48161:a=>{a.exports=require("node:os")},48203:(a,b,c)=>{c.d(b,{DA:()=>p,OX:()=>s,P2:()=>q,ls:()=>r});var d=c(48161),e=c(79646),f=c(73024),g=c.n(f),h=c(33873),i=c.n(h),j=c(37095),k=c(47774),l=c(51342);let m=globalThis,n=m.__customizeActiveIndexJobs??=new Map,o=[/^Image too small to scale!!/u,/^Line cannot be recognized!!$/u,/CleanUnusedInitializersAndNodeArgs/u,/should be removed from the model/u];function p(a){!function(a){(0,k.jF)();let b=n.get(a.projectRoot),c=a.uploadOperationId??a.id,f=a.uploadOperationId?"upload":"reindex",h=a.uploadOperationId?`上传 ${a.uploadTitle??"文件"}`:a.relativePath?`重新解析 ${a.relativePath}`:"知识库后台索引",m=()=>((0,k.jF)(),(0,j.Qf)(a.projectRoot,{id:c,type:f,title:h,stage:"uploading",status:"processing",percent:5,message:"索引任务已进入后台队列",filePath:a.relativePath,fileName:a.relativePath?.split("/").pop()}),(function(a,b,c,f){let h=function(){let a=new Set,b=b=>{for(let c=i().resolve(b);a.add(i().join(c,"scripts/kb-index-worker.cjs")),i().dirname(c)!==c;c=i().dirname(c));};for(let c of(b(process.cwd()),b(__dirname),a))if(g().existsSync(c))return c}();if(!h){let d="知识库后台索引脚本缺失,请检查服务安装包中的 scripts/kb-index-worker.cjs";return(0,j.Qf)(a.projectRoot,{id:b,type:c,title:f,stage:"error",status:"error",percent:100,message:d,error:d}),Promise.resolve({success:!1,error:d})}return new Promise(g=>{let k,m,n;try{k=(0,e.fork)(h,[JSON.stringify({...a,operationId:b})],{cwd:process.cwd(),stdio:["ignore","pipe","pipe","ipc"],env:{...process.env,CUSTOMIZE_KB_OCR_CACHE_DIR:process.env.CUSTOMIZE_KB_OCR_CACHE_DIR?.trim()?process.env.CUSTOMIZE_KB_OCR_CACHE_DIR:i().join((0,l.J0)(),"cache","ocr-pages")},execArgv:[...process.execArgv.filter(a=>!a.startsWith("--max-old-space-size")),`--max-old-space-size=${function(){let a=Number(process.env.KB_INDEX_MAX_OLD_SPACE_MB);return Number.isFinite(a)&&a>0?Math.floor(a):Math.min(12288,Math.max(4096,Math.floor(Math.floor(d.totalmem()/1024/1024)/4)))}()}`]})}catch(e){let d=`知识库后台进程启动失败:${e instanceof Error?e.message:String(e)}`;(0,j.Qf)(a.projectRoot,{id:b,type:c,title:f,stage:"error",status:"error",percent:100,message:d,error:d}),g({success:!1,error:d});return}let p=!1,q=!1,r=new Map,s=null,t=()=>{for(let[d,e]of(s&&(clearTimeout(s),s=null),r))if(0!==e.length){if(q||m){console.log(`[kb-worker] ${d}${e.join("\n").slice(-1e3)}`);continue}(0,j.Qf)(a.projectRoot,{id:b,type:c,title:f,stage:"parsing",status:"processing",percent:5,message:`${d}${e.join("\n").slice(-1e3)}`})}r.clear()},u=(a,b)=>{let c=String(a).split(/\r?\n/u).map(a=>a.trim()).filter(a=>a&&!o.some(b=>b.test(a))).join("\n");if(!c)return;let d=r.get(b)??[];d.push(c),r.set(b,d),s||(s=setTimeout(t,500),s.unref?.())};k.stdout?.on("data",a=>u(a,"后台索引输出:")),k.stderr?.on("data",a=>u(a,"后台索引错误输出:")),k.on("error",d=>{if(p)return;p=!0,t();let e=`知识库后台进程启动失败:${d instanceof Error?d.message:String(d)}`;(0,j.Qf)(a.projectRoot,{id:b,type:c,title:f,stage:"error",status:"error",percent:100,message:e,error:e}),g({success:!1,error:e})}),k.on("message",b=>{if(b?.type==="log"&&b?.patch){let c="done"===b.patch.stage&&100===b.patch.percent&&("success"===b.patch.status||"warning"===b.patch.status),d="error"===b.patch.stage&&"error"===b.patch.status&&100===b.patch.percent;(c||d)&&t(),c&&!m&&(q=!0),d&&(m=b.patch.error||b.patch.message||"知识库索引失败",q=!1),c&&"warning"===b.patch.status&&(n=b.patch.error||b.patch.message),(!m||d)&&(!q||c)&&(0,j.Qf)(a.projectRoot,b.patch)}}),k.on("exit",(d,e)=>{if(p)return;if(p=!0,t(),m)return void g({success:!1,error:m});if(q)return void g({success:!0,warning:n});let h=0===d?"知识库后台进程退出,未收到索引完成回执":`知识库后台进程退出,退出码 ${d??e??"unknown"}`;console.error("[kb-worker] exit",{operationId:b,code:d,signal:e}),(0,j.Qf)(a.projectRoot,{id:b,type:c,title:f,stage:"error",status:"error",percent:100,message:h,error:h}),g({success:!1,error:h})})})})(a,c,f,h).then(b=>(b.success&&(b.warning?(0,j.Qf)(a.projectRoot,{id:c,type:f,title:h,stage:"done",status:"warning",percent:100,message:a.relativePath?"重新解析完成(向量索引降级)":"知识库后台索引完成(向量索引降级)",filePath:a.relativePath,fileName:a.relativePath?.split("/").pop(),error:b.warning}):(0,j.Qf)(a.projectRoot,{id:c,type:f,title:h,stage:"done",status:"success",percent:100,message:a.relativePath?"重新解析完成":"知识库后台索引完成",filePath:a.relativePath,fileName:a.relativePath?.split("/").pop()})),b))),p=b?b.promise.then(m,m):m(),q={operationId:c,promise:p,startedAt:b?.startedAt??Date.now()};n.set(a.projectRoot,q),p.then(()=>{n.get(a.projectRoot)===q&&n.delete(a.projectRoot)},()=>{n.get(a.projectRoot)===q&&n.delete(a.projectRoot)})}(a)}function q(a){return n.has(a)}function r(a){let b=n.get(a);return b?{operationId:b.operationId,startedAt:b.startedAt}:void 0}function s(){return[...n.values()].map(a=>a.promise)}},55511:a=>{a.exports=require("crypto")},67313:a=>{a.exports=import("formidable")},73024:a=>{a.exports=require("node:fs")},75600:a=>{a.exports=require("next/dist/compiled/next-server/pages-api.runtime.prod.js")},76760:a=>{a.exports=require("node:path")},77598:a=>{a.exports=require("node:crypto")},79646:a=>{a.exports=require("child_process")},96770:a=>{a.exports=require("@customize-agent/runtime")},99249:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{config:()=>o,default:()=>n,handler:()=>m});var e=c(11400),f=c(50029),g=c(71086),h=c(38513),i=c(15151),j=c(68970),k=c(50296),l=a([i]);i=(l.then?(await l)():l)[0];let n=(0,h.M)(i,"default"),o=(0,h.M)(i,"config"),p=new g.PagesAPIRouteModule({definition:{kind:f.A.PAGES_API,page:"/api/kb/upload",pathname:"/api/kb/upload",bundlePath:"",filename:""},userland:i,distDir:".next",relativeProjectDir:""});async function m(a,b,c){let d=await p.prepare(a,b,{srcPage:"/api/kb/upload"});if(!d){b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve());return}let{query:f,params:g,prerenderManifest:h,routerServerContext:i}=d;try{let c=a.method||"GET",d=(0,j.getTracer)(),e=d.getActiveScopeSpan(),l=p.instrumentationOnRequestError.bind(p),m=async e=>p.render(a,b,{query:{...f,...g},params:g,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:h.preview,propagateError:!1,dev:p.isDev,page:"/api/kb/upload",internalRevalidate:null==i?void 0:i.revalidate,onError:(...b)=>l(a,...b)}).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let f=d.getRootSpanAttributes();if(!f)return;if(f.get("next.span_type")!==k.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${f.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let g=f.get("next.route");if(g){let a=`${c} ${g}`;e.setAttributes({"next.route":g,"http.route":g,"next.span_name":a}),e.updateName(a)}else e.updateName(`${c} ${a.url}`)});e?await m(e):await d.withPropagatedContext(a.headers,()=>d.trace(k.BaseServerSpan.handleRequest,{spanName:`${c} ${a.url}`,kind:j.SpanKind.SERVER,attributes:{"http.method":c,"http.target":a.url}},m))}catch(a){if(p.isDev)throw a;(0,e.sendError)(b,500,"Internal Server Error")}finally{null==c.waitUntil||c.waitUntil.call(c,Promise.resolve())}}d()}catch(a){d(a)}})}};var b=require("../../../webpack-api-runtime.js");b.C(a);var c=b.X(0,[9705,5746],()=>b(b.s=99249));module.exports=c})();
|
|
1
|
+
"use strict";(()=>{var a={};a.id=9452,a.ids=[9452],a.modules={15151:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{config:()=>s,default:()=>u});var e=c(16006),f=c(67313),g=c(44533),h=c(37095),i=c(48203),j=c(73024),k=c.n(j),l=c(83257),m=a([f]);f=(m.then?(await m)():m)[0];let s={api:{bodyParser:!1,responseLimit:!1}};function n(a){return Array.isArray(a)?a[0]:a}function o(a){return"1"===a||"true"===a}function p(a,b){let c=Number.parseInt(a??"",10);return Number.isFinite(c)?c:b}let t=/(^|\/)\.DS_Store$|(^|\/)Thumbs\.db$|(^|\/)__MACOSX\/|\.bak$|(^|\/)~\$/iu;function q(a){return a.originalFilename||a.newFilename||"uploaded-file"}async function r(a,b){var c;if("POST"!==a.method)return b.status(405).json({error:"Method not allowed"});let d=(c=a.query.uploadId,(Array.isArray(c)?c[0]:c)||`upload-${Date.now()}`),e=(0,g.aY)(),j="文件夹上传";try{e&&(0,h.Qf)(e,{id:d,type:"upload",title:`上传 ${j}`,stage:"uploading",status:"processing",percent:1,message:"正在接收上传请求",fileName:j});let c=await function(a){let b=Number(process.env.CUSTOMIZE_KB_UPLOAD_MAX_BYTES||0x100000000),c=(0,f.default)({multiples:!0,maxFileSize:b,maxTotalFileSize:b,keepExtensions:!0,allowEmptyFiles:!0});return new Promise((b,d)=>{c.parse(a,(a,c,e)=>{let f;if(a)return void d(a);try{f=(0,l.w)(c,e)}catch(a){for(let a of Object.values(e).flat().filter(Boolean))try{k().rmSync(a.filepath,{force:!0})}catch(a){console.warn("[api] kb/upload rejected temporary file cleanup",a)}d(a);return}let g=p(n(c.batchIndex),0),h=Math.max(1,p(n(c.totalBatches),1));b({fields:{uploadId:n(c.uploadId),projectRoot:n(c.projectRoot),relativePaths:f.relativePaths,batchIndex:g,totalBatches:h,startIndex:o(n(c.startIndex))||0===g,uploadComplete:o(n(c.uploadComplete))||g>=h-1,fileOffset:Math.max(0,p(n(c.fileOffset),500*g))},files:f.files})})})}(a);if(d=c.fields.uploadId||d,!(e=c.fields.projectRoot||e))return b.status(400).json({error:"Project root is required"});if(0===c.files.length)return b.status(400).json({error:"files required"});if(c.fields.relativePaths.length!==c.files.length)return b.status(400).json({error:"relativePaths count mismatch"});let m=c.files.map((a,b)=>({file:a,relativePath:c.fields.relativePaths[b]})).filter(a=>(a.file.size||0)>0&&!t.test(a.relativePath||q(a.file))),r=c.files.length-m.length;j=1===m.length?q(m[0].file):`${m.length} 个文件`;let s=await (0,g.getMultiProjectManager)().getProject(e);if(0===m.length){c.fields.uploadComplete&&await s.stageUploadedFilePaths([],d,c.fields.fileOffset,!0),c.fields.startIndex&&!(0,i.P2)(e)&&(0,i.DA)({id:`${d}-worker`,projectRoot:e,vectorMode:"defer",uploadOperationId:d,uploadTitle:j});let a=`第 ${c.fields.batchIndex+1}/${c.fields.totalBatches} 批仅包含空文件、系统文件或备份文件,已跳过`;return(0,h.Qf)(e,{id:d,type:"upload",title:`上传 ${j}`,stage:c.fields.uploadComplete?"done":"uploading",status:"warning",percent:c.fields.uploadComplete?100:Math.min(4,Math.max(1,Math.round((c.fields.batchIndex+1)/c.fields.totalBatches*4))),message:a,fileName:j}),b.status(202).json({success:!0,accepted:!0,operationId:d,jobs:[],skippedEmptyCount:r,batchIndex:c.fields.batchIndex,totalBatches:c.fields.totalBatches,indexingStarted:!1})}let u=m.map(a=>({fileName:q(a.file),sourcePath:a.file.filepath,targetRelativePath:a.relativePath})),v=await s.stageUploadedFilePaths(u,d,c.fields.fileOffset,c.fields.uploadComplete),w=v[0]?.relativePath,x=c.fields.startIndex?5:Math.min(4,Math.max(1,Math.round((c.fields.batchIndex+1)/c.fields.totalBatches*4))),y=c.fields.startIndex?`文件已落盘,后台索引任务已排队${r?`,已跳过 ${r} 个空文件、系统文件或备份文件`:""}`:`文件已落盘:第 ${c.fields.batchIndex+1}/${c.fields.totalBatches} 批${r?`,已跳过 ${r} 个空文件、系统文件或备份文件`:""}`;return(0,h.Qf)(e,{id:d,type:"upload",title:`上传 ${j}`,stage:"uploading",status:"processing",percent:x,message:y,fileName:j,filePath:w}),c.fields.startIndex&&(0,i.DA)({id:`${d}-worker`,projectRoot:e,vectorMode:"defer",uploadOperationId:d,uploadTitle:j}),b.status(202).json({success:!0,accepted:!0,operationId:d,relativePath:1===m.length?w:void 0,jobs:v,skippedEmptyCount:r,batchIndex:c.fields.batchIndex,totalBatches:c.fields.totalBatches,indexingStarted:c.fields.startIndex})}catch(c){let a=c instanceof Error?c.message:"上传或索引失败";if(c instanceof l.d)return e&&(0,h.Qf)(e,{id:d,type:"upload",title:`上传 ${j}`,stage:"error",status:"error",percent:100,message:a,error:a}),b.status(400).json({error:a,code:"invalid-file-binding"});if(e){try{let b=await (0,g.getMultiProjectManager)().getProject(e);await b.stageUploadedFilePaths([],d,0,!0),b.failPendingIndexJobs(a)}catch(a){console.error("[api] kb/upload cleanup",a)}(0,h.Qf)(e,{id:d,type:"upload",title:`上传 ${j}`,stage:"error",status:"error",percent:100,message:a,fileName:j,error:a})}console.error("[api] kb/upload",c),b.status(500).json({error:a})}}let u=(0,e.j)("api/kb/upload",r);d()}catch(a){d(a)}})},19898:a=>{a.exports=require("@customize-agent/knowledge")},29021:a=>{a.exports=require("fs")},31421:a=>{a.exports=require("node:child_process")},33873:a=>{a.exports=require("path")},37095:(a,b,c)=>{c.d(b,{CU:()=>s,H7:()=>r,JB:()=>p,Qf:()=>n,kW:()=>q,oy:()=>o});var d=c(51342),e=c(29021),f=c(33873),g=c(19898);function h(a){return f.join((0,d.J0)(),"projects",(0,g.computeProjectId)(a),"kb-operations.jsonl")}function i(a,b){let c=h(a);e.mkdirSync(f.dirname(c),{recursive:!0});let d=`${c}.${process.pid}.${Date.now()}.tmp`;e.writeFileSync(d,`${(function(a){if(a.length<=200)return a;let b=new Set([...a].sort((a,b)=>b.updatedAt-a.updatedAt).slice(0,200).map(a=>a.id));return a.filter(a=>b.has(a.id))})(b).map(a=>JSON.stringify(a)).join("\n")}
|
|
2
|
+
`,"utf8"),e.renameSync(d,c);let g=k.get(a);g&&(g.mtimeMs=l(c))}let j=Math.round(Date.now()-1e3*process.uptime()),k=new Map;function l(a){try{return e.statSync(a).mtimeMs}catch{return 0}}function m(a){let b=h(a),c=l(b),d=k.get(a);if(d&&d.mtimeMs===c)return d.records;let f=function(a){let b=function(a){let b=h(a);return e.existsSync(b)?e.readFileSync(b,"utf8").split("\n").filter(Boolean).flatMap(a=>{try{return[JSON.parse(a)]}catch{return[]}}):[]}(a),c=b.filter(a=>"processing"===a.status&&a.updatedAt<j);if(c.length>0){let d=Date.now();for(let a of c)a.status="error",a.stage="error",a.error="服务重启导致任务中断,未完成",a.message=a.error,a.updatedAt=d;i(a,b)}return b}(a);return k.set(a,{mtimeMs:l(b),records:f}),f}function n(a,b){let c=Date.now(),d=m(a),e=d.findIndex(a=>a.id===b.id),f=e>=0?d[e]:void 0,g={id:b.id,type:b.type,title:b.title,stage:b.stage??f?.stage??"uploading",status:b.status??f?.status??"processing",message:b.message??f?.message??"",percent:b.percent??f?.percent??0,fileName:b.fileName??f?.fileName,filePath:b.filePath??f?.filePath,chunkCount:b.chunkCount??f?.chunkCount,textLength:b.textLength??f?.textLength,extractionMode:b.extractionMode??f?.extractionMode,error:b.status&&"error"!==b.status?void 0:b.error??f?.error,details:b.details??f?.details,createdAt:f?.createdAt??c,updatedAt:c};return e>=0?d[e]=g:d.push(g),i(a,d),g}function o(a,b=50){return m(a).sort((a,b)=>b.updatedAt-a.updatedAt).slice(0,b)}function p(a,b){return m(a).find(a=>a.id===b)}function q(a,b){return m(a).filter(a=>!b||a.type===b).sort((a,b)=>b.updatedAt-a.updatedAt)[0]}function r(a){let b=m(a),c=h(a);return e.existsSync(c)&&e.unlinkSync(c),k.delete(a),b.length}function s(a,b){let c=m(a),d=c.findIndex(a=>a.id===b);return!(d<0)&&(c.splice(d,1),i(a,c),!0)}},48161:a=>{a.exports=require("node:os")},48203:(a,b,c)=>{c.d(b,{DA:()=>p,OX:()=>s,P2:()=>q,ls:()=>r});var d=c(48161),e=c(79646),f=c(73024),g=c.n(f),h=c(33873),i=c.n(h),j=c(37095),k=c(47774),l=c(51342);let m=globalThis,n=m.__customizeActiveIndexJobs??=new Map,o=[/^Image too small to scale!!/u,/^Line cannot be recognized!!$/u,/CleanUnusedInitializersAndNodeArgs/u,/should be removed from the model/u];function p(a){!function(a){(0,k.jF)();let b=n.get(a.projectRoot),c=a.uploadOperationId??a.id,f=a.uploadOperationId?"upload":"reindex",h=a.uploadOperationId?`上传 ${a.uploadTitle??"文件"}`:a.relativePath?`重新解析 ${a.relativePath}`:"知识库后台索引",m=()=>((0,k.jF)(),(0,j.Qf)(a.projectRoot,{id:c,type:f,title:h,stage:"uploading",status:"processing",percent:5,message:"索引任务已进入后台队列",filePath:a.relativePath,fileName:a.relativePath?.split("/").pop()}),(function(a,b,c,f){let h=function(){let a=new Set,b=b=>{for(let c=i().resolve(b);a.add(i().join(c,"scripts/kb-index-worker.cjs")),i().dirname(c)!==c;c=i().dirname(c));};for(let c of(b(process.cwd()),b(__dirname),a))if(g().existsSync(c))return c}();if(!h){let d="知识库后台索引脚本缺失,请检查服务安装包中的 scripts/kb-index-worker.cjs";return(0,j.Qf)(a.projectRoot,{id:b,type:c,title:f,stage:"error",status:"error",percent:100,message:d,error:d}),Promise.resolve({success:!1,error:d})}return new Promise(g=>{let k,m,n;try{k=(0,e.fork)(h,[JSON.stringify({...a,operationId:b})],{cwd:process.cwd(),stdio:["ignore","pipe","pipe","ipc"],env:{...process.env,CUSTOMIZE_KB_OCR_CACHE_DIR:process.env.CUSTOMIZE_KB_OCR_CACHE_DIR?.trim()?process.env.CUSTOMIZE_KB_OCR_CACHE_DIR:i().join((0,l.J0)(),"cache","ocr-pages")},execArgv:[...process.execArgv.filter(a=>!a.startsWith("--max-old-space-size")),`--max-old-space-size=${function(){let a=Number(process.env.KB_INDEX_MAX_OLD_SPACE_MB);return Number.isFinite(a)&&a>0?Math.floor(a):Math.min(12288,Math.max(4096,Math.floor(Math.floor(d.totalmem()/1024/1024)/4)))}()}`]})}catch(e){let d=`知识库后台进程启动失败:${e instanceof Error?e.message:String(e)}`;(0,j.Qf)(a.projectRoot,{id:b,type:c,title:f,stage:"error",status:"error",percent:100,message:d,error:d}),g({success:!1,error:d});return}let p=!1,q=!1,r=new Map,s=null,t=()=>{for(let[d,e]of(s&&(clearTimeout(s),s=null),r))if(0!==e.length){if(q||m){console.log(`[kb-worker] ${d}${e.join("\n").slice(-1e3)}`);continue}(0,j.Qf)(a.projectRoot,{id:b,type:c,title:f,stage:"parsing",status:"processing",percent:5,message:`${d}${e.join("\n").slice(-1e3)}`})}r.clear()},u=(a,b)=>{let c=String(a).split(/\r?\n/u).map(a=>a.trim()).filter(a=>a&&!o.some(b=>b.test(a))).join("\n");if(!c)return;let d=r.get(b)??[];d.push(c),r.set(b,d),s||(s=setTimeout(t,500),s.unref?.())};k.stdout?.on("data",a=>u(a,"后台索引输出:")),k.stderr?.on("data",a=>u(a,"后台索引错误输出:")),k.on("error",d=>{if(p)return;p=!0,t();let e=`知识库后台进程启动失败:${d instanceof Error?d.message:String(d)}`;(0,j.Qf)(a.projectRoot,{id:b,type:c,title:f,stage:"error",status:"error",percent:100,message:e,error:e}),g({success:!1,error:e})}),k.on("message",b=>{if(b?.type==="log"&&b?.patch){let c="done"===b.patch.stage&&100===b.patch.percent&&("success"===b.patch.status||"warning"===b.patch.status),d="error"===b.patch.stage&&"error"===b.patch.status&&100===b.patch.percent;(c||d)&&t(),c&&!m&&(q=!0),d&&(m=b.patch.error||b.patch.message||"知识库索引失败",q=!1),c&&"warning"===b.patch.status&&(n=b.patch.error||b.patch.message),(!m||d)&&(!q||c)&&(0,j.Qf)(a.projectRoot,b.patch)}}),k.on("exit",(d,e)=>{if(p)return;if(p=!0,t(),m)return void g({success:!1,error:m});if(q)return void g({success:!0,warning:n});let h=0===d?"知识库后台进程退出,未收到索引完成回执":`知识库后台进程退出,退出码 ${d??e??"unknown"}`;console.error("[kb-worker] exit",{operationId:b,code:d,signal:e}),(0,j.Qf)(a.projectRoot,{id:b,type:c,title:f,stage:"error",status:"error",percent:100,message:h,error:h}),g({success:!1,error:h})})})})(a,c,f,h).then(b=>(b.success&&(b.warning?(0,j.Qf)(a.projectRoot,{id:c,type:f,title:h,stage:"done",status:"warning",percent:100,message:a.relativePath?"重新解析完成(向量索引降级)":"知识库后台索引完成(向量索引降级)",filePath:a.relativePath,fileName:a.relativePath?.split("/").pop(),error:b.warning}):(0,j.Qf)(a.projectRoot,{id:c,type:f,title:h,stage:"done",status:"success",percent:100,message:a.relativePath?"重新解析完成":"知识库后台索引完成",filePath:a.relativePath,fileName:a.relativePath?.split("/").pop()})),b))),p=b?b.promise.then(m,m):m(),q={operationId:c,promise:p,startedAt:b?.startedAt??Date.now()};n.set(a.projectRoot,q),p.then(()=>{n.get(a.projectRoot)===q&&n.delete(a.projectRoot)},()=>{n.get(a.projectRoot)===q&&n.delete(a.projectRoot)})}(a)}function q(a){return n.has(a)}function r(a){let b=n.get(a);return b?{operationId:b.operationId,startedAt:b.startedAt}:void 0}function s(){return[...n.values()].map(a=>a.promise)}},55511:a=>{a.exports=require("crypto")},67313:a=>{a.exports=import("formidable")},73024:a=>{a.exports=require("node:fs")},75600:a=>{a.exports=require("next/dist/compiled/next-server/pages-api.runtime.prod.js")},76760:a=>{a.exports=require("node:path")},77598:a=>{a.exports=require("node:crypto")},79646:a=>{a.exports=require("child_process")},83257:(a,b,c)=>{c.d(b,{d:()=>d,w:()=>e});class d extends Error{constructor(a){super(a),this.name="UploadFileBindingError"}}function e(a,b){let c=Object.keys(b).map(a=>{let b=/^files\[(0|[1-9]\d*)\]$/u.exec(a);if(!b||!Number.isSafeInteger(Number(b[1])))throw new d("上传文件缺少有效的逐文件索引,请刷新页面后重新上传");return Number(b[1])}).sort((a,b)=>a-b),e=Object.keys(a).filter(a=>a.startsWith("relativePaths"));if(!c.length||e.length!==c.length||c.some((a,b)=>a!==b))throw new d("上传文件与路径索引缺失或不连续,未写入知识库");let f=[],g=[];for(let e of c){let c=b[`files[${e}]`],h=a[`relativePaths[${e}]`],i=Array.isArray(c)?c:void 0===c?[]:[c],j=Array.isArray(h)?h:void 0===h?[]:[h];if(1!==i.length||1!==j.length||!j[0]?.trim())throw new d(`上传文件索引${e}的内容或路径重复、缺失,未写入知识库`);if(g.includes(j[0]))throw new d("同一上传批次包含重复目标路径,未写入知识库");f.push(i[0]),g.push(j[0])}return{files:f,relativePaths:g}}},96770:a=>{a.exports=require("@customize-agent/runtime")},99249:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{config:()=>o,default:()=>n,handler:()=>m});var e=c(11400),f=c(50029),g=c(71086),h=c(38513),i=c(15151),j=c(68970),k=c(50296),l=a([i]);i=(l.then?(await l)():l)[0];let n=(0,h.M)(i,"default"),o=(0,h.M)(i,"config"),p=new g.PagesAPIRouteModule({definition:{kind:f.A.PAGES_API,page:"/api/kb/upload",pathname:"/api/kb/upload",bundlePath:"",filename:""},userland:i,distDir:".next",relativeProjectDir:""});async function m(a,b,c){let d=await p.prepare(a,b,{srcPage:"/api/kb/upload"});if(!d){b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve());return}let{query:f,params:g,prerenderManifest:h,routerServerContext:i}=d;try{let c=a.method||"GET",d=(0,j.getTracer)(),e=d.getActiveScopeSpan(),l=p.instrumentationOnRequestError.bind(p),m=async e=>p.render(a,b,{query:{...f,...g},params:g,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:h.preview,propagateError:!1,dev:p.isDev,page:"/api/kb/upload",internalRevalidate:null==i?void 0:i.revalidate,onError:(...b)=>l(a,...b)}).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let f=d.getRootSpanAttributes();if(!f)return;if(f.get("next.span_type")!==k.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${f.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let g=f.get("next.route");if(g){let a=`${c} ${g}`;e.setAttributes({"next.route":g,"http.route":g,"next.span_name":a}),e.updateName(a)}else e.updateName(`${c} ${a.url}`)});e?await m(e):await d.withPropagatedContext(a.headers,()=>d.trace(k.BaseServerSpan.handleRequest,{spanName:`${c} ${a.url}`,kind:j.SpanKind.SERVER,attributes:{"http.method":c,"http.target":a.url}},m))}catch(a){if(p.isDev)throw a;(0,e.sendError)(b,500,"Internal Server Error")}finally{null==c.waitUntil||c.waitUntil.call(c,Promise.resolve())}}d()}catch(a){d(a)}})}};var b=require("../../../webpack-api-runtime.js");b.C(a);var c=b.X(0,[9705,5746],()=>b(b.s=99249));module.exports=c})();
|