@customize-agent/server 4.18.6 → 4.18.8

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.
Files changed (93) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +20 -20
  3. package/.next/prerender-manifest.json +3 -3
  4. package/.next/server/chunks/4605.js +131 -0
  5. package/.next/server/chunks/5284.js +23 -11
  6. package/.next/server/chunks/6482.js +4 -3
  7. package/.next/server/chunks/8661.js +1 -1
  8. package/.next/server/middleware-build-manifest.js +1 -1
  9. package/.next/server/pages/404.html +1 -1
  10. package/.next/server/pages/500.html +1 -1
  11. package/.next/server/pages/api/assets/generated/preview.js +1 -1
  12. package/.next/server/pages/api/assets/generated/preview.js.nft.json +1 -1
  13. package/.next/server/pages/api/assets/generated.js +1 -1
  14. package/.next/server/pages/api/assets/generated.js.nft.json +1 -1
  15. package/.next/server/pages/api/config/embedding/healthCheck.js.nft.json +1 -1
  16. package/.next/server/pages/api/documents/chapter/regenerate.js +1 -1
  17. package/.next/server/pages/api/documents/chapter/regenerate.js.nft.json +1 -1
  18. package/.next/server/pages/api/documents/export.js +1 -1
  19. package/.next/server/pages/api/documents/export.js.nft.json +1 -1
  20. package/.next/server/pages/api/documents/generate.js +2 -2
  21. package/.next/server/pages/api/documents/generate.js.nft.json +1 -1
  22. package/.next/server/pages/api/documents/generated/[id].js +1 -1
  23. package/.next/server/pages/api/documents/generated/[id].js.nft.json +1 -1
  24. package/.next/server/pages/api/documents/generated.js +1 -1
  25. package/.next/server/pages/api/documents/generated.js.nft.json +1 -1
  26. package/.next/server/pages/api/documents/templates.js +1 -1
  27. package/.next/server/pages/api/documents/templates.js.nft.json +1 -1
  28. package/.next/server/pages/api/jobs/[id].js.nft.json +1 -1
  29. package/.next/server/pages/api/jobs.js.nft.json +1 -1
  30. package/.next/server/pages/api/kb/categories.js.nft.json +1 -1
  31. package/.next/server/pages/api/kb/duplicates.js.nft.json +1 -1
  32. package/.next/server/pages/api/kb/evaluate.js.nft.json +1 -1
  33. package/.next/server/pages/api/kb/files/detail.js.nft.json +1 -1
  34. package/.next/server/pages/api/kb/files/export.js.nft.json +1 -1
  35. package/.next/server/pages/api/kb/files/open.js.nft.json +1 -1
  36. package/.next/server/pages/api/kb/files/preview-pdf-page.js.nft.json +1 -1
  37. package/.next/server/pages/api/kb/files/reindex.js +1 -1
  38. package/.next/server/pages/api/kb/files/reindex.js.nft.json +1 -1
  39. package/.next/server/pages/api/kb/files/search.js.nft.json +1 -1
  40. package/.next/server/pages/api/kb/files/tree.js.nft.json +1 -1
  41. package/.next/server/pages/api/kb/files.js.nft.json +1 -1
  42. package/.next/server/pages/api/kb/ignore.js.nft.json +1 -1
  43. package/.next/server/pages/api/kb/intelligence.js +1 -1
  44. package/.next/server/pages/api/kb/intelligence.js.nft.json +1 -1
  45. package/.next/server/pages/api/kb/operations.js.nft.json +1 -1
  46. package/.next/server/pages/api/kb/reindex.js +1 -1
  47. package/.next/server/pages/api/kb/reindex.js.nft.json +1 -1
  48. package/.next/server/pages/api/kb/search.js.nft.json +1 -1
  49. package/.next/server/pages/api/kb/stats.js.nft.json +1 -1
  50. package/.next/server/pages/api/kb/tags.js.nft.json +1 -1
  51. package/.next/server/pages/api/kb/upload/complete.js +1 -1
  52. package/.next/server/pages/api/kb/upload/complete.js.nft.json +1 -1
  53. package/.next/server/pages/api/kb/upload/progress.js.nft.json +1 -1
  54. package/.next/server/pages/api/kb/upload.js +1 -1
  55. package/.next/server/pages/api/kb/upload.js.nft.json +1 -1
  56. package/.next/server/pages/api/prompt.js.nft.json +1 -1
  57. package/.next/server/pages/api/template-references.js.nft.json +1 -1
  58. package/.next/server/pages/asset-library.html +1 -1
  59. package/.next/server/pages/document-roles.html +1 -1
  60. package/.next/server/pages/documents.html +1 -1
  61. package/.next/server/pages/guide.html +1 -1
  62. package/.next/server/pages/index.html +1 -1
  63. package/.next/server/pages/knowledge/file-detail.html +1 -1
  64. package/.next/server/pages/knowledge/files.html +1 -1
  65. package/.next/server/pages/knowledge/manage.html +1 -1
  66. package/.next/server/pages/knowledge.html +1 -1
  67. package/.next/server/pages/models.html +1 -1
  68. package/.next/server/pages/overview.html +1 -1
  69. package/.next/server/pages/prompt.html +1 -1
  70. package/.next/server/pages/settings.html +1 -1
  71. package/.next/server/pages/system/logs.html +1 -1
  72. package/.next/server/pages/template-references.html +1 -1
  73. package/.next/server/pages-manifest.json +27 -27
  74. package/.next/static/{mJGget74xAKOGvhgTaIXm → CULEYxFJ1kTZDwUKJ6GxG}/_buildManifest.js +1 -1
  75. package/.next/static/chunks/{224-790cf01fcf6820ee.js → 224-0415408fff1d1c8b.js} +1 -1
  76. package/.next/static/chunks/260-580088826d643423.js +1 -0
  77. package/.next/static/chunks/{289-42781fb699646699.js → 289-fc1b25371e004552.js} +1 -1
  78. package/.next/static/chunks/788-dca0d550ad6bd8b2.js +1 -0
  79. package/.next/static/chunks/pages/documents-ed4d3da950c116b7.js +1 -0
  80. package/.next/static/chunks/pages/knowledge/files-33782c4b41f33750.js +1 -0
  81. package/.next/static/chunks/pages/knowledge/manage-5b1b4d3804752f8b.js +1 -0
  82. package/.next/static/chunks/pages/prompt-edc2dfea09aaedc1.js +1 -0
  83. package/.next/static/chunks/pages/system/logs-ee67e2c93147dfc3.js +1 -0
  84. package/package.json +2 -2
  85. package/.next/server/chunks/8865.js +0 -142
  86. package/.next/static/chunks/260-244c94eacd903620.js +0 -1
  87. package/.next/static/chunks/788-e98701da4d6ca319.js +0 -1
  88. package/.next/static/chunks/pages/documents-7e063a1115c053eb.js +0 -1
  89. package/.next/static/chunks/pages/knowledge/files-98ec72061cdb64d3.js +0 -1
  90. package/.next/static/chunks/pages/knowledge/manage-558987c599dc4cd5.js +0 -1
  91. package/.next/static/chunks/pages/prompt-839287c514595765.js +0 -1
  92. package/.next/static/chunks/pages/system/logs-2e849bcdf371d791.js +0 -1
  93. /package/.next/static/{mJGget74xAKOGvhgTaIXm → CULEYxFJ1kTZDwUKJ6GxG}/_ssgManifest.js +0 -0
@@ -10,13 +10,14 @@ ${c}`,"写作要求:必须严格按“小节任务”逐项输出,每个任
10
10
  ${c}`}).join("\n");return["【Agent 章节任务】(主题块成稿模式)",`任务ID:${a.taskId}`,`章节:${a.title}`,a.graphContext?`图谱上下文:
11
11
  ${a.graphContext}`:"",c?`事实卡:
12
12
  ${c}`:"",`主题块与 H4 要点(必须严格按此两层结构成稿):
13
- ${d}`,"写作要求:必须严格按“主题块→H4 要点”两层结构输出,三级标题与 H4 要点标题必须与给定标题完全一致,不得改名、合并或遗漏 H4 要点;每个 H4 要点必须覆盖其标注的全部评分细目内容,但不得为这些评分细目单独开设小节标题;项目专属事实只使用事实卡、图谱上下文和绑定证据,法律法规、标准规范等公共知识可直接引用;不得输出后台话术、兜底措辞、待确认、不适用;缺少项目事实的小节不得编造。"].filter(Boolean).join("\n\n")}},44505:(a,b,c)=>{c.d(b,{$h:()=>a$,EN:()=>a_,Ep:()=>aY,Et:()=>af,Fr:()=>aq,GG:()=>aU,H:()=>aj,Ih:()=>U,K2:()=>a0,LA:()=>at,LF:()=>a3,N$:()=>al,P3:()=>y,Pt:()=>aW,Rv:()=>aN,U$:()=>P,Vc:()=>aL,Xc:()=>V,YN:()=>T,a8:()=>m,bq:()=>ar,cJ:()=>K,cT:()=>ao,cf:()=>k,cl:()=>aK,dF:()=>R,eS:()=>i,ek:()=>au,fE:()=>aZ,fQ:()=>ax,hI:()=>aV,hu:()=>aM,l4:()=>O,lR:()=>aI,mC:()=>ab,qj:()=>ac,r8:()=>z,rA:()=>u,s3:()=>F,sn:()=>H,t1:()=>N,u2:()=>o,ub:()=>aH,vH:()=>D,y2:()=>M,yR:()=>a4,z4:()=>as,zP:()=>aR});var d=c(78217),e=c(22157),f=c(37047),g=c(41991),h=c(71678);let i=/(\d{4})\s*年\s*(\d{1,2})\s*月\s*(\d{1,2})\s*日/gu,j=/进度计划|里程碑|节点安排|验收时间|完成日期|竣工日期|移交日期|合同签订/u;function k(a,b){let c=[],d=function(a){let b=new Set;for(let c of[...a.project,...a.schedule,...a.quality,...a.resources,...a.preciseFacts].map(a=>`${a.key||""}${a.fieldName||""}${(0,e.lG)(a.value)}`))for(let a of c.matchAll(i))b.add(`${a[1]}年${a[2]}月${a[3]}日`);return b}(b),f=[...b.schedule,...b.project].map(a=>`${a.key||""}${(0,e.lG)(a.value)}`).join(" "),g=i.test(f);for(let b of(i.lastIndex=0,a.matchAll(i))){let e=`${b[1]}年${b[2]}月${b[3]}日`;if(d.has(e))continue;let f=Math.max(0,(b.index||0)-40),h=a.slice(f,(b.index||0)+e.length+40);g&&j.test(h)||c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`正文编造开工日期“${e}”:绑定资料未提供该具体日历日期(招标文件以开工令时间为准)`,suggestion:`删除自行设定的具体日期,统一改写为“以开工令时间为准”;如为进度计划节点日期,必须标注为计划推算节点并保持与总工期一致。`})}return c.slice(0,3)}let l=/(单体建筑面积|总建筑面积|建筑面积)[^。;;\n]{0,30}?([\d,]+(?:\.\d+)?)\s*(?:㎡|m2|m²|平方米)/gu;function m(a,b){let c=[],d=function(a){let b=[];for(let c of[...a.project,...a.preciseFacts].map(a=>`${a.fieldName||a.key||""}:${(0,e.lG)(a.value)}`)){let a=/(总占地面积|占地面积|单体建筑面积|总建筑面积|建筑面积|地上建筑面积|地下建筑面积|总用地面积)/u.exec(c)?.[1],d=/([\d,]+(?:\.\d+)?)\s*(?:㎡|m2|m²|平方米)/u.exec(c);if(!a||!d)continue;let e=Number(d[1].replace(/[,,]/gu,""));Number.isFinite(e)&&e>0&&b.push({label:a,value:e})}return b}(b),f=new Set(d.filter(a=>/占地面积/u.test(a.label)).map(a=>a.value)),g=new Set(d.filter(a=>/建筑面积/u.test(a.label)&&!/地上|地下/u.test(a.label)).map(a=>a.value));if(0===f.size||0===g.size)return c;for(let b of a.matchAll(l)){let a=Number(b[2].replace(/[,,]/gu,""));if(!Number.isFinite(a)||a<=0||!f.has(a)||g.has(a))continue;let d=b[1],e=[...g].join("、");c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`字段-数值错配:“${d} ${b[2]}㎡”将总占地面积误作${d}(绑定资料${d}数值为 ${e}㎡)`,suggestion:`总占地面积与建筑面积是两个独立字段,必须严格区分:将“${d} ${b[2]}㎡”改为资料数值“${d} ${e}㎡”,总占地面积保持独立表述。`})}return c.slice(0,3)}let n=/(地上[^。;;]{0,30}?([\d,]+(?:\.\d+)?)\s*(?:㎡|m2|m²|平方米)[^。;;]{0,40}?地下[^。;;]{0,30}?([\d,]+(?:\.\d+)?)\s*(?:㎡|m2|m²|平方米)[^。;;]{0,60}?(?:单体建筑面积|总建筑面积)[^。;;]{0,20}?([\d,]+(?:\.\d+)?)\s*(?:㎡|m2|m²|平方米))/gu;function o(a){let b=[];for(let c of a.matchAll(n)){let a=Number(c[2].replace(/[,,]/gu,"")),d=Number(c[3].replace(/[,,]/gu,"")),e=Number(c[4].replace(/[,,]/gu,""));if(![a,d,e].every(Number.isFinite))continue;let f=a+d,g=Math.max(1,.001*e);Math.abs(f-e)>g&&b.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`面积算术矛盾:地上 ${a}㎡ + 地下 ${d}㎡ = ${f}㎡,与同句“单体建筑面积 ${e}㎡”不符(差 ${Math.abs(f-e).toFixed(2)}㎡)`,suggestion:`地上与地下面积之和必须等于单体建筑面积:按绑定资料统一三者数值,删除错误数值表述。`})}return b.slice(0,3)}let p=/(?:高峰期|高峰|峰值)[^。;;\n]{0,20}?(?:约)?\s*([\d,]+)\s*人/g,q=/(?:劳动力|作业人员|施工人员)[^。;;\n]{0,16}?(?:约)?\s*([\d,]+)\s*人/g,r=["基坑与基础","二次结构与砌体","施工准备","地下结构","主体结构","装饰装修","机电安装","室外工程","收尾调试","临时设施","土方","基坑","基础"];function s(a,b){let c,d=a.slice(0,b),e=Math.max(d.lastIndexOf("。"),d.lastIndexOf(";"),d.lastIndexOf(";"),d.lastIndexOf("\n")),f=a.slice(Math.max(0,e+1),b),g=-1;for(let a of r){let b=f.lastIndexOf(a);b>g&&(g=b,c=a)}return c}function t(a){let b=[],c=a.split(/\r?\n/u),d=/^\|.+\|$/u,e=/阶段|时期|工期|工序|进度/u,f=/人数|劳动力|作业人员|施工人员|投入人数/u,g=/^:?-{3,}:?$/u,h=a=>a.replace(/[*_`~]/gu,"").trim();for(let a=0;a<c.length;a+=1){let i,j,k;if(!d.test(c[a].trim()))continue;let l=[];for(;a<c.length&&d.test(c[a].trim());)l.push(c[a].trim()),a+=1;if(a-=1,l.length<3)continue;let m=a=>a.split("|").map(a=>a.trim()).slice(1,-1),n=l.findIndex((a,b)=>b>0&&m(a).every(a=>g.test(a)));if(1===n&&l.length>=3)i=m(l[0]).map(h),j=l.slice(2);else{if(-1!==n||!(l.length>=2))continue;let a=m(l[0]).map(h);if(!(e.test(a.join("|"))&&f.test(a.join("|"))))continue;i=a,j=l.slice(1)}let o=i.findIndex(a=>e.test(a)),p=i.findIndex(a=>/高峰|峰值/u.test(a)&&f.test(a)),q=p>=0?p:i.findIndex(a=>f.test(a));if(q<0||o>=0&&o===q||/岗位/u.test(i.join("|"))&&/职责|持证|职称/u.test(i.join("|")))continue;let r=[],s=0;for(let a of j){let b=m(a),c=b[q]||"",d=/^([\d,]+)\s*人?$/u.exec(c);if(!d)continue;let e=Number(d[1].replace(/[,,]/gu,""));if(Number.isFinite(e)&&!(e<=0)){if(b.some((a,b)=>b!==q&&/合计|总计|小计/u.test(a))){k=e;continue}r.push(e),s+=e}}if(0===r.length&&void 0===k)continue;let t=Math.max(...r.length>0?r:[k||0]);b.push({countCells:r,totalCell:k,detailSum:s,peak:t,hasPeakCol:p>=0})}return b}function u(a){let b=[],c=[];for(let b of[p,q])for(let d of a.matchAll(b)){let b=a.lastIndexOf("\n",d.index)+1,e=a.indexOf("\n",d.index);-1===e&&(e=a.length);let f=a.slice(b,e);if(/^\s*\|.*\|\s*$/u.test(f))continue;let g=Number(d[1].replace(/[,,]/gu,"")),h=d.index+d[0].indexOf(d[1]);Number.isFinite(g)&&g>0&&c.push({value:g,text:d[0].trim().slice(0,40),stage:s(a,h)})}let d=t(a),e=d.map(a=>a.peak),f=(a,c)=>b.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:a,suggestion:c});for(let a=0;a<c.length;a+=1)for(let b=a+1;b<c.length;b+=1){let[d,e]=[c[a],c[b]];if(d.stage&&e.stage&&d.stage!==e.stage)continue;if(!d.stage!=!e.stage){let[a,b]=d.stage?[e,d]:[d,e];if(a.value>=.9*b.value)continue}let g=Math.abs(d.value-e.value)/Math.max(d.value,e.value);if(g>.3){f(`劳动力数据矛盾:正文“${d.text}”(${d.value} 人)与“${e.text}”(${e.value} 人)互斥(相差 ${Math.round(100*g)}%)`,"劳动力峰值数据必须全文唯一:以分阶段投入明细表为准统一正文各处峰值表述,删除矛盾数字。"),a=c.length;break}}let g=d.filter(a=>a.hasPeakCol).map(a=>a.peak);if(g.length>=2){let a=Math.max(...g),b=Math.min(...g),c=Math.abs(a-b)/a;c>.3&&f(`劳动力数据矛盾:分阶段投入明细表峰值 ${b} 人与另一劳动力表峰值 ${a} 人互斥(相差 ${Math.round(100*c)}%)`,"劳动力峰值数据必须全文唯一:统一各劳动力表格的峰值数据,删除矛盾表格数字。")}let h=c.reduce((a,b)=>Math.max(a,b.value),0),i=e.length>0?Math.max(...e):void 0;if(void 0!==i&&h>0&&h>1.3*i){let a=c.find(a=>a.value===h)?.text||"";f(`劳动力数据矛盾:正文表述“${a}”达 ${h} 人,而分阶段投入明细表最大峰值为 ${i} 人(超出 ${Math.round((h-i)/i*100)}%)`,"劳动力投入数据必须全文统一:以分阶段明细表为准复核正文峰值表述,删除与表格矛盾的“高峰期 X 人”措辞或调整表格数据。")}let j=[];for(let b of a.matchAll(/(?:高峰期|高峰|峰值)[^。;;\n]{0,16}?控制(?:在|为|到)?(?:约)?\s*([\d,]+)\s*人(?:以内|以下|之内)?/gu)){let a=Number(b[1].replace(/[,,]/gu,""));Number.isFinite(a)&&a>0&&j.push(a)}if(j.length>0){let a=Math.max(...j),b=[...c,...void 0!==i?[{value:i}]:[]].filter(b=>b.value>a);if(b.length>0){let c=Math.max(...b.map(a=>a.value));f(`劳动力数据矛盾:正文“高峰期总人数控制在${a}人”的上限表述与峰值表述 ${c} 人不自洽(阶段高峰投入超出控制上限 ${Math.round((c-a)/a*100)}%)`,"总量控制上限与各阶段峰值必须自洽:阶段高峰人数不得超过全文宣称的高峰控制人数;以分阶段投入明细表为准修正控制目标或各阶段峰值表述。")}}for(let a of d){if(void 0===a.totalCell||a.countCells.length<2)continue;let b=Math.abs(a.totalCell-a.detailSum)/Math.max(a.totalCell,a.detailSum);b>.1&&f(`劳动力数据矛盾:劳动力表合计行 ${a.totalCell} 人与明细行之和 ${a.detailSum} 人不符(差 ${Math.round(100*b)}%)`,"劳动力表合计必须等于各明细行人数之和:统一合计行与明细行数据,删除矛盾数字。")}let k=[...a.matchAll(/([\d,]+)\s*(?:个)?工日/gu)].map(a=>Number(a[1].replace(/[,,]/gu,""))).filter(a=>Number.isFinite(a)&&a>0),l=[...a.matchAll(/(?:工期|总工期|计划工期)[^。;;\n]{0,16}?(\d{2,4})\s*(?:个)?(?:日历)?天/gu)].map(a=>Number(a[1])).filter(a=>Number.isFinite(a)&&a>=30&&a<=3e3);if(k.length>0&&h>0&&l.length>0){let a=Math.max(...k),b=Math.max(...l),c=h*b*1.3,d=h*b*.1;(a>c||a<d)&&f(`劳动力数据矛盾:总工日 ${a} 个与峰值 ${h} 人\xd7总工期 ${b} 天不自洽(合理区间约 ${Math.round(d)}~${Math.round(c)} 个)`,"总工日必须与劳动力峰值和总工期量级自洽:按各阶段人数\xd7阶段工期重算总工日,或修正峰值人数/总工期表述。")}return b.slice(0,5)}let v={slope:"基坑放坡开挖、土钉墙喷锚支护坡面",pile:"钻孔灌注桩、排桩、地下连续墙围护结构"},w=/钻孔灌注桩|高压旋喷桩|旋喷桩|搅拌桩|灌注桩|排桩|地下连续墙|咬合桩|支护桩/u,x=/土钉|放坡|喷锚|挂网|锚杆|护坡/u;function y(a){let b=a?.canonical?.byKey.foundation_support_form?.value,c=(0,e.lG)(b);if(!c)return;let d=x.test(c),f=w.test(c);return d&&!f?"slope":f&&!d?"pile":void 0}async function z(a,b){let c=[],d=a.split(/\n{2,}/u).filter(a=>a.trim().length>=30);if(0===d.length)return c;let e=await (0,f.Mv)(d,Object.values(v)),g=a=>e(a,v.slope)>=f.Eh,h=a=>w.test(a)&&e(a,v.pile)>=f.Eh,i=d.filter(a=>g(a)&&!h(a)),j=d.filter(a=>h(a)&&!g(a));return 0===i.length||0===j.length||c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`基坑支护方案前后不一致:放坡喷锚类支护表述与灌注桩排桩类支护表述分别成段出现(放坡喷锚类 ${i.length} 段、灌注桩排桩类 ${j.length} 段),属跨模板拼接断裂${"slope"===b?";权威体系判定(图纸/地质槽位):土钉墙、锚杆等放坡喷锚类——删除灌注桩排桩类表述":"pile"===b?";权威体系判定(图纸/地质槽位):灌注桩排桩类——删除放坡喷锚类独立成段表述":""}`,suggestion:"支护形式必须全文统一为一种体系(以图纸/地质条件为准):确定采用放坡喷锚或灌注桩排桩后,删除另一种体系的表述,并补充基坑开挖深度数值支撑危大分级判定。"}),c}let A=[[/高压旋喷桩/gu,"土钉墙"],[/旋喷桩/gu,"土钉墙"],[/钻孔灌注桩/gu,"土钉墙"],[/咬合桩/gu,"土钉墙"],[/地下连续墙/gu,"土钉墙"],[/搅拌桩/gu,"土钉墙"],[/灌注桩/gu,"土钉墙"],[/支护桩/gu,"土钉墙"],[/排桩/gu,"土钉墙"],[/冠梁/gu,"坡顶"]],B=/高压旋喷桩机|旋喷桩机|搅拌桩机|三轴搅拌|成槽机|灌注桩机/u,C=/^#{2,4}\s+(?:\d+(?:\.\d+)*\s+)?[^\n]*(?:危大工程(?:辨识)?(?:清单|识别)|危大(?:工程)?(?:及超危大)?(?:清单|识别|辨识))[^\n]*$/gmu;function D(a){let b=[],c=function(a){let b=a.split(/\r?\n/u),c=[];for(let a=0;a<b.length;a+=1){if(!C.test(b[a].trim()))continue;let d=[];for(let c=a+1;c<Math.min(b.length,a+30);c+=1){let a=b[c].trim();if(/^#{1,6}\s/u.test(a))break;let e=/^(?:\d+[.、.)]|[-*•])?\s*([^。;;|]{2,40})$/u.exec(a)?.[1];e&&d.push(e.replace(/^[\s\d.、()()【】-]+/u,"").replace(/[((【][^))】]*[))】]/gu,"").replace(/施工$/u,"").replace(/作业$/u,"").replace(/\s+/gu,"").trim())}d.length>=2&&c.push({title:b[a].trim(),items:[...new Set(d)]})}return c}(a);if(c.length<2)return b;for(let a=0;a<c.length;a+=1)for(let d=a+1;d<c.length;d+=1){let e=c[a],f=c[d],g=e.items.filter(a=>!f.items.includes(a)),h=f.items.filter(a=>!e.items.includes(a));(0!==g.length||0!==h.length)&&b.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`危大工程辨识清单不一致:“${e.title.slice(0,30)}”(${e.items.length} 项)与“${f.title.slice(0,30)}”(${f.items.length} 项)存在差异:前者独有【${g.join("、")||"无"}】,后者独有【${h.join("、")||"无"}】`,suggestion:"全文危大工程辨识清单必须唯一且一致:合并两处清单,统一项名、数量与分级表述,避免评标专家以清单矛盾质疑辨识深度。"})}return b.slice(0,3)}let E=[{name:"施工工地周边100%围挡",query:"施工工地周边设置围挡封闭管理"},{name:"物料堆放100%覆盖",query:"物料堆放覆盖防尘"},{name:"出入车辆100%冲洗",query:"出入车辆冲洗设施清洗出场"},{name:"施工现场地面100%硬化",query:"施工现场场地地面硬化"},{name:"拆迁工地100%湿法作业",query:"拆迁工地湿法作业洒水降尘"},{name:"渣土车辆100%密闭运输",query:"渣土车辆密闭运输防止遗撒"}];function F(a){let b=[];for(let c of a.split(/\r?\n/u)){let a=c.trim();if(!(!a||/^#{1,6}\s/u.test(a)||/^\s*\|/u.test(a)))for(let c of a.split(/(?<=[。!?!?;;])/u)){let a=c.trim();a.length>=8&&a.length<=120&&b.push(a)}}let c=[...new Set(b)];if(c.length<=400)return c;let d=Math.ceil(c.length/400);return c.filter((a,b)=>b%d==0).slice(0,400)}async function G(a,b){if(0===b.length||0===a.length)return new Map;let c=await (0,f.Mv)(a.map(a=>a.text),b);return new Map(a.map(a=>[a.key,b.some(b=>c(a.text,b)>=.6)]))}async function H(a){let b=[];if(!/扬尘|环保|文明施工|绿色施工/u.test(a))return b;let c=[...new Set(a.split(/\r?\n/u).flatMap(a=>{let b=a.trim();return!b||/^#{1,6}\s/u.test(b)||/^\s*\|/u.test(b)||!/围挡|覆盖|堆放|冲洗|硬化|湿法|密闭|渣土|扬尘|降尘/u.test(b)?[]:b.split(/(?<=[。!?!?;;])/u).map(a=>a.trim()).filter(a=>a.length>=8&&a.length<=120)}))],d=await G(E.map(a=>({key:a.name,text:a.query})),c),e=/(?:本项目|本工程|该工程|该项目|本标段|本施工项目)[^。;;\n]{0,30}(?:无拆迁|不涉及拆迁|无房屋拆除|无拆除)/u.test(a),f=E.filter(a=>!d.get(a.name)).filter(a=>!("拆迁工地100%湿法作业"===a.name&&e)).map(a=>a.name);return 0===f.length||b.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:`“扬尘治理六个百分百”未逐项落实:缺少【${f.join("、")}】(${E.length-f.length}/${E.length} 项命中)`,suggestion:"按检查规范第七部分要求逐条表述六项措施:工地周边100%围挡、物料堆放100%覆盖、出入车辆100%冲洗、施工现场地面100%硬化、拆迁工地100%湿法作业、渣土车辆100%密闭运输。"}),b}let I=/建设地点|工程地点|项目地点|实施地点|服务地点|交付地点|建设地址/u,J=["安徽","合肥","芜湖","蚌埠","淮南","马鞍山","淮北","铜陵","安庆","黄山","滁州","阜阳","宿州","六安","亳州","池州","宣城"];async function K(a,b){let c=[],d=b.project.some(a=>I.test(`${a.fieldName||""}${a.key||""}`)&&J.some(b=>(0,e.lG)(a.value).includes(b))),f=[];if(d&&(f.push({key:"award",text:"争创省市级优质工程奖、安全文明标准化工地"}),f.push({key:"greenQuant",text:"非传统水源利用率、废弃物回收率等绿色施工量化指标"})),f.push({key:"workInjury",text:"按规定为作业人员办理工伤保险"}),0===f.length)return c;let g=await G(f,F(a));return d&&(g.get("award")||c.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:"属地创优目标缺失:正文未提及省市级优质工程/文明标准化工地等创优目标(安徽省属地适配项)",suggestion:"在质量目标或创优规划小节补写与项目实际规模相符的创优目标表述;奖项名称必须以评分项要求提取结果(招标文件原文)为准逐字落位,禁止自行编造或替换为其他奖项名称。"}),/四节一环保|绿色施工|节水|节材|节能/u.test(a)&&!g.get("greenQuant")&&c.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:"四节一环保量化指标缺失:非传统水源利用率/漏损率/土方平衡率/废弃物回收率等均未量化(附录八基准对照项)",suggestion:"在绿色施工章节补充量化指标(非传统水源利用率、管网漏损率、土方平衡率、可回收废弃物回收率等)与模板周转次数,数值参考行业通用水平与附录八基准,不得编造极端值。"})),/劳务|农民工|工资/u.test(a)&&!g.get("workInjury")&&c.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:"工伤保险表述缺失:正文有劳务/农民工管理内容但未提及工伤保险缴纳(政策合规漏项)",suggestion:"在劳务管理/农民工工资保障小节补充“按规定为作业人员办理工伤保险”表述。"}),c}let L=RegExp(`(?:^|
13
+ ${d}`,"写作要求:必须严格按“主题块→H4 要点”两层结构输出,三级标题与 H4 要点标题必须与给定标题完全一致,不得改名、合并或遗漏 H4 要点;每个 H4 要点必须覆盖其标注的全部评分细目内容,但不得为这些评分细目单独开设小节标题;项目专属事实只使用事实卡、图谱上下文和绑定证据,法律法规、标准规范等公共知识可直接引用;不得输出后台话术、兜底措辞、待确认、不适用;缺少项目事实的小节不得编造。"].filter(Boolean).join("\n\n")}},44505:(a,b,c)=>{c.d(b,{$$:()=>ao,$h:()=>a3,EN:()=>a4,Ep:()=>a1,Et:()=>ai,Fr:()=>av,GG:()=>aZ,H:()=>an,Ih:()=>X,K2:()=>a5,LA:()=>ay,LF:()=>a8,N$:()=>aq,P3:()=>B,Pt:()=>a_,Rv:()=>aS,U$:()=>S,Vc:()=>aQ,Xc:()=>Y,YN:()=>W,a8:()=>m,bq:()=>aw,cJ:()=>N,cT:()=>at,cf:()=>k,cl:()=>aP,dF:()=>U,eS:()=>i,ek:()=>az,fE:()=>a2,fQ:()=>aC,hI:()=>a$,hu:()=>aR,l4:()=>R,lR:()=>aN,mC:()=>ae,qj:()=>af,r8:()=>C,rA:()=>x,s3:()=>I,sn:()=>K,t1:()=>Q,u2:()=>o,ub:()=>aM,vH:()=>G,y2:()=>P,yR:()=>a9,z4:()=>ax,zP:()=>aW});var d=c(78217),e=c(22157),f=c(37047),g=c(41991),h=c(71678);let i=/(\d{4})\s*年\s*(\d{1,2})\s*月\s*(\d{1,2})\s*日/gu,j=/进度计划|里程碑|节点安排|验收时间|完成日期|竣工日期|移交日期|合同签订/u;function k(a,b){let c=[],d=function(a){let b=new Set;for(let c of[...a.project,...a.schedule,...a.quality,...a.resources,...a.preciseFacts].map(a=>`${a.key||""}${a.fieldName||""}${(0,e.lG)(a.value)}`))for(let a of c.matchAll(i))b.add(`${a[1]}年${a[2]}月${a[3]}日`);return b}(b),f=[...b.schedule,...b.project].map(a=>`${a.key||""}${(0,e.lG)(a.value)}`).join(" "),g=i.test(f);for(let b of(i.lastIndex=0,a.matchAll(i))){let e=`${b[1]}年${b[2]}月${b[3]}日`;if(d.has(e))continue;let f=Math.max(0,(b.index||0)-40),h=a.slice(f,(b.index||0)+e.length+40);g&&j.test(h)||c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`正文编造开工日期“${e}”:绑定资料未提供该具体日历日期(招标文件以开工令时间为准)`,suggestion:`删除自行设定的具体日期,统一改写为“以开工令时间为准”;如为进度计划节点日期,必须标注为计划推算节点并保持与总工期一致。`})}return c.slice(0,3)}let l=/(单体建筑面积|总建筑面积|建筑面积)[^。;;\n]{0,30}?([\d,]+(?:\.\d+)?)\s*(?:㎡|m2|m²|平方米)/gu;function m(a,b){let c=[],d=function(a){let b=[];for(let c of[...a.project,...a.preciseFacts].map(a=>`${a.fieldName||a.key||""}:${(0,e.lG)(a.value)}`)){let a=/(总占地面积|占地面积|单体建筑面积|总建筑面积|建筑面积|地上建筑面积|地下建筑面积|总用地面积)/u.exec(c)?.[1],d=/([\d,]+(?:\.\d+)?)\s*(?:㎡|m2|m²|平方米)/u.exec(c);if(!a||!d)continue;let e=Number(d[1].replace(/[,,]/gu,""));Number.isFinite(e)&&e>0&&b.push({label:a,value:e})}return b}(b),f=new Set(d.filter(a=>/占地面积/u.test(a.label)).map(a=>a.value)),g=new Set(d.filter(a=>/建筑面积/u.test(a.label)&&!/地上|地下/u.test(a.label)).map(a=>a.value));if(0===f.size||0===g.size)return c;for(let b of a.matchAll(l)){let a=Number(b[2].replace(/[,,]/gu,""));if(!Number.isFinite(a)||a<=0||!f.has(a)||g.has(a))continue;let d=b[1],e=[...g].join("、");c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`字段-数值错配:“${d} ${b[2]}㎡”将总占地面积误作${d}(绑定资料${d}数值为 ${e}㎡)`,suggestion:`总占地面积与建筑面积是两个独立字段,必须严格区分:将“${d} ${b[2]}㎡”改为资料数值“${d} ${e}㎡”,总占地面积保持独立表述。`})}return c.slice(0,3)}let n=/(地上[^。;;]{0,30}?([\d,]+(?:\.\d+)?)\s*(?:㎡|m2|m²|平方米)[^。;;]{0,40}?地下[^。;;]{0,30}?([\d,]+(?:\.\d+)?)\s*(?:㎡|m2|m²|平方米)[^。;;]{0,60}?(?:单体建筑面积|总建筑面积)[^。;;]{0,20}?([\d,]+(?:\.\d+)?)\s*(?:㎡|m2|m²|平方米))/gu;function o(a){let b=[];for(let c of a.matchAll(n)){let a=Number(c[2].replace(/[,,]/gu,"")),d=Number(c[3].replace(/[,,]/gu,"")),e=Number(c[4].replace(/[,,]/gu,""));if(![a,d,e].every(Number.isFinite))continue;let f=a+d,g=Math.max(1,.001*e);Math.abs(f-e)>g&&b.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`面积算术矛盾:地上 ${a}㎡ + 地下 ${d}㎡ = ${f}㎡,与同句“单体建筑面积 ${e}㎡”不符(差 ${Math.abs(f-e).toFixed(2)}㎡)`,suggestion:`地上与地下面积之和必须等于单体建筑面积:按绑定资料统一三者数值,删除错误数值表述。`})}return b.slice(0,3)}let p=/(?:高峰期|高峰|峰值)[^。;;\n]{0,20}?(?:约)?\s*([\d,]+)\s*人/g,q=/(?:劳动力|作业人员|施工人员)[^。;;\n]{0,16}?(?:约)?\s*([\d,]+)\s*人/g,r=["基坑与基础","二次结构与砌体","施工准备","地下结构","主体结构","装饰装修","机电安装","室外工程","收尾调试","临时设施","土方","基坑","基础"],s=/项目经理|技术负责人|项目班子|管理人员|管理层|施工员|质量员|质检员|安全员|材料员|资料员|测量员|试验员|造价员|预算员/u,t=/钢筋工|混凝土工|架子工|砌筑工|抹灰工|防水工|油漆工|水暖工|管道工|电焊工|起重工|机械工|司索工|信号工|塔吊司机|测量工|试验工|木工|瓦工|焊工|电工|普工/u;function u(a,b,c,d){let e=Math.max(c,b-30),f=a.slice(e,b),g=Math.max(f.lastIndexOf(","),f.lastIndexOf("、"),f.lastIndexOf(","),f.lastIndexOf(";"),f.lastIndexOf(";"),f.lastIndexOf(":"),f.lastIndexOf(":"),f.lastIndexOf("。")),h=a.slice(g>=0?e+g+1:e,Math.min(d,b+12));if(s.test(h))return{group:"management"};let i=h.match(t);return i?.[0]?{group:"trade",trade:i[0]}:{group:"peak"}}function v(a,b){let c,d=a.slice(0,b),e=Math.max(d.lastIndexOf("。"),d.lastIndexOf(";"),d.lastIndexOf(";"),d.lastIndexOf("\n")),f=a.slice(Math.max(0,e+1),b),g=-1;for(let a of r){let b=f.lastIndexOf(a);b>g&&(g=b,c=a)}return c}function w(a){let b=[],c=a.split(/\r?\n/u),d=/^\|.+\|$/u,e=/阶段|时期|工期|工序|进度/u,f=/人数|劳动力|作业人员|施工人员|投入人数/u,g=/^:?-{3,}:?$/u,h=a=>a.replace(/[*_`~]/gu,"").trim();for(let a=0;a<c.length;a+=1){let i,j,k;if(!d.test(c[a].trim()))continue;let l=[];for(;a<c.length&&d.test(c[a].trim());)l.push(c[a].trim()),a+=1;if(a-=1,l.length<3)continue;let m=a=>a.split("|").map(a=>a.trim()).slice(1,-1),n=l.findIndex((a,b)=>b>0&&m(a).every(a=>g.test(a)));if(1===n&&l.length>=3)i=m(l[0]).map(h),j=l.slice(2);else{if(-1!==n||!(l.length>=2))continue;let a=m(l[0]).map(h);if(!(e.test(a.join("|"))&&f.test(a.join("|"))))continue;i=a,j=l.slice(1)}let o=i.findIndex(a=>e.test(a)),p=i.findIndex(a=>/高峰|峰值/u.test(a)&&f.test(a)),q=p>=0?p:i.findIndex(a=>f.test(a));if(q<0||o>=0&&o===q||/岗位/u.test(i.join("|"))&&/职责|持证|职称/u.test(i.join("|")))continue;let r=[],s=0;for(let a of j){let b=m(a),c=b[q]||"",d=/^([\d,]+)\s*人?$/u.exec(c);if(!d)continue;let e=Number(d[1].replace(/[,,]/gu,""));if(Number.isFinite(e)&&!(e<=0)){if(b.some((a,b)=>b!==q&&/合计|总计|小计/u.test(a))){k=e;continue}r.push(e),s+=e}}if(0===r.length&&void 0===k)continue;let t=Math.max(...r.length>0?r:[k||0]);b.push({countCells:r,totalCell:k,detailSum:s,peak:t,hasPeakCol:p>=0})}return b}function x(a){let b=[],c=[];for(let b of[p,q])for(let d of a.matchAll(b)){let b=a.lastIndexOf("\n",d.index)+1,e=a.indexOf("\n",d.index);-1===e&&(e=a.length);let f=a.slice(b,e);if(/^\s*\|.*\|\s*$/u.test(f))continue;let g=Number(d[1].replace(/[,,]/gu,"")),h=d.index+d[0].indexOf(d[1]);if(Number.isFinite(g)&&g>0){let{group:f,trade:i}=u(a,h,b,e);c.push({value:g,text:d[0].trim().slice(0,40),stage:v(a,h),group:f,trade:i})}}let d=w(a),e=d.map(a=>a.peak),f=(a,c)=>b.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:a,suggestion:c});for(let a=0;a<c.length;a+=1)for(let b=a+1;b<c.length;b+=1){let[d,e]=[c[a],c[b]];if(d.group!==e.group||"trade"===d.group&&d.trade!==e.trade||d.stage&&e.stage&&d.stage!==e.stage)continue;if(!d.stage!=!e.stage){let[a,b]=d.stage?[e,d]:[d,e];if(a.value>=.9*b.value)continue}let g=Math.abs(d.value-e.value)/Math.max(d.value,e.value);if(g>.3){f(`劳动力数据矛盾:正文“${d.text}”(${d.value} 人)与“${e.text}”(${e.value} 人)互斥(相差 ${Math.round(100*g)}%)`,"劳动力峰值数据必须全文唯一:以分阶段投入明细表为准统一正文各处峰值表述,删除矛盾数字。"),a=c.length;break}}let g=d.filter(a=>a.hasPeakCol).map(a=>a.peak);if(g.length>=2){let a=Math.max(...g),b=Math.min(...g),c=Math.abs(a-b)/a;c>.3&&f(`劳动力数据矛盾:分阶段投入明细表峰值 ${b} 人与另一劳动力表峰值 ${a} 人互斥(相差 ${Math.round(100*c)}%)`,"劳动力峰值数据必须全文唯一:统一各劳动力表格的峰值数据,删除矛盾表格数字。")}let h=c.filter(a=>"peak"===a.group),i=h.reduce((a,b)=>Math.max(a,b.value),0),j=e.length>0?Math.max(...e):void 0;if(void 0!==j&&i>0&&i>1.3*j){let a=h.find(a=>a.value===i)?.text||"";f(`劳动力数据矛盾:正文表述“${a}”达 ${i} 人,而分阶段投入明细表最大峰值为 ${j} 人(超出 ${Math.round((i-j)/j*100)}%)`,"劳动力投入数据必须全文统一:以分阶段明细表为准复核正文峰值表述,删除与表格矛盾的“高峰期 X 人”措辞或调整表格数据。")}let k=[];for(let b of a.matchAll(/(?:高峰期|高峰|峰值)[^。;;\n]{0,16}?控制(?:在|为|到)?(?:约)?\s*([\d,]+)\s*人(?:以内|以下|之内)?/gu)){let a=Number(b[1].replace(/[,,]/gu,""));Number.isFinite(a)&&a>0&&k.push(a)}if(k.length>0){let a=Math.max(...k),b=[...c,...void 0!==j?[{value:j}]:[]].filter(b=>b.value>a);if(b.length>0){let c=Math.max(...b.map(a=>a.value));f(`劳动力数据矛盾:正文“高峰期总人数控制在${a}人”的上限表述与峰值表述 ${c} 人不自洽(阶段高峰投入超出控制上限 ${Math.round((c-a)/a*100)}%)`,"总量控制上限与各阶段峰值必须自洽:阶段高峰人数不得超过全文宣称的高峰控制人数;以分阶段投入明细表为准修正控制目标或各阶段峰值表述。")}}for(let a of d){if(void 0===a.totalCell||a.countCells.length<2)continue;let b=Math.abs(a.totalCell-a.detailSum)/Math.max(a.totalCell,a.detailSum);b>.1&&f(`劳动力数据矛盾:劳动力表合计行 ${a.totalCell} 人与明细行之和 ${a.detailSum} 人不符(差 ${Math.round(100*b)}%)`,"劳动力表合计必须等于各明细行人数之和:统一合计行与明细行数据,删除矛盾数字。")}let l=[...a.matchAll(/([\d,]+)\s*(?:个)?工日/gu)].map(a=>Number(a[1].replace(/[,,]/gu,""))).filter(a=>Number.isFinite(a)&&a>0),m=[...a.matchAll(/(?:工期|总工期|计划工期)[^。;;\n]{0,16}?(\d{2,4})\s*(?:个)?(?:日历)?天/gu)].map(a=>Number(a[1])).filter(a=>Number.isFinite(a)&&a>=30&&a<=3e3);if(l.length>0&&i>0&&m.length>0){let a=Math.max(...l),b=Math.max(...m),c=i*b*1.3,d=i*b*.1;(a>c||a<d)&&f(`劳动力数据矛盾:总工日 ${a} 个与峰值 ${i} 人\xd7总工期 ${b} 天不自洽(合理区间约 ${Math.round(d)}~${Math.round(c)} 个)`,"总工日必须与劳动力峰值和总工期量级自洽:按各阶段人数\xd7阶段工期重算总工日,或修正峰值人数/总工期表述。")}return b.slice(0,5)}let y={slope:"基坑放坡开挖、土钉墙喷锚支护坡面",pile:"钻孔灌注桩、排桩、地下连续墙围护结构"},z=/钻孔灌注桩|高压旋喷桩|旋喷桩|搅拌桩|灌注桩|排桩|地下连续墙|咬合桩|支护桩/u,A=/土钉|放坡|喷锚|挂网|锚杆|护坡/u;function B(a){let b=a?.canonical?.byKey.foundation_support_form?.value,c=(0,e.lG)(b);if(!c)return;let d=A.test(c),f=z.test(c);return d&&!f?"slope":f&&!d?"pile":void 0}async function C(a,b){let c=[],d=a.split(/\n{2,}/u).filter(a=>a.trim().length>=30);if(0===d.length)return c;let e=await (0,f.Mv)(d,Object.values(y)),g=a=>e(a,y.slope)>=f.Eh,h=a=>z.test(a)&&e(a,y.pile)>=f.Eh,i=d.filter(a=>g(a)&&!h(a)),j=d.filter(a=>h(a)&&!g(a));return 0===i.length||0===j.length||c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`基坑支护方案前后不一致:放坡喷锚类支护表述与灌注桩排桩类支护表述分别成段出现(放坡喷锚类 ${i.length} 段、灌注桩排桩类 ${j.length} 段),属跨模板拼接断裂${"slope"===b?";权威体系判定(图纸/地质槽位):土钉墙、锚杆等放坡喷锚类——删除灌注桩排桩类表述":"pile"===b?";权威体系判定(图纸/地质槽位):灌注桩排桩类——删除放坡喷锚类独立成段表述":""}`,suggestion:"支护形式必须全文统一为一种体系(以图纸/地质条件为准):确定采用放坡喷锚或灌注桩排桩后,删除另一种体系的表述,并补充基坑开挖深度数值支撑危大分级判定。"}),c}let D=[[/高压旋喷桩/gu,"土钉墙"],[/旋喷桩/gu,"土钉墙"],[/钻孔灌注桩/gu,"土钉墙"],[/咬合桩/gu,"土钉墙"],[/地下连续墙/gu,"土钉墙"],[/搅拌桩/gu,"土钉墙"],[/灌注桩/gu,"土钉墙"],[/支护桩/gu,"土钉墙"],[/排桩/gu,"土钉墙"],[/冠梁/gu,"坡顶"]],E=/高压旋喷桩机|旋喷桩机|搅拌桩机|三轴搅拌|成槽机|灌注桩机/u,F=/^#{2,4}\s+(?:\d+(?:\.\d+)*\s+)?[^\n]*(?:危大工程(?:辨识)?(?:清单|识别)|危大(?:工程)?(?:及超危大)?(?:清单|识别|辨识))[^\n]*$/gmu;function G(a){let b=[],c=function(a){let b=a.split(/\r?\n/u),c=[];for(let a=0;a<b.length;a+=1){if(!F.test(b[a].trim()))continue;let d=[];for(let c=a+1;c<Math.min(b.length,a+30);c+=1){let a=b[c].trim();if(/^#{1,6}\s/u.test(a))break;let e=/^(?:\d+[.、.)]|[-*•])?\s*([^。;;|]{2,40})$/u.exec(a)?.[1];e&&d.push(e.replace(/^[\s\d.、()()【】-]+/u,"").replace(/[((【][^))】]*[))】]/gu,"").replace(/施工$/u,"").replace(/作业$/u,"").replace(/\s+/gu,"").trim())}d.length>=2&&c.push({title:b[a].trim(),items:[...new Set(d)]})}return c}(a);if(c.length<2)return b;for(let a=0;a<c.length;a+=1)for(let d=a+1;d<c.length;d+=1){let e=c[a],f=c[d],g=e.items.filter(a=>!f.items.includes(a)),h=f.items.filter(a=>!e.items.includes(a));(0!==g.length||0!==h.length)&&b.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`危大工程辨识清单不一致:“${e.title.slice(0,30)}”(${e.items.length} 项)与“${f.title.slice(0,30)}”(${f.items.length} 项)存在差异:前者独有【${g.join("、")||"无"}】,后者独有【${h.join("、")||"无"}】`,suggestion:"全文危大工程辨识清单必须唯一且一致:合并两处清单,统一项名、数量与分级表述,避免评标专家以清单矛盾质疑辨识深度。"})}return b.slice(0,3)}let H=[{name:"施工工地周边100%围挡",query:"施工工地周边设置围挡封闭管理"},{name:"物料堆放100%覆盖",query:"物料堆放覆盖防尘"},{name:"出入车辆100%冲洗",query:"出入车辆冲洗设施清洗出场"},{name:"施工现场地面100%硬化",query:"施工现场场地地面硬化"},{name:"拆迁工地100%湿法作业",query:"拆迁工地湿法作业洒水降尘"},{name:"渣土车辆100%密闭运输",query:"渣土车辆密闭运输防止遗撒"}];function I(a){let b=[];for(let c of a.split(/\r?\n/u)){let a=c.trim();if(!(!a||/^#{1,6}\s/u.test(a)||/^\s*\|/u.test(a)))for(let c of a.split(/(?<=[。!?!?;;])/u)){let a=c.trim();a.length>=8&&a.length<=120&&b.push(a)}}let c=[...new Set(b)];if(c.length<=400)return c;let d=Math.ceil(c.length/400);return c.filter((a,b)=>b%d==0).slice(0,400)}async function J(a,b){if(0===b.length||0===a.length)return new Map;let c=await (0,f.Mv)(a.map(a=>a.text),b);return new Map(a.map(a=>[a.key,b.some(b=>c(a.text,b)>=.6)]))}async function K(a){let b=[];if(!/扬尘|环保|文明施工|绿色施工/u.test(a))return b;let c=[...new Set(a.split(/\r?\n/u).flatMap(a=>{let b=a.trim();return!b||/^#{1,6}\s/u.test(b)||/^\s*\|/u.test(b)||!/围挡|覆盖|堆放|冲洗|硬化|湿法|密闭|渣土|扬尘|降尘/u.test(b)?[]:b.split(/(?<=[。!?!?;;])/u).map(a=>a.trim()).filter(a=>a.length>=8&&a.length<=120)}))],d=await J(H.map(a=>({key:a.name,text:a.query})),c),e=/(?:本项目|本工程|该工程|该项目|本标段|本施工项目)[^。;;\n]{0,30}(?:无拆迁|不涉及拆迁|无房屋拆除|无拆除)/u.test(a),f=H.filter(a=>!d.get(a.name)).filter(a=>!("拆迁工地100%湿法作业"===a.name&&e)).map(a=>a.name);return 0===f.length||b.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:`“扬尘治理六个百分百”未逐项落实:缺少【${f.join("、")}】(${H.length-f.length}/${H.length} 项命中)`,suggestion:"按检查规范第七部分要求逐条表述六项措施:工地周边100%围挡、物料堆放100%覆盖、出入车辆100%冲洗、施工现场地面100%硬化、拆迁工地100%湿法作业、渣土车辆100%密闭运输。"}),b}let L=/建设地点|工程地点|项目地点|实施地点|服务地点|交付地点|建设地址/u,M=["安徽","合肥","芜湖","蚌埠","淮南","马鞍山","淮北","铜陵","安庆","黄山","滁州","阜阳","宿州","六安","亳州","池州","宣城"];async function N(a,b){let c=[],d=b.project.some(a=>L.test(`${a.fieldName||""}${a.key||""}`)&&M.some(b=>(0,e.lG)(a.value).includes(b))),f=[];if(d&&(f.push({key:"award",text:"争创省市级优质工程奖、安全文明标准化工地"}),f.push({key:"greenQuant",text:"非传统水源利用率、废弃物回收率等绿色施工量化指标"})),f.push({key:"workInjury",text:"按规定为作业人员办理工伤保险"}),0===f.length)return c;let g=await J(f,I(a));return d&&(g.get("award")||c.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:"属地创优目标缺失:正文未提及省市级优质工程/文明标准化工地等创优目标(安徽省属地适配项)",suggestion:"在质量目标或创优规划小节补写与项目实际规模相符的创优目标表述;奖项名称必须以评分项要求提取结果(招标文件原文)为准逐字落位,禁止自行编造或替换为其他奖项名称。"}),/四节一环保|绿色施工|节水|节材|节能/u.test(a)&&!g.get("greenQuant")&&c.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:"四节一环保量化指标缺失:非传统水源利用率/漏损率/土方平衡率/废弃物回收率等均未量化(附录八基准对照项)",suggestion:"在绿色施工章节补充量化指标(非传统水源利用率、管网漏损率、土方平衡率、可回收废弃物回收率等)与模板周转次数,数值参考行业通用水平与附录八基准,不得编造极端值。"})),/劳务|农民工|工资/u.test(a)&&!g.get("workInjury")&&c.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:"工伤保险表述缺失:正文有劳务/农民工管理内容但未提及工伤保险缴纳(政策合规漏项)",suggestion:"在劳务管理/农民工工资保障小节补充“按规定为作业人员办理工伤保险”表述。"}),c}let O=RegExp(`(?:^|
14
14
  )(?:#{1,6}\\s+[^
15
15
  ]*
16
16
  +)?([^
17
17
  |#][^。!?!?
18
- ]{18,60})[。!?!?]`,"gu");function M(a){let b=[],c=new Map;for(let b of a.matchAll(L)){let a=b[1].trim(),d=a.replace(/[\d,,.。%%㎡m2²]/gu,"").slice(0,16);if(d.length<10)continue;let e=c.get(d)||{count:0,sample:a};e.count+=1,c.set(d,e)}for(let{count:a,sample:d}of c.values())a<3||b.push({level:"warning",severity:"warning",category:"style",owner:"llm",repairability:"llm_repairable",message:`段首固定开场机械重复 ${a} 次:“${d.slice(0,30)}…”`,suggestion:"同一段首句式只保留首次出现处,其余处按所在章节语境改写为差异化开场,避免模板化套话观感。"});return b.slice(0,3)}function N(a){let b,c=a.split("\n"),d=[];for(let a=0;a<c.length;a+=1){let e=/^(#{2,4})\s+(.+)$/u.exec(c[a].trim());if(e){let c=e[1].length;/(?:工程概况|项目概况|基本信息)/u.test(e[2])?b={index:a,level:c}:b&&c<=b.level&&(d.push([b.index,a]),b=void 0)}}b&&d.push([b.index,c.length]);let e=a=>d.some(([b,c])=>a>=b&&a<c),f=c.filter((a,b)=>e(b)).join("\n"),g=[];for(let a=0;a<c.length;a+=1){if(e(a))continue;let b=/本项目为|本工程为|该项目为|该工程为/u.exec(c[a]);if(!b)continue;let d=c[a].slice(b.index).split(/[。!?!?]/u)[0];d&&d.length>=12&&g.push(d)}return{overviewBody:f,sentences:g}}function O(a,b={}){let c=[],{overviewBody:d,sentences:e}=N(a);if(0===e.length||!d||!b.semanticSimilarity)return c;let f=[];for(let a of e)if(b.semanticSimilarity(a,d)>=.6&&f.push(a.slice(0,36)),f.length>=3)break;return 0===f.length||c.push({level:"error",severity:"blocker",category:"style",owner:"llm",repairability:"llm_repairable",message:`项目概况段跨章复述不得出现:概况章外有 ${f.length} 处以“本项目为/本工程为”等总述开头整段复述概况内容:${f.map(a=>`“${a}…”`).join("、")}`,suggestion:"总述数据只在工程概况类小节集中交代一次:其他章节直接写本章内容,仅可引用所需的具体数字(如计划工期天数),不得复述完整概况段。"}),c}function P(a,b){let c,{overviewBody:d,sentences:e}=N(a);if(0===e.length||!d)return a;let f=a.split(/\r?\n/u),g=[];for(let a=0;a<f.length;a+=1){let b=/^(#{2,4})\s+(.+)$/u.exec(f[a].trim());if(b){let d=b[1].length;/(?:工程概况|项目概况|基本信息)/u.test(b[2])?c={index:a,level:d}:c&&d<=c.level&&(g.push([c.index,a]),c=void 0)}}c&&g.push([c.index,f.length]);let h=!1,i=f.map((a,c)=>{if(g.some(([a,b])=>c>=a&&c<b)||/^#{1,6}\s/u.test(a.trim())||/^\s*\|/u.test(a.trim())||!/本项目为|本工程为|该项目为|该工程为/u.test(a))return a;let e=a.split(/(?<=[。!?!?])/u).filter(a=>{if(!/本项目为|本工程为|该项目为|该工程为/u.test(a))return!0;let c=a.split(/[。!?!?]/u)[0];return c.length<12||.6>b(c,d)});return e.join("")!==a&&(h=!0),e.join("")});return h?i.join("\n"):a}let Q=["销项","复查","整改","闭环"];function R(a){let b=[],c=(0,d.V7)(a);if(c<3e3)return b;let e=[];for(let b of Q){let d=a.split(b).length-1;e.push(d/c*1e3)}let f=Math.max(...e),g=Q[e.indexOf(f)];return f>=3&&b.push({level:"warning",severity:"warning",category:"style",owner:"llm",repairability:"llm_repairable",message:`闭环句式模板化密集:“${g}”达 ${f.toFixed(1)} 次/千字(销项/复查/整改/闭环统一结尾高度重复)`,suggestion:"保留关键控制环节的闭环表述,其余改为差异化的过程控制语言(检验批验收、实测实量、旁站记录等),提升语言精练度。"}),b}let S=["专项设计文件尚未完成,待后续补充","评分指标存在缺口尚未明确","依据承诺函后续跟踪完善"];async function T(a){let b=[],c=a.split(/\n+/u).filter(a=>a.trim()&&!/^\s*(#{1,6}\s+|\||[-*+]\s|>)/u.test(a)).flatMap(a=>a.split(/[。;;]/u)).map(a=>a.trim()).filter(a=>a.length>=12);if(0===c.length)return b;let d=await (0,f.Mv)(c,[...S]),e=[...new Set(c.filter(a=>S.some(b=>d(a,b)>=f.Eh)))];if(0===e.length)return b;for(let a of e)b.push({level:"error",severity:"blocker",category:"style",owner:"llm",repairability:"llm_repairable",message:`自伤表述候选:“${a}”暴露投标短板,需按上下文判定后改写`,suggestion:"投标文件不得主动暴露“专项设计未完成/指标存在缺口”等短板:改写为正向落实表述(如“按施工图绿色建筑专篇编制专项方案,逐项落实评分项并跟踪验收”);如属现场条件合理风险描述(地质/管线尚不明确),保留但需配套勘查与应对措施。"});return b.slice(0,3)}let U=/([\u4e00-\u9fa5]{2})\1/gu;function V(a){let b=[...new Set(a.match(U)||[])].slice(0,3);return 0===b.length?[]:[{level:"error",severity:"blocker",category:"style",owner:"llm",repairability:"llm_repairable",message:`正文存在叠词重复表述:${b.map(a=>`“${a}”`).join("、")}`,suggestion:"删除紧邻重复字词,保持语句完整通顺(“执行执行”改为“执行”)。"}]}let W=/暂列金额|暂估价|报价明细|综合单价|清单合价|预留金|投标报价/u,X=/(?:税率|增值税)[^。;;\n]{0,12}\d/u,Y=/合同估算价|合同估算价格|投资估算|估算价格|工程估算价|最高投标限价|招标控制价/u,Z=/材料价格|商务报价|投标总价|合同总价|工程总价/u,$=["暂列金额与暂估价的报价明细","综合单价与清单合价的商务数据","投标报价与费率标准的商务条款"],_=["合同估算价与投资估算的项目信息","最高投标限价与招标控制价的公开信息","商务数据不得写入施工组织设计正文的约束说明"];async function aa(a){return(0,g.A)({prototypes:[...$],negativePrototypes:[..._],embedDocuments:a})}async function ab(a,b){let c=[],d=await aa(b),e=[];for(let b of a.split(/\r?\n/u)){let a=b.trim();if(!(/^#{1,6}\s/u.test(a)||/^\s*\|/u.test(a))&&(W.test(b)||X.test(b)||Z.test(b)))for(let a of(X.test(b)&&c.push("税率/增值税"),b.split(/(?<=[。;;])\s*/u))){let b=a.match(W)||[],d=Y.test(a),f=Z.test(a);!(b.length>0)||d||f?(b.length>0&&(d||f)||f&&0===b.length)&&e.push(a):c.push(...b)}}if(e.length>0){let a=await d(e);e.forEach((b,d)=>{if(!a[d])return;let e=b.match(W)||[],f=b.match(Z)||[];c.push(...e.length>0?e:f)})}let f=[...new Set(c)].slice(0,4);return 0===f.length?[]:[{level:"error",severity:"blocker",category:"style",owner:"llm",repairability:"llm_repairable",message:`正文出现商务条款数据:${f.join("、")}`,suggestion:"商务数据(暂列金额/暂估价/综合单价/税率等)不得写入施组正文:删除该句或改写为定性表述(如“按合同约定执行”),商务口径仅保留在项目信息表中。"}]}function ac(a){return a.split(/\r?\n/u).map(a=>{let b=a.trim();return/^#{1,6}\s/u.test(b)||/^\s*\|/u.test(b)||!W.test(a)&&!X.test(a)?a:a.split(/(?<=[。;;])\s*/u).filter(a=>!(W.test(a)||X.test(a))).join("")}).join("\n")}let ad=[{key:"excavation",label:"基坑支护及土方外运",re:/基坑支护/u},{key:"zero",label:"地下结构出正负零",re:/正负零|地下室结构/u},{key:"topping",label:"主体结构封顶",re:/主体(?:结构)?封顶/u},{key:"decoration",label:"装饰装修及幕墙",re:/装饰装修/u},{key:"mep",label:"机电安装及智能化调试",re:/机电安装/u},{key:"completion",label:"室外工程及竣工验收",re:/竣工验收/u}];function ae(a){let b=[],c=(a,c,d)=>{let e=ad.find(b=>b.re.test(a))?.key;void 0!==e&&Number.isFinite(c)&&c>=1&&c<=3e3&&b.push({key:e,day:c,raw:d})};for(let b of a.matchAll(/第(\d{2,3})日[^。;;\n]{0,14}?完成[^。;;\n,、]{0,12}?(基坑支护及土方外运|装饰装修及幕墙|机电安装及智能化调试|室外工程及竣工验收|地下结构出正负零|主体结构封顶|正负零|封顶)/gu))c(b[2],Number(b[1]),b[0].slice(0,40));for(let b of a.matchAll(/(基坑支护|正负零|封顶|装饰装修|机电安装|竣工验收)(?:(?!(?:第\d{2,3}[日天]|,|、)).){0,8}?完成[^。;;\n]{0,10}?第(\d{2,3})[日天]/gu))c(b[1],Number(b[2]),b[0].slice(0,40));for(let b of a.matchAll(/(主体(?:结构)?封顶)(?!后)(?:(?!(?:第\d{2,3}[日天]|,|、|完成|\||[。;;\n])).){0,20}?第(\d{2,3})日/gu))c(b[1],Number(b[2]),b[0].slice(0,40));for(let b of ad){let d=RegExp(`^\\s*\\|\\s*[^|]*${b.re.source}[^|]*\\s*\\|\\s*开工(?:令下发)?后第(\\d{2,3})日\\s*\\|`,"gum");for(let b of a.matchAll(d))c(b[0],Number(b[1]),b[0].slice(0,40))}let d=new Set;return b.filter(a=>{let b=`${a.key}:${a.raw}`;return!d.has(b)&&(d.add(b),!0)})}function af(a){let b=[],c=new Map;for(let b of ae(a)){let a=c.get(b.key)||[];a.push(b),c.set(b.key,a)}for(let a of ad){let d=c.get(a.key);if(!d||d.length<2)continue;let e=[...new Set(d.map(a=>a.day))];if(e.length<2||Math.max(...e)-Math.min(...e)<5)continue;let f=[...new Set(d.map(a=>a.raw))].slice(0,4).join("、");b.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`节点工期口径矛盾:“${a.label}”节点出现 ${e.map(a=>`${a}日`).join(" 与 ")} 两套口径:${f}`,suggestion:`关键节点完成时间必须全文唯一:以总进度计划表为准统一“${a.label}”节点日期,删除正文/其他表中矛盾的“第N日”表述。`})}return b.slice(0,4)}let ag=[{key:"xps",label:"挤塑聚苯板(XPS)厚度",unit:"mm",kind:"number",patterns:[/(?:挤塑聚苯|XPS)(?:(?!(?:宽度|拼缝|不大于|不超过|小于|≤|采用|使用|选用|铺设|粘贴)).){0,40}?(\d+(?:\.\d+)?)\s*mm/gu,/(\d+(?:\.\d+)?)\s*mm[^。;;\n|]{0,10}?(?:挤塑聚苯|XPS)/gu]},{key:"cushion",label:"垫层混凝土强度等级",unit:"C标号",kind:"code",patterns:[/垫层[^。;;\n|]{0,20}?(C\d{2})/gu]},{key:"transformer",label:"箱式变压器容量",unit:"kVA",kind:"number",patterns:[/(\d+)\s*kVA[^。;;\n|]{0,12}?变压器/gu,/变压器[^。;;\n|]{0,12}?(\d+)\s*kVA/gu]},{key:"formwork",label:"模板周转次数",unit:"次",kind:"number",patterns:[/模板周转(?:次数|使用)?[^。;;\n|]{0,15}?(\d+)\s*次/gu]},{key:"block",label:"蒸压加气混凝土砌块强度等级",unit:"A标号",kind:"code",patterns:[/(?:蒸压加气混凝土|加气混凝土)?砌块[^。;;\n]{0,24}?(A\d+(?:\.\d+)?)/gu]},{key:"extinguisher",label:"干粉灭火器数量",unit:"具",kind:"number",patterns:[/灭火器[^。;;\n]{0,24}?(\d+)\s*具/gu]},{key:"pump",label:"潜水泵数量",unit:"台",kind:"number",patterns:[/潜水泵[^。;;\n]{0,24}?(\d+)\s*台/gu]},{key:"firstaid",label:"急救箱数量",unit:"套/个",kind:"number",patterns:[/急救箱[^。;;\n|]{0,24}?(\d+)\s*(?:套|个)/gu]},{key:"scheduleDays",label:"计划总工期",unit:"日历天",kind:"number",patterns:[/^\s*\|\s*计划工期\s*\|\s*(\d{1,4})\s*个?\s*日历天\s*\|/gum,/(?:计划工期|合同工期|工期总日历天数|工期控制|工期目标|总工期)[^。;;\n|]{0,12}?(\d{1,4})\s*个?\s*日历天/gu,/(\d{1,4})\s*个?\s*日历天[^。;;\n|]{0,8}?(?:总工期|倒排|分解|为唯一|完成)/gu]},{key:"prefabRatio",label:"装配率",unit:"%",kind:"number",patterns:[/装配率[^。;;\n|]{0,14}?(\d+(?:\.\d+)?)\s*%/gu,/装配率[^。;;\n|]{0,44}?计算为(\d+(?:\.\d+)?)\s*%/gu,/(\d+(?:\.\d+)?)\s*%(?:(?![,,。;;\n|]).){0,10}?装配率/gu]},{key:"projectCode",label:"项目编号",unit:"",kind:"code",patterns:[/(?:招标项目编号|项目编号)[^。;;\n|]{0,8}?(20\d{2}[A-Z]{1,8}\d{2,10})/gu]},{key:"towerCrane",label:"塔式起重机(塔吊)数量",unit:"台",kind:"number",patterns:[/(?:塔式起重机|塔吊)[^。;;\n|、,]{0,30}?(\d+)\s*台/gu,/(\d+)\s*台[A-Za-z0-9/\-–—~~]{0,16}\s{0,2}(?:塔式起重机|塔吊)/gu]},{key:"hoist",label:"施工升降机(施工电梯)数量",unit:"台",kind:"number",patterns:[/(?:施工升降机|施工电梯)[^。;;\n|、,]{0,30}?(\d+)\s*台/gu,/(\d+)\s*台[A-Za-z0-9/\-–—~~]{0,16}\s{0,2}(?:施工升降机|施工电梯)/gu]},{key:"truckCrane",label:"汽车起重机(汽车吊)数量",unit:"台",kind:"number",patterns:[/(?:汽车起重机|汽车吊)[^。;;\n|、,]{0,30}?(\d+)\s*台/gu,/(\d+)\s*台[A-Za-z0-9/\-–—~~]{0,16}\s{0,2}(?:汽车起重机|汽车吊)/gu]},{key:"rebarCutter",label:"钢筋切断机数量",unit:"台",kind:"number",patterns:[/钢筋切断机[^。;;\n|]{0,24}?(\d+)\s*台/gu]},{key:"rebarBender",label:"钢筋弯曲机数量",unit:"台",kind:"number",patterns:[/钢筋弯曲机[^。;;\n|]{0,24}?(\d+)\s*台/gu]},{key:"circularSaw",label:"圆盘锯数量",unit:"台",kind:"number",patterns:[/圆盘锯[^。;;\n|]{0,24}?(\d+)\s*台/gu]}],ah=/\d+(?:\.\d+)?\s*(?:mm|kVA|次|具|台|套|个)\s*[//]\s*\d+/u,ai=/不再出现|不得出现|严禁出现|避免出现|不采用|未采用|予以删除|已删除|取消|纠正为|更正为/u;function aj(a){let b=[];for(let c of ag){let d=new Set,e=[];for(let b of c.patterns)for(let c of a.matchAll(b)){let b=c[0].slice(0,40);if(ah.test(b))continue;let f=a.lastIndexOf("\n",c.index)+1,g=a.indexOf("\n",c.index);-1===g&&(g=a.length),ai.test(a.slice(f,g))||(d.add(c[1]),e.push(b))}if(!(d.size<2))if("code"===c.kind)b.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`材料参数口径矛盾:“${c.label}”出现 ${[...d].map(a=>`${a}${c.unit}`).join(" 与 ")} 两套口径:${[...new Set(e)].slice(0,3).join("、")}`,suggestion:`同一材料参数全文只允许一个口径:以设计图纸/工程量清单为准统一“${c.label}”,删除矛盾表述。`});else{let a=[...d].map(Number).filter(Number.isFinite);if(a.length<2)continue;let f=Math.max(...a);if(f-Math.min(...a)<=.2*f)continue;b.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`材料/设备数量口径矛盾:“${c.label}”出现 ${a.map(a=>`${a}${c.unit}`).join(" 与 ")} 两套口径:${[...new Set(e)].slice(0,3).join("、")}`,suggestion:`同一设备/材料数量全文只允许一个口径:以应急物资清单/施工部署为准统一“${c.label}”,删除矛盾表述。`})}}return b.slice(0,8)}let ak=/桩基|灌注桩|钻孔桩|打桩|成桩|桩机/u;function al(a){let b=function(a){let b=[];for(let c of[...a.matchAll(/^#{3,4}\s+[^\n]*(?:地基与基础)[^\n]*$/gmu)]){let d=(c.index||0)+c[0].length,e=a.slice(d).search(/^#{2,4}\s+/mu),f=a.slice(d,e>=0?d+e:a.length);b.push(f)}return b}(a);if(0===b.length||b.some(a=>ak.test(a)))return[];let c=[];for(let b of a.split(/\r?\n/u)){let a=b.trim();!(!a||/^#{1,6}\s/u.test(a))&&ak.test(b)&&c.push(a.slice(0,48))}let d=[...new Set(c)].slice(0,5);return d.length<2?[]:[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`桩基表述残留:地基与基础章节施工流程为筏板/独立基础(无桩基工序),但全文另有 ${d.length} 处桩基表述:${d.join("、")}`,suggestion:"本项目基础形式不含桩基:删除全文所有桩基/桩机表述,进度计划表关键线路工序、质量验收划分表、隐蔽验收表均改为本项目实际基础工序(垫层/底板钢筋/混凝土)。"}]}let am=/^\s*\|\s*计划工期\s*\|([^|\n]*)\|/u,an=/工期延误|延误|违约|切除|赔偿|罚款|解除|扣减/u;function ao(a){let b=[];for(let c of a.split(/\r?\n/u)){let a=am.exec(c);if(!a)continue;let d=(a[1]??"").trim();d&&an.test(d)&&b.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`基本信息表「计划工期」字段错填违约条款文字:“${d.slice(0,40)}”`,suggestion:"「计划工期」字段应填日历天数值(与招标文件前附表一致);工期延误违约条款文字应放在工期风险管控章节,不得占用基本信息表字段。"})}return b.slice(0,2)}let ap=/基础|支护|围护|桩|结构|开挖|放坡|喷锚|排桩|连续墙|土钉|锚杆|标高|深度|形式|体系/u;function aq(a){let b=a.replace(/\s+/gu,""),c=new Set;for(let a of b.matchAll(/([一-龥]{2,8})\/([一-龥]{2,8})/gu)){if(!ap.test(a[1])&&!ap.test(a[2]))continue;let d=Math.max(0,(a.index||0)-12),e=Math.min(b.length,(a.index||0)+a[0].length+12),f=b.slice(d,e);!/管线|管道|电缆|给水|排水/u.test(f)&&/采用|形式|方式|方案|选用|拟用|拟采用|为/u.test(f)&&c.add(`“${a[1]}/${a[2]}”`)}for(let a of b.matchAll(/[((]\s*或[^))]{1,48}[))]/gu)){let d=a[0].slice(1,-1);if(!/按图纸|按实|按图|待定|另行|视[^,。;]{0,8}而定|根据实际/u.test(d))continue;let e=Math.max(0,(a.index||0)-20),f=b.slice(e,(a.index||0)+a[0].length);ap.test(f)&&c.add(a[0].slice(0,30))}for(let a of b.matchAll(/([一-龥]{2,8})或([一-龥]{2,8})/gu)){if(!ap.test(a[1])&&!ap.test(a[2]))continue;let d=Math.max(0,(a.index||0)-12),e=b.slice(d,(a.index||0)+a[1].length);if(/管线|管道|电缆|给水|排水/u.test(e)||!/按|采用|选用|拟用|拟采用|方案|为/u.test(e))continue;let f=a[1].replace(/^.*(地下连续墙|钢板桩|灌注桩|支护桩|土钉墙|基础|支护|围护|结构|开挖|放坡|喷锚|排桩|连续墙|土钉|锚杆|形式|体系)/u,"$1");c.add(`${f}或${a[2]}`)}return 0===c.size?[]:[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`关键设计决策两可表述:${[...c].join("、")} 以并列/悬置形态表述,基础形式、支护形式等关键决策必须在正文中唯一确定`,suggestion:"以设计图纸/勘察报告/工程量清单为准锁定唯一决策并删除两可表述:明确写出本项目基础形式与支护形式的具体做法(如「基础形式为筏板基础」「基坑支护采用放坡+喷锚」),禁止「或…按图纸实施」类悬置话术。"}]}function ar(a){let b=a.replace(/\s+/gu,"");if((b.match(/基坑|开挖|支护/gu)||[]).length<3)return[];for(let a of b.matchAll(/(?:深度|标高)[^。;,,]{0,12}-?\d+(?:\.\d+)?[^。;,,]{0,6}/gu)){let b=a[0];if(!/(?:超过|大于|小于|不[大低小]于|不低于|低于|高于|按|倍|依据|详见|参考|示意|每|以上|以下|偏差|±0|0\.000)/u.test(b)&&!/\d+(?:\.\d+)?\s*(?:h|小时|天|日|min|周|月|昼夜)/u.test(b))return[]}return[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:"基坑深度数值未锁定:正文已有基坑支护/开挖成稿内容,但全文未出现「深度/标高+数值」的确定性表述(比较式阈值如「超过3m」不视为锁定),危大工程分级判定失去依据",suggestion:"从绑定资料(地质勘察报告/基坑支护设计图/基础平面图)锁定基坑开挖深度数值写入基坑支护小节;深度 ≥5m 的深基坑须同步标注危大工程分级与专家论证要求,禁止以「按图纸确定」回避深度数值。"}]}function as(a){let b=a.canonical?.byKey.excavation_depth?.value,c=[...(a.drawings||[]).map(a=>`${a.fieldName||a.key||""} ${(0,e.lG)(a.value)}`),...(a.project||[]).map(a=>`${a.fieldName||a.key||""} ${(0,e.lG)(a.value)}`),...(a.preciseFacts||[]).map(a=>`${a.fieldName||a.key||""} ${(0,e.lG)(a.value)}`)].filter(Boolean),d=a=>[...a.matchAll(/-?(\d+(?:\.\d+)?)\s*(?:m|米)/gu)].filter(b=>{let c=Math.max(0,(b.index??0)-6),d=Math.min(a.length,(b.index??0)+b[0].length+6);return!/(?:超过|大于|小于|不[大低小]于|不低于|及以上|及以下|以上|以下)/u.test(a.slice(c,d))}).map(a=>Math.abs(Number(a[1]))),f=[...b?d(b):[],...c.flatMap(a=>/基坑开挖深度|基坑深度|开挖深度|坡底线|坑底标高/u.test(a)?d(a):[])].filter(a=>Number.isFinite(a)&&a>=1&&a<50);return f.length>0?Math.max(...f):void 0}function at(a,b){let c=as(b);if(void 0===c||c<3)return[];let d=[];return c>=3&&!/危大工程/u.test(a)&&d.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`危大工程判定缺失:资料基坑开挖深度 ${c}m(≥3m),正文必须出现危大工程判定标注`,suggestion:`依据住建部令第37号,开挖深度≥3m 属危大工程:在基坑支护/危大工程清单小节写明本工程实际深度 ${c}m 与危大工程判定结论,不得只写判定规则不落地本项目。`}),c>=5&&!/超过一定规模/u.test(a)&&d.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`超危大工程判定缺失:资料基坑开挖深度 ${c}m(≥5m),正文必须出现「超过一定规模」判定与专家论证要求`,suggestion:`开挖深度≥5m 属超过一定规模的危大工程:写明本工程深度 ${c}m 对应分级结论,专项施工方案必须经专家论证,不得只写判定规则不落地分级。`}),d}function au(a,b){let c=[b.canonical?.byKey.foundation_support_form?.value,...(b.drawings||[]).map(a=>`${a.fieldName||a.key||""} ${(0,e.lG)(a.value)}`),...(b.project||[]).map(a=>`${a.fieldName||a.key||""} ${(0,e.lG)(a.value)}`),...(b.preciseFacts||[]).map(a=>`${a.fieldName||a.key||""} ${(0,e.lG)(a.value)}`)].filter(Boolean).filter(a=>/基坑支护形式|基坑支护方式|支护形式|支护方式|土钉|放坡|喷锚|护坡/u.test(a)&&!/监测|监测频次|闭环|基坑开挖深度/u.test(a));if(0===c.length)return[];let d=[];for(let a of c)for(let b of["土钉墙","放坡","喷锚","挂网喷浆","排桩","灌注桩","地下连续墙","内支撑","锚杆","锚索"])a.includes(b)&&d.push(b);let f=[],g=/不采用|未采用|不设置|未设置|不使用|不宜采用|不得采用|不再出现|不得出现|严禁出现|避免出现|已删除|取消/u,h=["支护桩","冠梁","钻孔灌注桩","灌注桩","地下连续墙","排桩","咬合桩","内支撑"].filter(b=>(b=>{let c=RegExp(b,"gu");for(let b of a.matchAll(c)){let c=a.lastIndexOf("\n",b.index)+1,d=a.indexOf("\n",b.index);-1===d&&(d=a.length);let e=a.slice(c,d).slice(Math.max(0,b.index-c-12),b.index-c);if(!g.test(e))return!0}return!1})(b)&&!d.includes(b));return h.length>0&&f.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`支护形式与资料矛盾:正文出现资料中不存在的支护体系词 ${h.join("、")}`,suggestion:`资料基坑支护形式为「${d.join("、")||c[0]?.slice(0,60)}」:删除编造的支护桩/冠梁/灌注桩类表述与对应参数(垂直度偏差/冠梁顶面标高等),按资料支护形式改写。`}),0===d.filter(b=>RegExp(b,"u").test(a)).length&&/基坑|支护/u.test(a)&&f.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`支护形式未落地:资料基坑支护形式「${d.join("、")||c[0]?.slice(0,60)}」未在正文中出现`,suggestion:`在基坑支护小节写明本工程实际支护形式(${d.join("、")})及对应工艺参数(土钉长度/间距/坡度等),不得以泛化表述回避。`}),f}let av=["塔式起重机","施工升降机","施工电梯","汽车起重机","汽车吊","混凝土泵车","混凝土泵","挖掘机","装载机","推土机","压路机","平地机","空压机","注浆机","锚杆钻机","混凝土喷射机","喷射机","吊篮","钢筋加工设备","塔吊"],aw=/挖掘机|空压机|注浆机|锚杆钻机|混凝土喷射机|喷射机|推土机/u;function ax(a,b){let c=function(a){let b=[];for(let c of a.matchAll(/第(\d{2,3})日[^。;;\n|]{0,8}?(?:进场|投入使用|安装|调试)/gu)){let d=a.slice(Math.max(0,(c.index||0)-24),c.index||0),e=av.find(a=>d.includes(a));e&&b.push({equipment:e,day:Number(c[1]),raw:`${d.slice(-18)}${c[0].slice(0,20)}`})}let c=new Set;return b.filter(a=>{let b=`${a.equipment}:${a.raw}`;return!c.has(b)&&(c.add(b),!0)})}(a);if(0===c.length)return[];let d=[],f=function(a,b){for(let c of[a,...(b.schedule||[]).map(a=>`${a.key||""}${(0,e.lG)(a.value)}`)]){let a=/(?:计划工期|合同工期|总工期|工期总日历天数)[^\d。;;\n|]{0,12}(\d{1,4})\s*个?\s*日历天/u.exec(c);if(a){let b=Number(a[1]);if(Number.isFinite(b)&&b>=30&&b<=3e3)return b}}}(a,b);if(void 0!==f){let a=c.filter(a=>a.day>=.8*f);a.length>0&&d.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`设备进场时间荒谬:${a.slice(0,3).map(a=>`「${a.equipment} 第${a.day}日进场」`).join("、")} 已过总工期(${f}日历天)的 80%,尾期进场无法覆盖主体施工`,suggestion:`以总进度计划为准核对设备进场计划:大型施工设备应在工程早期(总工期前 30% 内)进场,${a.map(a=>a.equipment).join("、")} 的进场日应提前至基础/主体施工开始前,删除矛盾的尾期进场表述。`})}let g=ae(a).filter(a=>"excavation"===a.key).map(a=>a.day);if(g.length>0){let a=Math.min(...g),b=c.filter(b=>aw.test(b.equipment)&&b.day>a);b.length>0&&d.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`设备进场工序倒挂:${b.slice(0,3).map(a=>`「${a.equipment} 第${a.day}日进场」`).join("、")} 晚于基坑支护及土方外运完成节点(第${a}日),基坑阶段设备未在工序开始前进场`,suggestion:`基坑阶段专用设备必须在基坑开挖/支护开始前完成进场与报验:将 ${b.map(a=>a.equipment).join("、")} 的进场日调整为早于基坑支护完成节点(第${a}日)的日期,删除工序倒挂表述。`})}return d.slice(0,3)}let ay=/[\u4e00-\u9fa5]{2,10}(?:杯|奖)(?![励金惩罚项])/gu,az=/优质工程|文明工地|样板|标准化|观摩|示范|精品工程|结构优质|省优|市优/u;function aA(a){let b=a;for(;;){let a=b.replace(/^(?:争创|争取|力争|争获|确保|获得|创建|力创|评为|荣获|标为|目标为|承诺|为)/u,"");if(a===b||!a)break;b=a}return b}let aB=/^\s*\|[\s:|-]+\|/u;function aC(a){let b=a.split(/\r?\n/u),c=[],d=a=>a.trim().replace(/^\|/u,"").replace(/\|$/u,"").split("|").map(a=>a.trim()),e=a=>aB.test(a),f=0;for(;f<b.length;){let a;if(!/^\s*\|/u.test(b[f])){f+=1;continue}let g=f;for(;g<b.length&&/^\s*\|/u.test(b[g]);)g+=1;let h=b.slice(f,g),i=0,j=0,k=0,l=b=>{if(!a)return;let e=h.slice(j,b);0!==e.length&&c.push({startLine:f+i,endLine:f+b-1,header:a,firstCol:e.map(a=>d(a)[0]?.replace(/[*_`]/gu,"").trim()||"").filter(Boolean),dataCells:e.flatMap(a=>d(a).map(a=>a.replace(/[*_`]/gu,"").trim())).filter(Boolean),bodyChars:e.join("").length,raw:h.slice(i,b)})};for(;k<h.length;){if(k+1<h.length&&e(h[k+1]||"")){l(k),a=d(h[k]).map(a=>a.replace(/[*_`]/gu,"").trim()),i=k,j=k+2,k+=2;continue}if(a&&k>j){let b=d(h[k]).map(a=>a.replace(/[*_`]/gu,"").trim()).filter(Boolean);if(aD(b,a)>=.6&&k+1<h.length&&!e(h[k+1]||"")){l(k),a=b,i=k,j=k+1,k+=1;continue}}k+=1}l(h.length),f=g}return c}function aD(a,b){if(0===a.length||0===b.length)return 0;let c=new Set(a),d=new Set(b);return[...c].filter(a=>d.has(a)).length/new Set([...c,...d]).size}function aE(a,b){if(0===a.length)return 0;let c=[...b],d=0;for(let b of a){let a=c.indexOf(b);a>=0&&(c.splice(a,1),d+=1)}return d/a.length}let aF=/^[\d,,.]+\s*(?:人|个|台|具|套|处|支|辆|班|组|项)?$/u,aG=a=>a.filter(a=>!aF.test(a));function aH(a){let b=[],c=aC(a);if(c.length<2)return b;for(let a=0;a<c.length;a+=1)for(let d=a+1;d<c.length;d+=1){let e=c[a],f=c[d],g=e.header.length>0&&e.header.length===f.header.length&&e.header.every((a,b)=>a===f.header[b]),h=aD(e.header,f.header),i=aD(e.firstCol,f.firstCol),j=aD(e.dataCells,f.dataCells),k=Math.max(aE(aG(e.dataCells),aG(f.dataCells)),aE(aG(f.dataCells),aG(e.dataCells)));(g&&j>=.6||h>=.7&&i>=.6||i>=.6&&k>=.6)&&b.push({level:"error",severity:"blocker",category:"style",owner:"llm",repairability:"llm_repairable",message:`表格重复:第 ${e.startLine+1}~${e.endLine+1} 行表格(表头:${e.header.slice(0,3).join("|")})与第 ${f.startLine+1}~${f.endLine+1} 行表格高度重复(表头重合 ${Math.round(100*h)}%、数据重合 ${Math.round(100*j)}%、首列重合 ${Math.round(100*i)}%)`,suggestion:"同一文档内同主题表格只保留信息最全的一张:删除重复表格(保留字段与数据行更多的那张),删除后核对章节表格计划仍被覆盖。"})}return b.sort((a,b)=>{let c=a=>Number(a.match(/数据重合\s*(\d+)%/u)?.[1]??0);return c(b.message)-c(a.message)}).slice(0,5)}function aI(a){let b=aC(a);if(b.length<2)return{markdown:a,removedCount:0};let c=a.split(/\r?\n/u),d=new Set;for(let a=0;a<b.length;a+=1)for(let c=a+1;c<b.length;c+=1){let e=b[a],f=b[c];if(d.has(e.startLine)||d.has(f.startLine))continue;let g=e.header.length>0&&e.header.length===f.header.length&&e.header.every((a,b)=>a===f.header[b]),h=aD(e.header,f.header),i=aD(e.firstCol,f.firstCol),j=aD(e.dataCells,f.dataCells),k=Math.max(aE(aG(e.dataCells),aG(f.dataCells)),aE(aG(f.dataCells),aG(e.dataCells)));if(!(g&&j>=.6)&&!(h>=.7&&i>=.6)&&!(i>=.6&&k>=.6))continue;let[l,m]=e.bodyChars>=f.bodyChars?[e,f]:[f,e];for(let a=m.startLine;a<=m.endLine;a+=1)d.add(a)}return 0===d.size?{markdown:a,removedCount:0}:{markdown:c.filter((a,b)=>!d.has(b)).join("\n"),removedCount:d.size}}function aJ(a){let b=a.replace(/\s+/gu,"");return b.length>=40?b:void 0}function aK(a){let b=[],c=a.split(/\r?\n/u),d=new Map,e=[],f=()=>{let a=aJ(e.join(""));if(a){let b=(d.get(a)||0)+1;d.set(a,b)}e=[]};for(let a of c){let b=a.trim();if(!b||/^#{1,6}\s/u.test(b)||/^\s*\|/u.test(b)){f();continue}if(/^[-*•]\s/u.test(b)){f(),e.push(b),f();continue}e.push(b)}for(let[a,c]of(f(),[...d.entries()].filter(([,a])=>a>=2).slice(0,3)))b.push({level:"error",severity:"blocker",category:"style",owner:"llm",repairability:"llm_repairable",message:`段落完全重复 ${c} 次:“${a.slice(0,40)}…”`,suggestion:"同一段落正文只保留首次出现处,删除其余重复段落;确需前后呼应时改写为差异化表述并压缩篇幅。"});return b}function aL(a){let b=a.split(/\r?\n/u),c=new Set,d=new Set,e=[],f=[],g=()=>{let a=aJ(e.join(""));a&&(c.has(a)?f.forEach(a=>d.add(a)):c.add(a)),e=[],f=[]};return(b.forEach((a,b)=>{let c=a.trim();if(!c||/^#{1,6}\s/u.test(c)||/^\s*\|/u.test(c))return void g();if(/^[-*•]\s/u.test(c)){g(),e=[c],f=[b],g();return}e.push(c),f.push(b)}),g(),0===d.size)?{markdown:a,removedCount:0}:{markdown:b.filter((a,b)=>!d.has(b)).join("\n"),removedCount:d.size}}function aM(a,b,c){let d=new Set;for(let a of[...b.quality,...b.project,...b.schedule])for(let b of(0,e.lG)(a.value).matchAll(ay))d.add(aA(b[0]));if(c?.extracted)for(let a of[...c.awardObjectives||[],...c.specialQualityStandards||[],...c.awardClauses||[]])for(let b of(a.text||"").matchAll(ay))d.add(aA(b[0]));if(0===d.size)return[];let f=new Set;for(let b of a.matchAll(ay)){let a=aA(b[0]);!d.has(a)&&(az.test(a)||f.add(a))}return 0===f.size?[]:[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`奖项表述与招标文件白名单不符:正文出现 ${[...f].join("、")},均未出现在招标文件评分项要求或绑定资料中`,suggestion:"创优目标必须以招标文件原文为准逐字落位(如「确保黄山杯」),禁止自行编造或替换为其他奖项名称;白名单外的奖项表述一律删除或替换为招标原文奖项。"}]}function aN(a){let b=a.split(/\r?\n/u),c=new Set;for(let a of b){let b=/^(#{2,4})\s+(.+)$/u.exec(a.trim());if(!b)continue;let d=b[2].trim();(0,h.Xp)(d)&&c.add(d)}if(0===c.size)return[];let d=[...c];return[{level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:`正文出现投标人资格内容小节:${d.slice(0,3).map(a=>`“${a}”`).join("、")}${d.length>3?" 等":""}(资格审查内容不属于施工组织设计,属资格文件/商务文件范畴)`,suggestion:"删除资格内容小节(标题与正文整体删除),不得以改写、合并、降级方式保留;正文如需提及安全生产许可证等证照,只能以施工管理口径表述(如“按规定持证上岗”),不得成节铺陈资格核验内容。"}]}let aO=/人[、,,]材[、,,]机/u,aP=/(?:确保\s*)?([人材机])(?:员|力|料|械|工)?\s*的保障体系与措施/u;function aQ(a){let b=a.match(aP)?.[1];return b||(/劳动力|人员|作业人员|劳务/u.test(a)?"人":/材料|物资|周转/u.test(a)?"材":/机械|设备|机具|塔吊|起重机/u.test(a)?"机":void 0)}function aR(a){let b=[],c=a.split(/\r?\n/u);for(let a=0;a<c.length;a+=1){let d,e=/^##\s+(.+)$/u.exec(c[a].trim());if(!e||!aO.test(e[1]))continue;let f=c.length;for(let b=a+1;b<c.length;b+=1)if(/^##\s+/u.test(c[b].trim())){f=b;break}let g=[];for(let e=a+1;e<f;e+=1){let a=/^###\s+(.+)$/u.exec(c[e].trim()),f=/^####\s+(.+)$/u.exec(c[e].trim());if(a){d={subject:aQ(a[1]),title:a[1].trim()},g.push(d);continue}if(f&&d?.subject){let a=aQ(f[1]);a&&a!==d.subject&&b.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:`人材机章层级错位:小节“${f[1].trim()}”挂在“${d.title}”之下(${"人"===a?"人":"材"===a?"材":"机"}的保障体系应独立成二级小节,不得并入${"人"===d.subject?"人":"材"===d.subject?"材":"机"}的保障体系)`,suggestion:`将“${f[1].trim()}”提升为独立二级小节,或将其内容合并到对应主题的二级小节。`})}}let h=new Set(g.map(a=>a.subject).filter(Boolean)),i=["人","材","机"].every(a=>h.has(a));(g.length<3||!i)&&b.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:`人材机章结构不完整:“${e[1].trim()}”仅 ${g.length} 个二级小节(人/材/机的保障体系未全部独立成节)`,suggestion:"拆分为“确保人的保障体系与措施”“确保材的保障体系与措施”“确保机的保障体系与措施”三个二级小节。"})}return b}function aS(a,b){if(0===b.length)return{markdown:a,fixedCount:0,details:[]};let c=[...b].sort((a,b)=>a.start-b.start||a.end-b.end),d="",e=0,f=0,g=[];for(let b of c)b.start<e||b.end<=b.start||(d+=a.slice(e,b.start)+b.replacement,e=b.end,f+=1,g.push(b.detail));return{markdown:d+=a.slice(e),fixedCount:f,details:[...new Set(g)].slice(0,8)}}function aT(a){let b=function(a){let b=t(a).map(a=>a.peak);return b.length>0?Math.max(...b):void 0}(a);if(void 0===b)return{markdown:a,fixedCount:0,details:[]};let c=[],d=d=>{for(let e of a.matchAll(d)){let d=Number(e[1].replace(/[,,]/gu,""));if(!Number.isFinite(d)||d<=0)continue;let f=e.index+e[0].indexOf(e[1]),g=a.lastIndexOf("\n",e.index)+1,h=a.indexOf("\n",e.index);-1===h&&(h=a.length),!(/^\s*\|.*\|\s*$/u.test(a.slice(g,h))||s(a,f))&&(Math.abs(d-b)/Math.max(d,b)<=.3||c.push({start:f,end:f+e[1].length,replacement:String(b),detail:`劳动力峰值 ${d}人→${b}人(以分阶段投入明细表为准)`}))}};for(let e of(d(p),d(q),a.matchAll(/(?:高峰期|高峰|峰值)[^。;;\n]{0,16}?控制(?:在|为|到)?(?:约)?\s*([\d,]+)\s*人(?:以内|以下|之内)?/gu))){let a=Number(e[1].replace(/[,,]/gu,""));if(!Number.isFinite(a)||a<=0||a>=b)continue;let d=e.index+e[0].indexOf(e[1]);c.push({start:d,end:d+e[1].length,replacement:String(b),detail:`劳动力控制上限 ${a}人→${b}人(与分阶段投入明细表峰值自洽)`})}return aS(a,c)}function aU(a){let b=a=>{let b=a.match(/(\d{1,4})\s*个?\s*日历天/u);if(!b)return;let c=Number(b[1]);return Number.isFinite(c)&&c>0?c:void 0};for(let c of a?.schedule??[]){let a=`${c.key||""}${c.fieldName||""}${c.fieldId||""}`;if(!/工期|周期/u.test(a))continue;let d=b((0,e.lG)(c.value));if(void 0!==d)return d}for(let c of Object.values(a?.canonical?.schedule??{})){let a=Array.isArray(c)?c[0]:c;if(!a||!/工期|周期/u.test(a.label))continue;let d=b(a.value);if(void 0!==d)return d}}function aV(a){let b=a=>{let b=a.match(/(\d+(?:\.\d+)?)\s*%/u);if(!b)return;let c=Number(b[1]);return Number.isFinite(c)&&c>0&&c<=100?c:void 0};for(let c of[...a?.project??[],...a?.bills??[],...a?.preciseFacts??[]]){let a=`${c.key||""}${c.fieldName||""}${c.fieldId||""}`;if(!/装配率|assembly/u.test(a))continue;let d=b((0,e.lG)(c.value));if(void 0!==d)return d}let c=a?.tenderRequirements?.assemblyRate?.text;if(c)return b(c)}function aW(a){let b,c=[],d=a?.project??[];for(let a of d){let c=`${a.key||""}${a.fieldName||""}`;if(!/单体建筑面积|建设规模/u.test(c))continue;let d=(0,e.lG)(a.value).match(/(\d+(?:\.\d+)?)\s*(?:平方(?:米)?|㎡|m²)/u);if(d&&Number.isFinite(Number(d[1]))){b=Number(d[1]);break}}void 0!==b&&c.push(`建筑面积${b}平方米`);let f=JSON.stringify({project:d,drawings:a?.drawings??[],tables:a?.tables??[]}),g=f.match(/地上\s*(\d+)\s*层/u)?.[1],h=f.match(/地下\s*(\d+)\s*层/u)?.[1];return void 0!==g&&c.push(`地上${g}层`),void 0!==h&&c.push(`地下${h}层`),c.length>0?c.join("、"):void 0}let aX=[{key:"towerCrane",re:/塔式起重机|塔吊/u},{key:"hoist",re:/施工升降机|施工电梯/u},{key:"truckCrane",re:/汽车起重机|汽车吊/u},{key:"rebarCutter",re:/钢筋切断机/u},{key:"rebarBender",re:/钢筋弯曲机/u},{key:"circularSaw",re:/圆盘锯/u},{key:"pump",re:/潜水泵/u},{key:"extinguisher",re:/灭火器/u},{key:"firstaid",re:/急救箱/u}];function aY(a){let b=[];for(let c of a?.scheduleNodes??[])"string"==typeof c.node&&""!==c.node.trim()&&"string"==typeof c.offset&&""!==c.offset.trim()&&b.push({node:c.node,offset:c.offset});let c={};for(let b of a?.machines??[]){let a="string"==typeof b.name?b.name:"",d=Number(b.count);if(!Number.isFinite(d)||d<=0)continue;let e=aX.find(b=>b.re.test(a));void 0!==e&&void 0===c[e.key]&&(c[e.key]=d)}return{nodeAuthorities:b,machineAuthorities:c}}function aZ(a,b){let c=a,d=0,e=[],f={};for(let a of(b?.scheduleAuthority!==void 0&&b.scheduleAuthority>0&&(f.scheduleDays=b.scheduleAuthority),b?.assemblyRateAuthority!==void 0&&b.assemblyRateAuthority>0&&(f.prefabRatio=b.assemblyRateAuthority),b?.machineAuthorities!==void 0&&Object.assign(f,b.machineAuthorities),[aT,a=>(function(a,b){let c=a,d=[],e=b?.scheduleAuthority;if(void 0!==e&&e>0){let a=[...c.matchAll(/(?:开工令下发后|开工后)第(\d{1,3})[日天]/gu)].map(a=>Number(a[1])),b=a.length>0?Math.max(...a):0;if(b>0&&b<.9*e){let a=e/b,f=[];for(let b of c.matchAll(/(?:开工令下发后|开工后)第(\d{1,3})[日天]/gu)){let c=Math.max(1,Math.round(Number(b[1])*a)),d=b.index+b[0].indexOf(b[1]);f.push({start:d,end:d+b[1].length,replacement:String(c),detail:`节点日期 ${b[1]}日→${c}日(总工期${e}日历天体系缩放)`})}for(let b of c.matchAll(/第(\d{2,3})日(?=[^。;;\n]{0,8}竣工验收)/gu)){let c=Math.max(1,Math.round(Number(b[1])*a));f.push({start:b.index,end:b.index+b[0].length,replacement:`第${c}日`,detail:`竣工验收节点 ${b[1]}日→${c}日(总工期${e}日历天体系缩放)`})}for(let b of c.matchAll(/(竣工验收(?:合格)?[^。;;\n]{0,8}?[((])第(\d{2,3})日([))])/gu)){let c=Math.max(1,Math.round(Number(b[2])*a));f.push({start:b.index,end:b.index+b[0].length,replacement:`${b[1]}第${c}日${b[3]}`,detail:`竣工验收节点 ${b[2]}日→${c}日(总工期${e}日历天体系缩放)`})}if(f.length>0){let a=aS(c,f);c=a.markdown,d.push(...a.details.slice(0,8));let b=/^(\|[^|]*\|)\s*开工令下发后第(\d+)日\s*\|\s*开工令下发后第(\d+)日\s*\|\s*(\d+)\s*日\s*(\|.*)$/u,e=c.split(/\r?\n/u),g=0,h=0;for(let a=0;a<e.length;a+=1){let c=e[a].match(b);if(!c){g=0;continue}let d=Number(c[3]),f=g>0?g+1:Number(c[2]),i=Math.max(d,f+1),j=i-f+1;(f!==Number(c[2])||i!==d||j!==Number(c[4]))&&(e[a]=`${c[1]} 开工令下发后第${f}日 | 开工令下发后第${i}日 | ${j}日 ${c[5]}`,h+=1),g=i}h>0&&(c=e.join("\n"),d.push(`三列进度表链式重算 ${h} 行(开始/持续列与缩放后结束列自洽)`))}}}let f=c.split(/\r?\n/u),g=/^\|.+\|$/u,h=[],i=0;for(let a of f)h.push({start:i,end:i+a.length}),i+=a.length+1;let j=a=>{let b=[];return/清理|预验收|收尾/u.test(a)&&b.push("cleanup"),/竣工验收/u.test(a)&&b.push("completion"),/装饰|幕墙/u.test(a)&&b.push("decoration"),/机电/u.test(a)&&b.push("mep"),/二次|ALC|墙板|砌体/u.test(a)&&b.push("secondary"),/主体|封顶/u.test(a)&&b.push("topping"),/土方|基坑|基础|支护/u.test(a)&&b.push("excavation"),b},k=a=>(a.split("|")[1]||"").trim(),l=a=>{let b;for(let c of a.matchAll(/第(\d{1,3})[日天]/gu)){let d=a.slice(Math.max(0,(c.index??0)-8),c.index??0);/(?:合格|封顶|移交|完成|进场|退场)后$/u.test(d)||(b={value:Number(c[1]),start:(c.index??0)+c[0].indexOf(c[1]),end:(c.index??0)+c[0].lastIndexOf(c[1])+c[1].length})}return b},m=new Map,n=[];for(let a=0;a<f.length;a+=1){if(!g.test(f[a].trim()))continue;let b=a;for(;a<f.length&&g.test(f[a].trim());)a+=1;let c=a,d=f.slice(Math.max(0,b-6),b).join("\n");if(/总进度计划|施工总进度|总进度安排|总工期控制|总工期/u.test(d)){for(let a=b;a<c;a+=1){let b=k(f[a]),c=l(f[a]);if(!(!c||/---/u.test(b)))for(let a of j(b)){let b=m.get(a);(void 0===b||c.value>b)&&m.set(a,c.value)}}n.push({start:h[b].start,end:h[c-1].end})}}for(let a of b?.nodeAuthorities??[]){let b=a.offset.match(/第(\d{1,3})[日天]/u);if(!b)continue;let c=Number(b[1]);if(!Number.isFinite(c)||c<1||c>3e3)continue;let d=ad.find(b=>b.re.test(a.node))?.key;if(void 0===d)continue;let e=m.get(d);void 0!==e&&Math.abs(e-c)>=5&&(n.length=0),m.set(d,c)}if(0===m.size)return{markdown:c,fixedCount:+(d.length>0),details:d};let o=[],p=a=>!n.some(b=>a>=b.start&&a<=b.end);for(let a=0;a<f.length;a+=1){if(!g.test(f[a].trim())||!p(h[a].start))continue;let b=k(f[a]),c=l(f[a]);if(!c||/---/u.test(b))continue;let d=j(b).map(a=>m.get(a)).find(a=>void 0!==a);if(void 0===d||5>Math.abs(c.value-d))continue;let e=ad.find(a=>j(b).includes(a.key))?.label||b.slice(0,12);o.push({start:h[a].start+c.start,end:h[a].start+c.end,replacement:String(d),detail:`表格节点“${e}”${c.value}日→${d}日(以总进度计划/总工期控制表为准)`})}let q=(a,b,c,d,e)=>{let f=ad.find(b=>b.re.test(a))?.key;if(void 0===f||!Number.isFinite(b)||b<1||b>3e3)return;let g=m.get(f);!(void 0===g||5>Math.abs(b-g))&&p(c)&&o.push({start:c,end:d,replacement:String(g),detail:`节点“${ad.find(a=>a.key===f)?.label||f}”工期 ${b}日→${g}日(以总进度计划表为准)`})};for(let a of c.matchAll(/第(\d{2,3})日(?:(?![))→。;;\n,、]).){0,14}?完成(?:(?![((→。;;\n,、]).){0,12}?(基坑支护及土方外运|装饰装修及幕墙|机电安装及智能化调试|室外工程及竣工验收|地下结构出正负零|主体结构封顶|正负零|封顶)/gu)){let b=a.index+a[0].indexOf(a[1]);q(a[2],Number(a[1]),b,b+a[1].length,a[0].slice(0,40))}for(let a of c.matchAll(/(竣工验收)(?:(?!(?:后|第\d{2,3}[日天]|,|、|→)).){0,10}?第(\d{2,3})[日天]/gu)){let b=a.index+a[0].indexOf(a[2]);q(a[1],Number(a[2]),b,b+a[2].length,a[0].slice(0,40))}for(let a of c.matchAll(/(基坑支护|正负零|封顶|装饰装修|机电安装|竣工验收)(?:(?!(?:第\d{2,3}[日天]|,|、)).){0,8}?完成[^。;;\n]{0,10}?第(\d{2,3})[日天]/gu)){let b=a.index+a[0].indexOf(a[2]);q(a[1],Number(a[2]),b,b+a[2].length,a[0].slice(0,40))}for(let a of c.matchAll(/(主体(?:结构)?封顶)(?!后)(?:(?!(?:第\d{2,3}[日天]|,|、|完成|\||[。;;\n])).){0,20}?第(\d{2,3})日/gu)){let b=a.index+a[0].indexOf(a[2]);q(a[1],Number(a[2]),b,b+a[2].length,a[0].slice(0,40))}let r=aS(c,o);return{markdown:r.markdown,fixedCount:r.fixedCount+ +(d.length>0),details:[...d,...r.details].slice(0,12)}})(a,{scheduleAuthority:b?.scheduleAuthority,nodeAuthorities:b?.nodeAuthorities}),a=>(function(a,b){let c=[];for(let d of ag){if("number"!==d.kind)continue;let e=new Set,f=new Set;for(let b of d.patterns)for(let c of a.matchAll(b)){let b=c[0].slice(0,40);if(ah.test(b))continue;let d=a.lastIndexOf("\n",c.index)+1,g=a.indexOf("\n",c.index);-1===g&&(g=a.length);let h=a.slice(d,g);if(ai.test(h))continue;let i=Number(c[1]);Number.isFinite(i)&&!(i<=0)&&(/^\s*\|/u.test(h)?e.add(i):f.add(i))}let g=b?.[d.key],h=void 0===g&&"towerCrane"===d.key&&e.size>1,i=void 0!==g&&g>0?g:1===e.size?[...e][0]:h?Math.min(...e):void 0;if(void 0!==i&&[...f,...void 0!==g||h?[...e]:[]].some(a=>Math.abs(a-i)>.2*i))for(let b of d.patterns)for(let e of a.matchAll(b)){let b=e[0].slice(0,40);if(ah.test(b))continue;let f=a.lastIndexOf("\n",e.index)+1,j=a.indexOf("\n",e.index);-1===j&&(j=a.length);let k=a.slice(f,j);if(ai.test(k)||/^\s*\|/u.test(k)&&void 0===g&&!h)continue;let l=Number(e[1]);if(!Number.isFinite(l)||l<=0||Math.abs(l-i)<=.2*i)continue;let m=e.index+e[0].indexOf(e[1]),n=void 0!==g&&g>0?"scheduleDays"===d.key?"以绑定资料计划工期为准":"以绑定资料锁定口径为准":"以表格口径为准";c.push({start:m,end:m+e[1].length,replacement:String(i),detail:`${d.label} ${l}${d.unit}→${i}${d.unit}(${n})`})}}return aS(a,c)})(a,f),a=>(function(a,b){if("slope"!==b)return{markdown:a,fixedCount:0,details:[]};let c=0,d=0,e=a.split(/\r?\n/u).map(a=>{let b=a.trim();return/^#{1,6}\s/u.test(b)||/^\s*\|/u.test(b)||!w.test(a)?a:a.split(/(?<=[。;;])/u).map(a=>{if(!w.test(a))return a;if(!x.test(a))return c+=1,"";let b=/([。;;])$/u.exec(a)?.[1],e=a.split(/[,、]/u).filter(a=>!B.test(a)).join(",");for(let[a,c]of(void 0===b||/[。;;]$/u.test(e)||(e+=b),A))e=e.replace(a,c);return d+=1,e}).join("")});return 0===c&&0===d?{markdown:a,fixedCount:0,details:[]}:{markdown:e.join("\n"),fixedCount:c+d,details:[`支护体系确定性裁决(图纸/地质槽位:放坡喷锚类):删除桩族句 ${c} 句、改写混句 ${d} 句`]}})(a,b?.supportAuthority)])){let b=a(c);b.markdown!==c&&(c=b.markdown,d+=b.fixedCount,e.push(...b.details))}return{markdown:c,fixedCount:d,details:e.slice(0,12)}}function a$(a){let b=a.split(/(?<=[。!?;\n])/u),c=[],d=0;return{markdown:b.map(a=>{let b=a.trimStart();if(/^[|#]/.test(b))return a;let e=a,f=!0,g=0;for(;f&&g<20;){f=!1,g+=1;for(let a=16;a>=4;a-=1){for(let b=0;b+2*a<=e.length;b+=1){let g=e.slice(b,b+a);if((/[0-9]/.test(g)||/[\u4e00-\u9fa5]/.test(g))&&e.slice(b+a,b+2*a)===g){e=e.slice(0,b+a)+e.slice(b+2*a),f=!0,d+=1,c.push(`相邻重复短语折叠:“${g.slice(0,24)}”`);break}}if(f)break}if(f)continue;for(let a=20;a>=9;a-=1){for(let b=0;b+a<=e.length;b+=1){let g=e.slice(b,b+a);if(!/[\u4e00-\u9fa5]/.test(g[0]||""))continue;let h=/[0-9]/.test(g);if(!h&&a<12||h&&(/\d$/.test(g)||/[|→\-—]/.test(g)))continue;let i=e.indexOf(g);if(i!==b||-1===e.indexOf(g,i+1))continue;let j=0,k=e.indexOf(g,i+1);for(;-1!==k;)e=e.slice(0,k)+e.slice(k+a),j+=1,k=e.indexOf(g,k);if(j>0){f=!0,d+=j,c.push(`隔位重复短语折叠:“${g.slice(0,24)}”\xd7${j}`);break}}if(f)break}if(f)continue;let a="kW|kVA|MPa|㎡|m\xb2|m\xb3|mm|cm|%",b=RegExp(`(\\d+(?:\\.\\d+)?)(?:${a})(?=\\s*\\d+(?:\\.\\d+)?(?:${a}))`,"gu").exec(e);if(b){let g=b.index+b[0].length,h=e.slice(g).match(RegExp(`^\\s*(\\d+(?:\\.\\d+)?)(?:${a})`));h&&(e=e.slice(0,g)+e.slice(g+h[0].length),f=!0,d+=1,c.push(`数值单位粘连折叠:“${b[0]}${h[0].trim()}”→“${b[0]}”`))}if(f)continue;let h=e;(e=e.replace(/[,,]{2,}/gu,",").replace(/[。;!?]{2,}/gu,a=>a[0]).replace(/,(?=[。;!?])/gu,""))!==h&&(f=!0,c.push("残留重复标点归一"))}return e}).join(""),fixedCount:d,details:c.slice(0,8)}}function a_(a,b){let c=[];if(b?.areaSummary)for(let d of a.matchAll(/\|\s*按施工图设计文件确定\s*\|/gu))c.push({start:d.index+1,end:d.index+d[0].length-1,replacement:` ${b.areaSummary} `,detail:`工程概况一览表建设规模套话→“${b.areaSummary}”`});if(b?.scheduleDays!==void 0&&b.scheduleDays>0)for(let d of a.matchAll(/\|\s*按合同约定工期执行\s*\|/gu))c.push({start:d.index+1,end:d.index+d[0].length-1,replacement:` ${b.scheduleDays}个日历天 `,detail:`工程概况一览表工期套话→“${b.scheduleDays}个日历天”`});if(0===c.length)return{markdown:a,fixedCount:0,details:[]};let d=aS(a,c);return{markdown:d.markdown,fixedCount:d.fixedCount,details:d.details}}function a0(a){let b=a.match(/(### 6\.1\s+施工部署与施工流水组织[\s\S]*?)(?=### 6\.2|## 第[六七]章|$)/u);if(!b)return{markdown:a,fixedCount:0,details:[]};let c=b[0],d=["三检","样板引路","隐蔽验收","见证取样","试块养护","分部分项报验"],e=d.filter(a=>c.includes(a)).length;if(e>=3)return{markdown:a,fixedCount:0,details:[]};let f=`
19
- 质量保障体系与安全文明管理同频运行:项目部实行“三检制”(自检、互检、交接检),每道工序经班组自检、质量员复检合格后报监理单位验收;推行样板引路制度,主体结构、装配式构件安装、ALC墙板安装、幕墙安装等主要分项工程在大面积施工前先做样板,经建设、监理单位验收确认后方可展开;隐蔽工程(钢筋、防水、管线预埋等)覆盖前由质量员组织隐蔽验收并留存影像记录;原材料进场按见证取样要求送检,混凝土试块按规范留置并落实标养与同条件养护;分部分项工程验收严格执行报验程序,验收资料与工程进度同步归档,确保“合格”质量标准与“确保黄山杯”创优目标逐级落实。`,g=(b.index??0)+c.length;return{markdown:a.slice(0,g)+f+a.slice(g),fixedCount:1,details:[`6.1 施工部署块补全质量保障协同段(核心术语 ${d.length-e}/${d.length} 缺失)`]}}function a1(a){let b=a.replace(/\s+/gu,"");return b.length?(b.match(/[0-9A-Za-z%℃°±×÷≥≤.]/gu)||[]).length/b.length:0}async function a2(a){if("0"===process.env.DOCUMENT_CROSS_CHAPTER_DEDUP)return[];let b=function(a){let b=[];return a.forEach((a,c)=>{(a.content||"").split(/\n\s*\n/u).forEach((a,d)=>{let e=a.trim();if(!e||/^#{1,6}\s/um.test(e)||/^\s*\|/um.test(e)||/^[-*•]\s/um.test(e))return;let f=e.replace(/\s+/gu,"");f.length<60||b.push({chapterIndex:c,paragraphIndex:d,text:e,normalized:f})})}),b}(a);if(b.length<2)return[];let c=await (0,f.Mv)(b.map(a=>a.normalized),b.map(a=>a.normalized)),d=[],e=new Set;for(let a=0;a<b.length;a+=1)for(let f=a+1;f<b.length;f+=1){let g=b[a],h=b[f];if(g.chapterIndex===h.chapterIndex||g.normalized===h.normalized)continue;let i=c(g.normalized,h.normalized);if(i<.82)continue;let j=a1(g.text),k=a1(h.text),l=j>k||j===k&&g.chapterIndex<=h.chapterIndex,m=l?g:h,n=l?h:g,o=`${n.chapterIndex}:${n.paragraphIndex}`;e.has(o)||(e.add(o),d.push({keep:{chapterIndex:m.chapterIndex,paragraphIndex:m.paragraphIndex},drop:{chapterIndex:n.chapterIndex,paragraphIndex:n.paragraphIndex},similarity:i,paragraphPreview:n.normalized.slice(0,40)}))}return d}async function a3(a){return(await a2(a)).map(b=>({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",chapterId:a[b.drop.chapterIndex]?.id,message:`跨章语义重复:「${a[b.keep.chapterIndex]?.title||"?"}」与「${a[b.drop.chapterIndex]?.title||"?"}」存在内容高度雷同段落(相似度 ${b.similarity.toFixed(2)}):“${b.paragraphPreview}…”`,suggestion:"同一内容全文只保留一处(保留信息密度高者);删除或改写本章的雷同段落,与本章主题相关的独有信息归并后,不得与他章段落语义重复。"}))}async function a4(a){let b=0;for(let c=0;c<5;c+=1){let c=await a2(a);if(0===c.length)break;let d=0;for(let b of[...c].sort((a,b)=>a.drop.chapterIndex-b.drop.chapterIndex||b.drop.paragraphIndex-a.drop.paragraphIndex)){let c=a[b.drop.chapterIndex];if(!c)continue;let e=(c.content||"").split(/\n\s*\n/u);!(b.drop.paragraphIndex>=e.length)&&(e[b.drop.paragraphIndex].trim().replace(/\s+/gu,"").length<60||(e.splice(b.drop.paragraphIndex,1),c.content=e.join("\n\n"),d+=1))}if(0===d)break;b+=d}return b}},46482:(a,b,c)=>{c.d(b,{Zk:()=>r,Tz:()=>z,X6:()=>s,fC:()=>A,l8:()=>y,JP:()=>q});var d=c(73024),e=c(76760),f=c(74329);c(25840),c(23500);var g=c(70933),h=c(70208),i=c(61373),j=c(78217);c(23760);var k=c(30355),l=c(44505),m=c(85016),n=c(22157);let o=[...k.P9.filter(a=>!n.Kd.includes(a)),...m.D$.source.split("|")];var p=c(95734);function q(a){let b=a.template.chapters.length,c=b>0?a.targetWords/b:a.targetWords,d=`${a.template.name}
18
+ ]{18,60})[。!?!?]`,"gu");function P(a){let b=[],c=new Map;for(let b of a.matchAll(O)){let a=b[1].trim(),d=a.replace(/[\d,,.。%%㎡m2²]/gu,"").slice(0,16);if(d.length<10)continue;let e=c.get(d)||{count:0,sample:a};e.count+=1,c.set(d,e)}for(let{count:a,sample:d}of c.values())a<3||b.push({level:"warning",severity:"warning",category:"style",owner:"llm",repairability:"llm_repairable",message:`段首固定开场机械重复 ${a} 次:“${d.slice(0,30)}…”`,suggestion:"同一段首句式只保留首次出现处,其余处按所在章节语境改写为差异化开场,避免模板化套话观感。"});return b.slice(0,3)}function Q(a){let b,c=a.split("\n"),d=[];for(let a=0;a<c.length;a+=1){let e=/^(#{2,4})\s+(.+)$/u.exec(c[a].trim());if(e){let c=e[1].length;/(?:工程概况|项目概况|基本信息)/u.test(e[2])?b={index:a,level:c}:b&&c<=b.level&&(d.push([b.index,a]),b=void 0)}}b&&d.push([b.index,c.length]);let e=a=>d.some(([b,c])=>a>=b&&a<c),f=c.filter((a,b)=>e(b)).join("\n"),g=[];for(let a=0;a<c.length;a+=1){if(e(a))continue;let b=/本项目为|本工程为|该项目为|该工程为/u.exec(c[a]);if(!b)continue;let d=c[a].slice(b.index).split(/[。!?!?]/u)[0];d&&d.length>=12&&g.push(d)}return{overviewBody:f,sentences:g}}function R(a,b={}){let c=[],{overviewBody:d,sentences:e}=Q(a);if(0===e.length||!d||!b.semanticSimilarity)return c;let f=[];for(let a of e)if(b.semanticSimilarity(a,d)>=.6&&f.push(a.slice(0,36)),f.length>=3)break;return 0===f.length||c.push({level:"error",severity:"blocker",category:"style",owner:"llm",repairability:"llm_repairable",message:`项目概况段跨章复述不得出现:概况章外有 ${f.length} 处以“本项目为/本工程为”等总述开头整段复述概况内容:${f.map(a=>`“${a}…”`).join("、")}`,suggestion:"总述数据只在工程概况类小节集中交代一次:其他章节直接写本章内容,仅可引用所需的具体数字(如计划工期天数),不得复述完整概况段。"}),c}function S(a,b){let c,{overviewBody:d,sentences:e}=Q(a);if(0===e.length||!d)return a;let f=a.split(/\r?\n/u),g=[];for(let a=0;a<f.length;a+=1){let b=/^(#{2,4})\s+(.+)$/u.exec(f[a].trim());if(b){let d=b[1].length;/(?:工程概况|项目概况|基本信息)/u.test(b[2])?c={index:a,level:d}:c&&d<=c.level&&(g.push([c.index,a]),c=void 0)}}c&&g.push([c.index,f.length]);let h=!1,i=f.map((a,c)=>{if(g.some(([a,b])=>c>=a&&c<b)||/^#{1,6}\s/u.test(a.trim())||/^\s*\|/u.test(a.trim())||!/本项目为|本工程为|该项目为|该工程为/u.test(a))return a;let e=a.split(/(?<=[。!?!?])/u).filter(a=>{if(!/本项目为|本工程为|该项目为|该工程为/u.test(a))return!0;let c=a.split(/[。!?!?]/u)[0];return c.length<12||.6>b(c,d)});return e.join("")!==a&&(h=!0),e.join("")});return h?i.join("\n"):a}let T=["销项","复查","整改","闭环"];function U(a){let b=[],c=(0,d.V7)(a);if(c<3e3)return b;let e=[];for(let b of T){let d=a.split(b).length-1;e.push(d/c*1e3)}let f=Math.max(...e),g=T[e.indexOf(f)];return f>=3&&b.push({level:"warning",severity:"warning",category:"style",owner:"llm",repairability:"llm_repairable",message:`闭环句式模板化密集:“${g}”达 ${f.toFixed(1)} 次/千字(销项/复查/整改/闭环统一结尾高度重复)`,suggestion:"保留关键控制环节的闭环表述,其余改为差异化的过程控制语言(检验批验收、实测实量、旁站记录等),提升语言精练度。"}),b}let V=["专项设计文件尚未完成,待后续补充","评分指标存在缺口尚未明确","依据承诺函后续跟踪完善"];async function W(a){let b=[],c=a.split(/\n+/u).filter(a=>a.trim()&&!/^\s*(#{1,6}\s+|\||[-*+]\s|>)/u.test(a)).flatMap(a=>a.split(/[。;;]/u)).map(a=>a.trim()).filter(a=>a.length>=12);if(0===c.length)return b;let d=await (0,f.Mv)(c,[...V]),e=[...new Set(c.filter(a=>V.some(b=>d(a,b)>=f.Eh)))];if(0===e.length)return b;for(let a of e)b.push({level:"error",severity:"blocker",category:"style",owner:"llm",repairability:"llm_repairable",message:`自伤表述候选:“${a}”暴露投标短板,需按上下文判定后改写`,suggestion:"投标文件不得主动暴露“专项设计未完成/指标存在缺口”等短板:改写为正向落实表述(如“按施工图绿色建筑专篇编制专项方案,逐项落实评分项并跟踪验收”);如属现场条件合理风险描述(地质/管线尚不明确),保留但需配套勘查与应对措施。"});return b.slice(0,3)}let X=/([\u4e00-\u9fa5]{2})\1/gu;function Y(a){let b=[...new Set(a.match(X)||[])].slice(0,3);return 0===b.length?[]:[{level:"error",severity:"blocker",category:"style",owner:"llm",repairability:"llm_repairable",message:`正文存在叠词重复表述:${b.map(a=>`“${a}”`).join("、")}`,suggestion:"删除紧邻重复字词,保持语句完整通顺(“执行执行”改为“执行”)。"}]}let Z=/暂列金额|暂估价|报价明细|综合单价|清单合价|预留金|投标报价/u,$=/(?:税率|增值税)[^。;;\n]{0,12}\d/u,_=/合同估算价|合同估算价格|投资估算|估算价格|工程估算价|最高投标限价|招标控制价/u,aa=/材料价格|商务报价|投标总价|合同总价|工程总价/u,ab=["暂列金额与暂估价的报价明细","综合单价与清单合价的商务数据","投标报价与费率标准的商务条款"],ac=["合同估算价与投资估算的项目信息","最高投标限价与招标控制价的公开信息","商务数据不得写入施工组织设计正文的约束说明"];async function ad(a){return(0,g.A)({prototypes:[...ab],negativePrototypes:[...ac],embedDocuments:a})}async function ae(a,b){let c=[],d=await ad(b),e=[];for(let b of a.split(/\r?\n/u)){let a=b.trim();if(!(/^#{1,6}\s/u.test(a)||/^\s*\|/u.test(a))&&(Z.test(b)||$.test(b)||aa.test(b)))for(let a of($.test(b)&&c.push("税率/增值税"),b.split(/(?<=[。;;])\s*/u))){let b=a.match(Z)||[],d=_.test(a),f=aa.test(a);!(b.length>0)||d||f?(b.length>0&&(d||f)||f&&0===b.length)&&e.push(a):c.push(...b)}}if(e.length>0){let a=await d(e);e.forEach((b,d)=>{if(!a[d])return;let e=b.match(Z)||[],f=b.match(aa)||[];c.push(...e.length>0?e:f)})}let f=[...new Set(c)].slice(0,4);return 0===f.length?[]:[{level:"error",severity:"blocker",category:"style",owner:"llm",repairability:"llm_repairable",message:`正文出现商务条款数据:${f.join("、")}`,suggestion:"商务数据(暂列金额/暂估价/综合单价/税率等)不得写入施组正文:删除该句或改写为定性表述(如“按合同约定执行”),商务口径仅保留在项目信息表中。"}]}function af(a){return a.split(/\r?\n/u).map(a=>{let b=a.trim();return/^#{1,6}\s/u.test(b)||/^\s*\|/u.test(b)||!Z.test(a)&&!$.test(a)?a:a.split(/(?<=[。;;])\s*/u).filter(a=>!(Z.test(a)||$.test(a))).join("")}).join("\n")}let ag=[{key:"excavation",label:"基坑支护及土方外运",re:/基坑支护/u},{key:"zero",label:"地下结构出正负零",re:/正负零|地下室结构/u},{key:"topping",label:"主体结构封顶",re:/主体(?:结构)?封顶/u},{key:"decoration",label:"装饰装修及幕墙",re:/装饰装修/u},{key:"mep",label:"机电安装及智能化调试",re:/机电安装/u},{key:"completion",label:"室外工程及竣工验收",re:/竣工验收/u}];function ah(a){let b=[],c=(a,c,d)=>{let e=ag.find(b=>b.re.test(a))?.key;void 0!==e&&Number.isFinite(c)&&c>=1&&c<=3e3&&b.push({key:e,day:c,raw:d})};for(let b of a.matchAll(/第(\d{2,3})日[^。;;\n]{0,14}?完成[^。;;\n,、]{0,12}?(基坑支护及土方外运|装饰装修及幕墙|机电安装及智能化调试|室外工程及竣工验收|地下结构出正负零|主体结构封顶|正负零|封顶)/gu))c(b[2],Number(b[1]),b[0].slice(0,40));for(let b of a.matchAll(/(基坑支护|正负零|封顶|装饰装修|机电安装|竣工验收)(?:(?!(?:第\d{2,3}[日天]|,|、)).){0,8}?完成[^。;;\n]{0,10}?第(\d{2,3})[日天]/gu))c(b[1],Number(b[2]),b[0].slice(0,40));for(let b of a.matchAll(/(主体(?:结构)?封顶)(?!后)(?:(?!(?:第\d{2,3}[日天]|,|、|完成|\||[。;;\n])).){0,20}?第(\d{2,3})日/gu))c(b[1],Number(b[2]),b[0].slice(0,40));for(let b of ag){let d=RegExp(`^\\s*\\|\\s*[^|]*${b.re.source}[^|]*\\s*\\|\\s*开工(?:令下发)?后第(\\d{2,3})日\\s*\\|`,"gum");for(let b of a.matchAll(d))c(b[0],Number(b[1]),b[0].slice(0,40))}let d=new Set;return b.filter(a=>{let b=`${a.key}:${a.raw}`;return!d.has(b)&&(d.add(b),!0)})}function ai(a){let b=[],c=new Map;for(let b of ah(a)){let a=c.get(b.key)||[];a.push(b),c.set(b.key,a)}for(let a of ag){let d=c.get(a.key);if(!d||d.length<2)continue;let e=[...new Set(d.map(a=>a.day))];if(e.length<2||Math.max(...e)-Math.min(...e)<5)continue;let f=[...new Set(d.map(a=>a.raw))].slice(0,4).join("、");b.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`节点工期口径矛盾:“${a.label}”节点出现 ${e.map(a=>`${a}日`).join(" 与 ")} 两套口径:${f}`,suggestion:`关键节点完成时间必须全文唯一:以总进度计划表为准统一“${a.label}”节点日期,删除正文/其他表中矛盾的“第N日”表述。`})}return b.slice(0,4)}let aj=[{key:"xps",label:"挤塑聚苯板(XPS)厚度",unit:"mm",kind:"number",patterns:[/(?:挤塑聚苯|XPS)(?:(?!(?:宽度|拼缝|不大于|不超过|小于|≤|采用|使用|选用|铺设|粘贴)).){0,40}?(\d+(?:\.\d+)?)\s*mm/gu,/(\d+(?:\.\d+)?)\s*mm[^。;;\n|]{0,10}?(?:挤塑聚苯|XPS)/gu]},{key:"cushion",label:"垫层混凝土强度等级",unit:"C标号",kind:"code",patterns:[/垫层[^。;;\n|]{0,20}?(C\d{2})/gu]},{key:"transformer",label:"箱式变压器容量",unit:"kVA",kind:"number",patterns:[/(\d+)\s*kVA[^。;;\n|]{0,12}?变压器/gu,/变压器[^。;;\n|]{0,12}?(\d+)\s*kVA/gu]},{key:"formwork",label:"模板周转次数",unit:"次",kind:"number",patterns:[/模板周转(?:次数|使用)?[^。;;\n|]{0,15}?(\d+)\s*次/gu]},{key:"block",label:"蒸压加气混凝土砌块强度等级",unit:"A标号",kind:"code",patterns:[/(?:蒸压加气混凝土|加气混凝土)?砌块[^。;;\n]{0,24}?(A\d+(?:\.\d+)?)/gu]},{key:"extinguisher",label:"干粉灭火器数量",unit:"具",kind:"number",patterns:[/灭火器[^。;;\n]{0,24}?(\d+)\s*具/gu]},{key:"pump",label:"潜水泵数量",unit:"台",kind:"number",patterns:[/潜水泵[^。;;\n]{0,24}?(\d+)\s*台/gu]},{key:"firstaid",label:"急救箱数量",unit:"套/个",kind:"number",patterns:[/急救箱[^。;;\n|]{0,24}?(\d+)\s*(?:套|个)/gu]},{key:"scheduleDays",label:"计划总工期",unit:"日历天",kind:"number",patterns:[/^\s*\|\s*计划工期\s*\|\s*(\d{1,4})\s*个?\s*日历天\s*\|/gum,/(?:计划工期|合同工期|工期总日历天数|工期控制|工期目标|总工期)[^。;;\n|]{0,12}?(\d{1,4})\s*个?\s*日历天/gu,/(\d{1,4})\s*个?\s*日历天[^。;;\n|]{0,8}?(?:总工期|倒排|分解|为唯一|完成)/gu]},{key:"prefabRatio",label:"装配率",unit:"%",kind:"number",patterns:[/装配率[^。;;\n|]{0,14}?(\d+(?:\.\d+)?)\s*%/gu,/装配率[^。;;\n|]{0,44}?计算为(\d+(?:\.\d+)?)\s*%/gu,/(\d+(?:\.\d+)?)\s*%(?:(?![,,。;;\n|]).){0,10}?装配率/gu]},{key:"projectCode",label:"项目编号",unit:"",kind:"code",patterns:[/(?:招标项目编号|项目编号)[^。;;\n|]{0,8}?(20\d{2}[A-Z]{1,8}\d{2,10})/gu]},{key:"towerCrane",label:"塔式起重机(塔吊)数量",unit:"台",kind:"number",patterns:[/(?:塔式起重机|塔吊)[^。;;\n|、,]{0,30}?(\d+)\s*台/gu,/(\d+)\s*台[A-Za-z0-9/\-–—~~]{0,16}\s{0,2}(?:塔式起重机|塔吊)/gu]},{key:"hoist",label:"施工升降机(施工电梯)数量",unit:"台",kind:"number",patterns:[/(?:施工升降机|施工电梯)[^。;;\n|、,]{0,30}?(\d+)\s*台/gu,/(\d+)\s*台[A-Za-z0-9/\-–—~~]{0,16}\s{0,2}(?:施工升降机|施工电梯)/gu]},{key:"truckCrane",label:"汽车起重机(汽车吊)数量",unit:"台",kind:"number",patterns:[/(?:汽车起重机|汽车吊)[^。;;\n|、,]{0,30}?(\d+)\s*台/gu,/(\d+)\s*台[A-Za-z0-9/\-–—~~]{0,16}\s{0,2}(?:汽车起重机|汽车吊)/gu]},{key:"rebarCutter",label:"钢筋切断机数量",unit:"台",kind:"number",patterns:[/钢筋切断机[^。;;\n|]{0,24}?(\d+)\s*台/gu]},{key:"rebarBender",label:"钢筋弯曲机数量",unit:"台",kind:"number",patterns:[/钢筋弯曲机[^。;;\n|]{0,24}?(\d+)\s*台/gu]},{key:"circularSaw",label:"圆盘锯数量",unit:"台",kind:"number",patterns:[/圆盘锯[^。;;\n|]{0,24}?(\d+)\s*台/gu]}],ak=/\d+(?:\.\d+)?\s*(?:mm|kVA|次|具|台|套|个)\s*[//]\s*\d+/u,al=/不再出现|不得出现|严禁出现|避免出现|不采用|未采用|予以删除|已删除|取消|纠正为|更正为/u;function am(a,b,c,d){let e=Math.max(d,b-16),f=a.slice(e,b),g=Math.max(f.lastIndexOf(","),f.lastIndexOf("、"),f.lastIndexOf(","),f.lastIndexOf(";"),f.lastIndexOf(";"),f.lastIndexOf("。")),h=[...a.slice(g>=0?e+g+1:e,b+c.length).replace(/[\u4e00-\u9fa5]{2,6}阶段/gu,"").matchAll(RegExp("女儿墙|外墙|内墙|隔墙|地梁|圈梁|构造柱|过梁|垫层|承台|筏板|底板|基础|主体|梁|柱|墙|楼板|屋面|地面|楼面|顶板|楼梯|阳台|雨篷|台阶|散水|坡道|找坡|找平|保护层|防水层|保温层|隔汽层|地坪|办公区|生活区|库房|加工区|堆放区","gu"))];return h[h.length-1]?.[0]??""}function an(a){let b=[];for(let c of aj){let d=new Map,e=new Map;for(let b of c.patterns)for(let c of a.matchAll(b)){let b=c[0].slice(0,40);if(ak.test(b))continue;let f=a.lastIndexOf("\n",c.index)+1,g=a.indexOf("\n",c.index);if(-1===g&&(g=a.length),al.test(a.slice(f,g)))continue;let h=am(a,c.index||0,b,f),i=d.get(h)||new Set;i.add(c[1]),d.set(h,i);let j=e.get(h)||[];j.push(b),e.set(h,j)}let f=d.get("")||new Set,g=[...d.keys()].filter(a=>""!==a);if(f.size>0&&1===g.length){let a=d.get(g[0]||"");if(a){for(let b of f)a.add(b);let b=e.get(g[0]||"")||[];b.push(...e.get("")||[]),e.set(g[0]||"",b),d.delete(""),e.delete("")}}for(let[a,f]of d){if(f.size<2)continue;let d=e.get(a)||[];if("code"===c.kind)b.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`材料参数口径矛盾:“${c.label}”${a?`在部位「${a}」`:"在未标注部位语境下"}出现 ${[...f].map(a=>`${a}${c.unit}`).join(" 与 ")} 两套口径:${[...new Set(d)].slice(0,3).join("、")}`,suggestion:`同一材料同一部位只允许一个口径:以设计图纸/工程量清单为准统一“${c.label}”${a?`在部位「${a}」的取值`:""},删除矛盾表述;不同部位允许不同规格,不得全文归一为一种。`});else{let e=[...f].map(Number).filter(Number.isFinite);if(e.length<2)continue;let g=Math.max(...e);if(g-Math.min(...e)<=.2*g)continue;b.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`材料/设备数量口径矛盾:“${c.label}”${a?`在部位「${a}」`:"在未标注部位语境下"}出现 ${e.map(a=>`${a}${c.unit}`).join(" 与 ")} 两套口径:${[...new Set(d)].slice(0,3).join("、")}`,suggestion:`同一设备/材料同一部位只允许一个口径:以应急物资清单/施工部署为准统一“${c.label}”${a?`在部位「${a}」的取值`:""},删除矛盾表述;总量与分区配置属不同口径,不得互相归一。`})}}}return b.slice(0,8)}function ao(a,b){let c=[];if(!b)return c;for(let e of Object.values(b)){var d;if(e.length<2)continue;let b=(d=e[0]?.spec||"",/^C\d{2,3}$/.test(d)?/C\d{2,3}/u:/^M\d/.test(d)?/M\d+(?:\.\d+)?/u:/^P\d{1,2}$/.test(d)?/P\d{1,2}/u:/^A\d+(?:\.\d+)?$/.test(d)?/A\d+(?:\.\d+)?/u:/^B\d+(?:\.\d+)?$/.test(d)?/B\d+(?:\.\d+)?/u:/^HRB/.test(d)||/^HPB/.test(d)?/HRB\d{3,4}|HPB\d{3}/u:/mm$/.test(d)?/\d+(?:\.\d+)?\s*mm/u:null);if(b)for(let d of e){let{location:f,spec:g}=d;if(!f||!g||f.length<2)continue;let h=new Set(e.filter(a=>a.location===f).map(a=>a.spec)),i=RegExp(`${f.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&")}[^。;;
19
+ |]{0,40}?(${b.source})`,"gu");for(let b of a.matchAll(i)){let a=b[1]||"";if(!h.has(a)&&(c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`规格错位:“${f}”使用的规格 ${a} 与工程量清单权威(${[...h].join("/")})不一致`,suggestion:`按工程量清单将“${f}”的规格统一为 ${[...h].join("/")};同一材料不同部位允许不同规格,但同一部位不得混用其他部位的规格。`}),c.length>=8))return c}}}return c.slice(0,8)}let ap=/桩基|灌注桩|钻孔桩|打桩|成桩|桩机/u;function aq(a){let b=function(a){let b=[];for(let c of[...a.matchAll(/^#{3,4}\s+[^\n]*(?:地基与基础)[^\n]*$/gmu)]){let d=(c.index||0)+c[0].length,e=a.slice(d).search(/^#{2,4}\s+/mu),f=a.slice(d,e>=0?d+e:a.length);b.push(f)}return b}(a);if(0===b.length||b.some(a=>ap.test(a)))return[];let c=[];for(let b of a.split(/\r?\n/u)){let a=b.trim();!(!a||/^#{1,6}\s/u.test(a))&&ap.test(b)&&c.push(a.slice(0,48))}let d=[...new Set(c)].slice(0,5);return d.length<2?[]:[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`桩基表述残留:地基与基础章节施工流程为筏板/独立基础(无桩基工序),但全文另有 ${d.length} 处桩基表述:${d.join("、")}`,suggestion:"本项目基础形式不含桩基:删除全文所有桩基/桩机表述,进度计划表关键线路工序、质量验收划分表、隐蔽验收表均改为本项目实际基础工序(垫层/底板钢筋/混凝土)。"}]}let ar=/^\s*\|\s*计划工期\s*\|([^|\n]*)\|/u,as=/工期延误|延误|违约|切除|赔偿|罚款|解除|扣减/u;function at(a){let b=[];for(let c of a.split(/\r?\n/u)){let a=ar.exec(c);if(!a)continue;let d=(a[1]??"").trim();d&&as.test(d)&&b.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`基本信息表「计划工期」字段错填违约条款文字:“${d.slice(0,40)}”`,suggestion:"「计划工期」字段应填日历天数值(与招标文件前附表一致);工期延误违约条款文字应放在工期风险管控章节,不得占用基本信息表字段。"})}return b.slice(0,2)}let au=/基础|支护|围护|桩|结构|开挖|放坡|喷锚|排桩|连续墙|土钉|锚杆|标高|深度|形式|体系/u;function av(a){let b=a.replace(/\s+/gu,""),c=new Set;for(let a of b.matchAll(/([一-龥]{2,8})\/([一-龥]{2,8})/gu)){if(!au.test(a[1])&&!au.test(a[2]))continue;let d=Math.max(0,(a.index||0)-12),e=Math.min(b.length,(a.index||0)+a[0].length+12),f=b.slice(d,e);!/管线|管道|电缆|给水|排水/u.test(f)&&/采用|形式|方式|方案|选用|拟用|拟采用|为/u.test(f)&&c.add(`“${a[1]}/${a[2]}”`)}for(let a of b.matchAll(/[((]\s*或[^))]{1,48}[))]/gu)){let d=a[0].slice(1,-1);if(!/按图纸|按实|按图|待定|另行|视[^,。;]{0,8}而定|根据实际/u.test(d))continue;let e=Math.max(0,(a.index||0)-20),f=b.slice(e,(a.index||0)+a[0].length);au.test(f)&&c.add(a[0].slice(0,30))}for(let a of b.matchAll(/([一-龥]{2,8})或([一-龥]{2,8})/gu)){if(!au.test(a[1])&&!au.test(a[2]))continue;let d=Math.max(0,(a.index||0)-12),e=b.slice(d,(a.index||0)+a[1].length);if(/管线|管道|电缆|给水|排水/u.test(e)||!/按|采用|选用|拟用|拟采用|方案|为/u.test(e))continue;let f=a[1].replace(/^.*(地下连续墙|钢板桩|灌注桩|支护桩|土钉墙|基础|支护|围护|结构|开挖|放坡|喷锚|排桩|连续墙|土钉|锚杆|形式|体系)/u,"$1");c.add(`${f}或${a[2]}`)}return 0===c.size?[]:[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`关键设计决策两可表述:${[...c].join("、")} 以并列/悬置形态表述,基础形式、支护形式等关键决策必须在正文中唯一确定`,suggestion:"以设计图纸/勘察报告/工程量清单为准锁定唯一决策并删除两可表述:明确写出本项目基础形式与支护形式的具体做法(如「基础形式为筏板基础」「基坑支护采用放坡+喷锚」),禁止「或…按图纸实施」类悬置话术。"}]}function aw(a){let b=a.replace(/\s+/gu,"");if((b.match(/基坑|开挖|支护/gu)||[]).length<3)return[];for(let a of b.matchAll(/(?:深度|标高)[^。;,,]{0,12}-?\d+(?:\.\d+)?[^。;,,]{0,6}/gu)){let b=a[0];if(!/(?:超过|大于|小于|不[大低小]于|不低于|低于|高于|按|倍|依据|详见|参考|示意|每|以上|以下|偏差|±0|0\.000)/u.test(b)&&!/\d+(?:\.\d+)?\s*(?:h|小时|天|日|min|周|月|昼夜)/u.test(b))return[]}return[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:"基坑深度数值未锁定:正文已有基坑支护/开挖成稿内容,但全文未出现「深度/标高+数值」的确定性表述(比较式阈值如「超过3m」不视为锁定),危大工程分级判定失去依据",suggestion:"从绑定资料(地质勘察报告/基坑支护设计图/基础平面图)锁定基坑开挖深度数值写入基坑支护小节;深度 ≥5m 的深基坑须同步标注危大工程分级与专家论证要求,禁止以「按图纸确定」回避深度数值。"}]}function ax(a){let b=a.canonical?.byKey.excavation_depth?.value,c=[...(a.drawings||[]).map(a=>`${a.fieldName||a.key||""} ${(0,e.lG)(a.value)}`),...(a.project||[]).map(a=>`${a.fieldName||a.key||""} ${(0,e.lG)(a.value)}`),...(a.preciseFacts||[]).map(a=>`${a.fieldName||a.key||""} ${(0,e.lG)(a.value)}`)].filter(Boolean),d=a=>[...a.matchAll(/-?(\d+(?:\.\d+)?)\s*(?:m|米)/gu)].filter(b=>{let c=Math.max(0,(b.index??0)-6),d=Math.min(a.length,(b.index??0)+b[0].length+6);return!/(?:超过|大于|小于|不[大低小]于|不低于|及以上|及以下|以上|以下)/u.test(a.slice(c,d))}).map(a=>Math.abs(Number(a[1]))),f=[...b?d(b):[],...c.flatMap(a=>/基坑开挖深度|基坑深度|开挖深度|坡底线|坑底标高/u.test(a)?d(a):[])].filter(a=>Number.isFinite(a)&&a>=1&&a<50);return f.length>0?Math.max(...f):void 0}function ay(a,b){let c=ax(b);if(void 0===c||c<3)return[];let d=[];return c>=3&&!/危大工程/u.test(a)&&d.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`危大工程判定缺失:资料基坑开挖深度 ${c}m(≥3m),正文必须出现危大工程判定标注`,suggestion:`依据住建部令第37号,开挖深度≥3m 属危大工程:在基坑支护/危大工程清单小节写明本工程实际深度 ${c}m 与危大工程判定结论,不得只写判定规则不落地本项目。`}),c>=5&&!/超过一定规模/u.test(a)&&d.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`超危大工程判定缺失:资料基坑开挖深度 ${c}m(≥5m),正文必须出现「超过一定规模」判定与专家论证要求`,suggestion:`开挖深度≥5m 属超过一定规模的危大工程:写明本工程深度 ${c}m 对应分级结论,专项施工方案必须经专家论证,不得只写判定规则不落地分级。`}),d}function az(a,b){let c=[b.canonical?.byKey.foundation_support_form?.value,...(b.drawings||[]).map(a=>`${a.fieldName||a.key||""} ${(0,e.lG)(a.value)}`),...(b.project||[]).map(a=>`${a.fieldName||a.key||""} ${(0,e.lG)(a.value)}`),...(b.preciseFacts||[]).map(a=>`${a.fieldName||a.key||""} ${(0,e.lG)(a.value)}`)].filter(Boolean).filter(a=>/基坑支护形式|基坑支护方式|支护形式|支护方式|土钉|放坡|喷锚|护坡/u.test(a)&&!/监测|监测频次|闭环|基坑开挖深度/u.test(a));if(0===c.length)return[];let d=[];for(let a of c)for(let b of["土钉墙","放坡","喷锚","挂网喷浆","排桩","灌注桩","地下连续墙","内支撑","锚杆","锚索"])a.includes(b)&&d.push(b);let f=[],g=/不采用|未采用|不设置|未设置|不使用|不宜采用|不得采用|不再出现|不得出现|严禁出现|避免出现|已删除|取消/u,h=["支护桩","冠梁","钻孔灌注桩","灌注桩","地下连续墙","排桩","咬合桩","内支撑"].filter(b=>(b=>{let c=RegExp(b,"gu");for(let b of a.matchAll(c)){let c=a.lastIndexOf("\n",b.index)+1,d=a.indexOf("\n",b.index);-1===d&&(d=a.length);let e=a.slice(c,d).slice(Math.max(0,b.index-c-12),b.index-c);if(!g.test(e))return!0}return!1})(b)&&!d.includes(b));return h.length>0&&f.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`支护形式与资料矛盾:正文出现资料中不存在的支护体系词 ${h.join("、")}`,suggestion:`资料基坑支护形式为「${d.join("、")||c[0]?.slice(0,60)}」:删除编造的支护桩/冠梁/灌注桩类表述与对应参数(垂直度偏差/冠梁顶面标高等),按资料支护形式改写。`}),0===d.filter(b=>RegExp(b,"u").test(a)).length&&/基坑|支护/u.test(a)&&f.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`支护形式未落地:资料基坑支护形式「${d.join("、")||c[0]?.slice(0,60)}」未在正文中出现`,suggestion:`在基坑支护小节写明本工程实际支护形式(${d.join("、")})及对应工艺参数(土钉长度/间距/坡度等),不得以泛化表述回避。`}),f}let aA=["塔式起重机","施工升降机","施工电梯","汽车起重机","汽车吊","混凝土泵车","混凝土泵","挖掘机","装载机","推土机","压路机","平地机","空压机","注浆机","锚杆钻机","混凝土喷射机","喷射机","吊篮","钢筋加工设备","塔吊"],aB=/挖掘机|空压机|注浆机|锚杆钻机|混凝土喷射机|喷射机|推土机/u;function aC(a,b){let c=function(a){let b=[];for(let c of a.matchAll(/第(\d{2,3})日[^。;;\n|]{0,8}?(?:进场|投入使用|安装|调试)/gu)){let d=a.slice(Math.max(0,(c.index||0)-24),c.index||0),e=aA.find(a=>d.includes(a));e&&b.push({equipment:e,day:Number(c[1]),raw:`${d.slice(-18)}${c[0].slice(0,20)}`})}let c=new Set;return b.filter(a=>{let b=`${a.equipment}:${a.raw}`;return!c.has(b)&&(c.add(b),!0)})}(a);if(0===c.length)return[];let d=[],f=function(a,b){for(let c of[a,...(b.schedule||[]).map(a=>`${a.key||""}${(0,e.lG)(a.value)}`)]){let a=/(?:计划工期|合同工期|总工期|工期总日历天数)[^\d。;;\n|]{0,12}(\d{1,4})\s*个?\s*日历天/u.exec(c);if(a){let b=Number(a[1]);if(Number.isFinite(b)&&b>=30&&b<=3e3)return b}}}(a,b);if(void 0!==f){let a=c.filter(a=>a.day>=.8*f);a.length>0&&d.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`设备进场时间荒谬:${a.slice(0,3).map(a=>`「${a.equipment} 第${a.day}日进场」`).join("、")} 已过总工期(${f}日历天)的 80%,尾期进场无法覆盖主体施工`,suggestion:`以总进度计划为准核对设备进场计划:大型施工设备应在工程早期(总工期前 30% 内)进场,${a.map(a=>a.equipment).join("、")} 的进场日应提前至基础/主体施工开始前,删除矛盾的尾期进场表述。`})}let g=ah(a).filter(a=>"excavation"===a.key).map(a=>a.day);if(g.length>0){let a=Math.min(...g),b=c.filter(b=>aB.test(b.equipment)&&b.day>a);b.length>0&&d.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`设备进场工序倒挂:${b.slice(0,3).map(a=>`「${a.equipment} 第${a.day}日进场」`).join("、")} 晚于基坑支护及土方外运完成节点(第${a}日),基坑阶段设备未在工序开始前进场`,suggestion:`基坑阶段专用设备必须在基坑开挖/支护开始前完成进场与报验:将 ${b.map(a=>a.equipment).join("、")} 的进场日调整为早于基坑支护完成节点(第${a}日)的日期,删除工序倒挂表述。`})}return d.slice(0,3)}let aD=/[\u4e00-\u9fa5]{2,10}(?:杯|奖)(?![励金惩罚项])/gu,aE=/优质工程|文明工地|样板|标准化|观摩|示范|精品工程|结构优质|省优|市优/u;function aF(a){let b=a;for(;;){let a=b.replace(/^(?:争创|争取|力争|争获|确保|获得|创建|力创|评为|荣获|标为|目标为|承诺|为)/u,"");if(a===b||!a)break;b=a}return b}let aG=/^\s*\|[\s:|-]+\|/u;function aH(a){let b=a.split(/\r?\n/u),c=[],d=a=>a.trim().replace(/^\|/u,"").replace(/\|$/u,"").split("|").map(a=>a.trim()),e=a=>aG.test(a),f=0;for(;f<b.length;){let a;if(!/^\s*\|/u.test(b[f])){f+=1;continue}let g=f;for(;g<b.length&&/^\s*\|/u.test(b[g]);)g+=1;let h=b.slice(f,g),i=0,j=0,k=0,l=b=>{if(!a)return;let e=h.slice(j,b);0!==e.length&&c.push({startLine:f+i,endLine:f+b-1,header:a,firstCol:e.map(a=>d(a)[0]?.replace(/[*_`]/gu,"").trim()||"").filter(Boolean),dataCells:e.flatMap(a=>d(a).map(a=>a.replace(/[*_`]/gu,"").trim())).filter(Boolean),bodyChars:e.join("").length,raw:h.slice(i,b)})};for(;k<h.length;){if(k+1<h.length&&e(h[k+1]||"")){l(k),a=d(h[k]).map(a=>a.replace(/[*_`]/gu,"").trim()),i=k,j=k+2,k+=2;continue}if(a&&k>j){let b=d(h[k]).map(a=>a.replace(/[*_`]/gu,"").trim()).filter(Boolean);if(aI(b,a)>=.6&&k+1<h.length&&!e(h[k+1]||"")){l(k),a=b,i=k,j=k+1,k+=1;continue}}k+=1}l(h.length),f=g}return c}function aI(a,b){if(0===a.length||0===b.length)return 0;let c=new Set(a),d=new Set(b);return[...c].filter(a=>d.has(a)).length/new Set([...c,...d]).size}function aJ(a,b){if(0===a.length)return 0;let c=[...b],d=0;for(let b of a){let a=c.indexOf(b);a>=0&&(c.splice(a,1),d+=1)}return d/a.length}let aK=/^[\d,,.]+\s*(?:人|个|台|具|套|处|支|辆|班|组|项)?$/u,aL=a=>a.filter(a=>!aK.test(a));function aM(a){let b=[],c=aH(a);if(c.length<2)return b;for(let a=0;a<c.length;a+=1)for(let d=a+1;d<c.length;d+=1){let e=c[a],f=c[d],g=e.header.length>0&&e.header.length===f.header.length&&e.header.every((a,b)=>a===f.header[b]),h=aI(e.header,f.header),i=aI(e.firstCol,f.firstCol),j=aI(e.dataCells,f.dataCells),k=Math.max(aJ(aL(e.dataCells),aL(f.dataCells)),aJ(aL(f.dataCells),aL(e.dataCells)));(g&&j>=.6||h>=.7&&i>=.6||i>=.6&&k>=.6)&&b.push({level:"error",severity:"blocker",category:"style",owner:"llm",repairability:"llm_repairable",message:`表格重复:第 ${e.startLine+1}~${e.endLine+1} 行表格(表头:${e.header.slice(0,3).join("|")})与第 ${f.startLine+1}~${f.endLine+1} 行表格高度重复(表头重合 ${Math.round(100*h)}%、数据重合 ${Math.round(100*j)}%、首列重合 ${Math.round(100*i)}%)`,suggestion:"同一文档内同主题表格只保留信息最全的一张:删除重复表格(保留字段与数据行更多的那张),删除后核对章节表格计划仍被覆盖。"})}return b.sort((a,b)=>{let c=a=>Number(a.match(/数据重合\s*(\d+)%/u)?.[1]??0);return c(b.message)-c(a.message)}).slice(0,5)}function aN(a){let b=aH(a);if(b.length<2)return{markdown:a,removedCount:0};let c=a.split(/\r?\n/u),d=new Set;for(let a=0;a<b.length;a+=1)for(let c=a+1;c<b.length;c+=1){let e=b[a],f=b[c];if(d.has(e.startLine)||d.has(f.startLine))continue;let g=e.header.length>0&&e.header.length===f.header.length&&e.header.every((a,b)=>a===f.header[b]),h=aI(e.header,f.header),i=aI(e.firstCol,f.firstCol),j=aI(e.dataCells,f.dataCells),k=Math.max(aJ(aL(e.dataCells),aL(f.dataCells)),aJ(aL(f.dataCells),aL(e.dataCells)));if(!(g&&j>=.6)&&!(h>=.7&&i>=.6)&&!(i>=.6&&k>=.6))continue;let[l,m]=e.bodyChars>=f.bodyChars?[e,f]:[f,e];for(let a=m.startLine;a<=m.endLine;a+=1)d.add(a)}return 0===d.size?{markdown:a,removedCount:0}:{markdown:c.filter((a,b)=>!d.has(b)).join("\n"),removedCount:d.size}}function aO(a){let b=a.replace(/\s+/gu,"");return b.length>=40?b:void 0}function aP(a){let b=[],c=a.split(/\r?\n/u),d=new Map,e=[],f=()=>{let a=aO(e.join(""));if(a){let b=(d.get(a)||0)+1;d.set(a,b)}e=[]};for(let a of c){let b=a.trim();if(!b||/^#{1,6}\s/u.test(b)||/^\s*\|/u.test(b)){f();continue}if(/^[-*•]\s/u.test(b)){f(),e.push(b),f();continue}e.push(b)}for(let[a,c]of(f(),[...d.entries()].filter(([,a])=>a>=2).slice(0,3)))b.push({level:"error",severity:"blocker",category:"style",owner:"llm",repairability:"llm_repairable",message:`段落完全重复 ${c} 次:“${a.slice(0,40)}…”`,suggestion:"同一段落正文只保留首次出现处,删除其余重复段落;确需前后呼应时改写为差异化表述并压缩篇幅。"});return b}function aQ(a){let b=a.split(/\r?\n/u),c=new Set,d=new Set,e=[],f=[],g=()=>{let a=aO(e.join(""));a&&(c.has(a)?f.forEach(a=>d.add(a)):c.add(a)),e=[],f=[]};return(b.forEach((a,b)=>{let c=a.trim();if(!c||/^#{1,6}\s/u.test(c)||/^\s*\|/u.test(c))return void g();if(/^[-*•]\s/u.test(c)){g(),e=[c],f=[b],g();return}e.push(c),f.push(b)}),g(),0===d.size)?{markdown:a,removedCount:0}:{markdown:b.filter((a,b)=>!d.has(b)).join("\n"),removedCount:d.size}}function aR(a,b,c){let d=new Set;for(let a of[...b.quality,...b.project,...b.schedule])for(let b of(0,e.lG)(a.value).matchAll(aD))d.add(aF(b[0]));if(c?.extracted)for(let a of[...c.awardObjectives||[],...c.specialQualityStandards||[],...c.awardClauses||[]])for(let b of(a.text||"").matchAll(aD))d.add(aF(b[0]));if(0===d.size)return[];let f=new Set;for(let b of a.matchAll(aD)){let a=aF(b[0]);!d.has(a)&&(aE.test(a)||f.add(a))}return 0===f.size?[]:[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`奖项表述与招标文件白名单不符:正文出现 ${[...f].join("、")},均未出现在招标文件评分项要求或绑定资料中`,suggestion:"创优目标必须以招标文件原文为准逐字落位(如「确保黄山杯」),禁止自行编造或替换为其他奖项名称;白名单外的奖项表述一律删除或替换为招标原文奖项。"}]}function aS(a){let b=a.split(/\r?\n/u),c=new Set;for(let a of b){let b=/^(#{2,4})\s+(.+)$/u.exec(a.trim());if(!b)continue;let d=b[2].trim();(0,h.Xp)(d)&&c.add(d)}if(0===c.size)return[];let d=[...c];return[{level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:`正文出现投标人资格内容小节:${d.slice(0,3).map(a=>`“${a}”`).join("、")}${d.length>3?" 等":""}(资格审查内容不属于施工组织设计,属资格文件/商务文件范畴)`,suggestion:"删除资格内容小节(标题与正文整体删除),不得以改写、合并、降级方式保留;正文如需提及安全生产许可证等证照,只能以施工管理口径表述(如“按规定持证上岗”),不得成节铺陈资格核验内容。"}]}let aT=/人[、,,]材[、,,]机/u,aU=/(?:确保\s*)?([人材机])(?:员|力|料|械|工)?\s*的保障体系与措施/u;function aV(a){let b=a.match(aU)?.[1];return b||(/劳动力|人员|作业人员|劳务/u.test(a)?"人":/材料|物资|周转/u.test(a)?"材":/机械|设备|机具|塔吊|起重机/u.test(a)?"机":void 0)}function aW(a){let b=[],c=a.split(/\r?\n/u);for(let a=0;a<c.length;a+=1){let d,e=/^##\s+(.+)$/u.exec(c[a].trim());if(!e||!aT.test(e[1]))continue;let f=c.length;for(let b=a+1;b<c.length;b+=1)if(/^##\s+/u.test(c[b].trim())){f=b;break}let g=[];for(let e=a+1;e<f;e+=1){let a=/^###\s+(.+)$/u.exec(c[e].trim()),f=/^####\s+(.+)$/u.exec(c[e].trim());if(a){d={subject:aV(a[1]),title:a[1].trim()},g.push(d);continue}if(f&&d?.subject){let a=aV(f[1]);a&&a!==d.subject&&b.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:`人材机章层级错位:小节“${f[1].trim()}”挂在“${d.title}”之下(${"人"===a?"人":"材"===a?"材":"机"}的保障体系应独立成二级小节,不得并入${"人"===d.subject?"人":"材"===d.subject?"材":"机"}的保障体系)`,suggestion:`将“${f[1].trim()}”提升为独立二级小节,或将其内容合并到对应主题的二级小节。`})}}let h=new Set(g.map(a=>a.subject).filter(Boolean)),i=["人","材","机"].every(a=>h.has(a));(g.length<3||!i)&&b.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:`人材机章结构不完整:“${e[1].trim()}”仅 ${g.length} 个二级小节(人/材/机的保障体系未全部独立成节)`,suggestion:"拆分为“确保人的保障体系与措施”“确保材的保障体系与措施”“确保机的保障体系与措施”三个二级小节。"})}return b}function aX(a,b){if(0===b.length)return{markdown:a,fixedCount:0,details:[]};let c=[...b].sort((a,b)=>a.start-b.start||a.end-b.end),d="",e=0,f=0,g=[];for(let b of c)b.start<e||b.end<=b.start||(d+=a.slice(e,b.start)+b.replacement,e=b.end,f+=1,g.push(b.detail));return{markdown:d+=a.slice(e),fixedCount:f,details:[...new Set(g)].slice(0,8)}}function aY(a){let b=function(a){let b=w(a).map(a=>a.peak);return b.length>0?Math.max(...b):void 0}(a);if(void 0===b)return{markdown:a,fixedCount:0,details:[]};let c=[],d=d=>{for(let e of a.matchAll(d)){let d=Number(e[1].replace(/[,,]/gu,""));if(!Number.isFinite(d)||d<=0)continue;let f=e.index+e[0].indexOf(e[1]),g=a.lastIndexOf("\n",e.index)+1,h=a.indexOf("\n",e.index);-1===h&&(h=a.length),!(/^\s*\|.*\|\s*$/u.test(a.slice(g,h))||"peak"!==u(a,f,g,h).group||v(a,f))&&(Math.abs(d-b)/Math.max(d,b)<=.3||c.push({start:f,end:f+e[1].length,replacement:String(b),detail:`劳动力峰值 ${d}人→${b}人(以分阶段投入明细表为准)`}))}};for(let e of(d(p),d(q),a.matchAll(/(?:高峰期|高峰|峰值)[^。;;\n]{0,16}?控制(?:在|为|到)?(?:约)?\s*([\d,]+)\s*人(?:以内|以下|之内)?/gu))){let a=Number(e[1].replace(/[,,]/gu,""));if(!Number.isFinite(a)||a<=0||a>=b)continue;let d=e.index+e[0].indexOf(e[1]);c.push({start:d,end:d+e[1].length,replacement:String(b),detail:`劳动力控制上限 ${a}人→${b}人(与分阶段投入明细表峰值自洽)`})}return aX(a,c)}function aZ(a){let b=a=>{let b=a.match(/(\d{1,4})\s*个?\s*日历天/u);if(!b)return;let c=Number(b[1]);return Number.isFinite(c)&&c>0?c:void 0};for(let c of a?.schedule??[]){let a=`${c.key||""}${c.fieldName||""}${c.fieldId||""}`;if(!/工期|周期/u.test(a))continue;let d=b((0,e.lG)(c.value));if(void 0!==d)return d}for(let c of Object.values(a?.canonical?.schedule??{})){let a=Array.isArray(c)?c[0]:c;if(!a||!/工期|周期/u.test(a.label))continue;let d=b(a.value);if(void 0!==d)return d}}function a$(a){let b=a=>{let b=a.match(/(\d+(?:\.\d+)?)\s*%/u);if(!b)return;let c=Number(b[1]);return Number.isFinite(c)&&c>0&&c<=100?c:void 0};for(let c of[...a?.project??[],...a?.bills??[],...a?.preciseFacts??[]]){let a=`${c.key||""}${c.fieldName||""}${c.fieldId||""}`;if(!/装配率|assembly/u.test(a))continue;let d=b((0,e.lG)(c.value));if(void 0!==d)return d}let c=a?.tenderRequirements?.assemblyRate?.text;if(c)return b(c)}function a_(a){let b,c=[],d=a?.project??[];for(let a of d){let c=`${a.key||""}${a.fieldName||""}`;if(!/单体建筑面积|建设规模/u.test(c))continue;let d=(0,e.lG)(a.value).match(/(\d+(?:\.\d+)?)\s*(?:平方(?:米)?|㎡|m²)/u);if(d&&Number.isFinite(Number(d[1]))){b=Number(d[1]);break}}void 0!==b&&c.push(`建筑面积${b}平方米`);let f=JSON.stringify({project:d,drawings:a?.drawings??[],tables:a?.tables??[]}),g=f.match(/地上\s*(\d+)\s*层/u)?.[1],h=f.match(/地下\s*(\d+)\s*层/u)?.[1];return void 0!==g&&c.push(`地上${g}层`),void 0!==h&&c.push(`地下${h}层`),c.length>0?c.join("、"):void 0}let a0=[{key:"towerCrane",re:/塔式起重机|塔吊/u},{key:"hoist",re:/施工升降机|施工电梯/u},{key:"truckCrane",re:/汽车起重机|汽车吊/u},{key:"rebarCutter",re:/钢筋切断机/u},{key:"rebarBender",re:/钢筋弯曲机/u},{key:"circularSaw",re:/圆盘锯/u},{key:"pump",re:/潜水泵/u},{key:"extinguisher",re:/灭火器/u},{key:"firstaid",re:/急救箱/u}];function a1(a){let b=[];for(let c of a?.scheduleNodes??[])"string"==typeof c.node&&""!==c.node.trim()&&"string"==typeof c.offset&&""!==c.offset.trim()&&b.push({node:c.node,offset:c.offset});let c={};for(let b of a?.machines??[]){let a="string"==typeof b.name?b.name:"",d=Number(b.count);if(!Number.isFinite(d)||d<=0)continue;let e=a0.find(b=>b.re.test(a));void 0!==e&&void 0===c[e.key]&&(c[e.key]=d)}return{nodeAuthorities:b,machineAuthorities:c}}function a2(a,b){let c=a,d=0,e=[],f={};for(let a of(b?.scheduleAuthority!==void 0&&b.scheduleAuthority>0&&(f.scheduleDays=b.scheduleAuthority),b?.assemblyRateAuthority!==void 0&&b.assemblyRateAuthority>0&&(f.prefabRatio=b.assemblyRateAuthority),b?.machineAuthorities!==void 0&&Object.assign(f,b.machineAuthorities),[aY,a=>(function(a,b){let c=a,d=[],e=b?.scheduleAuthority;if(void 0!==e&&e>0){let a=[...c.matchAll(/(?:开工令下发后|开工后)第(\d{1,3})[日天]/gu)].map(a=>Number(a[1])),b=a.length>0?Math.max(...a):0;if(b>0&&b<.9*e){let a=e/b,f=[];for(let b of c.matchAll(/(?:开工令下发后|开工后)第(\d{1,3})[日天]/gu)){let c=Math.max(1,Math.round(Number(b[1])*a)),d=b.index+b[0].indexOf(b[1]);f.push({start:d,end:d+b[1].length,replacement:String(c),detail:`节点日期 ${b[1]}日→${c}日(总工期${e}日历天体系缩放)`})}for(let b of c.matchAll(/第(\d{2,3})日(?=[^。;;\n]{0,8}竣工验收)/gu)){let c=Math.max(1,Math.round(Number(b[1])*a));f.push({start:b.index,end:b.index+b[0].length,replacement:`第${c}日`,detail:`竣工验收节点 ${b[1]}日→${c}日(总工期${e}日历天体系缩放)`})}for(let b of c.matchAll(/(竣工验收(?:合格)?[^。;;\n]{0,8}?[((])第(\d{2,3})日([))])/gu)){let c=Math.max(1,Math.round(Number(b[2])*a));f.push({start:b.index,end:b.index+b[0].length,replacement:`${b[1]}第${c}日${b[3]}`,detail:`竣工验收节点 ${b[2]}日→${c}日(总工期${e}日历天体系缩放)`})}if(f.length>0){let a=aX(c,f);c=a.markdown,d.push(...a.details.slice(0,8));let b=/^(\|[^|]*\|)\s*开工令下发后第(\d+)日\s*\|\s*开工令下发后第(\d+)日\s*\|\s*(\d+)\s*日\s*(\|.*)$/u,e=c.split(/\r?\n/u),g=0,h=0;for(let a=0;a<e.length;a+=1){let c=e[a].match(b);if(!c){g=0;continue}let d=Number(c[3]),f=g>0?g+1:Number(c[2]),i=Math.max(d,f+1),j=i-f+1;(f!==Number(c[2])||i!==d||j!==Number(c[4]))&&(e[a]=`${c[1]} 开工令下发后第${f}日 | 开工令下发后第${i}日 | ${j}日 ${c[5]}`,h+=1),g=i}h>0&&(c=e.join("\n"),d.push(`三列进度表链式重算 ${h} 行(开始/持续列与缩放后结束列自洽)`))}}}let f=c.split(/\r?\n/u),g=/^\|.+\|$/u,h=[],i=0;for(let a of f)h.push({start:i,end:i+a.length}),i+=a.length+1;let j=a=>{let b=[];return/清理|预验收|收尾/u.test(a)&&b.push("cleanup"),/竣工验收/u.test(a)&&b.push("completion"),/装饰|幕墙/u.test(a)&&b.push("decoration"),/机电/u.test(a)&&b.push("mep"),/二次|ALC|墙板|砌体/u.test(a)&&b.push("secondary"),/主体|封顶/u.test(a)&&b.push("topping"),/土方|基坑|基础|支护/u.test(a)&&b.push("excavation"),b},k=a=>(a.split("|")[1]||"").trim(),l=a=>{let b;for(let c of a.matchAll(/第(\d{1,3})[日天]/gu)){let d=a.slice(Math.max(0,(c.index??0)-8),c.index??0);/(?:合格|封顶|移交|完成|进场|退场)后$/u.test(d)||(b={value:Number(c[1]),start:(c.index??0)+c[0].indexOf(c[1]),end:(c.index??0)+c[0].lastIndexOf(c[1])+c[1].length})}return b},m=new Map,n=[];for(let a=0;a<f.length;a+=1){if(!g.test(f[a].trim()))continue;let b=a;for(;a<f.length&&g.test(f[a].trim());)a+=1;let c=a,d=f.slice(Math.max(0,b-6),b).join("\n");if(/总进度计划|施工总进度|总进度安排|总工期控制|总工期/u.test(d)){for(let a=b;a<c;a+=1){let b=k(f[a]),c=l(f[a]);if(!(!c||/---/u.test(b)))for(let a of j(b)){let b=m.get(a);(void 0===b||c.value>b)&&m.set(a,c.value)}}n.push({start:h[b].start,end:h[c-1].end})}}for(let a of b?.nodeAuthorities??[]){let b=a.offset.match(/第(\d{1,3})[日天]/u);if(!b)continue;let c=Number(b[1]);if(!Number.isFinite(c)||c<1||c>3e3)continue;let d=ag.find(b=>b.re.test(a.node))?.key;if(void 0===d)continue;let e=m.get(d);void 0!==e&&Math.abs(e-c)>=5&&(n.length=0),m.set(d,c)}if(0===m.size)return{markdown:c,fixedCount:+(d.length>0),details:d};let o=[],p=a=>!n.some(b=>a>=b.start&&a<=b.end);for(let a=0;a<f.length;a+=1){if(!g.test(f[a].trim())||!p(h[a].start))continue;let b=k(f[a]),c=l(f[a]);if(!c||/---/u.test(b))continue;let d=j(b).map(a=>m.get(a)).find(a=>void 0!==a);if(void 0===d||5>Math.abs(c.value-d))continue;let e=ag.find(a=>j(b).includes(a.key))?.label||b.slice(0,12);o.push({start:h[a].start+c.start,end:h[a].start+c.end,replacement:String(d),detail:`表格节点“${e}”${c.value}日→${d}日(以总进度计划/总工期控制表为准)`})}let q=(a,b,c,d,e)=>{let f=ag.find(b=>b.re.test(a))?.key;if(void 0===f||!Number.isFinite(b)||b<1||b>3e3)return;let g=m.get(f);!(void 0===g||5>Math.abs(b-g))&&p(c)&&o.push({start:c,end:d,replacement:String(g),detail:`节点“${ag.find(a=>a.key===f)?.label||f}”工期 ${b}日→${g}日(以总进度计划表为准)`})};for(let a of c.matchAll(/第(\d{2,3})日(?:(?![))→。;;\n,、]).){0,14}?完成(?:(?![((→。;;\n,、]).){0,12}?(基坑支护及土方外运|装饰装修及幕墙|机电安装及智能化调试|室外工程及竣工验收|地下结构出正负零|主体结构封顶|正负零|封顶)/gu)){let b=a.index+a[0].indexOf(a[1]);q(a[2],Number(a[1]),b,b+a[1].length,a[0].slice(0,40))}for(let a of c.matchAll(/(竣工验收)(?:(?!(?:后|第\d{2,3}[日天]|,|、|→)).){0,10}?第(\d{2,3})[日天]/gu)){let b=a.index+a[0].indexOf(a[2]);q(a[1],Number(a[2]),b,b+a[2].length,a[0].slice(0,40))}for(let a of c.matchAll(/(基坑支护|正负零|封顶|装饰装修|机电安装|竣工验收)(?:(?!(?:第\d{2,3}[日天]|,|、)).){0,8}?完成[^。;;\n]{0,10}?第(\d{2,3})[日天]/gu)){let b=a.index+a[0].indexOf(a[2]);q(a[1],Number(a[2]),b,b+a[2].length,a[0].slice(0,40))}for(let a of c.matchAll(/(主体(?:结构)?封顶)(?!后)(?:(?!(?:第\d{2,3}[日天]|,|、|完成|\||[。;;\n])).){0,20}?第(\d{2,3})日/gu)){let b=a.index+a[0].indexOf(a[2]);q(a[1],Number(a[2]),b,b+a[2].length,a[0].slice(0,40))}let r=aX(c,o);return{markdown:r.markdown,fixedCount:r.fixedCount+ +(d.length>0),details:[...d,...r.details].slice(0,12)}})(a,{scheduleAuthority:b?.scheduleAuthority,nodeAuthorities:b?.nodeAuthorities}),a=>(function(a,b){let c=[];for(let d of aj){if("number"!==d.kind)continue;let e=new Set,f=[];for(let b of d.patterns)for(let c of a.matchAll(b)){let b=c[0].slice(0,40);if(ak.test(b))continue;let d=a.lastIndexOf("\n",c.index)+1,g=a.indexOf("\n",c.index);-1===g&&(g=a.length);let h=a.slice(d,g);if(al.test(h))continue;let i=Number(c[1]);Number.isFinite(i)&&!(i<=0)&&(/^\s*\|/u.test(h)?e.add(i):f.push({value:i,group:am(a,c.index||0,b,d)}))}let g=b?.[d.key],h=void 0===g&&"towerCrane"===d.key&&e.size>1,i=void 0!==g&&g>0?g:1===e.size?[...e][0]:h?Math.min(...e):void 0;if(void 0!==i&&[...f.filter(a=>""===a.group).map(a=>a.value),...void 0!==g||h?[...e]:[]].some(a=>Math.abs(a-i)>.2*i))for(let b of d.patterns)for(let e of a.matchAll(b)){let b=e[0].slice(0,40);if(ak.test(b))continue;let f=a.lastIndexOf("\n",e.index)+1,j=a.indexOf("\n",e.index);-1===j&&(j=a.length);let k=a.slice(f,j);if(al.test(k)||/^\s*\|/u.test(k)&&void 0===g&&!h)continue;let l=Number(e[1]);if(!Number.isFinite(l)||l<=0||!/^\s*\|/u.test(k)&&""!==am(a,e.index||0,b,f)||Math.abs(l-i)<=.2*i)continue;let m=e.index+e[0].indexOf(e[1]),n=void 0!==g&&g>0?"scheduleDays"===d.key?"以绑定资料计划工期为准":"以绑定资料锁定口径为准":"以表格口径为准";c.push({start:m,end:m+e[1].length,replacement:String(i),detail:`${d.label} ${l}${d.unit}→${i}${d.unit}(${n})`})}}return aX(a,c)})(a,f),a=>(function(a,b){if("slope"!==b)return{markdown:a,fixedCount:0,details:[]};let c=0,d=0,e=a.split(/\r?\n/u).map(a=>{let b=a.trim();return/^#{1,6}\s/u.test(b)||/^\s*\|/u.test(b)||!z.test(a)?a:a.split(/(?<=[。;;])/u).map(a=>{if(!z.test(a))return a;if(!A.test(a))return c+=1,"";let b=/([。;;])$/u.exec(a)?.[1],e=a.split(/[,、]/u).filter(a=>!E.test(a)).join(",");for(let[a,c]of(void 0===b||/[。;;]$/u.test(e)||(e+=b),D))e=e.replace(a,c);return d+=1,e}).join("")});return 0===c&&0===d?{markdown:a,fixedCount:0,details:[]}:{markdown:e.join("\n"),fixedCount:c+d,details:[`支护体系确定性裁决(图纸/地质槽位:放坡喷锚类):删除桩族句 ${c} 句、改写混句 ${d} 句`]}})(a,b?.supportAuthority)])){let b=a(c);b.markdown!==c&&(c=b.markdown,d+=b.fixedCount,e.push(...b.details))}return{markdown:c,fixedCount:d,details:e.slice(0,12)}}function a3(a){let b=a.split(/(?<=[。!?;\n])/u),c=[],d=0;return{markdown:b.map(a=>{let b=a.trimStart();if(/^[|#]/.test(b))return a;let e=a,f=!0,g=0;for(;f&&g<20;){f=!1,g+=1;for(let a=16;a>=4;a-=1){for(let b=0;b+2*a<=e.length;b+=1){let g=e.slice(b,b+a);if((/[0-9]/.test(g)||/[\u4e00-\u9fa5]/.test(g))&&e.slice(b+a,b+2*a)===g){e=e.slice(0,b+a)+e.slice(b+2*a),f=!0,d+=1,c.push(`相邻重复短语折叠:“${g.slice(0,24)}”`);break}}if(f)break}if(f)continue;for(let a=20;a>=9;a-=1){for(let b=0;b+a<=e.length;b+=1){let g=e.slice(b,b+a);if(!/[\u4e00-\u9fa5]/.test(g[0]||""))continue;let h=/[0-9]/.test(g);if(!h&&a<12||h&&(/\d$/.test(g)||/[|→\-—]/.test(g)))continue;let i=e.indexOf(g);if(i!==b||-1===e.indexOf(g,i+1))continue;let j=0,k=e.indexOf(g,i+1);for(;-1!==k;)e=e.slice(0,k)+e.slice(k+a),j+=1,k=e.indexOf(g,k);if(j>0){f=!0,d+=j,c.push(`隔位重复短语折叠:“${g.slice(0,24)}”\xd7${j}`);break}}if(f)break}if(f)continue;let a="kW|kVA|MPa|㎡|m\xb2|m\xb3|mm|cm|%",b=RegExp(`(\\d+(?:\\.\\d+)?)(?:${a})(?=\\s*\\d+(?:\\.\\d+)?(?:${a}))`,"gu").exec(e);if(b){let g=b.index+b[0].length,h=e.slice(g).match(RegExp(`^\\s*(\\d+(?:\\.\\d+)?)(?:${a})`));h&&(e=e.slice(0,g)+e.slice(g+h[0].length),f=!0,d+=1,c.push(`数值单位粘连折叠:“${b[0]}${h[0].trim()}”→“${b[0]}”`))}if(f)continue;let h=e;(e=e.replace(/[,,]{2,}/gu,",").replace(/[。;!?]{2,}/gu,a=>a[0]).replace(/,(?=[。;!?])/gu,""))!==h&&(f=!0,c.push("残留重复标点归一"))}return e}).join(""),fixedCount:d,details:c.slice(0,8)}}function a4(a,b){let c=[];if(b?.areaSummary)for(let d of a.matchAll(/\|\s*按施工图设计文件确定\s*\|/gu))c.push({start:d.index+1,end:d.index+d[0].length-1,replacement:` ${b.areaSummary} `,detail:`工程概况一览表建设规模套话→“${b.areaSummary}”`});if(b?.scheduleDays!==void 0&&b.scheduleDays>0)for(let d of a.matchAll(/\|\s*按合同约定工期执行\s*\|/gu))c.push({start:d.index+1,end:d.index+d[0].length-1,replacement:` ${b.scheduleDays}个日历天 `,detail:`工程概况一览表工期套话→“${b.scheduleDays}个日历天”`});if(0===c.length)return{markdown:a,fixedCount:0,details:[]};let d=aX(a,c);return{markdown:d.markdown,fixedCount:d.fixedCount,details:d.details}}function a5(a){let b=a.match(/(### 6\.1\s+施工部署与施工流水组织[\s\S]*?)(?=### 6\.2|## 第[六七]章|$)/u);if(!b)return{markdown:a,fixedCount:0,details:[]};let c=b[0],d=["三检","样板引路","隐蔽验收","见证取样","试块养护","分部分项报验"],e=d.filter(a=>c.includes(a)).length;if(e>=3)return{markdown:a,fixedCount:0,details:[]};let f=`
20
+ 质量保障体系与安全文明管理同频运行:项目部实行“三检制”(自检、互检、交接检),每道工序经班组自检、质量员复检合格后报监理单位验收;推行样板引路制度,主体结构、装配式构件安装、ALC墙板安装、幕墙安装等主要分项工程在大面积施工前先做样板,经建设、监理单位验收确认后方可展开;隐蔽工程(钢筋、防水、管线预埋等)覆盖前由质量员组织隐蔽验收并留存影像记录;原材料进场按见证取样要求送检,混凝土试块按规范留置并落实标养与同条件养护;分部分项工程验收严格执行报验程序,验收资料与工程进度同步归档,确保“合格”质量标准与“确保黄山杯”创优目标逐级落实。`,g=(b.index??0)+c.length;return{markdown:a.slice(0,g)+f+a.slice(g),fixedCount:1,details:[`6.1 施工部署块补全质量保障协同段(核心术语 ${d.length-e}/${d.length} 缺失)`]}}function a6(a){let b=a.replace(/\s+/gu,"");return b.length?(b.match(/[0-9A-Za-z%℃°±×÷≥≤.]/gu)||[]).length/b.length:0}async function a7(a){if("0"===process.env.DOCUMENT_CROSS_CHAPTER_DEDUP)return[];let b=function(a){let b=[];return a.forEach((a,c)=>{(a.content||"").split(/\n\s*\n/u).forEach((a,d)=>{let e=a.trim();if(!e||/^#{1,6}\s/um.test(e)||/^\s*\|/um.test(e)||/^[-*•]\s/um.test(e))return;let f=e.replace(/\s+/gu,"");f.length<60||b.push({chapterIndex:c,paragraphIndex:d,text:e,normalized:f})})}),b}(a);if(b.length<2)return[];let c=await (0,f.Mv)(b.map(a=>a.normalized),b.map(a=>a.normalized)),d=[],e=new Set;for(let a=0;a<b.length;a+=1)for(let f=a+1;f<b.length;f+=1){let g=b[a],h=b[f];if(g.chapterIndex===h.chapterIndex||g.normalized===h.normalized)continue;let i=c(g.normalized,h.normalized);if(i<.82)continue;let j=a6(g.text),k=a6(h.text),l=j>k||j===k&&g.chapterIndex<=h.chapterIndex,m=l?g:h,n=l?h:g,o=`${n.chapterIndex}:${n.paragraphIndex}`;e.has(o)||(e.add(o),d.push({keep:{chapterIndex:m.chapterIndex,paragraphIndex:m.paragraphIndex},drop:{chapterIndex:n.chapterIndex,paragraphIndex:n.paragraphIndex},similarity:i,paragraphPreview:n.normalized.slice(0,40)}))}return d}async function a8(a){return(await a7(a)).map(b=>({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",chapterId:a[b.drop.chapterIndex]?.id,message:`跨章语义重复:「${a[b.keep.chapterIndex]?.title||"?"}」与「${a[b.drop.chapterIndex]?.title||"?"}」存在内容高度雷同段落(相似度 ${b.similarity.toFixed(2)}):“${b.paragraphPreview}…”`,suggestion:"同一内容全文只保留一处(保留信息密度高者);删除或改写本章的雷同段落,与本章主题相关的独有信息归并后,不得与他章段落语义重复。"}))}async function a9(a){let b=0;for(let c=0;c<5;c+=1){let c=await a7(a);if(0===c.length)break;let d=0;for(let b of[...c].sort((a,b)=>a.drop.chapterIndex-b.drop.chapterIndex||b.drop.paragraphIndex-a.drop.paragraphIndex)){let c=a[b.drop.chapterIndex];if(!c)continue;let e=(c.content||"").split(/\n\s*\n/u);!(b.drop.paragraphIndex>=e.length)&&(e[b.drop.paragraphIndex].trim().replace(/\s+/gu,"").length<60||(e.splice(b.drop.paragraphIndex,1),c.content=e.join("\n\n"),d+=1))}if(0===d)break;b+=d}return b}},46482:(a,b,c)=>{c.d(b,{Zk:()=>r,Tz:()=>z,X6:()=>s,fC:()=>A,l8:()=>y,JP:()=>q});var d=c(73024),e=c(76760),f=c(74329);c(25840),c(23500);var g=c(70933),h=c(70208),i=c(61373),j=c(78217);c(23760);var k=c(30355),l=c(44505),m=c(85016),n=c(22157);let o=[...k.P9.filter(a=>!n.Kd.includes(a)),...m.D$.source.split("|")];var p=c(95734);function q(a){let b=a.template.chapters.length,c=b>0?a.targetWords/b:a.targetWords,d=`${a.template.name}
20
21
  ${a.template.category||""}
21
22
  ${a.requirement||""}`,e=/专项|安全|质量|验收|审核|合同|合规|审计|风控|风险/u.test(d),f=a.targetWords>=4e4,g=(a.materialFileCount??0)<4&&(a.evidenceCount??0)<6,h=e||f||g,i=a.targetWords>=3e4||b>=8||c>=4e3,j=a.targetWords<=6e3&&b<=4&&!h,k="0"!==process.env.DOCUMENT_GLOBAL_CONSISTENCY_REVIEW&&(h||j||"1"===process.env.DOCUMENT_GLOBAL_CONSISTENCY_REVIEW);return{mode:h?"strict":i?"longform":j?"fast":"balanced",enableChapterReview:!0,enableGlobalReview:k,enableDocumentBudgetExpansion:!1,enableFinalQualityReview:!0,globalReviewSamplingRate:k&&j?.35:1}}function r(a){return{strategy:a,metrics:[],llm:{calls:0,failures:0,maxActive:0,retries:0,failureStreak:0,schemaFailures:0,promptCacheHitTokens:0,promptCacheMissTokens:0,inputTokens:0,outputTokens:0,inputChars:0,layerChars:{l0:0,l1:0,l2:0,l3:0}},semantic:{embedCacheHits:0,embedCacheMisses:0},evidence:{raw:0,used:0,filteredNoise:0,budgetDropped:0,avgNoiseScore:0,avgFactDensity:0,searchQueries:0,searchMs:0,contextChars:0,t0Chars:0,t1Chars:0,t2Lines:0,omittedChars:0},quality:{blockingCount:0,importantCount:0,minorCount:0,repairedCount:0}}}async function s(a,b,c,d){let e=Date.now();try{return await c()}finally{let c=Date.now();a.metrics.push({name:b,startedAt:e,endedAt:c,durationMs:c-e,meta:d})}}function t(a,b){let c=b.originalText?.trim();if(c&&a.includes(c)&&a.indexOf(c)===a.lastIndexOf(c))return c;if(c&&c.length>=8&&c.length<=500){let b=function(a,b){let c,d=b.split(/\s+/u).filter(a=>a.length>0);if(d.length<2)return;let e=RegExp(d.map(a=>a.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&")).join("\\s+"),"gu");for(let b of a.matchAll(e)){if(void 0!==c)return;c=b[0]}return c}(a,c);if(b)return b}let d=b.targetStart?.trim(),e=b.targetEnd?.trim();if(!d||!e)return;let f=a.indexOf(d);if(f<0)return;let g=a.indexOf(e,f+d.length);if(g<0)return;let h=g+e.length,i=a.slice(f,h);return a.indexOf(i)===a.lastIndexOf(i)?i:void 0}function u(a){return Math.max(2600,Math.min(16e3,Math.ceil(.45*(0,j.V7)(a))))}function v(a,b){let c=(a.match(/```/gu)||[]).length,d=b.replace(/^第[一二三四五六七八九十百千万]+章\s*/u,"").trim();return c%2==0&&(!d||a.includes(d))&&!/^\s*$/u.test(a)}function w(a){let b=[],c="";for(let d=0;d<a.length;d+=1){let e=a[d];/\s/u.test(e)||(c+=e,b.push(d))}return{compact:c,rawPositions:b}}function x(a,b,c){let d=a.lastIndexOf("\n",b-1)+1,e=a.indexOf("\n",c),f=e<0?a.length:e;if(/^\s*\|/.test(a.slice(d,f)))return{start:d,end:f};let g=d,h=a.slice(d,b),i=Math.max(h.lastIndexOf("。"),h.lastIndexOf(";"),h.lastIndexOf(";"));i>=0&&(g=d+i+1);let j=f,k=a.slice(c,f),l=[k.indexOf("。"),k.indexOf(";"),k.indexOf(";")].filter(a=>a>=0);return l.length>0&&(j=c+Math.min(...l)+1),{start:g,end:j}}async function y(a){(0,n.Te)(a.signal);let b=a.repairType||function(a){let b=a.join("\n");for(let a of f.NP)if(a.pattern.lastIndex=0,a.pattern.test(b))return a.type;return"generic"}(a.issues),c=a.contextChapters?.length?`
22
23
 
@@ -1,4 +1,4 @@
1
- "use strict";exports.id=8661,exports.ids=[8661],exports.modules={48661:(a,b,c)=>{c.d(b,{BH:()=>P,Gl:()=>x,JU:()=>T,Jz:()=>U,M$:()=>J,Oy:()=>D,QG:()=>O,QH:()=>C,SE:()=>E,YL:()=>$,a6:()=>M,r:()=>N,v7:()=>K,yE:()=>S});var d=c(77598),e=c(73024),f=c(48161),g=c(76760),h=c(18865),i=c(23760),j=c(87942),k=c(19898),l=c(44533),m=c(78217),n=c(37095);function o(a,b){return a?.map(a=>"running"===a.status?{...a,status:"failed",message:b}:a)}function p(a){return a.title&&"生成中"!==a.title?a.title:`${a.templateName||"文档"}生成失败`}function q(...a){let b=new Map;for(let c of a)for(let a of c||[])a.id&&a.content?.trim()&&b.set(a.id,a);return[...b.values()]}function r(a){return(a||[]).map(a=>({id:a.id,title:a.title,chars:(0,m.V7)(a.content),status:a.inProgress?"in_progress":a.content.trim().length>0?"completed":"failed",updatedAt:Date.now(),timedOut:a.timedOut,elapsedMs:a.elapsedMs}))}let s=globalThis,t=s.__generatedDocumentTasks??=new Map,u=Math.max(36e5,Number(process.env.DOCUMENT_ABANDONED_RECORD_STALE_MS??864e5)),v=s.__generatedDocumentProcessStartedAt??=Date.now(),w=Math.max(3e4,Number(process.env.DOCUMENT_RECENT_UPDATE_GRACE_MS??6e4));function x(a=(0,l.aY)()){let b=g.join(f.homedir(),".customize-agent","projects",function(a=(0,l.aY)()){return(0,k.computeProjectId)(g.resolve(a))}(a),"generatedDocuments");return e.mkdirSync(g.join(b,"drafts"),{recursive:!0}),e.mkdirSync(g.join(b,"assets"),{recursive:!0}),b}function y(a=(0,l.aY)()){return g.join(x(a),"index.json")}function z(a=(0,l.aY)()){return g.join(x(a),"assets.json")}function A(a,b=(0,l.aY)()){return g.join(x(b),"drafts",`${a}.json`)}function B(a,b=(0,l.aY)()){return g.join(x(b),"drafts",`${a}.meta.json`)}function C(a,b=(0,l.aY)()){let c=F(B(a,b),null);return c&&Number.isFinite(c.updatedAt)?c:null}function D(a){return!(!a||"generating"!==a.status||Date.now()-a.updatedAt<w)&&(a.updatedAt<v||Date.now()-a.updatedAt>=u)}function E(a,b=(0,l.aY)()){return a.path?g.isAbsolute(a.path)?a.path:a.path.startsWith("generatedDocuments/assets/")?g.join(x(b),a.path.replace(/^generatedDocuments\/assets\//u,"assets/")):g.join((0,l.NW)(b),a.path):null}function F(a,b){try{return JSON.parse(e.readFileSync(a,"utf8"))}catch{return b}}function G(a,b){e.mkdirSync(g.dirname(a),{recursive:!0});let c=`${a}.${process.pid}.${Date.now()}.tmp`;e.writeFileSync(c,JSON.stringify(b,null,2)),e.renameSync(c,a)}function H(a){for(let b of t.values())if(b.documentId===a)return b;return null}function I(a,b=(0,l.aY)()){if("generating"!==a.status||H(a.id)||Date.now()-a.updatedAt<w)return a;let c=a.updatedAt<v?0:u;if(Date.now()-a.updatedAt<c)return a;let d="生成任务已中断,请点击继续生成或重新生成",e=a.checkpointChapters?.length?"warning":"failed",f={...a,title:p(a),status:e,error:a.error||d,executionStages:o(a.executionStages,d),completedAt:Date.now(),warningIssues:a.checkpointChapters?.length?[...a.warningIssues||[],d]:a.warningIssues};return a.taskId&&Z(b,{taskId:a.taskId,title:`生成 ${f.title}`,status:"warning"===e?"warning":"error",percent:100,message:d,stages:f.executionStages,error:d}),f}function J(a=(0,l.aY)()){return F(y(a),[]).map(b=>{if("generating"!==b.status)return b;let c=F(A(b.id,a),null);if(!c)return b;let d=I(c,a);return d!==c?W(L(d,a,{preserveUpdatedAt:!0})):W(c)}).sort((a,b)=>(b.createdAt||b.updatedAt)-(a.createdAt||a.updatedAt))}function K(a,b=(0,l.aY)()){let c=F(A(a,b),null);if(!c)return null;let d=I(c,b);return function(a,b=(0,l.aY)()){if("generating"===a.status||!(a.editedMarkdown||a.markdown)?.trim())return a;let c=`document-${a.id}`;if(a.assets?.some(a=>a.id===c&&a.path))return a;let d=R(a,b);return d?L({...a,assets:[d,...(a.assets||[]).filter(a=>a.id!==d.id)]},b):a}(d!==c?L(d,b,{preserveUpdatedAt:!0}):d,b)}function L(a,b=(0,l.aY)(),c){let d=Date.now(),e=X({...a,updatedAt:c?.preserveUpdatedAt?a.updatedAt:d});G(A(e.id,b),e),G(B(e.id,b),{updatedAt:e.updatedAt,status:e.status,completedAt:e.completedAt});let f=F(y(b),[]).filter(a=>a.id!==e.id);return f.unshift(W(e)),G(y(b),f),e}function M(a,b,c=(0,l.aY)()){let d=K(a,c);return d?L({...d,...b,id:a},c):null}function N(a,b=(0,l.aY)()){let c=K(a,b);if(!c)return null;if("generating"!==c.status)return c;for(let[b,c]of t)c.documentId===a&&(c.status="aborted",c.controller.abort(),t.delete(b));let d="用户中止",e=o(c.executionStages,d),f=L({...c,status:"aborted",error:d,executionStages:e,completedAt:Date.now()},b);return f.taskId&&Z(b,{taskId:f.taskId,title:`生成 ${f.title}`,status:"warning",percent:100,message:d,stages:e,error:d}),f}function O(a,b=(0,l.aY)()){try{e.rmSync(A(a,b),{force:!0})}catch{console.warn("[generated-documents] 删除文档记录失败或文件不存在",a)}let c=F(y(b),[]).filter(b=>b.id!==a);G(y(b),c)}function P(a=(0,l.aY)()){return F(z(a),[]).sort((a,b)=>b.updatedAt-a.updatedAt)}function Q(a,b,c=(0,l.aY)()){let d=Date.now(),e=[...P(c)];for(let c of a){let a=e.findIndex(a=>a.id===c.id),f=c.path?.startsWith("generatedDocuments/assets/")||"generated"===c.status||"prompt_ready"===c.status?"generated":"knowledge_base",h={...c,name:g.basename(c.path||c.url||c.id),source:f,indexed:a>=0&&e[a].indexed,usedByDocumentIds:a>=0?[...new Set([...e[a].usedByDocumentIds,b])]:[b],createdAt:a>=0?e[a].createdAt:d,updatedAt:d};a>=0?e[a]={...e[a],...h}:e.push(h)}return G(z(c),e),e}function R(a,b=(0,l.aY)()){let c=a.editedMarkdown||a.markdown;if(!c?.trim())return null;let d=`generatedDocuments/assets/${a.title.replace(/[\\/:*?"<>|]/gu,"_").slice(0,120)||"generated-document"}-${a.id}.md`,f=g.join(x(b),d.replace(/^generatedDocuments\//u,""));e.mkdirSync(g.dirname(f),{recursive:!0}),e.writeFileSync(f,c,"utf8");let h={id:`document-${a.id}`,type:"file",role:"generated",path:d,status:"generated",message:"模板运行生成的 Markdown 文档,仅登记到生成资源,不进入知识库"};return Q([h],a.id,b).find(a=>a.id===h.id)||null}function S(a,b=(0,l.aY)()){return P(b).find(b=>b.id===a)||null}function T(a,b=(0,l.aY)()){let c=S(a,b);if(!c)return!1;let d=E(c,b);if(d&&d.startsWith(x(b)))try{e.rmSync(d,{force:!0})}catch{console.warn("[generated-documents] 删除生成资源文件失败或文件不存在",d)}return G(z(b),P(b).filter(b=>b.id!==a)),!0}function U(a,b,c=(0,l.aY)()){let d=S(a,c);if(!d)return null;let f=E(d,c);return f&&e.existsSync(f)?"directory"===b?g.dirname(f):f:null}function V(a){let b=Math.max(4,Math.floor(Number(process.env.DOCUMENT_PERSIST_EVIDENCE_MAX_ITEMS??10))),c=Math.max(300,Math.floor(Number(process.env.DOCUMENT_PERSIST_EVIDENCE_ITEM_CHARS??900)));return{...a,evidence:(a.evidence||[]).slice(0,b).map(a=>({...a,content:"string"==typeof a.content?a.content.replace(/\s+/gu," ").slice(0,c):""}))}}function W(a){let b=[...a.executionStages||a.draft?.executionStages||[]].reverse().find(a=>a.message||a.subtitle||a.roleId),c=a.partialChapters||r(a.checkpointChapters||a.draft?.checkpointChapters||a.draft?.chapters),d=a.draft?.validationIssues||[],e=a.draft?.exportGate?a.draft.exportGate.blockingIssues?.length??0:d.filter(a=>"blocker"===a.severity||"error"===a.level).length,f=d.filter(a=>"warning"===a.severity||"warning"===a.level).length||a.warningIssues?.length||0,g=d.filter(a=>"suggestion"===a.severity||"info"===a.level).length;return{id:a.id,taskId:a.taskId,templateId:a.templateId,templateName:a.templateName,templateVersion:a.templateVersion,title:a.title,requirement:a.requirement,projectRoot:a.projectRoot,projectId:a.projectId,knowledgeBasePath:a.knowledgeBasePath,status:a.status,createdAt:a.createdAt,updatedAt:a.updatedAt,completedAt:a.completedAt,elapsedMs:a.completedAt?a.completedAt-a.createdAt:a.updatedAt-a.createdAt,error:a.error,warningIssues:(a.warningIssues||[]).slice(0,12),warningCount:f,blockerCount:e,suggestionCount:g,wordCount:(0,m.V7)(a.editedMarkdown||a.markdown||a.draft?.markdown||""),chapterCount:c?.length||a.draft?.chapters?.length||0,completedChapterCount:(c||[]).filter(a=>"completed"===a.status).length,latestStage:b?.subtitle||b?.roleName||b?.roleId,latestMessage:b?.message,assets:(a.assets||[]).slice(0,8),partialChapters:c}}function X(a){let b=a.draft?{...a.draft,chapters:a.draft.chapters?.map(V),checkpointChapters:a.draft.checkpointChapters?.map(V)}:a.draft;return{...a,draft:b,checkpointChapters:a.checkpointChapters?.map(V)}}function Y(a,b){let c=K(a.documentId,b);return c&&"generating"===c.status?{taskId:a.id,documentId:a.documentId,record:c}:null}function Z(a,b){(0,n.Qf)(a,{id:b.taskId,type:"document",title:b.title,stage:"processing"===b.status?"generating":"error"===b.status?"error":"done",status:b.status,percent:b.percent,message:b.message,error:b.error,details:(b.stages||[]).filter(a=>"role_binding"===a.type||"runtime-prompt-rules"===a.roleId||"document-readiness"===a.roleId||"export_ready"===a.type||"failed"===a.status).flatMap(a=>[`${a.subtitle||a.roleName||a.roleId}:${a.message||a.status}`,...(a.details||[]).slice(0,8).map(a=>` - ${a}`)]).slice(0,80)})}function $(a,b=(0,l.aY)()){let c,e=g.resolve(b),f=(0,k.computeProjectId)(e),n=Date.now(),s=a.resumeDocumentId?K(a.resumeDocumentId,e):null;if(s){let a=H(s.id),b=a?Y(a,e):null;if(b)return b}if(!s)for(let b of t.values()){let c=Y(b,e);if(c&&c.record.templateId===a.templateId&&c.record.projectRoot===e)return c}let u=Math.max(1,Number(process.env.DOCUMENT_MAX_CONCURRENT_GENERATIONS??2));if(t.size>=u)throw Error(`当前已有 ${t.size} 个文档生成任务在运行(上限 ${u}),请等待完成或中止后再运行`);let v=s?.id||`doc-${n}-${d.randomBytes(4).toString("hex")}`,w=`task-${n}-${d.randomBytes(4).toString("hex")}`,x=s?{...s,taskId:w,status:"generating",error:void 0,completedAt:void 0,executionStages:[{type:"validation",roleId:"resume-generation",status:"running",message:"已重新进入生成流程;仅复用通过当前工作流版本、项目、模板、需求和导出门禁校验的章节,其余章节重新生成"}],partialChapters:void 0,checkpointChapters:void 0,draft:void 0,warningIssues:void 0,updatedAt:n}:{id:v,taskId:w,templateId:a.templateId,templateVersion:(0,h.QJx)(a.templateId)?.version,title:"生成中",requirement:a.requirement||"",maxEvidencePerChapter:a.maxEvidencePerChapter,projectRoot:e,projectId:f,knowledgeBasePath:(0,l.NW)(e),markdown:"",status:"generating",assets:[],createdAt:n,updatedAt:n};L(x,e),Z(e,{taskId:w,title:`生成 ${x.title}`,status:"processing",percent:1,message:"文档生成任务已进入后台队列",stages:x.executionStages});let y=new AbortController,z={},A=function(a,b,c){if(!a)return[];let d=(0,h.QJx)(b.templateId),e=a.reviewMetadata?.workflowVersion?.version||a.draft?.reviewMetadata?.workflowVersion?.version,f=a.draft?.exportGate?.passed===!0,g=a.templateId===b.templateId&&(!d||!a.templateVersion||a.templateVersion===d.version),i=a.projectRoot===c&&a.projectId===(0,k.computeProjectId)(c),l=(a.requirement||"")===(b.requirement||"");if(!g||!i||!l||e!==j.x.version||!f)return[];let m=new Set((a.draft?.partialChapters||a.partialChapters||[]).filter(a=>"completed"===a.status).map(a=>a.id));return q(a.draft?.chapters,a.checkpointChapters).filter(a=>m.has(a.id)&&!!a.content?.trim()&&!/WRITER_MISSING_SECTION|Writer 未完成/u.test(a.content))}(s,a,e),B="",C=0,D="",E=Math.max(1e3,Math.min(15e3,Number(process.env.DOCUMENT_PROGRESS_SAVE_INTERVAL_MS??5e3))),F=Math.max(3e4,Math.min(3e5,Number(process.env.DOCUMENT_PROGRESS_HEARTBEAT_SAVE_INTERVAL_MS??6e4))),G=(0,h.OXS)({...a,projectRoot:e,resumeChapters:A,signal:y.signal,onProgress:(a,b)=>{try{z.current&&(z.current.lastProgressAt=Date.now()),c=a,b?.chapters?.length&&(B=b.chapters.map(a=>`# ${a.title}
1
+ "use strict";exports.id=8661,exports.ids=[8661],exports.modules={48661:(a,b,c)=>{c.d(b,{BH:()=>P,Gl:()=>x,JU:()=>T,Jz:()=>U,M$:()=>J,Oy:()=>D,QG:()=>O,QH:()=>C,SE:()=>E,YL:()=>$,a6:()=>M,r:()=>N,v7:()=>K,yE:()=>S});var d=c(77598),e=c(73024),f=c(48161),g=c(76760),h=c(64605),i=c(23760),j=c(87942),k=c(19898),l=c(44533),m=c(78217),n=c(37095);function o(a,b){return a?.map(a=>"running"===a.status?{...a,status:"failed",message:b}:a)}function p(a){return a.title&&"生成中"!==a.title?a.title:`${a.templateName||"文档"}生成失败`}function q(...a){let b=new Map;for(let c of a)for(let a of c||[])a.id&&a.content?.trim()&&b.set(a.id,a);return[...b.values()]}function r(a){return(a||[]).map(a=>({id:a.id,title:a.title,chars:(0,m.V7)(a.content),status:a.inProgress?"in_progress":a.content.trim().length>0?"completed":"failed",updatedAt:Date.now(),timedOut:a.timedOut,elapsedMs:a.elapsedMs}))}let s=globalThis,t=s.__generatedDocumentTasks??=new Map,u=Math.max(36e5,Number(process.env.DOCUMENT_ABANDONED_RECORD_STALE_MS??864e5)),v=s.__generatedDocumentProcessStartedAt??=Date.now(),w=Math.max(3e4,Number(process.env.DOCUMENT_RECENT_UPDATE_GRACE_MS??6e4));function x(a=(0,l.aY)()){let b=g.join(f.homedir(),".customize-agent","projects",function(a=(0,l.aY)()){return(0,k.computeProjectId)(g.resolve(a))}(a),"generatedDocuments");return e.mkdirSync(g.join(b,"drafts"),{recursive:!0}),e.mkdirSync(g.join(b,"assets"),{recursive:!0}),b}function y(a=(0,l.aY)()){return g.join(x(a),"index.json")}function z(a=(0,l.aY)()){return g.join(x(a),"assets.json")}function A(a,b=(0,l.aY)()){return g.join(x(b),"drafts",`${a}.json`)}function B(a,b=(0,l.aY)()){return g.join(x(b),"drafts",`${a}.meta.json`)}function C(a,b=(0,l.aY)()){let c=F(B(a,b),null);return c&&Number.isFinite(c.updatedAt)?c:null}function D(a){return!(!a||"generating"!==a.status||Date.now()-a.updatedAt<w)&&(a.updatedAt<v||Date.now()-a.updatedAt>=u)}function E(a,b=(0,l.aY)()){return a.path?g.isAbsolute(a.path)?a.path:a.path.startsWith("generatedDocuments/assets/")?g.join(x(b),a.path.replace(/^generatedDocuments\/assets\//u,"assets/")):g.join((0,l.NW)(b),a.path):null}function F(a,b){try{return JSON.parse(e.readFileSync(a,"utf8"))}catch{return b}}function G(a,b){e.mkdirSync(g.dirname(a),{recursive:!0});let c=`${a}.${process.pid}.${Date.now()}.tmp`;e.writeFileSync(c,JSON.stringify(b,null,2)),e.renameSync(c,a)}function H(a){for(let b of t.values())if(b.documentId===a)return b;return null}function I(a,b=(0,l.aY)()){if("generating"!==a.status||H(a.id)||Date.now()-a.updatedAt<w)return a;let c=a.updatedAt<v?0:u;if(Date.now()-a.updatedAt<c)return a;let d="生成任务已中断,请点击继续生成或重新生成",e=a.checkpointChapters?.length?"warning":"failed",f={...a,title:p(a),status:e,error:a.error||d,executionStages:o(a.executionStages,d),completedAt:Date.now(),warningIssues:a.checkpointChapters?.length?[...a.warningIssues||[],d]:a.warningIssues};return a.taskId&&Z(b,{taskId:a.taskId,title:`生成 ${f.title}`,status:"warning"===e?"warning":"error",percent:100,message:d,stages:f.executionStages,error:d}),f}function J(a=(0,l.aY)()){return F(y(a),[]).map(b=>{if("generating"!==b.status)return b;let c=F(A(b.id,a),null);if(!c)return b;let d=I(c,a);return d!==c?W(L(d,a,{preserveUpdatedAt:!0})):W(c)}).sort((a,b)=>(b.createdAt||b.updatedAt)-(a.createdAt||a.updatedAt))}function K(a,b=(0,l.aY)()){let c=F(A(a,b),null);if(!c)return null;let d=I(c,b);return function(a,b=(0,l.aY)()){if("generating"===a.status||!(a.editedMarkdown||a.markdown)?.trim())return a;let c=`document-${a.id}`;if(a.assets?.some(a=>a.id===c&&a.path))return a;let d=R(a,b);return d?L({...a,assets:[d,...(a.assets||[]).filter(a=>a.id!==d.id)]},b):a}(d!==c?L(d,b,{preserveUpdatedAt:!0}):d,b)}function L(a,b=(0,l.aY)(),c){let d=Date.now(),e=X({...a,updatedAt:c?.preserveUpdatedAt?a.updatedAt:d});G(A(e.id,b),e),G(B(e.id,b),{updatedAt:e.updatedAt,status:e.status,completedAt:e.completedAt});let f=F(y(b),[]).filter(a=>a.id!==e.id);return f.unshift(W(e)),G(y(b),f),e}function M(a,b,c=(0,l.aY)()){let d=K(a,c);return d?L({...d,...b,id:a},c):null}function N(a,b=(0,l.aY)()){let c=K(a,b);if(!c)return null;if("generating"!==c.status)return c;for(let[b,c]of t)c.documentId===a&&(c.status="aborted",c.controller.abort(),t.delete(b));let d="用户中止",e=o(c.executionStages,d),f=L({...c,status:"aborted",error:d,executionStages:e,completedAt:Date.now()},b);return f.taskId&&Z(b,{taskId:f.taskId,title:`生成 ${f.title}`,status:"warning",percent:100,message:d,stages:e,error:d}),f}function O(a,b=(0,l.aY)()){try{e.rmSync(A(a,b),{force:!0})}catch{console.warn("[generated-documents] 删除文档记录失败或文件不存在",a)}let c=F(y(b),[]).filter(b=>b.id!==a);G(y(b),c)}function P(a=(0,l.aY)()){return F(z(a),[]).sort((a,b)=>b.updatedAt-a.updatedAt)}function Q(a,b,c=(0,l.aY)()){let d=Date.now(),e=[...P(c)];for(let c of a){let a=e.findIndex(a=>a.id===c.id),f=c.path?.startsWith("generatedDocuments/assets/")||"generated"===c.status||"prompt_ready"===c.status?"generated":"knowledge_base",h={...c,name:g.basename(c.path||c.url||c.id),source:f,indexed:a>=0&&e[a].indexed,usedByDocumentIds:a>=0?[...new Set([...e[a].usedByDocumentIds,b])]:[b],createdAt:a>=0?e[a].createdAt:d,updatedAt:d};a>=0?e[a]={...e[a],...h}:e.push(h)}return G(z(c),e),e}function R(a,b=(0,l.aY)()){let c=a.editedMarkdown||a.markdown;if(!c?.trim())return null;let d=`generatedDocuments/assets/${a.title.replace(/[\\/:*?"<>|]/gu,"_").slice(0,120)||"generated-document"}-${a.id}.md`,f=g.join(x(b),d.replace(/^generatedDocuments\//u,""));e.mkdirSync(g.dirname(f),{recursive:!0}),e.writeFileSync(f,c,"utf8");let h={id:`document-${a.id}`,type:"file",role:"generated",path:d,status:"generated",message:"模板运行生成的 Markdown 文档,仅登记到生成资源,不进入知识库"};return Q([h],a.id,b).find(a=>a.id===h.id)||null}function S(a,b=(0,l.aY)()){return P(b).find(b=>b.id===a)||null}function T(a,b=(0,l.aY)()){let c=S(a,b);if(!c)return!1;let d=E(c,b);if(d&&d.startsWith(x(b)))try{e.rmSync(d,{force:!0})}catch{console.warn("[generated-documents] 删除生成资源文件失败或文件不存在",d)}return G(z(b),P(b).filter(b=>b.id!==a)),!0}function U(a,b,c=(0,l.aY)()){let d=S(a,c);if(!d)return null;let f=E(d,c);return f&&e.existsSync(f)?"directory"===b?g.dirname(f):f:null}function V(a){let b=Math.max(4,Math.floor(Number(process.env.DOCUMENT_PERSIST_EVIDENCE_MAX_ITEMS??10))),c=Math.max(300,Math.floor(Number(process.env.DOCUMENT_PERSIST_EVIDENCE_ITEM_CHARS??900)));return{...a,evidence:(a.evidence||[]).slice(0,b).map(a=>({...a,content:"string"==typeof a.content?a.content.replace(/\s+/gu," ").slice(0,c):""}))}}function W(a){let b=[...a.executionStages||a.draft?.executionStages||[]].reverse().find(a=>a.message||a.subtitle||a.roleId),c=a.partialChapters||r(a.checkpointChapters||a.draft?.checkpointChapters||a.draft?.chapters),d=a.draft?.validationIssues||[],e=a.draft?.exportGate?a.draft.exportGate.blockingIssues?.length??0:d.filter(a=>"blocker"===a.severity||"error"===a.level).length,f=d.filter(a=>"warning"===a.severity||"warning"===a.level).length||a.warningIssues?.length||0,g=d.filter(a=>"suggestion"===a.severity||"info"===a.level).length;return{id:a.id,taskId:a.taskId,templateId:a.templateId,templateName:a.templateName,templateVersion:a.templateVersion,title:a.title,requirement:a.requirement,projectRoot:a.projectRoot,projectId:a.projectId,knowledgeBasePath:a.knowledgeBasePath,status:a.status,createdAt:a.createdAt,updatedAt:a.updatedAt,completedAt:a.completedAt,elapsedMs:a.completedAt?a.completedAt-a.createdAt:a.updatedAt-a.createdAt,error:a.error,warningIssues:(a.warningIssues||[]).slice(0,12),warningCount:f,blockerCount:e,suggestionCount:g,wordCount:(0,m.V7)(a.editedMarkdown||a.markdown||a.draft?.markdown||""),chapterCount:c?.length||a.draft?.chapters?.length||0,completedChapterCount:(c||[]).filter(a=>"completed"===a.status).length,latestStage:b?.subtitle||b?.roleName||b?.roleId,latestMessage:b?.message,assets:(a.assets||[]).slice(0,8),partialChapters:c}}function X(a){let b=a.draft?{...a.draft,chapters:a.draft.chapters?.map(V),checkpointChapters:a.draft.checkpointChapters?.map(V)}:a.draft;return{...a,draft:b,checkpointChapters:a.checkpointChapters?.map(V)}}function Y(a,b){let c=K(a.documentId,b);return c&&"generating"===c.status?{taskId:a.id,documentId:a.documentId,record:c}:null}function Z(a,b){(0,n.Qf)(a,{id:b.taskId,type:"document",title:b.title,stage:"processing"===b.status?"generating":"error"===b.status?"error":"done",status:b.status,percent:b.percent,message:b.message,error:b.error,details:(b.stages||[]).filter(a=>"role_binding"===a.type||"runtime-prompt-rules"===a.roleId||"document-readiness"===a.roleId||"export_ready"===a.type||"failed"===a.status).flatMap(a=>[`${a.subtitle||a.roleName||a.roleId}:${a.message||a.status}`,...(a.details||[]).slice(0,8).map(a=>` - ${a}`)]).slice(0,80)})}function $(a,b=(0,l.aY)()){let c,e=g.resolve(b),f=(0,k.computeProjectId)(e),n=Date.now(),s=a.resumeDocumentId?K(a.resumeDocumentId,e):null;if(s){let a=H(s.id),b=a?Y(a,e):null;if(b)return b}if(!s)for(let b of t.values()){let c=Y(b,e);if(c&&c.record.templateId===a.templateId&&c.record.projectRoot===e)return c}let u=Math.max(1,Number(process.env.DOCUMENT_MAX_CONCURRENT_GENERATIONS??2));if(t.size>=u)throw Error(`当前已有 ${t.size} 个文档生成任务在运行(上限 ${u}),请等待完成或中止后再运行`);let v=s?.id||`doc-${n}-${d.randomBytes(4).toString("hex")}`,w=`task-${n}-${d.randomBytes(4).toString("hex")}`,x=s?{...s,taskId:w,status:"generating",error:void 0,completedAt:void 0,executionStages:[{type:"validation",roleId:"resume-generation",status:"running",message:"已重新进入生成流程;仅复用通过当前工作流版本、项目、模板、需求和导出门禁校验的章节,其余章节重新生成"}],partialChapters:void 0,checkpointChapters:void 0,draft:void 0,warningIssues:void 0,updatedAt:n}:{id:v,taskId:w,templateId:a.templateId,templateVersion:(0,h.QJx)(a.templateId)?.version,title:"生成中",requirement:a.requirement||"",maxEvidencePerChapter:a.maxEvidencePerChapter,projectRoot:e,projectId:f,knowledgeBasePath:(0,l.NW)(e),markdown:"",status:"generating",assets:[],createdAt:n,updatedAt:n};L(x,e),Z(e,{taskId:w,title:`生成 ${x.title}`,status:"processing",percent:1,message:"文档生成任务已进入后台队列",stages:x.executionStages});let y=new AbortController,z={},A=function(a,b,c){if(!a)return[];let d=(0,h.QJx)(b.templateId),e=a.reviewMetadata?.workflowVersion?.version||a.draft?.reviewMetadata?.workflowVersion?.version,f=a.draft?.exportGate?.passed===!0,g=a.templateId===b.templateId&&(!d||!a.templateVersion||a.templateVersion===d.version),i=a.projectRoot===c&&a.projectId===(0,k.computeProjectId)(c),l=(a.requirement||"")===(b.requirement||"");if(!g||!i||!l||e!==j.x.version||!f)return[];let m=new Set((a.draft?.partialChapters||a.partialChapters||[]).filter(a=>"completed"===a.status).map(a=>a.id));return q(a.draft?.chapters,a.checkpointChapters).filter(a=>m.has(a.id)&&!!a.content?.trim()&&!/WRITER_MISSING_SECTION|Writer 未完成/u.test(a.content))}(s,a,e),B="",C=0,D="",E=Math.max(1e3,Math.min(15e3,Number(process.env.DOCUMENT_PROGRESS_SAVE_INTERVAL_MS??5e3))),F=Math.max(3e4,Math.min(3e5,Number(process.env.DOCUMENT_PROGRESS_HEARTBEAT_SAVE_INTERVAL_MS??6e4))),G=(0,h.OXS)({...a,projectRoot:e,resumeChapters:A,signal:y.signal,onProgress:(a,b)=>{try{z.current&&(z.current.lastProgressAt=Date.now()),c=a,b?.chapters?.length&&(B=b.chapters.map(a=>`# ${a.title}
2
2
 
3
3
  ${a.content}`).join("\n\n"));let d=Date.now(),f=JSON.stringify({stages:a.map(a=>({type:a.type,roleId:a.roleId,status:a.status,message:a.message,progress:a.progress})),checkpoint:b?.chapters?.map(a=>[a.id,a.content.length,a.sections?.length||0])||[]});if(!b?.chapters&&f===D&&d-C<Math.max(E,F))return;let g=K(v,e);if(g&&"generating"===g.status){let c=b?.chapters?q(g.checkpointChapters,b.chapters).map(V):g.checkpointChapters,h=c?.length?c.map(a=>`# ${a.title}
4
4
 
@@ -1 +1 @@
1
- globalThis.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-42372ed130431b0a.js"],devFiles:[],ampDevFiles:[],lowPriorityFiles:[],rootMainFiles:[],rootMainFilesTree:{},pages:{"/":["static/chunks/webpack-4224e970a97a4a86.js","static/chunks/framework-161be364fd69a7ce.js","static/chunks/main-91fb767ebd74c9c1.js","static/chunks/880-64d8a15c524106d2.js","static/chunks/795-61fe67c7203b6001.js","static/chunks/pages/index-cb27bfa36c212ab5.js"],"/_app":["static/chunks/webpack-4224e970a97a4a86.js","static/chunks/framework-161be364fd69a7ce.js","static/chunks/main-91fb767ebd74c9c1.js","static/css/3854c6b3c59c0c44.css","static/chunks/pages/_app-24bef62eef01afe6.js"],"/_error":["static/chunks/webpack-4224e970a97a4a86.js","static/chunks/framework-161be364fd69a7ce.js","static/chunks/main-91fb767ebd74c9c1.js","static/chunks/pages/_error-282257fbdcc167b4.js"],"/asset-library":["static/chunks/webpack-4224e970a97a4a86.js","static/chunks/framework-161be364fd69a7ce.js","static/chunks/main-91fb767ebd74c9c1.js","static/chunks/717-743b697a417dd5ee.js","static/chunks/883-506cbca959974997.js","static/chunks/69-34d57b77fd2eed20.js","static/chunks/700-5d29b0475311f590.js","static/chunks/224-790cf01fcf6820ee.js","static/chunks/102-881dcc464f983c89.js","static/chunks/289-42781fb699646699.js","static/chunks/994-241f87efc61005b8.js","static/chunks/pages/asset-library-f6319fc04559e43d.js"],"/document-roles":["static/chunks/webpack-4224e970a97a4a86.js","static/chunks/framework-161be364fd69a7ce.js","static/chunks/main-91fb767ebd74c9c1.js","static/chunks/717-743b697a417dd5ee.js","static/chunks/883-506cbca959974997.js","static/chunks/69-34d57b77fd2eed20.js","static/chunks/700-5d29b0475311f590.js","static/chunks/44-d3545eedd5c75ef1.js","static/chunks/224-790cf01fcf6820ee.js","static/chunks/787-c18af810af3433f6.js","static/chunks/102-881dcc464f983c89.js","static/chunks/195-2c0168eacab722d2.js","static/chunks/289-42781fb699646699.js","static/chunks/455-e1b41ac4946d2b6f.js","static/chunks/pages/document-roles-4ccb2db16dc4b63c.js"],"/documents":["static/chunks/webpack-4224e970a97a4a86.js","static/chunks/framework-161be364fd69a7ce.js","static/chunks/main-91fb767ebd74c9c1.js","static/chunks/717-743b697a417dd5ee.js","static/chunks/883-506cbca959974997.js","static/chunks/69-34d57b77fd2eed20.js","static/chunks/700-5d29b0475311f590.js","static/chunks/44-d3545eedd5c75ef1.js","static/chunks/224-790cf01fcf6820ee.js","static/chunks/787-c18af810af3433f6.js","static/chunks/195-2c0168eacab722d2.js","static/chunks/455-e1b41ac4946d2b6f.js","static/chunks/506-93f730bc149d0dce.js","static/chunks/930-0436dcaa92fb41f6.js","static/chunks/pages/documents-7e063a1115c053eb.js"],"/guide":["static/chunks/webpack-4224e970a97a4a86.js","static/chunks/framework-161be364fd69a7ce.js","static/chunks/main-91fb767ebd74c9c1.js","static/chunks/717-743b697a417dd5ee.js","static/chunks/69-34d57b77fd2eed20.js","static/chunks/787-c18af810af3433f6.js","static/chunks/986-771dc425e7b25964.js","static/chunks/pages/guide-139f55bcc9c6548b.js"],"/knowledge":["static/chunks/webpack-4224e970a97a4a86.js","static/chunks/framework-161be364fd69a7ce.js","static/chunks/main-91fb767ebd74c9c1.js","static/chunks/pages/knowledge-905248d8dcb15453.js"],"/knowledge/file-detail":["static/chunks/webpack-4224e970a97a4a86.js","static/chunks/framework-161be364fd69a7ce.js","static/chunks/main-91fb767ebd74c9c1.js","static/chunks/717-743b697a417dd5ee.js","static/chunks/883-506cbca959974997.js","static/chunks/69-34d57b77fd2eed20.js","static/chunks/700-5d29b0475311f590.js","static/chunks/44-d3545eedd5c75ef1.js","static/chunks/224-790cf01fcf6820ee.js","static/chunks/787-c18af810af3433f6.js","static/chunks/102-881dcc464f983c89.js","static/chunks/289-42781fb699646699.js","static/chunks/506-93f730bc149d0dce.js","static/chunks/850-0f48354694fc6b3e.js","static/css/ad5a592c79d1448b.css","static/chunks/pages/knowledge/file-detail-3a04722f7720abf5.js"],"/knowledge/files":["static/chunks/webpack-4224e970a97a4a86.js","static/chunks/framework-161be364fd69a7ce.js","static/chunks/main-91fb767ebd74c9c1.js","static/chunks/717-743b697a417dd5ee.js","static/chunks/883-506cbca959974997.js","static/chunks/69-34d57b77fd2eed20.js","static/chunks/700-5d29b0475311f590.js","static/chunks/44-d3545eedd5c75ef1.js","static/chunks/224-790cf01fcf6820ee.js","static/chunks/102-881dcc464f983c89.js","static/chunks/289-42781fb699646699.js","static/css/ad5a592c79d1448b.css","static/chunks/pages/knowledge/files-98ec72061cdb64d3.js"],"/knowledge/manage":["static/chunks/webpack-4224e970a97a4a86.js","static/chunks/framework-161be364fd69a7ce.js","static/chunks/main-91fb767ebd74c9c1.js","static/chunks/717-743b697a417dd5ee.js","static/chunks/883-506cbca959974997.js","static/chunks/69-34d57b77fd2eed20.js","static/chunks/787-c18af810af3433f6.js","static/chunks/506-93f730bc149d0dce.js","static/chunks/788-e98701da4d6ca319.js","static/chunks/pages/knowledge/manage-558987c599dc4cd5.js"],"/models":["static/chunks/webpack-4224e970a97a4a86.js","static/chunks/framework-161be364fd69a7ce.js","static/chunks/main-91fb767ebd74c9c1.js","static/chunks/717-743b697a417dd5ee.js","static/chunks/883-506cbca959974997.js","static/chunks/44-d3545eedd5c75ef1.js","static/chunks/195-2c0168eacab722d2.js","static/chunks/455-e1b41ac4946d2b6f.js","static/chunks/827-a6dc09e42833e6a3.js","static/chunks/pages/models-1fe7c964edefdd30.js"],"/overview":["static/chunks/webpack-4224e970a97a4a86.js","static/chunks/framework-161be364fd69a7ce.js","static/chunks/main-91fb767ebd74c9c1.js","static/chunks/880-64d8a15c524106d2.js","static/chunks/795-61fe67c7203b6001.js","static/chunks/pages/overview-8713b5d37af0eeb3.js"],"/prompt":["static/chunks/webpack-4224e970a97a4a86.js","static/chunks/framework-161be364fd69a7ce.js","static/chunks/main-91fb767ebd74c9c1.js","static/chunks/717-743b697a417dd5ee.js","static/chunks/883-506cbca959974997.js","static/chunks/700-5d29b0475311f590.js","static/chunks/44-d3545eedd5c75ef1.js","static/chunks/195-2c0168eacab722d2.js","static/chunks/260-244c94eacd903620.js","static/chunks/pages/prompt-839287c514595765.js"],"/settings":["static/chunks/webpack-4224e970a97a4a86.js","static/chunks/framework-161be364fd69a7ce.js","static/chunks/main-91fb767ebd74c9c1.js","static/chunks/pages/settings-17632b1471b4862f.js"],"/system/logs":["static/chunks/webpack-4224e970a97a4a86.js","static/chunks/framework-161be364fd69a7ce.js","static/chunks/main-91fb767ebd74c9c1.js","static/chunks/717-743b697a417dd5ee.js","static/chunks/883-506cbca959974997.js","static/chunks/69-34d57b77fd2eed20.js","static/chunks/700-5d29b0475311f590.js","static/chunks/44-d3545eedd5c75ef1.js","static/chunks/224-790cf01fcf6820ee.js","static/chunks/102-881dcc464f983c89.js","static/chunks/195-2c0168eacab722d2.js","static/chunks/289-42781fb699646699.js","static/chunks/pages/system/logs-2e849bcdf371d791.js"],"/template-references":["static/chunks/webpack-4224e970a97a4a86.js","static/chunks/framework-161be364fd69a7ce.js","static/chunks/main-91fb767ebd74c9c1.js","static/chunks/717-743b697a417dd5ee.js","static/chunks/69-34d57b77fd2eed20.js","static/chunks/700-5d29b0475311f590.js","static/chunks/787-c18af810af3433f6.js","static/chunks/102-881dcc464f983c89.js","static/chunks/195-2c0168eacab722d2.js","static/chunks/564-30bfcb28e1d2c309.js","static/chunks/pages/template-references-e0ab1466f28cc4fc.js"]},ampFirstPages:[]},globalThis.__BUILD_MANIFEST.lowPriorityFiles=["/static/"+process.env.__NEXT_BUILD_ID+"/_buildManifest.js",,"/static/"+process.env.__NEXT_BUILD_ID+"/_ssgManifest.js"];
1
+ globalThis.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-42372ed130431b0a.js"],devFiles:[],ampDevFiles:[],lowPriorityFiles:[],rootMainFiles:[],rootMainFilesTree:{},pages:{"/":["static/chunks/webpack-4224e970a97a4a86.js","static/chunks/framework-161be364fd69a7ce.js","static/chunks/main-91fb767ebd74c9c1.js","static/chunks/880-64d8a15c524106d2.js","static/chunks/795-61fe67c7203b6001.js","static/chunks/pages/index-cb27bfa36c212ab5.js"],"/_app":["static/chunks/webpack-4224e970a97a4a86.js","static/chunks/framework-161be364fd69a7ce.js","static/chunks/main-91fb767ebd74c9c1.js","static/css/3854c6b3c59c0c44.css","static/chunks/pages/_app-24bef62eef01afe6.js"],"/_error":["static/chunks/webpack-4224e970a97a4a86.js","static/chunks/framework-161be364fd69a7ce.js","static/chunks/main-91fb767ebd74c9c1.js","static/chunks/pages/_error-282257fbdcc167b4.js"],"/asset-library":["static/chunks/webpack-4224e970a97a4a86.js","static/chunks/framework-161be364fd69a7ce.js","static/chunks/main-91fb767ebd74c9c1.js","static/chunks/717-743b697a417dd5ee.js","static/chunks/883-506cbca959974997.js","static/chunks/69-34d57b77fd2eed20.js","static/chunks/700-5d29b0475311f590.js","static/chunks/224-0415408fff1d1c8b.js","static/chunks/102-881dcc464f983c89.js","static/chunks/289-fc1b25371e004552.js","static/chunks/994-241f87efc61005b8.js","static/chunks/pages/asset-library-f6319fc04559e43d.js"],"/document-roles":["static/chunks/webpack-4224e970a97a4a86.js","static/chunks/framework-161be364fd69a7ce.js","static/chunks/main-91fb767ebd74c9c1.js","static/chunks/717-743b697a417dd5ee.js","static/chunks/883-506cbca959974997.js","static/chunks/69-34d57b77fd2eed20.js","static/chunks/700-5d29b0475311f590.js","static/chunks/44-d3545eedd5c75ef1.js","static/chunks/224-0415408fff1d1c8b.js","static/chunks/787-c18af810af3433f6.js","static/chunks/102-881dcc464f983c89.js","static/chunks/195-2c0168eacab722d2.js","static/chunks/289-fc1b25371e004552.js","static/chunks/455-e1b41ac4946d2b6f.js","static/chunks/pages/document-roles-4ccb2db16dc4b63c.js"],"/documents":["static/chunks/webpack-4224e970a97a4a86.js","static/chunks/framework-161be364fd69a7ce.js","static/chunks/main-91fb767ebd74c9c1.js","static/chunks/717-743b697a417dd5ee.js","static/chunks/883-506cbca959974997.js","static/chunks/69-34d57b77fd2eed20.js","static/chunks/700-5d29b0475311f590.js","static/chunks/44-d3545eedd5c75ef1.js","static/chunks/224-0415408fff1d1c8b.js","static/chunks/787-c18af810af3433f6.js","static/chunks/195-2c0168eacab722d2.js","static/chunks/455-e1b41ac4946d2b6f.js","static/chunks/506-93f730bc149d0dce.js","static/chunks/930-0436dcaa92fb41f6.js","static/chunks/pages/documents-ed4d3da950c116b7.js"],"/guide":["static/chunks/webpack-4224e970a97a4a86.js","static/chunks/framework-161be364fd69a7ce.js","static/chunks/main-91fb767ebd74c9c1.js","static/chunks/717-743b697a417dd5ee.js","static/chunks/69-34d57b77fd2eed20.js","static/chunks/787-c18af810af3433f6.js","static/chunks/986-771dc425e7b25964.js","static/chunks/pages/guide-139f55bcc9c6548b.js"],"/knowledge":["static/chunks/webpack-4224e970a97a4a86.js","static/chunks/framework-161be364fd69a7ce.js","static/chunks/main-91fb767ebd74c9c1.js","static/chunks/pages/knowledge-905248d8dcb15453.js"],"/knowledge/file-detail":["static/chunks/webpack-4224e970a97a4a86.js","static/chunks/framework-161be364fd69a7ce.js","static/chunks/main-91fb767ebd74c9c1.js","static/chunks/717-743b697a417dd5ee.js","static/chunks/883-506cbca959974997.js","static/chunks/69-34d57b77fd2eed20.js","static/chunks/700-5d29b0475311f590.js","static/chunks/44-d3545eedd5c75ef1.js","static/chunks/224-0415408fff1d1c8b.js","static/chunks/787-c18af810af3433f6.js","static/chunks/102-881dcc464f983c89.js","static/chunks/289-fc1b25371e004552.js","static/chunks/506-93f730bc149d0dce.js","static/chunks/850-0f48354694fc6b3e.js","static/css/ad5a592c79d1448b.css","static/chunks/pages/knowledge/file-detail-3a04722f7720abf5.js"],"/knowledge/files":["static/chunks/webpack-4224e970a97a4a86.js","static/chunks/framework-161be364fd69a7ce.js","static/chunks/main-91fb767ebd74c9c1.js","static/chunks/717-743b697a417dd5ee.js","static/chunks/883-506cbca959974997.js","static/chunks/69-34d57b77fd2eed20.js","static/chunks/700-5d29b0475311f590.js","static/chunks/44-d3545eedd5c75ef1.js","static/chunks/224-0415408fff1d1c8b.js","static/chunks/102-881dcc464f983c89.js","static/chunks/289-fc1b25371e004552.js","static/css/ad5a592c79d1448b.css","static/chunks/pages/knowledge/files-33782c4b41f33750.js"],"/knowledge/manage":["static/chunks/webpack-4224e970a97a4a86.js","static/chunks/framework-161be364fd69a7ce.js","static/chunks/main-91fb767ebd74c9c1.js","static/chunks/717-743b697a417dd5ee.js","static/chunks/883-506cbca959974997.js","static/chunks/69-34d57b77fd2eed20.js","static/chunks/787-c18af810af3433f6.js","static/chunks/506-93f730bc149d0dce.js","static/chunks/788-dca0d550ad6bd8b2.js","static/chunks/pages/knowledge/manage-5b1b4d3804752f8b.js"],"/models":["static/chunks/webpack-4224e970a97a4a86.js","static/chunks/framework-161be364fd69a7ce.js","static/chunks/main-91fb767ebd74c9c1.js","static/chunks/717-743b697a417dd5ee.js","static/chunks/883-506cbca959974997.js","static/chunks/44-d3545eedd5c75ef1.js","static/chunks/195-2c0168eacab722d2.js","static/chunks/455-e1b41ac4946d2b6f.js","static/chunks/827-a6dc09e42833e6a3.js","static/chunks/pages/models-1fe7c964edefdd30.js"],"/overview":["static/chunks/webpack-4224e970a97a4a86.js","static/chunks/framework-161be364fd69a7ce.js","static/chunks/main-91fb767ebd74c9c1.js","static/chunks/880-64d8a15c524106d2.js","static/chunks/795-61fe67c7203b6001.js","static/chunks/pages/overview-8713b5d37af0eeb3.js"],"/prompt":["static/chunks/webpack-4224e970a97a4a86.js","static/chunks/framework-161be364fd69a7ce.js","static/chunks/main-91fb767ebd74c9c1.js","static/chunks/717-743b697a417dd5ee.js","static/chunks/883-506cbca959974997.js","static/chunks/700-5d29b0475311f590.js","static/chunks/44-d3545eedd5c75ef1.js","static/chunks/195-2c0168eacab722d2.js","static/chunks/260-580088826d643423.js","static/chunks/pages/prompt-edc2dfea09aaedc1.js"],"/settings":["static/chunks/webpack-4224e970a97a4a86.js","static/chunks/framework-161be364fd69a7ce.js","static/chunks/main-91fb767ebd74c9c1.js","static/chunks/pages/settings-17632b1471b4862f.js"],"/system/logs":["static/chunks/webpack-4224e970a97a4a86.js","static/chunks/framework-161be364fd69a7ce.js","static/chunks/main-91fb767ebd74c9c1.js","static/chunks/717-743b697a417dd5ee.js","static/chunks/883-506cbca959974997.js","static/chunks/69-34d57b77fd2eed20.js","static/chunks/700-5d29b0475311f590.js","static/chunks/44-d3545eedd5c75ef1.js","static/chunks/224-0415408fff1d1c8b.js","static/chunks/102-881dcc464f983c89.js","static/chunks/195-2c0168eacab722d2.js","static/chunks/289-fc1b25371e004552.js","static/chunks/pages/system/logs-ee67e2c93147dfc3.js"],"/template-references":["static/chunks/webpack-4224e970a97a4a86.js","static/chunks/framework-161be364fd69a7ce.js","static/chunks/main-91fb767ebd74c9c1.js","static/chunks/717-743b697a417dd5ee.js","static/chunks/69-34d57b77fd2eed20.js","static/chunks/700-5d29b0475311f590.js","static/chunks/787-c18af810af3433f6.js","static/chunks/102-881dcc464f983c89.js","static/chunks/195-2c0168eacab722d2.js","static/chunks/564-30bfcb28e1d2c309.js","static/chunks/pages/template-references-e0ab1466f28cc4fc.js"]},ampFirstPages:[]},globalThis.__BUILD_MANIFEST.lowPriorityFiles=["/static/"+process.env.__NEXT_BUILD_ID+"/_buildManifest.js",,"/static/"+process.env.__NEXT_BUILD_ID+"/_ssgManifest.js"];