@customize-agent/server 4.55.1 → 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 (66) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +20 -20
  3. package/.next/prerender-manifest.json +3 -3
  4. package/.next/server/chunks/208.js +3 -3
  5. package/.next/server/chunks/{5547.js → 5784.js} +3 -3
  6. package/.next/server/middleware-build-manifest.js +1 -1
  7. package/.next/server/pages/404.html +1 -1
  8. package/.next/server/pages/500.html +1 -1
  9. package/.next/server/pages/api/assets/generated/preview.js +1 -1
  10. package/.next/server/pages/api/assets/generated/preview.js.nft.json +1 -1
  11. package/.next/server/pages/api/assets/generated.js +1 -1
  12. package/.next/server/pages/api/assets/generated.js.nft.json +1 -1
  13. package/.next/server/pages/api/documents/export.js +1 -1
  14. package/.next/server/pages/api/documents/export.js.nft.json +1 -1
  15. package/.next/server/pages/api/documents/generate.js +1 -1
  16. package/.next/server/pages/api/documents/generate.js.nft.json +1 -1
  17. package/.next/server/pages/api/documents/generated/[id].js +1 -1
  18. package/.next/server/pages/api/documents/generated/[id].js.nft.json +1 -1
  19. package/.next/server/pages/api/documents/generated.js +1 -1
  20. package/.next/server/pages/api/documents/generated.js.nft.json +1 -1
  21. package/.next/server/pages/api/documents/templates.js +1 -1
  22. package/.next/server/pages/api/documents/templates.js.nft.json +1 -1
  23. package/.next/server/pages/api/kb/files/reindex.js +1 -1
  24. package/.next/server/pages/api/kb/files/reindex.js.nft.json +1 -1
  25. package/.next/server/pages/api/kb/intelligence.js +1 -1
  26. package/.next/server/pages/api/kb/intelligence.js.nft.json +1 -1
  27. package/.next/server/pages/api/kb/reindex.js +1 -1
  28. package/.next/server/pages/api/kb/reindex.js.nft.json +1 -1
  29. package/.next/server/pages/api/kb/upload/complete.js +1 -1
  30. package/.next/server/pages/api/kb/upload/complete.js.nft.json +1 -1
  31. package/.next/server/pages/api/kb/upload.js +1 -1
  32. package/.next/server/pages/api/kb/upload.js.nft.json +1 -1
  33. package/.next/server/pages/api/prompt.js.nft.json +1 -1
  34. package/.next/server/pages/asset-library.html +1 -1
  35. package/.next/server/pages/document-roles.html +1 -1
  36. package/.next/server/pages/documents.html +1 -1
  37. package/.next/server/pages/guide.html +1 -1
  38. package/.next/server/pages/index.html +1 -1
  39. package/.next/server/pages/knowledge/file-detail.html +1 -1
  40. package/.next/server/pages/knowledge/files.html +1 -1
  41. package/.next/server/pages/knowledge/manage.html +1 -1
  42. package/.next/server/pages/knowledge.html +1 -1
  43. package/.next/server/pages/models.html +1 -1
  44. package/.next/server/pages/overview.html +1 -1
  45. package/.next/server/pages/prompt.html +1 -1
  46. package/.next/server/pages/settings.html +1 -1
  47. package/.next/server/pages/system/logs.html +1 -1
  48. package/.next/server/pages-manifest.json +24 -24
  49. package/.next/static/{vHA7SiVNhLW8GvsGxTUrP → ahCOrDz46kqYaxgG7Ssg9}/_buildManifest.js +1 -1
  50. package/.next/static/chunks/{289-12dfcb3abec1c4b4.js → 289-35ac595388bbd018.js} +1 -1
  51. package/.next/static/chunks/563-b12f299d34bb9e44.js +1 -0
  52. package/.next/static/chunks/788-3afeb069ed706ac0.js +1 -0
  53. package/.next/static/chunks/pages/documents-2316c4fa9582b510.js +1 -0
  54. package/.next/static/chunks/pages/knowledge/files-8e25066889a85834.js +1 -0
  55. package/.next/static/chunks/pages/knowledge/manage-d0d0e0716e9d705b.js +1 -0
  56. package/.next/static/chunks/pages/prompt-5e1fb81efc656866.js +1 -0
  57. package/.next/static/chunks/pages/system/logs-6f45ef8d862759a2.js +1 -0
  58. package/package.json +1 -1
  59. package/.next/static/chunks/563-2b116a2500a97dba.js +0 -1
  60. package/.next/static/chunks/788-961761f5858f9189.js +0 -1
  61. package/.next/static/chunks/pages/documents-8f11998e3b73d6fa.js +0 -1
  62. package/.next/static/chunks/pages/knowledge/files-7b78e962e432d199.js +0 -1
  63. package/.next/static/chunks/pages/knowledge/manage-7535b873ab505397.js +0 -1
  64. package/.next/static/chunks/pages/prompt-2c242e541f2e77a9.js +0 -1
  65. package/.next/static/chunks/pages/system/logs-c5a8920c6506a7e8.js +0 -1
  66. /package/.next/static/{vHA7SiVNhLW8GvsGxTUrP → 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}