@customize-agent/server 4.55.0 → 4.55.2

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 (50) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +2 -2
  3. package/.next/prerender-manifest.json +3 -3
  4. package/.next/server/chunks/208.js +3 -3
  5. package/.next/server/chunks/{5547.js → 5784.js} +4 -4
  6. package/.next/server/pages/404.html +1 -1
  7. package/.next/server/pages/500.html +1 -1
  8. package/.next/server/pages/api/assets/generated/preview.js +1 -1
  9. package/.next/server/pages/api/assets/generated/preview.js.nft.json +1 -1
  10. package/.next/server/pages/api/assets/generated.js +1 -1
  11. package/.next/server/pages/api/assets/generated.js.nft.json +1 -1
  12. package/.next/server/pages/api/documents/export.js +1 -1
  13. package/.next/server/pages/api/documents/export.js.nft.json +1 -1
  14. package/.next/server/pages/api/documents/generate.js +1 -1
  15. package/.next/server/pages/api/documents/generate.js.nft.json +1 -1
  16. package/.next/server/pages/api/documents/generated/[id].js +1 -1
  17. package/.next/server/pages/api/documents/generated/[id].js.nft.json +1 -1
  18. package/.next/server/pages/api/documents/generated.js +1 -1
  19. package/.next/server/pages/api/documents/generated.js.nft.json +1 -1
  20. package/.next/server/pages/api/documents/templates.js +1 -1
  21. package/.next/server/pages/api/documents/templates.js.nft.json +1 -1
  22. package/.next/server/pages/api/kb/files/reindex.js +1 -1
  23. package/.next/server/pages/api/kb/files/reindex.js.nft.json +1 -1
  24. package/.next/server/pages/api/kb/intelligence.js +1 -1
  25. package/.next/server/pages/api/kb/intelligence.js.nft.json +1 -1
  26. package/.next/server/pages/api/kb/reindex.js +1 -1
  27. package/.next/server/pages/api/kb/reindex.js.nft.json +1 -1
  28. package/.next/server/pages/api/kb/upload/complete.js +1 -1
  29. package/.next/server/pages/api/kb/upload/complete.js.nft.json +1 -1
  30. package/.next/server/pages/api/kb/upload.js +1 -1
  31. package/.next/server/pages/api/kb/upload.js.nft.json +1 -1
  32. package/.next/server/pages/api/prompt.js.nft.json +1 -1
  33. package/.next/server/pages/asset-library.html +1 -1
  34. package/.next/server/pages/document-roles.html +1 -1
  35. package/.next/server/pages/documents.html +1 -1
  36. package/.next/server/pages/guide.html +1 -1
  37. package/.next/server/pages/index.html +1 -1
  38. package/.next/server/pages/knowledge/file-detail.html +1 -1
  39. package/.next/server/pages/knowledge/files.html +1 -1
  40. package/.next/server/pages/knowledge/manage.html +1 -1
  41. package/.next/server/pages/knowledge.html +1 -1
  42. package/.next/server/pages/models.html +1 -1
  43. package/.next/server/pages/overview.html +1 -1
  44. package/.next/server/pages/prompt.html +1 -1
  45. package/.next/server/pages/settings.html +1 -1
  46. package/.next/server/pages/system/logs.html +1 -1
  47. package/.next/server/pages-manifest.json +25 -25
  48. package/package.json +1 -1
  49. /package/.next/static/{1t0H6l5LaBfAVlwTNRGy8 → ahCOrDz46kqYaxgG7Ssg9}/_buildManifest.js +0 -0
  50. /package/.next/static/{1t0H6l5LaBfAVlwTNRGy8 → ahCOrDz46kqYaxgG7Ssg9}/_ssgManifest.js +0 -0
@@ -1,4 +1,4 @@
1
- "use strict";exports.id=5547,exports.ids=[5547],exports.modules={1218:(a,b,c)=>{c.d(b,{B2:()=>r,De:()=>I,GK:()=>ac,N2:()=>y,OQ:()=>z,PP:()=>ah,R7:()=>L,ZR:()=>V,d6:()=>S,d7:()=>aj,de:()=>H,hn:()=>u,iG:()=>J,ir:()=>ag,ji:()=>aa,n9:()=>ab,qG:()=>t,rC:()=>$,wj:()=>G});var d=c(73024),e=c(76760),f=c(15751),g=c(44533),h=c(73859),i=c(19898),j=c(91977),k=c(11248),l=c(95734),m=c(18274),n=c(22157),o=c(37047),p=c(71678),q=c(80572);function r(a,b,c){let d={};for(let e of(0,j.Uy)(a,c)){let a=b.find(a=>(0,j.I2)(a,e));a&&(d[e.name]=`${a.content.replace(/\s+/gu," ")}(来源:${a.filePath},角色:${a.roleId||"未标注"})`)}return d}let s=new Map;function t(a){let b=[],c=[],h=new Set;for(let j of a.filter(a=>"table"===a.processingType||"structured_data"===a.processingType||"bill_of_quantities"===a.processingType)){if(h.has(j.filePath))continue;h.add(j.filePath);let a=(0,g.aY)(),k=(0,g.NW)(a),l=e.isAbsolute(j.filePath)?j.filePath:d.existsSync(e.join(k,j.filePath))?e.join(k,j.filePath):e.join(a,j.filePath),m=e.extname(j.filePath).toLowerCase();if(d.existsSync(l)&&[".xlsx",".xls",".csv"].includes(m))try{c.push(...function(a,b){let c=d.statSync(a),e=`${a}:${b.roleId||"table"}`,g=s.get(e);if(g&&g.mtimeMs===c.mtimeMs&&g.size===c.size)return g.tables;let h=function(a,b){let c=f.readFile(a,{cellDates:!0,sheetStubs:!1}),d=[];for(let a of c.SheetNames){let e=c.Sheets[a],g=f.utils.sheet_to_json(e,{header:1,raw:!1,defval:""}).map(a=>a.map(a=>String(a).trim())).filter(a=>a.some(Boolean));if(g.length<2)continue;let h=(0,i.detectSmartTableHeader)(g),j=h.headers,k=g.slice(h.headerIndex+1).map(a=>a.slice(0,j.length)).filter(a=>a.some(Boolean));0!==k.length&&d.push({tableType:b.roleId||"table",sheet:a,headers:j,rows:k,sourceFile:b.filePath,sourceRange:e["!ref"]})}return d}(a,b);return s.size>500&&s.clear(),s.set(e,{mtimeMs:c.mtimeMs,size:c.size,tables:h}),h}(l,j));continue}catch(a){b.push(`${j.filePath}:${a instanceof Error?a.message:String(a)}`)}let n=j.content.split("\n").map(a=>a.trim()).filter(Boolean).filter(a=>a.includes("|")||a.includes(" ")||a.includes(","));if(n.length<2)continue;let o=n[0].includes("|")?"|":n[0].includes(" ")?" ":",",p=n.map(a=>a.split(o).map(a=>a.trim()).filter(Boolean)).filter(a=>a.length>1);p.length<2||c.push({tableType:j.roleId||"table",headers:p[0],rows:p.slice(1),sourceFile:j.filePath,sourceRange:j.sectionTitle})}return b.length>0&&console.warn(`[facts] 工作簿解析失败 ${b.length} 份,已回退文本猜表(保真度下降):${b.slice(0,5).join(";")}`),c}function u(a){let b=[],c=/工程名称|序号|项目编码|项目名称|项目特征|计量\s*单位|工程量|金额|综合单价|合价|人工费|机械费|暂估价|分部小计|本页|续表|合计|汇总/u;for(let d of a){let a=(0,i.locateTableColumns)(d.headers);if((a.name??-1)<0&&(a.feature??-1)<0)continue;let e=(a.seq??-1)>=0;for(let f of d.rows){let g=e?(f[a.seq??0]||"").trim():"",h=(a.name??-1)>=0?(f[a.name??0]||"").trim():"",i=(a.feature??-1)>=0?(f[a.feature??0]||"").trim():"",j=(a.unit??-1)>=0?(f[a.unit??0]||"").trim():"",k=(a.quantity??-1)>=0?(f[a.quantity??0]||"").trim():"";if(e&&!/^\d+$/.test(g)||!h||!i||c.test(`${h}${i}`))continue;let l=k&&j?`${k}${j}`:k||j;b.push({key:`清单条目:${h}`,fieldName:"清单条目",fieldId:"bill_item",value:`${i.slice(0,160)}${l?`|工程量:${l}`:""}`,sourceFile:d.sourceFile,roleId:"bill_of_quantities",processingType:"bill_of_quantities",confidence:.92,sourceRef:{filePath:d.sourceFile,roleId:"bill_of_quantities",processingType:"bill_of_quantities",sectionTitle:d.sheet}})}}return b}let v=["混凝土强度等级","砂浆强度等级","抗渗等级","钢筋牌号","钢筋级别","砖规格","砌块强度等级","混凝土种类","砂浆种类","垫层材料种类","找平层厚度","保护层厚度","防水层厚度","卷材厚度","镀锌层厚度","保温层厚度","垫层厚度","找坡层厚度","防水等级","抗裂等级","耐火等级","强度等级"],w=/C\d{2,3}|M\d+(?:\.\d+)?|P\d{1,2}|HRB\d{3,4}|HPB\d{3}|Q\d{3}|MU\d+|A\d+(?:\.\d+)?|B\d+(?:\.\d+)?|\d+(?:\.\d+)?\s*mm/u;function x(a){return/^C\d{2,3}$/.test(a)?"混凝土强度等级":/^M\d/.test(a)?"砂浆强度等级":/^P\d/.test(a)?"抗渗等级":/mm$/.test(a)?"厚度规格":/^HRB/.test(a)||/^HPB/.test(a)?"钢筋牌号":/^MU/.test(a)?"砌块强度等级":"规格"}function y(a,b,c){let d=(0,j.Uy)(b,c).filter(a=>a.required);return 0===d.length?a.filter(a=>a.confidence>=.75&&(0,n.lG)(a.value).trim().length>=2).length<12:d.filter(b=>a.some(a=>(function(a,b){let c=(0,n.lG)(a.value).trim();if(!c||c.length<2||c.length>220&&a.confidence<.8)return!1;let d=`${a.fieldId||""} ${a.fieldName||""} ${a.key}`.toLowerCase();return!!(d.includes(b.id.toLowerCase())||d.includes(b.name.toLowerCase()))&&("project_basic_fact"===a.roleId||a.roleId?.startsWith("role-")||a.sourceRef?.filePath?a.confidence>=.55:a.confidence>=.75)})(a,b))).length/d.length<.9}async function z(a,b,c,d,e,f){let g=[{type:"fact_extraction",roleId:"llm-json",status:"skipped",message:"LLM JSON 抽取未启用或无可用模型"}],h=Math.max(12e3,Math.floor((0,q.z)().factExtractionMaxChars??45e3)),i=Math.max(800,Math.floor(h/Math.max(8,Math.floor((0,q.z)().factExtractionMaxItems??48)))),k=[...a].sort((a,b)=>b.score-a.score),m=(0,j.Uy)(c,d),o=m.map(a=>`- id=${a.id} name=${a.name} type=auto required=${a.required} sourceRoleIds=${a.sourceRoleIds.join(",")||"不限"} hint=${a.extractionHint||"无"}`).join("\n"),p=b||"你是文档事实抽取器。",r=[],s=new Map;if(0===k.length)return{facts:[],stages:g};let t=[],u=[],v=0;for(let a of k){let b=G((0,n.lG)(a.content)).replace(/\s+/gu," ").slice(0,i),c=b.length+a.filePath.length+64;u.length>0&&v+c>h&&(t.push(u),u=[],v=0),u.push({item:a,content:b}),v+=c}u.length>0&&t.push(u);let w=0;for(let a of t){(0,n.Te)(e);let b=a.map(({item:a,content:b})=>{w+=1;let c=`E${w}`;return s.set(c,a),`[${c}] 文件:${a.filePath}
1
+ "use strict";exports.id=5784,exports.ids=[5784],exports.modules={1218:(a,b,c)=>{c.d(b,{B2:()=>r,De:()=>I,GK:()=>ac,N2:()=>y,OQ:()=>z,PP:()=>ah,R7:()=>L,ZR:()=>V,d6:()=>S,d7:()=>aj,de:()=>H,hn:()=>u,iG:()=>J,ir:()=>ag,ji:()=>aa,n9:()=>ab,qG:()=>t,rC:()=>$,wj:()=>G});var d=c(73024),e=c(76760),f=c(15751),g=c(44533),h=c(73859),i=c(19898),j=c(91977),k=c(11248),l=c(95734),m=c(18274),n=c(22157),o=c(37047),p=c(71678),q=c(80572);function r(a,b,c){let d={};for(let e of(0,j.Uy)(a,c)){let a=b.find(a=>(0,j.I2)(a,e));a&&(d[e.name]=`${a.content.replace(/\s+/gu," ")}(来源:${a.filePath},角色:${a.roleId||"未标注"})`)}return d}let s=new Map;function t(a){let b=[],c=[],h=new Set;for(let j of a.filter(a=>"table"===a.processingType||"structured_data"===a.processingType||"bill_of_quantities"===a.processingType)){if(h.has(j.filePath))continue;h.add(j.filePath);let a=(0,g.aY)(),k=(0,g.NW)(a),l=e.isAbsolute(j.filePath)?j.filePath:d.existsSync(e.join(k,j.filePath))?e.join(k,j.filePath):e.join(a,j.filePath),m=e.extname(j.filePath).toLowerCase();if(d.existsSync(l)&&[".xlsx",".xls",".csv"].includes(m))try{c.push(...function(a,b){let c=d.statSync(a),e=`${a}:${b.roleId||"table"}`,g=s.get(e);if(g&&g.mtimeMs===c.mtimeMs&&g.size===c.size)return g.tables;let h=function(a,b){let c=f.readFile(a,{cellDates:!0,sheetStubs:!1}),d=[];for(let a of c.SheetNames){let e=c.Sheets[a],g=f.utils.sheet_to_json(e,{header:1,raw:!1,defval:""}).map(a=>a.map(a=>String(a).trim())).filter(a=>a.some(Boolean));if(g.length<2)continue;let h=(0,i.detectSmartTableHeader)(g),j=h.headers,k=g.slice(h.headerIndex+1).map(a=>a.slice(0,j.length)).filter(a=>a.some(Boolean));0!==k.length&&d.push({tableType:b.roleId||"table",sheet:a,headers:j,rows:k,sourceFile:b.filePath,sourceRange:e["!ref"]})}return d}(a,b);return s.size>500&&s.clear(),s.set(e,{mtimeMs:c.mtimeMs,size:c.size,tables:h}),h}(l,j));continue}catch(a){b.push(`${j.filePath}:${a instanceof Error?a.message:String(a)}`)}let n=j.content.split("\n").map(a=>a.trim()).filter(Boolean).filter(a=>a.includes("|")||a.includes(" ")||a.includes(","));if(n.length<2)continue;let o=n[0].includes("|")?"|":n[0].includes(" ")?" ":",",p=n.map(a=>a.split(o).map(a=>a.trim()).filter(Boolean)).filter(a=>a.length>1);p.length<2||c.push({tableType:j.roleId||"table",headers:p[0],rows:p.slice(1),sourceFile:j.filePath,sourceRange:j.sectionTitle})}return b.length>0&&console.warn(`[facts] 工作簿解析失败 ${b.length} 份,已回退文本猜表(保真度下降):${b.slice(0,5).join(";")}`),c}function u(a){let b=[],c=/工程名称|序号|项目编码|项目名称|项目特征|计量\s*单位|工程量|金额|综合单价|合价|人工费|机械费|暂估价|分部小计|本页|续表|合计|汇总/u;for(let d of a){let a=(0,i.locateTableColumns)(d.headers);if((a.name??-1)<0&&(a.feature??-1)<0)continue;let e=(a.seq??-1)>=0;for(let f of d.rows){let g=e?(f[a.seq??0]||"").trim():"",h=(a.name??-1)>=0?(f[a.name??0]||"").trim():"",i=(a.feature??-1)>=0?(f[a.feature??0]||"").trim():"",j=(a.unit??-1)>=0?(f[a.unit??0]||"").trim():"",k=(a.quantity??-1)>=0?(f[a.quantity??0]||"").trim():"";if(e&&!/^\d+$/.test(g)||!h||!i||c.test(`${h}${i}`))continue;let l=k&&j?`${k}${j}`:k||j;b.push({key:`清单条目:${h}`,fieldName:"清单条目",fieldId:"bill_item",value:`${i.slice(0,160)}${l?`|工程量:${l}`:""}`,sourceFile:d.sourceFile,roleId:"bill_of_quantities",processingType:"bill_of_quantities",confidence:.92,sourceRef:{filePath:d.sourceFile,roleId:"bill_of_quantities",processingType:"bill_of_quantities",sectionTitle:d.sheet}})}}return b}let v=["混凝土强度等级","砂浆强度等级","抗渗等级","钢筋牌号","钢筋级别","砖规格","砌块强度等级","混凝土种类","砂浆种类","垫层材料种类","找平层厚度","保护层厚度","防水层厚度","卷材厚度","镀锌层厚度","保温层厚度","垫层厚度","找坡层厚度","防水等级","抗裂等级","耐火等级","强度等级"],w=/C\d{2,3}|M\d+(?:\.\d+)?|P\d{1,2}|HRB\d{3,4}|HPB\d{3}|Q\d{3}|MU\d+|A\d+(?:\.\d+)?|B\d+(?:\.\d+)?|\d+(?:\.\d+)?\s*mm/u;function x(a){return/^C\d{2,3}$/.test(a)?"混凝土强度等级":/^M\d/.test(a)?"砂浆强度等级":/^P\d/.test(a)?"抗渗等级":/mm$/.test(a)?"厚度规格":/^HRB/.test(a)||/^HPB/.test(a)?"钢筋牌号":/^MU/.test(a)?"砌块强度等级":"规格"}function y(a,b,c){let d=(0,j.Uy)(b,c).filter(a=>a.required);return 0===d.length?a.filter(a=>a.confidence>=.75&&(0,n.lG)(a.value).trim().length>=2).length<12:d.filter(b=>a.some(a=>(function(a,b){let c=(0,n.lG)(a.value).trim();if(!c||c.length<2||c.length>220&&a.confidence<.8)return!1;let d=`${a.fieldId||""} ${a.fieldName||""} ${a.key}`.toLowerCase();return!!(d.includes(b.id.toLowerCase())||d.includes(b.name.toLowerCase()))&&("project_basic_fact"===a.roleId||a.roleId?.startsWith("role-")||a.sourceRef?.filePath?a.confidence>=.55:a.confidence>=.75)})(a,b))).length/d.length<.9}async function z(a,b,c,d,e,f){let g=[{type:"fact_extraction",roleId:"llm-json",status:"skipped",message:"LLM JSON 抽取未启用或无可用模型"}],h=Math.max(12e3,Math.floor((0,q.z)().factExtractionMaxChars??45e3)),i=Math.max(800,Math.floor(h/Math.max(8,Math.floor((0,q.z)().factExtractionMaxItems??48)))),k=[...a].sort((a,b)=>b.score-a.score),m=(0,j.Uy)(c,d),o=m.map(a=>`- id=${a.id} name=${a.name} type=auto required=${a.required} sourceRoleIds=${a.sourceRoleIds.join(",")||"不限"} hint=${a.extractionHint||"无"}`).join("\n"),p=b||"你是文档事实抽取器。",r=[],s=new Map;if(0===k.length)return{facts:[],stages:g};let t=[],u=[],v=0;for(let a of k){let b=G((0,n.lG)(a.content)).replace(/\s+/gu," ").slice(0,i),c=b.length+a.filePath.length+64;u.length>0&&v+c>h&&(t.push(u),u=[],v=0),u.push({item:a,content:b}),v+=c}u.length>0&&t.push(u);let w=0;for(let a of t){(0,n.Te)(e);let b=a.map(({item:a,content:b})=>{w+=1;let c=`E${w}`;return s.set(c,a),`[${c}] 文件:${a.filePath}
2
2
  角色:${a.roleId||""}
3
3
  处理:${a.processingType||""}
4
4
  内容:${b}`}).join("\n\n---\n\n");if(!b.trim())continue;let c=await (0,l.bb)(p,`请严格按下面的动态事实 schema 从资料中抽取事实。只抽取资料明确支持的内容;如果字段限定 sourceRoleIds,必须优先来自对应文件角色;事实取舍和冲突处理遵循规范包字段说明、文件角色和提示词角色配置。
@@ -53,7 +53,7 @@ ${b.styleRequirements.map(a=>`- ${a}`).join("\n")}`]:[]].join("\n"),i=[...new Se
53
53
  缺表题表格原文(只允许在各表正上方补一行表题;严禁修改表头、数据行、表格列数与其余正文,严禁删除表格):
54
54
  ${g.map(a=>a.blockText).join("\n\n")}
55
55
  以局部 patch 方式输出:每处 patch 只包含新增表题行与必要定位上下文,不得重写其他内容。`,m=await ab({originalContent:e.content,repairRound:"table-caption-repair",diagnostics:a.generationDiagnostics,beforeMetrics:[g.length],shouldRollback:(a,b)=>b[0]>=g.length,apply:async()=>{let b=await a.withProgressHeartbeat(()=>(0,f.l8)({template:a.template,chapter:{id:e.id,title:e.title,content:e.content,evidence:e.evidence,missingFacts:e.missingFacts,sections:e.sections},issues:[`正文存在 ${g.length} 张缺少表题的表格`],promptTexts:l,requirement:a.requirement,forbidDrawingImages:!1,diagnostics:a.generationDiagnostics,signal:a.signal,patchGuard:(0,f.XG)("table-caption-repair",a.generationDiagnostics)}));return b.content&&b.content!==e.content?b.content:e.content},recheck:a=>[b(a)]}),n=m.content;m.rolledBack||n===e.content||(a.finalChapterDrafts[c]={...e,content:h?(0,k.w_)(n,h):n},d+=1);let o=m.rolledBack?g.length:m.afterMetrics[0],p=(0,q.X5)({type:"llm_review",roleId:i,status:m.rolledBack||o>0?"failed":"success",message:m.rolledBack?`表格题名补全已回滚:${e.title}(补名后无题表数未下降,保留修复前正文)`:o>0?`表格题名补全未完全生效:${e.title}(残留 ${o} 张无题表由终检复核)`:`表格题名补全完成:${e.title}`,details:[`无题表 ${g.length} 张 → 残留 ${o} 张`]},{subtitle:"表格题名补全"});(0,q.fx)(a.progressStages,p),(0,q.fx)(a.finalGateRepairStages,p),a.emitProgress(a.finalChapterDrafts,a.progressStages)}(c>0||d>0)&&(a.finalMarkdown=a.rebuildFinalMarkdown(),await a.recomputeFinalValidationBundle())}async function eh(a){let b=new Map;for(let c of a.finalChapterDrafts){let a=(0,bX.qE)(c.content);a.length>0&&b.set(c.id,a)}let c=[...b.keys()].reduce((b,c)=>{let d=a.finalChapterDrafts.find(a=>a.id===c);return b+(d?(0,bX.OV)(d.content):0)},0);if(0===b.size){let b=(0,q.X5)({type:"validation",roleId:"table-arithmetic-repair",status:"success",message:"表内算术自洽核对通过:全部含合计标记的表格分项和=合计"},{subtitle:"表内算术自洽"});(0,q.fx)(a.progressStages,b),(0,q.fx)(a.finalGateRepairStages,b),a.emitProgress(a.finalChapterDrafts,a.progressStages);return}let d=0,e=0;for(let[c,g]of b){let b=a.finalChapterDrafts.findIndex(a=>a.id===c);if(b<0)continue;let h=a.finalChapterDrafts[b],i=h.content,j=(0,bX.OV)(i),k=0,l=!1,m=!1,n=[j];for(;j>0&&k<2;){k+=1;let d=(0,bX.qE)(i),e=(0,q.X5)({type:"llm_review",roleId:`agent-table-arithmetic-${c}`,status:"running",message:`表格算术不自洽 ${d.length} 张表,第 ${k} 轮定向修复中:${h.title}`,details:d.map(a=>a.message)},{subtitle:"表内算术自洽"});(0,q.fx)(a.progressStages,e),(0,q.fx)(a.finalGateRepairStages,e),a.emitProgress(a.finalChapterDrafts,a.progressStages);let g=["【表格算术自洽修复】下列表格的「合计」(合计行/合计列)与分项之和对不上,请逐表修正表内数值:",...k>1?[`本轮为第 ${k} 轮(最多 2 轮):上一轮修复后仍有残留,必须让合计与分项之和完全相等。`]:[],"1. 以分项为准重算合计:合计 = 该行/该列已列出的分项之和(单位一致);","2. 若分项数值本身与资料/清单/上下文矛盾,按权威值修正分项,使分项和 = 合计;","3. 台账类表(含「其他/其余」差额项的)保留显性「其他」项并给出数值,使合计 = 全部分项(含其他)之和;","4. 只允许修正表格内的数值(合计格/分项格);严禁编造无来源数值、严禁删除表格、严禁改动表格外正文。","以局部 patch 方式输出:每个 patch 只包含表格区域的数值修正与必要定位上下文。",d.map(a=>`- ${a.message}`).join("\n")].join("\n"),o=await ab({originalContent:i,repairRound:"table-arithmetic-repair",diagnostics:a.generationDiagnostics,beforeMetrics:[j],shouldRollback:(a,b)=>b[0]>=a[0],apply:async()=>{let b=await a.withProgressHeartbeat(()=>(0,f.l8)({template:a.template,chapter:{id:h.id,title:h.title,content:i,evidence:h.evidence,missingFacts:h.missingFacts,sections:h.sections},issues:d.map(a=>a.message),promptTexts:g,requirement:a.requirement,forbidDrawingImages:!1,bidComposition:a.bidComposition,diagnostics:a.generationDiagnostics,signal:a.signal,patchGuard:(0,f.XG)("table-arithmetic-repair",a.generationDiagnostics)}));return b.content&&b.content!==i?b.content:i},recheck:a=>[(0,bX.OV)(a)]});o.rolledBack||o.content===i||(i=o.content,a.finalChapterDrafts[b]={...h,content:i},l=!0),o.rolledBack&&(m=!0);let p=(0,bX.OV)(i);if(n.push(p),0===p||p>=j||k>=2)break;j=p}l&&(d+=1);let o=(0,bX.OV)(i);e+=o;let p=(0,q.X5)({type:"llm_review",roleId:`agent-table-arithmetic-${c}`,status:0===o?"success":"failed",message:0===o?`表内算术自洽修复完成:${h.title}(残留轨迹 ${n.join("→")})`:l?`表内算术自洽修复部分生效:${h.title}(不自洽处数残留轨迹 ${n.join("→")},已执行 ${k} 轮定向修复(每章最多 2 轮);残留由终检照常复核)`:m?`表内算术自洽修复已回滚:${h.title}(修复后不自洽处数未下降,保留修复前正文;残留 ${o} 处由终检照常复核)`:`表内算术自洽修复未生效:${h.title}(模型未产生有效修改;残留 ${o} 处由终检照常复核)`,details:[...g.map(a=>a.message),o>0?`已执行 ${k} 轮定向修复,残留由终检照常复核`:""]},{subtitle:"表内算术自洽"});(0,q.fx)(a.progressStages,p),(0,q.fx)(a.finalGateRepairStages,p),a.emitProgress(a.finalChapterDrafts,a.progressStages)}d>0&&(a.finalMarkdown=a.rebuildFinalMarkdown(),await a.recomputeFinalValidationBundle()),a.generationDiagnostics.llm.lastInfo=`表内算术自洽修复:${c} 处不自洽,${d} 章完成定向修复,残留 ${e} 处(每章最多 2 轮收敛修复,残留由终检照常复核)`}async function ei(a){let b=function(a){let b=0,c=0,d=[];return a.forEach((a,e)=>{if(!a.content?.trim())return;let f=0;for(let b=0;b<4;b+=1){let b=(0,R.rz)(a);if(0===b.length)break;let c=new Set(b.map(a=>a.line));for(let g of(a.content=a.content.split("\n").filter((a,b)=>!c.has(b)).join("\n").replace(/\n{3,}/gu,"\n\n"),f+=b.length,b))d.push(`第 ${e+1} 章移除空壳标题「${g.rawTitle}」`)}if(0===f)return;b+=f;let g=(0,bh.PA)(a.content,{chapterNumber:e+1});a.content=g.markdown,g.fixedCount>0&&(c+=1)}),{removedCount:b,renumberedChapters:c,details:d}}(a.finalChapterDrafts),c=(0,q.X5)({type:"validation",roleId:"empty-section-sweep",status:"success",message:b.removedCount>0?`空节清扫完成:移除无依据空壳小节标题 ${b.removedCount} 处(${b.renumberedChapters} 章重排编号)`:"空节清扫核对通过:无无规划归属的空壳小节",details:b.details.length>0?b.details:void 0},{subtitle:"空节清扫"});(0,q.fx)(a.progressStages,c),(0,q.fx)(a.finalGateRepairStages,c),b.removedCount>0&&(a.finalMarkdown=a.rebuildFinalMarkdown(),await a.recomputeFinalValidationBundle()),a.emitProgress(a.finalChapterDrafts,a.progressStages)}async function ej(a){let b=dg(a.finalChapterDrafts),c=function(a){let b=0,c=[];return a.forEach((a,d)=>{if(!a.content?.trim())return;let f=b=>{let c=String(b||"").trim();return!c||(0,bi.cq)(c)||/^附录/u.test(c)||c6.gG.test(a.title)&&e.V.test(c)},g=(a.sections||[]).filter(a=>!f(a));if(0===g.length||(0,O.r4)(a.content).filter(a=>!f(a)).length<=g.length)return;let h=g.map(a=>(0,R.mJ)(a)),i=new Set(h),j=a.content.split("\n"),k=[];j.forEach((a,b)=>{if(!/^\s*###\s+\S/u.test(a))return;let c=(0,e.Jb)(a),d=c?(0,R.mJ)(c):"";d&&k.push({line:b,title:c,normalized:d})});let l=-1,m=0;for(let a of k){if(i.has(a.normalized)){l=a.line;continue}!(f(a.title)||h.some(b=>(0,e.ty)(a.normalized,b))||/(?:((?:\d+|[一二三四五六七八九十]+)))+$/u.test(a.title))&&(l<0||(j[a.line]=`#### ${a.title}`,m+=1,c.push(`第 ${d+1} 章「${a.title}」降为 H4(并入上方规划小节主题块)`)))}0!==m&&(b+=m,a.content=(0,bh.PA)(j.join("\n"),{chapterNumber:d+1}).markdown)}),{demotedCount:b,details:c}}(a.finalChapterDrafts),d=0;a.finalChapterDrafts.forEach((a,b)=>{if(!a.content?.trim())return;let c=(0,bh.PA)(a.content,{chapterNumber:b+1});c.fixedCount>0&&(a.content=c.markdown,d+=1)});let g=b.mergedCount+c.demotedCount,h=g>0||d>0;(0,f.kD)(a.generationDiagnostics,g+d);let i=[...b.details,...c.details],j=(0,q.X5)({type:"validation",roleId:"section-alignment-sweep",status:"success",message:h?`小节结构对齐收口:近名对齐/合并 ${b.mergedCount} 处、规划外小节降级 ${c.demotedCount} 处、编号重放 ${d} 章`:"小节结构对齐核对通过:成稿小节与规划主题块一一对应",details:i.length>0?i.slice(0,6):void 0},{subtitle:"结构对齐收口"});(0,q.fx)(a.progressStages,j),(0,q.fx)(a.finalGateRepairStages,j),h&&(a.finalMarkdown=a.rebuildFinalMarkdown(),await a.recomputeFinalValidationBundle()),a.emitProgress(a.finalChapterDrafts,a.progressStages)}async function ek(a){let b=cE(a.finalChapterDrafts),c=b.length>0?cF(a.finalChapterDrafts,b):{deletedCount:0,deletedSentences:[],remaining:b},d=0;for(let b of a.finalChapterDrafts){if(!b.content?.trim())continue;let a=(0,o.Vc)(b.content);a.removedCount>0&&(b.content=a.markdown,d+=a.removedCount)}let e=c.deletedCount+d,f=(0,q.X5)({type:"validation",roleId:"templating-sweep",status:"success",message:e>0?`模板化链尾清理:零信息前缀句删除 ${c.deletedCount} 处、重复段落去重 ${d} 处`:"模板化链尾核对通过:无零信息前缀句与重复段落残留",details:c.deletedSentences.length>0?c.deletedSentences.slice(0,3).map(a=>`前缀句删除:「${a.slice(0,40)}」`):void 0},{subtitle:"模板化清理收口"});(0,q.fx)(a.progressStages,f),(0,q.fx)(a.finalGateRepairStages,f),e>0&&(a.finalMarkdown=a.rebuildFinalMarkdown(),await a.recomputeFinalValidationBundle()),a.emitProgress(a.finalChapterDrafts,a.progressStages)}async function el(a){let b=function(a){let b=0,c=[];return a.forEach((a,d)=>{if(!a.content?.trim())return;let f=0;for(let g=0;g<6;g+=1){let g=a.sections||[],h=g.map((a,b)=>({section:String(a||"").trim(),index:b})).filter(a=>a.section),i=new Map;for(let a of h){let b=(0,R.Sn)(a.section);b&&i.set(b,[...i.get(b)||[],a])}let j=[...i.values()].find(a=>a.length>=2);if(!j)break;let k=a.content.split("\n"),l=[];k.forEach((a,b)=>{if(!/^\s*###\s+\S/u.test(a))return;let c=(0,e.Jb)(a),d=c?(0,R.mJ)(c):"";d&&l.push({line:b,title:c,normalized:d})});let m=a=>{let b=(0,R.mJ)(a);return l.find(a=>a.normalized===b)||l.find(a=>(0,e.ty)(a.normalized,b))},n=j.flatMap(a=>{let b=m(a.section);return b?[{section:a.section,index:a.index,heading:b}]:[]}),o=n.filter((a,b)=>n.findIndex(b=>b.heading.line===a.heading.line)===b),p=new Map;for(let a of n)p.set(a.heading.line,[...p.get(a.heading.line)||[],a]);let q=[...p.values()].find(a=>a.length>1);if(q){let e=q.find(a=>a.heading.normalized===(0,R.mJ)(a.section))||q[0],h=q.filter(a=>a!==e).map(a=>a.index);a.sections=g.filter((a,b)=>!h.includes(b)),b+=1,f+=1,c.push(`「${q.filter(a=>a!==e).map(a=>a.section).join("、")}」与「${e.section}」同节对齐去重(第 ${d+1} 章)`);continue}if(o.length<2)break;o.sort((a,b)=>a.heading.line-b.heading.line);let r=o[0],s=o[1],t=de(k,r.heading.line),u=de(k,s.heading.line),v=k.slice(r.heading.line+1,t);for(;v.length>0&&""===v[v.length-1].trim();)v.pop();let w=k.slice(s.heading.line+1,u);for(;w.length>0&&""===w[w.length-1].trim();)w.pop();for(;w.length>0&&""===w[0].trim();)w.shift();let x=w.length>0?[...v,"",...w,""]:[...v,""],y=r.heading.normalized===(0,R.mJ)(r.section)?k[r.heading.line]:`${df(k[r.heading.line])}${r.section}`;a.content=[...k.slice(0,r.heading.line),y,...x,...k.slice(t,s.heading.line),...k.slice(u)].join("\n").replace(/\n{3,}/gu,"\n\n"),a.sections=g.filter((a,b)=>b!==s.index),b+=1,f+=1,c.push(`「${s.section}」并入「${r.section}」(第 ${d+1} 章)`)}if(f>0){let b=(0,bh.PA)(a.content,{chapterNumber:d+1});a.content=b.markdown}}),{mergedCount:b,details:c}}(a.finalChapterDrafts),c=(0,q.X5)({type:"validation",roleId:"duplicate-theme-merge",status:"success",message:b.mergedCount>0?`重复主题小节合并:${b.mergedCount} 处(保留首现小节,后续标题行摘除、正文并入,规划数组同步)`:"重复主题小节核对通过:同桶小节无并存",details:b.details.length>0?b.details.slice(0,6):void 0},{subtitle:"重复主题合并"});(0,q.fx)(a.progressStages,c),(0,q.fx)(a.finalGateRepairStages,c),b.mergedCount>0&&(a.finalMarkdown=a.rebuildFinalMarkdown(),await a.recomputeFinalValidationBundle()),a.emitProgress(a.finalChapterDrafts,a.progressStages)}async function em(a){let b=[],c=(0,Q._G)(a.finalMarkdown),d=0;c!==a.finalMarkdown&&(a.finalMarkdown=c,d+=1,b.push("附表区内部话术清洗:内部推导口径已中性化(唯一口径/经验工效区间/清单批注等)"));let e=(0,cr.av)(a.finalMarkdown);e.markdown!==a.finalMarkdown&&(a.finalMarkdown=e.markdown,d+=e.splitCount,b.push(`超长段落切分:消除 >380 字符段落 ${e.splitCount} 处`));let g=(0,o._D)(a.finalMarkdown);g.fixedCount>0&&(a.finalMarkdown=g.markdown,d+=g.fixedCount,b.push(...g.details)),(0,f.kD)(a.generationDiagnostics,d);let h=b.length>0,i=(0,q.X5)({type:"validation",roleId:"delivery-structure-closure",status:"success",message:h?`交付结构收口:${b.join(";")}`:"交付结构收口核对通过:目录与正文一致、无超长段落",details:h?b:void 0},{subtitle:"交付结构收口"});(0,q.fx)(a.progressStages,i),(0,q.fx)(a.finalGateRepairStages,i),h&&await a.recomputeFinalValidationBundle(),a.emitProgress(a.finalChapterDrafts,a.progressStages)}async function en(a){let b=(0,bi.yp)(a.finalMarkdown),c=(0,q.X5)({type:"validation",roleId:"sentence-pattern-sweep",status:"success",message:b.removedCount>0?`句模复读链尾收口:宣告引导句确定性剥离 ${b.removedCount} 处(列表引导语删除无损,列表内容保留)`:"句模复读链尾核对通过:无宣告引导句残留",details:b.removedSentences.length>0?b.removedSentences.slice(0,4).map(a=>`引导句剥离:「${a.slice(0,40)}」`):void 0},{subtitle:"模板化清理收口"});(0,q.fx)(a.progressStages,c),(0,q.fx)(a.finalGateRepairStages,c),b.removedCount>0&&(a.finalMarkdown=b.markdown,await a.recomputeFinalValidationBundle()),a.emitProgress(a.finalChapterDrafts,a.progressStages)}async function eo(a){let b=function(a){let b=a.split("\n"),c=[],d="(文首)";b.forEach((a,b)=>{let e=a.trim();/^##\s+/u.test(e)&&(d=e),c[b]=d});let e=[],f=[],g=new Map,h=0,i=0;for(let b of bP(a)){let a=b.occurrences;if(a.length<2)continue;let d=1===new Set(a.map(a=>c[a.lineIndex])).size,j=bi.Lw.test(a[0].raw);if(!d&&!j){f.push(a[0].raw);continue}for(let b of a.slice(1)){let a=g.get(b.lineIndex)||[];a.push({start:b.start,end:b.end}),g.set(b.lineIndex,a),e.push(b.raw),d?h+=1:i+=1}}if(0===e.length)return{markdown:a,removedCount:0,removedSentences:e,keptSentences:f,sameChapterRemoved:h,generalizedRemoved:i};for(let[a,c]of g){let d=b[a];for(let a of c.sort((a,b)=>b.start-a.start)){let b=a.start;for(;b>0&&/\s/u.test(d[b-1]);)b-=1;let c=a.end;for(;c<d.length&&/\s/u.test(d[c]);)c+=1;/[。;;]/u.test(d[c]||"")&&(c+=1),d=d.slice(0,b)+d.slice(c)}b[a]=""===d.trim()?"":d.replace(/^[ \t]+/u,"").replace(/[ \t]+$/u,"")}return{markdown:b.join("\n").replace(/\n{4,}/gu,"\n\n\n"),removedCount:e.length,removedSentences:e,keptSentences:f,sameChapterRemoved:h,generalizedRemoved:i}}(a.finalMarkdown),c=b.removedSentences.slice(0,3).map(a=>`复读坍塌:「${a.slice(0,40)}」`);b.keptSentences.length>0&&c.push(`跨章业务复读保留 ${b.keptSentences.length} 种(合理重申不坍塌)`);let d=(0,q.X5)({type:"validation",roleId:"duplicate-sentence-collapse",status:"success",message:b.removedCount>0?`句级复读坍塌:完全重复句保首次删后续 ${b.removedCount} 处(同章复读 ${b.sameChapterRemoved} 处、跨章泛化归口复读 ${b.generalizedRemoved} 处)`:"句级复读核对通过:无完全重复句残留",details:c.length>0?c:void 0},{subtitle:"模板化清理收口"});(0,q.fx)(a.progressStages,d),(0,q.fx)(a.finalGateRepairStages,d),b.removedCount>0&&(a.finalMarkdown=b.markdown,await a.recomputeFinalValidationBundle()),a.emitProgress(a.finalChapterDrafts,a.progressStages)}async function ep(a){let b=function(a){let b,c=a.split("\n"),d=[];if(c.forEach((a,e)=>{let f=a.trim();/^##\s+/u.test(f)&&(b&&(b.endLine=e,d.push(b)),b={startLine:e,endLine:c.length,title:f.replace(/^#+\s*/u,"")})}),b&&d.push(b),0===d.length)return{markdown:a,prefixRemoved:0,prefixSentences:[],paragraphRemoved:0,targetCount:0};let e=d.map((a,b)=>({id:`md-chapter-${b}`,title:a.title,content:c.slice(a.startLine,a.endLine).join("\n"),evidence:[],missingFacts:[]})),f=cE(e),g=f.length>0?cF(e,f):{deletedCount:0,deletedSentences:[],remaining:f},h=0;for(let a of e){if(!a.content?.trim())continue;let b=(0,o.Vc)(a.content);b.removedCount>0&&(a.content=b.markdown,h+=b.removedCount)}if(0===g.deletedCount&&0===h)return{markdown:a,prefixRemoved:0,prefixSentences:[],paragraphRemoved:0,targetCount:f.length};let i=[...c];for(let a=d.length-1;a>=0;a-=1){let b=d[a];i.splice(b.startLine,b.endLine-b.startLine,...e[a].content.split("\n"))}return{markdown:i.join("\n"),prefixRemoved:g.deletedCount,prefixSentences:g.deletedSentences,paragraphRemoved:h,targetCount:f.length}}(a.finalMarkdown),c=b.prefixRemoved+b.paragraphRemoved,d=(0,q.X5)({type:"validation",roleId:"templating-tail-replay",status:"success",message:c>0?`模板化链尾重放(markdown):零信息前缀句删除 ${b.prefixRemoved} 处、重复段落去重 ${b.paragraphRemoved} 处`:"模板化链尾重放核对通过:无零信息前缀句与重复段落残留",details:b.prefixSentences.length>0?b.prefixSentences.slice(0,3).map(a=>`前缀句删除:「${a.slice(0,40)}」`):void 0},{subtitle:"模板化清理收口"});(0,q.fx)(a.progressStages,d),(0,q.fx)(a.finalGateRepairStages,d),c>0&&(a.finalMarkdown=b.markdown,await a.recomputeFinalValidationBundle()),a.emitProgress(a.finalChapterDrafts,a.progressStages)}function eq(a){return Math.max(0,Math.min(100,Math.round(a)))}async function er(a){let b=await cC(a),c=a.reduce((a,b)=>a+(b.content.match(/本小节围绕|交底覆盖率按100%|24小时内形成整改责任|按施工准备→过程实施→检查验收→问题整改→资料归档的闭环组织|按作业条件确认→技术交底→过程实施|依据本项目已确认资料中的项目边界/gu)||[]).length,0),d=await (0,bC.Bt)(a.map(a=>a.content).join("\n")),e=400*Math.max(0,d.ratio-.1);return{score:eq(100-15*c-25*b.filter(a=>"error"===a.level).length-e),detail:`模板化空话命中 ${c} 处,套话句占比 ${(100*d.ratio).toFixed(1)}%(docx 达标线 ≤10%),废话段问题 ${b.length} 项`}}async function es(a,b="",c={}){let d=function(a){let b=a.map(a=>`${a.title} ${(a.sections||[]).join(" ")} ${a.content}`).filter(a=>bF(a).reduce((a,b)=>a+b.length,0)>=200).join("\n"),c=[{label:"工程概况",pattern:/工程概况|项目概况|基本概况/u},{label:"主要施工内容",pattern:/主要施工内容/u},{label:"重难点分析",pattern:/重点.{0,4}难点/u},{label:"施工部署",pattern:/施工部署|总体部署|流水/u},{label:"进度计划",pattern:/进度计划|工期保障|工期计划/u},{label:"质量保证",pattern:/质量保证|质量管理|质量控制/u},{label:"安全文明",pattern:/安全.{0,8}(?:管理|措施|文明)|文明施工/u},{label:"资源配置",pattern:/劳动力|机械设备|材料.{0,4}计划|资源配置/u},{label:"绿色环保",pattern:/绿色施工|扬尘|噪声|环保/u},{label:"应急管理",pattern:/应急/u}],d=c.filter(a=>a.pattern.test(b)),e=eq(d.length/c.length*100),f=c.filter(a=>!a.pattern.test(b)).map(a=>a.label);return{score:e,detail:`覆盖 ${d.length}/${c.length} 个核心结构组${f.length?`;缺失:${f.join("、")}`:""}`}}(a),e=function(a){let b=a.map(a=>a.content).join("\n"),c=bG(b,cs.s2),d=bG(b,/工程量|材料|设备|范围|流程|验收|检测|复试|调试|隐蔽|检验批|资料|记录|系统|部位|接口|规格|标准/gu),e=Math.max(1,b.length),f=c.size/(e/1e3);return{score:eq(Math.min(100,22*f+d.size/18*15)),detail:`量化参数 ${c.size} 项(每千字 ${f.toFixed(1)}),专业事实词 ${d.size}/18 类`}}(a),f=function(a){let b=a.map(a=>a.content).join("\n"),c=bG(b,cs.aX),d=Math.max(1,b.length),e=c.size/(d/1e3);return{score:eq(Math.min(100,20*e+40)),detail:`工艺参数 ${c.size} 项(每千字 ${e.toFixed(1)})`}}(a),g=function(a,b=""){let c=(b||a.map(a=>a.content).join("\n\n")).split("\n"),d=0,e=0,f=0;for(;f<c.length;){let a=c[f].trim();if(!/^\|.+\|$/u.test(a)){f+=1;continue}let b=[];for(;f<c.length&&/^\|.+\|$/u.test(c[f].trim());)b.push(c[f].trim()),f+=1;b.length<3||(d+=1,0===b.slice(1).filter(a=>a.replace(/\|/gu,"").replace(/[\s\-:]/gu,"").length>0).reduce((a,b)=>a+b.split("|").slice(1,-1).map(a=>(0,cr.jG)(a.trim())).filter(a=>""===a||"-"===a||"—"===a||"/"===a).length,0)&&(e+=1))}return{score:0===d?40:eq(e/d*100),detail:`表格 ${d} 个,其中字段完整 ${e} 个`}}(a,b),h=await er(a),i=function(a){let b=cB(a);return{score:eq(100-20*b.length-20*b.filter(a=>"error"===a.level).length),detail:`重复段落问题 ${b.length} 项`}}(a),j=function(a,b=""){let c=bF(b||a.map(a=>a.content).join("\n\n")),d=[{label:"质量标准",pattern:/质量标准|质量要求|合格率/u},{label:"计划工期",pattern:/计划工期|工期要求|日历天/u},{label:"保修",pattern:/缺陷责任期|保修|质保/u},{label:"安全目标",pattern:/安全.{0,8}目标|文明.{0,8}目标/u},{label:"项目经理",pattern:/项目经理|项目负责人/u}],e=d.filter(a=>c.some(b=>a.pattern.test(b)&&bH.test(b))),f=d.filter(a=>!e.includes(a));return{score:eq(e.length/d.length*100),detail:`招标硬性要求响应 ${e.length}/${d.length} 项${f.length?`(未响应:${f.map(a=>a.label).join("、")})`:""}`}}(a,b),k=[{key:"structure",label:"结构完整度",score:d.score,detail:d.detail,weight:.18},{key:"factLanding",label:"事实落位率",score:e.score,detail:e.detail,weight:.18},{key:"processParameter",label:"工艺参数密度",score:f.score,detail:f.detail,weight:.16},{key:"table",label:"表格完整度",score:g.score,detail:g.detail,weight:.12},{key:"filler",label:"废话控制",score:h.score,detail:h.detail,weight:.14},{key:"duplication",label:"重复控制",score:i.score,detail:i.detail,weight:.12},{key:"reviewResponse",label:"评标响应度",score:j.score,detail:j.detail,weight:.1}],l=eq(k.reduce((a,b)=>a+b.score*b.weight,0)),m=c.templating?.level==="heavy"?Math.min(l,54):c.templating?.level==="medium"?Math.min(l,69):l,n=m>=85?"专业":m>=70?"良好":m>=55?"合格":"待提升",o=[...cB(a),...await cC(a),...cG(a),...cH(a)].slice(0,5).map(a=>a.message),p=k.filter(a=>a.score<70).map(a=>`${a.label}(${a.score}分)`);return{total:m,grade:n,dimensions:k,summary:`施工组织设计专业度评分 ${m} 分(${n};从属口径,交付主尺见六维质量报告)${c.templating&&"light"!==c.templating.level?`;模板化等级:${"heavy"===c.templating.level?"重度":"中度"}(降档已生效)`:""}${p.length?`;待提升:${p.join("、")}`:""}`,topIssues:o,caliber:b_}}async function et(a){var b;if(!("heavy"===(b=a.templating).level||b.vagueHitCount>0||b.difficultyHeavyTemplated))return{issues:[],reviewed:!1};let c=(0,bC.T4)(a.markdown),d=[`确定性检测信号:模板化等级=${a.templating.level},套话句占比=${(100*a.templating.fillerRatio).toFixed(1)}%,模糊应答词命中=${a.templating.vagueHitCount}(${a.templating.vaguePhrases.join("、")||"无"}),重难点归因+量化双达标占比=${(100*a.templating.difficultyCountermeasureRatio).toFixed(0)}%,跨项目残留=${a.templating.crossProjectResidue.join("、")||"无"}${c.found.length?`,四新技术命中=${c.found.join("、")}`:""}`,`待复核正文(节选):
56
- ${function(a,b=6e3){return[a.match(/#{2,3}\s*[^\n]*(?:重难点|重点难点|工程难点|难点分析)[^\n]*\n[\s\S]{0,3500}/u)?.[0]||"",a.replace(/#{1,6}\s+[^\n]*\n/gu,"").replace(/\s+/gu," ").slice(0,b)].filter(Boolean).join("\n\n").slice(0,b+4e3)}(a.markdown)}`,'返回 JSON:{"issues":["问题1","问题2"]}'];try{let b=await (0,cl.bb)((0,O.y4)('你是招标技术标评审专家。对施工组织设计做语义级复核,只报告确定性规则覆盖不到的语义问题。\n复核维度(按《施工组织设计全维度校验提示词》判定标尺):\n1. 重难点三级判定:识别精准性(是否点明本项目真实难点而非泛泛而谈)→ 归因合理性(是否说明难点成因/风险来源)→ 对策匹配度(对策是否针对该难点的成因,而非通用措施堆砌);\n2. 术语等效性:同一对象是否前后术语一致(如"砼"与"混凝土"混用需统一),是否出现词面不同但概念等效的双重标准表述;\n3. 四新技术升级价值:若正文声称采用四新技术,其价值表述是否停留在"提升效率"式套话,缺少可对标官方推广目录或替代落后工艺的实质说明。\n每条问题必须包含:问题所在内容简述+判定依据(对应上面哪条维度)+一句话改进建议。\n只报告真实存在的问题,正文无问题时返回空数组;不得编造问题。只返回 JSON。'),d.join("\n\n"),{maxTokens:1200,temperature:0,signal:a.signal,diagnostics:a.diagnostics,taskKind:"structuredGeneration"});return{issues:Array.isArray(b?.issues)?b.issues.filter(a=>"string"==typeof a&&a.length>0):[],reviewed:!0}}catch(a){return{issues:[`⚠ 语义级模板化复核未完成(模型调用失败,本项未复核):${a instanceof Error?a.message:String(a)}`],reviewed:!1}}}var eu=c(73024),ev=c.n(eu),ew=c(76760),ex=c.n(ew),ey=c(48661);function ez(a){return Math.round(10*a)/10}function eA(a,b){let c=a.replace(/\s+/gu," ").trim();return c.length>b?`${c.slice(0,b)}…`:c}let eB={success:"通过",failed:"失败",skipped:"跳过",running:"进行中"},eC={blind:"暗标",open:"明标",unknown:"未判定(按明标口径)"};async function eD(a){var b;a.reviewChecklist=[{key:"export-gate",label:"导出门禁",passed:(b={exportGate:a.qualityBundle.finalExportGate,qualityReport:a.qualityBundle.qualityReport,repairStrategies:a.qualityBundle.repairStrategies}).exportGate.passed,message:b.exportGate.passed?"导出门禁通过":`仍有 ${b.exportGate.blockingIssues.length} 个阻断问题`},{key:"delivery-probability",label:"交付置信度",passed:b.qualityReport.passed,message:`${b.qualityReport.deliveryProbability}% / ${b.qualityReport.target}%`},{key:"completeness",label:"资料完整性",passed:b.qualityReport.scores.completeness>=85,message:`${b.qualityReport.scores.completeness}/100`},{key:"specificity",label:"方案针对性",passed:b.qualityReport.scores.specificity>=85,message:`${b.qualityReport.scores.specificity}/100`},{key:"compliance",label:"合规性",passed:b.qualityReport.scores.compliance>=80,message:`${b.qualityReport.scores.compliance}/100`},{key:"repair-strategies",label:"修复策略",passed:0===b.repairStrategies.filter(a=>"high"===a.priority).length,message:b.repairStrategies.map(a=>a.title).join("、")||"无高优先级修复策略"}];let c=(0,R.Ff)(a.validationIssues);a.generationDiagnostics.quality.blockingCount+=c.blocking,a.generationDiagnostics.quality.importantCount+=c.important,a.generationDiagnostics.quality.minorCount+=c.minor,a.telemetry=function(a){let b=[...a.diagnostics.metrics].sort((a,b)=>b.durationMs-a.durationMs).slice(0,5).map(a=>({name:a.name,durationMs:a.durationMs})),c={};for(let[b,d]of Object.entries(a.diagnostics.llm.patchGuardStats||{}))c[b]={hits:d.hits+d.rejects,repaired:d.hits,failed:d.rejects+(d.rollbacks??0)};return{llmCalls:a.diagnostics.llm.calls,llmFailures:a.diagnostics.llm.failures,maxParallelLlm:a.diagnostics.llm.maxActive,searchQueries:a.diagnostics.evidence.searchQueries,evidenceContextChars:a.diagnostics.evidence.contextChars,qualityIssues:{...a.diagnostics.quality},slowMetrics:b,elapsedMs:a.startedAt&&a.endedAt?a.endedAt-a.startedAt:void 0,repairHeat:Object.keys(c).length>0?c:void 0}}({diagnostics:a.generationDiagnostics});let d=a.qualityBundle.finalExportGate.blockingIssues.length,e=(a.generationDiagnostics.evidence.retrievalFailures??0)>0?`,⚠ 检索失败 ${a.generationDiagnostics.evidence.retrievalFailures} 次(非「无命中」,请看进度中的 failed 事件)`:"",f=(a.generationDiagnostics.evidence.pinnedEvidenceMissed??0)>0?`,⚠ 固定证据未命中 ${a.generationDiagnostics.evidence.pinnedEvidenceMissed} 处(资料包绑定漂移)`:"";a.telemetry.qualityIssues.blockingCount=d,a.professionalScore=await es(a.finalChapterDrafts,a.finalMarkdown,{templating:a.qualityBundle.qualityReport.templating}),a.templatingReview=a.qualityBundle.qualityReport.templating?await a.withProgressHeartbeat(()=>et({templating:a.qualityBundle.qualityReport.templating,markdown:a.finalMarkdown,diagnostics:a.generationDiagnostics,signal:a.signal})):{issues:[],reviewed:!1},a.finalStages=[...a.executionStages,...a.finalGateRepairStages],a.suspensionChecklist=a.qualityBundle.finalExportGate.passed?void 0:(0,i.aF)(a.qualityBundle.finalExportGate.blockingIssues,a.finalChapterDrafts),a.finalStages.push((0,q.X5)({type:"validation",roleId:"agent-final-gate",status:a.qualityBundle.finalExportGate.passed?"success":"failed",message:a.qualityBundle.finalExportGate.passed?"Agent 最终门禁通过":`Agent 最终门禁未通过 ${d} 个问题(不计入交付阻断,文档照常可导出;人工复核清单见明细)`,details:a.suspensionChecklist?(0,i.$w)(a.suspensionChecklist):[]},{subtitle:"Agent 最终门禁"}));let g=a.qualityBundle.qualityReport.deliveryProbability<70;a.finalStages.push((0,q.X5)({type:"validation",roleId:"document-delivery-score",status:a.qualityBundle.qualityReport.passed?"success":a.qualityBundle.finalExportGate.passed?"skipped":"failed",message:a.qualityBundle.finalExportGate.passed&&!a.qualityBundle.qualityReport.passed?`${a.qualityBundle.qualityReport.summary}${g?";置信度低于 70%,建议完成续修后再交付归档":"(导出门禁已通过,作为后续优化建议归档)"}`:a.qualityBundle.qualityReport.summary,details:g&&a.qualityBundle.finalExportGate.passed?[...a.qualityBundle.qualityReport.actions,"续修建议:交付置信度低于 70% 门槛,建议按交付复核清单补齐短板维度后重新生成或续修。"]:a.qualityBundle.qualityReport.actions},{subtitle:"交付评分"})),a.finalStages.push((0,q.X5)({type:"validation",roleId:"document-professional-score",status:"专业"===a.professionalScore.grade||"良好"===a.professionalScore.grade?"success":"skipped",message:a.professionalScore.summary,details:[...a.professionalScore.dimensions.map(a=>`${a.label}:${a.score} 分(${a.detail})`),...a.professionalScore.topIssues.map(a=>`待修复:${a}`)]},{subtitle:"专业度评分"})),a.qualityBundle.qualityReport.templating&&"light"!==a.qualityBundle.qualityReport.templating.level&&a.finalStages.push((0,q.X5)({type:"validation",roleId:"document-templating-report",status:"skipped",message:`模板化检测:${"heavy"===a.qualityBundle.qualityReport.templating.level?"重度":"中度"}模板化(套话句占比 ${(100*a.qualityBundle.qualityReport.templating.fillerRatio).toFixed(1)}%,重难点归因+量化双达标占比 ${(100*a.qualityBundle.qualityReport.templating.difficultyCountermeasureRatio).toFixed(0)}%,模糊应答词 ${a.qualityBundle.qualityReport.templating.vagueHitCount} 处)`,details:a.templatingReview.issues},{subtitle:"模板化检测"})),a.writingTaskBrief&&a.finalStages.push((0,q.X5)({type:"reference",roleId:"document-writing-task-brief",status:"success",message:`写作任务书:${a.writingTaskBrief.documentType},${a.writingTaskBrief.chapters.length} 章任务卡,全局写作焦点 ${a.writingTaskBrief.globalWritingFocus.length} 条`,details:[...a.writingTaskBrief.globalWritingFocus,...a.writingTaskBrief.chapters.slice(0,10).map(a=>`${a.chapterTitle}:覆盖 ${a.mustCover.length} 项`)],subtitle:"写作任务书"})),a.finalStages.push((0,q.X5)({type:"reference",roleId:"knowledge-coverage",status:a.qualityBundle.knowledgeCoverage.score>=85?"success":"failed",message:`资料确认覆盖率:${a.qualityBundle.knowledgeCoverage.score}%(证据 ${a.qualityBundle.knowledgeCoverage.evidenceCount} 条,文件 ${a.qualityBundle.knowledgeCoverage.confirmedFiles} 份)`,details:[a.qualityBundle.knowledgeCoverage.remediation]},{subtitle:"资料覆盖"})),a.finalStages.push((0,q.X5)({type:"validation",roleId:"document-review-checklist",status:a.reviewChecklist.every(a=>a.passed)?"success":a.qualityBundle.finalExportGate.passed?"skipped":"failed",message:`交付复核清单:通过 ${a.reviewChecklist.filter(a=>a.passed).length}/${a.reviewChecklist.length}${a.qualityBundle.finalExportGate.passed&&!a.reviewChecklist.every(a=>a.passed)?"(导出门禁已通过,其余项作为优化建议归档)":""}`,details:a.reviewChecklist.map(a=>`${a.passed?"通过":"待修复"}:${a.label}${a.message?`(${a.message})`:""}`)},{subtitle:"交付复核"}));let h=(0,k._8)(a.generationDiagnostics.metrics),j=(0,k.bz)(a.generationDiagnostics.llm.callBreakdown),m=a.generationDiagnostics.factSanitize?`,事实净化 截断${a.generationDiagnostics.factSanitize.truncated}/丢弃${a.generationDiagnostics.factSanitize.dropped}/编号补全${a.generationDiagnostics.factSanitize.repaired}`:"";if(a.finalStages.push((0,q.X5)({type:"validation",roleId:"document-diagnostics",status:"success",message:`性能统计:LLM ${a.generationDiagnostics.llm.calls} 次,失败 ${a.generationDiagnostics.llm.failures} 次,瞬态重试 ${a.generationDiagnostics.llm.retries} 次,schema 校验失败 ${a.generationDiagnostics.llm.schemaFailures} 次,峰值并行 ${a.generationDiagnostics.llm.maxActive},检索 ${a.generationDiagnostics.evidence.searchQueries} 次/${Math.round(a.generationDiagnostics.evidence.searchMs/1e3)} 秒,证据上下文 ${a.generationDiagnostics.evidence.contextChars} 字,噪声过滤 ${a.generationDiagnostics.evidence.filteredNoise} 条,预算裁剪 ${a.generationDiagnostics.evidence.budgetDropped} 条,质量问题 阻断${a.generationDiagnostics.quality.blockingCount}/重要${a.generationDiagnostics.quality.importantCount}/轻微${a.generationDiagnostics.quality.minorCount}${m}${e}${f}${h?`,Top耗时:${h}`:""}${j?`,调用输入Top5:${j}`:""}`,details:[...(0,k.Il)(a.generationDiagnostics.metrics),...(0,k.NJ)(a.generationDiagnostics.llm.callBreakdown)]},{subtitle:"后台诊断"})),a.documentId)try{let b=function(a){let b=a.qualityReport,c=a.exportGate,d=new Date(a.generatedAt??Date.now()),e=b.mode?eC[b.mode]:"未判定(按明标口径)",f=[];f.push(`# 交付三件套报告:${a.title}`),f.push(""),f.push(`> 文档 ID:${a.documentId??"未提供"};生成时间:${d.toISOString()}`),f.push(`> 评分口径:${bZ}(主尺=六维;招标六项/专业分为从属展示口径)`),f.push(`> 导出门禁:${c.passed?"通过":`未通过(${c.blockingIssues.length} 项阻断,文档照常可导出,人工复核清单见下)`};标书类型:${e}`),f.push(""),f.push("## 一、评分报告"),f.push(""),f.push("### 1.1 六维质量评分(主尺)");let g=b.dimensions||[];if(g.length>0)for(let a of(f.push("| 维度 | 得分 | 权重 | 构成明细 |"),f.push("|---|---|---|---|"),g))f.push(`| ${a.label} | ${a.score} | ${Math.round(100*a.weight)}% | ${a.detail??"—"} |`);else f.push("- (六维构成明细缺失——评级输入不完整,仅综合分可用)");if(f.push(`- 综合评分:**${b.overall}**/100;交付置信度 **${b.deliveryProbability}%** / 目标 ${b.target}%;低雷同性 ${b.scores?.uniqueness??"—"}${b.passed?";已达当前质量目标":";未达目标(按第三节预估路径补强)"}`),f.push(""),f.push("### 1.2 专业度评分(从属口径,交付主尺见六维)"),f.push(`- 总分 ${a.professionalScore.total}/100(${a.professionalScore.grade}):${a.professionalScore.summary}`),a.professionalScore.dimensions.length>0)for(let b of(f.push(""),f.push("| 维度 | 得分 | 权重 | 明细 |"),f.push("|---|---|---|---|"),a.professionalScore.dimensions))f.push(`| ${b.label} | ${b.score} | ${Math.round(100*b.weight)}% | ${b.detail} |`);if(a.professionalScore.topIssues.length>0)for(let b of(f.push(""),f.push("待修复:"),a.professionalScore.topIssues.slice(0,12)))f.push(`- ${eA(b,220)}`);if(f.push(""),f.push("### 1.3 阻断明细(终门禁)"),0===c.blockingIssues.length)f.push("- 无阻断:终检检测器全部通过。");else for(let a of c.blockingIssues){let b=a.severity?`[${a.severity}]`:`[${a.level}]`,c=a.chapterId?`(章:${a.chapterId}${a.sectionTitle?` / ${a.sectionTitle}`:""})`:"";f.push(`- ${b} ${eA(a.message,320)}${c}`),a.suggestion&&f.push(` - 建议:${eA(a.suggestion,260)}`)}if(c.checklist.length>0){let a=c.checklist.filter(a=>!a.passed);f.push(""),f.push(`- 门禁复核清单:通过 ${c.checklist.length-a.length}/${c.checklist.length}${a.length>0?`;未过项:${a.slice(0,10).map(a=>a.label).join("、")}${a.length>10?` 等 ${a.length} 项`:""}`:""}`)}for(let b of(f.push(""),f.push("## 二、进度(阶段/耗时/修复轮次)"),f.push(""),f.push(`### 2.1 阶段执行(共 ${a.stages.length} 个阶段)`),a.stages)){let a=b.subtitle||b.roleId,c=b.message?`:${eA(b.message,240)}`:"";f.push(`- [${eB[b.status]}] ${a}${c}`)}f.push(""),f.push("### 2.2 耗时(按耗时降序)");let h=[...a.metrics].sort((a,b)=>b.durationMs-a.durationMs);if(0===h.length)f.push("- (无性能指标记录)");else for(let a of h){var i;f.push(`- ${a.name}:${!Number.isFinite(i=a.durationMs)||i<0?"0ms":i<1e3?`${Math.round(i)}ms`:i<6e4?`${(i/1e3).toFixed(1)}s`:`${(i/6e4).toFixed(1)}min`}`)}for(let b of(f.push(""),f.push("### 2.3 修复轮次(detectorFixerRegistry 轮序声明表口径)"),l.rk)){let c=[...a.stages].reverse().find(a=>a.roleId===b);if(c){let a=c.message?` — ${eA(c.message,200)}`:"";f.push(`- ${b}:${eB[c.status]}${a}`)}else f.push(`- ${b}:未记录(无触发或静默通过)`)}f.push(""),f.push("## 三、下轮预估目标(按当前六维缺口)"),f.push("");let j=function(a){let b=(a.dimensions||[]).filter(a=>Number.isFinite(a.score)&&Number.isFinite(a.weight)&&a.weight>0);if(0===b.length)return;let c=b.reduce((a,b)=>a+b.weight,0),d=ez(b.reduce((a,b)=>a+b.score*b.weight,0)/c),e=Math.min(1,(a.scores?.uniqueness??90)/90),f=b.map(a=>({key:a.key,label:a.label,score:a.score,gap:Math.max(0,100-a.score),effectiveGain:ez(Math.max(0,100-a.score)*(a.weight/c)*e),detail:a.detail})).sort((a,b)=>b.effectiveGain-a.effectiveGain||a.label.localeCompare(b.label,"zh-Hans-CN")),g=ez(a.target-a.overall),h=null;if(g>0){let b=[],c=0;for(let a of f)if(a.effectiveGain<=0||(b.push(a),(c=ez(c+a.effectiveGain))>=g))break;h={target:a.target,gap:g,picks:b,covered:c}}return{dimensions:f,currentWeighted:d,uniquenessFactor:e,projectedOverall:Math.min(100,Math.round(100*e)),pathToTarget:h}}(b);if(j){for(let a of(f.push("| 维度 | 当前分 | 提升空间 | 对综合分贡献 | 补强方向 |"),f.push("|---|---|---|---|---|"),j.dimensions))f.push(`| ${a.label} | ${a.score} | ${a.gap>0?`+${a.gap}`:"0(满分)"} | ${a.effectiveGain>0?`+${a.effectiveGain.toFixed(1)}`:"0"} | ${a.detail?eA(a.detail,120):"—"} |`);f.push(`- 当前加权综合分:${j.currentWeighted.toFixed(1)}/100(uniqueness 因子 ${j.uniquenessFactor.toFixed(2)})`);let a=j.projectedOverall<b.target;if(f.push(`- 预计总分上限:**${j.projectedOverall}**/100(全维补满、uniqueness 不变的理论口径${a?`;低于目标 ${b.target}——受低雷同性因子 ${j.uniquenessFactor.toFixed(2)} 约束,需同步提升 uniqueness`:""};实际以重生成/续修产物复评)`),j.pathToTarget){let{target:a,gap:b,picks:c,covered:d}=j.pathToTarget,e=c.map(a=>`${a.label}(+${a.effectiveGain.toFixed(1)})`).join(" → ");d>=b?f.push(`- 达标路径(目标 ${a}):补强 ${e},合计 +${d.toFixed(1)} ≥ 缺口 ${b.toFixed(1)}。`):f.push(`- 达标路径(目标 ${a}):补强 ${e},合计 +${d.toFixed(1)} < 缺口 ${b.toFixed(1)}——六维补满仍不足,须按上限提示先提升低雷同性(uniqueness)再复评。`)}else f.push(`- 当前已达目标 ${b.target},无需补强路径(维持口径与阻断清零即可)。`)}else f.push("- 六维构成明细缺失,无法计算下轮预估(降级不猜数;补全评级输入后自动生成)。");return f.push(""),f.join("\n")}({documentId:a.documentId,title:a.template.outputTitle,qualityReport:a.qualityBundle.qualityReport,professionalScore:a.professionalScore,exportGate:a.qualityBundle.finalExportGate,stages:a.finalStages,metrics:a.generationDiagnostics.metrics}),c=function(a,b,c){let d=function(a,b){let c=b.trim().replace(/[^A-Za-z0-9_-]/gu,"_");if(!c)throw Error("交付报告文件名缺少文档 ID");return ex().join((0,ey.Gl)(a),"reports",`${c}-review.md`)}(a,b);ev().mkdirSync(ex().dirname(d),{recursive:!0});let e=`${d}.${process.pid}.${Date.now()}.tmp`;return ev().writeFileSync(e,c,"utf8"),ev().renameSync(e,d),d}(a.projectRoot,a.documentId,b),d=a.qualityBundle.finalExportGate.blockingIssues.length;a.finalStages.push((0,q.X5)({type:"reference",roleId:"delivery-review-report",status:"success",message:`交付三件套报告已产出:${c}`,details:[a.qualityBundle.qualityReport.summary,`专业度(从属口径):${a.professionalScore.summary}`,`阻断:${d} 项${d>0?"(人工复核清单随报告归档,不阻断交付)":"(终检检测器全部通过)"}`,"下轮预估目标:按当前六维缺口计算各维提升空间与达标路径(见报告第三节)"]},{subtitle:"交付报告"}))}catch(c){let b=c instanceof Error?c.message:String(c);a.finalStages.push((0,q.X5)({type:"reference",roleId:"delivery-review-report",status:"failed",message:`交付三件套报告产出失败(不阻断交付):${b}`},{subtitle:"交付报告"}))}}let eE={prefixCacheHitRateFloor:.4,budgetDropRatioCeiling:.3,llmFailureRateCeiling:.1};async function eF(a){let b=function(a){let b=[],c=a.llm.promptCacheHitTokens??0,d=c+(a.llm.promptCacheMissTokens??0),e=d>0?c/d:null;null!==e&&e<eE.prefixCacheHitRateFloor&&b.push(`固定前缀缓存命中率 ${(100*e).toFixed(1)}% 低于 40%:固定前缀未收敛,检查 L0/L2 恒定段结构`);let f=a.llm.reasoningTokens??0;f>0&&b.push(`推理 token 累计 ${f}:disableThinking 未生效,检查模型 provider 配置`);let g=a.evidence.raw>0?a.evidence.budgetDropped/a.evidence.raw:null;null!==g&&g>eE.budgetDropRatioCeiling&&b.push(`证据预算裁剪 ${(100*g).toFixed(1)}%(${a.evidence.budgetDropped}/${a.evidence.raw}):裁剪过重,疑似预算配置失配`);let h=a.llm.calls>0?a.llm.failures/a.llm.calls:null;return null!==h&&h>eE.llmFailureRateCeiling&&b.push(`LLM 失败率 ${(100*h).toFixed(1)}%(${a.llm.failures}/${a.llm.calls}):失败率偏高,检查限流与重试策略`),{alerts:b,metrics:{prefixCacheHitRate:e,reasoningTokens:f,budgetDropRatio:g,llmFailureRate:h}}}(a.generationDiagnostics),c=process.memoryUsage(),d=Math.round(c.rss/1048576),e=Math.round(c.heapUsed/1048576),f=function(){let a=Number(process.env.DOCUMENT_MEMORY_ALERT_MB??3072);return Number.isFinite(a)&&a>0?a:3072}();console.log(`[gen] memory(finalize) rss=${d}MB heap=${e}MB threshold=${f}MB`);let g=d>=f?[...b.alerts,`进程内存 rss=${d}MB 超过告警阈值 ${f}MB:大文档生成建议 NODE_OPTIONS=--max-old-space-size=4096,并控制并发生成任务数(DOCUMENT_MAX_CONCURRENT_GENERATIONS)`]:b.alerts;a.telemetry.healthAlerts=g,0!==g.length&&a.finalStages.push((0,q.X5)({type:"validation",roleId:"document-health-diagnosis",status:"skipped",message:`自动健康诊断:${g.length} 项告警(不阻断,供配置优化参考)`,details:g},{subtitle:"健康诊断"}))}async function eG(a){(0,l.wF)();let{chapterDraftsByOrder:b,chapterGenerationStagesByOrder:c,chapterGenerationStages:d,effectiveChapters:e,input:f,hasExplicitOutline:m,failedChapterMessages:n}=a,{requirement:p}=f,q=function(a){let{signal:b,requirement:c}=a.input;return{input:a,template:a.template,effectiveChapters:a.effectiveChapters,requirement:c,signal:b,projectRoot:a.projectRoot,projectId:a.projectId,documentId:a.documentId,projectMaterialSummary:a.projectMaterialSummary,documentSpec:a.documentSpec,documentBudget:a.documentBudget,promptBindings:a.promptBindings,promptDocumentRules:a.promptDocumentRules,domainProfile:a.domainProfile,scopeConflicts:a.scopeConflicts,evaluationCriteriaItems:a.evaluationCriteriaItems,tenderRequirements:a.tenderRequirements,requirementAssignments:a.requirementAssignments,requirementsSimilarity:a.requirementsSimilarity,factTokenScopeClassifier:a.factTokenScopeClassifier,professionalDepthClassifier:a.professionalDepthClassifier,blueprintData:a.blueprintData,bidComposition:a.bidComposition,billFactLock:a.billFactLock,drawingFactLock:a.drawingFactLock,requirementSemantics:a.requirementSemantics,generationDiagnostics:a.generationDiagnostics,repairPromptTexts:a.repairPromptTexts,progressStages:a.progressStages,chapterGenerationStages:a.chapterGenerationStages,emitProgress:a.emitProgress,withProgressHeartbeat:a.withProgressHeartbeat,missingItems:a.missingItems,failedChapterMessages:a.failedChapterMessages,indexHealth:a.indexHealth,webResearchReport:a.webResearchReport,retrievalCoverageReports:a.retrievalCoverageReports,writingTaskBrief:a.writingTaskBrief,globalConsistencyIssues:a.globalConsistencyIssues,agentWorkflow:a.agentWorkflow,factExtractionPromptTexts:a.factExtractionPromptTexts,readiness:a.readiness,allEvidence:a.allEvidence,facts:{},structuredFacts:[],governedStructuredFacts:[],factsModel:void 0,chapterDrafts:[],finalChapterDrafts:[],finalMarkdown:"",validationIssues:[],baseValidationIssues:[],executionStages:[],finalGateRepairStages:[],sources:[],qualityBundle:void 0,scheduleAuthority:void 0,assemblyRateAuthority:void 0,scaleSummary:void 0,supportAuthority:void 0,laborPeakAuthority:void 0,greeningMaintenanceAuthority:void 0,surfaceFixContext:{laborPeakAuthority:void 0,greeningMaintenanceAuthority:void 0,resourceBreakdownAuthority:void 0,supportFormAuthority:void 0},decisionLockEntries:[],finalStages:[],reviewChecklist:[],telemetry:void 0,professionalScore:void 0,templatingReview:{issues:[],reviewed:!1},assets:[],validation:void 0,rebuildFinalMarkdown:()=>"",recomputeFinalValidationBundle:async()=>void 0}}(a),s=b.filter(a=>!!a);if(q.chapterDrafts=s,d.push(...c.filter(a=>!!a)),0===s.length)throw Error(`章节生成未完成:${n.join(";")||"没有生成任何有效章节"}`);if(m&&s.length<e.length)throw Error(`OUTLINE 指定 ${e.length} 章,实际只生成 ${s.length} 章:${n.join(";")||"部分章节未生成"}`);await r(q),await cP(q);let t=(0,P._C)(q.bidComposition),u=(0,P.kO)(q.bidComposition),v=q.bidComposition?.formatRules.cover==="forbidden",w=(0,O.rs)((0,O.V3)({templateId:q.template.id,templateName:q.template.name,title:q.template.outputTitle,requirement:q.requirement||"",projectRoot:q.projectRoot,projectId:q.projectId,exportSettings:q.template.exportSettings,generationSettings:q.template.generationSettings,facts:q.facts,structuredFacts:q.structuredFacts,factsModel:q.factsModel,chapters:q.chapterDrafts,sources:q.sources,missingItems:[...new Set(q.missingItems)],validation:q.validation,validationIssues:q.validationIssues,executionStages:q.executionStages,exportGate:{passed:!1,blockingIssues:[],checklist:[]},assets:q.assets,partialChapters:q.chapterDrafts.map(a=>({id:a.id,title:a.title,chars:(0,h.V7)(a.content),status:(0,k.DR)(a,q.documentBudget.chapterTargets.get(a.id)),updatedAt:Date.now()})),checkpointChapters:q.chapterDrafts,generatedAt:Date.now()},{forbidDrawingImages:u,promptRules:q.promptDocumentRules,bodyTableForbidden:t,coverForbidden:v}),q.chapterDrafts,{forbidDrawingImages:u,promptRules:q.promptDocumentRules,bodyTableForbidden:t,coverForbidden:v});q.finalChapterDrafts=w.chapters.map(a=>{let b=q.effectiveChapters.find(b=>b.id===a.id)||a;return{...a,sections:a.sections||[],content:(0,k.w_)(a.content,b)}}),q.finalMarkdown=(0,O.rs)((0,O.V3)({templateId:q.template.id,templateName:q.template.name,title:q.template.outputTitle,requirement:q.requirement||"",projectRoot:q.projectRoot,projectId:q.projectId,exportSettings:q.template.exportSettings,generationSettings:q.template.generationSettings,facts:q.facts,structuredFacts:q.structuredFacts,factsModel:q.factsModel,chapters:q.finalChapterDrafts,sources:q.sources,missingItems:[...new Set(q.missingItems)],validation:q.validation,validationIssues:q.validationIssues,executionStages:q.executionStages,exportGate:{passed:!1,blockingIssues:[],checklist:[]},assets:q.assets,partialChapters:[],checkpointChapters:q.finalChapterDrafts,generatedAt:Date.now()},{forbidDrawingImages:u,promptRules:q.promptDocumentRules,bodyTableForbidden:t,coverForbidden:v}),q.finalChapterDrafts,{forbidDrawingImages:u,promptRules:q.promptDocumentRules,bodyTableForbidden:t,coverForbidden:v}).markdown,q.finalMarkdown=(0,o._D)((0,k.Ht)((0,O.bR)((0,k.Xr)((0,O.kT)((0,O.K7)(cK((0,k.jO)(q.finalMarkdown,q.structuredFacts,{bodyTableForbidden:t}),q.projectMaterialSummary))))))).markdown,t||(q.finalMarkdown=(0,bV.TG)((0,bV.lj)(q.finalMarkdown)),q.finalMarkdown=(0,bV.Vp)((0,bV.n3)(q.finalMarkdown,cQ(q)).markdown)),q.finalMarkdown=(0,Q.u7)(q.finalMarkdown,{plan:q.bidComposition?.appendixPlan||[],blueprintData:q.blueprintData}),await cS(q),await cT(q),await dj(q),await dk(q),await dm(q),await ag(q),await dL(q),await dW(q),await d7(q),await d9(q),await eb(q),await dP(q),await ef(q),await dV(q),await eg(q),await eh(q),await ei(q),await ej(q),await ek(q),await el(q),await dS(q),await dQ(q),await dR(q),await dO(q),await em(q),await en(q),await eo(q),await ep(q),await dT(q),await eD(q),await eF(q);let x=q.finalChapterDrafts.map(a=>({...a,evidence:(0,g.QR)(a.evidence||[],{preservePinned:!0})}));return q.finalChapterDrafts=x,{templateId:q.template.id,templateName:q.template.name,title:q.template.outputTitle,requirement:p||"",projectRoot:q.projectRoot,projectId:q.projectId,exportSettings:q.template.exportSettings,generationSettings:q.template.generationSettings,facts:q.facts,structuredFacts:q.structuredFacts,factsModel:q.factsModel,chapters:x,sources:q.sources,missingItems:[...new Set(q.missingItems)],validation:q.validation,validationIssues:q.validationIssues,exportGate:q.qualityBundle.finalExportGate,executionStages:q.finalStages,assets:q.assets,partialChapters:q.finalChapterDrafts.map(a=>({id:a.id,title:a.title,chars:(0,h.V7)(a.content),status:(0,k.DR)(a,q.documentBudget.chapterTargets.get(a.id)),updatedAt:Date.now()})),checkpointChapters:x,promptRules:q.promptDocumentRules,agentWorkflow:q.agentWorkflow,reviewMetadata:{chapterSummaries:[],globalIssues:[],diagnostics:q.generationDiagnostics,profile:function(a){let b=`${a.template.name} ${a.template.outputTitle||""} ${a.requirement||""} ${a.chapters.map(a=>a.title).join(" ")}`,c=[{pattern:/专项施工|危大|专项方案/u,type:"专项施工方案",dimensions:["专项对象边界","工艺参数","风险控制","验收要求","应急措施"]},{pattern:/投标|技术标|响应|招标/u,type:"投标技术方案",dimensions:["招标响应","技术优势","工期质量安全承诺","资源保障","履约可实施性"]},{pattern:/监理|旁站|巡视|平行检验/u,type:"监理规划/细则",dimensions:["监理目标","旁站巡视","平行检验","验收程序","资料签认"]},{pattern:/可研|可行性|项目建议书|投资估算/u,type:"可研/项目建议类文档",dimensions:["建设必要性","方案比选","投资估算","风险分析","实施效益"]},{pattern:/运维|维护|保养|巡检/u,type:"运维维护方案",dimensions:["巡检频次","维护流程","故障响应","备品备件","记录闭环"]}].find(a=>a.pattern.test(b));return{type:c?.type||"施工组织设计/施工技术方案",dimensions:c?.dimensions||["工程概况","施工部署","进度质量安全","资源配置","施工工艺和验收闭环"],requiredEvidencePolicy:"本地知识库为完整事实源;系统暂未确认的事实必须通过扩大检索、事实补抽或落位修复解决,不得归因为用户资料缺失。"}}({template:q.template,chapters:e,requirement:p}),knowledgeCoverage:q.qualityBundle.knowledgeCoverage,factTraces:q.qualityBundle.factTraces,chapterCoverage:q.qualityBundle.chapterCoverage,retrievalCoverage:q.retrievalCoverageReports,qualityReport:q.qualityBundle.qualityReport,repairStrategies:q.qualityBundle.repairStrategies,reviewChecklist:q.reviewChecklist,professionalScore:q.professionalScore,templatingReviewIssues:q.templatingReview.issues,authorityAudit:q.authorityAuditReport,suspensionChecklist:q.suspensionChecklist??(q.qualityBundle.finalExportGate.passed?void 0:(0,i.aF)(q.qualityBundle.finalExportGate.blockingIssues,q.finalChapterDrafts)),writingTaskBrief:q.writingTaskBrief,workflowVersion:j.x,telemetry:q.telemetry},generatedAt:Date.now(),markdown:q.finalMarkdown,bidComposition:q.bidComposition}}var eH=c(71678),eI=c(29055);let eJ=[{id:"overview",title:"工程概况与总体理解",requiredSectionPatterns:[/编制依据|编制说明/u,/工程概况|项目概况|基本概况/u,/现场踏勘|施工条件|现场条件/u],chapterPatterns:[/概况|总体|理解|说明|编制|项目/u],remedy:"应设置工程概况章节,包含编制依据、工程基本概况、现场条件与总体理解。",level:"required"},{id:"major-content",title:"项目主要施工内容",requiredSectionPatterns:[/主要施工内容|主要施工项目|施工内容/u],chapterPatterns:[/概况|总体|理解|主要施工|工程/u],remedy:'必须包含"项目主要施工内容"小节,按工作包展开施工概况、施工流程、施工方法。',level:"required"},{id:"key-difficulty",title:"重难点分析与对策",requiredSectionPatterns:[/重点.*难点|难点.*对策|重难点/u],chapterPatterns:[/概况|总体|理解|重点|难点|施工/u],remedy:"应设置项目特点、重点、难点分析小节,并逐项给出应对措施与责任闭环。",level:"required"},{id:"deployment",title:"施工部署与施工组织",requiredSectionPatterns:[/施工部署|总体部署|流水|施工顺序|施工区段/u],chapterPatterns:[/部署|组织|总体|方案/u],remedy:"应设置施工部署小节,明确流水段划分、施工顺序与资源调配。",level:"required"},{id:"schedule",title:"进度计划与工期保障",requiredSectionPatterns:[/进度计划|工期|节点/u],chapterPatterns:[/进度|工期|计划|保障/u],remedy:"应设置进度计划与工期保障小节,含总进度计划、关键节点与纠偏措施。",level:"required"},{id:"quality",title:"质量保证体系与措施",requiredSectionPatterns:[/质量/u],chapterPatterns:[/质量|验收|保障|措施/u],remedy:"应设置质量保证体系与措施小节,含质量目标、三检、隐蔽验收、通病防治。",level:"required"},{id:"safety",title:"安全文明施工与危大工程管控",requiredSectionPatterns:[/安全/u,/危大工程|危大/u],chapterPatterns:[/安全|文明|风险|危大|保障|措施/u],remedy:"应设置安全管理与危大工程管控小节,含危险源辨识、危大清单、专项方案。",level:"required"},{id:"resources",title:"劳动力材料机械设备配置",requiredSectionPatterns:[/劳动力|机械设备|材料.*计划|资源配置|人材机/u],chapterPatterns:[/资源|劳动力|机械|材料|设备|计划/u],remedy:"应设置资源配置小节,含分阶段劳动力、机械设备投入与材料进场计划。",level:"required"},{id:"environment",title:"绿色文明施工与环保措施",requiredSectionPatterns:[/文明施工|扬尘|噪声|绿色|环保|四节/u],chapterPatterns:[/文明|绿色|环保|扬尘|噪声|保障|措施/u],remedy:"应设置文明施工与绿色施工小节,含扬尘噪声管控与四节一环保措施。",level:"required"},{id:"emergency",title:"应急管理体系",requiredSectionPatterns:[/应急/u],chapterPatterns:[/应急|安全|保障|措施/u],remedy:"应设置应急管理小节,含应急组织、物资储备与专项预案。",level:"recommended"}],eK={building:[{id:"key-difficulty",title:"危大工程专项管控(房建)",requiredSectionPatterns:[/深基坑|高支模|起重吊装|脚手架/u],chapterPatterns:[/危大|安全|专项/u],remedy:"房建项目应对深基坑、高支模、起重吊装、脚手架等危大工程逐项给出专项方案与安全管理措施。",level:"recommended"}],municipal:[{id:"key-difficulty",title:"交通导改与管线保护(市政)",requiredSectionPatterns:[/交通导改|交通导行|占道施工/u,/管线保护|管线探测/u],chapterPatterns:[/交通|管线|安全|专项|保障/u],remedy:"市政项目应设置交通导改与既有管线保护专项内容。",level:"recommended"}],renovation:[{id:"key-difficulty",title:"居民协调与既有保护(改造)",requiredSectionPatterns:[/居民|扰民|既有.*保护|不中断/u],chapterPatterns:[/居民|协调|保护|保障|专项/u],remedy:"改造项目应设置居民沟通协调与既有设施保护专项内容。",level:"recommended"}],decoration:[{id:"key-difficulty",title:"成品保护与交叉施工(装饰)",requiredSectionPatterns:[/成品保护/u,/交叉施工|工序穿插/u],chapterPatterns:[/成品保护|交叉|协调|保障|专项/u],remedy:"装饰项目应设置成品保护与交叉施工工序优化专项内容。",level:"recommended"}]};function eL(a){return(0,bg.GQ)(a).replace(/\s+/gu,"").toLowerCase()}function eM(a){return eL(`${a.title} ${(a.sections||[]).join(" ")}`).slice(0,800)}function eN(a){var b;let c,d=(b=a.chapters,[...eJ].map(a=>{let c=[],d=new Set;for(let e of b){let b=eL(`${e.title} ${(e.sections||[]).join(" ")}`);for(let f of a.requiredSectionPatterns)f.test(b)&&!d.has(f)&&(d.add(f),c.push(e.title))}let e=[...new Set(c)],f=a.requiredSectionPatterns.filter(a=>!d.has(a)).map(a=>(function(a){let b=a.source.replace(/[\\/^$.*+?()[\]{}]/gu,"").replace(/u$/u,"");return b.split("|").map(a=>a.trim()).find(Boolean)||b})(a)),g=d.size===a.requiredSectionPatterns.length?e.length>1?"fragmented":"satisfied":"missing";return{groupId:a.id,groupTitle:a.title,level:a.level,status:g,carrierChapters:e,missingSections:f,remedy:a.remedy}})),e=[],f=d.filter(a=>"required"===a.level&&"missing"===a.status);for(let a of f)e.push({level:"error",severity:"blocker",message:`评标结构缺失:${a.groupTitle}(缺少:${a.missingSections.join("、")})`,suggestion:a.remedy});for(let a of d.filter(a=>"fragmented"===a.status))e.push({level:"warning",severity:"warning",message:`${a.groupTitle} 小节散落在 ${a.carrierChapters.length} 个章节(${a.carrierChapters.join("、")}),结构可能失真`,suggestion:"建议将同类内容集中到一个承载章节,避免章节间职责重叠。"});for(let b of a.chapters){let a=(b.sections||[]).length;a>18&&e.push({level:"warning",severity:"warning",message:`${b.title} 规划小节 ${a} 个,超过 18 个上限,易产生内容膨胀与重复`,suggestion:"合并语义相近的小节,或将细分内容下移为三级小节而非二级小节。"})}let g=a.chapters.map(a=>({...a,sections:[...a.sections||[]]})),h=new Set;for(let a of f){let b=eJ.find(b=>b.id===a.groupId);if(!b)continue;let c=g.findIndex(a=>{let c=eL(a.title);return b.chapterPatterns.some(a=>a.test(c))&&!/雨季|冬季|高温|防汛|扬尘|噪声|工资|劳务|实名|应急|BIM|智慧|管线/u.test(c)}),d=g[c>=0?c:0];for(let c of a.missingSections.filter(a=>!h.has(a))){h.add(c);let a=!function(a){let b=(0,bg.GQ)(a).replace(/\s+/gu,"");return b.length>0&&b.length<=3&&/^[\u4e00-\u9fa5]+$/u.test(b)}(c)?c:b.title;!(0,eH.xb)(a)&&(d.sections.some(b=>eL(b).includes(eL(a))||eL(a).includes(eL(b)))||d.sections.push(a))}}let i=/^(?:确保\s*)?([人材机])(?:员|力|料|械|工)?\s*的保障体系与措施$/u;for(let a of g){if(!/人[、,,]材[、,,]机/u.test(a.title))continue;let b=new Set,c=[];for(let d of a.sections){if(eL(d)===eL(a.title))continue;let e=i.exec(d.trim());e?b.has(e[1])||(b.add(e[1]),c.push(d.trim())):c.push(d)}for(let a of["人","材","机"])b.has(a)||c.push(`确保${a}的保障体系与措施`);c.length!==a.sections.length&&(a.sections=c)}if(a.evaluationItems?.length){let b=a.chapters.map(eM);for(let{item:d}of(c=function(a,b,c){let d=[],e=a.map(eM);for(let a of b){let b=a.title;if(!b||e.some(a=>(function(a,b){let c=eL(b);return!!c&&(a.includes(c)||c.includes(a.slice(0,40)))})(a,b)))continue;let f=0;if(c?.semanticSimilarity)for(let a of e)f=Math.max(f,c.semanticSimilarity(b,a));f>=.6||d.push({item:a,title:b,bestSimilarity:c?.semanticSimilarity?f:void 0})}return{items:b,uncovered:d}}(a.chapters,a.evaluationItems,{semanticSimilarity:a.semanticSimilarity})).uncovered){let c=d.title;if(!c||(0,bg.Fe)(c)||(0,bg.ob)(c)||(0,eH.xb)(c))continue;let f=b.reduce((b,d,e)=>{let f=a.semanticSimilarity?a.semanticSimilarity(c,d):+!!d.includes(eL(c));return f>b.score?{index:e,score:f}:b},{index:-1,score:-1}).index,h=g[f>=0?f:0];h.sections.some(a=>eL(a).includes(eL(c))||eL(c).includes(eL(a)))||(h.sections.push(c),h.purpose=`${h.purpose||""};系统已按招标文件技术评审条目自动补足小节“${c}”,必须基于项目资料与适用技术展开实质内容。`,e.push({level:"warning",severity:"warning",message:`评分标准条目“${c}”无承接章节,已自动补小节“${c}”至“${h.title}”`,suggestion:"请确认补充小节与招标文件评审条目口径一致。"}))}}for(let b of(0,eI.y)(a))if("general"!==b)for(let a of eK[b]){let b=eL(g.map(a=>`${a.title} ${(a.sections||[]).join(" ")}`).join(" "));if(a.requiredSectionPatterns.some(a=>a.test(b)))continue;let c=g.findIndex(b=>{let c=eL(b.title);return a.chapterPatterns.some(a=>a.test(c))}),d=g[c>=0?c:0];(0,eH.xb)(a.title)||d.sections.push(a.title)}return{diagnostics:d,issues:e,enrichedChapters:g,criteriaAudit:c}}function eO(a){return a.replace(/\s+/gu,"").toLowerCase()}var eP=c(81892),eQ=c(30355),eR=c(2773),eS=c(38115),eT=c(31129);async function eU(a){a.planning.generationDiagnostics.metrics.push({name:"phase:plan",startedAt:a.planning.planPhaseStartedAt,endedAt:Date.now(),durationMs:Date.now()-a.planning.planPhaseStartedAt}),a.chapterLoop.draftPhaseStartedAt=Date.now();let b=(0,s.UO)(a.blueprint.billFactLock,a.planning.effectiveChapters);for(let c=0;c<a.planning.effectiveChapters.length;c+=a.blueprint.chapterConcurrency){let d=a.planning.effectiveChapters.slice(c,c+a.blueprint.chapterConcurrency);for(let g of(await Promise.all(d.map(async(d,g)=>{let i,j=c+g;(0,e.Te)(a.global.input.signal);let l=a.understanding.rolePoolRisk??ch({totalChunks:0,loadedChunks:0,vectorReady:void 0}),r=a.blueprint.blueprintActive?{missing:[],failedChecks:[]}:(0,p.RT)(d.title,a.blueprint.integratedBlueprint?.validation,a.planning.chapterIntentClassifier);if(r.missing.length>0){let b=r.failedChecks.length>0?`蓝图校验项「${r.failedChecks.join("、")}」未通过`:"蓝图校验未通过或构建异常";throw a.global.progressStages.push((0,q.X5)({type:"chapter_generation",roleId:"chapter_generation",status:"failed",message:`${(0,bg.GQ)(d.title)} 依赖蓝图权威 [${r.missing.join("、")}],${b},已按节点级把关阻断生成`,details:["数值密集型章所需蓝图权威不可用时禁止无权威成稿","请检查清单解析与蓝图构建诊断后重试"],progress:{current:j+1,total:a.planning.effectiveChapters.length,label:"章节阻断"}},{subtitle:(0,bg.GQ)(d.title),order:j})),a.global.emitProgress(),Error(`${(0,bg.GQ)(d.title)} 依赖蓝图权威 [${r.missing.join("、")}],${b},已按节点级把关阻断生成`)}let t=Date.now(),u=a.global.progressStages.length;try{let c,g,v;a.global.progressStages.push((0,q.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:a.prepare.promptPlan.writerPrompts[0]?.id,status:"running",message:`${(0,bg.GQ)(d.title)} 正在检索证据并准备章节内容`,details:[`章节序号:${j+1}/${a.planning.effectiveChapters.length}`,`二级小节:${d.sections?.length||0} 个`,"正在生成检索查询"],progress:{current:j+1,total:a.planning.effectiveChapters.length,label:"章节生成"}},{subtitle:(0,bg.GQ)(d.title),order:j})),a.global.emitProgress();let w=a.global.input.resumeChapters?.find(a=>a.id===d.id||a.title===d.title),x=w?.content?.trim(),B=w?.evidence?.length?[...w.evidence]:[],C=a.prepare.projectUnderstanding.chapterPlans.find(a=>a.chapterId===d.id||a.chapterTitle===d.title),D=C?Object.values(C.evidenceQueries).flat().filter(Boolean):[],E=d.queries.length>0?d.queries:[a.prepare.template.name,a.prepare.template.outputTitle,d.title],F=a.understanding.chapterGraphMap.get(d.id);if(a.understanding.projectGraph&&F&&F.graphFiles.size>0)for(let b of[...F.graphFiles]){let c=a.understanding.getCachedFileDetail(b);if(c?.chunks?.length)for(let e of c.chunks)B.push({chapterId:d.id,filePath:c.file?.relativePath||b,score:5+(F.graphWorks.length+F.graphMethods.length)*.5,content:e.content,roleId:a.understanding.fileRoleByPath.get(b),processingType:a.understanding.fileProcessingByPath.get(b),sectionTitle:e.sectionTitle,source:"graph-evidence"})}let G=a.planning.chapterIntentClassifier.needsBasicFacts(d.title),H=a.blueprint.billFactLock?(0,s.Zc)(a.blueprint.billFactLock,d.title,d.sections||[]):[],I=(0,k.QP)(d,[...E,...D,...H],[]),J=Date.now();a.global.progressStages[u]=(0,q.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:a.prepare.promptPlan.writerPrompts[0]?.id,status:"running",message:`${(0,bg.GQ)(d.title)} 正在执行质量优先的章节检索${F?.graphFiles.size?`(图谱匹配 ${F.graphFiles.size} 个文件)`:""}`,details:I.map(a=>`检索:${a.slice(0,42)}`),progress:{current:j+1,total:a.planning.effectiveChapters.length,label:"证据检索"}},{subtitle:(0,bg.GQ)(d.title),order:j}),a.global.emitProgress();let K=x?[]:[...a.understanding.availableEvidenceScopePaths].filter(Boolean).sort(),L=x?[]:a.understanding.scopedIntelligence?.evidenceByChapterId?.[d.id]||[];if(L.length>0){B.push(...L);let b=a.planning.generationDiagnostics.evidence;b.intentEvidenceInjected=(b.intentEvidenceInjected??0)+L.length}let M=[],N=(d.requiredFacts||[]).filter(a=>!!a&&!I.some(b=>b.includes(a)||a.includes(b))).map(a=>`${d.title} ${a}`),Q=(a.prepare.requirementSemantics?.factClues||[]).filter(a=>!I.some(b=>b.includes(a)||a.includes(b))&&!N.some(b=>b.includes(a)||a.includes(b))).map(a=>`${d.title} ${a}`.trim()).slice(0,8),S=[...I,...N,...Q];if(K.length>0&&S.length>0){(0,e.Te)(a.global.input.signal);let b=await (0,e.l$)(S,async b=>a.understanding.searchWithCache(b,K,Math.min(a.understanding.requestedEvidencePerChapter,12),d.title,a.prepare.materialScope.selectedMaterialRoots),{kind:"search"});M.push(...b)}for(let b of(a.planning.generationDiagnostics.evidence.searchQueries+=S.length,a.planning.generationDiagnostics.evidence.searchMs+=Date.now()-J,a.global.progressStages[u]=(0,q.X5)({type:"chapter_generation",roleId:"chapter_generation",status:"running",message:`${(0,bg.GQ)(d.title)} KB 检索完成:${S.length} 组查询,准备深度召回与语义排序`,progress:{current:j+1,total:a.planning.effectiveChapters.length,label:"证据检索"}},{subtitle:(0,bg.GQ)(d.title),order:j}),a.global.emitProgress(),M)){B.push(...b.map(b=>({chapterId:d.id,filePath:b.filePath,score:b.score,content:b.content,roleId:a.understanding.fileRoleByPath.get(b.filePath),processingType:a.understanding.fileProcessingByPath.get(b.filePath),sectionTitle:b.sectionTitle,source:b.source})));let c=a.planning.generationDiagnostics.evidence;c.retrievedEvidenceInjected=(c.retrievedEvidenceInjected??0)+b.length}G&&K.length>0&&a.blueprint.basicFactSearchResults.length>0&&B.push(...a.blueprint.basicFactSearchResults.map(b=>({chapterId:d.id,filePath:b.filePath,score:b.score,content:b.content,roleId:a.understanding.fileRoleByPath.get(b.filePath),processingType:a.understanding.fileProcessingByPath.get(b.filePath),sectionTitle:b.sectionTitle,source:"basic-fact-cache"})));let U=x?[]:await (0,eR.$b)({manager:a.understanding.manager,projectRoot:a.prepare.projectRoot,chapter:d,plan:C,profile:a.prepare.projectMaterialProfile,scopedFilePaths:K,scopedMaterialRoots:a.prepare.materialScope.selectedMaterialRoots,limitPerQuery:Math.min(a.understanding.requestedEvidencePerChapter,10),signal:a.global.input.signal}).catch(b=>(a.planning.generationDiagnostics.evidence.retrievalFailures=(a.planning.generationDiagnostics.evidence.retrievalFailures??0)+1,a.planning.generationDiagnostics.llm.lastError=`计划材料证据召回失败(${d.title}):${b instanceof Error?b.message:String(b)}`,console.error(`[gen] 计划材料证据召回失败(${d.title})`,b),[]));B.push(...U);let W=[];a.planning.chapterIntentClassifier.needsBasicFacts(d.title)&&B.push(...a.understanding.safeProjectBasicEvidence.map(a=>({...a,chapterId:d.id,source:"pinned-evidence"})));let X=a.understanding.writerEvidence.filter(a=>/招标|投标须知|评标办法|专用合同条款|投标人须知/u.test(`${a.filePath||""}${a.sectionTitle||""}`));/概况|工程|项目|总体|部署/u.test(d.title)&&X.length>0&&B.push(...X.map(a=>({...a,chapterId:d.id,source:"pinned-evidence"})));let Y=a.prepare.materialScope.selectedMaterialRoots[0]||"";for(let b of(d.pinnedEvidenceFilePaths||[]).filter(Boolean)){let c=b.replace(/\\/gu,"/").replace(/^\.\//u,"").replace(/^\/+/u,""),e=Y&&c!==Y&&!c.startsWith(`${Y}/`)?`${Y}/${c}`:c,f=a.understanding.getCachedFileDetail(e);if(!f){let c=a.planning.generationDiagnostics?.evidence;c&&(c.pinnedEvidenceMissed=(c.pinnedEvidenceMissed??0)+1),console.warn("[stage-chapter-loop] pinned 证据文件未命中知识库(配置漂移或文件未入库)",{chapter:d.title,pinnedPath:b,resolvedPath:e});continue}B.push(...f.chunks.map(b=>({chapterId:d.id,filePath:f.file.relativePath,score:1,content:b.content,roleId:a.understanding.fileRoleByPath.get(f.file.relativePath),processingType:a.understanding.fileProcessingByPath.get(f.file.relativePath),sectionTitle:b.sectionTitle,source:"pinned-evidence"})))}let Z=B;if(!x&&a.prepare.webAccessConfig.enabled&&a.prepare.webAccessConfig.allowProjectFacts){let b=await at({config:a.prepare.webAccessConfig,chapterId:d.id,chapterTitle:d.title,sectionTitles:d.sections||[],runtimeRules:a.prepare.runtimePromptRules,localFacts:[...a.understanding.preliminaryFactsModel.project,...a.understanding.preliminaryFactsModel.schedule,...a.understanding.preliminaryFactsModel.quality,...a.understanding.preliminaryFactsModel.safety,...a.understanding.preliminaryFactsModel.resources,...a.understanding.preliminaryFactsModel.preciseFacts],signal:a.global.input.signal});a.understanding.webResearchReport.queries.push(...b.queries),a.understanding.webResearchReport.filteredCount+=b.filtered+b.evidence.length,b.failedQueries>0&&(a.understanding.webResearchReport.failedCount=(a.understanding.webResearchReport.failedCount??0)+b.failedQueries,a.planning.generationDiagnostics.llm.lastError=`联网检索失败 ${b.failedQueries} 次(${d.title}):${b.failures.slice(0,3).join(";")}`)}let $=x?[]:(0,eR.SK)({project:a.understanding.project,chapter:d,plan:C,profile:a.prepare.projectMaterialProfile,scopedFilePaths:K,highRisk:l.highRisk});$.length>0&&Z.push(...$),a.understanding.excludedEvidenceKeys.size>0&&(Z=Z.filter(b=>!a.understanding.excludedEvidenceKeys.has((0,eH.hM)(b))));let _=(()=>{let a=Number(process.env.DOCUMENT_SEMANTIC_TOP_CANDIDATES);return Number.isFinite(a)&&a>0?Math.floor(a):3e3})(),aa=(0,k.Mz)(d,Z,_),ab=await (0,aB.Mv)([eM(d)],aa.map(k.t7)),ac=(0,k.UG)(d,Z,{preservePinned:!0,semantic:{similarity:ab,queryText:eM(d)}},a.planning.generationDiagnostics);ac=(0,n.pm)(ac,a.understanding.canonicalFacts.scopeConflicts);let ad=d.requiredFacts.filter(a=>!ac.some(b=>(0,cf.Lk)(b,a))),ae=0,af=(0,P.kO)(a.understanding.bidComposition),ag=F?[F.graphWorks.length?`图谱识别本章工程内容:${F.graphWorks.join("、")}`:"",F.graphMethods.length?`图谱识别本章施工方法:${F.graphMethods.join("、")}`:"",F.graphBoqItems.length?`图谱识别本章BOQ清单项(${F.graphBoqItems.length}项):${F.graphBoqItems.map(a=>`${a.name} ${a.quantity}${a.unit}`).join("、")}`:"",F.gaps.length?`图谱识别本章资料缺口:${F.gaps.join(";")}`:""].filter(Boolean).join("\n"):"",ah=(0,n.Bf)(a.understanding.canonicalFacts.scopeConflicts),ai=(()=>{if(0===a.blueprint.requirementAssignments.length)return"";let b=(0,aC.NT)(d.title),c=a.blueprint.requirementAssignments.filter(a=>a.chapterTitle===b).map(a=>a.entry);return(0,aC.HF)(c)})(),aj=(()=>{if(0===a.blueprint.structureAssignments.length)return"";let b=(0,aC.NT)(d.title),c=a.blueprint.structureAssignments.filter(a=>a.chapterTitle===b).map(a=>a.requirement);return(0,aC.FR)(c,{bodyTableForbidden:(0,P._C)(a.understanding.bidComposition),bodyFigureForbidden:af})})(),ak=a.planning.chapterIntentClassifier.needsDustControl(d.title)||a.planning.chapterIntentClassifier.needsDustControl(`${d.title}${d.purpose||""}`)?"【扬尘治理六个百分百——规范固定条目,必须逐项落实并写入正文,每项一句具体措施,六项不得缺项;若本项目无拆迁工程,对“拆迁工地100%湿法作业”必须显性写明“本项目无拆迁工程,不涉及拆迁工地湿法作业”,不得省略】\n- 施工工地周边100%围挡\n- 物料堆放100%覆盖\n- 出入车辆100%冲洗\n- 施工现场地面100%硬化\n- 拆迁工地100%湿法作业\n- 渣土车辆100%密闭运输":"",al=(d.sections||[]).filter(a=>!/^(?:施工概况|施工流程|施工方法)$/u.test(a.trim())&&!/^附录/u.test(a.trim())),am=al.length>0?`【必须输出以下规划小节为三级标题(### 小节名),逐个小节展开正式正文:每小节正文不少于 100 字,不得只写标题、不得空小节、不得用表格替代正文;小节名与章标题相同或相近也必须输出,不得省略或合并】${al.join("、")}`:"",an=a.blueprint.billFactLock?(0,s.uD)(a.blueprint.billFactLock,d.title,{sections:d.sections||[]}):"",ao=a.blueprint.billFactLock?(0,s.zK)(a.blueprint.billFactLock,b,d.title):[],ap=a.blueprint.drawingFactLock?(0,bW.pH)(a.blueprint.drawingFactLock,d.title,{sections:d.sections||[]}):"",aq=function(a,b,c={}){let d=function(a,b,c={}){let{usable:d}=y(a);if(0===d.length)return[];let e=z(b,c.sections||[]);return 0===e.length?[]:d.map(a=>({fact:a,score:A(a,e)})).filter(a=>a.score>0).sort((a,b)=>b.score-a.score||String(a.fact.key).localeCompare(String(b.fact.key),"zh")||String(a.fact.value).localeCompare(String(b.fact.value),"zh")).map(a=>a.fact)}(a,b,c);if(0===d.length)return[];let e=Math.max(1,c.maxChars??3600),f=[],g=0;for(let a of d){let b=a.fieldName&&a.fieldName!==a.key?`(${a.fieldName})`:"",c=`- ${a.key}${b}:${String(a.value).slice(0,80)}`;if(g+c.length+1>e)break;f.push(c),g+=c.length+1}let h=d.slice(f.length);return 0===f.length?[]:[`【本章可靠参数清单(资料事实链参数索引:${d.length} 项与本章相关的规格/参数/数量/时间/比例/标准编号,须逐项在正文对应位置自然写入,保持原值原形态(数字、单位、编号中的连字符与年份不得改写、拆分或省略);商务金额/单价/税率/预留金类数据一律不得写入正文)】`,...f,...h.length>0?[`- 另需落位(仅列名,共${h.length}项,须同样逐项写入正文):${h.map(a=>String(a.key)).join("、")}`]:[]]}(a.understanding.preliminaryFactsModel,d.title,{sections:d.sections||[]}),ar=function(a,b){let c=b.indexOf(a),d=(a,b)=>`${(0,bg.tb)(a,b.title)}${b.sections?.length?`(小节:${b.sections.join("、")})`:""}`,e=b.map((a,b)=>({item:a,index:b})).filter(b=>b.item!==a);return["【跨章写作职责分工——只就本章主题展开,写时即不产生跨章重复】",`- 本章职责:${d(c>=0?c:0,a)}`,...e.length>0?["- 其他章节职责(不得展开复述其主题内容):",...e.map(a=>` - ${d(a.index,a.item)}`)]:[],"- 写作规范:只就本章主题展开;其他章节主题的内容如需关联,一句话引用(“详见第X章”,X 替换为实际章号),不得展开复述;篇幅以本节合同字数为准,不得借写其他章节主题充数。"].join("\n")}(d,a.planning.effectiveChapters),as=/施工方法|施工方案|施工工艺|主要施工内容|分部分项/u.test(d.title)?(()=>{let b=(0,V.Hp)((0,V.v7)(a.understanding.preliminaryFactsModel));return b?`【本章必须覆盖的清单分部分项全景(下列专有分项逐项写入正文施工方法,不得只写道路/铺装/绿化等大类而遗漏清单独有分项)】
56
+ ${function(a,b=6e3){return[a.match(/#{2,3}\s*[^\n]*(?:重难点|重点难点|工程难点|难点分析)[^\n]*\n[\s\S]{0,3500}/u)?.[0]||"",a.replace(/#{1,6}\s+[^\n]*\n/gu,"").replace(/\s+/gu," ").slice(0,b)].filter(Boolean).join("\n\n").slice(0,b+4e3)}(a.markdown)}`,'返回 JSON:{"issues":["问题1","问题2"]}'];try{let b=await (0,cl.bb)((0,O.y4)('你是招标技术标评审专家。对施工组织设计做语义级复核,只报告确定性规则覆盖不到的语义问题。\n复核维度(按《施工组织设计全维度校验提示词》判定标尺):\n1. 重难点三级判定:识别精准性(是否点明本项目真实难点而非泛泛而谈)→ 归因合理性(是否说明难点成因/风险来源)→ 对策匹配度(对策是否针对该难点的成因,而非通用措施堆砌);\n2. 术语等效性:同一对象是否前后术语一致(如"砼"与"混凝土"混用需统一),是否出现词面不同但概念等效的双重标准表述;\n3. 四新技术升级价值:若正文声称采用四新技术,其价值表述是否停留在"提升效率"式套话,缺少可对标官方推广目录或替代落后工艺的实质说明。\n每条问题必须包含:问题所在内容简述+判定依据(对应上面哪条维度)+一句话改进建议。\n只报告真实存在的问题,正文无问题时返回空数组;不得编造问题。只返回 JSON。'),d.join("\n\n"),{maxTokens:1200,temperature:0,signal:a.signal,diagnostics:a.diagnostics,taskKind:"structuredGeneration"});return{issues:Array.isArray(b?.issues)?b.issues.filter(a=>"string"==typeof a&&a.length>0):[],reviewed:!0}}catch(a){return{issues:[`⚠ 语义级模板化复核未完成(模型调用失败,本项未复核):${a instanceof Error?a.message:String(a)}`],reviewed:!1}}}var eu=c(73024),ev=c.n(eu),ew=c(76760),ex=c.n(ew),ey=c(48661);function ez(a){return Math.round(10*a)/10}function eA(a,b){let c=a.replace(/\s+/gu," ").trim();return c.length>b?`${c.slice(0,b)}…`:c}let eB={success:"通过",failed:"失败",skipped:"跳过",running:"进行中"},eC={blind:"暗标",open:"明标",unknown:"未判定(按明标口径)"};async function eD(a){var b;a.reviewChecklist=[{key:"export-gate",label:"导出门禁",passed:(b={exportGate:a.qualityBundle.finalExportGate,qualityReport:a.qualityBundle.qualityReport,repairStrategies:a.qualityBundle.repairStrategies}).exportGate.passed,message:b.exportGate.passed?"导出门禁通过":`仍有 ${b.exportGate.blockingIssues.length} 个阻断问题`},{key:"delivery-probability",label:"交付置信度",passed:b.qualityReport.passed,message:`${b.qualityReport.deliveryProbability}% / ${b.qualityReport.target}%`},{key:"completeness",label:"资料完整性",passed:b.qualityReport.scores.completeness>=85,message:`${b.qualityReport.scores.completeness}/100`},{key:"specificity",label:"方案针对性",passed:b.qualityReport.scores.specificity>=85,message:`${b.qualityReport.scores.specificity}/100`},{key:"compliance",label:"合规性",passed:b.qualityReport.scores.compliance>=80,message:`${b.qualityReport.scores.compliance}/100`},{key:"repair-strategies",label:"修复策略",passed:0===b.repairStrategies.filter(a=>"high"===a.priority).length,message:b.repairStrategies.map(a=>a.title).join("、")||"无高优先级修复策略"}];let c=(0,R.Ff)(a.validationIssues);a.generationDiagnostics.quality.blockingCount+=c.blocking,a.generationDiagnostics.quality.importantCount+=c.important,a.generationDiagnostics.quality.minorCount+=c.minor,a.telemetry=function(a){let b=[...a.diagnostics.metrics].sort((a,b)=>b.durationMs-a.durationMs).slice(0,5).map(a=>({name:a.name,durationMs:a.durationMs})),c={};for(let[b,d]of Object.entries(a.diagnostics.llm.patchGuardStats||{}))c[b]={hits:d.hits+d.rejects,repaired:d.hits,failed:d.rejects+(d.rollbacks??0)};return{llmCalls:a.diagnostics.llm.calls,llmFailures:a.diagnostics.llm.failures,maxParallelLlm:a.diagnostics.llm.maxActive,searchQueries:a.diagnostics.evidence.searchQueries,evidenceContextChars:a.diagnostics.evidence.contextChars,qualityIssues:{...a.diagnostics.quality},slowMetrics:b,elapsedMs:a.startedAt&&a.endedAt?a.endedAt-a.startedAt:void 0,repairHeat:Object.keys(c).length>0?c:void 0}}({diagnostics:a.generationDiagnostics});let d=a.qualityBundle.finalExportGate.blockingIssues.length,e=(a.generationDiagnostics.evidence.retrievalFailures??0)>0?`,⚠ 检索失败 ${a.generationDiagnostics.evidence.retrievalFailures} 次(非「无命中」,请看进度中的 failed 事件)`:"",f=(a.generationDiagnostics.evidence.pinnedEvidenceMissed??0)>0?`,⚠ 固定证据未命中 ${a.generationDiagnostics.evidence.pinnedEvidenceMissed} 处(资料包绑定漂移)`:"";a.telemetry.qualityIssues.blockingCount=d,a.professionalScore=await es(a.finalChapterDrafts,a.finalMarkdown,{templating:a.qualityBundle.qualityReport.templating}),a.templatingReview=a.qualityBundle.qualityReport.templating?await a.withProgressHeartbeat(()=>et({templating:a.qualityBundle.qualityReport.templating,markdown:a.finalMarkdown,diagnostics:a.generationDiagnostics,signal:a.signal})):{issues:[],reviewed:!1},a.finalStages=[...a.executionStages,...a.finalGateRepairStages],a.suspensionChecklist=a.qualityBundle.finalExportGate.passed?void 0:(0,i.aF)(a.qualityBundle.finalExportGate.blockingIssues,a.finalChapterDrafts),a.finalStages.push((0,q.X5)({type:"validation",roleId:"agent-final-gate",status:a.qualityBundle.finalExportGate.passed?"success":"failed",message:a.qualityBundle.finalExportGate.passed?"Agent 最终门禁通过":`Agent 最终门禁未通过 ${d} 个问题(不计入交付阻断,文档照常可导出;人工复核清单见明细)`,details:a.suspensionChecklist?(0,i.$w)(a.suspensionChecklist):[]},{subtitle:"Agent 最终门禁"}));let g=a.qualityBundle.qualityReport.deliveryProbability<70;a.finalStages.push((0,q.X5)({type:"validation",roleId:"document-delivery-score",status:a.qualityBundle.qualityReport.passed?"success":a.qualityBundle.finalExportGate.passed?"skipped":"failed",message:a.qualityBundle.finalExportGate.passed&&!a.qualityBundle.qualityReport.passed?`${a.qualityBundle.qualityReport.summary}${g?";置信度低于 70%,建议完成续修后再交付归档":"(导出门禁已通过,作为后续优化建议归档)"}`:a.qualityBundle.qualityReport.summary,details:g&&a.qualityBundle.finalExportGate.passed?[...a.qualityBundle.qualityReport.actions,"续修建议:交付置信度低于 70% 门槛,建议按交付复核清单补齐短板维度后重新生成或续修。"]:a.qualityBundle.qualityReport.actions},{subtitle:"交付评分"})),a.finalStages.push((0,q.X5)({type:"validation",roleId:"document-professional-score",status:"专业"===a.professionalScore.grade||"良好"===a.professionalScore.grade?"success":"skipped",message:a.professionalScore.summary,details:[...a.professionalScore.dimensions.map(a=>`${a.label}:${a.score} 分(${a.detail})`),...a.professionalScore.topIssues.map(a=>`待修复:${a}`)]},{subtitle:"专业度评分"})),a.qualityBundle.qualityReport.templating&&"light"!==a.qualityBundle.qualityReport.templating.level&&a.finalStages.push((0,q.X5)({type:"validation",roleId:"document-templating-report",status:"skipped",message:`模板化检测:${"heavy"===a.qualityBundle.qualityReport.templating.level?"重度":"中度"}模板化(套话句占比 ${(100*a.qualityBundle.qualityReport.templating.fillerRatio).toFixed(1)}%,重难点归因+量化双达标占比 ${(100*a.qualityBundle.qualityReport.templating.difficultyCountermeasureRatio).toFixed(0)}%,模糊应答词 ${a.qualityBundle.qualityReport.templating.vagueHitCount} 处)`,details:a.templatingReview.issues},{subtitle:"模板化检测"})),a.writingTaskBrief&&a.finalStages.push((0,q.X5)({type:"reference",roleId:"document-writing-task-brief",status:"success",message:`写作任务书:${a.writingTaskBrief.documentType},${a.writingTaskBrief.chapters.length} 章任务卡,全局写作焦点 ${a.writingTaskBrief.globalWritingFocus.length} 条`,details:[...a.writingTaskBrief.globalWritingFocus,...a.writingTaskBrief.chapters.slice(0,10).map(a=>`${a.chapterTitle}:覆盖 ${a.mustCover.length} 项`)],subtitle:"写作任务书"})),a.finalStages.push((0,q.X5)({type:"reference",roleId:"knowledge-coverage",status:a.qualityBundle.knowledgeCoverage.score>=85?"success":"failed",message:`资料确认覆盖率:${a.qualityBundle.knowledgeCoverage.score}%(证据 ${a.qualityBundle.knowledgeCoverage.evidenceCount} 条,文件 ${a.qualityBundle.knowledgeCoverage.confirmedFiles} 份)`,details:[a.qualityBundle.knowledgeCoverage.remediation]},{subtitle:"资料覆盖"})),a.finalStages.push((0,q.X5)({type:"validation",roleId:"document-review-checklist",status:a.reviewChecklist.every(a=>a.passed)?"success":a.qualityBundle.finalExportGate.passed?"skipped":"failed",message:`交付复核清单:通过 ${a.reviewChecklist.filter(a=>a.passed).length}/${a.reviewChecklist.length}${a.qualityBundle.finalExportGate.passed&&!a.reviewChecklist.every(a=>a.passed)?"(导出门禁已通过,其余项作为优化建议归档)":""}`,details:a.reviewChecklist.map(a=>`${a.passed?"通过":"待修复"}:${a.label}${a.message?`(${a.message})`:""}`)},{subtitle:"交付复核"}));let h=(0,k._8)(a.generationDiagnostics.metrics),j=(0,k.bz)(a.generationDiagnostics.llm.callBreakdown),m=a.generationDiagnostics.factSanitize?`,事实净化 截断${a.generationDiagnostics.factSanitize.truncated}/丢弃${a.generationDiagnostics.factSanitize.dropped}/编号补全${a.generationDiagnostics.factSanitize.repaired}`:"";if(a.finalStages.push((0,q.X5)({type:"validation",roleId:"document-diagnostics",status:"success",message:`性能统计:LLM ${a.generationDiagnostics.llm.calls} 次,失败 ${a.generationDiagnostics.llm.failures} 次,瞬态重试 ${a.generationDiagnostics.llm.retries} 次,schema 校验失败 ${a.generationDiagnostics.llm.schemaFailures} 次,峰值并行 ${a.generationDiagnostics.llm.maxActive},检索 ${a.generationDiagnostics.evidence.searchQueries} 次/${Math.round(a.generationDiagnostics.evidence.searchMs/1e3)} 秒,证据上下文 ${a.generationDiagnostics.evidence.contextChars} 字,噪声过滤 ${a.generationDiagnostics.evidence.filteredNoise} 条,预算裁剪 ${a.generationDiagnostics.evidence.budgetDropped} 条,质量问题 阻断${a.generationDiagnostics.quality.blockingCount}/重要${a.generationDiagnostics.quality.importantCount}/轻微${a.generationDiagnostics.quality.minorCount}${m}${e}${f}${h?`,Top耗时:${h}`:""}${j?`,调用输入Top5:${j}`:""}`,details:[...(0,k.Il)(a.generationDiagnostics.metrics),...(0,k.NJ)(a.generationDiagnostics.llm.callBreakdown)]},{subtitle:"后台诊断"})),a.documentId)try{let b=function(a){let b=a.qualityReport,c=a.exportGate,d=new Date(a.generatedAt??Date.now()),e=b.mode?eC[b.mode]:"未判定(按明标口径)",f=[];f.push(`# 交付三件套报告:${a.title}`),f.push(""),f.push(`> 文档 ID:${a.documentId??"未提供"};生成时间:${d.toISOString()}`),f.push(`> 评分口径:${bZ}(主尺=六维;招标六项/专业分为从属展示口径)`),f.push(`> 导出门禁:${c.passed?"通过":`未通过(${c.blockingIssues.length} 项阻断,文档照常可导出,人工复核清单见下)`};标书类型:${e}`),f.push(""),f.push("## 一、评分报告"),f.push(""),f.push("### 1.1 六维质量评分(主尺)");let g=b.dimensions||[];if(g.length>0)for(let a of(f.push("| 维度 | 得分 | 权重 | 构成明细 |"),f.push("|---|---|---|---|"),g))f.push(`| ${a.label} | ${a.score} | ${Math.round(100*a.weight)}% | ${a.detail??"—"} |`);else f.push("- (六维构成明细缺失——评级输入不完整,仅综合分可用)");if(f.push(`- 综合评分:**${b.overall}**/100;交付置信度 **${b.deliveryProbability}%** / 目标 ${b.target}%;低雷同性 ${b.scores?.uniqueness??"—"}${b.passed?";已达当前质量目标":";未达目标(按第三节预估路径补强)"}`),f.push(""),f.push("### 1.2 专业度评分(从属口径,交付主尺见六维)"),f.push(`- 总分 ${a.professionalScore.total}/100(${a.professionalScore.grade}):${a.professionalScore.summary}`),a.professionalScore.dimensions.length>0)for(let b of(f.push(""),f.push("| 维度 | 得分 | 权重 | 明细 |"),f.push("|---|---|---|---|"),a.professionalScore.dimensions))f.push(`| ${b.label} | ${b.score} | ${Math.round(100*b.weight)}% | ${b.detail} |`);if(a.professionalScore.topIssues.length>0)for(let b of(f.push(""),f.push("待修复:"),a.professionalScore.topIssues.slice(0,12)))f.push(`- ${eA(b,220)}`);if(f.push(""),f.push("### 1.3 阻断明细(终门禁)"),0===c.blockingIssues.length)f.push("- 无阻断:终检检测器全部通过。");else for(let a of c.blockingIssues){let b=a.severity?`[${a.severity}]`:`[${a.level}]`,c=a.chapterId?`(章:${a.chapterId}${a.sectionTitle?` / ${a.sectionTitle}`:""})`:"";f.push(`- ${b} ${eA(a.message,320)}${c}`),a.suggestion&&f.push(` - 建议:${eA(a.suggestion,260)}`)}if(c.checklist.length>0){let a=c.checklist.filter(a=>!a.passed);f.push(""),f.push(`- 门禁复核清单:通过 ${c.checklist.length-a.length}/${c.checklist.length}${a.length>0?`;未过项:${a.slice(0,10).map(a=>a.label).join("、")}${a.length>10?` 等 ${a.length} 项`:""}`:""}`)}for(let b of(f.push(""),f.push("## 二、进度(阶段/耗时/修复轮次)"),f.push(""),f.push(`### 2.1 阶段执行(共 ${a.stages.length} 个阶段)`),a.stages)){let a=b.subtitle||b.roleId,c=b.message?`:${eA(b.message,240)}`:"";f.push(`- [${eB[b.status]}] ${a}${c}`)}f.push(""),f.push("### 2.2 耗时(按耗时降序)");let h=[...a.metrics].sort((a,b)=>b.durationMs-a.durationMs);if(0===h.length)f.push("- (无性能指标记录)");else for(let a of h){var i;f.push(`- ${a.name}:${!Number.isFinite(i=a.durationMs)||i<0?"0ms":i<1e3?`${Math.round(i)}ms`:i<6e4?`${(i/1e3).toFixed(1)}s`:`${(i/6e4).toFixed(1)}min`}`)}for(let b of(f.push(""),f.push("### 2.3 修复轮次(detectorFixerRegistry 轮序声明表口径)"),l.rk)){let c=[...a.stages].reverse().find(a=>a.roleId===b);if(c){let a=c.message?` — ${eA(c.message,200)}`:"";f.push(`- ${b}:${eB[c.status]}${a}`)}else f.push(`- ${b}:未记录(无触发或静默通过)`)}f.push(""),f.push("## 三、下轮预估目标(按当前六维缺口)"),f.push("");let j=function(a){let b=(a.dimensions||[]).filter(a=>Number.isFinite(a.score)&&Number.isFinite(a.weight)&&a.weight>0);if(0===b.length)return;let c=b.reduce((a,b)=>a+b.weight,0),d=ez(b.reduce((a,b)=>a+b.score*b.weight,0)/c),e=Math.min(1,(a.scores?.uniqueness??90)/90),f=b.map(a=>({key:a.key,label:a.label,score:a.score,gap:Math.max(0,100-a.score),effectiveGain:ez(Math.max(0,100-a.score)*(a.weight/c)*e),detail:a.detail})).sort((a,b)=>b.effectiveGain-a.effectiveGain||a.label.localeCompare(b.label,"zh-Hans-CN")),g=ez(a.target-a.overall),h=null;if(g>0){let b=[],c=0;for(let a of f)if(a.effectiveGain<=0||(b.push(a),(c=ez(c+a.effectiveGain))>=g))break;h={target:a.target,gap:g,picks:b,covered:c}}return{dimensions:f,currentWeighted:d,uniquenessFactor:e,projectedOverall:Math.min(100,Math.round(100*e)),pathToTarget:h}}(b);if(j){for(let a of(f.push("| 维度 | 当前分 | 提升空间 | 对综合分贡献 | 补强方向 |"),f.push("|---|---|---|---|---|"),j.dimensions))f.push(`| ${a.label} | ${a.score} | ${a.gap>0?`+${a.gap}`:"0(满分)"} | ${a.effectiveGain>0?`+${a.effectiveGain.toFixed(1)}`:"0"} | ${a.detail?eA(a.detail,120):"—"} |`);f.push(`- 当前加权综合分:${j.currentWeighted.toFixed(1)}/100(uniqueness 因子 ${j.uniquenessFactor.toFixed(2)})`);let a=j.projectedOverall<b.target;if(f.push(`- 预计总分上限:**${j.projectedOverall}**/100(全维补满、uniqueness 不变的理论口径${a?`;低于目标 ${b.target}——受低雷同性因子 ${j.uniquenessFactor.toFixed(2)} 约束,需同步提升 uniqueness`:""};实际以重生成/续修产物复评)`),j.pathToTarget){let{target:a,gap:b,picks:c,covered:d}=j.pathToTarget,e=c.map(a=>`${a.label}(+${a.effectiveGain.toFixed(1)})`).join(" → ");d>=b?f.push(`- 达标路径(目标 ${a}):补强 ${e},合计 +${d.toFixed(1)} ≥ 缺口 ${b.toFixed(1)}。`):f.push(`- 达标路径(目标 ${a}):补强 ${e},合计 +${d.toFixed(1)} < 缺口 ${b.toFixed(1)}——六维补满仍不足,须按上限提示先提升低雷同性(uniqueness)再复评。`)}else f.push(`- 当前已达目标 ${b.target},无需补强路径(维持口径与阻断清零即可)。`)}else f.push("- 六维构成明细缺失,无法计算下轮预估(降级不猜数;补全评级输入后自动生成)。");return f.push(""),f.join("\n")}({documentId:a.documentId,title:a.template.outputTitle,qualityReport:a.qualityBundle.qualityReport,professionalScore:a.professionalScore,exportGate:a.qualityBundle.finalExportGate,stages:a.finalStages,metrics:a.generationDiagnostics.metrics}),c=function(a,b,c){let d=function(a,b){let c=b.trim().replace(/[^A-Za-z0-9_-]/gu,"_");if(!c)throw Error("交付报告文件名缺少文档 ID");return ex().join((0,ey.Gl)(a),"reports",`${c}-review.md`)}(a,b);ev().mkdirSync(ex().dirname(d),{recursive:!0});let e=`${d}.${process.pid}.${Date.now()}.tmp`;return ev().writeFileSync(e,c,"utf8"),ev().renameSync(e,d),d}(a.projectRoot,a.documentId,b),d=a.qualityBundle.finalExportGate.blockingIssues.length;a.finalStages.push((0,q.X5)({type:"reference",roleId:"delivery-review-report",status:"success",message:`交付三件套报告已产出:${c}`,details:[a.qualityBundle.qualityReport.summary,`专业度(从属口径):${a.professionalScore.summary}`,`阻断:${d} 项${d>0?"(人工复核清单随报告归档,不阻断交付)":"(终检检测器全部通过)"}`,"下轮预估目标:按当前六维缺口计算各维提升空间与达标路径(见报告第三节)"]},{subtitle:"交付报告"}))}catch(c){let b=c instanceof Error?c.message:String(c);a.finalStages.push((0,q.X5)({type:"reference",roleId:"delivery-review-report",status:"failed",message:`交付三件套报告产出失败(不阻断交付):${b}`},{subtitle:"交付报告"}))}}let eE={prefixCacheHitRateFloor:.4,budgetDropRatioCeiling:.3,llmFailureRateCeiling:.1};async function eF(a){let b=function(a){let b=[],c=a.llm.promptCacheHitTokens??0,d=c+(a.llm.promptCacheMissTokens??0),e=d>0?c/d:null;null!==e&&e<eE.prefixCacheHitRateFloor&&b.push(`固定前缀缓存命中率 ${(100*e).toFixed(1)}% 低于 40%:固定前缀未收敛,检查 L0/L2 恒定段结构`);let f=a.llm.reasoningTokens??0;f>0&&b.push(`推理 token 累计 ${f}:disableThinking 未生效,检查模型 provider 配置`);let g=a.evidence.raw>0?a.evidence.budgetDropped/a.evidence.raw:null;null!==g&&g>eE.budgetDropRatioCeiling&&b.push(`证据预算裁剪 ${(100*g).toFixed(1)}%(${a.evidence.budgetDropped}/${a.evidence.raw}):裁剪过重,疑似预算配置失配`);let h=a.llm.calls>0?a.llm.failures/a.llm.calls:null;return null!==h&&h>eE.llmFailureRateCeiling&&b.push(`LLM 失败率 ${(100*h).toFixed(1)}%(${a.llm.failures}/${a.llm.calls}):失败率偏高,检查限流与重试策略`),{alerts:b,metrics:{prefixCacheHitRate:e,reasoningTokens:f,budgetDropRatio:g,llmFailureRate:h}}}(a.generationDiagnostics),c=process.memoryUsage(),d=Math.round(c.rss/1048576),e=Math.round(c.heapUsed/1048576),f=function(){let a=Number(process.env.DOCUMENT_MEMORY_ALERT_MB??3072);return Number.isFinite(a)&&a>0?a:3072}();console.log(`[gen] memory(finalize) rss=${d}MB heap=${e}MB threshold=${f}MB`);let g=d>=f?[...b.alerts,`进程内存 rss=${d}MB 超过告警阈值 ${f}MB:大文档生成建议 NODE_OPTIONS=--max-old-space-size=4096,并控制并发生成任务数(DOCUMENT_MAX_CONCURRENT_GENERATIONS)`]:b.alerts;a.telemetry.healthAlerts=g,0!==g.length&&a.finalStages.push((0,q.X5)({type:"validation",roleId:"document-health-diagnosis",status:"skipped",message:`自动健康诊断:${g.length} 项告警(不阻断,供配置优化参考)`,details:g},{subtitle:"健康诊断"}))}async function eG(a){var b;(0,l.wF)();let{chapterDraftsByOrder:c,chapterGenerationStagesByOrder:d,chapterGenerationStages:e,effectiveChapters:f,input:m,failedChapterMessages:n}=a,{requirement:p}=m,q=function(a){let{signal:b,requirement:c}=a.input;return{input:a,template:a.template,effectiveChapters:a.effectiveChapters,requirement:c,signal:b,projectRoot:a.projectRoot,projectId:a.projectId,documentId:a.documentId,projectMaterialSummary:a.projectMaterialSummary,documentSpec:a.documentSpec,documentBudget:a.documentBudget,promptBindings:a.promptBindings,promptDocumentRules:a.promptDocumentRules,domainProfile:a.domainProfile,scopeConflicts:a.scopeConflicts,evaluationCriteriaItems:a.evaluationCriteriaItems,tenderRequirements:a.tenderRequirements,requirementAssignments:a.requirementAssignments,requirementsSimilarity:a.requirementsSimilarity,factTokenScopeClassifier:a.factTokenScopeClassifier,professionalDepthClassifier:a.professionalDepthClassifier,blueprintData:a.blueprintData,bidComposition:a.bidComposition,billFactLock:a.billFactLock,drawingFactLock:a.drawingFactLock,requirementSemantics:a.requirementSemantics,generationDiagnostics:a.generationDiagnostics,repairPromptTexts:a.repairPromptTexts,progressStages:a.progressStages,chapterGenerationStages:a.chapterGenerationStages,emitProgress:a.emitProgress,withProgressHeartbeat:a.withProgressHeartbeat,missingItems:a.missingItems,failedChapterMessages:a.failedChapterMessages,indexHealth:a.indexHealth,webResearchReport:a.webResearchReport,retrievalCoverageReports:a.retrievalCoverageReports,writingTaskBrief:a.writingTaskBrief,globalConsistencyIssues:a.globalConsistencyIssues,agentWorkflow:a.agentWorkflow,factExtractionPromptTexts:a.factExtractionPromptTexts,readiness:a.readiness,allEvidence:a.allEvidence,facts:{},structuredFacts:[],governedStructuredFacts:[],factsModel:void 0,chapterDrafts:[],finalChapterDrafts:[],finalMarkdown:"",validationIssues:[],baseValidationIssues:[],executionStages:[],finalGateRepairStages:[],sources:[],qualityBundle:void 0,scheduleAuthority:void 0,assemblyRateAuthority:void 0,scaleSummary:void 0,supportAuthority:void 0,laborPeakAuthority:void 0,greeningMaintenanceAuthority:void 0,surfaceFixContext:{laborPeakAuthority:void 0,greeningMaintenanceAuthority:void 0,resourceBreakdownAuthority:void 0,supportFormAuthority:void 0},decisionLockEntries:[],finalStages:[],reviewChecklist:[],telemetry:void 0,professionalScore:void 0,templatingReview:{issues:[],reviewed:!1},assets:[],validation:void 0,rebuildFinalMarkdown:()=>"",recomputeFinalValidationBundle:async()=>void 0}}(a),s=c.filter(a=>!!a);q.chapterDrafts=s,e.push(...d.filter(a=>!!a));let t=0===(b={chapterDraftCount:s.length,failedChapterMessages:n}).chapterDraftCount?`章节生成未完成:${b.failedChapterMessages.join(";")||"没有生成任何有效章节"}`:null;if(t)throw Error(t);await r(q),await cP(q);let u=(0,P._C)(q.bidComposition),v=(0,P.kO)(q.bidComposition),w=q.bidComposition?.formatRules.cover==="forbidden",x=(0,O.rs)((0,O.V3)({templateId:q.template.id,templateName:q.template.name,title:q.template.outputTitle,requirement:q.requirement||"",projectRoot:q.projectRoot,projectId:q.projectId,exportSettings:q.template.exportSettings,generationSettings:q.template.generationSettings,facts:q.facts,structuredFacts:q.structuredFacts,factsModel:q.factsModel,chapters:q.chapterDrafts,sources:q.sources,missingItems:[...new Set(q.missingItems)],validation:q.validation,validationIssues:q.validationIssues,executionStages:q.executionStages,exportGate:{passed:!1,blockingIssues:[],checklist:[]},assets:q.assets,partialChapters:q.chapterDrafts.map(a=>({id:a.id,title:a.title,chars:(0,h.V7)(a.content),status:(0,k.DR)(a,q.documentBudget.chapterTargets.get(a.id)),updatedAt:Date.now()})),checkpointChapters:q.chapterDrafts,generatedAt:Date.now()},{forbidDrawingImages:v,promptRules:q.promptDocumentRules,bodyTableForbidden:u,coverForbidden:w}),q.chapterDrafts,{forbidDrawingImages:v,promptRules:q.promptDocumentRules,bodyTableForbidden:u,coverForbidden:w});q.finalChapterDrafts=x.chapters.map(a=>{let b=q.effectiveChapters.find(b=>b.id===a.id)||a;return{...a,sections:a.sections||[],content:(0,k.w_)(a.content,b)}}),q.finalMarkdown=(0,O.rs)((0,O.V3)({templateId:q.template.id,templateName:q.template.name,title:q.template.outputTitle,requirement:q.requirement||"",projectRoot:q.projectRoot,projectId:q.projectId,exportSettings:q.template.exportSettings,generationSettings:q.template.generationSettings,facts:q.facts,structuredFacts:q.structuredFacts,factsModel:q.factsModel,chapters:q.finalChapterDrafts,sources:q.sources,missingItems:[...new Set(q.missingItems)],validation:q.validation,validationIssues:q.validationIssues,executionStages:q.executionStages,exportGate:{passed:!1,blockingIssues:[],checklist:[]},assets:q.assets,partialChapters:[],checkpointChapters:q.finalChapterDrafts,generatedAt:Date.now()},{forbidDrawingImages:v,promptRules:q.promptDocumentRules,bodyTableForbidden:u,coverForbidden:w}),q.finalChapterDrafts,{forbidDrawingImages:v,promptRules:q.promptDocumentRules,bodyTableForbidden:u,coverForbidden:w}).markdown,q.finalMarkdown=(0,o._D)((0,k.Ht)((0,O.bR)((0,k.Xr)((0,O.kT)((0,O.K7)(cK((0,k.jO)(q.finalMarkdown,q.structuredFacts,{bodyTableForbidden:u}),q.projectMaterialSummary))))))).markdown,u||(q.finalMarkdown=(0,bV.TG)((0,bV.lj)(q.finalMarkdown)),q.finalMarkdown=(0,bV.Vp)((0,bV.n3)(q.finalMarkdown,cQ(q)).markdown)),q.finalMarkdown=(0,Q.u7)(q.finalMarkdown,{plan:q.bidComposition?.appendixPlan||[],blueprintData:q.blueprintData}),await cS(q),await cT(q),await dj(q),await dk(q),await dm(q),await ag(q),await dL(q),await dW(q),await d7(q),await d9(q),await eb(q),await dP(q),await ef(q),await dV(q),await eg(q),await eh(q),await ei(q),await ej(q),await ek(q),await el(q),await dS(q),await dQ(q),await dR(q),await dO(q),await em(q),await en(q),await eo(q),await ep(q),await dT(q),await eD(q),await eF(q);let y=q.finalChapterDrafts.map(a=>({...a,evidence:(0,g.QR)(a.evidence||[],{preservePinned:!0})}));return q.finalChapterDrafts=y,{templateId:q.template.id,templateName:q.template.name,title:q.template.outputTitle,requirement:p||"",projectRoot:q.projectRoot,projectId:q.projectId,exportSettings:q.template.exportSettings,generationSettings:q.template.generationSettings,facts:q.facts,structuredFacts:q.structuredFacts,factsModel:q.factsModel,chapters:y,sources:q.sources,missingItems:[...new Set(q.missingItems)],validation:q.validation,validationIssues:q.validationIssues,exportGate:q.qualityBundle.finalExportGate,executionStages:q.finalStages,assets:q.assets,partialChapters:q.finalChapterDrafts.map(a=>({id:a.id,title:a.title,chars:(0,h.V7)(a.content),status:(0,k.DR)(a,q.documentBudget.chapterTargets.get(a.id)),updatedAt:Date.now()})),checkpointChapters:y,promptRules:q.promptDocumentRules,agentWorkflow:q.agentWorkflow,reviewMetadata:{chapterSummaries:[],globalIssues:[],diagnostics:q.generationDiagnostics,profile:function(a){let b=`${a.template.name} ${a.template.outputTitle||""} ${a.requirement||""} ${a.chapters.map(a=>a.title).join(" ")}`,c=[{pattern:/专项施工|危大|专项方案/u,type:"专项施工方案",dimensions:["专项对象边界","工艺参数","风险控制","验收要求","应急措施"]},{pattern:/投标|技术标|响应|招标/u,type:"投标技术方案",dimensions:["招标响应","技术优势","工期质量安全承诺","资源保障","履约可实施性"]},{pattern:/监理|旁站|巡视|平行检验/u,type:"监理规划/细则",dimensions:["监理目标","旁站巡视","平行检验","验收程序","资料签认"]},{pattern:/可研|可行性|项目建议书|投资估算/u,type:"可研/项目建议类文档",dimensions:["建设必要性","方案比选","投资估算","风险分析","实施效益"]},{pattern:/运维|维护|保养|巡检/u,type:"运维维护方案",dimensions:["巡检频次","维护流程","故障响应","备品备件","记录闭环"]}].find(a=>a.pattern.test(b));return{type:c?.type||"施工组织设计/施工技术方案",dimensions:c?.dimensions||["工程概况","施工部署","进度质量安全","资源配置","施工工艺和验收闭环"],requiredEvidencePolicy:"本地知识库为完整事实源;系统暂未确认的事实必须通过扩大检索、事实补抽或落位修复解决,不得归因为用户资料缺失。"}}({template:q.template,chapters:f,requirement:p}),knowledgeCoverage:q.qualityBundle.knowledgeCoverage,factTraces:q.qualityBundle.factTraces,chapterCoverage:q.qualityBundle.chapterCoverage,retrievalCoverage:q.retrievalCoverageReports,qualityReport:q.qualityBundle.qualityReport,repairStrategies:q.qualityBundle.repairStrategies,reviewChecklist:q.reviewChecklist,professionalScore:q.professionalScore,templatingReviewIssues:q.templatingReview.issues,authorityAudit:q.authorityAuditReport,suspensionChecklist:q.suspensionChecklist??(q.qualityBundle.finalExportGate.passed?void 0:(0,i.aF)(q.qualityBundle.finalExportGate.blockingIssues,q.finalChapterDrafts)),writingTaskBrief:q.writingTaskBrief,workflowVersion:j.x,telemetry:q.telemetry},generatedAt:Date.now(),markdown:q.finalMarkdown,bidComposition:q.bidComposition}}var eH=c(71678),eI=c(29055);let eJ=[{id:"overview",title:"工程概况与总体理解",requiredSectionPatterns:[/编制依据|编制说明/u,/工程概况|项目概况|基本概况/u,/现场踏勘|施工条件|现场条件/u],chapterPatterns:[/概况|总体|理解|说明|编制|项目/u],remedy:"应设置工程概况章节,包含编制依据、工程基本概况、现场条件与总体理解。",level:"required"},{id:"major-content",title:"项目主要施工内容",requiredSectionPatterns:[/主要施工内容|主要施工项目|施工内容/u],chapterPatterns:[/概况|总体|理解|主要施工|工程/u],remedy:'必须包含"项目主要施工内容"小节,按工作包展开施工概况、施工流程、施工方法。',level:"required"},{id:"key-difficulty",title:"重难点分析与对策",requiredSectionPatterns:[/重点.*难点|难点.*对策|重难点/u],chapterPatterns:[/概况|总体|理解|重点|难点|施工/u],remedy:"应设置项目特点、重点、难点分析小节,并逐项给出应对措施与责任闭环。",level:"required"},{id:"deployment",title:"施工部署与施工组织",requiredSectionPatterns:[/施工部署|总体部署|流水|施工顺序|施工区段/u],chapterPatterns:[/部署|组织|总体|方案/u],remedy:"应设置施工部署小节,明确流水段划分、施工顺序与资源调配。",level:"required"},{id:"schedule",title:"进度计划与工期保障",requiredSectionPatterns:[/进度计划|工期|节点/u],chapterPatterns:[/进度|工期|计划|保障/u],remedy:"应设置进度计划与工期保障小节,含总进度计划、关键节点与纠偏措施。",level:"required"},{id:"quality",title:"质量保证体系与措施",requiredSectionPatterns:[/质量/u],chapterPatterns:[/质量|验收|保障|措施/u],remedy:"应设置质量保证体系与措施小节,含质量目标、三检、隐蔽验收、通病防治。",level:"required"},{id:"safety",title:"安全文明施工与危大工程管控",requiredSectionPatterns:[/安全/u,/危大工程|危大/u],chapterPatterns:[/安全|文明|风险|危大|保障|措施/u],remedy:"应设置安全管理与危大工程管控小节,含危险源辨识、危大清单、专项方案。",level:"required"},{id:"resources",title:"劳动力材料机械设备配置",requiredSectionPatterns:[/劳动力|机械设备|材料.*计划|资源配置|人材机/u],chapterPatterns:[/资源|劳动力|机械|材料|设备|计划/u],remedy:"应设置资源配置小节,含分阶段劳动力、机械设备投入与材料进场计划。",level:"required"},{id:"environment",title:"绿色文明施工与环保措施",requiredSectionPatterns:[/文明施工|扬尘|噪声|绿色|环保|四节/u],chapterPatterns:[/文明|绿色|环保|扬尘|噪声|保障|措施/u],remedy:"应设置文明施工与绿色施工小节,含扬尘噪声管控与四节一环保措施。",level:"required"},{id:"emergency",title:"应急管理体系",requiredSectionPatterns:[/应急/u],chapterPatterns:[/应急|安全|保障|措施/u],remedy:"应设置应急管理小节,含应急组织、物资储备与专项预案。",level:"recommended"}],eK={building:[{id:"key-difficulty",title:"危大工程专项管控(房建)",requiredSectionPatterns:[/深基坑|高支模|起重吊装|脚手架/u],chapterPatterns:[/危大|安全|专项/u],remedy:"房建项目应对深基坑、高支模、起重吊装、脚手架等危大工程逐项给出专项方案与安全管理措施。",level:"recommended"}],municipal:[{id:"key-difficulty",title:"交通导改与管线保护(市政)",requiredSectionPatterns:[/交通导改|交通导行|占道施工/u,/管线保护|管线探测/u],chapterPatterns:[/交通|管线|安全|专项|保障/u],remedy:"市政项目应设置交通导改与既有管线保护专项内容。",level:"recommended"}],renovation:[{id:"key-difficulty",title:"居民协调与既有保护(改造)",requiredSectionPatterns:[/居民|扰民|既有.*保护|不中断/u],chapterPatterns:[/居民|协调|保护|保障|专项/u],remedy:"改造项目应设置居民沟通协调与既有设施保护专项内容。",level:"recommended"}],decoration:[{id:"key-difficulty",title:"成品保护与交叉施工(装饰)",requiredSectionPatterns:[/成品保护/u,/交叉施工|工序穿插/u],chapterPatterns:[/成品保护|交叉|协调|保障|专项/u],remedy:"装饰项目应设置成品保护与交叉施工工序优化专项内容。",level:"recommended"}]};function eL(a){return(0,bg.GQ)(a).replace(/\s+/gu,"").toLowerCase()}function eM(a){return eL(`${a.title} ${(a.sections||[]).join(" ")}`).slice(0,800)}function eN(a){var b;let c,d=(b=a.chapters,[...eJ].map(a=>{let c=[],d=new Set;for(let e of b){let b=eL(`${e.title} ${(e.sections||[]).join(" ")}`);for(let f of a.requiredSectionPatterns)f.test(b)&&!d.has(f)&&(d.add(f),c.push(e.title))}let e=[...new Set(c)],f=a.requiredSectionPatterns.filter(a=>!d.has(a)).map(a=>(function(a){let b=a.source.replace(/[\\/^$.*+?()[\]{}]/gu,"").replace(/u$/u,"");return b.split("|").map(a=>a.trim()).find(Boolean)||b})(a)),g=d.size===a.requiredSectionPatterns.length?e.length>1?"fragmented":"satisfied":"missing";return{groupId:a.id,groupTitle:a.title,level:a.level,status:g,carrierChapters:e,missingSections:f,remedy:a.remedy}})),e=[],f=d.filter(a=>"required"===a.level&&"missing"===a.status);for(let a of f)e.push({level:"error",severity:"blocker",message:`评标结构缺失:${a.groupTitle}(缺少:${a.missingSections.join("、")})`,suggestion:a.remedy});for(let a of d.filter(a=>"fragmented"===a.status))e.push({level:"warning",severity:"warning",message:`${a.groupTitle} 小节散落在 ${a.carrierChapters.length} 个章节(${a.carrierChapters.join("、")}),结构可能失真`,suggestion:"建议将同类内容集中到一个承载章节,避免章节间职责重叠。"});for(let b of a.chapters){let a=(b.sections||[]).length;a>18&&e.push({level:"warning",severity:"warning",message:`${b.title} 规划小节 ${a} 个,超过 18 个上限,易产生内容膨胀与重复`,suggestion:"合并语义相近的小节,或将细分内容下移为三级小节而非二级小节。"})}let g=a.chapters.map(a=>({...a,sections:[...a.sections||[]]})),h=new Set;for(let a of f){let b=eJ.find(b=>b.id===a.groupId);if(!b)continue;let c=g.findIndex(a=>{let c=eL(a.title);return b.chapterPatterns.some(a=>a.test(c))&&!/雨季|冬季|高温|防汛|扬尘|噪声|工资|劳务|实名|应急|BIM|智慧|管线/u.test(c)}),d=g[c>=0?c:0];for(let c of a.missingSections.filter(a=>!h.has(a))){h.add(c);let a=!function(a){let b=(0,bg.GQ)(a).replace(/\s+/gu,"");return b.length>0&&b.length<=3&&/^[\u4e00-\u9fa5]+$/u.test(b)}(c)?c:b.title;!(0,eH.xb)(a)&&(d.sections.some(b=>eL(b).includes(eL(a))||eL(a).includes(eL(b)))||d.sections.push(a))}}let i=/^(?:确保\s*)?([人材机])(?:员|力|料|械|工)?\s*的保障体系与措施$/u;for(let a of g){if(!/人[、,,]材[、,,]机/u.test(a.title))continue;let b=new Set,c=[];for(let d of a.sections){if(eL(d)===eL(a.title))continue;let e=i.exec(d.trim());e?b.has(e[1])||(b.add(e[1]),c.push(d.trim())):c.push(d)}for(let a of["人","材","机"])b.has(a)||c.push(`确保${a}的保障体系与措施`);c.length!==a.sections.length&&(a.sections=c)}if(a.evaluationItems?.length){let b=a.chapters.map(eM);for(let{item:d}of(c=function(a,b,c){let d=[],e=a.map(eM);for(let a of b){let b=a.title;if(!b||e.some(a=>(function(a,b){let c=eL(b);return!!c&&(a.includes(c)||c.includes(a.slice(0,40)))})(a,b)))continue;let f=0;if(c?.semanticSimilarity)for(let a of e)f=Math.max(f,c.semanticSimilarity(b,a));f>=.6||d.push({item:a,title:b,bestSimilarity:c?.semanticSimilarity?f:void 0})}return{items:b,uncovered:d}}(a.chapters,a.evaluationItems,{semanticSimilarity:a.semanticSimilarity})).uncovered){let c=d.title;if(!c||(0,bg.Fe)(c)||(0,bg.ob)(c)||(0,eH.xb)(c))continue;let f=b.reduce((b,d,e)=>{let f=a.semanticSimilarity?a.semanticSimilarity(c,d):+!!d.includes(eL(c));return f>b.score?{index:e,score:f}:b},{index:-1,score:-1}).index,h=g[f>=0?f:0];h.sections.some(a=>eL(a).includes(eL(c))||eL(c).includes(eL(a)))||(h.sections.push(c),h.purpose=`${h.purpose||""};系统已按招标文件技术评审条目自动补足小节“${c}”,必须基于项目资料与适用技术展开实质内容。`,e.push({level:"warning",severity:"warning",message:`评分标准条目“${c}”无承接章节,已自动补小节“${c}”至“${h.title}”`,suggestion:"请确认补充小节与招标文件评审条目口径一致。"}))}}for(let b of(0,eI.y)(a))if("general"!==b)for(let a of eK[b]){let b=eL(g.map(a=>`${a.title} ${(a.sections||[]).join(" ")}`).join(" "));if(a.requiredSectionPatterns.some(a=>a.test(b)))continue;let c=g.findIndex(b=>{let c=eL(b.title);return a.chapterPatterns.some(a=>a.test(c))}),d=g[c>=0?c:0];(0,eH.xb)(a.title)||d.sections.push(a.title)}return{diagnostics:d,issues:e,enrichedChapters:g,criteriaAudit:c}}function eO(a){return a.replace(/\s+/gu,"").toLowerCase()}var eP=c(81892),eQ=c(30355),eR=c(2773),eS=c(38115),eT=c(31129);async function eU(a){a.planning.generationDiagnostics.metrics.push({name:"phase:plan",startedAt:a.planning.planPhaseStartedAt,endedAt:Date.now(),durationMs:Date.now()-a.planning.planPhaseStartedAt}),a.chapterLoop.draftPhaseStartedAt=Date.now();let b=(0,s.UO)(a.blueprint.billFactLock,a.planning.effectiveChapters);for(let c=0;c<a.planning.effectiveChapters.length;c+=a.blueprint.chapterConcurrency){let d=a.planning.effectiveChapters.slice(c,c+a.blueprint.chapterConcurrency);for(let g of(await Promise.all(d.map(async(d,g)=>{let i,j=c+g;(0,e.Te)(a.global.input.signal);let l=a.understanding.rolePoolRisk??ch({totalChunks:0,loadedChunks:0,vectorReady:void 0}),r=a.blueprint.blueprintActive?{missing:[],failedChecks:[]}:(0,p.RT)(d.title,a.blueprint.integratedBlueprint?.validation,a.planning.chapterIntentClassifier);if(r.missing.length>0){let b=r.failedChecks.length>0?`蓝图校验项「${r.failedChecks.join("、")}」未通过`:"蓝图校验未通过或构建异常",c=`${(0,bg.GQ)(d.title)} 依赖蓝图权威 [${r.missing.join("、")}],${b},已按节点级把关阻断生成`,e=(0,q.X5)({type:"chapter_generation",roleId:"chapter_generation",status:"failed",message:c,details:["数值密集型章所需蓝图权威不可用时禁止无权威成稿","请检查清单解析与蓝图构建诊断后重试"],progress:{current:j+1,total:a.planning.effectiveChapters.length,label:"章节阻断"}},{subtitle:(0,bg.GQ)(d.title),order:j});a.global.progressStages.push(e),a.understanding.failedChapterMessages.push(c),a.understanding.chapterGenerationStagesByOrder[j]=e,a.global.emitProgress();return}let t=Date.now(),u=a.global.progressStages.length;try{let c,g,v;a.global.progressStages.push((0,q.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:a.prepare.promptPlan.writerPrompts[0]?.id,status:"running",message:`${(0,bg.GQ)(d.title)} 正在检索证据并准备章节内容`,details:[`章节序号:${j+1}/${a.planning.effectiveChapters.length}`,`二级小节:${d.sections?.length||0} 个`,"正在生成检索查询"],progress:{current:j+1,total:a.planning.effectiveChapters.length,label:"章节生成"}},{subtitle:(0,bg.GQ)(d.title),order:j})),a.global.emitProgress();let w=a.global.input.resumeChapters?.find(a=>a.id===d.id||a.title===d.title),x=w?.content?.trim(),B=w?.evidence?.length?[...w.evidence]:[],C=a.prepare.projectUnderstanding.chapterPlans.find(a=>a.chapterId===d.id||a.chapterTitle===d.title),D=C?Object.values(C.evidenceQueries).flat().filter(Boolean):[],E=d.queries.length>0?d.queries:[a.prepare.template.name,a.prepare.template.outputTitle,d.title],F=a.understanding.chapterGraphMap.get(d.id);if(a.understanding.projectGraph&&F&&F.graphFiles.size>0)for(let b of[...F.graphFiles]){let c=a.understanding.getCachedFileDetail(b);if(c?.chunks?.length)for(let e of c.chunks)B.push({chapterId:d.id,filePath:c.file?.relativePath||b,score:5+(F.graphWorks.length+F.graphMethods.length)*.5,content:e.content,roleId:a.understanding.fileRoleByPath.get(b),processingType:a.understanding.fileProcessingByPath.get(b),sectionTitle:e.sectionTitle,source:"graph-evidence"})}let G=a.planning.chapterIntentClassifier.needsBasicFacts(d.title),H=a.blueprint.billFactLock?(0,s.Zc)(a.blueprint.billFactLock,d.title,d.sections||[]):[],I=(0,k.QP)(d,[...E,...D,...H],[]),J=Date.now();a.global.progressStages[u]=(0,q.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:a.prepare.promptPlan.writerPrompts[0]?.id,status:"running",message:`${(0,bg.GQ)(d.title)} 正在执行质量优先的章节检索${F?.graphFiles.size?`(图谱匹配 ${F.graphFiles.size} 个文件)`:""}`,details:I.map(a=>`检索:${a.slice(0,42)}`),progress:{current:j+1,total:a.planning.effectiveChapters.length,label:"证据检索"}},{subtitle:(0,bg.GQ)(d.title),order:j}),a.global.emitProgress();let K=x?[]:[...a.understanding.availableEvidenceScopePaths].filter(Boolean).sort(),L=x?[]:a.understanding.scopedIntelligence?.evidenceByChapterId?.[d.id]||[];if(L.length>0){B.push(...L);let b=a.planning.generationDiagnostics.evidence;b.intentEvidenceInjected=(b.intentEvidenceInjected??0)+L.length}let M=[],N=(d.requiredFacts||[]).filter(a=>!!a&&!I.some(b=>b.includes(a)||a.includes(b))).map(a=>`${d.title} ${a}`),Q=(a.prepare.requirementSemantics?.factClues||[]).filter(a=>!I.some(b=>b.includes(a)||a.includes(b))&&!N.some(b=>b.includes(a)||a.includes(b))).map(a=>`${d.title} ${a}`.trim()).slice(0,8),S=[...I,...N,...Q];if(K.length>0&&S.length>0){(0,e.Te)(a.global.input.signal);let b=await (0,e.l$)(S,async b=>a.understanding.searchWithCache(b,K,Math.min(a.understanding.requestedEvidencePerChapter,12),d.title,a.prepare.materialScope.selectedMaterialRoots),{kind:"search"});M.push(...b)}for(let b of(a.planning.generationDiagnostics.evidence.searchQueries+=S.length,a.planning.generationDiagnostics.evidence.searchMs+=Date.now()-J,a.global.progressStages[u]=(0,q.X5)({type:"chapter_generation",roleId:"chapter_generation",status:"running",message:`${(0,bg.GQ)(d.title)} KB 检索完成:${S.length} 组查询,准备深度召回与语义排序`,progress:{current:j+1,total:a.planning.effectiveChapters.length,label:"证据检索"}},{subtitle:(0,bg.GQ)(d.title),order:j}),a.global.emitProgress(),M)){B.push(...b.map(b=>({chapterId:d.id,filePath:b.filePath,score:b.score,content:b.content,roleId:a.understanding.fileRoleByPath.get(b.filePath),processingType:a.understanding.fileProcessingByPath.get(b.filePath),sectionTitle:b.sectionTitle,source:b.source})));let c=a.planning.generationDiagnostics.evidence;c.retrievedEvidenceInjected=(c.retrievedEvidenceInjected??0)+b.length}G&&K.length>0&&a.blueprint.basicFactSearchResults.length>0&&B.push(...a.blueprint.basicFactSearchResults.map(b=>({chapterId:d.id,filePath:b.filePath,score:b.score,content:b.content,roleId:a.understanding.fileRoleByPath.get(b.filePath),processingType:a.understanding.fileProcessingByPath.get(b.filePath),sectionTitle:b.sectionTitle,source:"basic-fact-cache"})));let U=x?[]:await (0,eR.$b)({manager:a.understanding.manager,projectRoot:a.prepare.projectRoot,chapter:d,plan:C,profile:a.prepare.projectMaterialProfile,scopedFilePaths:K,scopedMaterialRoots:a.prepare.materialScope.selectedMaterialRoots,limitPerQuery:Math.min(a.understanding.requestedEvidencePerChapter,10),signal:a.global.input.signal}).catch(b=>(a.planning.generationDiagnostics.evidence.retrievalFailures=(a.planning.generationDiagnostics.evidence.retrievalFailures??0)+1,a.planning.generationDiagnostics.llm.lastError=`计划材料证据召回失败(${d.title}):${b instanceof Error?b.message:String(b)}`,console.error(`[gen] 计划材料证据召回失败(${d.title})`,b),[]));B.push(...U);let W=[];a.planning.chapterIntentClassifier.needsBasicFacts(d.title)&&B.push(...a.understanding.safeProjectBasicEvidence.map(a=>({...a,chapterId:d.id,source:"pinned-evidence"})));let X=a.understanding.writerEvidence.filter(a=>/招标|投标须知|评标办法|专用合同条款|投标人须知/u.test(`${a.filePath||""}${a.sectionTitle||""}`));/概况|工程|项目|总体|部署/u.test(d.title)&&X.length>0&&B.push(...X.map(a=>({...a,chapterId:d.id,source:"pinned-evidence"})));let Y=a.prepare.materialScope.selectedMaterialRoots[0]||"";for(let b of(d.pinnedEvidenceFilePaths||[]).filter(Boolean)){let c=b.replace(/\\/gu,"/").replace(/^\.\//u,"").replace(/^\/+/u,""),e=Y&&c!==Y&&!c.startsWith(`${Y}/`)?`${Y}/${c}`:c,f=a.understanding.getCachedFileDetail(e);if(!f){let c=a.planning.generationDiagnostics?.evidence;c&&(c.pinnedEvidenceMissed=(c.pinnedEvidenceMissed??0)+1),console.warn("[stage-chapter-loop] pinned 证据文件未命中知识库(配置漂移或文件未入库)",{chapter:d.title,pinnedPath:b,resolvedPath:e});continue}B.push(...f.chunks.map(b=>({chapterId:d.id,filePath:f.file.relativePath,score:1,content:b.content,roleId:a.understanding.fileRoleByPath.get(f.file.relativePath),processingType:a.understanding.fileProcessingByPath.get(f.file.relativePath),sectionTitle:b.sectionTitle,source:"pinned-evidence"})))}let Z=B;if(!x&&a.prepare.webAccessConfig.enabled&&a.prepare.webAccessConfig.allowProjectFacts){let b=await at({config:a.prepare.webAccessConfig,chapterId:d.id,chapterTitle:d.title,sectionTitles:d.sections||[],runtimeRules:a.prepare.runtimePromptRules,localFacts:[...a.understanding.preliminaryFactsModel.project,...a.understanding.preliminaryFactsModel.schedule,...a.understanding.preliminaryFactsModel.quality,...a.understanding.preliminaryFactsModel.safety,...a.understanding.preliminaryFactsModel.resources,...a.understanding.preliminaryFactsModel.preciseFacts],signal:a.global.input.signal});a.understanding.webResearchReport.queries.push(...b.queries),a.understanding.webResearchReport.filteredCount+=b.filtered+b.evidence.length,b.failedQueries>0&&(a.understanding.webResearchReport.failedCount=(a.understanding.webResearchReport.failedCount??0)+b.failedQueries,a.planning.generationDiagnostics.llm.lastError=`联网检索失败 ${b.failedQueries} 次(${d.title}):${b.failures.slice(0,3).join(";")}`)}let $=x?[]:(0,eR.SK)({project:a.understanding.project,chapter:d,plan:C,profile:a.prepare.projectMaterialProfile,scopedFilePaths:K,highRisk:l.highRisk});$.length>0&&Z.push(...$),a.understanding.excludedEvidenceKeys.size>0&&(Z=Z.filter(b=>!a.understanding.excludedEvidenceKeys.has((0,eH.hM)(b))));let _=(()=>{let a=Number(process.env.DOCUMENT_SEMANTIC_TOP_CANDIDATES);return Number.isFinite(a)&&a>0?Math.floor(a):3e3})(),aa=(0,k.Mz)(d,Z,_),ab=await (0,aB.Mv)([eM(d)],aa.map(k.t7)),ac=(0,k.UG)(d,Z,{preservePinned:!0,semantic:{similarity:ab,queryText:eM(d)}},a.planning.generationDiagnostics);ac=(0,n.pm)(ac,a.understanding.canonicalFacts.scopeConflicts);let ad=d.requiredFacts.filter(a=>!ac.some(b=>(0,cf.Lk)(b,a))),ae=0,af=(0,P.kO)(a.understanding.bidComposition),ag=F?[F.graphWorks.length?`图谱识别本章工程内容:${F.graphWorks.join("、")}`:"",F.graphMethods.length?`图谱识别本章施工方法:${F.graphMethods.join("、")}`:"",F.graphBoqItems.length?`图谱识别本章BOQ清单项(${F.graphBoqItems.length}项):${F.graphBoqItems.map(a=>`${a.name} ${a.quantity}${a.unit}`).join("、")}`:"",F.gaps.length?`图谱识别本章资料缺口:${F.gaps.join(";")}`:""].filter(Boolean).join("\n"):"",ah=(0,n.Bf)(a.understanding.canonicalFacts.scopeConflicts),ai=(()=>{if(0===a.blueprint.requirementAssignments.length)return"";let b=(0,aC.NT)(d.title),c=a.blueprint.requirementAssignments.filter(a=>a.chapterTitle===b).map(a=>a.entry);return(0,aC.HF)(c)})(),aj=(()=>{if(0===a.blueprint.structureAssignments.length)return"";let b=(0,aC.NT)(d.title),c=a.blueprint.structureAssignments.filter(a=>a.chapterTitle===b).map(a=>a.requirement);return(0,aC.FR)(c,{bodyTableForbidden:(0,P._C)(a.understanding.bidComposition),bodyFigureForbidden:af})})(),ak=a.planning.chapterIntentClassifier.needsDustControl(d.title)||a.planning.chapterIntentClassifier.needsDustControl(`${d.title}${d.purpose||""}`)?"【扬尘治理六个百分百——规范固定条目,必须逐项落实并写入正文,每项一句具体措施,六项不得缺项;若本项目无拆迁工程,对“拆迁工地100%湿法作业”必须显性写明“本项目无拆迁工程,不涉及拆迁工地湿法作业”,不得省略】\n- 施工工地周边100%围挡\n- 物料堆放100%覆盖\n- 出入车辆100%冲洗\n- 施工现场地面100%硬化\n- 拆迁工地100%湿法作业\n- 渣土车辆100%密闭运输":"",al=(d.sections||[]).filter(a=>!/^(?:施工概况|施工流程|施工方法)$/u.test(a.trim())&&!/^附录/u.test(a.trim())),am=al.length>0?`【必须输出以下规划小节为三级标题(### 小节名),逐个小节展开正式正文:每小节正文不少于 100 字,不得只写标题、不得空小节、不得用表格替代正文;小节名与章标题相同或相近也必须输出,不得省略或合并】${al.join("、")}`:"",an=a.blueprint.billFactLock?(0,s.uD)(a.blueprint.billFactLock,d.title,{sections:d.sections||[]}):"",ao=a.blueprint.billFactLock?(0,s.zK)(a.blueprint.billFactLock,b,d.title):[],ap=a.blueprint.drawingFactLock?(0,bW.pH)(a.blueprint.drawingFactLock,d.title,{sections:d.sections||[]}):"",aq=function(a,b,c={}){let d=function(a,b,c={}){let{usable:d}=y(a);if(0===d.length)return[];let e=z(b,c.sections||[]);return 0===e.length?[]:d.map(a=>({fact:a,score:A(a,e)})).filter(a=>a.score>0).sort((a,b)=>b.score-a.score||String(a.fact.key).localeCompare(String(b.fact.key),"zh")||String(a.fact.value).localeCompare(String(b.fact.value),"zh")).map(a=>a.fact)}(a,b,c);if(0===d.length)return[];let e=Math.max(1,c.maxChars??3600),f=[],g=0;for(let a of d){let b=a.fieldName&&a.fieldName!==a.key?`(${a.fieldName})`:"",c=`- ${a.key}${b}:${String(a.value).slice(0,80)}`;if(g+c.length+1>e)break;f.push(c),g+=c.length+1}let h=d.slice(f.length);return 0===f.length?[]:[`【本章可靠参数清单(资料事实链参数索引:${d.length} 项与本章相关的规格/参数/数量/时间/比例/标准编号,须逐项在正文对应位置自然写入,保持原值原形态(数字、单位、编号中的连字符与年份不得改写、拆分或省略);商务金额/单价/税率/预留金类数据一律不得写入正文)】`,...f,...h.length>0?[`- 另需落位(仅列名,共${h.length}项,须同样逐项写入正文):${h.map(a=>String(a.key)).join("、")}`]:[]]}(a.understanding.preliminaryFactsModel,d.title,{sections:d.sections||[]}),ar=function(a,b){let c=b.indexOf(a),d=(a,b)=>`${(0,bg.tb)(a,b.title)}${b.sections?.length?`(小节:${b.sections.join("、")})`:""}`,e=b.map((a,b)=>({item:a,index:b})).filter(b=>b.item!==a);return["【跨章写作职责分工——只就本章主题展开,写时即不产生跨章重复】",`- 本章职责:${d(c>=0?c:0,a)}`,...e.length>0?["- 其他章节职责(不得展开复述其主题内容):",...e.map(a=>` - ${d(a.index,a.item)}`)]:[],"- 写作规范:只就本章主题展开;其他章节主题的内容如需关联,一句话引用(“详见第X章”,X 替换为实际章号),不得展开复述;篇幅以本节合同字数为准,不得借写其他章节主题充数。"].join("\n")}(d,a.planning.effectiveChapters),as=/施工方法|施工方案|施工工艺|主要施工内容|分部分项/u.test(d.title)?(()=>{let b=(0,V.Hp)((0,V.v7)(a.understanding.preliminaryFactsModel));return b?`【本章必须覆盖的清单分部分项全景(下列专有分项逐项写入正文施工方法,不得只写道路/铺装/绿化等大类而遗漏清单独有分项)】
57
57
  ${b}`:""})():"",au=(0,eP.uQ)(d.title),av=[au?`【本章写作重点】${au.goal}
58
58
  【本章必须覆盖(逐项落位,缺一即判未响应)】
59
59
  ${au.mustCover.map(a=>`- ${a}`).join("\n")}`:"",ag,ai,aj,am,ar,ak,ah.length?`【数据口径强制约束】${ah.join(";")}`:"",...eP.OA,C?.writingGoal,C?.mustCover?.length?`本章必须覆盖:${C.mustCover.join("、")}`:"",C?.mustUseMaterialKinds?.length?`本章优先使用资料类型:${C.mustUseMaterialKinds.join("、")}`:"",as,...aq,...ao,an,ap].filter(Boolean).join("\n"),aw=(0,k.C_)(a.prepare.promptPlan,d);if(a.prepare.promptPlan.writerPrompts.length>0&&!aw.primaryWriter)throw Error(`${(0,bg.GQ)(d.title)} 写作主控提示词未进入章节生成阶段`);let ax=[aw.promptTexts,a.prepare.generationControlPrompt,a.prepare.runtimeRulesText].filter(Boolean).join("\n\n"),ay=aw.promptDetails.length?aw.promptDetails:["未绑定章节写作提示词"],az=(0,m.rC)({template:a.prepare.template,chapter:d,spec:a.prepare.documentSpec,profile:a.prepare.domainProfile,promptTexts:ax,requirement:a.global.input.requirement,plan:C?{requiredContents:C.mustCover,evidenceNeeds:Object.values(C.evidenceQueries).flat()}:void 0}),aA=(0,m.ji)({needs:az,factsModel:a.understanding.preliminaryFactsModel,evidence:Z,profile:a.prepare.domainProfile,excludedEvidenceKeys:a.understanding.excludedEvidenceKeys}),aD=aA.filter(a=>a.need.required&&"satisfied"!==a.status).map(a=>a.need.label),aE=function(a){let b=(a.chapter.requiredFacts||[]).filter(b=>!a.evidence.some(a=>eO(`${a.sectionTitle||""}${a.content||""}`).includes(eO(b)))),c=a.evidence.length<3?["章节证据数量不足"]:[],d=b.length+c.length,e=d>=5?"high":d>=2?"medium":"low",f="high"===e?"evidence_first":b.length>0?"section_first":"normal";return{chapterId:a.chapter.id,chapterTitle:a.chapter.title,canGenerate:!0,riskLevel:e,missingFacts:b,missingEvidence:c,suggestedStrategy:f,reason:0===d?"章节事实与证据满足常规生成条件。":`识别到 ${d} 项生成前缺口,按 ${f} 策略生成。`}}({chapter:d,evidence:ac}),aF=new Set(ac.map(a=>a.filePath)).size,aG=!!F&&(F?.graphFiles.size||0)>=8&&aF>=6&&0===ad.length&&"low"===aE.riskLevel,aH=function(a){let b=a.evidenceFileCount<=2;return a.scopedFileCount>80?b:"evidence_first"===a.suggestedStrategy||a.highRisk||a.missingFactsCount>0||a.requiredMissingNeedsCount>0||b||a.evidenceCount<8&&"low"!==a.riskLevel}({scopedFileCount:K.length,evidenceCount:ac.length,evidenceFileCount:aF,suggestedStrategy:aE.suggestedStrategy,highRisk:l.highRisk,missingFactsCount:ad.length,requiredMissingNeedsCount:aD.length,riskLevel:aE.riskLevel});if(!aG&&aH&&K.length>0){let b=new Set([...ad,...aD]).size;b>0&&(a.global.progressStages[u]=(0,q.X5)({type:"chapter_generation",roleId:"chapter_generation",status:"running",message:`${(0,bg.GQ)(d.title)} 正在深度召回缺失事实证据(${b} 项需求)`,progress:{current:j+1,total:a.planning.effectiveChapters.length,label:"深度召回"}},{subtitle:(0,bg.GQ)(d.title),order:j}),a.global.emitProgress());let c=await ci({manager:a.understanding.manager,projectRoot:a.prepare.projectRoot,chapter:d,scopedFilePaths:K,scopedMaterialRoots:a.prepare.materialScope.selectedMaterialRoots,fileRoleByPath:a.understanding.fileRoleByPath,fileProcessingByPath:a.understanding.fileProcessingByPath,requiredNeeds:[...new Set([...ad,...aD])],extraClues:a.prepare.requirementSemantics?.factClues||[],highRisk:l.highRisk||aD.length>0,signal:a.global.input.signal}).catch(b=>(a.planning.generationDiagnostics.evidence.retrievalFailures=(a.planning.generationDiagnostics.evidence.retrievalFailures??0)+1,a.planning.generationDiagnostics.llm.lastError=`章深度召回失败(${d.title}):${b instanceof Error?b.message:String(b)}`,console.error(`[gen] 章深度召回失败(${d.title})`,b),[]));ae=c.length;let e=a.planning.generationDiagnostics.evidence;e.retrievedEvidenceInjected=(e.retrievedEvidenceInjected??0)+c.length,c.length>0&&(Z=[...Z,...c],a.understanding.excludedEvidenceKeys.size>0&&(Z=Z.filter(b=>!a.understanding.excludedEvidenceKeys.has((0,eH.hM)(b)))),ac=(0,k.UG)(d,Z,{preservePinned:!0},a.planning.generationDiagnostics),ac=(0,n.pm)(ac,a.understanding.canonicalFacts.scopeConflicts),ad=d.requiredFacts.filter(a=>!ac.some(b=>(0,cf.Lk)(b,a)))),aD=(aA=(0,m.ji)({needs:az,factsModel:a.understanding.preliminaryFactsModel,evidence:Z,profile:a.prepare.domainProfile,excludedEvidenceKeys:a.understanding.excludedEvidenceKeys})).filter(a=>a.need.required&&"satisfied"!==a.status).map(a=>a.need.label),a.global.progressStages[u]=(0,q.X5)({type:"chapter_generation",roleId:"chapter_generation",status:"running",message:`${(0,bg.GQ)(d.title)} 深度召回完成:命中 ${ae} 条${aD.length>0?`,仍缺 ${aD.length} 项(触发轻量补充)`:""}`,progress:{current:j+1,total:a.planning.effectiveChapters.length,label:"证据检索"}},{subtitle:(0,bg.GQ)(d.title),order:j}),a.global.emitProgress()}if(aD.length>0&&K.length>0){let b=await ci({manager:a.understanding.manager,projectRoot:a.prepare.projectRoot,chapter:d,scopedFilePaths:K,scopedMaterialRoots:a.prepare.materialScope.selectedMaterialRoots,fileRoleByPath:a.understanding.fileRoleByPath,fileProcessingByPath:a.understanding.fileProcessingByPath,requiredNeeds:aD,extraClues:a.prepare.requirementSemantics?.factClues||[],highRisk:!0,signal:a.global.input.signal}).catch(b=>(a.planning.generationDiagnostics.evidence.retrievalFailures=(a.planning.generationDiagnostics.evidence.retrievalFailures??0)+1,a.planning.generationDiagnostics.llm.lastError=`必需事实补充召回失败(${d.title}):${b instanceof Error?b.message:String(b)}`,console.error(`[gen] 必需事实补充召回失败(${d.title})`,b),[])),c=a.planning.generationDiagnostics.evidence;c.retrievedEvidenceInjected=(c.retrievedEvidenceInjected??0)+b.length,b.length>0&&(Z=[...Z,...b],a.understanding.excludedEvidenceKeys.size>0&&(Z=Z.filter(b=>!a.understanding.excludedEvidenceKeys.has((0,eH.hM)(b)))),ac=(0,k.UG)(d,Z,{preservePinned:!0},a.planning.generationDiagnostics),ac=(0,n.pm)(ac,a.understanding.canonicalFacts.scopeConflicts),ad=d.requiredFacts.filter(a=>!ac.some(b=>(0,cf.Lk)(b,a))),aD=(aA=(0,m.ji)({needs:az,factsModel:a.understanding.preliminaryFactsModel,evidence:Z,profile:a.prepare.domainProfile,excludedEvidenceKeys:a.understanding.excludedEvidenceKeys})).filter(a=>a.need.required&&"satisfied"!==a.status).map(a=>a.need.label))}{let b=a.planning.generationDiagnostics.evidence,c=new Set(["keyword","vector","hybrid","deep-retrieval","required-fact-evidence"]);b.intentEvidenceUsed=(b.intentEvidenceUsed??0)+ac.filter(a=>"project-intelligence"===a.source).length,b.retrievedEvidenceUsed=(b.retrievedEvidenceUsed??0)+ac.filter(a=>!!a.source&&c.has(a.source)).length}for(let b of(0===ac.length&&a.understanding.missingItems.push(`${d.title}:缺少可支撑正文的项目资料证据`),ad))a.understanding.missingItems.push(`${d.title}:事实需求未满足 ${b}`);let aI=(0,q.X5)({type:"knowledge_retrieval",roleId:"knowledge-base",status:a.understanding.allEvidence.length>0?"success":"failed",message:`已检索/绑定 ${a.understanding.allEvidence.length} 条证据`});a.understanding.knowledgeBaseStageIndex<0?a.understanding.knowledgeBaseStageIndex=(0,q.fx)(a.global.progressStages,aI):a.global.progressStages[a.understanding.knowledgeBaseStageIndex]={...aI,order:a.global.progressStages[a.understanding.knowledgeBaseStageIndex]?.order??aI.order},a.global.emitProgress(),(0,e.Te)(a.global.input.signal);let aJ=new Map,aK=b=>{let c=(0,e.c6)({kind:"section",query:`${d.title} ${b}`.trim(),scopedFilePaths:K}),f=aJ.get(c);if(f)return Promise.resolve(f);let g=(0,ck.Ym)(b,d,ac),h=g.filter(a=>cs.AM.test(a.content)).length;return g.length>=4&&h>=1?(aJ.set(c,g),Promise.resolve(g)):(0,k.hW)({manager:a.understanding.manager,projectRoot:a.prepare.projectRoot,chapter:d,sectionTitle:b,scopedFilePaths:K,scopedMaterialRoots:a.prepare.materialScope.selectedMaterialRoots,fileRoleByPath:a.understanding.fileRoleByPath,fileProcessingByPath:a.understanding.fileProcessingByPath,signal:a.global.input.signal}).then(a=>(aJ.set(c,a),a))},aL=function(a){let b=a.chapter.sections?.length||0,c=(a.chapter.sections||[]).filter(b=>a.evidence.some(a=>(0,cf.Lk)(a,b)||`${a.sectionTitle||""} ${a.content}`.includes(b))).length,d=a.chapter.requiredFacts.length,e=a.chapter.requiredFacts.filter(b=>a.evidence.some(a=>(0,cf.Lk)(a,b))).length;return{chapterId:a.chapter.id,chapterTitle:a.chapter.title,risk:a.risk,evidenceCount:a.evidence.length,evidenceFiles:new Set(a.evidence.map(a=>a.filePath)).size,sectionCovered:c,sectionTotal:b,requiredFactCovered:e,requiredFactTotal:d}}({chapter:d,evidence:ac,risk:l});a.understanding.retrievalCoverageReports.push(aL);let aM=new Set(ac.map(a=>a.filePath)),aN=ac.reduce((a,b)=>a+b.content.length,0),aO=[...l.highRisk?[`召回覆盖风险(${l.riskReason||"切片未完全预加载"}):已加载 ${l.loadedChunks}/${l.totalChunks},已启用深召回`]:[],`项目理解缓存证据:${L.length} 条`,`深召回证据:${ae} 条`,`事实覆盖:${aL.requiredFactCovered}/${aL.requiredFactTotal}`,`小节覆盖:${aL.sectionCovered}/${aL.sectionTotal}`];a.global.progressStages[u]=(0,q.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:a.prepare.promptPlan.writerPrompts[0]?.id,status:"running",message:`${(0,bg.GQ)(d.title)} 已选取 ${ac.length} 条高相关证据,正在生成正文`,details:[`使用绑定文件:${aM.size} 份`,`上下文字符:${aN}`,`检索查询:${I.length} 组`,...aO],progress:{current:j+1,total:a.planning.effectiveChapters.length,label:"正文生成"}},{subtitle:(0,bg.GQ)(d.title),order:j}),a.global.emitProgress(),a.planning.generationDiagnostics.evidence.contextChars+=aN;let aP=(0,m.n9)(aA),aQ=a.planning.chapterIntentClassifier.needsBasicFacts(d.title)?a.understanding.earlyFactPool.projectBasicFacts:[],aR=(0,ck.qX)((0,ck.hZ)({chapter:d,plan:void 0,spec:a.prepare.documentSpec,roleFacts:W,evidence:ac,missingFacts:ad,indexedFacts:[...aQ,...aP],resolvedFactNeeds:aA,factNeedsPrompt:(0,m.GK)(aA),specAuthorityMap:a.understanding.preliminaryFactsModel.specAuthorityMap})),aS=(0,eQ.up)({plan:a.planning.plannedDocument.plan,chapter:d,context:a.understanding.agentWorkflow,evidence:ac});if(a.understanding.agentWorkflow.chapterTasks=[...(a.understanding.agentWorkflow.chapterTasks||[]).filter(a=>a.chapterId!==d.id),aS.task],a.understanding.agentWorkflow.nodes.push(aS.node),(0,cj.cN)(a.understanding.agentWorkflow),(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:`agent-chapter-task-${d.id}`,status:aS.task.ready||x?"success":"failed",message:aS.task.ready?aS.node.outputSummary||`${(0,bg.GQ)(d.title)} 章节任务规划完成`:x?`${(0,bg.GQ)(d.title)} 章节任务未完全就绪,已复用已有正文并交由 Reviewer/Repairer 处理`:aS.node.outputSummary||`${(0,bg.GQ)(d.title)} 章节任务规划完成`,details:aS.task.issues.map(a=>a.message)},{subtitle:"Agent Chapter Task Planner",order:a.global.progressStages.length})),a.global.emitProgress(a.global.chapterDrafts),!aS.task.ready&&!x)throw Error(`${(0,bg.GQ)(d.title)} 章节任务未就绪:${aS.task.issues.map(a=>a.message).join(";")}`);let aT={total:aA.length,satisfied:aA.filter(a=>"satisfied"===a.status).length,missing:aA.filter(a=>"missing"===a.status).length,lowConfidence:aA.filter(a=>"low_confidence"===a.status).length};for(let b of aD)a.understanding.missingItems.push(`${d.title}:事实需求未确认 ${b}`);let aU=a.planning.documentBudget.chapterTargets.get(d.id)||1200,aV=d.sections?.filter(Boolean).length||0,aW=(0,k.gq)({budgetTarget:aU,sectionCount:aV,title:d.title,longformStrict:a.planning.documentBudget.longformStrict}),aX=Math.ceil(aW.maxWords*(a.planning.documentBudget.maxChars?1.05:1)),aY=(0,p.jM)(d.title,a.planning.chapterIntentClassifier).length>0,aZ=(a.blueprint.blueprintActive||aY&&0===r.missing.length)&&a.blueprint.integratedBlueprint?(0,p.md)(a.blueprint.integratedBlueprint,d.title):void 0,a$=aZ&&a.blueprint.integratedBlueprint?(0,p.uw)(aZ,a.blueprint.integratedBlueprint.data):"",a_=aW.roundTarget,a0=aV>0?a.planning.documentBudget.longformStrict?a_:Math.min(a_,Math.max(1800,aW.structureTarget)):a_,a1=0,a2=b=>{let c=Date.now();if(c-a1<3e3)return;a1=c;let e=b.filter(Boolean).join("\n\n");e.trim()&&a.global.emitProgress([...a.global.chapterDrafts,{id:d.id,title:d.title,content:`## ${d.title}
@@ -73,7 +73,7 @@ ${a.requirementSummary.map(a=>`- ${a}`).join("\n")}`:"",a.boqCoverageSummary?.tr
73
73
  ${a.boqCoverageSummary.trim()}`:"",`各章规划表格清单:
74
74
  ${c}`,"请将“专业领域明显不符本标段工程类型”的表格列入 outOfScope(title 必须与上方表名逐字一致);剔除前先逐一做语义关联检索(上下位/同义/配套的材料与工艺),能关联到判据中任一条目的表不得剔除;全部属于本标段范围时输出空数组。",'JSON 格式:{"outOfScope":[{"chapterTitle":"所属章标题","title":"表名","reason":"不超过30字理由"}]}'].filter(Boolean).join("\n\n"),{maxTokens:1e3,temperature:0,signal:a.signal});if(!d)return{removed:[],skipped:"LLM 调用失败(保留原规划)"};let e=[];for(let a of d.outOfScope||[]){let c=(0,bg.nz)(String(a?.title||""));if(!c)continue;let d=b.find(a=>(0,bg.nz)(a.title)===c)||b.find(a=>(0,c2.kw)(a.title,c));d&&(e.some(a=>a.chapterTitle===d.chapterTitle&&a.title===d.title)||e.push({chapterTitle:d.chapterTitle,title:d.title,reason:String(a?.reason||"").replace(/\s+/gu," ").trim().slice(0,40)||"判为超范围"}))}let f=Math.max(1,Math.floor(b.length*fl));return e.length>f?{removed:[],skipped:`超范围剔除 ${e.length}/${b.length} 项超过 1/3 上限(疑似误判),整体放弃以保安全`}:{removed:e}}var fn=c(79227),fo=c(25284);async function fp(a){var b;a.planning.effectiveChapters=a.planning.baseEffectiveChapters,a.planning.constructionOrgContext=(0,fo.TD)(a.understanding.scopedIntelligence?.constructionOrganizationGraph)||a.understanding.scopedIntelligence?.constructionOrganizationContext,a.planning.chapterGraphSummaryText=b=>{let c=a.understanding.chapterGraphMap.get(b);return c&&(c.graphWorks.length||c.graphMethods.length||c.graphBoqItems.length)?[c.graphWorks.length?`专业工程:${c.graphWorks.slice(0,8).join("、")}`:"",c.graphMethods.length?`主要工法/工艺:${c.graphMethods.slice(0,8).join("、")}`:"",c.graphBoqItems.length?`关键资源:${c.graphBoqItems.slice(0,8).map(a=>a.name).join("、")}`:""].filter(Boolean).join(";"):""},a.planning.baseProjectContext=[a.prepare.projectUnderstanding.prompt,a.planning.constructionOrgContext].filter(Boolean).join("\n\n"),a.planning.projectContext=a.planning.baseProjectContext;let c={...a.prepare.template,chapters:a.planning.effectiveChapters};a.planning.promptStructuralRules=(0,c2.My)([a.prepare.promptTexts,a.global.input.requirement||""].filter(Boolean).join("\n\n"),a.planning.effectiveChapters),a.planning.provisionalBudget=(0,h.tF)({requirement:a.global.input.requirement,promptTexts:a.prepare.promptTexts,template:c,chapters:a.planning.effectiveChapters,spec:a.prepare.documentSpec});let d={requirement:a.global.input.requirement,promptTexts:a.prepare.promptTexts},i=[],j=(a,b)=>{let c=(0,h.KC)(b||"");return c!==(b||"")&&i.push(a),c};if(a.global.input.requirement){let b=j("requirement",a.global.input.requirement);a.global.input.requirement=b||void 0}a.prepare.runtimeRulesText=j("runtimeRulesText",a.prepare.runtimeRulesText),a.prepare.promptTexts=j("promptTexts",a.prepare.promptTexts),a.prepare.factExtractionPromptTexts=j("factExtractionPromptTexts",a.prepare.factExtractionPromptTexts),a.prepare.reviewPromptTexts=j("reviewPromptTexts",a.prepare.reviewPromptTexts),a.prepare.repairPromptTexts=j("repairPromptTexts",a.prepare.repairPromptTexts),a.planning.baseProjectContext=j("baseProjectContext",a.planning.baseProjectContext),a.planning.projectContext=a.planning.baseProjectContext;let l=new Set,m=new Set;for(let b of[...a.prepare.promptPlan.prompts,...a.prepare.promptPlan.writerPrompts,...a.prepare.promptPlan.chapterPrompts,...a.prepare.promptPlan.formattingPrompts,...a.prepare.promptPlan.extractionPrompts,...a.prepare.promptPlan.referencePrompts]){if(m.has(b))continue;m.add(b);let a=(0,h.KC)(b.content||"");a!==(b.content||"")&&(b.content=a,l.add(b.id))}(i.length>0||l.size>0)&&((0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"length-instruction-dissolve",status:"success",message:`篇幅指令分层编译:全文级字数指令已消解(提示词链 ${i.length} 处、用户提示词 ${l.size} 个),篇幅目标由章预算/块目标统一下达`,details:[...i.map(a=>`消解字段:${a}`),...l.size>0?[`消解用户提示词:${[...l].join("、")}`]:[],a.planning.provisionalBudget.targetChars?`识别口径:全文目标 ${a.planning.provisionalBudget.targetChars} 字(已编译为 ${a.planning.effectiveChapters.length} 章预算,Σ=目标守恒)`:"未识别到显式全文目标,按模板/spec 默认预算下达","写作链不再携带原始全文篇幅语句(双通道指令 → 单通道编译下发)"]},{subtitle:"篇幅预算",order:a.global.progressStages.length})),a.global.emitProgress());let n=0,o=0,p=0,r=0,s=new Map,t=[];a.planning.diversityProfile=(0,eX.y$)(a.global.input.diversitySeed||a.global.input.templateId,(0,eX.u)(a.global.input.templateId)),(0,eX.a1)(a.global.input.templateId,a.planning.diversityProfile.id),a.planning.fingerprintPool=(0,eT.$R)();let u=[...new Set(a.planning.fingerprintPool.entries.flatMap(a=>[...a.h3||[],...a.h4||[]]))].filter(Boolean).slice(0,60),v=b=>(0,eT.F$)(b,a.planning.fingerprintPool,{excludeDocumentId:a.global.input.diversitySeed}).map(a=>({title:a.title,collidedWith:a.collidedWith})),w=0,x=0;a.planning.plannedChapters=await (0,e.l$)(a.planning.effectiveChapters.map((a,b)=>({chapter:a,chapterIndex:b})),async({chapter:b,chapterIndex:d})=>{let e=a.planning.promptStructuralRules.filter(a=>a.chapterIndex===d||a.chapterTitle&&(0,bg.GQ)(a.chapterTitle)===(0,bg.GQ)(b.title)).flatMap(a=>a.requiredSections.slice().sort((a,b)=>(a.order||0)-(b.order||0)).map(a=>a.title)),f=(0,c2.k2)([...e,...b.sections||[]],b.title);for(let a of[...e,...b.sections||[]]){let c=(0,c2.EN)(String(a).trim());c&&c!==String(a).trim()&&t.push(`${(0,bg.GQ)(b.title)}:${a} → ${c}`)}n+=f.length,p+=1;let h=(0,g.QR)(a.understanding.writerEvidence.filter(a=>a.chapterId===b.id||(0,cf.Lk)(a,b.title)),{preservePinned:!0}),i=a.prepare.projectUnderstanding.chapterPlans.find(a=>a.chapterId===b.id)?.writingGoal||"",j=(0,k.C_)(a.prepare.promptPlan,b),l=/施工方法|施工方案|施工工艺|主要施工内容|分部分项/u.test(b.title)?(0,V.Hp)((0,V.v7)(a.understanding.preliminaryFactsModel)):"",m=await (0,c2.SP)({template:c,chapter:b,chapterIndex:d,evidence:h,promptTexts:j.promptTexts,projectContext:a.planning.projectContext,requirement:a.global.input.requirement,roleContext:i,targetWords:a.planning.provisionalBudget.chapterTargets.get(b.id)||1200,projectGraphSummary:a.planning.chapterGraphSummaryText(b.id),boqCoverageSummary:l||void 0,lockedSections:f,bodyTablePolicy:a.understanding.bidComposition.bodyTablePolicy,signal:a.global.input.signal,diversity:{directive:a.planning.diversityProfile.prompt,avoidSections:u,overlapCheck:v}});m.diversity?.retried&&(w+=1,x+=m.diversity.remainingCollisions),s.set(b.id,m.tables),r+=m.tables.length,o+=m.sections.length;let y=m.sections.filter(a=>!f.some(b=>(0,c2.kw)(b,a)));if((0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"section-planning",promptId:j.primaryPromptId,status:m.sections.length?"success":"failed",message:`${(0,bg.GQ)(b.title)} 小节规划:锁定 ${f.length} 个、LLM 规划增量 ${y.length} 个${m.tables.length?`、表格需求 ${m.tables.length} 项`:""}`,details:[...j.promptDetails,...f.map(a=>`锁定小节:${a}`),...y.map(a=>`规划小节:${a}`),...m.tables.map(a=>`表格需求:${a.title}${a.fields.length?`(${a.fields.join("、")})`:""}`)]},{subtitle:"小节规划"})),!m.sections.length)throw Error(`${(0,bg.GQ)(b.title)} 小节规划未生成可用小节`);return{...b,sections:m.sections}},{kind:"llmRepair",targetWords:a.planning.provisionalBudget.targetChars||4e3}),a.planning.tenderRequirements=await a.understanding.tenderRequirementsTask;let y=a.planning.plannedChapters;if((0,aC.l)(a.planning.tenderRequirements)){let b=await a.global.withProgressHeartbeat(()=>eY({chapters:y,requirementSummary:(0,aC.zD)(a.planning.tenderRequirements),templateName:a.prepare.template.name,diversityDirective:a.planning.diversityProfile.prompt,signal:a.global.input.signal}));if(b.length>0){let c=function(a,b){if(!b.length)return{chapters:a,applied:[]};let c=[],d=a.map(a=>({...a,sections:[...a.sections||[]]}));for(let a of b){let b=d.findIndex(b=>(0,bg.GQ)(b.title)===(0,bg.GQ)(a.chapterTitle)||(0,bg.nz)(b.title)===(0,bg.nz)(a.chapterTitle));if(b<0)continue;let e=d[b],f=a.sections.filter(a=>!(e.sections||[]).some(b=>(0,c2.kw)(b,a)));0!==f.length&&(e.sections.push(...f),c.push({chapterTitle:a.chapterTitle,sections:f}))}return a.every((a,b)=>{let c=d[b];return!!c&&(a.sections||[]).every(a=>(c.sections||[]).some(b=>(0,c2.kw)(b,a)))})?{chapters:d,applied:c}:{chapters:a,applied:[]}}(y,b);c.applied.length>0?(y=c.chapters,(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"outline-requirement-calibration",status:"success",message:`大纲要求校准:新增 ${c.applied.reduce((a,b)=>a+b.sections.length,0)} 个评分项承接小节(结构守恒校验通过)`,details:c.applied.map(a=>`${(0,bg.GQ)(a.chapterTitle)}:${a.sections.join("、")}`)},{subtitle:"大纲要求校准",order:a.global.progressStages.length}))):(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"outline-requirement-calibration",status:"skipped",message:"大纲要求校准未通过结构守恒校验,回退原规划",details:["校准新增小节未通过章名匹配/标题清洗校验,全部丢弃"]},{subtitle:"大纲要求校准",order:a.global.progressStages.length})),a.global.emitProgress()}else(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"outline-requirement-calibration",status:"skipped",message:"大纲要求校准未产出有效增量(章节结构已覆盖评分项要求或校准调用失败),回退原规划",details:[]},{subtitle:"大纲要求校准",order:a.global.progressStages.length})),a.global.emitProgress()}let z=await (0,eH.mI)(y),A=y.reduce((a,b,c)=>a+Math.max(0,(b.sections||[]).length-(z[c]?.sections||[]).length),0),B=function(a){let b=a.map(a=>({...a,sections:[...a.sections||[]]})),c=[];for(let a of eZ){let d=b.find(b=>a.chapterPattern.test((0,bg.GQ)(b.title)));if(!d)continue;let e=d.sections||(d.sections=[]);if(e.some(b=>(0,c2.kw)(b,a.section)))continue;let f=e.findIndex(b=>a.coreWords.test(b)),g=c.find(a=>a.chapterTitle===d.title)||(c.push({chapterTitle:d.title,added:[],renamed:[]}),c[c.length-1]);f>=0?(g.renamed.push({from:e[f],to:a.section}),e[f]=a.section):(e.push(a.section),g.added.push(a.section))}return{chapters:b,changes:c.filter(a=>a.added.length>0||a.renamed.length>0)}}(z),C=B.chapters;if(B.changes.length>0){let b=B.changes.reduce((a,b)=>a+b.added.length,0),c=B.changes.reduce((a,b)=>a+b.renamed.length,0);(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"review-module-sections",status:"success",message:`评审模块承接:补入 ${b} 个评审模块小节、规范化 ${c} 个承接标题`,details:B.changes.map(a=>`${(0,bg.GQ)(a.chapterTitle)}:${[...a.added.map(a=>`补入「${a}」`),...a.renamed.map(a=>`「${a.from}」→「${a.to}」`)].join(";")}`)},{subtitle:"评审模块承接",order:a.global.progressStages.length})),a.global.emitProgress()}let D=C;{let b=a.planning.tenderRequirements?.structureRequirements||[];if(b.length>0){let c=await (0,aB.Mv)(b.map(aC.JX),C.map(a=>(0,aC.NT)(a.title))),d=(0,aC._D)(b,C,c),e=function(a,b){let c=b.filter(a=>!a.lowConfidence&&("org_chart"===a.requirement.form||e$.test(a.requirement.element)));if(0===c.length)return{chapters:a,changes:[]};let d=a.map(a=>({...a,sections:[...a.sections||[]]})),e=[],f=new Set;for(let a of c){let b=d.find(b=>(0,aC.NT)(b.title)===a.chapterTitle);if(!b||f.has(b.id))continue;f.add(b.id);let c=b.sections||(b.sections=[]);if(c.some(a=>e0.test(a)))continue;let g=e.find(a=>a.chapterTitle===b.title)||(e.push({chapterTitle:b.title,added:[],renamed:[]}),e[e.length-1]),h=c.findIndex(a=>e1.test(a));h>=0?(g.renamed.push({from:c[h],to:e_}),c[h]=e_):(c.push(e_),g.added.push(e_))}return{chapters:d,changes:e.filter(a=>a.added.length>0||a.renamed.length>0)}}(C,d.assignments);if(D=e.chapters,e.changes.length>0){let b=e.changes.reduce((a,b)=>a+b.added.length,0),c=e.changes.reduce((a,b)=>a+b.renamed.length,0);(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"structure-org-sections",status:"success",message:`组织机构承接:${b>0?`补入 ${b} 个「项目管理机构与岗位职责」小节`:""}${b>0&&c>0?"、":""}${c>0?`规范化 ${c} 个承接标题`:""}`,details:e.changes.map(a=>`${(0,bg.GQ)(a.chapterTitle)}:${[...a.added.map(a=>`补入「${a}」`),...a.renamed.map(a=>`「${a.from}」→「${a.to}」`)].join(";")}`)},{subtitle:"组织机构承接",order:a.global.progressStages.length})),a.global.emitProgress()}}}let E=await (0,aB.Mv)(a.understanding.evaluationItems.map(a=>a.title),D.map(eM));a.planning.finalBidStructureAudit=eN({template:a.prepare.template,chapters:D,requirement:a.global.input.requirement,evaluationItems:a.understanding.evaluationItems,semanticSimilarity:E});let F=s;if(!(0,P._C)(a.understanding.bidComposition)&&s.size>0){let b=b=>(0,bg.GQ)(a.planning.finalBidStructureAudit.enrichedChapters.find(a=>a.id===b)?.title||b),c=[...s.entries()].flatMap(([a,c])=>c.map(c=>({chapterTitle:b(a),title:c.title,fields:c.fields})));if(c.length>0){let d=await fm({tables:c,requirementSummary:(0,aC.zD)(a.planning.tenderRequirements),boqCoverageSummary:(0,V.Hp)((0,V.v7)(a.understanding.preliminaryFactsModel)),templateName:a.prepare.template.name,signal:a.global.input.signal});if(d.removed.length>0){let c=new Set(d.removed.map(a=>`${a.chapterTitle}
75
75
  ${a.title}`));F=new Map([...s.entries()].map(([a,d])=>[a,d.filter(d=>!c.has(`${b(a)}
76
- ${d.title}`))])),(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"table-scope-audit",status:"success",message:`表格范围核对:剔除 ${d.removed.length} 项超范围规划表(非本标段工程实体)`,details:d.removed.map(a=>`${a.chapterTitle}:${a.title}(${a.reason})`)},{subtitle:"表格范围核对",order:a.global.progressStages.length})),a.global.emitProgress()}else d.skipped&&((0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"table-scope-audit",status:"skipped",message:`表格范围核对跳过:${d.skipped}`,details:[]},{subtitle:"表格范围核对",order:a.global.progressStages.length})),a.global.emitProgress())}}let G=(0,bV.lR)({chapters:a.planning.finalBidStructureAudit.enrichedChapters,plannedTables:F,requiredTables:a.prepare.runtimePromptRules.requiredTables,bodyTablePolicy:a.understanding.bidComposition?.bodyTablePolicy}),H=G.chapters;if(!(0,P._C)(a.understanding.bidComposition)&&(0,aC.l)(a.planning.tenderRequirements)){let b=(0,bV.cR)((0,bV.K9)(a.planning.tenderRequirements?.entries||[]),a.planning.tenderRequirements?.structureRequirements||[]);if(b.length>0){let c=await (0,aB.Mv)(b.map(a=>a.source),H.map(a=>a.title)),d=(0,bV.c$)(H,b,c);H=d.chapters;let e=[];for(let a of H)for(let b of a.diagramRequirements||[])e.push(`${(0,bg.GQ)(a.title)}:${b.split("(招标要求原文")[0]}`);(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"diagram-artifacts",status:"success",message:`图类呈现计划:识别 ${b.length} 项图类要求(${b.map(a=>a.name).join("、")}),注入 ${e.length} 项${d.unattached.length>0?`,未归属 ${d.unattached.length} 项(相似度不足不注入,防错挂)`:""}`,details:e},{subtitle:"图表呈现计划",order:a.global.progressStages.length})),a.global.emitProgress()}}if(a.planning.effectiveChapters=H,(0,P._C)(a.understanding.bidComposition)){let b=a.understanding.bidComposition;(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"bid-composition-table-policy",status:"success",message:`编制规格消费:正文禁表(显式禁表句)——小节规划 ${r} 项表格需求与提示词必需表格 ${a.prepare.runtimePromptRules.requiredTables.length} 张均不进入正文,图表由终稿附表区 ${b.appendixPlan.length} 项附表承接`,details:[...b.conflicts.map(a=>`${a.rule} → ${a.resolution}`),...b.appendixPlan.map(a=>`附表${a.no}:${a.title}${"figure"===a.kind?"(图类,图件说明承载)":`(数据源:${a.dataSource})`}`)]},{subtitle:"表格计划"})),a.global.emitProgress()}else if(a.understanding.bidComposition?.bidType==="blind"){let b=G.chapters.reduce((a,b)=>a+(b.tablePlans?.length||0),0);(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"bid-composition-table-policy",status:"success",message:`暗标编制规格消费:招标正文表格口径按证据判定为允许——表格计划 ${b} 项正常构建进入正文(原「暗标一律禁表」硬推已删除);正文图片仍禁(图类以表格化数据/文字框图表达)${G.unattachedRequiredTables.length>0?`;提示词必需表格 ${G.unattachedRequiredTables.length} 张未归属,交由终验兜底插入`:""}`,details:[...a.understanding.bidComposition.conflicts.map(a=>`${a.rule} → ${a.resolution}`),...a.understanding.bidComposition.appendixPlan.map(a=>`附表${a.no}:${a.title}${"figure"===a.kind?"(图类,图件说明承载)":`(数据源:${a.dataSource})`}`)]},{subtitle:"表格计划"})),a.global.emitProgress()}else G.unattachedRequiredTables.length>0&&(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"required-tables-unattached",status:"success",message:`提示词必需表格归属:${G.unattachedRequiredTables.length} 张未匹配到明确章节(${G.unattachedRequiredTables.join("、")}),交由文档合成终验兜底插入`,details:["未归属必需表格不做语义错挂——防止表格落到不相关章节"]},{subtitle:"表格计划"}));a.planning.effectiveChapters=(b=a.planning.effectiveChapters).length?b.map((a,b)=>{let c=a.sections||[];if(c.length<2||!(0===b||/概况|总体理解|编制说明|编制依据/u.test(a.title)))return a;let d=c.findIndex(a=>/^(?:编制说明|编制依据)/u.test(a)||/工程概况|项目概况|基本概况/u.test(a));if(d<=0)return a;let e=[c[d],...c.filter((a,b)=>b!==d)];return{...a,sections:e}}):b,A>0&&((0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"outline-topic-filter",status:"success",message:`大纲小节主题过滤:剔除 ${A} 个评标纪律/商务报价类离题小节`,details:["被剔除小节不进入写作、目录与预算计划"]},{subtitle:"大纲主题约束",order:a.global.progressStages.length})),a.global.emitProgress()),(a.planning.finalBidStructureAudit.issues.length>0||a.understanding.bidStructureAudit.issues.length>0)&&(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"bid-structure-audit",status:a.planning.finalBidStructureAudit.issues.some(a=>"blocker"===a.severity)?"failed":"success",message:`评标结构符合性校验:${a.planning.finalBidStructureAudit.diagnostics.length} 个结构组,${a.planning.finalBidStructureAudit.diagnostics.filter(a=>"satisfied"===a.status).length} 个已满足,${a.planning.finalBidStructureAudit.diagnostics.filter(a=>"missing"===a.status&&"required"===a.level).length} 个必查缺失(已自动补挂),${a.planning.finalBidStructureAudit.diagnostics.filter(a=>"fragmented"===a.status).length} 个分散`,details:[...a.planning.finalBidStructureAudit.diagnostics.map(a=>`${"satisfied"===a.status?"满足":"fragmented"===a.status?"分散":"补挂"}:${a.groupTitle}${"missing"===a.status?`(补挂小节:${a.missingSections.join("、")})`:""}`),...a.planning.finalBidStructureAudit.issues.map(a=>`提示:${a.message}`).slice(0,8)]},{subtitle:"评标结构校验"})),a.prepare.template={...a.prepare.template,chapters:a.planning.effectiveChapters},a.planning.requirementsSimilarity=await (0,aB.Mv)([...(0,aC.Uk)(a.planning.tenderRequirements).map(({item:a})=>(0,aC.E6)(a)),...(a.planning.tenderRequirements?.structureRequirements||[]).map(aC.JX)],a.planning.effectiveChapters.map(a=>(0,aC.NT)(a.title))),a.planning.factTokenScopeClassifier=await e5(),a.planning.chapterIntentClassifier=await fe(a.planning.effectiveChapters.map(a=>a.title)),a.planning.professionalDepthClassifier=await fk(),a.planning.writingTaskBrief=(0,eP.G0)({chapters:a.planning.effectiveChapters,factsModel:a.understanding.preliminaryFactsModel,projectGraph:a.understanding.projectGraph||void 0,requirement:a.global.input.requirement,templateName:a.prepare.template.name}),a.planning.tenderWritingRulesText=j("tenderWritingRulesText",(0,aC.ey)(a.planning.tenderRequirements)),a.planning.projectContext=[a.planning.baseProjectContext,a.planning.tenderWritingRulesText].filter(Boolean).join("\n\n"),a.planning.chapterScopedProjectContext=b=>[a.planning.constructionOrgContext,a.planning.tenderWritingRulesText].filter(Boolean).join("\n\n"),a.planning.documentBudget=(0,h.tF)({requirement:d.requirement,promptTexts:d.promptTexts,template:a.prepare.template,chapters:a.planning.effectiveChapters,spec:a.prepare.documentSpec}),a.planning.plannedDocument=await a.planning.plannedDocumentTask,a.understanding.agentWorkflow.documentPlan=a.planning.plannedDocument.plan,a.understanding.agentWorkflow.nodes.push(a.planning.plannedDocument.node),(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"agent-document-planner",status:"success",message:a.planning.plannedDocument.node.outputSummary||"Agent 文档规划完成",details:a.planning.plannedDocument.plan.chapters.map(a=>`${a.title}:${a.sections.length} 条细目`)},{subtitle:"Agent Document Planner",order:a.global.progressStages.length})),a.global.checkpointChapterOrderIds=a.planning.effectiveChapters.map(a=>a.id);let I=a.planning.documentBudget.targetChars||[...a.planning.documentBudget.chapterTargets.values()].reduce((a,b)=>a+b,0),J=a.understanding.preliminaryFactsModel,K=J?.preciseFacts?.length??0,L=(J?.tables??[]).reduce((a,b)=>a+(b.rows?.length??0),0),M=Math.max(0,(J?[...J.project,...J.schedule,...J.quality,...J.safety,...J.resources,...Object.values(J.schemaFacts??{}).flat()].length:0)-K),N=(a.understanding.writerEvidence??[]).filter(a=>/[.](?:dwg|dxf)$/iu.test(String(a.filePath??""))).length,O=(0,h.KZ)({targetWords:I,parameters:K,boqRows:L,drawingFacts:N,basicFacts:M});if(a.planning.evidenceDensity=O,(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"evidence-density-check",status:O.sufficient?"success":"failed",message:O.sufficient?`证据密度体检通过:资料可支撑约 ${O.supportableWords} 字(目标 ${O.targetWords} 字)`:`证据密度不足:资料可支撑约 ${O.supportableWords} 字,低于目标 ${O.targetWords} 字(差额约 ${Math.round(O.shortfall)} 字)`,details:O.remediation},{subtitle:"生成准备",order:a.global.progressStages.length})),!O.sufficient)throw Error(`证据密度不足,无法支撑目标篇幅:${O.remediation.join(" ")}`);a.planning.generationStrategy=(0,f.JP)({template:a.prepare.template,targetWords:I,requirement:a.global.input.requirement,materialFileCount:a.prepare.materialFilePaths.length,evidenceCount:a.understanding.allEvidence.length}),a.planning.generationBudget=(0,fn.C)({template:a.prepare.template,chapters:a.planning.effectiveChapters,targetWords:I,requirement:a.global.input.requirement,materialFileCount:a.prepare.materialFilePaths.length,evidenceCount:a.understanding.allEvidence.length,hasVeryLargeExplicitChapter:a.planning.effectiveChapters.some(a=>(a.sections||[]).filter(Boolean).length>=30),configuredChapterConcurrency:(0,cU.z)().chapterConcurrency||0,strategy:a.planning.generationStrategy}),a.planning.generationDiagnostics=(0,f.Zk)(a.planning.generationStrategy),(a.understanding.earlyFactPool.factSanitize.truncated>0||a.understanding.earlyFactPool.factSanitize.dropped>0||a.understanding.earlyFactPool.factSanitize.repaired>0)&&(a.planning.generationDiagnostics.factSanitize={...a.understanding.earlyFactPool.factSanitize}),a.planning.planPhaseStartedAt=Date.now(),(0,cl.t5)(I),(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"document-strategy",status:"success",message:`已自动选择 ${a.planning.generationStrategy.mode} 生成策略:章节审查 ${a.planning.generationStrategy.enableChapterReview?"启用":"跳过"}、全局审查 ${a.planning.generationStrategy.enableGlobalReview?`${a.planning.generationStrategy.globalReviewSamplingRate&&a.planning.generationStrategy.globalReviewSamplingRate<1?`抽检 ${Math.round((a.planning.generationStrategy.globalReviewSamplingRate??1)*100)}%`:"启用"}`:"跳过"}、最终质量审查 ${a.planning.generationStrategy.enableFinalQualityReview?"启用":"跳过"}`,details:a.planning.generationBudget.triggers},{subtitle:"后台自动策略"})),a.understanding.canonicalFacts.scopeConflicts.length>0&&(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"scope-conflict-resolution",status:"success",message:`源级数据口径冲突已裁决(补疑/澄清修正文件权威最高):${a.understanding.canonicalFacts.scopeConflicts.map(a=>a.resolution?`${a.scope} → ${a.resolution}`:`${a.scope} → 待人工复核`).join(";")}`,details:a.understanding.canonicalFacts.scopeConflicts.flatMap(a=>a.values.map(a=>`来源「${a.sourceFile||"未知文件"}」取值 ${a.value}${a.unit}`))},{subtitle:"数据口径裁决"}));let Q=a.prepare.hasExplicitOutline?"OUTLINE 章节":"模板章节";a.planning.sectionPlanningStage=(0,q.X5)({type:"validation",roleId:"section-planning",status:"success",message:`小节规划:${p} 章统一融合规划(基于${Q}、提示词强制小节与项目资料)——融合小节合计 ${o} 个(其中锁定 ${n} 个)、表格需求 ${r} 项`,details:t.length?[...t]:void 0},{subtitle:"小节规划策略"});let R=a.prepare.hasExplicitOutline?`;识别到 OUTLINE 章节 ${a.prepare.explicitPromptChapters.length} 个`:";未识别到有效 OUTLINE,将使用模板章节",S=[...a.prepare.promptPlan.prompts.map(a=>`${a.category}|${a.roleId}|${a.id}|${a.name}|${a.bindingSource}|${a.content.length} 字符|hash=${a.contentHash}|${a.contentPreview}`),...a.prepare.promptPlan.unresolvedRoles.map(a=>`unresolved|${a}|项目角色配置中的提示词角色不存在`),...a.prepare.promptPlan.missingResourceRoles.map(a=>`missingResource|${a}|提示词角色未显式绑定资源`)];(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"role_binding",roleId:a.prepare.projectRoleConfigId,status:"success",message:`已绑定项目资料 ${a.prepare.materialFilePaths.length} 份、${a.prepare.promptPlan.prompts.length} 个有效提示词;写作 ${a.prepare.promptPlan.writerPrompts.length}、章节 ${a.prepare.promptPlan.chapterPrompts.length}、抽取 ${a.prepare.promptPlan.extractionPrompts.length};已自动抽取运行时规则 ${a.prepare.runtimePromptRules.executionSummary.length} 条${R}`,details:[...S,...a.prepare.runtimePromptRules.executionSummary.map(a=>`runtimeRule|${a}`)]},{subtitle:a.prepare.projectRoleConfigName,roleName:a.prepare.projectRoleConfigName})),(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"runtime-prompt-rules",status:"success",message:`运行时提示词规则已抽取:${a.prepare.runtimePromptRules.executionSummary.length} 条,版本 ${a.prepare.runtimePromptRules.sourceHash}`,details:a.prepare.runtimePromptRules.executionSummary.length?[...a.prepare.runtimePromptRules.executionSummary,`必需表格:${a.prepare.runtimePromptRules.requiredTables.join("、")||"无"}`,`必含关键词:${a.prepare.runtimePromptRules.requiredKeywords?.join("、")||"无"}`,`禁含内容:${a.prepare.runtimePromptRules.forbiddenPatterns?.join("、")||"无"}`]:["未从提示词中识别到额外硬规则,使用系统默认质量规则"]},{subtitle:"提示词规则执行"})),(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"document-readiness",status:a.prepare.readiness.ready?"success":"failed",message:"生成准备度:绑定资料已就绪",details:a.prepare.readiness.diagnostics},{subtitle:"生成准备度检查"})),(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"diversity-governance",status:"success",message:`多文档反雷同:组织视角「${a.planning.diversityProfile.perspective}」\xd7命名风格「${a.planning.diversityProfile.style}」;历史指纹避让 ${u.length} 个标题${w>0?`,撞名局部改名 ${w} 章${x>0?`(局部改名后仍近似 ${x} 处,已接受)`:""}`:""}`,details:[`历史指纹池 ${a.planning.fingerprintPool.entries.length} 条(仅本机历史文档标题与结构,无正文)`,`多样性画像 ${a.planning.diversityProfile.id}`]},{subtitle:"多样性治理"})),(0,q.fx)(a.global.progressStages,a.planning.sectionPlanningStage),a.global.emitProgress()}var fq=c(14070),fr=c(70963);async function fs(a){if(a.understanding.evidenceScopePaths=new Set(a.prepare.materialFilePaths),a.understanding.fileRoleByPath=new Map([...a.prepare.kindByPath.entries()].map(([a,b])=>[a,(0,eR._W)(b)])),a.understanding.fileProcessingByPath=new Map([...a.prepare.processingByPath.entries()].map(([a,b])=>[a,b])),(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"knowledge_retrieval",roleId:"knowledge-index",status:"running",message:"正在读取项目资料包索引",details:["使用上传阶段已完成的解析、切片和索引结果","不在生成流程中重新解析或入库","准备按资料类型召回章节证据"],progress:{current:1,total:3,label:"读取索引"}},{subtitle:"知识库检索",order:a.global.progressStages.length})),a.global.emitProgress(),a.understanding.project=await a.global.withProgressHeartbeat(()=>a.understanding.manager.getProject(a.prepare.projectRoot)),a.understanding.indexHealth=(0,k.EK)(a.understanding.project,[...a.understanding.evidenceScopePaths]),a.understanding.indexHealth.blockingIssues.length>0)throw Error(`生成前知识索引不可用:${a.understanding.indexHealth.blockingIssues.join(";")}`);a.understanding.availableEvidenceScopePaths=new Set(a.understanding.indexHealth.usablePaths),a.understanding.requestedEvidencePerChapter=(0,k.G2)(a.understanding.project,[...a.understanding.availableEvidenceScopePaths],a.global.input.maxEvidencePerChapter);let b=a.understanding.indexHealth.pendingJobs>0||0===a.understanding.indexHealth.usableChunkCount;a.understanding.rolePoolRisk=ch({totalChunks:Math.min(a.understanding.indexHealth.usableChunkCount,20*a.prepare.materialFilePaths.length),loadedChunks:Math.min(a.understanding.indexHealth.usableChunkCount,20*a.prepare.materialFilePaths.length),vectorReady:a.understanding.indexHealth.vectorStatus?"ready"===a.understanding.indexHealth.vectorStatus.status:void 0}),(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"knowledge_retrieval",roleId:"knowledge-index",status:b?"failed":"success",message:`已读取知识索引:项目资料 ${a.understanding.indexHealth.scopedRecords.length} 份,可用切片 ${a.understanding.indexHealth.usableChunkCount} 条`,details:[`项目资料:${a.understanding.evidenceScopePaths.size} 份`,`可用证据文件:${a.understanding.availableEvidenceScopePaths.size} 份`,`向量状态:${(0,k.EG)(a.understanding.indexHealth.vectorStatus?.status)}`,...a.understanding.indexHealth.warnings,"后续将按招标正文/清单/图纸/补疑等资料类型召回"],progress:{current:3,total:3,label:"索引已就绪"}},{subtitle:"知识库检索",order:a.global.progressStages.length})),a.global.emitProgress(),(0,e.Te)(a.global.input.signal),a.understanding.allEvidence=[],a.understanding.retrievalCoverageReports=[],a.understanding.webResearchReport={enabled:a.prepare.webAccessConfig.enabled,queries:[],evidenceCount:0,filteredCount:0,chapters:[]},a.understanding.missingItems=[],a.understanding.failedChapterMessages=[],a.understanding.chapterGenerationStages=[],a.understanding.chapterDraftsByOrder=[],a.understanding.chapterGenerationStagesByOrder=[],a.understanding.knowledgeBaseStageIndex=-1;let c=new Map,d=[],f=new Map;a.understanding.getCachedFileDetail=b=>{let c=`${b}::full`;if(!f.has(c))try{f.set(c,a.understanding.project.getFileDetail?.(b))}catch{f.set(c,void 0)}return f.get(c)},a.understanding.searchWithCache=async(b,f,g,h,i)=>{let j=(0,k.Iu)(h),l=i??(0,ce.materialRootsOfFiles)(f),m=(0,e.c6)({query:b,scopedFilePaths:f,effectiveMaterialRoots:l,limit:g,weights:j,generationMode:!0,reranker:!0}),n=c.get(m);if(n)return n;let o=await a.understanding.manager.search(a.prepare.projectRoot,b,{scope:"project",filters:{filePaths:f,materialRoots:l},limit:g,weights:j,generationMode:!0,disableReranker:!1}).catch(a=>(d.push({query:b,message:a instanceof Error?a.message:String(a)}),null));if(null===o)return[];let p=o.results||[];return c.set(m,p),p};let h={stage:(0,q.X5)({type:"file_understanding",roleId:"project-understanding",status:"running",message:`正在理解项目资料:${a.prepare.projectMaterialProfile.files.length} 份资料,${Object.values(a.prepare.projectMaterialProfile.groups).filter(a=>a.length>0).length} 类资料类型`,progress:{current:1,total:3,label:"资料理解"}},{subtitle:"项目资料理解",order:a.global.progressStages.length})};(0,q.fx)(a.global.progressStages,h.stage),a.global.emitProgress();let i=await (0,k.jX)({manager:a.understanding.manager,project:a.understanding.project,projectRoot:a.prepare.projectRoot,scopedFilePaths:[...a.understanding.availableEvidenceScopePaths].filter(Boolean).sort(),scopedMaterialRoots:a.prepare.materialScope.selectedMaterialRoots,fileRoleByPath:a.understanding.fileRoleByPath,fileProcessingByPath:a.understanding.fileProcessingByPath,signal:a.global.input.signal});i.length>0&&(a.understanding.allEvidence.push(...i),(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"knowledge_retrieval",roleId:"project-basic-evidence",status:"success",message:`已锁定项目基础事实证据 ${i.length} 条`,details:i.slice(0,8).map(a=>`${ew.basename(a.filePath)}|${a.sectionTitle||"正文片段"}|score=${a.score.toFixed(2)}`)},{subtitle:"基础事实召回",order:a.global.progressStages.length})),a.global.emitProgress()),a.understanding.searchFailures=d,d.length>0&&((0,q.fx)(a.global.progressStages,(0,q.X5)({type:"knowledge_retrieval",roleId:"kb-search-failures",status:"failed",message:`知识库检索失败 ${d.length} 次(失败与「无命中」已分开计;失败结果不写缓存,同 query 后续会重试)`,details:d.slice(0,10).map(a=>`${a.query}:${a.message}`)},{subtitle:"基础事实召回",order:a.global.progressStages.length})),a.global.emitProgress());let{safe:j,excluded:l}=await (0,eH.a0)(a.understanding.allEvidence);a.understanding.writerEvidence=j,a.understanding.bidProcedureJudge=await (0,eH.M8)(),l.length>0&&((0,q.fx)(a.global.progressStages,(0,q.X5)({type:"knowledge_retrieval",roleId:"evidence-content-safety",status:"success",message:`证据内容安全过滤:${l.length} 条投标程序/评标纪律类证据已从写作链断开(系统侧提取通道不受影响)`,details:l.slice(0,6).map(a=>`${ew.basename(a.filePath)}|${a.sectionTitle||"正文片段"}`)},{subtitle:"证据内容安全",order:a.global.progressStages.length})),a.global.emitProgress()),a.understanding.safeProjectBasicEvidence=i.filter(a=>!l.includes(a)),a.understanding.excludedEvidenceKeys=new Set(l.map(eH.hM)),a.understanding.earlyFactPool=(0,m.d6)({evidence:a.understanding.writerEvidence,template:a.prepare.template,spec:a.prepare.documentSpec,profile:a.prepare.domainProfile});let o=a.understanding.earlyFactPool.localFacts,p=[...o,...a.understanding.earlyFactPool.projectBasicFacts,...a.understanding.earlyFactPool.preciseFacts];a.understanding.scopedIntelligence=(0,fo.hp)({projectRoot:a.prepare.projectRoot,template:a.prepare.template,requirement:a.global.input.requirement,materialScope:a.prepare.materialScope});let r=[...(0,e.lX)(a.understanding.scopedIntelligence?.facts||[]),...p,...(0,n.UT)(a.understanding.writerEvidence)],s=(0,n.GZ)(r,a.prepare.projectRoot);for(let b of(a.understanding.preliminaryFactsModel=await (0,m.d7)(s,a.understanding.earlyFactPool.structuredTables,a.understanding.missingItems,a.prepare.documentSpec,a.prepare.domainProfile),a.understanding.agentWorkflow=(0,cj.Qu)({template:a.prepare.template,requirement:a.global.input.requirement,projectRoot:a.prepare.projectRoot,facts:s,projectGraph:a.understanding.scopedIntelligence?.projectGraph,projectGraphSource:a.understanding.scopedIntelligence?"project-intelligence":void 0,materialScope:a.prepare.materialScope}),(0,cj.SU)(a.understanding.agentWorkflow)))(0,q.fx)(a.global.progressStages,b);if(a.understanding.scopedIntelligence&&(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"file_understanding",roleId:"project-intelligence-cache",status:"success",message:`已复用入库后资料包理解资产:${a.understanding.scopedIntelligence.files.length} 份资料`,details:[`项目级缓存时间:${new Date(a.understanding.scopedIntelligence.cache.createdAt).toLocaleString()}`,`资料包范围指纹:${a.understanding.scopedIntelligence.scope.scopeHash.slice(0,12)}`,`复用预计算事实:${a.understanding.scopedIntelligence.facts.length} 条`,`复用预计算项目图谱:${a.understanding.scopedIntelligence.projectGraph.works.length}工程/${a.understanding.scopedIntelligence.projectGraph.methods.length}工法/${a.understanding.scopedIntelligence.projectGraph.resources.length}资源`,`复用施工组织设计专项图谱:${a.understanding.scopedIntelligence.constructionOrganizationGraph.workPackages.length} 个工作包/${a.understanding.scopedIntelligence.constructionOrganizationGraph.controlMatrix.length} 条控制矩阵`,`图谱来源:${a.understanding.scopedIntelligence.cache.projectGraphMessage}`,`章节意图证据覆盖:${Object.keys(a.understanding.scopedIntelligence.evidenceByChapterId||{}).length}/${a.prepare.template.chapters.length} 章`,`排除正文不适用资料:${a.understanding.scopedIntelligence.files.filter(a=>!a.usableForBody).length} 份`]},{subtitle:"项目理解缓存 / 资料包"})),a.global.emitProgress(),a.understanding.projectGraph=a.understanding.agentWorkflow.baseProjectGraph,!a.understanding.scopedIntelligence){(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"file_understanding",roleId:"project-graph",status:"running",message:`正在临时构建完整项目图谱:${a.understanding.allEvidence.length} 条证据 → LLM 结构化提取`,details:["缓存缺失或版本过期,建议重新构建项目理解缓存;本次生成将临时构建完整项目图谱。","提取:工程内容、施工方法、材料设备、技术标准、重点难点"],progress:{current:2,total:3,label:"项目图谱"}},{subtitle:"项目资料图谱分析",order:a.global.progressStages.length})),a.global.emitProgress();let b=await a.global.withProgressHeartbeat(()=>(0,fr.i)({evidence:a.understanding.writerEvidence,signal:a.global.input.signal,projectRoot:a.prepare.projectRoot,requirement:a.global.input.requirement,templateId:a.prepare.template.id}),a.global.progressStages);if(!b.graph)throw Error(`完整项目图谱构建失败:${b.stage.message||b.stage.status}`);a.understanding.projectGraph=b.graph,(0,q.fx)(a.global.progressStages,b.stage),a.global.emitProgress()}a.understanding.projectGraph&&(a.prepare.projectUnderstanding=(0,eR._n)(a.prepare.template,a.prepare.projectMaterialProfile,a.understanding.projectGraph)),(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"file_understanding",roleId:"project-understanding",status:"success",message:`已完成项目资料理解:${a.prepare.projectMaterialProfile.files.length} 份资料、${Object.values(a.prepare.projectMaterialProfile.groups).filter(a=>a.length>0).length} 类资料类型${a.understanding.projectGraph?`、图谱增强 ${a.understanding.projectGraph.works.length} 项工程内容`:""}`,details:[...a.prepare.projectUnderstanding.chapterPlans.slice(0,10).map(a=>`${a.chapterTitle}:必用 ${a.mustUseMaterialKinds.length} 类资料、必覆盖 ${a.mustCover.length} 项`),...a.prepare.projectUnderstanding.profile.warnings.length?[`资料风险:${a.prepare.projectUnderstanding.profile.warnings.slice(0,3).join(";")}`]:[]]},{subtitle:"项目资料理解",order:a.global.progressStages.length})),a.global.emitProgress(),a.understanding.canonicalFacts=(0,n.qD)({facts:r,projectGraph:a.understanding.projectGraph,requiredKeys:n.nC.map(a=>a.key),projectRoot:a.prepare.projectRoot,requirement:a.global.input.requirement,templateId:a.prepare.template.id}),a.understanding.preliminaryFactsModel.canonical=a.understanding.canonicalFacts;let t=(0,bg.effectiveTemplateChapters)(a.prepare.template,a.prepare.documentSpec,{preserveExplicitOutline:a.prepare.hasExplicitOutline}),u=a.understanding.allEvidence.filter(a=>/评审|评分标准|评分办法|详细评审/u.test(`${a.sectionTitle||""}${a.content}`)).map(a=>a.content);a.understanding.evaluationItems=function(a){let b=a.join("\n"),c=new Map;for(let a of b.matchAll(/(\d{1,2})\s*[.、.]\s*([^;。\n]{4,60})/gu)){let b=a[2].trim().replace(/[“”"'"]/gu,"");if(!/[\u4e00-\u9fa5]{3}/u.test(b)&&!/[杯奖]/u.test(b)||/AI|大模型|评审|评分|分值|分项|子项|满分|得分|投标人须|详见|招标文件/u.test(b)||/公共资源|电子交易|加密|投标|开标|评标委员会|评标价|中标候选|中标人|评标程序|评标流程|异常低价|保函|保证金|资格审查|资格后审/u.test(b))continue;let d=Number(a[1]);if(!c.has(d)){let a=function(a){let b=a.replace(/^针对/u,"").replace(/^确保/u,"").replace(/的保障体系与措施$/u,"").replace(/的管理体系与措施$/u,"").replace(/保障体系与措施$/u,"").replace(/管理体系与措施$/u,"").replace(/[,、;,;]+$/u,"").trim();return!/[\u4e00-\u9fa5]{3}/u.test(b)&&!/[杯奖]/u.test(b)||/工期与质量/u.test(b)?"":b.length>24?b.slice(0,24):b}(b);if(a&&(0,bg.ob)(a)||(0,bg.ob)(b))continue;c.set(d,{index:d,text:b,title:a})}}return[...c.values()]}(u),u.length>0&&0===a.understanding.evaluationItems.length&&(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"bid-structure-audit",status:"skipped",message:"评审章节证据存在但未提取到评分条目标题:评分标准编号条目提取为空,承接审计将静默通过",details:["请检查招标文件评标办法章节编号格式;评分项要求(创优目标/绿色等级/禁编日期)由评分项要求提取通道覆盖"]},{subtitle:"评标结构校验",order:a.global.progressStages.length}));let v=await (0,aB.Mv)(a.understanding.evaluationItems.map(a=>a.title),t.map(eM));a.understanding.bidStructureAudit=eN({template:a.prepare.template,chapters:t,requirement:a.global.input.requirement,evaluationItems:a.understanding.evaluationItems,semanticSimilarity:v});let w=[];for(let b of[...a.understanding.evidenceScopePaths].sort()){if(!/招标|补疑|答疑|评标/u.test(b))continue;let c=a.understanding.getCachedFileDetail(b);if(c?.chunks?.length)for(let a of c.chunks)w.push(a.content||"")}a.understanding.bidComposition=(0,P.SD)({tenderTexts:w,requirement:a.global.input.requirement,requiredTables:a.prepare.runtimePromptRules.requiredTables});let x=(0,P.iJ)(a.understanding.bidComposition);if((0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"bid-composition",status:x.status,message:x.message,details:x.details},{subtitle:"标书编制规格",order:a.global.progressStages.length})),a.global.emitProgress(),"unknown"===a.understanding.bidComposition.bidType&&((0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"bid-composition-warning",status:"skipped",message:"标书类型判定告警:未识别暗标/明标标记——本次按常规口径生成(正文表格策略按招标证据判定、正文图片允许);若本项目实为暗标,正文图片与投标人标记可能未被禁止(暗标通常不得出现),请核对招标文件后重跑",details:["核查点:招标文件「施工组织设计采用」勾选项(标记字符变体与「按暗标/采用暗标评审」语义条款均已覆盖)或「暗标编制要求」条款","判定证据链见「标书编制规格」节点"]},{subtitle:"标书编制规格\xb7判定告警",order:a.global.progressStages.length})),a.global.emitProgress()),a.understanding.tenderRequirementsTask=(async()=>{try{let b,c=[];for(let b of[...a.understanding.evidenceScopePaths].sort()){if(!/招标|补疑|答疑|评标/u.test(b))continue;let d=a.understanding.getCachedFileDetail(b);if(d?.chunks?.length)for(let e of d.chunks)c.push({chapterId:"tender-requirements",filePath:d.file?.relativePath||b,score:1,content:e.content||"",roleId:a.understanding.fileRoleByPath.get(b),processingType:a.understanding.fileProcessingByPath.get(b),sectionTitle:e.sectionTitle,source:"pinned-evidence"})}let d=c.length>0?c:(0,g.QR)([...a.understanding.allEvidence.filter(a=>/招标|评标|投标须知|专用合同|合同条款|技术标准|技术要求/u.test(`${a.filePath||""}${a.sectionTitle||""}`)),...a.understanding.allEvidence.filter(a=>!/招标|评标|投标须知|专用合同|合同条款|技术标准|技术要求/u.test(`${a.filePath||""}${a.sectionTitle||""}`))],{preservePinned:!0}),e="0"!==process.env.DOCUMENT_EXTRACTION_CACHE?(0,aC.Sf)({collectionEvidence:d}):void 0,f=e?(0,aC.jl)(a.prepare.projectRoot,e):void 0;return f?(b=f,(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"tender-requirements-cache",status:"success",message:"复用上次提取结果(招标资料哈希命中,跳过判定 LLM)",details:(0,aC.zD)(b)},{subtitle:"招标要求提取\xb7缓存复用",order:a.global.progressStages.length})),a.global.emitProgress()):(b=await a.global.withProgressHeartbeat(()=>(0,aC.mg)(d,{signal:a.global.input.signal,diagnostics:a.planning.generationDiagnostics,onPhase:(b,c)=>{(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"tender-requirements-extraction",status:"running",message:b,details:c},{subtitle:"招标要求提取",order:a.global.progressStages.length})),a.global.emitProgress()}})),e&&(0,aC.e_)(a.prepare.projectRoot,e,b)),(0,aC.l)(b)?((0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"tender-requirements-extraction",status:"success",message:`招标要求结构化提取完成:要求 ${b.reconciliation.entryCount} 条、排除 ${b.reconciliation.excludedCount} 条(${b.reconciliation.batchCount} 批判定)`,details:(0,aC.zD)(b)},{subtitle:"招标要求提取",order:a.global.progressStages.length})),a.global.emitProgress()):d.length>0&&((0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"tender-requirements-extraction",status:"skipped",message:"招标要求提取未获得有效结果(模型不可用或资料中无要求条款),章级验收自动跳过",details:[]},{subtitle:"招标要求提取",order:a.global.progressStages.length})),a.global.emitProgress()),b.extracted&&b.reconciliation.undecidedCount>0&&((0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"tender-requirements-undecided",status:"skipped",message:`对账未闭合:${b.reconciliation.undecidedCount} 条条款未判定(LLM 输出缺号且重试后仍缺)`,details:["未判定条款不进入分配与验收;请检查 LLM 可用性"]},{subtitle:"招标要求提取\xb7对账",order:a.global.progressStages.length})),a.global.emitProgress()),b}catch(b){return(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"tender-requirements-extraction",status:"skipped",message:"招标要求提取链异常,已降级为空模型(章级验收自动跳过)",details:[`异常信息:${b instanceof Error?b.message:String(b)}`,"请检查 LLM 可用性"]},{subtitle:"招标要求提取",order:a.global.progressStages.length})),a.global.emitProgress(),(0,aC.Mx)(!1)}})(),a.planning.baseEffectiveChapters=a.understanding.bidStructureAudit.enrichedChapters,a.prepare.template={...a.prepare.template,chapters:a.planning.baseEffectiveChapters},a.planning.plannedDocumentTask=(0,eQ.NP)({template:a.prepare.template,context:a.understanding.agentWorkflow,title:a.prepare.template.name}),a.planning.plannedDocumentTask.catch(()=>void 0),a.understanding.chapterGraphMap=new Map,a.understanding.projectGraph){let b=new Set;for(let c of[...a.understanding.projectGraph.works,...a.understanding.projectGraph.methods,...a.understanding.projectGraph.resources,...a.understanding.projectGraph.schedule,...a.understanding.projectGraph.standards,...a.understanding.projectGraph.risks,...a.understanding.projectGraph.requirements,...a.understanding.projectGraph.siteConditions])(c.sourceFiles||[]).forEach(a=>b.add(a));for(let c of a.planning.baseEffectiveChapters){let d=[c.title,c.purpose,...c.sections||[],...c.requiredFacts||[],...c.queries||[]].join(" "),e=a=>a&&((0,fq.C1)(a,d,.18)||(0,fq.C1)(a,c.title,.12)),f=/概况|总体|部署|施工|进度|工期|质量|安全|资源|人材机|材料|机械|劳动力|风险|危大|绿色|环保/u.test(d),g=a.understanding.projectGraph.works.filter(a=>a.name&&(e(a.name)||f)),h=a.understanding.projectGraph.methods.filter(a=>a.name&&(e(a.name)||(a.applicableWorks||[]).some(e)||f)),i=a.understanding.projectGraph.resources.filter(a=>a.name&&(e(a.name)||/资源|人材机|材料|机械|劳动力/u.test(d)&&/material|equipment|labor/u.test(a.type))),j=a.understanding.projectGraph.gaps.filter(a=>!(0,fo.Ut)(a)&&(e(a)||f)),k=new Set;for(let a of g)(a.sourceFiles||[]).forEach(a=>k.add(a));for(let a of h)(a.sourceFiles||[]).forEach(a=>k.add(a));for(let a of i)(a.sourceFiles||[]).forEach(a=>k.add(a));0===k.size&&f&&[...b].forEach(a=>k.add(a)),a.understanding.chapterGraphMap.set(c.id,{graphFiles:k,graphBoqItems:i.map(a=>({name:a.name,quantity:a.quantity,unit:a.unit,sourceFiles:a.sourceFiles||[]})),graphWorks:g.map(a=>a.name),graphMethods:h.map(a=>a.name),gaps:j})}a.understanding.scopedIntelligence||((0,q.fx)(a.global.progressStages,(0,q.X5)({type:"file_understanding",roleId:"project-graph-match",status:"success",message:`图谱→章节映射完成:${a.understanding.projectGraph.works.length}工程 ${a.understanding.projectGraph.methods.length}工法 ${a.understanding.projectGraph.resources.length}资源 → ${a.planning.baseEffectiveChapters.length}章`,details:a.planning.baseEffectiveChapters.map(b=>{let c=a.understanding.chapterGraphMap.get(b.id);return`${(0,bg.GQ)(b.title)}:匹配文件${c?.graphFiles.size||0}个,BOQ项${c?.graphBoqItems.length||0}个`})},{subtitle:"图谱章节映射"})),a.global.emitProgress())}}var ft=c(44533),fu=c(29281),fv=c(25840),fw=c(6444),fx=c(85441),fy=c(56942);function fz(){return{parsed:!1,globalRequirements:[],chapterRequirements:[],factClues:[],styleRequirements:[],mandatoryBlockText:"",summary:""}}let fA=[(0,O.y4)("你是用户生成要求的语义解析专家。"),'把用户的生成提示词完整解析为可逐条核验的结构化要求清单,不得遗漏用户的任何实质要求;不得把通用客套话(如"请帮我生成""谢谢")当作要求。\n要求必须逐条短句(每条 ≤60 字)、可核验(生成后能判断是否满足);一条要求只写一件事,复合要求必须拆分。\nglobalRequirements:全文级强制要求——写作内容、深度、覆盖面、表格、量化要求等不限定具体章节的要求;若要求明确指向某个章节,必须放入 chapterRequirements 而不是 globalRequirements。\nchapterRequirements:章节级要求——chapterTitle 必须原样取自给定的章节列表,不得编造不存在的章节名;同一章节的多条要求合并为一条记录。\nfactClues:用户提示词中显式给出的项目专属事实线索——含数值、单位、规格、型号、标准编号、日期、地点、规模、金额、目标的短句(如"一般路灯 100W 109套、120W 9套""计划工期 365 日历天""开挖深度 5.2m");要求类语句("必须写X")不算事实线索;线索必须原样保留数值与表述,不得改写或换算。\nstyleRequirements:写作风格与格式要求(语气、详略、表格偏好、禁止风格等),最多 8 条。\n只返回 JSON。'].join("\n");function fB(a,b){let c=String(a||"").trim().replace(/^\d+[.、))]\s*/u,"");return!c||c.length>b?"":c}async function fC(a){let b=(a.requirement||"").trim(),c=(a.chapterTitles||[]).filter(Boolean),d=fz();if(!b||b.length<4||b.length<=40&&!/[::]|\n/u.test(b))return d;try{let e=await (0,cl.bb)(fA,`章节列表(chapterRequirements 的 chapterTitle 必须原样取自以下列表):${c.join("、")||"(无)"}
76
+ ${d.title}`))])),(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"table-scope-audit",status:"success",message:`表格范围核对:剔除 ${d.removed.length} 项超范围规划表(非本标段工程实体)`,details:d.removed.map(a=>`${a.chapterTitle}:${a.title}(${a.reason})`)},{subtitle:"表格范围核对",order:a.global.progressStages.length})),a.global.emitProgress()}else d.skipped&&((0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"table-scope-audit",status:"skipped",message:`表格范围核对跳过:${d.skipped}`,details:[]},{subtitle:"表格范围核对",order:a.global.progressStages.length})),a.global.emitProgress())}}let G=(0,bV.lR)({chapters:a.planning.finalBidStructureAudit.enrichedChapters,plannedTables:F,requiredTables:a.prepare.runtimePromptRules.requiredTables,bodyTablePolicy:a.understanding.bidComposition?.bodyTablePolicy}),H=G.chapters;if(!(0,P._C)(a.understanding.bidComposition)&&(0,aC.l)(a.planning.tenderRequirements)){let b=(0,bV.cR)((0,bV.K9)(a.planning.tenderRequirements?.entries||[]),a.planning.tenderRequirements?.structureRequirements||[]);if(b.length>0){let c=await (0,aB.Mv)(b.map(a=>a.source),H.map(a=>a.title)),d=(0,bV.c$)(H,b,c);H=d.chapters;let e=[];for(let a of H)for(let b of a.diagramRequirements||[])e.push(`${(0,bg.GQ)(a.title)}:${b.split("(招标要求原文")[0]}`);(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"diagram-artifacts",status:"success",message:`图类呈现计划:识别 ${b.length} 项图类要求(${b.map(a=>a.name).join("、")}),注入 ${e.length} 项${d.unattached.length>0?`,未归属 ${d.unattached.length} 项(相似度不足不注入,防错挂)`:""}`,details:e},{subtitle:"图表呈现计划",order:a.global.progressStages.length})),a.global.emitProgress()}}if(a.planning.effectiveChapters=H,(0,P._C)(a.understanding.bidComposition)){let b=a.understanding.bidComposition;(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"bid-composition-table-policy",status:"success",message:`编制规格消费:正文禁表(显式禁表句)——小节规划 ${r} 项表格需求与提示词必需表格 ${a.prepare.runtimePromptRules.requiredTables.length} 张均不进入正文,图表由终稿附表区 ${b.appendixPlan.length} 项附表承接`,details:[...b.conflicts.map(a=>`${a.rule} → ${a.resolution}`),...b.appendixPlan.map(a=>`附表${a.no}:${a.title}${"figure"===a.kind?"(图类,图件说明承载)":`(数据源:${a.dataSource})`}`)]},{subtitle:"表格计划"})),a.global.emitProgress()}else if(a.understanding.bidComposition?.bidType==="blind"){let b=G.chapters.reduce((a,b)=>a+(b.tablePlans?.length||0),0);(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"bid-composition-table-policy",status:"success",message:`暗标编制规格消费:招标正文表格口径按证据判定为允许——表格计划 ${b} 项正常构建进入正文(原「暗标一律禁表」硬推已删除);正文图片仍禁(图类以表格化数据/文字框图表达)${G.unattachedRequiredTables.length>0?`;提示词必需表格 ${G.unattachedRequiredTables.length} 张未归属,交由终验兜底插入`:""}`,details:[...a.understanding.bidComposition.conflicts.map(a=>`${a.rule} → ${a.resolution}`),...a.understanding.bidComposition.appendixPlan.map(a=>`附表${a.no}:${a.title}${"figure"===a.kind?"(图类,图件说明承载)":`(数据源:${a.dataSource})`}`)]},{subtitle:"表格计划"})),a.global.emitProgress()}else G.unattachedRequiredTables.length>0&&(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"required-tables-unattached",status:"success",message:`提示词必需表格归属:${G.unattachedRequiredTables.length} 张未匹配到明确章节(${G.unattachedRequiredTables.join("、")}),交由文档合成终验兜底插入`,details:["未归属必需表格不做语义错挂——防止表格落到不相关章节"]},{subtitle:"表格计划"}));a.planning.effectiveChapters=(b=a.planning.effectiveChapters).length?b.map((a,b)=>{let c=a.sections||[];if(c.length<2||!(0===b||/概况|总体理解|编制说明|编制依据/u.test(a.title)))return a;let d=c.findIndex(a=>/^(?:编制说明|编制依据)/u.test(a)||/工程概况|项目概况|基本概况/u.test(a));if(d<=0)return a;let e=[c[d],...c.filter((a,b)=>b!==d)];return{...a,sections:e}}):b,A>0&&((0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"outline-topic-filter",status:"success",message:`大纲小节主题过滤:剔除 ${A} 个评标纪律/商务报价类离题小节`,details:["被剔除小节不进入写作、目录与预算计划"]},{subtitle:"大纲主题约束",order:a.global.progressStages.length})),a.global.emitProgress()),(a.planning.finalBidStructureAudit.issues.length>0||a.understanding.bidStructureAudit.issues.length>0)&&(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"bid-structure-audit",status:a.planning.finalBidStructureAudit.issues.some(a=>"blocker"===a.severity)?"failed":"success",message:`评标结构符合性校验:${a.planning.finalBidStructureAudit.diagnostics.length} 个结构组,${a.planning.finalBidStructureAudit.diagnostics.filter(a=>"satisfied"===a.status).length} 个已满足,${a.planning.finalBidStructureAudit.diagnostics.filter(a=>"missing"===a.status&&"required"===a.level).length} 个必查缺失(已自动补挂),${a.planning.finalBidStructureAudit.diagnostics.filter(a=>"fragmented"===a.status).length} 个分散`,details:[...a.planning.finalBidStructureAudit.diagnostics.map(a=>`${"satisfied"===a.status?"满足":"fragmented"===a.status?"分散":"补挂"}:${a.groupTitle}${"missing"===a.status?`(补挂小节:${a.missingSections.join("、")})`:""}`),...a.planning.finalBidStructureAudit.issues.map(a=>`提示:${a.message}`).slice(0,8)]},{subtitle:"评标结构校验"})),a.prepare.template={...a.prepare.template,chapters:a.planning.effectiveChapters},a.planning.requirementsSimilarity=await (0,aB.Mv)([...(0,aC.Uk)(a.planning.tenderRequirements).map(({item:a})=>(0,aC.E6)(a)),...(a.planning.tenderRequirements?.structureRequirements||[]).map(aC.JX)],a.planning.effectiveChapters.map(a=>(0,aC.NT)(a.title))),a.planning.factTokenScopeClassifier=await e5(),a.planning.chapterIntentClassifier=await fe(a.planning.effectiveChapters.map(a=>a.title)),a.planning.professionalDepthClassifier=await fk(),a.planning.writingTaskBrief=(0,eP.G0)({chapters:a.planning.effectiveChapters,factsModel:a.understanding.preliminaryFactsModel,projectGraph:a.understanding.projectGraph||void 0,requirement:a.global.input.requirement,templateName:a.prepare.template.name}),a.planning.tenderWritingRulesText=j("tenderWritingRulesText",(0,aC.ey)(a.planning.tenderRequirements)),a.planning.projectContext=[a.planning.baseProjectContext,a.planning.tenderWritingRulesText].filter(Boolean).join("\n\n"),a.planning.chapterScopedProjectContext=b=>[a.planning.constructionOrgContext,a.planning.tenderWritingRulesText].filter(Boolean).join("\n\n"),a.planning.documentBudget=(0,h.tF)({requirement:d.requirement,promptTexts:d.promptTexts,template:a.prepare.template,chapters:a.planning.effectiveChapters,spec:a.prepare.documentSpec}),a.planning.plannedDocument=await a.planning.plannedDocumentTask,a.understanding.agentWorkflow.documentPlan=a.planning.plannedDocument.plan,a.understanding.agentWorkflow.nodes.push(a.planning.plannedDocument.node),(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"agent-document-planner",status:"success",message:a.planning.plannedDocument.node.outputSummary||"Agent 文档规划完成",details:a.planning.plannedDocument.plan.chapters.map(a=>`${a.title}:${a.sections.length} 条细目`)},{subtitle:"Agent Document Planner",order:a.global.progressStages.length})),a.global.checkpointChapterOrderIds=a.planning.effectiveChapters.map(a=>a.id);let I=a.planning.documentBudget.targetChars||[...a.planning.documentBudget.chapterTargets.values()].reduce((a,b)=>a+b,0),J=a.understanding.preliminaryFactsModel,K=J?.preciseFacts?.length??0,L=(J?.tables??[]).reduce((a,b)=>a+(b.rows?.length??0),0),M=Math.max(0,(J?[...J.project,...J.schedule,...J.quality,...J.safety,...J.resources,...Object.values(J.schemaFacts??{}).flat()].length:0)-K),N=(a.understanding.writerEvidence??[]).filter(a=>/[.](?:dwg|dxf)$/iu.test(String(a.filePath??""))).length,O=(0,h.KZ)({targetWords:I,parameters:K,boqRows:L,drawingFacts:N,basicFacts:M});if(a.planning.evidenceDensity=O,(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"evidence-density-check",status:O.sufficient?"success":"failed",message:O.sufficient?`证据密度体检通过:资料可支撑约 ${O.supportableWords} 字(目标 ${O.targetWords} 字)`:`证据密度不足:资料可支撑约 ${O.supportableWords} 字,低于目标 ${O.targetWords} 字(差额约 ${Math.round(O.shortfall)} 字)`,details:O.remediation},{subtitle:"生成准备",order:a.global.progressStages.length})),!O.sufficient)throw Error(`证据密度不足,无法支撑目标篇幅:${O.remediation.join(" ")}`);a.planning.generationStrategy=(0,f.JP)({template:a.prepare.template,targetWords:I,requirement:a.global.input.requirement,materialFileCount:a.prepare.materialFilePaths.length,evidenceCount:a.understanding.allEvidence.length}),a.planning.generationBudget=(0,fn.C)({template:a.prepare.template,chapters:a.planning.effectiveChapters,targetWords:I,requirement:a.global.input.requirement,materialFileCount:a.prepare.materialFilePaths.length,evidenceCount:a.understanding.allEvidence.length,hasVeryLargeExplicitChapter:a.planning.effectiveChapters.some(a=>(a.sections||[]).filter(Boolean).length>=30),configuredChapterConcurrency:(0,cU.z)().chapterConcurrency||0,strategy:a.planning.generationStrategy}),a.planning.generationDiagnostics=(0,f.Zk)(a.planning.generationStrategy),(a.understanding.earlyFactPool.factSanitize.truncated>0||a.understanding.earlyFactPool.factSanitize.dropped>0||a.understanding.earlyFactPool.factSanitize.repaired>0)&&(a.planning.generationDiagnostics.factSanitize={...a.understanding.earlyFactPool.factSanitize}),a.planning.planPhaseStartedAt=Date.now(),(0,cl.t5)(I),(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"document-strategy",status:"success",message:`已自动选择 ${a.planning.generationStrategy.mode} 生成策略:章节审查 ${a.planning.generationStrategy.enableChapterReview?"启用":"跳过"}、全局审查 ${a.planning.generationStrategy.enableGlobalReview?`${a.planning.generationStrategy.globalReviewSamplingRate&&a.planning.generationStrategy.globalReviewSamplingRate<1?`抽检 ${Math.round((a.planning.generationStrategy.globalReviewSamplingRate??1)*100)}%`:"启用"}`:"跳过"}、最终质量审查 ${a.planning.generationStrategy.enableFinalQualityReview?"启用":"跳过"}`,details:a.planning.generationBudget.triggers},{subtitle:"后台自动策略"})),a.understanding.canonicalFacts.scopeConflicts.length>0&&(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"scope-conflict-resolution",status:"success",message:`源级数据口径冲突已裁决(补疑/澄清修正文件权威最高):${a.understanding.canonicalFacts.scopeConflicts.map(a=>a.resolution?`${a.scope} → ${a.resolution}`:`${a.scope} → 待人工复核`).join(";")}`,details:a.understanding.canonicalFacts.scopeConflicts.flatMap(a=>a.values.map(a=>`来源「${a.sourceFile||"未知文件"}」取值 ${a.value}${a.unit}`))},{subtitle:"数据口径裁决"}));let Q=a.prepare.hasExplicitOutline?"OUTLINE 章节":"模板章节";a.planning.sectionPlanningStage=(0,q.X5)({type:"validation",roleId:"section-planning",status:"success",message:`小节规划:${p} 章统一融合规划(基于${Q}、提示词强制小节与项目资料)——融合小节合计 ${o} 个(其中锁定 ${n} 个)、表格需求 ${r} 项`,details:t.length?[...t]:void 0},{subtitle:"小节规划策略"});let R=a.prepare.hasExplicitOutline?`;识别到 OUTLINE 章节 ${a.prepare.explicitPromptChapters.length} 个`:";未识别到有效 OUTLINE,将使用模板章节",S=[...a.prepare.promptPlan.prompts.map(a=>`${a.category}|${a.roleId}|${a.id}|${a.name}|${a.bindingSource}|${a.content.length} 字符|hash=${a.contentHash}|${a.contentPreview}`),...a.prepare.promptPlan.unresolvedRoles.map(a=>`unresolved|${a}|项目角色配置中的提示词角色不存在`),...a.prepare.promptPlan.missingResourceRoles.map(a=>`missingResource|${a}|提示词角色未显式绑定资源`)];(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"role_binding",roleId:a.prepare.projectRoleConfigId,status:"success",message:`已绑定项目资料 ${a.prepare.materialFilePaths.length} 份、${a.prepare.promptPlan.prompts.length} 个有效提示词;写作 ${a.prepare.promptPlan.writerPrompts.length}、章节 ${a.prepare.promptPlan.chapterPrompts.length}、抽取 ${a.prepare.promptPlan.extractionPrompts.length};已自动抽取运行时规则 ${a.prepare.runtimePromptRules.executionSummary.length} 条${R}`,details:[...S,...a.prepare.runtimePromptRules.executionSummary.map(a=>`runtimeRule|${a}`)]},{subtitle:a.prepare.projectRoleConfigName,roleName:a.prepare.projectRoleConfigName})),(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"runtime-prompt-rules",status:"success",message:`运行时提示词规则已抽取:${a.prepare.runtimePromptRules.executionSummary.length} 条,版本 ${a.prepare.runtimePromptRules.sourceHash}`,details:a.prepare.runtimePromptRules.executionSummary.length?[...a.prepare.runtimePromptRules.executionSummary,`必需表格:${a.prepare.runtimePromptRules.requiredTables.join("、")||"无"}`,`必含关键词:${a.prepare.runtimePromptRules.requiredKeywords?.join("、")||"无"}`,`禁含内容:${a.prepare.runtimePromptRules.forbiddenPatterns?.join("、")||"无"}`]:["未从提示词中识别到额外硬规则,使用系统默认质量规则"]},{subtitle:"提示词规则执行"})),(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"document-readiness",status:a.prepare.readiness.ready?"success":"failed",message:"生成准备度:绑定资料已就绪",details:a.prepare.readiness.diagnostics},{subtitle:"生成准备度检查"})),(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"diversity-governance",status:"success",message:`多文档反雷同:组织视角「${a.planning.diversityProfile.perspective}」\xd7命名风格「${a.planning.diversityProfile.style}」;历史指纹避让 ${u.length} 个标题${w>0?`,撞名局部改名 ${w} 章${x>0?`(局部改名后仍近似 ${x} 处,已接受)`:""}`:""}`,details:[`历史指纹池 ${a.planning.fingerprintPool.entries.length} 条(仅本机历史文档标题与结构,无正文)`,`多样性画像 ${a.planning.diversityProfile.id}`]},{subtitle:"多样性治理"})),(0,q.fx)(a.global.progressStages,a.planning.sectionPlanningStage),a.global.emitProgress()}var fq=c(14070),fr=c(70963);async function fs(a){if(a.understanding.evidenceScopePaths=new Set(a.prepare.materialFilePaths),a.understanding.fileRoleByPath=new Map([...a.prepare.kindByPath.entries()].map(([a,b])=>[a,(0,eR._W)(b)])),a.understanding.fileProcessingByPath=new Map([...a.prepare.processingByPath.entries()].map(([a,b])=>[a,b])),(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"knowledge_retrieval",roleId:"knowledge-index",status:"running",message:"正在读取项目资料包索引",details:["使用上传阶段已完成的解析、切片和索引结果","不在生成流程中重新解析或入库","准备按资料类型召回章节证据"],progress:{current:1,total:3,label:"读取索引"}},{subtitle:"知识库检索",order:a.global.progressStages.length})),a.global.emitProgress(),a.understanding.project=await a.global.withProgressHeartbeat(()=>a.understanding.manager.getProject(a.prepare.projectRoot)),a.understanding.indexHealth=(0,k.EK)(a.understanding.project,[...a.understanding.evidenceScopePaths]),a.understanding.indexHealth.blockingIssues.length>0)throw Error(`生成前知识索引不可用:${a.understanding.indexHealth.blockingIssues.join(";")}`);a.understanding.availableEvidenceScopePaths=new Set(a.understanding.indexHealth.usablePaths),a.understanding.requestedEvidencePerChapter=(0,k.G2)(a.understanding.project,[...a.understanding.availableEvidenceScopePaths],a.global.input.maxEvidencePerChapter);let b=a.understanding.indexHealth.pendingJobs>0||0===a.understanding.indexHealth.usableChunkCount;a.understanding.rolePoolRisk=ch({totalChunks:Math.min(a.understanding.indexHealth.usableChunkCount,20*a.prepare.materialFilePaths.length),loadedChunks:Math.min(a.understanding.indexHealth.usableChunkCount,20*a.prepare.materialFilePaths.length),vectorReady:a.understanding.indexHealth.vectorStatus?"ready"===a.understanding.indexHealth.vectorStatus.status:void 0}),(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"knowledge_retrieval",roleId:"knowledge-index",status:b?"failed":"success",message:`已读取知识索引:项目资料 ${a.understanding.indexHealth.scopedRecords.length} 份,可用切片 ${a.understanding.indexHealth.usableChunkCount} 条`,details:[`项目资料:${a.understanding.evidenceScopePaths.size} 份`,`可用证据文件:${a.understanding.availableEvidenceScopePaths.size} 份`,`向量状态:${(0,k.EG)(a.understanding.indexHealth.vectorStatus?.status)}`,...a.understanding.indexHealth.warnings,"后续将按招标正文/清单/图纸/补疑等资料类型召回"],progress:{current:3,total:3,label:"索引已就绪"}},{subtitle:"知识库检索",order:a.global.progressStages.length})),a.global.emitProgress(),(0,e.Te)(a.global.input.signal),a.understanding.allEvidence=[],a.understanding.retrievalCoverageReports=[],a.understanding.webResearchReport={enabled:a.prepare.webAccessConfig.enabled,queries:[],evidenceCount:0,filteredCount:0,chapters:[]},a.understanding.missingItems=[],a.understanding.failedChapterMessages=[],a.understanding.chapterGenerationStages=[],a.understanding.chapterDraftsByOrder=[],a.understanding.chapterGenerationStagesByOrder=[],a.understanding.knowledgeBaseStageIndex=-1;let c=new Map,d=[],f=new Map;a.understanding.getCachedFileDetail=b=>{let c=`${b}::full`;if(!f.has(c))try{f.set(c,a.understanding.project.getFileDetail?.(b))}catch{f.set(c,void 0)}return f.get(c)},a.understanding.searchWithCache=async(b,f,g,h,i)=>{let j=(0,k.Iu)(h),l=i??(0,ce.materialRootsOfFiles)(f),m=(0,e.c6)({query:b,scopedFilePaths:f,effectiveMaterialRoots:l,limit:g,weights:j,generationMode:!0,reranker:!0}),n=c.get(m);if(n)return n;let o=await a.understanding.manager.search(a.prepare.projectRoot,b,{scope:"project",filters:{filePaths:f,materialRoots:l},limit:g,weights:j,generationMode:!0,disableReranker:!1}).catch(a=>(d.push({query:b,message:a instanceof Error?a.message:String(a)}),null));if(null===o)return[];let p=o.results||[];return c.set(m,p),p};let h={stage:(0,q.X5)({type:"file_understanding",roleId:"project-understanding",status:"running",message:`正在理解项目资料:${a.prepare.projectMaterialProfile.files.length} 份资料,${Object.values(a.prepare.projectMaterialProfile.groups).filter(a=>a.length>0).length} 类资料类型`,progress:{current:1,total:3,label:"资料理解"}},{subtitle:"项目资料理解",order:a.global.progressStages.length})};(0,q.fx)(a.global.progressStages,h.stage),a.global.emitProgress();let i=await (0,k.jX)({manager:a.understanding.manager,project:a.understanding.project,projectRoot:a.prepare.projectRoot,scopedFilePaths:[...a.understanding.availableEvidenceScopePaths].filter(Boolean).sort(),scopedMaterialRoots:a.prepare.materialScope.selectedMaterialRoots,fileRoleByPath:a.understanding.fileRoleByPath,fileProcessingByPath:a.understanding.fileProcessingByPath,signal:a.global.input.signal});i.length>0&&(a.understanding.allEvidence.push(...i),(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"knowledge_retrieval",roleId:"project-basic-evidence",status:"success",message:`已锁定项目基础事实证据 ${i.length} 条`,details:i.slice(0,8).map(a=>`${ew.basename(a.filePath)}|${a.sectionTitle||"正文片段"}|score=${a.score.toFixed(2)}`)},{subtitle:"基础事实召回",order:a.global.progressStages.length})),a.global.emitProgress()),a.understanding.searchFailures=d,d.length>0&&((0,q.fx)(a.global.progressStages,(0,q.X5)({type:"knowledge_retrieval",roleId:"kb-search-failures",status:"failed",message:`知识库检索失败 ${d.length} 次(失败与「无命中」已分开计;失败结果不写缓存,同 query 后续会重试)`,details:d.slice(0,10).map(a=>`${a.query}:${a.message}`)},{subtitle:"基础事实召回",order:a.global.progressStages.length})),a.global.emitProgress());let{safe:j,excluded:l}=await (0,eH.a0)(a.understanding.allEvidence);a.understanding.writerEvidence=j,a.understanding.bidProcedureJudge=await (0,eH.M8)(),l.length>0&&((0,q.fx)(a.global.progressStages,(0,q.X5)({type:"knowledge_retrieval",roleId:"evidence-content-safety",status:"success",message:`证据内容安全过滤:${l.length} 条投标程序/评标纪律类证据已从写作链断开(系统侧提取通道不受影响)`,details:l.slice(0,6).map(a=>`${ew.basename(a.filePath)}|${a.sectionTitle||"正文片段"}`)},{subtitle:"证据内容安全",order:a.global.progressStages.length})),a.global.emitProgress()),a.understanding.safeProjectBasicEvidence=i.filter(a=>!l.includes(a)),a.understanding.excludedEvidenceKeys=new Set(l.map(eH.hM)),a.understanding.earlyFactPool=(0,m.d6)({evidence:a.understanding.writerEvidence,template:a.prepare.template,spec:a.prepare.documentSpec,profile:a.prepare.domainProfile});let o=a.understanding.earlyFactPool.localFacts,p=[...o,...a.understanding.earlyFactPool.projectBasicFacts,...a.understanding.earlyFactPool.preciseFacts];a.understanding.scopedIntelligence=(0,fo.hp)({projectRoot:a.prepare.projectRoot,template:a.prepare.template,requirement:a.global.input.requirement,materialScope:a.prepare.materialScope});let r=[...(0,e.lX)(a.understanding.scopedIntelligence?.facts||[]),...p,...(0,n.UT)(a.understanding.writerEvidence)],s=(0,n.GZ)(r,a.prepare.projectRoot);for(let b of(a.understanding.preliminaryFactsModel=await (0,m.d7)(s,a.understanding.earlyFactPool.structuredTables,a.understanding.missingItems,a.prepare.documentSpec,a.prepare.domainProfile),a.understanding.agentWorkflow=(0,cj.Qu)({template:a.prepare.template,requirement:a.global.input.requirement,projectRoot:a.prepare.projectRoot,facts:s,projectGraph:a.understanding.scopedIntelligence?.projectGraph,projectGraphSource:a.understanding.scopedIntelligence?"project-intelligence":void 0,materialScope:a.prepare.materialScope}),(0,cj.SU)(a.understanding.agentWorkflow)))(0,q.fx)(a.global.progressStages,b);if(a.understanding.scopedIntelligence&&(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"file_understanding",roleId:"project-intelligence-cache",status:"success",message:`已复用入库后资料包理解资产:${a.understanding.scopedIntelligence.files.length} 份资料`,details:[`项目级缓存时间:${new Date(a.understanding.scopedIntelligence.cache.createdAt).toLocaleString()}`,`资料包范围指纹:${a.understanding.scopedIntelligence.scope.scopeHash.slice(0,12)}`,`复用预计算事实:${a.understanding.scopedIntelligence.facts.length} 条`,`复用预计算项目图谱:${a.understanding.scopedIntelligence.projectGraph.works.length}工程/${a.understanding.scopedIntelligence.projectGraph.methods.length}工法/${a.understanding.scopedIntelligence.projectGraph.resources.length}资源`,`复用施工组织设计专项图谱:${a.understanding.scopedIntelligence.constructionOrganizationGraph.workPackages.length} 个工作包/${a.understanding.scopedIntelligence.constructionOrganizationGraph.controlMatrix.length} 条控制矩阵`,`图谱来源:${a.understanding.scopedIntelligence.cache.projectGraphMessage}`,`章节意图证据覆盖:${Object.keys(a.understanding.scopedIntelligence.evidenceByChapterId||{}).length}/${a.prepare.template.chapters.length} 章`,`排除正文不适用资料:${a.understanding.scopedIntelligence.files.filter(a=>!a.usableForBody).length} 份`]},{subtitle:"项目理解缓存 / 资料包"})),a.global.emitProgress(),a.understanding.projectGraph=a.understanding.agentWorkflow.baseProjectGraph,!a.understanding.scopedIntelligence){(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"file_understanding",roleId:"project-graph",status:"running",message:`正在临时构建完整项目图谱:${a.understanding.allEvidence.length} 条证据 → LLM 结构化提取`,details:["缓存缺失或版本过期,建议重新构建项目理解缓存;本次生成将临时构建完整项目图谱。","提取:工程内容、施工方法、材料设备、技术标准、重点难点"],progress:{current:2,total:3,label:"项目图谱"}},{subtitle:"项目资料图谱分析",order:a.global.progressStages.length})),a.global.emitProgress();let b=await a.global.withProgressHeartbeat(()=>(0,fr.i)({evidence:a.understanding.writerEvidence,signal:a.global.input.signal,projectRoot:a.prepare.projectRoot,requirement:a.global.input.requirement,templateId:a.prepare.template.id}),a.global.progressStages);if(!b.graph)throw Error(`完整项目图谱构建失败:${b.stage.message||b.stage.status}`);a.understanding.projectGraph=b.graph,(0,q.fx)(a.global.progressStages,b.stage),a.global.emitProgress()}a.understanding.projectGraph&&(a.prepare.projectUnderstanding=(0,eR._n)(a.prepare.template,a.prepare.projectMaterialProfile,a.understanding.projectGraph)),(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"file_understanding",roleId:"project-understanding",status:"success",message:`已完成项目资料理解:${a.prepare.projectMaterialProfile.files.length} 份资料、${Object.values(a.prepare.projectMaterialProfile.groups).filter(a=>a.length>0).length} 类资料类型${a.understanding.projectGraph?`、图谱增强 ${a.understanding.projectGraph.works.length} 项工程内容`:""}`,details:[...a.prepare.projectUnderstanding.chapterPlans.slice(0,10).map(a=>`${a.chapterTitle}:必用 ${a.mustUseMaterialKinds.length} 类资料、必覆盖 ${a.mustCover.length} 项`),...a.prepare.projectUnderstanding.profile.warnings.length?[`资料风险:${a.prepare.projectUnderstanding.profile.warnings.slice(0,3).join(";")}`]:[]]},{subtitle:"项目资料理解",order:a.global.progressStages.length})),a.global.emitProgress(),a.understanding.canonicalFacts=(0,n.qD)({facts:r,projectGraph:a.understanding.projectGraph,requiredKeys:n.nC.map(a=>a.key),projectRoot:a.prepare.projectRoot,requirement:a.global.input.requirement,templateId:a.prepare.template.id}),a.understanding.preliminaryFactsModel.canonical=a.understanding.canonicalFacts;let t=(0,bg.effectiveTemplateChapters)(a.prepare.template,a.prepare.documentSpec,{preserveExplicitOutline:a.prepare.hasExplicitOutline}),u=a.understanding.allEvidence.filter(a=>/评审|评分标准|评分办法|详细评审/u.test(`${a.sectionTitle||""}${a.content}`)).map(a=>a.content);a.understanding.evaluationItems=function(a){let b=a.join("\n"),c=new Map;for(let a of b.matchAll(/(\d{1,2})\s*[.、.]\s*([^;。\n]{4,60})/gu)){let b=a[2].trim().replace(/[“”"'"]/gu,"");if(!/[\u4e00-\u9fa5]{3}/u.test(b)&&!/[杯奖]/u.test(b)||/AI|大模型|评审|评分|分值|分项|子项|满分|得分|投标人须|详见|招标文件/u.test(b)||/公共资源|电子交易|加密|投标|开标|评标委员会|评标价|中标候选|中标人|评标程序|评标流程|异常低价|保函|保证金|资格审查|资格后审/u.test(b))continue;let d=Number(a[1]);if(!c.has(d)){let a=function(a){let b=a.replace(/^针对/u,"").replace(/^确保/u,"").replace(/的保障体系与措施$/u,"").replace(/的管理体系与措施$/u,"").replace(/保障体系与措施$/u,"").replace(/管理体系与措施$/u,"").replace(/[,、;,;]+$/u,"").trim();return!/[\u4e00-\u9fa5]{3}/u.test(b)&&!/[杯奖]/u.test(b)||/工期与质量/u.test(b)?"":b.length>24?b.slice(0,24):b}(b);if(a&&(0,bg.ob)(a)||(0,bg.ob)(b))continue;c.set(d,{index:d,text:b,title:a})}}return[...c.values()]}(u),u.length>0&&0===a.understanding.evaluationItems.length&&(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"bid-structure-audit",status:"skipped",message:"评审章节证据存在但未提取到评分条目标题:评分标准编号条目提取为空,承接审计将静默通过",details:["请检查招标文件评标办法章节编号格式;评分项要求(创优目标/绿色等级/禁编日期)由评分项要求提取通道覆盖"]},{subtitle:"评标结构校验",order:a.global.progressStages.length}));let v=await (0,aB.Mv)(a.understanding.evaluationItems.map(a=>a.title),t.map(eM));a.understanding.bidStructureAudit=eN({template:a.prepare.template,chapters:t,requirement:a.global.input.requirement,evaluationItems:a.understanding.evaluationItems,semanticSimilarity:v});let w=[];for(let b of[...a.understanding.evidenceScopePaths].sort()){if(!/招标|补疑|答疑|评标/u.test(b))continue;let c=a.understanding.getCachedFileDetail(b);if(c?.chunks?.length)for(let a of c.chunks)w.push(a.content||"")}a.understanding.bidComposition=(0,P.SD)({tenderTexts:w,requirement:a.global.input.requirement,requiredTables:a.prepare.runtimePromptRules.requiredTables});let x=(0,P.iJ)(a.understanding.bidComposition);if((0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"bid-composition",status:x.status,message:x.message,details:x.details},{subtitle:"标书编制规格",order:a.global.progressStages.length})),a.global.emitProgress(),"unknown"===a.understanding.bidComposition.bidType&&((0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"bid-composition-warning",status:"skipped",message:"标书类型判定告警:未识别暗标/明标标记——本次按常规口径生成(正文表格策略按招标证据判定、正文图片允许);若本项目实为暗标,正文图片与投标人标记可能未被禁止(暗标通常不得出现),请核对招标文件后重跑",details:["核查点:招标文件「施工组织设计采用」勾选项(标记字符变体与「按暗标/采用暗标评审」语义条款均已覆盖)或「暗标编制要求」条款","判定证据链见「标书编制规格」节点"]},{subtitle:"标书编制规格\xb7判定告警",order:a.global.progressStages.length})),a.global.emitProgress()),a.understanding.tenderRequirementsTask=(async()=>{try{let b,c=[];for(let b of[...a.understanding.evidenceScopePaths].sort()){if(!/招标|补疑|答疑|评标/u.test(b))continue;let d=a.understanding.getCachedFileDetail(b);if(d?.chunks?.length)for(let e of d.chunks)c.push({chapterId:"tender-requirements",filePath:d.file?.relativePath||b,score:1,content:e.content||"",roleId:a.understanding.fileRoleByPath.get(b),processingType:a.understanding.fileProcessingByPath.get(b),sectionTitle:e.sectionTitle,source:"pinned-evidence"})}let d=c.length>0?c:(0,g.QR)([...a.understanding.allEvidence.filter(a=>/招标|评标|投标须知|专用合同|合同条款|技术标准|技术要求/u.test(`${a.filePath||""}${a.sectionTitle||""}`)),...a.understanding.allEvidence.filter(a=>!/招标|评标|投标须知|专用合同|合同条款|技术标准|技术要求/u.test(`${a.filePath||""}${a.sectionTitle||""}`))],{preservePinned:!0}),e="0"!==process.env.DOCUMENT_EXTRACTION_CACHE?(0,aC.Sf)({collectionEvidence:d}):void 0,f=e?(0,aC.jl)(a.prepare.projectRoot,e):void 0;return f?(b=f,(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"tender-requirements-cache",status:"success",message:"复用上次提取结果(招标资料哈希命中,跳过判定 LLM)",details:(0,aC.zD)(b)},{subtitle:"招标要求提取\xb7缓存复用",order:a.global.progressStages.length})),a.global.emitProgress()):(b=await a.global.withProgressHeartbeat(()=>(0,aC.mg)(d,{signal:a.global.input.signal,diagnostics:a.planning.generationDiagnostics,onPhase:(b,c)=>{(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"tender-requirements-extraction",status:"running",message:b,details:c},{subtitle:"招标要求提取",order:a.global.progressStages.length})),a.global.emitProgress()}})),e&&(0,aC.e_)(a.prepare.projectRoot,e,b)),(0,aC.l)(b)?((0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"tender-requirements-extraction",status:"success",message:`招标要求结构化提取完成:要求 ${b.reconciliation.entryCount} 条、排除 ${b.reconciliation.excludedCount} 条(${b.reconciliation.batchCount} 批判定)`,details:(0,aC.zD)(b)},{subtitle:"招标要求提取",order:a.global.progressStages.length})),a.global.emitProgress()):d.length>0&&((0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"tender-requirements-extraction",status:"skipped",message:"招标要求提取未获得有效结果(模型不可用或资料中无要求条款),章级验收自动跳过",details:[]},{subtitle:"招标要求提取",order:a.global.progressStages.length})),a.global.emitProgress()),b.extracted&&b.reconciliation.undecidedCount>0&&((0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"tender-requirements-undecided",status:"skipped",message:`对账未闭合:${b.reconciliation.undecidedCount} 条条款未判定(LLM 输出缺号且重试后仍缺)`,details:["未判定条款不进入分配与验收;请检查 LLM 可用性"]},{subtitle:"招标要求提取\xb7对账",order:a.global.progressStages.length})),a.global.emitProgress()),b}catch(b){return(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"tender-requirements-extraction",status:"skipped",message:"招标要求提取链异常,已降级为空模型(章级验收自动跳过)",details:[`异常信息:${b instanceof Error?b.message:String(b)}`,"请检查 LLM 可用性"]},{subtitle:"招标要求提取",order:a.global.progressStages.length})),a.global.emitProgress(),(0,aC.Mx)(!1)}})(),a.planning.baseEffectiveChapters=(0,e.H1)(a.understanding.bidStructureAudit.enrichedChapters),a.prepare.template={...a.prepare.template,chapters:a.planning.baseEffectiveChapters},a.planning.plannedDocumentTask=(0,eQ.NP)({template:a.prepare.template,context:a.understanding.agentWorkflow,title:a.prepare.template.name}),a.planning.plannedDocumentTask.catch(()=>void 0),a.understanding.chapterGraphMap=new Map,a.understanding.projectGraph){let b=new Set;for(let c of[...a.understanding.projectGraph.works,...a.understanding.projectGraph.methods,...a.understanding.projectGraph.resources,...a.understanding.projectGraph.schedule,...a.understanding.projectGraph.standards,...a.understanding.projectGraph.risks,...a.understanding.projectGraph.requirements,...a.understanding.projectGraph.siteConditions])(c.sourceFiles||[]).forEach(a=>b.add(a));for(let c of a.planning.baseEffectiveChapters){let d=[c.title,c.purpose,...c.sections||[],...c.requiredFacts||[],...c.queries||[]].join(" "),e=a=>a&&((0,fq.C1)(a,d,.18)||(0,fq.C1)(a,c.title,.12)),f=/概况|总体|部署|施工|进度|工期|质量|安全|资源|人材机|材料|机械|劳动力|风险|危大|绿色|环保/u.test(d),g=a.understanding.projectGraph.works.filter(a=>a.name&&(e(a.name)||f)),h=a.understanding.projectGraph.methods.filter(a=>a.name&&(e(a.name)||(a.applicableWorks||[]).some(e)||f)),i=a.understanding.projectGraph.resources.filter(a=>a.name&&(e(a.name)||/资源|人材机|材料|机械|劳动力/u.test(d)&&/material|equipment|labor/u.test(a.type))),j=a.understanding.projectGraph.gaps.filter(a=>!(0,fo.Ut)(a)&&(e(a)||f)),k=new Set;for(let a of g)(a.sourceFiles||[]).forEach(a=>k.add(a));for(let a of h)(a.sourceFiles||[]).forEach(a=>k.add(a));for(let a of i)(a.sourceFiles||[]).forEach(a=>k.add(a));0===k.size&&f&&[...b].forEach(a=>k.add(a)),a.understanding.chapterGraphMap.set(c.id,{graphFiles:k,graphBoqItems:i.map(a=>({name:a.name,quantity:a.quantity,unit:a.unit,sourceFiles:a.sourceFiles||[]})),graphWorks:g.map(a=>a.name),graphMethods:h.map(a=>a.name),gaps:j})}a.understanding.scopedIntelligence||((0,q.fx)(a.global.progressStages,(0,q.X5)({type:"file_understanding",roleId:"project-graph-match",status:"success",message:`图谱→章节映射完成:${a.understanding.projectGraph.works.length}工程 ${a.understanding.projectGraph.methods.length}工法 ${a.understanding.projectGraph.resources.length}资源 → ${a.planning.baseEffectiveChapters.length}章`,details:a.planning.baseEffectiveChapters.map(b=>{let c=a.understanding.chapterGraphMap.get(b.id);return`${(0,bg.GQ)(b.title)}:匹配文件${c?.graphFiles.size||0}个,BOQ项${c?.graphBoqItems.length||0}个`})},{subtitle:"图谱章节映射"})),a.global.emitProgress())}}var ft=c(44533),fu=c(29281),fv=c(25840),fw=c(6444),fx=c(85441),fy=c(56942);function fz(){return{parsed:!1,globalRequirements:[],chapterRequirements:[],factClues:[],styleRequirements:[],mandatoryBlockText:"",summary:""}}let fA=[(0,O.y4)("你是用户生成要求的语义解析专家。"),'把用户的生成提示词完整解析为可逐条核验的结构化要求清单,不得遗漏用户的任何实质要求;不得把通用客套话(如"请帮我生成""谢谢")当作要求。\n要求必须逐条短句(每条 ≤60 字)、可核验(生成后能判断是否满足);一条要求只写一件事,复合要求必须拆分。\nglobalRequirements:全文级强制要求——写作内容、深度、覆盖面、表格、量化要求等不限定具体章节的要求;若要求明确指向某个章节,必须放入 chapterRequirements 而不是 globalRequirements。\nchapterRequirements:章节级要求——chapterTitle 必须原样取自给定的章节列表,不得编造不存在的章节名;同一章节的多条要求合并为一条记录。\nfactClues:用户提示词中显式给出的项目专属事实线索——含数值、单位、规格、型号、标准编号、日期、地点、规模、金额、目标的短句(如"一般路灯 100W 109套、120W 9套""计划工期 365 日历天""开挖深度 5.2m");要求类语句("必须写X")不算事实线索;线索必须原样保留数值与表述,不得改写或换算。\nstyleRequirements:写作风格与格式要求(语气、详略、表格偏好、禁止风格等),最多 8 条。\n只返回 JSON。'].join("\n");function fB(a,b){let c=String(a||"").trim().replace(/^\d+[.、))]\s*/u,"");return!c||c.length>b?"":c}async function fC(a){let b=(a.requirement||"").trim(),c=(a.chapterTitles||[]).filter(Boolean),d=fz();if(!b||b.length<4||b.length<=40&&!/[::]|\n/u.test(b))return d;try{let e=await (0,cl.bb)(fA,`章节列表(chapterRequirements 的 chapterTitle 必须原样取自以下列表):${c.join("、")||"(无)"}
77
77
 
78
78
  用户要求全文:
79
79
  ${b}
@@ -238,7 +238,7 @@ ${a.content}`)>0).map(b=>({chapterId:"project-basic",filePath:b.filePath,score:M
238
238
  ${b.content}`),content:b.content,roleId:a.fileRoleByPath.get(b.filePath),processingType:a.fileProcessingByPath.get(b.filePath),sectionTitle:b.sectionTitle,source:"pinned-evidence"})))));for(let c of(b.push(...e.flat()),a.scopedFilePaths)){(0,g.Te)(a.signal);let d=a.project.getFileDetail?.(c);if(d?.chunks?.length)for(let e of d.chunks){let f=`${e.sectionTitle||""}
239
239
  ${e.content||""}`,g=(0,h.qq)(f);if(g<=0)continue;let i=d.file?.relativePath||c;b.push({chapterId:"project-basic",filePath:i,score:1+g,content:e.content,roleId:a.fileRoleByPath.get(i),processingType:a.fileProcessingByPath.get(i),sectionTitle:e.sectionTitle,source:"pinned-evidence"})}}let i=new Set;return b.sort((a,b)=>b.score-a.score).filter(a=>{let b=`${a.filePath}|${a.sectionTitle||""}|${(0,f.de)(a.content).slice(0,180)}`;return!i.has(b)&&(i.add(b),!0)})}function j(a){return/概况|项目|工程|地点|规模|工期|质量|估算/u.test(a)?{keyword:.65,vector:.25,rewrite:.8,hybridBonus:.2}:/人|材|机|资源|材料|设备|机械|劳动力/u.test(a)?{keyword:.55,vector:.35,rewrite:.75,hybridBonus:.18}:/危大|安全|文明|风险/u.test(a)?{keyword:.5,vector:.4,rewrite:.8,hybridBonus:.2}:{keyword:.4,vector:.45,rewrite:.75,hybridBonus:.15}}function k(a,b){let c=`${a.title} ${(a.sections||[]).join(" ")} ${a.requiredFacts.join(" ")}`;return"reference"===b?.55:"table"===b?/清单|工程量|数量|材料|设备|资源|费用|造价|范围|统计|表/u.test(c)?1.45:.95:"rule"===b?/要求|规则|招标|评审|响应|质量|安全|验收|标准|工期|进度|风险|约束/u.test(c)?1.35:.95:"drawing"===b?/图纸|设计|布置|位置|平面|剖面|立面|空间|施工方法|做法/u.test(c)?1.35:.85:"specification"===b&&/技术|规范|标准|参数|做法|质量|验收|施工方法/u.test(c)?1.3:1}function l(a,b){let c=`${b.sectionTitle||""}
240
240
  ${b.filePath}
241
- ${b.content}`;return Math.min(1.8,.16*[...new Set([a.title,...a.sections||[],...a.requiredFacts].flatMap(a=>a.split(/[\s、,,。;;::()()《》【】-]+/u)).map(a=>a.trim()).filter(a=>a.length>=2).slice(0,36))].filter(a=>c.includes(a)).length)}function m(a){return`${a.sectionTitle||""}${a.content}`.slice(0,600)}function n(a,b,c,d){let f=b.map(b=>{let d=(0,e.A1)(b,a.requiredFacts)*k(a,b.processingType)+l(a,b),f=c.semantic?c.semantic.similarity(c.semantic.queryText,m(b)):0;return{...b,score:.5*d+10*f}});return(0,e.QR)(f,c,d)}function o(a,b,c){if(c<=0||b.length<=c)return b;let d=b.map(b=>({item:b,lexical:(0,e.A1)(b,a.requiredFacts)*k(a,b.processingType)+l(a,b)}));return d.sort((a,b)=>b.lexical-a.lexical),d.slice(0,c).map(a=>a.item)}function p(a,b,c){let d=(a.sections||[]).slice(0,10).join(" "),e=a.requiredFacts.slice(0,10).join(" "),f=a.title.split(/[、,,与和及]+/u).map(a=>a.trim()).filter(a=>a.length>=4);return[...new Set([...f.length>=2?[`${a.title} ${d} ${e}`.trim(),...f.map(b=>`${b} ${(a.sections||[]).slice(0,6).join(" ")}`.trim()),`${f.slice(0,3).join(" ")} ${e}`.trim()]:[`${a.title} ${d} ${e}`.trim()],...b,...c].filter(Boolean))]}async function q(a){if((0,g.Te)(a.signal),0===a.scopedFilePaths.length)return[];let b=`${a.chapter.title} ${a.sectionTitle}`.trim(),c=await a.manager.search(a.projectRoot,b,{scope:"project",filters:{filePaths:a.scopedFilePaths,materialRoots:a.scopedMaterialRoots??(0,d.materialRootsOfFiles)(a.scopedFilePaths)},limit:20,weights:j(b),generationMode:!0});return(0,e.QR)(c.results.map(b=>({chapterId:a.chapter.id,filePath:b.filePath,score:b.score+1.2,content:b.content,roleId:a.fileRoleByPath.get(b.filePath),processingType:a.fileProcessingByPath.get(b.filePath),sectionTitle:b.sectionTitle,source:"section-evidence"})),{preservePinned:!0})}},65667:(a,b,c)=>{c.d(b,{AK:()=>s,Rh:()=>u,Ti:()=>y,_H:()=>x,j4:()=>r,re:()=>w,tx:()=>t});let d=/^(?:为|达|共|约|计|配置|共计|总计|合计)$/u,e=/作业人员|施工人员|人员配置|班组|施工组|每村|分组|编组|编入|队伍/u,f=/^(?:为|达|共|约|计|配置|共计|总计|合计|投入|配备|启用)$/u,g=/^[))、::,,\s]{0,2}(?:混凝土|砼)?\s*(\d+(?:\.\d+)?)\s*(m3|m³|立方米|方|m2|m²|㎡|平方米|延长米|米|m|kg|千克|公斤|t|吨|套|个|块|根|只|组|件|片|樘|扇|盏|座|台|处|项|条|副|对|株)(?![A-Za-z0-9²³])/u,h=/^([^0-9]{0,2}?)(\d+(?:\.\d+)?)\s*人/u,i=/^([^0-9]{0,2}?)(\d+(?:\.\d+)?)\s*台/u,j=/阶段[^。;\n]{0,30}?(\d+(?:\.\d+)?)\s*人/u,k="机|吊|泵|车|夯",l=/[为配置备启投拟需计划增租赁购采设进出按据由从向对把被使等该此其每各和与及或在是将宜并可未非不另又还有部现中套余的用入要场阶段]/u,m=/^(?:[台辆部具个组米吨座])/u,n=/^(?:主力|主要|常用|配套|相关|专用|通用|各类|多种|其余|剩余|上述|前者|后者)/u,o=/(?:备用|租赁|租用)/u,p=/不使用|不采用|不配置|无需|未采用|不得使用|禁止使用/u,q=RegExp(`([\\p{Script=Han}A-Za-z0-9]{2,8}(?:${k}))$`,"u");function r(a){let b=a.replace(/\s+/gu,""),c=b;for(let a=b.length-1;a>=0;a-=1)if(l.test(b[a])){if(o.test(b.slice(0,a+1)))return;c=b.slice(a+1);break}if(!(c.length<2||m.test(c))&&!n.test(c))return c}function s(a){let b=[],c=RegExp(`([\\p{Script=Han}A-Za-z0-9]{2,8}(?:${k}))[^\\d。;;\\n|、,]{0,12}(\\d+)\\s*(?:台|套|辆)`,"gu");for(let d of a.matchAll(c)){let c=d.index??0,e=Math.max(a.lastIndexOf(",",c),a.lastIndexOf("。",c),a.lastIndexOf(";",c),a.lastIndexOf(";",c),a.lastIndexOf("\n",c),a.lastIndexOf("、",c));if(p.test(a.slice(e+1,c+d[1].length)))continue;let f=r(d[1]);if(!f)continue;let g=Number(d[2]);Number.isFinite(g)&&!(g<=0)&&b.push({name:f,raw:d[1],count:g,start:c,text:d[0]})}return b}function t(a){let b=new Set,c=RegExp(`([\\p{Script=Han}A-Za-z0-9]{2,8}(?:${k}))`,"gu");for(let d of a.matchAll(c)){let a=r(d[1]);a&&b.add(a)}return[...b]}function u(a){let b=q.exec(a);if(b)return r(b[1])}function v(a){let b=(a||"").replace(/\s+/gu,"");return b?/m[3³]|立方米|方/u.test(b)?"volume":/m[2²]|㎡|平方米/u.test(b)?"area":/m|米/u.test(b)?"length":/吨|千克|公斤|kg|^t$/u.test(b)?"mass":/套|个|块|根|只|组|件|片|樘|扇|盏|座|台|处|项|条|副|对|株/u.test(b)?"count":null:null}function w(a){if(!a)return;let b=(a.resources?.labor?.composition??[]).filter(a=>a.trade&&Number.isFinite(a.count)&&a.count>0).map(a=>({trade:a.trade,count:a.count})),c=new Map;for(let b of a.resources?.equipment??[]){if(!b.name)continue;let a=c.get(b.name);a?a.push(b):c.set(b.name,[b])}let d=[];for(let[a,b]of c)for(let c of b){let e=c.quantity&&c.quantity>0?c.quantity:Math.round(((c.min??1)+(c.max??c.min??1))/2);Number.isFinite(e)&&!(e<=0)&&d.push({name:a,spec:c.spec||"",count:e,variantCount:b.length})}let e=new Map;for(let b of a.materialsPlan??[]){if(!b.name)continue;let a=e.get(b.name);a?a.push(b):e.set(b.name,[b])}let f=[];for(let[a,b]of e)if(!(b.length<2))for(let c of b){if(!c.spec||!Number.isFinite(c.quantity)||(c.quantity??0)<=0)continue;let d=v(c.unit||"");d&&f.push({name:a,spec:c.spec,quantity:c.quantity,unit:c.unit||"",family:d,variantCount:b.length})}return{composition:b,equipment:d,materials:f}}function x(a,b){let c=[],k=new Set(b.composition.map(a=>a.trade)),l=(a,b)=>{let c=[];if(!b)return c;let d=0;for(;d<a.length;){let e=a.indexOf(b,d);if(-1===e)break;c.push(e),d=e+b.length}return c},m=(a,b)=>{let c=[];if(!b)return c;let d=0;for(;d<a.length;){let e=a.indexOf(b,d);if(-1===e)break;let f=a[e-1]||"",g=`${f}${b}`;if(/[\u4e00-\u9fa5]/u.test(f)&&[...k].some(a=>a.length>b.length&&a.includes(g))){d=e+b.length;continue}c.push(e),d=e+b.length}return c},n=function(a){let b=[],c=0;for(;c<=a.length;){let d=a.indexOf("\n",c),e=-1===d?a.length:d;if(b.push({start:c,end:e}),-1===d)break;c=d+1}let d=/^\s*(?:#|\||>)/u,e=[],f=0;for(;f<b.length;){let c=b[f],g=a.slice(c.start,c.end);if(""===g.trim()||d.test(g)){f+=1;continue}let h=f;for(;h+1<b.length;){let c=b[h+1],e=a.slice(c.start,c.end);if(""===e.trim()||d.test(e))break;h+=1}e.push({start:c.start,end:b[h].end}),f=h+1}return e}(a),o=[];for(let b of n){let c=a.slice(b.start,b.end);if(!c.includes("阶段"))continue;let e=[];for(let a of c.matchAll(RegExp(j.source,"gu")))e.push({start:b.start+(a.index??0),total:Number(a[1])});if(0!==e.length)for(let[c,f]of e.entries()){let g=f.start,i=e[c+1]?.start??b.end,j=a.slice(g,i),l=0;for(let a of k)for(let b of m(j,a)){let c=j.slice(b+a.length,b+a.length+12),e=h.exec(c);e&&(!e[1]||d.test(e[1]))&&(l+=Number(e[2]))}l>0&&l===f.total&&o.push({start:g,end:i})}}let p=a=>o.some(b=>a>=b.start&&a<b.end);for(let f of b.composition)for(let b of m(a,f.trade)){if(p(b))continue;let g=a.slice(0,b),i=Math.max(g.lastIndexOf("。"),g.lastIndexOf(";"),g.lastIndexOf(";"),g.lastIndexOf("\n"));if(e.test(g.slice(i+1)))continue;let j=a.slice(b+f.trade.length,b+f.trade.length+12),k=h.exec(j);if(!k||k[1]&&!d.test(k[1]))continue;let l=Number(k[2]);if(l===f.count)continue;let m=b+f.trade.length+k[1].length;c.push({kind:"trade",label:`工种构成 ${f.trade}`,start:m,end:m+k[2].length,actual:l,expected:f.count,message:`工种构成人数与蓝图权威不一致:${f.trade} 正文 ${l} 人,蓝图权威 ${f.count} 人`,suggestion:"工种构成表必须与蓝图工种构成唯一口径一致,各工种人数不得自行改写。"})}for(let d of b.equipment)if(1===d.variantCount)for(let b of l(a,d.name)){let e=a.slice(b+d.name.length,b+d.name.length+12),g=i.exec(e);if(!g||g[1]&&!f.test(g[1]))continue;let h=Number(g[2]);if(h===d.count)continue;let j=b+d.name.length+g[1].length;c.push({kind:"equipment",label:`机械台数 ${d.name}`,start:j,end:j+g[2].length,actual:h,expected:d.count,message:`机械台数与蓝图权威不一致:${d.name} 正文 ${h} 台,蓝图权威 ${d.count} 台`,suggestion:"机械投入计划必须与蓝图机械清单一致,台数不得自行改写。"})}else if(d.spec)for(let b of l(a,d.spec)){let e=a.lastIndexOf("\n",b)+1,f=a.indexOf("\n",b);-1===f&&(f=a.length);let g=a.slice(e,f),h=b-e,i=e+Math.max(g.lastIndexOf(",",h)+1,g.lastIndexOf("。",h)+1,g.lastIndexOf(";",h)+1);if(!a.slice(i,f).includes(d.name))continue;let j=b+d.spec.length,k=a.slice(j,j+12),l=/(\d+(?:\.\d+)?)\s*台/u.exec(k);if(!l)continue;let m=Number(l[1]);if(m===d.count)continue;let n=j+(l.index??0);c.push({kind:"equipment",label:`机械台数 ${d.name}(${d.spec})`,start:n,end:n+l[1].length,actual:m,expected:d.count,message:`机械台数与蓝图权威不一致:${d.name}(${d.spec}) 正文 ${m} 台,蓝图权威 ${d.count} 台`,suggestion:"机械投入计划必须与蓝图机械清单一致,台数不得自行改写。"})}for(let d of b.materials)for(let b of l(a,d.spec)){let e=a.lastIndexOf("\n",b)+1,f=a.indexOf("\n",b);-1===f&&(f=a.length);let h=a.slice(e,f);if(/^\s*\|?\s*(?:合计|小计|总计|累计)/u.test(h))continue;let i=b-e,j=e+Math.max(h.lastIndexOf(";",i),h.lastIndexOf(";",i),h.lastIndexOf("。",i))+1,k=h.indexOf(";",i),l=h.indexOf(";",i),m=h.indexOf("。",i),n=Math.min(-1===k?h.length:k,-1===l?h.length:l,-1===m?h.length:m);if(!a.slice(j,e+n).includes(d.name))continue;let o=b+d.spec.length,p=a.slice(o,o+16),q=g.exec(p);if(!q||v(q[2])!==d.family)continue;let r=Number(q[1]);if(r===d.quantity)continue;let s=o+q[0].indexOf(q[1]);c.push({kind:"material",label:`材料拆分 ${d.name}(${d.spec})`,start:s,end:s+q[1].length,actual:r,expected:d.quantity,message:`材料规格拆分数量与蓝图权威不一致:${d.name}(${d.spec})正文 ${r}${d.unit},蓝图权威 ${d.quantity}${d.unit}`,suggestion:"同名多规格材料的拆分数量必须与清单逐项一致,不得自行分配。"})}return c}function y(a,b){if(!b)return{markdown:a,fixedCount:0,details:[],residualCount:0};let c=x(a,b);if(0===c.length)return{markdown:a,fixedCount:0,details:[],residualCount:0};let d=[...c].sort((a,b)=>b.start-a.start),e=a,f=[],g=1/0;for(let a of d)a.end>g||(e=`${e.slice(0,a.start)}${a.expected}${e.slice(a.end)}`,f.push(a),g=a.start);let h=x(e,b);return h.length>0?{markdown:a,fixedCount:0,details:[],residualCount:h.length}:{markdown:e,fixedCount:f.length,details:f.map(a=>`${a.label} ${a.actual}→${a.expected}`),residualCount:0}}},71678:(a,b,c)=>{c.d(b,{Hf:()=>s,M8:()=>m,Xp:()=>q,a0:()=>l,dn:()=>r,hM:()=>k,mI:()=>u,xb:()=>p});var d=c(37047),e=c(41991),f=c(70208);let g=["对与评标活动有关的工作人员的纪律要求","评标委员会成员与投标人接触的限制","评标纪律与廉洁从业承诺要求","评审争议处理与投标澄清配合程序","评审结果确认与中标公示流程","评标办法与分值构成说明","异常低价评审与计算方式说明","清单计量与报价口径约定","投标文件实质性响应要求","投标保证金缴纳与退还程序","开标程序与投标文件递交截止时间","评标期间行为管控与资料闭环","预付款与进度款支付比例约定","履约担保与保证金缴纳退还约定","价格波动与合同价款调整约定","暂列金额与暂估价使用约定","税费计取与发票结算约定","违约责任与罚款赔偿条款"],h=["劳动力配置计划与高峰期人数安排","施工质量保证措施与验收标准","安全生产管理与教育培训要求","施工进度计划与关键线路安排","材料设备采购进场计划与检验要求","施工现场文明施工与环境保护管理","劳动纪律与班组作业管理制度","施工机械设备配置与维护保养计划","农民工工资支付保障与劳务实名制管理","材料采购质量证明与进场验收管理","工期承诺与进度考核奖惩管理"],i=/评标|投标|行贿|打招呼|递条子|廉洁|串标|围标|弄虚作假|干扰评标|纪律|澄清|中标|报价|清单计量|评审|保证金|开标|递交|争议|异常低价|评标基准价|预付款|进度款|担保|价格波动|材料调差|暂列金额|暂估价|计税|税金|发票|违约/u;function j(a){let b=a.sectionTitle?.trim()||"",c=(a.content||"").replace(/\s+/gu," ").slice(0,400);return b?`${b}。${c}`:c}function k(a){let b=a.sectionTitle?.trim()||a.content.replace(/\s+/gu,"").slice(0,60);return`${a.filePath}::${b}`}async function l(a,b){if(0===a.length)return{safe:[],excluded:[]};let c=a.filter(a=>i.test(j(a)));if(0===c.length)return{safe:[...a],excluded:[]};let e=c.map(j),f=await (0,d.Mv)(e,[...g],b),k=await (0,d.Mv)(e,[...h],b),l=new Set;for(let a of c){let b=j(a),c=Math.max(...g.map(a=>f(b,a))),d=Math.max(...h.map(a=>k(b,a)));c>=.6&&c>d&&l.add(a)}return{safe:a.filter(a=>!l.has(a)),excluded:[...l]}}async function m(a){return(0,e.A)({prototypes:[...g],negativePrototypes:[...h],threshold:.6,embedDocuments:a})}function n(a){return a.replace(/[\s\p{P}\p{S}]+/gu,"").toLowerCase()}let o=/^(?:我公司|本公司|我方|投标人|供应商|承包人)(?:就|对)[^,。;]{0,22}(?:均属|属实|真实有效|承担|负责|无异议|为准)$/u;function p(a){let b=a.trim().replace(/\s+/gu,"");if(!b||(0,f.mq)(b)||o.test(b))return!0;let c=n(b);if(g.some(a=>n(a)===c))return!0;let d=b.replace(/农民工工资保证金|工资保证金/gu,""),e=/评标|投标|开标|中标|评审|保证金|串标|围标|廉洁|询标|递交/u.test(d),h=/纪律|监督|争议|澄清|程序|行为|管控|限制|接触|公示|承诺|响应|办法/u.test(b);return!!(e&&h||/异常低价|评标基准价/u.test(b)||/电子保函|保函|投标保证金|履约担保|履约保证金|保证金(?:的)?(?:缴纳|退还|提交|方式)/u.test(b)&&!/农民工|工资|专用账户|实名|考勤|劳资/u.test(b)||/暂列金额|暂估价|材料调差/u.test(b)||/预付款(?:支付|比例|约定|申请|保函)|进度款(?:支付|申请|计量|约定)|履约担保/u.test(b)||/价格波动(?:调整|约定)|违约金(?:条款|约定)|计税|税金(?:计取|结算)|发票(?:开具|结算)/u.test(b))||q(b)}function q(a){let b=a.trim().replace(/\s+/gu,"");if(!b)return!1;let c=b.replace(/^\d{1,3}(?:[..]\d{1,3})*[、..]?/u,"");return!!(/^具备(?:有效|相应|满足)/u.test(c)||/^(?:须|应|需|得)?提供[^,,。;]{0,12}(?:证明|材料|文件|证件|证书|报告)/u.test(c))||!!/营业执照|资质证书|安全生产许可证|资格预审|资格审查|资质审查|财务状况|业绩证明|业绩要求|银行资信|审计报告|信用记录|信用评价|不良行为记录|联合体投标|联合体协议/u.test(b)&&!/施工|技术|方案|措施|管理|控制|验收|工艺|流程|计划|组织|进度|质量|工期|文明|绿色|环保|节能|材料|设备|机械|人员|劳务|检验|检测|试验|保证|落实|制度/u.test(b)}function r(a){let b=a.trim().replace(/\s+/gu,"");return!!b&&(!!/接受分包/u.test(b)||!!/投标人|投标方|投标企业|承包人资格|资格要求|资格审查|资格预审|资质要求|资质条件|资质等级|资格条件|财务状况|业绩要求|业绩证明|信用要求|联合体|社保/u.test(b)&&/营业执照|资质证书|安全生产许可证|级及以上资质|注册建造师|建造师注册证书|安全生产考核合格证书|职称证书|财务状况|财务报告|审计报告|银行资信|业绩证明|类似业绩|信用记录|信用评价|不良行为记录|投标保证金|履约保证金|社保|在建工程|人员组成表/u.test(b))}function s(a){let b=a.trim().replace(/\s+/gu,"");return!!b&&!!(/你方/u.test(b)&&/我方/u.test(b)||/发包人[^。;;]{0,30}?(?:审批|批准|备案|同意|许可)/u.test(b)||/^[\d((、..\s]{0,8}监理人/u.test(b)&&/(?:提交|报送|审批|延期|通知|检查|验收)/u.test(b)||/(?:特别约定|有关约定|的约定)[::]/u.test(b)||/通用(?:合同)?条款/u.test(b)||/(?:承包人|发包人|监理人)/u.test(b)&&/(本合同|报送|提交|审批|备案|更换|违约责任|撤换|拒绝|保管|验收记录|签字|颁发|教育|穿戴|定期检查|授权范围|驻场|在岗)/u.test(b))}async function t(a){let b=a.sections.filter(a=>a?.trim());if(0===b.length)return[];let c=b.filter(a=>!p(a)),e=c.filter(a=>i.test(a));if(0===e.length)return c;let f=`${a.chapterTitle} ${a.chapterPurpose||""}`.trim(),j=await (0,d.Mv)(e,[...g],a.embedDocuments),k=await (0,d.Mv)(e,f?[f]:[],a.embedDocuments),l=await (0,d.Mv)(e,[...h],a.embedDocuments),m=new Set;for(let a of e){let b=Math.max(...g.map(b=>j(a,b))),c=f?k(a,f):0,d=Math.max(...h.map(b=>l(a,b)));b>=.6&&b>c&&b>d&&m.add(a)}return c.filter(a=>!m.has(a))}async function u(a,b){return Promise.all(a.map(async a=>({...a,sections:await t({sections:a.sections||[],chapterTitle:a.title,chapterPurpose:a.purpose,embedDocuments:b})})))}},73859:(a,b,c)=>{c.d(b,{$i:()=>f,E1:()=>j,d2:()=>i,oC:()=>g,p4:()=>d,rF:()=>h});let d={id:"default_general_document",name:"通用文档",factFields:[{id:"document_identity",name:"对象名称",aliases:["项目名称","工程名称","文档名称","任务名称","招标项目名称","建设项目名称"],category:"identity",cardinality:"single",derivationPolicy:"source_only",usagePolicy:"must_use",confidencePolicy:{minForGeneration:.75,minForValidation:.85,allowPathOnly:!1},conflictPolicy:"strict"},{id:"schedule_requirement",name:"周期要求",aliases:["计划工期","工期","周期要求","进度节点要求","开工日期","竣工日期"],category:"schedule",cardinality:"single",derivationPolicy:"source_only",usagePolicy:"must_use",confidencePolicy:{minForGeneration:.7,minForValidation:.8,allowPathOnly:!1},conflictPolicy:"strict"},{id:"quality_requirement",name:"质量要求",aliases:["质量要求","质量标准","验收要求","评价标准"],category:"quality",cardinality:"multiple",derivationPolicy:"source_only",usagePolicy:"use_if_relevant",confidencePolicy:{minForGeneration:.65,minForValidation:.75,allowPathOnly:!1},conflictPolicy:"allow_multiple"},{id:"safety_requirement",name:"安全合规要求",aliases:["安全要求","安全合规要求","风险控制要求","合规要求"],category:"safety",cardinality:"multiple",derivationPolicy:"source_only",usagePolicy:"use_if_relevant",confidencePolicy:{minForGeneration:.65,minForValidation:.75,allowPathOnly:!1},conflictPolicy:"allow_multiple"},{id:"technical_parameter",name:"技术参数",aliases:["技术参数","参数规格范围","规格","型号","尺寸","标准编号","材料设备"],category:"technical",cardinality:"multiple",derivationPolicy:"source_only",usagePolicy:"must_use",confidencePolicy:{minForGeneration:.7,minForValidation:.8,allowPathOnly:!1},conflictPolicy:"allow_multiple"},{id:"resource_plan",name:"资源配置",aliases:["劳动力","机械","检测设备","应急物资","资源配置","人员配置"],category:"resource",cardinality:"multiple",derivationPolicy:"plan_inferable",usagePolicy:"use_if_relevant",confidencePolicy:{minForGeneration:.45,minForValidation:.55,allowPathOnly:!1},conflictPolicy:"allow_multiple"},{id:"commercial_data",name:"商务数据",aliases:["报价","单价","合价","综合单价","预留金","税率","金额","利润"],category:"commercial",cardinality:"multiple",derivationPolicy:"forbidden",usagePolicy:"do_not_use",confidencePolicy:{minForGeneration:1,minForValidation:1,allowPathOnly:!1},conflictPolicy:"ignore"},{id:"rule_requirement",name:"规则要求",aliases:["规则要求","变更说明","实施范围","对象范围","结构化数据范围"],category:"compliance",cardinality:"multiple",derivationPolicy:"source_only",usagePolicy:"use_if_relevant",confidencePolicy:{minForGeneration:.6,minForValidation:.7,allowPathOnly:!1},conflictPolicy:"allow_multiple"}],forbiddenValuePatterns:[/投标报价|报价明细|单价|合价|综合单价|预留金|暂列金额|税率|增值税|利润|结算/u],diagnosticValuePatterns:[/OCR|识别错误|乱码|无法确认|疑似|不确定|绑定片段|兜底|知识库|提示词|后台|文件路径|PDF|DWG|Excel/u,/^#+\s*/u,/^见(?:招标|投标人|前附|补疑|图纸|清单|文件|资料|公告|须知)/u],lowConfidenceValuePatterns:[/无法确认|疑似|不确定|需复核|文字模糊|语义断裂|识别错误|乱码/u]},e={...d,id:"construction_organization_design",name:"施工组织设计"};function f(a,b=""){let c=`${a?.id||""} ${a?.name||""} ${a?.category||""} ${a?.description||""} ${a?.outputTitle||""} ${b}`;return/施工组织设计|施工方案|危大工程|人、材、机|安全文明施工/u.test(c)?e:d}function g(a,b){if(b)return a.factFields.find(a=>a.name===b||a.aliases.some(a=>b.includes(a)||a.includes(b)))}function h(a,b){return a.forbiddenValuePatterns.some(a=>a.test(b))}function i(a,b){return a.diagnosticValuePatterns.some(a=>a.test(b))}function j(a,b){return a.lowConfidenceValuePatterns.some(a=>a.test(b))}},75251:(a,b,c)=>{function d(a){return a.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&")}function e(a){let b=Number.parseFloat(a.replace(/[,,\s]/gu,""));return Number.isFinite(b)?b:void 0}function f(a,b){return Math.abs(a-b)<=.01+1e-6*Math.max(Math.abs(a),Math.abs(b))}function g(a,b){return!!f(a,b)||Number.isInteger(a)&&(Math.trunc(b)===a||Math.round(b)===a)}function h(a){return a.replace(/\s+/gu,"").toLowerCase()}function i(a){let b=(a||"").trim().toLowerCase();return({米:"m",m:"m",公里:"km",km:"km",千米:"km",平方米:"m2","㎡":"m2","m\xb2":"m2",m2:"m2",平方:"m2",立方米:"m3","m\xb3":"m3",m3:"m3",方:"m3",吨:"t",t:"t",千克:"kg",kg:"kg"})[b]??b}c.d(b,{As:()=>j,C4:()=>A,NN:()=>t,az:()=>I,e:()=>F,uv:()=>s});let j=/(?:每|厚度|宽度|高度|深度|长度|直径|间距|净距|坡度|标高|偏差|误差|系数|等级|龄期|温度|含水率|压实度|密度|功率|电压|照度|色温|耐火|强度|抗渗|配合比|搭接|错缝|含水|埋深|覆土|预留|预埋|伸缩|沉降|变形|垂直度|平整度|倾角|坡度|模数|螺距|壁厚|净空|层高|埋设|位置|距离|半径|周长|坡度)/u;function k(a){let b=[],c=[],d=new Map,g=new Map,i=a.billFactLock;if(i)for(let a of i.entries){let f=Number.isFinite(a.quantity)?a.quantity:void 0;for(let g of(void 0!==f&&(b.push({name:(a.name||"").trim(),value:f,unit:(a.unit||"").trim(),description:a.description||"",source:"bill"}),c.push(f)),a.specQuantityPairs||[])){let b=(g.spec||"").replace(/\s+/gu,"").toLowerCase(),f=/^([\d,,]+(?:\.\d+)?)\s*(.*)$/u.exec((g.quantity||"").trim()),h=f?e(f[1]):void 0;if(!b||void 0===h)continue;let i=d.get(b)||[];i.push({value:h,unit:(f?.[2]||"").trim(),entryName:a.name,spec:(g.spec||"").trim()}),d.set(b,i),c.push(h)}}for(let[d,e]of Object.entries(a.blueprintData?.quantities??{})){if("number"!=typeof e?.value||!Number.isFinite(e.value))continue;for(let a of(b.push({name:d.trim(),value:e.value,unit:(e.unit||"").trim(),description:"",source:"blueprint"}),c.push(e.value),e.groups??[]))c.push(a.value);let a=e.specBreakdown??[];if(a.length>=2){let b=a.reduce((a,b)=>a+b.value,0);for(let i of(g.set(d.trim(),{value:e.value,unit:(e.unit||"").trim(),specs:new Map(a.map(a=>[h(a.spec),a.value])),breakdown:a.map(a=>({spec:a.spec,value:a.value})),partitioned:f(b,e.value)}),a))c.push(i.value)}}return!function(a,b){if(!a)return;let c=a=>{if("number"==typeof a){Number.isFinite(a)&&b.push(a);return}if("string"==typeof a){for(let c of a.matchAll(/\d+(?:\.\d+)?/gu))b.push(Number.parseFloat(c[0]));return}if(Array.isArray(a))return void a.forEach(c);a&&"object"==typeof a&&Object.values(a).forEach(c)};[a.project,a.schedule,a.quality,a.safety,a.resources,a.preciseFacts,a.bills,a.drawings,a.rules,a.specifications,a.tables].forEach(c)}(a.factsModel,c),{entries:b,numberPool:c,specValues:d,aggregateSpecs:g}}let l=/(?:合计|共计|总计|总共|总量|总数|总长|全长|总长度|总数量|总面积|总重量|小计)(?:为|达|约|共|计)?\s*([\d,,]+(?:\.\d+)?)\s*(立方米|m³|m3|平方米|㎡|m²|m2|公里|千米|km|kg|吨|t|座|个|套|处|盏|棵|株|樘|扇|根|块|片|组|件|孔|间|栋|幢|户|米|m)(?![a-zA-Z0-9²³])/gu;function m(a,b,c=2){if(!a||!b)return!1;let d=Math.min(a.length,8);for(let e=d;e>=c;e-=1)for(let c=0;c+e<=a.length;c+=1)if(b.includes(a.slice(c,c+e)))return!0;return!1}function n(a,b){let c=function(a){switch(i(a)){case"m":return"(?:m|米)";case"km":return"(?:km|公里|千米)";case"m2":return"(?:m2|m\xb2|㎡|平方米)";case"m3":return"(?:m3|m\xb3|立方米)";case"t":return"(?:t|吨)";case"kg":return"(?:kg|千克)";default:return d((a||"").trim())}}(b.unit);for(let e of function(a){let b=`${a}`,c=new Set([b]),[d,e]=b.split(".");return d.length>=4&&c.add(`${d.replace(/\B(?=(\d{3})+(?!\d))/gu,",")}${e?`.${e}`:""}`),[...c]}(b.value)){let f=d(e);if(RegExp(`${f}\\s*(?:${c})|(?:${c})\\s*${f}`,"u").test(a)||b.value>=100&&RegExp(`(?<![\\d.])${f}(?![\\d])`,"u").test(a))return!0}return!1}function o(a,b,c){let d=a.filter(a=>a.name.length>=2&&m(a.name,c));if(d.length<2||d.length>24)return[];for(let a=0;a<d.length;a+=1)for(let c=a+1;c<d.length;c+=1){let e=d[a],g=d[c];if(!(e.name===g.name&&f(e.value,g.value))&&f(e.value+g.value,b))return[e,g]}return[]}function p(a,b,c,d,e){let g=new Map;for(let a of d.entries){if(!(a.value>0)||i(a.unit)!==b)continue;let c=`${a.source}\u0000${a.name}`;g.set(c,(g.get(c)||0)+a.value)}let h=[];for(let[a,b]of g)if(m(a.slice(a.indexOf("\0")+1),c)&&(h.some(a=>f(a,b))||h.push(b),h.length>=24))break;if(0===h.length)return!1;let j=b=>f(b,a)||function(a,b){let c=0,d=a.length;for(;c<d;){let e=c+d>>1;a[e]<b?c=e+1:d=e}for(let d=Math.max(0,c-1);d<=Math.min(a.length-1,c+1);d+=1)if(f(a[d],b))return!0;return!1}(e,a-b);if(h.some(a=>j(a)))return!0;for(let a=0;a<h.length;a+=1)for(let b=a+1;b<h.length;b+=1)if(j(h[a]+h[b]))return!0;return!1}function q(a,b){let c=[];if(0===b.entries.length)return c;let d=new Set,g=[...b.numberPool].sort((a,b)=>a-b);for(let h of a.matchAll(l)){let j=e(h[1]);if(void 0===j)continue;let k=i(h[2]),l=h.index??0,q=l+h[0].length,r=b.entries.filter(a=>a.value>0&&i(a.unit)===k);if(0===r.length)continue;let s=a.slice(Math.max(0,l-40),l+h[0].length+40),t=a.slice(Math.max(0,l-20),l+h[0].length),u=r.filter(a=>a.name.length>=3&&t.includes(a.name)).sort((a,b)=>b.name.length-a.name.length)[0];if(u){if(f(u.value,j)){let b=o(r,j,s);if(b.length>=2){let e=a.slice(Math.max(0,l-150),l+h[0].length+150),f=b.filter(a=>!n(e,a));if(f.length>0){let a=b.map(a=>`「${a.name}」${a.value}${a.unit}`).join(" + "),e=`合计数值应分项显式:「${u.name} ${j}${h[2]}」= ${a},但正文未展示分项(缺 ${f.map(a=>`${a.name} ${a.value}${a.unit}`).join("、")}),无法核对合计来源`;d.has(e)||(d.add(e),c.push({issue:{level:"warning",severity:"warning",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:e,suggestion:`在合计值附近补充分项明细(${a}),使合计数值可逐项核对;分项值必须取自工程量清单原文,不得改动。`},matchStart:l,matchEnd:q}))}}continue}let e=j-u.value,i=r.find(a=>a!==u&&a.name!==u.name&&f(a.value,e));if(i){let b=a.slice(Math.max(0,l-150),l+h[0].length+150);if(n(b,u)&&n(b,i))continue;let f=`合计值与权威不符:「${u.name}」清单权威 ${u.value}${h[2]};正文 ${j}${h[2]} \u2248 ${u.value} + ${i.value}(「${i.name}」)——若「${i.name}」应计入「${u.name}」合计,须在正文显式分项;若不应计入(重复计入),须改回权威值 ${u.value}${h[2]}`;d.has(f)||(d.add(f),c.push({issue:{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:f,suggestion:`核对合计口径:「${u.name}」合计为 ${u.value}${h[2]}(清单权威)。若正文需表达 ${u.value} + ${i.value},则显式写成「${u.name} ${u.value}${h[2]}、${i.name} ${i.value}${h[2]},合计 ${j}${h[2]}」;否则将合计改回 ${u.value}${h[2]}(差额 ${Math.round(1e4*e)/1e4}${h[2]} 属「${i.name}」,不得并入)。`},matchStart:l,matchEnd:q}));continue}if(p(j,k,s,b,g))continue;let m=`合计值与权威不符:「${u.name}」合计为 ${u.value}${h[2]}(清单权威),正文写 ${j}${h[2]},且差额不属任何清单条目,需核对合计口径`;d.has(m)||(d.add(m),c.push({issue:{level:"warning",severity:"warning",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:m,suggestion:`核对「${u.name}」的合计口径:若为多分项之和,请写明与权威一致的分项分解;若为单一总量,改为清单权威值 ${u.value}${u.unit||h[2]}。`},matchStart:l,matchEnd:q}));continue}let v=o(r,j,s);if(v.length>=2){let b=a.slice(Math.max(0,l-150),l+h[0].length+150),e=v.filter(a=>!n(b,a));if(e.length>0){let a=v.map(a=>`「${a.name}」${a.value}${a.unit}`).join(" + "),b=`合计数值应分项显式:正文合计 ${j}${h[2]} = ${a},但未展示分项(缺 ${e.map(a=>`${a.name} ${a.value}${a.unit}`).join("、")}),无法核对合计来源`;d.has(b)||(d.add(b),c.push({issue:{level:"warning",severity:"warning",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:b,suggestion:`在合计值附近补充分项明细(${a});分项值必须取自工程量清单原文,不得改动。`},matchStart:l,matchEnd:q}))}continue}{let a=new Map;for(let b of r)a.set(b.name,(a.get(b.name)||0)+b.value);let b=!1;for(let c of a.values())if(f(c,j)){b=!0;break}if(b)continue}if(p(j,k,s,b,g))continue;let w=r.filter(a=>m(a.name,s)),x=r.some(a=>f(a.value,j)),y=b.numberPool.some(a=>f(a,j));if(!x&&!y&&w.length>0){let a=`合计值无权威来源:正文「${h[0].trim()}」在清单事实锁与蓝图参数桶中找不到同值来源,违反无据不写`;if(d.has(a))continue;d.add(a),c.push({issue:{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:a,suggestion:"删除该合计数值或改为与清单权威一致的合计值;无权威来源的合计数不得进入交付文本。"},matchStart:l,matchEnd:q})}}return c}function r(a,b,c){let d=Math.max(0,b-60),e=a.slice(d,b),f=-1;for(let a=e.length-1;a>=0;a-=1)if(/[,、;;。!?!?\n]/u.test(e[a])){f=d+a;break}if(-1===f||b-f>40)return null;let g=/[,、;;]/u.test(a[f]),h=g?f:f+1,i=g?c:c+ +!!/[,、;;]/u.test(a[c]||"");return i<=h?null:{start:h,end:i,excerpt:a.slice(h,i).trim()}}function s(a,b){let c=k({markdown:a,...b});if(0===c.entries.length)return{markdown:a,fixedCount:0,details:[]};let d=a,e=[];for(let a=1;a<=4;a+=1){let a=[];for(let b of q(d,c)){if(!b.issue.message.startsWith("合计值无权威来源"))continue;let c=r(d,b.matchStart,b.matchEnd);c&&a.push(c)}if(0===a.length)break;let b=0,f=1/0;for(let c of[...a].sort((a,b)=>b.start-a.start))c.end>f||(d=d.slice(0,c.start)+d.slice(c.end),f=c.start,b+=1,e.push(`删除无源合计「${c.excerpt.slice(0,40)}」`));if(0===b)break}return{markdown:d,fixedCount:e.length,details:e}}function t(a,b){let c=k({markdown:a,...b});if(0===c.entries.length)return{markdown:a,fixedCount:0,details:[]};let d=a,e=[];for(let a=1;a<=4;a+=1){let a=[];for(let e of H(d,c,b.billFactLock)){if(!e.issue.message.startsWith("名称-数值绑定无源"))continue;let b=r(d,e.matchStart,e.matchEnd);b&&a.push(b)}if(0===a.length)break;let f=0,g=1/0;for(let b of[...a].sort((a,b)=>b.start-a.start))b.end>g||(d=d.slice(0,b.start)+d.slice(b.end),g=b.start,f+=1,e.push(`删除无源绑定「${b.excerpt.slice(0,40)}」`));if(0===f)break}return{markdown:d,fixedCount:e.length,details:e}}let u=/(?:DN|De|Φ|φ|Ø|dn|de)\s*\d+(?:\.\d+)?|(?<![A-Za-z0-9])[CM]\d{2,3}(?![0-9])|HRB\d+|HPB\d+|(?<![A-Za-z0-9])\d{2,4}\s*[×xX*]\s*\d{2,4}(?![0-9])|(?<![A-Za-z0-9])\d+(?:\.\d+)?\s*[kK]?[Ww](?![A-Za-z0-9])/gu,v=/运输车|搅拌车|罐车|挖掘机|挖机|装载机|压路机|摊铺机|打夯机|夯实机|洒水车|浇水车|吊车|起重机|泵车|地泵|发电机组|发电机|电焊机|空压机|水泵|提升泵|潜水泵|雾炮机|充桩|桩机|机械|设备|机具|车辆|机组/u;function w(a,b){for(let[c,d]of a.aggregateSpecs)if(d.specs.has(b))return{entryName:c,info:d}}function x(a,b){let c=[];if(0===b.specValues.size&&0===b.aggregateSpecs.size)return c;let d=new Set;for(let g of a.matchAll(u)){let i,k=h(g[0]),l=b.specValues.get(k)??[],n=w(b,k);if(0===l.length&&!n)continue;let o=(g.index??0)+g[0].length,p=a.slice(o,o+36),q=/^([^。;;\n|]{0,16}?)([\d,,]+(?:\.\d+)?)\s*(座|个|套|盏|台|根|块|樘|扇|片|组|件|孔|米|m|km|公里|平方米|m2|㎡|m²|立方米|m3|m³|吨|t|kg)(?![a-zA-Z0-9²³])/u.exec(p);if(!q||j.test(q[1])||/不大于|不超过|不得大于|不得超过/.test(q[1]))continue;let r=q[1];if(/[、,,]/u.test(r)){let a=r.split(/[、,,]/u).pop()||"";if(/[\u4e00-\u9fa5]/u.test(a)&&!/合计|小计|共计|总计|总量|用量|总长|共/u.test(a))continue}if("台"===q[3]||"套"===q[3]){let b=o+q[1].length+q[2].length+q[3].length;if(v.test(q[1])||v.test(a.slice(b,b+12)))continue}if(/总长|全长|长度|管长|延米/u.test(q[1])&&/^(?:m|米|km|公里)$/u.test(q[3]))continue;let s=e(q[2]);if(void 0===s||l.some(a=>f(a.value,s)))continue;let t=n?.info.specs.get(k);if(void 0!==t&&f(t,s))continue;let u=new Map;for(let a of l){let b=u.get(a.entryName);b?b.value+=a.value:u.set(a.entryName,{value:a.value,unit:a.unit})}let x=[...u.values()].sort((a,b)=>b.value-a.value);if(l.length>=2&&x.some(a=>f(a.value,s)))continue;if(n?.info.partitioned&&void 0!==t&&f(n.info.value,s)){let a=h(q[1]);if(![...n.info.specs.keys()].some(b=>b!==k&&a.includes(b))){let a=n.info.breakdown.map(a=>`${a.spec} ${a.value}${n.info.unit}`).join(" + "),b=`规格-数值绑定错位:「${g[0]}」处数值 ${s}${q[3]} 是「${n.entryName}」的跨规格名称合计(${a}),不属于单一规格「${g[0]}」——名称合计不得挂给单一规格,须写该规格小计 ${t}${q[3]}(确需写合计须显式分解)`;if(!d.has(b)){d.add(b);let e=o+q[1].length;c.push({issue:{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:b,suggestion:`「${g[0]}」的数量须写该规格小计 ${t}${q[3]};名称合计须显式分解为 ${a}(合计 ${n.info.value}${n.info.unit}),不得把合计值挂在单一规格名下。`},specToken:g[0],value:s,unit:q[3],valueStart:e,valueEnd:e+q[2].length,groupSumCandidates:[{value:t,unit:n.info.unit},...x.filter(a=>!f(a.value,s))]})}}continue}for(let[a,c]of b.specValues){if(a===k)continue;let b=c.find(a=>f(a.value,s));if(b){i={spec:b.spec||a,entryName:b.entryName};break}}if(!i||q[1]&&m(i.entryName,q[1]))continue;let y=`规格-数值绑定错位:正文「${g[0]} ${s}${q[3]}」中 ${s}${q[3]} 属规格「${i.spec}」(清单条目「${i.entryName}」),不属于「${g[0]}」的清单数量`;if(d.has(y))continue;d.add(y);let z=o+q[1].length;c.push({issue:{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:y,suggestion:`「${g[0]}」的数量必须引用清单中该规格条目的原值(如 ${l.map(a=>`${a.value}${a.unit}`).join("、")});「${i.spec}」的数量不得张冠李戴至「${g[0]}」。`},specToken:g[0],value:s,unit:q[3],valueStart:z,valueEnd:z+q[2].length,groupSumCandidates:x.filter(a=>!f(a.value,s))})}for(let g of a.matchAll(u)){let i=h(g[0]),k=w(b,i);if(!k?.info.partitioned)continue;let l=k.info.specs.get(i);if(void 0===l)continue;let n=g.index??0,o=a.slice(Math.max(0,n-24),n),p=/([\d,,]+(?:\.\d+)?)\s*(座|个|套|盏|台|根|块|樘|扇|片|组|件|孔|米|m|km|公里|平方米|m2|㎡|m²|立方米|m3|m³|吨|t|kg)\s*([^。;;\n|0-9²³]{0,12})$/u.exec(o);if(!p)continue;let q=p[3];if(!/[((]|为|系|采用|型号|规格|灯型|类型/u.test(q)||j.test(q))continue;let r=e(p[1]);if(void 0===r||!f(k.info.value,r)||f(l,r)||!m(k.entryName,o))continue;let s=h(a.slice(Math.max(0,n-60),n+60));if([...k.info.specs.keys()].filter(a=>s.includes(a)).length>=2)continue;let t=n-q.length-p[2].length-p[1].length,u=`${i}@${t}`;if(d.has(u))continue;d.add(u);let v=k.info.breakdown.map(a=>`${a.spec} ${a.value}${k.info.unit}`).join(" + ");c.push({issue:{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`规格-数值绑定错位:正文「…${r}${p[2]}${q}${g[0]}…」中 ${r}${p[2]} 为「${k.entryName}」的跨规格名称合计(${v}),其后紧随单一规格「${g[0]}」易被读作全部为该规格;名称合计须显式分解`,suggestion:`数量 ${r}${p[2]} 保留不动;把规格表述改为显式分解,如「${r}${p[2]}(${v})」或逐规格列写「${v}」;不得以名称合计搭配单一规格描述。`},specToken:g[0],value:r,unit:p[2],valueStart:t,valueEnd:t+p[1].length,groupSumCandidates:[]})}if(b.aggregateSpecs.size>0){let g=0;for(let i of a.split("\n")){let a=g;if(g+=i.length+1,!i.includes("|")||/^\s*\|?[\s:|-]*\|?\s*$/u.test(i))continue;let j=new Map;for(let a of i.matchAll(u)){let c=h(a[0]),d=w(b,c);if(!d?.info.partitioned)continue;let e=d.info.specs.get(c);if(void 0===e)continue;let f=j.get(d.entryName)||[];f.some(a=>a.key===c)||f.push({key:c,raw:a[0].trim(),specSum:e}),j.set(d.entryName,f)}if(1!==j.size)continue;let[k,l]=[...j.entries()][0];if(1!==l.length)continue;let n=b.aggregateSpecs.get(k);if(!n)continue;let{key:o,raw:p,specSum:q}=l[0];if(m(k,i))for(let g of i.matchAll(/\|([^|\n]*)/gu)){let h=g[1].trim(),i=/^([\d,,]+(?:\.\d+)?)\s*(?:座|个|套|盏|台|根|块|樘|扇|片|组|件|孔|米|m|km|公里|平方米|m2|㎡|m²|立方米|m3|m³|吨|t|kg)?$/u.exec(h);if(!i)continue;let j=e(i[1]);if(void 0===j||!f(n.value,j)||f(q,j)||(b.specValues.get(o)??[]).some(a=>f(a.value,j)))continue;let l=a+(g.index??0)+1+g[1].indexOf(i[1]),m=`${o}@${l}`;if(d.has(m))continue;d.add(m);let r=n.breakdown.map(a=>`${a.spec} ${a.value}${n.unit}`).join(" + ");c.push({issue:{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`规格-数值绑定错位:表格行「${p}…」的数量 ${j}${n.unit} 是「${k}」的跨规格名称合计(${r}),该行规格为「${p}」应填其小计 ${q}${n.unit}`,suggestion:`该行数量改为 ${q}${n.unit};名称合计请另立「合计」行或显式分解为 ${r}。`},specToken:p,value:j,unit:n.unit,valueStart:l,valueEnd:l+i[1].length,groupSumCandidates:[{value:q,unit:n.unit}]})}}}return c}let y={米:"m",公里:"km",平方米:"m2","㎡":"m2","m\xb2":"m2",立方米:"m3","m\xb3":"m3",吨:"t"};function z(a){return Object.prototype.hasOwnProperty.call(y,a)?y[a]:a}function A(a,b){let c=k({markdown:a,...b});if(0===c.specValues.size&&0===c.aggregateSpecs.size)return{markdown:a,fixedCount:0,details:[]};let d=a,e=[];for(let a=1;a<=8;a+=1){let a=x(d,c).filter(a=>a.groupSumCandidates.length>0);if(0===a.length)break;let b=0;for(let f of[...a].sort((a,b)=>b.valueStart-a.valueStart)){let a,g,h=f.groupSumCandidates.find(a=>z(a.unit)===z(f.unit));if(h)a=d.slice(0,f.valueStart)+`${h.value}`+d.slice(f.valueEnd),g=`「${f.specToken}」绑定数值 ${f.value}${f.unit} → 组和值 ${h.value}${f.unit}`;else{let b=f.valueStart;for(;b>0&&/\s/u.test(d[b-1]);)b-=1;let c=f.valueEnd+f.unit.length;a=d.slice(0,b)+d.slice(c),g=`「${f.specToken}」移除张冠李戴数值 ${f.value}${f.unit}(无同单位替换候选,值不属该规格)`}x(a,c).some(a=>{let b=a.valueStart-f.valueStart;return b>=-4&&b<=4})||(d=a,b+=1,e.push(g))}if(0===b)break}return{markdown:d,fixedCount:e.length,details:e}}let B=/(?:埋深|覆土(?:厚度|深度)?|管顶覆土)(?:不小于|不大于|不低于|不超过|约|为|达|控制在|一般|宜|应)?[^。;;\n|]{0,10}?([\d,,]+(?:\.\d+)?)\s*(mm|cm|米|m)(?![a-zA-Z0-9²³])/gu,C=/(?:约为|大约|约计|约|将近|近)\s*([\d,,]+(?:\.\d+)?)\s*(点|处|座|个|套|盏|棵|株|樘|扇|根|块|片|组|件|孔|间|栋|幢|户|米|公里|km|m2|㎡|m²|平方米|m3|m³|立方米|kg|吨|t|l|升|kw|w)(?![a-zA-Z0-9²³³])/giu,D=/([\d,,]+(?:\.\d+)?)\s*余\s*(点|处|座|个|套|盏|棵|株|樘|扇|根|块|片|组|件|孔|间|栋|幢|户|米|公里|km|m2|㎡|m²|平方米|m3|m³|立方米|kg|吨|t)(?![a-zA-Z0-9²³])/gu,E=/[节制合履签违公盟密租最接靠邻附距离]/u,F=/^(?:管道|工程|材料|项目|施工|工作|设备|设施|系统|区域|场地|道路|建筑|结构|基础|主体|管网|土建|安装|装饰|装修|土方|绿化|照明|给水|排水|电气|挖方|填方|回填|弃方|外运|运输|检测|试验|测量|清理|拆除|清淤|维护|养护|管理|服务|其他|以上|以下|其中|包括|采用|使用|型号|规格|数量|单位|合计|总计|长度|面积|体积|重量)$/u,G=/(木质|木|铝合金|铝|不锈钢|塑钢|塑料|塑|钢|铁|砼|混凝土|铸铁|铜|复合)(门|窗|井|灯|护栏|围栏|盖板|雨水口)/gu;function H(a,b,c){let d=[],h=new Set,k=new Set,l=new Map;if(c)for(let a of c.entries){let b=(a.name||"").trim();if(b.length<2||!Number.isFinite(a.quantity))continue;let c=`${b}\u0000${i(a.unit)}`,d=l.get(c)||{count:0,samples:[]};d.count+=1;let e=`${a.quantity}${a.unit}`;d.samples.length<3&&!d.samples.includes(e)&&d.samples.push(e),l.set(c,d)}let n=b.entries.map(a=>`${a.name} ${a.description}`).join("\n"),o=new Map;{let a=new Map;for(let c of b.entries){if(!(c.value>0))continue;let b=`${c.source}\u0000${c.name}`,d=a.get(b);d?d.sum+=c.value:a.set(b,{name:c.name,sum:c.value})}for(let b of a.values()){let a=o.get(b.name)||[];a.push(b.sum),o.set(b.name,a)}}let p=new Map,q=new Map,r=new Map,s=(a,c,d)=>{let e=`${a}\u0000${c}`,f=p.get(e);if(f||(f=b.entries.filter(b=>b.name===a&&i(b.unit)===c&&b.value>0).map(a=>Math.round(100*a.value)),p.set(e,f)),f.length<2)return!1;let g=`${e}\u0000${Math.round(100*d)}`,h=q.get(g);if(void 0!==h)return h;let j=function(a,b){if(a.length<2||b<=0)return!1;let c=[...a].sort((a,b)=>a-b);if(c.some(a=>a===b))return!1;let d=c.reduce((a,b)=>a+b,0);if(b>d)return!1;let e=d-b;if(e>0&&e!==b){let a=Math.max(b,e);for(let d=0;d<c.length;d+=1)for(let f=d+1;f<c.length;f+=1){let g=c[d]+c[f];if(g>a)break;if(g===b||g===e)return!0}let d=0,f=c.length-1;for(;d<=f;){let a=d+f>>1;if(c[a]===e)return c.length>=3;c[a]<e?d=a+1:f=a-1}}else for(let a=0;a<c.length;a+=1)for(let d=a+1;d<c.length;d+=1){let e=c[a]+c[d];if(e>b)break;if(e===b)return!0}if(c.length>40)return!1;let f=Math.ceil(c.length/2),g=c.slice(0,f),h=c.slice(f),i=a=>{let b=new Set([0]);for(let c of a){let a=new Set;for(let d of b)a.add(d),a.add(d+c);b=a}return b},j=i(h);for(let a of i(g))if(j.has(b-a))return!0;return!1}(f,Math.round(100*d));return q.set(g,j),j},t=(a,c)=>{let d=o.get(a)||[];if(0===d.length)return!1;let e=`${a}\u0000${Math.round(100*c)}`,g=r.get(e);if(void 0!==g)return g;let h=d.some(a=>b.numberPool.some(b=>f(a+b,c)));return r.set(e,h),h};if(c)for(let n of c.entries){let c=(n.name||"").trim();if(c.length<2||F.test(c)||!Number.isFinite(n.quantity))continue;let p=0,q=0;for(;q<6;){let r=a.indexOf(c,p);if(r<0)break;if(p=r+c.length,q+=1,/\d$/u.test(c)&&/^[\d.]/u.test(a.slice(r+c.length,r+c.length+1))){p=r+1;continue}if("量"===a.slice(r+c.length,r+c.length+1))continue;let u=a.slice(r+c.length,r+c.length+20),v=/^([^。;;\n|]{0,12}?)([\d,,]+(?:\.\d+)?)\s*(座|个|套|处|盏|棵|株|樘|扇|根|块|片|组|件|孔|间|栋|幢|户|米|m|km|公里|平方米|m2|㎡|m²|立方米|m3|m³|kg|吨|t)(?![a-zA-Z0-9²³])/u.exec(u);if(!v||j.test(v[1]))continue;let w=e(v[2]);if(void 0===w||g(w,n.quantity))continue;let x=i(v[3]);if(x!==i(n.unit)||b.entries.some(a=>a.name===c&&g(w,a.value)&&i(a.unit)===x)||(o.get(c)||[]).some(a=>f(a,w))||s(c,x,w)||t(c,w))continue;let y=a.slice(Math.max(0,r-32),r+c.length+20);if(function(a,b,c,d){for(let[e,g]of d)if(e!==b&&(e.includes(b)||b.includes(e)||m(e,c))&&g.some(b=>f(b,a)))return!0;return!1}(w,c,y,o))continue;let z=b.entries.find(a=>a.name!==c&&f(a.value,w)&&i(a.unit)===x);if(z&&m(z.name,y))continue;if(z){let a=`${r}\u0000${w}\u0000${x}`;if(k.has(a))continue;k.add(a);let b=l.get(`${c}\u0000${x}`),e=b&&b.count>1?`名称-数值绑定错位:「${c}」处数值 ${w}${v[3]} 属清单条目「${z.name}」(${z.value}${z.unit}),与同名清单条目(共 ${b.count} 条,如 ${b.samples.join("、")} 等)的权威数量均不符`:`名称-数值绑定错位:「${c}」处数值 ${w}${v[3]} 属清单条目「${z.name}」(${z.value}${z.unit}),与「${c}」清单数量 ${n.quantity}${n.unit} 不符`;if(h.has(e))continue;h.add(e),d.push({issue:{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:e,suggestion:b&&b.count>1?`核对「${c}」的数量口径:同名清单条目共 ${b.count} 条(如 ${b.samples.join("、")} 等),逐一核对后引用对应条目数量;引用「${z.name}」数量时须明确对象名称,不得张冠李戴。`:`核对「${c}」的数量口径:清单权威值为 ${n.quantity}${n.unit};引用「${z.name}」数量时须明确对象名称,不得张冠李戴。`},matchStart:r,matchEnd:r+c.length+v[0].length});continue}if(function(a,b,c,d){let e=a.slice(Math.max(0,b-40),b+c+40),g=[];for(let a of e.matchAll(/\d+(?:\.\d+)?/gu)){let b=Number.parseFloat(a[0]);Number.isFinite(b)&&!f(b,d)&&g.push(b)}for(let a=0;a<g.length;a+=1)for(let b=a+1;b<g.length;b+=1)if(f(g[a]+g[b],d)||f(Math.abs(g[a]-g[b]),d))return!0;return!1}(a,r,c.length,w)||b.numberPool.some(a=>f(a,w)))continue;let A=`${r}\u0000${w}\u0000${x}`;if(k.has(A))continue;k.add(A);let B=l.get(`${c}\u0000${x}`),C=B&&B.count>1?`名称-数值绑定无源:「${c}」处数值 ${w}${v[3]} 与同名清单条目(共 ${B.count} 条,如 ${B.samples.join("、")} 等)的权威数量均不符,且在全部权威数据中找不到同值来源`:`名称-数值绑定无源:「${c}」处数值 ${w}${v[3]} 与清单权威 ${n.quantity}${n.unit} 不符,且在全部权威数据中找不到同值来源`;h.has(C)||(h.add(C),d.push({issue:{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:C,suggestion:B&&B.count>1?`核对「${c}」的数量口径:同名清单条目共 ${B.count} 条(如 ${B.samples.join("、")} 等),逐一核对后引用对应条目的权威数量;无权威来源的数值不得与清单条目名称绑定出现。`:`将「${c}」的数量改为清单权威值 ${n.quantity}${n.unit};无权威来源的数值不得与清单条目名称绑定出现。`},matchStart:r,matchEnd:r+c.length+v[0].length}))}}for(let c of a.matchAll(G)){let g=c[0];if(n.includes(g))continue;let j=c[2],k=a.slice((c.index??0)+g.length,(c.index??0)+g.length+16),l=/^([^。;;\n|]{0,10}?)([\d,,]+(?:\.\d+)?)\s*(樘|扇|套|座|盏|个)(?![a-zA-Z0-9²³])/u.exec(k);if(!l)continue;let m=e(l[2]);if(void 0===m)continue;let o=b.entries.find(a=>a.name.includes(j)&&f(a.value,m)&&i(a.unit)===i(l[3]));if(!o)continue;let p=`名称口径不符:正文「${g} ${m}${l[3]}」——${m}${l[3]} 对应清单「${o.name}」条目,清单中不存在「${g}」,名称与清单权威不符`;if(h.has(p))continue;h.add(p);let q=c.index??0;d.push({issue:{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:p,suggestion:`名称必须与清单条目口径一致:将「${g}」改为「${o.name}」(或清单原文名称);名称与数量绑定不得自行替换材质/类型限定词。`},matchStart:q,matchEnd:q+g.length+l[0].length})}return d}function I(a){let b=a.markdown||"";if(!b)return[];let c=k(a);if(0===c.entries.length&&0===c.numberPool.length)return[];let d=[...q(b,c).map(a=>a.issue),...x(b,c).map(a=>a.issue),...function(a,b){let c=[],d=new Set;for(let g of a.matchAll(B)){let a=e(g[1]);if(void 0===a)continue;let h=g[2];if(("mm"===h?a/1e3:"cm"===h?a/100:a)<=10)continue;let i=b.entries.find(b=>f(b.value,a)&&/总长|全长|总长度|长度|管线/u.test(b.name)),j=`数值语义槽位错位:正文「${g[0].trim()}」——埋深/覆土数值 ${a}${h} 超出物理合理范围(管道埋深一般 <10m)${i?`,且该数值与权威「${i.name}」(${i.value}${i.unit})一致,疑似把总长/长度口径误用作埋深`:",疑似口径混用"}`;d.has(j)||(d.add(j),c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:j,suggestion:`核对槽位语义:埋深/覆土深度应在 0.3~10m 合理区间(以设计图纸为准);总长/长度类数值不得用于埋深描述${i?`(「${i.name}」为 ${i.value}${i.unit})`:""}。`}))}return c}(b,c),...function(a,b){let c=[];if(0===b.numberPool.length)return c;let d=new Set,f=(a,f,g)=>{let h=e(a);if(void 0===h||function(a,b){let c=a>=1e3?Math.max(10,.02*a):a>=100?5:a>=10?1:.5;return b.some(b=>Math.abs(b-a)<=c||Math.abs(b-a)<=Math.max(1e-6,.02*Math.abs(b)))}(h,b.numberPool))return;let i=`近似数值不可推导:正文「${g.trim()}」的 ${h}${f} 在清单/蓝图/事实主表中无同值或近似来源,违反无据不写`;d.has(i)||(d.add(i),c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:i,suggestion:"删除该近似表述,或改用权威数据可推导的数值(清单/蓝图同值口径);「约/近」类近似数值必须可闭合到权威来源。"}))};for(let b of a.matchAll(C)){let c=b.index??0,d=a.slice(Math.max(0,c-1),c);E.test(d)||f(b[1],b[2],b[0])}for(let b of a.matchAll(D))f(b[1],b[2],b[0]);return c}(b,c),...H(b,c,a.billFactLock).map(a=>a.issue)],g=[],h=new Set;for(let a of d){let b=`${a.severity||a.level}|${a.message}`;h.has(b)||(h.add(b),g.push(a))}return g}},76193:(a,b,c)=>{c.d(b,{ll:()=>q,rk:()=>n,wF:()=>u,yT:()=>p}),c(51190),c(44505),c(10751);var d=c(93675);let e=new Set(["fixed","exempt","manual"]),f=[],g=new Set(["structure","table","fact_consistency","evidence_coverage","professional_chain","control_loop","format","style","scope"]),h=[{id:"table-line-residue",kind:"deterministic",anchoredTo:"table-quality",giveUpOnFailure:!0},{id:"templated-labels",kind:"deterministic",anchoredTo:"templated-label",giveUpOnFailure:!0},{id:"structure-integrity",kind:"deterministic",anchoredTo:"structure-integrity",giveUpOnFailure:!0},{id:"embedded-heading-split",kind:"deterministic",anchoredTo:"planned-structure",giveUpOnFailure:!0},{id:"repeated-words",kind:"deterministic",anchoredTo:"repeated-word",giveUpOnFailure:!0},{id:"duplicate-tables",kind:"deterministic",anchoredTo:"duplicate-table",giveUpOnFailure:!0},{id:"finish-thickness",kind:"deterministic",anchoredTo:"finish-thickness",giveUpOnFailure:!0},{id:"slot-depth-value",kind:"deterministic",anchoredTo:"fact-reconciliation",authorities:["blueprint"],giveUpOnFailure:!0},{id:"spec-quantity-binding",kind:"deterministic",anchoredTo:"fact-reconciliation",authorities:["blueprint"],giveUpOnFailure:!0},{id:"labor-peak",kind:"deterministic",anchoredTo:"resource-consistency",authorities:["laborPeak"],giveUpOnFailure:!0},{id:"phase-labor-values",kind:"deterministic",anchoredTo:"phase-labor-mixing",authorities:["blueprint"],giveUpOnFailure:!0},{id:"resource-breakdown",kind:"deterministic",anchoredTo:"resource-breakdown-consistency",authorities:["blueprint"],giveUpOnFailure:!0},{id:"equipment-batch-values",kind:"deterministic",anchoredTo:"equipment-batch-conflict",authorities:["blueprint"],giveUpOnFailure:!0},{id:"internal-table-row-dup",kind:"deterministic",anchoredTo:"table-spam",giveUpOnFailure:!0},{id:"duplicate-basic-info-tables",kind:"deterministic",anchoredTo:"table-quality",alsoAnchoredTo:["duplicate-basic-info"],giveUpOnFailure:!0},{id:"fallback-placeholder-rows",kind:"deterministic",anchoredTo:"formal-placeholder",giveUpOnFailure:!0},{id:"greening-maintenance",kind:"deterministic",anchoredTo:"greening-maintenance-mismatch",authorities:["greeningMaintenance"],giveUpOnFailure:!0},{id:"paragraph-opening-repeat",kind:"deterministic",anchoredTo:"paragraph-opening-repeat",giveUpOnFailure:!0},{id:"paragraph-tail-repeat",kind:"deterministic",anchoredTo:"paragraph-tail-repeat",giveUpOnFailure:!0},{id:"collision-numbered-heading",kind:"deterministic",anchoredTo:"collision-numbered-heading",giveUpOnFailure:!0},{id:"heading-uncovered-items",kind:"deterministic",anchoredTo:"heading-uncovered-engineering-items",giveUpOnFailure:!0},{id:"inverted-date-range",kind:"deterministic",anchoredTo:"inverted-date-range",giveUpOnFailure:!0},{id:"zero-length-date-range",kind:"deterministic",anchoredTo:"cross-chapter-consistency",giveUpOnFailure:!0},{id:"truncated-sentence",kind:"deterministic",anchoredTo:"truncated-sentence",giveUpOnFailure:!0},{id:"meta-discourse",kind:"deterministic",anchoredTo:"meta-discourse-declaration",giveUpOnFailure:!0},{id:"formula-residue",kind:"deterministic",anchoredTo:"formula-residue",giveUpOnFailure:!0},{id:"self-undermining",kind:"deterministic",anchoredTo:"self-undermining-candidate",giveUpOnFailure:!0},{id:"ambiguous-either-or",kind:"deterministic",anchoredTo:"ambiguous-either-or",authorities:["supportSystem"],giveUpOnFailure:!0},{id:"tender-meta-language",kind:"deterministic",anchoredTo:"formal-style",giveUpOnFailure:!0},{id:"forbidden-configuration",kind:"deterministic",anchoredTo:"formal-text-gate",giveUpOnFailure:!0},{id:"duplicate-response-line",kind:"deterministic",anchoredTo:"duplicate-paragraph",giveUpOnFailure:!0},{id:"atlas-reference",kind:"deterministic",anchoredTo:"atlas-reference-phrase",giveUpOnFailure:!0},{id:"tertiary-h4-dedupe",kind:"deterministic",anchoredTo:"tertiary-heading",giveUpOnFailure:!0},{id:"internal-term-heading",kind:"deterministic",anchoredTo:"internal-terminology-anchor",giveUpOnFailure:!0},{id:"skeleton-fingerprint-variants",kind:"deterministic",anchoredTo:"skeleton-fingerprint",giveUpOnFailure:!0},{id:"flow-form-variants",kind:"deterministic",anchoredTo:"flow-form-repeat",giveUpOnFailure:!0},{id:"truncated-title-completion",kind:"deterministic",anchoredTo:"title-integrity",giveUpOnFailure:!0},{id:"sentence-like-heading-split",kind:"deterministic",anchoredTo:"title-integrity",giveUpOnFailure:!0},{id:"heading-duplicate-merge",kind:"deterministic",anchoredTo:"heading-duplicate",giveUpOnFailure:!0},{id:"section-renumber",kind:"deterministic",anchoredTo:"section-numbering",giveUpOnFailure:!0}],i=[{id:"numeric-arbiter-concept",kind:"deterministic",anchoredTo:"parameter-concept-conflict",giveUpOnFailure:!0},{id:"numeric-arbiter-spec",kind:"deterministic",anchoredTo:"spec-location-mismatch",giveUpOnFailure:!0}],j=[{id:"numeric-chain-node-schedule",kind:"deterministic",anchoredTo:"node-schedule-consistency",giveUpOnFailure:!0},{id:"numeric-chain-cross-section",kind:"deterministic",anchoredTo:"cross-section-numeric-conflict",giveUpOnFailure:!0},{id:"numeric-chain-support-system",kind:"deterministic",anchoredTo:"support-system-conflict",authorities:["supportSystem"],giveUpOnFailure:!0},{id:"numeric-chain-quantity-authority",kind:"deterministic",anchoredTo:"blueprint-citation-consistency",authorities:["blueprint"],giveUpOnFailure:!0},{id:"equipment-entry-timing-clean",kind:"deterministic",anchoredTo:"equipment-entry-timing",giveUpOnFailure:!0},{id:"commercial-data-body-strip",kind:"deterministic",anchoredTo:"commercial-data-in-body",giveUpOnFailure:!0},{id:"listing-jargon-strip",kind:"deterministic",anchoredTo:"major-content-governance",giveUpOnFailure:!0},{id:"work-injury-statement-fix",kind:"deterministic",anchoredTo:"local-adaptation-keyword",giveUpOnFailure:!0},{id:"boq-division-coverage-closure",kind:"deterministic",anchoredTo:"boq-division-coverage",giveUpOnFailure:!0},{id:"drawing-image-strip",kind:"deterministic",anchoredTo:"bid-composition-body-figure",giveUpOnFailure:!0},{id:"tender-clause-heading-strip",kind:"deterministic",anchoredTo:"bidder-qualification-section",alsoAnchoredTo:["instruction-like-heading"],giveUpOnFailure:!0},{id:"formal-source-phrase-clean",kind:"deterministic",anchoredTo:"source-enumeration",giveUpOnFailure:!0},{id:"toc-consistency-rebuild",kind:"deterministic",anchoredTo:"toc-consistency",giveUpOnFailure:!0},{id:"prompt-document-rules-apply",kind:"deterministic",anchoredTo:"prompt-document-rule",giveUpOnFailure:!0},{id:"workflow-phrase-clean",kind:"deterministic",anchoredTo:"auto-spec-validation",giveUpOnFailure:!0},{id:"contamination-candidate-sanitize",kind:"deterministic",anchoredTo:"project-contamination",giveUpOnFailure:!0},{id:"preliminary-action-timing-clean",kind:"deterministic",anchoredTo:"preliminary-action-timing",authorities:["blueprint"],giveUpOnFailure:!0},{id:"process-spec-conflict-fix",kind:"deterministic",anchoredTo:"process-spec-conflict",giveUpOnFailure:!0}],k=[{id:"near-duplicate-section-merge",kind:"deterministic",anchoredTo:"section-count-overflow",giveUpOnFailure:!0},{id:"empty-section-strip",kind:"deterministic",anchoredTo:"section-content-integrity",giveUpOnFailure:!0},{id:"duplicate-theme-merge",kind:"deterministic",anchoredTo:"min-chapter-section",giveUpOnFailure:!0}],l=["source-enumeration","internal-terminology-anchor","fabricated-start-date","repeated-word","writer-missing-section","meta-discourse-declaration","formula-residue","finish-thickness","formal-placeholder","truncated-sentence"],m=[{id:"fact-landing",kind:"llm-patch",anchoredTo:"fact-coverage",patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"table-repair",kind:"llm-patch",anchoredTo:"table-quality",patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"table-execution-repair",kind:"llm-patch",anchoredTo:"bid-composition-body-table",patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"templating-repair",kind:"llm-patch",anchoredTo:"templating-filler",alsoAnchoredTo:["sentence-pattern-repeat"],patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"workpackage-skeleton-repair",kind:"llm-patch",anchoredTo:"workpackage-skeleton",patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"planned-section-repair",kind:"llm-patch",anchoredTo:"planned-section-completeness",alsoAnchoredTo:["writer-missing-section"],patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"global-consistency-repair",kind:"llm-patch",anchoredTo:"global-consistency-review",alsoAnchoredTo:["foundation-form-residue","excavation-depth-lock"],patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"cross-project-value-copy-repair",kind:"llm-patch",anchoredTo:"cross-project-value-copy",authorities:["blueprint"],patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"requirement-response-repair",kind:"llm-patch",anchoredTo:"requirements-coverage",patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"numeric-verification",kind:"llm-patch",anchoredTo:"authority-audit-gap",patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"quotation-balance-repair",kind:"llm-patch",anchoredTo:"punctuation-artifact",patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"content-depth-repair",kind:"llm-patch",anchoredTo:"critical-section-depth",alsoAnchoredTo:["emergency-section-depth","construction-org-major-content","construction-org-division-section","precise-fact-usage","parameter-obligation-usage","overview-recap","professional-score","boq-placement","drawing-reference"],patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"control-loop-repair",kind:"llm-patch",anchoredTo:"construction-org-control-loop",patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"professional-chain-repair",kind:"llm-patch",anchoredTo:"construction-org-professional-chain",patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"basis-regulations-repair",kind:"llm-patch",anchoredTo:"basis-regulations-coverage",authorities:["blueprint"],patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"basis-regulations-cross-repair",kind:"llm-patch",anchoredTo:"basis-regulations-cross",patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"dangerous-applicability-repair",kind:"llm-patch",anchoredTo:"dangerous-applicability",patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"auto-spec-gate-repair",kind:"llm-patch",anchoredTo:"planned-auto-spec-gate",patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"length-compression-repair",kind:"llm-patch",anchoredTo:"document-budget",patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"table-caption-repair",kind:"llm-patch",anchoredTo:"table-caption",patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"table-arithmetic-repair",kind:"llm-patch",anchoredTo:"table-arithmetic-consistency",patchGuard:{detectors:[...l]},giveUpOnFailure:!0}],n=["fact-landing-round","table-repair-round","semantic-choice-conflict","deterministic-stage5","formal-source-clean","planned-section-final","commercial-strip","table-deterministic-repair","numeric-verification","requirement-response-repair","requirement-verification","content-depth-repair","control-loop-repair","professional-chain-repair","post-review-surface","terminology-strip","regulation-number-typo","quotation-balance-repair","basis-regulations-repair","basis-regulations-cross-repair","dangerous-applicability-repair","auto-spec-gate-repair","toc-consistency","length-compression-repair","fact-distribution-round","table-caption-repair","table-arithmetic-repair","empty-section-sweep","section-alignment-sweep","templating-sweep","duplicate-theme-merge","delivery-structure-closure","sentence-pattern-sweep","duplicate-sentence-collapse","templating-tail-replay"],o=new Set;function p(a,b){return o.add(a),b()}async function q(a,b){o.add(a);try{return await b()}catch(c){let b=c instanceof Error?c.message:String(c);return console.error(`[gen] detector degraded: ${a} failed, fallback to warning issue:`,c),[{level:"warning",severity:"warning",category:"format",owner:"system",repairability:"manual_review",message:`交付前检测器「${a}」执行失败,已降级为待复核:${b}`,suggestion:"此为检测器基础设施异常,非正文内容缺陷;其余交付前检查已照常完成。可稍后重新生成复核,或人工复核该检测维度。"}]}}let r=[{id:"spec-gate-rules",scope:"full-document",category:"structure",fixerDisposition:"manual",fixerDispositionReason:"配置门禁容器(事实/章节/表格/图片/页数/文本多族混合,规则随模板与提示词动态生成),无单一可锚定修复目标"},{id:"auto-spec-validation",scope:"full-document",category:"structure",fixerDisposition:"fixed",fixerDispositionReason:"仅唯一阻断族(后台流程话术)由 WORKFLOW_PHRASE_RE 清洗覆盖;后台优化建议/基础事实候选/材料未提供 3 词未入清洗表"},{id:"fact-consistency",scope:"full-document",category:"fact_consistency",fixerDisposition:"manual",fixerDispositionReason:"多值冲突源于绑定材料组内同名不同值,只能由用户确认绑定范围/资料侧裁决,正文改写不可能消除"},{id:"project-contamination",scope:"full-document",category:"scope",fixerDisposition:"fixed",fixerDispositionReason:"对象名污染分支由 sanitizeContaminationCandidates 覆盖;文档编号分支(documentContaminationService.ts:18)无修复器"},{id:"project-basic-placeholder",scope:"full-document",category:"format",fixerDisposition:"manual",fixerDispositionReason:"同源专用修复器 repairKnownProjectBasicPlaceholders 已按「删除无用代码」口径移除(全仓零调用、注册表看不见);当前仅表内占位被 canonical 事实替代,表外正文占位无覆盖"},{id:"standard-final",scope:"full-document",category:"structure",fixerDisposition:"exempt",fixerDispositionReason:"standard-final 组整组重跑的结果容器登记,不产出自身 issue;组内子检测器各自锚定即可"},{id:"fact-coverage",scope:"full-document",category:"evidence_coverage",fixerDisposition:"fixed",fixerDispositionReason:"stageFactLanding 与检测同源同池(uncoveredImportantFacts + 同一事实池),接线 documentPipeline.ts:74"},{id:"page-target",scope:"full-document",category:"structure",fixerDisposition:"exempt",fixerDispositionReason:"页数为估算度量信号(永远 warning 不阻断),无独立可修缺陷;超幅族由字数口径的 length-compression-repair 轮收敛"},{id:"document-budget",scope:"full-document",category:"structure"},{id:"formal-text-gate",scope:"full-document",category:"format"},{id:"heading-uncovered-engineering-items",scope:"full-document",category:"structure"},{id:"writer-missing-section",scope:"full-document",category:"structure",deterministicSafe:!0,fixerDisposition:"fixed",fixerDispositionReason:"由 planned-section-repair 轮按 reason=empty 重写清除;planned=false 的小节不入选"},{id:"critical-section-depth",scope:"chapter",category:"structure"},{id:"critical-section-fact-density",scope:"chapter",category:"evidence_coverage",fixerDisposition:"manual",fixerDispositionReason:"须内容补写,但 issue 无 provenance,按 provenance 过滤的补写轮消费不到(接线 provenance 后可改判 fixed)"},{id:"chapter-fact-density",scope:"chapter",category:"evidence_coverage",fixerDisposition:"exempt",fixerDispositionReason:"质量报告阶段被降级为 info(消息尾句命中 FLOW_DIAGNOSTIC_ISSUE_RE)不阻断;其修复手段是写作期块级重写重试"},{id:"construction-org-professional-audit",scope:"chapter",category:"professional_chain",fixerDisposition:"manual",fixerDispositionReason:"聚合 issue 无 category/provenance 无法被锚定消费,且 5 通道中 3 通道(参数密度/工作包要素/表格空字段)无修复器"},{id:"toc-consistency",scope:"full-document",category:"structure",deterministicSafe:!0,fixerDisposition:"fixed",fixerDispositionReason:"fixTocFromBody 按正文实际结构重建目录,检测定位=修复定位,已接线三处"},{id:"section-numbering",scope:"full-document",category:"structure",deterministicSafe:!0},{id:"section-count-overflow",scope:"chapter",category:"structure"},{id:"heading-duplicate",scope:"full-document",category:"structure",deterministicSafe:!0},{id:"structure-integrity",scope:"full-document",category:"structure",deterministicSafe:!0},{id:"templated-label",scope:"full-document",category:"structure",deterministicSafe:!0},{id:"title-integrity",scope:"full-document",category:"structure"},{id:"evaluation-criteria-coverage",scope:"full-document",category:"evidence_coverage",fixerDisposition:"manual",fixerDispositionReason:"正文核心词缺位须内容补写且无修复轮消费;上游只有预防性补挂(constructionBidStructure.ts:445)"},{id:"requirements-coverage",scope:"full-document",category:"evidence_coverage",fixerDisposition:"fixed",fixerDispositionReason:"requirement-response-repair 轮按 provenance 定向补写(requirementResponseRepair.ts:51)"},{id:"fabricated-start-date",scope:"full-document",category:"fact_consistency",deterministicSafe:!0,fixerDisposition:"manual",fixerDispositionReason:"需语义判断该日期是编造还是合法的招标/法规成文日期,确定性删除必误伤;仅 patchGuard 预防式预检,无存量修复"},{id:"field-value-mismatch",scope:"full-document",category:"fact_consistency",deterministicSafe:!0,fixerDisposition:"manual",fixerDispositionReason:"无实现;权威值在 factsModel 可取属可确定性实现但未实现,现只能转人工"},{id:"area-arithmetic",scope:"full-document",category:"fact_consistency",deterministicSafe:!0,fixerDisposition:"manual",fixerDispositionReason:"地上/地下/单体哪个是错值须资料裁决;同族 scale 修复器显式声明对该三项不做确定性替换"},{id:"resource-consistency",scope:"full-document",category:"fact_consistency",authorities:["laborPeak"]},{id:"node-schedule-consistency",scope:"full-document",category:"fact_consistency",fixerDisposition:"fixed",fixerDispositionReason:"fixNodeScheduleConflicts(fixers.ts:1010),挂 applyNumericConsistencyDeterministicFixes steps"},{id:"cross-section-numeric-conflict",scope:"full-document",category:"fact_consistency",fixerDisposition:"fixed",fixerDispositionReason:"fixCrossSectionNumericConflicts(fixers.ts:1195),同链 steps"},{id:"fact-reconciliation",scope:"full-document",category:"fact_consistency",authorities:["blueprint"]},{id:"greening-maintenance-mismatch",scope:"full-document",category:"fact_consistency",authorities:["greeningMaintenance"]},{id:"street-light-count-mismatch",scope:"full-document",category:"fact_consistency",fixerDisposition:"manual",fixerDispositionReason:"正文常为分型号明细而清单只锁总数,确定性替换会写坏;同族 greening-maintenance 有修复器,此其一无"},{id:"spec-location-mismatch",scope:"full-document",category:"fact_consistency"},{id:"blueprint-citation-consistency",scope:"full-document",category:"fact_consistency",authorities:["blueprint"],fixerDisposition:"fixed",fixerDispositionReason:"fixQuantityAuthorityConflicts(fixers.ts:1304)经 quantityAnchors 直连,含链尾重放"},{id:"cross-project-value-copy",scope:"full-document",category:"fact_consistency",authorities:["blueprint"],fixerDisposition:"fixed",fixerDispositionReason:"global-consistency-repair 轮消费(globalQualityGates.ts:1398);无专用确定性修复器"},{id:"phase-labor-mixing",scope:"full-document",category:"fact_consistency",authorities:["blueprint"]},{id:"equipment-batch-conflict",scope:"full-document",category:"fact_consistency",authorities:["blueprint"]},{id:"preliminary-action-timing",scope:"full-document",category:"fact_consistency",authorities:["blueprint"],fixerDisposition:"fixed",fixerDispositionReason:"fixPreliminaryActionTimingDeterministically 与检测共用 scanPreliminaryActionTimingFindings 同源单扫描,接线 postReviewSurface.ts:274"},{id:"foundation-form-residue",scope:"full-document",category:"fact_consistency",fixerDisposition:"fixed",fixerDispositionReason:"global-consistency-repair 轮消费(globalQualityGates.ts:1407→:1500)"},{id:"ambiguous-either-or",scope:"full-document",category:"fact_consistency",authorities:["supportSystem"]},{id:"excavation-depth-lock",scope:"full-document",category:"fact_consistency",fixerDisposition:"fixed",fixerDispositionReason:"global-consistency-repair 轮消费,另有路由特例与权威值注入(:1533/:1580)"},{id:"excavation-hazard-classification",scope:"full-document",category:"fact_consistency",fixerDisposition:"manual",fixerDispositionReason:"需按 canonical 深度补写分级结论句,当前无任何修复路径"},{id:"support-form-fact-consistency",scope:"full-document",category:"fact_consistency",authorities:["supportSystem"],fixerDisposition:"manual",fixerDispositionReason:"与 support-system-conflict 判据不同源(读 canonical.byKey.foundation_support_form),不可复用其修复器"},{id:"equipment-entry-timing",scope:"full-document",category:"fact_consistency",fixerDisposition:"fixed",fixerDispositionReason:"fixEquipmentEntryTimingDeterministically(postReviewSurface.ts:287),与检测同源单扫描"},{id:"fabricated-award",scope:"full-document",category:"fact_consistency",fixerDisposition:"manual",fixerDispositionReason:"白名单外奖项须回招标原文逐字比对并整体改写创优叙述,无确定性路径"},{id:"bidder-qualification-section",scope:"full-document",category:"scope",fixerDisposition:"fixed",fixerDispositionReason:"stripTenderClauseFragmentHeadings(markdownCleanup.ts:622)删标题;仅覆盖两条句式规则,资格词表分支未覆盖"},{id:"cross-chapter-duplicate-section",scope:"chapter",category:"structure",fixerDisposition:"manual",fixerDispositionReason:"同名小节归并需判断内容归属,确定性路径被有意排除(dedupeDuplicateSectionHeadings 仅章内)"},{id:"basic-info-schedule-field",scope:"full-document",category:"fact_consistency",fixerDisposition:"manual",fixerDispositionReason:"现有归一化的收场是「非法值被拒收→单元格变空」,属以删除通过门禁(P2-2 同口径禁止),不判 fixed"},{id:"duplicate-table",scope:"full-document",category:"table"},{id:"duplicate-paragraph",scope:"full-document",category:"structure"},{id:"paragraph-tail-repeat",scope:"full-document",category:"style",deterministicSafe:!0},{id:"collision-numbered-heading",scope:"full-document",category:"structure",deterministicSafe:!0},{id:"inverted-date-range",scope:"full-document",category:"fact_consistency",deterministicSafe:!0},{id:"resource-triad-section-hierarchy",scope:"full-document",category:"structure",fixerDisposition:"manual",fixerDispositionReason:"修复需重排章节层级/拆分小节,结构性重写且无确定性路径"},{id:"support-system-conflict",scope:"full-document",category:"fact_consistency",authorities:["supportSystem"],fixerDisposition:"fixed",fixerDispositionReason:"fixSupportSystemConflicts(fixers.ts:38),同链 steps;权威缺失时不动作,属部分覆盖"},{id:"dangerous-list-consistency",scope:"full-document",category:"fact_consistency",fixerDisposition:"manual",fixerDispositionReason:"两处清单需合并为唯一清单并统一项名与分级,属内容改写"},{id:"hazard-exclusion-contradiction",scope:"full-document",category:"fact_consistency",fixerDisposition:"manual",fixerDispositionReason:"排除声明与清单孰对取决于资料是否真达判定阈值,须资料裁决"},{id:"six-hundred-percent-coverage",scope:"full-document",category:"evidence_coverage",fixerDisposition:"manual",fixerDispositionReason:"补写型修复器已随 4.41「零确定性正文注入」架构决策删除(fixers.ts:1625),内容缺失只能由生成侧补齐"},{id:"self-undermining-candidate",scope:"full-document",category:"style"},{id:"paragraph-opening-repeat",scope:"full-document",category:"style",deterministicSafe:!0},{id:"flow-form-repeat",scope:"full-document",category:"style"},{id:"skeleton-fingerprint",scope:"full-document",category:"style"},{id:"sentence-pattern-repeat",scope:"full-document",category:"style"},{id:"repeated-word",scope:"full-document",category:"style",deterministicSafe:!0},{id:"commercial-data-in-body",scope:"full-document",category:"scope",fixerDisposition:"fixed",fixerDispositionReason:"stripCommercialDataBodyLines(postReviewSurface.ts:209),与检测同口径"},{id:"overview-recap",scope:"full-document",category:"style"},{id:"closure-phrase-density-cap",scope:"full-document",category:"style",fixerDisposition:"manual",fixerDispositionReason:"缺陷是词频密度(语义/文风改写),无修复轮按 provenance 消费;fiveElementClosureBoost 的补句池刻意避开闭环密度词"},{id:"parameter-concept-conflict",scope:"full-document",category:"fact_consistency"},{id:"internal-terminology-anchor",scope:"full-document",category:"style",deterministicSafe:!0},{id:"construction-system-coverage",scope:"chapter",category:"evidence_coverage",fixerDisposition:"manual",fixerDispositionReason:"某专业系统整章零覆盖须补写施工方案正文,属内容生成"},{id:"dangerous-applicability",scope:"full-document",category:"evidence_coverage"},{id:"innovation-tech-coverage",scope:"full-document",category:"evidence_coverage",fixerDisposition:"manual",fixerDispositionReason:"缺节场景可被补写轮间接覆盖,但「小节 <200 字的部分成稿」场景无任何路径(补写轮 alsoAnchoredTo 接上后可改判 fixed)"},{id:"instruction-like-heading",scope:"full-document",category:"structure",fixerDisposition:"fixed",fixerDispositionReason:"仅 tender-clause-heading-strip 一支(^#{3,4} 且判据为 isTenderClauseFragmentTitle);主判据 instructionTitleRe(是否涉及/按需生成/视情况/注意事项)与 H2 级碎片无任何正文修复器"},{id:"formal-heading-hierarchy",scope:"full-document",category:"structure",deterministicSafe:!0,fixerDisposition:"manual",fixerDispositionReason:"非法 H2 的现成修复器 demoteNonFormalH2 已按「删除无用代码」口径移除(全仓零调用);当前无任何生产修复路径"},{id:"formal-content-integrity",scope:"full-document",category:"format",deterministicSafe:!0,fixerDisposition:"manual",fixerDispositionReason:"截断句须补全句子内容;fixTruncatedSentenceArtifacts 修的是标点叠用且锚在另一个 id 上,非同源"},{id:"punctuation-artifact",scope:"full-document",category:"format",deterministicSafe:!0},{id:"table-quality",scope:"full-document",category:"table",deterministicSafe:!0},{id:"table-spam",scope:"full-document",category:"table",deterministicSafe:!0},{id:"basis-regulations-coverage",scope:"full-document",category:"fact_consistency",authorities:["blueprint"]},{id:"basis-regulations-cross",scope:"full-document",category:"fact_consistency"},{id:"resource-breakdown-consistency",scope:"full-document",category:"fact_consistency",authorities:["blueprint"]},{id:"section-content-integrity",scope:"chapter",category:"structure"},{id:"professional-content",scope:"chapter",category:"professional_chain",fixerDisposition:"manual",fixerDispositionReason:"缺项须补写专业内容,全仓无同源修复函数;且本 issue 无 provenance,按 provenance 过滤的修复轮消费不到,属真孤儿"},{id:"professional-score",scope:"chapter",category:"professional_chain"},{id:"generic-professional-content",scope:"chapter",category:"professional_chain",fixerDisposition:"manual",fixerDispositionReason:"判据=词面 8 词命中≥6 + bge 语义门;最近的套话修复器(isTemplatePrefixSentence + FILLER_SEMANTIC_QUERIES)判据不同源,不构成覆盖"},{id:"management-measure-number",scope:"chapter",category:"professional_chain",fixerDisposition:"manual",fixerDispositionReason:"需补责任主体/频次/台账/整改复查的语义补写,确定性路径不存在;且无 provenance,修复轮看不见"},{id:"closed-loop-density",scope:"full-document",category:"control_loop",fixerDisposition:"exempt",fixerDispositionReason:"纯度量信号:判据是闭环块密度对标 max(6,字数/1500),注释自述与评分同口径不阻断门禁;补闭环词还会撞 closure-phrase-density-cap 上限,不宜自动改"},{id:"cross-chapter-consistency",scope:"full-document",category:"fact_consistency"},{id:"process-spec-conflict",scope:"full-document",category:"fact_consistency",fixerDisposition:"fixed",fixerDispositionReason:"applyDeterministicConsistencyFixes 与检测端同判据同归属规则(collectLayerNumbers+buildSpecActionGate),已接线两条确定性链"},{id:"evidence-usage-coverage",scope:"full-document",category:"evidence_coverage",fixerDisposition:"manual",fixerDispositionReason:"缺陷是「未引用该类事实」,只能靠补写正文;fact-distribution-round 与 important-unplaced-facts 轮判据均不同源且不复检本 id"},{id:"paragraph-generic",scope:"full-document",category:"style",fixerDisposition:"manual",fixerDispositionReason:"判据=段落长度 + 10 词泛化表 + bge 具体性门;fillerParagraphIssues 用另一套 17 条词面 + 14 语义原型,同族不同判据"},{id:"construction-org-generic-language",scope:"chapter",category:"style",fixerDisposition:"manual",fixerDispositionReason:"本 gate 的词表与语义原型均与 filler 修复链不同源,且该 gate 全仓无任何消费方"},{id:"construction-org-control-loop",scope:"chapter",category:"control_loop"},{id:"construction-org-professional-chain",scope:"chapter",category:"professional_chain"},{id:"construction-org-consistency",scope:"full-document",category:"fact_consistency",fixerDisposition:"manual",fixerDispositionReason:"需按资料裁决哪个口径为真且涉及跨表改写;同族修复器(fixEquipmentBatchConflicts/fixLaborPeakConflict/resource-breakdown)判据均不同源"},{id:"construction-org-chapter-data-coverage",scope:"chapter",category:"evidence_coverage",fixerDisposition:"manual",fixerDispositionReason:"属「章内缺项目事实」的补写型缺陷,仅生成侧/人工可解"},{id:"construction-org-major-content",scope:"chapter",category:"professional_chain"},{id:"construction-org-division-section",scope:"chapter",category:"structure"},{id:"major-content-governance",scope:"full-document",category:"structure",fixerDisposition:"fixed",fixerDispositionReason:"仅清单口径词族有修复器(postReviewSurface.ts:313);表格承载正文族无,仍走终门禁"},{id:"construction-org-bonus-module",scope:"chapter",category:"professional_chain",fixerDisposition:"exempt",fixerDispositionReason:"加分项建议而非缺陷(代码自述为避免污染缺陷计分,只产出 info 级「高分模块」建议)"},{id:"chapter-dependency",scope:"chapter",category:"professional_chain",fixerDisposition:"manual",fixerDispositionReason:"需在指定章补写投入调配/工艺控制/应急闭环内容,属语义补写;且无 provenance"},{id:"document-delivery-score",scope:"full-document",category:"professional_chain",fixerDisposition:"exempt",fixerDispositionReason:"纯评分汇总载体(总分 x/10 的元信息),其内部调用的三个检测器各自已有 id 与处置,本 id 不产出缺陷"},{id:"generated-fact-verification",scope:"full-document",category:"fact_consistency",fixerDisposition:"manual",fixerDispositionReason:"反查失败数值的自动消除即删除式修复(P2-2 已明令禁止),补齐权威属资料侧动作——与 numeric-traceability 同口径"},{id:"numeric-traceability",scope:"full-document",category:"evidence_coverage",fixerDisposition:"manual",fixerDispositionReason:"修复器已按 P2-2 停用(删除式修复被明令禁止);补齐权威值属资料/配置侧动作"},{id:"table-arithmetic-consistency",scope:"full-document",category:"evidence_coverage"},{id:"duplicate-basic-info",scope:"full-document",category:"structure",fixerDisposition:"fixed",fixerDispositionReason:"fixDuplicateBasicInfoTables 覆盖重复表族;「表前重复逐项叙述」族未覆盖(已扩展锚定到该修复器)"},{id:"formal-style",scope:"full-document",category:"style"},{id:"tertiary-heading",scope:"full-document",category:"structure",deterministicSafe:!0},{id:"min-chapter-section",scope:"chapter",category:"structure",fixerDisposition:"fixed",fixerDispositionReason:"mergeDuplicateThematicSections 与检测共用桶键 classifyThematicSectionKey,接线 duplicate-theme-merge 轮;精确同名小节族另由 heading-duplicate-merge 覆盖"},{id:"precise-fact-usage",scope:"full-document",category:"fact_consistency"},{id:"parameter-obligation-usage",scope:"full-document",category:"fact_consistency"},{id:"boq-placement",scope:"full-document",category:"evidence_coverage"},{id:"stage-phrasing",scope:"full-document",category:"fact_consistency",fixerDisposition:"manual",fixerDispositionReason:"阶段划分口径统一属语义改写,且该 issue 无 provenance,修复轮按 provenance 过滤消费不到"},{id:"emergency-section-depth",scope:"full-document",category:"structure"},{id:"boq-row-trace",scope:"full-document",category:"evidence_coverage",fixerDisposition:"exempt",fixerDispositionReason:"只产 warning,既不断阻断也不进人工清单(清单由 blockingIssues 构建);同轴真缺口另有 blocker 通道 boq-placement"},{id:"drawing-reference",scope:"full-document",category:"evidence_coverage"},{id:"web-evidence-leakage",scope:"full-document",category:"scope",fixerDisposition:"exempt",fixerDispositionReason:"warning 级度量信号不阻断、不进人工清单,且全仓不存在该词族的删除/改写函数"},{id:"formal-placeholder",scope:"full-document",category:"format",deterministicSafe:!0},{id:"prompt-example-leak",scope:"full-document",category:"format",fixerDisposition:"manual",fixerDispositionReason:"「疑似样例」删除必误伤(样例块可能撞合法正文),无实现且无消费轮"},{id:"degenerate-content",scope:"chapter",category:"style",fixerDisposition:"manual",fixerDispositionReason:"唯一可能消费它的章级重扫入口 lightweightChapterIssues 已按「删除无用代码」口径移除(全仓零调用);退化输出的修复等同重新生成小节"},{id:"planned-auto-spec-gate",scope:"full-document",category:"structure"},{id:"bid-composition-body-table",scope:"full-document",category:"structure",fixerDisposition:"fixed",fixerDispositionReason:"dismantleBodyTables 同判据 LLM 拆表改写;finalize 侧只重跑禁表分支(章级授权口径未覆盖)"},{id:"bid-composition-body-figure",scope:"full-document",category:"structure",fixerDisposition:"fixed",fixerDispositionReason:"removeUnwantedDrawingImages(markdownComposer.ts:1905)与检测共用 FIGURE_PLACEHOLDER_RE"},{id:"identity-marks-forbidden",scope:"full-document",category:"format",fixerDisposition:"manual",fixerDispositionReason:"需删/改写业绩获奖证书类敏感句,可自动化但未实现;当前只有写作期与修复提示词约束"},{id:"planned-structure",scope:"full-document",category:"structure"},{id:"table-caption",scope:"full-document",category:"format"},{id:"prompt-document-rule",scope:"full-document",category:"format",fixerDisposition:"fixed",fixerDispositionReason:"applyPromptDocumentRules 覆盖残留封面/目录/缺必需表/禁止词行;指令型标题、缺指定一级章节、缺关键词、字数不足族无实现"},{id:"local-adaptation-keyword",scope:"full-document",category:"evidence_coverage",fixerDisposition:"fixed",fixerDispositionReason:"仅 blocker 通道(工伤保险缺失)有修复器(postReviewSurface.ts:301);另两条属度量/增强项,不阻断"},{id:"boq-division-coverage",scope:"full-document",category:"evidence_coverage",fixerDisposition:"fixed",fixerDispositionReason:"enforceBoqDivisionCoverageInMethodChapters(postReviewSurface.ts:400)链尾确定性补写"},{id:"authority-audit-gap",scope:"full-document",category:"fact_consistency",fixerDisposition:"fixed",fixerDispositionReason:"numeric-verification 轮收敛(numericVerification.ts:131)。覆盖已被削弱:其确定性兜底 demoteUnsourcedNumericTokens 已按 P2-2 停用,只剩 LLM 一条路"},{id:"templating-filler",scope:"full-document",category:"style"},{id:"workpackage-skeleton",scope:"chapter",category:"structure"},{id:"planned-section-completeness",scope:"chapter",category:"structure"},{id:"global-consistency-review",scope:"full-document",category:"fact_consistency"},{id:"source-enumeration",scope:"full-document",category:"style",deterministicSafe:!0,fixerDisposition:"fixed",fixerDispositionReason:"cleanFormalSourcePhrases(deterministicStage5.ts:161)与检测共用同一词表;该 id 从未经 det() 登记,属漏登记"},{id:"meta-discourse-declaration",scope:"full-document",category:"style",deterministicSafe:!0},{id:"finish-thickness",scope:"full-document",category:"fact_consistency",deterministicSafe:!0},{id:"formula-residue",scope:"full-document",category:"format",deterministicSafe:!0},{id:"truncated-sentence",scope:"full-document",category:"format",deterministicSafe:!0},{id:"atlas-reference-phrase",scope:"full-document",category:"format",deterministicSafe:!0},{id:"block-structure-contract",scope:"chapter",category:"structure",fixerDisposition:"exempt",fixerDispositionReason:"写作期块级执行器门,返回计数不产出 ValidationIssue,无对象可被 FixerEntry 锚定(重写重试即其修复手段)"},{id:"block-fact-density",scope:"chapter",category:"evidence_coverage",fixerDisposition:"exempt",fixerDispositionReason:"写作期块级执行器门:不产出 ValidationIssue 只返回 BlockDensityAssessment,首轮阻断重写即其修复手段"},{id:"block-templating",scope:"chapter",category:"style",fixerDisposition:"exempt",fixerDispositionReason:"写作期块级执行器门:不产出 ValidationIssue 只返回 BlockTemplatingVerdict;终检侧由 templating-repair 轮承载"},{id:"block-attribution-quantification",scope:"chapter",category:"professional_chain",fixerDisposition:"exempt",fixerDispositionReason:"写作期块级执行器门:不产出 ValidationIssue 只返回 AttributionQuantificationVerdict"},{id:"block-numeric-reconciliation",scope:"chapter",category:"fact_consistency",fixerDisposition:"exempt",fixerDispositionReason:"写作期块级执行器门:不产出 ValidationIssue 只返回 NumericReconciliation,阻断重写即修复手段"},{id:"block-format-constraints",scope:"chapter",category:"format",fixerDisposition:"exempt",fixerDispositionReason:"写作期块级执行器门:不产出 ValidationIssue 只返回命中行;终检侧同词表门为 formal-text-gate"}];function s(a){return r.find(b=>b.id===a)}function t(a,b){let c=new Set(a??[]),d=new Set(b??[]);if(c.size!==d.size)return!1;for(let a of c)if(!d.has(a))return!1;return!0}function u(){let a=[],b=[...h,...i,...k,...j,...m];for(let c of b){let b=s(c.anchoredTo);if(!b){a.push(`修复器 ${c.id} 锚定检测器 ${c.anchoredTo} 未在注册表声明(检测定位=修复定位强制同源)`);continue}for(let d of(t(c.authorities,b.authorities)||a.push(`修复器 ${c.id}(authorities=${JSON.stringify(c.authorities??[])})与锚定检测器 ${c.anchoredTo}(authorities=${JSON.stringify(b.authorities??[])})权威口径不一致`),c.alsoAnchoredTo??[])){let b=s(d);b?t(c.authorities,b.authorities)||a.push(`修复器 ${c.id}(authorities=${JSON.stringify(c.authorities??[])})与扩展锚定检测器 ${d}(authorities=${JSON.stringify(b.authorities??[])})权威口径不一致`):a.push(`修复器 ${c.id} 扩展锚定检测器 ${d} 未在注册表声明(检测定位=修复定位强制同源)`)}if("llm-patch"===c.kind&&!c.patchGuard){a.push(`LLM patch 修复器 ${c.id} 未声明 patchGuard(修复过程会重新引入已知坏内容,必须预检)`);continue}for(let b of c.patchGuard?.detectors??[]){let d=s(b);d?d.deterministicSafe||a.push(`修复器 ${c.id} patchGuard 引用检测器 ${b} 未标记 deterministicSafe(patchGuard 只收录零误伤确定性检测器)`):a.push(`修复器 ${c.id} patchGuard 引用检测器 ${b} 未在注册表声明`)}}for(let[b,c]of h.entries())h.slice(0,b).some(a=>a.id===c.id)&&a.push(`确定性修复器锚定声明重复:${c.id}`);let c=new Set(d.aW.map(a=>a.key));for(let b of c)h.some(a=>a.id===b)||a.push(`确定性修复器 ${b} 已接入 SURFACE_FIX_STEPS 但未在 DETERMINISTIC_FIXER_ANCHORS 声明锚定检测器`);for(let b of h)c.has(b.id)||a.push(`确定性修复器锚定声明 ${b.id} 无对应 SURFACE_FIX_STEPS 键(声明多余或键已改名)`);for(let[b,c]of i.entries())i.slice(0,b).some(a=>a.id===c.id)&&a.push(`数值裁决器修复器声明重复:${c.id}`);for(let[b,c]of k.entries())k.slice(0,b).some(a=>a.id===c.id)&&a.push(`章草稿级修复器声明重复:${c.id}`);for(let[b,c]of j.entries())j.slice(0,b).some(a=>a.id===c.id)&&a.push(`链内确定性修复器声明重复:${c.id}`);let l=new Set([...h,...i,...k,...m].map(a=>a.id));for(let b of j)l.has(b.id)&&a.push(`链内确定性修复器 ${b.id} 与其它声明表重名(FixerEntry.id 须全局唯一,否则按 id 追溯修复器产生歧义)`);for(let b of r)b.category&&g.has(b.category)||a.push(`检测器 ${b.id} 声明了非法 category(当前=${b.category||"缺失"};合法值:${[...g].join("、")})`);if(a.push(...function(a){let b=[],c=new Set;for(let b of a.fixers)for(let a of(c.add(b.anchoredTo),b.alsoAnchoredTo??[]))c.add(a);let d=new Set(a.pending);for(let c of(d.size!==a.pending.length&&b.push("PENDING_FIXER_DISPOSITION 存在重复 id(欠账清单须唯一)"),d))a.detectors.some(a=>a.id===c)||b.push(`PENDING_FIXER_DISPOSITION 声明了未登记的检测器 ${c}(已改名或已删除,请同步移出欠账清单)`);for(let f of a.detectors){let a=c.has(f.id),g=f.fixerDisposition;if(d.has(f.id)){g?b.push(`检测器 ${f.id} 已完成处置声明(${g})却仍在 PENDING_FIXER_DISPOSITION 中——请从欠账清单移出`):a&&b.push(`检测器 ${f.id} 已有修复器锚定却仍在 PENDING_FIXER_DISPOSITION 中——请从欠账清单移出`);continue}if(!g){a?f.fixerDispositionReason&&b.push(`检测器 ${f.id} 写了 fixerDispositionReason 却未声明 fixerDisposition(说明须挂在明确处置上)`):b.push(`检测器 ${f.id} 既无修复器锚定、也未声明 fixerDisposition(孤儿必须显式 'exempt' 或 'manual' 并说明理由,不得沉默)`);continue}if(!e.has(g)){b.push(`检测器 ${f.id} 声明了非法 fixerDisposition(当前=${g};合法值:${[...e].join("、")})`);continue}"fixed"!==g||a||b.push(`检测器 ${f.id} 声明 fixerDisposition='fixed' 但无任何 FixerEntry 锚定它(声明与事实不符)`),"fixed"!==g&&(a&&b.push(`检测器 ${f.id} 声明 fixerDisposition='${g}' 但已有修复器锚定——声明与事实不符(应改为 'fixed' 或移除多余锚定)`),f.fixerDispositionReason?.trim()||b.push(`检测器 ${f.id} 声明 fixerDisposition='${g}' 但未给出理由(exempt/manual 必须书面说明为何不需要修复器)`))}return b}({detectors:r,fixers:b,pending:f})),a.length>0)throw Error(`检测器/修复器注册表一致性校验失败(${a.length} 项):
241
+ ${b.content}`;return Math.min(1.8,.16*[...new Set([a.title,...a.sections||[],...a.requiredFacts].flatMap(a=>a.split(/[\s、,,。;;::()()《》【】-]+/u)).map(a=>a.trim()).filter(a=>a.length>=2).slice(0,36))].filter(a=>c.includes(a)).length)}function m(a){return`${a.sectionTitle||""}${a.content}`.slice(0,600)}function n(a,b,c,d){let f=b.map(b=>{let d=(0,e.A1)(b,a.requiredFacts)*k(a,b.processingType)+l(a,b),f=c.semantic?c.semantic.similarity(c.semantic.queryText,m(b)):0;return{...b,score:.5*d+10*f}});return(0,e.QR)(f,c,d)}function o(a,b,c){if(c<=0||b.length<=c)return b;let d=b.map(b=>({item:b,lexical:(0,e.A1)(b,a.requiredFacts)*k(a,b.processingType)+l(a,b)}));return d.sort((a,b)=>b.lexical-a.lexical),d.slice(0,c).map(a=>a.item)}function p(a,b,c){let d=(a.sections||[]).slice(0,10).join(" "),e=a.requiredFacts.slice(0,10).join(" "),f=a.title.split(/[、,,与和及]+/u).map(a=>a.trim()).filter(a=>a.length>=4);return[...new Set([...f.length>=2?[`${a.title} ${d} ${e}`.trim(),...f.map(b=>`${b} ${(a.sections||[]).slice(0,6).join(" ")}`.trim()),`${f.slice(0,3).join(" ")} ${e}`.trim()]:[`${a.title} ${d} ${e}`.trim()],...b,...c].filter(Boolean))]}async function q(a){if((0,g.Te)(a.signal),0===a.scopedFilePaths.length)return[];let b=`${a.chapter.title} ${a.sectionTitle}`.trim(),c=await a.manager.search(a.projectRoot,b,{scope:"project",filters:{filePaths:a.scopedFilePaths,materialRoots:a.scopedMaterialRoots??(0,d.materialRootsOfFiles)(a.scopedFilePaths)},limit:20,weights:j(b),generationMode:!0});return(0,e.QR)(c.results.map(b=>({chapterId:a.chapter.id,filePath:b.filePath,score:b.score+1.2,content:b.content,roleId:a.fileRoleByPath.get(b.filePath),processingType:a.fileProcessingByPath.get(b.filePath),sectionTitle:b.sectionTitle,source:"section-evidence"})),{preservePinned:!0})}},65667:(a,b,c)=>{c.d(b,{AK:()=>s,Rh:()=>u,Ti:()=>y,_H:()=>x,j4:()=>r,re:()=>w,tx:()=>t});let d=/^(?:为|达|共|约|计|配置|共计|总计|合计)$/u,e=/作业人员|施工人员|人员配置|班组|施工组|每村|分组|编组|编入|队伍/u,f=/^(?:为|达|共|约|计|配置|共计|总计|合计|投入|配备|启用)$/u,g=/^[))、::,,\s]{0,2}(?:混凝土|砼)?\s*(\d+(?:\.\d+)?)\s*(m3|m³|立方米|方|m2|m²|㎡|平方米|延长米|米|m|kg|千克|公斤|t|吨|套|个|块|根|只|组|件|片|樘|扇|盏|座|台|处|项|条|副|对|株)(?![A-Za-z0-9²³])/u,h=/^([^0-9]{0,2}?)(\d+(?:\.\d+)?)\s*人/u,i=/^([^0-9]{0,2}?)(\d+(?:\.\d+)?)\s*台/u,j=/阶段[^。;\n]{0,30}?(\d+(?:\.\d+)?)\s*人/u,k="机|吊|泵|车|夯",l=/[为配置备启投拟需计划增租赁购采设进出按据由从向对把被使等该此其每各和与及或在是将宜并可未非不另又还有部现中套余的用入要场阶段]/u,m=/^(?:[台辆部具个组米吨座])/u,n=/^(?:主力|主要|常用|配套|相关|专用|通用|各类|多种|其余|剩余|上述|前者|后者)/u,o=/(?:备用|租赁|租用)/u,p=/不使用|不采用|不配置|无需|未采用|不得使用|禁止使用/u,q=RegExp(`([\\p{Script=Han}A-Za-z0-9]{2,8}(?:${k}))$`,"u");function r(a){let b=a.replace(/\s+/gu,""),c=b;for(let a=b.length-1;a>=0;a-=1)if(l.test(b[a])){if(o.test(b.slice(0,a+1)))return;c=b.slice(a+1);break}if(!(c.length<2||m.test(c))&&!n.test(c))return c}function s(a){let b=[],c=RegExp(`([\\p{Script=Han}A-Za-z0-9]{2,8}(?:${k}))[^\\d。;;\\n|、,]{0,12}(\\d+)\\s*(?:台|套|辆)`,"gu");for(let d of a.matchAll(c)){let c=d.index??0,e=Math.max(a.lastIndexOf(",",c),a.lastIndexOf("。",c),a.lastIndexOf(";",c),a.lastIndexOf(";",c),a.lastIndexOf("\n",c),a.lastIndexOf("、",c));if(p.test(a.slice(e+1,c+d[1].length)))continue;let f=r(d[1]);if(!f)continue;let g=Number(d[2]);Number.isFinite(g)&&!(g<=0)&&b.push({name:f,raw:d[1],count:g,start:c,text:d[0]})}return b}function t(a){let b=new Set,c=RegExp(`([\\p{Script=Han}A-Za-z0-9]{2,8}(?:${k}))`,"gu");for(let d of a.matchAll(c)){let a=r(d[1]);a&&b.add(a)}return[...b]}function u(a){let b=q.exec(a);if(b)return r(b[1])}function v(a){let b=(a||"").replace(/\s+/gu,"");return b?/m[3³]|立方米|方/u.test(b)?"volume":/m[2²]|㎡|平方米/u.test(b)?"area":/m|米/u.test(b)?"length":/吨|千克|公斤|kg|^t$/u.test(b)?"mass":/套|个|块|根|只|组|件|片|樘|扇|盏|座|台|处|项|条|副|对|株/u.test(b)?"count":null:null}function w(a){if(!a)return;let b=(a.resources?.labor?.composition??[]).filter(a=>a.trade&&Number.isFinite(a.count)&&a.count>0).map(a=>({trade:a.trade,count:a.count})),c=new Map;for(let b of a.resources?.equipment??[]){if(!b.name)continue;let a=c.get(b.name);a?a.push(b):c.set(b.name,[b])}let d=[];for(let[a,b]of c)for(let c of b){let e=c.quantity&&c.quantity>0?c.quantity:Math.round(((c.min??1)+(c.max??c.min??1))/2);Number.isFinite(e)&&!(e<=0)&&d.push({name:a,spec:c.spec||"",count:e,variantCount:b.length})}let e=new Map;for(let b of a.materialsPlan??[]){if(!b.name)continue;let a=e.get(b.name);a?a.push(b):e.set(b.name,[b])}let f=[];for(let[a,b]of e)if(!(b.length<2))for(let c of b){if(!c.spec||!Number.isFinite(c.quantity)||(c.quantity??0)<=0)continue;let d=v(c.unit||"");d&&f.push({name:a,spec:c.spec,quantity:c.quantity,unit:c.unit||"",family:d,variantCount:b.length})}return{composition:b,equipment:d,materials:f}}function x(a,b){let c=[],k=new Set(b.composition.map(a=>a.trade)),l=(a,b)=>{let c=[];if(!b)return c;let d=0;for(;d<a.length;){let e=a.indexOf(b,d);if(-1===e)break;c.push(e),d=e+b.length}return c},m=(a,b)=>{let c=[];if(!b)return c;let d=0;for(;d<a.length;){let e=a.indexOf(b,d);if(-1===e)break;let f=a[e-1]||"",g=`${f}${b}`;if(/[\u4e00-\u9fa5]/u.test(f)&&[...k].some(a=>a.length>b.length&&a.includes(g))){d=e+b.length;continue}c.push(e),d=e+b.length}return c},n=function(a){let b=[],c=0;for(;c<=a.length;){let d=a.indexOf("\n",c),e=-1===d?a.length:d;if(b.push({start:c,end:e}),-1===d)break;c=d+1}let d=/^\s*(?:#|\||>)/u,e=[],f=0;for(;f<b.length;){let c=b[f],g=a.slice(c.start,c.end);if(""===g.trim()||d.test(g)){f+=1;continue}let h=f;for(;h+1<b.length;){let c=b[h+1],e=a.slice(c.start,c.end);if(""===e.trim()||d.test(e))break;h+=1}e.push({start:c.start,end:b[h].end}),f=h+1}return e}(a),o=[];for(let b of n){let c=a.slice(b.start,b.end);if(!c.includes("阶段"))continue;let e=[];for(let a of c.matchAll(RegExp(j.source,"gu")))e.push({start:b.start+(a.index??0),total:Number(a[1])});if(0!==e.length)for(let[c,f]of e.entries()){let g=f.start,i=e[c+1]?.start??b.end,j=a.slice(g,i),l=0;for(let a of k)for(let b of m(j,a)){let c=j.slice(b+a.length,b+a.length+12),e=h.exec(c);e&&(!e[1]||d.test(e[1]))&&(l+=Number(e[2]))}l>0&&l===f.total&&o.push({start:g,end:i})}}let p=a=>o.some(b=>a>=b.start&&a<b.end);for(let f of b.composition)for(let b of m(a,f.trade)){if(p(b))continue;let g=a.slice(0,b),i=Math.max(g.lastIndexOf("。"),g.lastIndexOf(";"),g.lastIndexOf(";"),g.lastIndexOf("\n"));if(e.test(g.slice(i+1)))continue;let j=a.slice(b+f.trade.length,b+f.trade.length+12),k=h.exec(j);if(!k||k[1]&&!d.test(k[1]))continue;let l=Number(k[2]);if(l===f.count)continue;let m=b+f.trade.length+k[1].length;c.push({kind:"trade",label:`工种构成 ${f.trade}`,start:m,end:m+k[2].length,actual:l,expected:f.count,message:`工种构成人数与蓝图权威不一致:${f.trade} 正文 ${l} 人,蓝图权威 ${f.count} 人`,suggestion:"工种构成表必须与蓝图工种构成唯一口径一致,各工种人数不得自行改写。"})}for(let d of b.equipment)if(1===d.variantCount)for(let b of l(a,d.name)){let e=a.slice(b+d.name.length,b+d.name.length+12),g=i.exec(e);if(!g||g[1]&&!f.test(g[1]))continue;let h=Number(g[2]);if(h===d.count)continue;let j=b+d.name.length+g[1].length;c.push({kind:"equipment",label:`机械台数 ${d.name}`,start:j,end:j+g[2].length,actual:h,expected:d.count,message:`机械台数与蓝图权威不一致:${d.name} 正文 ${h} 台,蓝图权威 ${d.count} 台`,suggestion:"机械投入计划必须与蓝图机械清单一致,台数不得自行改写。"})}else if(d.spec)for(let b of l(a,d.spec)){let e=a.lastIndexOf("\n",b)+1,f=a.indexOf("\n",b);-1===f&&(f=a.length);let g=a.slice(e,f),h=b-e,i=e+Math.max(g.lastIndexOf(",",h)+1,g.lastIndexOf("。",h)+1,g.lastIndexOf(";",h)+1);if(!a.slice(i,f).includes(d.name))continue;let j=b+d.spec.length,k=a.slice(j,j+12),l=/(\d+(?:\.\d+)?)\s*台/u.exec(k);if(!l)continue;let m=Number(l[1]);if(m===d.count)continue;let n=j+(l.index??0);c.push({kind:"equipment",label:`机械台数 ${d.name}(${d.spec})`,start:n,end:n+l[1].length,actual:m,expected:d.count,message:`机械台数与蓝图权威不一致:${d.name}(${d.spec}) 正文 ${m} 台,蓝图权威 ${d.count} 台`,suggestion:"机械投入计划必须与蓝图机械清单一致,台数不得自行改写。"})}for(let d of b.materials)for(let b of l(a,d.spec)){let e=a.lastIndexOf("\n",b)+1,f=a.indexOf("\n",b);-1===f&&(f=a.length);let h=a.slice(e,f);if(/^\s*\|?\s*(?:合计|小计|总计|累计)/u.test(h))continue;let i=b-e,j=e+Math.max(h.lastIndexOf(";",i),h.lastIndexOf(";",i),h.lastIndexOf("。",i))+1,k=h.indexOf(";",i),l=h.indexOf(";",i),m=h.indexOf("。",i),n=Math.min(-1===k?h.length:k,-1===l?h.length:l,-1===m?h.length:m);if(!a.slice(j,e+n).includes(d.name))continue;let o=b+d.spec.length,p=a.slice(o,o+16),q=g.exec(p);if(!q||v(q[2])!==d.family)continue;let r=Number(q[1]);if(r===d.quantity)continue;let s=o+q[0].indexOf(q[1]);c.push({kind:"material",label:`材料拆分 ${d.name}(${d.spec})`,start:s,end:s+q[1].length,actual:r,expected:d.quantity,message:`材料规格拆分数量与蓝图权威不一致:${d.name}(${d.spec})正文 ${r}${d.unit},蓝图权威 ${d.quantity}${d.unit}`,suggestion:"同名多规格材料的拆分数量必须与清单逐项一致,不得自行分配。"})}return c}function y(a,b){if(!b)return{markdown:a,fixedCount:0,details:[],residualCount:0};let c=x(a,b);if(0===c.length)return{markdown:a,fixedCount:0,details:[],residualCount:0};let d=[...c].sort((a,b)=>b.start-a.start),e=a,f=[],g=1/0;for(let a of d)a.end>g||(e=`${e.slice(0,a.start)}${a.expected}${e.slice(a.end)}`,f.push(a),g=a.start);let h=x(e,b);return h.length>0?{markdown:a,fixedCount:0,details:[],residualCount:h.length}:{markdown:e,fixedCount:f.length,details:f.map(a=>`${a.label} ${a.actual}→${a.expected}`),residualCount:0}}},71678:(a,b,c)=>{c.d(b,{Hf:()=>s,M8:()=>m,Xp:()=>q,a0:()=>l,dn:()=>r,hM:()=>k,mI:()=>u,xb:()=>p});var d=c(37047),e=c(41991),f=c(70208);let g=["对与评标活动有关的工作人员的纪律要求","评标委员会成员与投标人接触的限制","评标纪律与廉洁从业承诺要求","评审争议处理与投标澄清配合程序","评审结果确认与中标公示流程","评标办法与分值构成说明","异常低价评审与计算方式说明","清单计量与报价口径约定","投标文件实质性响应要求","投标保证金缴纳与退还程序","开标程序与投标文件递交截止时间","评标期间行为管控与资料闭环","预付款与进度款支付比例约定","履约担保与保证金缴纳退还约定","价格波动与合同价款调整约定","暂列金额与暂估价使用约定","税费计取与发票结算约定","违约责任与罚款赔偿条款"],h=["劳动力配置计划与高峰期人数安排","施工质量保证措施与验收标准","安全生产管理与教育培训要求","施工进度计划与关键线路安排","材料设备采购进场计划与检验要求","施工现场文明施工与环境保护管理","劳动纪律与班组作业管理制度","施工机械设备配置与维护保养计划","农民工工资支付保障与劳务实名制管理","材料采购质量证明与进场验收管理","工期承诺与进度考核奖惩管理"],i=/评标|投标|行贿|打招呼|递条子|廉洁|串标|围标|弄虚作假|干扰评标|纪律|澄清|中标|报价|清单计量|评审|保证金|开标|递交|争议|异常低价|评标基准价|预付款|进度款|担保|价格波动|材料调差|暂列金额|暂估价|计税|税金|发票|违约/u;function j(a){let b=a.sectionTitle?.trim()||"",c=(a.content||"").replace(/\s+/gu," ").slice(0,400);return b?`${b}。${c}`:c}function k(a){let b=a.sectionTitle?.trim()||a.content.replace(/\s+/gu,"").slice(0,60);return`${a.filePath}::${b}`}async function l(a,b){if(0===a.length)return{safe:[],excluded:[]};let c=a.filter(a=>i.test(j(a)));if(0===c.length)return{safe:[...a],excluded:[]};let e=c.map(j),f=await (0,d.Mv)(e,[...g],b),k=await (0,d.Mv)(e,[...h],b),l=new Set;for(let a of c){let b=j(a),c=Math.max(...g.map(a=>f(b,a))),d=Math.max(...h.map(a=>k(b,a)));c>=.6&&c>d&&l.add(a)}return{safe:a.filter(a=>!l.has(a)),excluded:[...l]}}async function m(a){return(0,e.A)({prototypes:[...g],negativePrototypes:[...h],threshold:.6,embedDocuments:a})}function n(a){return a.replace(/[\s\p{P}\p{S}]+/gu,"").toLowerCase()}let o=/^(?:我公司|本公司|我方|投标人|供应商|承包人)(?:就|对)[^,。;]{0,22}(?:均属|属实|真实有效|承担|负责|无异议|为准)$/u;function p(a){let b=a.trim().replace(/\s+/gu,"");if(!b||(0,f.mq)(b)||o.test(b))return!0;let c=n(b);if(g.some(a=>n(a)===c))return!0;let d=b.replace(/农民工工资保证金|工资保证金/gu,""),e=/评标|投标|开标|中标|评审|保证金|串标|围标|廉洁|询标|递交/u.test(d),h=/纪律|监督|争议|澄清|程序|行为|管控|限制|接触|公示|承诺|响应|办法/u.test(b);return!!(e&&h||/异常低价|评标基准价/u.test(b)||/电子保函|保函|投标保证金|履约担保|履约保证金|保证金(?:的)?(?:缴纳|退还|提交|方式)/u.test(b)&&!/农民工|工资|专用账户|实名|考勤|劳资/u.test(b)||/暂列金额|暂估价|材料调差/u.test(b)||/预付款(?:支付|比例|约定|申请|保函)|进度款(?:支付|申请|计量|约定)|履约担保/u.test(b)||/价格波动(?:调整|约定)|违约金(?:条款|约定)|计税|税金(?:计取|结算)|发票(?:开具|结算)/u.test(b))||q(b)}function q(a){let b=a.trim().replace(/\s+/gu,"");if(!b)return!1;let c=b.replace(/^\d{1,3}(?:[..]\d{1,3})*[、..]?/u,"");return!!(/^具备(?:有效|相应|满足)/u.test(c)||/^(?:须|应|需|得)?提供[^,,。;]{0,12}(?:证明|材料|文件|证件|证书|报告)/u.test(c))||!!/营业执照|资质证书|安全生产许可证|资格预审|资格审查|资质审查|财务状况|业绩证明|业绩要求|银行资信|审计报告|信用记录|信用评价|不良行为记录|联合体投标|联合体协议/u.test(b)&&!/施工|技术|方案|措施|管理|控制|验收|工艺|流程|计划|组织|进度|质量|工期|文明|绿色|环保|节能|材料|设备|机械|人员|劳务|检验|检测|试验|保证|落实|制度/u.test(b)}function r(a){let b=a.trim().replace(/\s+/gu,"");return!!b&&(!!/接受分包/u.test(b)||!!/投标人|投标方|投标企业|承包人资格|资格要求|资格审查|资格预审|资质要求|资质条件|资质等级|资格条件|财务状况|业绩要求|业绩证明|信用要求|联合体|社保/u.test(b)&&/营业执照|资质证书|安全生产许可证|级及以上资质|注册建造师|建造师注册证书|安全生产考核合格证书|职称证书|财务状况|财务报告|审计报告|银行资信|业绩证明|类似业绩|信用记录|信用评价|不良行为记录|投标保证金|履约保证金|社保|在建工程|人员组成表/u.test(b))}function s(a){let b=a.trim().replace(/\s+/gu,"");return!!b&&!!(/你方/u.test(b)&&/我方/u.test(b)||/发包人[^。;;]{0,30}?(?:审批|批准|备案|同意|许可)/u.test(b)||/^[\d((、..\s]{0,8}监理人/u.test(b)&&/(?:提交|报送|审批|延期|通知|检查|验收)/u.test(b)||/(?:特别约定|有关约定|的约定)[::]/u.test(b)||/通用(?:合同)?条款/u.test(b)||/(?:承包人|发包人|监理人)/u.test(b)&&/(本合同|报送|提交|审批|备案|更换|违约责任|撤换|拒绝|保管|验收记录|签字|颁发|教育|穿戴|定期检查|授权范围|驻场|在岗)/u.test(b))}async function t(a){let b=a.sections.filter(a=>a?.trim());if(0===b.length)return[];let c=b.filter(a=>!p(a)),e=c.filter(a=>i.test(a));if(0===e.length)return c;let f=`${a.chapterTitle} ${a.chapterPurpose||""}`.trim(),j=await (0,d.Mv)(e,[...g],a.embedDocuments),k=await (0,d.Mv)(e,f?[f]:[],a.embedDocuments),l=await (0,d.Mv)(e,[...h],a.embedDocuments),m=new Set;for(let a of e){let b=Math.max(...g.map(b=>j(a,b))),c=f?k(a,f):0,d=Math.max(...h.map(b=>l(a,b)));b>=.6&&b>c&&b>d&&m.add(a)}return c.filter(a=>!m.has(a))}async function u(a,b){return Promise.all(a.map(async a=>({...a,sections:await t({sections:a.sections||[],chapterTitle:a.title,chapterPurpose:a.purpose,embedDocuments:b})})))}},73859:(a,b,c)=>{c.d(b,{$i:()=>f,E1:()=>j,d2:()=>i,oC:()=>g,p4:()=>d,rF:()=>h});let d={id:"default_general_document",name:"通用文档",factFields:[{id:"document_identity",name:"对象名称",aliases:["项目名称","工程名称","文档名称","任务名称","招标项目名称","建设项目名称"],category:"identity",cardinality:"single",derivationPolicy:"source_only",usagePolicy:"must_use",confidencePolicy:{minForGeneration:.75,minForValidation:.85,allowPathOnly:!1},conflictPolicy:"strict"},{id:"schedule_requirement",name:"周期要求",aliases:["计划工期","工期","周期要求","进度节点要求","开工日期","竣工日期"],category:"schedule",cardinality:"single",derivationPolicy:"source_only",usagePolicy:"must_use",confidencePolicy:{minForGeneration:.7,minForValidation:.8,allowPathOnly:!1},conflictPolicy:"strict"},{id:"quality_requirement",name:"质量要求",aliases:["质量要求","质量标准","验收要求","评价标准"],category:"quality",cardinality:"multiple",derivationPolicy:"source_only",usagePolicy:"use_if_relevant",confidencePolicy:{minForGeneration:.65,minForValidation:.75,allowPathOnly:!1},conflictPolicy:"allow_multiple"},{id:"safety_requirement",name:"安全合规要求",aliases:["安全要求","安全合规要求","风险控制要求","合规要求"],category:"safety",cardinality:"multiple",derivationPolicy:"source_only",usagePolicy:"use_if_relevant",confidencePolicy:{minForGeneration:.65,minForValidation:.75,allowPathOnly:!1},conflictPolicy:"allow_multiple"},{id:"technical_parameter",name:"技术参数",aliases:["技术参数","参数规格范围","规格","型号","尺寸","标准编号","材料设备"],category:"technical",cardinality:"multiple",derivationPolicy:"source_only",usagePolicy:"must_use",confidencePolicy:{minForGeneration:.7,minForValidation:.8,allowPathOnly:!1},conflictPolicy:"allow_multiple"},{id:"resource_plan",name:"资源配置",aliases:["劳动力","机械","检测设备","应急物资","资源配置","人员配置"],category:"resource",cardinality:"multiple",derivationPolicy:"plan_inferable",usagePolicy:"use_if_relevant",confidencePolicy:{minForGeneration:.45,minForValidation:.55,allowPathOnly:!1},conflictPolicy:"allow_multiple"},{id:"commercial_data",name:"商务数据",aliases:["报价","单价","合价","综合单价","预留金","税率","金额","利润"],category:"commercial",cardinality:"multiple",derivationPolicy:"forbidden",usagePolicy:"do_not_use",confidencePolicy:{minForGeneration:1,minForValidation:1,allowPathOnly:!1},conflictPolicy:"ignore"},{id:"rule_requirement",name:"规则要求",aliases:["规则要求","变更说明","实施范围","对象范围","结构化数据范围"],category:"compliance",cardinality:"multiple",derivationPolicy:"source_only",usagePolicy:"use_if_relevant",confidencePolicy:{minForGeneration:.6,minForValidation:.7,allowPathOnly:!1},conflictPolicy:"allow_multiple"}],forbiddenValuePatterns:[/投标报价|报价明细|单价|合价|综合单价|预留金|暂列金额|税率|增值税|利润|结算/u],diagnosticValuePatterns:[/OCR|识别错误|乱码|无法确认|疑似|不确定|绑定片段|兜底|知识库|提示词|后台|文件路径|PDF|DWG|Excel/u,/^#+\s*/u,/^见(?:招标|投标人|前附|补疑|图纸|清单|文件|资料|公告|须知)/u],lowConfidenceValuePatterns:[/无法确认|疑似|不确定|需复核|文字模糊|语义断裂|识别错误|乱码/u]},e={...d,id:"construction_organization_design",name:"施工组织设计"};function f(a,b=""){let c=`${a?.id||""} ${a?.name||""} ${a?.category||""} ${a?.description||""} ${a?.outputTitle||""} ${b}`;return/施工组织设计|施工方案|危大工程|人、材、机|安全文明施工/u.test(c)?e:d}function g(a,b){if(b)return a.factFields.find(a=>a.name===b||a.aliases.some(a=>b.includes(a)||a.includes(b)))}function h(a,b){return a.forbiddenValuePatterns.some(a=>a.test(b))}function i(a,b){return a.diagnosticValuePatterns.some(a=>a.test(b))}function j(a,b){return a.lowConfidenceValuePatterns.some(a=>a.test(b))}},75251:(a,b,c)=>{function d(a){return a.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&")}function e(a){let b=Number.parseFloat(a.replace(/[,,\s]/gu,""));return Number.isFinite(b)?b:void 0}function f(a,b){return Math.abs(a-b)<=.01+1e-6*Math.max(Math.abs(a),Math.abs(b))}function g(a,b){return!!f(a,b)||Number.isInteger(a)&&(Math.trunc(b)===a||Math.round(b)===a)}function h(a){return a.replace(/\s+/gu,"").toLowerCase()}function i(a){let b=(a||"").trim().toLowerCase();return({米:"m",m:"m",公里:"km",km:"km",千米:"km",平方米:"m2","㎡":"m2","m\xb2":"m2",m2:"m2",平方:"m2",立方米:"m3","m\xb3":"m3",m3:"m3",方:"m3",吨:"t",t:"t",千克:"kg",kg:"kg"})[b]??b}c.d(b,{As:()=>j,C4:()=>A,NN:()=>t,az:()=>I,e:()=>F,uv:()=>s});let j=/(?:每|厚度|宽度|高度|深度|长度|直径|间距|净距|坡度|标高|偏差|误差|系数|等级|龄期|温度|含水率|压实度|密度|功率|电压|照度|色温|耐火|强度|抗渗|配合比|搭接|错缝|含水|埋深|覆土|预留|预埋|伸缩|沉降|变形|垂直度|平整度|倾角|坡度|模数|螺距|壁厚|净空|层高|埋设|位置|距离|半径|周长|坡度)/u;function k(a){let b=[],c=[],d=new Map,g=new Map,i=a.billFactLock;if(i)for(let a of i.entries){let f=Number.isFinite(a.quantity)?a.quantity:void 0;for(let g of(void 0!==f&&(b.push({name:(a.name||"").trim(),value:f,unit:(a.unit||"").trim(),description:a.description||"",source:"bill"}),c.push(f)),a.specQuantityPairs||[])){let b=(g.spec||"").replace(/\s+/gu,"").toLowerCase(),f=/^([\d,,]+(?:\.\d+)?)\s*(.*)$/u.exec((g.quantity||"").trim()),h=f?e(f[1]):void 0;if(!b||void 0===h)continue;let i=d.get(b)||[];i.push({value:h,unit:(f?.[2]||"").trim(),entryName:a.name,spec:(g.spec||"").trim()}),d.set(b,i),c.push(h)}}for(let[d,e]of Object.entries(a.blueprintData?.quantities??{})){if("number"!=typeof e?.value||!Number.isFinite(e.value))continue;for(let a of(b.push({name:d.trim(),value:e.value,unit:(e.unit||"").trim(),description:"",source:"blueprint"}),c.push(e.value),e.groups??[]))c.push(a.value);let a=e.specBreakdown??[];if(a.length>=2){let b=a.reduce((a,b)=>a+b.value,0);for(let i of(g.set(d.trim(),{value:e.value,unit:(e.unit||"").trim(),specs:new Map(a.map(a=>[h(a.spec),a.value])),breakdown:a.map(a=>({spec:a.spec,value:a.value})),partitioned:f(b,e.value)}),a))c.push(i.value)}}return!function(a,b){if(!a)return;let c=a=>{if("number"==typeof a){Number.isFinite(a)&&b.push(a);return}if("string"==typeof a){for(let c of a.matchAll(/\d+(?:\.\d+)?/gu))b.push(Number.parseFloat(c[0]));return}if(Array.isArray(a))return void a.forEach(c);a&&"object"==typeof a&&Object.values(a).forEach(c)};[a.project,a.schedule,a.quality,a.safety,a.resources,a.preciseFacts,a.bills,a.drawings,a.rules,a.specifications,a.tables].forEach(c)}(a.factsModel,c),{entries:b,numberPool:c,specValues:d,aggregateSpecs:g}}let l=/(?:合计|共计|总计|总共|总量|总数|总长|全长|总长度|总数量|总面积|总重量|小计)(?:为|达|约|共|计)?\s*([\d,,]+(?:\.\d+)?)\s*(立方米|m³|m3|平方米|㎡|m²|m2|公里|千米|km|kg|吨|t|座|个|套|处|盏|棵|株|樘|扇|根|块|片|组|件|孔|间|栋|幢|户|米|m)(?![a-zA-Z0-9²³])/gu;function m(a,b,c=2){if(!a||!b)return!1;let d=Math.min(a.length,8);for(let e=d;e>=c;e-=1)for(let c=0;c+e<=a.length;c+=1)if(b.includes(a.slice(c,c+e)))return!0;return!1}function n(a,b){let c=function(a){switch(i(a)){case"m":return"(?:m|米)";case"km":return"(?:km|公里|千米)";case"m2":return"(?:m2|m\xb2|㎡|平方米)";case"m3":return"(?:m3|m\xb3|立方米)";case"t":return"(?:t|吨)";case"kg":return"(?:kg|千克)";default:return d((a||"").trim())}}(b.unit);for(let e of function(a){let b=`${a}`,c=new Set([b]),[d,e]=b.split(".");return d.length>=4&&c.add(`${d.replace(/\B(?=(\d{3})+(?!\d))/gu,",")}${e?`.${e}`:""}`),[...c]}(b.value)){let f=d(e);if(RegExp(`${f}\\s*(?:${c})|(?:${c})\\s*${f}`,"u").test(a)||b.value>=100&&RegExp(`(?<![\\d.])${f}(?![\\d])`,"u").test(a))return!0}return!1}function o(a,b,c){let d=a.filter(a=>a.name.length>=2&&m(a.name,c));if(d.length<2||d.length>24)return[];for(let a=0;a<d.length;a+=1)for(let c=a+1;c<d.length;c+=1){let e=d[a],g=d[c];if(!(e.name===g.name&&f(e.value,g.value))&&f(e.value+g.value,b))return[e,g]}return[]}function p(a,b,c,d,e){let g=new Map;for(let a of d.entries){if(!(a.value>0)||i(a.unit)!==b)continue;let c=`${a.source}\u0000${a.name}`;g.set(c,(g.get(c)||0)+a.value)}let h=[];for(let[a,b]of g)if(m(a.slice(a.indexOf("\0")+1),c)&&(h.some(a=>f(a,b))||h.push(b),h.length>=24))break;if(0===h.length)return!1;let j=b=>f(b,a)||function(a,b){let c=0,d=a.length;for(;c<d;){let e=c+d>>1;a[e]<b?c=e+1:d=e}for(let d=Math.max(0,c-1);d<=Math.min(a.length-1,c+1);d+=1)if(f(a[d],b))return!0;return!1}(e,a-b);if(h.some(a=>j(a)))return!0;for(let a=0;a<h.length;a+=1)for(let b=a+1;b<h.length;b+=1)if(j(h[a]+h[b]))return!0;return!1}function q(a,b){let c=[];if(0===b.entries.length)return c;let d=new Set,g=[...b.numberPool].sort((a,b)=>a-b);for(let h of a.matchAll(l)){let j=e(h[1]);if(void 0===j)continue;let k=i(h[2]),l=h.index??0,q=l+h[0].length,r=b.entries.filter(a=>a.value>0&&i(a.unit)===k);if(0===r.length)continue;let s=a.slice(Math.max(0,l-40),l+h[0].length+40),t=a.slice(Math.max(0,l-20),l+h[0].length),u=r.filter(a=>a.name.length>=3&&t.includes(a.name)).sort((a,b)=>b.name.length-a.name.length)[0];if(u){if(f(u.value,j)){let b=o(r,j,s);if(b.length>=2){let e=a.slice(Math.max(0,l-150),l+h[0].length+150),f=b.filter(a=>!n(e,a));if(f.length>0){let a=b.map(a=>`「${a.name}」${a.value}${a.unit}`).join(" + "),e=`合计数值应分项显式:「${u.name} ${j}${h[2]}」= ${a},但正文未展示分项(缺 ${f.map(a=>`${a.name} ${a.value}${a.unit}`).join("、")}),无法核对合计来源`;d.has(e)||(d.add(e),c.push({issue:{level:"warning",severity:"warning",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:e,suggestion:`在合计值附近补充分项明细(${a}),使合计数值可逐项核对;分项值必须取自工程量清单原文,不得改动。`},matchStart:l,matchEnd:q}))}}continue}let e=j-u.value,i=r.find(a=>a!==u&&a.name!==u.name&&f(a.value,e));if(i){let b=a.slice(Math.max(0,l-150),l+h[0].length+150);if(n(b,u)&&n(b,i))continue;let f=`合计值与权威不符:「${u.name}」清单权威 ${u.value}${h[2]};正文 ${j}${h[2]} \u2248 ${u.value} + ${i.value}(「${i.name}」)——若「${i.name}」应计入「${u.name}」合计,须在正文显式分项;若不应计入(重复计入),须改回权威值 ${u.value}${h[2]}`;d.has(f)||(d.add(f),c.push({issue:{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:f,suggestion:`核对合计口径:「${u.name}」合计为 ${u.value}${h[2]}(清单权威)。若正文需表达 ${u.value} + ${i.value},则显式写成「${u.name} ${u.value}${h[2]}、${i.name} ${i.value}${h[2]},合计 ${j}${h[2]}」;否则将合计改回 ${u.value}${h[2]}(差额 ${Math.round(1e4*e)/1e4}${h[2]} 属「${i.name}」,不得并入)。`},matchStart:l,matchEnd:q}));continue}if(p(j,k,s,b,g))continue;let m=`合计值与权威不符:「${u.name}」合计为 ${u.value}${h[2]}(清单权威),正文写 ${j}${h[2]},且差额不属任何清单条目,需核对合计口径`;d.has(m)||(d.add(m),c.push({issue:{level:"warning",severity:"warning",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:m,suggestion:`核对「${u.name}」的合计口径:若为多分项之和,请写明与权威一致的分项分解;若为单一总量,改为清单权威值 ${u.value}${u.unit||h[2]}。`},matchStart:l,matchEnd:q}));continue}let v=o(r,j,s);if(v.length>=2){let b=a.slice(Math.max(0,l-150),l+h[0].length+150),e=v.filter(a=>!n(b,a));if(e.length>0){let a=v.map(a=>`「${a.name}」${a.value}${a.unit}`).join(" + "),b=`合计数值应分项显式:正文合计 ${j}${h[2]} = ${a},但未展示分项(缺 ${e.map(a=>`${a.name} ${a.value}${a.unit}`).join("、")}),无法核对合计来源`;d.has(b)||(d.add(b),c.push({issue:{level:"warning",severity:"warning",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:b,suggestion:`在合计值附近补充分项明细(${a});分项值必须取自工程量清单原文,不得改动。`},matchStart:l,matchEnd:q}))}continue}{let a=new Map;for(let b of r)a.set(b.name,(a.get(b.name)||0)+b.value);let b=!1;for(let c of a.values())if(f(c,j)){b=!0;break}if(b)continue}if(p(j,k,s,b,g))continue;let w=r.filter(a=>m(a.name,s)),x=r.some(a=>f(a.value,j)),y=b.numberPool.some(a=>f(a,j));if(!x&&!y&&w.length>0){let a=`合计值无权威来源:正文「${h[0].trim()}」在清单事实锁与蓝图参数桶中找不到同值来源,违反无据不写`;if(d.has(a))continue;d.add(a),c.push({issue:{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:a,suggestion:"删除该合计数值或改为与清单权威一致的合计值;无权威来源的合计数不得进入交付文本。"},matchStart:l,matchEnd:q})}}return c}function r(a,b,c){let d=Math.max(0,b-60),e=a.slice(d,b),f=-1;for(let a=e.length-1;a>=0;a-=1)if(/[,、;;。!?!?\n]/u.test(e[a])){f=d+a;break}if(-1===f||b-f>40)return null;let g=/[,、;;]/u.test(a[f]),h=g?f:f+1,i=g?c:c+ +!!/[,、;;]/u.test(a[c]||"");return i<=h?null:{start:h,end:i,excerpt:a.slice(h,i).trim()}}function s(a,b){let c=k({markdown:a,...b});if(0===c.entries.length)return{markdown:a,fixedCount:0,details:[]};let d=a,e=[];for(let a=1;a<=4;a+=1){let a=[];for(let b of q(d,c)){if(!b.issue.message.startsWith("合计值无权威来源"))continue;let c=r(d,b.matchStart,b.matchEnd);c&&a.push(c)}if(0===a.length)break;let b=0,f=1/0;for(let c of[...a].sort((a,b)=>b.start-a.start))c.end>f||(d=d.slice(0,c.start)+d.slice(c.end),f=c.start,b+=1,e.push(`删除无源合计「${c.excerpt.slice(0,40)}」`));if(0===b)break}return{markdown:d,fixedCount:e.length,details:e}}function t(a,b){let c=k({markdown:a,...b});if(0===c.entries.length)return{markdown:a,fixedCount:0,details:[]};let d=a,e=[];for(let a=1;a<=4;a+=1){let a=[];for(let e of H(d,c,b.billFactLock)){if(!e.issue.message.startsWith("名称-数值绑定无源"))continue;let b=r(d,e.matchStart,e.matchEnd);b&&a.push(b)}if(0===a.length)break;let f=0,g=1/0;for(let b of[...a].sort((a,b)=>b.start-a.start))b.end>g||(d=d.slice(0,b.start)+d.slice(b.end),g=b.start,f+=1,e.push(`删除无源绑定「${b.excerpt.slice(0,40)}」`));if(0===f)break}return{markdown:d,fixedCount:e.length,details:e}}let u=/(?:DN|De|Φ|φ|Ø|dn|de)\s*\d+(?:\.\d+)?|(?<![A-Za-z0-9])[CM]\d{2,3}(?![0-9])|HRB\d+|HPB\d+|(?<![A-Za-z0-9])\d{2,4}\s*[×xX*]\s*\d{2,4}(?![0-9])|(?<![A-Za-z0-9])\d+(?:\.\d+)?\s*[kK]?[Ww](?![A-Za-z0-9])/gu,v=/运输车|搅拌车|罐车|挖掘机|挖机|装载机|压路机|摊铺机|打夯机|夯实机|洒水车|浇水车|吊车|起重机|泵车|地泵|发电机组|发电机|电焊机|空压机|水泵|提升泵|潜水泵|雾炮机|充桩|桩机|机械|设备|机具|车辆|机组/u;function w(a,b){for(let[c,d]of a.aggregateSpecs)if(d.specs.has(b))return{entryName:c,info:d}}function x(a,b){let c=[];if(0===b.specValues.size&&0===b.aggregateSpecs.size)return c;let d=new Set;for(let g of a.matchAll(u)){let i,k=h(g[0]),l=b.specValues.get(k)??[],n=w(b,k);if(0===l.length&&!n)continue;let o=(g.index??0)+g[0].length,p=a.slice(o,o+36),q=/^([^。;;\n|]{0,16}?)([\d,,]+(?:\.\d+)?)\s*(座|个|套|盏|台|根|块|樘|扇|片|组|件|孔|米|m|km|公里|平方米|m2|㎡|m²|立方米|m3|m³|吨|t|kg)(?![a-zA-Z0-9²³])/u.exec(p);if(!q||j.test(q[1])||/不大于|不超过|不得大于|不得超过/.test(q[1]))continue;let r=q[1];if(/[、,,]/u.test(r)){let a=r.split(/[、,,]/u).pop()||"";if(/[\u4e00-\u9fa5]/u.test(a)&&!/合计|小计|共计|总计|总量|用量|总长|共/u.test(a))continue}if("台"===q[3]||"套"===q[3]){let b=o+q[1].length+q[2].length+q[3].length;if(v.test(q[1])||v.test(a.slice(b,b+12)))continue}if(/总长|全长|长度|管长|延米/u.test(q[1])&&/^(?:m|米|km|公里)$/u.test(q[3]))continue;let s=e(q[2]);if(void 0===s||l.some(a=>f(a.value,s)))continue;let t=n?.info.specs.get(k);if(void 0!==t&&f(t,s))continue;let u=new Map;for(let a of l){let b=u.get(a.entryName);b?b.value+=a.value:u.set(a.entryName,{value:a.value,unit:a.unit})}let x=[...u.values()].sort((a,b)=>b.value-a.value);if(l.length>=2&&x.some(a=>f(a.value,s)))continue;if(n?.info.partitioned&&void 0!==t&&f(n.info.value,s)){let a=h(q[1]);if(![...n.info.specs.keys()].some(b=>b!==k&&a.includes(b))){let a=n.info.breakdown.map(a=>`${a.spec} ${a.value}${n.info.unit}`).join(" + "),b=`规格-数值绑定错位:「${g[0]}」处数值 ${s}${q[3]} 是「${n.entryName}」的跨规格名称合计(${a}),不属于单一规格「${g[0]}」——名称合计不得挂给单一规格,须写该规格小计 ${t}${q[3]}(确需写合计须显式分解)`;if(!d.has(b)){d.add(b);let e=o+q[1].length;c.push({issue:{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:b,suggestion:`「${g[0]}」的数量须写该规格小计 ${t}${q[3]};名称合计须显式分解为 ${a}(合计 ${n.info.value}${n.info.unit}),不得把合计值挂在单一规格名下。`},specToken:g[0],value:s,unit:q[3],valueStart:e,valueEnd:e+q[2].length,groupSumCandidates:[{value:t,unit:n.info.unit},...x.filter(a=>!f(a.value,s))]})}}continue}for(let[a,c]of b.specValues){if(a===k)continue;let b=c.find(a=>f(a.value,s));if(b){i={spec:b.spec||a,entryName:b.entryName};break}}if(!i||q[1]&&m(i.entryName,q[1]))continue;let y=`规格-数值绑定错位:正文「${g[0]} ${s}${q[3]}」中 ${s}${q[3]} 属规格「${i.spec}」(清单条目「${i.entryName}」),不属于「${g[0]}」的清单数量`;if(d.has(y))continue;d.add(y);let z=o+q[1].length;c.push({issue:{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:y,suggestion:`「${g[0]}」的数量必须引用清单中该规格条目的原值(如 ${l.map(a=>`${a.value}${a.unit}`).join("、")});「${i.spec}」的数量不得张冠李戴至「${g[0]}」。`},specToken:g[0],value:s,unit:q[3],valueStart:z,valueEnd:z+q[2].length,groupSumCandidates:x.filter(a=>!f(a.value,s))})}for(let g of a.matchAll(u)){let i=h(g[0]),k=w(b,i);if(!k?.info.partitioned)continue;let l=k.info.specs.get(i);if(void 0===l)continue;let n=g.index??0,o=a.slice(Math.max(0,n-24),n),p=/([\d,,]+(?:\.\d+)?)\s*(座|个|套|盏|台|根|块|樘|扇|片|组|件|孔|米|m|km|公里|平方米|m2|㎡|m²|立方米|m3|m³|吨|t|kg)\s*([^。;;\n|0-9²³]{0,12})$/u.exec(o);if(!p)continue;let q=p[3];if(!/[((]|为|系|采用|型号|规格|灯型|类型/u.test(q)||j.test(q))continue;let r=e(p[1]);if(void 0===r||!f(k.info.value,r)||f(l,r)||!m(k.entryName,o))continue;let s=h(a.slice(Math.max(0,n-60),n+60));if([...k.info.specs.keys()].filter(a=>s.includes(a)).length>=2)continue;let t=n-q.length-p[2].length-p[1].length,u=`${i}@${t}`;if(d.has(u))continue;d.add(u);let v=k.info.breakdown.map(a=>`${a.spec} ${a.value}${k.info.unit}`).join(" + ");c.push({issue:{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`规格-数值绑定错位:正文「…${r}${p[2]}${q}${g[0]}…」中 ${r}${p[2]} 为「${k.entryName}」的跨规格名称合计(${v}),其后紧随单一规格「${g[0]}」易被读作全部为该规格;名称合计须显式分解`,suggestion:`数量 ${r}${p[2]} 保留不动;把规格表述改为显式分解,如「${r}${p[2]}(${v})」或逐规格列写「${v}」;不得以名称合计搭配单一规格描述。`},specToken:g[0],value:r,unit:p[2],valueStart:t,valueEnd:t+p[1].length,groupSumCandidates:[]})}if(b.aggregateSpecs.size>0){let g=0;for(let i of a.split("\n")){let a=g;if(g+=i.length+1,!i.includes("|")||/^\s*\|?[\s:|-]*\|?\s*$/u.test(i))continue;let j=new Map;for(let a of i.matchAll(u)){let c=h(a[0]),d=w(b,c);if(!d?.info.partitioned)continue;let e=d.info.specs.get(c);if(void 0===e)continue;let f=j.get(d.entryName)||[];f.some(a=>a.key===c)||f.push({key:c,raw:a[0].trim(),specSum:e}),j.set(d.entryName,f)}if(1!==j.size)continue;let[k,l]=[...j.entries()][0];if(1!==l.length)continue;let n=b.aggregateSpecs.get(k);if(!n)continue;let{key:o,raw:p,specSum:q}=l[0];if(m(k,i))for(let g of i.matchAll(/\|([^|\n]*)/gu)){let h=g[1].trim(),i=/^([\d,,]+(?:\.\d+)?)\s*(?:座|个|套|盏|台|根|块|樘|扇|片|组|件|孔|米|m|km|公里|平方米|m2|㎡|m²|立方米|m3|m³|吨|t|kg)?$/u.exec(h);if(!i)continue;let j=e(i[1]);if(void 0===j||!f(n.value,j)||f(q,j)||(b.specValues.get(o)??[]).some(a=>f(a.value,j)))continue;let l=a+(g.index??0)+1+g[1].indexOf(i[1]),m=`${o}@${l}`;if(d.has(m))continue;d.add(m);let r=n.breakdown.map(a=>`${a.spec} ${a.value}${n.unit}`).join(" + ");c.push({issue:{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`规格-数值绑定错位:表格行「${p}…」的数量 ${j}${n.unit} 是「${k}」的跨规格名称合计(${r}),该行规格为「${p}」应填其小计 ${q}${n.unit}`,suggestion:`该行数量改为 ${q}${n.unit};名称合计请另立「合计」行或显式分解为 ${r}。`},specToken:p,value:j,unit:n.unit,valueStart:l,valueEnd:l+i[1].length,groupSumCandidates:[{value:q,unit:n.unit}]})}}}return c}let y={米:"m",公里:"km",平方米:"m2","㎡":"m2","m\xb2":"m2",立方米:"m3","m\xb3":"m3",吨:"t"};function z(a){return Object.prototype.hasOwnProperty.call(y,a)?y[a]:a}function A(a,b){let c=k({markdown:a,...b});if(0===c.specValues.size&&0===c.aggregateSpecs.size)return{markdown:a,fixedCount:0,details:[]};let d=a,e=[];for(let a=1;a<=8;a+=1){let a=x(d,c).filter(a=>a.groupSumCandidates.length>0);if(0===a.length)break;let b=0;for(let f of[...a].sort((a,b)=>b.valueStart-a.valueStart)){let a,g,h=f.groupSumCandidates.find(a=>z(a.unit)===z(f.unit));if(h)a=d.slice(0,f.valueStart)+`${h.value}`+d.slice(f.valueEnd),g=`「${f.specToken}」绑定数值 ${f.value}${f.unit} → 组和值 ${h.value}${f.unit}`;else{let b=f.valueStart;for(;b>0&&/\s/u.test(d[b-1]);)b-=1;let c=f.valueEnd+f.unit.length;a=d.slice(0,b)+d.slice(c),g=`「${f.specToken}」移除张冠李戴数值 ${f.value}${f.unit}(无同单位替换候选,值不属该规格)`}x(a,c).some(a=>{let b=a.valueStart-f.valueStart;return b>=-4&&b<=4})||(d=a,b+=1,e.push(g))}if(0===b)break}return{markdown:d,fixedCount:e.length,details:e}}let B=/(?:埋深|覆土(?:厚度|深度)?|管顶覆土)(?:不小于|不大于|不低于|不超过|约|为|达|控制在|一般|宜|应)?[^。;;\n|]{0,10}?([\d,,]+(?:\.\d+)?)\s*(mm|cm|米|m)(?![a-zA-Z0-9²³])/gu,C=/(?:约为|大约|约计|约|将近|近)\s*([\d,,]+(?:\.\d+)?)\s*(点|处|座|个|套|盏|棵|株|樘|扇|根|块|片|组|件|孔|间|栋|幢|户|米|公里|km|m2|㎡|m²|平方米|m3|m³|立方米|kg|吨|t|l|升|kw|w)(?![a-zA-Z0-9²³³])/giu,D=/([\d,,]+(?:\.\d+)?)\s*余\s*(点|处|座|个|套|盏|棵|株|樘|扇|根|块|片|组|件|孔|间|栋|幢|户|米|公里|km|m2|㎡|m²|平方米|m3|m³|立方米|kg|吨|t)(?![a-zA-Z0-9²³])/gu,E=/[节制合履签违公盟密租最接靠邻附距离]/u,F=/^(?:管道|工程|材料|项目|施工|工作|设备|设施|系统|区域|场地|道路|建筑|结构|基础|主体|管网|土建|安装|装饰|装修|土方|绿化|照明|给水|排水|电气|挖方|填方|回填|弃方|外运|运输|检测|试验|测量|清理|拆除|清淤|维护|养护|管理|服务|其他|以上|以下|其中|包括|采用|使用|型号|规格|数量|单位|合计|总计|长度|面积|体积|重量)$/u,G=/(木质|木|铝合金|铝|不锈钢|塑钢|塑料|塑|钢|铁|砼|混凝土|铸铁|铜|复合)(门|窗|井|灯|护栏|围栏|盖板|雨水口)/gu;function H(a,b,c){let d=[],h=new Set,k=new Set,l=new Map;if(c)for(let a of c.entries){let b=(a.name||"").trim();if(b.length<2||!Number.isFinite(a.quantity))continue;let c=`${b}\u0000${i(a.unit)}`,d=l.get(c)||{count:0,samples:[]};d.count+=1;let e=`${a.quantity}${a.unit}`;d.samples.length<3&&!d.samples.includes(e)&&d.samples.push(e),l.set(c,d)}let n=b.entries.map(a=>`${a.name} ${a.description}`).join("\n"),o=new Map;{let a=new Map;for(let c of b.entries){if(!(c.value>0))continue;let b=`${c.source}\u0000${c.name}`,d=a.get(b);d?d.sum+=c.value:a.set(b,{name:c.name,sum:c.value})}for(let b of a.values()){let a=o.get(b.name)||[];a.push(b.sum),o.set(b.name,a)}}let p=new Map,q=new Map,r=new Map,s=(a,c,d)=>{let e=`${a}\u0000${c}`,f=p.get(e);if(f||(f=b.entries.filter(b=>b.name===a&&i(b.unit)===c&&b.value>0).map(a=>Math.round(100*a.value)),p.set(e,f)),f.length<2)return!1;let g=`${e}\u0000${Math.round(100*d)}`,h=q.get(g);if(void 0!==h)return h;let j=function(a,b){if(a.length<2||b<=0)return!1;let c=[...a].sort((a,b)=>a-b);if(c.some(a=>a===b))return!1;let d=c.reduce((a,b)=>a+b,0);if(b>d)return!1;let e=d-b;if(e>0&&e!==b){let a=Math.max(b,e);for(let d=0;d<c.length;d+=1)for(let f=d+1;f<c.length;f+=1){let g=c[d]+c[f];if(g>a)break;if(g===b||g===e)return!0}let d=0,f=c.length-1;for(;d<=f;){let a=d+f>>1;if(c[a]===e)return c.length>=3;c[a]<e?d=a+1:f=a-1}}else for(let a=0;a<c.length;a+=1)for(let d=a+1;d<c.length;d+=1){let e=c[a]+c[d];if(e>b)break;if(e===b)return!0}if(c.length>40)return!1;let f=Math.ceil(c.length/2),g=c.slice(0,f),h=c.slice(f),i=a=>{let b=new Set([0]);for(let c of a){let a=new Set;for(let d of b)a.add(d),a.add(d+c);b=a}return b},j=i(h);for(let a of i(g))if(j.has(b-a))return!0;return!1}(f,Math.round(100*d));return q.set(g,j),j},t=(a,c)=>{let d=o.get(a)||[];if(0===d.length)return!1;let e=`${a}\u0000${Math.round(100*c)}`,g=r.get(e);if(void 0!==g)return g;let h=d.some(a=>b.numberPool.some(b=>f(a+b,c)));return r.set(e,h),h};if(c)for(let n of c.entries){let c=(n.name||"").trim();if(c.length<2||F.test(c)||!Number.isFinite(n.quantity))continue;let p=0,q=0;for(;q<6;){let r=a.indexOf(c,p);if(r<0)break;if(p=r+c.length,q+=1,/\d$/u.test(c)&&/^[\d.]/u.test(a.slice(r+c.length,r+c.length+1))){p=r+1;continue}if("量"===a.slice(r+c.length,r+c.length+1))continue;let u=a.slice(r+c.length,r+c.length+20),v=/^([^。;;\n|]{0,12}?)([\d,,]+(?:\.\d+)?)\s*(座|个|套|处|盏|棵|株|樘|扇|根|块|片|组|件|孔|间|栋|幢|户|米|m|km|公里|平方米|m2|㎡|m²|立方米|m3|m³|kg|吨|t)(?![a-zA-Z0-9²³])/u.exec(u);if(!v||j.test(v[1]))continue;let w=e(v[2]);if(void 0===w||g(w,n.quantity))continue;let x=i(v[3]);if(x!==i(n.unit)||b.entries.some(a=>a.name===c&&g(w,a.value)&&i(a.unit)===x)||(o.get(c)||[]).some(a=>f(a,w))||s(c,x,w)||t(c,w))continue;let y=a.slice(Math.max(0,r-32),r+c.length+20);if(function(a,b,c,d){for(let[e,g]of d)if(e!==b&&(e.includes(b)||b.includes(e)||m(e,c))&&g.some(b=>f(b,a)))return!0;return!1}(w,c,y,o))continue;let z=b.entries.find(a=>a.name!==c&&f(a.value,w)&&i(a.unit)===x);if(z&&m(z.name,y))continue;if(z){let a=`${r}\u0000${w}\u0000${x}`;if(k.has(a))continue;k.add(a);let b=l.get(`${c}\u0000${x}`),e=b&&b.count>1?`名称-数值绑定错位:「${c}」处数值 ${w}${v[3]} 属清单条目「${z.name}」(${z.value}${z.unit}),与同名清单条目(共 ${b.count} 条,如 ${b.samples.join("、")} 等)的权威数量均不符`:`名称-数值绑定错位:「${c}」处数值 ${w}${v[3]} 属清单条目「${z.name}」(${z.value}${z.unit}),与「${c}」清单数量 ${n.quantity}${n.unit} 不符`;if(h.has(e))continue;h.add(e),d.push({issue:{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:e,suggestion:b&&b.count>1?`核对「${c}」的数量口径:同名清单条目共 ${b.count} 条(如 ${b.samples.join("、")} 等),逐一核对后引用对应条目数量;引用「${z.name}」数量时须明确对象名称,不得张冠李戴。`:`核对「${c}」的数量口径:清单权威值为 ${n.quantity}${n.unit};引用「${z.name}」数量时须明确对象名称,不得张冠李戴。`},matchStart:r,matchEnd:r+c.length+v[0].length});continue}if(function(a,b,c,d){let e=a.slice(Math.max(0,b-40),b+c+40),g=[];for(let a of e.matchAll(/\d+(?:\.\d+)?/gu)){let b=Number.parseFloat(a[0]);Number.isFinite(b)&&!f(b,d)&&g.push(b)}for(let a=0;a<g.length;a+=1)for(let b=a+1;b<g.length;b+=1)if(f(g[a]+g[b],d)||f(Math.abs(g[a]-g[b]),d))return!0;return!1}(a,r,c.length,w)||b.numberPool.some(a=>f(a,w)))continue;let A=`${r}\u0000${w}\u0000${x}`;if(k.has(A))continue;k.add(A);let B=l.get(`${c}\u0000${x}`),C=B&&B.count>1?`名称-数值绑定无源:「${c}」处数值 ${w}${v[3]} 与同名清单条目(共 ${B.count} 条,如 ${B.samples.join("、")} 等)的权威数量均不符,且在全部权威数据中找不到同值来源`:`名称-数值绑定无源:「${c}」处数值 ${w}${v[3]} 与清单权威 ${n.quantity}${n.unit} 不符,且在全部权威数据中找不到同值来源`;h.has(C)||(h.add(C),d.push({issue:{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:C,suggestion:B&&B.count>1?`核对「${c}」的数量口径:同名清单条目共 ${B.count} 条(如 ${B.samples.join("、")} 等),逐一核对后引用对应条目的权威数量;无权威来源的数值不得与清单条目名称绑定出现。`:`将「${c}」的数量改为清单权威值 ${n.quantity}${n.unit};无权威来源的数值不得与清单条目名称绑定出现。`},matchStart:r,matchEnd:r+c.length+v[0].length}))}}for(let c of a.matchAll(G)){let g=c[0];if(n.includes(g))continue;let j=c[2],k=a.slice((c.index??0)+g.length,(c.index??0)+g.length+16),l=/^([^。;;\n|]{0,10}?)([\d,,]+(?:\.\d+)?)\s*(樘|扇|套|座|盏|个)(?![a-zA-Z0-9²³])/u.exec(k);if(!l)continue;let m=e(l[2]);if(void 0===m)continue;let o=b.entries.find(a=>a.name.includes(j)&&f(a.value,m)&&i(a.unit)===i(l[3]));if(!o)continue;let p=`名称口径不符:正文「${g} ${m}${l[3]}」——${m}${l[3]} 对应清单「${o.name}」条目,清单中不存在「${g}」,名称与清单权威不符`;if(h.has(p))continue;h.add(p);let q=c.index??0;d.push({issue:{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:p,suggestion:`名称必须与清单条目口径一致:将「${g}」改为「${o.name}」(或清单原文名称);名称与数量绑定不得自行替换材质/类型限定词。`},matchStart:q,matchEnd:q+g.length+l[0].length})}return d}function I(a){let b=a.markdown||"";if(!b)return[];let c=k(a);if(0===c.entries.length&&0===c.numberPool.length)return[];let d=[...q(b,c).map(a=>a.issue),...x(b,c).map(a=>a.issue),...function(a,b){let c=[],d=new Set;for(let g of a.matchAll(B)){let a=e(g[1]);if(void 0===a)continue;let h=g[2];if(("mm"===h?a/1e3:"cm"===h?a/100:a)<=10)continue;let i=b.entries.find(b=>f(b.value,a)&&/总长|全长|总长度|长度|管线/u.test(b.name)),j=`数值语义槽位错位:正文「${g[0].trim()}」——埋深/覆土数值 ${a}${h} 超出物理合理范围(管道埋深一般 <10m)${i?`,且该数值与权威「${i.name}」(${i.value}${i.unit})一致,疑似把总长/长度口径误用作埋深`:",疑似口径混用"}`;d.has(j)||(d.add(j),c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:j,suggestion:`核对槽位语义:埋深/覆土深度应在 0.3~10m 合理区间(以设计图纸为准);总长/长度类数值不得用于埋深描述${i?`(「${i.name}」为 ${i.value}${i.unit})`:""}。`}))}return c}(b,c),...function(a,b){let c=[];if(0===b.numberPool.length)return c;let d=new Set,f=(a,f,g)=>{let h=e(a);if(void 0===h||function(a,b){let c=a>=1e3?Math.max(10,.02*a):a>=100?5:a>=10?1:.5;return b.some(b=>Math.abs(b-a)<=c||Math.abs(b-a)<=Math.max(1e-6,.02*Math.abs(b)))}(h,b.numberPool))return;let i=`近似数值不可推导:正文「${g.trim()}」的 ${h}${f} 在清单/蓝图/事实主表中无同值或近似来源,违反无据不写`;d.has(i)||(d.add(i),c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:i,suggestion:"删除该近似表述,或改用权威数据可推导的数值(清单/蓝图同值口径);「约/近」类近似数值必须可闭合到权威来源。"}))};for(let b of a.matchAll(C)){let c=b.index??0,d=a.slice(Math.max(0,c-1),c);E.test(d)||f(b[1],b[2],b[0])}for(let b of a.matchAll(D))f(b[1],b[2],b[0]);return c}(b,c),...H(b,c,a.billFactLock).map(a=>a.issue)],g=[],h=new Set;for(let a of d){let b=`${a.severity||a.level}|${a.message}`;h.has(b)||(h.add(b),g.push(a))}return g}},76193:(a,b,c)=>{c.d(b,{ll:()=>q,rk:()=>n,wF:()=>u,yT:()=>p}),c(51190),c(44505),c(10751);var d=c(93675);let e=new Set(["fixed","exempt","manual"]),f=[],g=new Set(["structure","table","fact_consistency","evidence_coverage","professional_chain","control_loop","format","style","scope"]),h=[{id:"table-line-residue",kind:"deterministic",anchoredTo:"table-quality",giveUpOnFailure:!0},{id:"templated-labels",kind:"deterministic",anchoredTo:"templated-label",giveUpOnFailure:!0},{id:"structure-integrity",kind:"deterministic",anchoredTo:"structure-integrity",giveUpOnFailure:!0},{id:"embedded-heading-split",kind:"deterministic",anchoredTo:"planned-structure",giveUpOnFailure:!0},{id:"repeated-words",kind:"deterministic",anchoredTo:"repeated-word",giveUpOnFailure:!0},{id:"duplicate-tables",kind:"deterministic",anchoredTo:"duplicate-table",giveUpOnFailure:!0},{id:"finish-thickness",kind:"deterministic",anchoredTo:"finish-thickness",giveUpOnFailure:!0},{id:"slot-depth-value",kind:"deterministic",anchoredTo:"fact-reconciliation",authorities:["blueprint"],giveUpOnFailure:!0},{id:"spec-quantity-binding",kind:"deterministic",anchoredTo:"fact-reconciliation",authorities:["blueprint"],giveUpOnFailure:!0},{id:"labor-peak",kind:"deterministic",anchoredTo:"resource-consistency",authorities:["laborPeak"],giveUpOnFailure:!0},{id:"phase-labor-values",kind:"deterministic",anchoredTo:"phase-labor-mixing",authorities:["blueprint"],giveUpOnFailure:!0},{id:"resource-breakdown",kind:"deterministic",anchoredTo:"resource-breakdown-consistency",authorities:["blueprint"],giveUpOnFailure:!0},{id:"equipment-batch-values",kind:"deterministic",anchoredTo:"equipment-batch-conflict",authorities:["blueprint"],giveUpOnFailure:!0},{id:"internal-table-row-dup",kind:"deterministic",anchoredTo:"table-spam",giveUpOnFailure:!0},{id:"duplicate-basic-info-tables",kind:"deterministic",anchoredTo:"table-quality",alsoAnchoredTo:["duplicate-basic-info"],giveUpOnFailure:!0},{id:"fallback-placeholder-rows",kind:"deterministic",anchoredTo:"formal-placeholder",giveUpOnFailure:!0},{id:"greening-maintenance",kind:"deterministic",anchoredTo:"greening-maintenance-mismatch",authorities:["greeningMaintenance"],giveUpOnFailure:!0},{id:"paragraph-opening-repeat",kind:"deterministic",anchoredTo:"paragraph-opening-repeat",giveUpOnFailure:!0},{id:"paragraph-tail-repeat",kind:"deterministic",anchoredTo:"paragraph-tail-repeat",giveUpOnFailure:!0},{id:"collision-numbered-heading",kind:"deterministic",anchoredTo:"collision-numbered-heading",giveUpOnFailure:!0},{id:"heading-uncovered-items",kind:"deterministic",anchoredTo:"heading-uncovered-engineering-items",giveUpOnFailure:!0},{id:"inverted-date-range",kind:"deterministic",anchoredTo:"inverted-date-range",giveUpOnFailure:!0},{id:"zero-length-date-range",kind:"deterministic",anchoredTo:"cross-chapter-consistency",giveUpOnFailure:!0},{id:"truncated-sentence",kind:"deterministic",anchoredTo:"truncated-sentence",giveUpOnFailure:!0},{id:"meta-discourse",kind:"deterministic",anchoredTo:"meta-discourse-declaration",giveUpOnFailure:!0},{id:"formula-residue",kind:"deterministic",anchoredTo:"formula-residue",giveUpOnFailure:!0},{id:"self-undermining",kind:"deterministic",anchoredTo:"self-undermining-candidate",giveUpOnFailure:!0},{id:"ambiguous-either-or",kind:"deterministic",anchoredTo:"ambiguous-either-or",authorities:["supportSystem"],giveUpOnFailure:!0},{id:"tender-meta-language",kind:"deterministic",anchoredTo:"formal-style",giveUpOnFailure:!0},{id:"forbidden-configuration",kind:"deterministic",anchoredTo:"formal-text-gate",giveUpOnFailure:!0},{id:"duplicate-response-line",kind:"deterministic",anchoredTo:"duplicate-paragraph",giveUpOnFailure:!0},{id:"atlas-reference",kind:"deterministic",anchoredTo:"atlas-reference-phrase",giveUpOnFailure:!0},{id:"tertiary-h4-dedupe",kind:"deterministic",anchoredTo:"tertiary-heading",giveUpOnFailure:!0},{id:"internal-term-heading",kind:"deterministic",anchoredTo:"internal-terminology-anchor",giveUpOnFailure:!0},{id:"skeleton-fingerprint-variants",kind:"deterministic",anchoredTo:"skeleton-fingerprint",giveUpOnFailure:!0},{id:"flow-form-variants",kind:"deterministic",anchoredTo:"flow-form-repeat",giveUpOnFailure:!0},{id:"truncated-title-completion",kind:"deterministic",anchoredTo:"title-integrity",giveUpOnFailure:!0},{id:"sentence-like-heading-split",kind:"deterministic",anchoredTo:"title-integrity",giveUpOnFailure:!0},{id:"heading-duplicate-merge",kind:"deterministic",anchoredTo:"heading-duplicate",giveUpOnFailure:!0},{id:"section-renumber",kind:"deterministic",anchoredTo:"section-numbering",giveUpOnFailure:!0}],i=[{id:"numeric-arbiter-concept",kind:"deterministic",anchoredTo:"parameter-concept-conflict",giveUpOnFailure:!0},{id:"numeric-arbiter-spec",kind:"deterministic",anchoredTo:"spec-location-mismatch",giveUpOnFailure:!0}],j=[{id:"numeric-chain-node-schedule",kind:"deterministic",anchoredTo:"node-schedule-consistency",giveUpOnFailure:!0},{id:"numeric-chain-cross-section",kind:"deterministic",anchoredTo:"cross-section-numeric-conflict",giveUpOnFailure:!0},{id:"numeric-chain-support-system",kind:"deterministic",anchoredTo:"support-system-conflict",authorities:["supportSystem"],giveUpOnFailure:!0},{id:"numeric-chain-quantity-authority",kind:"deterministic",anchoredTo:"blueprint-citation-consistency",authorities:["blueprint"],giveUpOnFailure:!0},{id:"equipment-entry-timing-clean",kind:"deterministic",anchoredTo:"equipment-entry-timing",giveUpOnFailure:!0},{id:"commercial-data-body-strip",kind:"deterministic",anchoredTo:"commercial-data-in-body",giveUpOnFailure:!0},{id:"listing-jargon-strip",kind:"deterministic",anchoredTo:"major-content-governance",giveUpOnFailure:!0},{id:"work-injury-statement-fix",kind:"deterministic",anchoredTo:"local-adaptation-keyword",giveUpOnFailure:!0},{id:"boq-division-coverage-closure",kind:"deterministic",anchoredTo:"boq-division-coverage",giveUpOnFailure:!0},{id:"drawing-image-strip",kind:"deterministic",anchoredTo:"bid-composition-body-figure",giveUpOnFailure:!0},{id:"tender-clause-heading-strip",kind:"deterministic",anchoredTo:"bidder-qualification-section",alsoAnchoredTo:["instruction-like-heading"],giveUpOnFailure:!0},{id:"formal-source-phrase-clean",kind:"deterministic",anchoredTo:"source-enumeration",giveUpOnFailure:!0},{id:"toc-consistency-rebuild",kind:"deterministic",anchoredTo:"toc-consistency",giveUpOnFailure:!0},{id:"prompt-document-rules-apply",kind:"deterministic",anchoredTo:"prompt-document-rule",giveUpOnFailure:!0},{id:"workflow-phrase-clean",kind:"deterministic",anchoredTo:"auto-spec-validation",giveUpOnFailure:!0},{id:"contamination-candidate-sanitize",kind:"deterministic",anchoredTo:"project-contamination",giveUpOnFailure:!0},{id:"preliminary-action-timing-clean",kind:"deterministic",anchoredTo:"preliminary-action-timing",authorities:["blueprint"],giveUpOnFailure:!0},{id:"process-spec-conflict-fix",kind:"deterministic",anchoredTo:"process-spec-conflict",giveUpOnFailure:!0}],k=[{id:"near-duplicate-section-merge",kind:"deterministic",anchoredTo:"section-count-overflow",giveUpOnFailure:!0},{id:"empty-section-strip",kind:"deterministic",anchoredTo:"section-content-integrity",giveUpOnFailure:!0},{id:"duplicate-theme-merge",kind:"deterministic",anchoredTo:"min-chapter-section",giveUpOnFailure:!0}],l=["source-enumeration","internal-terminology-anchor","fabricated-start-date","repeated-word","writer-missing-section","meta-discourse-declaration","formula-residue","finish-thickness","formal-placeholder","truncated-sentence"],m=[{id:"fact-landing",kind:"llm-patch",anchoredTo:"fact-coverage",patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"table-repair",kind:"llm-patch",anchoredTo:"table-quality",patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"table-execution-repair",kind:"llm-patch",anchoredTo:"bid-composition-body-table",patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"templating-repair",kind:"llm-patch",anchoredTo:"construction-org-generic-language",alsoAnchoredTo:["sentence-pattern-repeat"],patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"workpackage-skeleton-repair",kind:"llm-patch",anchoredTo:"construction-org-division-section",patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"planned-section-repair",kind:"llm-patch",anchoredTo:"writer-missing-section",patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"global-consistency-repair",kind:"llm-patch",anchoredTo:"cross-chapter-consistency",alsoAnchoredTo:["foundation-form-residue","excavation-depth-lock"],patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"cross-project-value-copy-repair",kind:"llm-patch",anchoredTo:"cross-project-value-copy",authorities:["blueprint"],patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"requirement-response-repair",kind:"llm-patch",anchoredTo:"requirements-coverage",patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"numeric-verification",kind:"llm-patch",anchoredTo:"authority-audit-gap",patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"quotation-balance-repair",kind:"llm-patch",anchoredTo:"punctuation-artifact",patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"content-depth-repair",kind:"llm-patch",anchoredTo:"critical-section-depth",alsoAnchoredTo:["emergency-section-depth","construction-org-major-content","construction-org-division-section","precise-fact-usage","parameter-obligation-usage","overview-recap","professional-score","boq-placement","drawing-reference"],patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"control-loop-repair",kind:"llm-patch",anchoredTo:"construction-org-control-loop",patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"professional-chain-repair",kind:"llm-patch",anchoredTo:"construction-org-professional-chain",patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"basis-regulations-repair",kind:"llm-patch",anchoredTo:"basis-regulations-coverage",authorities:["blueprint"],patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"basis-regulations-cross-repair",kind:"llm-patch",anchoredTo:"basis-regulations-cross",patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"dangerous-applicability-repair",kind:"llm-patch",anchoredTo:"dangerous-applicability",patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"auto-spec-gate-repair",kind:"llm-patch",anchoredTo:"planned-auto-spec-gate",patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"length-compression-repair",kind:"llm-patch",anchoredTo:"document-budget",patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"table-caption-repair",kind:"llm-patch",anchoredTo:"table-caption",patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"table-arithmetic-repair",kind:"llm-patch",anchoredTo:"table-arithmetic-consistency",patchGuard:{detectors:[...l]},giveUpOnFailure:!0}],n=["fact-landing-round","table-repair-round","semantic-choice-conflict","deterministic-stage5","formal-source-clean","planned-section-final","commercial-strip","table-deterministic-repair","numeric-verification","requirement-response-repair","requirement-verification","content-depth-repair","control-loop-repair","professional-chain-repair","post-review-surface","terminology-strip","regulation-number-typo","quotation-balance-repair","basis-regulations-repair","basis-regulations-cross-repair","dangerous-applicability-repair","auto-spec-gate-repair","toc-consistency","length-compression-repair","fact-distribution-round","table-caption-repair","table-arithmetic-repair","empty-section-sweep","section-alignment-sweep","templating-sweep","duplicate-theme-merge","delivery-structure-closure","sentence-pattern-sweep","duplicate-sentence-collapse","templating-tail-replay"],o=new Set;function p(a,b){return o.add(a),b()}async function q(a,b){o.add(a);try{return await b()}catch(c){let b=c instanceof Error?c.message:String(c);return console.error(`[gen] detector degraded: ${a} failed, fallback to warning issue:`,c),[{level:"warning",severity:"warning",category:"format",owner:"system",repairability:"manual_review",message:`交付前检测器「${a}」执行失败,已降级为待复核:${b}`,suggestion:"此为检测器基础设施异常,非正文内容缺陷;其余交付前检查已照常完成。可稍后重新生成复核,或人工复核该检测维度。"}]}}let r=[{id:"spec-gate-rules",scope:"full-document",category:"structure",fixerDisposition:"manual",fixerDispositionReason:"配置门禁容器(事实/章节/表格/图片/页数/文本多族混合,规则随模板与提示词动态生成),无单一可锚定修复目标"},{id:"auto-spec-validation",scope:"full-document",category:"structure",fixerDisposition:"fixed",fixerDispositionReason:"仅唯一阻断族(后台流程话术)由 WORKFLOW_PHRASE_RE 清洗覆盖;后台优化建议/基础事实候选/材料未提供 3 词未入清洗表"},{id:"fact-consistency",scope:"full-document",category:"fact_consistency",fixerDisposition:"manual",fixerDispositionReason:"多值冲突源于绑定材料组内同名不同值,只能由用户确认绑定范围/资料侧裁决,正文改写不可能消除"},{id:"project-contamination",scope:"full-document",category:"scope",fixerDisposition:"fixed",fixerDispositionReason:"对象名污染分支由 sanitizeContaminationCandidates 覆盖;文档编号分支(documentContaminationService.ts:18)无修复器"},{id:"project-basic-placeholder",scope:"full-document",category:"format",fixerDisposition:"manual",fixerDispositionReason:"同源专用修复器 repairKnownProjectBasicPlaceholders 已按「删除无用代码」口径移除(全仓零调用、注册表看不见);当前仅表内占位被 canonical 事实替代,表外正文占位无覆盖"},{id:"standard-final",scope:"full-document",category:"structure",fixerDisposition:"exempt",fixerDispositionReason:"standard-final 组整组重跑的结果容器登记,不产出自身 issue;组内子检测器各自锚定即可"},{id:"fact-coverage",scope:"full-document",category:"evidence_coverage",fixerDisposition:"fixed",fixerDispositionReason:"stageFactLanding 与检测同源同池(uncoveredImportantFacts + 同一事实池),接线 documentPipeline.ts:74"},{id:"page-target",scope:"full-document",category:"structure",fixerDisposition:"exempt",fixerDispositionReason:"页数为估算度量信号(永远 warning 不阻断),无独立可修缺陷;超幅族由字数口径的 length-compression-repair 轮收敛"},{id:"document-budget",scope:"full-document",category:"structure"},{id:"formal-text-gate",scope:"full-document",category:"format"},{id:"heading-uncovered-engineering-items",scope:"full-document",category:"structure"},{id:"writer-missing-section",scope:"full-document",category:"structure",deterministicSafe:!0,fixerDisposition:"fixed",fixerDispositionReason:"由 planned-section-repair 轮按 reason=empty 重写清除;planned=false 的小节不入选"},{id:"critical-section-depth",scope:"chapter",category:"structure"},{id:"critical-section-fact-density",scope:"chapter",category:"evidence_coverage",fixerDisposition:"manual",fixerDispositionReason:"须内容补写,但 issue 无 provenance,按 provenance 过滤的补写轮消费不到(接线 provenance 后可改判 fixed)"},{id:"chapter-fact-density",scope:"chapter",category:"evidence_coverage",fixerDisposition:"exempt",fixerDispositionReason:"质量报告阶段被降级为 info(消息尾句命中 FLOW_DIAGNOSTIC_ISSUE_RE)不阻断;其修复手段是写作期块级重写重试"},{id:"construction-org-professional-audit",scope:"chapter",category:"professional_chain",fixerDisposition:"manual",fixerDispositionReason:"聚合 issue 无 category/provenance 无法被锚定消费,且 5 通道中 3 通道(参数密度/工作包要素/表格空字段)无修复器"},{id:"toc-consistency",scope:"full-document",category:"structure",deterministicSafe:!0,fixerDisposition:"fixed",fixerDispositionReason:"fixTocFromBody 按正文实际结构重建目录,检测定位=修复定位,已接线三处"},{id:"section-numbering",scope:"full-document",category:"structure",deterministicSafe:!0},{id:"section-count-overflow",scope:"chapter",category:"structure"},{id:"heading-duplicate",scope:"full-document",category:"structure",deterministicSafe:!0},{id:"structure-integrity",scope:"full-document",category:"structure",deterministicSafe:!0},{id:"templated-label",scope:"full-document",category:"structure",deterministicSafe:!0},{id:"title-integrity",scope:"full-document",category:"structure"},{id:"evaluation-criteria-coverage",scope:"full-document",category:"evidence_coverage",fixerDisposition:"manual",fixerDispositionReason:"正文核心词缺位须内容补写且无修复轮消费;上游只有预防性补挂(constructionBidStructure.ts:445)"},{id:"requirements-coverage",scope:"full-document",category:"evidence_coverage",fixerDisposition:"fixed",fixerDispositionReason:"requirement-response-repair 轮按 provenance 定向补写(requirementResponseRepair.ts:51)"},{id:"fabricated-start-date",scope:"full-document",category:"fact_consistency",deterministicSafe:!0,fixerDisposition:"manual",fixerDispositionReason:"需语义判断该日期是编造还是合法的招标/法规成文日期,确定性删除必误伤;仅 patchGuard 预防式预检,无存量修复"},{id:"field-value-mismatch",scope:"full-document",category:"fact_consistency",deterministicSafe:!0,fixerDisposition:"manual",fixerDispositionReason:"无实现;权威值在 factsModel 可取属可确定性实现但未实现,现只能转人工"},{id:"area-arithmetic",scope:"full-document",category:"fact_consistency",deterministicSafe:!0,fixerDisposition:"manual",fixerDispositionReason:"地上/地下/单体哪个是错值须资料裁决;同族 scale 修复器显式声明对该三项不做确定性替换"},{id:"resource-consistency",scope:"full-document",category:"fact_consistency",authorities:["laborPeak"]},{id:"node-schedule-consistency",scope:"full-document",category:"fact_consistency",fixerDisposition:"fixed",fixerDispositionReason:"fixNodeScheduleConflicts(fixers.ts:1010),挂 applyNumericConsistencyDeterministicFixes steps"},{id:"cross-section-numeric-conflict",scope:"full-document",category:"fact_consistency",fixerDisposition:"fixed",fixerDispositionReason:"fixCrossSectionNumericConflicts(fixers.ts:1195),同链 steps"},{id:"fact-reconciliation",scope:"full-document",category:"fact_consistency",authorities:["blueprint"]},{id:"greening-maintenance-mismatch",scope:"full-document",category:"fact_consistency",authorities:["greeningMaintenance"]},{id:"street-light-count-mismatch",scope:"full-document",category:"fact_consistency",fixerDisposition:"manual",fixerDispositionReason:"正文常为分型号明细而清单只锁总数,确定性替换会写坏;同族 greening-maintenance 有修复器,此其一无"},{id:"spec-location-mismatch",scope:"full-document",category:"fact_consistency"},{id:"blueprint-citation-consistency",scope:"full-document",category:"fact_consistency",authorities:["blueprint"],fixerDisposition:"fixed",fixerDispositionReason:"fixQuantityAuthorityConflicts(fixers.ts:1304)经 quantityAnchors 直连,含链尾重放"},{id:"cross-project-value-copy",scope:"full-document",category:"fact_consistency",authorities:["blueprint"],fixerDisposition:"fixed",fixerDispositionReason:"global-consistency-repair 轮消费(globalQualityGates.ts:1398);无专用确定性修复器"},{id:"phase-labor-mixing",scope:"full-document",category:"fact_consistency",authorities:["blueprint"]},{id:"equipment-batch-conflict",scope:"full-document",category:"fact_consistency",authorities:["blueprint"]},{id:"preliminary-action-timing",scope:"full-document",category:"fact_consistency",authorities:["blueprint"],fixerDisposition:"fixed",fixerDispositionReason:"fixPreliminaryActionTimingDeterministically 与检测共用 scanPreliminaryActionTimingFindings 同源单扫描,接线 postReviewSurface.ts:274"},{id:"foundation-form-residue",scope:"full-document",category:"fact_consistency",fixerDisposition:"fixed",fixerDispositionReason:"global-consistency-repair 轮消费(globalQualityGates.ts:1407→:1500)"},{id:"ambiguous-either-or",scope:"full-document",category:"fact_consistency",authorities:["supportSystem"]},{id:"excavation-depth-lock",scope:"full-document",category:"fact_consistency",fixerDisposition:"fixed",fixerDispositionReason:"global-consistency-repair 轮消费,另有路由特例与权威值注入(:1533/:1580)"},{id:"excavation-hazard-classification",scope:"full-document",category:"fact_consistency",fixerDisposition:"manual",fixerDispositionReason:"需按 canonical 深度补写分级结论句,当前无任何修复路径"},{id:"support-form-fact-consistency",scope:"full-document",category:"fact_consistency",authorities:["supportSystem"],fixerDisposition:"manual",fixerDispositionReason:"与 support-system-conflict 判据不同源(读 canonical.byKey.foundation_support_form),不可复用其修复器"},{id:"equipment-entry-timing",scope:"full-document",category:"fact_consistency",fixerDisposition:"fixed",fixerDispositionReason:"fixEquipmentEntryTimingDeterministically(postReviewSurface.ts:287),与检测同源单扫描"},{id:"fabricated-award",scope:"full-document",category:"fact_consistency",fixerDisposition:"manual",fixerDispositionReason:"白名单外奖项须回招标原文逐字比对并整体改写创优叙述,无确定性路径"},{id:"bidder-qualification-section",scope:"full-document",category:"scope",fixerDisposition:"fixed",fixerDispositionReason:"stripTenderClauseFragmentHeadings(markdownCleanup.ts:622)删标题;仅覆盖两条句式规则,资格词表分支未覆盖"},{id:"cross-chapter-duplicate-section",scope:"chapter",category:"structure",fixerDisposition:"manual",fixerDispositionReason:"同名小节归并需判断内容归属,确定性路径被有意排除(dedupeDuplicateSectionHeadings 仅章内)"},{id:"basic-info-schedule-field",scope:"full-document",category:"fact_consistency",fixerDisposition:"manual",fixerDispositionReason:"现有归一化的收场是「非法值被拒收→单元格变空」,属以删除通过门禁(P2-2 同口径禁止),不判 fixed"},{id:"duplicate-table",scope:"full-document",category:"table"},{id:"duplicate-paragraph",scope:"full-document",category:"structure"},{id:"paragraph-tail-repeat",scope:"full-document",category:"style",deterministicSafe:!0},{id:"collision-numbered-heading",scope:"full-document",category:"structure",deterministicSafe:!0},{id:"inverted-date-range",scope:"full-document",category:"fact_consistency",deterministicSafe:!0},{id:"resource-triad-section-hierarchy",scope:"full-document",category:"structure",fixerDisposition:"manual",fixerDispositionReason:"修复需重排章节层级/拆分小节,结构性重写且无确定性路径"},{id:"support-system-conflict",scope:"full-document",category:"fact_consistency",authorities:["supportSystem"],fixerDisposition:"fixed",fixerDispositionReason:"fixSupportSystemConflicts(fixers.ts:38),同链 steps;权威缺失时不动作,属部分覆盖"},{id:"dangerous-list-consistency",scope:"full-document",category:"fact_consistency",fixerDisposition:"manual",fixerDispositionReason:"两处清单需合并为唯一清单并统一项名与分级,属内容改写"},{id:"hazard-exclusion-contradiction",scope:"full-document",category:"fact_consistency",fixerDisposition:"manual",fixerDispositionReason:"排除声明与清单孰对取决于资料是否真达判定阈值,须资料裁决"},{id:"six-hundred-percent-coverage",scope:"full-document",category:"evidence_coverage",fixerDisposition:"manual",fixerDispositionReason:"补写型修复器已随 4.41「零确定性正文注入」架构决策删除(fixers.ts:1625),内容缺失只能由生成侧补齐"},{id:"self-undermining-candidate",scope:"full-document",category:"style"},{id:"paragraph-opening-repeat",scope:"full-document",category:"style",deterministicSafe:!0},{id:"flow-form-repeat",scope:"full-document",category:"style"},{id:"skeleton-fingerprint",scope:"full-document",category:"style"},{id:"sentence-pattern-repeat",scope:"full-document",category:"style"},{id:"repeated-word",scope:"full-document",category:"style",deterministicSafe:!0},{id:"commercial-data-in-body",scope:"full-document",category:"scope",fixerDisposition:"fixed",fixerDispositionReason:"stripCommercialDataBodyLines(postReviewSurface.ts:209),与检测同口径"},{id:"overview-recap",scope:"full-document",category:"style"},{id:"closure-phrase-density-cap",scope:"full-document",category:"style",fixerDisposition:"manual",fixerDispositionReason:"缺陷是词频密度(语义/文风改写),无修复轮按 provenance 消费;fiveElementClosureBoost 的补句池刻意避开闭环密度词"},{id:"parameter-concept-conflict",scope:"full-document",category:"fact_consistency"},{id:"internal-terminology-anchor",scope:"full-document",category:"style",deterministicSafe:!0},{id:"construction-system-coverage",scope:"chapter",category:"evidence_coverage",fixerDisposition:"manual",fixerDispositionReason:"某专业系统整章零覆盖须补写施工方案正文,属内容生成"},{id:"dangerous-applicability",scope:"full-document",category:"evidence_coverage"},{id:"innovation-tech-coverage",scope:"full-document",category:"evidence_coverage",fixerDisposition:"manual",fixerDispositionReason:"缺节场景可被补写轮间接覆盖,但「小节 <200 字的部分成稿」场景无任何路径(补写轮 alsoAnchoredTo 接上后可改判 fixed)"},{id:"instruction-like-heading",scope:"full-document",category:"structure",fixerDisposition:"fixed",fixerDispositionReason:"仅 tender-clause-heading-strip 一支(^#{3,4} 且判据为 isTenderClauseFragmentTitle);主判据 instructionTitleRe(是否涉及/按需生成/视情况/注意事项)与 H2 级碎片无任何正文修复器"},{id:"formal-heading-hierarchy",scope:"full-document",category:"structure",deterministicSafe:!0,fixerDisposition:"manual",fixerDispositionReason:"非法 H2 的现成修复器 demoteNonFormalH2 已按「删除无用代码」口径移除(全仓零调用);当前无任何生产修复路径"},{id:"formal-content-integrity",scope:"full-document",category:"format",deterministicSafe:!0,fixerDisposition:"manual",fixerDispositionReason:"截断句须补全句子内容;fixTruncatedSentenceArtifacts 修的是标点叠用且锚在另一个 id 上,非同源"},{id:"punctuation-artifact",scope:"full-document",category:"format",deterministicSafe:!0},{id:"table-quality",scope:"full-document",category:"table",deterministicSafe:!0},{id:"table-spam",scope:"full-document",category:"table",deterministicSafe:!0},{id:"basis-regulations-coverage",scope:"full-document",category:"fact_consistency",authorities:["blueprint"]},{id:"basis-regulations-cross",scope:"full-document",category:"fact_consistency"},{id:"resource-breakdown-consistency",scope:"full-document",category:"fact_consistency",authorities:["blueprint"]},{id:"section-content-integrity",scope:"chapter",category:"structure"},{id:"professional-content",scope:"chapter",category:"professional_chain",fixerDisposition:"manual",fixerDispositionReason:"缺项须补写专业内容,全仓无同源修复函数;且本 issue 无 provenance,按 provenance 过滤的修复轮消费不到,属真孤儿"},{id:"professional-score",scope:"chapter",category:"professional_chain"},{id:"generic-professional-content",scope:"chapter",category:"professional_chain",fixerDisposition:"manual",fixerDispositionReason:"判据=词面 8 词命中≥6 + bge 语义门;最近的套话修复器(isTemplatePrefixSentence + FILLER_SEMANTIC_QUERIES)判据不同源,不构成覆盖"},{id:"management-measure-number",scope:"chapter",category:"professional_chain",fixerDisposition:"manual",fixerDispositionReason:"需补责任主体/频次/台账/整改复查的语义补写,确定性路径不存在;且无 provenance,修复轮看不见"},{id:"closed-loop-density",scope:"full-document",category:"control_loop",fixerDisposition:"exempt",fixerDispositionReason:"纯度量信号:判据是闭环块密度对标 max(6,字数/1500),注释自述与评分同口径不阻断门禁;补闭环词还会撞 closure-phrase-density-cap 上限,不宜自动改"},{id:"cross-chapter-consistency",scope:"full-document",category:"fact_consistency"},{id:"process-spec-conflict",scope:"full-document",category:"fact_consistency",fixerDisposition:"fixed",fixerDispositionReason:"applyDeterministicConsistencyFixes 与检测端同判据同归属规则(collectLayerNumbers+buildSpecActionGate),已接线两条确定性链"},{id:"evidence-usage-coverage",scope:"full-document",category:"evidence_coverage",fixerDisposition:"manual",fixerDispositionReason:"缺陷是「未引用该类事实」,只能靠补写正文;fact-distribution-round 与 important-unplaced-facts 轮判据均不同源且不复检本 id"},{id:"paragraph-generic",scope:"full-document",category:"style",fixerDisposition:"manual",fixerDispositionReason:"判据=段落长度 + 10 词泛化表 + bge 具体性门;fillerParagraphIssues 用另一套 17 条词面 + 14 语义原型,同族不同判据"},{id:"construction-org-generic-language",scope:"chapter",category:"style",fixerDisposition:"fixed",fixerDispositionReason:"由 templating-repair 轮消费(该轮走 globalQualityGates 内联的 fillerDensityReport,非本 id 产出的 issue;本 gate 为内联检查的同族检测器,见幻影锚点收口说明)"},{id:"construction-org-control-loop",scope:"chapter",category:"control_loop"},{id:"construction-org-professional-chain",scope:"chapter",category:"professional_chain"},{id:"construction-org-consistency",scope:"full-document",category:"fact_consistency",fixerDisposition:"manual",fixerDispositionReason:"需按资料裁决哪个口径为真且涉及跨表改写;同族修复器(fixEquipmentBatchConflicts/fixLaborPeakConflict/resource-breakdown)判据均不同源"},{id:"construction-org-chapter-data-coverage",scope:"chapter",category:"evidence_coverage",fixerDisposition:"manual",fixerDispositionReason:"属「章内缺项目事实」的补写型缺陷,仅生成侧/人工可解"},{id:"construction-org-major-content",scope:"chapter",category:"professional_chain"},{id:"construction-org-division-section",scope:"chapter",category:"structure"},{id:"major-content-governance",scope:"full-document",category:"structure",fixerDisposition:"fixed",fixerDispositionReason:"仅清单口径词族有修复器(postReviewSurface.ts:313);表格承载正文族无,仍走终门禁"},{id:"construction-org-bonus-module",scope:"chapter",category:"professional_chain",fixerDisposition:"exempt",fixerDispositionReason:"加分项建议而非缺陷(代码自述为避免污染缺陷计分,只产出 info 级「高分模块」建议)"},{id:"chapter-dependency",scope:"chapter",category:"professional_chain",fixerDisposition:"manual",fixerDispositionReason:"需在指定章补写投入调配/工艺控制/应急闭环内容,属语义补写;且无 provenance"},{id:"document-delivery-score",scope:"full-document",category:"professional_chain",fixerDisposition:"exempt",fixerDispositionReason:"纯评分汇总载体(总分 x/10 的元信息),其内部调用的三个检测器各自已有 id 与处置,本 id 不产出缺陷"},{id:"generated-fact-verification",scope:"full-document",category:"fact_consistency",fixerDisposition:"manual",fixerDispositionReason:"反查失败数值的自动消除即删除式修复(P2-2 已明令禁止),补齐权威属资料侧动作——与 numeric-traceability 同口径"},{id:"numeric-traceability",scope:"full-document",category:"evidence_coverage",fixerDisposition:"manual",fixerDispositionReason:"修复器已按 P2-2 停用(删除式修复被明令禁止);补齐权威值属资料/配置侧动作"},{id:"table-arithmetic-consistency",scope:"full-document",category:"evidence_coverage"},{id:"duplicate-basic-info",scope:"full-document",category:"structure",fixerDisposition:"fixed",fixerDispositionReason:"fixDuplicateBasicInfoTables 覆盖重复表族;「表前重复逐项叙述」族未覆盖(已扩展锚定到该修复器)"},{id:"formal-style",scope:"full-document",category:"style"},{id:"tertiary-heading",scope:"full-document",category:"structure",deterministicSafe:!0},{id:"min-chapter-section",scope:"chapter",category:"structure",fixerDisposition:"fixed",fixerDispositionReason:"mergeDuplicateThematicSections 与检测共用桶键 classifyThematicSectionKey,接线 duplicate-theme-merge 轮;精确同名小节族另由 heading-duplicate-merge 覆盖"},{id:"precise-fact-usage",scope:"full-document",category:"fact_consistency"},{id:"parameter-obligation-usage",scope:"full-document",category:"fact_consistency"},{id:"boq-placement",scope:"full-document",category:"evidence_coverage"},{id:"stage-phrasing",scope:"full-document",category:"fact_consistency",fixerDisposition:"manual",fixerDispositionReason:"阶段划分口径统一属语义改写,且该 issue 无 provenance,修复轮按 provenance 过滤消费不到"},{id:"emergency-section-depth",scope:"full-document",category:"structure"},{id:"boq-row-trace",scope:"full-document",category:"evidence_coverage",fixerDisposition:"exempt",fixerDispositionReason:"只产 warning,既不断阻断也不进人工清单(清单由 blockingIssues 构建);同轴真缺口另有 blocker 通道 boq-placement"},{id:"drawing-reference",scope:"full-document",category:"evidence_coverage"},{id:"web-evidence-leakage",scope:"full-document",category:"scope",fixerDisposition:"exempt",fixerDispositionReason:"warning 级度量信号不阻断、不进人工清单,且全仓不存在该词族的删除/改写函数"},{id:"formal-placeholder",scope:"full-document",category:"format",deterministicSafe:!0},{id:"prompt-example-leak",scope:"full-document",category:"format",fixerDisposition:"manual",fixerDispositionReason:"「疑似样例」删除必误伤(样例块可能撞合法正文),无实现且无消费轮"},{id:"degenerate-content",scope:"chapter",category:"style",fixerDisposition:"manual",fixerDispositionReason:"唯一可能消费它的章级重扫入口 lightweightChapterIssues 已按「删除无用代码」口径移除(全仓零调用);退化输出的修复等同重新生成小节"},{id:"planned-auto-spec-gate",scope:"full-document",category:"structure"},{id:"bid-composition-body-table",scope:"full-document",category:"structure",fixerDisposition:"fixed",fixerDispositionReason:"dismantleBodyTables 同判据 LLM 拆表改写;finalize 侧只重跑禁表分支(章级授权口径未覆盖)"},{id:"bid-composition-body-figure",scope:"full-document",category:"structure",fixerDisposition:"fixed",fixerDispositionReason:"removeUnwantedDrawingImages(markdownComposer.ts:1905)与检测共用 FIGURE_PLACEHOLDER_RE"},{id:"identity-marks-forbidden",scope:"full-document",category:"format",fixerDisposition:"manual",fixerDispositionReason:"需删/改写业绩获奖证书类敏感句,可自动化但未实现;当前只有写作期与修复提示词约束"},{id:"planned-structure",scope:"full-document",category:"structure"},{id:"table-caption",scope:"full-document",category:"format"},{id:"prompt-document-rule",scope:"full-document",category:"format",fixerDisposition:"fixed",fixerDispositionReason:"applyPromptDocumentRules 覆盖残留封面/目录/缺必需表/禁止词行;指令型标题、缺指定一级章节、缺关键词、字数不足族无实现"},{id:"local-adaptation-keyword",scope:"full-document",category:"evidence_coverage",fixerDisposition:"fixed",fixerDispositionReason:"仅 blocker 通道(工伤保险缺失)有修复器(postReviewSurface.ts:301);另两条属度量/增强项,不阻断"},{id:"boq-division-coverage",scope:"full-document",category:"evidence_coverage",fixerDisposition:"fixed",fixerDispositionReason:"enforceBoqDivisionCoverageInMethodChapters(postReviewSurface.ts:400)链尾确定性补写"},{id:"authority-audit-gap",scope:"full-document",category:"fact_consistency",fixerDisposition:"fixed",fixerDispositionReason:"numeric-verification 轮收敛(numericVerification.ts:131)。覆盖已被削弱:其确定性兜底 demoteUnsourcedNumericTokens 已按 P2-2 停用,只剩 LLM 一条路"},{id:"source-enumeration",scope:"full-document",category:"style",deterministicSafe:!0,fixerDisposition:"fixed",fixerDispositionReason:"cleanFormalSourcePhrases(deterministicStage5.ts:161)与检测共用同一词表;该 id 从未经 det() 登记,属漏登记"},{id:"meta-discourse-declaration",scope:"full-document",category:"style",deterministicSafe:!0},{id:"finish-thickness",scope:"full-document",category:"fact_consistency",deterministicSafe:!0},{id:"formula-residue",scope:"full-document",category:"format",deterministicSafe:!0},{id:"truncated-sentence",scope:"full-document",category:"format",deterministicSafe:!0},{id:"atlas-reference-phrase",scope:"full-document",category:"format",deterministicSafe:!0},{id:"block-structure-contract",scope:"chapter",category:"structure",fixerDisposition:"exempt",fixerDispositionReason:"写作期块级执行器门,返回计数不产出 ValidationIssue,无对象可被 FixerEntry 锚定(重写重试即其修复手段)"},{id:"block-fact-density",scope:"chapter",category:"evidence_coverage",fixerDisposition:"exempt",fixerDispositionReason:"写作期块级执行器门:不产出 ValidationIssue 只返回 BlockDensityAssessment,首轮阻断重写即其修复手段"},{id:"block-templating",scope:"chapter",category:"style",fixerDisposition:"exempt",fixerDispositionReason:"写作期块级执行器门:不产出 ValidationIssue 只返回 BlockTemplatingVerdict;终检侧由 templating-repair 轮承载"},{id:"block-attribution-quantification",scope:"chapter",category:"professional_chain",fixerDisposition:"exempt",fixerDispositionReason:"写作期块级执行器门:不产出 ValidationIssue 只返回 AttributionQuantificationVerdict"},{id:"block-numeric-reconciliation",scope:"chapter",category:"fact_consistency",fixerDisposition:"exempt",fixerDispositionReason:"写作期块级执行器门:不产出 ValidationIssue 只返回 NumericReconciliation,阻断重写即修复手段"},{id:"block-format-constraints",scope:"chapter",category:"format",fixerDisposition:"exempt",fixerDispositionReason:"写作期块级执行器门:不产出 ValidationIssue 只返回命中行;终检侧同词表门为 formal-text-gate"}];function s(a){return r.find(b=>b.id===a)}function t(a,b){let c=new Set(a??[]),d=new Set(b??[]);if(c.size!==d.size)return!1;for(let a of c)if(!d.has(a))return!1;return!0}function u(){let a=[],b=[...h,...i,...k,...j,...m];for(let c of b){let b=s(c.anchoredTo);if(!b){a.push(`修复器 ${c.id} 锚定检测器 ${c.anchoredTo} 未在注册表声明(检测定位=修复定位强制同源)`);continue}for(let d of(t(c.authorities,b.authorities)||a.push(`修复器 ${c.id}(authorities=${JSON.stringify(c.authorities??[])})与锚定检测器 ${c.anchoredTo}(authorities=${JSON.stringify(b.authorities??[])})权威口径不一致`),c.alsoAnchoredTo??[])){let b=s(d);b?t(c.authorities,b.authorities)||a.push(`修复器 ${c.id}(authorities=${JSON.stringify(c.authorities??[])})与扩展锚定检测器 ${d}(authorities=${JSON.stringify(b.authorities??[])})权威口径不一致`):a.push(`修复器 ${c.id} 扩展锚定检测器 ${d} 未在注册表声明(检测定位=修复定位强制同源)`)}if("llm-patch"===c.kind&&!c.patchGuard){a.push(`LLM patch 修复器 ${c.id} 未声明 patchGuard(修复过程会重新引入已知坏内容,必须预检)`);continue}for(let b of c.patchGuard?.detectors??[]){let d=s(b);d?d.deterministicSafe||a.push(`修复器 ${c.id} patchGuard 引用检测器 ${b} 未标记 deterministicSafe(patchGuard 只收录零误伤确定性检测器)`):a.push(`修复器 ${c.id} patchGuard 引用检测器 ${b} 未在注册表声明`)}}for(let[b,c]of h.entries())h.slice(0,b).some(a=>a.id===c.id)&&a.push(`确定性修复器锚定声明重复:${c.id}`);let c=new Set(d.aW.map(a=>a.key));for(let b of c)h.some(a=>a.id===b)||a.push(`确定性修复器 ${b} 已接入 SURFACE_FIX_STEPS 但未在 DETERMINISTIC_FIXER_ANCHORS 声明锚定检测器`);for(let b of h)c.has(b.id)||a.push(`确定性修复器锚定声明 ${b.id} 无对应 SURFACE_FIX_STEPS 键(声明多余或键已改名)`);for(let[b,c]of i.entries())i.slice(0,b).some(a=>a.id===c.id)&&a.push(`数值裁决器修复器声明重复:${c.id}`);for(let[b,c]of k.entries())k.slice(0,b).some(a=>a.id===c.id)&&a.push(`章草稿级修复器声明重复:${c.id}`);for(let[b,c]of j.entries())j.slice(0,b).some(a=>a.id===c.id)&&a.push(`链内确定性修复器声明重复:${c.id}`);let l=new Set([...h,...i,...k,...m].map(a=>a.id));for(let b of j)l.has(b.id)&&a.push(`链内确定性修复器 ${b.id} 与其它声明表重名(FixerEntry.id 须全局唯一,否则按 id 追溯修复器产生歧义)`);for(let b of r)b.category&&g.has(b.category)||a.push(`检测器 ${b.id} 声明了非法 category(当前=${b.category||"缺失"};合法值:${[...g].join("、")})`);if(a.push(...function(a){let b=[],c=new Set;for(let b of a.fixers)for(let a of(c.add(b.anchoredTo),b.alsoAnchoredTo??[]))c.add(a);let d=new Set(a.pending);for(let c of(d.size!==a.pending.length&&b.push("PENDING_FIXER_DISPOSITION 存在重复 id(欠账清单须唯一)"),d))a.detectors.some(a=>a.id===c)||b.push(`PENDING_FIXER_DISPOSITION 声明了未登记的检测器 ${c}(已改名或已删除,请同步移出欠账清单)`);for(let f of a.detectors){let a=c.has(f.id),g=f.fixerDisposition;if(d.has(f.id)){g?b.push(`检测器 ${f.id} 已完成处置声明(${g})却仍在 PENDING_FIXER_DISPOSITION 中——请从欠账清单移出`):a&&b.push(`检测器 ${f.id} 已有修复器锚定却仍在 PENDING_FIXER_DISPOSITION 中——请从欠账清单移出`);continue}if(!g){a?f.fixerDispositionReason&&b.push(`检测器 ${f.id} 写了 fixerDispositionReason 却未声明 fixerDisposition(说明须挂在明确处置上)`):b.push(`检测器 ${f.id} 既无修复器锚定、也未声明 fixerDisposition(孤儿必须显式 'exempt' 或 'manual' 并说明理由,不得沉默)`);continue}if(!e.has(g)){b.push(`检测器 ${f.id} 声明了非法 fixerDisposition(当前=${g};合法值:${[...e].join("、")})`);continue}"fixed"!==g||a||b.push(`检测器 ${f.id} 声明 fixerDisposition='fixed' 但无任何 FixerEntry 锚定它(声明与事实不符)`),"fixed"!==g&&(a&&b.push(`检测器 ${f.id} 声明 fixerDisposition='${g}' 但已有修复器锚定——声明与事实不符(应改为 'fixed' 或移除多余锚定)`),f.fixerDispositionReason?.trim()||b.push(`检测器 ${f.id} 声明 fixerDisposition='${g}' 但未给出理由(exempt/manual 必须书面说明为何不需要修复器)`))}return b}({detectors:r,fixers:b,pending:f})),a.length>0)throw Error(`检测器/修复器注册表一致性校验失败(${a.length} 项):
242
242
  ${a.map(a=>`- ${a}`).join("\n")}`)}},77088:(a,b,c)=>{c.d(b,{C8:()=>ax,dr:()=>aD,AA:()=>aC,nn:()=>aj,OY:()=>ae,DL:()=>aF,jM:()=>ai,RT:()=>ak,rR:()=>w,R3:()=>z,iV:()=>af,Pd:()=>v,ZP:()=>ao,md:()=>aw,nR:()=>y,m4:()=>x,Nj:()=>aE,eT:()=>U,TF:()=>av,Rx:()=>aq,uw:()=>ay,wY:()=>P,Fq:()=>aG});var d=c(73024),e=c(76760),f=c(48661);let g=[{name:"水准仪",spec:"DS3",quantity:2,purpose:"高程控制测量与标高复核"},{name:"全站仪",spec:"2″级",quantity:1,purpose:"平面控制测量与施工放样"},{name:"经纬仪",spec:"J2",quantity:1,purpose:"轴线投测与角度测量"},{name:"钢卷尺",spec:"50m",quantity:4,purpose:"距离测量与构件尺寸复核"},{name:"靠尺",spec:"2m",quantity:4,purpose:"平整度与垂直度检测"},{name:"水准标尺",spec:"5m",quantity:2,purpose:"水准测量配套"},{name:"混凝土试模",spec:"150mm 立方体",quantity:12,purpose:"混凝土强度试件成型"},{name:"砂浆试模",spec:"70.7mm 立方体",quantity:6,purpose:"砂浆强度试件成型"},{name:"坍落度筒",spec:"标准",quantity:2,purpose:"混凝土拌合物和易性检测"},{name:"环刀",spec:"标准",quantity:6,purpose:"回填土密实度取样"},{name:"灌砂筒",spec:"标准",quantity:4,purpose:"压实度现场检测"},{name:"回弹仪",spec:"标准",quantity:2,purpose:"混凝土强度无损检测"},{name:"电子天平",spec:"0.01g",quantity:1,purpose:"试验称量"},{name:"温湿度计",spec:"标准",quantity:4,purpose:"施工环境温湿度记录"}],h=[{name:"项目部办公区",areaPerCapita:4,locationHint:"现场出入口附近",durationHint:"施工全过程",note:"项目管理人员办公与会议用房"},{name:"工人生活区",areaPerCapita:5,locationHint:"场内有组织的生活区(远离作业区)",durationHint:"施工全过程",note:"工人宿舍、食堂与卫生设施"},{name:"材料堆放场",area:800,locationHint:"场内运输道路旁",durationHint:"施工全过程",note:"钢筋、管材、砂石料分类堆放并分区标识"},{name:"加工区(钢筋/木工)",area:300,locationHint:"材料堆放场邻侧",durationHint:"主体施工期间",note:"钢筋加工棚与木工加工棚"},{name:"机械设备停放区",area:200,locationHint:"场内生产区",durationHint:"施工全过程",note:"施工机械停放与日常维护"},{name:"试验用房",area:60,locationHint:"项目部办公区附近",durationHint:"施工全过程",note:"标准养护室与现场试验操作间"},{name:"临时用电配电房",area:30,locationHint:"靠近负荷中心处",durationHint:"施工全过程",note:"总配电房与分配电箱布置"},{name:"消防与卫生设施",area:40,locationHint:"生活区与材料区分别设置",durationHint:"施工全过程",note:"消防器材点、沉淀池与垃圾收集点"}],i=[{zone:"east",pattern:/上海|江苏|浙江|安徽|福建|江西|山东/u,climate:{rainySeason:"6-8月",highTemp:"7-8月",winter:"12-2月"}},{zone:"south",pattern:/广东|广西|海南/u,climate:{rainySeason:"4-9月",highTemp:"6-9月",winter:"12-2月"}},{zone:"north",pattern:/北京|天津|河北|山西|内蒙古/u,climate:{rainySeason:"7-8月",highTemp:"7-8月",winter:"11-3月"}},{zone:"northeast",pattern:/辽宁|吉林|黑龙江/u,climate:{rainySeason:"7-8月",highTemp:"7月",winter:"11-3月"}},{zone:"northwest",pattern:/陕西|甘肃|宁夏|青海|新疆/u,climate:{rainySeason:"7-8月",highTemp:"7-8月",winter:"11-3月"}},{zone:"southwest",pattern:/四川|重庆|云南|贵州|西藏/u,climate:{rainySeason:"6-9月",highTemp:"7-8月",winter:"12-2月"}},{zone:"central",pattern:/湖北|湖南|河南/u,climate:{rainySeason:"6-8月",highTemp:"7-8月",winter:"12-2月"}}];function j(a){let b=`${a.name} ${a.description}`;return/塑料管|管道|检查井|雨水口|化粪池|涵管/u.test(b)?"管道铺设":/挖一般土方|挖沟槽|挖基坑|回填|清淤|余方|弃置|土方/u.test(b)&&"m3"===a.unit?"土方工程":/混凝土|垫层|涵头|压顶/u.test(b)&&"m3"===a.unit?"混凝土工程":/水泥混凝土|路床|铺装|道路|青砖|散水|块料/u.test(b)&&"m2"===a.unit?"道路铺装":/砌筑|砌体|砖/u.test(b)?"砌筑工程":/绿化|栽植|种植|苗木|草籽|喷播|灌木|乔木|色带|草坪/u.test(b)?"绿化工程":"安装工程"}let k={id:"village-municipal",projectTypes:["市政","园林绿化"],milestoneGroups:[{key:"prep",label:"施工准备与清杂拆除",pattern:/清杂|拆除|场地平整|临时/u},{key:"pipe",label:"污水管网工程",pattern:/塑料管|检查井|管网|排水|化粪池|雨水口/u},{key:"road",label:"道路铺装工程",pattern:/道路|路床|水泥混凝土|级配碎石|路缘石|青砖|散水|过路涵/u},{key:"landscape",label:"景观与绿化工程",pattern:/景观|绿化|栽植|种植|苗木|喷播|小菜园|沟塘|清淤/u},{key:"lighting",label:"亮化与收尾工程",pattern:/路灯|亮化|配电|电缆|防雷/u}],groupOfEntry:j,tradeMapping:[{trade:"管道工",pattern:/塑料管|管道|检查井|雨水口|化粪池|闭水|涵管|排水/u},{trade:"混凝土工",pattern:/混凝土|水泥砂浆|垫层|涵头|压顶/u},{trade:"瓦工",pattern:/砌筑|砌体|砖|路缘石|铺装|侧石|平石|块料|踏步|台阶/u},{trade:"绿化工",pattern:/绿化|栽植|种植|苗木|草籽|喷播|养护|灌木|乔木|色带|草坪/u},{trade:"电工",pattern:/路灯|配电|电缆|强电|防雷|接地|灯具|亮化/u},{trade:"普工",pattern:/土方|清杂|拆除|平整|回填|清淤|开挖/u}],laborUnitRange:{管道铺设:{unit:"m",min:.15,max:.3},土方工程:{unit:"m3",min:.08,max:.15},混凝土工程:{unit:"m3",min:.8,max:1.5},道路铺装:{unit:"m2",min:.3,max:.6},砌筑工程:{unit:"m3",min:1.2,max:2},绿化工程:{unit:"m2",min:.08,max:.15},安装工程:{unit:"项",min:0,max:0}},equipmentMapping:[{name:"挖掘机",spec:"0.6~1.0m\xb3",pattern:/人机配合|开挖|挖土|沟槽/u,unit:"m3",basis:"人机配合开挖(清单特征)"},{name:"自卸汽车",spec:"8t",pattern:/余方弃置|弃方|外运|回填/u,unit:"m3",basis:"土方运输与回填(清单条目)"},{name:"压路机",spec:"8~12t",pattern:/碾压|压实度/u,unit:"m2",basis:"路床碾压与压实度要求(清单特征)"},{name:"蛙式打夯机",spec:"",pattern:/回填|夯实/u,unit:"m3",basis:"沟槽回填夯实(清单条目)"},{name:"混凝土搅拌运输车",spec:"",pattern:/商品混凝土|C\d{2}混凝土/u,unit:"m3",basis:"商品混凝土运输(清单特征)"},{name:"插入式振捣器",spec:"",pattern:/混凝土浇筑|振捣/u,unit:"m3",basis:"混凝土浇筑(清单条目)"},{name:"洒水车",spec:"",pattern:/养护|绿化|喷播|栽植/u,unit:"m2",basis:"绿化养护与洒水(清单条目)"},{name:"高空作业车",spec:"",pattern:/路灯|灯具安装/u,unit:"套",basis:"路灯安装(清单条目)"}],machinePowerTable:[{name:"挖掘机",kw:90},{name:"自卸汽车",kw:120},{name:"压路机",kw:75},{name:"蛙式打夯机",kw:3},{name:"混凝土搅拌运输车",kw:110},{name:"插入式振捣器",kw:1.5},{name:"洒水车",kw:90},{name:"高空作业车",kw:60}],inspectionBatchRules:[{scope:"污水管网管道",namePattern:/塑料管|管道/u,unit:"m",divisor:200,descTemplate:"管道闭水试验分段检验,按每 200m 一段划分约 {count} 段(总长 {total}m)"},{scope:"道路工程",namePattern:/水泥混凝土|级配碎石|路床/u,unit:"m2",divisor:200,descTemplate:"路床压实度按每层每 200m\xb2 不少于 1 点检验,约 {count} 点(总面积 {total}m\xb2)"},{scope:"检查井",namePattern:/检查井/u,unit:"",divisor:1,descTemplate:"检查井逐座验收,共 {total} 座"}],difficultyTemplates:[{name:a=>`${a.villages.length} 个自然村分散施工组织协调`,measure:"按自然村分组划分施工段,多村平行施工 + 村内流水作业,配置专职协调员",basis:"清单按自然村分组",test:a=>a.villages.length>=2},{name:"雨季管网沟槽施工",measure:"雨季排水与边坡防护,分段开挖、快速回填(联动季节施工措施板块)",basis:"清单含沟槽开挖与管道铺设条目",test:a=>a.entries.some(a=>/挖沟槽|沟槽开挖|塑料管铺设/u.test(`${a.name} ${a.description}`))},{name:"村庄内道路施工交通疏导",measure:"分段封闭施工,设置临时道路保障居民出行(补疑条款:居民出行临时道路)",basis:"清单含道路工程条目且村内施工",test:a=>a.villages.length>0&&a.entries.some(a=>/道路|路床|路面/u.test(a.name))},{name:"既有杆管线保护",measure:"开挖前探测交底,杆线保护措施费含在清单单价内",basis:"清单特征原文含杆线保护条款",test:a=>a.entries.some(a=>/杆线|管线保护|既有管线/u.test(a.description))}],deploymentFlowFallback:"分区段流水作业",multiVillageFlow:a=>`多村平行施工 + 村内流水作业(${a} 个自然村分组)`,sequenceFallback:"清杂拆除 → 管网道路 → 景观绿化 → 亮化收尾",climateZone:"east",powerFallbackText:"临时用电以村庄既有电源分散接入为主,各施工组单独设置配电箱与计量表(柴油机械不计入用电负荷,电动机具零星分散)",waterNoteText:"施工用水以洒水车供水为主,总用水量按管网分段配置"},l={id:"building",projectTypes:["房建","装饰装修"],milestoneGroups:[{key:"prep",label:"施工准备与三通一平",pattern:/清杂|拆除|场地平整|临建|临时|三通一平/u},{key:"foundation",label:"基础工程",pattern:/桩基|基础|基坑|地下室|降水|支护|土方|挖方|回填/u},{key:"structure",label:"主体结构工程",pattern:/钢筋|模板|砌体|主体|框架|剪力墙|现浇|混凝土/u},{key:"finish",label:"装饰装修工程",pattern:/装饰|抹灰|防水|保温|门窗|屋面|涂料|吊顶|幕墙/u},{key:"mep",label:"安装与收尾工程",pattern:/电气|给排水|暖通|消防|电梯|智能化|收尾|竣工|调试/u}],groupOfEntry:function(a){let b=`${a.name} ${a.description}`;return/土方|挖方|回填|弃置|清淤/u.test(b)&&"m3"===a.unit?"土方工程":/钢筋|植筋/u.test(b)?"钢筋工程":/模板|支模/u.test(b)?"模板工程":/混凝土|垫层|现浇/u.test(b)?"混凝土工程":/砌筑|砌体|砖/u.test(b)?"砌筑工程":/防水|卷材|涂膜/u.test(b)?"防水工程":/保温|挤塑|聚苯/u.test(b)?"保温工程":/装饰|抹灰|涂料|吊顶|幕墙|墙砖|地砖|油漆|门窗/u.test(b)?"装饰工程":/电气|给排水|配电|照明|灯具|插座|管线|穿线|桥架|暖通|消防|电梯/u.test(b)?"安装电气":"安装工程"},tradeMapping:[{trade:"钢筋工",pattern:/钢筋|植筋/u},{trade:"模板工",pattern:/模板|支模/u},{trade:"防水工",pattern:/防水|卷材|涂膜/u},{trade:"架子工",pattern:/脚手架|外架/u},{trade:"抹灰工",pattern:/抹灰|粉刷|抹面/u},{trade:"水电工",pattern:/电气|给排水|配电|照明|灯具|插座|管线|穿线|桥架/u},{trade:"保温工",pattern:/保温|挤塑|聚苯/u},{trade:"混凝土工",pattern:/混凝土|水泥砂浆|垫层/u},{trade:"瓦工",pattern:/砌筑|砌体|砖|块料|铺装|墙砖|地砖/u},{trade:"普工",pattern:/土方|清杂|拆除|平整|回填|清淤|开挖/u}],laborUnitRange:{土方工程:{unit:"m3",min:.08,max:.15},钢筋工程:{unit:"t",min:.8,max:1.5},模板工程:{unit:"m2",min:.3,max:.6},混凝土工程:{unit:"m3",min:.8,max:1.5},砌筑工程:{unit:"m3",min:1.2,max:2},防水工程:{unit:"m2",min:.06,max:.12},保温工程:{unit:"m2",min:.15,max:.3},装饰工程:{unit:"m2",min:.2,max:.4},安装电气:{unit:"m",min:.08,max:.15},安装工程:{unit:"项",min:0,max:0}},equipmentMapping:[{name:"挖掘机",spec:"0.6~1.0m\xb3",pattern:/开挖|挖土|基坑|土方/u,unit:"m3",basis:"土方开挖(清单特征)"},{name:"自卸汽车",spec:"8t",pattern:/余方弃置|弃方|外运|回填/u,unit:"m3",basis:"土方运输与回填(清单条目)"},{name:"插入式振捣器",spec:"",pattern:/混凝土浇筑|振捣/u,unit:"m3",basis:"混凝土浇筑(清单条目)"},{name:"蛙式打夯机",spec:"",pattern:/回填|夯实/u,unit:"m3",basis:"回填夯实(清单条目)"},{name:"塔式起重机",spec:"QTZ63",pattern:/塔吊|塔式起重机/u,unit:"项",basis:"主体结构垂直运输(清单特征)"},{name:"施工升降机",spec:"SC200/200",pattern:/施工电梯|施工升降机/u,unit:"项",basis:"人员与材料垂直运输(清单特征)"},{name:"钢筋加工机械",spec:"",pattern:/钢筋/u,unit:"t",basis:"钢筋加工(清单条目)"},{name:"电焊机",spec:"",pattern:/焊接|钢结构|预埋/u,unit:"t",basis:"钢结构焊接与预埋(清单条目)"},{name:"混凝土输送泵",spec:"",pattern:/泵送|混凝土泵/u,unit:"m3",basis:"混凝土泵送(清单特征)"}],machinePowerTable:[{name:"挖掘机",kw:90},{name:"自卸汽车",kw:120},{name:"插入式振捣器",kw:1.5},{name:"蛙式打夯机",kw:3},{name:"塔式起重机",kw:45},{name:"施工升降机",kw:33},{name:"钢筋加工机械",kw:15},{name:"电焊机",kw:15},{name:"混凝土输送泵",kw:90},{name:"物料提升机",kw:11}],inspectionBatchRules:[{scope:"钢筋工程",namePattern:/钢筋/u,unit:"t",divisor:60,descTemplate:"钢筋按进场检验批划分,每 60t 一批,约 {count} 批(总量 {total}t)"},{scope:"混凝土工程",namePattern:/混凝土/u,unit:"m3",divisor:100,descTemplate:"混凝土按浇筑批次留置标准养护试件,每 100m\xb3 一批,约 {count} 批(总量 {total}m\xb3)"},{scope:"砌体工程",namePattern:/砌体|砌筑/u,unit:"m3",divisor:250,descTemplate:"砌体工程按砌筑量划分检验批,每 250m\xb3 一批,约 {count} 批(总量 {total}m\xb3)"},{scope:"防水工程",namePattern:/防水/u,unit:"m2",divisor:0,descTemplate:"防水工程按施工段划分检验批并做蓄水(淋水)试验(总量 {total}m\xb2)"}],difficultyTemplates:[{name:"深基坑施工",measure:"分层开挖、及时支护与信息化监测,编制专项施工方案并按危大工程规定组织专家论证",basis:"清单特征含基坑开挖深度",test:a=>a.entries.some(a=>{let b=/(?:挖深|开挖深度|基坑深度|坑深)[^。;;]{0,12}(\d+(?:\.\d+)?)\s*m/u.exec(a.description);return!!b&&Number.parseFloat(b[1]||"0")>=3})},{name:"高支模施工",measure:"编制专项施工方案并组织专家论证,支架验收合格后方可浇筑",basis:"清单特征含支模高度",test:a=>a.entries.some(a=>/支模高度|高支模|模板支撑[^。;;]{0,12}\d+(?:\.\d+)?\s*m/u.test(`${a.name} ${a.description}`))},{name:"大体积混凝土施工",measure:"分层浇筑、测温养护,掺加缓凝剂与矿物掺合料控制水化热",basis:"清单特征含大体积混凝土/筏板基础",test:a=>a.entries.some(a=>/大体积|基础底板|筏板/u.test(`${a.name} ${a.description}`))},{name:"垂直运输组织",measure:"塔吊与施工电梯合理布位,编制群塔作业防碰撞方案",basis:"清单特征含塔吊/施工电梯",test:a=>a.entries.some(a=>/塔吊|塔式起重机|施工电梯|施工升降机/u.test(`${a.name} ${a.description}`))},{name:"紧邻既有建筑保护",measure:"开工前房屋现状鉴定,设置沉降观测点,控制开挖对周边扰动",basis:"清单特征含紧邻既有建筑",test:a=>a.entries.some(a=>/紧邻|既有建筑|相邻建筑|周边建筑/u.test(a.description))}],deploymentFlowFallback:"分区段流水作业",sequenceFallback:"施工准备 → 基础工程 → 主体结构 → 装饰装修 → 安装收尾",climateZone:"central",powerFallbackText:"临时用电由现场总配电箱接入,采用 TN-S 三相五线制,各分配电箱单独计量(柴油机械不计入用电负荷)",waterNoteText:"施工用水以市政供水为主,总用水量按施工段分区配置"},m={id:"general",projectTypes:["其他"],milestoneGroups:[{key:"prep",label:"施工准备",pattern:/清杂|拆除|场地平整|临建|临时/u},{key:"main",label:"主体工程",pattern:/主体|结构|混凝土|钢筋|模板|砌体|土方|基础|安装/u},{key:"finish",label:"装饰与附属工程",pattern:/装饰|抹灰|防水|保温|门窗|屋面|绿化|景观/u},{key:"install",label:"安装工程",pattern:/电气|给排水|暖通|消防|电梯|灯具|管线|设备/u},{key:"close",label:"收尾与验收",pattern:/收尾|竣工|验收|调试|移交|清理/u}],groupOfEntry:j,tradeMapping:k.tradeMapping,laborUnitRange:k.laborUnitRange,equipmentMapping:[{name:"挖掘机",spec:"0.6~1.0m\xb3",pattern:/开挖|挖土|沟槽|土方/u,unit:"m3",basis:"土方开挖(清单特征)"},{name:"自卸汽车",spec:"8t",pattern:/余方弃置|弃方|外运|回填/u,unit:"m3",basis:"土方运输与回填(清单条目)"},{name:"插入式振捣器",spec:"",pattern:/混凝土浇筑|振捣/u,unit:"m3",basis:"混凝土浇筑(清单条目)"},{name:"蛙式打夯机",spec:"",pattern:/回填|夯实/u,unit:"m3",basis:"回填夯实(清单条目)"},{name:"混凝土搅拌运输车",spec:"",pattern:/商品混凝土|C\d{2}混凝土/u,unit:"m3",basis:"商品混凝土运输(清单特征)"}],machinePowerTable:[{name:"挖掘机",kw:90},{name:"自卸汽车",kw:120},{name:"插入式振捣器",kw:1.5},{name:"蛙式打夯机",kw:3},{name:"混凝土搅拌运输车",kw:110}],inspectionBatchRules:[{scope:"混凝土工程",namePattern:/混凝土/u,unit:"m3",divisor:100,descTemplate:"混凝土按浇筑批次留置标准养护试件,每 100m\xb3 一批,约 {count} 批(总量 {total}m\xb3)"},{scope:"检查井",namePattern:/检查井/u,unit:"",divisor:1,descTemplate:"检查井逐座验收,共 {total} 座"}],difficultyTemplates:[],deploymentFlowFallback:"分区段流水作业",sequenceFallback:"施工准备 → 主体施工 → 装饰安装 → 收尾验收",climateZone:void 0,powerFallbackText:"临时用电按现场配电箱分区接入,各用电点单独计量(柴油机械不计入用电负荷,电动机具零星分散)",waterNoteText:"施工用水按现场水源分区配置,总用水量按施工段核定"},n={id:"bridge-tunnel",projectTypes:["桥梁与隧道"],milestoneGroups:[{key:"prep",label:"施工准备与临时设施",pattern:/清杂|拆除|场地平整|临建|临时|三通一平|测量放样/u},{key:"foundation",label:"基础工程",pattern:/桩基|钻孔|灌注桩|围堰|承台|基础|基坑|降水|支护/u},{key:"substructure",label:"下部结构工程",pattern:/桥墩|桥台|墩柱|盖梁|系梁|支座垫石|下部/u},{key:"superstructure",label:"上部结构工程",pattern:/箱梁|梁板|主梁|现浇梁|预制|预应力|张拉|架设|合龙|上部/u},{key:"tunnel",label:"隧道洞身工程",pattern:/隧道|洞身|仰拱|衬砌|锚杆|喷混|掌子面|二衬/u},{key:"finish",label:"桥面系附属与收尾",pattern:/桥面|铺装|护栏|伸缩缝|防撞|排水|照明|收尾|竣工|交安|绿化/u}],groupOfEntry:function(a){let b=`${a.name} ${a.description}`;return/灌注桩|桩基|钻孔|围堰|承台/u.test(b)?"桩基与基础工程":/桥墩|桥台|墩柱|盖梁|系梁|下部/u.test(b)?"下部结构工程":/箱梁|梁板|主梁|现浇梁|预制|预应力|张拉|架设|上部/u.test(b)&&"m3"===a.unit?"上部结构工程":/钢绞线/u.test(b)&&"t"===a.unit?"钢绞线工程":/隧道|洞身|仰拱|衬砌|锚杆|喷混|掌子面/u.test(b)?"隧道工程":/桥面|铺装|护栏|伸缩缝|防撞/u.test(b)?"桥面系工程":/土方|挖方|填方|回填|清淤/u.test(b)&&"m3"===a.unit?"土方工程":/钢筋|植筋/u.test(b)?"钢筋工程":/模板|支模/u.test(b)?"模板工程":/混凝土|现浇/u.test(b)?"混凝土工程":"安装工程"},tradeMapping:[{trade:"桩基工",pattern:/灌注桩|桩基|钻孔/u},{trade:"钢筋工",pattern:/钢筋|植筋/u},{trade:"模板工",pattern:/模板|支模/u},{trade:"混凝土工",pattern:/混凝土|现浇|垫层/u},{trade:"张拉工",pattern:/预应力|张拉|钢绞线/u},{trade:"焊工",pattern:/焊接|钢结构|预埋件/u},{trade:"起重工",pattern:/吊装|架设|梁体|龙门吊|架桥机/u},{trade:"隧道工",pattern:/隧道|洞身|衬砌|锚杆|喷混|掌子面/u},{trade:"普工",pattern:/土方|清杂|拆除|平整|回填|清淤|开挖/u}],laborUnitRange:{桩基与基础工程:{unit:"m3",min:4,max:7},下部结构工程:{unit:"m3",min:1.5,max:3},上部结构工程:{unit:"m3",min:4,max:8},钢绞线工程:{unit:"t",min:1.5,max:3},隧道工程:{unit:"m3",min:1.5,max:3},桥面系工程:{unit:"m2",min:.4,max:.8},土方工程:{unit:"m3",min:.08,max:.15},钢筋工程:{unit:"t",min:.8,max:1.5},模板工程:{unit:"m2",min:.3,max:.6},混凝土工程:{unit:"m3",min:.8,max:1.5},安装工程:{unit:"项",min:0,max:0}},equipmentMapping:[{name:"旋挖钻机",spec:"",pattern:/钻孔|灌注桩|桩基/u,unit:"m3",basis:"桩基成孔(清单条目)"},{name:"泥浆泵",spec:"",pattern:/灌注桩|钻孔/u,unit:"m3",basis:"钻孔泥浆循环(清单条目)"},{name:"履带式起重机",spec:"",pattern:/吊装|梁体|预制/u,unit:"项",basis:"构件吊装(清单特征)"},{name:"架桥机",spec:"",pattern:/架设|架梁|箱梁/u,unit:"项",basis:"梁体架设(清单条目)"},{name:"张拉设备",spec:"",pattern:/预应力|张拉|钢绞线/u,unit:"束",basis:"预应力张拉(清单条目)"},{name:"挖掘机",spec:"0.6~1.0m\xb3",pattern:/开挖|挖土|基坑|土方/u,unit:"m3",basis:"土方开挖(清单特征)"},{name:"自卸汽车",spec:"8t",pattern:/余方弃置|弃方|外运|回填/u,unit:"m3",basis:"土方运输与回填(清单条目)"},{name:"混凝土输送泵",spec:"",pattern:/泵送|混凝土泵/u,unit:"m3",basis:"混凝土泵送(清单特征)"},{name:"插入式振捣器",spec:"",pattern:/混凝土浇筑|振捣/u,unit:"m3",basis:"混凝土浇筑(清单条目)"}],machinePowerTable:[{name:"旋挖钻机",kw:130},{name:"泥浆泵",kw:22},{name:"履带式起重机",kw:110},{name:"架桥机",kw:90},{name:"张拉设备",kw:7.5},{name:"挖掘机",kw:90},{name:"自卸汽车",kw:120},{name:"混凝土输送泵",kw:90},{name:"插入式振捣器",kw:1.5}],inspectionBatchRules:[{scope:"桩基工程",namePattern:/灌注桩|桩基/u,unit:"",divisor:1,descTemplate:"钻孔灌注桩逐桩检验(桩位/孔径/沉渣厚度/混凝土充盈系数),共 {total} 根"},{scope:"钢筋工程",namePattern:/钢筋/u,unit:"t",divisor:60,descTemplate:"钢筋按进场检验批划分,每 60t 一批,约 {count} 批(总量 {total}t)"},{scope:"混凝土工程",namePattern:/混凝土/u,unit:"m3",divisor:100,descTemplate:"混凝土按浇筑批次留置标准养护试件,每 100m\xb3 一批,约 {count} 批(总量 {total}m\xb3)"},{scope:"预应力张拉",namePattern:/预应力|钢绞线/u,unit:"束",divisor:0,descTemplate:"预应力孔道逐束张拉并记录伸长值(总量 {total} 束)"}],difficultyTemplates:[{name:"深水基础施工",measure:"围堰施工与排水方案专项设计,汛期前完成基础施工,设置水位监测",basis:"清单特征含围堰/深水基础",test:a=>a.entries.some(a=>/围堰|深水|水中墩|钢板桩/u.test(`${a.name} ${a.description}`))},{name:"大体积混凝土施工",measure:"分层浇筑、测温养护,掺加缓凝剂与矿物掺合料控制水化热",basis:"清单特征含承台/大体积混凝土",test:a=>a.entries.some(a=>/承台|大体积|基础底板/u.test(`${a.name} ${a.description}`))},{name:"预应力张拉控制",measure:"张拉设备标定,双控(应力+伸长值)张拉,孔道压浆密实",basis:"清单特征含预应力/钢绞线",test:a=>a.entries.some(a=>/预应力|张拉|钢绞线/u.test(`${a.name} ${a.description}`))},{name:"隧道开挖与支护",measure:"超前地质预报,短进尺、弱爆破、强支护,监控量测信息化施工",basis:"清单特征含隧道洞身开挖",test:a=>a.entries.some(a=>/隧道|洞身|掌子面/u.test(`${a.name} ${a.description}`))},{name:"架梁起重吊装",measure:"编制吊装专项方案,吊装前试吊与支腿地基验算,专职指挥",basis:"清单特征含梁体架设",test:a=>a.entries.some(a=>/架设|架梁|架桥机|吊装/u.test(`${a.name} ${a.description}`))},{name:"高空作业安全控制",measure:"高墩作业平台封闭防护,设置安全网与临边防护,恶劣天气停止作业",basis:"清单特征含高墩/墩柱",test:a=>a.entries.some(a=>/高墩|墩柱|盖梁/u.test(`${a.name} ${a.description}`))}],deploymentFlowFallback:"分区段流水作业",sequenceFallback:"施工准备 → 基础工程 → 下部结构 → 上部结构 → 隧道洞身 → 桥面系与收尾",climateZone:void 0,powerFallbackText:"临时用电由现场总配电箱接入,采用 TN-S 三相五线制,各用电点单独计量(柴油机械不计入用电负荷)",waterNoteText:"施工用水以现场水源为主,总用水量按施工段核定"},o={id:"highway",projectTypes:["公路"],milestoneGroups:[{key:"prep",label:"施工准备",pattern:/清杂|拆除|场地平整|临建|临时|三通一平|测量放样/u},{key:"subgrade",label:"路基工程",pattern:/路基|土方|挖方|填方|压实|软基|清表|路床/u},{key:"pavement",label:"路面工程",pattern:/路面|水稳|基层|沥青|面层|摊铺|碾压|级配/u},{key:"bridge",label:"桥涵工程",pattern:/桥梁|桥台|桥墩|桩基|梁板|涵洞|通道|台帽/u},{key:"safety",label:"交安与附属收尾",pattern:/护栏|标线|标志|交安|绿化|排水|边沟|收尾|竣工/u}],groupOfEntry:function(a){let b=`${a.name} ${a.description}`;return/土方|挖方|填方|清表|软基|路基/u.test(b)&&"m3"===a.unit?"土方工程":/水稳|基层|级配|路床/u.test(b)&&"m2"===a.unit?"路面基层":/沥青|面层|摊铺/u.test(b)&&"m2"===a.unit?"沥青面层":/混凝土|现浇/u.test(b)&&"m2"===a.unit?"混凝土路面":/混凝土|现浇/u.test(b)?"混凝土工程":/砌筑|砌体|边沟|护坡|挡墙/u.test(b)?"砌筑工程":/钢筋|植筋/u.test(b)?"钢筋工程":/护栏|标线|标志|交安|波形梁/u.test(b)?"交安设施":"安装工程"},tradeMapping:[{trade:"机械操作工",pattern:/土方|挖方|填方|清表|路基/u},{trade:"压路机司机",pattern:/碾压|压实|路基|路面/u},{trade:"摊铺机司机",pattern:/摊铺|沥青|水稳|基层/u},{trade:"混凝土工",pattern:/混凝土|现浇|垫层/u},{trade:"钢筋工",pattern:/钢筋|植筋/u},{trade:"瓦工",pattern:/砌筑|砌体|边沟|护坡|挡墙/u},{trade:"交安工",pattern:/护栏|标线|标志|交安|波形梁/u},{trade:"普工",pattern:/清杂|拆除|平整|回填|清淤/u}],laborUnitRange:{土方工程:{unit:"m3",min:.08,max:.15},路面基层:{unit:"m2",min:.2,max:.4},沥青面层:{unit:"m2",min:.08,max:.15},混凝土路面:{unit:"m2",min:.15,max:.3},混凝土工程:{unit:"m3",min:.8,max:1.5},砌筑工程:{unit:"m3",min:1.2,max:2},钢筋工程:{unit:"t",min:.8,max:1.5},交安设施:{unit:"m",min:.3,max:.6},安装工程:{unit:"项",min:0,max:0}},equipmentMapping:[{name:"推土机",spec:"",pattern:/清表|土方|填方|平整/u,unit:"m3",basis:"土方摊铺平整(清单条目)"},{name:"平地机",spec:"",pattern:/路基|路床|平整/u,unit:"m2",basis:"路床整平(清单条目)"},{name:"装载机",spec:"",pattern:/土方|挖方|填方|清运/u,unit:"m3",basis:"土方装载(清单条目)"},{name:"压路机",spec:"8~12t",pattern:/碾压|压实/u,unit:"m2",basis:"路基路面碾压(清单特征)"},{name:"摊铺机",spec:"",pattern:/摊铺|沥青|水稳/u,unit:"m2",basis:"路面摊铺(清单条目)"},{name:"沥青洒布车",spec:"",pattern:/沥青|透层|粘层/u,unit:"m2",basis:"沥青洒布(清单条目)"},{name:"挖掘机",spec:"0.6~1.0m\xb3",pattern:/开挖|挖土|沟槽|土方/u,unit:"m3",basis:"土方开挖(清单特征)"},{name:"自卸汽车",spec:"8t",pattern:/余方弃置|弃方|外运|回填/u,unit:"m3",basis:"土方运输与回填(清单条目)"},{name:"洒水车",spec:"",pattern:/养护|洒水/u,unit:"m2",basis:"养护洒水(清单条目)"}],machinePowerTable:[{name:"推土机",kw:75},{name:"平地机",kw:120},{name:"装载机",kw:160},{name:"压路机",kw:75},{name:"摊铺机",kw:110},{name:"沥青洒布车",kw:60},{name:"挖掘机",kw:90},{name:"自卸汽车",kw:120},{name:"洒水车",kw:90}],inspectionBatchRules:[{scope:"路基压实",namePattern:/路床|路基|填方/u,unit:"m2",divisor:1e3,descTemplate:"路基压实度按每 1000m\xb2 不少于 1 点检测,约 {count} 点(总面积 {total}m\xb2)"},{scope:"水稳基层",namePattern:/水稳|基层/u,unit:"m2",divisor:1e3,descTemplate:"水稳基层按每 1000m\xb2 一个检验批,约 {count} 批(总面积 {total}m\xb2)"},{scope:"沥青面层",namePattern:/沥青|面层/u,unit:"m2",divisor:1e3,descTemplate:"沥青面层按每 1000m\xb2 一个检验批,约 {count} 批(总面积 {total}m\xb2)"}],difficultyTemplates:[{name:"软土地基处理",measure:"软基处理方案专项设计(换填/搅拌桩/预压),沉降观测控制填筑速率",basis:"清单特征含软基处理",test:a=>a.entries.some(a=>/软基|软土|换填|搅拌桩/u.test(`${a.name} ${a.description}`))},{name:"交通疏导与半幅施工",measure:"分段半幅封闭施工,设置临时交通标志与导流设施,保障社会车辆通行",basis:"清单特征含保通/半幅施工",test:a=>a.entries.some(a=>/保通|半幅|交通疏导|既有道路/u.test(`${a.name} ${a.description}`))},{name:"路面平整度控制",measure:"摊铺机连续匀速作业,接缝处理与碾压工艺控制,平整度逐层检测",basis:"清单特征含沥青面层",test:a=>a.entries.some(a=>/沥青|面层/u.test(`${a.name} ${a.description}`))},{name:"路基沉降控制",measure:"分层填筑碾压,设置沉降观测点,填筑速率与观测数据联动",basis:"清单特征含高填方路基",test:a=>a.entries.some(a=>/高填方|填方/u.test(`${a.name} ${a.description}`))}],deploymentFlowFallback:"分段平行流水作业",sequenceFallback:"施工准备 → 路基工程 → 路面工程 → 桥涵工程 → 交安与附属收尾",climateZone:void 0,powerFallbackText:"临时用电由现场总配电箱接入,各用电点单独计量(柴油机械不计入用电负荷)",waterNoteText:"施工用水以现场水源为主,总用水量按施工段核定"},p={id:"water-conservancy",projectTypes:["水利水电"],milestoneGroups:[{key:"prep",label:"施工准备与围堰导流",pattern:/清杂|拆除|围堰|导流|截流|临建|临时/u},{key:"earthwork",label:"土方与基础工程",pattern:/土方|挖方|填方|基础|基坑|清淤|疏浚|开挖/u},{key:"structure",label:"闸站结构工程",pattern:/混凝土|钢筋|模板|闸室|闸墩|泵站|翼墙|底板|消力池|挡墙|砌筑/u},{key:"metal",label:"金属结构与机电安装",pattern:/金属结构|闸门|启闭机|埋件|机电|水泵|电气/u},{key:"finish",label:"护坡堤防与收尾",pattern:/护坡|护岸|堤防|绿化|水土保持|收尾|竣工|验收/u}],groupOfEntry:function(a){let b=`${a.name} ${a.description}`;return/围堰|导流|截流|清淤|疏浚/u.test(b)||/土方|挖方|填方|回填|开挖/u.test(b)&&"m3"===a.unit?"土方工程":/闸门|启闭机|埋件|金属结构/u.test(b)&&"t"===a.unit?"金属结构安装":/护坡|护岸|堤防|格宾|浆砌/u.test(b)&&"m2"===a.unit?"护坡工程":/钢筋|植筋/u.test(b)?"钢筋工程":/模板|支模/u.test(b)?"模板工程":/混凝土|现浇|底板|闸室|闸墩|泵站|翼墙|消力池/u.test(b)&&"m3"===a.unit?"混凝土工程":/砌筑|砌体|砖|挡墙/u.test(b)?"砌筑工程":(/机电|水泵|电气/u.test(b),"安装工程")},tradeMapping:[{trade:"钢筋工",pattern:/钢筋|植筋/u},{trade:"模板工",pattern:/模板|支模/u},{trade:"混凝土工",pattern:/混凝土|现浇|底板|闸室|闸墩|泵站|翼墙|消力池/u},{trade:"瓦工",pattern:/砌筑|砌体|砖|挡墙|护坡/u},{trade:"金属结构安装工",pattern:/金属结构|闸门|启闭机|埋件/u},{trade:"机电安装工",pattern:/机电|水泵|电气|配电/u},{trade:"潜水工",pattern:/水下|潜水/u},{trade:"普工",pattern:/土方|清杂|拆除|平整|回填|清淤|开挖/u}],laborUnitRange:{土方工程:{unit:"m3",min:.08,max:.15},混凝土工程:{unit:"m3",min:1,max:2},砌筑工程:{unit:"m3",min:1.2,max:2},钢筋工程:{unit:"t",min:.8,max:1.5},模板工程:{unit:"m2",min:.3,max:.6},金属结构安装:{unit:"t",min:15,max:25},护坡工程:{unit:"m2",min:.2,max:.4},安装工程:{unit:"项",min:0,max:0}},equipmentMapping:[{name:"挖掘机",spec:"0.6~1.0m\xb3",pattern:/开挖|挖土|基坑|土方|清淤/u,unit:"m3",basis:"土方开挖(清单特征)"},{name:"自卸汽车",spec:"8t",pattern:/余方弃置|弃方|外运|回填/u,unit:"m3",basis:"土方运输与回填(清单条目)"},{name:"装载机",spec:"",pattern:/土方|挖方|填方|清运/u,unit:"m3",basis:"土方装载(清单条目)"},{name:"混凝土输送泵",spec:"",pattern:/泵送|混凝土泵|混凝土/u,unit:"m3",basis:"混凝土泵送(清单特征)"},{name:"履带式起重机",spec:"",pattern:/吊装|闸门|启闭机/u,unit:"",basis:"闸门与启闭机吊装(清单条目,不限计量单位)"},{name:"泥浆泵",spec:"",pattern:/围堰|降水|导流|排水/u,unit:"",basis:"基坑降水与排水(清单条目,不限计量单位)"},{name:"插入式振捣器",spec:"",pattern:/混凝土|振捣/u,unit:"m3",basis:"混凝土浇筑(清单条目)"},{name:"蛙式打夯机",spec:"",pattern:/回填|夯实/u,unit:"m3",basis:"回填夯实(清单条目)"}],machinePowerTable:[{name:"挖掘机",kw:90},{name:"自卸汽车",kw:120},{name:"装载机",kw:160},{name:"混凝土输送泵",kw:90},{name:"履带式起重机",kw:110},{name:"泥浆泵",kw:22},{name:"插入式振捣器",kw:1.5},{name:"蛙式打夯机",kw:3}],inspectionBatchRules:[{scope:"混凝土工程",namePattern:/混凝土/u,unit:"m3",divisor:100,descTemplate:"混凝土按浇筑批次留置标准养护试件,每 100m\xb3 一批,约 {count} 批(总量 {total}m\xb3)"},{scope:"土方回填",namePattern:/回填|填方/u,unit:"m3",divisor:200,descTemplate:"土方回填按每 200m\xb3 一个检验批检测压实度,约 {count} 批(总量 {total}m\xb3)"},{scope:"金属结构",namePattern:/闸门|启闭机/u,unit:"",divisor:1,descTemplate:"金属结构逐件验收(出厂合格证+安装调试记录),共 {total} 件"}],difficultyTemplates:[{name:"围堰导流与度汛",measure:"围堰按度汛标准设计施工,汛期值守与应急预案,度汛演练",basis:"清单特征含围堰/导流",test:a=>a.entries.some(a=>/围堰|导流|度汛|截流/u.test(`${a.name} ${a.description}`))},{name:"深基坑降水与支护",measure:"降水方案专项设计,分层开挖及时支护,周边沉降监测",basis:"清单特征含基坑降水",test:a=>a.entries.some(a=>/降水|基坑|支护/u.test(`${a.name} ${a.description}`))},{name:"大体积混凝土施工",measure:"分层浇筑、测温养护,掺加缓凝剂与矿物掺合料控制水化热",basis:"清单特征含底板/大体积混凝土",test:a=>a.entries.some(a=>/底板|大体积|消力池/u.test(`${a.name} ${a.description}`))},{name:"闸门启闭机安装精度控制",measure:"埋件安装精度预控,闸门与启闭机联动调试,止水严密性试验",basis:"清单特征含闸门/启闭机",test:a=>a.entries.some(a=>/闸门|启闭机/u.test(`${a.name} ${a.description}`))},{name:"水下作业安全控制",measure:"潜水作业双人值守,水下作业专项方案与应急预案",basis:"清单特征含水下作业",test:a=>a.entries.some(a=>/水下|潜水/u.test(`${a.name} ${a.description}`))}],deploymentFlowFallback:"分区段流水作业",sequenceFallback:"施工准备与围堰导流 → 土方与基础 → 闸站结构 → 金属结构与机电安装 → 护坡堤防与收尾",climateZone:void 0,powerFallbackText:"临时用电由现场总配电箱接入,各用电点单独计量(柴油机械不计入用电负荷)",waterNoteText:"施工用水以现场水源为主,总用水量按施工段核定"};var q=c(1218),r=c(22157);let s=[{id:"vertical_transport",label:"垂直运输方式",relevance:/塔吊|塔式起重机|施工电梯|施工升降机|物料提升机|垂直运输/u,options:[{value:"塔式起重机",aliases:/塔吊|塔式起重机/},{value:"施工升降机",aliases:/施工电梯|施工升降机/},{value:"物料提升机",aliases:/物料提升机/},{value:"汽车式起重机",aliases:/汽车吊|汽车式起重机/}]},{id:"formwork",label:"模板体系",relevance:/模板/u,exclusive:!0,options:[{value:"木胶合板模板",aliases:/木胶合板|覆膜胶合板|胶合板模板|木模板/},{value:"钢模板",aliases:/钢模板|定型钢模/},{value:"铝合金模板",aliases:/铝合金模板|铝模/},{value:"大模板",aliases:/大模板/},{value:"爬升模板",aliases:/爬升模板|爬模/}]},{id:"concrete_supply",label:"混凝土供应",relevance:/混凝土/u,exclusive:!0,options:[{value:"商品混凝土(预拌)",aliases:/商品混凝土|预拌混凝土/},{value:"自拌混凝土",aliases:/自拌混凝土|现场拌制混凝土|现场搅拌混凝土/}]},{id:"scaffold",label:"脚手架体系",relevance:/脚手架|爬架/u,options:[{value:"落地式钢管脚手架",aliases:/落地式[^,。;;]{0,6}脚手架|落地脚手架/},{value:"悬挑式脚手架",aliases:/悬挑[^,。;;]{0,6}脚手架|悬挑脚手架/},{value:"附着式升降脚手架",aliases:/附着式升降脚手架|爬架/},{value:"门式脚手架",aliases:/门式脚手架/},{value:"盘扣式脚手架",aliases:/盘扣/},{value:"碗扣式脚手架",aliases:/碗扣/}]},{id:"foundation_support",label:"基坑支护形式",relevance:/基坑|支护/u,exclusive:!0,options:[{value:"放坡开挖",aliases:/放坡/},{value:"土钉墙支护",aliases:/土钉墙|土钉支护/},{value:"灌注桩支护",aliases:/灌注桩|钻孔灌注桩|排桩支护/},{value:"钢板桩支护",aliases:/钢板桩|拉森桩/},{value:"地下连续墙",aliases:/地下连续墙|地连墙/},{value:"锚杆(索)支护",aliases:/锚杆|锚索/},{value:"喷锚支护",aliases:/喷锚/}]},{id:"earthwork_haul",label:"土方外运方式",relevance:/土方|渣土|弃土/u,options:[{value:"自卸汽车外运",aliases:/自卸汽车|自卸车/},{value:"密闭渣土车外运",aliases:/密闭式?[^,。;;]{0,4}车|渣土车/},{value:"场内平衡利用",aliases:/场内平衡|就地平衡|场内调配|回填利用/}]},{id:"foundation_form",label:"基础形式",relevance:/基础/u,options:[{value:"独立基础",aliases:/独立基础/},{value:"条形基础",aliases:/条形基础|带形基础/},{value:"筏板基础",aliases:/筏板基础|筏形基础|满堂基础/},{value:"桩基础",aliases:/桩基础|桩基/u},{value:"箱形基础",aliases:/箱形基础|箱型基础/}]},{id:"vibration_isolation",label:"设备减振方式",relevance:/减振|隔振|减震|振动/u,options:[{value:"减振吊架",aliases:/减振吊架|隔振吊架|减震吊架|弹性吊架/},{value:"减振基础",aliases:/减振基础|隔振基础|减震基础|惯性基础/},{value:"橡胶隔振垫",aliases:/橡胶隔振垫|橡胶减振垫|隔振垫/},{value:"弹簧减振器",aliases:/弹簧减振器|弹簧隔振器|阻尼弹簧减振器/}]},{id:"concrete_pouring",label:"混凝土浇筑连续组织",relevance:/浇筑/u,options:[{value:"连续浇筑",aliases:/连续浇筑|一次浇筑|整体浇筑/,weakAliases:/同步浇筑|同步施工|同步/u},{value:"分段浇筑",aliases:/分段浇筑|分仓浇筑|跳仓浇筑|分区浇筑/}]},{id:"pavement_structure",label:"路面结构类型",relevance:/路面|基层|面层|沥青|水泥稳定/u,options:[{value:"柔性路面",aliases:/沥青混凝土路面|沥青混凝土面层|沥青路面|沥青面层/,weakAliases:/柔性/u},{value:"半刚性路面",aliases:/半刚性/u},{value:"刚性路面",aliases:/刚性路面|水泥混凝土路面|水泥混凝土面层/}]}],t=/不采用|不使用|不设置|不考虑|不得|禁止|取消/u;function u(a){return a.split(/[,,、::]/u).map(a=>a.trim()).filter(Boolean)}function v(a){let b=function(a,b){let c=[];for(let a of b){let b=function(a){let b=`${a.filePath||""} ${a.roleId||""} ${a.sectionTitle||""}`;return/补疑|澄清|答疑|修正|更新/u.test(b)?100:/招标文件|招标公告|投标人须知|前附表/u.test(b)?90:/清单|工程量/u.test(b)||/图纸|设计|dwg|drawing/iu.test(b)?80:/规范|标准|规程/u.test(b)?60:50}(a);for(let d of(0,q.wj)((0,r.lG)(a.content)).split(/[。;;\n]/u)){let a=d.trim();a.length<6||a.length>200||c.push({text:a,weight:b})}}for(let b of a){let a=`${b.key||""} ${b.fieldName||""} ${(0,r.lG)(b.value)}`.trim();a.length<6||a.length>200||c.push({text:a,weight:Math.round(60*Math.max(.5,Math.min(1,b.confidence||.7)))})}return c}(a.facts,a.evidence),c=[];for(let a of s){let d=new Map;for(let c of b){if(!a.relevance.test(c.text))continue;let b=u(c.text);for(let e of a.options){let a=b.find(a=>e.aliases.test(a));if(!a||t.test(a))continue;let f=d.get(e.value)||{score:0,mentions:0,bestWeight:0};f.score+=c.weight,f.mentions+=1,f.bestWeight=Math.max(f.bestWeight,c.weight),d.set(e.value,f)}}let e=[...d.entries()].map(([a,b])=>({value:a,...b})).sort((a,b)=>b.score-a.score||b.mentions-a.mentions||(a.value<b.value?-1:1)),f=e[0];if(!f||f.bestWeight<60)continue;if(a.exclusive){c.push({id:a.id,label:a.label,values:[f.value]});continue}let g=Math.max(60,.4*f.score),h=e.filter(a=>a.score>=g).slice(0,3).map(a=>a.value);h.length>0&&c.push({id:a.id,label:a.label,values:h})}return c}function w(a){return s.find(b=>b.id===a)}function x(a,b){return s.find(c=>{let d=a=>c.options.some(b=>b.aliases.test(a)||b.weakAliases?.test(a));return c.options.some(c=>c.aliases.test(a)||c.aliases.test(b))&&d(a)&&d(b)})}function y(a,b){for(let c of a.options){let a=c.aliases.exec(b);if(a)return{option:c,index:a.index,end:a.index+a[0].length}}for(let c of a.options){let a=c.weakAliases?.exec(b);if(a)return{option:c,index:a.index,end:a.index+a[0].length}}}function z(a,b){let c=u(a).find(a=>b.test(a));return!!c&&t.test(c)}var A=c(19898),B=c(48161);let C={seq:1,code:2,name:4,description:5,unit:6,quantity:8};function D(a){let b=a.map(a=>a.replace(/\s+/gu,""));return b.includes("序号")&&b.includes("项目编码")}function E(a){let b=a.map(a=>a.replace(/\s+/gu,"")),c=a=>b.findIndex(b=>a.includes(b)),d=c(["序号"]),e=c(["项目编码"]),f=c(["项目名称"]),g=c(["计量单位","单位"]),h=c(["工程量"]);if(!(d<0)&&!(e<0)&&!(f<0)&&!(g<0)&&!(h<0))return{seq:d,code:e,name:f,description:c(["项目特征描述"]),unit:g,quantity:h}}function F(a){return/^[一二三四五六七八九十\d]+(?:\.\d+)?$/u.test(a.trim())&&!G.test(a.trim())}let G=/^(?:\d{12}|(?:ZB|WB)\d{12})$/u,H=/工作表:(\d+(?:\.\d+)?)/u,I=/第1页\s*共(\d+)页/u,J=/工程名称:(.+?)\s*标段/u,K=/工程名称:([^\n||]{2,40}?)\s*$/mu,L=/第(\d+)页\s*共\d+页/gu;function M(a){let b=H.exec(a.sectionTitle);if(b)return b[1];let c=a.content.split("\n")[0]||"",d=H.exec(c);return d?d[1]:""}function N(a){let b=new Map;for(let c of a){let a=b.get(c.villageGroup)||[];a.push(c),b.set(c.villageGroup,a)}return b}var O=c(31846);function P(a){let b=a.boundFilePaths.filter(a=>/工程量清单/u.test(a)&&a.toLowerCase().endsWith(".xls")).filter(a=>{let b=a.split("/").pop()||a;return!/封面|编制说明/u.test(b)});if(0===b.length)return{warning:`绑定资料中未识别到工程量清单 .xls 文件(${a.boundFilePaths.length} 份资料)`};let c=e.join(B.homedir(),".customize-agent","projects",(0,A.computeProjectId)(e.resolve(a.projectRoot)),"kb.db");if(!d.existsSync(c))return{warning:`项目知识库索引不存在:${c}`};let f=[],g=[];for(let a of b)try{let b=function(a,b){let c=new((0,A.loadBetterSqlite3)())(a,{readonly:!0});try{return c.pragma("busy_timeout = 10000"),c.prepare("SELECT chunk_index, content, section_title FROM kb_chunks WHERE relative_path = ? ORDER BY chunk_index").all(b).map(a=>({chunkIndex:a.chunk_index,content:a.content,sectionTitle:a.section_title||""}))}finally{c.close()}}(c,a);if(0===b.length){f.push(`${a}(索引无切片)`);continue}let d=function(a){let b=a.sourceFile||"",c={totalChunks:a.chunks.length,markdownChunks:0,declarationChunks:0,skippedChunks:0,droppedIncompleteRows:0},d=[],e=[];for(let b of a.chunks){let a=b.sectionTitle,f=a.includes("表格路径声明");if(a.includes("附录")){c.skippedChunks++;continue}f?(e.push(b),c.declarationChunks++):"表格数据"===a||a.includes("表标题")||a.includes("第")||a.includes("工作表:")?(d.push(b),c.markdownChunks++):c.skippedChunks++}let f=new Map,g=a=>{let b=H.exec(a);if(!b)return;let c=b[1],d=f.get(c),e=J.exec(a)||K.exec(a),g=I.exec(a);d?(!d.villageGroup&&e&&(d.villageGroup=e[1].trim()),void 0===d.totalPages&&g&&(d.totalPages=Number(g[1]))):f.set(c,{villageGroup:e?e[1].trim():"",totalPages:g?Number(g[1]):void 0})};for(let a of d)g(a.sectionTitle),g(a.content.split("\n")[0]||"");let h=[],i="",j="",k="",l="plain",m=function(a){let b=[],c=!1;for(let d=0;d<a.length;d++){let e=a[d]??"";if(e.includes(".")){let e=d+1<a.length?a[d+1]??"":"",f=/^\d+$/u.test(e)&&e.length>=2;b.push(f?"unit-project":"subsection"),c=f}else/^\d+$/u.test(e)?b.push(c?"subsection":"section"):(b.push("section"),c=!1)}return b}(function(a){let b=[],c="",d=C;for(let e of a){let a=e.content.split("\n"),f=c;for(let e of(c="",a)){if(e.startsWith("|"))f.trim(),f=e;else{if(!f)continue;f+=e}if(!f.endsWith("|"))continue;let a=f.split("|").map(a=>a.trim());if(f="",D(a)){d=E(a)??d;continue}!a[d.seq]&&F(a[d.code]??"")&&a[d.name]&&"分部小计"!==a[d.name]&&b.push(a[d.code]??"")}f.trim()&&(c=f)}return b}(d)),n=-1,o=C,p="";for(let a of d){let d=M(a),e=d||p;d&&(p=d);let g=f.get(e),q=g?.villageGroup||e||"",r=a.content.split("\n"),s=i;i="";let t=function(a){if(I.exec(a))return 1;L.lastIndex=0;let b=L.exec(a);return L.lastIndex=0,b?Number(b[1]):void 0}(a.content);for(let d=0;d<r.length;d++){let e=r[d]||"";if(e.startsWith("|"))s.trim()&&c.droppedIncompleteRows++,s=e;else if(s)s+=e;else{let a=L.exec(e);a&&(t=Number(a[1])),L.lastIndex=0;continue}if(s.endsWith("|")){let c=s.split("|").map(a=>a.trim());s="",D(c)&&(o=E(c)??o);let d=c[o.seq]??"",e=c[o.code]??"",f=c[o.name]??"",g=t,i=function(a){let b=a.join(" "),c=/第(\d+)页\s*共\d+页/u.exec(b);return c?Number(c[1]):void 0}(c);if(i&&(t=i),/^\d+$/u.test(d)&&G.test(e)){let i=Number((c[o.quantity]??"").trim()),m={seq:Number(d),code:e,name:f,description:o.description>=0?c[o.description]??"":"",unit:c[o.unit]??"",quantity:Number.isFinite(i)?i:0,section:j,subsection:k,sectionKind:l,villageGroup:q,page:g,sourceFile:b,chunkIndex:a.chunkIndex,sourceKind:"markdown"};m.seq>0&&h.push(m)}else if(!d&&F(e)&&f&&"分部小计"!==f){let a=m[n+=1]??(e.includes(".")?"subsection":"section");"unit-project"===a?(j=f,k="",l="unit-project"):"section"===a?(j=f,k="",l="plain"):k=f}}}s.trim()&&(i=s)}i.trim()&&c.droppedIncompleteRows++;let q=[];for(let a of(p="",e)){let c=M(a),d=c||p;c&&(p=c);let e=f.get(d),g=e?.villageGroup||d||"";q.push(...function(a,b){let c,d,e=[],f=a.split("\n"),g=()=>{c&&"number"==typeof c.seq&&c.seq>0&&e.push({seq:c.seq,code:c.code||"",name:c.name||"",description:(c.description||"").trim(),unit:c.unit||"",quantity:"number"==typeof c.quantity?c.quantity:0,section:"",subsection:"",villageGroup:b.villageGroup,sourceFile:b.sourceFile,chunkIndex:b.chunkIndex,sourceKind:"declaration"}),c=void 0,d=void 0},h=a=>{if(!c||!d)return;let b=a.trim();if(b){if("seq"===d){let a=Number(b);Number.isFinite(a)&&a>0&&(c.seq=a)}else if("code"===d)c.code=(c.code||"")+b;else if("name"===d)c.name=(c.name||"")+b;else if("description"===d)c.description=(c.description||"")+(c.description?" ":"")+b;else if("unit"===d)c.unit=b;else if("quantity"===d){let a=Number(b);Number.isFinite(a)&&(c.quantity=a)}}};for(let a of f){if(/^R\d+C\d+$/u.test(a)){/^R\d+C1$/u.test(a)?(g(),c={},d="seq"):d=void 0;continue}if(/^序号:$/u.test(a)){d="seq";continue}if(/^项目编码:$/u.test(a)){d="code";continue}if(/^项目名称:$/u.test(a)){d="name";continue}if(/^项目特征描述:$/u.test(a)){d="description";continue}if(/^单位:$/u.test(a)){d="unit";continue}if(/^工程量:$/u.test(a)){d="quantity";continue}if(/^(?:人工费|机械费|暂估价|合价|金额.*)$/u.test(a)){d=void 0;continue}h(a)}return g(),e}(a.content,{villageGroup:g,sourceFile:b,chunkIndex:a.chunkIndex}))}let r=new Map;for(let a of h)r.set(`${a.villageGroup}|${a.seq}`,a);for(let a of q){let b=`${a.villageGroup}|${a.seq}`;r.has(b)||r.set(b,a)}let s=[...r.values()].sort((a,b)=>a.villageGroup.localeCompare(b.villageGroup,"zh-CN")||a.seq-b.seq);var t=s,u=h;let v=N(u);for(let a of t){let b;if("declaration"===a.sourceKind&&!a.section){for(let c of v.get(a.villageGroup)||[]){if(c.seq>a.seq)break;b=c}b&&(a.section=b.section,a.subsection=b.subsection,a.sectionKind=b.sectionKind)}}let w=[...f.values()].map(a=>a.villageGroup).find(Boolean);if(w&&s.every(a=>!a.section))for(let a of s)a.section=w,a.sectionKind="unit-project";let x=[];for(let[a,b]of N(s)){let c=b.map(a=>a.seq).sort((a,b)=>a-b),e=c[c.length-1]||0,g=[];for(let a=1;a<=e;a++)c.includes(a)||g.push(a);let h=function(a,b){for(let[c,d]of a)if(d.villageGroup===b)return{sheetId:c,...d}}(f,a),i=h?.totalPages,j=function(a,b,c){let d=new Set,e="";for(let f of a){let a=M(f),g=a||e;if(a&&(e=a),!c||g===c){if(!c&&!(f.content.split("\n")[0]||"").includes(b))continue;for(let a of(I.test(f.content)&&d.add(1),L.lastIndex=0,f.content.matchAll(L))){let b=Number(a[1]);d.add(b),b>1&&d.add(b-1)}L.lastIndex=0}}return[...d]}(d,a,h?.sheetId),k=i?Array.from({length:i},(a,b)=>b+1).filter(a=>!j.includes(a)):[],l=b.filter(a=>"declaration"===a.sourceKind).length,m=b.filter(a=>!a.code).length,n=b.filter(a=>!a.name).length,o=b.filter(a=>a.code&&!G.test(a.code)).length;x.push({villageGroup:a,sheetId:h?.sheetId||"",totalPagesDeclared:i,pagesCovered:j.sort((a,b)=>a-b),pagesMissing:k,entryCount:b.length,entrySeqMissing:g,entriesFromDeclaration:l,entriesWithoutCode:m,entriesWithoutName:n,entriesWithInvalidCode:o,complete:0===g.length&&b.length>0})}return x.sort((a,b)=>a.villageGroup.localeCompare(b.villageGroup,"zh-CN")),{entries:s,villages:x,totalEntries:s.length,sourceFile:b,complete:x.length>0&&x.every(a=>a.complete),diagnostics:c}}({chunks:b,sourceFile:a});d.totalEntries>0?g.push({filePath:a,boq:d}):f.push(`${a}(解析出 0 条目)`)}catch(b){f.push(`${a}(${b instanceof Error?b.message:String(b)})`)}if(0===g.length)return{warning:`清单解析失败:${f.join(";")}`};let h=1===g.length?g[0].boq:function(a){let b=a=>{let b=a.split("/").slice(-2)[0]||"",c=/^(\d+)/u.exec(b);return c?Number(c[1]):Number.MAX_SAFE_INTEGER},c=[...a].sort((a,c)=>b(a.filePath)-b(c.filePath)),d=[],e=[],f={totalChunks:0,markdownChunks:0,declarationChunks:0,skippedChunks:0,droppedIncompleteRows:0},g=new Set;for(let a of c){var h;let b=((h=a.filePath).split("/").pop()||h).replace(/\.xls$/iu,"").replace(/[\s\u00a0]+/gu,"")||"单位工程";if(g.has(b)){let a=2;for(;g.has(`${b}(${a})`);)a+=1;b=`${b}(${a})`}for(let c of(g.add(b),a.boq.entries))c.subsection=c.subsection||c.section,c.section=b,c.sectionKind="unit-project",c.villageGroup=b,d.push(c);for(let[c,d]of a.boq.villages.entries())e.push({...d,villageGroup:1===a.boq.villages.length?b:`${b}\xb7${d.villageGroup||`工作表${c+1}`}`});f.totalChunks+=a.boq.diagnostics.totalChunks,f.markdownChunks+=a.boq.diagnostics.markdownChunks,f.declarationChunks+=a.boq.diagnostics.declarationChunks,f.skippedChunks+=a.boq.diagnostics.skippedChunks,f.droppedIncompleteRows+=a.boq.diagnostics.droppedIncompleteRows}return{entries:d,villages:e,totalEntries:d.length,sourceFile:c.map(a=>a.filePath).join(";"),complete:e.length>0&&e.every(a=>a.complete),diagnostics:f}}(g);return f.length>0?{boq:h,warning:`部分清单文件解析失败(已并入其余 ${g.length} 份):${f.join(";")}`}:{boq:h}}function Q(a){let b=new Map;for(let c of a.entries){if(!c.name)continue;let a=(c.villageGroup||c.section||"").trim(),d=(0,O.L4)(c.description||""),e=b.get(c.name);if(e)for(let b of(e.total+=c.quantity,a&&e.groupTotals.set(a,(e.groupTotals.get(a)??0)+c.quantity),d))e.specTotals.set(b,(e.specTotals.get(b)??0)+c.quantity);else{let e=new Map;a&&e.set(a,c.quantity);let f=new Map;for(let a of d)f.set(a,(f.get(a)??0)+c.quantity);b.set(c.name,{value:c.quantity,unit:c.unit,sourceFile:c.sourceFile,seq:c.seq,total:c.quantity,groupTotals:e,specTotals:f})}}let c={};for(let[a,d]of b){let b=a=>Math.round(1e3*a)/1e3,e=[...d.groupTotals.entries()].map(([a,c])=>({group:a,value:b(c)})),f=b(d.total),g=[...d.specTotals.entries()].map(([a,c])=>({spec:a,value:b(c)})).filter(a=>Math.abs(a.value-f)>1e-6).sort((a,b)=>b.value-a.value);c[a]={value:f,unit:d.unit,sourceFile:d.sourceFile,seq:d.seq,groups:e.length>0?e:void 0,specBreakdown:g.length>=2?g:void 0}}return c}let R=[{key:"绿化养护期",namePattern:/养护/u,extract:a=>{let b=/(?:一级|二级)养护[^。;;]{0,20}/u.exec(a.description);return b?b[0].trim():void 0}},{key:"喷播草籽种类",namePattern:/喷播|草籽/u,extract:a=>{let b=S(a.description).find(a=>/籽/u.test(a.key));if(b)return b.value.replace(/\s*\d+\s*[..].*$/u,"").trim()||b.value.trim()}},{key:"池塘清淤深度",namePattern:/清淤|清塘/u,extract:a=>{let b=/(?:清淤深度|深度)[^。;;]*?(\d+(?:\.\d+)?)\s*m/u.exec(a.description);return b?`清淤深度 ${b[1]}m`:void 0}},{key:"过路涵涵头混凝土",namePattern:/涵头|过路涵/u,extract:a=>{let b=/(C\d{2})[^。;;]*混凝土/u.exec(a.description)||/混凝土[^。;;]*(C\d{2})/u.exec(a.description);return b?`涵头混凝土 ${b[1]}`:void 0}},{key:"路肩土预留",namePattern:/路肩/u,extract:a=>{let b=/(\d+(?:\.\d+)?)\s*[-~至]\s*(\d+(?:\.\d+)?)\s*m/u.exec(a.description);return b?`两侧各预留 ${b[1]}-${b[2]}m`:void 0}},{key:"一般路灯",namePattern:/路灯/u,extract:a=>{let b=/(\d+)\s*W/u.exec(a.description),c=/高\s*(\d+(?:\.\d+)?)\s*m/u.exec(a.description);if(!b&&!c)return;let d=["一般路灯"];return b&&d.push(`${b[1]}W LED`),c&&d.push(`高${c[1]}m`),/含基础|含灯杆基础|灯杆基础/u.test(a.description)&&d.push("含基础"),d.join(" ")}},{key:"暂列金额",namePattern:/暂列金额/u,extract:a=>{let b=/(\d+(?:\.\d+)?)\s*万元/u.exec(a.description);return b?`${b[1]}万元`:void 0},amount:!0}];function S(a){let b=[];for(let c of a.matchAll(/(?:\d+|[一二三四五六七八九十]+)[..、]\s*([^::;;。]{1,40}?)[::]\s*([^。;;\n]{1,80})/gu)){let a=c[1].trim(),d=c[2].trim();!/具体详见|其他|满足验收/u.test(a)&&!/(?:(?:详)?见|按)(?:设计|施工)?图纸|招标文件补疑/u.test(d)&&a&&d&&b.push({key:a,value:d})}return b}let T=/(?<=[日天])\s*[0-9]+(?:\.[0-9]+)?(?=[\s]*(?:招标|建设|质量|合同|项目|工程|资金|投标|开标|评标|付款|工期|开工|计划|计价|现场|资质|标段|[0-9]{1,3}[.、.]|[,,。;;]|$))/u;function U(a){let b=Object.values(a.byKey||{}).filter(a=>!!(a&&a.label&&a.value)).sort((a,b)=>(b.priority||0)-(a.priority||0));return 0===b.length?"":b.map(a=>{let b=String(a.value),c=T.exec(b),d=c?b.slice(0,c.index).trim():b;return`- ${a.label}:${d}`}).join("\n")}let V={type:"object",required:["meta","data","outline"],properties:{meta:{type:"object",required:!0,properties:{version:{type:"string",required:!0,minLength:1},docType:{type:"string",required:!0,minLength:1},createdAt:{type:"string",required:!0,minLength:1},sourceMaterials:{type:"array",required:!0,items:{type:"string"}}}},data:{type:"object",required:!0,properties:{strategyId:{type:"string",required:!0,minLength:1},project:{type:"object",required:!0,properties:{name:{type:"string",required:!0,minLength:1},scope:{type:"string",required:!0},works:{type:"array",required:!0,items:{type:"string"}}}},contract:{type:"object",required:!0,properties:{totalDays:{type:"number",required:!0},qualityStandard:{type:"string",required:!0},pricingFile:{type:"string",required:!0}}},milestones:{type:"array",required:!0,minItems:1,items:{type:"object"}},resources:{type:"object",required:!0,properties:{labor:{type:"object",required:!0},equipment:{type:"array",required:!0}}},materialsPlan:{type:"array",required:!0},redLineFacts:{type:"array",required:!0},quantities:{type:"object",required:!0,minProperties:1},keyDifficulties:{type:"array",required:!0,minItems:1},composition:{type:"object"}}},outline:{type:"object",required:!0,properties:{chapters:{type:"array",required:!0,minItems:1}}}}},W=[/C\d{2,3}/u,/DN\d{2,4}/iu,/Φ\d+(?:\.\d+)?/u,/\d+(?:\.\d+)?\s*(?:kW|W)/iu,/厚(?:度)?[::]*\s*\d+(?:\.\d+)?\s*(?:mm|cm)/u,/\d+\s*[×xX]\s*\d+(?:\s*[×xX]\s*\d+)?\s*(?:mm|cm)?/u,/HRB\d{3,4}/u,/Q\d{3}[A-Z]?/u,/YJV[^。;;]{0,12}|VV\d+[^。;;]{0,12}/u],X=new Set(["挖掘机","自卸汽车","压路机","洒水车","高空作业车","混凝土搅拌运输车"]);var Y=c(22213),Z=c(22496),$=c(38115),_=c(3063),aa=c(62521);function ab(a,b){let c=a.trim();if(/^其他$|^其他工程$/u.test(c)){let a=b.map(a=>a.name);return a.some(a=>/彩绘|护栏|围栏|小品|标识|标牌|墙面|整治/u.test(a))?"环境整治工程":a.some(a=>/绿化|栽植|铺装|种植/u.test(a))?"景观附属工程":a.some(a=>/拆除|清理|清淤|清运/u.test(a))?"清理整治工程":"零星工程"}return/^其他装饰/u.test(c)?"零星装饰工程":/^措施项目$/u.test(c)?b.map(a=>a.name).some(a=>/化粪池|吊装|安装/u.test(a))?"模板、脚手架及化粪池安装工程":"模板与脚手架工程":/墙[、,]?柱面装饰/u.test(c)?b.some(a=>/幕墙|隔断/u.test(a.name))?c:"墙柱面装饰工程":c}function ac(a,b){let c=[...b].sort((a,b)=>a.seq-b.seq),d={},e=new Map;for(let a of c)a.name&&e.set(a.name,(e.get(a.name)||0)+a.quantity);for(let[a,b]of e){let e=c.find(b=>b.name===a)?.unit||"";d[a]={value:Math.round(1e3*b)/1e3,unit:e}}let f=[...new Set(c.map(a=>a.name).filter(Boolean))].slice(0,16),g=function(a){let b=[];for(let c of a)for(let a of S(c.description))/含|配合|安装|铺设|浇筑|夯实|碾压|养护|刻痕|拉毛|切缝|灌缝|喷播|栽植|回填|吊装|固定/u.test(a.value)&&a.value.length<=60&&b.push(`${c.name}:${a.value}`);return[...new Set(b)].slice(0,20)}(c),h=[],i=new Set;for(let a of c){for(let b of S(a.description)){let a=`${b.key}=${b.value}`;if(!i.has(a)&&(i.add(a),h.push({key:b.key,value:b.value,source:"boq"}),h.length>=24))break}if(h.length>=24)break}let j=[];for(let a of c)for(let b of S(a.description))/压实|试验|检测|验收|闭水|合格/u.test(`${b.key}${b.value}`)&&j.length<12&&!j.includes(b.value)&&j.push(b.value);let k=(0,Z.cn)([a]),l=[];for(let a of(0===j.length&&k.length>0&&j.push(...k[0].acceptance.slice(0,6).map(a=>`${a}(知识卡)`)),k.slice(0,2)))for(let b of a.standards)l.includes(b)||l.push(b);return{name:a,kind:"major",quantities:d,processChain:f,methods:g,params:h,acceptance:j,standards:l,source:"boq",coveredSeqs:c.map(a=>a.seq)}}function ad(a,b,c){let d=new Map,e=[];for(let b of a){if((0,aa.Cv)(b)||_.Yp.test(b)||_.gG.test(b)){e.push({kind:"solo",section:b});continue}let a=(0,aa.Y5)(b);d.has(a)||(d.set(a,[]),e.push({kind:"domain",key:a})),d.get(a).push(b)}let f=a=>{let b=[];for(let c of a){let a=b[b.length-1],d=a?a.sources[a.sources.length-1]:"";!(0,_.tZ)(c)&&!(0,aa.Cv)(c)&&a&&((0,aa.z1)(c,d)||(0,aa.SF)(c,d)>=aa.an)?(a.sources.push(c),c.length>a.title.length&&(a.title=c)):b.push({title:c,sources:[c]})}return b},g=[];for(let a of e){if("solo"===a.kind){g.push({title:a.section,subPoints:[{title:a.section,sources:[a.section]}],facts:[],targetWords:0});continue}let c=f(d.get(a.key)||[]);for(let a=0;a<c.length;a+=aa.wd){let d=c.slice(a,a+aa.wd);g.push({title:d[0].title||b,subPoints:d,facts:[],targetWords:0})}}return(0,aa.XR)(g,c),{blocks:g,coveredSections:a.slice(),fallbackSections:[]}}function ae(a){let b,{blueprintChapter:c,inputSections:d,chapterTitle:e,targetWords:f}=a,g=[],h=[];if(c&&0!==c.subSections.length){for(let a of c.subSections){let b=a.workPackages.map(a=>({title:a.name,sources:[a.name],tier:"major"===a.kind?"core":"general"}));b.length>aa.wd?g.push(...(0,aa.iY)(a.title,b)):g.push({title:a.title,subPoints:b,facts:[],targetWords:0})}if(0===g.length){let a=ad(d,e,f);g=a.blocks,h=a.coveredSections,b=a.fallbackSections}else h=d.filter(a=>g.some(b=>(0,aa.z1)(b.title,a)||b.subPoints.some(b=>b.sources.some(b=>(0,aa.z1)(b,a))||(0,aa.z1)(b.title,a)))),b=d.filter(a=>!h.includes(a))}else{let a=ad(d,e,f);g=a.blocks,h=a.coveredSections,b=a.fallbackSections}if(b.length>0){for(let a of ad(b,e,f).blocks)g.some(b=>(0,aa.z1)(b.title,a.title)||a.subPoints.some(a=>b.subPoints.some(b=>(0,aa.z1)(b.title,a.title))))||g.push(a);h=[...h,...b],b=[]}if(a.projectContext&&a.evidence){let b=a.projectContext,c=a.evidence,d=_.gG.test(e)?[]:(a.blueprintChapter?.subSections??[]).map(a=>a.title),h=_.gG.test(e)?new Set(g.map(a=>(0,r.Sw)(a.title)).filter(Boolean)):new Set;g=g.map(a=>{if(!(0,aa.pX)(a.title)||_.gG.test(e)&&_.gG.test(a.title))return a;let i=(0,aa.j7)([...(0,Y.Ep)(b,c).filter(a=>{let b=a.replace(/^[一二三四五六七八九十百\d]+[、..\s::-]+/u,"");return!h.has((0,r.Sw)(b))}),...d],12);if(i.length<3)return a;let j=Math.max(1,g.filter(a=>(0,aa.pX)(a.title)).length),k=Math.max(3,Math.min(i.length,Math.floor(f/aa.YD/j)));if(i.length<=k)return{...a,subPoints:i.map(a=>({title:a,sources:[a],tier:"core"}))};let l=i.slice(0,k),m=i.slice(k);return{...a,subPoints:[...l.map(a=>({title:a,sources:[a],tier:"core"})),{title:"其他分部分项工程施工要点",sources:m,tier:"brief"}]}})}g=function(a){if(!a.some(a=>a.subPoints.some(a=>(0,aa.MH)(a.title))))return a;let b=new Set(a.map(a=>(0,r.Sw)(a.title)).filter(Boolean)),c=[];for(let d of a){let a=(0,r.Sw)(d.title),e=d.subPoints.filter(c=>(0,aa.MH)(c.title)&&(0,r.Sw)(c.title)!==a&&!b.has((0,r.Sw)(c.title))),f=d.subPoints.filter(a=>!e.includes(a));if(0===e.length||0===f.length){c.push(d);continue}for(let a of(c.push({...d,subPoints:f}),e))b.add((0,r.Sw)(a.title)),c.push({title:a.title,subPoints:[{...a}],facts:[],targetWords:0})}return c}(g);let i=(0,$.SX)(g.map(a=>({title:a.title})));return g.forEach((a,b)=>{a.title=i[b]}),(0,aa.XR)(g,f),0===g.length&&e.trim()&&(g=[{title:e,subPoints:[],facts:[],targetWords:Math.min(aa.Oc,Math.max(aa.aB,f))}]),{blocks:g,coveredSections:h,fallbackSections:b}}function af(a,b){let c=b.filter(Boolean),d=c.length;if(a&&a.subSections.length>0){d=a.subSections.reduce((a,b)=>a+b.workPackages.length,0);let b=c.filter(b=>a.subSections.some(a=>(0,aa.z1)(a.title,b)||a.workPackages.some(a=>(0,aa.z1)(a.name,b)))).length;d+=c.length-b}let e=Math.ceil(d/aa.wd);return{points:d,minFeasibleWords:e*aa.aB}}var ag=c(95734);let ah={"village-municipal":k,building:l,general:m,"bridge-tunnel":n,highway:o,"water-conservancy":p};function ai(a,b){if(b)return b.needsBlueprintAuthority(a);let c=[];return/劳动力/u.test(a)&&c.push("laborPeak"),/资源配置|资源|机械|设备|机具/u.test(a)&&c.push("blueprint"),/进度计划|进度|工期/u.test(a)&&c.push("schedule"),[...new Set(c)]}function aj(a){return a?a.validation.passed?a.data:a.validation.checks.find(a=>"0. 清单源可用性"===a.name)?.passed?function(a,b){if(!b)return a;let c=a;return b.laborPeak||(c={...c,resources:{...c.resources,labor:{...c.resources.labor,peak:{min:0,max:0},peakValue:0,byPhase:[],byTrade:[],composition:[]}}}),b.schedule||(c={...c,schedule:[],contract:{...c.contract,totalDays:0}}),c}(a.data,a.validation.authorityAvailability):void 0:void 0}function ak(a,b,c){let d=ai(a,c),e=b?b.checks.filter(a=>!a.passed).map(a=>a.name):[],f=b?.authorityAvailability;return f?{missing:d.filter(a=>!f[a]),failedChecks:e}:{missing:d,failedChecks:e}}var al=c(10751);let am=/\{\{AUTH:([^}]*)\}\}/gu;function an(a,b){if("data.contract.total_days"===a)return b.contract.totalDays>0?`${b.contract.totalDays} 日历天`:void 0;if("data.resources.labor.peak_value"===a)return b.resources.labor.peakValue>0?`${b.resources.labor.peakValue} 人`:void 0;if("data.redline.greening_maintenance"===a){let a=(b.redLineFacts??[]).find(a=>!a.amount&&/养护|苗木|绿化/u.test(a.key));return a?.value?String(a.value):void 0}if(a.startsWith("data.quantities.")){let c=b.quantities?.[a.slice("data.quantities.".length)];return c&&c.value>0?`${c.value}${c.unit??""}`:void 0}}function ao(a,b){let c=[],d=[],e=[];if(!b){for(let b of a.matchAll(am)){let a=(b[1]??"").trim();(a?d:e).push(a||b[0])}return{markdown:a,filled:c,unresolved:d,malformed:e}}return{markdown:a.replace(am,(a,f)=>{let g=(f??"").trim();if(!g)return e.push(a),a;let h=an(g,b);return h?(c.push({path:g,value:h}),h):(d.push(g),a)}),filled:c,unresolved:d,malformed:e}}var ap=c(78217);function aq(a,b){let c=["【一体化蓝图参数桶——全项目口径唯一权威源,正文引用必须与此一致,不得自行推导不同数值】"];return c.push("计划类数值(劳动力人数/工期/工程量/养护期)必须且只能引用以下锚点值:禁止将各工种人数相加推导峰值、禁止按定额自行估算、禁止改写锚点数值。"),c.push(`- 项目:${a.project.name}(${a.project.scope})`),c.push(...(0,al.Xe)((0,al.IV)(a),b)),a.inspectionBatches.length>0&&c.push(`- 检验批划分:${a.inspectionBatches.map(a=>`${a.scope}——${a.planDesc}`).join(";")}`),c.push(`- 临时用电:${a.tempUtilities.powerLoad}`),c.push(`- 临时用水:${a.tempUtilities.waterUsage}`),a.decisionLock.entries.length>0&&c.push(`- 关键决策锁:${a.decisionLock.entries.map(a=>`${a.label}:${a.values.join("、")}`).join(";")}`),a.constructionDeployment.sections.length>0&&c.push(`- 施工部署:${a.constructionDeployment.flow};施工顺序 ${a.constructionDeployment.sequence}`),a.keyDifficulties.length>0&&c.push(`- 重难点(逐项列明):${a.keyDifficulties.map(a=>`${a.name}——${a.measure}`).join(";")}`),c.push(`- 金额禁区:${a.amountRule}`),c.push(a.drawingNote),c.join("\n")}let ar=[{domain:"contract",chapterPattern:/进度|工期|总体|部署|概况|工程|计划/u,alignment:{path:"data.contract.total_days"}},{domain:"schedule",chapterPattern:/进度|工期|部署|计划|总体|施工方案|分部分项/u},{domain:"labor",chapterPattern:/劳动力|人员|资源|进度|工期|部署|概况/u,alignment:{path:"data.resources.labor.peak_value"}},{domain:"equipment",chapterPattern:/机械|设备|资源/u},{domain:"material",chapterPattern:/物资|材料|资源|采购|亮化|路灯|照明/u},{domain:"quantity",chapterPattern:/分部分项|施工方案|施工方法|土方|道路|管网|工程概况/u},{domain:"spec",chapterPattern:/材料|物资|质量|技术|施工方案|分部分项/u},{domain:"earthwork",chapterPattern:/土方|土石方|道路|管网|施工方案|分部分项/u},{domain:"site",chapterPattern:/总平面|平面布置|临时设施|临时用地|驻地|堆场|加工区|施工方案/u},{domain:"test",chapterPattern:/质量|试验|检测|验收/u},{domain:"redline",chapterPattern:/绿化|种植|养护|苗木|技能|培训|成品保护|质量|亮化|路灯|照明|概况|工程|总体/u,alignment:{path:"data.redline.greening_maintenance"}}],as=ar.map(a=>({domain:a.domain,chapterPattern:a.chapterPattern}));function at(a){return ar.filter(b=>b.alignment&&b.chapterPattern.test(a)).map(a=>a.alignment.path)}let au=/编制|工程概况|项目概况|概况|说明/u;function av(a,b,c){let d=[c.blockTitle,...c.subPointTitles,...c.skeletonNames??[]].map(a=>a.trim()).filter(a=>a.length>=2),e=a=>d.some(b=>a.includes(b)||b.includes(a)),f=[`【第 ${a.id} 章「${a.title}」蓝图切片(本节聚焦)——以下项目专属事实由蓝图冻结锁定,正文必须一致引用】`,_.Ru],g=[],h=[...new Set(a.subSections.flatMap(a=>a.requiredParams.filter(a=>"must_cite"===a.mode).map(a=>a.path)))];h.length>0&&g.push(`本章 must_cite 参数(正文必须出现且与蓝图一致):${h.join("、")}`);let i=[];for(let b of a.subSections){let a=b.workPackages.filter(a=>e(a.name));if(0===a.length)continue;let c=[`## ${b.id} ${b.title}`],d=b.requiredParams.filter(a=>"must_cite"===a.mode).map(a=>a.path);for(let b of(d.length>0&&c.push(`must_cite 参数:${d.join("、")}`),a))c.push(...function(a){let b=[`
243
243
  ### 工作包:${a.name}(${"major"===a.kind?"主要":"一般"}工作包)`],c=Object.entries(a.quantities).map(([a,b])=>`${a} ${b.value}${b.unit}`).join("、");return c&&b.push(`- 工程量:${c}`),a.processChain.length>0&&b.push(`- 工序链:${a.processChain.join(" → ")}`),a.methods.length>0&&b.push(`- 施工方法(清单特征原文):${a.methods.join(";")}`),a.params.length>0&&b.push(`- 工艺参数:${a.params.map(a=>`${a.key}=${a.value}`).join(";")}`),a.acceptance.length>0&&b.push(`- 验收要求:${a.acceptance.join(";")}`),a.standards.length>0&&b.push(`- 规范依据:${a.standards.join(";")}`),b}(b));i.push(c.join("\n"))}let j=a.subSections.reduce((a,b)=>a+b.workPackages.length,0);if(0===i.length&&j>0){let b=[];for(let c of a.subSections){let a=c.workPackages.map(a=>{let b=Object.entries(a.quantities),c=b.slice(0,3).map(([a,b])=>`${a} ${b.value}${b.unit}`).join("、");return c?`${a.name}(${c}${b.length>3?" 等":""})`:a.name});a.length>0&&b.push(`- ${c.title}:${a.join(";")}`)}g.push(`【本章工作包索引(本节为章级总述/无专属工作包;各工作包详细参数见本章其他小节,本节不得复写单个分部方案)】
244
244
  ${b.join("\n")}`)}else g.push(...i);let k=function(a,b){let c=as.filter(b=>b.chapterPattern.test(a.title)).map(a=>a.domain),d=(0,al.Bf)((0,al.IV)(b),c);au.test(a.title)&&d.push(...function(a){let b=[];return(a.basisRegulations??[]).length>0&&b.push(`- 招标文件引用法规(项目专属事实,编制依据小节必须列出法规名称及文号):${a.basisRegulations.join("、")}`),b.push("- 编制依据小节由写作模型自行列写:国家法律法规及文号、工程所在地地方性法规、与本工程分部对应的现行施工验收规范名称及编号;不得空写「国家现行法律、行政法规」等类别话术,不得编造文号"),b}(b));let e=at(a.title),f=e.length>0?function(a,b){let c=new Set,d=[];for(let e of a){if(c.has(e))continue;c.add(e);let a=an(e,b);a&&d.push(`- \`{{AUTH:${e}}}\` → ${a}`)}return d}(e,b):[];return(f.length>0&&d.push("【数值占位符协议】下列计划类数值请**原样写出占位符**,不要自行写数(生成后由系统确定性填充为权威值):",...f),0===d.length)?"":["【本章数值锚点——计划类数值必须且只能引用以下锚点值;禁止将各工种人数相加推导峰值、禁止按定额自行估算、禁止改写或自设任何计划类数值】",...d].join("\n")}(a,b),l=c.sliceCharsCap??6e3,m=g.join("\n\n");if(m.length>l){let a=[],b=0;for(let c of m.split("\n")){if(b+c.length+1>l)break;a.push(c),b+=c.length+1}m=`${a.join("\n")}