@customize-agent/server 4.34.0 → 4.36.0

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 +4 -4
  5. package/.next/server/chunks/{9197.js → 5928.js} +17 -17
  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 +27 -27
  49. package/.next/static/{J468HRVNdevxgPDtRwIUi → P389JcEyBYvt5VDNJWy9j}/_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-d796eb8dca722e02.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-0e4216df99b9ec32.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/{J468HRVNdevxgPDtRwIUi → P389JcEyBYvt5VDNJWy9j}/_ssgManifest.js +0 -0
@@ -1,4 +1,4 @@
1
- "use strict";exports.id=9197,exports.ids=[9197],exports.modules={1218:(a,b,c)=>{c.d(b,{B2:()=>s,GK:()=>Z,N2:()=>z,OQ:()=>A,PP:()=>ac,R7:()=>H,d6:()=>N,d7:()=>ae,de:()=>F,hn:()=>v,ir:()=>ab,ji:()=>X,n9:()=>Y,qG:()=>u,rC:()=>V,wj:()=>E});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(73186),r=c(80572);function s(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 t=new Map;function u(a){let b=[],c=new Set;for(let h of a.filter(a=>"table"===a.processingType||"structured_data"===a.processingType||"bill_of_quantities"===a.processingType)){if(c.has(h.filePath))continue;c.add(h.filePath);let a=(0,g.aY)(),j=(0,g.NW)(a),k=e.isAbsolute(h.filePath)?h.filePath:d.existsSync(e.join(j,h.filePath))?e.join(j,h.filePath):e.join(a,h.filePath),l=e.extname(h.filePath).toLowerCase();if(d.existsSync(k)&&[".xlsx",".xls",".csv"].includes(l))try{b.push(...function(a,b){let c=d.statSync(a),e=`${a}:${b.roleId||"table"}`,g=t.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 t.size>500&&t.clear(),t.set(e,{mtimeMs:c.mtimeMs,size:c.size,tables:h}),h}(k,h));continue}catch{}let m=h.content.split("\n").map(a=>a.trim()).filter(Boolean).filter(a=>a.includes("|")||a.includes(" ")||a.includes(","));if(m.length<2)continue;let n=m[0].includes("|")?"|":m[0].includes(" ")?" ":",",o=m.map(a=>a.split(n).map(a=>a.trim()).filter(Boolean)).filter(a=>a.length>1);o.length<2||b.push({tableType:h.roleId||"table",headers:o[0],rows:o.slice(1),sourceFile:h.filePath,sourceRange:h.sectionTitle})}return b}function v(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 w=["混凝土强度等级","砂浆强度等级","抗渗等级","钢筋牌号","钢筋级别","砖规格","砌块强度等级","混凝土种类","砂浆种类","垫层材料种类","找平层厚度","保护层厚度","防水层厚度","卷材厚度","镀锌层厚度","保温层厚度","垫层厚度","找坡层厚度","防水等级","抗裂等级","耐火等级","强度等级"],x=/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 y(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 z(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 A(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,r.z)().factExtractionMaxChars??45e3)),i=Math.max(8,Math.floor((0,r.z)().factExtractionMaxItems??48)),k=0,m=[];for(let b of[...a].sort((a,b)=>b.score-a.score).slice(0,i)){let a=E((0,n.lG)(b.content)).replace(/\s+/gu," ").slice(0,Math.max(800,Math.floor(h/i))),c=`文件:${b.filePath}
1
+ "use strict";exports.id=5928,exports.ids=[5928],exports.modules={1218:(a,b,c)=>{c.d(b,{B2:()=>s,GK:()=>Z,N2:()=>z,OQ:()=>A,PP:()=>ac,R7:()=>H,d6:()=>N,d7:()=>ae,de:()=>F,hn:()=>v,ir:()=>ab,ji:()=>X,n9:()=>Y,qG:()=>u,rC:()=>V,wj:()=>E});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(73186),r=c(80572);function s(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 t=new Map;function u(a){let b=[],c=new Set;for(let h of a.filter(a=>"table"===a.processingType||"structured_data"===a.processingType||"bill_of_quantities"===a.processingType)){if(c.has(h.filePath))continue;c.add(h.filePath);let a=(0,g.aY)(),j=(0,g.NW)(a),k=e.isAbsolute(h.filePath)?h.filePath:d.existsSync(e.join(j,h.filePath))?e.join(j,h.filePath):e.join(a,h.filePath),l=e.extname(h.filePath).toLowerCase();if(d.existsSync(k)&&[".xlsx",".xls",".csv"].includes(l))try{b.push(...function(a,b){let c=d.statSync(a),e=`${a}:${b.roleId||"table"}`,g=t.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 t.size>500&&t.clear(),t.set(e,{mtimeMs:c.mtimeMs,size:c.size,tables:h}),h}(k,h));continue}catch{}let m=h.content.split("\n").map(a=>a.trim()).filter(Boolean).filter(a=>a.includes("|")||a.includes(" ")||a.includes(","));if(m.length<2)continue;let n=m[0].includes("|")?"|":m[0].includes(" ")?" ":",",o=m.map(a=>a.split(n).map(a=>a.trim()).filter(Boolean)).filter(a=>a.length>1);o.length<2||b.push({tableType:h.roleId||"table",headers:o[0],rows:o.slice(1),sourceFile:h.filePath,sourceRange:h.sectionTitle})}return b}function v(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 w=["混凝土强度等级","砂浆强度等级","抗渗等级","钢筋牌号","钢筋级别","砖规格","砌块强度等级","混凝土种类","砂浆种类","垫层材料种类","找平层厚度","保护层厚度","防水层厚度","卷材厚度","镀锌层厚度","保温层厚度","垫层厚度","找坡层厚度","防水等级","抗裂等级","耐火等级","强度等级"],x=/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 y(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 z(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 A(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,r.z)().factExtractionMaxChars??45e3)),i=Math.max(8,Math.floor((0,r.z)().factExtractionMaxItems??48)),k=0,m=[];for(let b of[...a].sort((a,b)=>b.score-a.score).slice(0,i)){let a=E((0,n.lG)(b.content)).replace(/\s+/gu," ").slice(0,Math.max(800,Math.floor(h/i))),c=`文件:${b.filePath}
2
2
  角色:${b.roleId||""}
3
3
  处理:${b.processingType||""}
4
4
  内容:${a}`;if(m.length>0&&k+c.length>h)break;k+=c.length,m.push(c)}let o=m.join("\n\n---\n\n");if(!o.trim())return{facts:[],stages:g};(0,n.Te)(e);let p=(0,j.Uy)(c,d),q=p.map(a=>`- id=${a.id} name=${a.name} type=auto required=${a.required} sourceRoleIds=${a.sourceRoleIds.join(",")||"不限"} hint=${a.extractionHint||"无"}`).join("\n"),s=await (0,l.bb)(b||"你是文档事实抽取器。",`请严格按下面的动态事实 schema 从资料中抽取事实。只抽取资料明确支持的内容;如果字段限定 sourceRoleIds,必须优先来自对应文件角色;事实取舍和冲突处理遵循规范包字段说明、文件角色和提示词角色配置。
@@ -39,7 +39,7 @@ ${n.slice(0,2e3)}
39
39
  若表格首行就是分隔线(缺表头行),必须依据表格数据内容补写一行业务表头(每列一个业务字段名),再紧跟分隔线;表头不得使用泛化字段名。
40
40
  合计/小计/总计/累计行的空单元格一律填“—”(不适用语义);规格型号列中无规格型号的小型机具(蛙式打夯机等)可填“—”(机具无型号,合法);其余单元格一律不得为空、不得用占位符,不得凭空编造型号。
41
41
  若表头第一列是表名(如“竣工清理与移交计划表”),把表名移到表格上方正文叙述中,表头从业务列名开始,并同步校正数据行列对齐。
42
- 保持表头结构与列数不变,不得新增、删除或合并小节;只修改缺陷表格相关局部文本。`,p=await b0({originalContent:b.content,repairRound:"table-repair",diagnostics:a.generationDiagnostics,apply:async()=>(function(a,b){let c=b3(a,b);if(!c)return{content:a,removed:0};let d=b4(c.split(/\r?\n/u));return d.removed>0?{content:a.replace(c,d.lines.join("\n")),removed:d.removed}:{content:a,removed:0}})((await a.withProgressHeartbeat(()=>(0,f.l8)({template:a.template,chapter:{id:b.id,title:b.title,content:b.content,evidence:b.evidence,missingFacts:b.missingFacts,sections:b.sections},issues:[g,h],promptTexts:o,requirement:a.requirement,forbidDrawingImages:!1,diagnostics:a.generationDiagnostics,signal:a.signal,patchGuard:(0,f.XG)("table-repair",a.generationDiagnostics)}))).content||b.content,i).content,recheck:a=>[(0,D.NS)(a).filter(a=>"error"===a.level&&/空单元格|占位符单元格|列数不一致/u.test(a.message)&&a.message.includes(i)&&(!j||a.message.includes(j))).length]}),q=p.content;p.rolledBack||q===b.content||(a.finalChapterDrafts[d]={...b,content:l?(0,k.w_)(q,l):q},c+=1);let s=p.rolledBack||p.afterMetrics[0]>0,t=(0,r.X5)({type:"llm_review",roleId:`agent-table-fix-${b.id}-${e}`,status:s?"failed":"success",message:p.rolledBack?`表格数据修复已回滚:${b.title}(修复后缺陷增多,保留修复前正文)`:s?`表格数据修复未生效:${b.title}`:`表格数据修复完成:${b.title}`,details:[g]},{subtitle:"表格数据修复"});(0,r.fx)(a.progressStages,t),(0,r.fx)(a.finalGateRepairStages,t),a.emitProgress(a.finalChapterDrafts,a.progressStages)}}))}c>0&&(a.finalMarkdown=a.rebuildFinalMarkdown(),await a.recomputeFinalValidationBundle())}}let b6={type:"object",required:["conflicts"],properties:{conflicts:{type:"array",required:!0,maxItems:8,items:{type:"object",required:!0,properties:{kind:{type:"string",required:!0},itemA:{type:"string",required:!0},itemB:{type:"string",required:!0},description:{type:"string",required:!0},confidence:{type:"number",required:!0}}}}}};async function b7(a,b={}){let c=function(a){let b=[];for(let c of a.split(/\r?\n/u)){let a=c.trim();if(a){if(/^\|/u.test(a)&&/[\d]/u.test(a)){b.push(a.slice(0,160));continue}if(!/^#{1,6}\s/u.test(a))for(let c of a.split(/(?<=[。;;])/u)){let a=c.trim();a.length>=6&&a.length<=160&&/[\d]/u.test(a)&&b.push(a)}}}let c=[...new Set(b)],d=function(){let a=process.env.DOCUMENT_CONSISTENCY_SAMPLE_LIMIT;if(void 0===a||""===a)return 120;if("0"===a)return 200;let b=Number(a);return Number.isFinite(b)&&b>0?Math.floor(b):120}();return c.length<=d?c:c.map((a,b)=>({sentence:a,index:b,density:(a.match(/[\d,]+(?:\.\d+)?/gu)||[]).length})).sort((a,b)=>b.density-a.density||a.index-b.index).slice(0,d).sort((a,b)=>a.index-b.index).map(a=>a.sentence)}(a);if(c.length<2)return[];let d=await (0,bo.bb)([(0,z.y4)("你是施工组织设计数据一致性审查器。"),"给定全文含数值的句子/表格行清单(编号与内容),找出互相矛盾的数值对:\n- 同一口径必须一致而实际数值不同:劳动力峰值多处不一致、同一面积两处数字不同、总工期与分项工期冲突、同一节点日期两处不一致、表格合计与明细之和不等、人数\xd7工期与总工日不自洽;\n- 只报确定的矛盾(itemA 与 itemB 明确矛盾且置信度 ≥0.8),不得臆造;\n- 不同口径的数值不算矛盾:建筑面积 vs 占地面积、不同单位的表述;分阶段各期人数互比不算矛盾(各阶段人数不同是正常配置);\n- 但总量控制上限与分阶段峰值必须自洽:“高峰期总人数控制在X人/高峰总人数X人以内/控制在X人以下”与任何“高峰投入Y人/阶段高峰Y人/峰值Y人”(Y>X)构成矛盾,必须上报;\nitemA/itemB 必须是清单中真实出现的原文片段(逐字引用编号对应句子或表格行的关键片段,含数值)。\n只输出 JSON,不得输出其他内容。"].join("\n"),c.map((a,b)=>`${b+1}. ${a}`).join("\n"),{maxTokens:2500,temperature:0,signal:b.signal,diagnostics:b.diagnostics,schema:b6,taskKind:"structuredGeneration"});return d?.conflicts?.length?d.conflicts.filter(a=>"string"==typeof a.itemA&&"string"==typeof a.itemB&&a.itemA.trim()&&a.itemB.trim()).filter(a=>(a.confidence??0)>=.7).slice(0,6):[]}async function b8(a){a.decisionLockEntries.length>0&&(a.validationIssues=[...a.validationIssues,...(function(a,b){if(0===b.length)return[];let c=[],d=new Set;for(let e of a.split(/\r?\n/u)){let a=e.trim();if(!(!a||/^#{1,6}\s/u.test(a)||/^\|/u.test(a)))for(let e of a.split(/(?<=[。;;])/u)){let a=e.trim();if(!(a.length<6)&&!(a.length>200))for(let e of b){let b=(0,q.rR)(e.id);if(!b||!b.relevance.test(a))continue;let f=new Set(e.values);for(let g of b.options){if(f.has(g.value)||!g.aliases.test(a)||(0,q.R3)(a,g.aliases))continue;let b=`${e.id} ${g.value} ${a}`;d.has(b)||(d.add(b),c.push({categoryId:e.id,label:e.label,lockedValues:e.values,offValue:g.value,sentence:a}))}}}}return c})(a.finalMarkdown,a.decisionLockEntries).map(a=>({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`语义矛盾(${a.label}):项目关键决策已锁定为「${a.lockedValues.join("、")}」,正文出现「${a.offValue}」冲突表述:“${a.sentence.slice(0,60)}”`,suggestion:"与已锁定决策冲突的表述必须统一为锁定值(或整句删除);禁止保留两套并存的技术路线/机械选型/供应方式。禁止将本缺陷描述与修复要求本身写入正文,输出仅限正文内容。"}))])}var b9=c(93675),ca=c(65667);async function cb(a){let b=await (0,D.KI)(a.finalChapterDrafts,a.factsModel,a.scopeConflicts);a.laborPeakAuthority=(0,F.yB)(a.blueprintData),a.greeningMaintenanceAuthority=(0,p.Dq)(a.factsModel);let c=await (0,ag.Mj)({chapters:a.finalChapterDrafts,model:a.tenderRequirements,similarity:a.requirementsSimilarity,signal:a.signal});if((b.fixedCount>0||c.fixedCount>0)&&(a.finalMarkdown=a.rebuildFinalMarkdown()),c.fixedCount>0){let b=(0,r.X5)({type:"validation",roleId:"scoring-requirement-fix",status:"success",message:`评分项响应确定性补写:${c.fixedCount} 条(${c.details.slice(0,3).join("、")})`,details:c.details.slice(3)},{subtitle:"交付前确定性清洗"});(0,r.fx)(a.progressStages,b),(0,r.fx)(a.finalGateRepairStages,b)}let d=(0,p.qG)(a.finalChapterDrafts);a.surfaceFixContext={laborPeakAuthority:a.laborPeakAuthority,phaseLaborAuthorities:(0,F.i2)(a.blueprintData),greeningMaintenanceAuthority:a.greeningMaintenanceAuthority,resourceBreakdownAuthority:(0,ca.re)(a.blueprintData),supportFormAuthority:"slope"===a.supportAuthority?"放坡":"pile"===a.supportAuthority?"钢板桩":void 0,plannedSectionTitles:[...new Set([...(a.effectiveChapters||[]).flatMap(a=>a.sections||[]),...a.template.chapters.flatMap(a=>a.sections||[]),...a.finalChapterDrafts.flatMap(a=>a.sections||[])].filter(Boolean))],basisRegulations:(0,p.VZ)(a.blueprintData?.basisRegulations,a.allEvidence.map(a=>String(a.content||"")).join("\n"),a.blueprintData?.project.location||"")};let e=new Map,f=(a,b)=>{b>0&&e.set(a,(e.get(a)??0)+b)};for(let b of a.finalChapterDrafts)for(let c of b9.aW){if(!c.stage5)continue;let d=(0,p.gD)(b=>c.fix(b,a.surfaceFixContext),b.content,2);d.fixedCount>0&&(b.content=d.markdown,f(c.key,d.fixedCount))}let g=a=>e.get(a)??0,h=g("table-line-residue"),i=g("finish-thickness"),j=g("labor-peak"),k=g("phase-labor-values"),l=g("resource-breakdown"),m=g("ambiguous-either-or"),n=g("self-undermining"),o=g("empty-scoring-response"),q=g("tender-meta-language"),s=g("duplicate-response-line"),t=g("atlas-reference"),u=g("meta-discourse"),v=g("formula-residue"),w=g("paragraph-opening-repeat"),x=g("truncated-sentence"),y=g("internal-table-row-dup"),A=g("greening-maintenance"),B=g("paragraph-tail-repeat"),C=g("slot-depth-value"),E=g("duplicate-basic-info-tables"),G=g("fallback-placeholder-rows"),H=g("heading-uncovered-items"),I=g("basis-regulation-region"),J=g("forbidden-configuration"),K=g("work-injury-insurance");(d.removedCount>0||h>0||i>0||C>0||j>0||k>0||l>0||m>0||n>0||o>0||q>0||s>0||t>0||u>0||v>0||w>0||x>0||y>0||E>0||G>0||A>0||H>0||I>0||J>0||K>0||B>0)&&(a.finalMarkdown=a.rebuildFinalMarkdown(),(0,r.fx)(a.progressStages,(0,r.X5)({type:"validation",roleId:"deterministic-surface-fix",status:"success",message:`交付前确定性清洗:跨章表格去重 ${d.removedCount} 行、断行残片合并 ${h} 处、装饰层厚度修复 ${i} 处、埋深槽位错位删除 ${C} 处、劳动力峰值统一 ${j} 处、阶段劳动力统一 ${k} 处、资源数值统一 ${l} 处、两可表述归一 ${m} 处、段首机械重复剥离 ${w} 处、截断句残留收敛 ${x} 处、元话语声明清洗 ${u} 处、公式形态清洗 ${v} 处、自伤句式改写 ${n} 处、空响应句改写 ${o} 处、招标元语言清理 ${q} 处、重复响应行去重 ${s} 行、图集引用清洗 ${t} 处、表内重复行删除 ${y} 行、基础信息表合并 ${E} 组、兜底话术表行删除 ${G} 行、绿化养护期统一 ${A} 处、标题工程类别覆盖修正 ${H} 处、编制依据法规补写 ${I} 处、配置禁用词清洗 ${J} 处、工伤保险缴纳表述补写 ${K} 处、段内句级复读剥离 ${B} 处、叠词收敛`},{subtitle:"交付前确定性清洗"})));let L=await (0,D.Yb)(a.finalMarkdown,a.factsModel,a.scopeConflicts);L.fixedCount>0&&(a.finalMarkdown=L.markdown);let M=(0,p.fE)(a.finalMarkdown,{authorityIndex:a.blueprintData?(0,F.IV)(a.blueprintData):void 0,scheduleAuthority:a.scheduleAuthority,assemblyRateAuthority:a.assemblyRateAuthority,supportAuthority:a.supportAuthority});if(M.fixedCount>0&&(a.finalMarkdown=M.markdown),b.fixedCount>0||L.fixedCount>0||M.fixedCount>0){await a.recomputeFinalValidationBundle();let c=b.fixedCount+L.fixedCount+M.fixedCount,d=[...new Set([...b.details,...L.details,...M.details])];(0,r.fx)(a.progressStages,(0,r.X5)({type:"validation",roleId:"deterministic-consistency-fix",status:"success",message:`交付前确定性清洗:${c} 处(${d.slice(0,4).join("、")})`,details:d.slice(4)},{subtitle:"交付前确定性清洗"}))}let N=(0,z.K7)(a.finalMarkdown);N!==a.finalMarkdown&&(a.finalMarkdown=N,await a.recomputeFinalValidationBundle())}async function cc(a,b){let c=[],d=[],e=[],f=await al(a);if(!f.degraded)for(let g of f.groups){let f=ao(g,{markdown:a,billFactLock:b.billFactLock});if("distinct-lock-entries"===f.verdict){d.push(`“${g.concept}”对应${f.entries}`);continue}if("no-anchor"===f.verdict){e.push(`“${g.concept}”:${[...new Set(g.values.map(a=>a.raw))].slice(0,3).join("、")}`);continue}for(let a of f.nonLock)for(let b of a.occurrences){let d=b.matchIndex+b.valueOffset;c.push({start:d,end:d+b.valueText.length,replacement:String(f.lockValue),detail:`参数口径“${a.concept}” ${a.raw}→${f.lockValue}${f.lockUnit}(以工程量清单条目「${f.entryName}」锁定口径为准)`,concept:g.concept})}}for(let d of(0,p.mB)(a,b.specAuthorityMap))d.replacement&&c.push({...d.replacement,location:d.location});if(0===c.length)return{replacements:[],falsePositiveGroups:d,noAnchorGroups:e,details:[]};let g=(0,p.gk)(a,c).markdown,h=new Set,i=await al(g);if(!i.degraded){let a=new Set(i.groups.map(a=>a.concept));for(let b of new Set(c.filter(a=>a.concept).map(a=>a.concept)))a.has(b)&&(c.forEach((a,c)=>{a.concept===b&&h.add(c)}),e.push(`“${b}”锁值替换复检未清零,已回滚交 LLM 定向修复`))}let j=new Map;for(let a of c)a.location&&j.set(a.location,(j.get(a.location)||0)+1);if(j.size>0){let a=(0,p.mB)(g,b.specAuthorityMap),d=new Map;for(let b of a)b.replacement&&d.set(b.location,(d.get(b.location)||0)+1);for(let[a,b]of j)(d.get(a)||0)>=b&&(c.forEach((b,c)=>{b.location===a&&h.add(c)}),e.push(`“${a}”规格替换复检未减数,已回滚交 LLM 定向修复`))}let k=[...new Set(c.filter((a,b)=>!h.has(b)).map(a=>a.detail))].slice(0,12);return{replacements:c.filter((a,b)=>!h.has(b)).map(a=>({start:a.start,end:a.end,replacement:a.replacement,detail:a.detail})),falsePositiveGroups:d,noAnchorGroups:e,details:k}}var cd=c(43378),ce=c(22213),cf=c(3063);let cg=/两可|按图纸|资料[^。;;\n]{0,14}(?:未明确|两可|冲突)|支护[^。;;\n]{0,10}并存/u;async function ch(a){let{chapterDraftsFinal:b,progressStages:c,emitProgress:d}=a,e=a.globalConsistencyIssues,f=0,g=0;for(let a of b){let b=a.content.split(/\r?\n/u).length,c=(0,p.lR)(a.content),d=(0,p.QM)(c.markdown),e=(0,p.Vc)(d.markdown);b-e.markdown.split(/\r?\n/u).length>0&&(f+=c.removedCount+d.removedCount,g+=e.removedCount,a.content=e.markdown)}if(f>0||g>0){let a=b.map(a=>a.content).join("\n\n"),h=[...(0,p.ub)(a),...(0,p.cl)(a)].map(a=>`${a.message};${a.suggestion||""}`);e=[...new Set([...e.filter(a=>!/表格重复|段落完全重复/u.test(a)),...h])];let i=[f>0?`重复表格 ${f} 行`:"",g>0?`重复段落 ${g} 行`:""].filter(Boolean).join("、");(0,r.fx)(c,(0,r.X5)({type:"llm_review",roleId:"post-table-dedup",status:"success",message:`补表后确定性去重:${i}`},{subtitle:"表格执行率核验"})),d(b)}return e}async function ci(a){let{effectiveChapters:b,chapterDraftsFinal:c,template:d,repairPromptTexts:e,requirement:g,signal:h,generationDiagnostics:i,progressStages:j,emitProgress:k,withProgressHeartbeat:l}=a,m=(0,cd.Xi)(b,c),n=!1;if(m.length>0)for(let a=0;a<1&&m.length>0;a+=1){(0,r.fx)(j,(0,r.X5)({type:"llm_review",roleId:"table-execution-repair",status:"running",message:`表格执行率修复第 ${a+1} 轮(${m.length} 个章节缺表)`},{subtitle:"表格执行率修复"})),k(c);let o=0,p=[],q=m.flatMap(a=>{let b=c.find(b=>b.title===a.chapterTitle||a.chapterTitle.includes(b.title)||b.title.includes(a.chapterTitle));return b?[{gap:a,draft:b}]:[]}),s=async a=>{let{gap:j,draft:k}=a,m=[...new Set(j.plans.map(a=>a.section).filter(Boolean))],n=m.length>0?k.evidence.filter(a=>{let b=a.sectionTitle;return!b||m.some(a=>b===a||b.includes(a)||a.includes(b))}):k.evidence,o={id:k.id,title:k.title,content:k.content,evidence:n.length?n:k.evidence,missingFacts:k.missingFacts||[],sections:k.sections},p=`计划表格缺失(计划 ${j.planned} 张,实际仅 ${j.actual} 张):${j.plans.map(a=>`${a.title}(表头:${a.fields.map(a=>a.name).join("、")})`).join(";")}。必须按表头字段补齐这些 markdown 表格并紧跟相关小节输出,不得删除已有正文;每个表格前须有 1~2 句引导叙述说明表格作用与关键结论,表格不能替代小节正文;表格内项目特有数字、日期、工程量、规格必须来自项目资料或项目图谱,不得编造;人数、台班、进度时间等计划类数值必须原样引用蓝图权威锚点(劳动力峰值、工种构成、分阶段投入、机械台数、总工期节点),不得基于工程量或定额自行推算另设,不得留空、不得写“按需配置”等空话。`;return b0({originalContent:k.content,repairRound:"table-execution-repair",diagnostics:i,beforeMetrics:[Math.max(0,j.planned-j.actual)],apply:async()=>{let a=await l(()=>(0,f.X6)(i,`table-execution-repair:${k.id}`,()=>(0,f.l8)({template:d,chapter:o,issues:[p],promptTexts:e,requirement:g,forbidDrawingImages:!0,diagnostics:i,signal:h,patchGuard:(0,f.XG)("table-execution-repair",i),maxTokens:Math.min(12e3,Math.max(6e3,1200*j.plans.length))})));return a.content&&a.content!==k.content?a.content:k.content},recheck:a=>{let d=c.map(b=>b.id===k.id?{title:b.title,content:a,sections:b.sections}:b);return[(0,cd.Xi)(b,d).filter(a=>a.chapterTitle===k.title||a.chapterTitle===j.chapterTitle||k.title.includes(a.chapterTitle)||a.chapterTitle.includes(k.title)).reduce((a,b)=>a+Math.max(0,b.planned-b.actual),0)]}})},t=await Promise.allSettled(q.map(a=>s(a))),u=new Set;if(t.forEach((a,b)=>{if("rejected"===a.status){if(h?.aborted)throw a.reason;p.push(`${q[b].gap.chapterTitle}:修复异常(${a.reason instanceof Error?a.reason.message:"未知错误"})`);return}let c=a.value,{gap:d,draft:e}=q[b];if(c.rolledBack)return void p.push(`${d.chapterTitle}:修复后计划表格缺口增多,已回滚本轮修改`);c.content&&c.content!==e.content&&!u.has(e.id)?(e.content=c.content,u.add(e.id),o+=1):u.has(e.id)||p.push(`${d.chapterTitle}:缺 ${d.plans.map(a=>a.title).join("、")}(${i?.llm.lastError||"补表 patch 未应用"})`)}),0===o){(0,r.fx)(j,(0,r.X5)({type:"llm_review",roleId:"table-execution-repair",status:"failed",message:`表格执行率修复第 ${a+1} 轮:补表 patch 未应用(${m.length} 个章节缺表)`,details:p},{subtitle:"表格执行率修复"})),k(c);break}n=!0,k(c),m=(0,cd.Xi)(b,c),(0,r.fx)(j,(0,r.X5)({type:"llm_review",roleId:"table-execution-repair",status:m.length>0?"failed":"success",message:m.length>0?`表格执行率修复第 ${a+1} 轮完成,仍有 ${m.length} 个章节缺表`:`表格执行率修复第 ${a+1} 轮完成`},{subtitle:"表格执行率修复"})),(0,r.fx)(j,(0,r.X5)({type:"llm_review",roleId:"table-execution-review",status:m.length>0?"failed":"success",message:m.length>0?`表格执行率复检:仍有 ${m.length} 个章节缺表`:"表格执行率复检通过"},{subtitle:"表格执行率核验"}))}return{tableFixApplied:n}}function cj(a,b){if(!b)return!1;let c=/^##\s+(.+?)\s*$/mu.exec(a.content)?.[1];return b===a.title||b===c||a.content.includes(b)}async function ck(a){let{chapterDraftsFinal:b,template:c,repairPromptTexts:d,requirement:e,signal:g,generationDiagnostics:h,progressStages:i,emitProgress:j,withProgressHeartbeat:k}=a,l=!1;for(let a=0;a<2;a+=1){let m=b.map(a=>a.content).join("\n\n"),n=await (0,a4.Bt)(m),o=await (0,a4.gE)(m),p=n.fillerSentences>0,q=o.countermeasures>0&&o.ratio<.5,s=(0,aM.P_)(m),t=(0,aM.C4)(m),u=(0,aM.uj)(m),v=s.length>0,w=t.length>0,x=u.length>0;if(!p&&!q&&!v&&!w&&!x)break;let y=p?await bG(b):[],z=p?function(a,b){let c=[],d=[],e=0;for(let f of b){let b=f.chapterId||f.chapterTitle,g=a.find(a=>(a.id||a.title)===b);if(!g||"semantic"!==f.channel||!(0,a4.W0)(f.sentence)){d.push(f);continue}let h=g.content.split("\n"),i=function(a,b){let c=b.replace(/[。;;]\s*$/u,"").trim();if(c.length<12)return 0;let d=c.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&"),e=RegExp(`[\\s\\u3000]*${d}[\\s\\u3000]*[。;;]`,"gu"),f=RegExp(`[\\s\\u3000]*${d}[\\s\\u3000]*$`,"u"),g=0;for(let b=a.length-1;b>=0;b-=1){let d=a[b];if((0,a4.X9)(d)||!d.includes(c))continue;let h=d.match(e),i=h&&h.length>0?d.replace(e,""):d.replace(f,"");i!==d&&(g+=h&&h.length>0?h.length:1,""===i.trim()?a.splice(b,1):a[b]=i)}return g}(h,f.sentence);i>0?(g.content=h.join("\n").replace(/\n{3,}/gu,"\n\n"),e+=i,c.includes(f.sentence)||c.push(f.sentence)):d.push(f)}return{deletedCount:e,deletedSentences:c,remaining:d}}(b,y):{deletedCount:0,deletedSentences:[],remaining:y};z.deletedCount>0&&console.error(`[gen][templating] 零信息口号句确定性删除 ${z.deletedCount} 处:${z.deletedSentences.slice(0,3).join(" / ")}${z.deletedSentences.length>3?" 等":""}`);let A=b.map(a=>a.content).join("\n\n"),B=new Map(b.map(a=>[a.id,a.content])),C=(q?o.entries.filter(a=>!a.attributed||!a.quantified).slice(0,20):[]).flatMap(a=>{let c=a.text.replace(/\s+/gu,""),d=b.find(a=>a.content.replace(/\s+/gu,"").includes(c));return d?[{chapter:d,text:a.text,missingAttribution:!a.attributed,missingTarget:!a.quantified}]:[]}),D=b.flatMap(a=>{let b=z.remaining.filter(b=>(b.chapterId||b.chapterTitle)===(a.id||a.title)).map(a=>a.sentence),c=C.filter(b=>b.chapter.id===a.id).map(a=>({text:a.text,missingAttribution:a.missingAttribution,missingTarget:a.missingTarget})),d=s.filter(b=>cj(a,b.chapterTitle)),e=t.filter(b=>cj(a,b.chapterTitle)),f=u.filter(b=>cj(a,b.chapterTitle));return b.length>0||c.length>0||d.length>0||e.length>0||f.length>0?[{chapter:a,sentences:b,difficulty:c,frames:d,flows:e,titles:f}]:[]});if(0===D.length){z.deletedCount>0&&(l=!0,(0,r.fx)(i,(0,r.X5)({type:"llm_review",roleId:"templating-repair",status:"success",message:`模板化修复第 ${a+1} 轮:确定性删除零信息口号句 ${z.deletedCount} 处(无剩余重写目标)`},{subtitle:"模板化修复"})),j(b));break}let E=[p?`套话句占比 ${(100*n.ratio).toFixed(1)}%${z.deletedCount>0?`(已确定性删除零信息口号 ${z.deletedCount} 处)`:""}`:"",q?`重难点双达标 ${(100*o.ratio).toFixed(0)}%`:"",v?`骨架指纹 ${s.length} 组`:"",w?`工序形式 ${t.length} 处`:"",x?`标题缺陷 ${u.length} 处`:""].filter(Boolean).join("、");(0,r.fx)(i,(0,r.X5)({type:"llm_review",roleId:"templating-repair",status:"running",message:`模板化修复第 ${a+1} 轮:${E}(${D.length} 章)`},{subtitle:"模板化修复"})),j(b);let F=0,G=async a=>{let b=[];a.sentences.length>0&&b.push(`第 1~${a.sentences.length} 条目标原文是本章已检出的空话套话句(零信息纯口号句已由系统确定性删除,此处为含信息或合规承诺类命中句):逐条原地改写为“责任岗位 + 执行动作 + 量化标准 + 检查频次 + 整改时限”式可核查措施,且每条改写句必须嵌入不少于 2 个项目实体(村名/工程量/规格,取自本章证据摘要);禁止以同义空话替换、禁止改写清单外内容、不得凭空编造数值;属必须保留的合规承诺句须具体化到可核查。`);let i=a.sentences.length+1;for(let c of a.difficulty){let a=[c.missingAttribution?"归因句(该难点的成因/风险来源)":"",c.missingTarget?"量化控制目标(数值+单位,来自本章证据摘要或行业规范,不得编造)":""].filter(Boolean).join("与");b.push(`第 ${i} 条目标原文是重难点分析条目,缺少${c.missingAttribution&&c.missingTarget?"成因归因与量化控制目标":a}:保留条目原有事实与数值,在其内补充${a}。`),i+=1}for(let c of a.frames){let a=c.sentences.map(()=>{let a=i;return i+=1,a});b.push(`第 ${a.join("、")} 条目标原文含全篇复读骨架「${c.fingerprintLabel}」(全篇 ${c.totalCount} 处,验收上限 2 处):逐句改写为差异化句式,保留原句全部事实信息(岗位、数值、频次不得丢失)。`)}for(let c of a.flows)b.push(`第 ${i} 条目标原文是小节标题,其所在小节「${c.blockTitle}」的工序顺序表达当前为【${c.currentForm}】形式且与相邻小节同形式:将该小节的工序顺序表达改写为【${c.targetForm}】形式,内容与数值保持不变(工艺参数不得删减)。`),i+=1;for(let c of a.titles)b.push(`第 ${i} 条目标原文是小节标题(${c.reason}):将该小节标题重命名为完整表达本小节内容的正式名称,正文内容不变;禁止使用“施工概况/施工流程/施工方法”等结构标签词充当标题。`),i+=1;return b.push("清单之外的内容一律不得改动;不得删除任何小节标题、表格与数值参数。"),k(()=>(0,f.X6)(h,`templating-repair:${a.chapter.id}`,()=>(0,f.l8)({template:c,chapter:{id:a.chapter.id,title:a.chapter.title,content:a.chapter.content,evidence:a.chapter.evidence||[],missingFacts:a.chapter.missingFacts||[],sections:a.chapter.sections},issues:[b.join("\n")],promptTexts:d,requirement:e,forbidDrawingImages:!0,diagnostics:h,signal:g,patchGuard:(0,f.XG)("templating-repair",h),anchorTexts:[...a.sentences,...a.difficulty.map(a=>a.text),...a.frames.flatMap(a=>a.sentences),...a.flows.map(a=>a.blockTitle),...a.titles.map(a=>a.title)],maxTokens:6e3,evidenceChars:5e3})))},H=await b0({originalContent:A,repairRound:"templating-repair",diagnostics:h,beforeMetrics:[n.ratio,o.ratio,s.length,t.length,u.length],apply:async()=>((await Promise.allSettled(D.map(a=>G(a)))).forEach((a,b)=>{if("rejected"===a.status){if(g?.aborted)throw a.reason;console.error("[gen] templating repair failed:",a.reason);return}let c=a.value,{chapter:d}=D[b];c.content&&c.content!==d.content&&(d.content=c.content,F+=1)}),j(b),b.map(a=>a.content).join("\n\n")),recheck:async a=>{let b=await (0,a4.Bt)(a),c=await (0,a4.gE)(a);return[b.ratio,c.ratio,(0,aM.P_)(a).length,(0,aM.C4)(a).length,(0,aM.uj)(a).length]},shouldRollback:(a,b)=>b[0]>a[0]+.01&&!(b[1]>a[1]+.01)||b[2]+b[3]+b[4]>a[2]+a[3]+a[4]});if(0===F&&0===z.deletedCount){(0,r.fx)(i,(0,r.X5)({type:"llm_review",roleId:"templating-repair",status:"failed",message:`模板化修复第 ${a+1} 轮:修复 patch 未落地(${D.length} 章锚点失配或 LLM 未产出)`,details:[`未收敛维度:${E}`]},{subtitle:"模板化修复"}));break}if(H.rolledBack){for(let a of b){let b=B.get(a.id);void 0!==b&&(a.content=b)}(0,r.fx)(i,(0,r.X5)({type:"llm_review",roleId:"templating-repair",status:"failed",message:`模板化修复第 ${a+1} 轮:修复后指标变差已回滚本轮修改(套话 ${(100*H.beforeMetrics[0]).toFixed(1)}%→${(100*H.afterMetrics[0]).toFixed(1)}%,治理缺陷目标 ${H.beforeMetrics[2]+H.beforeMetrics[3]+H.beforeMetrics[4]}→${H.afterMetrics[2]+H.afterMetrics[3]+H.afterMetrics[4]})`,details:["LLM 重写未收敛,回滚保留修复前正文"]},{subtitle:"模板化修复"})),j(b);break}l=!0}if(l){let a=b.map(a=>a.content).join("\n\n"),c=await (0,a4.Bt)(a),d=await (0,a4.gE)(a),e=(0,aM.P_)(a),f=(0,aM.C4)(a),g=(0,aM.uj)(a),h=c.ratio<.1&&(!d.heavyTemplated||0===d.countermeasures)&&0===e.length&&0===f.length&&0===g.length,k=[e.length>0?`骨架指纹 ${[...new Set(e.map(a=>`${a.fingerprintLabel}\xd7${a.totalCount}`))].join("、")}`:"",f.length>0?`工序形式相邻重复 ${f.length} 处`:"",g.length>0?`标题缺陷 ${g.length} 处`:""].filter(Boolean).join(";");(0,r.fx)(i,(0,r.X5)({type:"llm_review",roleId:"templating-repair",status:h?"success":"failed",message:`模板化修复完成:套话句占比 ${(100*c.ratio).toFixed(1)}%(达标线 ≤10%),重难点归因+量化双达标 ${(100*d.ratio).toFixed(0)}%(达标线 ≥50%)${k?`,模板化残留:${k}`:""}`,details:h?[]:["未完全收敛:残留项先由确定性修复链(终检前)收敛;复核未清零的残留经终检检测器判定,仍不达标即阻断交付(宁缺毋假)"]},{subtitle:"模板化修复"})),j(b)}return{templatingFixApplied:l}}async function cl(a){let{chapterDraftsFinal:b,projectContext:c,template:d,repairPromptTexts:e,requirement:g,signal:h,generationDiagnostics:i,progressStages:j,emitProgress:k,withProgressHeartbeat:l}=a,m=/^#{3,4}\s+(?:\d+(?:\.\d+)*\s+)?(?:项目主要施工\s*内容|主要施工\s*内容|主要分部分项工程施工方案|主要分部分项施工方案|主要施工方法)\s*$/u,n=!1,o=0,p=0,q=(0,ce.sh)(c,b.flatMap(a=>a.evidence||[]));if(q.length>0){let a=/项目主要施工内容|主要施工内容|主要分部分项工程施工方案|主要分部分项施工方案|主要施工方法/u;for(let c of b){if(c.content.split("\n").some(a=>m.test(a.trim())))continue;let d=(c.sections||[]).find(b=>a.test(b));if(!d)continue;Array.isArray(c.sections)||(c.sections=[]);let e=c.sections.findIndex(b=>a.test(b)),f=e>=0?e+1:c.sections.length+1,g=`### ${b.indexOf(c)+1}.${f} ${d}`;c.content=`${c.content.replace(/\s+$/u,"")}
42
+ 保持表头结构与列数不变,不得新增、删除或合并小节;只修改缺陷表格相关局部文本。`,p=await b0({originalContent:b.content,repairRound:"table-repair",diagnostics:a.generationDiagnostics,apply:async()=>(function(a,b){let c=b3(a,b);if(!c)return{content:a,removed:0};let d=b4(c.split(/\r?\n/u));return d.removed>0?{content:a.replace(c,d.lines.join("\n")),removed:d.removed}:{content:a,removed:0}})((await a.withProgressHeartbeat(()=>(0,f.l8)({template:a.template,chapter:{id:b.id,title:b.title,content:b.content,evidence:b.evidence,missingFacts:b.missingFacts,sections:b.sections},issues:[g,h],promptTexts:o,requirement:a.requirement,forbidDrawingImages:!1,diagnostics:a.generationDiagnostics,signal:a.signal,patchGuard:(0,f.XG)("table-repair",a.generationDiagnostics)}))).content||b.content,i).content,recheck:a=>[(0,D.NS)(a).filter(a=>"error"===a.level&&/空单元格|占位符单元格|列数不一致/u.test(a.message)&&a.message.includes(i)&&(!j||a.message.includes(j))).length]}),q=p.content;p.rolledBack||q===b.content||(a.finalChapterDrafts[d]={...b,content:l?(0,k.w_)(q,l):q},c+=1);let s=p.rolledBack||p.afterMetrics[0]>0,t=(0,r.X5)({type:"llm_review",roleId:`agent-table-fix-${b.id}-${e}`,status:s?"failed":"success",message:p.rolledBack?`表格数据修复已回滚:${b.title}(修复后缺陷增多,保留修复前正文)`:s?`表格数据修复未生效:${b.title}`:`表格数据修复完成:${b.title}`,details:[g]},{subtitle:"表格数据修复"});(0,r.fx)(a.progressStages,t),(0,r.fx)(a.finalGateRepairStages,t),a.emitProgress(a.finalChapterDrafts,a.progressStages)}}))}c>0&&(a.finalMarkdown=a.rebuildFinalMarkdown(),await a.recomputeFinalValidationBundle())}}let b6={type:"object",required:["conflicts"],properties:{conflicts:{type:"array",required:!0,maxItems:8,items:{type:"object",required:!0,properties:{kind:{type:"string",required:!0},itemA:{type:"string",required:!0},itemB:{type:"string",required:!0},description:{type:"string",required:!0},confidence:{type:"number",required:!0}}}}}};async function b7(a,b={}){let c=function(a){let b=[];for(let c of a.split(/\r?\n/u)){let a=c.trim();if(a){if(/^\|/u.test(a)&&/[\d]/u.test(a)){b.push(a.slice(0,160));continue}if(!/^#{1,6}\s/u.test(a))for(let c of a.split(/(?<=[。;;])/u)){let a=c.trim();a.length>=6&&a.length<=160&&/[\d]/u.test(a)&&b.push(a)}}}let c=[...new Set(b)],d=function(){let a=process.env.DOCUMENT_CONSISTENCY_SAMPLE_LIMIT;if(void 0===a||""===a)return 120;if("0"===a)return 200;let b=Number(a);return Number.isFinite(b)&&b>0?Math.floor(b):120}();return c.length<=d?c:c.map((a,b)=>({sentence:a,index:b,density:(a.match(/[\d,]+(?:\.\d+)?/gu)||[]).length})).sort((a,b)=>b.density-a.density||a.index-b.index).slice(0,d).sort((a,b)=>a.index-b.index).map(a=>a.sentence)}(a);if(c.length<2)return[];let d=await (0,bo.bb)([(0,z.y4)("你是施工组织设计数据一致性审查器。"),"给定全文含数值的句子/表格行清单(编号与内容),找出互相矛盾的数值对:\n- 同一口径必须一致而实际数值不同:劳动力峰值多处不一致、同一面积两处数字不同、总工期与分项工期冲突、同一节点日期两处不一致、表格合计与明细之和不等、人数\xd7工期与总工日不自洽;\n- 只报确定的矛盾(itemA 与 itemB 明确矛盾且置信度 ≥0.8),不得臆造;\n- 不同口径的数值不算矛盾:建筑面积 vs 占地面积、不同单位的表述;分阶段各期人数互比不算矛盾(各阶段人数不同是正常配置);\n- 但总量控制上限与分阶段峰值必须自洽:“高峰期总人数控制在X人/高峰总人数X人以内/控制在X人以下”与任何“高峰投入Y人/阶段高峰Y人/峰值Y人”(Y>X)构成矛盾,必须上报;\nitemA/itemB 必须是清单中真实出现的原文片段(逐字引用编号对应句子或表格行的关键片段,含数值)。\n只输出 JSON,不得输出其他内容。"].join("\n"),c.map((a,b)=>`${b+1}. ${a}`).join("\n"),{maxTokens:2500,temperature:0,signal:b.signal,diagnostics:b.diagnostics,schema:b6,taskKind:"structuredGeneration"});return d?.conflicts?.length?d.conflicts.filter(a=>"string"==typeof a.itemA&&"string"==typeof a.itemB&&a.itemA.trim()&&a.itemB.trim()).filter(a=>(a.confidence??0)>=.7).slice(0,6):[]}async function b8(a){a.decisionLockEntries.length>0&&(a.validationIssues=[...a.validationIssues,...(function(a,b){if(0===b.length)return[];let c=[],d=new Set;for(let e of a.split(/\r?\n/u)){let a=e.trim();if(!(!a||/^#{1,6}\s/u.test(a)||/^\|/u.test(a)))for(let e of a.split(/(?<=[。;;])/u)){let a=e.trim();if(!(a.length<6)&&!(a.length>200))for(let e of b){let b=(0,q.rR)(e.id);if(!b||!b.relevance.test(a))continue;let f=new Set(e.values);for(let g of b.options){if(f.has(g.value)||!g.aliases.test(a)||(0,q.R3)(a,g.aliases))continue;let b=`${e.id} ${g.value} ${a}`;d.has(b)||(d.add(b),c.push({categoryId:e.id,label:e.label,lockedValues:e.values,offValue:g.value,sentence:a}))}}}}return c})(a.finalMarkdown,a.decisionLockEntries).map(a=>({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`语义矛盾(${a.label}):项目关键决策已锁定为「${a.lockedValues.join("、")}」,正文出现「${a.offValue}」冲突表述:“${a.sentence.slice(0,60)}”`,suggestion:"与已锁定决策冲突的表述必须统一为锁定值(或整句删除);禁止保留两套并存的技术路线/机械选型/供应方式。禁止将本缺陷描述与修复要求本身写入正文,输出仅限正文内容。"}))])}var b9=c(93675),ca=c(65667);async function cb(a){let b=await (0,D.KI)(a.finalChapterDrafts,a.factsModel,a.scopeConflicts);a.laborPeakAuthority=(0,F.yB)(a.blueprintData),a.greeningMaintenanceAuthority=(0,p.Dq)(a.factsModel);let c=await (0,ag.Mj)({chapters:a.finalChapterDrafts,model:a.tenderRequirements,similarity:a.requirementsSimilarity,signal:a.signal});if((b.fixedCount>0||c.fixedCount>0)&&(a.finalMarkdown=a.rebuildFinalMarkdown()),c.fixedCount>0){let b=(0,r.X5)({type:"validation",roleId:"scoring-requirement-fix",status:"success",message:`评分项响应确定性补写:${c.fixedCount} 条(${c.details.slice(0,3).join("、")})`,details:c.details.slice(3)},{subtitle:"交付前确定性清洗"});(0,r.fx)(a.progressStages,b),(0,r.fx)(a.finalGateRepairStages,b)}let d=(0,p.qG)(a.finalChapterDrafts);a.surfaceFixContext={laborPeakAuthority:a.laborPeakAuthority,phaseLaborAuthorities:(0,F.i2)(a.blueprintData),greeningMaintenanceAuthority:a.greeningMaintenanceAuthority,resourceBreakdownAuthority:(0,ca.re)(a.blueprintData),supportFormAuthority:"slope"===a.supportAuthority?"放坡":"pile"===a.supportAuthority?"钢板桩":void 0,decisionLockEntries:a.decisionLockEntries,plannedSectionTitles:[...new Set([...(a.effectiveChapters||[]).flatMap(a=>a.sections||[]),...a.template.chapters.flatMap(a=>a.sections||[]),...a.finalChapterDrafts.flatMap(a=>a.sections||[])].filter(Boolean))],basisRegulations:(0,p.VZ)(a.blueprintData?.basisRegulations,a.allEvidence.map(a=>String(a.content||"")).join("\n"),a.blueprintData?.project.location||"")};let e=new Map,f=(a,b)=>{b>0&&e.set(a,(e.get(a)??0)+b)};for(let b of a.finalChapterDrafts)for(let c of b9.aW){if(!c.stage5)continue;let d=(0,p.gD)(b=>c.fix(b,a.surfaceFixContext),b.content,2);d.fixedCount>0&&(b.content=d.markdown,f(c.key,d.fixedCount))}let g=a=>e.get(a)??0,h=g("table-line-residue"),i=g("finish-thickness"),j=g("labor-peak"),k=g("phase-labor-values"),l=g("resource-breakdown"),m=g("ambiguous-either-or"),n=g("self-undermining"),o=g("empty-scoring-response"),q=g("tender-meta-language"),s=g("duplicate-response-line"),t=g("atlas-reference"),u=g("meta-discourse"),v=g("formula-residue"),w=g("paragraph-opening-repeat"),x=g("truncated-sentence"),y=g("internal-table-row-dup"),A=g("greening-maintenance"),B=g("paragraph-tail-repeat"),C=g("slot-depth-value"),E=g("duplicate-basic-info-tables"),G=g("fallback-placeholder-rows"),H=g("heading-uncovered-items"),I=g("basis-regulation-region"),J=g("forbidden-configuration"),K=g("work-injury-insurance"),L=g("section-renumber");(d.removedCount>0||h>0||i>0||C>0||j>0||k>0||l>0||m>0||n>0||o>0||q>0||s>0||t>0||u>0||v>0||w>0||x>0||y>0||E>0||G>0||A>0||H>0||I>0||J>0||K>0||L>0||B>0)&&(a.finalMarkdown=a.rebuildFinalMarkdown(),(0,r.fx)(a.progressStages,(0,r.X5)({type:"validation",roleId:"deterministic-surface-fix",status:"success",message:`交付前确定性清洗:跨章表格去重 ${d.removedCount} 行、断行残片合并 ${h} 处、装饰层厚度修复 ${i} 处、埋深槽位错位删除 ${C} 处、劳动力峰值统一 ${j} 处、阶段劳动力统一 ${k} 处、资源数值统一 ${l} 处、两可表述归一 ${m} 处、段首机械重复剥离 ${w} 处、截断句残留收敛 ${x} 处、元话语声明清洗 ${u} 处、公式形态清洗 ${v} 处、自伤句式改写 ${n} 处、空响应句改写 ${o} 处、招标元语言清理 ${q} 处、重复响应行去重 ${s} 行、图集引用清洗 ${t} 处、表内重复行删除 ${y} 行、基础信息表合并 ${E} 组、兜底话术表行删除 ${G} 行、绿化养护期统一 ${A} 处、标题工程类别覆盖修正 ${H} 处、编制依据法规补写 ${I} 处、配置禁用词清洗 ${J} 处、工伤保险缴纳表述补写 ${K} 处、小节编号重放 ${L} 行、段内句级复读剥离 ${B} 处、叠词收敛`},{subtitle:"交付前确定性清洗"})));let M=await (0,D.Yb)(a.finalMarkdown,a.factsModel,a.scopeConflicts);M.fixedCount>0&&(a.finalMarkdown=M.markdown);let N=(0,p.fE)(a.finalMarkdown,{authorityIndex:a.blueprintData?(0,F.IV)(a.blueprintData):void 0,scheduleAuthority:a.scheduleAuthority,assemblyRateAuthority:a.assemblyRateAuthority,supportAuthority:a.supportAuthority});if(N.fixedCount>0&&(a.finalMarkdown=N.markdown),b.fixedCount>0||M.fixedCount>0||N.fixedCount>0){await a.recomputeFinalValidationBundle();let c=b.fixedCount+M.fixedCount+N.fixedCount,d=[...new Set([...b.details,...M.details,...N.details])];(0,r.fx)(a.progressStages,(0,r.X5)({type:"validation",roleId:"deterministic-consistency-fix",status:"success",message:`交付前确定性清洗:${c} 处(${d.slice(0,4).join("、")})`,details:d.slice(4)},{subtitle:"交付前确定性清洗"}))}let O=(0,z.K7)(a.finalMarkdown);O!==a.finalMarkdown&&(a.finalMarkdown=O,await a.recomputeFinalValidationBundle())}async function cc(a,b){let c=[],d=[],e=[],f=await al(a);if(!f.degraded)for(let g of f.groups){let f=ao(g,{markdown:a,billFactLock:b.billFactLock});if("distinct-lock-entries"===f.verdict){d.push(`“${g.concept}”对应${f.entries}`);continue}if("no-anchor"===f.verdict){e.push(`“${g.concept}”:${[...new Set(g.values.map(a=>a.raw))].slice(0,3).join("、")}`);continue}for(let a of f.nonLock)for(let b of a.occurrences){let d=b.matchIndex+b.valueOffset;c.push({start:d,end:d+b.valueText.length,replacement:String(f.lockValue),detail:`参数口径“${a.concept}” ${a.raw}→${f.lockValue}${f.lockUnit}(以工程量清单条目「${f.entryName}」锁定口径为准)`,concept:g.concept})}}for(let d of(0,p.mB)(a,b.specAuthorityMap))d.replacement&&c.push({...d.replacement,location:d.location});if(0===c.length)return{replacements:[],falsePositiveGroups:d,noAnchorGroups:e,details:[]};let g=(0,p.gk)(a,c).markdown,h=new Set,i=await al(g);if(!i.degraded){let a=new Set(i.groups.map(a=>a.concept));for(let b of new Set(c.filter(a=>a.concept).map(a=>a.concept)))a.has(b)&&(c.forEach((a,c)=>{a.concept===b&&h.add(c)}),e.push(`“${b}”锁值替换复检未清零,已回滚交 LLM 定向修复`))}let j=new Map;for(let a of c)a.location&&j.set(a.location,(j.get(a.location)||0)+1);if(j.size>0){let a=(0,p.mB)(g,b.specAuthorityMap),d=new Map;for(let b of a)b.replacement&&d.set(b.location,(d.get(b.location)||0)+1);for(let[a,b]of j)(d.get(a)||0)>=b&&(c.forEach((b,c)=>{b.location===a&&h.add(c)}),e.push(`“${a}”规格替换复检未减数,已回滚交 LLM 定向修复`))}let k=[...new Set(c.filter((a,b)=>!h.has(b)).map(a=>a.detail))].slice(0,12);return{replacements:c.filter((a,b)=>!h.has(b)).map(a=>({start:a.start,end:a.end,replacement:a.replacement,detail:a.detail})),falsePositiveGroups:d,noAnchorGroups:e,details:k}}var cd=c(43378),ce=c(22213),cf=c(3063);let cg=/两可|按图纸|资料[^。;;\n]{0,14}(?:未明确|两可|冲突)|支护[^。;;\n]{0,10}并存/u;async function ch(a){let{chapterDraftsFinal:b,progressStages:c,emitProgress:d}=a,e=a.globalConsistencyIssues,f=0,g=0;for(let a of b){let b=a.content.split(/\r?\n/u).length,c=(0,p.lR)(a.content),d=(0,p.QM)(c.markdown),e=(0,p.Vc)(d.markdown);b-e.markdown.split(/\r?\n/u).length>0&&(f+=c.removedCount+d.removedCount,g+=e.removedCount,a.content=e.markdown)}if(f>0||g>0){let a=b.map(a=>a.content).join("\n\n"),h=[...(0,p.ub)(a),...(0,p.cl)(a)].map(a=>`${a.message};${a.suggestion||""}`);e=[...new Set([...e.filter(a=>!/表格重复|段落完全重复/u.test(a)),...h])];let i=[f>0?`重复表格 ${f} 行`:"",g>0?`重复段落 ${g} 行`:""].filter(Boolean).join("、");(0,r.fx)(c,(0,r.X5)({type:"llm_review",roleId:"post-table-dedup",status:"success",message:`补表后确定性去重:${i}`},{subtitle:"表格执行率核验"})),d(b)}return e}async function ci(a){let{effectiveChapters:b,chapterDraftsFinal:c,template:d,repairPromptTexts:e,requirement:g,signal:h,generationDiagnostics:i,progressStages:j,emitProgress:k,withProgressHeartbeat:l}=a,m=(0,cd.Xi)(b,c),n=!1;if(m.length>0)for(let a=0;a<1&&m.length>0;a+=1){(0,r.fx)(j,(0,r.X5)({type:"llm_review",roleId:"table-execution-repair",status:"running",message:`表格执行率修复第 ${a+1} 轮(${m.length} 个章节缺表)`},{subtitle:"表格执行率修复"})),k(c);let o=0,p=[],q=m.flatMap(a=>{let b=c.find(b=>b.title===a.chapterTitle||a.chapterTitle.includes(b.title)||b.title.includes(a.chapterTitle));return b?[{gap:a,draft:b}]:[]}),s=async a=>{let{gap:j,draft:k}=a,m=[...new Set(j.plans.map(a=>a.section).filter(Boolean))],n=m.length>0?k.evidence.filter(a=>{let b=a.sectionTitle;return!b||m.some(a=>b===a||b.includes(a)||a.includes(b))}):k.evidence,o={id:k.id,title:k.title,content:k.content,evidence:n.length?n:k.evidence,missingFacts:k.missingFacts||[],sections:k.sections},p=`计划表格缺失(计划 ${j.planned} 张,实际仅 ${j.actual} 张):${j.plans.map(a=>`${a.title}(表头:${a.fields.map(a=>a.name).join("、")})`).join(";")}。必须按表头字段补齐这些 markdown 表格并紧跟相关小节输出,不得删除已有正文;每个表格前须有 1~2 句引导叙述说明表格作用与关键结论,表格不能替代小节正文;表格内项目特有数字、日期、工程量、规格必须来自项目资料或项目图谱,不得编造;人数、台班、进度时间等计划类数值必须原样引用蓝图权威锚点(劳动力峰值、工种构成、分阶段投入、机械台数、总工期节点),不得基于工程量或定额自行推算另设,不得留空、不得写“按需配置”等空话。`;return b0({originalContent:k.content,repairRound:"table-execution-repair",diagnostics:i,beforeMetrics:[Math.max(0,j.planned-j.actual)],apply:async()=>{let a=await l(()=>(0,f.X6)(i,`table-execution-repair:${k.id}`,()=>(0,f.l8)({template:d,chapter:o,issues:[p],promptTexts:e,requirement:g,forbidDrawingImages:!0,diagnostics:i,signal:h,patchGuard:(0,f.XG)("table-execution-repair",i),maxTokens:Math.min(12e3,Math.max(6e3,1200*j.plans.length))})));return a.content&&a.content!==k.content?a.content:k.content},recheck:a=>{let d=c.map(b=>b.id===k.id?{title:b.title,content:a,sections:b.sections}:b);return[(0,cd.Xi)(b,d).filter(a=>a.chapterTitle===k.title||a.chapterTitle===j.chapterTitle||k.title.includes(a.chapterTitle)||a.chapterTitle.includes(k.title)).reduce((a,b)=>a+Math.max(0,b.planned-b.actual),0)]}})},t=await Promise.allSettled(q.map(a=>s(a))),u=new Set;if(t.forEach((a,b)=>{if("rejected"===a.status){if(h?.aborted)throw a.reason;p.push(`${q[b].gap.chapterTitle}:修复异常(${a.reason instanceof Error?a.reason.message:"未知错误"})`);return}let c=a.value,{gap:d,draft:e}=q[b];if(c.rolledBack)return void p.push(`${d.chapterTitle}:修复后计划表格缺口增多,已回滚本轮修改`);c.content&&c.content!==e.content&&!u.has(e.id)?(e.content=c.content,u.add(e.id),o+=1):u.has(e.id)||p.push(`${d.chapterTitle}:缺 ${d.plans.map(a=>a.title).join("、")}(${i?.llm.lastError||"补表 patch 未应用"})`)}),0===o){(0,r.fx)(j,(0,r.X5)({type:"llm_review",roleId:"table-execution-repair",status:"failed",message:`表格执行率修复第 ${a+1} 轮:补表 patch 未应用(${m.length} 个章节缺表)`,details:p},{subtitle:"表格执行率修复"})),k(c);break}n=!0,k(c),m=(0,cd.Xi)(b,c),(0,r.fx)(j,(0,r.X5)({type:"llm_review",roleId:"table-execution-repair",status:m.length>0?"failed":"success",message:m.length>0?`表格执行率修复第 ${a+1} 轮完成,仍有 ${m.length} 个章节缺表`:`表格执行率修复第 ${a+1} 轮完成`},{subtitle:"表格执行率修复"})),(0,r.fx)(j,(0,r.X5)({type:"llm_review",roleId:"table-execution-review",status:m.length>0?"failed":"success",message:m.length>0?`表格执行率复检:仍有 ${m.length} 个章节缺表`:"表格执行率复检通过"},{subtitle:"表格执行率核验"}))}return{tableFixApplied:n}}function cj(a,b){if(!b)return!1;let c=/^##\s+(.+?)\s*$/mu.exec(a.content)?.[1];return b===a.title||b===c||a.content.includes(b)}async function ck(a){let{chapterDraftsFinal:b,template:c,repairPromptTexts:d,requirement:e,signal:g,generationDiagnostics:h,progressStages:i,emitProgress:j,withProgressHeartbeat:k}=a,l=!1;for(let a=0;a<2;a+=1){let m=b.map(a=>a.content).join("\n\n"),n=await (0,a4.Bt)(m),o=await (0,a4.gE)(m),p=n.fillerSentences>0,q=o.countermeasures>0&&o.ratio<.5,s=(0,aM.P_)(m),t=(0,aM.C4)(m),u=(0,aM.uj)(m),v=s.length>0,w=t.length>0,x=u.length>0;if(!p&&!q&&!v&&!w&&!x)break;let y=p?await bG(b):[],z=p?function(a,b){let c=[],d=[],e=0;for(let f of b){let b=f.chapterId||f.chapterTitle,g=a.find(a=>(a.id||a.title)===b);if(!g||"semantic"!==f.channel||!(0,a4.W0)(f.sentence)){d.push(f);continue}let h=g.content.split("\n"),i=function(a,b){let c=b.replace(/[。;;]\s*$/u,"").trim();if(c.length<12)return 0;let d=c.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&"),e=RegExp(`[\\s\\u3000]*${d}[\\s\\u3000]*[。;;]`,"gu"),f=RegExp(`[\\s\\u3000]*${d}[\\s\\u3000]*$`,"u"),g=0;for(let b=a.length-1;b>=0;b-=1){let d=a[b];if((0,a4.X9)(d)||!d.includes(c))continue;let h=d.match(e),i=h&&h.length>0?d.replace(e,""):d.replace(f,"");i!==d&&(g+=h&&h.length>0?h.length:1,""===i.trim()?a.splice(b,1):a[b]=i)}return g}(h,f.sentence);i>0?(g.content=h.join("\n").replace(/\n{3,}/gu,"\n\n"),e+=i,c.includes(f.sentence)||c.push(f.sentence)):d.push(f)}return{deletedCount:e,deletedSentences:c,remaining:d}}(b,y):{deletedCount:0,deletedSentences:[],remaining:y};z.deletedCount>0&&console.error(`[gen][templating] 零信息口号句确定性删除 ${z.deletedCount} 处:${z.deletedSentences.slice(0,3).join(" / ")}${z.deletedSentences.length>3?" 等":""}`);let A=b.map(a=>a.content).join("\n\n"),B=new Map(b.map(a=>[a.id,a.content])),C=(q?o.entries.filter(a=>!a.attributed||!a.quantified).slice(0,20):[]).flatMap(a=>{let c=a.text.replace(/\s+/gu,""),d=b.find(a=>a.content.replace(/\s+/gu,"").includes(c));return d?[{chapter:d,text:a.text,missingAttribution:!a.attributed,missingTarget:!a.quantified}]:[]}),D=b.flatMap(a=>{let b=z.remaining.filter(b=>(b.chapterId||b.chapterTitle)===(a.id||a.title)).map(a=>a.sentence),c=C.filter(b=>b.chapter.id===a.id).map(a=>({text:a.text,missingAttribution:a.missingAttribution,missingTarget:a.missingTarget})),d=s.filter(b=>cj(a,b.chapterTitle)),e=t.filter(b=>cj(a,b.chapterTitle)),f=u.filter(b=>cj(a,b.chapterTitle));return b.length>0||c.length>0||d.length>0||e.length>0||f.length>0?[{chapter:a,sentences:b,difficulty:c,frames:d,flows:e,titles:f}]:[]});if(0===D.length){z.deletedCount>0&&(l=!0,(0,r.fx)(i,(0,r.X5)({type:"llm_review",roleId:"templating-repair",status:"success",message:`模板化修复第 ${a+1} 轮:确定性删除零信息口号句 ${z.deletedCount} 处(无剩余重写目标)`},{subtitle:"模板化修复"})),j(b));break}let E=[p?`套话句占比 ${(100*n.ratio).toFixed(1)}%${z.deletedCount>0?`(已确定性删除零信息口号 ${z.deletedCount} 处)`:""}`:"",q?`重难点双达标 ${(100*o.ratio).toFixed(0)}%`:"",v?`骨架指纹 ${s.length} 组`:"",w?`工序形式 ${t.length} 处`:"",x?`标题缺陷 ${u.length} 处`:""].filter(Boolean).join("、");(0,r.fx)(i,(0,r.X5)({type:"llm_review",roleId:"templating-repair",status:"running",message:`模板化修复第 ${a+1} 轮:${E}(${D.length} 章)`},{subtitle:"模板化修复"})),j(b);let F=0,G=async a=>{let b=[];a.sentences.length>0&&b.push(`第 1~${a.sentences.length} 条目标原文是本章已检出的空话套话句(零信息纯口号句已由系统确定性删除,此处为含信息或合规承诺类命中句):逐条原地改写为“责任岗位 + 执行动作 + 量化标准 + 检查频次 + 整改时限”式可核查措施,且每条改写句必须嵌入不少于 2 个项目实体(村名/工程量/规格,取自本章证据摘要);禁止以同义空话替换、禁止改写清单外内容、不得凭空编造数值;属必须保留的合规承诺句须具体化到可核查。`);let i=a.sentences.length+1;for(let c of a.difficulty){let a=[c.missingAttribution?"归因句(该难点的成因/风险来源)":"",c.missingTarget?"量化控制目标(数值+单位,来自本章证据摘要或行业规范,不得编造)":""].filter(Boolean).join("与");b.push(`第 ${i} 条目标原文是重难点分析条目,缺少${c.missingAttribution&&c.missingTarget?"成因归因与量化控制目标":a}:保留条目原有事实与数值,在其内补充${a}。`),i+=1}for(let c of a.frames){let a=c.sentences.map(()=>{let a=i;return i+=1,a});b.push(`第 ${a.join("、")} 条目标原文含全篇复读骨架「${c.fingerprintLabel}」(全篇 ${c.totalCount} 处,验收上限 2 处):逐句改写为差异化句式,保留原句全部事实信息(岗位、数值、频次不得丢失)。`)}for(let c of a.flows)b.push(`第 ${i} 条目标原文是小节标题,其所在小节「${c.blockTitle}」的工序顺序表达当前为【${c.currentForm}】形式且与相邻小节同形式:将该小节的工序顺序表达改写为【${c.targetForm}】形式,内容与数值保持不变(工艺参数不得删减)。`),i+=1;for(let c of a.titles)b.push(`第 ${i} 条目标原文是小节标题(${c.reason}):将该小节标题重命名为完整表达本小节内容的正式名称,正文内容不变;禁止使用“施工概况/施工流程/施工方法”等结构标签词充当标题。`),i+=1;return b.push("清单之外的内容一律不得改动;不得删除任何小节标题、表格与数值参数。"),k(()=>(0,f.X6)(h,`templating-repair:${a.chapter.id}`,()=>(0,f.l8)({template:c,chapter:{id:a.chapter.id,title:a.chapter.title,content:a.chapter.content,evidence:a.chapter.evidence||[],missingFacts:a.chapter.missingFacts||[],sections:a.chapter.sections},issues:[b.join("\n")],promptTexts:d,requirement:e,forbidDrawingImages:!0,diagnostics:h,signal:g,patchGuard:(0,f.XG)("templating-repair",h),anchorTexts:[...a.sentences,...a.difficulty.map(a=>a.text),...a.frames.flatMap(a=>a.sentences),...a.flows.map(a=>a.blockTitle),...a.titles.map(a=>a.title)],maxTokens:6e3,evidenceChars:5e3})))},H=await b0({originalContent:A,repairRound:"templating-repair",diagnostics:h,beforeMetrics:[n.ratio,o.ratio,s.length,t.length,u.length],apply:async()=>((await Promise.allSettled(D.map(a=>G(a)))).forEach((a,b)=>{if("rejected"===a.status){if(g?.aborted)throw a.reason;console.error("[gen] templating repair failed:",a.reason);return}let c=a.value,{chapter:d}=D[b];c.content&&c.content!==d.content&&(d.content=c.content,F+=1)}),j(b),b.map(a=>a.content).join("\n\n")),recheck:async a=>{let b=await (0,a4.Bt)(a),c=await (0,a4.gE)(a);return[b.ratio,c.ratio,(0,aM.P_)(a).length,(0,aM.C4)(a).length,(0,aM.uj)(a).length]},shouldRollback:(a,b)=>b[0]>a[0]+.01&&!(b[1]>a[1]+.01)||b[2]+b[3]+b[4]>a[2]+a[3]+a[4]});if(0===F&&0===z.deletedCount){(0,r.fx)(i,(0,r.X5)({type:"llm_review",roleId:"templating-repair",status:"failed",message:`模板化修复第 ${a+1} 轮:修复 patch 未落地(${D.length} 章锚点失配或 LLM 未产出)`,details:[`未收敛维度:${E}`]},{subtitle:"模板化修复"}));break}if(H.rolledBack){for(let a of b){let b=B.get(a.id);void 0!==b&&(a.content=b)}(0,r.fx)(i,(0,r.X5)({type:"llm_review",roleId:"templating-repair",status:"failed",message:`模板化修复第 ${a+1} 轮:修复后指标变差已回滚本轮修改(套话 ${(100*H.beforeMetrics[0]).toFixed(1)}%→${(100*H.afterMetrics[0]).toFixed(1)}%,治理缺陷目标 ${H.beforeMetrics[2]+H.beforeMetrics[3]+H.beforeMetrics[4]}→${H.afterMetrics[2]+H.afterMetrics[3]+H.afterMetrics[4]})`,details:["LLM 重写未收敛,回滚保留修复前正文"]},{subtitle:"模板化修复"})),j(b);break}l=!0}if(l){let a=b.map(a=>a.content).join("\n\n"),c=await (0,a4.Bt)(a),d=await (0,a4.gE)(a),e=(0,aM.P_)(a),f=(0,aM.C4)(a),g=(0,aM.uj)(a),h=c.ratio<.1&&(!d.heavyTemplated||0===d.countermeasures)&&0===e.length&&0===f.length&&0===g.length,k=[e.length>0?`骨架指纹 ${[...new Set(e.map(a=>`${a.fingerprintLabel}\xd7${a.totalCount}`))].join("、")}`:"",f.length>0?`工序形式相邻重复 ${f.length} 处`:"",g.length>0?`标题缺陷 ${g.length} 处`:""].filter(Boolean).join(";");(0,r.fx)(i,(0,r.X5)({type:"llm_review",roleId:"templating-repair",status:h?"success":"failed",message:`模板化修复完成:套话句占比 ${(100*c.ratio).toFixed(1)}%(达标线 ≤10%),重难点归因+量化双达标 ${(100*d.ratio).toFixed(0)}%(达标线 ≥50%)${k?`,模板化残留:${k}`:""}`,details:h?[]:["未完全收敛:残留项先由确定性修复链(终检前)收敛;复核未清零的残留经终检检测器判定,仍不达标即阻断交付(宁缺毋假)"]},{subtitle:"模板化修复"})),j(b)}return{templatingFixApplied:l}}async function cl(a){let{chapterDraftsFinal:b,projectContext:c,template:d,repairPromptTexts:e,requirement:g,signal:h,generationDiagnostics:i,progressStages:j,emitProgress:k,withProgressHeartbeat:l}=a,m=/^#{3,4}\s+(?:\d+(?:\.\d+)*\s+)?(?:项目主要施工\s*内容|主要施工\s*内容|主要分部分项工程施工方案|主要分部分项施工方案|主要施工方法)\s*$/u,n=!1,o=0,p=0,q=(0,ce.sh)(c,b.flatMap(a=>a.evidence||[]));if(q.length>0){let a=/项目主要施工内容|主要施工内容|主要分部分项工程施工方案|主要分部分项施工方案|主要施工方法/u;for(let c of b){if(c.content.split("\n").some(a=>m.test(a.trim())))continue;let d=(c.sections||[]).find(b=>a.test(b));if(!d)continue;Array.isArray(c.sections)||(c.sections=[]);let e=c.sections.findIndex(b=>a.test(b)),f=e>=0?e+1:c.sections.length+1,g=`### ${b.indexOf(c)+1}.${f} ${d}`;c.content=`${c.content.replace(/\s+$/u,"")}
43
43
 
44
44
  ${g}
45
45
  `,n=!0}let c=b.some(a=>a.content.split("\n").some(a=>m.test(a.trim()))),d=b.some(b=>(b.sections||[]).some(b=>a.test(b)));if(!c&&!d){let a=b.find(a=>/整体理解|工程概况|项目理解|招标范围|编制边界|现场踏勘|施工界面|主要施工方法|施工方案/u.test(a.title))||b[0];if(a){let c=b.indexOf(a);Array.isArray(a.sections)||(a.sections=[]);let d=a.sections.findIndex(a=>/项目主要施工内容|主要施工内容/u.test(a)),e=d>=0?d+1:(a.sections.push("项目主要施工内容"),a.sections.length),f=`### ${c+1}.${e} 项目主要施工内容`;a.content=`${a.content.replace(/\s+$/u,"")}
@@ -58,7 +58,7 @@ ${function(a,b=6e3){return[a.match(/#{2,3}\s*[^\n]*(?:重难点|重点难点|工
58
58
 
59
59
  ${e}`,evidence:X,missingFacts:Y,sections:c.sections||[],tablePlans:c.tablePlans||[],inProgress:!0}])},aS=a=>{"complete"===a.phase&&a.partialSections&&aR(a.partialSections)};if(v)d=(0,k.w_)(v,c),d=await (0,k._k)(d,a.understanding.bidProcedureJudge),g=(0,r.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:ak.primaryPromptId,status:"success",message:`${(0,aK.GQ)(c.title)} 已复用已有章节正文:当前 ${(0,h.V7)(d)} 字,跳过 Writer,直接进入章节收口`,details:[`有效证据:${X.length} 条`,`事实需求:${aF.satisfied}/${aF.total} 已满足,缺失 ${aF.missing},低置信 ${aF.lowConfidence}`,"来源:resumeChapters/checkpointChapters"],progress:{current:i+1,total:a.planning.effectiveChapters.length,label:"复用章节"}},{subtitle:(0,aK.GQ)(c.title),order:i}),a.global.progressStages[t]=g,a.global.emitProgress(a.global.chapterDrafts);else{let g;a.global.progressStages[t]=(0,r.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:ak.primaryPromptId,status:"running",message:`${(0,aK.GQ)(c.title)} 正在规划主题块并准备并发成稿`,details:[...am,`有效证据:${X.length} 条`,`事实需求:${aF.satisfied}/${aF.total} 已满足,缺失 ${aF.missing},低置信 ${aF.lowConfidence}`,aI.label,`生成上限约 ${aJ} 字`,`模板细目:${c.sections?.length||0} 条`,"先由章级 Planner 聚类为主题块并语义合并,再按主题块全并发出稿,避免逐小节碎片化"],progress:{current:i+1,total:a.planning.effectiveChapters.length,label:"主题块并发"}},{subtitle:(0,aK.GQ)(c.title),order:i}),a.global.emitProgress();let h=async(a,b,c)=>{let d=await Promise.all(b.map(({block:b})=>(0,bn.nl)({...a,targetWords:b.targetWords,maxWords:Math.ceil(1.1*b.targetWords)},{blocks:[b],coveredSections:[],fallbackSections:[]}).then(a=>a?.markdown).catch(()=>void 0))),e=[...c];return b.forEach(({index:a},b)=>{let c=d[b];c&&(e[a]=c.replace(/^##\s+.+$/mu,"").trim())}),e},j=await a.global.withProgressHeartbeat(()=>(0,f.X6)(a.planning.generationDiagnostics,`chapter-plan:${c.id}`,async()=>(0,q.OY)({blueprintChapter:aM,inputSections:c.sections||[],chapterTitle:(0,aK.GQ)(c.title),targetWords:aP,projectContext:a.planning.projectContext,evidence:X}))),l=await a.global.withProgressHeartbeat(()=>(0,cR.G8)({chapterTitle:(0,aK.GQ)(c.title),blocks:j.blocks.map(a=>({title:a.title,pointTitles:a.subPoints.map(a=>a.title)})),fingerprintPool:a.planning.fingerprintPool||(0,cS.$R)(),excludeDocumentId:a.global.input.diversitySeed,profile:a.planning.diversityProfile,signal:a.global.input.signal,diagnostics:a.planning.generationDiagnostics}));if(l.renamed>0&&(j={...j,blocks:j.blocks.map((a,b)=>({...a,title:l.titles[b]}))}),j.blocks.length>0){b=j;let d=[al,(0,cP.$8)(aE.task,j)].filter(Boolean).join("\n\n"),e=j.blocks.reduce((a,b)=>a+b.subPoints.length,0),k=j.blocks.reduce((a,b)=>a+b.subPoints.reduce((a,b)=>a+Math.max(0,b.sources.length-1),0),0),m=aM?j.fallbackSections.length>0?`(蓝图章切片确定性转换:${j.fallbackSections.length} 条细目由覆盖校验挂回主题块)`:"(蓝图章切片确定性转换:主题块来自蓝图小节/工作包)":"(蓝图未覆盖本章,已按语义域确定性分组)";a.global.progressStages[t]=(0,r.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:ak.primaryPromptId,status:"running",message:`${(0,aK.GQ)(c.title)} 已规划 ${j.blocks.length} 个主题块,正在按主题块并发成稿${m}`,details:[...am,`有效证据:${X.length} 条`,`输入细目 ${aH} 条 → 主题块 ${j.blocks.length} 个(每块 2~4 个 H4 要点)`,`语义合并 ${k} 条细目,目录级 H4 合计 ${e} 个`,"单块 1800~2800 字,主题块间全并发,单节深度与整体耗时双优",...l.summary?[l.summary]:[]],progress:{current:i+1,total:a.planning.effectiveChapters.length,label:"主题块并发"}},{subtitle:(0,aK.GQ)(c.title),order:i});let n=a.global.progressStages.find(a=>a.roleId===`agent-chapter-task-${c.id}`);n&&(n.message=`${aE.task.sections.filter(a=>a.ready).length}/${aE.task.sections.length} 条细目任务就绪(已规划为 ${j.blocks.length} 个主题块)`),a.global.emitProgress(a.global.chapterDrafts);let o={template:a.prepare.template,chapter:c,evidence:X,missingFacts:Y,promptTexts:d,projectContext:a.planning.chapterScopedProjectContext(c),skeletonProjectContext:a.planning.projectContext,requirement:a.global.input.requirement,roleContext:aj,targetWords:aP,maxWords:aJ,forbidDrawingImages:!1,factCoverageContext:aD,compactProjectContext:!0,scopedProjectContext:!0,blueprintData:a.blueprint.integratedBlueprint?.validation.passed?a.blueprint.integratedBlueprint.data:void 0,blueprintChapter:aM,blueprintMustCiteHint:aN,sectionEvidenceProvider:aw,onSectionProgress:aS,diagnostics:a.planning.generationDiagnostics,signal:a.global.input.signal},p=await a.global.withProgressHeartbeat(()=>(0,f.X6)(a.planning.generationDiagnostics,`chapter-planned-block-draft:${c.id}`,()=>(0,bn.nl)(o,j)));if(p?.allSucceeded)g=p.markdown;else if(p){let a=await h(o,p.failedBlocks,p.sections);a.every(a=>!!a)&&(g=`## ${c.title}
60
60
 
61
- ${a.join("\n\n")}`)}}if(g||(a.planning.generationDiagnostics.llm.lastError=a.planning.generationDiagnostics.llm.lastError||"全部成稿路径未返回有效正文"),g&&aM&&a.blueprint.integratedBlueprint){let b=(0,q.C8)(g,aM,a.blueprint.integratedBlueprint.data);b.fixed.length>0?(g=b.markdown,a.planning.generationDiagnostics.llm.lastInfo=`蓝图引用对齐:${c.title} 回填 ${b.fixed.length} 处(${b.fixed.map(a=>`${a.anchor} ${a.from}→${a.to}`).join("、")})${b.missing.length?`;未引用缺口 ${b.missing.length} 项:${b.missing.join("、")}`:""}`):b.missing.length>0&&(a.planning.generationDiagnostics.llm.lastInfo=`蓝图引用缺口观测:${c.title} 未在正文引用 ${b.missing.length} 项 must_cite 参数(${b.missing.slice(0,6).join("、")}${b.missing.length>6?" 等":""}),由跨章一致性审查兑底`)}if(g&&a.blueprint.integratedBlueprint){let b=(0,p.Pl)(g,(0,F.i2)(a.blueprint.integratedBlueprint.data));if(b.fixedCount>0){g=b.markdown;let d=a.planning.generationDiagnostics.llm.lastInfo;a.planning.generationDiagnostics.llm.lastInfo=`${d?`${d};`:""}阶段劳动力口径对齐:${c.title} 回填 ${b.fixedCount} 处(${b.details.join("、")})`}}if((0,e.Te)(a.global.input.signal),!g){let b=a.planning.generationDiagnostics.llm.lastError||"空响应或超时",d=`${(0,aK.GQ)(c.title)} 正文未达到成稿要求,已阻断生成(${b.slice(0,160)})`;throw a.global.progressStages[t]=(0,r.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:ak.primaryPromptId,status:"failed",message:d,details:[`阻断归因:${b}`,`证据条数:${X.length}`],progress:{current:i+1,total:a.planning.effectiveChapters.length,label:"章节阻断"}},{subtitle:(0,aK.GQ)(c.title),order:i}),a.global.emitProgress(a.global.chapterDrafts),Error(d)}if(!g.trim())throw Error(`${(0,aK.GQ)(c.title)} 首次生成失败,未获得可用于定稿的正文`);let m=b&&b.blocks.length>0?b.blocks.map(a=>a.title):(c.sections||[]).filter(Boolean),n=b&&b.blocks.length>0?b.blocks.flatMap(a=>a.subPoints.map(a=>a.title)):[],o=g;m.length>0&&(o=(0,e.Ww)(o,m,3)),n.length>0&&(o=(0,e.Ww)(o,n,4)),d=(0,k.w_)(o,c),d=await (0,k._k)(d,a.understanding.bidProcedureJudge)}let aT=await bp({chapter:c,content:d,evidence:X}),aU=(0,h.V7)(d),aV=(0,z.r4)(d),aW=b&&b.blocks.length>0?b.blocks.map(a=>a.title):(c.sections||[]).filter(Boolean),aX=aW.filter((a,b)=>a!==aW[b-1]),aY=aX.length>0?aX:aV.length>0?aV:[],aZ=(0,D.qK)(d,[{title:c.title,content:d,sections:aY}]).map(a=>a.message),a$=aT.slice(0,6).map(a=>`小节事实密度需优化:${a}`),a_=[...aZ,...a$],a0=(0,k.md)(aU,aO,a_);return g=(0,r.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:ak.primaryPromptId,status:a0,message:(0,r.AQ)(`${(0,aK.GQ)(c.title)} 已由大模型成稿:当前 ${aU} 字;章节预算约 ${aI.budgetTarget} 字,本轮目标约 ${aI.roundTarget} 字${a_.length?`;待优化:${a_.slice(0,8).join("、")}`:""}`,s),details:[`本轮完成率:${Math.round(aU/Math.max(1,aI.roundTarget)*100)}%`,`结构目标约 ${aI.structureTarget} 字`,...am,`二级小节:${aY.length} 个`],progress:{current:i+1,total:a.planning.effectiveChapters.length,label:a_.length?"章节已生成":"章节达标"}},{subtitle:(0,aK.GQ)(c.title),order:i}),a.understanding.chapterGenerationStagesByOrder[i]=g,async()=>{let b={id:c.id,title:c.title,content:d,evidence:X,missingFacts:Y,sections:aY,tablePlans:c.tablePlans||[]};a.understanding.chapterDraftsByOrder[i]=b,a.global.chapterDrafts=a.understanding.chapterDraftsByOrder.filter(a=>!!a),a.global.emitProgress(a.global.chapterDrafts)}}catch(f){if(a.global.input.signal?.aborted)throw f;let b=a.planning.generationDiagnostics.llm.lastError,d=`failures=${a.planning.generationDiagnostics.llm.failures} retries=${a.planning.generationDiagnostics.llm.retries} reasoningTokens=${a.planning.generationDiagnostics.llm.reasoningTokens||0}`;console.error(`[gen] chapter ${c.title} failed:`,f,b?`| LLM lastError: ${b}`:"| LLM lastError: (none)","|",d);let e=`${c.title}:${f instanceof Error?f.message:"生成失败"}`;a.understanding.failedChapterMessages.push(e),g=(0,r.X5)({type:"chapter_generation",roleId:"chapter_generation",status:"failed",message:`${(0,aK.GQ)(c.title)} 生成失败:${e}`,details:[`LLM 最近错误:${b||"无记录"}`,`LLM 调用失败 ${a.planning.generationDiagnostics.llm.failures} 次、重试 ${a.planning.generationDiagnostics.llm.retries} 次`]},{subtitle:(0,aK.GQ)(c.title),order:i}),a.understanding.chapterGenerationStagesByOrder[i]=g}g&&(a.global.progressStages[t]=g),a.global.emitProgress(a.global.chapterDrafts)}))))d&&a.blueprint.reviewTaskPool.push(a.blueprint.reviewSemaphore.run(d))}await Promise.all(a.blueprint.reviewTaskPool),a.planning.generationDiagnostics.metrics.push({name:"phase:draft",startedAt:a.chapterLoop.draftPhaseStartedAt,endedAt:Date.now(),durationMs:Date.now()-a.chapterLoop.draftPhaseStartedAt}),a.chapterLoop.globalReviewPhaseStartedAt=Date.now(),a.chapterLoop.chapterDraftsFinal=a.understanding.chapterDraftsByOrder.filter(a=>!!a),a.understanding.chapterGenerationStages.push(...a.understanding.chapterGenerationStagesByOrder.filter(a=>!!a))}async function cU(a){let b=Math.round(([...a.planning.documentBudget.chapterTargets.values()].reduce((a,b)=>a+b,0)||a.planning.documentBudget.targetChars||0)/Math.max(1,a.planning.effectiveChapters.length)),c=(0,b2.z)().chapterConcurrency||0;a.blueprint.chapterConcurrency=a.planning.generationBudget.chapterConcurrency,a.blueprint.reviewConcurrency=a.planning.generationBudget.reviewConcurrency,(0,r.fx)(a.global.progressStages,(0,r.X5)({type:"validation",roleId:"chapter-concurrency",status:"success",message:`章节流水线调度:${a.planning.effectiveChapters.length} 章全部同批并行生成,审查修复 ${a.blueprint.reviewConcurrency} 路流水线(章节生成完立即进入审查,与后续章节生成重叠)`,details:[`有效章节数:${a.planning.effectiveChapters.length}`,`平均章节目标:${b} 字`,Number.isFinite(c)&&c>0?`章节并发来自 tuningProfile.chapterConcurrency=${Math.floor(c)}`:`全部章节并行生成,在飞调用不设并发上限;每章单轮修复(失败即放弃)`]},{subtitle:"章节流水线策略"})),a.global.emitProgress(),a.blueprint.reviewSemaphore=new e.jf(a.blueprint.reviewConcurrency),a.blueprint.reviewTaskPool=[];let d=[...a.understanding.availableEvidenceScopePaths].filter(Boolean).sort(),f=Date.now();a.blueprint.basicFactSearchResults=d.length>0?(await (0,e.l$)(k.xs,async b=>a.understanding.searchWithCache(b,d,Math.min(a.understanding.requestedEvidencePerChapter,12),""),{kind:"search"})).flat():[],a.planning.generationDiagnostics.evidence.searchQueries+=k.xs.length,a.planning.generationDiagnostics.evidence.searchMs+=Date.now()-f;let g=Date.now();try{a.blueprint.integratedBlueprint=(0,q.DL)({projectRoot:a.prepare.projectRoot,boundFilePaths:a.prepare.materialFilePaths,chapterTitles:a.planning.effectiveChapters.map(a=>a.title),templateName:a.prepare.template.name,basicFacts:(0,q.eT)(a.understanding.canonicalFacts),evidence:a.understanding.writerEvidence,facts:[...a.understanding.earlyFactPool.localFacts,...a.understanding.earlyFactPool.projectBasicFacts,...a.understanding.earlyFactPool.preciseFacts],signal:a.global.input.signal,diagnostics:a.planning.generationDiagnostics});let b=(0,q.Fq)(a.prepare.projectRoot,a.blueprint.integratedBlueprint),c=a.blueprint.integratedBlueprint.outline.chapters.reduce((a,b)=>a+b.subSections.reduce((a,b)=>a+b.workPackages.length,0),0);(0,r.fx)(a.global.progressStages,(0,r.X5)({type:"validation",roleId:"integrated-blueprint",status:a.blueprint.integratedBlueprint.validation.passed?"success":"failed",message:a.blueprint.integratedBlueprint.validation.passed?`一体化蓝图已构建并落盘:清单 ${a.blueprint.integratedBlueprint.diagnostics.boq?.totalEntries??0} 条目、标准板块 ${a.blueprint.integratedBlueprint.diagnostics.standardBlocksLoaded} 个、工作包 ${c} 个(校验通过,参数桶与章切片接管各章写作)`:`一体化蓝图已构建但校验未通过(参数桶不注入,不阻断生成):${a.blueprint.integratedBlueprint.validation.checks.filter(a=>!a.passed).map(a=>a.name).join("、")}`,details:[`耗时 ${Date.now()-g}ms`,`落盘:${b}`,`清单解析:${a.blueprint.integratedBlueprint.diagnostics.boq?`${a.blueprint.integratedBlueprint.diagnostics.boq.totalEntries} 条目 / ${a.blueprint.integratedBlueprint.diagnostics.boq.villageCount} 村 / 完整性校验${a.blueprint.integratedBlueprint.diagnostics.boq.complete?"通过":"未通过"}`:"未解析(见警告)"}`,`标准板块缺口:${a.blueprint.integratedBlueprint.diagnostics.standardBlockGaps.length>0?a.blueprint.integratedBlueprint.diagnostics.standardBlockGaps.join("、"):"无"}`,`四道校验:${a.blueprint.integratedBlueprint.validation.checks.map(a=>`${a.name}${a.passed?"✓":"✗"}`).join(" / ")}`,...a.blueprint.integratedBlueprint.diagnostics.warnings.slice(0,6).map(a=>`警告:${a}`)]},{subtitle:"一体化蓝图"})),a.global.emitProgress()}catch(b){a.blueprint.integratedBlueprint=void 0,(0,r.fx)(a.global.progressStages,(0,r.X5)({type:"validation",roleId:"integrated-blueprint",status:"failed",message:`一体化蓝图构建异常(参数桶不注入,不阻断生成):${b instanceof Error?b.message:String(b)}`,details:[`耗时 ${Date.now()-g}ms`,"蓝图异常时参数桶与章切片不注入,各章按证据独立成稿"]},{subtitle:"一体化蓝图"})),a.global.emitProgress()}if(a.blueprint.integratedBlueprint)try{let b=(0,q.wY)({projectRoot:a.prepare.projectRoot,boundFilePaths:a.prepare.materialFilePaths});a.blueprint.billFactLock=function(a){let b=a.boq;if(b&&0!==b.totalEntries)return{entries:b.entries.map(a=>({seq:a.seq,name:String(a.name||"").trim(),description:String(a.description||"").trim(),quantity:a.quantity,unit:String(a.unit||"").trim(),section:String(a.section||"").trim(),subsection:String(a.subsection||"").trim(),villageGroup:String(a.villageGroup||"").trim(),sourceFile:a.sourceFile,specQuantityPairs:cq(a.description).map(b=>({spec:b,quantity:`${a.quantity}${a.unit}`}))})),totalEntries:b.totalEntries,sourceFile:b.sourceFile,complete:b.complete}}({boq:b.boq}),a.blueprint.billFactLock&&(a.planning.generationDiagnostics.llm.lastInfo=`清单事实锁:锁定 ${a.blueprint.billFactLock.totalEntries} 条目(完整性校验${a.blueprint.billFactLock.complete?"通过":"未通过"}),写作直读与数值核对轮生效`)}catch(b){console.error(`[blueprint] 清单事实锁构建失败(章节按证据独立成稿):${b instanceof Error?b.message:String(b)}`),a.blueprint.billFactLock=void 0}a.blueprint.blueprintActive=!!a.blueprint.integratedBlueprint?.validation.passed}var cV=c(36366);async function cW(a){if(0===a.requirementSummary.length||0===a.chapters.length)return[];let b=a.chapters.map(a=>`【${(0,aK.GQ)(a.title)}】
61
+ ${a.join("\n\n")}`)}}if(g||(a.planning.generationDiagnostics.llm.lastError=a.planning.generationDiagnostics.llm.lastError||"全部成稿路径未返回有效正文"),g&&aM&&a.blueprint.integratedBlueprint){let b=(0,q.C8)(g,aM,a.blueprint.integratedBlueprint.data);b.fixed.length>0?(g=b.markdown,a.planning.generationDiagnostics.llm.lastInfo=`蓝图引用对齐:${c.title} 回填 ${b.fixed.length} 处(${b.fixed.map(a=>`${a.anchor} ${a.from}→${a.to}`).join("、")})${b.missing.length?`;未引用缺口 ${b.missing.length} 项:${b.missing.join("、")}`:""}`):b.missing.length>0&&(a.planning.generationDiagnostics.llm.lastInfo=`蓝图引用缺口观测:${c.title} 未在正文引用 ${b.missing.length} 项 must_cite 参数(${b.missing.slice(0,6).join("、")}${b.missing.length>6?" 等":""}),由跨章一致性审查兑底`)}if(g&&a.blueprint.integratedBlueprint){let b=(0,p.Pl)(g,(0,F.i2)(a.blueprint.integratedBlueprint.data));if(b.fixedCount>0){g=b.markdown;let d=a.planning.generationDiagnostics.llm.lastInfo;a.planning.generationDiagnostics.llm.lastInfo=`${d?`${d};`:""}阶段劳动力口径对齐:${c.title} 回填 ${b.fixedCount} 处(${b.details.join("、")})`}}if((0,e.Te)(a.global.input.signal),!g){let b=a.planning.generationDiagnostics.llm.lastError||"空响应或超时",d=`${(0,aK.GQ)(c.title)} 正文未达到成稿要求,已阻断生成(${b.slice(0,160)})`;throw a.global.progressStages[t]=(0,r.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:ak.primaryPromptId,status:"failed",message:d,details:[`阻断归因:${b}`,`证据条数:${X.length}`],progress:{current:i+1,total:a.planning.effectiveChapters.length,label:"章节阻断"}},{subtitle:(0,aK.GQ)(c.title),order:i}),a.global.emitProgress(a.global.chapterDrafts),Error(d)}if(!g.trim())throw Error(`${(0,aK.GQ)(c.title)} 首次生成失败,未获得可用于定稿的正文`);let m=b&&b.blocks.length>0?b.blocks.map(a=>a.title):(c.sections||[]).filter(Boolean),n=b&&b.blocks.length>0?b.blocks.flatMap(a=>a.subPoints.map(a=>a.title)):[],o=g;m.length>0&&(o=(0,e.Ww)(o,m,3)),n.length>0&&(o=(0,e.Ww)(o,n,4)),d=(0,k.w_)(o,c),d=await (0,k._k)(d,a.understanding.bidProcedureJudge)}let aT=await bp({chapter:c,content:d,evidence:X}),aU=(0,h.V7)(d),aV=(0,z.r4)(d),aW=b&&b.blocks.length>0?b.blocks.map(a=>a.title):(c.sections||[]).filter(Boolean),aX=aW.filter((a,b)=>a!==aW[b-1]),aY=aX.length>0?aX:aV.length>0?aV:[],aZ=(0,D.qK)(d,[{title:c.title,content:d,sections:aY}]).map(a=>a.message),a$=aT.slice(0,6).map(a=>`小节事实密度需优化:${a}`),a_=[...aZ,...a$],a0=(0,k.md)(aU,aO,a_);return g=(0,r.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:ak.primaryPromptId,status:a0,message:(0,r.AQ)(`${(0,aK.GQ)(c.title)} 已由大模型成稿:当前 ${aU} 字;章节预算约 ${aI.budgetTarget} 字,本轮目标约 ${aI.roundTarget} 字${a_.length?`;待优化:${a_.slice(0,8).join("、")}`:""}`,s),details:[`本轮完成率:${Math.round(aU/Math.max(1,aI.roundTarget)*100)}%`,`结构目标约 ${aI.structureTarget} 字`,...am,`二级小节:${aY.length} 个`],progress:{current:i+1,total:a.planning.effectiveChapters.length,label:a_.length?"章节已生成":"章节达标"}},{subtitle:(0,aK.GQ)(c.title),order:i}),a.understanding.chapterGenerationStagesByOrder[i]=g,async()=>{let b={id:c.id,title:c.title,content:d,evidence:X,missingFacts:Y,sections:aY,tablePlans:c.tablePlans||[]};a.understanding.chapterDraftsByOrder[i]=b,a.global.chapterDrafts=a.understanding.chapterDraftsByOrder.filter(a=>!!a),a.global.emitProgress(a.global.chapterDrafts)}}catch(f){if(a.global.input.signal?.aborted)throw f;let b=a.planning.generationDiagnostics.llm.lastError,d=`failures=${a.planning.generationDiagnostics.llm.failures} retries=${a.planning.generationDiagnostics.llm.retries} reasoningTokens=${a.planning.generationDiagnostics.llm.reasoningTokens||0}`;console.error(`[gen] chapter ${c.title} failed:`,f,b?`| LLM lastError: ${b}`:"| LLM lastError: (none)","|",d);let e=`${c.title}:${f instanceof Error?f.message:"生成失败"}`;a.understanding.failedChapterMessages.push(e),g=(0,r.X5)({type:"chapter_generation",roleId:"chapter_generation",status:"failed",message:`${(0,aK.GQ)(c.title)} 生成失败:${e}`,details:[`LLM 最近错误:${b||"无记录"}`,`LLM 调用失败 ${a.planning.generationDiagnostics.llm.failures} 次、重试 ${a.planning.generationDiagnostics.llm.retries} 次`]},{subtitle:(0,aK.GQ)(c.title),order:i}),a.understanding.chapterGenerationStagesByOrder[i]=g}g&&(a.global.progressStages[t]=g),a.global.emitProgress(a.global.chapterDrafts)}))))d&&a.blueprint.reviewTaskPool.push(a.blueprint.reviewSemaphore.run(d))}await Promise.all(a.blueprint.reviewTaskPool),a.planning.generationDiagnostics.metrics.push({name:"phase:draft",startedAt:a.chapterLoop.draftPhaseStartedAt,endedAt:Date.now(),durationMs:Date.now()-a.chapterLoop.draftPhaseStartedAt}),a.chapterLoop.globalReviewPhaseStartedAt=Date.now(),a.chapterLoop.chapterDraftsFinal=a.understanding.chapterDraftsByOrder.filter(a=>!!a),a.understanding.chapterGenerationStages.push(...a.understanding.chapterGenerationStagesByOrder.filter(a=>!!a))}async function cU(a){let b=Math.round(([...a.planning.documentBudget.chapterTargets.values()].reduce((a,b)=>a+b,0)||a.planning.documentBudget.targetChars||0)/Math.max(1,a.planning.effectiveChapters.length)),c=(0,b2.z)().chapterConcurrency||0;a.blueprint.chapterConcurrency=a.planning.generationBudget.chapterConcurrency,a.blueprint.reviewConcurrency=a.planning.generationBudget.reviewConcurrency,(0,r.fx)(a.global.progressStages,(0,r.X5)({type:"validation",roleId:"chapter-concurrency",status:"success",message:`章节流水线调度:${a.planning.effectiveChapters.length} 章全部同批并行生成,审查修复 ${a.blueprint.reviewConcurrency} 路流水线(章节生成完立即进入审查,与后续章节生成重叠)`,details:[`有效章节数:${a.planning.effectiveChapters.length}`,`平均章节目标:${b} 字`,Number.isFinite(c)&&c>0?`章节并发来自 tuningProfile.chapterConcurrency=${Math.floor(c)}`:`全部章节并行生成,在飞调用不设并发上限;每章单轮修复(失败即放弃)`]},{subtitle:"章节流水线策略"})),a.global.emitProgress(),a.blueprint.reviewSemaphore=new e.jf(a.blueprint.reviewConcurrency),a.blueprint.reviewTaskPool=[];let d=[...a.understanding.availableEvidenceScopePaths].filter(Boolean).sort(),f=Date.now();a.blueprint.basicFactSearchResults=d.length>0?(await (0,e.l$)(k.xs,async b=>a.understanding.searchWithCache(b,d,Math.min(a.understanding.requestedEvidencePerChapter,12),""),{kind:"search"})).flat():[],a.planning.generationDiagnostics.evidence.searchQueries+=k.xs.length,a.planning.generationDiagnostics.evidence.searchMs+=Date.now()-f;let g=Date.now();try{a.blueprint.integratedBlueprint=(0,q.DL)({projectRoot:a.prepare.projectRoot,boundFilePaths:a.prepare.materialFilePaths,chapterTitles:a.planning.effectiveChapters.map(a=>a.title),templateName:a.prepare.template.name,basicFacts:(0,q.eT)(a.understanding.canonicalFacts),evidence:a.understanding.writerEvidence,facts:[...a.understanding.earlyFactPool.localFacts,...a.understanding.earlyFactPool.projectBasicFacts,...a.understanding.earlyFactPool.preciseFacts],signal:a.global.input.signal,diagnostics:a.planning.generationDiagnostics});let b=(0,q.Fq)(a.prepare.projectRoot,a.blueprint.integratedBlueprint),c=a.blueprint.integratedBlueprint.outline.chapters.reduce((a,b)=>a+b.subSections.reduce((a,b)=>a+b.workPackages.length,0),0);(0,r.fx)(a.global.progressStages,(0,r.X5)({type:"validation",roleId:"integrated-blueprint",status:a.blueprint.integratedBlueprint.validation.passed?"success":"failed",message:a.blueprint.integratedBlueprint.validation.passed?`一体化蓝图已构建并落盘:清单 ${a.blueprint.integratedBlueprint.diagnostics.boq?.totalEntries??0} 条目、标准板块 ${a.blueprint.integratedBlueprint.diagnostics.standardBlocksLoaded} 个、工作包 ${c} 个(校验通过,参数桶与章切片接管各章写作)`:`一体化蓝图已构建但校验未通过(参数桶不注入,不阻断生成):${a.blueprint.integratedBlueprint.validation.checks.filter(a=>!a.passed).map(a=>a.name).join("、")}`,details:[`耗时 ${Date.now()-g}ms`,`落盘:${b}`,`清单解析:${a.blueprint.integratedBlueprint.diagnostics.boq?`${a.blueprint.integratedBlueprint.diagnostics.boq.totalEntries} 条目 / ${a.blueprint.integratedBlueprint.diagnostics.boq.villageCount} 村 / 完整性校验${a.blueprint.integratedBlueprint.diagnostics.boq.complete?"通过":"未通过"}`:"未解析(见警告)"}`,`标准板块缺口:${a.blueprint.integratedBlueprint.diagnostics.standardBlockGaps.length>0?a.blueprint.integratedBlueprint.diagnostics.standardBlockGaps.join("、"):"无"}`,`四道校验:${a.blueprint.integratedBlueprint.validation.checks.map(a=>`${a.name}${a.passed?"✓":"✗"}`).join(" / ")}`,...a.blueprint.integratedBlueprint.diagnostics.warnings.slice(0,6).map(a=>`警告:${a}`)]},{subtitle:"一体化蓝图"})),a.global.emitProgress()}catch(b){a.blueprint.integratedBlueprint=void 0,(0,r.fx)(a.global.progressStages,(0,r.X5)({type:"validation",roleId:"integrated-blueprint",status:"failed",message:`一体化蓝图构建异常(参数桶不注入,不阻断生成):${b instanceof Error?b.message:String(b)}`,details:[`耗时 ${Date.now()-g}ms`,"蓝图异常时参数桶与章切片不注入,各章按证据独立成稿"]},{subtitle:"一体化蓝图"})),a.global.emitProgress()}if(a.blueprint.integratedBlueprint)try{let b=(0,q.wY)({projectRoot:a.prepare.projectRoot,boundFilePaths:a.prepare.materialFilePaths});a.blueprint.billFactLock=function(a){let b=a.boq;if(b&&0!==b.totalEntries)return{entries:b.entries.map(a=>({seq:a.seq,name:String(a.name||"").trim(),description:String(a.description||"").trim(),quantity:a.quantity,unit:String(a.unit||"").trim(),section:String(a.section||"").trim(),subsection:String(a.subsection||"").trim(),villageGroup:String(a.villageGroup||"").trim(),sourceFile:a.sourceFile,specQuantityPairs:cq(a.description).map(b=>({spec:b,quantity:`${a.quantity}${a.unit}`}))})),totalEntries:b.totalEntries,sourceFile:b.sourceFile,complete:b.complete}}({boq:b.boq}),a.blueprint.billFactLock&&(a.planning.generationDiagnostics.llm.lastInfo=`清单事实锁:锁定 ${a.blueprint.billFactLock.totalEntries} 条目(完整性校验${a.blueprint.billFactLock.complete?"通过":"未通过"}),写作直读与数值核对轮生效`)}catch(b){console.error(`[blueprint] 清单事实锁构建失败(章节按证据独立成稿):${b instanceof Error?b.message:String(b)}`),a.blueprint.billFactLock=void 0}let i=a.planning.documentBudget.targetChars;if(a.planning.documentBudget.longformStrict&&0!==(0,b2.z)().capacityFeasibilityRecalibration&&i&&a.blueprint.integratedBlueprint?.validation.passed){let b=a.blueprint.integratedBlueprint,c=Date.now();try{let d=new Map,e=a=>{let c=d.get(a.id);return c||(c=(0,q.iV)((0,q.md)(b,a.title),a.sections||[]),d.set(a.id,c)),c},f=a.prepare.documentSpec,{chapterTargets:g,adjustments:j,compressed:k}=(0,h.K1)({chapters:a.planning.effectiveChapters,targetChars:i,floorOf:a=>Math.max(f?.chapterRules.find(b=>b.id===a.id||b.title===a.title)?.minWords||0,f?.dynamicChapterRule.minWordsPerChapter||0),feasibilityFloorOf:a=>e(a).minFeasibleWords,currentTargets:a.planning.documentBudget.chapterTargets});for(let[b,c]of(a.planning.documentBudget.chapterTargets.clear(),g))a.planning.documentBudget.chapterTargets.set(b,c);(0,r.fx)(a.global.progressStages,(0,r.X5)({type:"validation",roleId:"chapter-budget-feasibility",status:k?"failed":"success",message:k?"章预算可行性校准:最低密度预算合计超出全文目标,按下限比例压缩(不阻断;容量密度需求与目标字数冲突已显式暴露)":j.length>0?`章预算可行性校准:${j.length} 章按真实要点密度重锚(Σ章预算 = ${i} 字守恒)`:"章预算可行性校准:各章预算均满足密度可行性下限,无需调整",details:[...j.map(b=>{let c=a.planning.effectiveChapters.find(a=>a.id===b.id),d=c?e(c).points:0;return`${b.title}:${b.from} → ${b.to} 字(要点 ${d} 个 \xd7 密度下限 1800 字/块)`}).slice(0,12),`本地校准时耗 ${Date.now()-c}ms`,`开关:tuningProfile.capacityFeasibilityRecalibration=${(0,b2.z)().capacityFeasibilityRecalibration??"缺省开启"}`]},{subtitle:"章预算可行性校准"})),(j.length>0||k)&&console.warn(`[blueprint] 章预算可行性校准:${j.length} 章调整能量;Σ章预算 = ${i} 字守恒`),a.global.emitProgress()}catch(a){console.error(`[blueprint] 章预算可行性校准失败(沿用原章预算,不阻断):${a instanceof Error?a.message:String(a)}`)}}a.blueprint.blueprintActive=!!a.blueprint.integratedBlueprint?.validation.passed}var cV=c(36366);async function cW(a){if(0===a.requirementSummary.length||0===a.chapters.length)return[];let b=a.chapters.map(a=>`【${(0,aK.GQ)(a.title)}】
62
62
  ${(a.sections||[]).filter(Boolean).map(a=>`- ${a}`).join("\n")||"(本章暂无预设小节)"}`).join("\n\n"),c=await (0,bo.bb)((0,z.y4)('你是施工组织设计大纲校准专家。输入各章已有小节与招标评分项要求,只输出需要新增的小节。\n\n新增小节必须显性承接评分项要求(如"创优目标与奖惩承诺""绿色建筑等级达标专项""智慧工地实施""装配式专项施工方案"),只允许新增,不得修改或删除任何已有小节。\n\n只有当前章节结构确实缺少对应承接小节时才新增;已有小节已覆盖该要求时不要重复新增。\n\n新增小节标题必须具体、可直接成稿,控制在 16 个汉字以内;不得新增与评分项要求无关的小节,不得输出条款碎片(如"1委员会确定中")。\n\n只返回 JSON,不要返回 markdown。'),[`文档模板:${a.templateName}`,`招标评分项要求摘要(必须逐条在结构层显性承接):
63
63
  ${a.requirementSummary.map(a=>`- ${a}`).join("\n")}`,`各章当前小节列表:
64
64
  ${b}`,a.diversityDirective?`${a.diversityDirective}
@@ -78,7 +78,7 @@ ${d.trim()}
78
78
  #### ${b}
79
79
 
80
80
  ${d.trim()}
81
- `})}return c}function y(a){return(0,g.ap)(a)}},22496:(a,b,c)=>{c.d(b,{cn:()=>h,ts:()=>d});let d=[{id:"earthwork-excavation",name:"土方开挖",aliases:["土方","基坑开挖","土方开挖","挖土"],process:["测量放线","标高复核","分层开挖","边坡修整","基底验槽"],params:["分层开挖厚度≤2m","基底标高偏差0~-50mm","边坡坡度按土质取1:0.5~1:1","预留200~300mm人工清底"],acceptance:["基底验槽","钎探记录","标高与轴线复核","隐蔽验收记录"],standards:["GB 50202-2018 建筑地基基础工程施工质量验收标准"]},{id:"earthwork-backfill",name:"土方回填",aliases:["素土回填","填土碾压","回填","余方弃置","人工清底"],process:["基底隐蔽验收","分层摊铺","分层碾压","压实度检测","边角补夯","表面整平"],params:["每层虚铺厚度≤300mm","填土含水率控制在最优含水率\xb12%","压实系数≥0.94","边角部位采用小型夯实机补夯","压实度每层每100m\xb2不少于1组检测"],acceptance:["压实度检测报告","回填土施工记录","隐蔽验收记录"],standards:["GB 50202-2018 建筑地基基础工程施工质量验收标准","GB 50268-2008 给水排水管道工程施工及验收规范"]},{id:"foundation-pit-support",name:"基坑支护",aliases:["基坑支护","钢板桩","土钉墙","支护桩","冠梁"],process:["测量定位","支护桩成孔","钢筋笼制安","混凝土浇筑","冠梁施工","分层开挖","位移监测"],params:["桩位偏差≤50mm","垂直度≤1%","冠梁顶标高偏差\xb110mm","监测频率:开挖期每天1次","报警值按设计位移速率3mm/d"],acceptance:["桩身完整性检测","锚杆拉拔试验","基坑监测日报","专项方案审批记录"],standards:["JGJ 120-2012 建筑基坑支护技术规程","GB 50497-2019 建筑基坑工程监测技术标准"]},{id:"pile-foundation",name:"桩基工程",aliases:["桩基","钻孔灌注桩","预制桩","静压桩","PHC管桩"],process:["测量定位","成孔(压桩)","清孔验收","钢筋笼制安","混凝土灌注","桩身检测"],params:["桩径偏差\xb15mm","沉渣厚度≤50mm(端承桩)","充盈系数≥1.0","桩顶标高偏差\xb110mm","静载试验不少于总桩数1%且≥3根"],acceptance:["桩基静载试验","低应变/声波透射检测","成孔记录","钢筋隐蔽验收"],standards:["JGJ 94-2008 建筑桩基技术规范","GB 50202-2018"]},{id:"rebar-works",name:"钢筋工程",aliases:["钢筋","钢筋绑扎","钢筋加工","钢筋连接"],process:["翻样下料","加工成型","运输堆放","绑扎安装","隐蔽验收"],params:["直螺纹接头拧紧力矩值按规格控制","接头错开≥35d且≥500mm","保护层垫块间距≤1m","绑扎搭接长度按图集16G101"],acceptance:["钢筋原材复试","接头工艺检验","隐蔽工程验收记录","保护层实测"],standards:["GB 50204-2015 混凝土结构工程施工质量验收规范","JGJ 18-2012 钢筋焊接及验收规程"]},{id:"formwork-works",name:"模板工程",aliases:["模板","模板支撑","高支模","脚手架模板"],process:["方案编制","立杆搭设","主次龙骨铺设","面板安装","验收挂牌","拆模申请"],params:["立杆间距≤900\xd7900mm(危大)","扫地杆距地≤200mm","水平杆步距≤1500mm","剪刀撑连续设置","拆模强度:板≥75%设计强度"],acceptance:["高支模专项方案论证","架体验收挂牌","沉降变形监测","拆模令"],standards:["JGJ 162-2008 建筑施工模板安全技术规范","JGJ 130-2011 建筑施工扣件式钢管脚手架安全技术规范"]},{id:"concrete-works",name:"混凝土工程",aliases:["混凝土","砼浇筑","混凝土浇筑","振捣"],process:["浇筑申请","坍落度检测","分层浇筑","振捣密实","收面养护","试块留置"],params:["坍落度按配比\xb130mm","分层浇筑厚度≤500mm","振动棒快插慢拔","养护≥7d(掺外加剂≥14d)","标养试块每100m\xb3≥1组"],acceptance:["坍落度检测记录","试块标养与同条件报告","混凝土外观检查","强度评定"],standards:["GB 50204-2015","GB/T 50107-2010 混凝土强度检验评定标准"]},{id:"steel-structure",name:"钢结构工程",aliases:["钢结构","钢构件","焊接","高强螺栓"],process:["深化设计","构件加工","进场验收","吊装就位","校正固定","焊接/螺栓连接","涂装"],params:["高强螺栓初拧终拧扭矩比1.1","焊缝等级按设计一级/二级","挠度允许值L/400","防火涂料厚度按耐火极限"],acceptance:["焊缝探伤检测","高强螺栓扭矩检查","构件尺寸偏差实测","防火涂料厚度检测"],standards:["GB 50205-2020 钢结构工程施工质量验收标准","JGJ 82-2011 钢结构高强度螺栓连接技术规程"]},{id:"masonry-works",name:"砌体工程",aliases:["砌体","砌筑","加气块","二次结构"],process:["弹线定位","排砖撂底","砌筑","构造柱植筋","圈梁浇筑","顶砖处理"],params:["灰缝厚度8~12mm","垂直度偏差≤5mm(每层)","拉结筋间距≤500mm","顶砖间隔7d斜砌"],acceptance:["砌筑砂浆试块","构造柱钢筋隐蔽验收","垂直度平整度实测","拉结筋检测"],standards:["GB 50203-2011 砌体结构工程施工质量验收规范"]},{id:"waterproofing",name:"防水工程",aliases:["防水","屋面防水","卫生间防水","地下防水","卷材"],process:["基层处理","阴阳角附加层","防水层铺贴","搭接密封","闭水/淋水试验","保护层"],params:["卷材搭接宽度≥100mm","附加层宽度≥500mm","卫生间闭水试验48h","屋面蓄水试验24h","涂膜厚度按设计≥1.5mm"],acceptance:["闭水/蓄水试验记录","隐蔽验收记录","防水材料复试","淋水试验"],standards:["GB 50207-2012 屋面工程质量验收规范","GB 50208-2011 地下防水工程质量验收规范"]},{id:"plastering",name:"抹灰工程",aliases:["抹灰","粉刷","墙面抹灰","挂网"],process:["基层处理","浇水湿润","打点冲筋","分层抹灰","压光","养护"],params:["不同基体交接处挂网宽≥200mm","每遍抹灰厚度≤7mm","平整度偏差≤4mm","空鼓面积≤400cm\xb2且不连续"],acceptance:["空鼓敲击检查","平整度垂直度实测","养护记录"],standards:["GB 50210-2018 建筑装饰装修工程质量验收标准"]},{id:"tile-paving",name:"墙地砖铺贴",aliases:["墙地砖","瓷砖","铺贴","石材"],process:["基层检查","排砖放线","选砖泡水","铺贴","勾缝","成品保护"],params:["粘结层厚度≤10mm","接缝宽度按设计要求","空鼓率单块≤15%且整面≤5%","平整度偏差≤2mm"],acceptance:["空鼓锤击检查","平整度实测","坡度泼水检查","成品保护验收"],standards:["GB 50210-2018"]},{id:"ceil-partition",name:"吊顶与轻质隔墙",aliases:["吊顶","轻钢龙骨","隔墙","石膏板"],process:["弹线定位","龙骨安装","面板安装","接缝处理","面层施工"],params:["主龙骨间距≤1200mm","吊杆间距≤1000mm","罩面板接缝错开","石膏板接缝处粘贴网格布"],acceptance:["龙骨隐蔽验收","面板平整度实测","吊顶起拱检查"],standards:["GB 50210-2018"]},{id:"painting",name:"涂饰工程",aliases:["涂料","油漆","乳胶漆","腻子"],process:["基层清理","刮腻子","打磨","底漆","面漆","修整"],params:["腻子每遍厚度≤2mm","底漆1遍面漆2遍","施工温度5~35℃","平整度偏差≤2mm"],acceptance:["涂层色泽均匀检查","无流坠起皮检查","平整度实测"],standards:["GB 50210-2018"]},{id:"door-window",name:"门窗工程",aliases:["门窗","铝合金窗","幕墙","玻璃"],process:["洞口复核","安装固定","缝隙填塞","打胶密封","开启调试","淋水试验"],params:["框与墙间隙≤5mm","密封胶连续饱满","窗扇开关力≤50N","气密水密性能按设计等级"],acceptance:["淋水试验","开启灵活检查","垂直度偏差实测","性能检测报告"],standards:["GB 50210-2018","GB/T 7106-2019 建筑外门窗气密水密抗风压性能检测方法"]},{id:"plumbing",name:"给排水工程",aliases:["给排水","给水管道","排水管道","管道安装"],process:["预留预埋","支架安装","管道安装","压力试验","冲洗消毒","通水试验"],params:["给水管试验压力为工作压力1.5倍且≥0.6MPa","排水管坡度按管径DN50~DN200取2.5%~0.8%","支架间距按管径设置","PPR热熔温度260℃"],acceptance:["管道水压试验","通球试验","灌水试验","冲洗消毒记录"],standards:["GB 50242-2002 建筑给水排水及采暖工程施工质量验收规范"]},{id:"electrical",name:"电气工程",aliases:["电气","配管","穿线","桥架","配电箱","防雷接地"],process:["预留预埋","配管桥架","穿线放缆","设备安装","绝缘测试","通电调试"],params:["管路弯曲半径≥6D(埋地≥10D)","导线绝缘电阻≥0.5MΩ","桥架支架间距≤1.5m","防雷接地电阻≤1Ω"],acceptance:["绝缘电阻测试","接地电阻测试","通电试运行","隐蔽验收记录"],standards:["GB 50303-2015 建筑电气工程施工质量验收规范"]},{id:"hvac",name:"通风空调工程",aliases:["通风空调","风管","空调","新风","保温"],process:["风管制作","吊架安装","风管安装","设备安装","严密性试验","系统调试"],params:["风管支吊架间距≤3m","中压风管漏光法检测","保温层厚度按设计","风口风速按设计值\xb110%"],acceptance:["风管严密性试验","风量平衡调试","设备单机试运行","系统联动调试"],standards:["GB 50243-2016 通风与空调工程施工质量验收规范"]},{id:"fire-protection",name:"消防工程",aliases:["消防","消火栓","喷淋","火灾报警","防排烟"],process:["预留预埋","管道安装","喷头/探测器安装","系统试压","联动调试","检测验收"],params:["喷淋试验压力≥1.4MPa","消火栓充实水柱≥10m","探测器保护半径按类别","防排烟风管严密性"],acceptance:["消防水压试验","联动调试记录","消防检测报告","竣工验收备案"],standards:["GB 50261-2017 自动喷水灭火系统施工及验收规范","GB 50166-2019 火灾自动报警系统施工及验收标准"]},{id:"weak-current",name:"弱电智能化工程",aliases:["弱电","智能化","综合布线","监控","门禁"],process:["管线预埋","桥架敷设","线缆敷设","设备安装","单机调试","系统联调"],params:["双绞线弯曲半径≥4D","光缆弯曲半径≥15D","面板安装高度距地300mm","链路测试按TIA-568"],acceptance:["链路测试报告","单机调试记录","系统联调记录","隐蔽验收"],standards:["GB 50311-2016 综合布线系统工程设计规范","GB 50339-2013 智能建筑工程质量验收规范"]},{id:"municipal-road",name:"道路工程",aliases:["道路","路基","路面","水稳","沥青"],process:["测量放线","路基处理","分层碾压","水稳摊铺","沥青摊铺","标线设施"],params:["路基压实度≥93%(路床)","水稳层7d无侧限抗压强度按设计","沥青压实度≥96%","面层平整度≤5mm(3m直尺)"],acceptance:["压实度检测","弯沉检测","取芯厚度检测","平整度实测"],standards:["CJJ 1-2008 城镇道路工程施工与质量验收规范"]},{id:"municipal-pipe",name:"市政管道工程",aliases:["管道","雨污水","沟槽","检查井","承插管"],process:["测量放线","沟槽开挖支护","基础垫层","管道安装","接口处理","闭水试验","回填"],params:["沟槽开挖放坡按土质1:0.33~1:0.5","垫层厚度按设计≥100mm","管道安装轴线偏差≤15mm","闭水试验渗水量按GB 50268","回填分层厚度≤250mm"],acceptance:["闭水试验记录","管内底高程检测","管道CCTV检测","回填压实度检测"],standards:["GB 50268-2008 给水排水管道工程施工及验收规范"]},{id:"demolition",name:"拆除工程",aliases:["拆除","墙体拆除","结构拆除","垃圾外运"],process:["方案编制","围挡隔离","管线切断","分层拆除","垃圾清运","验收交接"],params:["拆除顺序自上而下","垃圾清运日产日清","湿法作业降尘","既有保留部位防护到位"],acceptance:["拆除专项方案","既有设施保护检查","垃圾清运记录"],standards:["JGJ 147-2016 建筑拆除工程安全技术规范"]},{id:"structural-strengthen",name:"结构加固",aliases:["结构加固","粘钢","碳纤维","植筋","加大截面"],process:["设计交底","基层处理","植筋","粘贴加固","养护","检测验收"],params:["植筋锚固深度按设计≥15d","碳纤维布粘结强度≥2.5MPa","胶粘剂固化时间按产品说明","加大截面混凝土强度等级≥C25"],acceptance:["拉拔试验","粘结密实度检测","隐蔽验收记录"],standards:["GB 50367-2013 混凝土结构加固设计规范","GB 50550-2010 建筑结构加固工程施工质量验收规范"]},{id:"facade-renovation",name:"外立面整治",aliases:["外立面","立面修补","真石漆","外保温"],process:["脚手架搭设","空鼓铲除","界面处理","保温层施工","面层施工","验收落架"],params:["保温板粘贴面积≥40%","锚栓数量每平米≥6个","抗裂砂浆厚度3~5mm","面层垂直度偏差≤4mm"],acceptance:["粘结强度现场拉拔","锚栓拉拔试验","平整度实测"],standards:["GB 50411-2019 建筑节能工程施工质量验收标准","JGJ 144-2019 外墙外保温工程技术标准"]},{id:"scaffold",name:"脚手架工程",aliases:["脚手架","外架","落地架","悬挑架"],process:["方案编制","基础处理","立杆搭设","连墙件设置","安全网封闭","验收挂牌","拆除"],params:["立杆纵距≤1.5m","连墙件两步三跨","剪刀撑与地面夹角45\xb0~60\xb0","悬挑架工字钢锚固长度≥1.25倍悬挑长度","架体高于作业层1.5m"],acceptance:["架体分段验收","连墙件检查","安全网封闭检查"],standards:["JGJ 130-2011 建筑施工扣件式钢管脚手架安全技术规范"]},{id:"tower-crane",name:"起重吊装",aliases:["起重吊装","塔吊","吊装","汽车吊"],process:["方案编制","设备报验","基础验收","安装调试","检测备案","日常检查","拆除"],params:["吊装作业半径内警戒","吊索具安全系数≥6","塔吊垂直度≤4‰","风速≥6级停止吊装"],acceptance:["特种设备检测","安装验收记录","司机指挥持证检查"],standards:["JGJ 196-2010 建筑施工塔式起重机安装使用拆卸安全技术规程"]},{id:"electrical-hookup",name:"临时用电",aliases:["临电","临时用电","三级配电"],process:["方案编制","线路敷设","配电箱设置","接地保护","验收送电","日常巡检"],params:["三级配电两级漏保","漏电动作电流≤30mA/0.1s","PE线截面按相线1/2","电缆埋深≥0.7m","配电箱距地1.4~1.6m"],acceptance:["绝缘电阻测试","接地电阻测试","验收送电记录"],standards:["JGJ 46-2005 施工现场临时用电安全技术规范"]}],e=new Map,f=new Map;for(let a of d)for(let b of(f.set(a.id,a),e.set(a.name,a),a.aliases))e.set(b,a);let g=[{pattern:/安装工程|机电安装/u,cardIds:["electrical","plumbing","hvac","fire-protection","weak-current"]},{pattern:/结构加固|加固改造/u,cardIds:["structural-strengthen","concrete-works","rebar-works","formwork-works"]},{pattern:/装饰工程|装饰装修/u,cardIds:["plastering","tile-paving","ceil-partition","painting","door-window"]},{pattern:/外墙|屋面|立面/u,cardIds:["facade-renovation","waterproofing","scaffold"]},{pattern:/室外道排|道排|室外管网|雨污水/u,cardIds:["municipal-pipe","municipal-road","earthwork-excavation"]},{pattern:/智能化/u,cardIds:["weak-current"]},{pattern:/消防/u,cardIds:["fire-protection"]},{pattern:/拆除/u,cardIds:["demolition"]},{pattern:/水电改造/u,cardIds:["plumbing","electrical"]}];function h(a,b=[]){let c=new Set;for(let b of a){let a=e.get(b);for(let[d,f]of(a&&c.add(a),e))d.length>=3&&b.includes(d)&&c.add(f);for(let a of g)if(a.pattern.test(b))for(let b of a.cardIds){let a=f.get(b);a&&c.add(a)}}for(let a of d){if(c.size>=16)break;(!a.projectTypes||a.projectTypes.some(a=>b.includes(a)))&&c.add(a)}return[...c].slice(0,16)}},23760:(a,b,c)=>{c.d(b,{AC:()=>x,AN:()=>U,Ai:()=>E,BV:()=>I,EJ:()=>V,Ef:()=>D,Ff:()=>v,Fv:()=>S,Jn:()=>N,K1:()=>P,KI:()=>aE,M$:()=>a2,N1:()=>aV,NS:()=>T,S2:()=>aW,SN:()=>W,ST:()=>aI,Ty:()=>J,VW:()=>aa,Yb:()=>aF,Z2:()=>aP,Zu:()=>aG,bM:()=>aY,f8:()=>M,gN:()=>K,hr:()=>aB,i0:()=>aQ,iC:()=>G,j9:()=>aZ,ji:()=>aR,k0:()=>Q,kQ:()=>a1,kw:()=>A,mR:()=>a_,qK:()=>_,qm:()=>at,t4:()=>a0,vY:()=>aO,vZ:()=>R,wl:()=>C,xX:()=>aH,yd:()=>aX,yw:()=>$});var d=c(8753),e=c(98281),f=c(37047),g=c(78217),h=c(11248),i=c(70208),j=c(40299),k=c(13145),l=c(65667),m=c(91977),n=c(23500),o=c(22157),p=c(54185),q=c(3063),r=c(52922),s=c(41991),t=c(30836),u=c(35547);function v(a){let b={blocking:0,important:0,minor:0};for(let c of a)b[function(a){let b="string"==typeof a?a:a.message;if("error"===("string"==typeof a?void 0:a.level))return"blocking";for(let a of e.gr)if(a.pattern.test(b))return a.severity;return"minor"}(c)]+=1;return b}function w(a,b){let c=a.replace(/[\][()`*_>#|{},。、“”‘’:;!?,.!?:;-]+/gu," ").replace(e.ug," ").trim();if(c.length<120)return;let d=c.match(/[A-Za-z][A-Za-z-]{2,}|[\p{Script=Han}]{2,}/gu)||[];if(d.length<30)return;let f=1,g=new Map;for(let a=0;a<d.length;a+=1){let c=d[a].toLowerCase();if(g.set(c,(g.get(c)||0)+1),a>0&&c===d[a-1].toLowerCase()?f+=1:f=1,f>=12)return{level:"error",message:`${b} 存在重复 token 退化输出`,suggestion:"请重新生成该小节,禁止保留连续重复的英文单词或无意义片段。"}}let h=[...g.entries()].sort((a,b)=>b[1]-a[1])[0];if(h&&h[1]>=25&&h[1]/d.length>=.42)return{level:"error",message:`${b} 存在重复 token 退化输出`,suggestion:`检测到“${h[0]}”异常高频重复,请重新生成该小节。`}}function x(a,b=[]){let c=[],d=w(a,"全文");for(let a of(d&&c.push(d),b)){let b=w(a.content,`章节“${a.title}”`);for(let d of(b&&c.push(b),a.sections||[])){let b=d.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&"),e=a.content.match(RegExp(`^#{3,4}\\s+(?:\\d+(?:\\.\\d+)*\\s+)?${b}\\s*\\n([\\s\\S]*?)(?=^#{3,4}\\s+|^##\\s+|$)`,"mu"));if(!e)continue;let f=w(e[1],`小节“${d}”`);f&&c.push(f)}}return c}function y(a){return a.severity&&a.repairability?a:/小节只有标题|空小节|小节内容补写未完成/u.test(a.message)?{...a,severity:"blocker",repairability:"local_deterministic",category:"structure",owner:"system"}:/不得出现|提示词要求|疑似提示词指令标题|项目污染|生成未完成/u.test(a.message)?{...a,severity:"blocker",repairability:"llm_repairable",category:"structure",owner:"system"}:/事实一致性冲突|projectFactOnly|核心事实/u.test(a.message)?{...a,severity:"error"===a.level?"blocker":"warning",repairability:"manual_review",category:"fact_consistency",owner:"user"}:/证据使用覆盖率偏低|BOQ|落位|高分模块|专业链|闭环/u.test(a.message)?"error"===a.level?{...a,severity:"blocker",repairability:"llm_repairable",category:"evidence_coverage",owner:"llm"}:{...a,severity:"warning",repairability:"not_repair_needed",category:"evidence_coverage",owner:"system"}:"error"===a.level?{...a,severity:"blocker",repairability:"llm_repairable",category:"structure",owner:"system"}:"warning"===a.level?{...a,severity:"warning",repairability:"not_repair_needed",category:"style",owner:"system"}:{...a,severity:"suggestion",repairability:"not_repair_needed",category:"style",owner:"system"}}function z(a){let b=y(a);return"blocker"===b.severity&&(!!("error"===b.level&&"blocker"===b.severity&&/placeholder|source|style|format|structure/u.test(String(b.category||""))||"error"===b.level&&"fact_consistency"===b.category&&/危大工程判定缺失|超危大工程判定缺失|支护形式与资料矛盾|支护形式未落地|设备进场时间荒谬|设备进场工序倒挂/u.test(a.message)||"error"===b.level&&"blocker"===b.severity&&"fact_consistency"===b.category&&"llm_repairable"===b.repairability||/提示词要求|疑似提示词指令标题|适用性自相矛盾|不得出现/u.test(a.message))||!/目录与正文/u.test(a.message)&&(/配置要求缺少必要内容/u.test(a.message)?"error"===a.level:!!/小节内容补写未完成|空小节|小节只有标题|生成未完成/u.test(a.message)||!/生成后事实反查失败/u.test(a.message)&&(/工序规格冲突/u.test(a.message)?"error"===a.level:!!/项目特点、重点、难点分析 正文不足|项目主要施工内容 正文不足/u.test(a.message)||!(/规划小节正文过短/u.test(a.message)||/事实一致性冲突:项目名称/u.test(a.message))&&(/跨章一致性|专业评分不足|专业缺口|泛化套话|缺少关键线路|缺少材料验收|缺少风险识别|缺少进场/u.test(a.message)?"error"===a.level&&!/证据使用覆盖率偏低|章节逻辑依赖不足|文档交付评分报告/u.test(a.message):!(!e.hc.test(a.message)||/章节审查|最终质量审查|正文篇幅明显低于目标|正文存在空泛占位表达|结构化事实读取不足|正文可能未显式覆盖|仅包含文件类型和占位符|不在本次招标范围内/u.test(a.message))))))}function A(a){let b=[];for(let c of a.split(/^##\s+/gmu).slice(1)){let a=c.split(/\r?\n/u),d=(a.shift()||"").trim(),e=new Map;for(let b of a){let a=/^####\s+(.+)$/u.exec(b.trim());if(!a)continue;let c=a[1],d=/^\d+(?:\.\d+)*/u.test(c);if(d&&!(0,p.cq)(c))continue;let f=d?(0,o.Sw)(c):c.replace(/\s+/gu,"");f.length<2||e.set(f,(e.get(f)||0)+1)}for(let[a,c]of e)if(!(c<2)&&(b.push({level:"error",message:`${d||"某章"} 存在同名小节重复:“${a}”出现 ${c} 次`,suggestion:"同主题内容应合并为一个小节;若确为不同方面,请重命名标题以区分内容,避免目录重复堆叠。"}),b.length>=6))return b}return b}let B=new Set(["如有","应用","措施","体系","管理","保障","要求","内容","工程","项目","施工"]);function C(a,b,c={}){let d=[],e=a.replace(/\s+/gu,""),f=c.semanticSimilarity?a.split(/\n/u).filter(a=>/^#{2,4}\s/u.test(a.trim())).map(a=>a.trim().replace(/^#{2,4}\s+/u,"").replace(/^\d+(?:\.\d+)*[\s、.]+/u,"").trim()).filter(Boolean).slice(0,80):[];for(let a of b.slice(0,8)){let b=a.replace(/^拟采用/u,"").replace(/^针对/u,"").replace(/^确保/u,"").replace(/[((][^))]*[))]/gu,"").replace(/的保障体系与措施$|管理体系与措施$|保障体系与措施$/u,"").replace(/^\d{1,3}(?:[.、.]\d{1,3})*\s*/u,"").trim().split(/[、,,;;及与和]+/u).map(a=>a.replace(/^[的了者]+/u,"").trim()).filter(a=>a.length>=2&&!B.has(a));if(0!==b.length&&!b.some(a=>e.includes(a))){if(c.semanticSimilarity&&f.length>0&&Math.max(...f.map(b=>c.semanticSimilarity(a,b)))>=.6)continue;d.push({level:"warning",severity:"warning",message:`招标文件评分条目“${a}”未在正文中出现(核心词:${b.join("/")})`,suggestion:"评审条目必须逐条承接为正文小节;请补写对应内容并确保核心关键词落位,避免评标失分。"})}}return d}function D(a,b){let c=(b||[]).flatMap(a=>(a.sections||[]).filter(a=>/新技术|新工艺|新材料|新设备|四新/u.test(a)));if(0===c.length)return[];let d=[],e=(0,o.Xl)(a,"四新",{fuzzy:!0}),f=e?(0,g.V7)(e):0;for(let b of[...new Set(c)]){let c=(0,o.Xl)(a,b,{fuzzy:!0});if(!c||200>(0,g.V7)(c)){if(f>=200)continue;d.push({level:"warning",severity:"warning",message:`大纲承诺小节“${b}”未在正文成稿(正文 ${c?(0,g.V7)(c):0} 字,要求不少于 200 字)`,suggestion:"请补写四新技术应用小节成稿,落位本项目适用的创新工艺、新材料与新设备应用计划。"})}}return d}function E(a,b,c){let d=a.map(y),f=/封面|页眉|页脚|附图|图片引用|CAD图|示意图|插图/u,g=d.filter(a=>"error"===a.level&&z(a)&&!f.test(a.message)),h=d.filter(a=>"error"===a.level&&f.test(a.message)),i=[{key:"no_errors",label:"无阻断级校验错误",passed:0===g.length},{key:"basic_facts",label:"基础事实齐全",passed:b.project.length>0},{key:"source_traceability",label:"事实具备来源追踪",passed:[...b.project,...b.schedule,...b.quality,...b.safety].every(a=>!!a.sourceFile)},{key:"structured_precision",label:"结构化精确参数已使用",passed:b.preciseFacts.length<e.mu||a.every(a=>"error"!==a.level||!e.Ab.test(a.message))},{key:"chapter_evidence",label:"章节均具备证据",passed:c.every(a=>a.evidence.length>0)},{key:"no_missing_content",label:"无资料未提供章节",passed:c.every(a=>!a.content.includes("资料未提供"))},{key:"no_project_contamination",label:"无项目污染和事实一致性阻断",passed:!a.some(a=>"error"===a.level&&e.Uv.test(a.message)&&z(a))},{key:"numeric_consistency",label:"跨章数值口径与资料一致",passed:!a.some(a=>"error"===a.level&&/跨章一致性冲突|跨章一致性缺口|跨章一致性复核/u.test(a.message)&&z(a))},{key:"manual_postprocess",label:`封面/页眉页脚/附图等 ${h.length} 项由后期人工完善(不阻断导出)`,passed:!0,message:h.length?h.slice(0,5).map(a=>a.message).join(";"):void 0}];return{passed:0===g.length,blockingIssues:g,checklist:i}}function F(a){let b=[],c=a.split(e.A5);for(let a=0;a<c.length;a+=1){if(!e.w7.test(c[a]))continue;let d=[];for(;a<c.length&&e.w7.test(c[a]);)d.push(c[a]),a+=1;a-=1,d.some(a=>e.N3.test(a))&&b.push(d.join("\n"))}return b}function G(a){let b=[...a.matchAll(e.DB)],c=[];for(let d=1;d<b.length;d+=1){let f=b[d].index||0,g=b[d+1]?.index??a.length,h=a.slice(f,g);e.Ks.test(h)&&c.push({level:"warning",message:`第 ${d+1} 章可能重复出现基础信息`,suggestion:"如该信息与本章主题无关,建议合并到更合适的概况类章节,避免重复铺陈。"})}if(0===b.length)return c;let d=b[0].index||0,f=b[1]?.index??a.length,g=a.slice(d,f),h=g.search(e.jM);if(h<=0)return c;let i=g.slice(0,h).replace(e.Dc,""),j=[];for(let a of e.Y8)RegExp(`${a}\\s*[::]`,"u").test(i)&&j.push(a);return j.length>=3&&c.push({level:"warning",message:`基础信息表前重复叙述字段:${j.join("、")}`,suggestion:"基础信息已表格化时,表格前只保留一句引导语,不要重复逐项叙述名称、编号、范围、周期、质量等字段。"}),c}let H=["本节将详细介绍以下内容","本章将从以下几个方面进行阐述","综上所述,通过以上分析得出结论","以下内容将围绕该主题展开论述"];async function I(a){let b=[],c=a.split(/\n+/u).filter(a=>a.trim()&&!/^\s*(#{1,6}\s+|\||[-*+]\s|>)/u.test(a)).flatMap(a=>a.split(/[。;;]/u)).map(a=>a.trim()).filter(a=>a.length>=8),d=await (0,f.Mv)(c,[...H]),e=c.filter(a=>H.some(b=>d(a,b)>=f.Eh));e.length>0&&b.push({level:"warning",message:`存在模板化前缀或套话:${e.slice(0,3).join("、")}`,suggestion:"请删除“本节/本章将/以下从”等前缀,标题后直接进入对象、动作、措施、检查和闭环。"});let g=a.match(/OCR|提示词|绑定片段|后台|文件路径|识别错误|知识库证据|知识库已确认事实|通用兜底段落|兜底占位|兜底模板/giu);return g?.length&&b.push({level:"warning",message:`正文包含后台或资料处理话术:${[...new Set(g)].join("、")}`,suggestion:"建议改为正式文档语言,例如“资料文字不清”“资料口径不一致”“项目资料”,不得暴露后台处理过程。"}),b}function J(a){let b=[];for(let c of a){let a=(c.sections||[]).filter(Boolean),d=a.filter((b,c)=>a.indexOf(b)!==c);d.length>0&&b.push({level:"warning",message:`${c.title} 存在重复小节:${[...new Set(d)].join("、")}`,suggestion:"请保留用户需求、模板或显式大纲中真实需要的小节,删除重复项。"});let e=new Map;for(let b of a){let a=/劳动力|人员|工种/u.test(b)?"劳动力计划":/机械|设备|机具/u.test(b)?"机械设备计划":/材料|物资/u.test(b)?"材料物资计划":/冬季|雨季|高温|台风|大风/u.test(b)?"特殊气候措施":"";a&&e.set(a,[...e.get(a)||[],b])}for(let[a,d]of e)d.length>1&&b.push({level:"warning",message:`${c.title} 存在重复主题小节:${a}(${d.join("、")})`,suggestion:"请合并同类小节,只保留一个主表或主方案,其他位置采用引用或执行说明。"})}return b}function K(a){let b=e.HX.exec(a);if(!b)return[{level:"error",message:"缺少目录页",suggestion:"请在封面后生成“## 目录”,并按一级章父级、二级小节子级组织。"}];let c=0,d=0;for(let a of b[1].split(e.A5))e.ZT.test(a)&&e.EB.test(a)&&(c+=1,e.sr.test(a)&&(d+=1));return c>0&&0===d?[{level:"error",message:"目录二级小节未作为子级缩进",suggestion:"目录应为父子级导航:一级章单独成行,二级小节至少缩进两个空格列在所属章下方。"}]:[]}function L(a){return a.replace(/^#+\s*/u,"").replace(/^第[一二三四五六七八九十百千万\d]+[章节篇部分]\s*/u,"").replace(/^\d+(?:\.\d+)*(?:[..、]|\s)+/u,"").replace(/[()]/gu,a=>"("===a?"(":")").replace(/[\s::.。;;,,、]+$/gu,"").replace(/的(?=保障体系|管理体系|控制体系|措施|方案|计划|要求)/gu,"").replace(/[\s()()::.。;;,,、-]/gu,"").trim()}function M(a){let b=function(a){let b=e.HX.exec(a);return b?b[1].split(e.A5).map(a=>/^\s*(\d+\.\d+)\s+(.+)$/u.exec(a.trim())).filter(a=>!!a).map(a=>({number:a[1]||"",title:L(a[2]||"")})).filter(a=>a.title):[]}(a),c=[...a.matchAll(/^###\s+(\d+\.\d+)\s+(.+)$/gmu)].map(a=>({number:a[1]||"",title:L(a[2]||"")})).filter(a=>a.title);if(0===b.length||0===c.length)return[];let d=b.map(a=>a.title),f=c.map(a=>a.title),g=new Set(f),h=new Set(d),i=d.filter(a=>!g.has(a)),j=f.filter(a=>!h.has(a)),k=[];i.length>0&&k.push({level:"error",message:`目录与正文不一致,目录小节未在正文中找到:${[...new Set(i)].join("、")}`,suggestion:"建议以最终清洗后的正文二级标题为准重新生成目录。"}),j.length>0&&k.push({level:"error",message:`目录与正文不一致,正文小节未进入目录:${[...new Set(j)].join("、")}`,suggestion:"建议重新生成目录,确保正文二级小节完整进入目录。"});let l=new Map(c.map(a=>[a.number,a.title])),m=new Set(b.map(a=>a.number)),n=b.filter(a=>l.has(a.number)&&l.get(a.number)!==a.title),o=c.filter(a=>!m.has(a.number));return b.length!==c.length&&k.push({level:"error",message:`目录与正文小节数量不一致:目录 ${b.length} 节、正文 ${c.length} 节`,suggestion:"正文 H3 编号必须连续单调且与目录一一对应;出现重复编号、跳号或丢节时以正文实际结构重建目录。"}),n.length>0&&k.push({level:"error",message:`目录与正文同一编号对应不同小节:${n.slice(0,5).map(a=>`${a.number} 目录「${a.title}」/正文「${l.get(a.number)}」`).join("、")}`,suggestion:"目录必须按正文 H3 实际编号与标题生成,同一编号不得对应不同小节名称。"}),o.length>0&&k.push({level:"error",message:`正文小节编号未出现在目录中:${o.slice(0,5).map(a=>`${a.number} ${a.title}`).join("、")}`,suggestion:"目录编号与正文编号必须全集一致。"}),k}function N(a){let b,c=[];for(let d of a.split(e.A5)){let a=d.trim(),e=/^##\s+第[一二三四五六七八九十百千万\d]+章\s+(.+)$/u.exec(a);if(e){b={ordinal:c.length+1,title:(e[1]||"").trim(),numbers:[],prefixNumbers:[]},c.push(b);continue}let f=/^###\s+(\d+)\.(\d+)\s+/u.exec(a);f&&b&&(b.prefixNumbers.push(Number(f[1])),b.numbers.push(Number(f[2])))}let d=[];for(let a of c){if(0===a.numbers.length)continue;let b=new Map;for(let c of a.prefixNumbers)b.set(c,(b.get(c)||0)+1);let c=[...b.entries()].sort((a,b)=>b[1]-a[1]||a[0]-b[0])[0]?.[0]??a.ordinal,e=[...new Set(a.prefixNumbers.filter(b=>b!==a.ordinal))].sort((a,b)=>a-b);e.length>0&&d.push({level:"error",severity:"blocker",category:"structure",message:`小节编号章号错位:第${a.ordinal}章「${a.title}」内出现 ${e.slice(0,8).map(a=>`${a}.x`).join("、")} 编号小节(应为 ${a.ordinal}.x)`,suggestion:`正文二级小节编号必须为「章序.节序」;按章序重排本章 H3 编号(降级 H4 不占 H3 编号)。`});let f=new Map;for(let b of a.numbers)f.set(b,(f.get(b)||0)+1);let g=[...f.entries()].filter(([,a])=>a>1).map(([a])=>a).sort((a,b)=>a-b);g.length>0&&d.push({level:"error",severity:"blocker",category:"structure",message:`小节编号重复:第${a.ordinal}章「${a.title}」${g.slice(0,8).map(a=>`${c}.${a}`).join("、")} 重复出现`,suggestion:"同章内同一小节编号只允许出现一次;重复编号为降级合并残留,按正文实际小节顺序重排编号。"});let h=Math.max(...a.numbers),i=Array.from({length:h},(a,b)=>b+1).filter(a=>!f.has(a));i.length>0&&d.push({level:"error",severity:"blocker",category:"structure",message:`小节编号缺号:第${a.ordinal}章「${a.title}」缺 ${i.slice(0,8).map(a=>`${c}.${a}`).join("、")}(实有 ${f.size} 个小节,最大编号 ${c}.${h})`,suggestion:"小节编号必须从 1 起连续;缺号源自降级合并占用编号或丢节,按正文小节顺序重排编号后同步重建目录。"})}return d}function O(a){let b=a.replace(/^#{1,6}\s+/u,"").replace(/^\s*\d+(?:\.\d+)*(?:[..、]|\s)+/u,"").replace(/^第[一二三四五六七八九十百千万\d]+[章节篇部分]\s*/u,"").trim(),c=(0,i.GQ)(b),d=/^(?:\d+(?:\.\d+)*\s*)?(?:[-—–]\s*)?(?:(?:判断|判定|识别|确认)?是否(?:涉及|涉|需要|适用).*|(?:如|若|如果)(?:涉及|不涉及|适用|不适用).*|.*(?:根据|结合).{0,12}(?:实际情况|项目情况|资料情况).{0,8}(?:判断|确定|编写|生成).*|.*(?:按需(?:生成|编写)|视情况|判断后|生成要求|编写要求|注意事项))\s*$/u;return d.test(b)||d.test(c)||(0,i.mq)(b)||(0,i.mq)(c)}function P(a){let b=[...a.matchAll(/^#{2,6}\s+(.+)$/gmu)].map(a=>(0,i.GQ)(a[1]||"")).filter(O);return b.length>0?[{level:"error",message:`正文存在疑似提示词指令标题:${[...new Set(b)].slice(0,8).join("、")}`,suggestion:"请删除或改写为正式施工组织设计小节标题,目录也不得收录该类标题。"}]:[]}function Q(a){let b=[],c=a.split(e.A5).map(a=>a.trim()).filter(a=>a&&!/^#{1,6}\s+/u.test(a)&&!/^\s*\|/u.test(a)&&!/^<div\b/iu.test(a)),d=c.find(a=>L(a).length<=1);d&&b.push({level:"warning",message:`正文存在孤立字或残缺段落:${d}`,suggestion:"请删除残缺行或重新生成所在小节。"});let f=/^(?:[-*+]\s+|[((]?\d+[)).、]\s*)/u,g=/(?:按以下|如下|包括|分为|包含|列出).*[::]$/u,h=a=>/[::]$/u.test(c[a])&&a+1<c.length&&f.test(c[a+1]),i=a=>/[,、;:]$/u.test(c[a])&&a+1<c.length&&!f.test(c[a+1]),j=[];for(let a=0;a<c.length&&j.length<3;a+=1){let b=c[a];!(f.test(b)||g.test(b)||h(a)||i(a))&&(/[,、;:和与在为对将]$/u.test(b)||/(通过|包括|如下|主要包括|验收|合格后|复查合格后|设计风|确认后|具体如下|应符合|不少于|以及|且应|不得少于)$/u.test(b))&&j.push(b)}for(let a of j)b.push({level:"error",severity:"blocker",category:"format",owner:"llm",repairability:"llm_repairable",message:`正文存在疑似截断句:${a}`,suggestion:"请补完整该段落,避免以连接词、逗号、冒号或无句号的动作词结尾。"});let k=c.find(a=>a.length>380);k&&b.push({level:"warning",message:`正文存在过长段落:${k}`,suggestion:"请拆分为多段或表格,改善导出版式和可读性。"});let l=c.find(a=>/\S.+(?:\s|[。;;])(?:\d+[.、](?=\s|\*\*)\s*|[((]\d+[))]\s*|[-*+]\s+)\S.+(?:\s|[。;;])(?:\d+[.、](?=\s|\*\*)\s*|[((]\d+[))]\s*|[-*+]\s+)\S/u.test(a)&&!/\b\d+\.\d+\s*(?:mm|cm|m|㎡|m2|kg|t|MPa|kPa|V|KV|kV|A)\b/iu.test(a));l&&b.push({level:"error",message:`正文存在列表项粘连同一行:${l.slice(0,120)}`,suggestion:"有序列表和无序列表必须逐项独占一行,确保 Markdown/PDF/DOCX 正确排版。"});let m=a.match(/PDF\s*第\s*|(?:PDF\s*)?第\s*\d+\s*(?:[-—至到~~]\s*\d+)?\s*页|(?:图纸|清单|资料|文件|[\u4e00-\u9fa5A-Za-z0-9()()、·-]{2,24}(?:工程)?)\s*(?:[((]?\s*|(?:共|多达|约|合计)\s*)\d+\s*页|[\u4e00-\u9fa5A-Za-z0-9、及与和]{2,24}\s*(?:共|多达|约|合计)\s*\d+\s*页|\d+\s*页\s*(?:图纸|资料|文件|装饰|土建|加固|给排水|电气|智能化|消防)|\d+\s*页/iu)?.[0];m&&b.push({level:"error",message:`正文残留资料页码元信息:${m}`,suggestion:"正式投标正文应引用招标文件、施工图设计文件、工程量清单和相关专业图纸,不写 PDF 页码或资料页数。"});let n=c.find(a=>/仅作为内部事实提取依据|正式正文不得引用文件名|后台事实|内部事实/u.test(a));return n&&b.push({level:"error",message:`正文残留内部处理说明:${n.slice(0,120)}`,suggestion:"正式投标正文不得出现内部事实抽取、后台处理或文件名引用限制说明。"}),b}function R(a){let b=[],c=a.split(e.A5),d=/。{2,}|[!?;:,、]{2,}|。[!?;:,、]|[!?;:,、]。/u;for(let a of c){let c=a.trim();if(!c||/^#{1,6}\s+/u.test(c)||/^\s*\|/u.test(c)||/^<div\b/iu.test(c))continue;let e=d.exec(c);if(e){let a=Math.max(0,e.index-24),d=`${c.slice(a,e.index)}【${e[0]}】${c.slice(e.index+e[0].length,e.index+e[0].length+24)}`;b.push({level:"error",severity:"blocker",category:"format",owner:"llm",repairability:"llm_repairable",message:`正文存在句读标点叠用(拼接/删节残留):${d}`,suggestion:"相邻句读标点(如「。;」「;。」「。。」)是删节拼接残留或省略号误写,请重写该句。"})}}for(let{open:d,close:e,label:f}of[{open:/(/gu,close:/)/gu,label:"全角括号"},{open:/《/gu,close:/》/gu,label:"书名号"}]){let g=(a.match(d)||[]).length,h=(a.match(e)||[]).length;if(g===h)continue;let i=c.find(a=>(a.match(d)||[]).length!==(a.match(e)||[]).length);b.push({level:"error",severity:"blocker",category:"format",owner:"llm",repairability:"llm_repairable",message:`正文存在${f}不闭合(开 ${g} 处、闭 ${h} 处,拼接/删节残留):${i?.trim().slice(0,120)??""}`,suggestion:`${f}成对性破坏是内容丢失拼接的确定性信号,请重写所在句子/小节,补齐或删除残缺部分。`})}return b}function S(a){let b=[];{let c=[...a.matchAll(/^#{2,4}\s+(.+)$/gmu)].map(a=>(a[1]||"").trim()).filter(a=>/[☑✓✔☐□☒○●◉◇◆]/u.test(a)).slice(0,6);c.length>0&&b.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:`小节标题残留复选框/选项符号(☑/✓ 等招标文件符号):“${c.join("”、“")}”`,suggestion:"删除标题中的复选框符号(☑✓✔☐□等);标题主体若属商务文件内容(如“电子保函”),整个小节删除,技术标不得出现商务条款小节。"})}let c=a.search(/^##\s+第[一二三四五六七八九十百千万\d]+章\s+/mu),d=[...(c>=0?a.slice(c):a.replace(/^##\s+目录[\s\S]*?(?=^##\s+第[一二三四五六七八九十百千万\d]+章\s+)/mu,"")).matchAll(/^##\s+(.+)$/gmu)].map(a=>(a[1]||"").trim()).filter(a=>"目录"!==a&&!/^第[一二三四五六七八九十百千万\d]+章\s+/u.test(a)&&!/^附录/u.test(a)).map(a=>(0,i.GQ)(a));d.length>0&&b.push({level:"error",message:`正文存在非正式章二级标题:${[...new Set(d)].slice(0,8).join("、")}`,suggestion:"正文 ## 只允许用于“第X章”正式章标题;章内小节必须使用 ### X.Y。"});let e=[...a.matchAll(/^##\s+(第[一二三四五六七八九十百千万\d]+章\s+.+)$/gmu)];for(let c=0;c<e.length;c+=1){let d=e[c].index||0,f=e[c+1]?.index??a.length,g=[...a.slice(d,f).matchAll(/^###\s+\d+\.\d+\s+(.+)$/gmu)].map(a=>(0,i.GQ)(a[1]||"")),h=(0,i.GQ)((e[c][1]||"").replace(/^第[一二三四五六七八九十百千万\d]+章\s*/u,""));1===g.length&&L(g[0])===L(h)&&b.push({level:"error",message:`章节只有一个且与章名同名的小节:${e[c][1]}`,suggestion:"应拆分为多个业务小节,不能用章标题重复作为唯一二级小节。"})}return b}function T(a){a=(0,j.BJ)(a);let b=[];{let c=a.split(e.A5);for(let a=1;a<c.length;a+=1){let d=(c[a]||"").trim(),f=(c[a-1]||"").trim();d&&!/^\|/u.test(d)&&d.endsWith("|")&&1===(d.match(/\|/gu)||[]).length&&!/^#{1,6}\s/u.test(d)&&e.w7.test(f)&&b.push({level:"error",message:`表格断行残片:${d}`,suggestion:"该行是表格数据行整列丢失的残片:合并回所属表格行并补齐缺失列,或删除该残行。"})}}/按审批确认执行/u.test(a)&&b.push({level:"error",message:"表格存在自动兜底污染内容:按审批确认执行",suggestion:"正式投标表格不得使用通用兜底短语,应保留真实业务内容或删除该行。"});let c=[];for(let b of a.matchAll(/\|\s*信息项\s*\|\s*内容\s*\|/gu)){let d=a.slice(b.index||0),f=[];for(let a of d.split(e.A5)){if(f.length>0&&!e.w7.test(a))break;f.push(a)}c.push(f.join("\n"))}let d=c.filter(a=>/项目名称|招标人|建设单位|发包人|建设地点|招标范围|计划工期|合同估算价|质量标准/u.test(a)).length;d>1&&b.push({level:"error",message:`项目基础信息类表格重复:${d} 处`,suggestion:"项目名称、招标人、建设地点、工期、质量等基础信息只能集中输出一次。"});let f=a.match(/^\|\s*---\s*\|\s*---\s*\|\s*$/gmu)||[];for(let c of(f.length>60&&b.push({level:"error",message:`表格分隔线异常重复:${f.length} 行`,suggestion:"请修复表格规范化逻辑,禁止把数据行拆成多个碎表。"}),F(a))){let a=c.split(e.A5).filter(a=>e.w7.test(a));if(a.length<2)continue;if(!e.N3.test(a[1]||"")){b.push({level:"error",message:`表格分隔线位置不规范:${a[0]||""}`,suggestion:"Markdown 表格必须紧跟表头输出分隔线,例如 |---|---|,中间不得插入正文或其他管道行。"});continue}let d=a.map(a=>a.trim().replace(/^\|/u,"").replace(/\|$/u,"").split(/(?<!\\)\|/u).map(a=>(0,k.jG)(a.trim()))),f=d[0]||[],g=f.filter(a=>/^(?:列|字段|内容|备注)\d+$/u.test(a));g.length>0&&b.push({level:"error",message:`表格存在泛化表头:${g.join("、")}`,suggestion:"正式投标表格必须使用业务字段表头,不得出现“列5/字段1/内容2”等临时表头。"});let h=f.length;d.find((a,b)=>1!==b&&a.length!==h)&&b.push({level:"error",message:`表格列数不一致:${f.join("、")}`,suggestion:"请统一表头和数据行列数;不应通过自动填充兜底词修补表格。"});let i=d.slice(2),j=i.find(a=>a.some(a=>""===a));j&&b.push({level:"error",message:`表格存在空单元格:${f.join("、")}(“${j[0]||""}”行)`,suggestion:"正式交付表格不得出现空单元格;缺失数据应从资料补齐或按业务口径填写具体值,不得留空。"});let l=i.find(a=>a.some((b,c)=>!(!/^(?:—+|-+|-|\/|N\/A|n\/a|待定|待补充|待确认|待查|待补|若干|暂无|无数据)$/u.test(b)&&!/^约\d/u.test(b)||/^(?:合计|小计|总计|累计)/u.test(a[0]||"")&&/^(?:—+|-+)$/u.test(b)&&c>0||/^(?:—+|-+)$/u.test(b)&&/规格型号|规格|型号/u.test(f[c]||""))));if(l){let a=/^(?:合计|小计|总计|累计)/u.test(l[0]||""),c=l.find((b,c)=>!(!/^(?:—+|-+|-|\/|N\/A|n\/a|待定|待补充|待确认|待查|待补|若干|暂无|无数据)$/u.test(b)&&!/^约\d/u.test(b)||a&&/^(?:—+|-+)$/u.test(b)&&c>0||/^(?:—+|-+)$/u.test(b)&&/规格型号|规格|型号/u.test(f[c]||"")))||"";b.push({level:"error",message:`表格存在占位符单元格:${f.join("、")}(“${l[0]||""}”行“${c}”)`,suggestion:"正式交付表格不得用“—/若干/约/待定”等占位或模糊表达代替具体数据;应从资料补齐具体数值。"})}}return b}function U(a,b){let c=function(a){let b=a.split(/\r?\n/u);for(let a=0;a<b.length;a+=1){let c=b[a].trim(),d=/^(#{2,4})\s+(.+)$/u.exec(c),e=d?null:/^\*\*(.+)\*\*$/u.exec(c);if(!d&&!e)continue;let f=d?d[2]:e?.[1]??"";if(!/编制依据|编制说明|编制原则|编制目的/u.test(f))continue;let g=d?d[1].length:0,h=[f];for(let c=a+1;c<b.length;c+=1){let a=/^(#{1,4})\s+(.+)$/u.exec(b[c].trim());if(a&&(0===g||a[1].length<=g))break;h.push(b[c])}return h.join("\n")}return""}(a);if(!c)return[];let d=[],e=(c.match(/《[^《》]{2,40}(?:法|条例|办法|规程|规范|标准)》/gu)||[]).map(a=>a.replace(/《|》/gu,""));e.some(a=>/法$/u.test(a))||d.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:"编制依据小节缺少国家法律法规条目",suggestion:"编制依据小节必须列出具体法律名称及文号(如《中华人民共和国建筑法》),不得空写「国家现行法律、行政法规」类别话术。"}),e.some(a=>/(?:条例|办法)$/u.test(a))||d.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:"编制依据小节缺少条例类条目",suggestion:"编制依据小节必须列出具体条例名称(如《建设工程质量管理条例》),不得以类别话术代替。"});let f=/《[^《》]{2,40}(?:规范|规程|标准)[^《》]{0,20}》/u.test(c),g=/(?:GB|CJJ|JGJ|JTG|SL|DB|DL|YS|HG)[\s/T]*[A-Z]?[\s/]?\d{2,4}/u.test(c);f||g||d.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:"编制依据小节缺少施工验收规范条目",suggestion:"编制依据必须包含与本工程分部对应的现行施工验收规范名称及编号(如《给水排水管道工程施工及验收规范》(GB 50268-2008))。"});let h=[...(b?.project.location||"").matchAll(/([\u4e00-\u9fa5]{2,10}?[省市])/gu)].map(a=>a[1]);if(h.length>0&&(h.some(a=>e.some(b=>b.startsWith(a)||b.includes(a)))||d.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`编制依据小节缺少${h[0]}地方性法规、条例`,suggestion:`编制依据必须列出工程所在地(${h.join("、")})现行地方性法规及条例名称。`})),b&&b.basisRegulations.length>0){let a=b.basisRegulations.filter(a=>!e.includes((a.match(/《([^》]+)》/u)||[])[1]||""));a.length===b.basisRegulations.length&&d.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`编制依据小节未列招标文件引用法规:${a.slice(0,3).map(a=>a.replace(/(.*/u,"")).join("、")}`,suggestion:"招标文件引用的法规必须照抄进编制依据小节。"})}return d}function V(a,b){let c=(0,l.re)(b);if(!c)return[];let d=[],e=new Set;for(let b of(0,l._H)(a,c))e.has(b.label)||(e.add(b.label),d.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:b.message,suggestion:b.suggestion}));return d}function W(a){let b=[],c=a.split(e.A5),d=[];for(let a=0;a<c.length;a+=1){if(!e.w7.test(c[a]))continue;let b=a,f=[];for(;a<c.length&&e.w7.test(c[a]);)f.push(c[a]),a+=1;a-=1;let g=f.filter(a=>e.N3.test(a)).length;if(0===g)continue;let h=(f[0]||"").trim(),i=h.startsWith("|")?h.slice(1):h,j=(i.endsWith("|")?i.slice(0,-1):i).split("|").map(a=>a.split("**").join("").trim()).filter(a=>a.length>0);d.push({headerKey:j.join("|"),headerText:j.join("、"),start:b,end:a,dividerCount:g})}let f=new Map;for(let a of d)f.set(a.headerKey,(f.get(a.headerKey)||0)+1);let g=[...f.entries()].filter(([,a])=>a>=3);if(g.length>0){let a=d.find(a=>f.get(a.headerKey)===g[0]?.[1])?.headerText||"";b.push({level:"error",severity:"blocker",category:"table",owner:"llm",repairability:"llm_repairable",message:`同主题表格重复堆叠:${g.length} 组相同表头出现 3 次及以上(如:${a})`,suggestion:"同一主题表格全文只出现一次,禁止拆成多张碎表重复堆叠凑数;请合并同类表格或删除重复内容。相同表头分别用于不同主题时,必须在表头列名中加主题限定词(如「进度关键节点/质量关键节点/安全关键节点」)以区分口径。"})}let h=0;for(let a=1;a<d.length;a+=1){let b=d[a-1],e=d[a];b&&e&&c.slice(b.end+1,e.start).every(a=>""===a.trim())&&(h+=1)}for(let a of d)a.dividerCount>=2&&(h+=a.dividerCount-1);return h>=2&&b.push({level:"warning",category:"table",message:`表格连续堆叠:${h} 处相邻表格无正文分隔`,suggestion:"表格之间应有正文引导叙述,禁止连续堆叠多张表格凑数。"}),b}function X(a){return a.split(e.A5).filter(a=>!/^#{1,6}\s+/u.test(a.trim())).filter(a=>!/^\s*\|/u.test(a)).filter(a=>!/^\s*:?-{3,}:?/u.test(a)).filter(a=>!/^<\/?div\b/iu.test(a.trim())).join("\n").replace(/[|*_`<>-]/gu,"").replace(e.ug,"").length}function Y(a){let b=[...a.matchAll(/^(#{3,4})\s+(.+)$/gmu)];return b.map((c,d)=>{let e=c[1].length,f=(c.index||0)+c[0].length,g=b.slice(d+1).find(a=>a[1].length<=e),h=g?.index??a.length,i=(c[2]||"").trim();return{rawTitle:i,title:L(i),level:e,body:a.slice(f,h)}}).filter(a=>a.title&&(3===a.level||4===a.level))}function Z(a,b,c,d,f){let g=X(d),h=e.w7.test(d)&&d.split(e.A5).some(a=>e.N3.test(a)),i=X(d.split("\n").filter(a=>!e.w7.test(a)&&!e.N3.test(a)).join("\n").replace(/^#{1,6}\s+.+$/gmu,""));if(/\[WRITER_MISSING_SECTION\]|Writer 未完成/u.test(d))return{chapterTitle:a,sectionTitle:b,level:c,bodyLength:g,reason:"empty",planned:f,message:`${a} 小节内容补写未完成:${b}`};if(/【本小节生成未达标,需重新生成】/u.test(d))return{chapterTitle:a,sectionTitle:b,level:c,bodyLength:g,reason:"empty",planned:f,message:`${a} 小节生成未达标:${b}`};if(/项目基本信息|基本信息|工程概况|项目概况|工程概述|项目概述/u.test(b)&&(h||g>=40)||/^附录[一二三四五六七八九十A-Z\d]/u.test(b)&&h)return;let j=/清单|配置|汇总|一览|明细|计划|进度|节点|安排/u.test(b)||/表[^,。;:\s]{0,6}$/u.test(b);if(!(h&&j&&Math.max(0,d.split(e.A5).filter(a=>e.w7.test(a)&&!e.N3.test(a)).length-1)>=2)){if(h&&i<20)return{chapterTitle:a,sectionTitle:b,level:c,bodyLength:g,reason:"empty",planned:f,message:f?`${a} 只有标题或表格无正文:${b}`:`${a} 小节只有标题或表格无正文:${b}`};if(!(g>=80)||!(i>=20)){if(0===g)return{chapterTitle:a,sectionTitle:b,level:c,bodyLength:g,reason:"empty",planned:f,message:`${a} 空小节:${b}`};if(g<180)return{chapterTitle:a,sectionTitle:b,level:c,bodyLength:g,reason:"too_short",planned:f,message:`${a} ${f?"规划小节":"正文小节"}正文过短:${b}`}}}}function $(a,b){let c=[],d=new Set;for(let e of b){let b=e.content?.trim()?e.content:a;for(let a of(e.sections||[]).filter(a=>!(0,p.cq)(a)&&!(q.gG.test(e.title)&&o.V.test(a.trim()))&&!/^附录/u.test(a.trim()))){let f=L(a),g=function(a,b){let c=Y(a).filter(a=>(function(a,b){let c=L(a),d=L(b);if(!c||!d)return!1;if(c===d||c.includes(d)||d.includes(c))return!0;let e=/项目概况|主要施工方案|新技术新材料|工程重点难点|重点难点|危大工程|保障体系|安全保障|工期|质量|安全生产|应急预案|资源|人材机|材料|机械|劳动力|进度|关键线路|交通疏导|成品保护|深化设计|验收/gu,f=new Set(c.match(e)||[]),g=new Set(d.match(e)||[]),h=[...f].filter(a=>g.has(a)).length;return h>=2||1===Math.min(f.size,g.size)&&1===h&&16>=Math.max(c.length,d.length)})(a.rawTitle,b));return c.length<=1?c[0]:c.map(a=>({item:a,gap:Z("",b,a.level,a.body,!0),textLength:X(a.body)})).sort((a,b)=>{let c=a.gap&&"empty"===a.gap.reason?1:0,d=b.gap&&"empty"===b.gap.reason?1:0;return c!==d?c-d:b.textLength-a.textLength})[0]?.item}(b,a),h=`${e.title}|${f}|planned`;if(!g){c.push({chapterTitle:e.title,sectionTitle:a,level:3,bodyLength:0,reason:"missing_planned_section",planned:!0,message:`${e.title} 缺少规划小节:${a}`}),d.add(h);continue}let i=Z(e.title,a,g.level,g.body,!0);i&&c.push(i),d.add(h)}for(let a of Y(b)){let b=`${e.title}|${a.title}|actual`,f=`${e.title}|${a.title}|planned`;if(d.has(b)||d.has(f))continue;let g=Z(e.title,a.title,a.level,a.body,!1);g&&"empty"===g.reason&&c.push(g),d.add(b)}}return c}function _(a,b){return $(a,b).filter(a=>"empty"===a.reason||"missing_planned_section"===a.reason).map(a=>({level:"error",category:"structure",message:a.message,suggestion:"missing_planned_section"===a.reason?"必须补充该规划小节正式正文,不得缺节导出。":"必须补充与该小节相关的材料事实和必要内容,达到正文完整度要求。"}))}function aa(a){let b=[];for(let c of a){if(!c.content?.trim())continue;let a=a=>{let b=String(a||"").trim();return!b||(0,p.cq)(b)||/^附录/u.test(b)||q.gG.test(c.title)&&o.V.test(b)},d=(c.sections||[]).filter(b=>!a(b));if(0===d.length)continue;let e=(0,j.r4)(c.content).filter(b=>!a(b));if(e.length<=d.length)continue;let f=new Set(d.map(a=>L(a))),g=e.filter(a=>!f.has(L(a)));b.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",chapterId:c.id,message:`成稿小节超出主题块数:「${c.title}」成稿 ${e.length} 个小节、规划主题块 ${d.length} 个${g.length?`;规划外小节:${g.slice(0,5).join("、")}`:""}`,suggestion:"成稿 H3 小节必须与规划主题块一一对应(拆半块合并为一个小节):规划外小节属相邻主题块内容时并入归属小节并降为 H4,无归属时整节删除;修复后小节编号按正文顺序自动重排。"})}return b}function ab(a){return`${a.fieldName||a.key} ${(0,o.lG)(a.value)}`.replace(/\s+/gu," ").trim()}function ac(a){let b=new Set;for(let c of[/\d+\s*日历天(?!内)/gu,/(?:计划工期|合同工期|总工期|工期|施工周期)[^\n。;;]{0,12}\d+\s*天/gu,/(?:计划工期|合同工期|总工期|工期|施工周期)[^\n。;;]{0,12}\d+\s*(?:个月|月)/gu])for(let d of a.matchAll(c)){let a=d[0].match(/\d+\s*(?:日历天|天|个月|月)/u)?.[0]?.replace(/\s+/gu,"");a&&b.add(a)}return[...b]}let ad=/占地|用地|地下|地上|办公|生活|附属|辅助|绿化|道路|广场|门卫|配电|泵房|锅炉房|车库|车棚|岗亭|传达|警卫|样板房|售楼|门房|单栋|各栋|楼层|每层|单层|架空|雨棚|堆场/u,ae=/办公区|生活区|加工区|施工区|堆场|门卫|配电|泵房|锅炉房|车库|车棚|岗亭|传达|警卫|样板房|售楼|门房|地下室|楼层|单层|每层|架空|雨棚/u,af=/暂列|暂估|费率|税率|利润|规费|安全文明|措施费|人工费|材料费|机械费|管理费|暂定/u,ag=["地下建筑面积与地上建筑面积的分项指标","配套用房与附属用房的建筑面积","占地面积与绿化面积的用地指标"],ah=["总建筑面积的总体规模指标","建设规模的总量数值"],ai=["暂列金额与暂估价的子项费用","人工费与材料费的分项费用"],aj=["合同估算价的总金额口径","投资估算的总体金额"];async function ak(a){return(0,s.A)({prototypes:[...ag],negativePrototypes:[...ah],embedDocuments:a})}async function al(a){return(0,s.A)({prototypes:[...ai],negativePrototypes:[...aj],embedDocuments:a})}async function am(a,b,c,d,e,f){let g=[],h=[],i=new Set,j=RegExp(`(?:${b.source})(?:[^\\n。;;,,]{0,14}?)(\\d{2,}(?:[.,]\\d+)?\\s*万?)\\s*(${c.source})`,"giu"),k=[...a.matchAll(j)],l=f?k.filter(b=>{let c=b[0].slice(0,b[0].indexOf(b[1])),f=a.slice(Math.max(0,(b.index??0)-16),b.index??0);return!(d&&d.test(c)||e&&e.test(f))}).map(b=>{let c=b[0].slice(0,b[0].indexOf(b[1])),d=a.slice(Math.max(0,(b.index??0)-16),b.index??0);return{index:b.index??0,context:`${d}${c}`.replace(/\s+/gu,"").slice(-24)}}):[],m=l.length>0?await f(l.map(a=>a.context)):[],n=new Set(l.filter((a,b)=>m[b]).map(a=>a.index));for(let c of k){let f=c[1].replace(/[,,]/gu,"").replace(/\s+/gu,""),j=c[2],k=c[0].slice(0,c[0].indexOf(c[1])),l=a.slice(Math.max(0,(c.index??0)-16),c.index??0);if(d&&d.test(k)||e&&e.test(l)||n.has(c.index??0)){h.push({value:f,unit:j,scope:c[0].slice(0,k.length).replace(/\s+/gu,""),context:`${l}${k}`.replace(/\s+/gu,"").slice(-24)});continue}let m=c[0].match(b)?.[0]||"",o=`${f}|${j}`;!f||i.has(o)||(i.add(o),g.push({value:f,unit:j,scope:m}))}return{entries:g,skipped:h}}function an(a,b){return am(a,ap,aq,ad,ae,b).then(({entries:b})=>{let c=b.find(a=>"建筑面积"===a.scope.replace(/^总/u,""));return/占地|用地/u.test(a)?c:b[0]})}function ao(a){let b=a.value.replace(/[,,]/gu,"").trim(),c=/^([\d.]+)万/u.exec(b),d=c?1e4*Number(c[1]):Number(b);return Number.isFinite(d)?/亿元/u.test(a.unit)?1e8*d:/万元/u.test(a.unit)?1e4*d:d:NaN}let ap=/(?<![地上地下门卫室值班室配电室配电房泵房水泵房锅炉房公厕车库车棚岗亭传达室警卫室样板房售楼处门房])总?建筑面积|总?建设规模/u,aq=/㎡|m²|m2|平方米/u,ar=/合同估算价|合同估算价格|投资估算|最高投标限价|招标控制价|工程总投资|总投资|工程造价/u,as=/万元|亿元/u;async function at(a,b,c,d,e){let f=[],g=await ak(e),h=await al(e),i=a=>c?.find(b=>b.kind===a&&b.resolution&&"low"!==b.confidence)?.resolution,j=a=>{let b=/(\d+(?:\.\d+)?)\s*(㎡|m²|m2|平方米|万元|亿元)/u.exec(a);return b?{value:b[1],unit:b[2]}:void 0},k=i("duration")??b.schedule.map(ab).find(a=>/\d+\s*(?:日历天|天|个月|月)|计划工期|合同工期/u.test(a)),l=b.quality.map(ab).find(a=>/质量|合格|优良/u.test(a));if(k){let b=ac(k)[0],c=a.split("\n").filter(a=>!/^\s*\|/u.test(a.trim())).join("\n"),d=[];for(let a of c.matchAll(/(?:计划工期|合同工期|总工期|工期|施工周期)[^\d。;;\n|]{0,18}(\d{1,4})\s*日历天/gu)){let e=c.slice(Math.max(0,(a.index||0)-8),a.index||0)+a[0];if(/顺延|延长|展期|不超过|不大于|最多|累计|第\d+日/u.test(e)||/基坑|支护|桩基|土方|基础|主体|装饰|装修|安装|室外|分项|分阶段|阶段|关键线路|单层|每层|地下室|砌体|二次结构|收尾|调试/u.test(e))continue;let f=`${a[1]}日历天`;f===b||d.includes(f)||d.push(f)}b&&d.length>=1&&f.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`跨章一致性冲突:正文出现与资料工期不一致的表述 ${d.slice(0,6).join("、")}`,suggestion:`请统一使用资料中的工期口径:${k}`})}l&&!/质量标准|质量目标|合格|优良/u.test(a)&&(d&&[...d.values()].some(a=>a.contentNeeds.quality)||f.push({level:"error",message:"跨章一致性缺口:正文未稳定体现资料中的质量目标",suggestion:`请在工程概况、质量保证和验收相关章节统一体现:${l}`}));let m=i("area"),n=b.project.map(ab).filter(a=>/建设规模|建筑面积/u.test(a)),o=await Promise.all(n.map(a=>an(a,g))),p=m??n.find((a,b)=>void 0!==o[b]);if(p){let c=m?j(m):await an(p,g),{entries:d,skipped:e}=await am(a,ap,aq,ad,ae,g);if(c){let a=d.filter(a=>ao(a)!==ao(c));a.length>=1&&f.push({level:"error",message:`跨章一致性冲突:正文出现与资料建设规模不一致的表述 ${a.slice(0,6).map(a=>`${a.value}${a.unit}`).join("、")}`,suggestion:`请统一使用资料中的建设规模口径:${p.slice(0,80)}`})}if(e.length>0){let a=[m?`建筑总量裁决值:${m}`:"",...b.project.map(ab).filter(a=>/建设规模|建筑面积|占地/u.test(a)).slice(0,3)].filter(Boolean);f.push({level:"warning",severity:"warning",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`规模口径复核:正文 ${e.slice(0,3).map(a=>`“${a.context.slice(-14)}${a.value}${a.unit}”`).join("、")} 等 ${e.length} 处数值与口径词之间混入子项/专项口径词,需核对口径归属`,suggestion:`依据项目规模事实卡逐处核对该数值的口径归属(${a.join(";")||"无可用事实卡,以绑定资料原文为准"}):与事实卡对应口径一致的数值保留原样,口径错位或数值不一致的数值改正为事实卡对应口径值,不得把子项/专项口径数值改成建筑总量数值。`})}}let q=i("cost"),r=q??b.project.map(ab).find(a=>/合同估算|投资估算|最高投标限价|招标控制价|总投资|工程造价/u.test(a));if(r){let b=q?j(q):(await am(r,ar,as,af,void 0,h)).entries[0],c=(await am(a,ar,as,af,void 0,h)).entries;if(b){let a=c.filter(a=>ao(a)!==ao(b));a.length>=1&&f.push({level:"error",message:`跨章一致性冲突:正文出现与资料估算价不一致的表述 ${a.slice(0,6).map(a=>`${a.value}${a.unit}`).join("、")}`,suggestion:`请统一使用资料中的估算价口径:${r.slice(0,80)}`})}}let s=new Map;for(let b of a.matchAll(RegExp(`(${/挖掘机|压路机|自卸车|蛙夯|搅拌车|洒水车|高空车/u.source})[^\\d。;;\\n|、,]{0,12}(\\d+)\\s*[台辆]`,"gu"))){let c=b[1],d=b[2],e=a.slice(Math.max(0,(b.index||0)-20),b.index||0),f=/组|本组|每组|村/u.test(e)?`${c}@group`:c,g=s.get(f)||[];g.includes(d)||g.push(d),s.set(f,g)}for(let[a,b]of s){if(b.length<2)continue;let c=a.endsWith("@group"),d=a.replace(/@group$/u,""),e=b.join("、");c?f.push({level:"warning",severity:"warning",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`设备分组口径提示:正文「${d}」存在分组配置台数 ${e} 多值并存,需注明分组与全项目总量的调度关系`,suggestion:`分组配置(组/村级)与全项目总量并存时,必须在正文注明「本组配置、按总表调度」或明确分组数量与总量数量之间的对应关系,避免评标误读为口径矛盾。`}):f.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`跨章一致性冲突:正文「${d}」配置台数出现互相矛盾的取值 ${e}`,suggestion:`全项目「${d}」配置总量必须全文唯一:以全项目机械配置总表为准统一全部表述;分组配置必须显式注明「本组配置、按总表调度」并删除与总表矛盾的全项目口径数字。`})}for(let{label:b,re:c,contextAware:d}of[{label:"隔油池数量",re:/隔油池[^\d。;;\n|::,,、]{0,6}(\d+)\s*座/gu},{label:"挖沟槽土方",re:/挖沟槽[^\d。;;\n|]{0,15}([\d,]+(?:\.\d+)?)\s*m[³3]/gu,contextAware:!0}]){let e=[];for(let b of a.matchAll(c)){let c=b[1].replace(/,/gu,"");e.some(a=>a.value===c)||e.push({value:c,context:a.slice(Math.max(0,(b.index||0)-24),b.index||0)})}if(e.length>=2){if(d&&e.every((a,b)=>e.slice(b+1).every(b=>6>(0,t.qr)(a.context,b.context))))continue;let a=e.map(a=>a.value).join("、");f.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`跨章一致性冲突:正文${b}出现互相矛盾的取值 ${a}`,suggestion:`${b}必须全文唯一:以工程量清单为最高优先级裁定正确值,将正文全部相关表述统一为该值,并删除其余矛盾口径。`})}}if(k){let b=ac(k)[0],c=Number(/(\d+)\s*(?:日历天|天)/u.exec(b||"")?.[1]);for(let b of a.matchAll(/各阶段工期(?:分别)?为?\s*[::]?\s*([\d]+(?:\s*[、,,]?\s*\d+)*)\s*(?:天|日历天)/gu)){let a=b[1].split(/[、,,]/u).map(a=>Number(a.trim())).filter(a=>Number.isFinite(a)).reduce((a,b)=>a+b,0);Number.isFinite(c)&&a>0&&a!==c&&f.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`跨章一致性冲突:正文各阶段工期文字表述(${b[1]}天)合计 ${a} 天,与总工期 ${c} 天不符`,suggestion:`各阶段工期加总必须等于总工期 ${c} 天:核对各阶段天数并修正文字表述,或与阶段计划表保持一致。`})}}for(let b of a.matchAll(/每间(?:可)?容纳\s*(\d+)\s*人/gu)){let a=Number(b[1]);a>=100&&f.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`逻辑校验失败:正文出现「每间容纳 ${a} 人」的宿舍配置表述,单间宿舍不可能容纳 100 人以上`,suggestion:`宿舍容纳人数按单间 4~8 人配置计算间数(如高峰 216 人按每间 8 人需 27 间),修正配置表述为「每间 X 人、共 Y 间,满足高峰在场人数」的完整口径。`})}for(let b of a.matchAll(/第(\d+)\s*日\s*[~~—至到]\s*第(\d+)\s*日/gu))b[1]===b[2]&&f.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`逻辑校验失败:正文出现「第 ${b[1]} 日~第 ${b[2]} 日」的零长度区间表述`,suggestion:`起止日相同的区间属笔误:按该事项所属施工阶段的实际起止日修正(如进场时间应为阶段开始前)。`});return f}let au=/找平层|抹灰层|防水层|保温层|结合层|垫层|面层|粘结层|隔热层|隔离层/gu,av=/铺设|施工|浇筑|粘贴|铺贴|涂抹|完成|进行|待|设置|铺装|挂网|喷涂|灌注/u,aw=["施工过程与工序动作的先后描述","铺设浇筑完成后再进行的工序"],ax=["结构层的厚度与配比参数","找平层厚20毫米的规格"];async function ay(a){return(0,s.A)({prototypes:[...aw],negativePrototypes:[...ax],embedDocuments:a})}async function az(a,b){let c=[],d=[...a.matchAll(au)],e=[],f=(a,b)=>e.some(([c,d])=>a<d&&b>c),g=[],h=(a,d,h,i,j,k)=>{let l=[...a.matchAll(h)];for(let h of"first"===i?l:[...l].reverse()){let l=d+(h.index??0),m=l+h[0].length;if(f(l,m))continue;let n="first"===i?a.slice(0,h.index??0):a.slice((h.index??0)+h[0].length);if(!av.test(n)){if("thickness"===k){let a=Number(h[1]??"");if(!Number.isFinite(a)||a<=0||a>=1e3)continue}b&&n.trim()&&g.push({key:`${j}|${l}|${m}`,gap:n}),e.push([l,m]),c.push({layer:j,span:[l,m],raw:h[0],kind:k});return}}};for(let b=0;b<d.length;b+=1){let c=d[b],e=c[0],f=c.index??0,g=f+e.length,i=d[b+1]?.index,j=void 0===i?Math.min(a.length,g+90):i,k=a.slice(g,j),l=b>0?(d[b-1].index??0)+d[b-1][0].length:Math.max(0,f-40),m=a.slice(l,f);h(k,g,/(\d+:\d+(?:\.\d+)?)/gu,"first",e,"ratio"),h(m,l,/(\d+:\d+(?:\.\d+)?)/gu,"last",e,"ratio"),h(k,g,/(\d+(?:\.\d+)?)\s*mm/gu,"first",e,"thickness"),h(m,l,/(\d+(?:\.\d+)?)\s*mm/gu,"last",e,"thickness")}if(b&&g.length>0){let a=await b(g.map(a=>a.gap)),d=new Set(g.filter((b,c)=>a[c]).map(a=>a.key));return c.filter(a=>!d.has(`${a.layer}|${a.span[0]}|${a.span[1]}`))}return c}async function aA(a,b){let c=[],d=new Set;for(let e of(await az(a,b))){let a="ratio"===e.kind?e.raw.match(/(\d+:\d+(?:\.\d+)?)/u)?.[1]:void 0,b="thickness"===e.kind?e.raw.match(/(\d+(?:\.\d+)?)/u)?.[1]:void 0,f=b?Number(b):void 0,g=`${e.layer}|${a||""}|${f??""}`;d.has(g)||(d.add(g),c.push({layer:e.layer,ratio:a,thickness:f}))}return c}async function aB(a,b,c){let d=[],e=await ay(c),f=[...b.specifications,...b.quality,...b.preciseFacts,...b.bills].map(ab).join("\n"),g=await aA(f,e);if(0===g.length)return d;let h=new Map;for(let a of g){let b=h.get(a.layer)||[];b.push(a),h.set(a.layer,b)}let i=await aA(a,e),j=new Set;for(let[a,b]of h){let c=[...new Set(b.map(a=>a.ratio).filter(Boolean))],e=[...new Set(b.map(a=>a.thickness).filter(a=>Number.isFinite(a)))];for(let b of i.filter(b=>b.layer===a)){if(1===c.length&&b.ratio&&b.ratio!==c[0]){let e=`ratio|${a}|${b.ratio}`;j.has(e)||(j.add(e),d.push({level:"error",message:`工序规格冲突:正文${a}配比 ${b.ratio} 与资料口径 ${c[0]} 不一致`,suggestion:`请将${a}配比统一为资料口径 ${c[0]},禁止改写资料规格。`}))}if(1===e.length&&Number.isFinite(b.thickness)&&b.thickness!==e[0]){let c=`thickness|${a}|${b.thickness}`;j.has(c)||(j.add(c),d.push({level:"error",message:`工序规格冲突:正文${a}厚度 ${b.thickness}mm 与资料口径 ${e[0]}mm 不一致`,suggestion:`请将${a}厚度统一为资料口径 ${e[0]}mm。`}))}}}return d}async function aC(a,b,c){let d=await ak(c),e=await al(c),f=await ay(c),g=[...a.specifications,...a.quality,...a.preciseFacts,...a.bills].map(ab).join("\n"),h=new Map;for(let a of(await aA(g,f))){let b=h.get(a.layer)||{ratios:[],thicknesses:[]};a.ratio&&!b.ratios.includes(a.ratio)&&b.ratios.push(a.ratio),Number.isFinite(a.thickness)&&!b.thicknesses.includes(a.thickness)&&b.thicknesses.push(a.thickness),h.set(a.layer,b)}let i=new Map;for(let[a,b]of h)(1===b.ratios.length||1===b.thicknesses.length)&&i.set(a,{ratio:1===b.ratios.length?b.ratios[0]:void 0,thickness:1===b.thicknesses.length?b.thicknesses[0]:void 0});let j=a=>b?.find(b=>b.kind===a&&b.resolution&&"low"!==b.confidence)?.resolution,k=a=>{let b=/(\d+(?:\.\d+)?)\s*(㎡|m²|m2|平方米|万元|亿元)/u.exec(a);return b?{value:b[1],unit:b[2]}:void 0},l=j("area"),m=a.project.map(ab).filter(a=>/建设规模|建筑面积/u.test(a)),n=await Promise.all(m.map(a=>an(a,d))),o=l??m.find((a,b)=>void 0!==n[b]),p=j("cost"),q=p??a.project.map(ab).find(a=>/合同估算|投资估算|最高投标限价|招标控制价|总投资|工程造价/u.test(a));return{specTargets:i,scaleTarget:o?l?k(l):await an(o,d):void 0,costTarget:q?p?k(p):(await am(q,ar,as,af,void 0,e)).entries[0]:void 0,scaleGapGate:d,costGapGate:e,actionGate:f}}async function aD(a,b){let c=[];for(let d of(await az(a,b.actionGate))){let a=b.specTargets.get(d.layer);if(a){if("ratio"===d.kind&&a.ratio){let b=d.raw.match(/(\d+:\d+(?:\.\d+)?)/u)?.[1];b&&b!==a.ratio&&c.push({start:d.span[0],end:d.span[1],replacement:d.raw.replace(/(\d+:\d+(?:\.\d+)?)/u,a.ratio),detail:`${d.layer}配比 ${b}→${a.ratio}`})}if("thickness"===d.kind&&Number.isFinite(a.thickness)){let b=Number(d.raw.match(/(\d+(?:\.\d+)?)/u)?.[1]);Number.isFinite(b)&&b!==a.thickness&&c.push({start:d.span[0],end:d.span[1],replacement:d.raw.replace(/(\d+(?:\.\d+)?)/u,String(a.thickness)),detail:`${d.layer}厚度 ${b}mm→${a.thickness}mm`})}}}let d=async(b,d,e,f,g,h,i)=>{if(!b)return;let j=RegExp(`(?:${d.source})(?:[^\\n。;;,,]{0,14}?)(\\d{2,}(?:[.,]\\d+)?\\s*万?)\\s*(${e.source})`,"giu"),k=[...a.matchAll(j)],l=i?k.filter(b=>{let c=b[0].slice(0,b[0].indexOf(b[1])),d=a.slice(Math.max(0,(b.index??0)-16),b.index??0);return!(g&&g.test(c)||h&&h.test(d))}).map(b=>{let c=b[0].slice(0,b[0].indexOf(b[1])),d=a.slice(Math.max(0,(b.index??0)-16),b.index??0);return{index:b.index??0,context:`${d}${c}`.replace(/\s+/gu,"").slice(-24)}}):[],m=l.length>0?await i(l.map(a=>a.context)):[],n=new Set(l.filter((a,b)=>m[b]).map(a=>a.index));for(let d of k){let e=d[0].slice(0,d[0].indexOf(d[1])),i=a.slice(Math.max(0,(d.index??0)-16),d.index??0);if(g&&g.test(e)||h&&h.test(i)||n.has(d.index??0))continue;let j={value:d[1].replace(/[,,]/gu,"").replace(/\s+/gu,""),unit:d[2]};if(ao(j)===ao(b))continue;let k=(d.index??0)+d[0].indexOf(d[1]),l=k+d[1].length;c.some(a=>a.start<l&&a.end>k)||c.push({start:k,end:l,replacement:b.value,detail:`${f} ${j.value}${j.unit}→${b.value}${j.unit}`})}};if(await d(b.scaleTarget,ap,aq,"建设规模",ad,ae,b.scaleGapGate),await d(b.costTarget,ar,as,"估算价",af,void 0,b.costGapGate),0===c.length)return{content:a,fixedCount:0,details:[]};c.sort((a,b)=>b.start-a.start);let e=a;for(let a of c)e=e.slice(0,a.start)+a.replacement+e.slice(a.end);return{content:e,fixedCount:c.length,details:c.map(a=>a.detail)}}async function aE(a,b,c,d){let e=await aC(b,c,d);if(0===e.specTargets.size&&!e.scaleTarget&&!e.costTarget)return{fixedCount:0,details:[]};let f=0,g=[];for(let b of a){let a=await aD(b.content,e);a.fixedCount>0&&(b.content=a.content,f+=a.fixedCount,g.push(...a.details))}return{fixedCount:f,details:g}}async function aF(a,b,c,d){let e=await aC(b,c,d);if(0===e.specTargets.size&&!e.scaleTarget&&!e.costTarget)return{markdown:a,fixedCount:0,details:[]};let f=await aD(a,e);return{markdown:f.content,fixedCount:f.fixedCount,details:f.details}}async function aG(a){let{closedLoopBlocks:b}=await (0,r.Pm)(a),c=Math.max(6,Math.ceil((0,g.V7)(a)/1500));return b>=c?[]:[{level:"warning",message:`可落地性闭环句式密度不足:全文 ${b} 段完整闭环句式,未达每 1500 字 1 段(目标 ${c} 段)`,suggestion:"在措施类段落中补齐“责任岗位 + 检查频次 + 整改闭环”三要素齐全的闭环句式:同一自然段内同时出现岗位(如项目经理/质检员/安全员)、频次(每日/每周/不少于X次)与闭环(整改/复查/销项)。"}]}function aH(a,b){let c=[],d=/(?:三检制|三级教育|三级管理|5S|24\s*小时|每日|每周|每月|一次|两次)/gu;for(let e of a){let a=[...new Set(e.content.match(d)||[])];if(a.length<3)continue;let f=b?.get(e.title);f&&(f.closedLoop||c.push({level:"warning",message:`${e.title} 管理措施数字较多但缺少执行闭环:${a.slice(0,8).join("、")}`,suggestion:"这些管理数字可以保留,但需要补充责任主体、检查频次、记录台账、整改复查和闭环要求。"}))}return c}function aI(a,b){let c=/(?:加强组织领导|严格执行规范|落实责任制度|确保工程质量|强化过程管理|提高思想认识|完善管理体系|形成闭环管理)/gu,d=[];for(let e of a){if((e.content.match(c)||[]).length<6)continue;let a=b?.get(e.title);a&&(a.concrete||d.push({level:"error",message:`${e.title} 存在较多未绑定项目事实和工序控制点的泛化套话`,suggestion:"请替换为结合资料事实、施工对象、工序控制、验收资料和整改闭环的专业内容。",chapterId:e.id}))}return d}function aJ(a){return[[...a.project,...a.schedule,...a.quality,...a.safety,...a.resources,...a.preciseFacts,...a.bills,...a.drawings,...a.rules,...a.specifications].map(ab).join("\n"),...a.tables.flatMap(a=>[...a.headers,...a.rows.flat()])].join("\n")}function aK(a,b,c){let d=`${a} ${b}`;if(/(?:工日|人日|次|台|套|个|人|层|间|批|项|处|座|栋|根|只|组|件|块|片|面|条|道|樘|扇|盏|节|段)$/u.test(a)||/三检制|三级|5S|24\s*小时|每日|每周|每月|一次|两次|责任制|制度/u.test(d)||/暂列金额|暂估价|报价|单价|合价|综合单价|税率|增值税|预留金/u.test(d)||/^\d+(?:\.\d+)?(?:月|年)$/u.test(a)&&/开工|竣工|日期|计划|年|月/u.test(b))return"soft";let e=c??b;return/(?:天|工作天|月|年)$/u.test(a)&&/总工期|计划工期|合同工期|日历天|施工周期/u.test(e)&&!/阶段|历时|用时|合计|总计|共计|累计|预留|机动|余量|剩余|养护|编制|提交|签订|划分|闭合|控制基准|持续时间|关键|节点/u.test(`${e}${b}`)||/(?:万元|亿元|元)$/u.test(a)&&/最高投标限价|招标控制价|合同估算价|投资估算|报价|金额|人民币/u.test(e)||/(?:m2|hm2|亩|㎡|m²|平方米)$/u.test(a)&&/建设规模|总建筑面积|总用地面积|总占地面积/u.test(e)?"scope":/(?:工程量|清单|建设规模|建筑面积|长度|材料|设备|规格|型号).{0,24}(?:m²|㎡|m3|m³|米|吨|套|台|个|项|%)/u.test(d)?"spec":/GB\s*\d|JGJ\s*\d|CJJ\s*\d|ISO\s*\d|GB\/T|CECS\s*\d|DL\s*\d|YB\s*\d|SH\s*\d|SJ\/T\s*\d|CJJ\/T\s*\d|DB\s*\d/u.test(d)?"soft":/标准|规范|编号/u.test(d)?"spec":"soft"}function aL(a){let b=[];for(let c of(0,h.zn)(a)){if(/^\d+\.\d+$/u.test(c))continue;let d=(0,h.K3)(c),e=a.indexOf(c);if(e<0){let b=/^\d+(?:\.\d+)?/u.exec(c)?.[0];e=b?a.indexOf(b):-1}if(e<0)continue;let f=a.lastIndexOf("\n",e-1)+1,g=a.indexOf("\n",e),i=a.slice(f,g<0?a.length:g);if(/^\s*\|/u.test(i.trim()))continue;let j=a.slice(Math.max(0,e-36),Math.min(a.length,e+c.length+36));if(/违约金|延期竣工|解除合同|缺陷责任期|质量保证金|质保金|履约保证金|保修期/u.test(j))continue;let k=a.slice(Math.max(0,e-16),e);/(?:阶段|缓冲|累计)\s*\d*$/u.test(k)||b.push({token:c,normalizedToken:d,context:j,prefix:k})}return b}function aM(a){let{markdown:b,factsModel:c,scopeSuspicious:d,specSuspicious:e,softSuspicious:f}=a,g=[],h=[...new Set(d)],i=[...new Set(e)],j=[...new Set(f)];return h.length>=1&&g.push({level:"error",message:`生成后事实反查失败:正文出现资料事实主表中未找到的总量口径数字 ${h.slice(0,8).join("、")}`,suggestion:"总量口径数字(工期/金额/建设规模)必须与资料一致;请删除或改写为资料确认的口径,禁止编造。"}),i.length>=2&&g.push({level:"warning",message:`生成后事实反查提示:正文出现资料事实主表中未找到的规格明细数字 ${i.slice(0,8).join("、")}`,suggestion:"建议复核这些规格是否来自管理制度、规范要求或资料事实;如无依据,改为定性管理要求。"}),j.length>=6&&g.push({level:"warning",message:`生成后事实反查提示:正文出现较多未在资料事实主表中反查到的管理数字 ${j.slice(0,10).join("、")}`,suggestion:"请确认这些管理数字属于通用制度、规范要求或项目资料事实;如无依据,建议改为定性管理要求。"}),/质量目标|质量标准/u.test(b)&&c.quality.length>0&&!c.quality.some(a=>b.includes((0,o.lG)(a.value).slice(0,18)))&&g.push({level:"warning",message:"生成后事实反查提示:正文质量目标表述未明显匹配质量事实主表",suggestion:"请使用资料中的质量目标原文或等价表述。"}),g}let aN=/(?:天|工作天|日历天|月|年|万元|亿元|元|m2|hm2|亩|㎡|m²|平方米)$/u;function aO(a,b){let c=aJ(b);if(80>(0,g.V7)(c))return[];let d=(0,h.K3)(c),e=[],f=[],i=[];for(let b of aL(a)){let{token:a,normalizedToken:c,context:g,prefix:h}=b,j=aK(a,g,h);"scope"!==j||d.includes(c)||e.push(a),"spec"!==j||d.includes(c)||f.push(a),"soft"!==j||d.includes(c)||i.push(a)}return aM({markdown:a,factsModel:b,scopeSuspicious:e,specSuspicious:f,softSuspicious:i})}async function aP(a,b,c){let d,e=aJ(b);if(80>(0,g.V7)(e))return[];let f=(0,h.K3)(e),i=aL(a),j=i.filter(a=>aN.test(a.token));if(j.length>0){let a=await c.scopeClassifier.batchClassify(j.map(a=>`${a.token} ${a.context}`.slice(0,160)));d=new Map,j.forEach((b,c)=>d.set(b.token,a[c]||"other"))}let k=[],l=[],m=[];for(let a of i){let{token:b,normalizedToken:c,context:e,prefix:g}=a,h=aK(b,e,g);if(d&&aN.test(b)){let a=d.get(b)||"other";"scope"===h?h="scope"===a?"scope":"soft":"scope"===a&&/总工期|计划工期|合同工期|日历天|施工周期/u.test(e)&&!/阶段|历时|用时|合计|总计|共计|累计|预留|机动|余量|剩余|养护|编制|提交|签订|划分|闭合|控制基准|持续时间|关键|节点/u.test(e)&&(h="scope")}"scope"!==h||f.includes(c)||k.push(b),"spec"!==h||f.includes(c)||l.push(b),"soft"!==h||f.includes(c)||m.push(b)}return aM({markdown:a,factsModel:b,scopeSuspicious:k,specSuspicious:l,softSuspicious:m})}function aQ(a,b){let c=[],d=["factuality","structure","depth","executable","specificity","consistency"];for(let f of a){var e;let a=f.content;if(800>(0,g.V7)(a))continue;let h=(e=f.title,/概况|工程|项目/u.test(e)?{min:5,focus:"事实依据、项目特异性"}:/部署|总体|组织/u.test(e)?{min:6,focus:"组织结构、可执行闭环、跨章一致性"}:/进度|工期/u.test(e)?{min:6,focus:"进度结构、工期一致性、纠偏机制"}:/质量/u.test(e)?{min:6,focus:"质量深度、验收复验、资料闭环"}:/安全|文明|危大|风险/u.test(e)?{min:6,focus:"风险覆盖、应急响应、检查整改"}:/资源|材料|设备|劳动力/u.test(e)?{min:5,focus:"资源依据、进场调配、进度支撑"}:{min:4,focus:"事实依据、专业深度、可执行性"}),i=b?.get(f.title);if(!i)continue;let j=2*d.filter(a=>i.dimensions[a]).length;if(j<h.min){let a=d.filter(a=>!i.dimensions[a]).join("、")||h.focus;c.push({level:"warning",message:`${f.title} 专业评分不足:${j}/12,薄弱维度:${a}`,suggestion:`请按章节任务卡补齐${h.focus},并写出资料依据、实施流程、专业控制点和检查整改闭环。`,chapterId:f.id})}}return c}function aR(a,b){let c=[{re:/进度|工期/u,needKey:"schedule",need:/关键线路|穿插|纠偏|资源保障|节点|动态调整/u,message:"进度工期章节缺少关键线路、穿插施工或纠偏保障内容"},{re:/质量/u,needKey:"quality",need:/材料.*验收|复验|隐蔽验收|整改.*复验|质量.*资料|检验批/u,message:"质量章节缺少材料验收复验、隐蔽验收或整改复验闭环"},{re:/安全|文明|危大|风险/u,needKey:"safety",need:/风险|临电|消防|应急|检查.*整改|文明施工|人员|设备/u,message:"安全文明章节缺少风险识别、现场控制或应急检查闭环"},{re:/资源|材料|设备|劳动力/u,needKey:"resource",need:/进场|验收|调配|保管|供应|投入计划/u,message:"资源章节缺少进场、验收、调配或保管计划"},{re:/施工|工艺|技术|方案/u,needKey:"construction",need:/准备|流程|工艺|控制点|验收|交底/u,message:"施工技术章节缺少施工准备、工艺流程、控制点或验收要求"}],d=[];for(let e of a){if(600>(0,g.V7)(e.content))continue;let a=b?.get(e.title);if(a)for(let b of c)!b.re.test(e.title)||"construction"===b.needKey&&c.some(a=>"construction"!==a.needKey&&a.re.test(e.title))||"construction"===b.needKey&&/总平面|平面布置|布置图/u.test(e.title)||!("resource"===b.needKey&&/劳动力/u.test(e.title)&&!/资源|材料|设备/u.test(e.title)&&/进场|入场|退场|调配|轮转/u.test(e.content))&&(a.contentNeeds[b.needKey]||d.push({level:"error",message:`${e.title}:${b.message}`,suggestion:"请按专业任务卡定向补写该章节,补齐可实施的控制措施、资料依据和闭环要求。",chapterId:e.id}))}return d}function aS(a,b){return!!(/万元|元|报价|单价|合价|综合单价|预留金|税率|增值税|利润|结算/u.test(`${a} ${b}`)||/OCR|识别错误|乱码|无法确认|疑似|不确定|语义断裂|页码|目录/u.test(b)||/^\d+$/.test(a)&&10>Number(a)||/^\d+(?:\.\d+)+\s*(?:项|个|份|页|批|次|条|款)$/u.test(a)||/^\d+\s*页$/u.test(a)||/^(?:COL|R\d+C)\d*$/iu.test(a)||/^[A-Za-z]\.\d+$/u.test(a)||/^[\d.]+\s*(?:天|日)$/u.test(a)&&/期限/u.test(b)||/之日起.{0,8}天内|天内.{0,10}(?:发出|提交|通知|回复|答复|完成|开工|竣工|报送|支付|更换)|天以上|天及以上|‰|暂扣|履约保证金|通过后.{0,6}天|因发包人原因|因承包人原因|未能按时|逾期|违约金/u.test(b))}function aT(a,b){let c=0;for(let d of a)b.includes(d.replace(e.ug,""))&&(c+=1);return c}let aU=/日历天|个月|㎡|m²|m3|m³|MPa|kPa|kN|GB\/T|GB|JGJ|ISO|DN|φ|Φ|米\/秒|天$/u;async function aV(a,b,c=[]){let d=[],g=a.replace(e.ug,""),h=function(a){let b=new Set;for(let c of a)for(let a of c.evidence||[]){if(/bill_of_quantities|boq/u.test(`${a.roleId||""}`))continue;let c="string"==typeof a.content?a.content:"";for(let a of c.matchAll(e.No)){let d=a[0].trim();if(!d||/^\d{4}\s*年$/u.test(d)||/^\d{1,2}\s*月$/u.test(d))continue;let e=a.index||0,f=c.slice(Math.max(0,e-40),e+d.length+40);aS(d,f)||b.add(d)}}return[...b]}(c),i=h.length>=e.mu?h:function(a){let b=new Set;for(let c of a.preciseFacts){if("bill_of_quantities"===c.roleId)continue;let a=`${c.processingType||""} ${c.roleId} ${c.sourceFile}`;if(!e.FM.test(a)&&"precise_fact"!==c.roleId)continue;let d=`${c.key} ${c.fieldName||""} ${c.value}`;for(let a of d.matchAll(e.No)){let c=a[0].trim();aS(c,d)||b.add(c)}}return[...b]}(b),j=aT(i,g);i.length>=e.mu&&j/i.length<e.tg&&d.push({level:"warning",message:`可靠精确参数使用不足:${j}/${i.length}`,suggestion:"请将资料中可靠的规格、参数、数量、时间、比例和标准编号写入对应章节;商务金额、单价、税率、预留金不得写入正文。"});let k=function(a){let b=[...a].sort((a,b)=>a.localeCompare(b,"zh")),c=b.filter(a=>aU.test(a)),d=b.filter(a=>!aU.test(a));return[...c.slice(0,8),...d.slice(0,2)].slice(0,10)}(i);if(k.length>=6){let b=aT(k,g),c=k.filter(a=>!g.includes(a.replace(e.ug,"")));if(c.length>0&&b/k.length<.5){let d=a.split(/[。;;|]/u).map(a=>a.trim()).filter(a=>a.length>=6&&a.length<=160).slice(0,300);if(d.length>0){let a=await (0,f.Mv)(c.slice(0,10),d);c=c.filter(b=>!d.some(c=>a(b,c)>=.6)),b=k.length-c.length}}if(b/k.length<.5){let a=c.slice(0,3);d.push({level:"error",message:`可靠精确参数使用不足:关键参数抽查 ${b}/${k.length}${a.length?`(缺失如 ${a.join("、")})`:""}`,suggestion:"请将资料中的关键工程参数(工期、面积、强度等级、材料规格、规范编号等)写入正文对应章节,不得因参数总量达标而遗漏核心参数。"})}}return b.bills.length>0&&!e.pP.test(a)&&d.push({level:"error",message:"正文未体现结构化数据资料",suggestion:"请从表格、列表或明细中提取对象、单位、数量、规格和关键参数补入对应章节。"}),b.drawings.length>0&&!e._U.test(a)&&d.push({level:"error",message:"正文未体现设计/方案/说明类资料",suggestion:"请从设计、方案或说明资料中提取对象、流程、节点、做法、配置、规则和标准要求。"}),d}async function aW(a,b,c){let d=[],e=c.tables||[];if(0===e.length)return d;let g=a.replace(/\s+/gu,"").toLowerCase(),h=0,i=0,j=[];for(let a of e){let b=a.headers.map(a=>a.replace(/\s+/gu,"").toLowerCase()),c=b.findIndex(a=>/^(?:项目名称|名称|清单项名称|清单项|分部分项(?:工程)?名称|项目特征)/u.test(a)),d=b.findIndex(a=>/^(?:项目编码|编码|编号)/u.test(a)),e=b.findIndex(a=>/^工程量$|^数量$/u.test(a));for(let b of a.rows){let a=c>=0?(b[c]||"").replace(/\s+/gu,""):"",f=d>=0?(b[d]||"").replace(/\s+/gu,""):"",k=e>=0?(b[e]||"").replace(/\s+/gu,""):"";if(!a&&!f){let c=b.findIndex(a=>/^\d{10,12}$/u.test(a)||/^[A-Z]{1,3}\d{8,}$/u.test(a));c>=0&&(f=b[c].replace(/\s+/gu,""),a=(b[c+1]||"").replace(/\s+/gu,""))}if(!a&&!f||/^(?:分部小计|本页小计|小计|合计|总计|总价|合价|按实计算|按实结算|暂估|暂列金额|计日工|规费|税金)$/u.test(a))continue;h+=1;let l=a.length>=3?a.slice(0,Math.min(a.length,16)):"",m=f.length>=3?f.slice(0,Math.min(f.length,12)):"",n=l&&g.includes(l),o=m&&g.includes(m);n||o?i+=1:a.length>=3&&j.push({name:a,quantity:k})}}if(0===h)return d;let k=new Set;if(j.length>0&&i/h<.6){let b=a.split(/[。;;|]/u).map(a=>a.trim()).filter(a=>a.length>=6&&a.length<=160).slice(0,300),c=[...new Set(j.map(a=>a.name))].slice(0,30);if(b.length>0&&c.length>0){let a=await (0,f.Mv)(c,b);for(let d of c)b.some(b=>a(d,b)>=.6)&&k.add(d)}}let l=i+j.filter(a=>k.has(a.name)).length,m=j.filter(a=>!k.has(a.name)),n=l/h,o=m.length>0?`未落位项(共${m.length}项):${m.slice(0,30).map(a=>`${a.name.slice(0,40)}${a.quantity?` ${a.quantity}`:""}(未落位)`).join(";")}${m.length>30?` 及其他${m.length-30}项(同类项按已列名称分组归并补写)`:""}`:"";return n<.6&&d.push({level:"error",message:`清单项落位不足:${l}/${h} 项(${Math.round(100*n)}%)${o?`。${o}`:""}`,suggestion:`请将未落位清单项按专业工程分组补写进对应章节"主要施工内容"小节(融入各专业工程的作业对象与工程量、工序顺序、施工方法叙述),优先落位主要分部分项、关键规格与大额工程量。${o}`}),d}function aX(a,b){let c=[],d=b.drawings||[];if(0===d.length)return c;let e=a.replace(/\s+/gu,"").toLowerCase(),f=[...new Set(d.map(a=>a.sourceFile||"").filter(Boolean))],g=0,h=[];for(let a of f){let b=a.replace(/\.[^.]+$/u,"").replace(/[/\\]/gu,"").toLowerCase(),c=a.split("/").pop()||a;(b.length>=3?e.includes(b.slice(0,Math.min(b.length,12))):/图纸|设计|说明|节点|做法|构造/u.test(e))?g+=1:h.push(c)}if(f.length>0){let a=g/f.length;a<.25?c.push({level:"warning",message:`图纸引用严重不足:${g}/${f.length} 份图纸被正文引用(${Math.round(100*a)}%)`,suggestion:`建议将图纸中的设计说明、构造做法、材料规格和设备参数写入对应章节。未引用图纸:${h.slice(0,5).join("、")}`}):a<.5&&c.push({level:"warning",message:`图纸引用不足:${g}/${f.length} 份(${Math.round(100*a)}%)`,suggestion:`建议补充引用:${h.slice(0,5).join("、")}`})}return c}function aY(a){let b=[];for(let c of(/【本小节生成未达标,需重新生成】/u.test(a)&&b.push({level:"error",message:"生成未完成:存在未达标小节,需要重新生成或补写后才能导出",suggestion:"请重新生成未达标小节,禁止将占位内容作为正式正文。"}),e.IA))c.test(a)&&b.push({level:"warning",message:`存在占位式表达:${c.source}`,suggestion:"请改写为来自资料的准确事实;资料确实未提供时,改写为正式管理措施,不留空值或“见资料/按文件”。"});return b}function aZ(a){return(0,u.LZ)(a).map(a=>({level:"error",message:`小节标题「${a.title}」含本小节正文未覆盖的工程类别:${a.uncovered.join("、")}`,suggestion:"标题中的工程类别必须在小节正文有对应施工内容;请将标题改为与实际施工内容一致的名称,不得照抄工程量清单章节汇总行名称。"}))}function a$(a,b){for(let c of b)try{if(RegExp(c,"iu").test(a))return!0}catch{if(a.includes(c))return!0}return!1}function a_(a,b){let c=`${b.name} ${b.category} ${b.outputTitle} ${b.description}`,f=[];for(let a of(0,d.V)().autoSpecGates)a$(c,a.templateMatchers)&&f.push(a);if(0===f.length)return[];let g=[],h=F(a).length,i=0;for(let b of f){for(let c of(i=Math.max(i,b.minTables||0),b.requiredTexts))a.includes(c)||g.push({level:"warning",message:`配置要求缺少必要内容:${c}`,suggestion:"请按当前模板匹配的专业规则补齐必要内容。"});for(let c of b.forbiddenTexts)(function(a,b){let c="见图纸"===b||"按图纸"===b?["目录","清单","索引","汇总"]:[],d=0;for(;;){let e=a.indexOf(b,d);if(e<0)return!1;let f=a.slice(e+b.length);if(c.some(a=>f.startsWith(a))){d=e+b.length;continue}return!0}})(a,c)&&g.push({level:"error",message:`配置要求不得出现:${c}`,suggestion:"请根据当前模板匹配的专业规则清理正文污染内容。"})}return e.bu.test(a)&&g.push({level:"error",message:"正式正文存在 Markdown 标题符号 #",suggestion:"导出正文应去除 Markdown 标题符号,保留正式标题文字。"}),i&&h<i&&g.push({level:"warning",message:`配置要求正式表格不足:${h}/${i}`,suggestion:"如用户提示词或章节内容要求表格,应按项目资料补充对应表格本体。"}),g}function a0(a){let b=`${a.name} ${a.category} ${a.outputTitle} ${a.description}`,c=new Set;for(let a of(0,d.V)().autoSpecGates)if(a$(b,a.templateMatchers))for(let b of a.requiredTexts)b&&c.add(b);return[...c]}function a1(a,b,c,d,f,h,i){var j;if(!a)return b;let k=[...b],l=function(a){let b=[...a.project,...a.schedule,...a.quality,...a.safety,...a.resources];for(let c of Object.values(a.schemaFacts))b.push(...c);return b}(c),n=function(a,b){let c=new Set;for(let a of b)c.add(a.key),a.fieldName&&c.add(a.fieldName);for(let b of a.tables){for(let a of b.headers)c.add(a);for(let a of b.rows)for(let b of a)c.add(b)}return c}(c,l),o=new Set(d.map(a=>a.title));for(let b of a.factFields){if(!b.required||(j=b.name,/国家法律法规|地方法规|规章|规范标准|标准规范|行业标准|现行规范|法律法规|合规|施工方法|工艺流程|质量控制|安全文明|应急|劳动力|材料投入|机械设备|检测仪器|关键节点/u.test(j)))continue;let a=c.schemaFacts[b.id]||[],e=!1,f=!b.sourceRoleIds?.length||a.some(a=>b.sourceRoleIds?.includes(a.roleId));for(let a of d){if(e&&f)break;for(let c of a.evidence)!e&&!a.missingFacts.includes(b.name)&&(0,m.I2)(c,b)&&(e=!0),!f&&(0,m.I2)(c,b)&&(f=!0)}0!==a.length||n.has(b.name)||e||k.push({level:"warning",message:`系统暂未从知识库确认必需事实:${b.name}`,suggestion:b.extractionHint||"请扩大本地知识库检索、执行事实补抽,或调整事实字段配置。"}),f||k.push({level:"warning",message:`必需事实来源角色不匹配:${b.name}`,suggestion:`请确认该事实来自角色:${b.sourceRoleIds?.join("、")}`})}for(let b of a.chapterRules){let a=d.find(a=>a.title===b.title);a&&b.minWords&&a.content.length<b.minWords&&k.push({level:"warning",message:`章节内容深度建议:${b.title}`,suggestion:`可扩展到约 ${b.minWords} 字,但不要改变模板章节结构。`})}let p=F(f),q=function(a){let b=[];for(let c of a.matchAll(e.gW))b.push({alt:c[1]||"",url:c[2]||"",index:c.index??0});return b}(f),r=(0,g.Cv)(f);for(let b of a.gateRules){let a=b.evaluator?b.evaluator:e.cA[b.type]?.(b)??{subject:"document",operator:"contains",value:b.value||b.target},g=a.target||b.target||"",j=a.value||b.value||g,m=d.find(a=>a.title===g),s=function(a){for(let c of e.Lp){let d=c(a);if(d){var b;return{level:a.rule.level,message:(b=a.rule,`${b.name}:${d}`)}}}}({rule:b,evaluator:a,target:g,value:j,min:a.min||Number(b.value)||1,markdown:f,textScope:"chapter"===a.subject&&m?m.content:f,regex:j?function(a){try{return RegExp(a,"iu")}catch{return}}(j):void 0,chapter:m,factNames:n,chapterTitles:o,tableBlocks:p,imageRefs:q,estimatedPages:r,allFacts:l,factsModel:c,projectBindings:h,promptBindings:i});s&&k.push(s)}return k}function a2(a,b){let c=function(a){let b="";for(let c of(0,n.dU)(a))c.content&&(b+=`${c.content}
81
+ `})}return c}function y(a){return(0,g.ap)(a)}},22496:(a,b,c)=>{c.d(b,{cn:()=>h,ts:()=>d});let d=[{id:"earthwork-excavation",name:"土方开挖",aliases:["土方","基坑开挖","土方开挖","挖土"],process:["测量放线","标高复核","分层开挖","边坡修整","基底验槽"],params:["分层开挖厚度≤2m","基底标高偏差0~-50mm","边坡坡度按土质取1:0.5~1:1","预留200~300mm人工清底"],acceptance:["基底验槽","钎探记录","标高与轴线复核","隐蔽验收记录"],standards:["GB 50202-2018 建筑地基基础工程施工质量验收标准"]},{id:"earthwork-backfill",name:"土方回填",aliases:["素土回填","填土碾压","回填","余方弃置","人工清底"],process:["基底隐蔽验收","分层摊铺","分层碾压","压实度检测","边角补夯","表面整平"],params:["每层虚铺厚度≤300mm","填土含水率控制在最优含水率\xb12%","压实系数≥0.94","边角部位采用小型夯实机补夯","压实度每层每100m\xb2不少于1组检测"],acceptance:["压实度检测报告","回填土施工记录","隐蔽验收记录"],standards:["GB 50202-2018 建筑地基基础工程施工质量验收标准","GB 50268-2008 给水排水管道工程施工及验收规范"]},{id:"foundation-pit-support",name:"基坑支护",aliases:["基坑支护","钢板桩","土钉墙","支护桩","冠梁"],process:["测量定位","支护桩成孔","钢筋笼制安","混凝土浇筑","冠梁施工","分层开挖","位移监测"],params:["桩位偏差≤50mm","垂直度≤1%","冠梁顶标高偏差\xb110mm","监测频率:开挖期每天1次","报警值按设计位移速率3mm/d"],acceptance:["桩身完整性检测","锚杆拉拔试验","基坑监测日报","专项方案审批记录"],standards:["JGJ 120-2012 建筑基坑支护技术规程","GB 50497-2019 建筑基坑工程监测技术标准"]},{id:"pile-foundation",name:"桩基工程",aliases:["桩基","钻孔灌注桩","预制桩","静压桩","PHC管桩"],process:["测量定位","成孔(压桩)","清孔验收","钢筋笼制安","混凝土灌注","桩身检测"],params:["桩径偏差\xb15mm","沉渣厚度≤50mm(端承桩)","充盈系数≥1.0","桩顶标高偏差\xb110mm","静载试验不少于总桩数1%且≥3根"],acceptance:["桩基静载试验","低应变/声波透射检测","成孔记录","钢筋隐蔽验收"],standards:["JGJ 94-2008 建筑桩基技术规范","GB 50202-2018"]},{id:"rebar-works",name:"钢筋工程",aliases:["钢筋","钢筋绑扎","钢筋加工","钢筋连接"],process:["翻样下料","加工成型","运输堆放","绑扎安装","隐蔽验收"],params:["直螺纹接头拧紧力矩值按规格控制","接头错开≥35d且≥500mm","保护层垫块间距≤1m","绑扎搭接长度按图集16G101"],acceptance:["钢筋原材复试","接头工艺检验","隐蔽工程验收记录","保护层实测"],standards:["GB 50204-2015 混凝土结构工程施工质量验收规范","JGJ 18-2012 钢筋焊接及验收规程"]},{id:"formwork-works",name:"模板工程",aliases:["模板","模板支撑","高支模","脚手架模板"],process:["方案编制","立杆搭设","主次龙骨铺设","面板安装","验收挂牌","拆模申请"],params:["立杆间距≤900\xd7900mm(危大)","扫地杆距地≤200mm","水平杆步距≤1500mm","剪刀撑连续设置","拆模强度:板≥75%设计强度"],acceptance:["高支模专项方案论证","架体验收挂牌","沉降变形监测","拆模令"],standards:["JGJ 162-2008 建筑施工模板安全技术规范","JGJ 130-2011 建筑施工扣件式钢管脚手架安全技术规范"]},{id:"concrete-works",name:"混凝土工程",aliases:["混凝土","砼浇筑","混凝土浇筑","振捣"],process:["浇筑申请","坍落度检测","分层浇筑","振捣密实","收面养护","试块留置"],params:["坍落度按配比\xb130mm","分层浇筑厚度≤500mm","振动棒快插慢拔","养护≥7d(掺外加剂≥14d)","标养试块每100m\xb3≥1组"],acceptance:["坍落度检测记录","试块标养与同条件报告","混凝土外观检查","强度评定"],standards:["GB 50204-2015","GB/T 50107-2010 混凝土强度检验评定标准"]},{id:"steel-structure",name:"钢结构工程",aliases:["钢结构","钢构件","焊接","高强螺栓"],process:["深化设计","构件加工","进场验收","吊装就位","校正固定","焊接/螺栓连接","涂装"],params:["高强螺栓初拧终拧扭矩比1.1","焊缝等级按设计一级/二级","挠度允许值L/400","防火涂料厚度按耐火极限"],acceptance:["焊缝探伤检测","高强螺栓扭矩检查","构件尺寸偏差实测","防火涂料厚度检测"],standards:["GB 50205-2020 钢结构工程施工质量验收标准","JGJ 82-2011 钢结构高强度螺栓连接技术规程"]},{id:"masonry-works",name:"砌体工程",aliases:["砌体","砌筑","加气块","二次结构"],process:["弹线定位","排砖撂底","砌筑","构造柱植筋","圈梁浇筑","顶砖处理"],params:["灰缝厚度8~12mm","垂直度偏差≤5mm(每层)","拉结筋间距≤500mm","顶砖间隔7d斜砌"],acceptance:["砌筑砂浆试块","构造柱钢筋隐蔽验收","垂直度平整度实测","拉结筋检测"],standards:["GB 50203-2011 砌体结构工程施工质量验收规范"]},{id:"waterproofing",name:"防水工程",aliases:["防水","屋面防水","卫生间防水","地下防水","卷材"],process:["基层处理","阴阳角附加层","防水层铺贴","搭接密封","闭水/淋水试验","保护层"],params:["卷材搭接宽度≥100mm","附加层宽度≥500mm","卫生间闭水试验48h","屋面蓄水试验24h","涂膜厚度按设计≥1.5mm"],acceptance:["闭水/蓄水试验记录","隐蔽验收记录","防水材料复试","淋水试验"],standards:["GB 50207-2012 屋面工程质量验收规范","GB 50208-2011 地下防水工程质量验收规范"]},{id:"plastering",name:"抹灰工程",aliases:["抹灰","粉刷","墙面抹灰","挂网"],process:["基层处理","浇水湿润","打点冲筋","分层抹灰","压光","养护"],params:["不同基体交接处挂网宽≥200mm","每遍抹灰厚度≤7mm","平整度偏差≤4mm","空鼓面积≤400cm\xb2且不连续"],acceptance:["空鼓敲击检查","平整度垂直度实测","养护记录"],standards:["GB 50210-2018 建筑装饰装修工程质量验收标准"]},{id:"tile-paving",name:"墙地砖铺贴",aliases:["墙地砖","瓷砖","铺贴","石材"],process:["基层检查","排砖放线","选砖泡水","铺贴","勾缝","成品保护"],params:["粘结层厚度≤10mm","接缝宽度按设计要求","空鼓率单块≤15%且整面≤5%","平整度偏差≤2mm"],acceptance:["空鼓锤击检查","平整度实测","坡度泼水检查","成品保护验收"],standards:["GB 50210-2018"]},{id:"ceil-partition",name:"吊顶与轻质隔墙",aliases:["吊顶","轻钢龙骨","隔墙","石膏板"],process:["弹线定位","龙骨安装","面板安装","接缝处理","面层施工"],params:["主龙骨间距≤1200mm","吊杆间距≤1000mm","罩面板接缝错开","石膏板接缝处粘贴网格布"],acceptance:["龙骨隐蔽验收","面板平整度实测","吊顶起拱检查"],standards:["GB 50210-2018"]},{id:"painting",name:"涂饰工程",aliases:["涂料","油漆","乳胶漆","腻子"],process:["基层清理","刮腻子","打磨","底漆","面漆","修整"],params:["腻子每遍厚度≤2mm","底漆1遍面漆2遍","施工温度5~35℃","平整度偏差≤2mm"],acceptance:["涂层色泽均匀检查","无流坠起皮检查","平整度实测"],standards:["GB 50210-2018"]},{id:"door-window",name:"门窗工程",aliases:["门窗","铝合金窗","幕墙","玻璃"],process:["洞口复核","安装固定","缝隙填塞","打胶密封","开启调试","淋水试验"],params:["框与墙间隙≤5mm","密封胶连续饱满","窗扇开关力≤50N","气密水密性能按设计等级"],acceptance:["淋水试验","开启灵活检查","垂直度偏差实测","性能检测报告"],standards:["GB 50210-2018","GB/T 7106-2019 建筑外门窗气密水密抗风压性能检测方法"]},{id:"plumbing",name:"给排水工程",aliases:["给排水","给水管道","排水管道","管道安装"],process:["预留预埋","支架安装","管道安装","压力试验","冲洗消毒","通水试验"],params:["给水管试验压力为工作压力1.5倍且≥0.6MPa","排水管坡度按管径DN50~DN200取2.5%~0.8%","支架间距按管径设置","PPR热熔温度260℃"],acceptance:["管道水压试验","通球试验","灌水试验","冲洗消毒记录"],standards:["GB 50242-2002 建筑给水排水及采暖工程施工质量验收规范"]},{id:"electrical",name:"电气工程",aliases:["电气","配管","穿线","桥架","配电箱","防雷接地"],process:["预留预埋","配管桥架","穿线放缆","设备安装","绝缘测试","通电调试"],params:["管路弯曲半径≥6D(埋地≥10D)","导线绝缘电阻≥0.5MΩ","桥架支架间距≤1.5m","防雷接地电阻≤1Ω"],acceptance:["绝缘电阻测试","接地电阻测试","通电试运行","隐蔽验收记录"],standards:["GB 50303-2015 建筑电气工程施工质量验收规范"]},{id:"hvac",name:"通风空调工程",aliases:["通风空调","风管","空调","新风","保温"],process:["风管制作","吊架安装","风管安装","设备安装","严密性试验","系统调试"],params:["风管支吊架间距≤3m","中压风管漏光法检测","保温层厚度按设计","风口风速按设计值\xb110%"],acceptance:["风管严密性试验","风量平衡调试","设备单机试运行","系统联动调试"],standards:["GB 50243-2016 通风与空调工程施工质量验收规范"]},{id:"fire-protection",name:"消防工程",aliases:["消防","消火栓","喷淋","火灾报警","防排烟"],process:["预留预埋","管道安装","喷头/探测器安装","系统试压","联动调试","检测验收"],params:["喷淋试验压力≥1.4MPa","消火栓充实水柱≥10m","探测器保护半径按类别","防排烟风管严密性"],acceptance:["消防水压试验","联动调试记录","消防检测报告","竣工验收备案"],standards:["GB 50261-2017 自动喷水灭火系统施工及验收规范","GB 50166-2019 火灾自动报警系统施工及验收标准"]},{id:"weak-current",name:"弱电智能化工程",aliases:["弱电","智能化","综合布线","监控","门禁"],process:["管线预埋","桥架敷设","线缆敷设","设备安装","单机调试","系统联调"],params:["双绞线弯曲半径≥4D","光缆弯曲半径≥15D","面板安装高度距地300mm","链路测试按TIA-568"],acceptance:["链路测试报告","单机调试记录","系统联调记录","隐蔽验收"],standards:["GB 50311-2016 综合布线系统工程设计规范","GB 50339-2013 智能建筑工程质量验收规范"]},{id:"municipal-road",name:"道路工程",aliases:["道路","路基","路面","水稳","沥青"],process:["测量放线","路基处理","分层碾压","水稳摊铺","沥青摊铺","标线设施"],params:["路基压实度≥93%(路床)","水稳层7d无侧限抗压强度按设计","沥青压实度≥96%","面层平整度≤5mm(3m直尺)"],acceptance:["压实度检测","弯沉检测","取芯厚度检测","平整度实测"],standards:["CJJ 1-2008 城镇道路工程施工与质量验收规范"]},{id:"municipal-pipe",name:"市政管道工程",aliases:["管道","雨污水","沟槽","检查井","承插管"],process:["测量放线","沟槽开挖支护","基础垫层","管道安装","接口处理","闭水试验","回填"],params:["沟槽开挖放坡按土质1:0.33~1:0.5","垫层厚度按设计≥100mm","管道安装轴线偏差≤15mm","闭水试验渗水量按GB 50268","回填分层厚度≤250mm"],acceptance:["闭水试验记录","管内底高程检测","管道CCTV检测","回填压实度检测"],standards:["GB 50268-2008 给水排水管道工程施工及验收规范"]},{id:"demolition",name:"拆除工程",aliases:["拆除","墙体拆除","结构拆除","垃圾外运"],process:["方案编制","围挡隔离","管线切断","分层拆除","垃圾清运","验收交接"],params:["拆除顺序自上而下","垃圾清运日产日清","湿法作业降尘","既有保留部位防护到位"],acceptance:["拆除专项方案","既有设施保护检查","垃圾清运记录"],standards:["JGJ 147-2016 建筑拆除工程安全技术规范"]},{id:"structural-strengthen",name:"结构加固",aliases:["结构加固","粘钢","碳纤维","植筋","加大截面"],process:["设计交底","基层处理","植筋","粘贴加固","养护","检测验收"],params:["植筋锚固深度按设计≥15d","碳纤维布粘结强度≥2.5MPa","胶粘剂固化时间按产品说明","加大截面混凝土强度等级≥C25"],acceptance:["拉拔试验","粘结密实度检测","隐蔽验收记录"],standards:["GB 50367-2013 混凝土结构加固设计规范","GB 50550-2010 建筑结构加固工程施工质量验收规范"]},{id:"facade-renovation",name:"外立面整治",aliases:["外立面","立面修补","真石漆","外保温"],process:["脚手架搭设","空鼓铲除","界面处理","保温层施工","面层施工","验收落架"],params:["保温板粘贴面积≥40%","锚栓数量每平米≥6个","抗裂砂浆厚度3~5mm","面层垂直度偏差≤4mm"],acceptance:["粘结强度现场拉拔","锚栓拉拔试验","平整度实测"],standards:["GB 50411-2019 建筑节能工程施工质量验收标准","JGJ 144-2019 外墙外保温工程技术标准"]},{id:"scaffold",name:"脚手架工程",aliases:["脚手架","外架","落地架","悬挑架"],process:["方案编制","基础处理","立杆搭设","连墙件设置","安全网封闭","验收挂牌","拆除"],params:["立杆纵距≤1.5m","连墙件两步三跨","剪刀撑与地面夹角45\xb0~60\xb0","悬挑架工字钢锚固长度≥1.25倍悬挑长度","架体高于作业层1.5m"],acceptance:["架体分段验收","连墙件检查","安全网封闭检查"],standards:["JGJ 130-2011 建筑施工扣件式钢管脚手架安全技术规范"]},{id:"tower-crane",name:"起重吊装",aliases:["起重吊装","塔吊","吊装","汽车吊"],process:["方案编制","设备报验","基础验收","安装调试","检测备案","日常检查","拆除"],params:["吊装作业半径内警戒","吊索具安全系数≥6","塔吊垂直度≤4‰","风速≥6级停止吊装"],acceptance:["特种设备检测","安装验收记录","司机指挥持证检查"],standards:["JGJ 196-2010 建筑施工塔式起重机安装使用拆卸安全技术规程"]},{id:"electrical-hookup",name:"临时用电",aliases:["临电","临时用电","三级配电"],process:["方案编制","线路敷设","配电箱设置","接地保护","验收送电","日常巡检"],params:["三级配电两级漏保","漏电动作电流≤30mA/0.1s","PE线截面按相线1/2","电缆埋深≥0.7m","配电箱距地1.4~1.6m"],acceptance:["绝缘电阻测试","接地电阻测试","验收送电记录"],standards:["JGJ 46-2005 施工现场临时用电安全技术规范"]}],e=new Map,f=new Map;for(let a of d)for(let b of(f.set(a.id,a),e.set(a.name,a),a.aliases))e.set(b,a);let g=[{pattern:/安装工程|机电安装/u,cardIds:["electrical","plumbing","hvac","fire-protection","weak-current"]},{pattern:/结构加固|加固改造/u,cardIds:["structural-strengthen","concrete-works","rebar-works","formwork-works"]},{pattern:/装饰工程|装饰装修/u,cardIds:["plastering","tile-paving","ceil-partition","painting","door-window"]},{pattern:/外墙|屋面|立面/u,cardIds:["facade-renovation","waterproofing","scaffold"]},{pattern:/室外道排|道排|室外管网|雨污水/u,cardIds:["municipal-pipe","municipal-road","earthwork-excavation"]},{pattern:/智能化/u,cardIds:["weak-current"]},{pattern:/消防/u,cardIds:["fire-protection"]},{pattern:/拆除/u,cardIds:["demolition"]},{pattern:/水电改造/u,cardIds:["plumbing","electrical"]}];function h(a,b=[]){let c=new Set;for(let b of a){let a=e.get(b);for(let[d,f]of(a&&c.add(a),e))d.length>=3&&b.includes(d)&&c.add(f);for(let a of g)if(a.pattern.test(b))for(let b of a.cardIds){let a=f.get(b);a&&c.add(a)}}for(let a of d){if(c.size>=16)break;(!a.projectTypes||a.projectTypes.some(a=>b.includes(a)))&&c.add(a)}return[...c].slice(0,16)}},23760:(a,b,c)=>{c.d(b,{AC:()=>y,AN:()=>V,Ai:()=>F,BV:()=>J,EJ:()=>W,Ef:()=>E,Ff:()=>w,Fv:()=>T,Jn:()=>O,K1:()=>Q,KI:()=>aF,M$:()=>a3,N1:()=>aW,NS:()=>U,S2:()=>aX,SN:()=>X,ST:()=>aJ,Ty:()=>K,VW:()=>ab,Yb:()=>aG,Z2:()=>aQ,Zu:()=>aH,bM:()=>aZ,f8:()=>N,gN:()=>L,hr:()=>aC,i0:()=>aR,iC:()=>H,j9:()=>a$,ji:()=>aS,k0:()=>R,kQ:()=>a2,kw:()=>B,mR:()=>a0,qK:()=>aa,qm:()=>au,t4:()=>a1,vY:()=>aP,vZ:()=>S,wl:()=>D,xX:()=>aI,yd:()=>aY,yw:()=>_});var d=c(8753),e=c(98281),f=c(37047),g=c(78217),h=c(11248),i=c(70208),j=c(40299),k=c(13145),l=c(91943),m=c(65667),n=c(91977),o=c(23500),p=c(22157),q=c(54185),r=c(3063),s=c(52922),t=c(41991),u=c(30836),v=c(35547);function w(a){let b={blocking:0,important:0,minor:0};for(let c of a)b[function(a){let b="string"==typeof a?a:a.message;if("error"===("string"==typeof a?void 0:a.level))return"blocking";for(let a of e.gr)if(a.pattern.test(b))return a.severity;return"minor"}(c)]+=1;return b}function x(a,b){let c=a.replace(/[\][()`*_>#|{},。、“”‘’:;!?,.!?:;-]+/gu," ").replace(e.ug," ").trim();if(c.length<120)return;let d=c.match(/[A-Za-z][A-Za-z-]{2,}|[\p{Script=Han}]{2,}/gu)||[];if(d.length<30)return;let f=1,g=new Map;for(let a=0;a<d.length;a+=1){let c=d[a].toLowerCase();if(g.set(c,(g.get(c)||0)+1),a>0&&c===d[a-1].toLowerCase()?f+=1:f=1,f>=12)return{level:"error",message:`${b} 存在重复 token 退化输出`,suggestion:"请重新生成该小节,禁止保留连续重复的英文单词或无意义片段。"}}let h=[...g.entries()].sort((a,b)=>b[1]-a[1])[0];if(h&&h[1]>=25&&h[1]/d.length>=.42)return{level:"error",message:`${b} 存在重复 token 退化输出`,suggestion:`检测到“${h[0]}”异常高频重复,请重新生成该小节。`}}function y(a,b=[]){let c=[],d=x(a,"全文");for(let a of(d&&c.push(d),b)){let b=x(a.content,`章节“${a.title}”`);for(let d of(b&&c.push(b),a.sections||[])){let b=d.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&"),e=a.content.match(RegExp(`^#{3,4}\\s+(?:\\d+(?:\\.\\d+)*\\s+)?${b}\\s*\\n([\\s\\S]*?)(?=^#{3,4}\\s+|^##\\s+|$)`,"mu"));if(!e)continue;let f=x(e[1],`小节“${d}”`);f&&c.push(f)}}return c}function z(a){return a.severity&&a.repairability?a:/小节只有标题|空小节|小节内容补写未完成/u.test(a.message)?{...a,severity:"blocker",repairability:"local_deterministic",category:"structure",owner:"system"}:/不得出现|提示词要求|疑似提示词指令标题|项目污染|生成未完成/u.test(a.message)?{...a,severity:"blocker",repairability:"llm_repairable",category:"structure",owner:"system"}:/事实一致性冲突|projectFactOnly|核心事实/u.test(a.message)?{...a,severity:"error"===a.level?"blocker":"warning",repairability:"manual_review",category:"fact_consistency",owner:"user"}:/证据使用覆盖率偏低|BOQ|落位|高分模块|专业链|闭环/u.test(a.message)?"error"===a.level?{...a,severity:"blocker",repairability:"llm_repairable",category:"evidence_coverage",owner:"llm"}:{...a,severity:"warning",repairability:"not_repair_needed",category:"evidence_coverage",owner:"system"}:"error"===a.level?{...a,severity:"blocker",repairability:"llm_repairable",category:"structure",owner:"system"}:"warning"===a.level?{...a,severity:"warning",repairability:"not_repair_needed",category:"style",owner:"system"}:{...a,severity:"suggestion",repairability:"not_repair_needed",category:"style",owner:"system"}}function A(a){let b=z(a);return"blocker"===b.severity&&(!!("error"===b.level&&"blocker"===b.severity&&/placeholder|source|style|format|structure/u.test(String(b.category||""))||"error"===b.level&&"fact_consistency"===b.category&&/危大工程判定缺失|超危大工程判定缺失|支护形式与资料矛盾|支护形式未落地|设备进场时间荒谬|设备进场工序倒挂/u.test(a.message)||"error"===b.level&&"blocker"===b.severity&&"fact_consistency"===b.category&&"llm_repairable"===b.repairability||/提示词要求|疑似提示词指令标题|适用性自相矛盾|不得出现/u.test(a.message))||!/目录与正文/u.test(a.message)&&(/配置要求缺少必要内容/u.test(a.message)?"error"===a.level:!!/小节内容补写未完成|空小节|小节只有标题|生成未完成/u.test(a.message)||!/生成后事实反查失败/u.test(a.message)&&(/工序规格冲突/u.test(a.message)?"error"===a.level:!!/项目特点、重点、难点分析 正文不足|项目主要施工内容 正文不足/u.test(a.message)||!(/规划小节正文过短/u.test(a.message)||/事实一致性冲突:项目名称/u.test(a.message))&&(/跨章一致性|专业评分不足|专业缺口|泛化套话|缺少关键线路|缺少材料验收|缺少风险识别|缺少进场/u.test(a.message)?"error"===a.level&&!/证据使用覆盖率偏低|章节逻辑依赖不足|文档交付评分报告/u.test(a.message):!(!e.hc.test(a.message)||/章节审查|最终质量审查|正文篇幅明显低于目标|正文存在空泛占位表达|结构化事实读取不足|正文可能未显式覆盖|仅包含文件类型和占位符|不在本次招标范围内/u.test(a.message))))))}function B(a){let b=[];for(let c of a.split(/^##\s+/gmu).slice(1)){let a=c.split(/\r?\n/u),d=(a.shift()||"").trim(),e=new Map;for(let b of a){let a=/^####\s+(.+)$/u.exec(b.trim());if(!a)continue;let c=a[1],d=/^\d+(?:\.\d+)*/u.test(c);if(d&&!(0,q.cq)(c))continue;let f=d?(0,p.Sw)(c):c.replace(/\s+/gu,"");f.length<2||e.set(f,(e.get(f)||0)+1)}for(let[a,c]of e)if(!(c<2)&&(b.push({level:"error",message:`${d||"某章"} 存在同名小节重复:“${a}”出现 ${c} 次`,suggestion:"同主题内容应合并为一个小节;若确为不同方面,请重命名标题以区分内容,避免目录重复堆叠。"}),b.length>=6))return b}return b}let C=new Set(["如有","应用","措施","体系","管理","保障","要求","内容","工程","项目","施工"]);function D(a,b,c={}){let d=[],e=a.replace(/\s+/gu,""),f=c.semanticSimilarity?a.split(/\n/u).filter(a=>/^#{2,4}\s/u.test(a.trim())).map(a=>a.trim().replace(/^#{2,4}\s+/u,"").replace(/^\d+(?:\.\d+)*[\s、.]+/u,"").trim()).filter(Boolean).slice(0,80):[];for(let a of b.slice(0,8)){let b=a.replace(/^拟采用/u,"").replace(/^针对/u,"").replace(/^确保/u,"").replace(/[((][^))]*[))]/gu,"").replace(/的保障体系与措施$|管理体系与措施$|保障体系与措施$/u,"").replace(/^\d{1,3}(?:[.、.]\d{1,3})*\s*/u,"").trim().split(/[、,,;;及与和]+/u).map(a=>a.replace(/^[的了者]+/u,"").trim()).filter(a=>a.length>=2&&!C.has(a));if(0!==b.length&&!b.some(a=>e.includes(a))){if(c.semanticSimilarity&&f.length>0&&Math.max(...f.map(b=>c.semanticSimilarity(a,b)))>=.6)continue;d.push({level:"warning",severity:"warning",message:`招标文件评分条目“${a}”未在正文中出现(核心词:${b.join("/")})`,suggestion:"评审条目必须逐条承接为正文小节;请补写对应内容并确保核心关键词落位,避免评标失分。"})}}return d}function E(a,b){let c=(b||[]).flatMap(a=>(a.sections||[]).filter(a=>/新技术|新工艺|新材料|新设备|四新/u.test(a)));if(0===c.length)return[];let d=[],e=(0,p.Xl)(a,"四新",{fuzzy:!0}),f=e?(0,g.V7)(e):0;for(let b of[...new Set(c)]){let c=(0,p.Xl)(a,b,{fuzzy:!0});if(!c||200>(0,g.V7)(c)){if(f>=200)continue;d.push({level:"warning",severity:"warning",message:`大纲承诺小节“${b}”未在正文成稿(正文 ${c?(0,g.V7)(c):0} 字,要求不少于 200 字)`,suggestion:"请补写四新技术应用小节成稿,落位本项目适用的创新工艺、新材料与新设备应用计划。"})}}return d}function F(a,b,c){let d=a.map(z),f=/封面|页眉|页脚|附图|图片引用|CAD图|示意图|插图/u,g=d.filter(a=>"error"===a.level&&A(a)&&!f.test(a.message)),h=d.filter(a=>"error"===a.level&&f.test(a.message)),i=[{key:"no_errors",label:"无阻断级校验错误",passed:0===g.length},{key:"basic_facts",label:"基础事实齐全",passed:b.project.length>0},{key:"source_traceability",label:"事实具备来源追踪",passed:[...b.project,...b.schedule,...b.quality,...b.safety].every(a=>!!a.sourceFile)},{key:"structured_precision",label:"结构化精确参数已使用",passed:b.preciseFacts.length<e.mu||a.every(a=>"error"!==a.level||!e.Ab.test(a.message))},{key:"chapter_evidence",label:"章节均具备证据",passed:c.every(a=>a.evidence.length>0)},{key:"no_missing_content",label:"无资料未提供章节",passed:c.every(a=>!a.content.includes("资料未提供"))},{key:"no_project_contamination",label:"无项目污染和事实一致性阻断",passed:!a.some(a=>"error"===a.level&&e.Uv.test(a.message)&&A(a))},{key:"numeric_consistency",label:"跨章数值口径与资料一致",passed:!a.some(a=>"error"===a.level&&/跨章一致性冲突|跨章一致性缺口|跨章一致性复核/u.test(a.message)&&A(a))},{key:"manual_postprocess",label:`封面/页眉页脚/附图等 ${h.length} 项由后期人工完善(不阻断导出)`,passed:!0,message:h.length?h.slice(0,5).map(a=>a.message).join(";"):void 0}];return{passed:0===g.length,blockingIssues:g,checklist:i}}function G(a){let b=[],c=a.split(e.A5);for(let a=0;a<c.length;a+=1){if(!e.w7.test(c[a]))continue;let d=[];for(;a<c.length&&e.w7.test(c[a]);)d.push(c[a]),a+=1;a-=1,d.some(a=>e.N3.test(a))&&b.push(d.join("\n"))}return b}function H(a){let b=[...a.matchAll(e.DB)],c=[];for(let d=1;d<b.length;d+=1){let f=b[d].index||0,g=b[d+1]?.index??a.length,h=a.slice(f,g);e.Ks.test(h)&&c.push({level:"warning",message:`第 ${d+1} 章可能重复出现基础信息`,suggestion:"如该信息与本章主题无关,建议合并到更合适的概况类章节,避免重复铺陈。"})}if(0===b.length)return c;let d=b[0].index||0,f=b[1]?.index??a.length,g=a.slice(d,f),h=g.search(e.jM);if(h<=0)return c;let i=g.slice(0,h).replace(e.Dc,""),j=[];for(let a of e.Y8)RegExp(`${a}\\s*[::]`,"u").test(i)&&j.push(a);return j.length>=3&&c.push({level:"warning",message:`基础信息表前重复叙述字段:${j.join("、")}`,suggestion:"基础信息已表格化时,表格前只保留一句引导语,不要重复逐项叙述名称、编号、范围、周期、质量等字段。"}),c}let I=["本节将详细介绍以下内容","本章将从以下几个方面进行阐述","综上所述,通过以上分析得出结论","以下内容将围绕该主题展开论述"];async function J(a){let b=[],c=a.split(/\n+/u).filter(a=>a.trim()&&!/^\s*(#{1,6}\s+|\||[-*+]\s|>)/u.test(a)).flatMap(a=>a.split(/[。;;]/u)).map(a=>a.trim()).filter(a=>a.length>=8),d=await (0,f.Mv)(c,[...I]),e=c.filter(a=>I.some(b=>d(a,b)>=f.Eh));e.length>0&&b.push({level:"warning",message:`存在模板化前缀或套话:${e.slice(0,3).join("、")}`,suggestion:"请删除“本节/本章将/以下从”等前缀,标题后直接进入对象、动作、措施、检查和闭环。"});let g=a.match(/OCR|提示词|绑定片段|后台|文件路径|识别错误|知识库证据|知识库已确认事实|通用兜底段落|兜底占位|兜底模板/giu);return g?.length&&b.push({level:"warning",message:`正文包含后台或资料处理话术:${[...new Set(g)].join("、")}`,suggestion:"建议改为正式文档语言,例如“资料文字不清”“资料口径不一致”“项目资料”,不得暴露后台处理过程。"}),b}function K(a){let b=[];for(let c of a){let a=(c.sections||[]).filter(Boolean),d=a.filter((b,c)=>a.indexOf(b)!==c);d.length>0&&b.push({level:"warning",message:`${c.title} 存在重复小节:${[...new Set(d)].join("、")}`,suggestion:"请保留用户需求、模板或显式大纲中真实需要的小节,删除重复项。"});let e=new Map;for(let b of a){let a=/劳动力|人员|工种/u.test(b)?"劳动力计划":/机械|设备|机具/u.test(b)?"机械设备计划":/材料|物资/u.test(b)?"材料物资计划":/冬季|雨季|高温|台风|大风/u.test(b)?"特殊气候措施":"";a&&e.set(a,[...e.get(a)||[],b])}for(let[a,d]of e)d.length>1&&b.push({level:"warning",message:`${c.title} 存在重复主题小节:${a}(${d.join("、")})`,suggestion:"请合并同类小节,只保留一个主表或主方案,其他位置采用引用或执行说明。"})}return b}function L(a){let b=e.HX.exec(a);if(!b)return[{level:"error",message:"缺少目录页",suggestion:"请在封面后生成“## 目录”,并按一级章父级、二级小节子级组织。"}];let c=0,d=0;for(let a of b[1].split(e.A5))e.ZT.test(a)&&e.EB.test(a)&&(c+=1,e.sr.test(a)&&(d+=1));return c>0&&0===d?[{level:"error",message:"目录二级小节未作为子级缩进",suggestion:"目录应为父子级导航:一级章单独成行,二级小节至少缩进两个空格列在所属章下方。"}]:[]}function M(a){return a.replace(/^#+\s*/u,"").replace(/^第[一二三四五六七八九十百千万\d]+[章节篇部分]\s*/u,"").replace(/^\d+(?:\.\d+)*(?:[..、]|\s)+/u,"").replace(/[()]/gu,a=>"("===a?"(":")").replace(/[\s::.。;;,,、]+$/gu,"").replace(/的(?=保障体系|管理体系|控制体系|措施|方案|计划|要求)/gu,"").replace(/[\s()()::.。;;,,、-]/gu,"").trim()}function N(a){let b=function(a){let b=e.HX.exec(a);return b?b[1].split(e.A5).map(a=>/^\s*(\d+\.\d+)\s+(.+)$/u.exec(a.trim())).filter(a=>!!a).map(a=>({number:a[1]||"",title:M(a[2]||"")})).filter(a=>a.title):[]}(a),c=[...a.matchAll(/^###\s+(\d+\.\d+)\s+(.+)$/gmu)].map(a=>({number:a[1]||"",title:M(a[2]||"")})).filter(a=>a.title);if(0===b.length||0===c.length)return[];let d=b.map(a=>a.title),f=c.map(a=>a.title),g=new Set(f),h=new Set(d),i=d.filter(a=>!g.has(a)),j=f.filter(a=>!h.has(a)),k=[];i.length>0&&k.push({level:"error",message:`目录与正文不一致,目录小节未在正文中找到:${[...new Set(i)].join("、")}`,suggestion:"建议以最终清洗后的正文二级标题为准重新生成目录。"}),j.length>0&&k.push({level:"error",message:`目录与正文不一致,正文小节未进入目录:${[...new Set(j)].join("、")}`,suggestion:"建议重新生成目录,确保正文二级小节完整进入目录。"});let l=new Map(c.map(a=>[a.number,a.title])),m=new Set(b.map(a=>a.number)),n=b.filter(a=>l.has(a.number)&&l.get(a.number)!==a.title),o=c.filter(a=>!m.has(a.number));return b.length!==c.length&&k.push({level:"error",message:`目录与正文小节数量不一致:目录 ${b.length} 节、正文 ${c.length} 节`,suggestion:"正文 H3 编号必须连续单调且与目录一一对应;出现重复编号、跳号或丢节时以正文实际结构重建目录。"}),n.length>0&&k.push({level:"error",message:`目录与正文同一编号对应不同小节:${n.slice(0,5).map(a=>`${a.number} 目录「${a.title}」/正文「${l.get(a.number)}」`).join("、")}`,suggestion:"目录必须按正文 H3 实际编号与标题生成,同一编号不得对应不同小节名称。"}),o.length>0&&k.push({level:"error",message:`正文小节编号未出现在目录中:${o.slice(0,5).map(a=>`${a.number} ${a.title}`).join("、")}`,suggestion:"目录编号与正文编号必须全集一致。"}),k}function O(a){let b,c=[];for(let d of a.split(e.A5)){let a=d.trim(),e=/^##\s+第[一二三四五六七八九十百千万\d]+章\s+(.+)$/u.exec(a);if(e){b={ordinal:c.length+1,title:(e[1]||"").trim(),numbers:[],prefixNumbers:[]},c.push(b);continue}let f=/^###\s+(\d+)\.(\d+)\s+/u.exec(a);f&&b&&(b.prefixNumbers.push(Number(f[1])),b.numbers.push(Number(f[2])))}let d=[];for(let a of c){if(0===a.numbers.length)continue;let b=new Map;for(let c of a.prefixNumbers)b.set(c,(b.get(c)||0)+1);let c=[...b.entries()].sort((a,b)=>b[1]-a[1]||a[0]-b[0])[0]?.[0]??a.ordinal,e=[...new Set(a.prefixNumbers.filter(b=>b!==a.ordinal))].sort((a,b)=>a-b);e.length>0&&d.push({level:"error",severity:"blocker",category:"structure",message:`小节编号章号错位:第${a.ordinal}章「${a.title}」内出现 ${e.slice(0,8).map(a=>`${a}.x`).join("、")} 编号小节(应为 ${a.ordinal}.x)`,suggestion:`正文二级小节编号必须为「章序.节序」;按章序重排本章 H3 编号(降级 H4 不占 H3 编号)。`});let f=new Map;for(let b of a.numbers)f.set(b,(f.get(b)||0)+1);let g=[...f.entries()].filter(([,a])=>a>1).map(([a])=>a).sort((a,b)=>a-b);g.length>0&&d.push({level:"error",severity:"blocker",category:"structure",message:`小节编号重复:第${a.ordinal}章「${a.title}」${g.slice(0,8).map(a=>`${c}.${a}`).join("、")} 重复出现`,suggestion:"同章内同一小节编号只允许出现一次;重复编号为降级合并残留,按正文实际小节顺序重排编号。"});let h=Math.max(...a.numbers),i=Array.from({length:h},(a,b)=>b+1).filter(a=>!f.has(a));i.length>0&&d.push({level:"error",severity:"blocker",category:"structure",message:`小节编号缺号:第${a.ordinal}章「${a.title}」缺 ${i.slice(0,8).map(a=>`${c}.${a}`).join("、")}(实有 ${f.size} 个小节,最大编号 ${c}.${h})`,suggestion:"小节编号必须从 1 起连续;缺号源自降级合并占用编号或丢节,按正文小节顺序重排编号后同步重建目录。"})}return d}function P(a){let b=a.replace(/^#{1,6}\s+/u,"").replace(/^\s*\d+(?:\.\d+)*(?:[..、]|\s)+/u,"").replace(/^第[一二三四五六七八九十百千万\d]+[章节篇部分]\s*/u,"").trim(),c=(0,i.GQ)(b),d=/^(?:\d+(?:\.\d+)*\s*)?(?:[-—–]\s*)?(?:(?:判断|判定|识别|确认)?是否(?:涉及|涉|需要|适用).*|(?:如|若|如果)(?:涉及|不涉及|适用|不适用).*|.*(?:根据|结合).{0,12}(?:实际情况|项目情况|资料情况).{0,8}(?:判断|确定|编写|生成).*|.*(?:按需(?:生成|编写)|视情况|判断后|生成要求|编写要求|注意事项))\s*$/u;return d.test(b)||d.test(c)||(0,i.mq)(b)||(0,i.mq)(c)}function Q(a){let b=[...a.matchAll(/^#{2,6}\s+(.+)$/gmu)].map(a=>(0,i.GQ)(a[1]||"")).filter(P);return b.length>0?[{level:"error",message:`正文存在疑似提示词指令标题:${[...new Set(b)].slice(0,8).join("、")}`,suggestion:"请删除或改写为正式施工组织设计小节标题,目录也不得收录该类标题。"}]:[]}function R(a){let b=[],c=a.split(e.A5).map(a=>a.trim()).filter(a=>a&&!/^#{1,6}\s+/u.test(a)&&!/^\s*\|/u.test(a)&&!/^<div\b/iu.test(a)),d=c.find(a=>M(a).length<=1);d&&b.push({level:"warning",message:`正文存在孤立字或残缺段落:${d}`,suggestion:"请删除残缺行或重新生成所在小节。"});let f=/^(?:[-*+]\s+|[((]?\d+[)).、]\s*)/u,g=/(?:按以下|如下|包括|分为|包含|列出).*[::]$/u,h=a=>/[::]$/u.test(c[a])&&a+1<c.length&&f.test(c[a+1]),i=a=>/[,、;:]$/u.test(c[a])&&a+1<c.length&&!f.test(c[a+1]),j=[];for(let a=0;a<c.length&&j.length<3;a+=1){let b=c[a];!(f.test(b)||g.test(b)||h(a)||i(a))&&(/[,、;:和与在为对将]$/u.test(b)||/(通过|包括|如下|主要包括|验收|合格后|复查合格后|设计风|确认后|具体如下|应符合|不少于|以及|且应|不得少于)$/u.test(b))&&j.push(b)}for(let a of j)b.push({level:"error",severity:"blocker",category:"format",owner:"llm",repairability:"llm_repairable",message:`正文存在疑似截断句:${a}`,suggestion:"请补完整该段落,避免以连接词、逗号、冒号或无句号的动作词结尾。"});let k=c.find(a=>a.length>380);k&&b.push({level:"warning",message:`正文存在过长段落:${k}`,suggestion:"请拆分为多段或表格,改善导出版式和可读性。"});let l=c.find(a=>/\S.+(?:\s|[。;;])(?:\d+[.、](?=\s|\*\*)\s*|[((]\d+[))]\s*|[-*+]\s+)\S.+(?:\s|[。;;])(?:\d+[.、](?=\s|\*\*)\s*|[((]\d+[))]\s*|[-*+]\s+)\S/u.test(a)&&!/\b\d+\.\d+\s*(?:mm|cm|m|㎡|m2|kg|t|MPa|kPa|V|KV|kV|A)\b/iu.test(a));l&&b.push({level:"error",message:`正文存在列表项粘连同一行:${l.slice(0,120)}`,suggestion:"有序列表和无序列表必须逐项独占一行,确保 Markdown/PDF/DOCX 正确排版。"});let m=a.match(/PDF\s*第\s*|(?:PDF\s*)?第\s*\d+\s*(?:[-—至到~~]\s*\d+)?\s*页|(?:图纸|清单|资料|文件|[\u4e00-\u9fa5A-Za-z0-9()()、·-]{2,24}(?:工程)?)\s*(?:[((]?\s*|(?:共|多达|约|合计)\s*)\d+\s*页|[\u4e00-\u9fa5A-Za-z0-9、及与和]{2,24}\s*(?:共|多达|约|合计)\s*\d+\s*页|\d+\s*页\s*(?:图纸|资料|文件|装饰|土建|加固|给排水|电气|智能化|消防)|\d+\s*页/iu)?.[0];m&&b.push({level:"error",message:`正文残留资料页码元信息:${m}`,suggestion:"正式投标正文应引用招标文件、施工图设计文件、工程量清单和相关专业图纸,不写 PDF 页码或资料页数。"});let n=c.find(a=>/仅作为内部事实提取依据|正式正文不得引用文件名|后台事实|内部事实/u.test(a));return n&&b.push({level:"error",message:`正文残留内部处理说明:${n.slice(0,120)}`,suggestion:"正式投标正文不得出现内部事实抽取、后台处理或文件名引用限制说明。"}),b}function S(a){let b=[],c=a.split(e.A5),d=/。{2,}|[!?;:,、]{2,}|。[!?;:,、]|[!?;:,、]。/u;for(let a of c){let c=a.trim();if(!c||/^#{1,6}\s+/u.test(c)||/^\s*\|/u.test(c)||/^<div\b/iu.test(c))continue;let e=d.exec(c);if(e){let a=Math.max(0,e.index-24),d=`${c.slice(a,e.index)}【${e[0]}】${c.slice(e.index+e[0].length,e.index+e[0].length+24)}`;b.push({level:"error",severity:"blocker",category:"format",owner:"llm",repairability:"llm_repairable",message:`正文存在句读标点叠用(拼接/删节残留):${d}`,suggestion:"相邻句读标点(如「。;」「;。」「。。」)是删节拼接残留或省略号误写,请重写该句。"})}}for(let{open:d,close:e,label:f}of l.Rc){let g=a.split(d).length-1,h=a.split(e).length-1;if(g===h)continue;let i=c.find(a=>a.split(d).length-1!=a.split(e).length-1);b.push({level:"error",severity:"blocker",category:"format",owner:"llm",repairability:"llm_repairable",message:`正文存在${f}不闭合(开 ${g} 处、闭 ${h} 处,拼接/删节残留):${i?.trim().slice(0,120)??""}`,suggestion:`${f}成对性破坏是内容丢失拼接的确定性信号,请重写所在句子/小节,补齐或删除残缺部分。`})}return b}function T(a){let b=[];{let c=[...a.matchAll(/^#{2,4}\s+(.+)$/gmu)].map(a=>(a[1]||"").trim()).filter(a=>/[☑✓✔☐□☒○●◉◇◆]/u.test(a)).slice(0,6);c.length>0&&b.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:`小节标题残留复选框/选项符号(☑/✓ 等招标文件符号):“${c.join("”、“")}”`,suggestion:"删除标题中的复选框符号(☑✓✔☐□等);标题主体若属商务文件内容(如“电子保函”),整个小节删除,技术标不得出现商务条款小节。"})}let c=a.search(/^##\s+第[一二三四五六七八九十百千万\d]+章\s+/mu),d=[...(c>=0?a.slice(c):a.replace(/^##\s+目录[\s\S]*?(?=^##\s+第[一二三四五六七八九十百千万\d]+章\s+)/mu,"")).matchAll(/^##\s+(.+)$/gmu)].map(a=>(a[1]||"").trim()).filter(a=>"目录"!==a&&!/^第[一二三四五六七八九十百千万\d]+章\s+/u.test(a)&&!/^附录/u.test(a)).map(a=>(0,i.GQ)(a));d.length>0&&b.push({level:"error",message:`正文存在非正式章二级标题:${[...new Set(d)].slice(0,8).join("、")}`,suggestion:"正文 ## 只允许用于“第X章”正式章标题;章内小节必须使用 ### X.Y。"});let e=[...a.matchAll(/^##\s+(第[一二三四五六七八九十百千万\d]+章\s+.+)$/gmu)];for(let c=0;c<e.length;c+=1){let d=e[c].index||0,f=e[c+1]?.index??a.length,g=[...a.slice(d,f).matchAll(/^###\s+\d+\.\d+\s+(.+)$/gmu)].map(a=>(0,i.GQ)(a[1]||"")),h=(0,i.GQ)((e[c][1]||"").replace(/^第[一二三四五六七八九十百千万\d]+章\s*/u,""));1===g.length&&M(g[0])===M(h)&&b.push({level:"error",message:`章节只有一个且与章名同名的小节:${e[c][1]}`,suggestion:"应拆分为多个业务小节,不能用章标题重复作为唯一二级小节。"})}return b}function U(a){a=(0,j.BJ)(a);let b=[];{let c=a.split(e.A5);for(let a=1;a<c.length;a+=1){let d=(c[a]||"").trim(),f=(c[a-1]||"").trim();d&&!/^\|/u.test(d)&&d.endsWith("|")&&1===(d.match(/\|/gu)||[]).length&&!/^#{1,6}\s/u.test(d)&&e.w7.test(f)&&b.push({level:"error",message:`表格断行残片:${d}`,suggestion:"该行是表格数据行整列丢失的残片:合并回所属表格行并补齐缺失列,或删除该残行。"})}}/按审批确认执行/u.test(a)&&b.push({level:"error",message:"表格存在自动兜底污染内容:按审批确认执行",suggestion:"正式投标表格不得使用通用兜底短语,应保留真实业务内容或删除该行。"});let c=[];for(let b of a.matchAll(/\|\s*信息项\s*\|\s*内容\s*\|/gu)){let d=a.slice(b.index||0),f=[];for(let a of d.split(e.A5)){if(f.length>0&&!e.w7.test(a))break;f.push(a)}c.push(f.join("\n"))}let d=c.filter(a=>/项目名称|招标人|建设单位|发包人|建设地点|招标范围|计划工期|合同估算价|质量标准/u.test(a)).length;d>1&&b.push({level:"error",message:`项目基础信息类表格重复:${d} 处`,suggestion:"项目名称、招标人、建设地点、工期、质量等基础信息只能集中输出一次。"});let f=a.match(/^\|\s*---\s*\|\s*---\s*\|\s*$/gmu)||[];for(let c of(f.length>60&&b.push({level:"error",message:`表格分隔线异常重复:${f.length} 行`,suggestion:"请修复表格规范化逻辑,禁止把数据行拆成多个碎表。"}),G(a))){let a=c.split(e.A5).filter(a=>e.w7.test(a));if(a.length<2)continue;if(!e.N3.test(a[1]||"")){b.push({level:"error",message:`表格分隔线位置不规范:${a[0]||""}`,suggestion:"Markdown 表格必须紧跟表头输出分隔线,例如 |---|---|,中间不得插入正文或其他管道行。"});continue}let d=a.map(a=>a.trim().replace(/^\|/u,"").replace(/\|$/u,"").split(/(?<!\\)\|/u).map(a=>(0,k.jG)(a.trim()))),f=d[0]||[],g=f.filter(a=>/^(?:列|字段|内容|备注)\d+$/u.test(a));g.length>0&&b.push({level:"error",message:`表格存在泛化表头:${g.join("、")}`,suggestion:"正式投标表格必须使用业务字段表头,不得出现“列5/字段1/内容2”等临时表头。"});let h=f.length;d.find((a,b)=>1!==b&&a.length!==h)&&b.push({level:"error",message:`表格列数不一致:${f.join("、")}`,suggestion:"请统一表头和数据行列数;不应通过自动填充兜底词修补表格。"});let i=d.slice(2),j=i.find(a=>a.some(a=>""===a));j&&b.push({level:"error",message:`表格存在空单元格:${f.join("、")}(“${j[0]||""}”行)`,suggestion:"正式交付表格不得出现空单元格;缺失数据应从资料补齐或按业务口径填写具体值,不得留空。"});let l=i.find(a=>a.some((b,c)=>!(!/^(?:—+|-+|-|\/|N\/A|n\/a|待定|待补充|待确认|待查|待补|若干|暂无|无数据)$/u.test(b)&&!/^约\d/u.test(b)||/^(?:合计|小计|总计|累计)/u.test(a[0]||"")&&/^(?:—+|-+)$/u.test(b)&&c>0||/^(?:—+|-+)$/u.test(b)&&/规格型号|规格|型号/u.test(f[c]||""))));if(l){let a=/^(?:合计|小计|总计|累计)/u.test(l[0]||""),c=l.find((b,c)=>!(!/^(?:—+|-+|-|\/|N\/A|n\/a|待定|待补充|待确认|待查|待补|若干|暂无|无数据)$/u.test(b)&&!/^约\d/u.test(b)||a&&/^(?:—+|-+)$/u.test(b)&&c>0||/^(?:—+|-+)$/u.test(b)&&/规格型号|规格|型号/u.test(f[c]||"")))||"";b.push({level:"error",message:`表格存在占位符单元格:${f.join("、")}(“${l[0]||""}”行“${c}”)`,suggestion:"正式交付表格不得用“—/若干/约/待定”等占位或模糊表达代替具体数据;应从资料补齐具体数值。"})}}return b}function V(a,b){let c=function(a){let b=a.split(/\r?\n/u);for(let a=0;a<b.length;a+=1){let c=b[a].trim(),d=/^(#{2,4})\s+(.+)$/u.exec(c),e=d?null:/^\*\*(.+)\*\*$/u.exec(c);if(!d&&!e)continue;let f=d?d[2]:e?.[1]??"";if(!/编制依据|编制说明|编制原则|编制目的/u.test(f))continue;let g=d?d[1].length:0,h=[f];for(let c=a+1;c<b.length;c+=1){let a=/^(#{1,4})\s+(.+)$/u.exec(b[c].trim());if(a&&(0===g||a[1].length<=g))break;h.push(b[c])}return h.join("\n")}return""}(a);if(!c)return[];let d=[],e=(c.match(/《[^《》]{2,40}(?:法|条例|办法|规程|规范|标准)》/gu)||[]).map(a=>a.replace(/《|》/gu,""));e.some(a=>/法$/u.test(a))||d.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:"编制依据小节缺少国家法律法规条目",suggestion:"编制依据小节必须列出具体法律名称及文号(如《中华人民共和国建筑法》),不得空写「国家现行法律、行政法规」类别话术。"}),e.some(a=>/(?:条例|办法)$/u.test(a))||d.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:"编制依据小节缺少条例类条目",suggestion:"编制依据小节必须列出具体条例名称(如《建设工程质量管理条例》),不得以类别话术代替。"});let f=/《[^《》]{2,40}(?:规范|规程|标准)[^《》]{0,20}》/u.test(c),g=/(?:GB|CJJ|JGJ|JTG|SL|DB|DL|YS|HG)[\s/T]*[A-Z]?[\s/]?\d{2,4}/u.test(c);f||g||d.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:"编制依据小节缺少施工验收规范条目",suggestion:"编制依据必须包含与本工程分部对应的现行施工验收规范名称及编号(如《给水排水管道工程施工及验收规范》(GB 50268-2008))。"});let h=[...(b?.project.location||"").matchAll(/([\u4e00-\u9fa5]{2,10}?[省市])/gu)].map(a=>a[1]);if(h.length>0&&(h.some(a=>e.some(b=>b.startsWith(a)||b.includes(a)))||d.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`编制依据小节缺少${h[0]}地方性法规、条例`,suggestion:`编制依据必须列出工程所在地(${h.join("、")})现行地方性法规及条例名称。`})),b&&b.basisRegulations.length>0){let a=b.basisRegulations.filter(a=>!e.includes((a.match(/《([^》]+)》/u)||[])[1]||""));a.length===b.basisRegulations.length&&d.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`编制依据小节未列招标文件引用法规:${a.slice(0,3).map(a=>a.replace(/(.*/u,"")).join("、")}`,suggestion:"招标文件引用的法规必须照抄进编制依据小节。"})}return d}function W(a,b){let c=(0,m.re)(b);if(!c)return[];let d=[],e=new Set;for(let b of(0,m._H)(a,c))e.has(b.label)||(e.add(b.label),d.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:b.message,suggestion:b.suggestion}));return d}function X(a){let b=[],c=a.split(e.A5),d=[];for(let a=0;a<c.length;a+=1){if(!e.w7.test(c[a]))continue;let b=a,f=[];for(;a<c.length&&e.w7.test(c[a]);)f.push(c[a]),a+=1;a-=1;let g=f.filter(a=>e.N3.test(a)).length;if(0===g)continue;let h=(f[0]||"").trim(),i=h.startsWith("|")?h.slice(1):h,j=(i.endsWith("|")?i.slice(0,-1):i).split("|").map(a=>a.split("**").join("").trim()).filter(a=>a.length>0);d.push({headerKey:j.join("|"),headerText:j.join("、"),start:b,end:a,dividerCount:g})}let f=new Map;for(let a of d)f.set(a.headerKey,(f.get(a.headerKey)||0)+1);let g=[...f.entries()].filter(([,a])=>a>=3);if(g.length>0){let a=d.find(a=>f.get(a.headerKey)===g[0]?.[1])?.headerText||"";b.push({level:"error",severity:"blocker",category:"table",owner:"llm",repairability:"llm_repairable",message:`同主题表格重复堆叠:${g.length} 组相同表头出现 3 次及以上(如:${a})`,suggestion:"同一主题表格全文只出现一次,禁止拆成多张碎表重复堆叠凑数;请合并同类表格或删除重复内容。相同表头分别用于不同主题时,必须在表头列名中加主题限定词(如「进度关键节点/质量关键节点/安全关键节点」)以区分口径。"})}let h=0;for(let a=1;a<d.length;a+=1){let b=d[a-1],e=d[a];b&&e&&c.slice(b.end+1,e.start).every(a=>""===a.trim())&&(h+=1)}for(let a of d)a.dividerCount>=2&&(h+=a.dividerCount-1);return h>=2&&b.push({level:"warning",category:"table",message:`表格连续堆叠:${h} 处相邻表格无正文分隔`,suggestion:"表格之间应有正文引导叙述,禁止连续堆叠多张表格凑数。"}),b}function Y(a){return a.split(e.A5).filter(a=>!/^#{1,6}\s+/u.test(a.trim())).filter(a=>!/^\s*\|/u.test(a)).filter(a=>!/^\s*:?-{3,}:?/u.test(a)).filter(a=>!/^<\/?div\b/iu.test(a.trim())).join("\n").replace(/[|*_`<>-]/gu,"").replace(e.ug,"").length}function Z(a){let b=[...a.matchAll(/^(#{3,4})\s+(.+)$/gmu)];return b.map((c,d)=>{let e=c[1].length,f=(c.index||0)+c[0].length,g=b.slice(d+1).find(a=>a[1].length<=e),h=g?.index??a.length,i=(c[2]||"").trim();return{rawTitle:i,title:M(i),level:e,body:a.slice(f,h)}}).filter(a=>a.title&&(3===a.level||4===a.level))}function $(a,b,c,d,f){let g=Y(d),h=e.w7.test(d)&&d.split(e.A5).some(a=>e.N3.test(a)),i=Y(d.split("\n").filter(a=>!e.w7.test(a)&&!e.N3.test(a)).join("\n").replace(/^#{1,6}\s+.+$/gmu,""));if(/\[WRITER_MISSING_SECTION\]|Writer 未完成/u.test(d))return{chapterTitle:a,sectionTitle:b,level:c,bodyLength:g,reason:"empty",planned:f,message:`${a} 小节内容补写未完成:${b}`};if(/【本小节生成未达标,需重新生成】/u.test(d))return{chapterTitle:a,sectionTitle:b,level:c,bodyLength:g,reason:"empty",planned:f,message:`${a} 小节生成未达标:${b}`};if(/项目基本信息|基本信息|工程概况|项目概况|工程概述|项目概述/u.test(b)&&(h||g>=40)||/^附录[一二三四五六七八九十A-Z\d]/u.test(b)&&h)return;let j=/清单|配置|汇总|一览|明细|计划|进度|节点|安排/u.test(b)||/表[^,。;:\s]{0,6}$/u.test(b);if(!(h&&j&&Math.max(0,d.split(e.A5).filter(a=>e.w7.test(a)&&!e.N3.test(a)).length-1)>=2)){if(h&&i<20)return{chapterTitle:a,sectionTitle:b,level:c,bodyLength:g,reason:"empty",planned:f,message:f?`${a} 只有标题或表格无正文:${b}`:`${a} 小节只有标题或表格无正文:${b}`};if(!(g>=80)||!(i>=20)){if(0===g)return{chapterTitle:a,sectionTitle:b,level:c,bodyLength:g,reason:"empty",planned:f,message:`${a} 空小节:${b}`};if(g<180)return{chapterTitle:a,sectionTitle:b,level:c,bodyLength:g,reason:"too_short",planned:f,message:`${a} ${f?"规划小节":"正文小节"}正文过短:${b}`}}}}function _(a,b){let c=[],d=new Set;for(let e of b){let b=e.content?.trim()?e.content:a;for(let a of(e.sections||[]).filter(a=>!(0,q.cq)(a)&&!(r.gG.test(e.title)&&p.V.test(a.trim()))&&!/^附录/u.test(a.trim()))){let f=M(a),g=function(a,b){let c=Z(a).filter(a=>(function(a,b){let c=M(a),d=M(b);if(!c||!d)return!1;if(c===d||c.includes(d)||d.includes(c))return!0;let e=/项目概况|主要施工方案|新技术新材料|工程重点难点|重点难点|危大工程|保障体系|安全保障|工期|质量|安全生产|应急预案|资源|人材机|材料|机械|劳动力|进度|关键线路|交通疏导|成品保护|深化设计|验收/gu,f=new Set(c.match(e)||[]),g=new Set(d.match(e)||[]),h=[...f].filter(a=>g.has(a)).length;return h>=2||1===Math.min(f.size,g.size)&&1===h&&16>=Math.max(c.length,d.length)})(a.rawTitle,b));return c.length<=1?c[0]:c.map(a=>({item:a,gap:$("",b,a.level,a.body,!0),textLength:Y(a.body)})).sort((a,b)=>{let c=a.gap&&"empty"===a.gap.reason?1:0,d=b.gap&&"empty"===b.gap.reason?1:0;return c!==d?c-d:b.textLength-a.textLength})[0]?.item}(b,a),h=`${e.title}|${f}|planned`;if(!g){c.push({chapterTitle:e.title,sectionTitle:a,level:3,bodyLength:0,reason:"missing_planned_section",planned:!0,message:`${e.title} 缺少规划小节:${a}`}),d.add(h);continue}let i=$(e.title,a,g.level,g.body,!0);i&&c.push(i),d.add(h)}for(let a of Z(b)){let b=`${e.title}|${a.title}|actual`,f=`${e.title}|${a.title}|planned`;if(d.has(b)||d.has(f))continue;let g=$(e.title,a.title,a.level,a.body,!1);g&&"empty"===g.reason&&c.push(g),d.add(b)}}return c}function aa(a,b){return _(a,b).filter(a=>"empty"===a.reason||"missing_planned_section"===a.reason).map(a=>({level:"error",category:"structure",message:a.message,suggestion:"missing_planned_section"===a.reason?"必须补充该规划小节正式正文,不得缺节导出。":"必须补充与该小节相关的材料事实和必要内容,达到正文完整度要求。"}))}function ab(a){let b=[];for(let c of a){if(!c.content?.trim())continue;let a=a=>{let b=String(a||"").trim();return!b||(0,q.cq)(b)||/^附录/u.test(b)||r.gG.test(c.title)&&p.V.test(b)},d=(c.sections||[]).filter(b=>!a(b));if(0===d.length)continue;let e=(0,j.r4)(c.content).filter(b=>!a(b));if(e.length<=d.length)continue;let f=new Set(d.map(a=>M(a))),g=e.filter(a=>!f.has(M(a)));b.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",chapterId:c.id,message:`成稿小节超出主题块数:「${c.title}」成稿 ${e.length} 个小节、规划主题块 ${d.length} 个${g.length?`;规划外小节:${g.slice(0,5).join("、")}`:""}`,suggestion:"成稿 H3 小节必须与规划主题块一一对应(拆半块合并为一个小节):规划外小节属相邻主题块内容时并入归属小节并降为 H4,无归属时整节删除;修复后小节编号按正文顺序自动重排。"})}return b}function ac(a){return`${a.fieldName||a.key} ${(0,p.lG)(a.value)}`.replace(/\s+/gu," ").trim()}function ad(a){let b=new Set;for(let c of[/\d+\s*日历天(?!内)/gu,/(?:计划工期|合同工期|总工期|工期|施工周期)[^\n。;;]{0,12}\d+\s*天/gu,/(?:计划工期|合同工期|总工期|工期|施工周期)[^\n。;;]{0,12}\d+\s*(?:个月|月)/gu])for(let d of a.matchAll(c)){let a=d[0].match(/\d+\s*(?:日历天|天|个月|月)/u)?.[0]?.replace(/\s+/gu,"");a&&b.add(a)}return[...b]}let ae=/占地|用地|地下|地上|办公|生活|附属|辅助|绿化|道路|广场|门卫|配电|泵房|锅炉房|车库|车棚|岗亭|传达|警卫|样板房|售楼|门房|单栋|各栋|楼层|每层|单层|架空|雨棚|堆场/u,af=/办公区|生活区|加工区|施工区|堆场|门卫|配电|泵房|锅炉房|车库|车棚|岗亭|传达|警卫|样板房|售楼|门房|地下室|楼层|单层|每层|架空|雨棚/u,ag=/暂列|暂估|费率|税率|利润|规费|安全文明|措施费|人工费|材料费|机械费|管理费|暂定/u,ah=["地下建筑面积与地上建筑面积的分项指标","配套用房与附属用房的建筑面积","占地面积与绿化面积的用地指标"],ai=["总建筑面积的总体规模指标","建设规模的总量数值"],aj=["暂列金额与暂估价的子项费用","人工费与材料费的分项费用"],ak=["合同估算价的总金额口径","投资估算的总体金额"];async function al(a){return(0,t.A)({prototypes:[...ah],negativePrototypes:[...ai],embedDocuments:a})}async function am(a){return(0,t.A)({prototypes:[...aj],negativePrototypes:[...ak],embedDocuments:a})}async function an(a,b,c,d,e,f){let g=[],h=[],i=new Set,j=RegExp(`(?:${b.source})(?:[^\\n。;;,,]{0,14}?)(\\d{2,}(?:[.,]\\d+)?\\s*万?)\\s*(${c.source})`,"giu"),k=[...a.matchAll(j)],l=f?k.filter(b=>{let c=b[0].slice(0,b[0].indexOf(b[1])),f=a.slice(Math.max(0,(b.index??0)-16),b.index??0);return!(d&&d.test(c)||e&&e.test(f))}).map(b=>{let c=b[0].slice(0,b[0].indexOf(b[1])),d=a.slice(Math.max(0,(b.index??0)-16),b.index??0);return{index:b.index??0,context:`${d}${c}`.replace(/\s+/gu,"").slice(-24)}}):[],m=l.length>0?await f(l.map(a=>a.context)):[],n=new Set(l.filter((a,b)=>m[b]).map(a=>a.index));for(let c of k){let f=c[1].replace(/[,,]/gu,"").replace(/\s+/gu,""),j=c[2],k=c[0].slice(0,c[0].indexOf(c[1])),l=a.slice(Math.max(0,(c.index??0)-16),c.index??0);if(d&&d.test(k)||e&&e.test(l)||n.has(c.index??0)){h.push({value:f,unit:j,scope:c[0].slice(0,k.length).replace(/\s+/gu,""),context:`${l}${k}`.replace(/\s+/gu,"").slice(-24)});continue}let m=c[0].match(b)?.[0]||"",o=`${f}|${j}`;!f||i.has(o)||(i.add(o),g.push({value:f,unit:j,scope:m}))}return{entries:g,skipped:h}}function ao(a,b){return an(a,aq,ar,ae,af,b).then(({entries:b})=>{let c=b.find(a=>"建筑面积"===a.scope.replace(/^总/u,""));return/占地|用地/u.test(a)?c:b[0]})}function ap(a){let b=a.value.replace(/[,,]/gu,"").trim(),c=/^([\d.]+)万/u.exec(b),d=c?1e4*Number(c[1]):Number(b);return Number.isFinite(d)?/亿元/u.test(a.unit)?1e8*d:/万元/u.test(a.unit)?1e4*d:d:NaN}let aq=/(?<![地上地下门卫室值班室配电室配电房泵房水泵房锅炉房公厕车库车棚岗亭传达室警卫室样板房售楼处门房])总?建筑面积|总?建设规模/u,ar=/㎡|m²|m2|平方米/u,as=/合同估算价|合同估算价格|投资估算|最高投标限价|招标控制价|工程总投资|总投资|工程造价/u,at=/万元|亿元/u;async function au(a,b,c,d,e){let f=[],g=await al(e),h=await am(e),i=a=>c?.find(b=>b.kind===a&&b.resolution&&"low"!==b.confidence)?.resolution,j=a=>{let b=/(\d+(?:\.\d+)?)\s*(㎡|m²|m2|平方米|万元|亿元)/u.exec(a);return b?{value:b[1],unit:b[2]}:void 0},k=i("duration")??b.schedule.map(ac).find(a=>/\d+\s*(?:日历天|天|个月|月)|计划工期|合同工期/u.test(a)),l=b.quality.map(ac).find(a=>/质量|合格|优良/u.test(a));if(k){let b=ad(k)[0],c=a.split("\n").filter(a=>!/^\s*\|/u.test(a.trim())).join("\n"),d=[];for(let a of c.matchAll(/(?:计划工期|合同工期|总工期|工期|施工周期)[^\d。;;\n|]{0,18}(\d{1,4})\s*日历天/gu)){let e=c.slice(Math.max(0,(a.index||0)-8),a.index||0)+a[0];if(/顺延|延长|展期|不超过|不大于|最多|累计|第\d+日/u.test(e)||/基坑|支护|桩基|土方|基础|主体|装饰|装修|安装|室外|分项|分阶段|阶段|关键线路|单层|每层|地下室|砌体|二次结构|收尾|调试/u.test(e))continue;let f=`${a[1]}日历天`;f===b||d.includes(f)||d.push(f)}b&&d.length>=1&&f.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`跨章一致性冲突:正文出现与资料工期不一致的表述 ${d.slice(0,6).join("、")}`,suggestion:`请统一使用资料中的工期口径:${k}`})}l&&!/质量标准|质量目标|合格|优良/u.test(a)&&(d&&[...d.values()].some(a=>a.contentNeeds.quality)||f.push({level:"error",message:"跨章一致性缺口:正文未稳定体现资料中的质量目标",suggestion:`请在工程概况、质量保证和验收相关章节统一体现:${l}`}));let m=i("area"),n=b.project.map(ac).filter(a=>/建设规模|建筑面积/u.test(a)),o=await Promise.all(n.map(a=>ao(a,g))),p=m??n.find((a,b)=>void 0!==o[b]);if(p){let c=m?j(m):await ao(p,g),{entries:d,skipped:e}=await an(a,aq,ar,ae,af,g);if(c){let a=d.filter(a=>ap(a)!==ap(c));a.length>=1&&f.push({level:"error",message:`跨章一致性冲突:正文出现与资料建设规模不一致的表述 ${a.slice(0,6).map(a=>`${a.value}${a.unit}`).join("、")}`,suggestion:`请统一使用资料中的建设规模口径:${p.slice(0,80)}`})}if(e.length>0){let a=[m?`建筑总量裁决值:${m}`:"",...b.project.map(ac).filter(a=>/建设规模|建筑面积|占地/u.test(a)).slice(0,3)].filter(Boolean);f.push({level:"warning",severity:"warning",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`规模口径复核:正文 ${e.slice(0,3).map(a=>`“${a.context.slice(-14)}${a.value}${a.unit}”`).join("、")} 等 ${e.length} 处数值与口径词之间混入子项/专项口径词,需核对口径归属`,suggestion:`依据项目规模事实卡逐处核对该数值的口径归属(${a.join(";")||"无可用事实卡,以绑定资料原文为准"}):与事实卡对应口径一致的数值保留原样,口径错位或数值不一致的数值改正为事实卡对应口径值,不得把子项/专项口径数值改成建筑总量数值。`})}}let q=i("cost"),r=q??b.project.map(ac).find(a=>/合同估算|投资估算|最高投标限价|招标控制价|总投资|工程造价/u.test(a));if(r){let b=q?j(q):(await an(r,as,at,ag,void 0,h)).entries[0],c=(await an(a,as,at,ag,void 0,h)).entries;if(b){let a=c.filter(a=>ap(a)!==ap(b));a.length>=1&&f.push({level:"error",message:`跨章一致性冲突:正文出现与资料估算价不一致的表述 ${a.slice(0,6).map(a=>`${a.value}${a.unit}`).join("、")}`,suggestion:`请统一使用资料中的估算价口径:${r.slice(0,80)}`})}}let s=new Map;for(let b of a.matchAll(RegExp(`(${/挖掘机|压路机|自卸车|蛙夯|搅拌车|洒水车|高空车/u.source})[^\\d。;;\\n|、,]{0,12}(\\d+)\\s*[台辆]`,"gu"))){let c=b[1],d=b[2],e=a.slice(Math.max(0,(b.index||0)-20),b.index||0),f=/组|本组|每组|村/u.test(e)?`${c}@group`:c,g=s.get(f)||[];g.includes(d)||g.push(d),s.set(f,g)}for(let[a,b]of s){if(b.length<2)continue;let c=a.endsWith("@group"),d=a.replace(/@group$/u,""),e=b.join("、");c?f.push({level:"warning",severity:"warning",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`设备分组口径提示:正文「${d}」存在分组配置台数 ${e} 多值并存,需注明分组与全项目总量的调度关系`,suggestion:`分组配置(组/村级)与全项目总量并存时,必须在正文注明「本组配置、按总表调度」或明确分组数量与总量数量之间的对应关系,避免评标误读为口径矛盾。`}):f.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`跨章一致性冲突:正文「${d}」配置台数出现互相矛盾的取值 ${e}`,suggestion:`全项目「${d}」配置总量必须全文唯一:以全项目机械配置总表为准统一全部表述;分组配置必须显式注明「本组配置、按总表调度」并删除与总表矛盾的全项目口径数字。`})}for(let{label:b,re:c,contextAware:d}of[{label:"隔油池数量",re:/隔油池[^\d。;;\n|::,,、]{0,6}(\d+)\s*座/gu},{label:"挖沟槽土方",re:/挖沟槽[^\d。;;\n|]{0,15}([\d,]+(?:\.\d+)?)\s*m[³3]/gu,contextAware:!0}]){let e=[];for(let b of a.matchAll(c)){let c=b[1].replace(/,/gu,"");e.some(a=>a.value===c)||e.push({value:c,context:a.slice(Math.max(0,(b.index||0)-24),b.index||0)})}if(e.length>=2){if(d&&e.every((a,b)=>e.slice(b+1).every(b=>6>(0,u.qr)(a.context,b.context))))continue;let a=e.map(a=>a.value).join("、");f.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`跨章一致性冲突:正文${b}出现互相矛盾的取值 ${a}`,suggestion:`${b}必须全文唯一:以工程量清单为最高优先级裁定正确值,将正文全部相关表述统一为该值,并删除其余矛盾口径。`})}}if(k){let b=ad(k)[0],c=Number(/(\d+)\s*(?:日历天|天)/u.exec(b||"")?.[1]);for(let b of a.matchAll(/各阶段工期(?:分别)?为?\s*[::]?\s*([\d]+(?:\s*[、,,]?\s*\d+)*)\s*(?:天|日历天)/gu)){let a=b[1].split(/[、,,]/u).map(a=>Number(a.trim())).filter(a=>Number.isFinite(a)).reduce((a,b)=>a+b,0);Number.isFinite(c)&&a>0&&a!==c&&f.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`跨章一致性冲突:正文各阶段工期文字表述(${b[1]}天)合计 ${a} 天,与总工期 ${c} 天不符`,suggestion:`各阶段工期加总必须等于总工期 ${c} 天:核对各阶段天数并修正文字表述,或与阶段计划表保持一致。`})}}for(let b of a.matchAll(/每间(?:可)?容纳\s*(\d+)\s*人/gu)){let a=Number(b[1]);a>=100&&f.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`逻辑校验失败:正文出现「每间容纳 ${a} 人」的宿舍配置表述,单间宿舍不可能容纳 100 人以上`,suggestion:`宿舍容纳人数按单间 4~8 人配置计算间数(如高峰 216 人按每间 8 人需 27 间),修正配置表述为「每间 X 人、共 Y 间,满足高峰在场人数」的完整口径。`})}for(let b of a.matchAll(/第(\d+)\s*日\s*[~~—至到]\s*第(\d+)\s*日/gu))b[1]===b[2]&&f.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`逻辑校验失败:正文出现「第 ${b[1]} 日~第 ${b[2]} 日」的零长度区间表述`,suggestion:`起止日相同的区间属笔误:按该事项所属施工阶段的实际起止日修正(如进场时间应为阶段开始前)。`});return f}let av=/找平层|抹灰层|防水层|保温层|结合层|垫层|面层|粘结层|隔热层|隔离层/gu,aw=/铺设|施工|浇筑|粘贴|铺贴|涂抹|完成|进行|待|设置|铺装|挂网|喷涂|灌注/u,ax=["施工过程与工序动作的先后描述","铺设浇筑完成后再进行的工序"],ay=["结构层的厚度与配比参数","找平层厚20毫米的规格"];async function az(a){return(0,t.A)({prototypes:[...ax],negativePrototypes:[...ay],embedDocuments:a})}async function aA(a,b){let c=[],d=[...a.matchAll(av)],e=[],f=(a,b)=>e.some(([c,d])=>a<d&&b>c),g=[],h=(a,d,h,i,j,k)=>{let l=[...a.matchAll(h)];for(let h of"first"===i?l:[...l].reverse()){let l=d+(h.index??0),m=l+h[0].length;if(f(l,m))continue;let n="first"===i?a.slice(0,h.index??0):a.slice((h.index??0)+h[0].length);if(!aw.test(n)){if("thickness"===k){let a=Number(h[1]??"");if(!Number.isFinite(a)||a<=0||a>=1e3)continue}b&&n.trim()&&g.push({key:`${j}|${l}|${m}`,gap:n}),e.push([l,m]),c.push({layer:j,span:[l,m],raw:h[0],kind:k});return}}};for(let b=0;b<d.length;b+=1){let c=d[b],e=c[0],f=c.index??0,g=f+e.length,i=d[b+1]?.index,j=void 0===i?Math.min(a.length,g+90):i,k=a.slice(g,j),l=b>0?(d[b-1].index??0)+d[b-1][0].length:Math.max(0,f-40),m=a.slice(l,f);h(k,g,/(\d+:\d+(?:\.\d+)?)/gu,"first",e,"ratio"),h(m,l,/(\d+:\d+(?:\.\d+)?)/gu,"last",e,"ratio"),h(k,g,/(\d+(?:\.\d+)?)\s*mm/gu,"first",e,"thickness"),h(m,l,/(\d+(?:\.\d+)?)\s*mm/gu,"last",e,"thickness")}if(b&&g.length>0){let a=await b(g.map(a=>a.gap)),d=new Set(g.filter((b,c)=>a[c]).map(a=>a.key));return c.filter(a=>!d.has(`${a.layer}|${a.span[0]}|${a.span[1]}`))}return c}async function aB(a,b){let c=[],d=new Set;for(let e of(await aA(a,b))){let a="ratio"===e.kind?e.raw.match(/(\d+:\d+(?:\.\d+)?)/u)?.[1]:void 0,b="thickness"===e.kind?e.raw.match(/(\d+(?:\.\d+)?)/u)?.[1]:void 0,f=b?Number(b):void 0,g=`${e.layer}|${a||""}|${f??""}`;d.has(g)||(d.add(g),c.push({layer:e.layer,ratio:a,thickness:f}))}return c}async function aC(a,b,c){let d=[],e=await az(c),f=[...b.specifications,...b.quality,...b.preciseFacts,...b.bills].map(ac).join("\n"),g=await aB(f,e);if(0===g.length)return d;let h=new Map;for(let a of g){let b=h.get(a.layer)||[];b.push(a),h.set(a.layer,b)}let i=await aB(a,e),j=new Set;for(let[a,b]of h){let c=[...new Set(b.map(a=>a.ratio).filter(Boolean))],e=[...new Set(b.map(a=>a.thickness).filter(a=>Number.isFinite(a)))];for(let b of i.filter(b=>b.layer===a)){if(1===c.length&&b.ratio&&b.ratio!==c[0]){let e=`ratio|${a}|${b.ratio}`;j.has(e)||(j.add(e),d.push({level:"error",message:`工序规格冲突:正文${a}配比 ${b.ratio} 与资料口径 ${c[0]} 不一致`,suggestion:`请将${a}配比统一为资料口径 ${c[0]},禁止改写资料规格。`}))}if(1===e.length&&Number.isFinite(b.thickness)&&b.thickness!==e[0]){let c=`thickness|${a}|${b.thickness}`;j.has(c)||(j.add(c),d.push({level:"error",message:`工序规格冲突:正文${a}厚度 ${b.thickness}mm 与资料口径 ${e[0]}mm 不一致`,suggestion:`请将${a}厚度统一为资料口径 ${e[0]}mm。`}))}}}return d}async function aD(a,b,c){let d=await al(c),e=await am(c),f=await az(c),g=[...a.specifications,...a.quality,...a.preciseFacts,...a.bills].map(ac).join("\n"),h=new Map;for(let a of(await aB(g,f))){let b=h.get(a.layer)||{ratios:[],thicknesses:[]};a.ratio&&!b.ratios.includes(a.ratio)&&b.ratios.push(a.ratio),Number.isFinite(a.thickness)&&!b.thicknesses.includes(a.thickness)&&b.thicknesses.push(a.thickness),h.set(a.layer,b)}let i=new Map;for(let[a,b]of h)(1===b.ratios.length||1===b.thicknesses.length)&&i.set(a,{ratio:1===b.ratios.length?b.ratios[0]:void 0,thickness:1===b.thicknesses.length?b.thicknesses[0]:void 0});let j=a=>b?.find(b=>b.kind===a&&b.resolution&&"low"!==b.confidence)?.resolution,k=a=>{let b=/(\d+(?:\.\d+)?)\s*(㎡|m²|m2|平方米|万元|亿元)/u.exec(a);return b?{value:b[1],unit:b[2]}:void 0},l=j("area"),m=a.project.map(ac).filter(a=>/建设规模|建筑面积/u.test(a)),n=await Promise.all(m.map(a=>ao(a,d))),o=l??m.find((a,b)=>void 0!==n[b]),p=j("cost"),q=p??a.project.map(ac).find(a=>/合同估算|投资估算|最高投标限价|招标控制价|总投资|工程造价/u.test(a));return{specTargets:i,scaleTarget:o?l?k(l):await ao(o,d):void 0,costTarget:q?p?k(p):(await an(q,as,at,ag,void 0,e)).entries[0]:void 0,scaleGapGate:d,costGapGate:e,actionGate:f}}async function aE(a,b){let c=[];for(let d of(await aA(a,b.actionGate))){let a=b.specTargets.get(d.layer);if(a){if("ratio"===d.kind&&a.ratio){let b=d.raw.match(/(\d+:\d+(?:\.\d+)?)/u)?.[1];b&&b!==a.ratio&&c.push({start:d.span[0],end:d.span[1],replacement:d.raw.replace(/(\d+:\d+(?:\.\d+)?)/u,a.ratio),detail:`${d.layer}配比 ${b}→${a.ratio}`})}if("thickness"===d.kind&&Number.isFinite(a.thickness)){let b=Number(d.raw.match(/(\d+(?:\.\d+)?)/u)?.[1]);Number.isFinite(b)&&b!==a.thickness&&c.push({start:d.span[0],end:d.span[1],replacement:d.raw.replace(/(\d+(?:\.\d+)?)/u,String(a.thickness)),detail:`${d.layer}厚度 ${b}mm→${a.thickness}mm`})}}}let d=async(b,d,e,f,g,h,i)=>{if(!b)return;let j=RegExp(`(?:${d.source})(?:[^\\n。;;,,]{0,14}?)(\\d{2,}(?:[.,]\\d+)?\\s*万?)\\s*(${e.source})`,"giu"),k=[...a.matchAll(j)],l=i?k.filter(b=>{let c=b[0].slice(0,b[0].indexOf(b[1])),d=a.slice(Math.max(0,(b.index??0)-16),b.index??0);return!(g&&g.test(c)||h&&h.test(d))}).map(b=>{let c=b[0].slice(0,b[0].indexOf(b[1])),d=a.slice(Math.max(0,(b.index??0)-16),b.index??0);return{index:b.index??0,context:`${d}${c}`.replace(/\s+/gu,"").slice(-24)}}):[],m=l.length>0?await i(l.map(a=>a.context)):[],n=new Set(l.filter((a,b)=>m[b]).map(a=>a.index));for(let d of k){let e=d[0].slice(0,d[0].indexOf(d[1])),i=a.slice(Math.max(0,(d.index??0)-16),d.index??0);if(g&&g.test(e)||h&&h.test(i)||n.has(d.index??0))continue;let j={value:d[1].replace(/[,,]/gu,"").replace(/\s+/gu,""),unit:d[2]};if(ap(j)===ap(b))continue;let k=(d.index??0)+d[0].indexOf(d[1]),l=k+d[1].length;c.some(a=>a.start<l&&a.end>k)||c.push({start:k,end:l,replacement:b.value,detail:`${f} ${j.value}${j.unit}→${b.value}${j.unit}`})}};if(await d(b.scaleTarget,aq,ar,"建设规模",ae,af,b.scaleGapGate),await d(b.costTarget,as,at,"估算价",ag,void 0,b.costGapGate),0===c.length)return{content:a,fixedCount:0,details:[]};c.sort((a,b)=>b.start-a.start);let e=a;for(let a of c)e=e.slice(0,a.start)+a.replacement+e.slice(a.end);return{content:e,fixedCount:c.length,details:c.map(a=>a.detail)}}async function aF(a,b,c,d){let e=await aD(b,c,d);if(0===e.specTargets.size&&!e.scaleTarget&&!e.costTarget)return{fixedCount:0,details:[]};let f=0,g=[];for(let b of a){let a=await aE(b.content,e);a.fixedCount>0&&(b.content=a.content,f+=a.fixedCount,g.push(...a.details))}return{fixedCount:f,details:g}}async function aG(a,b,c,d){let e=await aD(b,c,d);if(0===e.specTargets.size&&!e.scaleTarget&&!e.costTarget)return{markdown:a,fixedCount:0,details:[]};let f=await aE(a,e);return{markdown:f.content,fixedCount:f.fixedCount,details:f.details}}async function aH(a){let{closedLoopBlocks:b}=await (0,s.Pm)(a),c=Math.max(6,Math.ceil((0,g.V7)(a)/1500));return b>=c?[]:[{level:"warning",message:`可落地性闭环句式密度不足:全文 ${b} 段完整闭环句式,未达每 1500 字 1 段(目标 ${c} 段)`,suggestion:"在措施类段落中补齐“责任岗位 + 检查频次 + 整改闭环”三要素齐全的闭环句式:同一自然段内同时出现岗位(如项目经理/质检员/安全员)、频次(每日/每周/不少于X次)与闭环(整改/复查/销项)。"}]}function aI(a,b){let c=[],d=/(?:三检制|三级教育|三级管理|5S|24\s*小时|每日|每周|每月|一次|两次)/gu;for(let e of a){let a=[...new Set(e.content.match(d)||[])];if(a.length<3)continue;let f=b?.get(e.title);f&&(f.closedLoop||c.push({level:"warning",message:`${e.title} 管理措施数字较多但缺少执行闭环:${a.slice(0,8).join("、")}`,suggestion:"这些管理数字可以保留,但需要补充责任主体、检查频次、记录台账、整改复查和闭环要求。"}))}return c}function aJ(a,b){let c=/(?:加强组织领导|严格执行规范|落实责任制度|确保工程质量|强化过程管理|提高思想认识|完善管理体系|形成闭环管理)/gu,d=[];for(let e of a){if((e.content.match(c)||[]).length<6)continue;let a=b?.get(e.title);a&&(a.concrete||d.push({level:"error",message:`${e.title} 存在较多未绑定项目事实和工序控制点的泛化套话`,suggestion:"请替换为结合资料事实、施工对象、工序控制、验收资料和整改闭环的专业内容。",chapterId:e.id}))}return d}function aK(a){return[[...a.project,...a.schedule,...a.quality,...a.safety,...a.resources,...a.preciseFacts,...a.bills,...a.drawings,...a.rules,...a.specifications].map(ac).join("\n"),...a.tables.flatMap(a=>[...a.headers,...a.rows.flat()])].join("\n")}function aL(a,b,c){let d=`${a} ${b}`;if(/(?:工日|人日|次|台|套|个|人|层|间|批|项|处|座|栋|根|只|组|件|块|片|面|条|道|樘|扇|盏|节|段)$/u.test(a)||/三检制|三级|5S|24\s*小时|每日|每周|每月|一次|两次|责任制|制度/u.test(d)||/暂列金额|暂估价|报价|单价|合价|综合单价|税率|增值税|预留金/u.test(d)||/^\d+(?:\.\d+)?(?:月|年)$/u.test(a)&&/开工|竣工|日期|计划|年|月/u.test(b))return"soft";let e=c??b;return/(?:天|工作天|月|年)$/u.test(a)&&/总工期|计划工期|合同工期|日历天|施工周期/u.test(e)&&!/阶段|历时|用时|合计|总计|共计|累计|预留|机动|余量|剩余|养护|编制|提交|签订|划分|闭合|控制基准|持续时间|关键|节点/u.test(`${e}${b}`)||/(?:万元|亿元|元)$/u.test(a)&&/最高投标限价|招标控制价|合同估算价|投资估算|报价|金额|人民币/u.test(e)||/(?:m2|hm2|亩|㎡|m²|平方米)$/u.test(a)&&/建设规模|总建筑面积|总用地面积|总占地面积/u.test(e)?"scope":/(?:工程量|清单|建设规模|建筑面积|长度|材料|设备|规格|型号).{0,24}(?:m²|㎡|m3|m³|米|吨|套|台|个|项|%)/u.test(d)?"spec":/GB\s*\d|JGJ\s*\d|CJJ\s*\d|ISO\s*\d|GB\/T|CECS\s*\d|DL\s*\d|YB\s*\d|SH\s*\d|SJ\/T\s*\d|CJJ\/T\s*\d|DB\s*\d/u.test(d)?"soft":/标准|规范|编号/u.test(d)?"spec":"soft"}function aM(a){let b=[];for(let c of(0,h.zn)(a)){if(/^\d+\.\d+$/u.test(c))continue;let d=(0,h.K3)(c),e=a.indexOf(c);if(e<0){let b=/^\d+(?:\.\d+)?/u.exec(c)?.[0];e=b?a.indexOf(b):-1}if(e<0)continue;let f=a.lastIndexOf("\n",e-1)+1,g=a.indexOf("\n",e),i=a.slice(f,g<0?a.length:g);if(/^\s*\|/u.test(i.trim()))continue;let j=a.slice(Math.max(0,e-36),Math.min(a.length,e+c.length+36));if(/违约金|延期竣工|解除合同|缺陷责任期|质量保证金|质保金|履约保证金|保修期/u.test(j))continue;let k=a.slice(Math.max(0,e-16),e);/(?:阶段|缓冲|累计)\s*\d*$/u.test(k)||b.push({token:c,normalizedToken:d,context:j,prefix:k})}return b}function aN(a){let{markdown:b,factsModel:c,scopeSuspicious:d,specSuspicious:e,softSuspicious:f}=a,g=[],h=[...new Set(d)],i=[...new Set(e)],j=[...new Set(f)];return h.length>=1&&g.push({level:"error",message:`生成后事实反查失败:正文出现资料事实主表中未找到的总量口径数字 ${h.slice(0,8).join("、")}`,suggestion:"总量口径数字(工期/金额/建设规模)必须与资料一致;请删除或改写为资料确认的口径,禁止编造。"}),i.length>=2&&g.push({level:"warning",message:`生成后事实反查提示:正文出现资料事实主表中未找到的规格明细数字 ${i.slice(0,8).join("、")}`,suggestion:"建议复核这些规格是否来自管理制度、规范要求或资料事实;如无依据,改为定性管理要求。"}),j.length>=6&&g.push({level:"warning",message:`生成后事实反查提示:正文出现较多未在资料事实主表中反查到的管理数字 ${j.slice(0,10).join("、")}`,suggestion:"请确认这些管理数字属于通用制度、规范要求或项目资料事实;如无依据,建议改为定性管理要求。"}),/质量目标|质量标准/u.test(b)&&c.quality.length>0&&!c.quality.some(a=>b.includes((0,p.lG)(a.value).slice(0,18)))&&g.push({level:"warning",message:"生成后事实反查提示:正文质量目标表述未明显匹配质量事实主表",suggestion:"请使用资料中的质量目标原文或等价表述。"}),g}let aO=/(?:天|工作天|日历天|月|年|万元|亿元|元|m2|hm2|亩|㎡|m²|平方米)$/u;function aP(a,b){let c=aK(b);if(80>(0,g.V7)(c))return[];let d=(0,h.K3)(c),e=[],f=[],i=[];for(let b of aM(a)){let{token:a,normalizedToken:c,context:g,prefix:h}=b,j=aL(a,g,h);"scope"!==j||d.includes(c)||e.push(a),"spec"!==j||d.includes(c)||f.push(a),"soft"!==j||d.includes(c)||i.push(a)}return aN({markdown:a,factsModel:b,scopeSuspicious:e,specSuspicious:f,softSuspicious:i})}async function aQ(a,b,c){let d,e=aK(b);if(80>(0,g.V7)(e))return[];let f=(0,h.K3)(e),i=aM(a),j=i.filter(a=>aO.test(a.token));if(j.length>0){let a=await c.scopeClassifier.batchClassify(j.map(a=>`${a.token} ${a.context}`.slice(0,160)));d=new Map,j.forEach((b,c)=>d.set(b.token,a[c]||"other"))}let k=[],l=[],m=[];for(let a of i){let{token:b,normalizedToken:c,context:e,prefix:g}=a,h=aL(b,e,g);if(d&&aO.test(b)){let a=d.get(b)||"other";"scope"===h?h="scope"===a?"scope":"soft":"scope"===a&&/总工期|计划工期|合同工期|日历天|施工周期/u.test(e)&&!/阶段|历时|用时|合计|总计|共计|累计|预留|机动|余量|剩余|养护|编制|提交|签订|划分|闭合|控制基准|持续时间|关键|节点/u.test(e)&&(h="scope")}"scope"!==h||f.includes(c)||k.push(b),"spec"!==h||f.includes(c)||l.push(b),"soft"!==h||f.includes(c)||m.push(b)}return aN({markdown:a,factsModel:b,scopeSuspicious:k,specSuspicious:l,softSuspicious:m})}function aR(a,b){let c=[],d=["factuality","structure","depth","executable","specificity","consistency"];for(let f of a){var e;let a=f.content;if(800>(0,g.V7)(a))continue;let h=(e=f.title,/概况|工程|项目/u.test(e)?{min:5,focus:"事实依据、项目特异性"}:/部署|总体|组织/u.test(e)?{min:6,focus:"组织结构、可执行闭环、跨章一致性"}:/进度|工期/u.test(e)?{min:6,focus:"进度结构、工期一致性、纠偏机制"}:/质量/u.test(e)?{min:6,focus:"质量深度、验收复验、资料闭环"}:/安全|文明|危大|风险/u.test(e)?{min:6,focus:"风险覆盖、应急响应、检查整改"}:/资源|材料|设备|劳动力/u.test(e)?{min:5,focus:"资源依据、进场调配、进度支撑"}:{min:4,focus:"事实依据、专业深度、可执行性"}),i=b?.get(f.title);if(!i)continue;let j=2*d.filter(a=>i.dimensions[a]).length;if(j<h.min){let a=d.filter(a=>!i.dimensions[a]).join("、")||h.focus;c.push({level:"warning",message:`${f.title} 专业评分不足:${j}/12,薄弱维度:${a}`,suggestion:`请按章节任务卡补齐${h.focus},并写出资料依据、实施流程、专业控制点和检查整改闭环。`,chapterId:f.id})}}return c}function aS(a,b){let c=[{re:/进度|工期/u,needKey:"schedule",need:/关键线路|穿插|纠偏|资源保障|节点|动态调整/u,message:"进度工期章节缺少关键线路、穿插施工或纠偏保障内容"},{re:/质量/u,needKey:"quality",need:/材料.*验收|复验|隐蔽验收|整改.*复验|质量.*资料|检验批/u,message:"质量章节缺少材料验收复验、隐蔽验收或整改复验闭环"},{re:/安全|文明|危大|风险/u,needKey:"safety",need:/风险|临电|消防|应急|检查.*整改|文明施工|人员|设备/u,message:"安全文明章节缺少风险识别、现场控制或应急检查闭环"},{re:/资源|材料|设备|劳动力/u,needKey:"resource",need:/进场|验收|调配|保管|供应|投入计划/u,message:"资源章节缺少进场、验收、调配或保管计划"},{re:/施工|工艺|技术|方案/u,needKey:"construction",need:/准备|流程|工艺|控制点|验收|交底/u,message:"施工技术章节缺少施工准备、工艺流程、控制点或验收要求"}],d=[];for(let e of a){if(600>(0,g.V7)(e.content))continue;let a=b?.get(e.title);if(a)for(let b of c)!b.re.test(e.title)||"construction"===b.needKey&&c.some(a=>"construction"!==a.needKey&&a.re.test(e.title))||"construction"===b.needKey&&/总平面|平面布置|布置图/u.test(e.title)||!("resource"===b.needKey&&/劳动力/u.test(e.title)&&!/资源|材料|设备/u.test(e.title)&&/进场|入场|退场|调配|轮转/u.test(e.content))&&(a.contentNeeds[b.needKey]||d.push({level:"error",message:`${e.title}:${b.message}`,suggestion:"请按专业任务卡定向补写该章节,补齐可实施的控制措施、资料依据和闭环要求。",chapterId:e.id}))}return d}function aT(a,b){return!!(/万元|元|报价|单价|合价|综合单价|预留金|税率|增值税|利润|结算/u.test(`${a} ${b}`)||/OCR|识别错误|乱码|无法确认|疑似|不确定|语义断裂|页码|目录/u.test(b)||/^\d+$/.test(a)&&10>Number(a)||/^\d+(?:\.\d+)+\s*(?:项|个|份|页|批|次|条|款)$/u.test(a)||/^\d+\s*页$/u.test(a)||/^(?:COL|R\d+C)\d*$/iu.test(a)||/^[A-Za-z]\.\d+$/u.test(a)||/^[\d.]+\s*(?:天|日)$/u.test(a)&&/期限/u.test(b)||/之日起.{0,8}天内|天内.{0,10}(?:发出|提交|通知|回复|答复|完成|开工|竣工|报送|支付|更换)|天以上|天及以上|‰|暂扣|履约保证金|通过后.{0,6}天|因发包人原因|因承包人原因|未能按时|逾期|违约金/u.test(b))}function aU(a,b){let c=0;for(let d of a)b.includes(d.replace(e.ug,""))&&(c+=1);return c}let aV=/日历天|个月|㎡|m²|m3|m³|MPa|kPa|kN|GB\/T|GB|JGJ|ISO|DN|φ|Φ|米\/秒|天$/u;async function aW(a,b,c=[]){let d=[],g=a.replace(e.ug,""),h=function(a){let b=new Set;for(let c of a)for(let a of c.evidence||[]){if(/bill_of_quantities|boq/u.test(`${a.roleId||""}`))continue;let c="string"==typeof a.content?a.content:"";for(let a of c.matchAll(e.No)){let d=a[0].trim();if(!d||/^\d{4}\s*年$/u.test(d)||/^\d{1,2}\s*月$/u.test(d))continue;let e=a.index||0,f=c.slice(Math.max(0,e-40),e+d.length+40);aT(d,f)||b.add(d)}}return[...b]}(c),i=h.length>=e.mu?h:function(a){let b=new Set;for(let c of a.preciseFacts){if("bill_of_quantities"===c.roleId)continue;let a=`${c.processingType||""} ${c.roleId} ${c.sourceFile}`;if(!e.FM.test(a)&&"precise_fact"!==c.roleId)continue;let d=`${c.key} ${c.fieldName||""} ${c.value}`;for(let a of d.matchAll(e.No)){let c=a[0].trim();aT(c,d)||b.add(c)}}return[...b]}(b),j=aU(i,g);i.length>=e.mu&&j/i.length<e.tg&&d.push({level:"warning",message:`可靠精确参数使用不足:${j}/${i.length}`,suggestion:"请将资料中可靠的规格、参数、数量、时间、比例和标准编号写入对应章节;商务金额、单价、税率、预留金不得写入正文。"});let k=function(a){let b=[...a].sort((a,b)=>a.localeCompare(b,"zh")),c=b.filter(a=>aV.test(a)),d=b.filter(a=>!aV.test(a));return[...c.slice(0,8),...d.slice(0,2)].slice(0,10)}(i);if(k.length>=6){let b=aU(k,g),c=k.filter(a=>!g.includes(a.replace(e.ug,"")));if(c.length>0&&b/k.length<.5){let d=a.split(/[。;;|]/u).map(a=>a.trim()).filter(a=>a.length>=6&&a.length<=160).slice(0,300);if(d.length>0){let a=await (0,f.Mv)(c.slice(0,10),d);c=c.filter(b=>!d.some(c=>a(b,c)>=.6)),b=k.length-c.length}}if(b/k.length<.5){let a=c.slice(0,3);d.push({level:"error",message:`可靠精确参数使用不足:关键参数抽查 ${b}/${k.length}${a.length?`(缺失如 ${a.join("、")})`:""}`,suggestion:"请将资料中的关键工程参数(工期、面积、强度等级、材料规格、规范编号等)写入正文对应章节,不得因参数总量达标而遗漏核心参数。"})}}return b.bills.length>0&&!e.pP.test(a)&&d.push({level:"error",message:"正文未体现结构化数据资料",suggestion:"请从表格、列表或明细中提取对象、单位、数量、规格和关键参数补入对应章节。"}),b.drawings.length>0&&!e._U.test(a)&&d.push({level:"error",message:"正文未体现设计/方案/说明类资料",suggestion:"请从设计、方案或说明资料中提取对象、流程、节点、做法、配置、规则和标准要求。"}),d}async function aX(a,b,c){let d=[],e=c.tables||[];if(0===e.length)return d;let g=a.replace(/\s+/gu,"").toLowerCase(),h=0,i=0,j=[];for(let a of e){let b=a.headers.map(a=>a.replace(/\s+/gu,"").toLowerCase()),c=b.findIndex(a=>/^(?:项目名称|名称|清单项名称|清单项|分部分项(?:工程)?名称|项目特征)/u.test(a)),d=b.findIndex(a=>/^(?:项目编码|编码|编号)/u.test(a)),e=b.findIndex(a=>/^工程量$|^数量$/u.test(a));for(let b of a.rows){let a=c>=0?(b[c]||"").replace(/\s+/gu,""):"",f=d>=0?(b[d]||"").replace(/\s+/gu,""):"",k=e>=0?(b[e]||"").replace(/\s+/gu,""):"";if(!a&&!f){let c=b.findIndex(a=>/^\d{10,12}$/u.test(a)||/^[A-Z]{1,3}\d{8,}$/u.test(a));c>=0&&(f=b[c].replace(/\s+/gu,""),a=(b[c+1]||"").replace(/\s+/gu,""))}if(!a&&!f||/^(?:分部小计|本页小计|小计|合计|总计|总价|合价|按实计算|按实结算|暂估|暂列金额|计日工|规费|税金)$/u.test(a))continue;h+=1;let l=a.length>=3?a.slice(0,Math.min(a.length,16)):"",m=f.length>=3?f.slice(0,Math.min(f.length,12)):"",n=l&&g.includes(l),o=m&&g.includes(m);n||o?i+=1:a.length>=3&&j.push({name:a,quantity:k})}}if(0===h)return d;let k=new Set;if(j.length>0&&i/h<.6){let b=a.split(/[。;;|]/u).map(a=>a.trim()).filter(a=>a.length>=6&&a.length<=160).slice(0,300),c=[...new Set(j.map(a=>a.name))].slice(0,30);if(b.length>0&&c.length>0){let a=await (0,f.Mv)(c,b);for(let d of c)b.some(b=>a(d,b)>=.6)&&k.add(d)}}let l=i+j.filter(a=>k.has(a.name)).length,m=j.filter(a=>!k.has(a.name)),n=l/h,o=m.length>0?`未落位项(共${m.length}项):${m.slice(0,30).map(a=>`${a.name.slice(0,40)}${a.quantity?` ${a.quantity}`:""}(未落位)`).join(";")}${m.length>30?` 及其他${m.length-30}项(同类项按已列名称分组归并补写)`:""}`:"";return n<.6&&d.push({level:"error",message:`清单项落位不足:${l}/${h} 项(${Math.round(100*n)}%)${o?`。${o}`:""}`,suggestion:`请将未落位清单项按专业工程分组补写进对应章节"主要施工内容"小节(融入各专业工程的作业对象与工程量、工序顺序、施工方法叙述),优先落位主要分部分项、关键规格与大额工程量。${o}`}),d}function aY(a,b){let c=[],d=b.drawings||[];if(0===d.length)return c;let e=a.replace(/\s+/gu,"").toLowerCase(),f=[...new Set(d.map(a=>a.sourceFile||"").filter(Boolean))],g=0,h=[];for(let a of f){let b=a.replace(/\.[^.]+$/u,"").replace(/[/\\]/gu,"").toLowerCase(),c=a.split("/").pop()||a;(b.length>=3?e.includes(b.slice(0,Math.min(b.length,12))):/图纸|设计|说明|节点|做法|构造/u.test(e))?g+=1:h.push(c)}if(f.length>0){let a=g/f.length;a<.25?c.push({level:"warning",message:`图纸引用严重不足:${g}/${f.length} 份图纸被正文引用(${Math.round(100*a)}%)`,suggestion:`建议将图纸中的设计说明、构造做法、材料规格和设备参数写入对应章节。未引用图纸:${h.slice(0,5).join("、")}`}):a<.5&&c.push({level:"warning",message:`图纸引用不足:${g}/${f.length} 份(${Math.round(100*a)}%)`,suggestion:`建议补充引用:${h.slice(0,5).join("、")}`})}return c}function aZ(a){let b=[];for(let c of(/【本小节生成未达标,需重新生成】/u.test(a)&&b.push({level:"error",message:"生成未完成:存在未达标小节,需要重新生成或补写后才能导出",suggestion:"请重新生成未达标小节,禁止将占位内容作为正式正文。"}),e.IA))c.test(a)&&b.push({level:"warning",message:`存在占位式表达:${c.source}`,suggestion:"请改写为来自资料的准确事实;资料确实未提供时,改写为正式管理措施,不留空值或“见资料/按文件”。"});return b}function a$(a){return(0,v.LZ)(a).map(a=>({level:"error",message:`小节标题「${a.title}」含本小节正文未覆盖的工程类别:${a.uncovered.join("、")}`,suggestion:"标题中的工程类别必须在小节正文有对应施工内容;请将标题改为与实际施工内容一致的名称,不得照抄工程量清单章节汇总行名称。"}))}function a_(a,b){for(let c of b)try{if(RegExp(c,"iu").test(a))return!0}catch{if(a.includes(c))return!0}return!1}function a0(a,b){let c=`${b.name} ${b.category} ${b.outputTitle} ${b.description}`,f=[];for(let a of(0,d.V)().autoSpecGates)a_(c,a.templateMatchers)&&f.push(a);if(0===f.length)return[];let g=[],h=G(a).length,i=0;for(let b of f){for(let c of(i=Math.max(i,b.minTables||0),b.requiredTexts))a.includes(c)||g.push({level:"warning",message:`配置要求缺少必要内容:${c}`,suggestion:"请按当前模板匹配的专业规则补齐必要内容。"});for(let c of b.forbiddenTexts)(function(a,b){let c="见图纸"===b||"按图纸"===b?["目录","清单","索引","汇总"]:[],d=0;for(;;){let e=a.indexOf(b,d);if(e<0)return!1;let f=a.slice(e+b.length);if(c.some(a=>f.startsWith(a))){d=e+b.length;continue}return!0}})(a,c)&&g.push({level:"error",message:`配置要求不得出现:${c}`,suggestion:"请根据当前模板匹配的专业规则清理正文污染内容。"})}return e.bu.test(a)&&g.push({level:"error",message:"正式正文存在 Markdown 标题符号 #",suggestion:"导出正文应去除 Markdown 标题符号,保留正式标题文字。"}),i&&h<i&&g.push({level:"warning",message:`配置要求正式表格不足:${h}/${i}`,suggestion:"如用户提示词或章节内容要求表格,应按项目资料补充对应表格本体。"}),g}function a1(a){let b=`${a.name} ${a.category} ${a.outputTitle} ${a.description}`,c=new Set;for(let a of(0,d.V)().autoSpecGates)if(a_(b,a.templateMatchers))for(let b of a.requiredTexts)b&&c.add(b);return[...c]}function a2(a,b,c,d,f,h,i){var j;if(!a)return b;let k=[...b],l=function(a){let b=[...a.project,...a.schedule,...a.quality,...a.safety,...a.resources];for(let c of Object.values(a.schemaFacts))b.push(...c);return b}(c),m=function(a,b){let c=new Set;for(let a of b)c.add(a.key),a.fieldName&&c.add(a.fieldName);for(let b of a.tables){for(let a of b.headers)c.add(a);for(let a of b.rows)for(let b of a)c.add(b)}return c}(c,l),o=new Set(d.map(a=>a.title));for(let b of a.factFields){if(!b.required||(j=b.name,/国家法律法规|地方法规|规章|规范标准|标准规范|行业标准|现行规范|法律法规|合规|施工方法|工艺流程|质量控制|安全文明|应急|劳动力|材料投入|机械设备|检测仪器|关键节点/u.test(j)))continue;let a=c.schemaFacts[b.id]||[],e=!1,f=!b.sourceRoleIds?.length||a.some(a=>b.sourceRoleIds?.includes(a.roleId));for(let a of d){if(e&&f)break;for(let c of a.evidence)!e&&!a.missingFacts.includes(b.name)&&(0,n.I2)(c,b)&&(e=!0),!f&&(0,n.I2)(c,b)&&(f=!0)}0!==a.length||m.has(b.name)||e||k.push({level:"warning",message:`系统暂未从知识库确认必需事实:${b.name}`,suggestion:b.extractionHint||"请扩大本地知识库检索、执行事实补抽,或调整事实字段配置。"}),f||k.push({level:"warning",message:`必需事实来源角色不匹配:${b.name}`,suggestion:`请确认该事实来自角色:${b.sourceRoleIds?.join("、")}`})}for(let b of a.chapterRules){let a=d.find(a=>a.title===b.title);a&&b.minWords&&a.content.length<b.minWords&&k.push({level:"warning",message:`章节内容深度建议:${b.title}`,suggestion:`可扩展到约 ${b.minWords} 字,但不要改变模板章节结构。`})}let p=G(f),q=function(a){let b=[];for(let c of a.matchAll(e.gW))b.push({alt:c[1]||"",url:c[2]||"",index:c.index??0});return b}(f),r=(0,g.Cv)(f);for(let b of a.gateRules){let a=b.evaluator?b.evaluator:e.cA[b.type]?.(b)??{subject:"document",operator:"contains",value:b.value||b.target},g=a.target||b.target||"",j=a.value||b.value||g,n=d.find(a=>a.title===g),s=function(a){for(let c of e.Lp){let d=c(a);if(d){var b;return{level:a.rule.level,message:(b=a.rule,`${b.name}:${d}`)}}}}({rule:b,evaluator:a,target:g,value:j,min:a.min||Number(b.value)||1,markdown:f,textScope:"chapter"===a.subject&&n?n.content:f,regex:j?function(a){try{return RegExp(a,"iu")}catch{return}}(j):void 0,chapter:n,factNames:m,chapterTitles:o,tableBlocks:p,imageRefs:q,estimatedPages:r,allFacts:l,factsModel:c,projectBindings:h,promptBindings:i});s&&k.push(s)}return k}function a3(a,b){let c=function(a){let b="";for(let c of(0,o.dU)(a))c.content&&(b+=`${c.content}
82
82
 
83
83
  `);return b}(b);if(!c.trim())return[];let d=a.replace(e.ug," ");for(let a of c.matchAll(e.QX)){let b=(a[1]||"").replace(e.ug," ").trim();if(b&&d.includes(b))return[{level:"error",message:"正文疑似包含提示词示例内容",suggestion:"请删除提示词样例数据,仅保留基于当前绑定材料生成的正文。"}]}return[]}},25284:(a,b,c)=>{c.d(b,{OO:()=>M,TD:()=>F,Tt:()=>A,Ut:()=>C,b3:()=>L,hp:()=>H});var d=c(73024),e=c(76760),f=c(19898),g=c(44533),h=c(37095),i=c(32434),j=c(70963),k=c(36003),l=c(22157);let m="project-intelligence-v12",n="material-scope-v7";function o(a){let b=e.join((0,g.a2)(),"projects",(0,f.computeProjectId)(a),"project-intelligence");return d.mkdirSync(b,{recursive:!0}),d.mkdirSync(e.join(b,"scopes"),{recursive:!0}),b}function p(a){return e.join(o(a),"project-intelligence.json")}function q(a,b){return e.join(o(a),"scopes",`${b}.json`)}function r(a,b){let c=`${a}.tmp-${process.pid}`;d.writeFileSync(c,JSON.stringify(b,null,2)),d.renameSync(c,a)}function s(a){return a.replace(/资料参数行摘要\s*[::]?/gu,"").replace(/#{1,6}\s*/gu," ").replace(/[##]{1,6}(?=[\u4e00-\u9fa5])/gu," ").replace(/(?:PDF\s*)?第\s*\d+\s*页(?:\s*共\s*\d+\s*页)?/giu," ").replace(/资料类型\s*[::]\s*[^\s;;]+/giu," ").replace(/MIME\s*[::]\s*[^\s;;]+/giu," ").replace(/文件大小\s*[::]\s*[^\s;;]+/giu," ").replace(/(?:项目编号|招标编号|备案编号|工程编号)\s*[::]\s*[^\s;;,。]+/giu," ").replace(/\s+/gu," ").trim()}function t(a){return/投标函|保证金|开标|评标|交易系统|账户|协议书|示范文本|报价|税率|利润|我方已仔细研究|中标|签订合同|专用账户监管|联合体投标|注册建造师|安全生产考核合格证书|安全生产许可证|营业执照|资质要求|投标人资格|资格审查|资格后审|资格预审|业绩要求|信誉要求|财务要求|投标有效期|投标截止|递交投标文件|递交电子投标文件|获取招标文件|获取方式|获取时间|踏勘现场|投标预备会|备选投标方案|分包内容|电子交易系统|电子服务系统|联系方式|联系人|邮编|技术支持|全流程电子化交易|异议|投诉|评标委员会|评标办法|公告发布|媒介|咨询电话|拨打电话|招标工程量清单|最高投标限价|不可竞争费|招标总说明|招标需求|招标范围|招标控制价|编制补疑|计价依据|计价定额|措施项目费|暂列金额|投标总价|综合单价|计价格式|取费标准|清单编制说明|招标文件正文|招标图纸目录|投标人/u.test(a)}let u={工期进度:["工期","进度","计划","节点","流水","穿插","日历天"],质量验收:["质量","验收","检验","试验","复试","见证","取样","规范","标准"],安全危大:["安全","危大","风险","脚手架","深基坑","吊装","临电","消防","应急"],施工部署:["部署","总平面","临设","场地","施工组织","施工顺序"],施工方法:["施工方法","施工工艺","道路","桥梁","排水","照明","园林","绿化","交通","结构"],人材机:["劳动力","材料","机械","设备","周转","进场","资源"],环境文明:["环保","扬尘","文明","噪声","水土保持","绿色施工"],工程概况:["项目","工程","建设地点","建设规模","招标范围","发包人要求"]};function v(a){let b=[],c=(c,d,e=.72)=>{d&&b.push({key:c,value:d,sourceFile:a.relativePath,roleId:a.roles[0]||"project_overview",processingType:"project_intelligence",confidence:e})};for(let b of(c("资料文件",a.fileName,.6),a.root&&c("资料组",a.root,.65),a.roles))c("资料角色",b,.58);for(let b of a.contentFacts)c("资料内容事实",b,.76);for(let b of a.chapterHints)c("章节意图候选",b,.68);let d=a.relativePath.match(/([^/\\]*项目[^/\\]*)/u)?.[1]||a.root;return d&&c("项目名称候选",d,.62),b}function w(a){return(0,l.c6)(a.map(a=>({path:a.relativePath,hash:a.contentHash,chunkCount:a.chunkCount,status:a.status})).sort((a,b)=>a.path.localeCompare(b.path)))}function x(a,b){let c=new Map((0,g.Yy)(a).map(a=>[a.relativePath,a]));return b.every(a=>{let b=c.get(a.relativePath);return b&&"error"!==b.status&&"disk"!==b.status&&Number(b.chunkCount||0)===a.chunkCount&&(b.contentHash||"")===(a.contentHash||"")})}let y=new Map;function z(a){let b=Date.now();b-(y.get(a)||0)<6e4||(y.set(a,b),L(a))}function A(a){let b=p(a);if(d.existsSync(b))try{let c=function(a,b){if(b.version!==m||!b.projectGraph||!Array.isArray(b.files)||0===b.files.length)return;let c=w(b.files);if(c!==w((0,g.Yy)(a).filter(a=>"disk"!==a.status&&"error"!==a.status&&Number(a.chunkCount||0)>0).map(a=>({relativePath:a.relativePath,contentHash:a.contentHash,chunkCount:a.chunkCount,status:a.status,indexedAt:a.indexedAt}))))return;let d=b.constructionOrganizationGraph||E(b.projectGraph,b.files),e={...b,version:m,projectRoot:a,projectId:b.projectId||(0,f.computeProjectId)(a),sourceHash:c,constructionOrganizationGraph:d};return b.version===m&&b.constructionOrganizationGraph&&b.sourceHash===c||r(p(a),e),e}(a,JSON.parse(d.readFileSync(b,"utf8")));if(!c)return void z(a);return c.graphDegraded&&z(a),c}catch{z(a);return}}let B=/评标办法|评标(?:委员会|细则)|评分档位|分值构成|评审|地质勘察|地勘|土壤氡/u;function C(a){return B.test(a.replace(/\s+/gu," "))}function D(a,b){return[...new Set(a.map(a=>a.replace(/\s+/gu," ").trim()).filter(Boolean))].slice(0,b)}function E(a,b){let c=new Map(b.map(a=>[a.relativePath,a.contentFacts])),d=new Set(b.map(a=>a.root).filter(Boolean)),e=new Set(b.map(a=>a.fileName).filter(Boolean)),f=a=>/资料文件|资料组|资料角色|资料内容事实|章节意图候选|项目名称候选/u.test(a),g=(a,b)=>D(a,b).filter(a=>!(t(a)||f(a))&&!/\d+\s*[.、]/u.test(a.split(/[::]/u).slice(1).join(":"))),h=new Map;for(let a of b){if(!/工程量清单EXCEL/iu.test(a.relativePath)||!/\.xls$/iu.test(a.relativePath))continue;let b=a.relativePath.split("/"),c=b[b.length-1]||"",d=(b[b.length-2]||"").replace(/^\d+\s*/,"").trim()||c.replace(/\.xls$/iu,"").trim();!d||/项目施工$|清单编制说明|图纸目录|可调整价差|汇总|一览表/u.test(d)||(h.has(d)||h.set(d,[]),h.get(d).push(a.relativePath))}let i=new Map;for(let b of a.works)for(let a of b.sourceFiles||[])i.has(a)||i.set(a,b.scope||"");let j=[],k=new Set,l=(b,h,i,l=[])=>{if(!b||k.has(b)||d.has(b)||e.has(b)||/投标|报价|保证金|合同协议|账户|开标|评标|资质要求|资格审查|资料目录|招标范围|招标需求|招标总说明|最高投标限价|不可竞争费|补疑|清单编制说明|图纸目录/u.test(`${b}${i||""}`)||/项目施工$/u.test(b.trim()))return;let m=g([...l,...(h||[]).flatMap(a=>c.get(a)||[])],16),n=`${b}
84
84
  ${i||""}
@@ -89,15 +89,15 @@ ${b.join("\n")}`,d=new Set,e=(a,b)=>{b.test(c)&&d.add(a)};return e("工期进度
89
89
  ${c}`}).join("\n");return["【Agent 章节任务】(主题块成稿模式)",`任务ID:${a.taskId}`,`章节:${a.title}`,a.graphContext?`图谱上下文:
90
90
  ${a.graphContext}`:"",c?`事实卡:
91
91
  ${c}`:"",`主题块与 H4 要点(必须严格按此两层结构成稿):
92
- ${e}`,"写作要求:必须严格按“主题块→H4 要点”两层结构输出,三级标题与 H4 要点标题必须与给定标题完全一致,不得改名、合并或遗漏 H4 要点;每个 H4 要点必须覆盖其标注的全部评分细目内容,但不得为这些评分细目单独开设小节标题;项目专属事实只使用事实卡、图谱上下文和绑定证据;法律法规、标准规范名称与编号等公共知识可直接引用,但任何数值/规格/型号/参数必须来自事实卡、图谱上下文或绑定证据,禁止以行业惯例或公共知识为由虚构;不得输出后台话术、兜底措辞、待确认、不适用;缺少项目事实的小节不得编造。"].filter(Boolean).join("\n\n")}},30836:(a,b,c)=>{c.d(b,{I:()=>l,Qk:()=>k,ll:()=>f,n8:()=>m,qr:()=>j});var d=c(18274);let e=/\b\d+(?:\.\d+)?\s*(?:日历天|小时|分钟|天|周|月|年|万元|元|台|套|个|项|批|次|份|人)(?=[。,,;;::、\s]|$)/gu;function f(a){let b=new Set;for(let c of a.matchAll(d._W))b.add(c[0].trim());for(let c of a.matchAll(e))b.add(c[0].trim());return[...b]}function g(a){let b=a.match(/\d+(?:\.\d+)?/u);return b?b[0]:a.trim()}function h(a){return a.replace(/\d+(?:\.\d+)?/gu,"#").toUpperCase()}function i(a,b){let c=a.indexOf(b);return c<0?{before:"",after:""}:{before:a.slice(Math.max(0,c-4),c),after:a.slice(c+b.length,Math.min(a.length,c+b.length+4))}}function j(a,b){let c=a.match(/[\p{Script=Han}]/gu)||[],d=b.match(/[\p{Script=Han}]/gu)||[];if(0===c.length||0===d.length)return 0;let e=0,f=Array(d.length).fill(0);for(let a=0;a<c.length;a+=1){let b=0;for(let g=0;g<d.length;g+=1){let h=f[g];f[g]=c[a]===d[g]?b+1:0,b=h,f[g]>e&&(e=f[g])}}return e}function k(a,b){let c=[...a.matchAll(/[\p{Script=Han}]/gu)],d=b.match(/[\p{Script=Han}]/gu)||[];if(0===c.length||0===d.length)return{length:0,start:0,end:0};let e=0,f=-1,g=Array(d.length).fill(0);for(let a=0;a<c.length;a+=1){let b=0;for(let h=0;h<d.length;h+=1){let i=g[h];g[h]=c[a][0]===d[h]?b+1:0,b=i,g[h]>e&&(e=g[h],f=a)}}if(0===e||f<0)return{length:0,start:0,end:0};let h=c[f-e+1],i=c[f];return{length:e,start:h.index,end:i.index+i[0].length}}function l(a,b,c=""){let d=f(a),e=f(b),k=new Set(e.map(g)),m=c?f(c):[],n=c?new Set(m.map(g)):k,o=new Map;for(let a of[...e,...m]){let b=h(a),c=o.get(b)||[];c.push(a),o.set(b,c)}let p=[],q=[],r=[],s=c||b;for(let b of d){let c=g(b);if(k.has(c)||n.has(c)){p.push(b);continue}let d=o.get(h(b))||[],e=i(a,b),f="",l=0;for(let a of d){let b=i(s,a),c=Math.max(j(e.before,b.before),j(e.after,b.after));c>l&&(l=c,f=a)}d.length>0&&l>=3?q.push({found:b,expected:f}):r.push(b)}return{confirmed:p,mismatched:q,unsourced:r}}function m(a,b=20){let c=[];return a.mismatched.length>0&&c.push(`【数值核对不通过——必须修正】正文以下数值与绑定材料不一致:${a.mismatched.map(a=>`${a.found}→${a.expected}`).join("、")}。逐处改回材料原值,不得保留错误数值。`),a.confirmed.length>0&&c.push(`【已核验正确的数值——重写时必须原样保留,不得改动】${a.confirmed.slice(0,b).join("、")}。`),c.join("\n")}},32434:(a,b,c)=>{c.d(b,{IA:()=>w,Qu:()=>t,SU:()=>v,ZR:()=>n,cN:()=>u,hw:()=>o,rj:()=>s});var d=c(76760),e=c(44533),f=c(40299),g=c(80439),h=c(22157);function i(a){return a.replace(/\\/gu,"/").replace(/^\/+|\/+$/gu,"")}function j(a){let b=i(a).split("/").filter(Boolean);return b.length>1?b[0]:d.basename(b[0]||"当前项目")}function k(a){return a.replace(/[\s_\-—()()【】、,,.。·]/gu,"").replaceAll("[","").replaceAll("]","").toLowerCase()}function l(a){return"disk"!==a.status&&"error"!==a.status&&Number(a.indexedAt||0)>0&&Number(a.chunkCount||0)>0}function m(a){let b=new Set;for(let c of a)for(let a of c.relativePath.match(/\b\d{4}[A-Z]{2,}\d{4,}\b/gu)||[])b.add(a);return[...b]}function n(a,b,c=""){let d=(0,e.Yy)(a).filter(l),f=(b.projectBindings||[]).filter(a=>a.materialRootPath).map(a=>({materialRootPath:i(a.materialRootPath)})).map(a=>a.materialRootPath).filter(Boolean),g=f.length?d.filter(a=>f.some(b=>i(a.relativePath)===b||i(a.relativePath).startsWith(`${b}/`))):d,o=function(a){let b=new Map;for(let c of a){let a=j(c.relativePath);b.set(a,[...b.get(a)||[],c])}return b}(g),p=c.trim(),q=[...o.keys()];if(p){let a=[...o.entries()].map(([a,b])=>({root:a,files:b,score:function(a,b){let c=k(a),d=k(b);if(c.length>=4&&d.includes(c.slice(0,Math.min(16,c.length))))return 100;let e=new Set(["项目","工程","施工","总承包","资料","招标","图纸","清单"]);return a.split(/(?:\s|_|-|—|(|)|\(|\)|【|】|\[|\]|、|,|,|\.)+/u).filter(a=>a.length>=2&&!e.has(a)).reduce((a,c)=>a+(b.includes(c)?Math.min(20,c.length):0),0)}(a,p)})).filter(a=>a.score>0).sort((a,b)=>b.score-a.score);if(1===a.length||a.length>1&&a[0].score>a[1].score){let b=[a[0].root],c=a[0].files.map(a=>a.relativePath),e=m(a[0].files);return e.length>=2?{selectedRoots:[],selectedFiles:[],totalAvailableFiles:d.length,ambiguous:!0,locked:!1,reason:`资料组「${a[0].root}」内检测到 ${e.length} 个不同项目编号(${e.join("、")}),疑似多份项目资料混放,已阻断生成避免跨项目污染`,rejectedRoots:q,scopeHash:(0,h.c6)({ambiguous:!0,mixedProjectNos:e})}:{selectedRoots:b,selectedFiles:c,totalAvailableFiles:d.length,ambiguous:!1,locked:!0,reason:`用户需求唯一匹配资料组:${a[0].root}`,rejectedRoots:q.filter(a=>!b.includes(a)),scopeHash:(0,h.c6)({selectedRoots:b,selectedFiles:c})}}if(a.length>1){let b=a.filter(b=>b.score===a[0].score).map(a=>a.root);return{selectedRoots:[],selectedFiles:[],totalAvailableFiles:d.length,ambiguous:!0,locked:!1,reason:`用户需求同时匹配多个资料组:${b.join("、")}`,rejectedRoots:q,scopeHash:(0,h.c6)({ambiguous:!0,selectedRoots:b})}}}if(1===f.length){let a=g.map(a=>a.relativePath),b=m(g);return b.length>=2?{selectedRoots:[],selectedFiles:[],totalAvailableFiles:d.length,ambiguous:!0,locked:!1,reason:`模板绑定资料组「${f[0]}」内检测到 ${b.length} 个不同项目编号(${b.join("、")}),疑似多份项目资料混放,已阻断生成避免跨项目污染`,rejectedRoots:q,scopeHash:(0,h.c6)({ambiguous:!0,mixedProjectNos:b})}:{selectedRoots:f,selectedFiles:a,totalAvailableFiles:d.length,ambiguous:!1,locked:!0,reason:`模板绑定唯一资料组:${f[0]}`,rejectedRoots:q.filter(a=>!f.includes(a)),scopeHash:(0,h.c6)({selectedRoots:f,selectedFiles:a})}}return{selectedRoots:[],selectedFiles:[],totalAvailableFiles:d.length,ambiguous:!0,locked:!1,reason:f.length>1?`模板绑定多个资料组但需求未唯一指定:${f.join("、")}`:"未绑定资料组且需求未唯一指定资料范围,禁止回退全量资料",rejectedRoots:q,scopeHash:(0,h.c6)({ambiguous:!0,boundRoots:f,requirement:c})}}function o(a,b){let c=new Map((0,e.Yy)(a).map(a=>[a.relativePath,a])),f=b.selectedFiles.map(a=>{let b=c.get(a),e=Number(b?.chunkCount||0);return{path:a,root:j(a),fileName:d.basename(a),chunkCount:e,indexedAt:b?.indexedAt,status:b?.status,hash:(0,h.c6)({filePath:a,chunkCount:e,indexedAt:b?.indexedAt,status:b?.status})}});return{files:f,totalFiles:f.length,totalChunks:f.reduce((a,b)=>a+b.chunkCount,0),roots:[...new Set(f.map(a=>a.root))],createdAt:Date.now(),snapshotHash:(0,h.c6)(f.map(a=>({path:a.path,hash:a.hash})))}}function p(a,b){return a.filter(a=>b.test(`${a.fieldId||""} ${a.fieldName||""} ${a.key} ${(0,h.lG)(a.value)}`))}function q(a){return(0,h.lG)(a.value).replace(/\s+/gu," ").trim()}let r=new Set(["资料文件","资料组","资料角色","章节意图候选","项目名称候选"]);function s(a){let b=a.facts.filter(a=>!r.has(a.key)&&q(a)),c=p(b,/项目名称|工程名称|招标项目名称|建设地点|建设规模|招标范围|施工范围|建设内容/u),d=p(b,/工期|日历天|进度|开工|竣工/u),e=p(b,/质量|验收|合格|标准|规范/u),f=p(b,/清单|工程量|材料|设备|机械|劳动力|资源/u),g=p(b,/安全|文明|环保|危大|风险/u),h=c.slice(0,8).map(a=>`${a.key}:${q(a)}`).join(";");return{works:h?[{name:a.materialSnapshot.roots[0]||"当前项目",scope:h,sourceFiles:[...new Set(c.map(a=>a.sourceFile).filter(Boolean))],relatedItems:f.slice(0,8).map(a=>q(a))}]:[],methods:[],resources:f.slice(0,30).map(a=>({name:a.key,type:"material",spec:q(a),quantity:"",unit:"",sourceFiles:a.sourceFile?[a.sourceFile]:[]})),schedule:d.slice(0,10).map(a=>({milestone:a.key,duration:q(a),startDate:"",endDate:"",sourceFiles:a.sourceFile?[a.sourceFile]:[]})),standards:e.slice(0,16).map(a=>({code:a.key,description:q(a),sourceFiles:a.sourceFile?[a.sourceFile]:[]})),risks:g.slice(0,16).map(a=>({risk:q(a),level:"medium",mitigation:"",sourceFiles:a.sourceFile?[a.sourceFile]:[]})),requirements:p(b,/招标|投标|合同|承包|响应|要求|补疑|澄清|答疑/u).slice(0,20).map(a=>({category:a.key,detail:q(a),sourceFiles:a.sourceFile?[a.sourceFile]:[]})),siteConditions:p(b,/现场|周边|交通|既有|保护|场地/u).slice(0,12).map(a=>({condition:q(a),impact:"",sourceFiles:a.sourceFile?[a.sourceFile]:[]})),addendumChanges:[],gaps:[],generatedAt:Date.now()}}function t(a){let b=a.materialScope||n(a.projectRoot,a.template,a.requirement||"");if(b.ambiguous||!b.locked||0===b.selectedFiles.length)throw Error(`资料范围未锁定:${b.reason}`);let c=o(a.projectRoot,b),d=a.projectGraph||s({facts:a.facts,materialSnapshot:c,requirement:a.requirement}),e=a.projectGraph?"project-graph":"project-graph-runtime",f=a.projectGraph?"预处理完整项目图谱":"运行期项目图谱草案",g=Date.now();return{runId:`run-${g}-${(0,h.c6)({templateId:a.template.id,requirement:a.requirement||"",scopeHash:b.scopeHash}).slice(0,8)}`,templateId:a.template.id,requirement:a.requirement||"",projectRoot:a.projectRoot,materialScope:b,materialSnapshot:c,nodes:[{id:"material-scope",type:"material_scope",status:"completed",startedAt:g,completedAt:g,outputSummary:b.reason,metrics:{selectedFiles:b.selectedFiles.length,rejectedRoots:b.rejectedRoots.length}},{id:"material-snapshot",type:"material_snapshot",status:"completed",startedAt:g,completedAt:g,outputSummary:`${c.totalFiles} 份资料,${c.totalChunks} 个切片`,metrics:{totalFiles:c.totalFiles,totalChunks:c.totalChunks}},{id:e,type:"project_graph",status:"completed",startedAt:g,completedAt:g,outputSummary:`${f}:${d.works.length}工程 ${d.resources.length}资源 ${d.schedule.length}工期 ${d.standards.length}标准`,metrics:{facts:a.facts.length,precomputed:!!a.projectGraph,source:a.projectGraphSource||"runtime"}}],facts:a.facts,baseProjectGraph:d,issues:[],createdAt:g}}function u(a,b=200,c=50){if(a.nodes.length<=b)return;let d=a.nodes.slice(-c),e=a.nodes.slice(0,a.nodes.length-c),f=e.filter(a=>"project_graph"!==a.type&&("completed"===a.status||"failed"===a.status||"skipped"===a.status)),g=e.filter(a=>!f.includes(a));if(0===f.length)return;let h={id:`nodes-archive-${Date.now()}`,type:"summary",status:"completed",startedAt:f[0].startedAt,completedAt:f[f.length-1].completedAt||Date.now(),outputSummary:`已归档 ${f.length} 个历史节点(${[...new Set(f.map(a=>a.type))].join("、")})`,metrics:{archivedNodes:f.length}};a.nodes.splice(0,a.nodes.length,...g,h,...d)}function v(a){let b=a.nodes.find(a=>"project_graph"===a.type),c=!!b?.metrics?.precomputed,d=[(0,g.X5)({type:"validation",roleId:"agent-material-scope",status:"success",message:`资料范围已锁定:${a.materialScope.selectedRoots.join("、")}`,details:[`${a.materialScope.reason}`,`入选资料:${a.materialScope.selectedFiles.length}/${a.materialScope.totalAvailableFiles}`,`已排除资料组:${a.materialScope.rejectedRoots.slice(0,8).join("、")||"无"}`]},{subtitle:"Agent 资料范围锁定"}),(0,g.X5)({type:"knowledge_retrieval",roleId:"agent-material-snapshot",status:"success",message:`资料快照已固定:${a.materialSnapshot.totalFiles} 份资料、${a.materialSnapshot.totalChunks} 个切片`,details:a.materialSnapshot.files.slice(0,10).map(a=>`${a.root}|${a.fileName}|${a.chunkCount}切片`)},{subtitle:"Agent 资料快照"})];return c||d.push((0,g.X5)({type:"file_understanding",roleId:"agent-project-graph-runtime",status:"success",message:`运行期项目图谱草案已建立:${a.baseProjectGraph.works.length}工程 ${a.baseProjectGraph.resources.length}资源 ${a.baseProjectGraph.schedule.length}工期 ${a.baseProjectGraph.standards.length}标准`,details:["缓存缺失时用于资料范围和 Planner 预备分析;正式完整项目图谱会随后由 LLM 构建",`事实数:${a.facts.length}`]},{subtitle:"Agent 项目图谱预备分析"})),d}function w(a){let b=a.split(/\r?\n/u),c=[];return b.forEach((a,b)=>{f.Rg.test(a)&&c.push({level:"error",severity:"blocker",category:"style",owner:"system",message:`正式正文不得出现后台或兜底话术:第 ${b+1} 行`,suggestion:"必须改为有事实依据的正式表达;非必填缺失字段应删除,必填事实缺失应阻断生成。"})}),[...c,...(0,f.bx)(a),...(0,f.uv)(a),...(0,f.nP)(a)].slice(0,20)}},35547:(a,b,c)=>{c.d(b,{$$:()=>aP,AD:()=>be,Bn:()=>ao,CJ:()=>ba,CZ:()=>L,Ci:()=>bt,Et:()=>ax,Fr:()=>aW,GJ:()=>bj,H:()=>aM,HW:()=>a7,IJ:()=>ae,Ih:()=>_,Jt:()=>bc,KE:()=>bw,LA:()=>aY,LZ:()=>by,MC:()=>a5,MQ:()=>S,N$:()=>aR,No:()=>J,ON:()=>ai,Rv:()=>bn,Rw:()=>aL,TG:()=>bg,Tz:()=>aB,Ve:()=>au,WY:()=>ac,X6:()=>s,Xc:()=>aa,YN:()=>$,ZN:()=>aD,Zi:()=>w,_F:()=>ay,a8:()=>o,ae:()=>av,bq:()=>aX,c6:()=>bu,cJ:()=>R,cT:()=>aU,cf:()=>m,cl:()=>bl,cv:()=>bv,dF:()=>W,dI:()=>af,eS:()=>k,ek:()=>aZ,fQ:()=>a0,fg:()=>bx,hu:()=>bm,iY:()=>ad,iy:()=>bs,jP:()=>bk,jy:()=>bd,k6:()=>aj,l4:()=>U,m6:()=>I,mB:()=>aO,mC:()=>ab,mt:()=>ak,nm:()=>ag,r8:()=>z,rA:()=>x,s3:()=>K,sg:()=>a9,sn:()=>O,tH:()=>az,u2:()=>q,ub:()=>bb,vH:()=>B,vq:()=>N,we:()=>aC,x5:()=>aA,xR:()=>bh,xX:()=>a6,y2:()=>T,zP:()=>br});var d=c(78217),e=c(22157),f=c(37047),g=c(41991),h=c(71678),i=c(12863),j=c(30836);let k=/(\d{4})\s*年\s*(\d{1,2})\s*月\s*(\d{1,2})\s*日/gu,l=/进度计划|里程碑|节点安排|验收时间|完成日期|竣工日期|移交日期|合同签订/u;function m(a,b){let c=[],d=function(a){let b=new Set;for(let c of[...a.project,...a.schedule,...a.quality,...a.resources,...a.preciseFacts].map(a=>`${a.key||""}${a.fieldName||""}${(0,e.lG)(a.value)}`))for(let a of c.matchAll(k))b.add(`${a[1]}年${a[2]}月${a[3]}日`);return b}(b),f=[...b.schedule,...b.project].map(a=>`${a.key||""}${(0,e.lG)(a.value)}`).join(" "),g=k.test(f);for(let b of(k.lastIndex=0,a.matchAll(k))){let e=`${b[1]}年${b[2]}月${b[3]}日`;if(d.has(e))continue;let f=Math.max(0,(b.index||0)-40),h=a.slice(f,(b.index||0)+e.length+40);g&&l.test(h)||c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`正文编造开工日期“${e}”:绑定资料未提供该具体日历日期(招标文件以开工令时间为准)`,suggestion:`删除自行设定的具体日期,统一改写为“以开工令时间为准”;如为进度计划节点日期,必须标注为计划推算节点并保持与总工期一致。`})}return c.slice(0,3)}let n=/(单体建筑面积|总建筑面积|建筑面积)[^。;;\n]{0,30}?([\d,]+(?:\.\d+)?)\s*(?:㎡|m2|m²|平方米)/gu;function o(a,b){let c=[],d=function(a){let b=[];for(let c of[...a.project,...a.preciseFacts].map(a=>`${a.fieldName||a.key||""}:${(0,e.lG)(a.value)}`)){let a=/(总占地面积|占地面积|单体建筑面积|总建筑面积|建筑面积|地上建筑面积|地下建筑面积|总用地面积)/u.exec(c)?.[1],d=/([\d,]+(?:\.\d+)?)\s*(?:㎡|m2|m²|平方米)/u.exec(c);if(!a||!d)continue;let e=Number(d[1].replace(/[,,]/gu,""));Number.isFinite(e)&&e>0&&b.push({label:a,value:e})}return b}(b),f=new Set(d.filter(a=>/占地面积/u.test(a.label)).map(a=>a.value)),g=new Set(d.filter(a=>/建筑面积/u.test(a.label)&&!/地上|地下/u.test(a.label)).map(a=>a.value));if(0===f.size||0===g.size)return c;for(let b of a.matchAll(n)){let a=Number(b[2].replace(/[,,]/gu,""));if(!Number.isFinite(a)||a<=0||!f.has(a)||g.has(a))continue;let d=b[1],e=[...g].join("、");c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`字段-数值错配:“${d} ${b[2]}㎡”将总占地面积误作${d}(绑定资料${d}数值为 ${e}㎡)`,suggestion:`总占地面积与建筑面积是两个独立字段,必须严格区分:将“${d} ${b[2]}㎡”改为资料数值“${d} ${e}㎡”,总占地面积保持独立表述。`})}return c.slice(0,3)}let p=/(地上[^。;;]{0,30}?([\d,]+(?:\.\d+)?)\s*(?:㎡|m2|m²|平方米)[^。;;]{0,40}?地下[^。;;]{0,30}?([\d,]+(?:\.\d+)?)\s*(?:㎡|m2|m²|平方米)[^。;;]{0,60}?(?:单体建筑面积|总建筑面积)[^。;;]{0,20}?([\d,]+(?:\.\d+)?)\s*(?:㎡|m2|m²|平方米))/gu;function q(a){let b=[];for(let c of a.matchAll(p)){let a=Number(c[2].replace(/[,,]/gu,"")),d=Number(c[3].replace(/[,,]/gu,"")),e=Number(c[4].replace(/[,,]/gu,""));if(![a,d,e].every(Number.isFinite))continue;let f=a+d;f!==e&&b.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`面积算术矛盾:地上 ${a}㎡ + 地下 ${d}㎡ = ${f}㎡,与同句“单体建筑面积 ${e}㎡”不符(差 ${Math.abs(f-e).toFixed(2)}㎡)`,suggestion:`地上与地下面积之和必须等于单体建筑面积:按绑定资料统一三者数值,删除错误数值表述。`})}return b.slice(0,3)}let r=/(?:阶段|期间)[^。;;\n]{0,12}?(?:约)?\s*([\d,]+)\s*人/g,s=/(?:劳动力|作业人员|施工人员)(?:(?!(?:不得超过|不超过|不大于|不少于|不低于|不应超过|不应少于|不得大于|不得少于|至少|最多))[^。;;\n]){0,16}?(?:约)?\s*([\d,]+)\s*人/g,t=/([^、,。;;\n|]{2,24}?)(?:约|为|达|共|计)?\s*([\d,]+)\s*人(?![日次月年时均])/gu;function u(a,b,c){let d=Math.max(a.lastIndexOf("。",c),a.lastIndexOf(";",c),a.lastIndexOf(";",c),a.lastIndexOf("\n",c)),e=a.slice(Math.max(b,d+1),c),f=Math.max(e.lastIndexOf(","),e.lastIndexOf(","),e.lastIndexOf("、"));f>=0&&(e=e.slice(f+1));let g=[...e.matchAll(/([^,,。;;、\n]{1,14})阶段/gu)].map(a=>a[1]);for(let a=g.length-1;a>=0;a-=1){let b=g[a];if(!b||/^(?:该|本|此|上述|这|其|相应|各)$/u.test(b))continue;let c=i.Ei.find(a=>a===b);if(c)return c;if(!i.Ei.some(a=>a.startsWith(b)))return`${b}阶段`}}let v=/项目经理|技术负责人|项目班子|管理人员|管理层|施工员|质量员|质检员|安全员|材料员|资料员|测量员|试验员|造价员|预算员/u;function w(a,b,c){let d=Math.max(c,b-30),e=a.slice(d,b),f=Math.max(e.lastIndexOf(","),e.lastIndexOf("、"),e.lastIndexOf(","),e.lastIndexOf(";"),e.lastIndexOf(";"),e.lastIndexOf(":"),e.lastIndexOf(":"),e.lastIndexOf("。")),g=a.slice(f>=0?d+f+1:d,b);if(v.test(g))return{group:"management"};let h=g.match(i.vC);return h?.[0]?{group:"trade",trade:h[0]}:{group:"peak"}}function x(a,b){let c=[],d=b?.laborPeakAuthority,e=[],f=new Set;for(let b of[i.Dp,s,r])for(let c of a.matchAll(b)){let d=a.lastIndexOf("\n",c.index)+1,g=a.indexOf("\n",c.index);-1===g&&(g=a.length);let h=a.slice(d,g);if(/^\s*\|.*\|\s*$/u.test(h))continue;let j=Number(c[1].replace(/[,,]/gu,"")),k=c.index+c[0].indexOf(c[1]);if(/按蓝图[^。;;\n]{0,16}?(?:统一|调整|修正|核定)\s*(?:为|至)\s*$/u.test(a.slice(Math.max(0,k-40),k)))continue;let l=(function(a){let b=[];for(let c of a.matchAll(/(?:→|—|–|~|~)/gu)){let d=c.index??0,e=a.slice(0,d),f=/(?:劳动力|作业人员|施工人员|高峰期|高峰|峰值|阶段)[^,。;;]*$/u.exec(e);if(!f)continue;let g=f.index;if(b.some(a=>a.start===g))continue;let h=/[。;;]/u.exec(a.slice(d)),i=[...(a.slice(g,h?d+h.index:void 0).split(/[,,]/u)[0]||"").matchAll(/([\d,]+)\s*人/g)],j=i.map(a=>Number(a[1].replace(/[,,]/gu,""))).filter(a=>Number.isFinite(a)&&a>0);if(j.length<2)continue;let k=i[i.length-1];b.push({peak:Math.max(...j),start:g,end:g+(k.index??0)+k[0].length})}return b})(h).find(a=>k-d>=a.start&&k-d<a.end);if(void 0!==l){let b=`${d}:${l.start}:${l.end}`;f.has(b)||(f.add(b),e.push({value:l.peak,text:h.trim().slice(0,40),stage:(0,i.rx)(a,k),group:"peak"}));continue}if(Number.isFinite(j)&&j>0){let{group:f,trade:g}=w(a,k,d),h=u(a,d,k),l=void 0===h&&/(?:该|本|此|这|其|上述)$/u.test(a.slice(Math.max(0,c.index-2),c.index)),m=b===r?void 0===h?l?function(a,b){let c=a.slice(Math.max(0,b-160),b),d=[...c.matchAll(/第[一二三四五六七八九十百\d]{1,4}阶段/gu)].pop();if(d)return d[0];let e=[...c.matchAll(/([^,,。;;、\n]{1,14})阶段/gu)];for(let a=e.length-1;a>=0;a-=1){let b=e[a][1];if(!b||/^(?:该|本|此|上述|这|其|相应|各)$/u.test(b)||/个/u.test(b)||/的$/u.test(b))continue;let c=i.Ei.find(a=>a===b);if(c)return c;if(!i.Ei.some(a=>a.startsWith(b)))return`${b}阶段`}}(a,k)??"(回指阶段)":"":h.endsWith("阶段")?h:`${h}阶段`:h??(0,i.rx)(a,k)??"";e.push({value:j,text:c[0].trim().slice(0,40),stage:m,group:f,trade:g})}}let g=(0,i.Rm)(a),h=(a,b)=>c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:a,suggestion:b});for(let a=0;a<e.length;a+=1)for(let b=a+1;b<e.length;b+=1){let[c,f]=[e[a],e[b]];if(c.group!==f.group||"trade"===c.group&&c.trade!==f.trade||c.stage&&f.stage&&c.stage!==f.stage)continue;if(!c.stage!=!f.stage){let[a,b]=c.stage?[f,c]:[c,f];if(a.value>=b.value)continue}let g=Math.abs(c.value-f.value)/Math.max(c.value,f.value);if(c.value!==f.value){h(`劳动力数据矛盾:正文“${c.text}”(${c.value} 人)与“${f.text}”(${f.value} 人)互斥(相差 ${Math.round(100*g)}%)`,void 0!==d&&d>0?`劳动力峰值数据必须全文唯一:以蓝图劳动力峰值 ${d} 人为准统一正文各处峰值表述,删除矛盾数字。`:"劳动力峰值数据必须全文唯一:以分阶段投入明细表为准统一正文各处峰值表述,删除矛盾数字。"),a=e.length;break}}let j=g.filter(a=>a.hasPeakCol).map(a=>a.peak);if(j.length>=2){let a=Math.max(...j),b=Math.min(...j),c=Math.abs(a-b)/a;a!==b&&h(`劳动力数据矛盾:分阶段投入明细表峰值 ${b} 人与另一劳动力表峰值 ${a} 人互斥(相差 ${Math.round(100*c)}%)`,"劳动力峰值数据必须全文唯一:统一各劳动力表格的峰值数据,删除矛盾表格数字。")}let k=e.filter(a=>"peak"===a.group),l=k.reduce((a,b)=>Math.max(a,b.value),0),m=g.filter(a=>!a.hasTradeCol).length>0?Math.max(...g.filter(a=>!a.hasTradeCol).map(a=>a.peak)):void 0;if(void 0!==m&&l>0&&l>m&&!(void 0!==d&&d>0&&l===d)){let a=k.find(a=>a.value===l)?.text||"";h(`劳动力数据矛盾:正文表述“${a}”达 ${l} 人,而分阶段投入明细表最大峰值为 ${m} 人(超出 ${Math.round((l-m)/m*100)}%)`,"劳动力投入数据必须全文统一:以分阶段明细表为准复核正文峰值表述,删除与表格矛盾的“高峰期 X 人”措辞或调整表格数据。")}let n=[];for(let b of a.matchAll(/(?:高峰期|高峰|峰值)[^。;;\n]{0,16}?控制(?:在|为|到)?(?:约)?\s*([\d,]+)\s*人(?:以内|以下|之内)?/gu)){let a=Number(b[1].replace(/[,,]/gu,""));Number.isFinite(a)&&a>0&&n.push(a)}if(n.length>0){let a=Math.max(...n),b=[...e,...void 0!==m?[{value:m}]:[]].filter(b=>b.value>a);if(b.length>0){let c=Math.max(...b.map(a=>a.value));h(`劳动力数据矛盾:正文“高峰期总人数控制在${a}人”的上限表述与峰值表述 ${c} 人不自洽(阶段高峰投入超出控制上限 ${Math.round((c-a)/a*100)}%)`,"总量控制上限与各阶段峰值必须自洽:阶段高峰人数不得超过全文宣称的高峰控制人数;以分阶段投入明细表为准修正控制目标或各阶段峰值表述。")}}for(let b of a.split(/\r?\n/u)){let a=b.trim();if(!(!a||/^\s*\|/u.test(a)||/^#{1,6}\s/u.test(a)))for(let b of a.split(/(?<=[。;;])/u)){let a=/=\s*([\d,]+)\s*人/u.exec(b);if(!a)continue;let c=b.slice(0,a.index);if(!/[++]/u.test(c))continue;let d=c.split(/[++]/u),e=0,f=!1;for(let a of d){let b=a.match(/(\d+)\s*[×xX]\s*(\d+)/u)||a.match(/(\d+)\s*人?\s*$/u);b&&(f=!0,e+=void 0!==b[2]?Number(b[1])*Number(b[2]):Number(b[1]))}if(!f)continue;let g=Number(a[1].replace(/[,,]/gu,""));if(!Number.isFinite(g)||g<=0||e<=0)continue;let i=b.trim().slice(0,60);e!==g&&h(`劳动力数据矛盾:正文班组加总算式“${i}”左侧求和 ${e} 人 ≠ 结果 ${g} 人`,"班组人数加总必须与合计一致:核对各班组人数或修正合计数字。");let j=/(?:投入|配置|安排|组织|总人数)[^。;;==++]{0,16}?([\d,]+)\s*人/u.exec(b);if(j){let a=Number(j[1].replace(/[,,]/gu,"")),c=b.slice(0,j.index+j[0].length),d=/[约近余]|左右/u.test(c.slice(-16));Number.isFinite(a)&&a>0&&!d&&a!==g&&h(`劳动力数据矛盾:正文宣称总人数 ${a} 人与班组加总算式结果 ${g} 人自相矛盾(相差 ${Math.round(Math.abs(a-g)/Math.max(a,g)*100)}%)`,"宣称总人数必须与班组加总一致:统一总人数与各班组人数,删除矛盾数字。")}}}for(let a of g){if(void 0===a.totalCell||a.countCells.length<2)continue;let b=Math.abs(a.totalCell-a.detailSum)/Math.max(a.totalCell,a.detailSum);a.totalCell!==a.detailSum&&h(`劳动力数据矛盾:劳动力表合计行 ${a.totalCell} 人与明细行之和 ${a.detailSum} 人不符(差 ${Math.round(100*b)}%)`,"劳动力表合计必须等于各明细行人数之和:统一合计行与明细行数据,删除矛盾数字。")}let o=[...a.matchAll(/(?:总|合计|总计|共)[^。;;\n|]{0,8}?([\d,]+)\s*(?:个)?工日/gu)].map(a=>Number(a[1].replace(/[,,]/gu,""))).filter(a=>Number.isFinite(a)&&a>0),p=[...a.matchAll(/(?:工期|总工期|计划工期)[^。;;\n]{0,16}?(\d{2,4})\s*(?:个)?(?:日历)?天/gu)].map(a=>Number(a[1])).filter(a=>Number.isFinite(a)&&a>=30&&a<=3e3);if(o.length>0&&l>0&&p.length>0){let a=Math.max(...o),b=Math.max(...p),c=l*b;a>c&&h(`劳动力数据矛盾:总工日 ${a} 个超过峰值 ${l} 人\xd7总工期 ${b} 天的算术上限 ${c} 个,不可能成立`,"总工日不得超过劳动力峰值\xd7总工期的算术上限:按各阶段人数\xd7阶段工期重算总工日,或修正峰值人数/总工期表述。")}return c.slice(0,5)}let y={slope:"基坑放坡开挖、土钉墙喷锚支护坡面",pile:"钻孔灌注桩、排桩、地下连续墙围护结构"};async function z(a,b){let c=[],d=a.split(/\n{2,}/u).filter(a=>a.trim().length>=30);if(0===d.length)return c;let e=await (0,f.Mv)(d,Object.values(y)),g=a=>e(a,y.slope)>=f.Eh,h=a=>i.re.test(a)&&e(a,y.pile)>=f.Eh,j=d.filter(a=>g(a)&&!h(a)),k=d.filter(a=>h(a)&&!g(a));return 0===j.length||0===k.length||c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`基坑支护方案前后不一致:放坡喷锚类支护表述与灌注桩排桩类支护表述分别成段出现(放坡喷锚类 ${j.length} 段、灌注桩排桩类 ${k.length} 段),属跨模板拼接断裂${"slope"===b?";权威体系判定(图纸/地质槽位):土钉墙、锚杆等放坡喷锚类——删除灌注桩排桩类表述":"pile"===b?";权威体系判定(图纸/地质槽位):灌注桩排桩类——删除放坡喷锚类独立成段表述":""}`,suggestion:"支护形式必须全文统一为一种体系(以图纸/地质条件为准):确定采用放坡喷锚或灌注桩排桩后,删除另一种体系的表述,并补充基坑开挖深度数值支撑危大分级判定。"}),c}let A=/^#{2,4}\s+(?:\d+(?:\.\d+)*\s+)?[^\n]*(?:危大工程(?:辨识)?(?:清单|识别)|危大(?:工程)?(?:及超危大)?(?:清单|识别|辨识))[^\n]*$/gmu;function B(a){let b=[],c=function(a){let b=a.split(/\r?\n/u),c=[];for(let a=0;a<b.length;a+=1){if(A.lastIndex=0,!A.test(b[a].trim()))continue;let d=[];for(let c=a+1;c<Math.min(b.length,a+30);c+=1){let a=b[c].trim();if(/^#{1,6}\s/u.test(a))break;let e=/^(?:\d+[.、.)]|[-*•])?\s*([^。;;|]{2,40})$/u.exec(a)?.[1];e&&d.push(e.replace(/[((【][^))】]*[))】]/gu,"").replace(/^[\s\d.、()()【】-]+/u,"").replace(/施工$/u,"").replace(/作业$/u,"").replace(/\s+/gu,"").trim())}d.length>=2&&c.push({title:b[a].trim(),items:[...new Set(d)]})}return c}(a);if(c.length<2)return b;for(let a=0;a<c.length;a+=1)for(let d=a+1;d<c.length;d+=1){let e=c[a],f=c[d],g=e.items.filter(a=>!f.items.includes(a)),h=f.items.filter(a=>!e.items.includes(a));(0!==g.length||0!==h.length)&&b.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`危大工程辨识清单不一致:“${e.title.slice(0,30)}”(${e.items.length} 项)与“${f.title.slice(0,30)}”(${f.items.length} 项)存在差异:前者独有【${g.join("、")||"无"}】,后者独有【${h.join("、")||"无"}】`,suggestion:"全文危大工程辨识清单必须唯一且一致:合并两处清单,统一项名、数量与分级表述,避免评标专家以清单矛盾质疑辨识深度。"})}return b.slice(0,3)}let C=/(?:无|未涉及|不涉及|不存在)[^。;\n]{2,120}?(?:及以上|以上)[^。;\n]{0,80}/gu,D=["落地式钢管脚手架","悬挑式脚手架","附着式升降脚手架","脚手架","模板支撑","模板工程","起重吊装","吊装","幕墙","钢结构","人工挖孔","拆除","暗挖","爆破","基坑","降排水","降水"],E=RegExp(D.join("|"),"gu"),F=/(\d+(?:\.\d+)?)\s*(kN|千牛|米|m(?![m²³23/]))/gu;function G(a){E.lastIndex=0;let b=new Set;for(let c of a.matchAll(E))b.add(c[0]);return b}function H(a){F.lastIndex=0;let b=[];for(let c of a.matchAll(F))b.push({value:Number(c[1]),unit:"米"===c[2]?"m":"千牛"===c[2]?"kN":c[2]});return b}function I(a){let b=[],c=[];for(let b of(C.lastIndex=0,a.matchAll(C))){let a=G(b[0]),d=H(b[0]);a.size>0&&d.length>0&&c.push({text:b[0],categories:a,params:d})}if(0===c.length)return b;let d=new Set;for(let e of a.split(/\r?\n/u)){let a=e.trim();if(!/^\|.+\|$/u.test(a)||!/危大/u.test(a)||/不属于危大|不构成危大|非危大|未达到危大|不是危大/u.test(a))continue;let f=G(a);if(0===f.size)continue;let g=H(a);if(0!==g.length)for(let e of c){let c=D.find(a=>f.has(a)&&e.categories.has(a));if(!c)continue;let h=g.find(a=>e.params.some(b=>b.unit===a.unit&&1e-9>Math.abs(b.value-a.value)));if(!h)continue;let i=`${c}|${h.unit}|${h.value}`;if(d.has(i))continue;d.add(i);let j=a.split("|").map(a=>a.trim()).filter(Boolean);b.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`危大清单与排除声明矛盾:正文声明「${e.text.replace(/\s+/gu,"").slice(0,36)}」,危大清单表格却将「${c} ${h.value}${h.unit}」列为危大工程(清单行「${j.slice(0,2).join(":").slice(0,40)}」)`,suggestion:"排除声明与危大清单必须同口径二选一(以资料参数为准):若资料证实存在该类别且达到判定阈值,删除正文排除声明、保留清单行并按危大工程管控;若资料不能证实,删除清单中该行及其下游专项方案/验收表述,不得两处自相矛盾。"})}}return b.slice(0,3)}let J=[{name:"施工工地周边100%围挡",query:"施工工地周边设置围挡封闭管理"},{name:"物料堆放100%覆盖",query:"物料堆放覆盖防尘"},{name:"出入车辆100%冲洗",query:"出入车辆冲洗设施清洗出场"},{name:"施工现场地面100%硬化",query:"施工现场场地地面硬化"},{name:"拆迁工地100%湿法作业",query:"拆迁工地湿法作业洒水降尘"},{name:"渣土车辆100%密闭运输",query:"渣土车辆密闭运输防止遗撒"}];function K(a){let b=[];for(let c of a.split(/\r?\n/u)){let a=c.trim();if(!(!a||/^#{1,6}\s/u.test(a)||/^\s*\|/u.test(a)))for(let c of a.split(/(?<=[。!?!?;;])/u)){let a=c.trim();a.length>=8&&a.length<=120&&b.push(a)}}let c=[...new Set(b)];if(c.length<=400)return c;let d=Math.ceil(c.length/400);return c.filter((a,b)=>b%d==0).slice(0,400)}async function L(a,b){if(0===b.length||0===a.length)return new Map;let c=await (0,f.Mv)(a.map(a=>a.text),b);return new Map(a.map(a=>[a.key,b.some(b=>c(a.text,b)>=.6)]))}let M={"施工工地周边100%围挡":/100%围挡|周边100%围挡/u,"物料堆放100%覆盖":/物料堆放100%覆盖|物料堆放.{0,8}覆盖|密目网.*覆盖|覆盖.{0,4}密目网/u,"出入车辆100%冲洗":/出入车辆100%冲洗|车辆.{0,10}冲洗|冲洗.{0,10}车辆|冲洗点/u,"施工现场地面100%硬化":/施工现场地面100%硬化|地面100%硬化/u,"拆迁工地100%湿法作业":/拆迁工地100%湿法作业|拆迁.{0,10}湿法作业|湿法作业.{0,10}拆迁/u,"渣土车辆100%密闭运输":/渣土车辆100%密闭运输|密闭运输|密闭式/u};function N(a,b){let c=M[a];return!!c&&b.some(a=>c.test(a))}async function O(a){let b=[];if(!/扬尘|环保|文明施工|绿色施工/u.test(a))return b;let c=[...new Set(a.split(/\r?\n/u).flatMap(a=>{let b=a.trim();return!b||/^#{1,6}\s/u.test(b)||/^\s*\|/u.test(b)||!/围挡|覆盖|堆放|冲洗|硬化|湿法|密闭|渣土|扬尘|降尘/u.test(b)?[]:b.split(/(?<=[。!?!?;;])/u).map(a=>a.trim()).filter(a=>a.length>=8&&a.length<=120)}))],d=await L(J.map(a=>({key:a.name,text:a.query})),c),e=/(?:本项目|本工程|该工程|该项目|本标段|本施工项目)[^。;;\n]{0,30}(?:无拆迁|不涉及拆迁|无房屋拆除|无拆除)/u.test(a),f=J.filter(a=>!d.get(a.name)&&!N(a.name,c)).filter(a=>!("拆迁工地100%湿法作业"===a.name&&e)).map(a=>a.name);return 0===f.length||b.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:`“扬尘治理六个百分百”未逐项落实:缺少【${f.join("、")}】(${J.length-f.length}/${J.length} 项命中)`,suggestion:"按检查规范第七部分要求逐条表述六项措施:工地周边100%围挡、物料堆放100%覆盖、出入车辆100%冲洗、施工现场地面100%硬化、拆迁工地100%湿法作业、渣土车辆100%密闭运输。"}),b}let P=/建设地点|工程地点|项目地点|实施地点|服务地点|交付地点|建设地址/u,Q=["安徽","合肥","芜湖","蚌埠","淮南","马鞍山","淮北","铜陵","安庆","黄山","滁州","阜阳","宿州","六安","亳州","池州","宣城"];async function R(a,b){let c=[],d=b.project.some(a=>P.test(`${a.fieldName||""}${a.key||""}`)&&Q.some(b=>(0,e.lG)(a.value).includes(b))),f=[];if(d&&(f.push({key:"award",text:"争创省市级优质工程奖、安全文明标准化工地"}),f.push({key:"greenQuant",text:"非传统水源利用率、废弃物回收率等绿色施工量化指标"})),f.push({key:"workInjury",text:"按规定为作业人员办理工伤保险"}),0===f.length)return c;let g=await L(f,K(a));d&&(g.get("award")||c.push({level:"warning",severity:"warning",category:"structure",owner:"llm",repairability:"llm_repairable",message:"属地创优目标缺失:正文未提及省市级优质工程/文明标准化工地等创优目标(安徽省属地适配项)",suggestion:"在质量目标或创优规划小节补写与项目实际规模相符的创优目标表述;奖项名称必须以评分项要求提取结果(招标文件原文)为准逐字落位,禁止自行编造或替换为其他奖项名称。"}),/四节一环保|绿色施工|节水|节材|节能/u.test(a)&&!g.get("greenQuant")&&c.push({level:"warning",severity:"warning",category:"structure",owner:"llm",repairability:"llm_repairable",message:"四节一环保量化指标缺失:非传统水源利用率/漏损率/土方平衡率/废弃物回收率等均未量化(附录八基准对照项)",suggestion:"在绿色施工章节补充量化指标(非传统水源利用率、管网漏损率、土方平衡率、可回收废弃物回收率等)与模板周转次数,数值参考行业通用水平与附录八基准,不得编造极端值。"}));let h=a.replace(e.LH,"");return/(?:劳务|农民工|工资)/u.test(h)&&!g.get("workInjury")&&c.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:"工伤保险表述缺失:正文有劳务/农民工管理内容但未提及工伤保险缴纳(政策合规漏项)",suggestion:"在劳务管理/农民工工资保障小节补充“按规定为作业人员办理工伤保险”表述。"}),c}let S=RegExp(`(?:^|
92
+ ${e}`,"写作要求:必须严格按“主题块→H4 要点”两层结构输出,三级标题与 H4 要点标题必须与给定标题完全一致,不得改名、合并或遗漏 H4 要点;每个 H4 要点必须覆盖其标注的全部评分细目内容,但不得为这些评分细目单独开设小节标题;项目专属事实只使用事实卡、图谱上下文和绑定证据;法律法规、标准规范名称与编号等公共知识可直接引用,但任何数值/规格/型号/参数必须来自事实卡、图谱上下文或绑定证据,禁止以行业惯例或公共知识为由虚构;不得输出后台话术、兜底措辞、待确认、不适用;缺少项目事实的小节不得编造。"].filter(Boolean).join("\n\n")}},30836:(a,b,c)=>{c.d(b,{I:()=>l,Qk:()=>k,ll:()=>f,n8:()=>m,qr:()=>j});var d=c(18274);let e=/\b\d+(?:\.\d+)?\s*(?:日历天|小时|分钟|天|周|月|年|万元|元|台|套|个|项|批|次|份|人)(?=[。,,;;::、\s]|$)/gu;function f(a){let b=new Set;for(let c of a.matchAll(d._W))b.add(c[0].trim());for(let c of a.matchAll(e))b.add(c[0].trim());return[...b]}function g(a){let b=a.match(/\d+(?:\.\d+)?/u);return b?b[0]:a.trim()}function h(a){return a.replace(/\d+(?:\.\d+)?/gu,"#").toUpperCase()}function i(a,b){let c=a.indexOf(b);return c<0?{before:"",after:""}:{before:a.slice(Math.max(0,c-4),c),after:a.slice(c+b.length,Math.min(a.length,c+b.length+4))}}function j(a,b){let c=a.match(/[\p{Script=Han}]/gu)||[],d=b.match(/[\p{Script=Han}]/gu)||[];if(0===c.length||0===d.length)return 0;let e=0,f=Array(d.length).fill(0);for(let a=0;a<c.length;a+=1){let b=0;for(let g=0;g<d.length;g+=1){let h=f[g];f[g]=c[a]===d[g]?b+1:0,b=h,f[g]>e&&(e=f[g])}}return e}function k(a,b){let c=[...a.matchAll(/[\p{Script=Han}]/gu)],d=b.match(/[\p{Script=Han}]/gu)||[];if(0===c.length||0===d.length)return{length:0,start:0,end:0};let e=0,f=-1,g=Array(d.length).fill(0);for(let a=0;a<c.length;a+=1){let b=0;for(let h=0;h<d.length;h+=1){let i=g[h];g[h]=c[a][0]===d[h]?b+1:0,b=i,g[h]>e&&(e=g[h],f=a)}}if(0===e||f<0)return{length:0,start:0,end:0};let h=c[f-e+1],i=c[f];return{length:e,start:h.index,end:i.index+i[0].length}}function l(a,b,c=""){let d=f(a),e=f(b),k=new Set(e.map(g)),m=c?f(c):[],n=c?new Set(m.map(g)):k,o=new Map;for(let a of[...e,...m]){let b=h(a),c=o.get(b)||[];c.push(a),o.set(b,c)}let p=[],q=[],r=[],s=c||b;for(let b of d){let c=g(b);if(k.has(c)||n.has(c)){p.push(b);continue}let d=o.get(h(b))||[],e=i(a,b),f="",l=0;for(let a of d){let b=i(s,a),c=Math.max(j(e.before,b.before),j(e.after,b.after));c>l&&(l=c,f=a)}d.length>0&&l>=3?q.push({found:b,expected:f}):r.push(b)}return{confirmed:p,mismatched:q,unsourced:r}}function m(a,b=20){let c=[];return a.mismatched.length>0&&c.push(`【数值核对不通过——必须修正】正文以下数值与绑定材料不一致:${a.mismatched.map(a=>`${a.found}→${a.expected}`).join("、")}。逐处改回材料原值,不得保留错误数值。`),a.confirmed.length>0&&c.push(`【已核验正确的数值——重写时必须原样保留,不得改动】${a.confirmed.slice(0,b).join("、")}。`),c.join("\n")}},32434:(a,b,c)=>{c.d(b,{IA:()=>w,Qu:()=>t,SU:()=>v,ZR:()=>n,cN:()=>u,hw:()=>o,rj:()=>s});var d=c(76760),e=c(44533),f=c(40299),g=c(80439),h=c(22157);function i(a){return a.replace(/\\/gu,"/").replace(/^\/+|\/+$/gu,"")}function j(a){let b=i(a).split("/").filter(Boolean);return b.length>1?b[0]:d.basename(b[0]||"当前项目")}function k(a){return a.replace(/[\s_\-—()()【】、,,.。·]/gu,"").replaceAll("[","").replaceAll("]","").toLowerCase()}function l(a){return"disk"!==a.status&&"error"!==a.status&&Number(a.indexedAt||0)>0&&Number(a.chunkCount||0)>0}function m(a){let b=new Set;for(let c of a)for(let a of c.relativePath.match(/\b\d{4}[A-Z]{2,}\d{4,}\b/gu)||[])b.add(a);return[...b]}function n(a,b,c=""){let d=(0,e.Yy)(a).filter(l),f=(b.projectBindings||[]).filter(a=>a.materialRootPath).map(a=>({materialRootPath:i(a.materialRootPath)})).map(a=>a.materialRootPath).filter(Boolean),g=f.length?d.filter(a=>f.some(b=>i(a.relativePath)===b||i(a.relativePath).startsWith(`${b}/`))):d,o=function(a){let b=new Map;for(let c of a){let a=j(c.relativePath);b.set(a,[...b.get(a)||[],c])}return b}(g),p=c.trim(),q=[...o.keys()];if(p){let a=[...o.entries()].map(([a,b])=>({root:a,files:b,score:function(a,b){let c=k(a),d=k(b);if(c.length>=4&&d.includes(c.slice(0,Math.min(16,c.length))))return 100;let e=new Set(["项目","工程","施工","总承包","资料","招标","图纸","清单"]);return a.split(/(?:\s|_|-|—|(|)|\(|\)|【|】|\[|\]|、|,|,|\.)+/u).filter(a=>a.length>=2&&!e.has(a)).reduce((a,c)=>a+(b.includes(c)?Math.min(20,c.length):0),0)}(a,p)})).filter(a=>a.score>0).sort((a,b)=>b.score-a.score);if(1===a.length||a.length>1&&a[0].score>a[1].score){let b=[a[0].root],c=a[0].files.map(a=>a.relativePath),e=m(a[0].files);return e.length>=2?{selectedRoots:[],selectedFiles:[],totalAvailableFiles:d.length,ambiguous:!0,locked:!1,reason:`资料组「${a[0].root}」内检测到 ${e.length} 个不同项目编号(${e.join("、")}),疑似多份项目资料混放,已阻断生成避免跨项目污染`,rejectedRoots:q,scopeHash:(0,h.c6)({ambiguous:!0,mixedProjectNos:e})}:{selectedRoots:b,selectedFiles:c,totalAvailableFiles:d.length,ambiguous:!1,locked:!0,reason:`用户需求唯一匹配资料组:${a[0].root}`,rejectedRoots:q.filter(a=>!b.includes(a)),scopeHash:(0,h.c6)({selectedRoots:b,selectedFiles:c})}}if(a.length>1){let b=a.filter(b=>b.score===a[0].score).map(a=>a.root);return{selectedRoots:[],selectedFiles:[],totalAvailableFiles:d.length,ambiguous:!0,locked:!1,reason:`用户需求同时匹配多个资料组:${b.join("、")}`,rejectedRoots:q,scopeHash:(0,h.c6)({ambiguous:!0,selectedRoots:b})}}}if(1===f.length){let a=g.map(a=>a.relativePath),b=m(g);return b.length>=2?{selectedRoots:[],selectedFiles:[],totalAvailableFiles:d.length,ambiguous:!0,locked:!1,reason:`模板绑定资料组「${f[0]}」内检测到 ${b.length} 个不同项目编号(${b.join("、")}),疑似多份项目资料混放,已阻断生成避免跨项目污染`,rejectedRoots:q,scopeHash:(0,h.c6)({ambiguous:!0,mixedProjectNos:b})}:{selectedRoots:f,selectedFiles:a,totalAvailableFiles:d.length,ambiguous:!1,locked:!0,reason:`模板绑定唯一资料组:${f[0]}`,rejectedRoots:q.filter(a=>!f.includes(a)),scopeHash:(0,h.c6)({selectedRoots:f,selectedFiles:a})}}return{selectedRoots:[],selectedFiles:[],totalAvailableFiles:d.length,ambiguous:!0,locked:!1,reason:f.length>1?`模板绑定多个资料组但需求未唯一指定:${f.join("、")}`:"未绑定资料组且需求未唯一指定资料范围,禁止回退全量资料",rejectedRoots:q,scopeHash:(0,h.c6)({ambiguous:!0,boundRoots:f,requirement:c})}}function o(a,b){let c=new Map((0,e.Yy)(a).map(a=>[a.relativePath,a])),f=b.selectedFiles.map(a=>{let b=c.get(a),e=Number(b?.chunkCount||0);return{path:a,root:j(a),fileName:d.basename(a),chunkCount:e,indexedAt:b?.indexedAt,status:b?.status,hash:(0,h.c6)({filePath:a,chunkCount:e,indexedAt:b?.indexedAt,status:b?.status})}});return{files:f,totalFiles:f.length,totalChunks:f.reduce((a,b)=>a+b.chunkCount,0),roots:[...new Set(f.map(a=>a.root))],createdAt:Date.now(),snapshotHash:(0,h.c6)(f.map(a=>({path:a.path,hash:a.hash})))}}function p(a,b){return a.filter(a=>b.test(`${a.fieldId||""} ${a.fieldName||""} ${a.key} ${(0,h.lG)(a.value)}`))}function q(a){return(0,h.lG)(a.value).replace(/\s+/gu," ").trim()}let r=new Set(["资料文件","资料组","资料角色","章节意图候选","项目名称候选"]);function s(a){let b=a.facts.filter(a=>!r.has(a.key)&&q(a)),c=p(b,/项目名称|工程名称|招标项目名称|建设地点|建设规模|招标范围|施工范围|建设内容/u),d=p(b,/工期|日历天|进度|开工|竣工/u),e=p(b,/质量|验收|合格|标准|规范/u),f=p(b,/清单|工程量|材料|设备|机械|劳动力|资源/u),g=p(b,/安全|文明|环保|危大|风险/u),h=c.slice(0,8).map(a=>`${a.key}:${q(a)}`).join(";");return{works:h?[{name:a.materialSnapshot.roots[0]||"当前项目",scope:h,sourceFiles:[...new Set(c.map(a=>a.sourceFile).filter(Boolean))],relatedItems:f.slice(0,8).map(a=>q(a))}]:[],methods:[],resources:f.slice(0,30).map(a=>({name:a.key,type:"material",spec:q(a),quantity:"",unit:"",sourceFiles:a.sourceFile?[a.sourceFile]:[]})),schedule:d.slice(0,10).map(a=>({milestone:a.key,duration:q(a),startDate:"",endDate:"",sourceFiles:a.sourceFile?[a.sourceFile]:[]})),standards:e.slice(0,16).map(a=>({code:a.key,description:q(a),sourceFiles:a.sourceFile?[a.sourceFile]:[]})),risks:g.slice(0,16).map(a=>({risk:q(a),level:"medium",mitigation:"",sourceFiles:a.sourceFile?[a.sourceFile]:[]})),requirements:p(b,/招标|投标|合同|承包|响应|要求|补疑|澄清|答疑/u).slice(0,20).map(a=>({category:a.key,detail:q(a),sourceFiles:a.sourceFile?[a.sourceFile]:[]})),siteConditions:p(b,/现场|周边|交通|既有|保护|场地/u).slice(0,12).map(a=>({condition:q(a),impact:"",sourceFiles:a.sourceFile?[a.sourceFile]:[]})),addendumChanges:[],gaps:[],generatedAt:Date.now()}}function t(a){let b=a.materialScope||n(a.projectRoot,a.template,a.requirement||"");if(b.ambiguous||!b.locked||0===b.selectedFiles.length)throw Error(`资料范围未锁定:${b.reason}`);let c=o(a.projectRoot,b),d=a.projectGraph||s({facts:a.facts,materialSnapshot:c,requirement:a.requirement}),e=a.projectGraph?"project-graph":"project-graph-runtime",f=a.projectGraph?"预处理完整项目图谱":"运行期项目图谱草案",g=Date.now();return{runId:`run-${g}-${(0,h.c6)({templateId:a.template.id,requirement:a.requirement||"",scopeHash:b.scopeHash}).slice(0,8)}`,templateId:a.template.id,requirement:a.requirement||"",projectRoot:a.projectRoot,materialScope:b,materialSnapshot:c,nodes:[{id:"material-scope",type:"material_scope",status:"completed",startedAt:g,completedAt:g,outputSummary:b.reason,metrics:{selectedFiles:b.selectedFiles.length,rejectedRoots:b.rejectedRoots.length}},{id:"material-snapshot",type:"material_snapshot",status:"completed",startedAt:g,completedAt:g,outputSummary:`${c.totalFiles} 份资料,${c.totalChunks} 个切片`,metrics:{totalFiles:c.totalFiles,totalChunks:c.totalChunks}},{id:e,type:"project_graph",status:"completed",startedAt:g,completedAt:g,outputSummary:`${f}:${d.works.length}工程 ${d.resources.length}资源 ${d.schedule.length}工期 ${d.standards.length}标准`,metrics:{facts:a.facts.length,precomputed:!!a.projectGraph,source:a.projectGraphSource||"runtime"}}],facts:a.facts,baseProjectGraph:d,issues:[],createdAt:g}}function u(a,b=200,c=50){if(a.nodes.length<=b)return;let d=a.nodes.slice(-c),e=a.nodes.slice(0,a.nodes.length-c),f=e.filter(a=>"project_graph"!==a.type&&("completed"===a.status||"failed"===a.status||"skipped"===a.status)),g=e.filter(a=>!f.includes(a));if(0===f.length)return;let h={id:`nodes-archive-${Date.now()}`,type:"summary",status:"completed",startedAt:f[0].startedAt,completedAt:f[f.length-1].completedAt||Date.now(),outputSummary:`已归档 ${f.length} 个历史节点(${[...new Set(f.map(a=>a.type))].join("、")})`,metrics:{archivedNodes:f.length}};a.nodes.splice(0,a.nodes.length,...g,h,...d)}function v(a){let b=a.nodes.find(a=>"project_graph"===a.type),c=!!b?.metrics?.precomputed,d=[(0,g.X5)({type:"validation",roleId:"agent-material-scope",status:"success",message:`资料范围已锁定:${a.materialScope.selectedRoots.join("、")}`,details:[`${a.materialScope.reason}`,`入选资料:${a.materialScope.selectedFiles.length}/${a.materialScope.totalAvailableFiles}`,`已排除资料组:${a.materialScope.rejectedRoots.slice(0,8).join("、")||"无"}`]},{subtitle:"Agent 资料范围锁定"}),(0,g.X5)({type:"knowledge_retrieval",roleId:"agent-material-snapshot",status:"success",message:`资料快照已固定:${a.materialSnapshot.totalFiles} 份资料、${a.materialSnapshot.totalChunks} 个切片`,details:a.materialSnapshot.files.slice(0,10).map(a=>`${a.root}|${a.fileName}|${a.chunkCount}切片`)},{subtitle:"Agent 资料快照"})];return c||d.push((0,g.X5)({type:"file_understanding",roleId:"agent-project-graph-runtime",status:"success",message:`运行期项目图谱草案已建立:${a.baseProjectGraph.works.length}工程 ${a.baseProjectGraph.resources.length}资源 ${a.baseProjectGraph.schedule.length}工期 ${a.baseProjectGraph.standards.length}标准`,details:["缓存缺失时用于资料范围和 Planner 预备分析;正式完整项目图谱会随后由 LLM 构建",`事实数:${a.facts.length}`]},{subtitle:"Agent 项目图谱预备分析"})),d}function w(a){let b=a.split(/\r?\n/u),c=[];return b.forEach((a,b)=>{f.Rg.test(a)&&c.push({level:"error",severity:"blocker",category:"style",owner:"system",message:`正式正文不得出现后台或兜底话术:第 ${b+1} 行`,suggestion:"必须改为有事实依据的正式表达;非必填缺失字段应删除,必填事实缺失应阻断生成。"})}),[...c,...(0,f.bx)(a),...(0,f.uv)(a),...(0,f.nP)(a)].slice(0,20)}},35547:(a,b,c)=>{c.d(b,{$$:()=>aQ,AD:()=>bf,Bn:()=>ap,CJ:()=>bb,CZ:()=>M,Ci:()=>bu,Et:()=>ay,Fr:()=>aX,GJ:()=>bk,H:()=>aN,HW:()=>a8,IJ:()=>af,Ih:()=>aa,Jt:()=>bd,KE:()=>bx,LA:()=>aZ,LZ:()=>bz,MC:()=>a6,MQ:()=>T,N$:()=>aS,No:()=>K,ON:()=>aj,Rv:()=>bo,Rw:()=>aM,TG:()=>bh,Tz:()=>aC,Ve:()=>av,WY:()=>ad,X6:()=>t,Xc:()=>ab,YN:()=>_,ZN:()=>aE,Zi:()=>x,_F:()=>az,a8:()=>p,ae:()=>aw,bq:()=>aY,c6:()=>bv,cJ:()=>S,cT:()=>aV,cf:()=>n,cl:()=>bm,cv:()=>bw,dF:()=>X,dI:()=>ag,eS:()=>l,ek:()=>a$,fQ:()=>a1,fg:()=>by,hu:()=>bn,iY:()=>ae,iy:()=>bt,jP:()=>bl,jy:()=>be,k6:()=>ak,l4:()=>V,m6:()=>J,mB:()=>aP,mC:()=>ac,mt:()=>al,nm:()=>ah,r8:()=>A,rA:()=>y,s3:()=>L,sg:()=>ba,sn:()=>P,tH:()=>aA,u2:()=>r,ub:()=>bc,vH:()=>C,vq:()=>O,we:()=>aD,x5:()=>aB,xR:()=>bi,xX:()=>a7,y2:()=>U,zP:()=>bs});var d=c(78217),e=c(22157),f=c(37047),g=c(41991),h=c(71678),i=c(12863),j=c(81010),k=c(30836);let l=/(\d{4})\s*年\s*(\d{1,2})\s*月\s*(\d{1,2})\s*日/gu,m=/进度计划|里程碑|节点安排|验收时间|完成日期|竣工日期|移交日期|合同签订/u;function n(a,b){let c=[],d=function(a){let b=new Set;for(let c of[...a.project,...a.schedule,...a.quality,...a.resources,...a.preciseFacts].map(a=>`${a.key||""}${a.fieldName||""}${(0,e.lG)(a.value)}`))for(let a of c.matchAll(l))b.add(`${a[1]}年${a[2]}月${a[3]}日`);return b}(b),f=[...b.schedule,...b.project].map(a=>`${a.key||""}${(0,e.lG)(a.value)}`).join(" "),g=l.test(f);for(let b of(l.lastIndex=0,a.matchAll(l))){let e=`${b[1]}年${b[2]}月${b[3]}日`;if(d.has(e))continue;let f=Math.max(0,(b.index||0)-40),h=a.slice(f,(b.index||0)+e.length+40);g&&m.test(h)||c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`正文编造开工日期“${e}”:绑定资料未提供该具体日历日期(招标文件以开工令时间为准)`,suggestion:`删除自行设定的具体日期,统一改写为“以开工令时间为准”;如为进度计划节点日期,必须标注为计划推算节点并保持与总工期一致。`})}return c.slice(0,3)}let o=/(单体建筑面积|总建筑面积|建筑面积)[^。;;\n]{0,30}?([\d,]+(?:\.\d+)?)\s*(?:㎡|m2|m²|平方米)/gu;function p(a,b){let c=[],d=function(a){let b=[];for(let c of[...a.project,...a.preciseFacts].map(a=>`${a.fieldName||a.key||""}:${(0,e.lG)(a.value)}`)){let a=/(总占地面积|占地面积|单体建筑面积|总建筑面积|建筑面积|地上建筑面积|地下建筑面积|总用地面积)/u.exec(c)?.[1],d=/([\d,]+(?:\.\d+)?)\s*(?:㎡|m2|m²|平方米)/u.exec(c);if(!a||!d)continue;let e=Number(d[1].replace(/[,,]/gu,""));Number.isFinite(e)&&e>0&&b.push({label:a,value:e})}return b}(b),f=new Set(d.filter(a=>/占地面积/u.test(a.label)).map(a=>a.value)),g=new Set(d.filter(a=>/建筑面积/u.test(a.label)&&!/地上|地下/u.test(a.label)).map(a=>a.value));if(0===f.size||0===g.size)return c;for(let b of a.matchAll(o)){let a=Number(b[2].replace(/[,,]/gu,""));if(!Number.isFinite(a)||a<=0||!f.has(a)||g.has(a))continue;let d=b[1],e=[...g].join("、");c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`字段-数值错配:“${d} ${b[2]}㎡”将总占地面积误作${d}(绑定资料${d}数值为 ${e}㎡)`,suggestion:`总占地面积与建筑面积是两个独立字段,必须严格区分:将“${d} ${b[2]}㎡”改为资料数值“${d} ${e}㎡”,总占地面积保持独立表述。`})}return c.slice(0,3)}let q=/(地上[^。;;]{0,30}?([\d,]+(?:\.\d+)?)\s*(?:㎡|m2|m²|平方米)[^。;;]{0,40}?地下[^。;;]{0,30}?([\d,]+(?:\.\d+)?)\s*(?:㎡|m2|m²|平方米)[^。;;]{0,60}?(?:单体建筑面积|总建筑面积)[^。;;]{0,20}?([\d,]+(?:\.\d+)?)\s*(?:㎡|m2|m²|平方米))/gu;function r(a){let b=[];for(let c of a.matchAll(q)){let a=Number(c[2].replace(/[,,]/gu,"")),d=Number(c[3].replace(/[,,]/gu,"")),e=Number(c[4].replace(/[,,]/gu,""));if(![a,d,e].every(Number.isFinite))continue;let f=a+d;f!==e&&b.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`面积算术矛盾:地上 ${a}㎡ + 地下 ${d}㎡ = ${f}㎡,与同句“单体建筑面积 ${e}㎡”不符(差 ${Math.abs(f-e).toFixed(2)}㎡)`,suggestion:`地上与地下面积之和必须等于单体建筑面积:按绑定资料统一三者数值,删除错误数值表述。`})}return b.slice(0,3)}let s=/(?:阶段|期间)[^。;;\n]{0,12}?(?:约)?\s*([\d,]+)\s*人/g,t=/(?:劳动力|作业人员|施工人员)(?:(?!(?:不得超过|不超过|不大于|不少于|不低于|不应超过|不应少于|不得大于|不得少于|至少|最多))[^。;;\n]){0,16}?(?:约)?\s*([\d,]+)\s*人/g,u=/([^、,。;;\n|]{2,24}?)(?:约|为|达|共|计)?\s*([\d,]+)\s*人(?![日次月年时均])/gu;function v(a,b,c){let d=Math.max(a.lastIndexOf("。",c),a.lastIndexOf(";",c),a.lastIndexOf(";",c),a.lastIndexOf("\n",c)),e=a.slice(Math.max(b,d+1),c),f=Math.max(e.lastIndexOf(","),e.lastIndexOf(","),e.lastIndexOf("、"));f>=0&&(e=e.slice(f+1));let g=[...e.matchAll(/([^,,。;;、\n]{1,14})阶段/gu)].map(a=>a[1]);for(let a=g.length-1;a>=0;a-=1){let b=g[a];if(!b||/^(?:该|本|此|上述|这|其|相应|各)$/u.test(b))continue;let c=i.Ei.find(a=>a===b);if(c)return c;if(!i.Ei.some(a=>a.startsWith(b)))return`${b}阶段`}}let w=/项目经理|技术负责人|项目班子|管理人员|管理层|施工员|质量员|质检员|安全员|材料员|资料员|测量员|试验员|造价员|预算员/u;function x(a,b,c){let d=Math.max(c,b-30),e=a.slice(d,b),f=Math.max(e.lastIndexOf(","),e.lastIndexOf("、"),e.lastIndexOf(","),e.lastIndexOf(";"),e.lastIndexOf(";"),e.lastIndexOf(":"),e.lastIndexOf(":"),e.lastIndexOf("。")),g=a.slice(f>=0?d+f+1:d,b);if(w.test(g))return{group:"management"};let h=g.match(i.vC);return h?.[0]?{group:"trade",trade:h[0]}:{group:"peak"}}function y(a,b){let c=[],d=b?.laborPeakAuthority,e=[],f=new Set;for(let b of[i.Dp,t,s])for(let c of a.matchAll(b)){let d=a.lastIndexOf("\n",c.index)+1,g=a.indexOf("\n",c.index);-1===g&&(g=a.length);let h=a.slice(d,g);if(/^\s*\|.*\|\s*$/u.test(h))continue;let j=Number(c[1].replace(/[,,]/gu,"")),k=c.index+c[0].indexOf(c[1]);if(/按蓝图[^。;;\n]{0,16}?(?:统一|调整|修正|核定)\s*(?:为|至)\s*$/u.test(a.slice(Math.max(0,k-40),k)))continue;let l=(function(a){let b=[];for(let c of a.matchAll(/(?:→|—|–|~|~)/gu)){let d=c.index??0,e=a.slice(0,d),f=/(?:劳动力|作业人员|施工人员|高峰期|高峰|峰值|阶段)[^,。;;]*$/u.exec(e);if(!f)continue;let g=f.index;if(b.some(a=>a.start===g))continue;let h=/[。;;]/u.exec(a.slice(d)),i=[...(a.slice(g,h?d+h.index:void 0).split(/[,,]/u)[0]||"").matchAll(/([\d,]+)\s*人/g)],j=i.map(a=>Number(a[1].replace(/[,,]/gu,""))).filter(a=>Number.isFinite(a)&&a>0);if(j.length<2)continue;let k=i[i.length-1];b.push({peak:Math.max(...j),start:g,end:g+(k.index??0)+k[0].length})}return b})(h).find(a=>k-d>=a.start&&k-d<a.end);if(void 0!==l){let b=`${d}:${l.start}:${l.end}`;f.has(b)||(f.add(b),e.push({value:l.peak,text:h.trim().slice(0,40),stage:(0,i.rx)(a,k),group:"peak"}));continue}if(Number.isFinite(j)&&j>0){let{group:f,trade:g}=x(a,k,d),h=v(a,d,k),l=void 0===h&&/(?:该|本|此|这|其|上述)$/u.test(a.slice(Math.max(0,c.index-2),c.index)),m=b===s?void 0===h?l?function(a,b){let c=a.slice(Math.max(0,b-160),b),d=[...c.matchAll(/第[一二三四五六七八九十百\d]{1,4}阶段/gu)].pop();if(d)return d[0];let e=[...c.matchAll(/([^,,。;;、\n]{1,14})阶段/gu)];for(let a=e.length-1;a>=0;a-=1){let b=e[a][1];if(!b||/^(?:该|本|此|上述|这|其|相应|各)$/u.test(b)||/个/u.test(b)||/的$/u.test(b))continue;let c=i.Ei.find(a=>a===b);if(c)return c;if(!i.Ei.some(a=>a.startsWith(b)))return`${b}阶段`}}(a,k)??"(回指阶段)":"":h.endsWith("阶段")?h:`${h}阶段`:h??(0,i.rx)(a,k)??"";e.push({value:j,text:c[0].trim().slice(0,40),stage:m,group:f,trade:g})}}let g=(0,i.Rm)(a),h=(a,b)=>c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:a,suggestion:b});for(let a=0;a<e.length;a+=1)for(let b=a+1;b<e.length;b+=1){let[c,f]=[e[a],e[b]];if(c.group!==f.group||"trade"===c.group&&c.trade!==f.trade||c.stage&&f.stage&&c.stage!==f.stage)continue;if(!c.stage!=!f.stage){let[a,b]=c.stage?[f,c]:[c,f];if(a.value>=b.value)continue}let g=Math.abs(c.value-f.value)/Math.max(c.value,f.value);if(c.value!==f.value){h(`劳动力数据矛盾:正文“${c.text}”(${c.value} 人)与“${f.text}”(${f.value} 人)互斥(相差 ${Math.round(100*g)}%)`,void 0!==d&&d>0?`劳动力峰值数据必须全文唯一:以蓝图劳动力峰值 ${d} 人为准统一正文各处峰值表述,删除矛盾数字。`:"劳动力峰值数据必须全文唯一:以分阶段投入明细表为准统一正文各处峰值表述,删除矛盾数字。"),a=e.length;break}}let j=g.filter(a=>a.hasPeakCol).map(a=>a.peak);if(j.length>=2){let a=Math.max(...j),b=Math.min(...j),c=Math.abs(a-b)/a;a!==b&&h(`劳动力数据矛盾:分阶段投入明细表峰值 ${b} 人与另一劳动力表峰值 ${a} 人互斥(相差 ${Math.round(100*c)}%)`,"劳动力峰值数据必须全文唯一:统一各劳动力表格的峰值数据,删除矛盾表格数字。")}let k=e.filter(a=>"peak"===a.group),l=k.reduce((a,b)=>Math.max(a,b.value),0),m=g.filter(a=>!a.hasTradeCol).length>0?Math.max(...g.filter(a=>!a.hasTradeCol).map(a=>a.peak)):void 0;if(void 0!==m&&l>0&&l>m&&!(void 0!==d&&d>0&&l===d)){let a=k.find(a=>a.value===l)?.text||"";h(`劳动力数据矛盾:正文表述“${a}”达 ${l} 人,而分阶段投入明细表最大峰值为 ${m} 人(超出 ${Math.round((l-m)/m*100)}%)`,"劳动力投入数据必须全文统一:以分阶段明细表为准复核正文峰值表述,删除与表格矛盾的“高峰期 X 人”措辞或调整表格数据。")}let n=[];for(let b of a.matchAll(/(?:高峰期|高峰|峰值)[^。;;\n]{0,16}?控制(?:在|为|到)?(?:约)?\s*([\d,]+)\s*人(?:以内|以下|之内)?/gu)){let a=Number(b[1].replace(/[,,]/gu,""));Number.isFinite(a)&&a>0&&n.push(a)}if(n.length>0){let a=Math.max(...n),b=[...e,...void 0!==m?[{value:m}]:[]].filter(b=>b.value>a);if(b.length>0){let c=Math.max(...b.map(a=>a.value));h(`劳动力数据矛盾:正文“高峰期总人数控制在${a}人”的上限表述与峰值表述 ${c} 人不自洽(阶段高峰投入超出控制上限 ${Math.round((c-a)/a*100)}%)`,"总量控制上限与各阶段峰值必须自洽:阶段高峰人数不得超过全文宣称的高峰控制人数;以分阶段投入明细表为准修正控制目标或各阶段峰值表述。")}}for(let b of a.split(/\r?\n/u)){let a=b.trim();if(!(!a||/^\s*\|/u.test(a)||/^#{1,6}\s/u.test(a)))for(let b of a.split(/(?<=[。;;])/u)){let a=/=\s*([\d,]+)\s*人/u.exec(b);if(!a)continue;let c=b.slice(0,a.index);if(!/[++]/u.test(c))continue;let d=c.split(/[++]/u),e=0,f=!1;for(let a of d){let b=a.match(/(\d+)\s*[×xX]\s*(\d+)/u)||a.match(/(\d+)\s*人?\s*$/u);b&&(f=!0,e+=void 0!==b[2]?Number(b[1])*Number(b[2]):Number(b[1]))}if(!f)continue;let g=Number(a[1].replace(/[,,]/gu,""));if(!Number.isFinite(g)||g<=0||e<=0)continue;let i=b.trim().slice(0,60);e!==g&&h(`劳动力数据矛盾:正文班组加总算式“${i}”左侧求和 ${e} 人 ≠ 结果 ${g} 人`,"班组人数加总必须与合计一致:核对各班组人数或修正合计数字。");let j=/(?:投入|配置|安排|组织|总人数)[^。;;==++]{0,16}?([\d,]+)\s*人/u.exec(b);if(j){let a=Number(j[1].replace(/[,,]/gu,"")),c=b.slice(0,j.index+j[0].length),d=/[约近余]|左右/u.test(c.slice(-16));Number.isFinite(a)&&a>0&&!d&&a!==g&&h(`劳动力数据矛盾:正文宣称总人数 ${a} 人与班组加总算式结果 ${g} 人自相矛盾(相差 ${Math.round(Math.abs(a-g)/Math.max(a,g)*100)}%)`,"宣称总人数必须与班组加总一致:统一总人数与各班组人数,删除矛盾数字。")}}}for(let a of g){if(void 0===a.totalCell||a.countCells.length<2)continue;let b=Math.abs(a.totalCell-a.detailSum)/Math.max(a.totalCell,a.detailSum);a.totalCell!==a.detailSum&&h(`劳动力数据矛盾:劳动力表合计行 ${a.totalCell} 人与明细行之和 ${a.detailSum} 人不符(差 ${Math.round(100*b)}%)`,"劳动力表合计必须等于各明细行人数之和:统一合计行与明细行数据,删除矛盾数字。")}let o=[...a.matchAll(/(?:总|合计|总计|共)[^。;;\n|]{0,8}?([\d,]+)\s*(?:个)?工日/gu)].map(a=>Number(a[1].replace(/[,,]/gu,""))).filter(a=>Number.isFinite(a)&&a>0),p=[...a.matchAll(/(?:工期|总工期|计划工期)[^。;;\n]{0,16}?(\d{2,4})\s*(?:个)?(?:日历)?天/gu)].map(a=>Number(a[1])).filter(a=>Number.isFinite(a)&&a>=30&&a<=3e3);if(o.length>0&&l>0&&p.length>0){let a=Math.max(...o),b=Math.max(...p),c=l*b;a>c&&h(`劳动力数据矛盾:总工日 ${a} 个超过峰值 ${l} 人\xd7总工期 ${b} 天的算术上限 ${c} 个,不可能成立`,"总工日不得超过劳动力峰值\xd7总工期的算术上限:按各阶段人数\xd7阶段工期重算总工日,或修正峰值人数/总工期表述。")}return c.slice(0,5)}let z={slope:"基坑放坡开挖、土钉墙喷锚支护坡面",pile:"钻孔灌注桩、排桩、地下连续墙围护结构"};async function A(a,b){let c=[],d=a.split(/\n{2,}/u).filter(a=>a.trim().length>=30);if(0===d.length)return c;let e=await (0,f.Mv)(d,Object.values(z)),g=a=>e(a,z.slope)>=f.Eh,h=a=>i.re.test(a)&&e(a,z.pile)>=f.Eh,j=d.filter(a=>g(a)&&!h(a)),k=d.filter(a=>h(a)&&!g(a));return 0===j.length||0===k.length||c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`基坑支护方案前后不一致:放坡喷锚类支护表述与灌注桩排桩类支护表述分别成段出现(放坡喷锚类 ${j.length} 段、灌注桩排桩类 ${k.length} 段),属跨模板拼接断裂${"slope"===b?";权威体系判定(图纸/地质槽位):土钉墙、锚杆等放坡喷锚类——删除灌注桩排桩类表述":"pile"===b?";权威体系判定(图纸/地质槽位):灌注桩排桩类——删除放坡喷锚类独立成段表述":""}`,suggestion:"支护形式必须全文统一为一种体系(以图纸/地质条件为准):确定采用放坡喷锚或灌注桩排桩后,删除另一种体系的表述,并补充基坑开挖深度数值支撑危大分级判定。"}),c}let B=/^#{2,4}\s+(?:\d+(?:\.\d+)*\s+)?[^\n]*(?:危大工程(?:辨识)?(?:清单|识别)|危大(?:工程)?(?:及超危大)?(?:清单|识别|辨识))[^\n]*$/gmu;function C(a){let b=[],c=function(a){let b=a.split(/\r?\n/u),c=[];for(let a=0;a<b.length;a+=1){if(B.lastIndex=0,!B.test(b[a].trim()))continue;let d=[];for(let c=a+1;c<Math.min(b.length,a+30);c+=1){let a=b[c].trim();if(/^#{1,6}\s/u.test(a))break;let e=/^(?:\d+[.、.)]|[-*•])?\s*([^。;;|]{2,40})$/u.exec(a)?.[1];e&&d.push(e.replace(/[((【][^))】]*[))】]/gu,"").replace(/^[\s\d.、()()【】-]+/u,"").replace(/施工$/u,"").replace(/作业$/u,"").replace(/\s+/gu,"").trim())}d.length>=2&&c.push({title:b[a].trim(),items:[...new Set(d)]})}return c}(a);if(c.length<2)return b;for(let a=0;a<c.length;a+=1)for(let d=a+1;d<c.length;d+=1){let e=c[a],f=c[d],g=e.items.filter(a=>!f.items.includes(a)),h=f.items.filter(a=>!e.items.includes(a));(0!==g.length||0!==h.length)&&b.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`危大工程辨识清单不一致:“${e.title.slice(0,30)}”(${e.items.length} 项)与“${f.title.slice(0,30)}”(${f.items.length} 项)存在差异:前者独有【${g.join("、")||"无"}】,后者独有【${h.join("、")||"无"}】`,suggestion:"全文危大工程辨识清单必须唯一且一致:合并两处清单,统一项名、数量与分级表述,避免评标专家以清单矛盾质疑辨识深度。"})}return b.slice(0,3)}let D=/(?:无|未涉及|不涉及|不存在)[^。;\n]{2,120}?(?:及以上|以上)[^。;\n]{0,80}/gu,E=["落地式钢管脚手架","悬挑式脚手架","附着式升降脚手架","脚手架","模板支撑","模板工程","起重吊装","吊装","幕墙","钢结构","人工挖孔","拆除","暗挖","爆破","基坑","降排水","降水"],F=RegExp(E.join("|"),"gu"),G=/(\d+(?:\.\d+)?)\s*(kN|千牛|米|m(?![m²³23/]))/gu;function H(a){F.lastIndex=0;let b=new Set;for(let c of a.matchAll(F))b.add(c[0]);return b}function I(a){G.lastIndex=0;let b=[];for(let c of a.matchAll(G))b.push({value:Number(c[1]),unit:"米"===c[2]?"m":"千牛"===c[2]?"kN":c[2]});return b}function J(a){let b=[],c=[];for(let b of(D.lastIndex=0,a.matchAll(D))){let a=H(b[0]),d=I(b[0]);a.size>0&&d.length>0&&c.push({text:b[0],categories:a,params:d})}if(0===c.length)return b;let d=new Set;for(let e of a.split(/\r?\n/u)){let a=e.trim();if(!/^\|.+\|$/u.test(a)||!/危大/u.test(a)||/不属于危大|不构成危大|非危大|未达到危大|不是危大/u.test(a))continue;let f=H(a);if(0===f.size)continue;let g=I(a);if(0!==g.length)for(let e of c){let c=E.find(a=>f.has(a)&&e.categories.has(a));if(!c)continue;let h=g.find(a=>e.params.some(b=>b.unit===a.unit&&1e-9>Math.abs(b.value-a.value)));if(!h)continue;let i=`${c}|${h.unit}|${h.value}`;if(d.has(i))continue;d.add(i);let j=a.split("|").map(a=>a.trim()).filter(Boolean);b.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`危大清单与排除声明矛盾:正文声明「${e.text.replace(/\s+/gu,"").slice(0,36)}」,危大清单表格却将「${c} ${h.value}${h.unit}」列为危大工程(清单行「${j.slice(0,2).join(":").slice(0,40)}」)`,suggestion:"排除声明与危大清单必须同口径二选一(以资料参数为准):若资料证实存在该类别且达到判定阈值,删除正文排除声明、保留清单行并按危大工程管控;若资料不能证实,删除清单中该行及其下游专项方案/验收表述,不得两处自相矛盾。"})}}return b.slice(0,3)}let K=[{name:"施工工地周边100%围挡",query:"施工工地周边设置围挡封闭管理"},{name:"物料堆放100%覆盖",query:"物料堆放覆盖防尘"},{name:"出入车辆100%冲洗",query:"出入车辆冲洗设施清洗出场"},{name:"施工现场地面100%硬化",query:"施工现场场地地面硬化"},{name:"拆迁工地100%湿法作业",query:"拆迁工地湿法作业洒水降尘"},{name:"渣土车辆100%密闭运输",query:"渣土车辆密闭运输防止遗撒"}];function L(a){let b=[];for(let c of a.split(/\r?\n/u)){let a=c.trim();if(!(!a||/^#{1,6}\s/u.test(a)||/^\s*\|/u.test(a)))for(let c of a.split(/(?<=[。!?!?;;])/u)){let a=c.trim();a.length>=8&&a.length<=120&&b.push(a)}}let c=[...new Set(b)];if(c.length<=400)return c;let d=Math.ceil(c.length/400);return c.filter((a,b)=>b%d==0).slice(0,400)}async function M(a,b){if(0===b.length||0===a.length)return new Map;let c=await (0,f.Mv)(a.map(a=>a.text),b);return new Map(a.map(a=>[a.key,b.some(b=>c(a.text,b)>=.6)]))}let N={"施工工地周边100%围挡":/100%围挡|周边100%围挡/u,"物料堆放100%覆盖":/物料堆放100%覆盖|物料堆放.{0,8}覆盖|密目网.*覆盖|覆盖.{0,4}密目网/u,"出入车辆100%冲洗":/出入车辆100%冲洗|车辆.{0,10}冲洗|冲洗.{0,10}车辆|冲洗点/u,"施工现场地面100%硬化":/施工现场地面100%硬化|地面100%硬化/u,"拆迁工地100%湿法作业":/拆迁工地100%湿法作业|拆迁.{0,10}湿法作业|湿法作业.{0,10}拆迁/u,"渣土车辆100%密闭运输":/渣土车辆100%密闭运输|密闭运输|密闭式/u};function O(a,b){let c=N[a];return!!c&&b.some(a=>c.test(a))}async function P(a){let b=[];if(!/扬尘|环保|文明施工|绿色施工/u.test(a))return b;let c=[...new Set(a.split(/\r?\n/u).flatMap(a=>{let b=a.trim();return!b||/^#{1,6}\s/u.test(b)||/^\s*\|/u.test(b)||!/围挡|覆盖|堆放|冲洗|硬化|湿法|密闭|渣土|扬尘|降尘/u.test(b)?[]:b.split(/(?<=[。!?!?;;])/u).map(a=>a.trim()).filter(a=>a.length>=8&&a.length<=120)}))],d=await M(K.map(a=>({key:a.name,text:a.query})),c),e=/(?:本项目|本工程|该工程|该项目|本标段|本施工项目)[^。;;\n]{0,30}(?:无拆迁|不涉及拆迁|无房屋拆除|无拆除)/u.test(a),f=K.filter(a=>!d.get(a.name)&&!O(a.name,c)).filter(a=>!("拆迁工地100%湿法作业"===a.name&&e)).map(a=>a.name);return 0===f.length||b.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:`“扬尘治理六个百分百”未逐项落实:缺少【${f.join("、")}】(${K.length-f.length}/${K.length} 项命中)`,suggestion:"按检查规范第七部分要求逐条表述六项措施:工地周边100%围挡、物料堆放100%覆盖、出入车辆100%冲洗、施工现场地面100%硬化、拆迁工地100%湿法作业、渣土车辆100%密闭运输。"}),b}let Q=/建设地点|工程地点|项目地点|实施地点|服务地点|交付地点|建设地址/u,R=["安徽","合肥","芜湖","蚌埠","淮南","马鞍山","淮北","铜陵","安庆","黄山","滁州","阜阳","宿州","六安","亳州","池州","宣城"];async function S(a,b){let c=[],d=b.project.some(a=>Q.test(`${a.fieldName||""}${a.key||""}`)&&R.some(b=>(0,e.lG)(a.value).includes(b))),f=[];if(d&&(f.push({key:"award",text:"争创省市级优质工程奖、安全文明标准化工地"}),f.push({key:"greenQuant",text:"非传统水源利用率、废弃物回收率等绿色施工量化指标"})),f.push({key:"workInjury",text:"按规定为作业人员办理工伤保险"}),0===f.length)return c;let g=await M(f,L(a));d&&(g.get("award")||c.push({level:"warning",severity:"warning",category:"structure",owner:"llm",repairability:"llm_repairable",message:"属地创优目标缺失:正文未提及省市级优质工程/文明标准化工地等创优目标(安徽省属地适配项)",suggestion:"在质量目标或创优规划小节补写与项目实际规模相符的创优目标表述;奖项名称必须以评分项要求提取结果(招标文件原文)为准逐字落位,禁止自行编造或替换为其他奖项名称。"}),/四节一环保|绿色施工|节水|节材|节能/u.test(a)&&!g.get("greenQuant")&&c.push({level:"warning",severity:"warning",category:"structure",owner:"llm",repairability:"llm_repairable",message:"四节一环保量化指标缺失:非传统水源利用率/漏损率/土方平衡率/废弃物回收率等均未量化(附录八基准对照项)",suggestion:"在绿色施工章节补充量化指标(非传统水源利用率、管网漏损率、土方平衡率、可回收废弃物回收率等)与模板周转次数,数值参考行业通用水平与附录八基准,不得编造极端值。"}));let h=a.replace(e.LH,"");return!/(?:劳务|农民工|工资)/u.test(h)||g.get("workInjury")||(0,e.SQ)(a)||c.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:"工伤保险表述缺失:正文有劳务/农民工管理内容但未提及工伤保险缴纳(政策合规漏项)",suggestion:"在劳务管理/农民工工资保障小节补充“按规定为作业人员办理工伤保险”表述。"}),c}let T=RegExp(`(?:^|
93
93
  )(?:#{1,6}\\s+[^
94
94
  ]*
95
95
  +)?([^
96
96
  |#][^。!?!?
97
- ]{18,60})[。!?!?]`,"gu");function T(a){let b=[],c=new Map;for(let b of a.matchAll(S)){let a=b[1].trim(),d=a.replace(/[\d,,.。%%㎡m2²]/gu,"").slice(0,16);if(d.length<10)continue;let e=c.get(d)||{count:0,sample:a};e.count+=1,c.set(d,e)}for(let{count:a,sample:d}of c.values())a<3||b.push({level:"warning",severity:"warning",category:"style",owner:"llm",repairability:"llm_repairable",message:`段首固定开场机械重复 ${a} 次:“${d.slice(0,30)}…”`,suggestion:"同一段首句式只保留首次出现处,其余处按所在章节语境改写为差异化开场,避免模板化套话观感。"});return b.slice(0,3)}function U(a){let b=[],{overviewBody:c,sentences:d}=function(a){let b,c=a.split("\n"),d=[];for(let a=0;a<c.length;a+=1){let e=/^(#{2,4})\s+(.+)$/u.exec(c[a].trim());if(e){let c=e[1].length;/(?:工程概况|项目概况|基本信息)/u.test(e[2])?b={index:a,level:c}:b&&c<=b.level&&(d.push([b.index,a]),b=void 0)}}b&&d.push([b.index,c.length]);let e=a=>d.some(([b,c])=>a>=b&&a<c),f=c.filter((a,b)=>e(b)).join("\n"),g=[];for(let a=0;a<c.length;a+=1){if(e(a))continue;let b=/本项目为|本工程为|该项目为|该工程为/u.exec(c[a]);if(!b)continue;let d=c[a].slice(b.index).split(/[。!?!?]/u)[0];d&&d.length>=12&&g.push(d)}return{overviewBody:f,sentences:g}}(a);if(0===d.length||!c)return b;let f=(c.match(/[\p{Script=Han}]/gu)||[]).join("");if(!f)return b;let g=[];for(let a of d)if(function(a,b){return(0,j.qr)(a,b)>=8||a.split("、").map(a=>(a.match(/[\p{Script=Han}]/gu)||[]).join("")).filter(a=>a.length>=3).filter(a=>b.includes(a)).length>=2}(a,f)&&g.push(a.slice(0,36)),g.length>=3)break;return 0===g.length||b.push({level:"error",severity:"blocker",category:"style",owner:"llm",repairability:"llm_repairable",message:`项目概况段跨章复述不得出现:概况章外有 ${g.length} 处以“本项目为/本工程为”等总述开头整段复述概况内容:${g.map(a=>`“${a}…”`).join("、")}`,suggestion:"总述数据只在工程概况类小节集中交代一次:其他章节直接写本章内容,仅可引用所需的具体数字(如计划工期天数),不得复述完整概况段。",provenance:{detectorId:"overview-recap",fingerprint:(0,e.c6)(a)}}),b}let V=["销项","复查","整改","闭环"];function W(a){let b=[],c=(0,d.V7)(a);if(c<3e3)return b;let e=[];for(let b of V){let d=a.split(b).length-1;e.push(d/c*1e3)}let f=Math.max(...e),g=V[e.indexOf(f)];return f>=3&&b.push({level:"warning",severity:"warning",category:"style",owner:"llm",repairability:"llm_repairable",message:`闭环句式模板化密集:“${g}”达 ${f.toFixed(1)} 次/千字(销项/复查/整改/闭环统一结尾高度重复)`,suggestion:"保留关键控制环节的闭环表述,其余改为差异化的过程控制语言(检验批验收、实测实量、旁站记录等),提升语言精练度。"}),b}let X=["专项设计文件尚未完成,待后续补充","评分指标存在缺口尚未明确","依据承诺函后续跟踪完善","本项目未采用行业认定的新技术、新工艺、新设备、新材料"],Y=/编制范围为[^。;;]{0,40}?所界定的全部施工内容|作为施工组织的控制性约束条件|分项验收[,,]?验收记录经监理工程师签字确认后归档|(?:执行|按|依据|按照)[^。;;]{0,10}?(?:〔|【)?20\d{2}(?:〕|】)?\s*\d+\s*号\s*(?:文件|办法|规定)?/u,Z=/未落实[^。;;]{0,24}?(?:整改|复查|销项|复验)|未(?:明确|列明|注明)[^。;;]{0,36}?按[^。;;]{0,44}?执行|(?:发现|对)[^。;;]{0,48}?(?:缺失|损坏|不全|脱岗|未审批|不合格)[^。;;]{0,72}?(?:整改|复查|销项|补齐|更换|停止作业|恢复施工)|(?:不得|严禁|禁止)[^。;;]{0,40}?(?:避免|防止)[^。;;]{0,20}?(?:返工|窝工|损失|事故)|(?:重难点|难点)(?:源于|在于)[^。;;]{0,80}?(?:若|如)未[^。;;]{0,40}?(?:将|会|可能)/u;async function $(a){let b=[],c=a.split(/\n+/u).filter(a=>a.trim()&&!/^\s*(#{1,6}\s+|\||[-*+]\s|>)/u.test(a)).flatMap(a=>a.split(/[。;;]/u)).map(a=>a.trim()).filter(a=>a.length>=12);if(0===c.length)return b;let d=/尚未|未完成|未明确|未采用|未落实|未确定|未闭合|存在缺口|有待|待补充|待完善|跟踪完善|不够|不明确|缺失|缺少|缺乏|风险较大|难以保证|无法保证|正在办理|暂未|未能|需进一步|不进行分包|不再分包|不转包/u,e=await (0,f.Mv)(c,[...X]),g=[...new Set(c.filter(a=>d.test(a)&&!Y.test(a)&&!Z.test(a)&&X.some(b=>e(a,b)>=f.Eh)))];if(0===g.length)return b;for(let a of g)b.push({level:"error",severity:"blocker",category:"style",owner:"llm",repairability:"llm_repairable",message:`自伤表述候选:“${a}”暴露投标短板,需按上下文判定后改写`,suggestion:"投标文件不得主动暴露“专项设计未完成/指标存在缺口”等短板:改写为正向落实表述(如“按施工图绿色建筑专篇编制专项方案,逐项落实评分项并跟踪验收”);如属现场条件合理风险描述(地质/管线尚不明确),保留但需配套勘查与应对措施。"});return b.slice(0,3)}let _=/(?<!分)([\u4e00-\u9fa5]{2})\1(?!项)/gu;function aa(a){let b=[...new Set(a.match(_)||[])].slice(0,3);return 0===b.length?[]:[{level:"error",severity:"blocker",category:"style",owner:"llm",repairability:"llm_repairable",message:`正文存在叠词重复表述:${b.map(a=>`“${a}”`).join("、")}`,suggestion:"删除紧邻重复字词,保持语句完整通顺(“执行执行”改为“执行”)。"}]}let ab="抹面|打底|找平|坐浆|结合层|粘结层|罩面|批嵌|腻子";function ac(a){let b=[];for(let c of a.matchAll(RegExp(`(${ab})[^。;;
97
+ ]{18,60})[。!?!?]`,"gu");function U(a){let b=[],c=new Map;for(let b of a.matchAll(T)){let a=b[1].trim(),d=a.replace(/[\d,,.。%%㎡m2²]/gu,"").slice(0,16);if(d.length<10)continue;let e=c.get(d)||{count:0,sample:a};e.count+=1,c.set(d,e)}for(let{count:a,sample:d}of c.values())a<3||b.push({level:"warning",severity:"warning",category:"style",owner:"llm",repairability:"llm_repairable",message:`段首固定开场机械重复 ${a} 次:“${d.slice(0,30)}…”`,suggestion:"同一段首句式只保留首次出现处,其余处按所在章节语境改写为差异化开场,避免模板化套话观感。"});return b.slice(0,3)}function V(a){let b=[],{overviewBody:c,sentences:d}=function(a){let b,c=a.split("\n"),d=[];for(let a=0;a<c.length;a+=1){let e=/^(#{2,4})\s+(.+)$/u.exec(c[a].trim());if(e){let c=e[1].length;/(?:工程概况|项目概况|基本信息)/u.test(e[2])?b={index:a,level:c}:b&&c<=b.level&&(d.push([b.index,a]),b=void 0)}}b&&d.push([b.index,c.length]);let e=a=>d.some(([b,c])=>a>=b&&a<c),f=c.filter((a,b)=>e(b)).join("\n"),g=[];for(let a=0;a<c.length;a+=1){if(e(a))continue;let b=/本项目为|本工程为|该项目为|该工程为/u.exec(c[a]);if(!b)continue;let d=c[a].slice(b.index).split(/[。!?!?]/u)[0];d&&d.length>=12&&g.push(d)}return{overviewBody:f,sentences:g}}(a);if(0===d.length||!c)return b;let f=(c.match(/[\p{Script=Han}]/gu)||[]).join("");if(!f)return b;let g=[];for(let a of d)if(function(a,b){return(0,k.qr)(a,b)>=8||a.split("、").map(a=>(a.match(/[\p{Script=Han}]/gu)||[]).join("")).filter(a=>a.length>=3).filter(a=>b.includes(a)).length>=2}(a,f)&&g.push(a.slice(0,36)),g.length>=3)break;return 0===g.length||b.push({level:"error",severity:"blocker",category:"style",owner:"llm",repairability:"llm_repairable",message:`项目概况段跨章复述不得出现:概况章外有 ${g.length} 处以“本项目为/本工程为”等总述开头整段复述概况内容:${g.map(a=>`“${a}…”`).join("、")}`,suggestion:"总述数据只在工程概况类小节集中交代一次:其他章节直接写本章内容,仅可引用所需的具体数字(如计划工期天数),不得复述完整概况段。",provenance:{detectorId:"overview-recap",fingerprint:(0,e.c6)(a)}}),b}let W=["销项","复查","整改","闭环"];function X(a){let b=[],c=(0,d.V7)(a);if(c<3e3)return b;let e=[];for(let b of W){let d=a.split(b).length-1;e.push(d/c*1e3)}let f=Math.max(...e),g=W[e.indexOf(f)];return f>=3&&b.push({level:"warning",severity:"warning",category:"style",owner:"llm",repairability:"llm_repairable",message:`闭环句式模板化密集:“${g}”达 ${f.toFixed(1)} 次/千字(销项/复查/整改/闭环统一结尾高度重复)`,suggestion:"保留关键控制环节的闭环表述,其余改为差异化的过程控制语言(检验批验收、实测实量、旁站记录等),提升语言精练度。"}),b}let Y=["专项设计文件尚未完成,待后续补充","评分指标存在缺口尚未明确","依据承诺函后续跟踪完善","本项目未采用行业认定的新技术、新工艺、新设备、新材料"],Z=/编制范围为[^。;;]{0,40}?所界定的全部施工内容|作为施工组织的控制性约束条件|分项验收[,,]?验收记录经监理工程师签字确认后归档|(?:执行|按|依据|按照)[^。;;]{0,10}?(?:〔|【)?20\d{2}(?:〕|】)?\s*\d+\s*号\s*(?:文件|办法|规定)?/u,$=/未落实[^。;;]{0,24}?(?:整改|复查|销项|复验)|未(?:明确|列明|注明)[^。;;]{0,36}?按[^。;;]{0,44}?执行|(?:发现|对)[^。;;]{0,48}?(?:缺失|损坏|不全|脱岗|未审批|不合格)[^。;;]{0,72}?(?:整改|复查|销项|补齐|更换|停止作业|恢复施工)|(?:不得|严禁|禁止)[^。;;]{0,40}?(?:避免|防止)[^。;;]{0,20}?(?:返工|窝工|损失|事故)|(?:重难点|难点)(?:源于|在于)[^。;;]{0,80}?(?:若|如)未[^。;;]{0,40}?(?:将|会|可能)/u;async function _(a){let b=[],c=a.split(/\n+/u).filter(a=>a.trim()&&!/^\s*(#{1,6}\s+|\||[-*+]\s|>)/u.test(a)).flatMap(a=>a.split(/[。;;]/u)).map(a=>a.trim()).filter(a=>a.length>=12);if(0===c.length)return b;let d=/尚未|未完成|未明确|未采用|未落实|未确定|未闭合|存在缺口|有待|待补充|待完善|跟踪完善|不够|不明确|缺失|缺少|缺乏|风险较大|难以保证|无法保证|正在办理|暂未|未能|需进一步|不进行分包|不再分包|不转包/u,e=await (0,f.Mv)(c,[...Y]),g=[...new Set(c.filter(a=>d.test(a)&&!Z.test(a)&&!$.test(a)&&Y.some(b=>e(a,b)>=f.Eh)))];if(0===g.length)return b;for(let a of g)b.push({level:"error",severity:"blocker",category:"style",owner:"llm",repairability:"llm_repairable",message:`自伤表述候选:“${a}”暴露投标短板,需按上下文判定后改写`,suggestion:"投标文件不得主动暴露“专项设计未完成/指标存在缺口”等短板:改写为正向落实表述(如“按施工图绿色建筑专篇编制专项方案,逐项落实评分项并跟踪验收”);如属现场条件合理风险描述(地质/管线尚不明确),保留但需配套勘查与应对措施。"});return b.slice(0,3)}let aa=/(?<!分)([\u4e00-\u9fa5]{2})\1(?!项)/gu;function ab(a){let b=[...new Set(a.match(aa)||[])].slice(0,3);return 0===b.length?[]:[{level:"error",severity:"blocker",category:"style",owner:"llm",repairability:"llm_repairable",message:`正文存在叠词重复表述:${b.map(a=>`“${a}”`).join("、")}`,suggestion:"删除紧邻重复字词,保持语句完整通顺(“执行执行”改为“执行”)。"}]}let ac="抹面|打底|找平|坐浆|结合层|粘结层|罩面|批嵌|腻子";function ad(a){let b=[];for(let c of a.matchAll(RegExp(`(${ac})[^。;;
98
98
  |]{0,10}?(\\d{3,})\\s*mm`,"gu"))){let a=Number(c[2]);a>=100&&b.push(`“${c[1]}”厚度 ${a}mm`)}for(let c of a.matchAll(RegExp(`(\\d{3,})\\s*mm厚?[^。;;
99
- |]{0,18}(${ab})`,"gu"))){let a=Number(c[1]);a>=100&&b.push(`“${c[2]}”厚度 ${a}mm`)}let c=[...new Set(b)].slice(0,3);return 0===c.length?[]:[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`装饰层工艺参数异常:${c.join("、")} 远超工艺常规厚度(抹面/打底/找平 20mm、坐浆 20~30mm)`,suggestion:"装饰层(抹面/打底/找平/坐浆/结合层)厚度按工艺常规取值:抹面打底找平 20mm、坐浆 20~30mm,与结构层厚度(墙体/垫层/回填)区分,不得串用。"}]}function ad(a){let b=[],c=[...a.matchAll(/高峰期总人数(\d+)人|劳动力总人数(\d+)人|总人数(\d+)人/gu)].map(a=>Number(a[1]||a[2]||a[3])).filter(a=>a>0),d=[...a.matchAll(/高峰(?:期)?人数(\d+)人|峰值(?:需求|人数)?[为约]?(\d+)人/gu)].map(a=>Number(a[1]||a[2])).filter(a=>a>0),e=[...new Set(c)],f=[...new Set(d)];e.filter(a=>f.some(b=>b!==a)).length>0&&b.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`劳动力峰值口径矛盾:正文「总人数」出现 ${e.join("人、")}人 与「高峰人数」出现 ${f.join("人、")}人 并存,峰值人数必须唯一`,suggestion:"全文劳动力峰值只允许一个口径:统一总人数与高峰人数为同一数值,删除矛盾口径;分阶段梯次投入人数(准备阶段/主体阶段/竣工阶段)属合法动态配置,不在统一范围内。"});let g=new Map;for(let b of(0,i.Rm)(a)){if(!b.hasTradeCol||0===b.tradeCells.length)continue;let a=new Map;for(let c of b.tradeCells){let b=a.get(c.trade)??0;c.value>b&&a.set(c.trade,c.value)}for(let[b,c]of a){let a=g.get(b)??[];a.push(c),g.set(b,a)}}let h=[...g.entries()].filter(([,a])=>a.length>=2&&new Set(a).size>=2);return h.length>0&&b.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`同工种跨表高峰人数矛盾:${h.map(([a,b])=>`${a} ${b.join("人、")}人`).join(";")} 各表并存,同一工种高峰人数必须唯一`,suggestion:"同一工种在各表中的高峰人数必须一致:以工种配置表(第五章)为权威口径统一各表数值;分阶段投入计划表内同工种不同阶段的动态配置属合法数据,不参与统一。"}),b}function ae(a){let b=function(a){let b=[];for(let c of a.matchAll(/(?:生活用水|施工用水|临时用水|用水)[^。;;\n]{0,24}(?:高峰(?:期)?人数|高峰人数)[^。;;\n]{0,8}?([\d,]+)\s*人/gu)){let a=Number(c[1].replace(/[,,]/gu,""));Number.isFinite(a)&&a>0&&b.push(a)}return b}(a);if(0===b.length)return[];let c=[];for(let b of a.matchAll(/高峰(?:期)?人数([\d,]+)人|峰值(?:需求|人数)?[为约]?([\d,]+)人|劳动力峰值[^。;;\n]{0,8}?([\d,]+)\s*人/gu)){let d=Number((b[1]||b[2]||b[3]||"").replace(/[,,]/gu,""));if(!Number.isFinite(d)||d<=0)continue;let e=(b.index??0)+b[0].indexOf(b[1]||b[2]||b[3]||""),f=a.slice(Math.max(0,e-24),e);!/生活用水|施工用水|临时用水|用水/u.test(f)&&((0,i.rx)(a,e)||c.push(d))}let d=[...new Set(c)];if(0===d.length)return[];let e=[...new Set(b)];return 0===e.filter(a=>d.every(b=>b!==a)).length?[]:[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`用水高峰人数与劳动力峰值不一致:临时用水按高峰人数 ${e.join("人、")}人 计算,而劳动力峰值为 ${d.join("人、")}人,两处引用必须为同一数值`,suggestion:"临时用水高峰人数与劳动力峰值为同一批施工人员的两个引用口径:统一改为劳动力峰值人数,删除自编的用水人数口径。"}]}let af=/不再另行(?:出现|统计|编制|设置|单列|重复)[^。;;\u000A]{0,40}|以[^。;;\u000A]{0,16}为唯一[^。;;\u000A]{0,24}不再[^。;;\u000A]{0,20}|不再另行[^。;;\u000A]{0,24}/gu;function ag(a){let b=[...a.matchAll(af)].map(a=>a[0].trim().slice(0,30));return 0===b.length?[]:[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`正文存在元话语声明句 ${b.length} 处(${[...new Set(b)].slice(0,3).join("、")}):声明≠数据,正文只保留数据不保留口径声明`,suggestion:"删除「不再另行出现其他口径」「不再另行统计累计投入人次」「以 X 为唯一控制基准,不再…」类自我声明句;数据本身的唯一性由数值一致体现,不需要文字声明。"}]}let ah=/(?:[Pp]\s*=\s*[^。;;\n]{0,60}(?:Σ|cosφ|[Kk][12])|[qQ]\s*=\s*[^。;;\n]{0,40}|Σ\s*P|cos\s*φ|[Kk][12]\s*[×*]\s*Σ|[Kk][12]\s*Σ\s*P)/gu;function ai(a){let b=[...a.matchAll(ah)].map(a=>a[0].trim().slice(0,30));return 0===b.length?[]:[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`正文出现公式形态残留 ${b.length} 处(${[...new Set(b)].slice(0,3).join("、")}):正文只允许计算值不允许计算公式`,suggestion:"删除公式符号(P =、Σ、cosφ、K1、q =),只保留计算结果值:如「用电负荷约 48kW」「高峰日生活用水量约 X m\xb3」;公式推导过程一律不进入正文。"}]}let aj=/暂列金额|暂估价|报价明细|综合单价|清单合价|预留金|投标报价|异常低价|评标基准价/u,ak=/(?:税率|增值税)[^。;;\n]{0,12}\d/u,al=/^按招标文件(?:约定|要求)[^。;;\n]{0,120}[。;;]?$/u,am=/本工程|我方|本公司|按合同约定|按约定时限/u,an=/\d+(?:\.\d+)?\s*(?:%|%|万元|亿元|元|天|日|个月|年)/u;function ao(a){let b=a.trim();if(!b||an.test(b))return!1;if(al.test(b))return!0;let c=b.replace(/[。;;]$/u,"");return c.length>0&&c.length<=200&&am.test(c)}let ap=/合同估算价|合同估算价格|投资估算|估算价格|工程估算价|最高投标限价|招标控制价/u,aq=/材料价格|商务报价|投标总价|合同总价|工程总价/u,ar=["暂列金额与暂估价的报价明细","综合单价与清单合价的商务数据","投标报价与费率标准的商务条款"],as=["合同估算价与投资估算的项目信息","最高投标限价与招标控制价的公开信息","商务数据不得写入施工组织设计正文的约束说明"];async function at(a){return(0,g.A)({prototypes:[...ar],negativePrototypes:[...as],embedDocuments:a})}async function au(a,b){let c=[],d=await at(b),e=[];for(let b of a.split(/\r?\n/u)){let a=b.trim();if(!(/^#{1,6}\s/u.test(a)||/^\s*\|/u.test(a))&&(aj.test(b)||ak.test(b)||aq.test(b)))for(let a of(ak.test(b)&&c.push("税率/增值税"),b.split(/(?<=[。;;])\s*/u))){if(ao(a))continue;let b=a.match(aj)||[],d=ap.test(a),f=aq.test(a);!(b.length>0)||d||f?(b.length>0&&(d||f)||f&&0===b.length)&&e.push(a):c.push(...b)}}if(e.length>0){let a=await d(e);e.forEach((b,d)=>{if(!a[d])return;let e=b.match(aj)||[],f=b.match(aq)||[];c.push(...e.length>0?e:f)})}let f=[...new Set(c)].slice(0,4);return 0===f.length?[]:[{level:"error",severity:"blocker",category:"style",owner:"llm",repairability:"llm_repairable",message:`正文出现商务条款数据:${f.join("、")}`,suggestion:"商务数据(暂列金额/暂估价/综合单价/税率等)不得写入施组正文:删除该句或改写为定性表述(如“按合同约定执行”),商务口径仅保留在项目信息表中。"}]}let av=[{key:"excavation",label:"基坑支护及土方外运",re:/基坑支护/u},{key:"zero",label:"地下结构出正负零",re:/正负零|地下室结构/u},{key:"topping",label:"主体结构封顶",re:/主体(?:结构)?封顶/u},{key:"decoration",label:"装饰装修及幕墙",re:/装饰装修/u},{key:"mep",label:"机电安装及智能化调试",re:/机电安装/u},{key:"completion",label:"室外工程及竣工验收",re:/竣工验收/u}];function aw(a){let b=[],c=(a,c,d)=>{let e=(a=>{let b="封顶"===a?"主体结构封顶":a;return av.find(a=>a.re.test(b))?.key})(a);void 0!==e&&Number.isFinite(c)&&c>=1&&c<=3e3&&b.push({key:e,day:c,raw:d})};for(let b of a.matchAll(/第(\d{2,3})日[^。;;\n]{0,14}?完成[^。;;\n,、]{0,12}?(基坑支护及土方外运|装饰装修及幕墙|机电安装及智能化调试|室外工程及竣工验收|地下结构出正负零|主体结构封顶|正负零|封顶)/gu))c(b[2],Number(b[1]),b[0].slice(0,40));for(let b of a.matchAll(/(基坑支护|正负零|封顶|装饰装修|机电安装|竣工验收)(?:(?!(?:第\d{2,3}[日天]|,|、)).){0,8}?完成[^。;;\n]{0,10}?第(\d{2,3})[日天]/gu))c(b[1],Number(b[2]),b[0].slice(0,40));for(let b of a.matchAll(/(主体(?:结构)?封顶)(?!后)(?:(?!(?:第\d{2,3}[日天]|,|、|完成|\||[。;;\n])).){0,20}?第(\d{2,3})日/gu))c(b[1],Number(b[2]),b[0].slice(0,40));for(let b of av){let d=RegExp(`^\\s*\\|\\s*[^|]*${b.re.source}[^|]*\\s*\\|\\s*开工(?:令下发)?后第(\\d{2,3})日\\s*\\|`,"gum");for(let b of a.matchAll(d))c(b[0],Number(b[1]),b[0].slice(0,40))}let d=new Set;return b.filter(a=>{let b=`${a.key}:${a.raw}`;return!d.has(b)&&(d.add(b),!0)})}function ax(a){let b=[],c=new Map;for(let b of aw(a)){let a=c.get(b.key)||[];a.push(b),c.set(b.key,a)}for(let a of av){let d=c.get(a.key);if(!d||d.length<2)continue;let e=[...new Set(d.map(a=>a.day))];if(e.length<2)continue;let f=[...new Set(d.map(a=>a.raw))].slice(0,4).join("、");b.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`节点工期口径矛盾:“${a.label}”节点出现 ${e.map(a=>`${a}日`).join(" 与 ")} 两套口径:${f}`,suggestion:`关键节点完成时间必须全文唯一:以总进度计划表为准统一“${a.label}”节点日期,删除正文/其他表中矛盾的“第N日”表述。`})}return b.slice(0,4)}let ay=[{key:"xps",label:"挤塑聚苯板(XPS)厚度",unit:"mm",kind:"number",patterns:[/(?:挤塑聚苯|XPS)(?:(?!(?:宽度|拼缝|不大于|不超过|小于|≤|采用|使用|选用|铺设|粘贴)).){0,40}?(\d+(?:\.\d+)?)\s*mm/gu,/(\d+(?:\.\d+)?)\s*mm[^。;;\n|]{0,10}?(?:挤塑聚苯|XPS)/gu]},{key:"cushion",label:"垫层混凝土强度等级",unit:"C标号",kind:"code",patterns:[/(?<!混凝土)垫层[^。;;\n|]{0,20}?(C\d{2})/gu]},{key:"transformer",label:"箱式变压器容量",unit:"kVA",kind:"number",patterns:[/(\d+)\s*kVA[^。;;\n|]{0,12}?变压器/gu,/变压器[^。;;\n|]{0,12}?(\d+)\s*kVA/gu]},{key:"formwork",label:"模板周转次数",unit:"次",kind:"number",patterns:[/模板周转(?:次数|使用)?[^。;;\n|]{0,15}?(\d+)\s*次/gu]},{key:"block",label:"蒸压加气混凝土砌块强度等级",unit:"A标号",kind:"code",patterns:[/(?:蒸压加气混凝土|加气混凝土)?砌块[^。;;\n]{0,24}?(A\d+(?:\.\d+)?)/gu]},{key:"extinguisher",label:"干粉灭火器数量",unit:"具",kind:"number",patterns:[/灭火器[^。;;\n]{0,24}?(\d+)\s*具/gu]},{key:"pump",label:"潜水泵(提升泵)数量",unit:"台",kind:"number",patterns:[/(?:潜水泵|提升泵)[^。;;\n]{0,24}?(\d+)\s*台/gu]},{key:"firstaid",label:"急救箱数量",unit:"套/个",kind:"number",patterns:[/急救箱[^。;;\n|]{0,24}?(\d+)\s*(?:套|个)/gu]},{key:"scheduleDays",label:"计划总工期",unit:"日历天",kind:"number",patterns:[/^\s*\|\s*计划工期\s*\|\s*(\d{1,4})\s*个?\s*日历天\s*\|/gum,/(?:计划工期|合同工期|工期总日历天数|工期控制|工期目标|总工期)[^。;;\n|]{0,12}?(\d{1,4})\s*个?\s*日历天/gu,/(\d{1,4})\s*个?\s*日历天[^。;;\n|]{0,8}?(?:总工期|倒排|分解|为唯一|完成)/gu]},{key:"prefabRatio",label:"装配率",unit:"%",kind:"number",patterns:[/装配率[^。;;\n|]{0,14}?(\d+(?:\.\d+)?)\s*%/gu,/装配率[^。;;\n|]{0,44}?计算为(\d+(?:\.\d+)?)\s*%/gu,/(\d+(?:\.\d+)?)\s*%(?:(?![,,。;;\n|]).){0,10}?装配率/gu]},{key:"projectCode",label:"项目编号",unit:"",kind:"code",patterns:[/(?:招标项目编号|项目编号)[^。;;\n|]{0,8}?(20\d{2}[A-Z]{1,8}\d{2,10})/gu]},{key:"towerCrane",label:"塔式起重机(塔吊)数量",unit:"台",kind:"number",patterns:[/(?:塔式起重机|塔吊)[^。;;\n|、,]{0,30}?(\d+)\s*台/gu,/(\d+)\s*台[A-Za-z0-9/\-–—~~]{0,16}\s{0,2}(?:塔式起重机|塔吊)/gu]},{key:"hoist",label:"施工升降机(施工电梯)数量",unit:"台",kind:"number",patterns:[/(?:施工升降机|施工电梯)[^。;;\n|、,]{0,30}?(\d+)\s*台/gu,/(\d+)\s*台[A-Za-z0-9/\-–—~~]{0,16}\s{0,2}(?:施工升降机|施工电梯)/gu]},{key:"truckCrane",label:"汽车起重机(汽车吊)数量",unit:"台",kind:"number",patterns:[/(?:汽车起重机|汽车吊)[^。;;\n|、,]{0,30}?(\d+)\s*台/gu,/(\d+)\s*台[A-Za-z0-9/\-–—~~]{0,16}\s{0,2}(?:汽车起重机|汽车吊)/gu]},{key:"rebarCutter",label:"钢筋切断机数量",unit:"台",kind:"number",patterns:[/钢筋切断机[^。;;\n|]{0,24}?(\d+)\s*台/gu]},{key:"rebarBender",label:"钢筋弯曲机数量",unit:"台",kind:"number",patterns:[/钢筋弯曲机[^。;;\n|]{0,24}?(\d+)\s*台/gu]},{key:"slackDays",label:"机动工期(工序衔接与验收缓冲)",unit:"天",kind:"number",patterns:[/(?:机动工期|缓冲)[^。;;\n|]{0,16}?(\d{1,3})\s*天/gu,/预留[^。;;\n|]{0,8}?(\d{1,3})\s*天[^。;;\n|]{0,10}?(?:机动|缓冲)/gu]},{key:"villageCount",label:"自然村数量",unit:"个自然村",kind:"number",patterns:[/(\d+)\s*个(?:美丽宜居)?自然村(?!分组|施工组)/gu]},{key:"circularSaw",label:"圆盘锯数量",unit:"台",kind:"number",patterns:[/圆盘锯[^。;;\n|]{0,24}?(\d+)\s*台/gu]},{key:"excavator",label:"挖掘机数量",unit:"台",kind:"number",patterns:[/(?:履带式)?挖掘机[^。;;\n、,]{0,40}?(\d+)\s*台/gu,/(\d+)\s*台[^、,。;\n|]{0,12}?(?:履带式)?挖掘机/gu]},{key:"dumpTruck",label:"自卸汽车数量",unit:"台/辆",kind:"number",patterns:[/自卸汽车[^。;;\n、,]{0,40}?(\d+)\s*(?:台|辆)/gu,/(\d+)\s*(?:台|辆)[^、,。;\n|]{0,12}?自卸汽车/gu]},{key:"roller",label:"压路机数量",unit:"台",kind:"number",patterns:[/(?:振动)?压路机[^。;;\n、,]{0,40}?(\d+)\s*台/gu,/(\d+)\s*台[^、,。;\n|]{0,12}?(?:振动)?压路机/gu]},{key:"rammer",label:"蛙式打夯机数量",unit:"台",kind:"number",patterns:[/蛙式打夯机[^。;;\n、,]{0,40}?(\d+)\s*台/gu,/(\d+)\s*台[^、,。;\n|]{0,12}?蛙式打夯机/gu]},{key:"mixerTruck",label:"混凝土搅拌运输车数量",unit:"台",kind:"number",patterns:[/混凝土搅拌运输车[^。;;\n、,]{0,40}?(\d+)\s*台/gu,/(\d+)\s*台[^、,。;\n|]{0,12}?混凝土搅拌运输车/gu]},{key:"concreteMixer",label:"混凝土搅拌机数量",unit:"台",kind:"number",patterns:[/混凝土搅拌机[^。;;\n、,]{0,40}?(\d+)\s*台/gu,/(\d+)\s*台[^、,。;\n|]{0,12}?混凝土搅拌机/gu]},{key:"sprinkler",label:"洒水车数量",unit:"台/辆",kind:"number",patterns:[/洒水车[^。;;\n、,]{0,40}?(\d+)\s*(?:台|辆)/gu,/(\d+)\s*(?:台|辆)[^、,。;\n|]{0,12}?洒水车/gu]},{key:"aerialLift",label:"高空作业车数量",unit:"台",kind:"number",patterns:[/高空作业车[^。;;\n、,]{0,40}?(\d+)\s*台/gu,/(\d+)\s*台[^、,。;\n|]{0,12}?高空作业车/gu]},{key:"pondBackfill",label:"沟塘回填方量",unit:"m\xb3",kind:"number",patterns:[/(?:沟塘|水塘|池塘|河塘|鱼塘|塘内|渠道|淤泥|流砂|清淤)[^。;;\n|]{0,30}?回填方(?:总量)?[^。;;\n|]{0,16}?(\d+(?:\.\d+)?)\s*m[3³]/gu,/(?:沟塘|水塘|池塘|河塘|鱼塘|塘内|渠道|淤泥|流砂|清淤)[^;;\n|]{0,30}?回填方总量[^。;;\n|]{0,16}?(\d+(?:\.\d+)?)\s*m[3³]/gu,/回填方(?:总量)?[^。;;\n|]{0,16}?(\d+(?:\.\d+)?)\s*m[3³][^。;;\n|]{0,30}?(?:沟塘|水塘|池塘|河塘|鱼塘|塘内|渠道|淤泥|流砂|清淤)/gu]},{key:"trenchClearing",label:"沟槽槽底人工清底预留厚度",unit:"mm",kind:"number",patterns:[/槽底预留(\d+)mm人工清底/gu]},{key:"houseExcavation",label:"距房屋人工开挖保护距离",unit:"m",kind:"number",patterns:[/距房屋(\d+(?:\.\d+)?)m(?:内|范围内)[^。;;\n|]{0,10}?人工开挖/gu]}],az={pump:/潜水泵|提升泵/u,towerCrane:/塔式起重机|塔吊/u,hoist:/施工升降机|施工电梯/u,truckCrane:/汽车起重机|汽车吊/u,rebarCutter:/钢筋切断机/u,rebarBender:/钢筋弯曲机/u,circularSaw:/圆盘锯/u,excavator:/挖掘机/u,dumpTruck:/自卸汽车|自卸车/u,roller:/压路机/u,rammer:/蛙式打夯机|打夯机/u,mixerTruck:/混凝土搅拌运输车|搅拌车/u,concreteMixer:/混凝土搅拌机/u,sprinkler:/洒水车/u,aerialLift:/高空作业车/u,extinguisher:/灭火器/u,firstaid:/急救箱/u};function aA(a,b){let c=(0,i.Dq)(b);if(void 0===c)return[];let d=new Set;for(let b of a.matchAll(/养护[^。;;\n|]{0,16}?([一二两三四五六七八九十]+|\d{1,2})\s*年/gu)){let c=a.lastIndexOf("\n",b.index)+1,e=a.indexOf("\n",b.index);if(-1===e&&(e=a.length),aD.test(a.slice(c,e)))continue;let f=(0,i.a0)(b[1]??"");void 0!==f&&f>0&&d.add(f)}if(0===d.size)return[];let e=[...d].filter(a=>a!==c);return 0===e.length?[]:[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`绿化养护期清单红线:正文出现养护期 ${e.map(a=>`${a}年`).join("、")},与工程量清单锁定口径「养护 ${c} 年」矛盾`,suggestion:`绿化养护期必须与工程量清单一致(清单锁定「养护 ${c} 年」):将正文所有养护期表述统一为 ${c} 年并删除矛盾口径;养护期属清单实质性条款,不得以常规值替代。`}]}function aB(a,b){let c=(0,i.Mb)(b);if(void 0===c)return[];let d=[];for(let b of a.matchAll(/路灯[^。;;\n|]{0,28}?(\d+)\s*(?:套|盏|杆)/gu)){if(/批/u.test(b[0]))continue;let c=a.lastIndexOf("\n",b.index)+1,e=a.indexOf("\n",b.index);if(-1===e&&(e=a.length),aD.test(a.slice(c,e)))continue;let f=Number(b[1]);Number.isFinite(f)&&f>0&&d.push(f)}if(0===d.length)return[];let e=d.length>=2?d.reduce((a,b)=>a+b,0):d[0]??0;return e===c?[]:[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`路灯数量口径矛盾:正文路灯配置合计约 ${e} 套,与工程量清单锁定口径 ${c} 套不一致(相差 ${Math.round(Math.abs(e-c)/c*100)}%)`,suggestion:`路灯数量必须以工程量清单为准(清单锁定 ${c} 套):按清单核定各型号路灯数量并统一正文全部表述,删除与清单矛盾的套数口径。`}]}let aC=/\d+(?:\.\d+)?\s*(?:mm|kVA|次|具|台|套|个)\s*[//]\s*\d+/u,aD=/不再出现|不得出现|严禁出现|避免出现|不采用|未采用|予以删除|已删除|取消|纠正为|更正为/u,aE=/再浇筑|再浇|后浇筑|后浇|然后浇筑|然后再浇|上层|上部|面层浇筑|其上浇筑|浇筑完成后再/u,aF=/分层厚度|分层浇筑|分层振捣|焊缝高度|焊缝厚度|焊脚尺寸|锚固深度|保护层厚度|搭接长度|锚固长度|预留|踏步高度|踏步宽度|踏步高|踏步宽|台阶高度|台阶宽度|内厚|外厚|抹面|抹灰|粉刷|垫高|架空|离地|支垫/u,aG=/分别为|分别对应|分别用于|分别按|依次为|依次/u,aH="女儿墙|外墙|内墙|隔墙|地梁|圈梁|构造柱|过梁|垫层|承台|筏板|底板|基础|主体|梁|柱|墙|楼板|屋面|地面|楼面|顶板|楼梯|阳台|雨篷|台阶|散水|坡道|找坡|找平|保护层|防水层|保温层|隔汽层|地坪|办公区|生活区|库房|加工区|堆放区|驻地|周转场|停放区|仓库|材料库|路基|沟槽|基槽",aI=/每[台辆架套部][一-龥A-Za-z0-9]{1,8}/gu,aJ=/项目部|总协调|工人生活|施工办公|办公|生活|临时|总部|标段|片区/u;function aK(a,b,c){let d=b.slice(Math.max(0,c-8),c),e=d.match(aJ);if(!e||void 0===e.index)return a;let f=d.slice((e.index??0)+e[0].length);return/^[的施工区域现场]{0,3}$/u.test(f)?`${e[0]}${a}`:a}function aL(a,b,c,d){let e=a.indexOf("\n",b),f=a.slice(d,-1===e?a.length:e);if(/^\s*\|/u.test(f)&&/\|\s*$/u.test(f.trim())){let a=f.replace(/[\u4e00-\u9fa5]{2,6}阶段/gu,""),b=[...a.matchAll(RegExp(aH,"gu"))],c=b[b.length-1];return c?aK(c[0],a,c.index??0):""}let g=Math.max(d,b-16),h=a.slice(g,b),i=Math.max(h.lastIndexOf(","),h.lastIndexOf("、"),h.lastIndexOf(","),h.lastIndexOf(";"),h.lastIndexOf(";"),h.lastIndexOf("。")),j=a.slice(i>=0?g+i+1:g,b+c.length).replace(/[\u4e00-\u9fa5]{2,6}阶段/gu,""),k=[...j.matchAll(aI)];if(k.length>0)return k[k.length-1]?.[0]??"";let l=[...j.matchAll(RegExp(aH,"gu"))],m=l[l.length-1];return m?aK(m[0],j,m.index??0):""}function aM(a){let b=[];for(let c of ay){let d=new Map,e=new Map;for(let b of c.patterns)for(let f of a.matchAll(b)){let b=f[0].slice(0,40);if("trenchClearing"===c.key){let c=Math.max(a.lastIndexOf("。",f.index),a.lastIndexOf(";",f.index),a.lastIndexOf("\n",f.index))+1;if(/基槽|围栏|菜园/u.test(a.slice(c,(f.index||0)+b.length)))continue}if(aC.test(b)||aE.test(b))continue;if("scheduleDays"===c.key){let c=b.indexOf(String(f[1]));if(c>=0&&/(?:阶段|第\d+日|至第|共|集中)/u.test(a.slice(Math.max(0,(f.index||0)+c-16),(f.index||0)+c)))continue}if(/按不少于|不少于/u.test(b))continue;let g=a.lastIndexOf("\n",f.index)+1,h=a.indexOf("\n",f.index);if(-1===h&&(h=a.length),aD.test(a.slice(g,h)))continue;let i=aL(a,f.index||0,b,g),j=d.get(i)||new Set;j.add(f[1]),d.set(i,j);let k=e.get(i)||[];k.push(b),e.set(i,k)}let f=d.get("")||new Set,g=[...d.keys()].filter(a=>""!==a);if(f.size>0&&1===g.length){let a=d.get(g[0]||"");if(a){for(let b of f)a.add(b);let b=e.get(g[0]||"")||[];b.push(...e.get("")||[]),e.set(g[0]||"",b),d.delete(""),e.delete("")}}for(let[a,f]of d){if(f.size<2)continue;let d=e.get(a)||[];if("code"===c.kind)b.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`材料参数口径矛盾:“${c.label}”${a?`在部位「${a}」`:"在未标注部位语境下"}出现 ${[...f].map(a=>`${a}${c.unit}`).join(" 与 ")} 两套口径:${[...new Set(d)].slice(0,3).join("、")}`,suggestion:`同一材料同一部位只允许一个口径:以设计图纸/工程量清单为准统一“${c.label}”${a?`在部位「${a}」的取值`:""},删除矛盾表述;不同部位允许不同规格,不得全文归一为一种。`});else{let e=[...f].map(Number).filter(Number.isFinite);if(e.length<2)continue;b.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`材料/设备数量口径矛盾:“${c.label}”${a?`在部位「${a}」`:"在未标注部位语境下"}出现 ${e.map(a=>`${a}${c.unit}`).join(" 与 ")} 两套口径:${[...new Set(d)].slice(0,3).join("、")}`,suggestion:`同一设备/材料同一部位只允许一个口径:以应急物资清单/施工部署为准统一“${c.label}”${a?`在部位「${a}」的取值`:""},删除矛盾表述;总量与分区配置属不同口径,不得互相归一。`})}}}return b.slice(0,16)}function aN(a){return/^C\d{2,3}$/.test(a)?/C\d{2,3}/u:/^M\d/.test(a)?/M\d+(?:\.\d+)?/u:/^P\d{1,2}$/.test(a)?/(?<![A-Za-z])P\d{1,2}/u:/^A\d+(?:\.\d+)?$/.test(a)?/A\d+(?:\.\d+)?/u:/^B\d+(?:\.\d+)?$/.test(a)?/B\d+(?:\.\d+)?/u:/^HRB/.test(a)||/^HPB/.test(a)?/HRB\d{3,4}|HPB\d{3}/u:/mm$/.test(a)?/\d+(?:\.\d+)?\s*mm/u:null}function aO(a,b){let c=[];if(!b)return c;let d=[...new Set(Object.values(b).flat().map(a=>a.location).filter(Boolean))];for(let e of Object.values(b)){if(e.length<2)continue;let b=new Set;for(let f of e){let{location:g,spec:h}=f;if(!g||!h||g.length<2)continue;let i=aN(h);if(!i)continue;let j=`${g}|${i.source}`;if(b.has(j))continue;b.add(j);let k=new Set(e.filter(a=>a.location===g).map(a=>{let b=aN(a.spec);if(b&&b.source===i.source)return a.spec;let c=RegExp(`^(?:${i.source})`,"u").exec(a.spec);return c?c[0]:null}).filter(a=>null!==a)),l=RegExp(`${g.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&")}[^。;;
100
- |]{0,40}?(${i.source})`,"gu");for(let b of a.matchAll(l)){let f=b[1]||"";if(aE.test(b[0])||aF.test(b[0])||aG.test(b[0]))continue;let h=a.slice(Math.max(0,(b.index||0)-40),b.index||0);if(aG.test(h))continue;let j=a.slice((b.index||0)+b[0].length,(b.index||0)+b[0].length+10);if(/范围内|范围/u.test(j)||/(?:工作宽度|作业宽度|操作空间|工作面)/u.test(j)||/^、\s*\d/u.test(j)||/^\s*厚(?:\s*[\d::]|覆膜|木|胶合)/u.test(j)||RegExp(`^(?:或|[、,,/])\\s*(?:${i.source})`,"u").test(j))continue;let l=a.slice(Math.max(0,b.index||0),(b.index||0)+b[0].length);if(/(?:标高|高程|平整度|轴线|垂直度|高差)[^。;;\n|]{0,10}(?:偏差|误差|不超过|不得大于|不大于)/u.test(l.slice(-28)))continue;let m=b[0].indexOf(f);if(m>g.length&&/(?:涵头|面层|基层|垫层|管基|基础|梁|板|柱|墙|地坪|路面)/u.test(b[0].slice(g.length,m)))continue;let n=b.index||0,o=d.find(b=>b.length>g.length&&b.endsWith(g)&&a.slice(n+g.length-b.length,n+g.length)===b);if(o&&new Set(e.filter(a=>a.location===o&&aN(a.spec)?.source===i.source).map(a=>a.spec)).has(f)||k.has(f))continue;let p=1===k.size?[...k][0]:void 0,q=n+m;if(c.push({issue:{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`规格错位:“${g}”使用的规格 ${f} 与工程量清单权威(${[...k].join("/")})不一致`,suggestion:`按工程量清单将“${g}”的规格统一为 ${[...k].join("/")};同一材料不同部位允许不同规格,但同一部位不得混用其他部位的规格。`},location:g,replacement:p?{start:q,end:q+f.length,replacement:p,detail:`规格错位“${g}” ${f}→${p}(以工程量清单锁定口径为准)`}:void 0}),c.length>=8)return c}}}return c.slice(0,8)}function aP(a,b){return aO(a,b).map(a=>a.issue)}let aQ=/桩基|灌注桩|钻孔桩|打桩|成桩|桩机/u;function aR(a){let b=function(a){let b=[];for(let c of[...a.matchAll(/^#{3,4}\s+[^\n]*(?:地基与基础)[^\n]*$/gmu)]){let d=(c.index||0)+c[0].length,e=a.slice(d).search(/^#{2,4}\s+/mu),f=a.slice(d,e>=0?d+e:a.length);b.push(f)}return b}(a);if(0===b.length||b.some(a=>aQ.test(a)))return[];let c=[];for(let b of a.split(/\r?\n/u)){let a=b.trim();!(!a||/^#{1,6}\s/u.test(a))&&aQ.test(b)&&c.push(a.slice(0,48))}let d=[...new Set(c)].slice(0,5);return d.length<2?[]:[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`桩基表述残留:地基与基础章节施工流程为筏板/独立基础(无桩基工序),但全文另有 ${d.length} 处桩基表述:${d.join("、")}`,suggestion:"本项目基础形式不含桩基:删除全文所有桩基/桩机表述,进度计划表关键线路工序、质量验收划分表、隐蔽验收表均改为本项目实际基础工序(垫层/底板钢筋/混凝土)。"}]}let aS=/^\s*\|\s*计划工期\s*\|([^|\n]*)\|/u,aT=/工期延误|延误|违约|切除|赔偿|罚款|解除|扣减/u;function aU(a){let b=[];for(let c of a.split(/\r?\n/u)){let a=aS.exec(c);if(!a)continue;let d=(a[1]??"").trim();d&&aT.test(d)&&b.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`基本信息表「计划工期」字段错填违约条款文字:“${d.slice(0,40)}”`,suggestion:"「计划工期」字段应填日历天数值(与招标文件前附表一致);工期延误违约条款文字应放在工期风险管控章节,不得占用基本信息表字段。"})}return b.slice(0,2)}let aV=/基础|支护|围护|桩|结构|开挖|放坡|喷锚|排桩|连续墙|土钉|锚杆|标高|深度|形式|体系/u;function aW(a){let b=a.replace(/\s+/gu,""),c=new Set;for(let a of b.matchAll(/([一-龥]{2,8})\/([一-龥]{2,8})/gu)){if(!aV.test(a[1])&&!aV.test(a[2]))continue;let d=Math.max(0,(a.index||0)-12),e=Math.min(b.length,(a.index||0)+a[0].length+12),f=b.slice(d,e);!/管线|管道|电缆|给水|排水/u.test(f)&&/采用|形式|方式|方案|选用|拟用|拟采用|为/u.test(f)&&c.add(`“${a[1]}/${a[2]}”`)}for(let a of b.matchAll(/[((]\s*或[^))]{1,48}[))]/gu)){let d=a[0].slice(1,-1);if(!/按图纸|按实|按图|待定|另行|视[^,。;]{0,8}而定|根据实际/u.test(d))continue;let e=Math.max(0,(a.index||0)-20),f=b.slice(e,(a.index||0)+a[0].length);aV.test(f)&&c.add(a[0].slice(0,30))}for(let a of b.matchAll(/([一-龥]{2,8})或([一-龥]{2,8})/gu)){if(!aV.test(a[1])&&!aV.test(a[2]))continue;let d=Math.max(0,(a.index||0)-12),e=b.slice(d,(a.index||0)+a[1].length);if(/管线|管道|电缆|给水|排水/u.test(e)||!/按|采用|选用|拟用|拟采用|方案|为/u.test(e))continue;let f=b.slice(Math.max(0,(a.index||0)-6),a.index||0);if(/临时/u.test(f+a[0])&&/支护|围护|放坡|坡率|开挖/u.test(a[0])||/围挡|警示|防护栏|爬梯|栈桥|便道/u.test(a[0]))continue;let g=a[1].replace(/^.*?(地下连续墙|钢板桩|灌注桩|支护桩|土钉墙|基础|支护|围护|结构|开挖|放坡|喷锚|排桩|连续墙|土钉|锚杆|形式|体系)/u,"$1");c.add(`${g}或${a[2]}`)}return 0===c.size?[]:[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`关键设计决策两可表述:${[...c].join("、")} 以并列/悬置形态表述,基础形式、支护形式等关键决策必须在正文中唯一确定`,suggestion:"以设计图纸/勘察报告/工程量清单为准锁定唯一决策并删除两可表述:明确写出本项目基础形式与支护形式的具体做法(如「基础形式为筏板基础」「基坑支护采用放坡+喷锚」),禁止「或…按图纸实施」类悬置话术。"}]}function aX(a){let b=a.replace(/\s+/gu,"");if((b.match(/基坑|开挖|支护/gu)||[]).length<3)return[];for(let a of b.matchAll(/(?:深度|标高)[^。;,,]{0,12}-?\d+(?:\.\d+)?[^。;,,]{0,6}/gu)){let b=a[0];if(!/(?:超过|大于|小于|不[大低小]于|不低于|低于|高于|按|倍|依据|详见|参考|示意|每|以上|以下|偏差|±0|0\.000)/u.test(b)&&!/\d+(?:\.\d+)?\s*(?:h|小时|天|日|min|周|月|昼夜)/u.test(b))return[]}return[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:"基坑深度数值未锁定:正文已有基坑支护/开挖成稿内容,但全文未出现「深度/标高+数值」的确定性表述(比较式阈值如「超过3m」不视为锁定),危大工程分级判定失去依据",suggestion:"从绑定资料(地质勘察报告/基坑支护设计图/基础平面图)锁定基坑开挖深度数值写入基坑支护小节;深度 ≥5m 的深基坑须同步标注危大工程分级与专家论证要求,禁止以「按图纸确定」回避深度数值。"}]}function aY(a,b){let c=(0,i.z4)(b);if(void 0===c||c<3)return[];let d=[];return c>=3&&!/危大工程/u.test(a)&&d.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`危大工程判定缺失:资料基坑开挖深度 ${c}m(≥3m),正文必须出现危大工程判定标注`,suggestion:`依据住建部令第37号,开挖深度≥3m 属危大工程:在基坑支护/危大工程清单小节写明本工程实际深度 ${c}m 与危大工程判定结论,不得只写判定规则不落地本项目。`}),c>=5&&!/超过一定规模/u.test(a)&&d.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`超危大工程判定缺失:资料基坑开挖深度 ${c}m(≥5m),正文必须出现「超过一定规模」判定与专家论证要求`,suggestion:`开挖深度≥5m 属超过一定规模的危大工程:写明本工程深度 ${c}m 对应分级结论,专项施工方案必须经专家论证,不得只写判定规则不落地分级。`}),d}function aZ(a,b){let c=[b.canonical?.byKey.foundation_support_form?.value,...(b.drawings||[]).map(a=>`${a.fieldName||a.key||""} ${(0,e.lG)(a.value)}`),...(b.project||[]).map(a=>`${a.fieldName||a.key||""} ${(0,e.lG)(a.value)}`),...(b.preciseFacts||[]).map(a=>`${a.fieldName||a.key||""} ${(0,e.lG)(a.value)}`)].filter(Boolean).filter(a=>/基坑支护形式|基坑支护方式|支护形式|支护方式|土钉|放坡|喷锚|护坡/u.test(a)&&!/监测|监测频次|闭环|基坑开挖深度/u.test(a));if(0===c.length)return[];let d=[];for(let a of c)for(let b of["土钉墙","放坡","喷锚","挂网喷浆","排桩","灌注桩","地下连续墙","内支撑","锚杆","锚索"])a.includes(b)&&d.push(b);let f=[],g=/不采用|未采用|不设置|未设置|不使用|不宜采用|不得采用|不再出现|不得出现|严禁出现|避免出现|已删除|取消/u,h=["支护桩","冠梁","钻孔灌注桩","灌注桩","地下连续墙","排桩","咬合桩","内支撑"].filter(b=>(b=>{let c=RegExp(b,"gu");for(let b of a.matchAll(c)){let c=a.lastIndexOf("\n",b.index)+1,d=a.indexOf("\n",b.index);-1===d&&(d=a.length);let e=a.slice(c,d).slice(Math.max(0,b.index-c-12),b.index-c);if(!g.test(e))return!0}return!1})(b)&&!d.includes(b));return h.length>0&&f.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`支护形式与资料矛盾:正文出现资料中不存在的支护体系词 ${h.join("、")}`,suggestion:`资料基坑支护形式为「${d.join("、")||c[0]?.slice(0,60)}」:删除编造的支护桩/冠梁/灌注桩类表述与对应参数(垂直度偏差/冠梁顶面标高等),按资料支护形式改写。`}),0===d.filter(b=>RegExp(b,"u").test(a)).length&&/基坑|支护/u.test(a)&&f.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`支护形式未落地:资料基坑支护形式「${d.join("、")||c[0]?.slice(0,60)}」未在正文中出现`,suggestion:`在基坑支护小节写明本工程实际支护形式(${d.join("、")})及对应工艺参数(土钉长度/间距/坡度等),不得以泛化表述回避。`}),f}let a$=["塔式起重机","施工升降机","施工电梯","汽车起重机","汽车吊","混凝土泵车","混凝土泵","挖掘机","装载机","推土机","压路机","平地机","空压机","注浆机","锚杆钻机","混凝土喷射机","喷射机","吊篮","钢筋加工设备","塔吊"],a_=/挖掘机|空压机|注浆机|锚杆钻机|混凝土喷射机|喷射机|推土机/u;function a0(a,b){let c=function(a){let b=[];for(let c of a.matchAll(/第(\d{2,3})日[^。;;\n|]{0,8}?(?:进场|投入使用|安装|调试)/gu)){let d=a.slice(Math.max(0,(c.index||0)-24),c.index||0),e=a$.find(a=>d.includes(a));e&&b.push({equipment:e,day:Number(c[1]),raw:`${d.slice(-18)}${c[0].slice(0,20)}`})}let c=new Set;return b.filter(a=>{let b=`${a.equipment}:${a.raw}`;return!c.has(b)&&(c.add(b),!0)})}(a);if(0===c.length)return[];let d=[],f=function(a,b){for(let c of[a,...(b.schedule||[]).map(a=>`${a.key||""}${(0,e.lG)(a.value)}`)]){let a=/(?:计划工期|合同工期|总工期|工期总日历天数)[^\d。;;\n|]{0,12}(\d{1,4})\s*个?\s*日历天/u.exec(c);if(a){let b=Number(a[1]);if(Number.isFinite(b)&&b>=30&&b<=3e3)return b}}}(a,b);if(void 0!==f){let a=c.filter(a=>a.day>=f);a.length>0&&d.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`设备进场时间荒谬:${a.slice(0,3).map(a=>`「${a.equipment} 第${a.day}日进场」`).join("、")} 已达/超过总工期(${f}日历天),工程结束时设备尚未进场`,suggestion:`以总进度计划为准核对设备进场计划:大型施工设备必须在总工期结束前进场并完成使用,${a.map(a=>a.equipment).join("、")} 的进场日应提前至工程开始阶段,删除矛盾的尾期进场表述。`})}let g=aw(a).filter(a=>"excavation"===a.key).map(a=>a.day);if(g.length>0){let a=Math.min(...g),b=c.filter(b=>a_.test(b.equipment)&&b.day>a);b.length>0&&d.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`设备进场工序倒挂:${b.slice(0,3).map(a=>`「${a.equipment} 第${a.day}日进场」`).join("、")} 晚于基坑支护及土方外运完成节点(第${a}日),基坑阶段设备未在工序开始前进场`,suggestion:`基坑阶段专用设备必须在基坑开挖/支护开始前完成进场与报验:将 ${b.map(a=>a.equipment).join("、")} 的进场日调整为早于基坑支护完成节点(第${a}日)的日期,删除工序倒挂表述。`})}return d.slice(0,3)}let a1=/[\u4e00-\u9fa5]{2,10}(?:杯|奖)(?![励金惩罚项])/gu,a2=/优质工程|文明工地|样板|标准化|观摩|示范|精品工程|结构优质|省优|市优/u;function a3(a){let b=a;for(;;){let a=b.replace(/^(?:争创|争取|力争|争获|确保|获得|创建|力创|评为|荣获|标为|目标为|承诺|为)/u,"");if(a===b||!a)break;b=a}return b}let a4=/^\s*\|[\s:|-]+\|/u;function a5(a){let b=a.split(/\r?\n/u),c=[],d=a=>a.trim().replace(/^\|/u,"").replace(/\|$/u,"").split("|").map(a=>a.trim()),e=a=>a4.test(a),f=0;for(;f<b.length;){let a;if(!/^\s*\|/u.test(b[f])){f+=1;continue}let g=f;for(;g<b.length&&/^\s*\|/u.test(b[g]);)g+=1;let h=b.slice(f,g),i=0,j=0,k=0,l=b=>{if(!a)return;let e=h.slice(j,b);0!==e.length&&c.push({startLine:f+i,endLine:f+b-1,header:a,firstCol:e.map(a=>d(a)[0]?.replace(/[*_`]/gu,"").trim()||"").filter(Boolean),dataRows:e.map(a=>d(a).map(a=>a.replace(/[*_`]/gu,"").trim())),dataCells:e.flatMap(a=>d(a).map(a=>a.replace(/[*_`]/gu,"").trim())).filter(Boolean),bodyChars:e.join("").length,raw:h.slice(i,b)})};for(;k<h.length;){if(k+1<h.length&&e(h[k+1]||"")){l(k),a=d(h[k]).map(a=>a.replace(/[*_`]/gu,"").trim()),i=k,j=k+2,k+=2;continue}if(a&&k>j){let b=d(h[k]).map(a=>a.replace(/[*_`]/gu,"").trim()).filter(Boolean);if(a6(b,a)>=.6&&k+1<h.length&&!e(h[k+1]||"")){l(k),a=b,i=k,j=k+1,k+=1;continue}}k+=1}l(h.length),f=g}return c}function a6(a,b){if(0===a.length||0===b.length)return 0;let c=new Set(a),d=new Set(b);return[...c].filter(a=>d.has(a)).length/new Set([...c,...d]).size}function a7(a,b){if(0===a.length)return 0;let c=[...b],d=0;for(let b of a){let a=c.indexOf(b);a>=0&&(c.splice(a,1),d+=1)}return d/a.length}let a8=/^[\d,,.]+\s*(?:人|个|台|具|套|处|支|辆|班|组|项)?$/u,a9=a=>a.filter(a=>!a8.test(a));function ba(a){let b=[];for(let c of a5(a)){let a=c.dataRows;if(a.length<4)continue;let d=a=>(a[0]||"").trim(),e=(a,b)=>a6(a,b);for(let f=Math.floor(a.length/2);f<=Math.ceil(a.length/2);f+=1){let g=a.slice(0,f),h=a.slice(f);if(g.length<2||h.length<2)continue;let i=0,j=-1;for(let a of h){let b=d(a);if(b){for(let c=j+1;c<g.length;c+=1)if(d(g[c])===b&&e(a,g[c])>=.5){i+=1,j=c;break}}}let k=i/h.length;if(!(k<.8)){b.push({level:"error",severity:"blocker",category:"style",owner:"llm",repairability:"local_deterministic",message:`表格内部数据行重复:第 ${c.startLine+1}~${c.endLine+1} 行表格(表头:${c.header.slice(0,3).join("|")})数据行两遍粘贴(${f} 行 + ${h.length} 行,重复匹配率 ${Math.round(100*k)}%)`,suggestion:`删除第二遍重复数据行(保留第一遍 ${f} 行),删除后表格仅保留一份完整数据。`});break}}}return b}function bb(a){let b=[],c=a5(a);if(c.length<2)return b;for(let a=0;a<c.length;a+=1)for(let d=a+1;d<c.length;d+=1){let e=c[a],f=c[d],g=e.header.length>0&&e.header.length===f.header.length&&e.header.every((a,b)=>a===f.header[b]),h=a6(e.header,f.header),i=a6(e.firstCol,f.firstCol),j=a6(e.dataCells,f.dataCells),k=Math.max(a7(a9(e.dataCells),a9(f.dataCells)),a7(a9(f.dataCells),a9(e.dataCells)));(g&&j>=.6||h>=.7&&i>=.6||i>=.6&&k>=.6)&&b.push({level:"error",severity:"blocker",category:"style",owner:"llm",repairability:"llm_repairable",message:`表格重复:第 ${e.startLine+1}~${e.endLine+1} 行表格(表头:${e.header.slice(0,3).join("|")})与第 ${f.startLine+1}~${f.endLine+1} 行表格高度重复(表头重合 ${Math.round(100*h)}%、数据重合 ${Math.round(100*j)}%、首列重合 ${Math.round(100*i)}%)`,suggestion:"同一文档内同主题表格只保留信息最全的一张:删除重复表格(保留字段与数据行更多的那张),删除后核对章节表格计划仍被覆盖。"})}return b.sort((a,b)=>{let c=a=>Number(a.match(/数据重合\s*(\d+)%/u)?.[1]??0);return c(b.message)-c(a.message)}).slice(0,5)}function bc(a){let b=a.replace(/\s+/gu,"");return b.length>=40?b:void 0}let bd=15;function be(a){let b=function(a){let b=[];for(let c of a.split(/\n\s*\n/u)){let a=c.trim();if(!a)continue;let d=a.split(/\n/u).filter(a=>{let b=a.trim();return b&&!/^#{1,6}\s/u.test(b)&&!b.startsWith("|")}).join("\n"),e=[];for(let a of d.split(/[。!?!?]/u)){let b=a.trim().replace(/\s+/gu,"");if(b.length<bd)continue;let c=e.findIndex(a=>a.sentence===b||a.sentence.length>b.length&&a.sentence.length-b.length<=bd&&a.sentence.endsWith(b));c>=0?e[c].count+=1:e.push({sentence:b,count:1})}for(let a of e)a.count>=2&&b.push({sentence:a.sentence,count:a.count})}return b}(a);return 0===b.length?[]:b.slice(0,3).map(({sentence:a,count:b})=>({level:"error",severity:"blocker",category:"style",owner:"llm",repairability:"local_deterministic",message:`段落内句子复读 ${b} 次:“${a.slice(0,30)}…”`,suggestion:"同一段落内相同句子只保留首次出现,删除段尾复读的重复句(确定性修复器已接入自动剥离)。"}))}let bf=/^(.+?)(?:((?:\d+|[一二三四五六七八九十]+)))+$/u;function bg(a){let b=[];for(let c of a.matchAll(/^###\s+(.+)$/gmu)){let d=c[1].trim();bf.test(d)&&b.push({raw:d,index:a.lastIndexOf("\n",c.index??0)+1})}return b}function bh(a){let b=bg(a);return 0===b.length?[]:b.slice(0,3).map(({raw:a})=>({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"local_deterministic",message:`目录小节标题含防撞名编号后缀:“${a}”`,suggestion:"正式投标文件目录不允许「(1)(2)」编号后缀小节:确定性修复器已接入(按主题域重命名为语义化标题或合并同基线拆半小节)。"}))}let bi=/第(\d{1,3})日(?:至|到|~|~|—|-)第(\d{1,3})日/gu;function bj(a){let b=[];for(let c of a.matchAll(bi))Number(c[1])<=Number(c[2])||b.push({start:c.index??0,end:(c.index??0)+c[0].length,raw:c[0]});return b}function bk(a){let b=bj(a);return 0===b.length?[]:b.slice(0,3).map(({raw:a})=>({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`时间区间倒挂:“${a}”起点大于终点,属时间拼接病句`,suggestion:"删除倒挂区间起点,仅保留终点日期表述(确定性修复器已接入自动剥离)。"}))}function bl(a){let b=[],c=a.split(/\r?\n/u),d=new Map,e=[],f=()=>{let a=bc(e.join(""));if(a){let b=(d.get(a)||0)+1;d.set(a,b)}e=[]};for(let a of c){let b=a.trim();if(!b||/^#{1,6}\s/u.test(b)||/^\s*\|/u.test(b)){f();continue}if(/^[-*•]\s/u.test(b)){f(),e.push(b),f();continue}e.push(b)}for(let[a,c]of(f(),[...d.entries()].filter(([,a])=>a>=2).slice(0,3)))b.push({level:"error",severity:"blocker",category:"style",owner:"llm",repairability:"llm_repairable",message:`段落完全重复 ${c} 次:“${a.slice(0,40)}…”`,suggestion:"同一段落正文只保留首次出现处,删除其余重复段落;确需前后呼应时改写为差异化表述并压缩篇幅。"});return b}function bm(a,b,c){let d=new Set;for(let a of[...b.quality,...b.project,...b.schedule])for(let b of(0,e.lG)(a.value).matchAll(a1))d.add(a3(b[0]));if(c?.extracted)for(let a of[...c.awardObjectives||[],...c.specialQualityStandards||[],...c.awardClauses||[]])for(let b of(a.text||"").matchAll(a1))d.add(a3(b[0]));if(0===d.size)return[];let f=new Set;for(let b of a.matchAll(a1)){let a=a3(b[0]);!d.has(a)&&(a2.test(a)||f.add(a))}return 0===f.size?[]:[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`奖项表述与招标文件白名单不符:正文出现 ${[...f].join("、")},均未出现在招标文件评分项要求或绑定资料中`,suggestion:"创优目标必须以招标文件原文为准逐字落位(如「确保黄山杯」),禁止自行编造或替换为其他奖项名称;白名单外的奖项表述一律删除或替换为招标原文奖项。"}]}function bn(a){let b=a.split(/\r?\n/u),c=new Set;for(let a of b){let b=/^(#{2,4})\s+(.+)$/u.exec(a.trim());if(!b)continue;let d=b[2].trim();(0,h.Xp)(d)&&c.add(d)}if(0===c.size)return[];let d=[...c];return[{level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:`正文出现投标人资格内容小节:${d.slice(0,3).map(a=>`“${a}”`).join("、")}${d.length>3?" 等":""}(资格审查内容不属于施工组织设计,属资格文件/商务文件范畴)`,suggestion:"删除资格内容小节(标题与正文整体删除),不得以改写、合并、降级方式保留;正文如需提及安全生产许可证等证照,只能以施工管理口径表述(如“按规定持证上岗”),不得成节铺陈资格核验内容。"}]}let bo=/人[、,,]材[、,,]机/u,bp=/(?:确保\s*)?([人材机])(?:员|力|料|械|工)?\s*的保障体系与措施/u;function bq(a){let b=a.match(bp)?.[1];return b||(/劳动力|人员|作业人员|劳务/u.test(a)?"人":/材料|物资|周转/u.test(a)?"材":/机械|设备|机具|塔吊|起重机/u.test(a)?"机":void 0)}function br(a){let b=[],c=a.split(/\r?\n/u);for(let a=0;a<c.length;a+=1){let d,e=/^##\s+(.+)$/u.exec(c[a].trim());if(!e||!bo.test(e[1]))continue;let f=c.length;for(let b=a+1;b<c.length;b+=1)if(/^##\s+/u.test(c[b].trim())){f=b;break}let g=[];for(let e=a+1;e<f;e+=1){let a=/^###\s+(.+)$/u.exec(c[e].trim()),f=/^####\s+(.+)$/u.exec(c[e].trim());if(a){d={subject:bq(a[1]),title:a[1].trim()},g.push(d);continue}if(f&&d?.subject){let a=bq(f[1]);a&&a!==d.subject&&b.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:`人材机章层级错位:小节“${f[1].trim()}”挂在“${d.title}”之下(${"人"===a?"人":"材"===a?"材":"机"}的保障体系应独立成二级小节,不得并入${"人"===d.subject?"人":"材"===d.subject?"材":"机"}的保障体系)`,suggestion:`将“${f[1].trim()}”提升为独立二级小节,或将其内容合并到对应主题的二级小节。`})}}let h=new Set(g.map(a=>a.subject).filter(Boolean)),i=["人","材","机"].every(a=>h.has(a));(g.length<3||!i)&&b.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:`人材机章结构不完整:“${e[1].trim()}”仅 ${g.length} 个二级小节(人/材/机的保障体系未全部独立成节)`,suggestion:"拆分为“确保人的保障体系与措施”“确保材的保障体系与措施”“确保机的保障体系与措施”三个二级小节。"})}return b}function bs(a,b){let c=[],d=(a,b)=>1e-6>Math.abs(a-b);for(let e of b){let b=e.groups??[];if(b.length<2||new Set(b.map(a=>Math.round(100*a.value))).size<2)continue;let f=RegExp((0,i.Lp)(e.name),"gu"),g=RegExp(`(?<![\\dA-Za-z])(\\d(?:[\\d,]*(?:\\.\\d+)?))\\s*${(0,i.YZ)(e.unit)}(?![0-9a-zA-Z])`,"gui"),h=[];for(let c of a.matchAll(f)){let d=c.index??0,f=d+c[0].length,i=a.lastIndexOf("\n",d)+1,j=a.indexOf("\n",d);if(-1===j&&(j=a.length),/^\s*\|/u.test(a.slice(i,j)))continue;let k=Math.max(i,d-24),l=a.slice(k,d),m=Math.max(l.lastIndexOf("。"),l.lastIndexOf(";"),l.lastIndexOf(";")),n=m>=0?l.slice(m+1):l,o=b.filter(a=>a.group&&n.includes(a.group));if(1!==o.length)continue;let p=o[0],q=a.slice(f,f+24),r=Math.min(...[q.search(/[、。;,]/u),q.search(/\n/u)].filter(a=>a>=0).concat([q.length])),s=q.slice(0,r),t=null;for(let a of s.matchAll(g)){if(/(?:间距|不大于|不小于|≥|≤|宽度|厚度|高度|深度|坡度)[^0-9]*$/u.test(s.slice(0,a.index??0)))continue;let b=a[1],c=Number(b.replace(/,/gu,""));Number.isFinite(c)&&!(c<=0)&&(null===t||Math.abs(c-e.value)<Math.abs(t.value-e.value))&&(t={offset:f+(a.index??0)+a[0].indexOf(b),value:c,raw:b})}if(!t)continue;let u=a.slice(f,t.offset);(!/[A-Za-z]/u.test(u)||/[\u4e00-\u9fa5]/u.test(u))&&h.push({group:p.group,value:t.value,excerpt:a.slice(d,t.offset+t.raw.length)})}if(0===h.length)continue;let j=!1;for(let a of h){let f=b.find(b=>b.group===a.group);if(!f||d(f.value,a.value))continue;let g=b.find(b=>b.group!==a.group&&d(b.value,a.value));if(g){c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`跨工程同值复制:“${a.excerpt.slice(0,40)}”在“${a.group}”语境处取值 ${a.value}${e.unit},该值是“${g.group}”的清单明细值(${a.group} 的清单明细值为 ${f.value}${e.unit})`,suggestion:`以工程量清单分工程明细为准修正“${a.group}”语境:应为 ${f.value}${e.unit},不得沿用“${g.group}”的明细值 ${a.value}${e.unit};修复后全文该条目分工程取值必须与清单明细逐一对应。`}),j=!0;break}}if(j)continue;let k=new Map;for(let a of h){let b=a.value.toFixed(2),c=k.get(b)??new Set;c.add(a.group),k.set(b,c)}for(let[a,d]of k){if(d.size<2)continue;let f=b.filter(a=>d.has(a.group));if(new Set(f.map(a=>Math.round(100*a.value))).size<2)continue;let g=h.find(b=>b.value.toFixed(2)===a);c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`跨工程同值复制:“${g.excerpt.slice(0,40)}”数值 ${a}${e.unit} 同时出现在“${[...d].join("”“")}”等 ${d.size} 个工程对象语境,而清单明细值互不相同(${f.map(a=>`${a.group} ${a.value}${e.unit}`).join("、")})——至少一处属跨工程同值复制`,suggestion:`逐工程对象按清单明细值修正取值(${f.map(a=>`${a.group} ${a.value}${e.unit}`).join("、")}),不得多工程共用同一数值。`});break}}return c.slice(0,8)}function bt(a){let{phrase:b,first:c,second:d}=a,e=(0,j.Qk)(b,c.phase),f=(0,j.Qk)(b,d.phase);if(e.length<4||f.length<4)return null;let g=e.start<=f.start?c:d,h=g===c?d:c;return{leading:g,trailing:h}}function bu(a,b){let c=[],d=[];if(0===b.length)return{claims:c,ambiguities:d};let e=new Set,f=(f,g,h,i)=>{if(e.has(f))return;let k=Number(g.replace(/[,,]/gu,""));if(!Number.isFinite(k)||k<=0)return;let l=a.lastIndexOf("\n",f)+1,m=a.indexOf("\n",f);-1===m&&(m=a.length);let n=a.slice(l,m);if(/^\s*\|.*\|\s*$/u.test(n)||aD.test(n))return;let o=a.slice(Math.max(l,f-12),f);if(/不少于|不低于|至少|最低|不小于|≥/u.test(o)||/(?:[\u4e00-\u9fa5]{1,3}(?:工|员|长)|司机|班组|队伍?)\s*$/u.test(o))return;let p=function(a,b){let c=(a.match(/[\p{Script=Han}]/gu)||[]).length;if(0===c)return null;let d=null,e={length:0,start:0,end:0};for(let c of b){let b=(0,j.Qk)(a,c.phase);b.length>=4&&(null===d||b.length>e.length)&&(d=c,e=b)}if(!d)return null;if(e.length>=c)return{best:d};for(let c of[a.slice(0,e.start),a.slice(e.end)])if(!((c.match(/[\p{Script=Han}]/gu)||[]).length<2)){for(let a of b)if(a.phase!==d.phase&&(0,j.Qk)(c,a.phase).length>=4)return{best:d,second:a}}return{best:d}}(h,b);if(!p)return;let q=a.slice(Math.max(l,f-24),Math.min(a.length,f+g.length+1)).trim();if(p.second){e.add(f),d.push({start:f,raw:g,actual:k,phrase:h,first:{phase:p.best.phase,value:p.best.value,trace:p.best.trace},second:{phase:p.second.phase,value:p.second.value,trace:p.second.trace},excerpt:q});return}k!==p.best.value&&(e.add(f),c.push({start:f,end:f+g.length,raw:g,actual:k,expected:p.best.value,phase:p.best.phase,trace:p.best.trace,channel:i,excerpt:q}))};for(let b of a.matchAll(r)){let c=(b.index??0)+b[0].indexOf(b[1]),d=a.lastIndexOf("\n",c)+1,e=u(a,d,c);e&&f(c,b[1],e.replace(/阶段$/u,""),"base")}for(let b of a.matchAll(t)){if(!b[1]||!b[2])continue;let c=b[2],d=(b.index??0)+b[0].lastIndexOf(c);if(e.has(d))continue;let g=Math.max(a.lastIndexOf("。",d),a.lastIndexOf(";",d),a.lastIndexOf(";",d))+1,h=a.length;for(let b of["。",";",";"]){let c=a.indexOf(b,d);-1!==c&&c<h&&(h=c)}/阶段/u.test(a.slice(g,h))&&f(d,c,b[1].trim(),"enumeration")}return{claims:c,ambiguities:d}}function bv(a,b){let{claims:c,ambiguities:d}=bu(a,b),e=[];for(let a of c)e.push({position:a.start,issue:{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`阶段劳动力数据矛盾:正文“${a.excerpt.slice(0,60)}”取值 ${a.actual} 人,与蓝图分阶段劳动力推导不符(“${a.phase}”阶段应为 ${a.expected} 人)`,suggestion:`分阶段劳动力人数必须以蓝图推导为准:将“${a.phase}”阶段人数统一为 ${a.expected} 人${a.trace?`(依据:${a.trace})`:""},删除其他口径数字。`}});for(let a of d)e.push({position:a.start,issue:{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`阶段名疑似拼接:正文“${a.excerpt.slice(0,60)}”中的阶段名“${a.phrase}”同时混含“${a.first.phase}”与“${a.second.phase}”两个蓝图阶段,人数 ${a.actual} 人无法归属`,suggestion:`将阶段名拆分表述:“${a.first.phase}”按 ${a.first.value} 人、“${a.second.phase}”按 ${a.second.value} 人(蓝图推导)分句列出,不得把两个阶段名连写成单一阶段。`}});return e.sort((a,b)=>a.position-b.position).slice(0,8).map(a=>a.issue)}function bw(a,b){let c=[];if(0===b.length)return c;let d=/首批|第一批|首期|第一期/gu,e=/剩余|补充|追加/gu,f=/保持|维持|确保|不少于|不低于|控制在|以内|以下/u;for(let g of b){if(!g.name||!Number.isFinite(g.count)||g.count<=0)continue;let b=(0,i.Lp)(g.name),h=RegExp(`${b}[^\\n。;;、,,]{0,4}?([\\d,]+)\\s*(?:台|辆)`,"gu"),j=new Set,k=new Set,l="";for(let b of a.matchAll(/[^。;;\n]+/gu)){let c=b[0],g=b.index??0,i=[...c.matchAll(d)].map(a=>a.index??0),m=[...c.matchAll(e)].map(a=>a.index??0);if(0!==i.length||0!==m.length)for(let b of c.matchAll(h)){if(!b[1])continue;let c=Number(b[1].replace(/[,,]/gu,""));if(!Number.isFinite(c)||c<=0)continue;let d=b.index??0,e=g+d,h=a.lastIndexOf("\n",e)+1,n=a.indexOf("\n",e);-1===n&&(n=a.length);let o=a.slice(h,n);if(/^\s*\|.*\|\s*$/u.test(o)||aD.test(o))continue;let p=b[0];if(f.test(p)||/以内|以下|上限/u.test(a.slice(e+p.length,e+p.length+4)))continue;let q=i.filter(a=>a<d&&d-a<=40).pop(),r=m.filter(a=>a<d&&d-a<=40).pop();(void 0!==q||void 0!==r)&&(void 0!==r&&(void 0===q||r>q)?k.add(c):j.add(c),l||(l=a.slice(Math.max(h,e-20),Math.min(n,e+p.length)).trim()))}}if(0===j.size||0===k.size)continue;let m=[...j],n=[...k];if(!m.some(a=>n.some(b=>a+b===g.count))&&(c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`机械设备分批台数矛盾:“${g.name}”分批投入(首批 ${m.join("/")} 台+剩余 ${n.join("/")} 台)各批组合之和均不等于蓝图机械汇总 ${g.count} 台${l?`(原文“${l.slice(0,50)}”)`:""}`,suggestion:`分批投入的台数之和必须等于蓝图机械汇总台数:将“${g.name}”各批次调整为首批与剩余合计 ${g.count} 台,或删除分批描述仅保留“${g.name} ${g.count} 台”汇总口径。`}),c.length>=5))break}return c}function bx(a,b){let c=[];if(!b||!Number.isFinite(b)||b<=0)return c;let d=/交底|考察|封样|编制|审批|报审|报批|培训|演练|签订|组建|建立|采购|调查|备案|申报|进场确认/u;for(let e of a.matchAll(/(?:开工令下发|开工令下达|下达开工令|开工|计划开工)[^。;;\n年月]{0,8}?(?:第\s*(\d+)\s*(?:个)?(?:日历)?日|(\d+)\s*(?:个)?(?:日历)?日)/gu)){let f=e[1]||e[2];if(!f||"内"===a.slice((e.index??0)+e[0].length,(e.index??0)+e[0].length+1))continue;let g=Number(f);if(!Number.isFinite(g)||g<=0||g<b)continue;let h=(e.index??0)+e[0].lastIndexOf(f),i=a.lastIndexOf("\n",h)+1,j=a.indexOf("\n",h);-1===j&&(j=a.length);let k=a.slice(i,j);if(/^\s*\|.*\|\s*$/u.test(k)||aD.test(k))continue;let l=a.slice(Math.max(i,h-40),Math.min(j,h+f.length+40));if(!d.test(l))continue;let m=a.slice(Math.max(i,h-30),Math.min(j,h+f.length+14)).trim();if(c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`前期动作时限矛盾:正文“${m}”将前期准备动作时限设在开工后第 ${g} 日,已达到/超过总工期 ${b} 日(竣工日)——前期动作不可能安排在项目末期`,suggestion:`前期准备动作时限必须落在施工准备阶段内:将第 ${g} 日改为与施工准备阶段相匹配的早期天数(早于总工期 ${b} 日),或删除具体天数改述为“开工令下发后在施工准备阶段内完成”。`}),c.length>=5)break}return c}function by(a){let b=a.split(/\r?\n/u),c=[];b.forEach((a,b)=>{let d=/^(#{3,4})\s+([^\n]+)$/u.exec(a.trim());d&&c.push({index:b,level:d[1].length,title:d[2].trim()})});let d=[];for(let a=0;a<c.length;a+=1){let{index:e,level:f,title:g}=c[a],h=g.replace(/^[\d.]+[\s\u00a0]*/u,"");if(!/工程\s*$/u.test(h))continue;let i=h.replace(/\s*工程\s*$/u,"");if(!i||!/[、与及]/u.test(i))continue;let j=i.split(/[、与及]/u).map(a=>a.trim()).filter(a=>a.length>=2);if(j.length<2)continue;let k=b.length;for(let b=a+1;b<c.length;b+=1)if(c[b].level<=f){k=c[b].index;break}let l=b.slice(e+1,k).join("\n"),m=l.replace(/[、,,]/gu,""),n=j.filter(a=>{if(l.includes(a))return!1;let b=a.replace(/[、,,]/gu,"").replace(/(?:安装|施工|工程|作业)$/u,"");return b.length>=2&&!m.includes(b)});0!==n.length&&d.push({lineIndex:e,level:f,title:g,parts:j,uncovered:n})}return d}},36003:(a,b,c)=>{c.d(b,{AI:()=>S,Ym:()=>H,eL:()=>p.eL,hZ:()=>C,nl:()=>X,qX:()=>D,uQ:()=>T,w9:()=>z,xu:()=>p.xu});var d=c(76760),e=c(78217),f=c(70933),g=c(30836),h=c(40299),i=c(95734),j=c(22157),k=c(46482),l=c(71001),m=c(43378),n=c(40693);c(22496);var o=c(81010),p=c(22213),q=c(91943),r=c(18274),s=c(76193),t=c(21702),u=c(41991),v=c(1358),w=c(3063),x=c(54185),y=c(80572);function z(a,b,c){let d=[...a.errors.map(a=>({level:"error",message:a,suggestion:"请补充配置或资料后重新生成。"})),...a.warnings.map(a=>({level:"warning",message:a,suggestion:"建议人工确认或补充对应资料。"}))];return c.some(a=>/资料未提供|系统暂未从知识库确认/u.test(a.content))&&d.push({level:"warning",message:"存在系统暂未从知识库确认的章节内容",suggestion:"请检查项目角色配置、文件绑定顺序和事实抽取落位结果。"}),b.conflicts.length>0&&d.push(...b.conflicts.map(a=>({level:"warning",message:a,suggestion:"请根据当前模板绑定的角色、文件证据和用户要求复核取值口径。"}))),d}let A=/\b\d+(?:\.\d+)?\s*(?:日历天|小时|分钟|天|周|月|年|万元|元|台|套|个|项|批|次|份|人)(?=[。,,;;::、\s]|$)/gu;function B(a){let b=new Set;for(let c of a){let a=(0,j.lG)(c.content).replace(/\s+/gu," ");if((!/报价明细|投标报价|单价|合价|综合单价|预留金|税率|增值税|利润|结算/u.test(a)||/合同估算价|合同估算价格|投资估算|最高投标限价|招标控制价/u.test(a))&&!/OCR|识别错误|乱码|无法确认|疑似|不确定|语义断裂/u.test(a)){for(let c of a.matchAll(r._W))b.add(c[0].trim());for(let c of a.matchAll(A))b.add(c[0].trim());if(b.size>=40)break}}return[...b].slice(0,40)}function C(a){let b=a.spec?.chapterRules.find(b=>b.id===a.chapter.id||b.title===a.chapter.title),c=(b?.requiredFactIds||[]).map(b=>a.spec?.factFields.find(a=>a.id===b)?.name).filter(Boolean),d=[...new Set([...a.chapter.requiredFacts,...c,...a.plan?.requiredContents||[],...a.plan?.evidenceNeeds||[],...(a.resolvedFactNeeds||[]).filter(a=>a.need.required).map(a=>a.need.label)].filter(Boolean))],e=a.roleFacts.map(({fact:a})=>`- ${a.key}:${(0,f.eE)((0,j.lG)(a.value))}`),g=(a.resolvedFactNeeds||[]).flatMap(a=>a.facts),h=a.indexedFacts||[],i=g.length>0?[]:h.map(a=>`- ${a.key||a.fieldName||"资料事实"}:${(0,f.eE)((0,j.lG)(a.value))}${a.sourceFile?`(来源:${a.sourceFile.split("/").pop()})`:""}`),k=[...g,...h].filter(a=>/建设地点|建设规模|招标范围|计划工期|合同工期|周期要求|质量标准|合同估算|投资估算|最高投标限价|招标控制价/u.test(`${a.key||""}${a.fieldName||""}${a.fieldId||""}`)).filter((a,b,c)=>c.findIndex(b=>`${b.key||b.fieldName}:${(0,j.lG)(b.value)}`==`${a.key||a.fieldName}:${(0,j.lG)(a.value)}`)===b),l=[...new Set([...B(a.evidence),...g.map(a=>(0,j.lG)(a.value)).filter(a=>r.sv.test(a)),...h.map(a=>(0,j.lG)(a.value)).filter(a=>r.sv.test(a))])],m=new Set([...a.evidence.map(a=>a.filePath),...g.map(a=>a.sourceFile),...(a.indexedFacts||[]).map(a=>a.sourceFile)]).size,n=(a.resolvedFactNeeds||[]).filter(a=>"satisfied"!==a.status&&a.need.required).map(a=>a.need.label),o=function(a){if(!a)return[];let b=[];for(let[c,d]of Object.entries(a)){if(d.length<2)continue;let a=d.filter((a,b,c)=>c.findIndex(b=>b.location===a.location&&b.spec===a.spec)===b);a.length<2||b.push(`- ${c}:${a.slice(0,8).map(a=>`${a.location}:${a.spec}`).join("|")}`)}return b.slice(0,12)}(a.specAuthorityMap);return["【本章事实覆盖与参数落位要求】",d.length?`必须优先覆盖的事实/要求:
99
+ |]{0,18}(${ac})`,"gu"))){let a=Number(c[1]);a>=100&&b.push(`“${c[2]}”厚度 ${a}mm`)}let c=[...new Set(b)].slice(0,3);return 0===c.length?[]:[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`装饰层工艺参数异常:${c.join("、")} 远超工艺常规厚度(抹面/打底/找平 20mm、坐浆 20~30mm)`,suggestion:"装饰层(抹面/打底/找平/坐浆/结合层)厚度按工艺常规取值:抹面打底找平 20mm、坐浆 20~30mm,与结构层厚度(墙体/垫层/回填)区分,不得串用。"}]}function ae(a){let b=[],c=[...a.matchAll(/高峰期总人数(\d+)人|劳动力总人数(\d+)人|总人数(\d+)人/gu)].map(a=>Number(a[1]||a[2]||a[3])).filter(a=>a>0),d=[...a.matchAll(/高峰(?:期)?人数(\d+)人|峰值(?:需求|人数)?[为约]?(\d+)人/gu)].map(a=>Number(a[1]||a[2])).filter(a=>a>0),e=[...new Set(c)],f=[...new Set(d)];e.filter(a=>f.some(b=>b!==a)).length>0&&b.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`劳动力峰值口径矛盾:正文「总人数」出现 ${e.join("人、")}人 与「高峰人数」出现 ${f.join("人、")}人 并存,峰值人数必须唯一`,suggestion:"全文劳动力峰值只允许一个口径:统一总人数与高峰人数为同一数值,删除矛盾口径;分阶段梯次投入人数(准备阶段/主体阶段/竣工阶段)属合法动态配置,不在统一范围内。"});let g=new Map;for(let b of(0,i.Rm)(a)){if(!b.hasTradeCol||0===b.tradeCells.length)continue;let a=new Map;for(let c of b.tradeCells){let b=a.get(c.trade)??0;c.value>b&&a.set(c.trade,c.value)}for(let[b,c]of a){let a=g.get(b)??[];a.push(c),g.set(b,a)}}let h=[...g.entries()].filter(([,a])=>a.length>=2&&new Set(a).size>=2);return h.length>0&&b.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`同工种跨表高峰人数矛盾:${h.map(([a,b])=>`${a} ${b.join("人、")}人`).join(";")} 各表并存,同一工种高峰人数必须唯一`,suggestion:"同一工种在各表中的高峰人数必须一致:以工种配置表(第五章)为权威口径统一各表数值;分阶段投入计划表内同工种不同阶段的动态配置属合法数据,不参与统一。"}),b}function af(a){let b=function(a){let b=[];for(let c of a.matchAll(/(?:生活用水|施工用水|临时用水|用水)[^。;;\n]{0,24}(?:高峰(?:期)?人数|高峰人数)[^。;;\n]{0,8}?([\d,]+)\s*人/gu)){let a=Number(c[1].replace(/[,,]/gu,""));Number.isFinite(a)&&a>0&&b.push(a)}return b}(a);if(0===b.length)return[];let c=[];for(let b of a.matchAll(/高峰(?:期)?人数([\d,]+)人|峰值(?:需求|人数)?[为约]?([\d,]+)人|劳动力峰值[^。;;\n]{0,8}?([\d,]+)\s*人/gu)){let d=Number((b[1]||b[2]||b[3]||"").replace(/[,,]/gu,""));if(!Number.isFinite(d)||d<=0)continue;let e=(b.index??0)+b[0].indexOf(b[1]||b[2]||b[3]||""),f=a.slice(Math.max(0,e-24),e);!/生活用水|施工用水|临时用水|用水/u.test(f)&&((0,i.rx)(a,e)||c.push(d))}let d=[...new Set(c)];if(0===d.length)return[];let e=[...new Set(b)];return 0===e.filter(a=>d.every(b=>b!==a)).length?[]:[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`用水高峰人数与劳动力峰值不一致:临时用水按高峰人数 ${e.join("人、")}人 计算,而劳动力峰值为 ${d.join("人、")}人,两处引用必须为同一数值`,suggestion:"临时用水高峰人数与劳动力峰值为同一批施工人员的两个引用口径:统一改为劳动力峰值人数,删除自编的用水人数口径。"}]}let ag=/不再另行(?:出现|统计|编制|设置|单列|重复)[^。;;\u000A]{0,40}|以[^。;;\u000A]{0,16}为唯一[^。;;\u000A]{0,24}不再[^。;;\u000A]{0,20}|不再另行[^。;;\u000A]{0,24}/gu;function ah(a){let b=[...a.matchAll(ag)].map(a=>a[0].trim().slice(0,30));return 0===b.length?[]:[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`正文存在元话语声明句 ${b.length} 处(${[...new Set(b)].slice(0,3).join("、")}):声明≠数据,正文只保留数据不保留口径声明`,suggestion:"删除「不再另行出现其他口径」「不再另行统计累计投入人次」「以 X 为唯一控制基准,不再…」类自我声明句;数据本身的唯一性由数值一致体现,不需要文字声明。"}]}let ai=/(?:[Pp]\s*=\s*[^。;;\n]{0,60}(?:Σ|cosφ|[Kk][12])|[qQ]\s*=\s*[^。;;\n]{0,40}|Σ\s*P|cos\s*φ|[Kk][12]\s*[×*]\s*Σ|[Kk][12]\s*Σ\s*P)/gu;function aj(a){let b=[...a.matchAll(ai)].map(a=>a[0].trim().slice(0,30));return 0===b.length?[]:[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`正文出现公式形态残留 ${b.length} 处(${[...new Set(b)].slice(0,3).join("、")}):正文只允许计算值不允许计算公式`,suggestion:"删除公式符号(P =、Σ、cosφ、K1、q =),只保留计算结果值:如「用电负荷约 48kW」「高峰日生活用水量约 X m\xb3」;公式推导过程一律不进入正文。"}]}let ak=/暂列金额|暂估价|报价明细|综合单价|清单合价|预留金|投标报价|异常低价|评标基准价/u,al=/(?:税率|增值税)[^。;;\n]{0,12}\d/u,am=/^按招标文件(?:约定|要求)[^。;;\n]{0,120}[。;;]?$/u,an=/本工程|我方|本公司|按合同约定|按约定时限/u,ao=/\d+(?:\.\d+)?\s*(?:%|%|万元|亿元|元|天|日|个月|年)/u;function ap(a){let b=a.trim();if(!b||ao.test(b))return!1;if(am.test(b))return!0;let c=b.replace(/[。;;]$/u,"");return c.length>0&&c.length<=200&&an.test(c)}let aq=/合同估算价|合同估算价格|投资估算|估算价格|工程估算价|最高投标限价|招标控制价/u,ar=/材料价格|商务报价|投标总价|合同总价|工程总价/u,as=["暂列金额与暂估价的报价明细","综合单价与清单合价的商务数据","投标报价与费率标准的商务条款"],at=["合同估算价与投资估算的项目信息","最高投标限价与招标控制价的公开信息","商务数据不得写入施工组织设计正文的约束说明"];async function au(a){return(0,g.A)({prototypes:[...as],negativePrototypes:[...at],embedDocuments:a})}async function av(a,b){let c=[],d=await au(b),e=[];for(let b of a.split(/\r?\n/u)){let a=b.trim();if(!(/^#{1,6}\s/u.test(a)||/^\s*\|/u.test(a))&&(ak.test(b)||al.test(b)||ar.test(b)))for(let a of(al.test(b)&&c.push("税率/增值税"),b.split(/(?<=[。;;])\s*/u))){if(ap(a))continue;let b=a.match(ak)||[],d=aq.test(a),f=ar.test(a);!(b.length>0)||d||f?(b.length>0&&(d||f)||f&&0===b.length)&&e.push(a):c.push(...b)}}if(e.length>0){let a=await d(e);e.forEach((b,d)=>{if(!a[d])return;let e=b.match(ak)||[],f=b.match(ar)||[];c.push(...e.length>0?e:f)})}let f=[...new Set(c)].slice(0,4);return 0===f.length?[]:[{level:"error",severity:"blocker",category:"style",owner:"llm",repairability:"llm_repairable",message:`正文出现商务条款数据:${f.join("、")}`,suggestion:"商务数据(暂列金额/暂估价/综合单价/税率等)不得写入施组正文:删除该句或改写为定性表述(如“按合同约定执行”),商务口径仅保留在项目信息表中。"}]}let aw=[{key:"excavation",label:"基坑支护及土方外运",re:/基坑支护/u},{key:"zero",label:"地下结构出正负零",re:/正负零|地下室结构/u},{key:"topping",label:"主体结构封顶",re:/主体(?:结构)?封顶/u},{key:"decoration",label:"装饰装修及幕墙",re:/装饰装修/u},{key:"mep",label:"机电安装及智能化调试",re:/机电安装/u},{key:"completion",label:"室外工程及竣工验收",re:/竣工验收/u}];function ax(a){let b=[],c=(a,c,d)=>{let e=(a=>{let b="封顶"===a?"主体结构封顶":a;return aw.find(a=>a.re.test(b))?.key})(a);void 0!==e&&Number.isFinite(c)&&c>=1&&c<=3e3&&b.push({key:e,day:c,raw:d})};for(let b of a.matchAll(/第(\d{2,3})日[^。;;\n]{0,14}?完成[^。;;\n,、]{0,12}?(基坑支护及土方外运|装饰装修及幕墙|机电安装及智能化调试|室外工程及竣工验收|地下结构出正负零|主体结构封顶|正负零|封顶)/gu))c(b[2],Number(b[1]),b[0].slice(0,40));for(let b of a.matchAll(/(基坑支护|正负零|封顶|装饰装修|机电安装|竣工验收)(?:(?!(?:第\d{2,3}[日天]|,|、)).){0,8}?完成[^。;;\n]{0,10}?第(\d{2,3})[日天]/gu))c(b[1],Number(b[2]),b[0].slice(0,40));for(let b of a.matchAll(/(主体(?:结构)?封顶)(?!后)(?:(?!(?:第\d{2,3}[日天]|,|、|完成|\||[。;;\n])).){0,20}?第(\d{2,3})日/gu))c(b[1],Number(b[2]),b[0].slice(0,40));for(let b of aw){let d=RegExp(`^\\s*\\|\\s*[^|]*${b.re.source}[^|]*\\s*\\|\\s*开工(?:令下发)?后第(\\d{2,3})日\\s*\\|`,"gum");for(let b of a.matchAll(d))c(b[0],Number(b[1]),b[0].slice(0,40))}let d=new Set;return b.filter(a=>{let b=`${a.key}:${a.raw}`;return!d.has(b)&&(d.add(b),!0)})}function ay(a){let b=[],c=new Map;for(let b of ax(a)){let a=c.get(b.key)||[];a.push(b),c.set(b.key,a)}for(let a of aw){let d=c.get(a.key);if(!d||d.length<2)continue;let e=[...new Set(d.map(a=>a.day))];if(e.length<2)continue;let f=[...new Set(d.map(a=>a.raw))].slice(0,4).join("、");b.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`节点工期口径矛盾:“${a.label}”节点出现 ${e.map(a=>`${a}日`).join(" 与 ")} 两套口径:${f}`,suggestion:`关键节点完成时间必须全文唯一:以总进度计划表为准统一“${a.label}”节点日期,删除正文/其他表中矛盾的“第N日”表述。`})}return b.slice(0,4)}let az=[{key:"xps",label:"挤塑聚苯板(XPS)厚度",unit:"mm",kind:"number",patterns:[/(?:挤塑聚苯|XPS)(?:(?!(?:宽度|拼缝|不大于|不超过|小于|≤|采用|使用|选用|铺设|粘贴)).){0,40}?(\d+(?:\.\d+)?)\s*mm/gu,/(\d+(?:\.\d+)?)\s*mm[^。;;\n|]{0,10}?(?:挤塑聚苯|XPS)/gu]},{key:"cushion",label:"垫层混凝土强度等级",unit:"C标号",kind:"code",patterns:[/(?<!混凝土)垫层[^。;;\n|]{0,20}?(C\d{2})/gu]},{key:"transformer",label:"箱式变压器容量",unit:"kVA",kind:"number",patterns:[/(\d+)\s*kVA[^。;;\n|]{0,12}?变压器/gu,/变压器[^。;;\n|]{0,12}?(\d+)\s*kVA/gu]},{key:"formwork",label:"模板周转次数",unit:"次",kind:"number",patterns:[/模板周转(?:次数|使用)?[^。;;\n|]{0,15}?(\d+)\s*次/gu]},{key:"block",label:"蒸压加气混凝土砌块强度等级",unit:"A标号",kind:"code",patterns:[/(?:蒸压加气混凝土|加气混凝土)?砌块[^。;;\n]{0,24}?(A\d+(?:\.\d+)?)/gu]},{key:"extinguisher",label:"干粉灭火器数量",unit:"具",kind:"number",patterns:[/灭火器[^。;;\n]{0,24}?(\d+)\s*具/gu]},{key:"pump",label:"潜水泵(提升泵)数量",unit:"台",kind:"number",patterns:[/(?:潜水泵|提升泵)[^。;;\n]{0,24}?(\d+)\s*台/gu]},{key:"firstaid",label:"急救箱数量",unit:"套/个",kind:"number",patterns:[/急救箱[^。;;\n|]{0,24}?(\d+)\s*(?:套|个)/gu]},{key:"scheduleDays",label:"计划总工期",unit:"日历天",kind:"number",patterns:[/^\s*\|\s*计划工期\s*\|\s*(\d{1,4})\s*个?\s*日历天\s*\|/gum,/(?:计划工期|合同工期|工期总日历天数|工期控制|工期目标|总工期)[^。;;\n|]{0,12}?(\d{1,4})\s*个?\s*日历天/gu,/(\d{1,4})\s*个?\s*日历天[^。;;\n|]{0,8}?(?:总工期|倒排|分解|为唯一|完成)/gu]},{key:"prefabRatio",label:"装配率",unit:"%",kind:"number",patterns:[/装配率[^。;;\n|]{0,14}?(\d+(?:\.\d+)?)\s*%/gu,/装配率[^。;;\n|]{0,44}?计算为(\d+(?:\.\d+)?)\s*%/gu,/(\d+(?:\.\d+)?)\s*%(?:(?![,,。;;\n|]).){0,10}?装配率/gu]},{key:"projectCode",label:"项目编号",unit:"",kind:"code",patterns:[/(?:招标项目编号|项目编号)[^。;;\n|]{0,8}?(20\d{2}[A-Z]{1,8}\d{2,10})/gu]},{key:"towerCrane",label:"塔式起重机(塔吊)数量",unit:"台",kind:"number",patterns:[/(?:塔式起重机|塔吊)[^。;;\n|、,]{0,30}?(\d+)\s*台/gu,/(\d+)\s*台[A-Za-z0-9/\-–—~~]{0,16}\s{0,2}(?:塔式起重机|塔吊)/gu]},{key:"hoist",label:"施工升降机(施工电梯)数量",unit:"台",kind:"number",patterns:[/(?:施工升降机|施工电梯)[^。;;\n|、,]{0,30}?(\d+)\s*台/gu,/(\d+)\s*台[A-Za-z0-9/\-–—~~]{0,16}\s{0,2}(?:施工升降机|施工电梯)/gu]},{key:"truckCrane",label:"汽车起重机(汽车吊)数量",unit:"台",kind:"number",patterns:[/(?:汽车起重机|汽车吊)[^。;;\n|、,]{0,30}?(\d+)\s*台/gu,/(\d+)\s*台[A-Za-z0-9/\-–—~~]{0,16}\s{0,2}(?:汽车起重机|汽车吊)/gu]},{key:"rebarCutter",label:"钢筋切断机数量",unit:"台",kind:"number",patterns:[/钢筋切断机[^。;;\n|]{0,24}?(\d+)\s*台/gu]},{key:"rebarBender",label:"钢筋弯曲机数量",unit:"台",kind:"number",patterns:[/钢筋弯曲机[^。;;\n|]{0,24}?(\d+)\s*台/gu]},{key:"slackDays",label:"机动工期(工序衔接与验收缓冲)",unit:"天",kind:"number",patterns:[/(?:机动工期|缓冲)[^。;;\n|]{0,16}?(\d{1,3})\s*天/gu,/预留[^。;;\n|]{0,8}?(\d{1,3})\s*天[^。;;\n|]{0,10}?(?:机动|缓冲)/gu]},{key:"villageCount",label:"自然村数量",unit:"个自然村",kind:"number",patterns:[/(\d+)\s*个(?:美丽宜居)?自然村(?!分组|施工组)/gu]},{key:"circularSaw",label:"圆盘锯数量",unit:"台",kind:"number",patterns:[/圆盘锯[^。;;\n|]{0,24}?(\d+)\s*台/gu]},{key:"excavator",label:"挖掘机数量",unit:"台",kind:"number",patterns:[/(?:履带式)?挖掘机[^。;;\n、,]{0,40}?(\d+)\s*台/gu,/(\d+)\s*台[^、,。;\n|]{0,12}?(?:履带式)?挖掘机/gu]},{key:"dumpTruck",label:"自卸汽车数量",unit:"台/辆",kind:"number",patterns:[/自卸汽车[^。;;\n、,]{0,40}?(\d+)\s*(?:台|辆)/gu,/(\d+)\s*(?:台|辆)[^、,。;\n|]{0,12}?自卸汽车/gu]},{key:"roller",label:"压路机数量",unit:"台",kind:"number",patterns:[/(?:振动)?压路机[^。;;\n、,]{0,40}?(\d+)\s*台/gu,/(\d+)\s*台[^、,。;\n|]{0,12}?(?:振动)?压路机/gu]},{key:"rammer",label:"蛙式打夯机数量",unit:"台",kind:"number",patterns:[/蛙式打夯机[^。;;\n、,]{0,40}?(\d+)\s*台/gu,/(\d+)\s*台[^、,。;\n|]{0,12}?蛙式打夯机/gu]},{key:"mixerTruck",label:"混凝土搅拌运输车数量",unit:"台",kind:"number",patterns:[/混凝土搅拌运输车[^。;;\n、,]{0,40}?(\d+)\s*台/gu,/(\d+)\s*台[^、,。;\n|]{0,12}?混凝土搅拌运输车/gu]},{key:"concreteMixer",label:"混凝土搅拌机数量",unit:"台",kind:"number",patterns:[/混凝土搅拌机[^。;;\n、,]{0,40}?(\d+)\s*台/gu,/(\d+)\s*台[^、,。;\n|]{0,12}?混凝土搅拌机/gu]},{key:"sprinkler",label:"洒水车数量",unit:"台/辆",kind:"number",patterns:[/洒水车[^。;;\n、,]{0,40}?(\d+)\s*(?:台|辆)/gu,/(\d+)\s*(?:台|辆)[^、,。;\n|]{0,12}?洒水车/gu]},{key:"aerialLift",label:"高空作业车数量",unit:"台",kind:"number",patterns:[/高空作业车[^。;;\n、,]{0,40}?(\d+)\s*台/gu,/(\d+)\s*台[^、,。;\n|]{0,12}?高空作业车/gu]},{key:"pondBackfill",label:"沟塘回填方量",unit:"m\xb3",kind:"number",patterns:[/(?:沟塘|水塘|池塘|河塘|鱼塘|塘内|渠道|淤泥|流砂|清淤)[^。;;\n|]{0,30}?回填方(?:总量)?[^。;;\n|]{0,16}?(\d+(?:\.\d+)?)\s*m[3³]/gu,/(?:沟塘|水塘|池塘|河塘|鱼塘|塘内|渠道|淤泥|流砂|清淤)[^;;\n|]{0,30}?回填方总量[^。;;\n|]{0,16}?(\d+(?:\.\d+)?)\s*m[3³]/gu,/回填方(?:总量)?[^。;;\n|]{0,16}?(\d+(?:\.\d+)?)\s*m[3³][^。;;\n|]{0,30}?(?:沟塘|水塘|池塘|河塘|鱼塘|塘内|渠道|淤泥|流砂|清淤)/gu]},{key:"trenchClearing",label:"沟槽槽底人工清底预留厚度",unit:"mm",kind:"number",patterns:[/槽底预留(\d+)mm人工清底/gu]},{key:"houseExcavation",label:"距房屋人工开挖保护距离",unit:"m",kind:"number",patterns:[/距房屋(\d+(?:\.\d+)?)m(?:内|范围内)[^。;;\n|]{0,10}?人工开挖/gu]}],aA={pump:/潜水泵|提升泵/u,towerCrane:/塔式起重机|塔吊/u,hoist:/施工升降机|施工电梯/u,truckCrane:/汽车起重机|汽车吊/u,rebarCutter:/钢筋切断机/u,rebarBender:/钢筋弯曲机/u,circularSaw:/圆盘锯/u,excavator:/挖掘机/u,dumpTruck:/自卸汽车|自卸车/u,roller:/压路机/u,rammer:/蛙式打夯机|打夯机/u,mixerTruck:/混凝土搅拌运输车|搅拌车/u,concreteMixer:/混凝土搅拌机/u,sprinkler:/洒水车/u,aerialLift:/高空作业车/u,extinguisher:/灭火器/u,firstaid:/急救箱/u};function aB(a,b){let c=(0,i.Dq)(b);if(void 0===c)return[];let d=new Set;for(let b of a.matchAll(/养护[^。;;\n|]{0,16}?([一二两三四五六七八九十]+|\d{1,2})\s*年/gu)){let c=a.lastIndexOf("\n",b.index)+1,e=a.indexOf("\n",b.index);if(-1===e&&(e=a.length),aE.test(a.slice(c,e)))continue;let f=(0,i.a0)(b[1]??"");void 0!==f&&f>0&&d.add(f)}if(0===d.size)return[];let e=[...d].filter(a=>a!==c);return 0===e.length?[]:[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`绿化养护期清单红线:正文出现养护期 ${e.map(a=>`${a}年`).join("、")},与工程量清单锁定口径「养护 ${c} 年」矛盾`,suggestion:`绿化养护期必须与工程量清单一致(清单锁定「养护 ${c} 年」):将正文所有养护期表述统一为 ${c} 年并删除矛盾口径;养护期属清单实质性条款,不得以常规值替代。`}]}function aC(a,b){let c=(0,i.Mb)(b);if(void 0===c)return[];let d=[];for(let b of a.matchAll(/路灯[^。;;\n|]{0,28}?(\d+)\s*(?:套|盏|杆)/gu)){if(/批/u.test(b[0]))continue;let c=a.lastIndexOf("\n",b.index)+1,e=a.indexOf("\n",b.index);if(-1===e&&(e=a.length),aE.test(a.slice(c,e)))continue;let f=Number(b[1]);Number.isFinite(f)&&f>0&&d.push(f)}if(0===d.length)return[];let e=d.length>=2?d.reduce((a,b)=>a+b,0):d[0]??0;return e===c?[]:[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`路灯数量口径矛盾:正文路灯配置合计约 ${e} 套,与工程量清单锁定口径 ${c} 套不一致(相差 ${Math.round(Math.abs(e-c)/c*100)}%)`,suggestion:`路灯数量必须以工程量清单为准(清单锁定 ${c} 套):按清单核定各型号路灯数量并统一正文全部表述,删除与清单矛盾的套数口径。`}]}let aD=/\d+(?:\.\d+)?\s*(?:mm|kVA|次|具|台|套|个)\s*[//]\s*\d+/u,aE=/不再出现|不得出现|严禁出现|避免出现|不采用|未采用|予以删除|已删除|取消|纠正为|更正为/u,aF=/再浇筑|再浇|后浇筑|后浇|然后浇筑|然后再浇|上层|上部|面层浇筑|其上浇筑|浇筑完成后再/u,aG=/分层厚度|分层浇筑|分层振捣|焊缝高度|焊缝厚度|焊脚尺寸|锚固深度|保护层厚度|搭接长度|锚固长度|预留|踏步高度|踏步宽度|踏步高|踏步宽|台阶高度|台阶宽度|内厚|外厚|抹面|抹灰|粉刷|垫高|架空|离地|支垫/u,aH=/分别为|分别对应|分别用于|分别按|依次为|依次/u,aI="女儿墙|外墙|内墙|隔墙|地梁|圈梁|构造柱|过梁|垫层|承台|筏板|底板|基础|主体|梁|柱|墙|楼板|屋面|地面|楼面|顶板|楼梯|阳台|雨篷|台阶|散水|坡道|找坡|找平|保护层|防水层|保温层|隔汽层|地坪|办公区|生活区|库房|加工区|堆放区|驻地|周转场|停放区|仓库|材料库|路基|沟槽|基槽",aJ=/每[台辆架套部][一-龥A-Za-z0-9]{1,8}/gu,aK=/项目部|总协调|工人生活|施工办公|办公|生活|临时|总部|标段|片区/u;function aL(a,b,c){let d=b.slice(Math.max(0,c-8),c),e=d.match(aK);if(!e||void 0===e.index)return a;let f=d.slice((e.index??0)+e[0].length);return/^[的施工区域现场]{0,3}$/u.test(f)?`${e[0]}${a}`:a}function aM(a,b,c,d){let e=a.indexOf("\n",b),f=a.slice(d,-1===e?a.length:e);if(/^\s*\|/u.test(f)&&/\|\s*$/u.test(f.trim())){let a=f.replace(/[\u4e00-\u9fa5]{2,6}阶段/gu,""),b=[...a.matchAll(RegExp(aI,"gu"))],c=b[b.length-1];return c?aL(c[0],a,c.index??0):""}let g=Math.max(d,b-16),h=a.slice(g,b),i=Math.max(h.lastIndexOf(","),h.lastIndexOf("、"),h.lastIndexOf(","),h.lastIndexOf(";"),h.lastIndexOf(";"),h.lastIndexOf("。")),j=a.slice(i>=0?g+i+1:g,b+c.length).replace(/[\u4e00-\u9fa5]{2,6}阶段/gu,""),k=[...j.matchAll(aJ)];if(k.length>0)return k[k.length-1]?.[0]??"";let l=[...j.matchAll(RegExp(aI,"gu"))],m=l[l.length-1];return m?aL(m[0],j,m.index??0):""}function aN(a){let b=[];for(let c of az){let d=new Map,e=new Map;for(let b of c.patterns)for(let f of a.matchAll(b)){let b=f[0].slice(0,40);if("trenchClearing"===c.key){let c=Math.max(a.lastIndexOf("。",f.index),a.lastIndexOf(";",f.index),a.lastIndexOf("\n",f.index))+1;if(/基槽|围栏|菜园/u.test(a.slice(c,(f.index||0)+b.length)))continue}if(aD.test(b)||aF.test(b))continue;if("scheduleDays"===c.key){let c=b.indexOf(String(f[1]));if(c>=0&&/(?:阶段|第\d+日|至第|共|集中)/u.test(a.slice(Math.max(0,(f.index||0)+c-16),(f.index||0)+c)))continue}if(/按不少于|不少于/u.test(b))continue;let g=a.lastIndexOf("\n",f.index)+1,h=a.indexOf("\n",f.index);if(-1===h&&(h=a.length),aE.test(a.slice(g,h)))continue;let i=aM(a,f.index||0,b,g),j=d.get(i)||new Set;j.add(f[1]),d.set(i,j);let k=e.get(i)||[];k.push(b),e.set(i,k)}let f=d.get("")||new Set,g=[...d.keys()].filter(a=>""!==a);if(f.size>0&&1===g.length){let a=d.get(g[0]||"");if(a){for(let b of f)a.add(b);let b=e.get(g[0]||"")||[];b.push(...e.get("")||[]),e.set(g[0]||"",b),d.delete(""),e.delete("")}}for(let[a,f]of d){if(f.size<2)continue;let d=e.get(a)||[];if("code"===c.kind)b.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`材料参数口径矛盾:“${c.label}”${a?`在部位「${a}」`:"在未标注部位语境下"}出现 ${[...f].map(a=>`${a}${c.unit}`).join(" 与 ")} 两套口径:${[...new Set(d)].slice(0,3).join("、")}`,suggestion:`同一材料同一部位只允许一个口径:以设计图纸/工程量清单为准统一“${c.label}”${a?`在部位「${a}」的取值`:""},删除矛盾表述;不同部位允许不同规格,不得全文归一为一种。`});else{let e=[...f].map(Number).filter(Number.isFinite);if(e.length<2)continue;b.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`材料/设备数量口径矛盾:“${c.label}”${a?`在部位「${a}」`:"在未标注部位语境下"}出现 ${e.map(a=>`${a}${c.unit}`).join(" 与 ")} 两套口径:${[...new Set(d)].slice(0,3).join("、")}`,suggestion:`同一设备/材料同一部位只允许一个口径:以应急物资清单/施工部署为准统一“${c.label}”${a?`在部位「${a}」的取值`:""},删除矛盾表述;总量与分区配置属不同口径,不得互相归一。`})}}}return b.slice(0,16)}function aO(a){return/^C\d{2,3}$/.test(a)?/C\d{2,3}/u:/^M\d/.test(a)?/M\d+(?:\.\d+)?/u:/^P\d{1,2}$/.test(a)?/(?<![A-Za-z])P\d{1,2}/u:/^A\d+(?:\.\d+)?$/.test(a)?/A\d+(?:\.\d+)?/u:/^B\d+(?:\.\d+)?$/.test(a)?/B\d+(?:\.\d+)?/u:/^HRB/.test(a)||/^HPB/.test(a)?/HRB\d{3,4}|HPB\d{3}/u:/mm$/.test(a)?/\d+(?:\.\d+)?\s*mm/u:null}function aP(a,b){let c=[];if(!b)return c;let d=[...new Set(Object.values(b).flat().map(a=>a.location).filter(Boolean))];for(let e of Object.values(b)){if(e.length<2)continue;let b=new Set;for(let f of e){let{location:g,spec:h}=f;if(!g||!h||g.length<2)continue;let i=aO(h);if(!i)continue;let j=`${g}|${i.source}`;if(b.has(j))continue;b.add(j);let k=new Set(e.filter(a=>a.location===g).map(a=>{let b=aO(a.spec);if(b&&b.source===i.source)return a.spec;let c=RegExp(`^(?:${i.source})`,"u").exec(a.spec);return c?c[0]:null}).filter(a=>null!==a)),l=RegExp(`${g.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&")}[^。;;
100
+ |]{0,40}?(${i.source})`,"gu");for(let b of a.matchAll(l)){let f=b[1]||"";if(aF.test(b[0])||aG.test(b[0])||aH.test(b[0]))continue;let h=a.slice(Math.max(0,(b.index||0)-40),b.index||0);if(aH.test(h))continue;let j=a.slice((b.index||0)+b[0].length,(b.index||0)+b[0].length+10);if(/范围内|范围/u.test(j)||/(?:工作宽度|作业宽度|操作空间|工作面)/u.test(j)||/^、\s*\d/u.test(j)||/^\s*厚(?:\s*[\d::]|覆膜|木|胶合)/u.test(j)||RegExp(`^(?:或|[、,,/])\\s*(?:${i.source})`,"u").test(j))continue;let l=a.slice(Math.max(0,b.index||0),(b.index||0)+b[0].length);if(/(?:标高|高程|平整度|轴线|垂直度|高差)[^。;;\n|]{0,10}(?:偏差|误差|不超过|不得大于|不大于)/u.test(l.slice(-28)))continue;let m=b[0].indexOf(f);if(m>g.length&&/(?:涵头|面层|基层|垫层|管基|基础|梁|板|柱|墙|地坪|路面)/u.test(b[0].slice(g.length,m)))continue;let n=b.index||0,o=d.find(b=>b.length>g.length&&b.endsWith(g)&&a.slice(n+g.length-b.length,n+g.length)===b);if(o&&new Set(e.filter(a=>a.location===o&&aO(a.spec)?.source===i.source).map(a=>a.spec)).has(f)||k.has(f))continue;let p=1===k.size?[...k][0]:void 0,q=n+m;if(c.push({issue:{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`规格错位:“${g}”使用的规格 ${f} 与工程量清单权威(${[...k].join("/")})不一致`,suggestion:`按工程量清单将“${g}”的规格统一为 ${[...k].join("/")};同一材料不同部位允许不同规格,但同一部位不得混用其他部位的规格。`},location:g,replacement:p?{start:q,end:q+f.length,replacement:p,detail:`规格错位“${g}” ${f}→${p}(以工程量清单锁定口径为准)`}:void 0}),c.length>=8)return c}}}return c.slice(0,8)}function aQ(a,b){return aP(a,b).map(a=>a.issue)}let aR=/桩基|灌注桩|钻孔桩|打桩|成桩|桩机/u;function aS(a){let b=function(a){let b=[];for(let c of[...a.matchAll(/^#{3,4}\s+[^\n]*(?:地基与基础)[^\n]*$/gmu)]){let d=(c.index||0)+c[0].length,e=a.slice(d).search(/^#{2,4}\s+/mu),f=a.slice(d,e>=0?d+e:a.length);b.push(f)}return b}(a);if(0===b.length||b.some(a=>aR.test(a)))return[];let c=[];for(let b of a.split(/\r?\n/u)){let a=b.trim();!(!a||/^#{1,6}\s/u.test(a))&&aR.test(b)&&c.push(a.slice(0,48))}let d=[...new Set(c)].slice(0,5);return d.length<2?[]:[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`桩基表述残留:地基与基础章节施工流程为筏板/独立基础(无桩基工序),但全文另有 ${d.length} 处桩基表述:${d.join("、")}`,suggestion:"本项目基础形式不含桩基:删除全文所有桩基/桩机表述,进度计划表关键线路工序、质量验收划分表、隐蔽验收表均改为本项目实际基础工序(垫层/底板钢筋/混凝土)。"}]}let aT=/^\s*\|\s*计划工期\s*\|([^|\n]*)\|/u,aU=/工期延误|延误|违约|切除|赔偿|罚款|解除|扣减/u;function aV(a){let b=[];for(let c of a.split(/\r?\n/u)){let a=aT.exec(c);if(!a)continue;let d=(a[1]??"").trim();d&&aU.test(d)&&b.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`基本信息表「计划工期」字段错填违约条款文字:“${d.slice(0,40)}”`,suggestion:"「计划工期」字段应填日历天数值(与招标文件前附表一致);工期延误违约条款文字应放在工期风险管控章节,不得占用基本信息表字段。"})}return b.slice(0,2)}let aW=/基础|支护|围护|桩|结构|开挖|放坡|喷锚|排桩|连续墙|土钉|锚杆|标高|深度|形式|体系/u;function aX(a){let b=a.replace(/\s+/gu,""),c=new Set;for(let a of b.matchAll(/([一-龥]{2,8})\/([一-龥]{2,8})/gu)){let d=aW.test(a[1])||aW.test(a[2]),e=(0,j.m4)(a[1],a[2]);if(!d&&!e)continue;let f=Math.max(0,(a.index||0)-12),g=Math.min(b.length,(a.index||0)+a[0].length+12),h=b.slice(f,g);!/管线|管道|电缆|给水|排水/u.test(h)&&(!/采用|形式|方式|方案|选用|拟用|拟采用|为/u.test(h)&&(!e||/不得|禁止|不应|不宜|避免|严禁|无需/u.test(h))||c.add(`“${a[1]}/${a[2]}”`))}for(let a of b.matchAll(/[((]\s*或[^))]{1,48}[))]/gu)){let d=a[0].slice(1,-1);if(!/按图纸|按实|按图|待定|另行|视[^,。;]{0,8}而定|根据实际/u.test(d))continue;let e=Math.max(0,(a.index||0)-20),f=b.slice(e,(a.index||0)+a[0].length);aW.test(f)&&c.add(a[0].slice(0,30))}for(let a of b.matchAll(/([一-龥]{2,8})或([一-龥]{2,8})/gu)){let d=aW.test(a[1])||aW.test(a[2]),e=(0,j.m4)(a[1],a[2]);if(!d&&!e)continue;let f=Math.max(0,(a.index||0)-12),g=b.slice(f,(a.index||0)+a[1].length);if(/管线|管道|电缆|给水|排水/u.test(g)||!/按|采用|选用|拟用|拟采用|方案|为/u.test(g)&&(!e||/不得|禁止|不应|不宜|避免|严禁|无需/u.test(g)))continue;let h=b.slice(Math.max(0,(a.index||0)-6),a.index||0);if(/临时/u.test(h+a[0])&&/支护|围护|放坡|坡率|开挖/u.test(a[0])||/围挡|警示|防护栏|爬梯|栈桥|便道/u.test(a[0]))continue;let i=a[1].replace(/^.*?(地下连续墙|钢板桩|灌注桩|支护桩|土钉墙|基础|支护|围护|结构|开挖|放坡|喷锚|排桩|连续墙|土钉|锚杆|形式|体系)/u,"$1");c.add(`${i}或${a[2]}`)}return 0===c.size?[]:[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`关键设计决策两可表述:${[...c].join("、")} 以并列/悬置形态表述,基础形式、支护形式等关键决策必须在正文中唯一确定`,suggestion:"以设计图纸/勘察报告/工程量清单为准锁定唯一决策并删除两可表述:明确写出本项目基础形式与支护形式的具体做法(如「基础形式为筏板基础」「基坑支护采用放坡+喷锚」),禁止「或…按图纸实施」类悬置话术。"}]}function aY(a){let b=a.replace(/\s+/gu,"");if((b.match(/基坑|开挖|支护/gu)||[]).length<3)return[];for(let a of b.matchAll(/(?:深度|标高)[^。;,,]{0,12}-?\d+(?:\.\d+)?[^。;,,]{0,6}/gu)){let b=a[0];if(!/(?:超过|大于|小于|不[大低小]于|不低于|低于|高于|按|倍|依据|详见|参考|示意|每|以上|以下|偏差|±0|0\.000)/u.test(b)&&!/\d+(?:\.\d+)?\s*(?:h|小时|天|日|min|周|月|昼夜)/u.test(b))return[]}return[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:"基坑深度数值未锁定:正文已有基坑支护/开挖成稿内容,但全文未出现「深度/标高+数值」的确定性表述(比较式阈值如「超过3m」不视为锁定),危大工程分级判定失去依据",suggestion:"从绑定资料(地质勘察报告/基坑支护设计图/基础平面图)锁定基坑开挖深度数值写入基坑支护小节;深度 ≥5m 的深基坑须同步标注危大工程分级与专家论证要求,禁止以「按图纸确定」回避深度数值。"}]}function aZ(a,b){let c=(0,i.z4)(b);if(void 0===c||c<3)return[];let d=[];return c>=3&&!/危大工程/u.test(a)&&d.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`危大工程判定缺失:资料基坑开挖深度 ${c}m(≥3m),正文必须出现危大工程判定标注`,suggestion:`依据住建部令第37号,开挖深度≥3m 属危大工程:在基坑支护/危大工程清单小节写明本工程实际深度 ${c}m 与危大工程判定结论,不得只写判定规则不落地本项目。`}),c>=5&&!/超过一定规模/u.test(a)&&d.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`超危大工程判定缺失:资料基坑开挖深度 ${c}m(≥5m),正文必须出现「超过一定规模」判定与专家论证要求`,suggestion:`开挖深度≥5m 属超过一定规模的危大工程:写明本工程深度 ${c}m 对应分级结论,专项施工方案必须经专家论证,不得只写判定规则不落地分级。`}),d}function a$(a,b){let c=[b.canonical?.byKey.foundation_support_form?.value,...(b.drawings||[]).map(a=>`${a.fieldName||a.key||""} ${(0,e.lG)(a.value)}`),...(b.project||[]).map(a=>`${a.fieldName||a.key||""} ${(0,e.lG)(a.value)}`),...(b.preciseFacts||[]).map(a=>`${a.fieldName||a.key||""} ${(0,e.lG)(a.value)}`)].filter(Boolean).filter(a=>/基坑支护形式|基坑支护方式|支护形式|支护方式|土钉|放坡|喷锚|护坡/u.test(a)&&!/监测|监测频次|闭环|基坑开挖深度/u.test(a));if(0===c.length)return[];let d=[];for(let a of c)for(let b of["土钉墙","放坡","喷锚","挂网喷浆","排桩","灌注桩","地下连续墙","内支撑","锚杆","锚索"])a.includes(b)&&d.push(b);let f=[],g=/不采用|未采用|不设置|未设置|不使用|不宜采用|不得采用|不再出现|不得出现|严禁出现|避免出现|已删除|取消/u,h=["支护桩","冠梁","钻孔灌注桩","灌注桩","地下连续墙","排桩","咬合桩","内支撑"].filter(b=>(b=>{let c=RegExp(b,"gu");for(let b of a.matchAll(c)){let c=a.lastIndexOf("\n",b.index)+1,d=a.indexOf("\n",b.index);-1===d&&(d=a.length);let e=a.slice(c,d).slice(Math.max(0,b.index-c-12),b.index-c);if(!g.test(e))return!0}return!1})(b)&&!d.includes(b));return h.length>0&&f.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`支护形式与资料矛盾:正文出现资料中不存在的支护体系词 ${h.join("、")}`,suggestion:`资料基坑支护形式为「${d.join("、")||c[0]?.slice(0,60)}」:删除编造的支护桩/冠梁/灌注桩类表述与对应参数(垂直度偏差/冠梁顶面标高等),按资料支护形式改写。`}),0===d.filter(b=>RegExp(b,"u").test(a)).length&&/基坑|支护/u.test(a)&&f.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`支护形式未落地:资料基坑支护形式「${d.join("、")||c[0]?.slice(0,60)}」未在正文中出现`,suggestion:`在基坑支护小节写明本工程实际支护形式(${d.join("、")})及对应工艺参数(土钉长度/间距/坡度等),不得以泛化表述回避。`}),f}let a_=["塔式起重机","施工升降机","施工电梯","汽车起重机","汽车吊","混凝土泵车","混凝土泵","挖掘机","装载机","推土机","压路机","平地机","空压机","注浆机","锚杆钻机","混凝土喷射机","喷射机","吊篮","钢筋加工设备","塔吊"],a0=/挖掘机|空压机|注浆机|锚杆钻机|混凝土喷射机|喷射机|推土机/u;function a1(a,b){let c=function(a){let b=[];for(let c of a.matchAll(/第(\d{2,3})日[^。;;\n|]{0,8}?(?:进场|投入使用|安装|调试)/gu)){let d=a.slice(Math.max(0,(c.index||0)-24),c.index||0),e=a_.find(a=>d.includes(a));e&&b.push({equipment:e,day:Number(c[1]),raw:`${d.slice(-18)}${c[0].slice(0,20)}`})}let c=new Set;return b.filter(a=>{let b=`${a.equipment}:${a.raw}`;return!c.has(b)&&(c.add(b),!0)})}(a);if(0===c.length)return[];let d=[],f=function(a,b){for(let c of[a,...(b.schedule||[]).map(a=>`${a.key||""}${(0,e.lG)(a.value)}`)]){let a=/(?:计划工期|合同工期|总工期|工期总日历天数)[^\d。;;\n|]{0,12}(\d{1,4})\s*个?\s*日历天/u.exec(c);if(a){let b=Number(a[1]);if(Number.isFinite(b)&&b>=30&&b<=3e3)return b}}}(a,b);if(void 0!==f){let a=c.filter(a=>a.day>=f);a.length>0&&d.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`设备进场时间荒谬:${a.slice(0,3).map(a=>`「${a.equipment} 第${a.day}日进场」`).join("、")} 已达/超过总工期(${f}日历天),工程结束时设备尚未进场`,suggestion:`以总进度计划为准核对设备进场计划:大型施工设备必须在总工期结束前进场并完成使用,${a.map(a=>a.equipment).join("、")} 的进场日应提前至工程开始阶段,删除矛盾的尾期进场表述。`})}let g=ax(a).filter(a=>"excavation"===a.key).map(a=>a.day);if(g.length>0){let a=Math.min(...g),b=c.filter(b=>a0.test(b.equipment)&&b.day>a);b.length>0&&d.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`设备进场工序倒挂:${b.slice(0,3).map(a=>`「${a.equipment} 第${a.day}日进场」`).join("、")} 晚于基坑支护及土方外运完成节点(第${a}日),基坑阶段设备未在工序开始前进场`,suggestion:`基坑阶段专用设备必须在基坑开挖/支护开始前完成进场与报验:将 ${b.map(a=>a.equipment).join("、")} 的进场日调整为早于基坑支护完成节点(第${a}日)的日期,删除工序倒挂表述。`})}return d.slice(0,3)}let a2=/[\u4e00-\u9fa5]{2,10}(?:杯|奖)(?![励金惩罚项])/gu,a3=/优质工程|文明工地|样板|标准化|观摩|示范|精品工程|结构优质|省优|市优/u;function a4(a){let b=a;for(;;){let a=b.replace(/^(?:争创|争取|力争|争获|确保|获得|创建|力创|评为|荣获|标为|目标为|承诺|为)/u,"");if(a===b||!a)break;b=a}return b}let a5=/^\s*\|[\s:|-]+\|/u;function a6(a){let b=a.split(/\r?\n/u),c=[],d=a=>a.trim().replace(/^\|/u,"").replace(/\|$/u,"").split("|").map(a=>a.trim()),e=a=>a5.test(a),f=0;for(;f<b.length;){let a;if(!/^\s*\|/u.test(b[f])){f+=1;continue}let g=f;for(;g<b.length&&/^\s*\|/u.test(b[g]);)g+=1;let h=b.slice(f,g),i=0,j=0,k=0,l=b=>{if(!a)return;let e=h.slice(j,b);0!==e.length&&c.push({startLine:f+i,endLine:f+b-1,header:a,firstCol:e.map(a=>d(a)[0]?.replace(/[*_`]/gu,"").trim()||"").filter(Boolean),dataRows:e.map(a=>d(a).map(a=>a.replace(/[*_`]/gu,"").trim())),dataCells:e.flatMap(a=>d(a).map(a=>a.replace(/[*_`]/gu,"").trim())).filter(Boolean),bodyChars:e.join("").length,raw:h.slice(i,b)})};for(;k<h.length;){if(k+1<h.length&&e(h[k+1]||"")){l(k),a=d(h[k]).map(a=>a.replace(/[*_`]/gu,"").trim()),i=k,j=k+2,k+=2;continue}if(a&&k>j){let b=d(h[k]).map(a=>a.replace(/[*_`]/gu,"").trim()).filter(Boolean);if(a7(b,a)>=.6&&k+1<h.length&&!e(h[k+1]||"")){l(k),a=b,i=k,j=k+1,k+=1;continue}}k+=1}l(h.length),f=g}return c}function a7(a,b){if(0===a.length||0===b.length)return 0;let c=new Set(a),d=new Set(b);return[...c].filter(a=>d.has(a)).length/new Set([...c,...d]).size}function a8(a,b){if(0===a.length)return 0;let c=[...b],d=0;for(let b of a){let a=c.indexOf(b);a>=0&&(c.splice(a,1),d+=1)}return d/a.length}let a9=/^[\d,,.]+\s*(?:人|个|台|具|套|处|支|辆|班|组|项)?$/u,ba=a=>a.filter(a=>!a9.test(a));function bb(a){let b=[];for(let c of a6(a)){let a=c.dataRows;if(a.length<4)continue;let d=a=>(a[0]||"").trim(),e=(a,b)=>a7(a,b);for(let f=Math.floor(a.length/2);f<=Math.ceil(a.length/2);f+=1){let g=a.slice(0,f),h=a.slice(f);if(g.length<2||h.length<2)continue;let i=0,j=-1;for(let a of h){let b=d(a);if(b){for(let c=j+1;c<g.length;c+=1)if(d(g[c])===b&&e(a,g[c])>=.5){i+=1,j=c;break}}}let k=i/h.length;if(!(k<.8)){b.push({level:"error",severity:"blocker",category:"style",owner:"llm",repairability:"local_deterministic",message:`表格内部数据行重复:第 ${c.startLine+1}~${c.endLine+1} 行表格(表头:${c.header.slice(0,3).join("|")})数据行两遍粘贴(${f} 行 + ${h.length} 行,重复匹配率 ${Math.round(100*k)}%)`,suggestion:`删除第二遍重复数据行(保留第一遍 ${f} 行),删除后表格仅保留一份完整数据。`});break}}}return b}function bc(a){let b=[],c=a6(a);if(c.length<2)return b;for(let a=0;a<c.length;a+=1)for(let d=a+1;d<c.length;d+=1){let e=c[a],f=c[d],g=e.header.length>0&&e.header.length===f.header.length&&e.header.every((a,b)=>a===f.header[b]),h=a7(e.header,f.header),i=a7(e.firstCol,f.firstCol),j=a7(e.dataCells,f.dataCells),k=Math.max(a8(ba(e.dataCells),ba(f.dataCells)),a8(ba(f.dataCells),ba(e.dataCells)));(g&&j>=.6||h>=.7&&i>=.6||i>=.6&&k>=.6)&&b.push({level:"error",severity:"blocker",category:"style",owner:"llm",repairability:"llm_repairable",message:`表格重复:第 ${e.startLine+1}~${e.endLine+1} 行表格(表头:${e.header.slice(0,3).join("|")})与第 ${f.startLine+1}~${f.endLine+1} 行表格高度重复(表头重合 ${Math.round(100*h)}%、数据重合 ${Math.round(100*j)}%、首列重合 ${Math.round(100*i)}%)`,suggestion:"同一文档内同主题表格只保留信息最全的一张:删除重复表格(保留字段与数据行更多的那张),删除后核对章节表格计划仍被覆盖。"})}return b.sort((a,b)=>{let c=a=>Number(a.match(/数据重合\s*(\d+)%/u)?.[1]??0);return c(b.message)-c(a.message)}).slice(0,5)}function bd(a){let b=a.replace(/\s+/gu,"");return b.length>=40?b:void 0}let be=15;function bf(a){let b=function(a){let b=[];for(let c of a.split(/\n\s*\n/u)){let a=c.trim();if(!a)continue;let d=a.split(/\n/u).filter(a=>{let b=a.trim();return b&&!/^#{1,6}\s/u.test(b)&&!b.startsWith("|")}).join("\n"),e=[];for(let a of d.split(/[。!?!?]/u)){let b=a.trim().replace(/\s+/gu,"");if(b.length<be)continue;let c=e.findIndex(a=>a.sentence===b||a.sentence.length>b.length&&a.sentence.length-b.length<=be&&a.sentence.endsWith(b));c>=0?e[c].count+=1:e.push({sentence:b,count:1})}for(let a of e)a.count>=2&&b.push({sentence:a.sentence,count:a.count})}return b}(a);return 0===b.length?[]:b.slice(0,3).map(({sentence:a,count:b})=>({level:"error",severity:"blocker",category:"style",owner:"llm",repairability:"local_deterministic",message:`段落内句子复读 ${b} 次:“${a.slice(0,30)}…”`,suggestion:"同一段落内相同句子只保留首次出现,删除段尾复读的重复句(确定性修复器已接入自动剥离)。"}))}let bg=/^(.+?)(?:((?:\d+|[一二三四五六七八九十]+)))+$/u;function bh(a){let b=[];for(let c of a.matchAll(/^###\s+(.+)$/gmu)){let d=c[1].trim();bg.test(d)&&b.push({raw:d,index:a.lastIndexOf("\n",c.index??0)+1})}return b}function bi(a){let b=bh(a);return 0===b.length?[]:b.slice(0,3).map(({raw:a})=>({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"local_deterministic",message:`目录小节标题含防撞名编号后缀:“${a}”`,suggestion:"正式投标文件目录不允许「(1)(2)」编号后缀小节:确定性修复器已接入(按主题域重命名为语义化标题或合并同基线拆半小节)。"}))}let bj=/第(\d{1,3})日(?:至|到|~|~|—|-)第(\d{1,3})日/gu;function bk(a){let b=[];for(let c of a.matchAll(bj))Number(c[1])<=Number(c[2])||b.push({start:c.index??0,end:(c.index??0)+c[0].length,raw:c[0]});return b}function bl(a){let b=bk(a);return 0===b.length?[]:b.slice(0,3).map(({raw:a})=>({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`时间区间倒挂:“${a}”起点大于终点,属时间拼接病句`,suggestion:"删除倒挂区间起点,仅保留终点日期表述(确定性修复器已接入自动剥离)。"}))}function bm(a){let b=[],c=a.split(/\r?\n/u),d=new Map,e=[],f=()=>{let a=bd(e.join(""));if(a){let b=(d.get(a)||0)+1;d.set(a,b)}e=[]};for(let a of c){let b=a.trim();if(!b||/^#{1,6}\s/u.test(b)||/^\s*\|/u.test(b)){f();continue}if(/^[-*•]\s/u.test(b)){f(),e.push(b),f();continue}e.push(b)}for(let[a,c]of(f(),[...d.entries()].filter(([,a])=>a>=2).slice(0,3)))b.push({level:"error",severity:"blocker",category:"style",owner:"llm",repairability:"llm_repairable",message:`段落完全重复 ${c} 次:“${a.slice(0,40)}…”`,suggestion:"同一段落正文只保留首次出现处,删除其余重复段落;确需前后呼应时改写为差异化表述并压缩篇幅。"});return b}function bn(a,b,c){let d=new Set;for(let a of[...b.quality,...b.project,...b.schedule])for(let b of(0,e.lG)(a.value).matchAll(a2))d.add(a4(b[0]));if(c?.extracted)for(let a of[...c.awardObjectives||[],...c.specialQualityStandards||[],...c.awardClauses||[]])for(let b of(a.text||"").matchAll(a2))d.add(a4(b[0]));if(0===d.size)return[];let f=new Set;for(let b of a.matchAll(a2)){let a=a4(b[0]);!d.has(a)&&(a3.test(a)||f.add(a))}return 0===f.size?[]:[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`奖项表述与招标文件白名单不符:正文出现 ${[...f].join("、")},均未出现在招标文件评分项要求或绑定资料中`,suggestion:"创优目标必须以招标文件原文为准逐字落位(如「确保黄山杯」),禁止自行编造或替换为其他奖项名称;白名单外的奖项表述一律删除或替换为招标原文奖项。"}]}function bo(a){let b=a.split(/\r?\n/u),c=new Set;for(let a of b){let b=/^(#{2,4})\s+(.+)$/u.exec(a.trim());if(!b)continue;let d=b[2].trim();(0,h.Xp)(d)&&c.add(d)}if(0===c.size)return[];let d=[...c];return[{level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:`正文出现投标人资格内容小节:${d.slice(0,3).map(a=>`“${a}”`).join("、")}${d.length>3?" 等":""}(资格审查内容不属于施工组织设计,属资格文件/商务文件范畴)`,suggestion:"删除资格内容小节(标题与正文整体删除),不得以改写、合并、降级方式保留;正文如需提及安全生产许可证等证照,只能以施工管理口径表述(如“按规定持证上岗”),不得成节铺陈资格核验内容。"}]}let bp=/人[、,,]材[、,,]机/u,bq=/(?:确保\s*)?([人材机])(?:员|力|料|械|工)?\s*的保障体系与措施/u;function br(a){let b=a.match(bq)?.[1];return b||(/劳动力|人员|作业人员|劳务/u.test(a)?"人":/材料|物资|周转/u.test(a)?"材":/机械|设备|机具|塔吊|起重机/u.test(a)?"机":void 0)}function bs(a){let b=[],c=a.split(/\r?\n/u);for(let a=0;a<c.length;a+=1){let d,e=/^##\s+(.+)$/u.exec(c[a].trim());if(!e||!bp.test(e[1]))continue;let f=c.length;for(let b=a+1;b<c.length;b+=1)if(/^##\s+/u.test(c[b].trim())){f=b;break}let g=[];for(let e=a+1;e<f;e+=1){let a=/^###\s+(.+)$/u.exec(c[e].trim()),f=/^####\s+(.+)$/u.exec(c[e].trim());if(a){d={subject:br(a[1]),title:a[1].trim()},g.push(d);continue}if(f&&d?.subject){let a=br(f[1]);a&&a!==d.subject&&b.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:`人材机章层级错位:小节“${f[1].trim()}”挂在“${d.title}”之下(${"人"===a?"人":"材"===a?"材":"机"}的保障体系应独立成二级小节,不得并入${"人"===d.subject?"人":"材"===d.subject?"材":"机"}的保障体系)`,suggestion:`将“${f[1].trim()}”提升为独立二级小节,或将其内容合并到对应主题的二级小节。`})}}let h=new Set(g.map(a=>a.subject).filter(Boolean)),i=["人","材","机"].every(a=>h.has(a));(g.length<3||!i)&&b.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:`人材机章结构不完整:“${e[1].trim()}”仅 ${g.length} 个二级小节(人/材/机的保障体系未全部独立成节)`,suggestion:"拆分为“确保人的保障体系与措施”“确保材的保障体系与措施”“确保机的保障体系与措施”三个二级小节。"})}return b}function bt(a,b){let c=[],d=(a,b)=>1e-6>Math.abs(a-b);for(let e of b){let b=e.groups??[];if(b.length<2||new Set(b.map(a=>Math.round(100*a.value))).size<2)continue;let f=RegExp((0,i.Lp)(e.name),"gu"),g=RegExp(`(?<![\\dA-Za-z])(\\d(?:[\\d,]*(?:\\.\\d+)?))\\s*${(0,i.YZ)(e.unit)}(?![0-9a-zA-Z])`,"gui"),h=[];for(let c of a.matchAll(f)){let d=c.index??0,f=d+c[0].length,i=a.lastIndexOf("\n",d)+1,j=a.indexOf("\n",d);if(-1===j&&(j=a.length),/^\s*\|/u.test(a.slice(i,j)))continue;let k=Math.max(i,d-24),l=a.slice(k,d),m=Math.max(l.lastIndexOf("。"),l.lastIndexOf(";"),l.lastIndexOf(";")),n=m>=0?l.slice(m+1):l,o=b.filter(a=>a.group&&n.includes(a.group));if(1!==o.length)continue;let p=o[0],q=a.slice(f,f+24),r=Math.min(...[q.search(/[、。;,]/u),q.search(/\n/u)].filter(a=>a>=0).concat([q.length])),s=q.slice(0,r),t=null;for(let a of s.matchAll(g)){if(/(?:间距|不大于|不小于|≥|≤|宽度|厚度|高度|深度|坡度)[^0-9]*$/u.test(s.slice(0,a.index??0)))continue;let b=a[1],c=Number(b.replace(/,/gu,""));Number.isFinite(c)&&!(c<=0)&&(null===t||Math.abs(c-e.value)<Math.abs(t.value-e.value))&&(t={offset:f+(a.index??0)+a[0].indexOf(b),value:c,raw:b})}if(!t)continue;let u=a.slice(f,t.offset);(!/[A-Za-z]/u.test(u)||/[\u4e00-\u9fa5]/u.test(u))&&h.push({group:p.group,value:t.value,excerpt:a.slice(d,t.offset+t.raw.length)})}if(0===h.length)continue;let j=!1;for(let a of h){let f=b.find(b=>b.group===a.group);if(!f||d(f.value,a.value))continue;let g=b.find(b=>b.group!==a.group&&d(b.value,a.value));if(g){c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`跨工程同值复制:“${a.excerpt.slice(0,40)}”在“${a.group}”语境处取值 ${a.value}${e.unit},该值是“${g.group}”的清单明细值(${a.group} 的清单明细值为 ${f.value}${e.unit})`,suggestion:`以工程量清单分工程明细为准修正“${a.group}”语境:应为 ${f.value}${e.unit},不得沿用“${g.group}”的明细值 ${a.value}${e.unit};修复后全文该条目分工程取值必须与清单明细逐一对应。`}),j=!0;break}}if(j)continue;let k=new Map;for(let a of h){let b=a.value.toFixed(2),c=k.get(b)??new Set;c.add(a.group),k.set(b,c)}for(let[a,d]of k){if(d.size<2)continue;let f=b.filter(a=>d.has(a.group));if(new Set(f.map(a=>Math.round(100*a.value))).size<2)continue;let g=h.find(b=>b.value.toFixed(2)===a);c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`跨工程同值复制:“${g.excerpt.slice(0,40)}”数值 ${a}${e.unit} 同时出现在“${[...d].join("”“")}”等 ${d.size} 个工程对象语境,而清单明细值互不相同(${f.map(a=>`${a.group} ${a.value}${e.unit}`).join("、")})——至少一处属跨工程同值复制`,suggestion:`逐工程对象按清单明细值修正取值(${f.map(a=>`${a.group} ${a.value}${e.unit}`).join("、")}),不得多工程共用同一数值。`});break}}return c.slice(0,8)}function bu(a){let{phrase:b,first:c,second:d}=a,e=(0,k.Qk)(b,c.phase),f=(0,k.Qk)(b,d.phase);if(e.length<4||f.length<4)return null;let g=e.start<=f.start?c:d,h=g===c?d:c;return{leading:g,trailing:h}}function bv(a,b){let c=[],d=[];if(0===b.length)return{claims:c,ambiguities:d};let e=new Set,f=(f,g,h,i)=>{if(e.has(f))return;let j=Number(g.replace(/[,,]/gu,""));if(!Number.isFinite(j)||j<=0)return;let l=a.lastIndexOf("\n",f)+1,m=a.indexOf("\n",f);-1===m&&(m=a.length);let n=a.slice(l,m);if(/^\s*\|.*\|\s*$/u.test(n)||aE.test(n))return;let o=a.slice(Math.max(l,f-12),f);if(/不少于|不低于|至少|最低|不小于|≥/u.test(o)||/(?:[\u4e00-\u9fa5]{1,3}(?:工|员|长)|司机|班组|队伍?)\s*$/u.test(o))return;let p=function(a,b){let c=(a.match(/[\p{Script=Han}]/gu)||[]).length;if(0===c)return null;let d=null,e={length:0,start:0,end:0};for(let c of b){let b=(0,k.Qk)(a,c.phase);b.length>=4&&(null===d||b.length>e.length)&&(d=c,e=b)}if(!d)return null;if(e.length>=c)return{best:d};for(let c of[a.slice(0,e.start),a.slice(e.end)])if(!((c.match(/[\p{Script=Han}]/gu)||[]).length<2)){for(let a of b)if(a.phase!==d.phase&&(0,k.Qk)(c,a.phase).length>=4)return{best:d,second:a}}return{best:d}}(h,b);if(!p)return;let q=a.slice(Math.max(l,f-24),Math.min(a.length,f+g.length+1)).trim();if(p.second){e.add(f),d.push({start:f,raw:g,actual:j,phrase:h,first:{phase:p.best.phase,value:p.best.value,trace:p.best.trace},second:{phase:p.second.phase,value:p.second.value,trace:p.second.trace},excerpt:q});return}j!==p.best.value&&(e.add(f),c.push({start:f,end:f+g.length,raw:g,actual:j,expected:p.best.value,phase:p.best.phase,trace:p.best.trace,channel:i,excerpt:q}))};for(let b of a.matchAll(s)){let c=(b.index??0)+b[0].indexOf(b[1]),d=a.lastIndexOf("\n",c)+1,e=v(a,d,c);e&&f(c,b[1],e.replace(/阶段$/u,""),"base")}for(let b of a.matchAll(u)){if(!b[1]||!b[2])continue;let c=b[2],d=(b.index??0)+b[0].lastIndexOf(c);if(e.has(d))continue;let g=Math.max(a.lastIndexOf("。",d),a.lastIndexOf(";",d),a.lastIndexOf(";",d))+1,h=a.length;for(let b of["。",";",";"]){let c=a.indexOf(b,d);-1!==c&&c<h&&(h=c)}/阶段/u.test(a.slice(g,h))&&f(d,c,b[1].trim(),"enumeration")}return{claims:c,ambiguities:d}}function bw(a,b){let{claims:c,ambiguities:d}=bv(a,b),e=[];for(let a of c)e.push({position:a.start,issue:{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`阶段劳动力数据矛盾:正文“${a.excerpt.slice(0,60)}”取值 ${a.actual} 人,与蓝图分阶段劳动力推导不符(“${a.phase}”阶段应为 ${a.expected} 人)`,suggestion:`分阶段劳动力人数必须以蓝图推导为准:将“${a.phase}”阶段人数统一为 ${a.expected} 人${a.trace?`(依据:${a.trace})`:""},删除其他口径数字。`}});for(let a of d)e.push({position:a.start,issue:{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`阶段名疑似拼接:正文“${a.excerpt.slice(0,60)}”中的阶段名“${a.phrase}”同时混含“${a.first.phase}”与“${a.second.phase}”两个蓝图阶段,人数 ${a.actual} 人无法归属`,suggestion:`将阶段名拆分表述:“${a.first.phase}”按 ${a.first.value} 人、“${a.second.phase}”按 ${a.second.value} 人(蓝图推导)分句列出,不得把两个阶段名连写成单一阶段。`}});return e.sort((a,b)=>a.position-b.position).slice(0,8).map(a=>a.issue)}function bx(a,b){let c=[];if(0===b.length)return c;let d=/首批|第一批|首期|第一期/gu,e=/剩余|补充|追加/gu,f=/保持|维持|确保|不少于|不低于|控制在|以内|以下/u;for(let g of b){if(!g.name||!Number.isFinite(g.count)||g.count<=0)continue;let b=(0,i.Lp)(g.name),h=RegExp(`${b}[^\\n。;;、,,]{0,4}?([\\d,]+)\\s*(?:台|辆)`,"gu"),j=new Set,k=new Set,l="";for(let b of a.matchAll(/[^。;;\n]+/gu)){let c=b[0],g=b.index??0,i=[...c.matchAll(d)].map(a=>a.index??0),m=[...c.matchAll(e)].map(a=>a.index??0);if(0!==i.length||0!==m.length)for(let b of c.matchAll(h)){if(!b[1])continue;let c=Number(b[1].replace(/[,,]/gu,""));if(!Number.isFinite(c)||c<=0)continue;let d=b.index??0,e=g+d,h=a.lastIndexOf("\n",e)+1,n=a.indexOf("\n",e);-1===n&&(n=a.length);let o=a.slice(h,n);if(/^\s*\|.*\|\s*$/u.test(o)||aE.test(o))continue;let p=b[0];if(f.test(p)||/以内|以下|上限/u.test(a.slice(e+p.length,e+p.length+4)))continue;let q=i.filter(a=>a<d&&d-a<=40).pop(),r=m.filter(a=>a<d&&d-a<=40).pop();(void 0!==q||void 0!==r)&&(void 0!==r&&(void 0===q||r>q)?k.add(c):j.add(c),l||(l=a.slice(Math.max(h,e-20),Math.min(n,e+p.length)).trim()))}}if(0===j.size||0===k.size)continue;let m=[...j],n=[...k];if(!m.some(a=>n.some(b=>a+b===g.count))&&(c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`机械设备分批台数矛盾:“${g.name}”分批投入(首批 ${m.join("/")} 台+剩余 ${n.join("/")} 台)各批组合之和均不等于蓝图机械汇总 ${g.count} 台${l?`(原文“${l.slice(0,50)}”)`:""}`,suggestion:`分批投入的台数之和必须等于蓝图机械汇总台数:将“${g.name}”各批次调整为首批与剩余合计 ${g.count} 台,或删除分批描述仅保留“${g.name} ${g.count} 台”汇总口径。`}),c.length>=5))break}return c}function by(a,b){let c=[];if(!b||!Number.isFinite(b)||b<=0)return c;let d=/交底|考察|封样|编制|审批|报审|报批|培训|演练|签订|组建|建立|采购|调查|备案|申报|进场确认/u;for(let e of a.matchAll(/(?:开工令下发|开工令下达|下达开工令|开工|计划开工)[^。;;\n年月]{0,8}?(?:第\s*(\d+)\s*(?:个)?(?:日历)?日|(\d+)\s*(?:个)?(?:日历)?日)/gu)){let f=e[1]||e[2];if(!f||"内"===a.slice((e.index??0)+e[0].length,(e.index??0)+e[0].length+1))continue;let g=Number(f);if(!Number.isFinite(g)||g<=0||g<b)continue;let h=(e.index??0)+e[0].lastIndexOf(f),i=a.lastIndexOf("\n",h)+1,j=a.indexOf("\n",h);-1===j&&(j=a.length);let k=a.slice(i,j);if(/^\s*\|.*\|\s*$/u.test(k)||aE.test(k))continue;let l=a.slice(Math.max(i,h-40),Math.min(j,h+f.length+40));if(!d.test(l))continue;let m=a.slice(Math.max(i,h-30),Math.min(j,h+f.length+14)).trim();if(c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`前期动作时限矛盾:正文“${m}”将前期准备动作时限设在开工后第 ${g} 日,已达到/超过总工期 ${b} 日(竣工日)——前期动作不可能安排在项目末期`,suggestion:`前期准备动作时限必须落在施工准备阶段内:将第 ${g} 日改为与施工准备阶段相匹配的早期天数(早于总工期 ${b} 日),或删除具体天数改述为“开工令下发后在施工准备阶段内完成”。`}),c.length>=5)break}return c}function bz(a){let b=a.split(/\r?\n/u),c=[];b.forEach((a,b)=>{let d=/^(#{3,4})\s+([^\n]+)$/u.exec(a.trim());d&&c.push({index:b,level:d[1].length,title:d[2].trim()})});let d=[];for(let a=0;a<c.length;a+=1){let{index:e,level:f,title:g}=c[a],h=g.replace(/^[\d.]+[\s\u00a0]*/u,"");if(!/工程\s*$/u.test(h))continue;let i=h.replace(/\s*工程\s*$/u,"");if(!i||!/[、与及]/u.test(i))continue;let j=i.split(/[、与及]/u).map(a=>a.trim()).filter(a=>a.length>=2);if(j.length<2)continue;let k=b.length;for(let b=a+1;b<c.length;b+=1)if(c[b].level<=f){k=c[b].index;break}let l=b.slice(e+1,k).join("\n"),m=l.replace(/[、,,]/gu,""),n=j.filter(a=>{if(l.includes(a))return!1;let b=a.replace(/[、,,]/gu,"").replace(/(?:安装|施工|工程|作业)$/u,"");return b.length>=2&&!m.includes(b)});0!==n.length&&d.push({lineIndex:e,level:f,title:g,parts:j,uncovered:n})}return d}},36003:(a,b,c)=>{c.d(b,{AI:()=>S,Ym:()=>H,eL:()=>p.eL,hZ:()=>C,nl:()=>X,qX:()=>D,uQ:()=>T,w9:()=>z,xu:()=>p.xu});var d=c(76760),e=c(78217),f=c(70933),g=c(30836),h=c(40299),i=c(95734),j=c(22157),k=c(46482),l=c(71001),m=c(43378),n=c(40693);c(22496);var o=c(81010),p=c(22213),q=c(91943),r=c(18274),s=c(76193),t=c(21702),u=c(41991),v=c(1358),w=c(3063),x=c(54185),y=c(80572);function z(a,b,c){let d=[...a.errors.map(a=>({level:"error",message:a,suggestion:"请补充配置或资料后重新生成。"})),...a.warnings.map(a=>({level:"warning",message:a,suggestion:"建议人工确认或补充对应资料。"}))];return c.some(a=>/资料未提供|系统暂未从知识库确认/u.test(a.content))&&d.push({level:"warning",message:"存在系统暂未从知识库确认的章节内容",suggestion:"请检查项目角色配置、文件绑定顺序和事实抽取落位结果。"}),b.conflicts.length>0&&d.push(...b.conflicts.map(a=>({level:"warning",message:a,suggestion:"请根据当前模板绑定的角色、文件证据和用户要求复核取值口径。"}))),d}let A=/\b\d+(?:\.\d+)?\s*(?:日历天|小时|分钟|天|周|月|年|万元|元|台|套|个|项|批|次|份|人)(?=[。,,;;::、\s]|$)/gu;function B(a){let b=new Set;for(let c of a){let a=(0,j.lG)(c.content).replace(/\s+/gu," ");if((!/报价明细|投标报价|单价|合价|综合单价|预留金|税率|增值税|利润|结算/u.test(a)||/合同估算价|合同估算价格|投资估算|最高投标限价|招标控制价/u.test(a))&&!/OCR|识别错误|乱码|无法确认|疑似|不确定|语义断裂/u.test(a)){for(let c of a.matchAll(r._W))b.add(c[0].trim());for(let c of a.matchAll(A))b.add(c[0].trim());if(b.size>=40)break}}return[...b].slice(0,40)}function C(a){let b=a.spec?.chapterRules.find(b=>b.id===a.chapter.id||b.title===a.chapter.title),c=(b?.requiredFactIds||[]).map(b=>a.spec?.factFields.find(a=>a.id===b)?.name).filter(Boolean),d=[...new Set([...a.chapter.requiredFacts,...c,...a.plan?.requiredContents||[],...a.plan?.evidenceNeeds||[],...(a.resolvedFactNeeds||[]).filter(a=>a.need.required).map(a=>a.need.label)].filter(Boolean))],e=a.roleFacts.map(({fact:a})=>`- ${a.key}:${(0,f.eE)((0,j.lG)(a.value))}`),g=(a.resolvedFactNeeds||[]).flatMap(a=>a.facts),h=a.indexedFacts||[],i=g.length>0?[]:h.map(a=>`- ${a.key||a.fieldName||"资料事实"}:${(0,f.eE)((0,j.lG)(a.value))}${a.sourceFile?`(来源:${a.sourceFile.split("/").pop()})`:""}`),k=[...g,...h].filter(a=>/建设地点|建设规模|招标范围|计划工期|合同工期|周期要求|质量标准|合同估算|投资估算|最高投标限价|招标控制价/u.test(`${a.key||""}${a.fieldName||""}${a.fieldId||""}`)).filter((a,b,c)=>c.findIndex(b=>`${b.key||b.fieldName}:${(0,j.lG)(b.value)}`==`${a.key||a.fieldName}:${(0,j.lG)(a.value)}`)===b),l=[...new Set([...B(a.evidence),...g.map(a=>(0,j.lG)(a.value)).filter(a=>r.sv.test(a)),...h.map(a=>(0,j.lG)(a.value)).filter(a=>r.sv.test(a))])],m=new Set([...a.evidence.map(a=>a.filePath),...g.map(a=>a.sourceFile),...(a.indexedFacts||[]).map(a=>a.sourceFile)]).size,n=(a.resolvedFactNeeds||[]).filter(a=>"satisfied"!==a.status&&a.need.required).map(a=>a.need.label),o=function(a){if(!a)return[];let b=[];for(let[c,d]of Object.entries(a)){if(d.length<2)continue;let a=d.filter((a,b,c)=>c.findIndex(b=>b.location===a.location&&b.spec===a.spec)===b);a.length<2||b.push(`- ${c}:${a.slice(0,8).map(a=>`${a.location}:${a.spec}`).join("|")}`)}return b.slice(0,12)}(a.specAuthorityMap);return["【本章事实覆盖与参数落位要求】",d.length?`必须优先覆盖的事实/要求:
101
101
  ${d.map(a=>`- ${a}`).join("\n")}`:"",e.length?`角色节点已抽取事实:
102
102
  ${e.join("\n")}`:"",k.length?`项目基础事实卡片(资料已明确,必须优先使用,不得输出任何占位话术;其中工程地点、建设规模、计划工期等总述数据只在项目概况/工程概况类章节集中交代,其他章节仅可引用所需的具体数字,不得复述完整概况段):
103
103
  ${k.map(a=>`- ${a.key||a.fieldName}:${(0,f.eE)((0,j.lG)(a.value))}${a.sourceFile?`(来源:${a.sourceFile.split("/").pop()})`:""}`).join("\n")}
@@ -169,7 +169,7 @@ ${a.content}`).join("\n\n"),h=a.filter(a=>d.gG.test(`${a.title} ${(a.sections||[
169
169
  ${c}`:a;return!(0,e.Z1)(d)}),l=/\d+(?:\.\d+)?\s*(?:㎡|m²|m2|m3|m³|mm|cm|m|MPa|kPa|%|日历天|天|小时|层|台|套|个|次|kN|t|N|颗|樘|扇)/giu,m=/(?:间距|偏差|坡度|养护|搭接|试验压力|含水率|饱满度|压实度|厚度|饱满)[^\n]{0,10}\d/giu,n=f.filter(a=>(a.match(l)||[]).length+(a.match(m)||[]).length<d.Ck.minParamsPerPackage);h<d.Ck.blockerMinPackages?c.push({level:"error",severity:"blocker",message:`${a} 分部分项工程施工方案分项不足:当前 ${h} 个,要求不少于 ${d.Ck.blockerMinPackages} 个`,suggestion:"按资料识别的专业工程/分部分项工程逐项展开,每项覆盖作业对象与工程量、工序顺序、施工方法三方面要素(融入连贯叙述,不得以结构标签充当标题或段落开头引导)。"}):h<d.Ck.minPackages&&c.push({level:"warning",message:`${a} 分部分项工程施工方案建议扩充:当前 ${h} 个分项方案,建议不少于 ${d.Ck.minPackages} 个`,suggestion:"优先覆盖资料明确的专业工程范围(土方、基础、主体、装饰、安装、室外等)。"}),i.length>0&&c.push({level:"error",severity:"blocker",message:`${a} 分部分项工程施工方案存在 ${i.length} 个分项方案内容要素不全(作业对象与工程量/工序顺序/施工方法至少缺一)`,suggestion:"每个分项方案需覆盖作业对象与工程量、工序安排、施工方法三方面要素,融入连贯段落叙述(禁止以“施工概况/工艺流程/施工方法”等结构标签充当标题或段落开头引导)。"});let o=f.filter(a=>/按设计图纸执行|按设计文件执行|详见设计图纸|按.{0,10}设计总说明执行|详见图纸|以设计图纸为准|按设计确定/u.test(a));o.length>0&&c.push({level:"error",severity:"blocker",message:`${a} 分部分项工程施工方案存在 ${o.length} 个分项方案正文含“按设计图纸执行”式概括话术`,suggestion:"分项方案正文必须落到具体数值与参数:工程量、材料规格、设备型号等数量类数值优先取工程量清单数据,清单未覆盖的参数取图纸具体数值;禁止“按设计图纸执行/详见设计图纸/按设计文件确定”式留白。"}),j.length>0&&c.push({level:"error",severity:"blocker",message:`${a} 分部分项工程施工方案存在脏事实或空话污染`,suggestion:"清理“资料内容事实”、嵌入的 ### 标题、粗体伪标题、未尽事宜、“按规范施工/结合实际执行”式空话,只保留可交付正文。"}),k.length>0&&c.push({level:"error",severity:"blocker",message:`${a} 分部分项工程施工方案存在 ${k.length} 个分项方案施工方法缺少工序顺序表达`,suggestion:"每个分项方案的施工方法段/施工流程段必须有明确的工序顺序表达,形式按分项序号轮换使用(顺序词叙述、编号步骤、有序列表、箭头链,如“先进行基层清理,再放线定位,随后分层摊铺,然后碾压,最后做压实度检测并验收”),禁止相邻分项同一形式,保证工序先后顺序清晰。"}),n.length>0&&c.push({level:"error",severity:"blocker",message:`${a} 分部分项工程施工方案存在 ${n.length} 个分项方案工艺参数不足(少于 ${d.Ck.minParamsPerPackage} 个)`,suggestion:"每个分项方案必须落位至少 4 个具体工艺参数(mm、MPa、间距、偏差、坡度、养护天数、试验压力、搭接长度等),参数来自绑定材料或行业通用规范值,不得编造。"});let p=f.filter(a=>a.replace(/\s/gu,"").length<d.Ck.minPackageChars);p.length>0&&c.push({level:"error",severity:"blocker",message:`${a} 分部分项工程施工方案存在 ${p.length} 个分项方案正文过短(少于 ${d.Ck.minPackageChars} 字)`,suggestion:"每个分项方案都要写足作业对象与工程量、工序安排、施工方法三方面要素,门窗维修、立面修补等小分项同样需要展开,不得一句话带过。"});let q=f.map(a=>a.replace(/\s/gu,"").length);q.length>1&&Math.min(...q)>0&&Math.min(...q)<Math.max(...q)*d.Ck.balanceRatio&&c.push({level:"warning",message:`${a} 分部分项工程施工方案分项深度失衡:最短分项不足最长分项三分之一`,suggestion:"参照最长分项(如拆除、结构加固)的展开深度,为偏短分项补足机具、材料规格、工艺参数与验收标准。"})};if(0===h.length){let a=y(f);return a&&i("全文",a),c}for(let a of h){let b=y(/^##\s+/mu.test(a.content)?a.content:`## ${a.title}
170
170
  ${a.content}`);if(!b){c.push({level:"error",severity:"blocker",message:`${a.title} 分部分项工程施工方案小节缺失或标题结构异常`,suggestion:"主要施工方法章下必须逐项展开分项工程方案:既可用「### 主要分部分项工程施工方案」包装后在内部使用「#### 分项工程方案」,也可章下 H3 小节直接承载各分项方案。"});continue}i(a.title,b)}return c}let A=/^####\s+(?:\d+(?:\.\d+)*\s+)?(?:施工概况|施工流程|施工方法|工艺流程)(?:[::]|\s*$)/u;function B(a){let b=[];return a.scope||b.push("作业对象与工程量"),a.process||b.push("工序顺序"),a.method||b.push("施工方法"),b.join("、")}function C(a){let b=a.split(/\r?\n/u),c=[],e=(a,c)=>{for(let d=a;d<b.length;d+=1){let a=/^(#{1,6})\s+/u.exec(b[d].trim());if(a&&a[1].length<=c)return d}return b.length};for(let a=0;a<b.length;a+=1){let f=/^##\s+(.+)$/u.exec(b[a].trim());if(f){let g=f[1].trim();if(!d.Yp.test(g)&&!d.gG.test(g))continue;let h=e(a+1,2),i=b.slice(a+1,h),j=i.map((a,b)=>({line:a.trim(),offset:b})).filter(a=>/^###\s+/u.test(a.line));if(0===j.length){c.push({title:g,bodyLines:i});continue}for(let a=0;a<j.length;a+=1){let b=j[a].offset,d=a+1<j.length?j[a+1].offset:i.length;c.push({title:j[a].line.replace(/^###\s+/u,""),bodyLines:i.slice(b+1,d)})}continue}let g=/^###\s+(.+)$/u.exec(b[a].trim());if(g){let f=g[1].trim();if(!d.Yp.test(f)&&!d.gG.test(f))continue;let h=e(a+1,3);c.push({title:f,bodyLines:b.slice(a+1,h)})}}return c}function D(a){let b=[],c=(a,c,d)=>{let e=d.includes("作业对象")?"作业对象与工程量(本项目部位、规模/工程量、系统边界,工程量取工程量清单汇总值)":"",f=d.includes("工序")?"工序顺序(先后清晰,至少 1 处不少于 4 个环节的工序顺序表达)":"",g=d.includes("施工方法")?"施工方法(工具机具、工艺参数、验收闭环)":"";b.push({level:"error",severity:"blocker",message:c?`「${a}」${c}专业工程块缺少三要素:${d}`:`「${a}」小节缺少三要素:${d}`,suggestion:`请在「${c||a}」补写缺失要素:${[e,f,g].filter(Boolean).join(";")}。要素融入连贯段落叙述,禁止以“施工概况/施工流程/施工方法”等结构标签充当标题或段落开头引导。`})};for(let b of C(a)){let a=b.bodyLines.map((a,b)=>({line:a.trim(),offset:b})).filter(a=>/^####\s+/u.test(a.line));if(0===a.length||a.every(a=>A.test(a.line))){let a=B((0,e.se)(b.bodyLines.join("\n")));a&&c(b.title,"",a);continue}for(let d=0;d<a.length;d+=1){let f=a[d].offset,g=d+1<a.length?a[d+1].offset:b.bodyLines.length;if(A.test(a[d].line))continue;let h=a[d].line.replace(/^####\s+(?:\d+(?:\.\d+)*\s+)?/u,"").replace(/[::]\s*$/u,""),i=b.bodyLines.slice(f,g).join("\n"),j=B((0,e.se)(i));j&&c(b.title,h,j)}}return b}function E(a){let b=[];for(let c of C(a)){let a=c.bodyLines.join("\n");if(!a.trim())continue;let d=a.split(/\r?\n/u).filter(a=>/^\s*\|.+\|\s*$/u.test(a.trim())),e=a.split(/\r?\n/u).filter(a=>!/^\s*\|.+\|\s*$/u.test(a.trim())).join("").replace(/[\s#*_`>-]/gu,"").length;d.length>=3&&e<50&&b.push({level:"error",severity:"blocker",message:`「${c.title}」小节不应使用 Markdown 表格承载专业工程正文`,suggestion:"主要施工内容/主要施工方法应采用三级小节与段落式专业工程写法:每个专业工程一个 #### 小节,覆盖作业对象与工程量、工序顺序、施工方法三方面要素;表格数据改写成连贯叙述。"});let f=[...new Set((a.match(/[^\n]{0,18}(?:分部小计|本页小计|按实(?!际)|暂估|综合单价|规费|税金)[^\n]{0,18}/gu)||[]).map(a=>a.trim()))],g=[...new Set([...f,...new Set((a.match(/[^\n]{0,18}(?:措施项目费|措施项目[^\n]{0,8}(?:清单|计价|费率))[^\n]{0,18}/gu)||[]).map(a=>a.trim())),...new Set((a.match(/[^\n]{0,10}(?:合计|小计)[^\n]{0,16}(?:㎡|m²|m2|m³|m3|吨|t|项|处|座|樘)/gu)||[]).map(a=>a.trim()))])];g.length>0&&b.push({level:"error",severity:"blocker",message:`「${c.title}」小节正文含工程量清单内部口径词:${g.slice(0,6).join(";")}`,suggestion:"“分部小计/本页小计/合计/按实/暂估/综合单价/措施项目费/规费/税金”等清单计价表专用口径不得进入正式正文:工程量只写清单汇总的项目总量(数值与工程量清单一致),删除全部清单内部口径行。"})}return b}},43378:(a,b,c)=>{function d(a){return a.replace(/\s+/gu,"").toLowerCase()}function e(a){return[...new Set(a)]}function f(a,b){let c=a=>{let b=new Set;for(let c=0;c<a.length-1;c+=1)b.add(a.slice(c,c+2));return b},e=c(d(b)),f=[...c(d(a))];return 0===f.length?0:f.filter(a=>e.has(a)).length/f.length}function g(a){let b=new Map,c=(a,c)=>{let d=c.title.trim();if(!d)return;let e=b.get(a)||[];e.some(a=>a.title===d||a.title.includes(d)||d.includes(a.title))||(e.push({id:`planned-table-${a}-${e.length+1}`,title:d,chapterTitle:"",section:c.section||"",required:c.required,reason:c.reason,fields:c.fields.filter(Boolean).map(a=>({name:a})).slice(0,12)}),b.set(a,e))};for(let b of a.chapters)for(let d of a.plannedTables.get(b.id)||[])c(b.id,{title:d.title,fields:d.fields,required:!1,reason:"本章小节规划产出的表格需求(按章按节规划)。"});let g=[];for(let b of a.requiredTables||[]){let e,h=b.trim();if(!h)continue;let i=0;for(let b of a.chapters){let a=function(a,b){let c=d(a).replace(/表$/u,"");if(!c)return 0;let e=0;for(let a of[b.title,...b.sections||[]]){let b=d(a);if(b){if(b.includes(c)||c.includes(b)){e=Math.max(e,1);continue}e=Math.max(e,f(c,b))}}return e}(h,b);a>i&&(i=a,e=b)}if(!e||i<.3){g.push(h);continue}c(e.id,{title:h,fields:[],required:!0,reason:"用户提示词声明的必需表格。"})}return{chapters:a.chapters.map(a=>{let c=b.get(a.id);return c?.length?{...a,tableSections:e([...a.tableSections||[],...c.map(a=>a.title)]),tableRequirements:e([...a.tableRequirements||[],...c.filter(a=>a.required).map(a=>`${a.title}:用户提示词声明的必需表格,必须真实输出为 markdown 表格,表头与行数据必须与本章内容一致。`)]),tablePlans:c.map(b=>({...b,chapterTitle:a.title}))}:a}),unattachedRequiredTables:g}}function h(a,b){let c=a.tablePlans||[];return 0===c.length?[]:c.filter(c=>!b.some(b=>(function(a,b){let c=a.tablePlans||[];if(0===c.length)return[];let e=d(b||"");return e?c.filter(a=>{let b=d(a.section||"");if(b&&(e.includes(b)||b.includes(e)))return!0;let c=d(a.title);if(c&&(e.includes(c)||c.includes(e)))return!0;let g=c.replace(/表$/u,"");return!!(g&&(e.includes(g)||g.includes(e))||g&&f(e,g)>=.6)}):c})(a,b).some(a=>a.id===c.id)))}function i(a,b){let c=[];for(let d of a){let a=d.tablePlans||[];if(0===a.length)continue;let e=b.find(a=>a.title===d.title)||b.find(a=>d.title.includes(a.title)||a.title.includes(d.title));if(!e)continue;let f=function(a){let b=0;for(let c of a.split(/\r?\n/u))/^\s*\|?\s*:?-{3,}:?/u.test(c)&&c.includes("|")&&(b+=1);return b}(e.content);f>=.6*a.length||a.length-f<2||c.push({chapterTitle:d.title,planned:a.length,actual:f,plans:a})}return c}c.d(b,{T4:()=>k,Xi:()=>i,lR:()=>g,nn:()=>h});let j=["【表格排版硬约束】每个 markdown 表格必须独立成行:表头行必须以“|”开头单独占一行,下一行紧跟“|---|”分隔行,数据行逐行以“|”开头;严禁把表头接在正文段落同一行(如“正文……。| 表头1 | 表头2 |”),输出表格前必须先换行。","每个表格前必须写 1~2 句引导叙述(说明该表的作用、数据口径与关键结论),表格不能替代所在小节全部正文;表格输出后还应围绕表中关键节点、责任分工与纠偏措施展开至少一段实施性正文。","只输出表格/清单本体和用户提示词明确要求的文字;不得输出系统来源说明、后台溯源列、固定表前后说明或占位话术。","【字段填写约束】项目特有数字、日期、工程量、规格必须来自项目资料或项目图谱,不得编造;人数、台班、进度时间等计划类数值必须原样引用蓝图权威锚点(劳动力峰值、工种构成、分阶段投入、机械台数、总工期节点),不得基于工程量或定额自行推算另设,不得留空、不得写“按需配置”“根据进度灵活调配”等空话。"];function k(a){let b=a.tablePlans||[];return 0===b.length?"":["【本章表格/清单结构化生成要求(硬性验收项)】","以下表格来自用户提示词声明与本章小节规划,不得按数量机械增减;每个应输出的表格都必须真实输出为 markdown 表格;输出后按本清单逐表自检,缺失即视为正文不足。",...j,...b.map((a,b)=>[`${b+1}. ${a.required?"必写":"应写"}:${a.title}`,a.fields.length?` - 表头必须为:${a.fields.map(a=>a.name).join(" | ")}(不得擅自改字段、删字段或增加后台溯源列)`:"",a.section?` - 归属小节:${a.section}`:"",` - 来源:${a.reason}`].filter(Boolean).join("\n"))].filter(Boolean).join("\n")}},46482:(a,b,c)=>{c.d(b,{Zk:()=>y,Tz:()=>G,X6:()=>z,fC:()=>H,l8:()=>F,XG:()=>w,JP:()=>x});var d=c(73024),e=c(76760),f=c(98281);c(25840),c(23500);var g=c(70933),h=c(70208),i=c(40299),j=c(78217),k=c(23760),l=c(30355),m=c(64406),n=c(85016),o=c(22157),p=c(69527);let q=[...l.P9.filter(a=>!o.Kd.includes(a)),...n.D$.source.split("|")],r=["WRITER_MISSING_SECTION","Writer 未完成"],s=[/:\s*:/u,/;:/u,/。:/u,/。;/u,/;。/u,/。,/u,/,。/u,/。{2,}/u];var t=c(80572),u=c(95734);function v(a,b,c){if(!a)return;let d=a.llm.patchGuardStats??(a.llm.patchGuardStats={}),e=d[b]??(d[b]={hits:0,rejects:0,rollbacks:0});e[c]+=1,"hits"===c?a.llm.patchGuardHits=(a.llm.patchGuardHits??0)+1:a.llm.patchGuardRejects=(a.llm.patchGuardRejects??0)+1}function w(a,b){let c=process.env.DOCUMENT_QINGTIAN_PATCH_GUARD||"observe";if("0"!==c)return{observeOnly:"enforce"!==c,repairRound:a,diagnostics:b}}function x(a){let b=a.template.chapters.length,c=b>0?a.targetWords/b:a.targetWords,d=`${a.template.name}
171
171
  ${a.template.category||""}
172
- ${a.requirement||""}`,e=/专项|安全|质量|验收|审核|合同|合规|审计|风控|风险/u.test(d),f=a.targetWords>=4e4,g=(a.materialFileCount??0)<4&&(a.evidenceCount??0)<6,h=e||f||g,i=a.targetWords>=3e4||b>=8||c>=4e3,j=a.targetWords<=6e3&&b<=4&&!h,k="0"!==process.env.DOCUMENT_GLOBAL_CONSISTENCY_REVIEW&&(h||j||"1"===process.env.DOCUMENT_GLOBAL_CONSISTENCY_REVIEW);return{mode:h?"strict":i?"longform":j?"fast":"balanced",enableChapterReview:!0,enableGlobalReview:k,enableFinalQualityReview:!0,globalReviewSamplingRate:k&&j?.35:1}}function y(a){return{strategy:a,metrics:[],llm:{calls:0,failures:0,maxActive:0,retries:0,failureStreak:0,schemaFailures:0,promptCacheHitTokens:0,promptCacheMissTokens:0,inputTokens:0,outputTokens:0,inputChars:0,layerChars:{l0:0,l1:0,l2:0,l3:0}},semantic:{embedCacheHits:0,embedCacheMisses:0},evidence:{raw:0,used:0,filteredNoise:0,budgetDropped:0,avgNoiseScore:0,avgFactDensity:0,searchQueries:0,searchMs:0,contextChars:0,t0Chars:0,t1Chars:0,t2Lines:0,omittedChars:0},quality:{blockingCount:0,importantCount:0,minorCount:0,repairedCount:0}}}async function z(a,b,c,d){let e=Date.now();try{return await c()}finally{let c=Date.now();a.metrics.push({name:b,startedAt:e,endedAt:c,durationMs:c-e,meta:d})}}function A(a,b){let c=b.originalText?.trim();if(c&&a.includes(c)&&a.indexOf(c)===a.lastIndexOf(c))return c;if(c&&c.length>=8&&c.length<=500){let b=function(a,b){let c,d=b.split(/\s+/u).filter(a=>a.length>0);if(d.length<2)return;let e=RegExp(d.map(a=>a.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&")).join("\\s+"),"gu");for(let b of a.matchAll(e)){if(void 0!==c)return;c=b[0]}return c}(a,c);if(b)return b}let d=b.targetStart?.trim(),e=b.targetEnd?.trim();if(!d||!e)return;let f=a.indexOf(d);if(f<0)return;let g=a.indexOf(e,f+d.length);if(g<0)return;let h=g+e.length,i=a.slice(f,h);return a.indexOf(i)===a.lastIndexOf(i)?i:void 0}function B(a){return Math.max(2600,Math.min(16e3,Math.ceil(.45*(0,j.V7)(a))))}function C(a,b){let c=(a.match(/```/gu)||[]).length,d=b.replace(/^第[一二三四五六七八九十百千万]+章\s*/u,"").trim();return c%2==0&&(!d||a.includes(d))&&!/^\s*$/u.test(a)}function D(a){let b=[],c="";for(let d=0;d<a.length;d+=1){let e=a[d];/\s/u.test(e)||(c+=e,b.push(d))}return{compact:c,rawPositions:b}}function E(a,b,c){let d=a.lastIndexOf("\n",b-1)+1,e=a.indexOf("\n",c),f=e<0?a.length:e;if(/^\s*\|/.test(a.slice(d,f)))return{start:d,end:f};let g=d,h=a.slice(d,b),i=Math.max(h.lastIndexOf("。"),h.lastIndexOf(";"),h.lastIndexOf(";"));i>=0&&(g=d+i+1);let j=f,k=a.slice(c,f),l=[k.indexOf("。"),k.indexOf(";"),k.indexOf(";")].filter(a=>a>=0);return l.length>0&&(j=c+Math.min(...l)+1),{start:g,end:j}}async function F(a){(0,o.Te)(a.signal);let b=a.repairType||function(a){let b=a.join("\n");for(let a of f.NP)if(a.pattern.lastIndex=0,a.pattern.test(b))return a.type;return"generic"}(a.issues),c=a.contextChapters?.length?`
172
+ ${a.requirement||""}`,e=/专项|安全|质量|验收|审核|合同|合规|审计|风控|风险/u.test(d),f=a.targetWords>=4e4,g=(a.materialFileCount??0)<4&&(a.evidenceCount??0)<6,h=e||f||g,i=a.targetWords>=3e4||b>=8||c>=4e3,j=a.targetWords<=6e3&&b<=4&&!h,k="0"!==process.env.DOCUMENT_GLOBAL_CONSISTENCY_REVIEW&&(h||j||"1"===process.env.DOCUMENT_GLOBAL_CONSISTENCY_REVIEW);return{mode:h?"strict":i?"longform":j?"fast":"balanced",enableChapterReview:!0,enableGlobalReview:k,enableFinalQualityReview:!0,globalReviewSamplingRate:k&&j?.35:1}}function y(a){return{strategy:a,metrics:[],llm:{calls:0,failures:0,maxActive:0,retries:0,failureStreak:0,schemaFailures:0,promptCacheHitTokens:0,promptCacheMissTokens:0,inputTokens:0,outputTokens:0,inputChars:0,layerChars:{l0:0,l1:0,l2:0,l3:0}},semantic:{embedCacheHits:0,embedCacheMisses:0},evidence:{raw:0,used:0,filteredNoise:0,budgetDropped:0,avgNoiseScore:0,avgFactDensity:0,searchQueries:0,searchMs:0,contextChars:0,t0Chars:0,t1Chars:0,t2Lines:0,omittedChars:0},quality:{blockingCount:0,importantCount:0,minorCount:0,repairedCount:0}}}async function z(a,b,c,d){let e=Date.now();try{return await c()}finally{let c=Date.now();a.metrics.push({name:b,startedAt:e,endedAt:c,durationMs:c-e,meta:d})}}function A(a,b){let c=b.originalText?.trim();if(c&&a.includes(c)&&a.indexOf(c)===a.lastIndexOf(c))return c;if(c&&c.length>=8&&c.length<=500){let b=function(a,b){let c,d=b.split(/\s+/u).filter(a=>a.length>0);if(d.length<2)return;let e=RegExp(d.map(a=>a.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&")).join("\\s+"),"gu");for(let b of a.matchAll(e)){if(void 0!==c)return;c=b[0]}return c}(a,c);if(b)return b}let d=b.targetStart?.trim(),e=b.targetEnd?.trim();if(!d||!e)return;let f=a.indexOf(d);if(f<0)return;let g=a.indexOf(e,f+d.length);if(g<0)return;let h=g+e.length,i=a.slice(f,h);return a.indexOf(i)===a.lastIndexOf(i)?i:void 0}function B(a){return Math.max(2600,Math.min(16e3,Math.ceil(.45*(0,j.V7)(a))))}function C(a,b,c){let d=(a.match(/```/gu)||[]).length,e=b.replace(/^第[一二三四五六七八九十百千万]+章\s*/u,"").trim();if(c){let b=a=>(a.match(/^###\s+\S/gmu)||[]).length;if(b(a)<b(c))return!1}return d%2==0&&(!e||a.includes(e))&&!/^\s*$/u.test(a)}function D(a){let b=[],c="";for(let d=0;d<a.length;d+=1){let e=a[d];/\s/u.test(e)||(c+=e,b.push(d))}return{compact:c,rawPositions:b}}function E(a,b,c){let d=a.lastIndexOf("\n",b-1)+1,e=a.indexOf("\n",c),f=e<0?a.length:e;if(/^\s*\|/.test(a.slice(d,f)))return{start:d,end:f};let g=d,h=a.slice(d,b),i=Math.max(h.lastIndexOf("。"),h.lastIndexOf(";"),h.lastIndexOf(";"));i>=0&&(g=d+i+1);let j=f,k=a.slice(c,f),l=[k.indexOf("。"),k.indexOf(";"),k.indexOf(";")].filter(a=>a>=0);return l.length>0&&(j=c+Math.min(...l)+1),{start:g,end:j}}async function F(a){(0,o.Te)(a.signal);let b=a.repairType||function(a){let b=a.join("\n");for(let a of f.NP)if(a.pattern.lastIndex=0,a.pattern.test(b))return a.type;return"generic"}(a.issues),c=a.contextChapters?.length?`
173
173
 
174
174
  周边章节上下文(仅用于衔接,禁止改动其中内容):
175
175
  ${a.contextChapters.map(a=>`【${a.title}】
@@ -182,7 +182,7 @@ ${a.promptTexts}`:"",d?`系统提供的目标原文(改写对象,按序号
182
182
  ${e.map((a,b)=>h(a,b)).join("\n")}`:"",`需要局部修复的问题:
183
183
  ${a.issues.map(a=>`- ${a}`).join("\n")}`]),l2:(0,u.CX)([`模板:${a.template.name}`,`章节:${a.chapter.title}`,"当前章节 Markdown:",y,c]),l3:(0,u.CX)([b])}),K=w&&H?`本章证据摘要:
184
184
  ${(0,g.ks)(w,{maxChars:H,skipT2Catalog:!0,diagnostics:a.diagnostics})}`:"",L=await (0,u.bb)(x,z(K),{maxTokens:a.maxTokens??8e3,temperature:0,signal:a.signal,diagnostics:a.diagnostics,outFailure:I,contextLayers:J(K),prefixKey:`repair:${a.chapter.id}`});if(!L&&w&&(0,u.nz)(I.value)){let b=`本章证据摘要:
185
- ${(0,g.ks)(w,{maxChars:3e3,skipT2Catalog:!0,diagnostics:a.diagnostics})}`;L=await (0,u.bb)(x,z(b),{maxTokens:a.maxTokens??8e3,temperature:0,signal:a.signal,diagnostics:a.diagnostics,contextLayers:J(b),prefixKey:`repair:${a.chapter.id}`})}(0,o.Te)(a.signal);let M=a.chapter.content,N=0,O=Array.isArray(L?.patches)?L.patches:[];for(let b of O){if(a.patchGuard&&b.replacement?.trim()&&function(a){let b=[];i.kt.test(a)&&b.push("资料来源罗列句");let c=q.filter(b=>a.includes(b));for(let d of(c.length>0&&b.push(`内部术语“${c.join("”“")}”`),a.matchAll(m.eS)))b.push(`具体日历日期“${d[1]}年${d[2]}月${d[3]}日”`);let d=[...new Set(a.match(m.Ih)||[])];d.length>0&&b.push(`叠词“${d.join("”“")}”`);let e=r.filter(b=>a.includes(b));return e.length>0&&b.push(`未完成小节标记“${e.join("”“")}”`),(0,m.nm)(a).length>0&&b.push("元话语声明句"),(0,m.ON)(a).length>0&&b.push("公式形态残留"),(0,m.WY)(a).length>0&&b.push("装饰层工艺参数异常"),p.IA.filter(b=>b.test(a)).length>0&&b.push("占位符"),s.some(b=>b.test(a))&&b.push("截断句残留双冒号"),(0,k.vZ)(a).length>0&&b.push("句读标点叠用/括号不闭合"),b}(b.replacement).length>0){let b=a.patchGuard.diagnostics;if(a.patchGuard.observeOnly)v(b,a.patchGuard.repairRound??"unknown","hits");else{v(b,a.patchGuard.repairRound??"unknown","rejects");continue}}if(d&&void 0!==b.anchorIndex&&null!==b.anchorIndex){let c=Number(b.anchorIndex),d=Number.isInteger(c)?e[c]:void 0;if(d&&d.text){let c=void 0!==d.endText?function(a){let b=a.replacement?.trim(),c=Math.max(2600,Math.min(9e3,Math.ceil(.95*(0,j.V7)(a.content))));if(!b||b.length>c||a.forbidDrawingImages&&/!\[[^\]]*\]\([^)]*\)/iu.test(b))return{content:a.content,applied:!1};let d=a.startAnchor.replace(/\s+/gu,"");if(d.length<4||!b.replace(/\s+/gu,"").includes(d))return{content:a.content,applied:!1};let{compact:e,rawPositions:f}=D(a.content),g=e.indexOf(d);if(g<0)return{content:a.content,applied:!1};let h=f[g],k=a.content.length;if(a.endAnchor){let b=a.endAnchor.replace(/\s+/gu,"");if(b.length<4)return{content:a.content,applied:!1};let c=e.indexOf(b,g+d.length);if(c<0)return{content:a.content,applied:!1};k=f[c]}let l=a.content.slice(0,h)+b+a.content.slice(k);return!C(l,a.title)||(0,j.V7)(l)<Math.floor(.65*(0,j.V7)(a.content))?{content:a.content,applied:!1}:{content:(0,i.kT)((0,i.FD)(l,a.forbidDrawingImages)),applied:l!==a.content}}({content:M,startAnchor:d.text,endAnchor:d.endText,replacement:b.replacement,title:a.chapter.title,forbidDrawingImages:a.forbidDrawingImages}):function(a){let b,c=a.replacement?.trim()??"",d=a.anchor.replace(/\s+/gu,"");if(d.length<4)return{content:a.content,applied:!1};let e=a.content.replace(/\s+/gu,""),f=a.appendMode?Math.max(4e3,Math.min(24e3,Math.ceil(1.2*(0,j.V7)(a.content)))):B(a.content);if(0===c.length){if(!e.includes(d))return{content:a.content,applied:!1};let{compact:b,rawPositions:c}=D(a.content),f=[],g=0;for(;;){let a=b.indexOf(d,g);if(a<0)break;f.push(a),g=a+d.length}let h=f.map(b=>E(a.content,c[b],c[b+d.length-1]+1)),k=a.content;for(let a of h.reverse())k=k.slice(0,a.start)+k.slice(a.end);return!C(k,a.title)||(0,j.V7)(k)<Math.floor(.65*(0,j.V7)(a.content))?{content:a.content,applied:!1}:{content:(0,i.kT)(k),applied:k!==a.content}}let g=c;if(g.length>f||a.forbidDrawingImages&&/!\[[^\]]*\]\([^)]*\)/iu.test(g))return{content:a.content,applied:!1};if(a.appendMode&&!g.replace(/\s+/gu,"").startsWith(d)&&(g=`${a.anchor}${g}`),e.includes(d))b=function(a,b,c){let{compact:d,rawPositions:e}=D(a),f=[],g=0;for(;;){let a=d.indexOf(b,g);if(a<0)break;f.push({start:e[a],end:e[a+b.length-1]+1}),g=a+b.length}let h=a;for(let{start:a,end:b}of f.reverse())h=h.slice(0,a)+c+h.slice(b);return h}(a.content,d,g);else{let c=function(a,b,c){let{compact:d,rawPositions:e}=D(a);for(let c=b.length;c>=8;c-=4){let f=b.slice(0,c),g=d.indexOf(f);if(!(g<0)&&g===d.lastIndexOf(f))return E(a,e[g],e[g+c-1]+1)}}(a.content,d,0);if(!c)return{content:a.content,applied:!1};b=a.content.slice(0,c.start)+g+a.content.slice(c.end)}return!C(b,a.title)||(0,j.V7)(b)<Math.floor(.65*(0,j.V7)(a.content))?{content:a.content,applied:!1}:{content:(0,i.kT)((0,i.FD)(b,a.forbidDrawingImages)),applied:b!==a.content}}({content:M,anchor:d.text,replacement:b.replacement,title:a.chapter.title,forbidDrawingImages:a.forbidDrawingImages,appendMode:!0===d.append});if(M=c.content,c.applied){N+=1;continue}}}let c=function(a){let b=a.patch.replacement?.trim()??"",c=B(a.content);if(0===b.length){let b=A(a.content,a.patch);if(!b||b.length>c)return{content:a.content,applied:!1};let d=(0,i.kT)(a.content.replace(b,""));return!C(d,a.title)||(0,j.V7)(d)<Math.floor(.65*(0,j.V7)(a.content))?{content:a.content,applied:!1}:{content:d,applied:d!==a.content}}if(b.length>c||a.forbidDrawingImages&&/!\[[^\]]*\]\([^)]*\)/iu.test(b))return{content:a.content,applied:!1};let d=A(a.content,a.patch);if(!d||d.length>c)return{content:a.content,applied:!1};let e=(0,i.kT)((0,i.FD)(a.content.replace(d,b),a.forbidDrawingImages));return!C(e,a.title)||(0,j.V7)(e)<Math.floor(.65*(0,j.V7)(a.content))?{content:a.content,applied:!1}:{content:e,applied:e!==a.content}}({content:M,patch:b,title:a.chapter.title,forbidDrawingImages:a.forbidDrawingImages});M=c.content,c.applied&&(N+=1)}return{content:M,appliedCount:N,producedCount:O.length,repairType:b}}function G(a,b,c){return function(a,b){let c=e.resolve(a),f=function(a,b){let c=e.resolve(a);if(e.isAbsolute(b))return e.resolve(b);let f=e.resolve(c,"knowledgeBase",b);return d.existsSync(f)?f:e.resolve(c,b)}(c,b);return f===c||f.startsWith(`${c}${e.sep}`)}(a,b)&&c.size>0&&(function(a,b){let c=e.isAbsolute(b)?b:e.join(a,b),d=e.isAbsolute(b)?e.relative(a,b):b;return[b,c,d,e.join(a,d)]})(a,b).some(a=>c.has(a))}function H(a){return a.map(a=>`## [${a.roleId}/${a.category}] ${a.name}
185
+ ${(0,g.ks)(w,{maxChars:3e3,skipT2Catalog:!0,diagnostics:a.diagnostics})}`;L=await (0,u.bb)(x,z(b),{maxTokens:a.maxTokens??8e3,temperature:0,signal:a.signal,diagnostics:a.diagnostics,contextLayers:J(b),prefixKey:`repair:${a.chapter.id}`})}(0,o.Te)(a.signal);let M=a.chapter.content,N=0,O=Array.isArray(L?.patches)?L.patches:[];for(let b of O){if(a.patchGuard&&b.replacement?.trim()){let c=d&&void 0!==b.anchorIndex&&null!==b.anchorIndex?e[Number(b.anchorIndex)]:void 0;if(function(a,b){let c=[];i.kt.test(a)&&c.push("资料来源罗列句");let d=q.filter(b=>a.includes(b));for(let b of(d.length>0&&c.push(`内部术语“${d.join("”“")}”`),a.matchAll(m.eS)))c.push(`具体日历日期“${b[1]}年${b[2]}月${b[3]}日”`);let e=[...new Set(a.match(m.Ih)||[])];e.length>0&&c.push(`叠词“${e.join("”“")}”`);let f=r.filter(b=>a.includes(b));f.length>0&&c.push(`未完成小节标记“${f.join("”“")}”`),(0,m.nm)(a).length>0&&c.push("元话语声明句"),(0,m.ON)(a).length>0&&c.push("公式形态残留"),(0,m.WY)(a).length>0&&c.push("装饰层工艺参数异常"),p.IA.filter(b=>b.test(a)).length>0&&c.push("占位符"),s.some(b=>b.test(a))&&c.push("截断句残留双冒号"),(0,k.vZ)(a).length>0&&c.push("句读标点叠用/括号不闭合");let g=a.split(/\r?\n/u).map(a=>a.trim()).filter(Boolean),h=g.filter(a=>/^#{2,6}\s+\S/u.test(a)),j=h.filter(a=>/[((]\s*(?:\d{1,3}|[一二三四五六七八九十]{1,3})\s*[))]\s*$/u.test(a));j.length>0&&c.push(`防撞名后缀标题“${j[0]}”`);let l=h.filter(a=>/^####\s+\d+\.\d+(?!\.)\s+\S/u.test(a));if(l.length>0&&c.push(`小节标题降级形态“${l[0]}”`),g.some((a,b)=>b>0&&/^#{2,6}\s+\S/u.test(a)&&/^#{2,6}\s+\S/u.test(g[b-1]))&&c.push("连续标题堆叠(空节风险)"),g.length>1&&/^#{2,6}\s+\S/u.test(g[g.length-1])&&c.push("尾部裸标题(空节风险)"),b){let d=a=>[...a.matchAll(/^###\s+(\S.*)$/gmu)].map(a=>(a[1]||"").trim()),e=d(b),f=d(a);if(f.length<e.length)c.push("删除小节标题");else if(e.length>0){let b=a=>a.replace(/^\d+(?:\.\d+)*\s+/u,"").trim(),d=new Set(f.map(b)),g=[...a.matchAll(/^#{4,6}\s+(.+)$/gmu)].map(a=>b(a[1]||"")),h=[...a.matchAll(/^\*\*(.+)\*\*\s*$/gmu)].map(a=>(a[1]||"").trim()),i=e.map(b).filter(a=>a&&!d.has(a)&&(g.includes(a)||h.includes(a)));i.length>0&&c.push(`小节标题降级“${i[0]}”`)}}return c}(b.replacement,c?.text??b.originalText).length>0){let b=a.patchGuard.diagnostics;if(a.patchGuard.observeOnly)v(b,a.patchGuard.repairRound??"unknown","hits");else{v(b,a.patchGuard.repairRound??"unknown","rejects");continue}}}if(d&&void 0!==b.anchorIndex&&null!==b.anchorIndex){let c=Number(b.anchorIndex),d=Number.isInteger(c)?e[c]:void 0;if(d&&d.text){let c=void 0!==d.endText?function(a){let b=a.replacement?.trim(),c=Math.max(2600,Math.min(9e3,Math.ceil(.95*(0,j.V7)(a.content))));if(!b||b.length>c||a.forbidDrawingImages&&/!\[[^\]]*\]\([^)]*\)/iu.test(b))return{content:a.content,applied:!1};let d=a.startAnchor.replace(/\s+/gu,"");if(d.length<4||!b.replace(/\s+/gu,"").includes(d))return{content:a.content,applied:!1};let{compact:e,rawPositions:f}=D(a.content),g=e.indexOf(d);if(g<0)return{content:a.content,applied:!1};let h=f[g],k=a.content.length;if(a.endAnchor){let b=a.endAnchor.replace(/\s+/gu,"");if(b.length<4)return{content:a.content,applied:!1};let c=e.indexOf(b,g+d.length);if(c<0)return{content:a.content,applied:!1};k=f[c]}let l=a.content.slice(0,h)+b+a.content.slice(k);return!C(l,a.title,a.content)||(0,j.V7)(l)<Math.floor(.65*(0,j.V7)(a.content))?{content:a.content,applied:!1}:{content:(0,i.kT)((0,i.FD)(l,a.forbidDrawingImages)),applied:l!==a.content}}({content:M,startAnchor:d.text,endAnchor:d.endText,replacement:b.replacement,title:a.chapter.title,forbidDrawingImages:a.forbidDrawingImages}):function(a){let b,c=a.replacement?.trim()??"",d=a.anchor.replace(/\s+/gu,"");if(d.length<4)return{content:a.content,applied:!1};let e=a.content.replace(/\s+/gu,""),f=a.appendMode?Math.max(4e3,Math.min(24e3,Math.ceil(1.2*(0,j.V7)(a.content)))):B(a.content);if(0===c.length){if(!e.includes(d))return{content:a.content,applied:!1};let{compact:b,rawPositions:c}=D(a.content),f=[],g=0;for(;;){let a=b.indexOf(d,g);if(a<0)break;f.push(a),g=a+d.length}let h=f.map(b=>E(a.content,c[b],c[b+d.length-1]+1)),k=a.content;for(let a of h.reverse())k=k.slice(0,a.start)+k.slice(a.end);return!C(k,a.title)||(0,j.V7)(k)<Math.floor(.65*(0,j.V7)(a.content))?{content:a.content,applied:!1}:{content:(0,i.kT)(k),applied:k!==a.content}}let g=c;if(g.length>f||a.forbidDrawingImages&&/!\[[^\]]*\]\([^)]*\)/iu.test(g))return{content:a.content,applied:!1};if(a.appendMode&&!g.replace(/\s+/gu,"").startsWith(d)&&(g=`${a.anchor}${g}`),e.includes(d))b=function(a,b,c){let{compact:d,rawPositions:e}=D(a),f=[],g=0;for(;;){let a=d.indexOf(b,g);if(a<0)break;f.push({start:e[a],end:e[a+b.length-1]+1}),g=a+b.length}let h=a;for(let{start:a,end:b}of f.reverse())h=h.slice(0,a)+c+h.slice(b);return h}(a.content,d,g);else{let c=function(a,b,c){let{compact:d,rawPositions:e}=D(a);for(let c=b.length;c>=8;c-=4){let f=b.slice(0,c),g=d.indexOf(f);if(!(g<0)&&g===d.lastIndexOf(f))return E(a,e[g],e[g+c-1]+1)}}(a.content,d,0);if(!c)return{content:a.content,applied:!1};b=a.content.slice(0,c.start)+g+a.content.slice(c.end)}return!C(b,a.title)||(0,j.V7)(b)<Math.floor(.65*(0,j.V7)(a.content))?{content:a.content,applied:!1}:{content:(0,i.kT)((0,i.FD)(b,a.forbidDrawingImages)),applied:b!==a.content}}({content:M,anchor:d.text,replacement:b.replacement,title:a.chapter.title,forbidDrawingImages:a.forbidDrawingImages,appendMode:!0===d.append});if(M=c.content,c.applied){N+=1;continue}}}let c=function(a){let b=a.patch.replacement?.trim()??"",c=B(a.content);if(0===b.length){let b=A(a.content,a.patch);if(!b||b.length>c)return{content:a.content,applied:!1};let d=(0,i.kT)(a.content.replace(b,""));return!C(d,a.title)||(0,j.V7)(d)<Math.floor(.65*(0,j.V7)(a.content))?{content:a.content,applied:!1}:{content:d,applied:d!==a.content}}if(b.length>c||a.forbidDrawingImages&&/!\[[^\]]*\]\([^)]*\)/iu.test(b))return{content:a.content,applied:!1};let d=A(a.content,a.patch);if(!d||d.length>c)return{content:a.content,applied:!1};let e=(0,i.kT)((0,i.FD)(a.content.replace(d,b),a.forbidDrawingImages));return!C(e,a.title,a.content)||(0,j.V7)(e)<Math.floor(.65*(0,j.V7)(a.content))?{content:a.content,applied:!1}:{content:e,applied:e!==a.content}}({content:M,patch:b,title:a.chapter.title,forbidDrawingImages:a.forbidDrawingImages});M=c.content,c.applied&&(N+=1)}return{content:M,appliedCount:N,producedCount:O.length,repairType:b}}function G(a,b,c){return function(a,b){let c=e.resolve(a),f=function(a,b){let c=e.resolve(a);if(e.isAbsolute(b))return e.resolve(b);let f=e.resolve(c,"knowledgeBase",b);return d.existsSync(f)?f:e.resolve(c,b)}(c,b);return f===c||f.startsWith(`${c}${e.sep}`)}(a,b)&&c.size>0&&(function(a,b){let c=e.isAbsolute(b)?b:e.join(a,b),d=e.isAbsolute(b)?e.relative(a,b):b;return[b,c,d,e.join(a,d)]})(a,b).some(a=>c.has(a))}function H(a){return a.map(a=>`## [${a.roleId}/${a.category}] ${a.name}
186
186
  ${function(a){let b=a.replace(/```([\s\S]*?)```/gu,(a,b)=>/<OUTLINE>|\|\s*[^\n]+\s*\||#{1,6}\s+|必须|禁止|不得|应当|要求|规则|格式|输出|表格|章节|小节|正文/u.test(b)?`
187
187
  ${b.trim()}
188
188
  `:"\n【示例代码块已省略:仅作为格式参考,不作为当前文档事实】\n").split(/\r?\n/u),c=[],d=!1,e=!1;for(let a of b){let b=a.trim();if((0,h.bl)(b)&&(e=!0),e){c.push(a),(0,h.Ui)(b)&&(e=!1);continue}let f=/^(?:#+\s*)?(?:示例|样例|范例|例如|参考示例|示例数据|示例正文|示例目录|example|sample)\s*[::]?/iu.test(b),g=/(?:不得|禁止|必须|应当|要求|规则|格式|输出|保留|只返回|不要|表格|章节|小节|正文|目录|封面)/u.test(b);if(f&&!g){c.at(-1)?.includes("示例内容已省略")||c.push("【示例内容已省略:仅作为格式参考,不作为当前文档事实】"),d=!0;continue}if(d){if(!b){d=!1;continue}if(!(/^(?:#+\s*)?(?:规则|要求|输出|格式|禁止|注意|正文|章节|小节|表格|风格|校验)/u.test(b)||/\|\s*[^\n]+\s*\|/u.test(b)))continue;d=!1}c.push(a)}return c.join("\n").replace(/\n{3,}/gu,"\n\n").trim()}(a.content)}`).join("\n\n")}},48661:(a,b,c)=>{c.d(b,{BH:()=>W,Gl:()=>E,JU:()=>$,Jz:()=>_,Oy:()=>K,QG:()=>V,QH:()=>J,SE:()=>L,YL:()=>ai,a6:()=>T,getGeneratedDocument:()=>R,listGeneratedDocuments:()=>Q,r:()=>U,yE:()=>Z});var d=c(77598),e=c(73024),f=c(48161),g=c(76760),h=c(18027),i=c(37047),j=c(23760),k=c(30055),l=c(87942),m=c(19898),n=c(44533),o=c(78217),p=c(80572),q=c(37095);function r(a,b){return a?.map(a=>"running"===a.status?{...a,status:"failed",message:b}:a)}function s(a){return a.title&&"生成中"!==a.title&&"排队中"!==a.title?a.title:`${a.templateName||"文档"}生成失败`}function t(...a){let b=new Map;for(let c of a)for(let a of c||[])a.id&&a.content?.trim()&&b.set(a.id,a);return[...b.values()]}function u(a){return(a||[]).map(a=>({id:a.id,title:a.title,chars:(0,o.V7)(a.content),status:a.inProgress?"in_progress":a.content.trim().length>0?"completed":"failed",updatedAt:Date.now(),timedOut:a.timedOut,elapsedMs:a.elapsedMs}))}let v=globalThis,w=v.__generatedDocumentTasks??=new Map,x=v.__generatedDocumentQueue??=[],y=Math.max(36e5,Number(process.env.DOCUMENT_ABANDONED_RECORD_STALE_MS??864e5)),z=v.__generatedDocumentProcessStartedAt??=Date.now();function A(){return Math.max(3e4,Math.min(3e5,Number(process.env.DOCUMENT_PROGRESS_HEARTBEAT_SAVE_INTERVAL_MS??3e4)))}let B=Math.max(Math.max(3e4,Number(process.env.DOCUMENT_RECENT_UPDATE_GRACE_MS??18e4)),3*A()),C=function(a){if(!a||!Number.isFinite(a)||a<=0)return!1;try{return process.kill(a,0),!0}catch(a){return a?.code==="EPERM"}};function D(a){if("generating"!==a.status&&"queued"!==a.status)return{stale:!1};let b=Date.now();if(b-a.updatedAt<B)return{stale:!1};if(a.ownerPid)return C(a.ownerPid)?b-a.updatedAt<y?{stale:!1}:{stale:!0,reason:"heartbeat-lost"}:{stale:!0,reason:"process-exited"};return a.updatedAt<z||b-a.updatedAt>=y?{stale:!0,reason:"owner-unknown"}:{stale:!1}}function E(a=(0,n.aY)()){let b=g.join(f.homedir(),".customize-agent","projects",function(a=(0,n.aY)()){return(0,m.computeProjectId)(g.resolve(a))}(a),"generatedDocuments");return e.mkdirSync(g.join(b,"drafts"),{recursive:!0}),e.mkdirSync(g.join(b,"assets"),{recursive:!0}),b}function F(a=(0,n.aY)()){return g.join(E(a),"index.json")}function G(a=(0,n.aY)()){return g.join(E(a),"assets.json")}function H(a,b=(0,n.aY)()){return g.join(E(b),"drafts",`${a}.json`)}function I(a,b=(0,n.aY)()){return g.join(E(b),"drafts",`${a}.meta.json`)}function J(a,b=(0,n.aY)()){let c=M(I(a,b),null);return c&&Number.isFinite(c.updatedAt)?c:null}function K(a){return!!a&&D(a).stale}function L(a,b=(0,n.aY)()){return a.path?g.isAbsolute(a.path)?a.path:a.path.startsWith("generatedDocuments/assets/")?g.join(E(b),a.path.replace(/^generatedDocuments\/assets\//u,"assets/")):g.join((0,n.NW)(b),a.path):null}function M(a,b){try{return JSON.parse(e.readFileSync(a,"utf8"))}catch{return b}}function N(a,b){e.mkdirSync(g.dirname(a),{recursive:!0});let c=`${a}.${process.pid}.${Date.now()}.tmp`;e.writeFileSync(c,JSON.stringify(b,null,2)),e.renameSync(c,a)}function O(a){for(let b of w.values())if(b.documentId===a)return b;return null}function P(a,b=(0,n.aY)()){if("generating"!==a.status&&"queued"!==a.status||O(a.id)||"queued"===a.status&&x.some(b=>b.documentId===a.id))return a;let c=D(a);if(!c.stale)return a;let d="queued"===a.status?"排队任务未执行(生成进程已退出或服务重启),请重新发起生成":"生成任务已中断,请点击继续生成或重新生成",e=a.checkpointChapters?.length?"warning":"failed";console.warn(`[gen] interrupted: doc=${a.id} reason=${c.reason} ownerPid=${a.ownerPid??"none"} lastHeartbeat=${new Date(a.updatedAt).toISOString()}`);let f={...a,title:s(a),status:e,error:a.error||d,executionStages:r(a.executionStages,d),completedAt:Date.now(),interruptedAt:Date.now(),interruptionReason:c.reason,warningIssues:a.checkpointChapters?.length?[...a.warningIssues||[],d]:a.warningIssues};return a.taskId&&ad(b,{taskId:a.taskId,title:`生成 ${f.title}`,status:"warning"===e?"warning":"error",percent:100,message:d,stages:f.executionStages,error:d}),f}function Q(a=(0,n.aY)()){return M(F(a),[]).map(b=>{if("generating"!==b.status&&"queued"!==b.status)return b;let c=M(H(b.id,a),null);if(!c)return b;let d=P(c,a),e=d!==c?S(d,a,{preserveUpdatedAt:!0}):d;return{...ab(e),queuePosition:"queued"===e.status?af(e.id):void 0}}).sort((a,b)=>(b.createdAt||b.updatedAt)-(a.createdAt||a.updatedAt))}function R(a,b=(0,n.aY)()){let c=M(H(a,b),null);if(!c)return null;let d=P(c,b);return function(a,b=(0,n.aY)()){if("generating"===a.status||!(a.editedMarkdown||a.markdown)?.trim())return a;let c=`document-${a.id}`;if(a.assets?.some(a=>a.id===c&&a.path))return a;let d=Y(a,b);return d?S({...a,assets:[d,...(a.assets||[]).filter(a=>a.id!==d.id)]},b):a}(d!==c?S(d,b,{preserveUpdatedAt:!0}):d,b)}function S(a,b=(0,n.aY)(),c){let d=Date.now(),e=ac({...a,updatedAt:c?.preserveUpdatedAt?a.updatedAt:d});N(H(e.id,b),e),N(I(e.id,b),{updatedAt:e.updatedAt,status:e.status,completedAt:e.completedAt,ownerPid:e.ownerPid,ownerStartedAt:e.ownerStartedAt});let f=M(F(b),[]).filter(a=>a.id!==e.id);return f.unshift(ab(e)),N(F(b),f),e}function T(a,b,c=(0,n.aY)()){let d=R(a,c);return d?S({...d,...b,id:a},c):null}function U(a,b=(0,n.aY)()){let c=R(a,b);if(!c)return null;if("generating"!==c.status&&"queued"!==c.status)return c;let d="queued"===c.status;if(d){let b=x.findIndex(b=>b.documentId===a);b>=0&&x.splice(b,1)}for(let[b,c]of w)c.documentId===a&&(c.status="aborted",c.controller.abort(),w.delete(b));let e="用户中止",f=[...c.executionStages||[]].reverse().find(a=>"running"===a.status),g=d?"生成队列":f?.subtitle||f?.roleName||f?.roleId,h=r(c.executionStages,e),i=S({...c,status:"aborted",error:e,executionStages:h,completedAt:Date.now(),abortedAt:Date.now(),abortedBy:"user-api",abortedStage:g},b);console.log(`[gen] aborted by user: doc=${a} stage=${g||"unknown"} taskId=${i.taskId||"none"}`);let j=g?`用户中止(阶段:${g})`:e;return i.taskId&&ad(b,{taskId:i.taskId,title:`生成 ${i.title}`,status:"warning",percent:100,message:j,stages:h,error:e}),d&&ag(),i}function V(a,b=(0,n.aY)()){let c=x.findIndex(b=>b.documentId===a);c>=0&&x.splice(c,1);try{e.rmSync(H(a,b),{force:!0})}catch{console.warn("[generated-documents] 删除文档记录失败或文件不存在",a)}let d=M(F(b),[]).filter(b=>b.id!==a);N(F(b),d)}function W(a=(0,n.aY)()){return M(G(a),[]).sort((a,b)=>b.updatedAt-a.updatedAt)}function X(a,b,c=(0,n.aY)()){let d=Date.now(),e=[...W(c)];for(let c of a){let a=e.findIndex(a=>a.id===c.id),f=c.path?.startsWith("generatedDocuments/assets/")||"generated"===c.status||"prompt_ready"===c.status?"generated":"knowledge_base",h={...c,name:g.basename(c.path||c.url||c.id),source:f,indexed:a>=0&&e[a].indexed,usedByDocumentIds:a>=0?[...new Set([...e[a].usedByDocumentIds,b])]:[b],createdAt:a>=0?e[a].createdAt:d,updatedAt:d};a>=0?e[a]={...e[a],...h}:e.push(h)}return N(G(c),e),e}function Y(a,b=(0,n.aY)()){let c=a.editedMarkdown||a.markdown;if(!c?.trim())return null;let d=`generatedDocuments/assets/${a.title.replace(/[\\/:*?"<>|]/gu,"_").slice(0,120)||"generated-document"}-${a.id}.md`,f=g.join(E(b),d.replace(/^generatedDocuments\//u,""));e.mkdirSync(g.dirname(f),{recursive:!0}),e.writeFileSync(f,c,"utf8");let h={id:`document-${a.id}`,type:"file",role:"generated",path:d,status:"generated",message:"模板运行生成的 Markdown 文档,仅登记到生成资源,不进入知识库"};return X([h],a.id,b).find(a=>a.id===h.id)||null}function Z(a,b=(0,n.aY)()){return W(b).find(b=>b.id===a)||null}function $(a,b=(0,n.aY)()){let c=Z(a,b);if(!c)return!1;let d=L(c,b);if(d&&d.startsWith(E(b)))try{e.rmSync(d,{force:!0})}catch{console.warn("[generated-documents] 删除生成资源文件失败或文件不存在",d)}return N(G(b),W(b).filter(b=>b.id!==a)),!0}function _(a,b,c=(0,n.aY)()){let d=Z(a,c);if(!d)return null;let f=L(d,c);return f&&e.existsSync(f)?"directory"===b?g.dirname(f):f:null}function aa(a){let b=Math.max(4,Math.floor((0,p.z)().persistEvidenceMaxItems??10)),c=Math.max(300,Math.floor((0,p.z)().persistEvidenceItemChars??900));return{...a,evidence:(a.evidence||[]).slice(0,b).map(a=>({...a,content:"string"==typeof a.content?a.content.replace(/\s+/gu," ").slice(0,c):""}))}}function ab(a){let b=[...a.executionStages||a.draft?.executionStages||[]].reverse().find(a=>a.message||a.subtitle||a.roleId),c=a.partialChapters||u(a.checkpointChapters||a.draft?.checkpointChapters||a.draft?.chapters),d=a.draft?.validationIssues||[],e=a.draft?.exportGate?a.draft.exportGate.blockingIssues?.length??0:d.filter(a=>"blocker"===a.severity||"error"===a.level).length,f=d.filter(a=>"warning"===a.severity||"warning"===a.level).length||a.warningIssues?.length||0,g=d.filter(a=>"suggestion"===a.severity||"info"===a.level).length;return{id:a.id,taskId:a.taskId,templateId:a.templateId,templateName:a.templateName,templateVersion:a.templateVersion,title:a.title,requirement:a.requirement,projectRoot:a.projectRoot,projectId:a.projectId,knowledgeBasePath:a.knowledgeBasePath,status:a.status,createdAt:a.createdAt,updatedAt:a.updatedAt,completedAt:a.completedAt,elapsedMs:a.completedAt?a.completedAt-a.createdAt:a.updatedAt-a.createdAt,error:a.error,warningIssues:(a.warningIssues||[]).slice(0,12),warningCount:f,blockerCount:e,suggestionCount:g,wordCount:(0,o.V7)(a.editedMarkdown||a.markdown||a.draft?.markdown||""),chapterCount:c?.length||a.draft?.chapters?.length||0,completedChapterCount:(c||[]).filter(a=>"completed"===a.status).length,latestStage:b?.subtitle||b?.roleName||b?.roleId,latestMessage:b?.message,assets:(a.assets||[]).slice(0,8),partialChapters:c}}function ac(a){let b=a.draft?{...a.draft,chapters:a.draft.chapters?.map(aa),checkpointChapters:a.draft.checkpointChapters?.map(aa)}:a.draft;return{...a,draft:b,checkpointChapters:a.checkpointChapters?.map(aa)}}function ad(a,b){(0,q.Qf)(a,{id:b.taskId,type:"document",title:b.title,stage:"processing"===b.status?"generating":"error"===b.status?"error":"done",status:b.status,percent:b.percent,message:b.message,error:b.error,details:(b.stages||[]).filter(a=>"role_binding"===a.type||"runtime-prompt-rules"===a.roleId||"document-readiness"===a.roleId||"failed"===a.status).flatMap(a=>[`${a.subtitle||a.roleName||a.roleId}:${a.message||a.status}`,...(a.details||[]).slice(0,8).map(a=>` - ${a}`)]).slice(0,80)})}function ae(){return Math.max(1,Number(process.env.DOCUMENT_MAX_CONCURRENT_GENERATIONS??2))}function af(a){let b=x.findIndex(b=>b.documentId===a);return b>=0?b+1:void 0}function ag(){for(;;){if(w.size>=ae())return;let a=x.findIndex(a=>!function(a,b){for(let c of w.values())if(c.templateId===a&&c.projectRoot===b)return!0;return!1}(a.templateId,a.projectRoot));if(a<0)return;let[b]=x.splice(a,1),c=R(b.documentId,b.projectRoot);if(c&&"queued"===c.status)try{ah({taskId:b.taskId,documentId:b.documentId,resolvedProjectRoot:b.projectRoot,templateId:b.templateId,requirement:b.requirement??c.requirement,maxEvidencePerChapter:b.maxEvidencePerChapter??c.maxEvidencePerChapter,existing:null,initial:{...c,taskId:b.taskId,title:"生成中",status:"generating",error:void 0,completedAt:void 0,ownerPid:process.pid,ownerStartedAt:z,executionStages:[{type:"validation",roleId:"queue-start",status:"running",message:"排队完成,开始生成"}],updatedAt:Date.now()},startMessage:"排队完成,文档生成任务已启动"})}catch(d){let a=d instanceof Error?d.message:String(d);console.error(`[gen] queue launch failed: doc=${b.documentId} ${a}`);let c=R(b.documentId,b.projectRoot);c&&"queued"===c.status&&(S({...c,title:s(c),status:"failed",error:a,executionStages:r(c.executionStages,a),completedAt:Date.now()},b.projectRoot),ad(b.projectRoot,{taskId:b.taskId,title:`生成 ${c.templateName||c.title}`,status:"error",percent:100,message:a,error:a}))}}}function ah(a){let b,{taskId:c,documentId:d,resolvedProjectRoot:e,existing:f,initial:g}=a,n={templateId:a.templateId,requirement:a.requirement,maxEvidencePerChapter:a.maxEvidencePerChapter,resumeDocumentId:a.resumeDocumentId},p=Date.now();S(g,e),ad(e,{taskId:c,title:`生成 ${g.title}`,status:"processing",percent:1,message:a.startMessage,stages:g.executionStages});let q=new AbortController,v={},x=function(a,b,c){if(!a)return[];let d=(0,h.QJx)(b.templateId),e=a.reviewMetadata?.workflowVersion?.version||a.draft?.reviewMetadata?.workflowVersion?.version,f=a.draft?.exportGate?.passed===!0,g=a.templateId===b.templateId&&(!d||!a.templateVersion||a.templateVersion===d.version),i=a.projectRoot===c&&a.projectId===(0,m.computeProjectId)(c),j=(a.requirement||"")===(b.requirement||"");if(!g||!i||!j||e!==l.x.version||!f)return[];let k=new Set((a.draft?.partialChapters||a.partialChapters||[]).filter(a=>"completed"===a.status).map(a=>a.id));return t(a.draft?.chapters,a.checkpointChapters).filter(a=>k.has(a.id)&&!!a.content?.trim()&&!/WRITER_MISSING_SECTION|Writer 未完成/u.test(a.content))}(f,n,e),y="",B=0,C="",D=Math.max(1e3,Math.min(15e3,Number(process.env.DOCUMENT_PROGRESS_SAVE_INTERVAL_MS??5e3))),E=A(),F=(0,i.Iu)().then(()=>(0,h.OXS)({...n,diversitySeed:d,projectRoot:e,resumeChapters:x,signal:q.signal,onProgress:(a,f)=>{try{v.current&&(v.current.lastProgressAt=Date.now()),b=a,f?.chapters?.length&&(y=f.chapters.map(a=>`# ${a.title}
@@ -210,19 +210,19 @@ ${m}`,i+=m.replace(/\s+/gu,""),j+=1,k.push(`${c}“${f.text.slice(0,28)}${f.text
210
210
  ${n}`),j+=1,k.push(`${c}“${l.text.slice(0,28)}${l.text.length>28?"…":""}” → ${e.chapterTitle}${e.score<0?"(兜底路由)":""}`)}return{markdown:h.join("\n"),fixedCount:j,details:k.slice(0,6)}}function an(a){if(/分包/u.test(a))return"本工程全部施工任务由我公司项目部自行组织实施,严禁违法分包、转包及挂靠行为。";if(/总价合同|总价包干/u.test(a))return"本工程合同价款按总价包干执行,除合同约定调整情形外不予调整。";if(/隐蔽工程/u.test(a))return"本工程隐蔽验收按约定时限提前通知监理单位参加检查。";if(/预付款/u.test(a))return"本工程预付款的支付、扣回与使用按合同约定执行,专款用于施工准备。";if(/扬尘/u.test(a))return"本工程扬尘污染防治费用按合同约定列入计划并专款专用。";if(/工期延误|违约金/u.test(a))return"本工程工期与违约金管理按合同约定执行,进度计划与纠偏措施按进度管理制度落实。";if(/保证金/u.test(a))return"本工程保证金缴纳、退还与保函替代按合同约定执行。";if(/更换主要施工管理人员|更换项目经理/u.test(a))return"本工程主要施工管理人员保持稳定,确需更换时提前按合同约定提交书面申请并获发包人书面同意后执行。";if(/农民工工资专用账户|农民工工资/u.test(a))return"本工程农民工工资专用账户按合同约定设立并专款专用,实名制管理与工资支付保障按劳动力管理制度落实。";if(/支付担保/u.test(a))return"本工程发包人工程款支付担保按合同约定执行,担保办结后我方按约组织进场施工。";if(/安全生产|事故/u.test(a))return"本工程安全生产无事故目标与带班检查频次按合同约定执行,现场安全管理按安全检查与整改销项制度落实。";if(/工程报表|周报/u.test(a))return"本工程每月25日前报送工程报表与下月计划、周例会前一天报送周报,由资料员按期编制报送。";if(/竣工资料|竣工结算/u.test(a))return"本工程竣工资料套数与移交时限按合同约定执行,竣工结算申请与审批按约定时限办理。";if(/缺陷责任期|保修/u.test(a))return"本工程缺陷责任期与保修响应时限按合同约定执行,保修期内接到通知按时限到场修复。";if(/工期总日历天数/u.test(a))return"本工程工期天数计算以工期总日历天数为准,进度计划按总日历天数编制并动态校核。";if(/可调整价差|市场价格波动|价格调整|调差/u.test(a))return"本工程价格调整范围按《可调整价差人工和主要材料一览表》执行:表内人工与主要材料按合同约定调差,表外材料价格风险由我方承担,调差申请与审批按合同专用条款办理。";if(/注册建造师|建造师数量|资质标准/u.test(a))return"项目部按资质标准配置市政公用工程专业注册建造师,数量满足招标要求,注册建造师证书注册于本公司并在岗履职。";if(/养护等级|养护期|绿化养护/u.test(a))return"本工程绿化养护执行合同约定的养护等级与养护期,养护期内按养护方案落实浇水、修剪、施肥、除虫等作业并留存养护记录。";if(/视同|漏报|没有报价|未报价/u.test(a))return"本工程对清单项目逐项复核报价,未报价项目费用按合同约定执行,不重复计取。";let b=/^([^::]{2,24})[::]/u.exec(a)?.[1];return b&&!/承包人|发包人|招标人/u.test(b)?`本工程${b}按合同约定执行,具体安排见对应章节。`:""}function ao(a){let b=a.split(/\r?\n/u),c=[],d=0,e=[];for(let a of b){let b=a.trim();if(!b.includes("本施工组织设计已按上述条款要求逐项落实执行")){c.push(a);continue}let f=/[::]([^。;;\n]{8,90})/u.exec(b),g=f?.[1]?.trim();if(!g){c.push(a);continue}let h=an(g);if(!h){c.push(a);continue}c.push(b.replace(/本施工组织设计已按上述条款要求逐项落实执行。?/g,h)),d+=1,e.push(g.slice(0,18))}return{markdown:c.join("\n"),fixedCount:d,details:e}}function ap(a){let b=a.split(/\r?\n/u),c=[],d=0,e=[];for(let a=0;a<b.length;a+=1){let f=b[a],g=f.trim();if(!g||/^#{1,6}\s/u.test(g)||/^\s*\|/u.test(f)){c.push(f);continue}let h=f,i=/^(\s*)按招标文件(?:要求|约定):\s*(.+)$/u.exec(h);if(i&&(h=`${i[1]}${_(i[2])}`),(h=(h=h.replace(/本施工组织设计已按上述条款要求逐项落实执行。?/gu,"")).replace(/按招标文件约定/gu,"按合同约定").replace(/按招标文件要求/gu,"按招标要求").replace(/按招标文件规定/gu,"按合同约定").replace(/按上述条款要求|按上述条款|按上述要求/gu,"按合同约定").replace(/按上述时限/gu,"按约定时限").replace(/本招标项目/gu,"本项目"))!==f&&(d+=1,e.length<6&&e.push(g.slice(0,24))),!h.trim()){a+1<b.length&&!b[a+1].trim()&&c.length>0&&!c[c.length-1].trim()&&(a+=1);continue}c.push(h)}return{markdown:c.join("\n"),fixedCount:d,details:e}}function aq(a){let b=a.split(/\r?\n/u),c=new Set,d=[],e=0,f=[];for(let a=0;a<b.length;a+=1){let g=b[a],h=g.trim();if(!h||/^#{1,6}\s/u.test(h)||/^\s*\|/u.test(g)){d.push(g);continue}let i=h.replace(/\s+/gu,"");if(!(i.length>=40&&(/我方/u.test(i)||/本工程/u.test(i)||i.includes("按合同约定")))){d.push(g);continue}if(c.has(i)){for(;a+1<b.length&&!b[a+1].trim();)a+=1;e+=1,f.length<6&&f.push(h.slice(0,24));continue}c.add(i),d.push(g)}return{markdown:d.join("\n"),fixedCount:e,details:f}}},64406:(a,b,c)=>{c.d(b,{eS:()=>e.eS,Ih:()=>e.Ih,Fr:()=>e.Fr,fE:()=>N,gk:()=>J,u2:()=>e.u2,cT:()=>e.cT,Rv:()=>e.Rv,s3:()=>e.s3,dF:()=>e.dF,Vw:()=>p,VZ:()=>z,xR:()=>e.xR,mC:()=>e.Ve,iy:()=>e.iy,H:()=>e.H,vH:()=>e.vH,cl:()=>e.cl,ub:()=>e.ub,CJ:()=>e.CJ,KE:()=>e.KE,fQ:()=>e.fQ,z4:()=>d.z4,bq:()=>e.bq,LA:()=>e.LA,hI:()=>d.hI,Dq:()=>d.Dq,Pt:()=>d.Pt,GG:()=>d.GG,P3:()=>d.P3,hu:()=>e.hu,cf:()=>e.cf,a8:()=>e.a8,WY:()=>e.WY,$h:()=>O,SZ:()=>aa,zo:()=>A,fK:()=>al,y4:()=>w,uL:()=>x,JF:()=>r,GI:()=>ad,EJ:()=>t,mG:()=>E,xp:()=>V,zj:()=>$,N$:()=>C,Co:()=>Z,r_:()=>ak,BR:()=>u,Fd:()=>s,Qc:()=>l,kp:()=>aj,Pl:()=>v,EN:()=>P,K2:()=>Q,ir:()=>T,lv:()=>X,yV:()=>B,_D:()=>ai,Y4:()=>m,qz:()=>S,ON:()=>e.ON,ex:()=>e.N$,x5:()=>e.x5,m6:()=>e.m6,jP:()=>e.jP,iY:()=>e.iY,cJ:()=>e.cJ,br:()=>q,nm:()=>e.nm,Et:()=>e.Et,l4:()=>e.l4,y2:()=>e.y2,AD:()=>e.AD,cv:()=>e.cv,fg:()=>e.fg,Xc:()=>e.Xc,rA:()=>e.rA,zP:()=>e.zP,g4:()=>o,gD:()=>n,mB:()=>e.mB,YN:()=>e.YN,sn:()=>e.sn,$$:()=>e.$$,Tz:()=>e.Tz,qj:()=>D,Vc:()=>I,lR:()=>G,qG:()=>H,QM:()=>F,ek:()=>e.ek,r8:()=>e.r8,dc:()=>d.dc,IJ:()=>e.IJ});var d=c(12863),e=c(35547),f=c(22157),g=c(98281),h=c(27625),i=c(81010);let j=[[/高压旋喷桩/gu,"土钉墙"],[/旋喷桩/gu,"土钉墙"],[/钻孔灌注桩/gu,"土钉墙"],[/咬合桩/gu,"土钉墙"],[/地下连续墙/gu,"土钉墙"],[/搅拌桩/gu,"土钉墙"],[/灌注桩/gu,"土钉墙"],[/支护桩/gu,"土钉墙"],[/排桩/gu,"土钉墙"],[/冠梁/gu,"坡顶"]],k=/高压旋喷桩机|旋喷桩机|搅拌桩机|三轴搅拌|成槽机|灌注桩机/u;function l(a){let b=new Map;for(let c of a.matchAll(e.MQ)){let a=c[1].trim(),d=a.replace(/[\d,,.。%%㎡m2²]/gu,"").slice(0,16);if(d.length<10)continue;let e=b.get(d)||[],f=(c.index??0)+c[0].indexOf(c[1]);e.push({sentence:a,start:f,end:f+c[1].length}),b.set(d,e)}let c=[];for(let a of b.values()){if(a.length<3)continue;let b=a[0].sentence,d=b.length;for(let c of a.slice(1)){let a=0,e=Math.min(d,c.sentence.length);for(;a<e&&b[a]===c.sentence[a];)a+=1;d=a}let e=b.slice(0,d).lastIndexOf(":"),f=b.slice(0,e>=0?e+1:d);if(!(f.length<4))for(let b=1;b<a.length;b+=1){let d=a[b],e=d.sentence.slice(f.length).trim();e.length<10||c.push({start:d.start,end:d.end,replacement:e})}}if(0===c.length)return{markdown:a,fixedCount:0,details:[]};let d=J(a,c.map(a=>({...a,detail:"段首固定开场剥离"})));return{markdown:d.markdown,fixedCount:d.fixedCount,details:[`段首固定开场剥离 ${d.fixedCount} 处`]}}function m(a){let b=a,c=0;for(let[a,d]of[[/:\s*:/gu,":"],[/;:/gu,";"],[/。:/gu,"。"],[/::/gu,":"],[/。;/gu,"。"],[/;。/gu,"。"],[/。,/gu,"。"],[/,。/gu,"。"],[/、。/gu,"。"],[/、;/gu,";"],[/、,/gu,","],[/,、/gu,","],[/;、/gu,";"],[/。{2,}/gu,"……"]]){let e=b;b=b.replace(a,d),c+=(e.match(RegExp(a.source,"gu"))||[]).length}return b===a?{markdown:a,fixedCount:0,details:[]}:{markdown:b,fixedCount:c,details:[`截断句残留清洗 ${c} 处`]}}function n(a,b,c=3){let d=b,e=0;for(let b=0;b<c;b+=1){let b=a(d);if(0===b.fixedCount)break;d=b.markdown,e+=b.fixedCount}return{markdown:d,fixedCount:e}}function o(a,b,c=3){let d=b,e=0;for(let b=0;b<c;b+=1){let b=0;for(let c of a){let a=c(d);0!==a.fixedCount&&(d=a.markdown,b+=a.fixedCount)}if(0===b)break;e+=b}return{markdown:d,fixedCount:e}}function p(a){return a.replace(e.Ih,"$1")}function q(a){let b=a.split(/\r?\n/u),c=[],d=0;for(let a of b){let b=a.trim(),e=(c[c.length-1]??"").trimEnd();if(b&&!/^\|/u.test(b)&&b.endsWith("|")&&1===(b.match(/\|/gu)||[]).length&&!/^#{1,6}\s/u.test(b)&&g.w7.test(e)){let a=b.slice(0,b.lastIndexOf("|")).trim(),f=e.slice(0,e.lastIndexOf("|")).trimEnd(),g=/[,。;、:]$/u.test(f)?"":" ";c[c.length-1]=`${f}${g}${a} |`,d+=1;continue}c.push(a)}return{markdown:c.join("\n"),fixedCount:d}}function r(a){let b=a,c=0,d=[];for(let{re:a,group:f}of[{re:RegExp(`((?:${e.mC})[^。;;
211
211
  |]{0,10}?)(\\d{3,})(\\s*mm)`,"gu"),group:2},{re:RegExp(`(\\d{3,})(\\s*mm厚?[^。;;
212
212
  |]{0,18}(?:${e.mC}))`,"gu"),group:1}])for(let e of[...b.matchAll(a)].filter(a=>Number(a[f])>=100)){let a=Number(e[f]),g=String(Math.round(a/10));b=b.replace(e[0],e[0].replace(e[f]??"",g)),c+=1,d.push(`${a}mm→${g}mm`)}return{markdown:b,fixedCount:c,details:d}}function s(a){let b=a,c=0,d=[],f=[...(b=b.replace(/([,,])\s*(?:不再另行[^。;;\u000A,,]{0,40}|以[^,,。;;\u000A]{0,16}为唯一[^,,。;;\u000A]{0,24}不再[^,,。;;\u000A]{0,20})/gu,(a,b)=>(c+=1,b))).matchAll(/(?:^|[。;;\u000A])([^。;;\u000A]*?(?:不再另行[^。;;\u000A]{0,40}|以[^。;;\u000A]{0,16}为唯一[^。;;\u000A]{0,24}不再[^。;;\u000A]{0,20})[^。;;\u000A]*)(?=[。;;\u000A]|$)/gu)],g=[];for(let a of f){let b=a[0],c=a[1]??"",d=c.replace(e.dI,"").trim();/(?:\d)/u.test(d)||g.push({start:(a.index??0)+b.indexOf(c),end:(a.index??0)+b.indexOf(c)+c.length})}for(let a of[...g].sort((a,b)=>b.start-a.start))b=b.slice(0,a.start)+b.slice(a.end),c+=1;let h=b;return(b=b.replace(/,+/gu,",").replace(/,(?=[。;;\u000A])/gu,"").replace(/(?:^|[。;;\u000A])\s*,/gu,(a,b)=>b).replace(/([。;;])\1+/gu,"$1").replace(/^[。;;\s]+/u,"").replace(/\u000A{3,}/gu,"\n\n"))!==h&&(c+=1),c>0&&d.push(`元话语声明句清洗 ${c} 处`),{markdown:b,fixedCount:+(c>0),details:d}}function t(a){let b=a,c=0,d=[];b=b.replace(/(?:[Pp]\s*=\s*[^。;;\u000A,,]*|[qQ]\s*=\s*[^。;;\u000A,,]{0,80}|Σ\s*[Pp][12]?(?:\s*\/\s*cos\s*φ)?[^。;;\u000A,,]{0,40}|[Kk][12]\s*[×*]?\s*Σ\s*[Pp][12]?[^。;;\u000A,,]{0,40}|cos\s*φ[^。;;\u000A,,]{0,20})/gu,()=>(c+=1,""));let e=[];for(let a of b.matchAll(/(?:^|[。;;\n])([^。;;\n]*)(?=[。;;\n]|$)/gu)){let b=(a[1]??"").replace(/[\s|,,::()()×=+-]/gu,"");!(0===b.length||/[\u4e00-\u9fff]/u.test(b))&&(/kW|m³|m3|kVA/u.test(b)||e.push(a[1]??""))}for(let a of[...new Set(e)].sort((a,b)=>b.length-a.length))b=b.replace(a,()=>(c+=1,""));return b=b.replace(/,+/gu,",").replace(/\n{3,}/gu,"\n\n"),c>0&&d.push(`公式形态残留清洗 ${c} 处`),{markdown:b,fixedCount:+(c>0),details:d}}function u(a,b){if(void 0!==b&&b>0){let c=[],d=new Set,f=(a,e,f,g)=>{if(!Number.isFinite(f)||f<=0||f===b||"stage"===g&&f<b)return;let h=`${a}:${e}`;d.has(h)||(d.add(h),c.push({start:a,end:a+e.length,replacement:String(b),detail:`劳动力峰值 ${f}人→${b}人(蓝图权威口径)`}))},g=a=>/^\s*\|.*\|\s*$/u.test(a),h=/峰值|高峰(?:期)?(?:人数|劳动力|作业人员|总人数)?|劳动力总人数|高峰期总人数/u;for(let b of a.matchAll(/[^。;;\n]+/gu)){let c=b[0],d=h.test(c),g=/阶段/u.test(c);if(d||g)for(let g of c.matchAll(/([\d,]+)\s*人/gu)){let c=g[1],h=Number(c.replace(/[,,]/gu,""));if(!Number.isFinite(h)||h<=0)continue;let i=(b.index??0)+(g.index??0)+g[0].indexOf(c),j=a.lastIndexOf("\n",i)+1,{group:k}=(0,e.Zi)(a,i,j);"peak"===k&&f(i,c,h,d?"peak":"stage")}}let i=a.split("\n"),j=0;for(let b of i){if(g(b)&&h.test(b))for(let c of b.matchAll(/([\d,]+)\s*人/gu)){let b=c[1],d=Number(b.replace(/[,,]/gu,""));if(!Number.isFinite(d)||d<=0)continue;let g=j+(c.index??0)+c[0].indexOf(b),{group:h}=(0,e.Zi)(a,g,j);"peak"===h&&f(g,b,d,"peak")}j+=b.length+1}return c.length>0?J(a,c):{markdown:a,fixedCount:0,details:[]}}let c=[...a.matchAll(/高峰期总人数(\d+)人|劳动力总人数(\d+)人|总人数(\d+)人/gu)],d=[...a.matchAll(/高峰(?:期)?人数(\d+)人|峰值(?:需求|人数)?[为约]?(\d+)人/gu)];if(0===c.length||0===d.length)return{markdown:a,fixedCount:0,details:[]};let f=a=>Number(a[1]||a[2]||a[3]),g=new Map;for(let a of c){let b=f(a);b>0&&g.set(b,(g.get(b)||0)+1)}let h=new Map;for(let a of d){let b=f(a);b>0&&h.set(b,(h.get(b)||0)+1)}let i=a=>[...a.entries()].sort((a,b)=>b[1]-a[1])[0],j=i(g),k=i(h);if(void 0===j||void 0===k)return{markdown:a,fixedCount:0,details:[]};let[l,m]=j,[n,o]=k;if(l===n)return{markdown:a,fixedCount:0,details:[]};let p=o>=m?n:l,q=o>=m?l:n,r=a,s=0,t=[],u=RegExp(`(高峰期总人数|劳动力总人数|总人数)(\\d+)人`,"gu"),v=RegExp(`(高峰(?:期)?人数)(\\d+)人`,"gu");return(r=o>=m?r.replace(u,(a,b,c)=>Number(c)===q?`${b}${p}人`:a):r.replace(v,(a,b,c)=>Number(c)===q?`${b}${p}人`:a))!==a&&(s=1,t.push(`劳动力峰值统一:${q}人→${p}人(${o>=m?"高峰口径":"总人数口径"}胜出)`)),{markdown:r,fixedCount:s,details:t}}function v(a,b){if(!b||0===b.length)return{markdown:a,fixedCount:0,details:[],residualCount:0};let{claims:c,ambiguities:d}=(0,e.c6)(a,b);if(0===c.length&&0===d.length)return{markdown:a,fixedCount:0,details:[],residualCount:0};let f=[];for(let a of c)f.push({start:a.start,end:a.end,replacement:String(a.expected),detail:`阶段劳动力 ${a.phase} ${a.actual}人→${a.expected}人`});for(let b of d){let c=(0,e.Ci)(b);if(!c)continue;let d=-1;for(let c of[`${b.phrase}阶段`,b.phrase]){let e=a.lastIndexOf(c,b.start);if(-1!==e&&!(e+c.length>b.start)&&/^(?:约|为|达|共|计)?\s*$/u.test(a.slice(e+c.length,b.start))){d=e;break}}if(-1===d)continue;let g=b.start+b.raw.length;"人"===a.slice(g,g+1)&&f.push({start:d,end:g+1,replacement:`${c.leading.phase}阶段${c.leading.value}人,${c.trailing.phase}阶段${c.trailing.value}人`,detail:`阶段名拼接拆分:${b.phrase} → ${c.leading.phase}(${c.leading.value}人)+${c.trailing.phase}(${c.trailing.value}人)`})}if(0===f.length)return{markdown:a,fixedCount:0,details:[],residualCount:0};let g=[...f].sort((a,b)=>b.start-a.start),h=a,i=[],j=1/0;for(let a of g)a.end>j||(h=`${h.slice(0,a.start)}${a.replacement}${h.slice(a.end)}`,i.push(a),j=a.start);let k=(0,e.c6)(h,b);return k.claims.length>0?{markdown:a,fixedCount:0,details:[],residualCount:k.claims.length}:{markdown:h,fixedCount:i.length,details:i.map(a=>a.detail),residualCount:0}}function w(a){let b=a.split(/\r?\n/u),c=a=>/^\|\s*信息项\s*\|\s*内容\s*\|\s*$/u.test(a.trim()),d=[],e=0;for(;e<b.length;){if(!c(b[e])){e+=1;continue}let a=[],f=e+1;for(f<b.length&&g.N3.test(b[f])&&(f+=1);f<b.length&&g.w7.test(b[f])&&!g.N3.test(b[f]);){let c=b[f].split("|").map(a=>a.trim()),d=c[1]??"";c.length>=4&&d&&a.push({name:d,value:c[2]??"",index:f}),f+=1}d.push({header:e,end:f-1,rows:a}),e=Math.max(f,e+1)}let f=/项目名称|招标人|建设单位|发包人|建设地点|招标范围|计划工期|合同估算价|质量标准/u,h=/资料未明确|暂未明确|待资料复核|未检索到|资料不足|无法确认|建议补充|不适用|可核验信息|系统暂未|项目资料暂未|待确认|待系统|通用兜底|兜底(?:占位|模板|内容)|以本项目招标文件明确内容为准/u,i=d.filter(a=>a.rows.some(a=>f.test(a.name)));if(i.length<=1)return{markdown:a,fixedCount:0,details:[]};let j=i[0],k=new Set,l=[],m=[],n=new Set(j.rows.map(a=>a.name));for(let a of i.slice(1)){let c=[];for(let d of a.rows)!n.has(d.name)&&(h.test(d.value)&&d.value.trim().length<=24||(n.add(d.name),l.push(b[d.index]),c.push(d.name)));for(let b=a.header;b<=a.end;b+=1)k.add(b);for(let c=a.header-1;c>=0&&""===b[c].trim();c-=1)k.add(c);a.end+1<b.length&&""===b[a.end+1].trim()&&k.add(a.end+1);let d=a.header-1;for(;d>=0&&""===b[d].trim();)d-=1;d>=0&&!/^[|#]/u.test(b[d].trim())&&/汇总(?:成表|为表|如下|列出)|如下表|见下表|形成(?:如下)?表|汇总表/u.test(b[d])&&k.add(d),m.push(`基础信息表重复合并:删除第 ${i.indexOf(a)+1} 处重复表${c.length>0?`,并入字段 ${c.join("、")}`:""}`)}let o=[];for(let a=0;a<b.length;a+=1)k.has(a)||o.push(b[a]),a===j.end&&o.push(...l);return{markdown:o.join("\n"),fixedCount:i.length-1,details:m}}function x(a){let b=a.split(/\r?\n/u),c=/资料未明确|暂未明确|待资料复核|未检索到|资料不足|无法确认|建议补充|不适用|可核验信息|系统暂未|项目资料暂未|待确认|待系统|通用兜底|兜底(?:占位|模板|内容)|以本项目招标文件明确内容为准/u,d=new Set,e=[],f=0;for(;f<b.length;){if(!g.w7.test(b[f])||g.N3.test(b[f])){f+=1;continue}let a=f;for(;a+1<b.length&&g.w7.test(b[a+1]);)a+=1;let h=[];for(let c=f+1;c<=a;c+=1)g.N3.test(b[c])||h.push(c);let i=h.filter(a=>b[a].split("|").map(a=>a.trim()).filter(a=>a.length>0).some(a=>a.length<=24&&c.test(a)));if(i.length>0&&i.length<h.length)for(let a of i)d.add(a),e.push(`删除兜底话术表行:${b[a].trim().slice(0,48)}`);f=a+1}return 0===d.size?{markdown:a,fixedCount:0,details:[]}:{markdown:b.filter((a,b)=>!d.has(b)).join("\n"),fixedCount:d.size,details:e}}function y(a){return(a.match(/《([^》]+)》/u)||[])[1]||""}function z(a,b,c){let d=[...a||[]],e=new Set(d.map(a=>y(a))),f=[...c.matchAll(/([\u4e00-\u9fa5]{2,10}?[省市])/gu)].map(a=>a[1]);if(0===f.length||!b)return d;for(let a of(0,i.RY)(b)){let b=y(a);!(!b||e.has(b))&&/[\u4e00-\u9fa5]{2,10}(?:省|市|区|县|自治州|自治区)/u.test(b)&&f.some(a=>b.includes(a))&&(e.add(b),d.push(a))}return d}function A(a,b){if(!b||0===b.length)return{markdown:a,fixedCount:0,details:[]};let c=b.filter(b=>{let c=y(b);return!(!c||!/[\u4e00-\u9fa5]{2,10}(?:省|市|区|县|自治州|自治区)/u.test(c)||/中华人民共和国|国务院/u.test(c))&&!a.includes(`《${c}》`)});if(0===c.length)return{markdown:a,fixedCount:0,details:[]};let d=a.split(/\r?\n/u),e=-1,f=0;for(let a=0;a<d.length;a+=1){let b=d[a].trim(),c=/^(#{2,4})\s+(.+)$/u.exec(b),g=c?null:/^\*\*(.+)\*\*$/u.exec(b);if(!c&&!g)continue;let h=c?c[2]:g?.[1]??"";if(/编制依据|编制说明|编制原则|编制目的/u.test(h)){e=a,f=c?c[1].length:0;break}}if(-1===e)return{markdown:a,fixedCount:0,details:[]};let g=d.length;for(let a=e+1;a<d.length;a+=1){let b=/^(#{1,4})\s+(.+)$/u.exec(d[a].trim());if(b&&(0===f||b[1].length<=f)){g=a;break}}let h=[];for(let a=e+1;a<g;a+=1){let b=d[a],e=/^(\s*[-*]?\s*)([^::]{2,20}[::])\s*(.*)$/u.exec(b);if(!e||!/地方法规|地方性法规|地方规章/u.test(e[2]))continue;let f=c.filter(a=>!b.includes(`《${y(a)}》`));if(0!==f.length){/《[^》]+》/u.test(e[3]||"")?d[a]=`${b.replace(/[。;;\s]*$/u,"")}、${f.join("、")};`:d[a]=`${e[1]}${e[2]}${f.join("、")}及工程所在地现行其他地方性法规与政府规章;`,h.push(`编制依据补写地方性法规:${f.join("、")}`);break}}return 0===h.length?{markdown:a,fixedCount:0,details:[]}:{markdown:d.join("\n"),fixedCount:h.length,details:h}}function B(a){let b=[];for(let c of a.matchAll(/(?:埋深|覆土(?:厚度|深度)?|管顶覆土)(?:不小于|不大于|不低于|不超过|约|为|达|控制在|一般|宜|应)?[^。;;\n|]{0,10}?([\d,,]+(?:\.\d+)?)\s*(mm|cm|米|m)(?![a-zA-Z0-9²³])/gu)){let d=Number((c[1]||"").replace(/[,,]/gu,""));if(!Number.isFinite(d))continue;let e=c[2];if(("mm"===e?d/1e3:"cm"===e?d/100:d)<=10)continue;let f=c.index??0,g=f>0&&/[,,、]/u.test(a[f-1])?1:0;b.push({start:f-g,end:f+c[0].length,detail:`埋深/覆土槽位数值删除:${c[0].trim()}`})}if(0===b.length)return{markdown:a,fixedCount:0,details:[]};let c=a;for(let a of[...b].sort((a,b)=>b.start-a.start))c=`${c.slice(0,a.start)}${c.slice(a.end)}`;return{markdown:c=c.replace(/,,/gu,",").replace(/,;/gu,";").replace(/,。/gu,"。").replace(/,、/gu,"、").replace(/、,/gu,"、").replace(/;,/gu,";").replace(/。,/gu,"。"),fixedCount:b.length,details:b.map(a=>a.detail)}}function C(a){let b=(0,e.LZ)(a);if(0===b.length)return{markdown:a,fixedCount:0,details:[]};let c=a.split(/\r?\n/u),d=[];for(let a of b){let b=a.parts.filter(b=>!a.uncovered.includes(b));if(0===b.length)continue;let e=c[a.lineIndex];if(void 0===e)continue;let f=/^(\s*#{3,4}\s+)(.*?)\s*$/u.exec(e);if(!f)continue;let g=/^([\d.]+[\s\u00a0]+)/u.exec(f[2]),h=`${b.join("、")}工程`;c[a.lineIndex]=`${f[1]}${g?g[1]:""}${h}`,d.push(`标题工程类别覆盖修正:${a.title} → ${g?g[1]:""}${h}`)}return 0===d.length?{markdown:a,fixedCount:0,details:[]}:{markdown:c.join("\n"),fixedCount:d.length,details:d}}function D(a){return a.split(/\r?\n/u).map(a=>{let b=a.trim();return/^#{1,6}\s/u.test(b)||/^\s*\|/u.test(b)||!e.k6.test(a)&&!e.mt.test(a)?a:a.split(/(?<=[。;;])\s*/u).filter(a=>!!(0,e.Bn)(a)||!(e.k6.test(a)||e.mt.test(a))).join("")}).join("\n")}function E(a,b){if(void 0===b||b<=0)return{markdown:a,fixedCount:0,details:[]};let c=a,e=new Set;return(c=c.replace(/养护[^。;;\n|]{0,16}?([一二两三四五六七八九十]+|\d{1,2})\s*年/gu,(a,c)=>{let f=(0,d.a0)(c);return void 0===f||f===b||f<=0?a:(e.add(`${c}年`),a.replace(c,String(b)))}))===a?{markdown:a,fixedCount:0,details:[]}:{markdown:c,fixedCount:1,details:[`绿化养护期统一:${[...e].join("/")}→${b}年(以工程量清单养护期为准)`]}}function F(a){let b=a.split(/\r?\n/u),c=new Set,d=[],f=(0,e.MC)(a),g=a=>(a[0]||"").trim(),h=(a,b)=>(0,e.xX)(a,b);for(let a of f){let b=a.dataRows;if(!(b.length<4))for(let e=Math.floor(b.length/2);e<=Math.ceil(b.length/2);e+=1){let f=b.slice(0,e),i=b.slice(e);if(f.length<2||i.length<2)continue;let j=0,k=-1;for(let a of i){let b=g(a);if(b){for(let c=k+1;c<f.length;c+=1)if(g(f[c])===b&&h(a,f[c])>=.5){j+=1,k=c;break}}}if(j/i.length<.8)continue;let l=a.startLine+2+e;for(let b=l;b<=a.endLine;b+=1)c.add(b);d.push(`第 ${a.startLine+1}~${a.endLine+1} 行表格删除 ${i.length} 行重复数据行`);break}}return 0===c.size?{markdown:a,removedCount:0,details:d}:{markdown:b.filter((a,b)=>!c.has(b)).join("\n"),removedCount:c.size,details:d}}function G(a){let b=(0,e.MC)(a);if(b.length<2)return{markdown:a,removedCount:0};let c=a.split(/\r?\n/u),d=new Set;for(let a=0;a<b.length;a+=1)for(let c=a+1;c<b.length;c+=1){let f=b[a],g=b[c];if(d.has(f.startLine)||d.has(g.startLine))continue;let h=f.header.length>0&&f.header.length===g.header.length&&f.header.every((a,b)=>a===g.header[b]),i=(0,e.xX)(f.header,g.header),j=(0,e.xX)(f.firstCol,g.firstCol),k=(0,e.xX)(f.dataCells,g.dataCells),l=Math.max((0,e.HW)((0,e.sg)(f.dataCells),(0,e.sg)(g.dataCells)),(0,e.HW)((0,e.sg)(g.dataCells),(0,e.sg)(f.dataCells)));if(!(h&&k>=.6)&&!(i>=.7&&j>=.6)&&!(j>=.6&&l>=.6))continue;let[m,n]=f.bodyChars>=g.bodyChars?[f,g]:[g,f];for(let a=n.startLine;a<=n.endLine;a+=1)d.add(a)}return 0===d.size?{markdown:a,removedCount:0}:{markdown:c.filter((a,b)=>!d.has(b)).join("\n"),removedCount:d.size,removedLineNumbers:[...d].sort((a,b)=>a-b)}}function H(a){let b=G(a.map(a=>a.content).join("\n\n"));if(0===b.removedCount)return{removedCount:0,chapterFixed:0};let c=new Set(b.removedLineNumbers||[]),d=0,e=0,f=0;for(let b=0;b<a.length;b+=1){let g=a[b],h=g.content.split("\n"),i=new Set;for(let a=0;a<h.length;a+=1)c.has(d+a)&&i.add(a);i.size>0&&(g.content=h.filter((a,b)=>!i.has(b)).join("\n"),e+=i.size,f+=1),d+=h.length,b<a.length-1&&(d+=1)}return{removedCount:e,chapterFixed:f}}function I(a){let b=a.split(/\r?\n/u),c=new Set,d=new Set,f=[],g=[],h=()=>{let a=(0,e.Jt)(f.join(""));a&&(c.has(a)?g.forEach(a=>d.add(a)):c.add(a)),f=[],g=[]};return(b.forEach((a,b)=>{let c=a.trim();if(!c||/^#{1,6}\s/u.test(c)||/^\s*\|/u.test(c))return void h();if(/^[-*•]\s/u.test(c)){h(),f=[c],g=[b],h();return}f.push(c),g.push(b)}),h(),0===d.size)?{markdown:a,removedCount:0}:{markdown:b.filter((a,b)=>!d.has(b)).join("\n"),removedCount:d.size}}function J(a,b){if(0===b.length)return{markdown:a,fixedCount:0,details:[]};let c=[...b].sort((a,b)=>a.start-b.start||a.end-b.end),d="",e=0,f=0,g=[];for(let b of c)b.start<e||b.end<=b.start||(d+=a.slice(e,b.start)+b.replacement,e=b.end,f+=1,g.push(b.detail));return{markdown:d+=a.slice(e),fixedCount:f,details:[...new Set(g)].slice(0,8)}}let K=/[郢庄岗塘圩坝池井]/u,L=/[郢庄岗塘圩坝]/u,M=/(?:直径|DN|Φ|φ)\s*\d+/u;function N(a,b){let c=a,f=0,g=[],h=function(a){if(!a)return{nodeAuthorities:[],crossSectionAuthorities:{},codeAuthorities:{},quantityAuthorities:[]};let b=[];for(let c of a.byDomain.get("schedule")??[])c.label.startsWith("里程碑:")&&"number"==typeof c.value&&!(c.value<=0)&&b.push({node:c.label.slice(4),offset:`第${c.value}日`});let c={},d=a.byDomain.get("equipment")??[],f=a.byDomain.get("quantity")??[],g=[...d,...f];for(let[a,b]of Object.entries(e.tH)){let d=g.find(a=>b.test(a.label)||a.anchors.some(a=>b.test(a)));d&&"number"==typeof d.value&&d.value>0&&(c[a]=d.value)}for(let b of[{key:"villageCount",domain:"redline",label:"自然村数量"},{key:"slackDays",domain:"schedule",label:"机动工期"},{key:"scheduleDays",domain:"contract",label:"总工期"}]){let d=(a.byDomain.get(b.domain)??[]).find(a=>a.label===b.label&&"number"==typeof a.value);d&&"number"==typeof d.value&&d.value>0&&(c[b.key]=d.value)}let h={};for(let b of a.byDomain.get("spec")??[])"string"==typeof b.value&&b.value&&(h[b.anchors[0]??b.label]=b.value);let i=Object.values(e.tH),j=f.filter(a=>"number"==typeof a.value&&a.value>=10).filter(a=>/[\u4e00-\u9fa5]{3,}/u.test(a.label)).filter(a=>!(/台|套/u.test(a.unit)&&i.some(b=>b.test(a.label)))).map(a=>({name:a.label,value:a.value,unit:a.unit,groups:a.groups})),k=(a.byDomain.get("labor")??[]).find(a=>"劳动力峰值"===a.label);return{nodeAuthorities:b,crossSectionAuthorities:c,codeAuthorities:h,quantityAuthorities:j,laborPeakAuthority:k&&"number"==typeof k.value&&k.value>0?k.value:void 0}}(b?.authorityIndex),i={...h.crossSectionAuthorities};b?.scheduleAuthority!==void 0&&b.scheduleAuthority>0&&(i.scheduleDays=b.scheduleAuthority),b?.assemblyRateAuthority!==void 0&&b.assemblyRateAuthority>0&&(i.prefabRatio=b.assemblyRateAuthority);let l=b?.laborPeakAuthority??h.laborPeakAuthority;for(let a of[a=>(function(a,b){let c=void 0!==b&&b>0?b:(0,d.QW)(a);if(void 0===c)return{markdown:a,fixedCount:0,details:[]};let f=[],g=b=>{for(let g of a.matchAll(b)){let b=Number(g[1].replace(/[,,]/gu,""));if(!Number.isFinite(b)||b<=0)continue;let h=g.index+g[0].indexOf(g[1]),i=a.lastIndexOf("\n",g.index)+1,j=a.indexOf("\n",g.index);-1===j&&(j=a.length),/^\s*\|.*\|\s*$/u.test(a.slice(i,j))||"peak"!==(0,e.Zi)(a,h,i).group||(0,d.rx)(a,h)||/人(?:以内|以下|之内)/u.test(a.slice(h+g[1].length,h+g[1].length+8))&&/控制/u.test(a.slice(Math.max(0,h-16),h))||b!==c&&f.push({start:h,end:h+g[1].length,replacement:String(c),detail:`劳动力峰值 ${b}人→${c}人(以分阶段投入明细表为准)`})}};for(let b of(g(d.Dp),g(e.X6),a.matchAll(/(?:高峰期|高峰|峰值)[^。;;\n]{0,16}?控制(?:在|为|到)?(?:约)?\s*([\d,]+)\s*人(?:以内|以下|之内)?/gu))){let a=Number(b[1].replace(/[,,]/gu,""));if(!Number.isFinite(a)||a<=0||a>=c)continue;let d=b.index+b[0].indexOf(b[1]);f.push({start:d,end:d+b[1].length,replacement:String(c),detail:`劳动力控制上限 ${a}人→${c}人(与分阶段投入明细表峰值自洽)`})}return J(a,f)})(a,l),a=>(function(a,b){let c=a,d=[],f=b?.scheduleAuthority;if(void 0!==f&&f>0){let a=[...c.matchAll(/(?:开工令下发后|开工后)第(\d{1,3})[日天]/gu)].map(a=>Number(a[1])),b=a.length>0?Math.max(...a):0;if(b>0&&b!==f){let a=f/b,e=[];for(let b of c.matchAll(/(?:开工令下发后|开工后)第(\d{1,3})[日天]/gu)){let c=Math.max(1,Math.round(Number(b[1])*a)),d=b.index+b[0].indexOf(b[1]);e.push({start:d,end:d+b[1].length,replacement:String(c),detail:`节点日期 ${b[1]}日→${c}日(总工期${f}日历天体系缩放)`})}for(let b of c.matchAll(/第(\d{2,3})日(?=[^。;;\n]{0,8}竣工验收)/gu)){let c=Math.max(1,Math.round(Number(b[1])*a));e.push({start:b.index,end:b.index+b[0].length,replacement:`第${c}日`,detail:`竣工验收节点 ${b[1]}日→${c}日(总工期${f}日历天体系缩放)`})}for(let b of c.matchAll(/(竣工验收(?:合格)?[^。;;\n]{0,8}?[((])第(\d{2,3})日([))])/gu)){let c=Math.max(1,Math.round(Number(b[2])*a));e.push({start:b.index,end:b.index+b[0].length,replacement:`${b[1]}第${c}日${b[3]}`,detail:`竣工验收节点 ${b[2]}日→${c}日(总工期${f}日历天体系缩放)`})}if(e.length>0){let a=J(c,e);c=a.markdown,d.push(...a.details.slice(0,8));let b=/^(\|[^|]*\|)\s*开工令下发后第(\d+)日\s*\|\s*开工令下发后第(\d+)日\s*\|\s*(\d+)\s*日\s*(\|.*)$/u,f=c.split(/\r?\n/u),g=0,h=0;for(let a=0;a<f.length;a+=1){let c=f[a].match(b);if(!c){g=0;continue}let d=Number(c[3]),e=g>0?g+1:Number(c[2]),i=Math.max(d,e+1),j=i-e+1;(e!==Number(c[2])||i!==d||j!==Number(c[4]))&&(f[a]=`${c[1]} 开工令下发后第${e}日 | 开工令下发后第${i}日 | ${j}日 ${c[5]}`,h+=1),g=i}h>0&&(c=f.join("\n"),d.push(`三列进度表链式重算 ${h} 行(开始/持续列与缩放后结束列自洽)`))}}}let g=c.split(/\r?\n/u),h=/^\|.+\|$/u,i=[],j=0;for(let a of g)i.push({start:j,end:j+a.length}),j+=a.length+1;let k=a=>{let b=[];return/清理|预验收|收尾/u.test(a)&&b.push("cleanup"),/竣工验收/u.test(a)&&b.push("completion"),/装饰|幕墙/u.test(a)&&b.push("decoration"),/机电/u.test(a)&&b.push("mep"),/二次|ALC|墙板|砌体/u.test(a)&&b.push("secondary"),/主体|封顶/u.test(a)&&b.push("topping"),/土方|基坑|基础|支护/u.test(a)&&b.push("excavation"),b},l=a=>(a.split("|")[1]||"").trim(),m=a=>{let b;for(let c of a.matchAll(/第(\d{1,3})[日天]/gu)){let d=a.slice(Math.max(0,(c.index??0)-8),c.index??0);/(?:合格|封顶|移交|完成|进场|退场)后$/u.test(d)||(b={value:Number(c[1]),start:(c.index??0)+c[0].indexOf(c[1]),end:(c.index??0)+c[0].lastIndexOf(c[1])+c[1].length})}return b},n=new Map,o=[];for(let a=0;a<g.length;a+=1){if(!h.test(g[a].trim()))continue;let b=a;for(;a<g.length&&h.test(g[a].trim());)a+=1;let c=a,d=g.slice(Math.max(0,b-6),b).join("\n");if(/总进度计划|施工总进度|总进度安排|总工期控制|总工期/u.test(d)){for(let a=b;a<c;a+=1){let b=l(g[a]),c=m(g[a]);if(!(!c||/---/u.test(b)))for(let a of k(b)){let b=n.get(a);(void 0===b||c.value>b)&&n.set(a,c.value)}}o.push({start:i[b].start,end:i[c-1].end})}}for(let a of b?.nodeAuthorities??[]){let b=a.offset.match(/第(\d{1,3})[日天]/u);if(!b)continue;let c=Number(b[1]);if(!Number.isFinite(c)||c<1||c>3e3)continue;let d=e.ae.find(b=>b.re.test(a.node))?.key;if(void 0===d)continue;let f=n.get(d);void 0!==f&&f!==c&&(o.length=0),n.set(d,c)}if(0===n.size)return{markdown:c,fixedCount:+(d.length>0),details:d};let p=[],q=a=>!o.some(b=>a>=b.start&&a<=b.end);for(let a=0;a<g.length;a+=1){if(!h.test(g[a].trim())||!q(i[a].start))continue;let b=l(g[a]),c=m(g[a]);if(!c||/---/u.test(b))continue;let d=k(b).map(a=>n.get(a)).find(a=>void 0!==a);if(void 0===d||c.value===d)continue;let f=e.ae.find(a=>k(b).includes(a.key))?.label||b.slice(0,12);p.push({start:i[a].start+c.start,end:i[a].start+c.end,replacement:String(d),detail:`表格节点“${f}”${c.value}日→${d}日(以总进度计划/总工期控制表为准)`})}let r=(a,b,c,d,f)=>{let g=e.ae.find(b=>b.re.test(a))?.key;if(void 0===g||!Number.isFinite(b)||b<1||b>3e3)return;let h=n.get(g);void 0!==h&&b!==h&&q(c)&&p.push({start:c,end:d,replacement:String(h),detail:`节点“${e.ae.find(a=>a.key===g)?.label||g}”工期 ${b}日→${h}日(以总进度计划表为准)`})};for(let a of c.matchAll(/第(\d{2,3})日(?:(?![))→。;;\n,、]).){0,14}?完成(?:(?![((→。;;\n,、]).){0,12}?(基坑支护及土方外运|装饰装修及幕墙|机电安装及智能化调试|室外工程及竣工验收|地下结构出正负零|主体结构封顶|正负零|封顶)/gu)){let b=a.index+a[0].indexOf(a[1]);r(a[2],Number(a[1]),b,b+a[1].length,a[0].slice(0,40))}for(let a of c.matchAll(/(竣工验收)(?:(?!(?:后|第\d{2,3}[日天]|,|、|→)).){0,10}?第(\d{2,3})[日天]/gu)){let b=a.index+a[0].indexOf(a[2]);r(a[1],Number(a[2]),b,b+a[2].length,a[0].slice(0,40))}for(let a of c.matchAll(/(基坑支护|正负零|封顶|装饰装修|机电安装|竣工验收)(?:(?!(?:第\d{2,3}[日天]|,|、)).){0,8}?完成[^。;;\n]{0,10}?第(\d{2,3})[日天]/gu)){let b=a.index+a[0].indexOf(a[2]);r(a[1],Number(a[2]),b,b+a[2].length,a[0].slice(0,40))}for(let a of c.matchAll(/(主体(?:结构)?封顶)(?!后)(?:(?!(?:第\d{2,3}[日天]|,|、|完成|\||[。;;\n])).){0,20}?第(\d{2,3})日/gu)){let b=a.index+a[0].indexOf(a[2]);r(a[1],Number(a[2]),b,b+a[2].length,a[0].slice(0,40))}let s=J(c,p);return{markdown:s.markdown,fixedCount:s.fixedCount+ +(d.length>0),details:[...d,...s.details].slice(0,12)}})(a,{scheduleAuthority:b?.scheduleAuthority,nodeAuthorities:h.nodeAuthorities}),a=>(function(a,b,c){let d=[];for(let c of e._F){if("number"!==c.kind)continue;let f=new Set,g=[],h=[];for(let b of c.patterns)for(let d of a.matchAll(b)){let b=d[0].slice(0,40);if(e.we.test(b)||/按不少于|不少于|至少|不低于/u.test(b))continue;if("scheduleDays"===c.key){let c=b.indexOf(String(d[1]));if(c>=0&&/(?:阶段|第\d+日|至第|共|集中)/u.test(a.slice(Math.max(0,(d.index||0)+c-16),(d.index||0)+c)))continue}let i=a.lastIndexOf("\n",d.index)+1,j=a.indexOf("\n",d.index);-1===j&&(j=a.length);let k=a.slice(i,j);if(e.ZN.test(k))continue;let l=Number(d[1]);if(!Number.isFinite(l)||l<=0)continue;let m=(0,e.Rw)(a,d.index||0,b,i);/^\s*\|/u.test(k)?(f.add(l),h.push({value:l,group:m})):g.push({value:l,group:m})}let i=b?.[c.key],j=void 0!==i&&i>0?i:1===f.size?[...f][0]:void 0;if(void 0!==j&&[...g.filter(a=>""===a.group),...void 0!==i?h:[]].some(a=>a.value!==j))for(let b of c.patterns)for(let f of a.matchAll(b)){let b=f[0].slice(0,40);if(e.we.test(b))continue;let g=a.lastIndexOf("\n",f.index)+1,h=a.indexOf("\n",f.index);-1===h&&(h=a.length);let k=a.slice(g,h);if(e.ZN.test(k)||/^\s*\|/u.test(k)&&void 0===i)continue;let l=Number(f[1]);if(!Number.isFinite(l)||l<=0||!/^\s*\|/u.test(k)&&""!==(0,e.Rw)(a,f.index||0,b,g)||l===j)continue;let m=f.index+f[0].indexOf(f[1]),n=void 0!==i&&i>0?"scheduleDays"===c.key?"以绑定资料计划工期为准":"以绑定资料锁定口径为准":"以表格口径为准";d.push({start:m,end:m+f[1].length,replacement:String(j),detail:`${c.label} ${l}${c.unit}→${j}${c.unit}(${n})`})}}for(let b of e._F){if("code"!==b.kind)continue;let f=c?.[b.key];if(!f)continue;let g=[];for(let c of b.patterns)for(let b of a.matchAll(c)){let c=b[0].slice(0,40);if(e.we.test(c))continue;let d=a.lastIndexOf("\n",b.index)+1,h=a.indexOf("\n",b.index);-1===h&&(h=a.length);let i=a.slice(d,h);if(e.ZN.test(i)||/按不少于|不少于|至少|不低于/u.test(c)||!/^\s*\|/u.test(i)&&""!==(0,e.Rw)(a,b.index||0,"",d)||b[1]===f)continue;let j=b.index+b[0].indexOf(b[1]);g.push({start:j,end:j+b[1].length,raw:c})}for(let c of g)d.push({start:c.start,end:c.end,replacement:f,detail:`${b.label} ${a.slice(c.start,c.end)}→${f}(以工程量清单锁定口径为准)`})}return J(a,d)})(a,i,h.codeAuthorities),a=>(function(a,b){if("slope"!==b)return{markdown:a,fixedCount:0,details:[]};let c=0,e=0,f=a.split(/\r?\n/u).map(a=>{let b=a.trim();return/^#{1,6}\s/u.test(b)||/^\s*\|/u.test(b)||!d.re.test(a)?a:a.split(/(?<=[。;;])/u).map(a=>{if(!d.re.test(a))return a;if(!d.mO.test(a))return c+=1,"";let b=/([。;;])$/u.exec(a)?.[1],f=a.split(/[,、]/u).filter(a=>!k.test(a)).join(",");for(let[a,c]of(void 0===b||/[。;;]$/u.test(f)||(f+=b),j))f=f.replace(a,c);return e+=1,f}).join("")});return 0===c&&0===e?{markdown:a,fixedCount:0,details:[]}:{markdown:f.join("\n"),fixedCount:c+e,details:[`支护体系确定性裁决(图纸/地质槽位:放坡喷锚类):删除桩族句 ${c} 句、改写混句 ${e} 句`]}})(a,b?.supportAuthority),a=>(function(a,b=[]){if(0===b.length)return{markdown:a,fixedCount:0,details:[]};let c=[],e=[],f=[];for(let g of[...b].sort((a,b)=>b.name.length-a.name.length)){let b=RegExp((0,d.Lp)(g.name),"gu"),h=RegExp(`(?<![\\dA-Za-z])(\\d(?:[\\d,]*(?:\\.\\d+)?))\\s*${(0,d.YZ)(g.unit)}(?![0-9a-zA-Z])`,"gui");for(let d of a.matchAll(b)){let b=d.index??0,i=b+d[0].length;if(f.some(a=>b<a.end&&i>a.start))continue;f.push({start:b,end:i});let j=a.lastIndexOf("\n",b)+1,k=a.indexOf("\n",b);-1===k&&(k=a.length);let l=a.slice(j,k);if(/^\s*\|/u.test(l))continue;let m=a.slice(Math.max(0,b-12),b);if(K.test(m)||M.test(a.slice(Math.max(0,b-8),b))||M.test(a.slice(i,i+8)))continue;let n=a.lastIndexOf("\n\n",b),o=-1===n?0:n+2,p=a.indexOf("\n\n",b),q=-1===p?a.length:p;if(L.test(a.slice(o,q)))continue;let r=a.slice(i,i+24),s=Math.min(...[r.search(/[、。;,]/u),r.search(/\n/u)].filter(a=>a>=0).concat([r.length])),t=r.slice(0,s),u=null;for(let a of t.matchAll(h)){if(/(?:间距|不大于|不小于|≥|≤|宽度|厚度|高度|深度|坡度)[^0-9]*$/u.test(t.slice(0,a.index??0)))continue;let b=a[1],c=Number(b.replace(/,/gu,""));Number.isFinite(c)&&!(c<=0)&&(null===u||Math.abs(c-g.value)<Math.abs(u.value-g.value))&&(u={offset:i+(a.index??0)+a[0].indexOf(b),value:c,raw:b})}if(!u)continue;let v=(a,b)=>1e-6>Math.abs(a-b);if(!(g.groups??[]).some(a=>v(a.value,u.value))){if(u.value===g.value){e.push({ns:b});continue}c.push({start:u.offset,end:u.offset+u.raw.length,raw:u.raw,value:u.value,authority:g,ns:b,ne:i})}}}let g=(a,b)=>{if(a.length>10)return!1;let c=a.map(a=>Math.round(100*a)),d=Math.round(100*b);for(let a=1;a<1<<c.length;a+=1){let b=0,e=0;for(let d=0;d<c.length;d+=1)(a&1<<d)!=0&&(b+=c[d],e+=1);if(e>=2&&b===d)return!0}return!1},h=new Set;{let a=new Map;for(let b of c){let c=a.get(b.authority.name)??[];c.push(b.value),a.set(b.authority.name,c)}for(let[b,d]of a){let a=[...new Set(d)];a.length>=2&&g(a,c.find(a=>a.authority.name===b)?.authority.value??0)&&h.add(b)}}let i=b=>{let c=Math.max(a.lastIndexOf("。",b),a.lastIndexOf("\n",b)),d=a.indexOf("。",b);-1===d&&(d=a.length);let e=a.indexOf("\n",b);return -1===e&&(e=a.length),{start:c+1,end:Math.min(d,e)+1}},j=[];for(let b of c){let d=i(b.ns),f=a.lastIndexOf("\n\n",b.ns),g=-1===f?0:f+2;if(/(?:单体|单座|单栋|单幢|每座|每栋|化粪池)/u.test(a.slice(g,d.end)))continue;let k=c.filter(a=>a!==b&&a.ns>=d.start&&a.ns<d.end).length+1,l=e.filter(a=>a.ns>=d.start&&a.ns<d.end).length;k>=2&&l>=1||h.has(b.authority.name)||j.push(b)}return J(a,j.map(a=>({start:a.start,end:a.end,replacement:String(a.authority.value),detail:`${a.authority.name} ${a.value}${a.authority.unit}→${a.authority.value}${a.authority.unit}(以工程量清单汇总值为准)`})))})(a,h.quantityAuthorities),a=>(function(a){let b=0,c=[];return{markdown:a.replace(/第(\d{1,4})订(?=[))])/gu,(a,d)=>(b+=1,c.push(`法规文号残缺:第${d}订→第${d}号`),`第${d}号`)),fixedCount:b,details:c}})(a),a=>(function(a){let b=0,c=[];return{markdown:a.replace(/(?<=[\u4e00-\u9fa5])(?<!第)(?<!,)(\d{4,6})(?=主?\s*要?\s*工程量(?!清单))/gu,a=>(b+=1,c.length<12&&c.push(`误入数字粘连清洗:删除“${a}”并补逗号`),",")),fixedCount:b,details:c}})(a),a=>(function(a,b){if(!b||b<=0)return{markdown:a,fixedCount:0,details:[]};let c=0,d=[];return{markdown:a.replace(/第(\d{1,3})日[ \t\u00a0]*(至|~|~)[ \t\u00a0]*第(\d{4,6})[ \t\u00a0]*日/gu,(a,e,f,g)=>{let h=Number(e),i=Number(g);return h>b||i<=b?a:(c+=1,d.length<12&&d.push(`日区间超限截断:“${a.replace(/\s+/gu,"")}”→“第${e}日${f}第${b}日”`),`第${e}日${f}第${b}日`)}),fixedCount:c,details:d}})(a,b?.scheduleAuthority)]){let b=a(c);b.markdown!==c&&(c=b.markdown,f+=b.fixedCount,g.push(...b.details))}return{markdown:c,fixedCount:f,details:g.slice(0,12)}}function O(a){let b=(a=a.replace(/[。;!?]{2,}/gu,a=>a[0]??"").replace(/,(?=[。;!?])/gu,"")).split(/(?<=[。!?;\n])/u),c=[],d=0,e=[];for(let a of b){let b=a.replace(/\s+/gu,"");if(b.length>=20&&!/^[|#>]/.test(a.trimStart())&&e[e.length-1]?.replace(/\s+/gu,"")===b){d+=1,c.push(`相邻整句重复折叠:“${b.slice(0,24)}”`);continue}e.push(a)}return{markdown:e.map(a=>{let b=a.trimStart();if(/^[|#]/.test(b))return a;let e=a,f=!0,g=0;for(;f&&g<20;){f=!1,g+=1;for(let a=16;a>=4;a-=1){for(let b=0;b+2*a<=e.length;b+=1){let g=e.slice(b,b+a);if((/[0-9]/.test(g)||/[\u4e00-\u9fa5]/.test(g))&&e.slice(b+a,b+2*a)===g){e=e.slice(0,b+a)+e.slice(b+2*a),f=!0,d+=1,c.push(`相邻重复短语折叠:“${g.slice(0,24)}”`);break}}if(f)break}if(f)continue;for(let a=20;a>=9;a-=1){for(let b=0;b+a<=e.length;b+=1){let g=e.slice(b,b+a);if(!/[\u4e00-\u9fa5]/.test(g[0]||""))continue;let h=/[0-9]/.test(g);if(!h&&a<12||h&&(/\d$/.test(g)||/[|→\-—]/.test(g)))continue;let i=e.indexOf(g);if(i!==b||-1===e.indexOf(g,i+1))continue;let j=0,k=e.indexOf(g,i+1);for(;-1!==k;)e=e.slice(0,k)+e.slice(k+a),j+=1,k=e.indexOf(g,k);if(j>0){f=!0,d+=j,c.push(`隔位重复短语折叠:“${g.slice(0,24)}”\xd7${j}`);break}}if(f)break}if(f)continue;let a="kW|kVA|MPa|㎡|m\xb2|m\xb3|mm|cm|%",b=RegExp(`(\\d+(?:\\.\\d+)?)(?:${a})(?=\\s*\\d+(?:\\.\\d+)?(?:${a}))`,"gu").exec(e);if(b){let g=b.index+b[0].length,h=e.slice(g).match(RegExp(`^\\s*(\\d+(?:\\.\\d+)?)(?:${a})`));h&&(e=e.slice(0,g)+e.slice(g+h[0].length),f=!0,d+=1,c.push(`数值单位粘连折叠:“${b[0]}${h[0].trim()}”→“${b[0]}”`))}if(f)continue;let h=e;(e=e.replace(/[,,]{2,}/gu,",").replace(/[。;!?]{2,}/gu,a=>a[0]).replace(/,(?=[。;!?])/gu,""))!==h&&(f=!0,c.push("残留重复标点归一"))}return e}).join(""),fixedCount:d,details:c.slice(0,8)}}function P(a,b){let c=[];if(b?.areaSummary)for(let d of a.matchAll(/\|\s*按施工图设计文件确定\s*\|/gu))c.push({start:d.index+1,end:d.index+d[0].length-1,replacement:` ${b.areaSummary} `,detail:`工程概况一览表建设规模套话→“${b.areaSummary}”`});if(b?.scheduleDays!==void 0&&b.scheduleDays>0)for(let d of a.matchAll(/\|\s*按合同约定工期执行\s*\|/gu))c.push({start:d.index+1,end:d.index+d[0].length-1,replacement:` ${b.scheduleDays}个日历天 `,detail:`工程概况一览表工期套话→“${b.scheduleDays}个日历天”`});if(0===c.length)return{markdown:a,fixedCount:0,details:[]};let d=J(a,c);return{markdown:d.markdown,fixedCount:d.fixedCount,details:d.details}}function Q(a){let b=a.match(/(### 6\.1\s+施工部署与施工流水组织[\s\S]*?)(?=### 6\.2|## 第[六七]章|$)/u);if(!b)return{markdown:a,fixedCount:0,details:[]};let c=b[0],d=["三检","样板引路","隐蔽验收","见证取样","试块养护","分部分项报验"],e=d.filter(a=>c.includes(a)).length;if(e>=3)return{markdown:a,fixedCount:0,details:[]};let f=`
213
- 质量保障体系与安全文明管理同频运行:项目部实行“三检制”(自检、互检、交接检),每道工序经班组自检、质量员复检合格后报监理单位验收;推行样板引路制度,主体结构、装配式构件安装、ALC墙板安装、幕墙安装等主要分项工程在大面积施工前先做样板,经建设、监理单位验收确认后方可展开;隐蔽工程(钢筋、防水、管线预埋等)覆盖前由质量员组织隐蔽验收并留存影像记录;原材料进场按见证取样要求送检,混凝土试块按规范留置并落实标养与同条件养护;分部分项工程验收严格执行报验程序,验收资料与工程进度同步归档,确保“合格”质量标准与“确保黄山杯”创优目标逐级落实。`,g=(b.index??0)+c.length;return{markdown:a.slice(0,g)+f+a.slice(g),fixedCount:1,details:[`6.1 施工部署块补全质量保障协同段(核心术语 ${d.length-e}/${d.length} 缺失)`]}}let R=[/农民工工资专用账户|工资专用账户|农民工工资/u,/劳务用工|劳务管理|实名制|工资支付/u,/农民工|劳务/u];function S(a){if(/(?:办理|缴纳|参保|缴费).{0,8}工伤保险|工伤保险.{0,8}(?:办理|缴纳|参保|缴费)/u.test(a))return{markdown:a,fixedCount:0,details:[]};let b=a.split("\n");for(let a of R)for(let c=0;c<b.length;c+=1){let d=b[c];if(/^\s*[#|<>]|^\s*[-*·]/u.test(d)||!a.test(d))continue;let e="项目部按规定为作业人员办理工伤保险,参保信息纳入实名制管理,发生工伤事故时按法定程序申报处理。";return b[c]=/[。;;]$/u.test(d.trim())?`${d}${e}`:`${d}。${e}`,{markdown:b.join("\n"),fixedCount:1,details:["劳务管理段落补写工伤保险缴纳表述"]}}return{markdown:a,fixedCount:0,details:[]}}function T(a){let b=a,c=0,d=[];for(let a of[{from:/施工过程中如涉及危险性较大的分部分项工程[^。;;\n]*?(?:未经审批不得实施|后方可实施|方可实施)/gu,to:"危险性较大的分部分项工程按住房和城乡建设部令第37号与建办质〔2018〕31号规定逐项辨识、分级管控:凡达到危大工程判定线的分项,施工前编制专项施工方案,由技术负责人审核签字后报监理审批;超过一定规模的危大工程专项方案组织专家论证,未经审批不得实施",detail:"危大「如涉及」假设表述改写为逐项辨识分级管控"},{from:/发现[^。;;\n]{0,18}?(?:缺项|矛盾|缺失|遗漏)[^。;;\n]{0,24}?(?:时|后)在?\d+小时(?:内)?[^。;;\n]{0,10}?(?:补测|补正|补救|补录|补记)/gu,to:"记录经复核确认完整、数据准确后归档保存",detail:"踏勘补测类负面假设改写为复核确认归档"},{from:/确保[^。;;\n]{0,20}?与(?:本)?施工组织设计的?一致性/gu,to:"确认现场条件与施工组织设计相符",detail:"现场条件一致性两可暗示改写为确认相符"},{from:/本工程不允许分包[^。;;\n]{0,40}?组织实施/gu,to:"本工程全部施工任务由我公司项目部自行组织实施,严禁违法分包、转包及挂靠行为",detail:"「不允许分包」短板暗示改写为自主组织正向表述"},{from:/针对踏勘中发现的与设计图纸不一致或设计未明确的事项[^。;;\n]{0,60}?按以下[口经]径处理/gu,to:"项目部对照施工图与现场条件逐项复核,按以下程序处理",detail:"「设计图纸不一致」负面假设改写为对照复核程序"},{from:/杜绝施工过程中以工程量组价缺失为由提出变更申请/gu,to:"开工前完成工程量与清单核对,施工过程中严格按合同约定计量计价",detail:"「组价缺失」短板暴露改写为开工前核对闭环"},{from:/涉及危险性较大的分部分项工程,我公司将依据([^。;;\n]{0,80}?),在施工前单独编制专项施工方案并履行审批程序。/gu,to:"本工程危险性较大的分部分项工程管理执行$1规定:施工前编制专项施工方案,履行审批程序后实施。",detail:"危大「涉及」假设句式改写为管理执行闭环"},{from:/上述参数在后续各分项施工方案中逐项落位执行。?/gu,to:"上述参数作为全文统一控制基准,各分项施工方案均按此执行。",detail:"「后续落位」延迟承诺改写为统一控制基准"},{from:/补疑文件对施工内容作出以下明确修正:([^。\n]{0,200}?)。上述修正内容已纳入本施工组织设计对应分项方案,施工过程中不再另行变更。?/gu,to:"招标文件补疑明确:$1。上述内容已纳入本施工组织设计对应分项方案并统一执行。",detail:"「补疑修正不再变更」负面暗示改写为统一执行"},{from:/项目部按《建筑施工企业、工程项目安全生产管理机构设置及安全生产管理人员配备办法》(建质规〔2025〕3号)配备专职安全生产管理人员,公司分管安全负责人每月带班检查不得少于两次/gu,to:"项目部严格执行《建筑施工企业、工程项目安全生产管理机构设置及安全生产管理人员配备办法》(建质规〔2025〕3号),专职安全生产管理人员按标准配足配齐,公司分管安全负责人每月带班检查不少于两次并留存检查记录",detail:"安全人员配备与带班检查短板暗示改写为配足配齐正向表述"},{from:/项目部在开工令下发后第(\d+)日亮化及附属设施安装完成后,随即启动竣工清理与验收移交程序,确保开工令下发后第(\d+)日完成全部验收移交工作/gu,to:"亮化及附属设施安装于开工令下发后第$1日完成,竣工清理与验收移交按计划组织,开工令下发后第$2日全部验收移交工作完成",detail:"竣工验收赶工暗示改写为按计划组织正向表述"},{from:/隐蔽工程在施工过程中已按(\d+)小时提前通知要求完成验收,竣工阶段不再重复检验,但须将全部隐蔽验收影像资料纳入竣工资料归档/gu,to:"隐蔽工程按$1小时提前通知要求组织验收,验收合格后方可进入下道工序,全部隐蔽验收影像资料纳入竣工资料归档",detail:"「竣工阶段不再重复检验」自伤暗示改写为验收闭环正向表述"},{from:/本施工组织设计的编制边界为:本项目位于[^,。;;\n]{2,40},以补疑澄清文件对清单及图纸的修正口径为优先执行依据。?/gu,to:"本施工组织设计编制依据包括招标文件、补疑澄清文件、施工图及工程量清单,正文数据口径与补疑澄清文件修正口径保持一致。",detail:"编制边界两可暗示改写为编制依据一致性正向表述"},{from:/施工组织设计覆盖从开工令下发至竣工验收合格后移交保修的全过程管理,不包含招标范围以外的工程内容。?/gu,to:"施工组织设计覆盖开工令下发至竣工验收移交保修的全过程管理,全过程管理内容与招标范围一致。",detail:"「不包含招标范围以外」短板暗示改写为覆盖范围一致性表述"},{from:/面层混凝土弯拉强度达到设计强度且填缝完成前不得开放交通,由试验员按每检验批留置试块并送检,强度报告归档闭环。?/gu,to:"面层混凝土达到设计强度且填缝完成后开放交通,试验员按每检验批留置试块送检,强度报告归档形成质量闭环。",detail:"「不得开放交通」负面表述改写为达到条件后开放交通正向表述"},{from:/本项目以成熟可靠的常规工艺为主,未采用(?:行业认定的)?新(?:技术|材料|工艺|设备)(?:、新(?:技术|材料|工艺|设备)){1,3}(?:或新(?:技术|材料|工艺|设备))?[^。;;\n]{0,20}?。?/gu,to:"本项目工艺选择以成熟可靠为原则,全部采用经工程实践验证的成熟工艺、常规材料和标准化设备,确保各分项施工质量稳定可控。",detail:"「未采用新技术」短板自曝改写为成熟工艺正向表述"},{from:/本工程不进行分包,全部施工内容由我方自行组织完成/gu,to:"本工程全部施工任务由我公司项目部自行组织实施,严禁违法分包、转包及挂靠行为",detail:"「本工程不进行分包」否定式自述改写为自主组织正向表述"},{from:/(?:亮化与)?收尾阶段安排\s*\d+\s*个日历天[^。\n]{0,60}?项目经理组织各分组施工员进行内部预验收[^。\n]{0,80}?竣工验收。?/gu,to:"收尾阶段按总进度计划组织实施,项目经理组织内部预验收,预验收问题清单当日下发、限时整改、复查销项后申请正式竣工验收",detail:"「收尾阶段安排N个日历天」赶工暗示改写为按计划组织正向表述"}]){let e=[...b.matchAll(a.from)];0!==e.length&&(b=b.replace(a.from,a.to),c+=e.length,d.push(`${a.detail} ${e.length} 处`))}return{markdown:b,fixedCount:c,details:d}}let U={基坑支护与降水工程:"基坑支护与降水工程:基坑开挖深度达到判定线的区段按基坑支护与降水工程辨识,支护与降水方案经审批后实施。",高大模板支撑工程:"高大模板支撑工程:模板支撑搭设高度或荷载达到判定线的部位按高大模板支撑工程辨识,编制专项施工方案并组织验收。",脚手架工程:"脚手架工程:脚手架搭设高度达到判定线的部位按脚手架工程辨识,搭设与拆除执行专项施工方案。",起重吊装及安装拆卸工程:"起重吊装及安装拆卸工程:管道吊装、构件吊装等吊装作业按起重吊装及安装拆卸工程辨识,吊装专项方案经技术负责人审核后实施。",吊篮作业工程:"吊篮作业工程:外墙作业采用吊篮的区段按吊篮作业工程辨识,吊篮安拆验收合格后投入使用。",拆除工程:"拆除工程:既有建筑物、构筑物及设施拆除作业按拆除工程辨识,拆除前编制专项拆除方案并交底后实施。"};function V(a){let b=h.I.filter(b=>b.applicable(a));if(0===b.length)return{markdown:a,fixedCount:0,details:[]};let c=(0,h.xb)(a);if(!c)return{markdown:a,fixedCount:0,details:[]};let d=b.filter(a=>!a.aliases.some(a=>c.includes(a)));if(0===d.length)return{markdown:a,fixedCount:0,details:[]};let e=a.split(/\r?\n/u),f=e.findIndex(a=>/危大/u.test(a)&&/^#{2,4}\s/u.test(a.trim()));if(f<0){for(let a=e.length-1;a>=0;a-=1)if(/危大/u.test(e[a])){f=a;break}}if(f<0)return{markdown:a,fixedCount:0,details:[]};let g=d.map(a=>U[a.name]??"").filter(Boolean);return 0===g.length?{markdown:a,fixedCount:0,details:[]}:(e.splice(f+1,0,...g),{markdown:e.join("\n"),fixedCount:g.length,details:[`危大辨识清单补写:${d.map(a=>a.name).join("、")}`]})}let W={"施工工地周边100%围挡":"施工工地周边100%围挡:施工现场沿用地红线设置连续封闭围挡,围挡立面保持整洁完好。","物料堆放100%覆盖":"物料堆放100%覆盖:易产生扬尘的砂石、水泥等散体材料堆场采用密目网全覆盖。","出入车辆100%冲洗":"出入车辆100%冲洗:出入口设置车辆冲洗设施,车辆驶离工地前冲洗干净后方可上路。","施工现场地面100%硬化":"施工现场地面100%硬化:施工便道、材料加工区及堆场地面全部硬化处理。","拆迁工地100%湿法作业":"拆迁工地100%湿法作业:拆除作业配备雾炮机同步喷淋降尘,全程湿法作业。","渣土车辆100%密闭运输":"渣土车辆100%密闭运输:渣土运输车辆加盖密闭篷布,装载高度不超过车厢挡板。"};async function X(a){if(!/扬尘|环保|文明施工|绿色施工/u.test(a))return{markdown:a,fixedCount:0,details:[]};let b=[...new Set(a.split(/\r?\n/u).flatMap(a=>{let b=a.trim();return!b||/^#{1,6}\s/u.test(b)||/^\s*\|/u.test(b)||!/围挡|覆盖|堆放|冲洗|硬化|湿法|密闭|渣土|扬尘|降尘/u.test(b)?[]:b.split(/(?<=[。!?!?;;])/u).map(a=>a.trim()).filter(a=>a.length>=8&&a.length<=120)}))],c=await (0,e.CZ)(e.No.map(a=>({key:a.name,text:a.query})),b),d=/(?:本项目|本工程|该工程|该项目|本标段|本施工项目)[^。;;\n]{0,30}(?:无拆迁|不涉及拆迁|无房屋拆除|无拆除)/u.test(a),f=e.No.filter(a=>!c.get(a.name)&&!(0,e.vq)(a.name,b)).filter(a=>!("拆迁工地100%湿法作业"===a.name&&d)).map(a=>a.name);if(0===f.length)return{markdown:a,fixedCount:0,details:[]};let g=a.split(/\r?\n/u),h=g.findIndex(a=>!/^\s*\|/u.test(a)&&!/^#{1,6}\s/u.test(a.trim())&&/六个百分百|100%围挡|扬尘治理/u.test(a)),i=h>=0?h+1:-1;if(i<0){let a=[];for(let b=0;b<g.length;b+=1)/^#{1,6}\s/u.test(g[b].trim())&&a.push({index:b,text:g[b]});let b=[...a].reverse().find(a=>/扬尘|降尘|防尘|六个百分百/u.test(a.text))??[...a].reverse().find(a=>/环保|文明施工|绿色施工/u.test(a.text));if(i=g.length,b){for(let a=b.index+1;a<g.length;a+=1)if(/^#{1,6}\s/u.test(g[a].trim())){i=a;break}}}let j=f.map(a=>W[a]??"").filter(Boolean);return g.splice(i,0,...j),{markdown:g.join("\n"),fixedCount:j.length,details:[`扬尘六个百分百补写:${f.join("、")}`]}}let Y=[{from:/全文唯一劳动力峰值口径/gu,to:"全文劳动力峰值基准",detail:"劳动力峰值口径"},{from:/统一控制口径/gu,to:"统一控制基准",detail:"统一控制口径"},{from:/按以下口径处理/gu,to:"按以下程序处理",detail:"按以下口径处理"},{from:/拆除工程工作包/gu,to:"拆除工程",detail:"拆除工程工作包"},{from:/按工作包逐项说明/gu,to:"按专业工程逐项说明",detail:"按工作包逐项说明"}];function Z(a){let b=a,c=0,d=[];for(let a of Y){let e=[...b.matchAll(a.from)];0!==e.length&&(b=b.replace(a.from,a.to),c+=e.length,d.push(`${a.detail} ${e.length} 处`))}return{markdown:b,fixedCount:c,details:d}}function $(a){let b=a.split(/\r?\n/u),c=0,d=/^\s*\|(?:\s*:?-{3,}:?\s*\|)+\s*$/u,e=/^\s*\|.+\|\s*$/u;for(let a=0;a<b.length;a+=1){let f=b[a].trim();if(!d.test(f)||a>0&&e.test(b[a-1].trim())||a+1>=b.length||!e.test(b[a+1].trim()))continue;let g=f.split("|").filter(a=>""!==a.trim()).length;if(g<2)continue;let h=`| 项目 | 内容 |${" 备注 |".repeat(Math.max(0,g-2))}`;b.splice(a,0,h),c+=1,a+=1}return{markdown:b.join("\n"),fixedCount:c,details:c>0?[`无表头表格补齐表头 ${c} 处`]:[]}}let _=[{from:/钢板桩或型钢支撑支护/gu,sides:[{text:"钢板桩支护",keyword:/钢板桩/},{text:"型钢支撑支护",keyword:/型钢/}],detail:"钢板桩型钢两可归一为钢板桩"},{from:/钢板桩或木挡板支护/gu,sides:[{text:"钢板桩支护",keyword:/钢板桩/},{text:"木挡板支护",keyword:/木挡板|挡板/}],detail:"沟槽支护两可归一为钢板桩支护"},{from:/放坡或钢板桩支护/gu,sides:[{text:"1:0.5放坡加钢板桩支护",keyword:/放坡|坡率/},{text:"钢板桩支护",keyword:/钢板桩|排桩/}],detail:"放坡钢板桩两可归一为组合支护"},{from:/打桩机打入或混凝土基础固定/gu,sides:[{text:"打桩机打入",keyword:/打入|打桩/},{text:"混凝土基础固定",keyword:/混凝土基础|现浇|基础固定/}],detail:"护栏立柱安装两可归一为打桩机打入"},{from:/放坡或加设挡板支护/gu,sides:[{text:"放坡支护",keyword:/放坡|坡率/},{text:"挡板支护",keyword:/挡板|钢板桩/}],detail:"沟槽支护两可归一为放坡支护"},{from:/放坡或挡板支护/gu,sides:[{text:"放坡支护",keyword:/放坡|坡率/},{text:"挡板支护",keyword:/挡板|钢板桩/}],detail:"沟槽支护两可归一为放坡支护"},{from:/放坡或支护/gu,sides:[{text:"放坡支护",keyword:/放坡|坡率/},{text:"挡板支护",keyword:/挡板|钢板桩/}],detail:"放坡支护两可归一"}];function aa(a,b){let c=a,d=0,f=[];for(let a of _){let e=[...c.matchAll(a.from)];if(0===e.length)continue;let g=b?.supportForm&&a.sides[1].keyword.test(b.supportForm)?a.sides[1]:a.sides[0];c=c.replace(a.from,g.text),d+=e.length,f.push(`${a.detail} ${e.length} 处`)}let g=(0,e.Fr)(c);if(g.length>0){let a=g[0].message.replace(/^关键设计决策两可表述:/u,"").replace(/ 以并列\/悬置形态表述.*$/u,"");f.push(`两可表述缺口待复核:${a}`)}return{markdown:c,fixedCount:d,details:f}}let ab=[{from:/,将报公共资源交易监督管理部门处理/gu,to:",由招标人按招标文件规定程序处理",detail:"公共资源交易监督管理"},{from:/按设计要求(?!目录|清单|索引|汇总)/gu,to:"按施工图设计文件",detail:"按设计要求留白改写"}],ac=[{from:/详见设计图纸(?!目录|清单|索引|汇总)/gu,to:"详见施工图设计文件",detail:"数据行「详见设计图纸」留白"},{from:/按设计图纸(?!目录|清单|索引|汇总)/gu,to:"按施工图设计文件",detail:"数据行「按设计图纸」留白"},{from:/按图纸(?!目录|清单|索引|汇总)/gu,to:"按施工图设计文件",detail:"数据行「按图纸」留白"},{from:/见图纸(?!目录|清单|索引|汇总)/gu,to:"见施工图设计文件",detail:"数据行「(详)见图纸」留白"}];function ad(a){let b=a,c=0,d=[];for(let a of ab){let e=[...b.matchAll(a.from)];0!==e.length&&(b=b.replace(a.from,a.to),c+=e.length,d.push(`${a.detail} ${e.length} 处`))}let e=0,f=[];return b=b.split("\n").map(a=>{if(!/^\s*\|/u.test(a))return a;let b=a;for(let a of ac){let c=[...b.matchAll(a.from)];0!==c.length&&(b=b.replace(a.from,a.to),e+=c.length,f.push(`${a.detail} ${c.length} 处`))}return b}).join("\n"),e>0&&(c+=e,d.push(...f)),{markdown:b,fixedCount:c,details:d}}let ae=/^##\s+目录\s*$([\s\S]*?)(?=\n<div class="page-break"><\/div>|\n##\s+)/mu,af=/^##\s+(第[一二三四五六七八九十百千万\d]+章)\s+(.+)$/gmu,ag=/^###\s+(\d+\.\d+)\s+(.+)$/gmu,ah={一:1,二:2,三:3,四:4,五:5,六:6,七:7,八:8,九:9,十:10};function ai(a){let b=ae.exec(a);if(!b)return{markdown:a,fixedCount:0,details:[]};let c=[...a.matchAll(af)].map(a=>({ordinal:function(a){let b=a.replace(/^第|章$/gu,"");return/^\d+$/.test(b)?Number(b):void 0!==ah[b]?ah[b]:2===b.length&&"十"===b[0]?10+(ah[b[1]??""]??0):void 0}(a[1]||""),heading:a[1]||"",title:a[2]?.trim()||""})).filter(a=>void 0!==a.ordinal&&a.title),d=[...a.matchAll(ag)].map(a=>({number:a[1]||"",major:Number((a[1]||"0").split(".")[0]),title:(a[2]||"").trim()}));if(0===c.length||0===d.length)return{markdown:a,fixedCount:0,details:[]};let e=[];for(let a of c)for(let b of(e.push(`${a.heading} ${a.title}`),d.filter(b=>b.major===a.ordinal)))e.push(` ${b.number} ${b.title}`);let f=`## 目录
213
+ 质量保障体系与安全文明管理同频运行:项目部实行“三检制”(自检、互检、交接检),每道工序经班组自检、质量员复检合格后报监理单位验收;推行样板引路制度,主体结构、装配式构件安装、ALC墙板安装、幕墙安装等主要分项工程在大面积施工前先做样板,经建设、监理单位验收确认后方可展开;隐蔽工程(钢筋、防水、管线预埋等)覆盖前由质量员组织隐蔽验收并留存影像记录;原材料进场按见证取样要求送检,混凝土试块按规范留置并落实标养与同条件养护;分部分项工程验收严格执行报验程序,验收资料与工程进度同步归档,确保“合格”质量标准与“确保黄山杯”创优目标逐级落实。`,g=(b.index??0)+c.length;return{markdown:a.slice(0,g)+f+a.slice(g),fixedCount:1,details:[`6.1 施工部署块补全质量保障协同段(核心术语 ${d.length-e}/${d.length} 缺失)`]}}let R=[/农民工工资专用账户|工资专用账户|农民工工资/u,/劳务用工|劳务管理|实名制|工资支付/u,/农民工|劳务/u,/工资/u];function S(a){if((0,f.SQ)(a))return{markdown:a,fixedCount:0,details:[]};let b=a.split("\n");for(let a of R)for(let c=0;c<b.length;c+=1){let d=b[c];if(/^\s*[#|<>]|^\s*[-*·]/u.test(d)||!a.test(d))continue;let e="项目部按规定为作业人员办理工伤保险,参保信息纳入实名制管理,发生工伤事故时按法定程序申报处理。";return b[c]=/[。;;]$/u.test(d.trim())?`${d}${e}`:`${d}。${e}`,{markdown:b.join("\n"),fixedCount:1,details:["劳务管理段落补写工伤保险缴纳表述"]}}return{markdown:a,fixedCount:0,details:[]}}function T(a){let b=a,c=0,d=[];for(let a of[{from:/施工过程中如涉及危险性较大的分部分项工程[^。;;\n]*?(?:未经审批不得实施|后方可实施|方可实施)/gu,to:"危险性较大的分部分项工程按住房和城乡建设部令第37号与建办质〔2018〕31号规定逐项辨识、分级管控:凡达到危大工程判定线的分项,施工前编制专项施工方案,由技术负责人审核签字后报监理审批;超过一定规模的危大工程专项方案组织专家论证,未经审批不得实施",detail:"危大「如涉及」假设表述改写为逐项辨识分级管控"},{from:/发现[^。;;\n]{0,18}?(?:缺项|矛盾|缺失|遗漏)[^。;;\n]{0,24}?(?:时|后)在?\d+小时(?:内)?[^。;;\n]{0,10}?(?:补测|补正|补救|补录|补记)/gu,to:"记录经复核确认完整、数据准确后归档保存",detail:"踏勘补测类负面假设改写为复核确认归档"},{from:/确保[^。;;\n]{0,20}?与(?:本)?施工组织设计的?一致性/gu,to:"确认现场条件与施工组织设计相符",detail:"现场条件一致性两可暗示改写为确认相符"},{from:/本工程不允许分包[^。;;\n]{0,40}?组织实施/gu,to:"本工程全部施工任务由我公司项目部自行组织实施,严禁违法分包、转包及挂靠行为",detail:"「不允许分包」短板暗示改写为自主组织正向表述"},{from:/针对踏勘中发现的与设计图纸不一致或设计未明确的事项[^。;;\n]{0,60}?按以下[口经]径处理/gu,to:"项目部对照施工图与现场条件逐项复核,按以下程序处理",detail:"「设计图纸不一致」负面假设改写为对照复核程序"},{from:/杜绝施工过程中以工程量组价缺失为由提出变更申请/gu,to:"开工前完成工程量与清单核对,施工过程中严格按合同约定计量计价",detail:"「组价缺失」短板暴露改写为开工前核对闭环"},{from:/涉及危险性较大的分部分项工程,我公司将依据([^。;;\n]{0,80}?),在施工前单独编制专项施工方案并履行审批程序。/gu,to:"本工程危险性较大的分部分项工程管理执行$1规定:施工前编制专项施工方案,履行审批程序后实施。",detail:"危大「涉及」假设句式改写为管理执行闭环"},{from:/上述参数在后续各分项施工方案中逐项落位执行。?/gu,to:"上述参数作为全文统一控制基准,各分项施工方案均按此执行。",detail:"「后续落位」延迟承诺改写为统一控制基准"},{from:/补疑文件对施工内容作出以下明确修正:([^。\n]{0,200}?)。上述修正内容已纳入本施工组织设计对应分项方案,施工过程中不再另行变更。?/gu,to:"招标文件补疑明确:$1。上述内容已纳入本施工组织设计对应分项方案并统一执行。",detail:"「补疑修正不再变更」负面暗示改写为统一执行"},{from:/项目部按《建筑施工企业、工程项目安全生产管理机构设置及安全生产管理人员配备办法》(建质规〔2025〕3号)配备专职安全生产管理人员,公司分管安全负责人每月带班检查不得少于两次/gu,to:"项目部严格执行《建筑施工企业、工程项目安全生产管理机构设置及安全生产管理人员配备办法》(建质规〔2025〕3号),专职安全生产管理人员按标准配足配齐,公司分管安全负责人每月带班检查不少于两次并留存检查记录",detail:"安全人员配备与带班检查短板暗示改写为配足配齐正向表述"},{from:/项目部在开工令下发后第(\d+)日亮化及附属设施安装完成后,随即启动竣工清理与验收移交程序,确保开工令下发后第(\d+)日完成全部验收移交工作/gu,to:"亮化及附属设施安装于开工令下发后第$1日完成,竣工清理与验收移交按计划组织,开工令下发后第$2日全部验收移交工作完成",detail:"竣工验收赶工暗示改写为按计划组织正向表述"},{from:/隐蔽工程在施工过程中已按(\d+)小时提前通知要求完成验收,竣工阶段不再重复检验,但须将全部隐蔽验收影像资料纳入竣工资料归档/gu,to:"隐蔽工程按$1小时提前通知要求组织验收,验收合格后方可进入下道工序,全部隐蔽验收影像资料纳入竣工资料归档",detail:"「竣工阶段不再重复检验」自伤暗示改写为验收闭环正向表述"},{from:/本施工组织设计的编制边界为:本项目位于[^,。;;\n]{2,40},以补疑澄清文件对清单及图纸的修正口径为优先执行依据。?/gu,to:"本施工组织设计编制依据包括招标文件、补疑澄清文件、施工图及工程量清单,正文数据口径与补疑澄清文件修正口径保持一致。",detail:"编制边界两可暗示改写为编制依据一致性正向表述"},{from:/施工组织设计覆盖从开工令下发至竣工验收合格后移交保修的全过程管理,不包含招标范围以外的工程内容。?/gu,to:"施工组织设计覆盖开工令下发至竣工验收移交保修的全过程管理,全过程管理内容与招标范围一致。",detail:"「不包含招标范围以外」短板暗示改写为覆盖范围一致性表述"},{from:/面层混凝土弯拉强度达到设计强度且填缝完成前不得开放交通,由试验员按每检验批留置试块并送检,强度报告归档闭环。?/gu,to:"面层混凝土达到设计强度且填缝完成后开放交通,试验员按每检验批留置试块送检,强度报告归档形成质量闭环。",detail:"「不得开放交通」负面表述改写为达到条件后开放交通正向表述"},{from:/本项目以成熟可靠的常规工艺为主,未采用(?:行业认定的)?新(?:技术|材料|工艺|设备)(?:、新(?:技术|材料|工艺|设备)){1,3}(?:或新(?:技术|材料|工艺|设备))?[^。;;\n]{0,20}?。?/gu,to:"本项目工艺选择以成熟可靠为原则,全部采用经工程实践验证的成熟工艺、常规材料和标准化设备,确保各分项施工质量稳定可控。",detail:"「未采用新技术」短板自曝改写为成熟工艺正向表述"},{from:/本工程不进行分包,全部施工内容由我方自行组织完成/gu,to:"本工程全部施工任务由我公司项目部自行组织实施,严禁违法分包、转包及挂靠行为",detail:"「本工程不进行分包」否定式自述改写为自主组织正向表述"},{from:/(?:亮化与)?收尾阶段安排\s*\d+\s*个日历天[^。\n]{0,60}?项目经理组织各分组施工员进行内部预验收[^。\n]{0,80}?竣工验收。?/gu,to:"收尾阶段按总进度计划组织实施,项目经理组织内部预验收,预验收问题清单当日下发、限时整改、复查销项后申请正式竣工验收",detail:"「收尾阶段安排N个日历天」赶工暗示改写为按计划组织正向表述"}]){let e=[...b.matchAll(a.from)];0!==e.length&&(b=b.replace(a.from,a.to),c+=e.length,d.push(`${a.detail} ${e.length} 处`))}return{markdown:b,fixedCount:c,details:d}}let U={基坑支护与降水工程:"基坑支护与降水工程:基坑开挖深度达到判定线的区段按基坑支护与降水工程辨识,支护与降水方案经审批后实施。",高大模板支撑工程:"高大模板支撑工程:模板支撑搭设高度或荷载达到判定线的部位按高大模板支撑工程辨识,编制专项施工方案并组织验收。",脚手架工程:"脚手架工程:脚手架搭设高度达到判定线的部位按脚手架工程辨识,搭设与拆除执行专项施工方案。",起重吊装及安装拆卸工程:"起重吊装及安装拆卸工程:管道吊装、构件吊装等吊装作业按起重吊装及安装拆卸工程辨识,吊装专项方案经技术负责人审核后实施。",吊篮作业工程:"吊篮作业工程:外墙作业采用吊篮的区段按吊篮作业工程辨识,吊篮安拆验收合格后投入使用。",拆除工程:"拆除工程:既有建筑物、构筑物及设施拆除作业按拆除工程辨识,拆除前编制专项拆除方案并交底后实施。"};function V(a){let b=h.I.filter(b=>b.applicable(a));if(0===b.length)return{markdown:a,fixedCount:0,details:[]};let c=(0,h.xb)(a);if(!c)return{markdown:a,fixedCount:0,details:[]};let d=b.filter(a=>!a.aliases.some(a=>c.includes(a)));if(0===d.length)return{markdown:a,fixedCount:0,details:[]};let e=a.split(/\r?\n/u),f=e.findIndex(a=>/危大/u.test(a)&&/^#{2,4}\s/u.test(a.trim()));if(f<0){for(let a=e.length-1;a>=0;a-=1)if(/危大/u.test(e[a])){f=a;break}}if(f<0)return{markdown:a,fixedCount:0,details:[]};let g=d.map(a=>U[a.name]??"").filter(Boolean);return 0===g.length?{markdown:a,fixedCount:0,details:[]}:(e.splice(f+1,0,...g),{markdown:e.join("\n"),fixedCount:g.length,details:[`危大辨识清单补写:${d.map(a=>a.name).join("、")}`]})}let W={"施工工地周边100%围挡":"施工工地周边100%围挡:施工现场沿用地红线设置连续封闭围挡,围挡立面保持整洁完好。","物料堆放100%覆盖":"物料堆放100%覆盖:易产生扬尘的砂石、水泥等散体材料堆场采用密目网全覆盖。","出入车辆100%冲洗":"出入车辆100%冲洗:出入口设置车辆冲洗设施,车辆驶离工地前冲洗干净后方可上路。","施工现场地面100%硬化":"施工现场地面100%硬化:施工便道、材料加工区及堆场地面全部硬化处理。","拆迁工地100%湿法作业":"拆迁工地100%湿法作业:拆除作业配备雾炮机同步喷淋降尘,全程湿法作业。","渣土车辆100%密闭运输":"渣土车辆100%密闭运输:渣土运输车辆加盖密闭篷布,装载高度不超过车厢挡板。"};async function X(a){if(!/扬尘|环保|文明施工|绿色施工/u.test(a))return{markdown:a,fixedCount:0,details:[]};let b=[...new Set(a.split(/\r?\n/u).flatMap(a=>{let b=a.trim();return!b||/^#{1,6}\s/u.test(b)||/^\s*\|/u.test(b)||!/围挡|覆盖|堆放|冲洗|硬化|湿法|密闭|渣土|扬尘|降尘/u.test(b)?[]:b.split(/(?<=[。!?!?;;])/u).map(a=>a.trim()).filter(a=>a.length>=8&&a.length<=120)}))],c=await (0,e.CZ)(e.No.map(a=>({key:a.name,text:a.query})),b),d=/(?:本项目|本工程|该工程|该项目|本标段|本施工项目)[^。;;\n]{0,30}(?:无拆迁|不涉及拆迁|无房屋拆除|无拆除)/u.test(a),f=e.No.filter(a=>!c.get(a.name)&&!(0,e.vq)(a.name,b)).filter(a=>!("拆迁工地100%湿法作业"===a.name&&d)).map(a=>a.name);if(0===f.length)return{markdown:a,fixedCount:0,details:[]};let g=a.split(/\r?\n/u),h=g.findIndex(a=>!/^\s*\|/u.test(a)&&!/^#{1,6}\s/u.test(a.trim())&&/六个百分百|100%围挡|扬尘治理/u.test(a)),i=h>=0?h+1:-1;if(i<0){let a=[];for(let b=0;b<g.length;b+=1)/^#{1,6}\s/u.test(g[b].trim())&&a.push({index:b,text:g[b]});let b=[...a].reverse().find(a=>/扬尘|降尘|防尘|六个百分百/u.test(a.text))??[...a].reverse().find(a=>/环保|文明施工|绿色施工/u.test(a.text));if(i=g.length,b){for(let a=b.index+1;a<g.length;a+=1)if(/^#{1,6}\s/u.test(g[a].trim())){i=a;break}}}let j=f.map(a=>W[a]??"").filter(Boolean);return g.splice(i,0,...j),{markdown:g.join("\n"),fixedCount:j.length,details:[`扬尘六个百分百补写:${f.join("、")}`]}}let Y=[{from:/全文唯一劳动力峰值口径/gu,to:"全文劳动力峰值基准",detail:"劳动力峰值口径"},{from:/统一控制口径/gu,to:"统一控制基准",detail:"统一控制口径"},{from:/按以下口径处理/gu,to:"按以下程序处理",detail:"按以下口径处理"},{from:/拆除工程工作包/gu,to:"拆除工程",detail:"拆除工程工作包"},{from:/按工作包逐项说明/gu,to:"按专业工程逐项说明",detail:"按工作包逐项说明"}];function Z(a){let b=a,c=0,d=[];for(let a of Y){let e=[...b.matchAll(a.from)];0!==e.length&&(b=b.replace(a.from,a.to),c+=e.length,d.push(`${a.detail} ${e.length} 处`))}return{markdown:b,fixedCount:c,details:d}}function $(a){let b=a.split(/\r?\n/u),c=0,d=/^\s*\|(?:\s*:?-{3,}:?\s*\|)+\s*$/u,e=/^\s*\|.+\|\s*$/u;for(let a=0;a<b.length;a+=1){let f=b[a].trim();if(!d.test(f)||a>0&&e.test(b[a-1].trim())||a+1>=b.length||!e.test(b[a+1].trim()))continue;let g=f.split("|").filter(a=>""!==a.trim()).length;if(g<2)continue;let h=`| 项目 | 内容 |${" 备注 |".repeat(Math.max(0,g-2))}`;b.splice(a,0,h),c+=1,a+=1}return{markdown:b.join("\n"),fixedCount:c,details:c>0?[`无表头表格补齐表头 ${c} 处`]:[]}}let _=[{from:/钢板桩或型钢支撑支护/gu,sides:[{text:"钢板桩支护",keyword:/钢板桩/},{text:"型钢支撑支护",keyword:/型钢/}],detail:"钢板桩型钢两可归一为钢板桩"},{from:/钢板桩或木挡板支护/gu,sides:[{text:"钢板桩支护",keyword:/钢板桩/},{text:"木挡板支护",keyword:/木挡板|挡板/}],detail:"沟槽支护两可归一为钢板桩支护"},{from:/放坡或钢板桩支护/gu,sides:[{text:"1:0.5放坡加钢板桩支护",keyword:/放坡|坡率/},{text:"钢板桩支护",keyword:/钢板桩|排桩/}],detail:"放坡钢板桩两可归一为组合支护"},{from:/打桩机打入或混凝土基础固定/gu,sides:[{text:"打桩机打入",keyword:/打入|打桩/},{text:"混凝土基础固定",keyword:/混凝土基础|现浇|基础固定/}],detail:"护栏立柱安装两可归一为打桩机打入"},{from:/放坡或加设挡板支护/gu,sides:[{text:"放坡支护",keyword:/放坡|坡率/},{text:"挡板支护",keyword:/挡板|钢板桩/}],detail:"沟槽支护两可归一为放坡支护"},{from:/放坡或挡板支护/gu,sides:[{text:"放坡支护",keyword:/放坡|坡率/},{text:"挡板支护",keyword:/挡板|钢板桩/}],detail:"沟槽支护两可归一为放坡支护"},{from:/放坡或支护/gu,sides:[{text:"放坡支护",keyword:/放坡|坡率/},{text:"挡板支护",keyword:/挡板|钢板桩/}],detail:"放坡支护两可归一"}];function aa(a,b){let c=a,d=0,f=[];for(let a of _){let e=[...c.matchAll(a.from)];if(0===e.length)continue;let g=b?.supportForm&&a.sides[1].keyword.test(b.supportForm)?a.sides[1]:a.sides[0];c=c.replace(a.from,g.text),d+=e.length,f.push(`${a.detail} ${e.length} 处`)}if(b?.decisionLock?.length){let a=[];for(let d of c.matchAll(/([一-龥]{2,12})或([一-龥]{2,12})/gu)){let c=(0,i.m4)(d[1],d[2]);if(!c)continue;let e=b.decisionLock.find(a=>a.id===c.id);if(!e||0===e.values.length)continue;let f=(0,i.nR)(c,d[1]);if(!f||f.end!==d[1].length)continue;let g=(0,i.nR)(c,d[2]);if(!g||0!==g.index)continue;let h=c.options.find(a=>e.values.includes(a.value)&&(a.aliases.test(d[1])||a.aliases.test(d[2]))),j=h?.value??e.values[0];a.push({start:(d.index??0)+f.index,end:(d.index??0)+d[1].length+1+g.end,target:j,detail:`“${d[1]}或${d[2]}”→“${j}”(${c.label})`})}for(let b of a.reverse())c=c.slice(0,b.start)+b.target+c.slice(b.end);a.length>0&&(d+=a.length,f.push(`决策项两可归一 ${a.length} 处:${a.map(a=>a.detail).join("、")}`))}let g=(0,e.Fr)(c);if(g.length>0){let a=g[0].message.replace(/^关键设计决策两可表述:/u,"").replace(/ 以并列\/悬置形态表述.*$/u,"");f.push(`两可表述缺口待复核:${a}`)}return{markdown:c,fixedCount:d,details:f}}let ab=[{from:/,将报公共资源交易监督管理部门处理/gu,to:",由招标人按招标文件规定程序处理",detail:"公共资源交易监督管理"},{from:/按设计要求(?!目录|清单|索引|汇总)/gu,to:"按施工图设计文件",detail:"按设计要求留白改写"}],ac=[{from:/详见设计图纸(?!目录|清单|索引|汇总)/gu,to:"详见施工图设计文件",detail:"数据行「详见设计图纸」留白"},{from:/按设计图纸(?!目录|清单|索引|汇总)/gu,to:"按施工图设计文件",detail:"数据行「按设计图纸」留白"},{from:/按图纸(?!目录|清单|索引|汇总)/gu,to:"按施工图设计文件",detail:"数据行「按图纸」留白"},{from:/见图纸(?!目录|清单|索引|汇总)/gu,to:"见施工图设计文件",detail:"数据行「(详)见图纸」留白"}];function ad(a){let b=a,c=0,d=[];for(let a of ab){let e=[...b.matchAll(a.from)];0!==e.length&&(b=b.replace(a.from,a.to),c+=e.length,d.push(`${a.detail} ${e.length} 处`))}let e=0,f=[];return b=b.split("\n").map(a=>{if(!/^\s*\|/u.test(a))return a;let b=a;for(let a of ac){let c=[...b.matchAll(a.from)];0!==c.length&&(b=b.replace(a.from,a.to),e+=c.length,f.push(`${a.detail} ${c.length} 处`))}return b}).join("\n"),e>0&&(c+=e,d.push(...f)),{markdown:b,fixedCount:c,details:d}}let ae=/^##\s+目录\s*$([\s\S]*?)(?=\n<div class="page-break"><\/div>|\n##\s+)/mu,af=/^##\s+(第[一二三四五六七八九十百千万\d]+章)\s+(.+)$/gmu,ag=/^###\s+(\d+\.\d+)\s+(.+)$/gmu,ah={一:1,二:2,三:3,四:4,五:5,六:6,七:7,八:8,九:9,十:10};function ai(a){let b=ae.exec(a);if(!b)return{markdown:a,fixedCount:0,details:[]};let c=[...a.matchAll(af)].map(a=>({ordinal:function(a){let b=a.replace(/^第|章$/gu,"");return/^\d+$/.test(b)?Number(b):void 0!==ah[b]?ah[b]:2===b.length&&"十"===b[0]?10+(ah[b[1]??""]??0):void 0}(a[1]||""),heading:a[1]||"",title:a[2]?.trim()||""})).filter(a=>void 0!==a.ordinal&&a.title),d=[...a.matchAll(ag)].map(a=>({number:a[1]||"",major:Number((a[1]||"0").split(".")[0]),title:(a[2]||"").trim()}));if(0===c.length||0===d.length)return{markdown:a,fixedCount:0,details:[]};let e=[];for(let a of c)for(let b of(e.push(`${a.heading} ${a.title}`),d.filter(b=>b.major===a.ordinal)))e.push(` ${b.number} ${b.title}`);let f=`## 目录
214
214
 
215
215
  ${e.join("\n")}`;return b[0]===f?{markdown:a,fixedCount:0,details:[]}:{markdown:a.slice(0,b.index)+f+a.slice(b.index+b[0].length),fixedCount:1,details:["目录按正文 H2/H3 实际结构重建"]}}function aj(a){let b=a.split(/(\n\s*\n)/u),c=0,d=[];return{markdown:b.map(a=>{if(!a||!/[。!?!?]/u.test(a))return a;let b=new Set,f=!1,g=a.split(/\n/u).map(a=>{let g=a.trim();if(!g||/^#{1,6}\s/u.test(g)||g.startsWith("|"))return a;let h=a.split(/(?<=[。!?!?])/u),i=h.filter(a=>{let f=a.trim().replace(/\s+/gu,"");return f.length<e.jy||([...b].some(a=>a===f||a.length>f.length&&a.length-f.length<=e.jy&&a.endsWith(f))?(c+=1,d.push(f.slice(0,24)),!1):(b.add(f),!0))});return i.length!==h.length?(f=!0,i.join("")):a});return f?g.join("\n"):a}).join(""),fixedCount:c,details:d}}function ak(a){let b=(0,e.GJ)(a);if(0===b.length)return{markdown:a,fixedCount:0,details:[]};let c=[],d=a;for(let a of[...b].reverse()){let b=d.slice(a.start,a.end),e=/第\d{1,3}日(?:至|到|~|~|—|-)/u.exec(b);e&&(d=d.slice(0,a.start)+d.slice(a.start+e[0].length),c.push(b))}return{markdown:d,fixedCount:c.length,details:c}}function al(a){let b=(0,e.TG)(a);if(0===b.length)return{markdown:a,fixedCount:0,details:[]};let c=a.split("\n"),d=a=>a.replace(/^\d+(?:\.\d+)*[..]?\s*/u,"").replace(/[\s::、。,,;;/|—-]/gu,"").replace(/工程$/u,""),g=new Set(c.filter(a=>/^###\s/u.test(a.trim())).map(a=>(0,f.Sw)(a.replace(/^###\s+/u,"").trim()))),h=new Set(c.filter(a=>/^###\s/u.test(a.trim())).map(a=>d(a.replace(/^###\s+/u,"").trim()))),i=new Set,j=[],k=b=>a.slice(0,b).split("\n").length-1,l=[],m=[];for(let a of b){let b=k(a.index),c=a.raw.replace(/((?:\d+|[一二三四五六七八九十]+))$/u,"");h.has(d(c))?l.push({line:b,raw:a.raw}):m.push({line:b,raw:a.raw})}for(let{line:a,raw:b}of l)i.add(a),j.push(`合并拆半小节:${b}`);let n=new Set;for(let{line:a,raw:b}of m){let d=[];for(let b=a+1;b<c.length&&!/^#{2,3}\s/u.test(c[b]);b+=1){let a=/^####\s+(.+)$/u.exec(c[b].trim());a&&d.push((0,f.Ld)(a[1].trim()))}if(0===d.length)continue;let e=new Map;for(let a of d)e.set(a,(e.get(a)??0)+1);let h=[...e.entries()].reduce((a,b)=>b[1]>a[1]?b:a)[0],i=b.replace(/(?:((?:\d+|[一二三四五六七八九十]+)))+$/u,"").replace(/工程$/u,""),k=`${i}${h}`,l=(0,f.Sw)(k);g.has(l)||n.has(l)||(n.add(l),c[a]=c[a].replace(/^(###\s+).+$/u,`$1${k}`),j.push(`防撞名重命名:${b} → ${k}`))}return{markdown:c.filter((a,b)=>!i.has(b)).join("\n"),fixedCount:j.length,details:j}}},64753:(a,b,c)=>{c.d(b,{Iu:()=>i,Mz:()=>n,UG:()=>m,hW:()=>p,jX:()=>h,t7:()=>l,xs:()=>o});var d=c(70933),e=c(1218),f=c(22157),g=c(87635);async function h(a){let b=[],c=new Set(a.scopedFilePaths),d=await Promise.all(g.xs.map(async b=>((0,f.Te)(a.signal),(await a.manager.search(a.projectRoot,b,{scope:"project",filters:{filePaths:a.scopedFilePaths},limit:10,weights:{keyword:.65,vector:.25,rewrite:.8,hybridBonus:.2},generationMode:!0,disableReranker:!0})).results.filter(a=>c.has(a.filePath)&&(0,g.qq)(`${a.sectionTitle||""}
216
216
  ${a.content}`)>0).map(b=>({chapterId:"project-basic",filePath:b.filePath,score:Math.max(b.score,1)+(0,g.qq)(`${b.sectionTitle||""}
217
217
  ${b.content}`),content:b.content,roleId:a.fileRoleByPath.get(b.filePath),processingType:a.fileProcessingByPath.get(b.filePath),sectionTitle:b.sectionTitle,source:"pinned-evidence"})))));for(let c of(b.push(...d.flat()),a.scopedFilePaths)){(0,f.Te)(a.signal);let d=a.project.getFileDetail?.(c);if(d?.chunks?.length)for(let e of d.chunks){let f=`${e.sectionTitle||""}
218
218
  ${e.content||""}`,h=(0,g.qq)(f);if(h<=0)continue;let i=d.file?.relativePath||c;b.push({chapterId:"project-basic",filePath:i,score:1+h,content:e.content,roleId:a.fileRoleByPath.get(i),processingType:a.fileProcessingByPath.get(i),sectionTitle:e.sectionTitle,source:"pinned-evidence"})}}let h=new Set;return b.sort((a,b)=>b.score-a.score).filter(a=>{let b=`${a.filePath}|${a.sectionTitle||""}|${(0,e.de)(a.content).slice(0,180)}`;return!h.has(b)&&(h.add(b),!0)})}function i(a){return/概况|项目|工程|地点|规模|工期|质量|估算/u.test(a)?{keyword:.65,vector:.25,rewrite:.8,hybridBonus:.2}:/人|材|机|资源|材料|设备|机械|劳动力/u.test(a)?{keyword:.55,vector:.35,rewrite:.75,hybridBonus:.18}:/危大|安全|文明|风险/u.test(a)?{keyword:.5,vector:.4,rewrite:.8,hybridBonus:.2}:{keyword:.4,vector:.45,rewrite:.75,hybridBonus:.15}}function j(a,b){let c=`${a.title} ${(a.sections||[]).join(" ")} ${a.requiredFacts.join(" ")}`;return"reference"===b?.55:"table"===b?/清单|工程量|数量|材料|设备|资源|费用|造价|范围|统计|表/u.test(c)?1.45:.95:"rule"===b?/要求|规则|招标|评审|响应|质量|安全|验收|标准|工期|进度|风险|约束/u.test(c)?1.35:.95:"drawing"===b?/图纸|设计|布置|位置|平面|剖面|立面|空间|施工方法|做法/u.test(c)?1.35:.85:"specification"===b&&/技术|规范|标准|参数|做法|质量|验收|施工方法/u.test(c)?1.3:1}function k(a,b){let c=`${b.sectionTitle||""}
219
219
  ${b.filePath}
220
- ${b.content}`;return Math.min(1.8,.16*[...new Set([a.title,...a.sections||[],...a.requiredFacts].flatMap(a=>a.split(/[\s、,,。;;::()()《》【】-]+/u)).map(a=>a.trim()).filter(a=>a.length>=2).slice(0,36))].filter(a=>c.includes(a)).length)}function l(a){return`${a.sectionTitle||""}${a.content}`.slice(0,600)}function m(a,b,c,e){let f=b.map(b=>{let e=(0,d.A1)(b,a.requiredFacts)*j(a,b.processingType)+k(a,b),f=c.semantic?c.semantic.similarity(c.semantic.queryText,l(b)):0;return{...b,score:.5*e+10*f}});return(0,d.QR)(f,c,e)}function n(a,b,c){if(c<=0||b.length<=c)return b;let e=b.map(b=>({item:b,lexical:(0,d.A1)(b,a.requiredFacts)*j(a,b.processingType)+k(a,b)}));return e.sort((a,b)=>b.lexical-a.lexical),e.slice(0,c).map(a=>a.item)}function o(a,b,c){let d=(a.sections||[]).slice(0,10).join(" "),e=a.requiredFacts.slice(0,10).join(" "),f=a.title.split(/[、,,与和及]+/u).map(a=>a.trim()).filter(a=>a.length>=4);return[...new Set([...f.length>=2?[`${a.title} ${d} ${e}`.trim(),...f.map(b=>`${b} ${(a.sections||[]).slice(0,6).join(" ")}`.trim()),`${f.slice(0,3).join(" ")} ${e}`.trim()]:[`${a.title} ${d} ${e}`.trim()],...b,...c].filter(Boolean))]}async function p(a){if((0,f.Te)(a.signal),0===a.scopedFilePaths.length)return[];let b=`${a.chapter.title} ${a.sectionTitle}`.trim(),c=await a.manager.search(a.projectRoot,b,{scope:"project",filters:{filePaths:a.scopedFilePaths},limit:20,weights:i(b),generationMode:!0});return(0,d.QR)(c.results.filter(b=>a.scopedFilePaths.includes(b.filePath)).map(b=>({chapterId:a.chapter.id,filePath:b.filePath,score:b.score+1.2,content:b.content,roleId:a.fileRoleByPath.get(b.filePath),processingType:a.fileProcessingByPath.get(b.filePath),sectionTitle:b.sectionTitle,source:"section-evidence"})),{preservePinned:!0})}},65667:(a,b,c)=>{c.d(b,{Ti:()=>n,_H:()=>m,re:()=>l});let d=/^(?:为|达|共|约|计|配置|共计|总计|合计)$/u,e=/作业人员|施工人员|人员配置|班组|施工组|每村|分组|编组|编入|队伍/u,f=/^(?:为|达|共|约|计|配置|共计|总计|合计|投入|配备|启用)$/u,g=/^[))、::,,\s]{0,2}(?:混凝土|砼)?\s*(\d+(?:\.\d+)?)\s*(m3|m³|立方米|方|m2|m²|㎡|平方米|延长米|米|m|kg|千克|公斤|t|吨|套|个|块|根|只|组|件|片|樘|扇|盏|座|台|处|项|条|副|对|株)(?![A-Za-z0-9²³])/u,h=/^([^0-9]{0,2}?)(\d+(?:\.\d+)?)\s*人/u,i=/^([^0-9]{0,2}?)(\d+(?:\.\d+)?)\s*台/u,j=/阶段[^。;\n]{0,30}?(\d+(?:\.\d+)?)\s*人/u;function k(a){let b=(a||"").replace(/\s+/gu,"");return b?/m[3³]|立方米|方/u.test(b)?"volume":/m[2²]|㎡|平方米/u.test(b)?"area":/m|米/u.test(b)?"length":/吨|千克|公斤|kg|^t$/u.test(b)?"mass":/套|个|块|根|只|组|件|片|樘|扇|盏|座|台|处|项|条|副|对|株/u.test(b)?"count":null:null}function l(a){if(!a)return;let b=(a.resources?.labor?.composition??[]).filter(a=>a.trade&&Number.isFinite(a.count)&&a.count>0).map(a=>({trade:a.trade,count:a.count})),c=new Map;for(let b of a.resources?.equipment??[]){if(!b.name)continue;let a=c.get(b.name);a?a.push(b):c.set(b.name,[b])}let d=[];for(let[a,b]of c)for(let c of b){let e=c.quantity&&c.quantity>0?c.quantity:Math.round(((c.min??1)+(c.max??c.min??1))/2);Number.isFinite(e)&&!(e<=0)&&d.push({name:a,spec:c.spec||"",count:e,variantCount:b.length})}let e=new Map;for(let b of a.materialsPlan??[]){if(!b.name)continue;let a=e.get(b.name);a?a.push(b):e.set(b.name,[b])}let f=[];for(let[a,b]of e)if(!(b.length<2))for(let c of b){if(!c.spec||!Number.isFinite(c.quantity)||(c.quantity??0)<=0)continue;let d=k(c.unit||"");d&&f.push({name:a,spec:c.spec,quantity:c.quantity,unit:c.unit||"",family:d,variantCount:b.length})}return{composition:b,equipment:d,materials:f}}function m(a,b){let c=[],l=new Set(b.composition.map(a=>a.trade)),m=(a,b)=>{let c=[];if(!b)return c;let d=0;for(;d<a.length;){let e=a.indexOf(b,d);if(-1===e)break;c.push(e),d=e+b.length}return c},n=(a,b)=>{let c=[];if(!b)return c;let d=0;for(;d<a.length;){let e=a.indexOf(b,d);if(-1===e)break;let f=a[e-1]||"",g=`${f}${b}`;if(/[\u4e00-\u9fa5]/u.test(f)&&[...l].some(a=>a.length>b.length&&a.includes(g))){d=e+b.length;continue}c.push(e),d=e+b.length}return c},o=function(a){let b=[],c=0;for(;c<=a.length;){let d=a.indexOf("\n",c),e=-1===d?a.length:d;if(b.push({start:c,end:e}),-1===d)break;c=d+1}let d=/^\s*(?:#|\||>)/u,e=[],f=0;for(;f<b.length;){let c=b[f],g=a.slice(c.start,c.end);if(""===g.trim()||d.test(g)){f+=1;continue}let h=f;for(;h+1<b.length;){let c=b[h+1],e=a.slice(c.start,c.end);if(""===e.trim()||d.test(e))break;h+=1}e.push({start:c.start,end:b[h].end}),f=h+1}return e}(a),p=[];for(let b of o){let c=a.slice(b.start,b.end);if(!c.includes("阶段"))continue;let e=[];for(let a of c.matchAll(RegExp(j.source,"gu")))e.push({start:b.start+(a.index??0),total:Number(a[1])});if(0!==e.length)for(let[c,f]of e.entries()){let g=f.start,i=e[c+1]?.start??b.end,j=a.slice(g,i),k=0;for(let a of l)for(let b of n(j,a)){let c=j.slice(b+a.length,b+a.length+12),e=h.exec(c);e&&(!e[1]||d.test(e[1]))&&(k+=Number(e[2]))}k>0&&k===f.total&&p.push({start:g,end:i})}}let q=a=>p.some(b=>a>=b.start&&a<b.end);for(let f of b.composition)for(let b of n(a,f.trade)){if(q(b))continue;let g=a.slice(0,b),i=Math.max(g.lastIndexOf("。"),g.lastIndexOf(";"),g.lastIndexOf(";"),g.lastIndexOf("\n"));if(e.test(g.slice(i+1)))continue;let j=a.slice(b+f.trade.length,b+f.trade.length+12),k=h.exec(j);if(!k||k[1]&&!d.test(k[1]))continue;let l=Number(k[2]);if(l===f.count)continue;let m=b+f.trade.length+k[1].length;c.push({kind:"trade",label:`工种构成 ${f.trade}`,start:m,end:m+k[2].length,actual:l,expected:f.count,message:`工种构成人数与蓝图权威不一致:${f.trade} 正文 ${l} 人,蓝图权威 ${f.count} 人`,suggestion:"工种构成表必须与蓝图工种构成唯一口径一致,各工种人数不得自行改写。"})}for(let d of b.equipment)if(1===d.variantCount)for(let b of m(a,d.name)){let e=a.slice(b+d.name.length,b+d.name.length+12),g=i.exec(e);if(!g||g[1]&&!f.test(g[1]))continue;let h=Number(g[2]);if(h===d.count)continue;let j=b+d.name.length+g[1].length;c.push({kind:"equipment",label:`机械台数 ${d.name}`,start:j,end:j+g[2].length,actual:h,expected:d.count,message:`机械台数与蓝图权威不一致:${d.name} 正文 ${h} 台,蓝图权威 ${d.count} 台`,suggestion:"机械投入计划必须与蓝图机械清单一致,台数不得自行改写。"})}else if(d.spec)for(let b of m(a,d.spec)){let e=a.lastIndexOf("\n",b)+1,f=a.indexOf("\n",b);-1===f&&(f=a.length);let g=a.slice(e,f),h=b-e,i=e+Math.max(g.lastIndexOf(",",h)+1,g.lastIndexOf("。",h)+1,g.lastIndexOf(";",h)+1);if(!a.slice(i,f).includes(d.name))continue;let j=b+d.spec.length,k=a.slice(j,j+12),l=/(\d+(?:\.\d+)?)\s*台/u.exec(k);if(!l)continue;let m=Number(l[1]);if(m===d.count)continue;let n=j+(l.index??0);c.push({kind:"equipment",label:`机械台数 ${d.name}(${d.spec})`,start:n,end:n+l[1].length,actual:m,expected:d.count,message:`机械台数与蓝图权威不一致:${d.name}(${d.spec}) 正文 ${m} 台,蓝图权威 ${d.count} 台`,suggestion:"机械投入计划必须与蓝图机械清单一致,台数不得自行改写。"})}for(let d of b.materials)for(let b of m(a,d.spec)){let e=a.lastIndexOf("\n",b)+1,f=a.indexOf("\n",b);-1===f&&(f=a.length);let h=a.slice(e,f);if(/^\s*\|?\s*(?:合计|小计|总计|累计)/u.test(h))continue;let i=b-e,j=e+Math.max(h.lastIndexOf(";",i),h.lastIndexOf(";",i),h.lastIndexOf("。",i))+1,l=h.indexOf(";",i),m=h.indexOf(";",i),n=h.indexOf("。",i),o=Math.min(-1===l?h.length:l,-1===m?h.length:m,-1===n?h.length:n);if(!a.slice(j,e+o).includes(d.name))continue;let p=b+d.spec.length,q=a.slice(p,p+16),r=g.exec(q);if(!r||k(r[2])!==d.family)continue;let s=Number(r[1]);if(s===d.quantity)continue;let t=p+r[0].indexOf(r[1]);c.push({kind:"material",label:`材料拆分 ${d.name}(${d.spec})`,start:t,end:t+r[1].length,actual:s,expected:d.quantity,message:`材料规格拆分数量与蓝图权威不一致:${d.name}(${d.spec})正文 ${s}${d.unit},蓝图权威 ${d.quantity}${d.unit}`,suggestion:"同名多规格材料的拆分数量必须与清单逐项一致,不得自行分配。"})}return c}function n(a,b){if(!b)return{markdown:a,fixedCount:0,details:[],residualCount:0};let c=m(a,b);if(0===c.length)return{markdown:a,fixedCount:0,details:[],residualCount:0};let d=[...c].sort((a,b)=>b.start-a.start),e=a,f=[],g=1/0;for(let a of d)a.end>g||(e=`${e.slice(0,a.start)}${a.expected}${e.slice(a.end)}`,f.push(a),g=a.start);let h=m(e,b);return h.length>0?{markdown:a,fixedCount:0,details:[],residualCount:h.length}:{markdown:e,fixedCount:f.length,details:f.map(a=>`${a.label} ${a.actual}→${a.expected}`),residualCount:0}}},71678:(a,b,c)=>{c.d(b,{M8:()=>m,Xp:()=>q,a0:()=>l,dn:()=>r,hM:()=>k,mI:()=>t,xb:()=>p});var d=c(37047),e=c(41991),f=c(70208);let g=["对与评标活动有关的工作人员的纪律要求","评标委员会成员与投标人接触的限制","评标纪律与廉洁从业承诺要求","评审争议处理与投标澄清配合程序","评审结果确认与中标公示流程","评标办法与分值构成说明","异常低价评审与计算方式说明","清单计量与报价口径约定","投标文件实质性响应要求","投标保证金缴纳与退还程序","开标程序与投标文件递交截止时间","评标期间行为管控与资料闭环","预付款与进度款支付比例约定","履约担保与保证金缴纳退还约定","价格波动与合同价款调整约定","暂列金额与暂估价使用约定","税费计取与发票结算约定","违约责任与罚款赔偿条款"],h=["劳动力配置计划与高峰期人数安排","施工质量保证措施与验收标准","安全生产管理与教育培训要求","施工进度计划与关键线路安排","材料设备采购进场计划与检验要求","施工现场文明施工与环境保护管理","劳动纪律与班组作业管理制度","施工机械设备配置与维护保养计划","农民工工资支付保障与劳务实名制管理","材料采购质量证明与进场验收管理","工期承诺与进度考核奖惩管理"],i=/评标|投标|行贿|打招呼|递条子|廉洁|串标|围标|弄虚作假|干扰评标|纪律|澄清|中标|报价|清单计量|评审|保证金|开标|递交|争议|异常低价|评标基准价|预付款|进度款|担保|价格波动|材料调差|暂列金额|暂估价|计税|税金|发票|违约/u;function j(a){let b=a.sectionTitle?.trim()||"",c=(a.content||"").replace(/\s+/gu," ").slice(0,400);return b?`${b}。${c}`:c}function k(a){let b=a.sectionTitle?.trim()||a.content.replace(/\s+/gu,"").slice(0,60);return`${a.filePath}::${b}`}async function l(a,b){if(0===a.length)return{safe:[],excluded:[]};let c=a.filter(a=>i.test(j(a)));if(0===c.length)return{safe:[...a],excluded:[]};let e=c.map(j),f=await (0,d.Mv)(e,[...g],b),k=await (0,d.Mv)(e,[...h],b),l=new Set;for(let a of c){let b=j(a),c=Math.max(...g.map(a=>f(b,a))),d=Math.max(...h.map(a=>k(b,a)));c>=.6&&c>d&&l.add(a)}return{safe:a.filter(a=>!l.has(a)),excluded:[...l]}}async function m(a){return(0,e.A)({prototypes:[...g],negativePrototypes:[...h],threshold:.6,embedDocuments:a})}function n(a){return a.replace(/[\s\p{P}\p{S}]+/gu,"").toLowerCase()}let o=/^(?:我公司|本公司|我方|投标人|供应商|承包人)(?:就|对)[^,。;]{0,22}(?:均属|属实|真实有效|承担|负责|无异议|为准)$/u;function p(a){let b=a.trim().replace(/\s+/gu,"");if(!b||(0,f.mq)(b)||o.test(b))return!0;let c=n(b);if(g.some(a=>n(a)===c))return!0;let d=b.replace(/农民工工资保证金|工资保证金/gu,""),e=/评标|投标|开标|中标|评审|保证金|串标|围标|廉洁|询标|递交/u.test(d),h=/纪律|监督|争议|澄清|程序|行为|管控|限制|接触|公示|承诺|响应|办法/u.test(b);return!!(e&&h||/异常低价|评标基准价/u.test(b)||/电子保函|保函|投标保证金|履约担保|履约保证金|保证金(?:的)?(?:缴纳|退还|提交|方式)/u.test(b)&&!/农民工|工资|专用账户|实名|考勤|劳资/u.test(b)||/暂列金额|暂估价|材料调差/u.test(b)||/预付款(?:支付|比例|约定|申请|保函)|进度款(?:支付|申请|计量|约定)|履约担保/u.test(b)||/价格波动(?:调整|约定)|违约金(?:条款|约定)|计税|税金(?:计取|结算)|发票(?:开具|结算)/u.test(b))||q(b)}function q(a){let b=a.trim().replace(/\s+/gu,"");if(!b)return!1;let c=b.replace(/^\d{1,3}(?:[..]\d{1,3})*[、..]?/u,"");return!!(/^具备(?:有效|相应|满足)/u.test(c)||/^(?:须|应|需|得)?提供[^,,。;]{0,12}(?:证明|材料|文件|证件|证书|报告)/u.test(c))||!!/营业执照|资质证书|安全生产许可证|资格预审|资格审查|资质审查|财务状况|业绩证明|业绩要求|银行资信|审计报告|信用记录|信用评价|不良行为记录|联合体投标|联合体协议/u.test(b)&&!/施工|技术|方案|措施|管理|控制|验收|工艺|流程|计划|组织|进度|质量|工期|文明|绿色|环保|节能|材料|设备|机械|人员|劳务|检验|检测|试验|保证|落实|制度/u.test(b)}function r(a){let b=a.trim().replace(/\s+/gu,"");return!!b&&!!/投标人|投标方|承包人资格|资格要求|资格审查|资格预审|资质要求|资质条件|资质等级|资格条件|财务状况|业绩要求|业绩证明|信用要求|联合体/u.test(b)&&/营业执照|资质证书|安全生产许可证|级及以上资质|财务状况|财务报告|审计报告|银行资信|业绩证明|类似业绩|信用记录|信用评价|不良行为记录|投标保证金|履约保证金/u.test(b)}async function s(a){let b=a.sections.filter(a=>a?.trim());if(0===b.length)return[];let c=b.filter(a=>!p(a)),e=c.filter(a=>i.test(a));if(0===e.length)return c;let f=`${a.chapterTitle} ${a.chapterPurpose||""}`.trim(),j=await (0,d.Mv)(e,[...g],a.embedDocuments),k=await (0,d.Mv)(e,f?[f]:[],a.embedDocuments),l=await (0,d.Mv)(e,[...h],a.embedDocuments),m=new Set;for(let a of e){let b=Math.max(...g.map(b=>j(a,b))),c=f?k(a,f):0,d=Math.max(...h.map(b=>l(a,b)));b>=.6&&b>c&&b>d&&m.add(a)}return c.filter(a=>!m.has(a))}async function t(a,b){return Promise.all(a.map(async a=>({...a,sections:await s({sections:a.sections||[],chapterTitle:a.title,chapterPurpose:a.purpose,embedDocuments:b})})))}},73186:(a,b,c)=>{c.d(b,{Su:()=>i,U2:()=>k,Zq:()=>f,am:()=>j});var d=c(76760);function e(a){return d.resolve(a).replace(/\\/gu,"/").toLowerCase()}function f(a,b=[]){return{projectId:a,allowedFilePaths:[...new Set(b.filter(Boolean).map(e))]}}function g(a){return!!a?.allowedFilePaths.length}function h(a,b){if(!g(b))return!0;if(!a)return!1;let c=e(a);return b.allowedFilePaths.includes(c)}function i(a,b){return a.filter(a=>h(a.filePath,b))}function j(a,b){return a.filter(a=>h(a.sourceFile,b))}function k(a,b,c){if(!g(b))return;let d=a.filter(a=>!h(a.filePath,b));if(d.length>0){let a=d.slice(0,5).map(a=>a.filePath).join(";");throw Error(`EVIDENCE_SCOPE_VIOLATION:${c}:${a}`)}}},73859:(a,b,c)=>{c.d(b,{$i:()=>f,E1:()=>j,d2:()=>i,oC:()=>g,p4:()=>d,rF:()=>h});let d={id:"default_general_document",name:"通用文档",factFields:[{id:"document_identity",name:"对象名称",aliases:["项目名称","工程名称","文档名称","任务名称","招标项目名称","建设项目名称"],category:"identity",cardinality:"single",derivationPolicy:"source_only",usagePolicy:"must_use",confidencePolicy:{minForGeneration:.75,minForValidation:.85,allowPathOnly:!1},conflictPolicy:"strict"},{id:"schedule_requirement",name:"周期要求",aliases:["计划工期","工期","周期要求","进度节点要求","开工日期","竣工日期"],category:"schedule",cardinality:"single",derivationPolicy:"source_only",usagePolicy:"must_use",confidencePolicy:{minForGeneration:.7,minForValidation:.8,allowPathOnly:!1},conflictPolicy:"strict"},{id:"quality_requirement",name:"质量要求",aliases:["质量要求","质量标准","验收要求","评价标准"],category:"quality",cardinality:"multiple",derivationPolicy:"source_only",usagePolicy:"use_if_relevant",confidencePolicy:{minForGeneration:.65,minForValidation:.75,allowPathOnly:!1},conflictPolicy:"allow_multiple"},{id:"safety_requirement",name:"安全合规要求",aliases:["安全要求","安全合规要求","风险控制要求","合规要求"],category:"safety",cardinality:"multiple",derivationPolicy:"source_only",usagePolicy:"use_if_relevant",confidencePolicy:{minForGeneration:.65,minForValidation:.75,allowPathOnly:!1},conflictPolicy:"allow_multiple"},{id:"technical_parameter",name:"技术参数",aliases:["技术参数","参数规格范围","规格","型号","尺寸","标准编号","材料设备"],category:"technical",cardinality:"multiple",derivationPolicy:"source_only",usagePolicy:"must_use",confidencePolicy:{minForGeneration:.7,minForValidation:.8,allowPathOnly:!1},conflictPolicy:"allow_multiple"},{id:"resource_plan",name:"资源配置",aliases:["劳动力","机械","检测设备","应急物资","资源配置","人员配置"],category:"resource",cardinality:"multiple",derivationPolicy:"plan_inferable",usagePolicy:"use_if_relevant",confidencePolicy:{minForGeneration:.45,minForValidation:.55,allowPathOnly:!1},conflictPolicy:"allow_multiple"},{id:"commercial_data",name:"商务数据",aliases:["报价","单价","合价","综合单价","预留金","税率","金额","利润"],category:"commercial",cardinality:"multiple",derivationPolicy:"forbidden",usagePolicy:"do_not_use",confidencePolicy:{minForGeneration:1,minForValidation:1,allowPathOnly:!1},conflictPolicy:"ignore"},{id:"rule_requirement",name:"规则要求",aliases:["规则要求","变更说明","实施范围","对象范围","结构化数据范围"],category:"compliance",cardinality:"multiple",derivationPolicy:"source_only",usagePolicy:"use_if_relevant",confidencePolicy:{minForGeneration:.6,minForValidation:.7,allowPathOnly:!1},conflictPolicy:"allow_multiple"}],forbiddenValuePatterns:[/投标报价|报价明细|单价|合价|综合单价|预留金|暂列金额|税率|增值税|利润|结算/u],diagnosticValuePatterns:[/OCR|识别错误|乱码|无法确认|疑似|不确定|绑定片段|兜底|知识库|提示词|后台|文件路径|PDF|DWG|Excel/u,/^#+\s*/u,/^见(?:招标|投标人|前附|补疑|图纸|清单|文件|资料|公告|须知)/u],lowConfidenceValuePatterns:[/无法确认|疑似|不确定|需复核|文字模糊|语义断裂|识别错误|乱码/u]},e={...d,id:"construction_organization_design",name:"施工组织设计"};function f(a,b=""){let c=`${a?.id||""} ${a?.name||""} ${a?.category||""} ${a?.description||""} ${a?.outputTitle||""} ${b}`;return/施工组织设计|施工方案|危大工程|人、材、机|安全文明施工/u.test(c)?e:d}function g(a,b){if(b)return a.factFields.find(a=>a.name===b||a.aliases.some(a=>b.includes(a)||a.includes(b)))}function h(a,b){return a.forbiddenValuePatterns.some(a=>a.test(b))}function i(a,b){return a.diagnosticValuePatterns.some(a=>a.test(b))}function j(a,b){return a.lowConfidenceValuePatterns.some(a=>a.test(b))}},76193:(a,b,c)=>{c.d(b,{ll:()=>l,wF:()=>o,yT:()=>k}),c(51190),c(64406),c(10751);var d=c(93675);let e=new Set(["structure","table","fact_consistency","evidence_coverage","professional_chain","control_loop","format","style","scope"]),f=[{id:"table-line-residue",kind:"deterministic",anchoredTo:"table-quality",giveUpOnFailure:!0},{id:"templated-labels",kind:"deterministic",anchoredTo:"templated-label",giveUpOnFailure:!0},{id:"structure-integrity",kind:"deterministic",anchoredTo:"structure-integrity",giveUpOnFailure:!0},{id:"repeated-words",kind:"deterministic",anchoredTo:"repeated-word",giveUpOnFailure:!0},{id:"duplicate-tables",kind:"deterministic",anchoredTo:"duplicate-table",giveUpOnFailure:!0},{id:"finish-thickness",kind:"deterministic",anchoredTo:"finish-thickness",giveUpOnFailure:!0},{id:"slot-depth-value",kind:"deterministic",anchoredTo:"fact-reconciliation",authorities:["blueprint"],giveUpOnFailure:!0},{id:"labor-peak",kind:"deterministic",anchoredTo:"resource-consistency",authorities:["laborPeak"],giveUpOnFailure:!0},{id:"phase-labor-values",kind:"deterministic",anchoredTo:"phase-labor-mixing",authorities:["blueprint"],giveUpOnFailure:!0},{id:"resource-breakdown",kind:"deterministic",anchoredTo:"resource-breakdown-consistency",authorities:["blueprint"],giveUpOnFailure:!0},{id:"internal-table-row-dup",kind:"deterministic",anchoredTo:"table-spam",giveUpOnFailure:!0},{id:"duplicate-basic-info-tables",kind:"deterministic",anchoredTo:"table-quality",giveUpOnFailure:!0},{id:"fallback-placeholder-rows",kind:"deterministic",anchoredTo:"formal-placeholder",giveUpOnFailure:!0},{id:"greening-maintenance",kind:"deterministic",anchoredTo:"greening-maintenance-mismatch",authorities:["greeningMaintenance"],giveUpOnFailure:!0},{id:"paragraph-opening-repeat",kind:"deterministic",anchoredTo:"paragraph-opening-repeat",giveUpOnFailure:!0},{id:"paragraph-tail-repeat",kind:"deterministic",anchoredTo:"paragraph-tail-repeat",giveUpOnFailure:!0},{id:"collision-numbered-heading",kind:"deterministic",anchoredTo:"collision-numbered-heading",giveUpOnFailure:!0},{id:"heading-uncovered-items",kind:"deterministic",anchoredTo:"heading-uncovered-engineering-items",giveUpOnFailure:!0},{id:"inverted-date-range",kind:"deterministic",anchoredTo:"inverted-date-range",giveUpOnFailure:!0},{id:"truncated-sentence",kind:"deterministic",anchoredTo:"truncated-sentence",giveUpOnFailure:!0},{id:"meta-discourse",kind:"deterministic",anchoredTo:"meta-discourse-declaration",giveUpOnFailure:!0},{id:"formula-residue",kind:"deterministic",anchoredTo:"formula-residue",giveUpOnFailure:!0},{id:"self-undermining",kind:"deterministic",anchoredTo:"self-undermining-candidate",giveUpOnFailure:!0},{id:"ambiguous-either-or",kind:"deterministic",anchoredTo:"ambiguous-either-or",authorities:["supportSystem"],giveUpOnFailure:!0},{id:"empty-scoring-response",kind:"deterministic",anchoredTo:"requirements-coverage",giveUpOnFailure:!0},{id:"tender-meta-language",kind:"deterministic",anchoredTo:"formal-style",giveUpOnFailure:!0},{id:"forbidden-configuration",kind:"deterministic",anchoredTo:"formal-text-gate",giveUpOnFailure:!0},{id:"basis-regulation-region",kind:"deterministic",anchoredTo:"basis-regulations-coverage",authorities:["blueprint"],giveUpOnFailure:!0},{id:"work-injury-insurance",kind:"deterministic",anchoredTo:"local-adaptation-keyword",giveUpOnFailure:!0},{id:"duplicate-response-line",kind:"deterministic",anchoredTo:"duplicate-paragraph",giveUpOnFailure:!0},{id:"atlas-reference",kind:"deterministic",anchoredTo:"drawing-reference",giveUpOnFailure:!0},{id:"tertiary-h4-dedupe",kind:"deterministic",anchoredTo:"tertiary-heading",giveUpOnFailure:!0},{id:"internal-term-heading",kind:"deterministic",anchoredTo:"internal-terminology-anchor",giveUpOnFailure:!0},{id:"skeleton-fingerprint-variants",kind:"deterministic",anchoredTo:"skeleton-fingerprint",giveUpOnFailure:!0},{id:"flow-form-variants",kind:"deterministic",anchoredTo:"flow-form-repeat",giveUpOnFailure:!0},{id:"truncated-title-completion",kind:"deterministic",anchoredTo:"title-integrity",giveUpOnFailure:!0},{id:"sentence-like-heading-split",kind:"deterministic",anchoredTo:"title-integrity",giveUpOnFailure:!0}],g=[{id:"numeric-arbiter-concept",kind:"deterministic",anchoredTo:"parameter-concept-conflict",giveUpOnFailure:!0},{id:"numeric-arbiter-spec",kind:"deterministic",anchoredTo:"spec-location-mismatch",giveUpOnFailure:!0}],h=["source-enumeration","internal-terminology-anchor","fabricated-start-date","repeated-word","writer-missing-section","meta-discourse-declaration","formula-residue","finish-thickness","formal-placeholder","truncated-sentence"],i=[{id:"fact-landing",kind:"llm-patch",anchoredTo:"important-unplaced-facts",patchGuard:{detectors:[...h]},giveUpOnFailure:!0},{id:"table-repair",kind:"llm-patch",anchoredTo:"table-quality",patchGuard:{detectors:[...h]},giveUpOnFailure:!0},{id:"table-execution-repair",kind:"llm-patch",anchoredTo:"table-plan-execution",patchGuard:{detectors:[...h]},giveUpOnFailure:!0},{id:"templating-repair",kind:"llm-patch",anchoredTo:"templating-filler",patchGuard:{detectors:[...h]},giveUpOnFailure:!0},{id:"workpackage-skeleton-repair",kind:"llm-patch",anchoredTo:"workpackage-skeleton",patchGuard:{detectors:[...h]},giveUpOnFailure:!0},{id:"planned-section-repair",kind:"llm-patch",anchoredTo:"planned-section-completeness",patchGuard:{detectors:[...h]},giveUpOnFailure:!0},{id:"global-consistency-repair",kind:"llm-patch",anchoredTo:"global-consistency-review",patchGuard:{detectors:[...h]},giveUpOnFailure:!0}],j=new Set;function k(a,b){return j.add(a),b()}async function l(a,b){j.add(a);try{return await b()}catch(c){let b=c instanceof Error?c.message:String(c);return console.error(`[gen] detector degraded: ${a} failed, fallback to warning issue:`,c),[{level:"warning",severity:"warning",category:"format",owner:"system",repairability:"manual_review",message:`交付前检测器「${a}」执行失败,已降级为待复核:${b}`,suggestion:"此为检测器基础设施异常,非正文内容缺陷;其余交付前检查已照常完成。可稍后重新生成复核,或人工复核该检测维度。"}]}}let m=[{id:"spec-gate-rules",scope:"full-document",category:"structure"},{id:"auto-spec-validation",scope:"full-document",category:"structure"},{id:"fact-consistency",scope:"full-document",category:"fact_consistency"},{id:"project-contamination",scope:"full-document",category:"scope"},{id:"project-basic-placeholder",scope:"full-document",category:"format"},{id:"standard-final",scope:"full-document",category:"structure"},{id:"fact-coverage",scope:"full-document",category:"evidence_coverage"},{id:"page-target",scope:"full-document",category:"structure"},{id:"document-budget",scope:"full-document",category:"structure"},{id:"formal-text-gate",scope:"full-document",category:"format"},{id:"heading-uncovered-engineering-items",scope:"full-document",category:"structure"},{id:"writer-missing-section",scope:"full-document",category:"structure",deterministicSafe:!0},{id:"critical-section-depth",scope:"chapter",category:"structure"},{id:"critical-section-fact-density",scope:"chapter",category:"evidence_coverage"},{id:"chapter-fact-density",scope:"chapter",category:"evidence_coverage"},{id:"construction-org-professional-audit",scope:"chapter",category:"professional_chain"},{id:"toc-consistency",scope:"full-document",category:"structure",deterministicSafe:!0},{id:"section-numbering",scope:"full-document",category:"structure",deterministicSafe:!0},{id:"section-count-overflow",scope:"chapter",category:"structure"},{id:"heading-duplicate",scope:"full-document",category:"structure",deterministicSafe:!0},{id:"structure-integrity",scope:"full-document",category:"structure",deterministicSafe:!0},{id:"templated-label",scope:"full-document",category:"structure",deterministicSafe:!0},{id:"title-integrity",scope:"full-document",category:"structure"},{id:"evaluation-criteria-coverage",scope:"full-document",category:"evidence_coverage"},{id:"requirements-coverage",scope:"full-document",category:"evidence_coverage"},{id:"fabricated-start-date",scope:"full-document",category:"fact_consistency",deterministicSafe:!0},{id:"field-value-mismatch",scope:"full-document",category:"fact_consistency",deterministicSafe:!0},{id:"area-arithmetic",scope:"full-document",category:"fact_consistency",deterministicSafe:!0},{id:"resource-consistency",scope:"full-document",category:"fact_consistency",authorities:["laborPeak"]},{id:"node-schedule-consistency",scope:"full-document",category:"fact_consistency"},{id:"cross-section-numeric-conflict",scope:"full-document",category:"fact_consistency"},{id:"fact-reconciliation",scope:"full-document",category:"fact_consistency",authorities:["blueprint"]},{id:"greening-maintenance-mismatch",scope:"full-document",category:"fact_consistency",authorities:["greeningMaintenance"]},{id:"street-light-count-mismatch",scope:"full-document",category:"fact_consistency"},{id:"spec-location-mismatch",scope:"full-document",category:"fact_consistency"},{id:"blueprint-citation-consistency",scope:"full-document",category:"fact_consistency",authorities:["blueprint"]},{id:"cross-project-value-copy",scope:"full-document",category:"fact_consistency",authorities:["blueprint"]},{id:"phase-labor-mixing",scope:"full-document",category:"fact_consistency",authorities:["blueprint"]},{id:"equipment-batch-conflict",scope:"full-document",category:"fact_consistency",authorities:["blueprint"]},{id:"preliminary-action-timing",scope:"full-document",category:"fact_consistency",authorities:["blueprint"]},{id:"foundation-form-residue",scope:"full-document",category:"fact_consistency"},{id:"ambiguous-either-or",scope:"full-document",category:"fact_consistency",authorities:["supportSystem"]},{id:"excavation-depth-lock",scope:"full-document",category:"fact_consistency"},{id:"excavation-hazard-classification",scope:"full-document",category:"fact_consistency"},{id:"support-form-fact-consistency",scope:"full-document",category:"fact_consistency",authorities:["supportSystem"]},{id:"equipment-entry-timing",scope:"full-document",category:"fact_consistency"},{id:"fabricated-award",scope:"full-document",category:"fact_consistency"},{id:"bidder-qualification-section",scope:"full-document",category:"scope"},{id:"cross-chapter-duplicate-section",scope:"chapter",category:"structure"},{id:"basic-info-schedule-field",scope:"full-document",category:"fact_consistency"},{id:"duplicate-table",scope:"full-document",category:"table"},{id:"duplicate-paragraph",scope:"full-document",category:"structure"},{id:"paragraph-tail-repeat",scope:"full-document",category:"style",deterministicSafe:!0},{id:"collision-numbered-heading",scope:"full-document",category:"structure",deterministicSafe:!0},{id:"inverted-date-range",scope:"full-document",category:"fact_consistency",deterministicSafe:!0},{id:"resource-triad-section-hierarchy",scope:"full-document",category:"structure"},{id:"support-system-conflict",scope:"full-document",category:"fact_consistency",authorities:["supportSystem"]},{id:"dangerous-list-consistency",scope:"full-document",category:"fact_consistency"},{id:"hazard-exclusion-contradiction",scope:"full-document",category:"fact_consistency"},{id:"six-hundred-percent-coverage",scope:"full-document",category:"evidence_coverage"},{id:"self-undermining-candidate",scope:"full-document",category:"style"},{id:"paragraph-opening-repeat",scope:"full-document",category:"style",deterministicSafe:!0},{id:"flow-form-repeat",scope:"full-document",category:"style"},{id:"skeleton-fingerprint",scope:"full-document",category:"style"},{id:"repeated-word",scope:"full-document",category:"style",deterministicSafe:!0},{id:"commercial-data-in-body",scope:"full-document",category:"scope"},{id:"overview-recap",scope:"full-document",category:"style"},{id:"closure-phrase-density-cap",scope:"full-document",category:"style"},{id:"parameter-concept-conflict",scope:"full-document",category:"fact_consistency"},{id:"internal-terminology-anchor",scope:"full-document",category:"style",deterministicSafe:!0},{id:"construction-system-coverage",scope:"chapter",category:"evidence_coverage"},{id:"dangerous-applicability",scope:"full-document",category:"evidence_coverage"},{id:"innovation-tech-coverage",scope:"full-document",category:"evidence_coverage"},{id:"instruction-like-heading",scope:"full-document",category:"structure"},{id:"formal-heading-hierarchy",scope:"full-document",category:"structure",deterministicSafe:!0},{id:"formal-content-integrity",scope:"full-document",category:"format",deterministicSafe:!0},{id:"punctuation-artifact",scope:"full-document",category:"format",deterministicSafe:!0},{id:"table-quality",scope:"full-document",category:"table",deterministicSafe:!0},{id:"table-spam",scope:"full-document",category:"table",deterministicSafe:!0},{id:"basis-regulations-coverage",scope:"full-document",category:"fact_consistency",authorities:["blueprint"]},{id:"resource-breakdown-consistency",scope:"full-document",category:"fact_consistency",authorities:["blueprint"]},{id:"section-content-integrity",scope:"chapter",category:"structure"},{id:"professional-content",scope:"chapter",category:"professional_chain"},{id:"professional-score",scope:"chapter",category:"professional_chain"},{id:"generic-professional-content",scope:"chapter",category:"professional_chain"},{id:"management-measure-number",scope:"chapter",category:"professional_chain"},{id:"closed-loop-density",scope:"full-document",category:"control_loop"},{id:"cross-chapter-consistency",scope:"full-document",category:"fact_consistency"},{id:"process-spec-conflict",scope:"full-document",category:"fact_consistency"},{id:"evidence-usage-coverage",scope:"full-document",category:"evidence_coverage"},{id:"paragraph-generic",scope:"full-document",category:"style"},{id:"construction-org-generic-language",scope:"chapter",category:"style"},{id:"construction-org-control-loop",scope:"chapter",category:"control_loop"},{id:"construction-org-professional-chain",scope:"chapter",category:"professional_chain"},{id:"construction-org-consistency",scope:"full-document",category:"fact_consistency"},{id:"construction-org-chapter-data-coverage",scope:"chapter",category:"evidence_coverage"},{id:"construction-org-major-content",scope:"chapter",category:"professional_chain"},{id:"construction-org-division-section",scope:"chapter",category:"structure"},{id:"major-content-governance",scope:"full-document",category:"structure"},{id:"construction-org-bonus-module",scope:"chapter",category:"professional_chain"},{id:"chapter-dependency",scope:"chapter",category:"professional_chain"},{id:"document-delivery-score",scope:"full-document",category:"professional_chain"},{id:"generated-fact-verification",scope:"full-document",category:"fact_consistency"},{id:"duplicate-basic-info",scope:"full-document",category:"structure"},{id:"formal-style",scope:"full-document",category:"style"},{id:"tertiary-heading",scope:"full-document",category:"structure",deterministicSafe:!0},{id:"min-chapter-section",scope:"chapter",category:"structure"},{id:"precise-fact-usage",scope:"full-document",category:"fact_consistency"},{id:"boq-placement",scope:"full-document",category:"evidence_coverage"},{id:"stage-phrasing",scope:"full-document",category:"fact_consistency"},{id:"emergency-section-depth",scope:"full-document",category:"structure"},{id:"boq-row-trace",scope:"full-document",category:"evidence_coverage"},{id:"drawing-reference",scope:"full-document",category:"evidence_coverage"},{id:"web-evidence-leakage",scope:"full-document",category:"scope"},{id:"formal-placeholder",scope:"full-document",category:"format",deterministicSafe:!0},{id:"prompt-example-leak",scope:"full-document",category:"format"},{id:"degenerate-content",scope:"chapter",category:"style"},{id:"planned-auto-spec-gate",scope:"full-document",category:"structure"},{id:"planned-structure",scope:"full-document",category:"structure"},{id:"prompt-document-rule",scope:"full-document",category:"format"},{id:"local-adaptation-keyword",scope:"full-document",category:"evidence_coverage"},{id:"boq-division-coverage",scope:"full-document",category:"evidence_coverage"},{id:"important-unplaced-facts",scope:"chapter",category:"evidence_coverage"},{id:"table-plan-execution",scope:"chapter",category:"table"},{id:"templating-filler",scope:"full-document",category:"style"},{id:"templating-difficulty",scope:"full-document",category:"professional_chain"},{id:"workpackage-skeleton",scope:"chapter",category:"structure"},{id:"planned-section-completeness",scope:"chapter",category:"structure"},{id:"global-consistency-review",scope:"full-document",category:"fact_consistency"},{id:"source-enumeration",scope:"full-document",category:"style",deterministicSafe:!0},{id:"meta-discourse-declaration",scope:"full-document",category:"style",deterministicSafe:!0},{id:"finish-thickness",scope:"full-document",category:"fact_consistency",deterministicSafe:!0},{id:"formula-residue",scope:"full-document",category:"format",deterministicSafe:!0},{id:"truncated-sentence",scope:"full-document",category:"format",deterministicSafe:!0},{id:"block-structure-contract",scope:"chapter",category:"structure"},{id:"block-fact-density",scope:"chapter",category:"evidence_coverage"},{id:"block-templating",scope:"chapter",category:"style"},{id:"block-attribution-quantification",scope:"chapter",category:"professional_chain"},{id:"block-numeric-reconciliation",scope:"chapter",category:"fact_consistency"},{id:"block-format-constraints",scope:"chapter",category:"format"}];function n(a){return m.find(b=>b.id===a)}function o(){let a=[];for(let b of[...f,...g,...i]){let c=n(b.anchoredTo);if(!c){a.push(`修复器 ${b.id} 锚定检测器 ${b.anchoredTo} 未在注册表声明(检测定位=修复定位强制同源)`);continue}if(!function(a,b){let c=new Set(a??[]),d=new Set(b??[]);if(c.size!==d.size)return!1;for(let a of c)if(!d.has(a))return!1;return!0}(b.authorities,c.authorities)&&a.push(`修复器 ${b.id}(authorities=${JSON.stringify(b.authorities??[])})与锚定检测器 ${b.anchoredTo}(authorities=${JSON.stringify(c.authorities??[])})权威口径不一致`),"llm-patch"===b.kind&&!b.patchGuard){a.push(`LLM patch 修复器 ${b.id} 未声明 patchGuard(修复过程会重新引入已知坏内容,必须预检)`);continue}for(let c of b.patchGuard?.detectors??[]){let d=n(c);d?d.deterministicSafe||a.push(`修复器 ${b.id} patchGuard 引用检测器 ${c} 未标记 deterministicSafe(patchGuard 只收录零误伤确定性检测器)`):a.push(`修复器 ${b.id} patchGuard 引用检测器 ${c} 未在注册表声明`)}}for(let[b,c]of f.entries())f.slice(0,b).some(a=>a.id===c.id)&&a.push(`确定性修复器锚定声明重复:${c.id}`);let b=new Set(d.aW.map(a=>a.key));for(let c of b)f.some(a=>a.id===c)||a.push(`确定性修复器 ${c} 已接入 SURFACE_FIX_STEPS 但未在 DETERMINISTIC_FIXER_ANCHORS 声明锚定检测器`);for(let c of f)b.has(c.id)||a.push(`确定性修复器锚定声明 ${c.id} 无对应 SURFACE_FIX_STEPS 键(声明多余或键已改名)`);for(let[b,c]of g.entries())g.slice(0,b).some(a=>a.id===c.id)&&a.push(`数值裁决器修复器声明重复:${c.id}`);for(let b of m)b.category&&e.has(b.category)||a.push(`检测器 ${b.id} 声明了非法 category(当前=${b.category||"缺失"};合法值:${[...e].join("、")})`);if(a.length>0)throw Error(`检测器/修复器注册表一致性校验失败(${a.length} 项):
221
- ${a.map(a=>`- ${a}`).join("\n")}`)}},79227:(a,b,c)=>{c.d(b,{C:()=>f,previewGenerationBudgetForTemplate:()=>g});var d=c(46482),e=c(95734);function f(a){let b=Math.max(1,a.chapters.length),c=a.targetWords>0?Math.round(a.targetWords/b):1200,d=a.strategy,f=[],g=a.materialFileCount<4&&a.evidenceCount<6,h=Math.max(1,Math.min(b,(Number.isFinite(a.configuredChapterConcurrency)&&a.configuredChapterConcurrency>0?Math.floor(a.configuredChapterConcurrency):void 0)??b)),i=(0,e.Qf)(a.targetWords),j="fast"===d.mode?1:Math.max(1,b),{floorChars:k,ceilingChars:l}=c>=6e3?{floorChars:14e3,ceilingChars:4e4}:c>=3e3?{floorChars:11e3,ceilingChars:28e3}:{floorChars:8e3,ceilingChars:18e3},m=d.repairRoundBudget?d.repairRoundBudget:Math.max(2,Math.min(4,2+ +(a.targetWords>=2e4)+ +!!g)),n=Math.min(m*b,Math.max(12,2*b));return"strict"===d.mode&&f.push("strict:风险领域关键词命中(专项/安全/质量/验收/合同/合规等)"),a.targetWords>=4e4&&f.push("strict:目标篇幅超长(≥4 万字)"),g&&f.push("strict:资料稀疏(资料包文件 <4 且可用证据 <6 条)"),"fast"===d.mode&&f.push("fast:小文档(≤6000 字且 ≤4 章)全局审查降级为 35% 抽检"),"longform"===d.mode&&f.push("longform:长文档(≥3 万字或 ≥8 章)"),"balanced"===d.mode&&f.push("balanced:常规篇幅文档,标准审查深度"),f.push(`全章节并行生成(${h}/${b} 章同批),审查流水线 ${j} 路,全局 LLM 并发不设上限,每章证据预算 ${Math.round(k/1e3)}k-${Math.round(l/1e3)}k 字符,修复轮次预算每章 ${m} 轮(文档级总池 ${n} 轮,收敛判定优先)`),{strategy:d,chapterConcurrency:h,reviewConcurrency:j,llmConcurrency:i,evidenceFloorChars:k,evidenceCeilingChars:l,repairRoundBudget:m,repairPoolBudget:n,triggers:f}}function g(a){let b=Math.max(1,a.chapters.length),c=Math.max(0,Math.round(a.targetWords??0)),e=(0,d.JP)({template:a.template,targetWords:c,requirement:a.requirement,materialFileCount:a.materialFileCount,evidenceCount:a.evidenceCount}),g=f({template:a.template,chapters:a.chapters,targetWords:c,requirement:a.requirement,materialFileCount:a.materialFileCount,evidenceCount:a.evidenceCount,hasVeryLargeExplicitChapter:a.hasVeryLargeExplicitChapter??!1,configuredChapterConcurrency:a.configuredChapterConcurrency??0,strategy:e});return{mode:e.mode,enableGlobalReview:e.enableGlobalReview,globalReviewSamplingRate:e.globalReviewSamplingRate??1,repairRoundBudget:g.repairRoundBudget,chapterConcurrency:g.chapterConcurrency,reviewConcurrency:g.reviewConcurrency,evidenceFloorChars:g.evidenceFloorChars,evidenceCeilingChars:g.evidenceCeilingChars,targetWords:c,chapterCount:b,triggers:g.triggers}}},81010:(a,b,c)=>{c.d(b,{C8:()=>aj,dr:()=>as,OY:()=>ar,DL:()=>av,jM:()=>ab,RT:()=>ac,rR:()=>W,R3:()=>X,RY:()=>Y,Pd:()=>V,md:()=>ai,eT:()=>au,TF:()=>ag,Rx:()=>ad,uw:()=>ak,wY:()=>M,Fq:()=>aw});var d=c(19898),e=c(73024),f=c(48161),g=c(76760),h=c(22213),i=c(1218),j=c(22157),k=c(38115),l=c(78217),m=c(3063);let n={seq:1,code:2,name:4,description:5,unit:6,quantity:8};function o(a){let b=a.map(a=>a.replace(/\s+/gu,""));return b.includes("序号")&&b.includes("项目编码")}function p(a){let b=a.map(a=>a.replace(/\s+/gu,"")),c=a=>b.findIndex(b=>a.includes(b)),d=c(["序号"]),e=c(["项目编码"]),f=c(["项目名称"]),g=c(["计量单位","单位"]),h=c(["工程量"]);if(!(d<0)&&!(e<0)&&!(f<0)&&!(g<0)&&!(h<0))return{seq:d,code:e,name:f,description:c(["项目特征描述"]),unit:g,quantity:h}}function q(a){return/^[一二三四五六七八九十\d]+(?:\.\d+)?$/u.test(a.trim())&&!r.test(a.trim())}let r=/^(?:\d{12}|(?:ZB|WB)\d{12})$/u,s=/工作表:(\d+(?:\.\d+)?)/u,t=/第1页\s*共(\d+)页/u,u=/工程名称:(.+?)\s*标段/u,v=/工程名称:([^\n||]{2,40}?)\s*$/mu,w=/第(\d+)页\s*共\d+页/gu;function x(a){let b=s.exec(a.sectionTitle);if(b)return b[1];let c=a.content.split("\n")[0]||"",d=s.exec(c);return d?d[1]:""}function y(a){let b=new Map;for(let c of a){let a=b.get(c.villageGroup)||[];a.push(c),b.set(c.villageGroup,a)}return b}var z=c(22496),A=c(95734),B=c(10751),C=c(48661);let D=[{zone:"east",pattern:/上海|江苏|浙江|安徽|福建|江西|山东/u,climate:{rainySeason:"6-8月",highTemp:"7-8月",winter:"12-2月"}},{zone:"south",pattern:/广东|广西|海南/u,climate:{rainySeason:"4-9月",highTemp:"6-9月",winter:"12-2月"}},{zone:"north",pattern:/北京|天津|河北|山西|内蒙古/u,climate:{rainySeason:"7-8月",highTemp:"7-8月",winter:"11-3月"}},{zone:"northeast",pattern:/辽宁|吉林|黑龙江/u,climate:{rainySeason:"7-8月",highTemp:"7月",winter:"11-3月"}},{zone:"northwest",pattern:/陕西|甘肃|宁夏|青海|新疆/u,climate:{rainySeason:"7-8月",highTemp:"7-8月",winter:"11-3月"}},{zone:"southwest",pattern:/四川|重庆|云南|贵州|西藏/u,climate:{rainySeason:"6-9月",highTemp:"7-8月",winter:"12-2月"}},{zone:"central",pattern:/湖北|湖南|河南/u,climate:{rainySeason:"6-8月",highTemp:"7-8月",winter:"12-2月"}}];function E(a){let b=`${a.name} ${a.description}`;return/塑料管|管道|检查井|雨水口|化粪池|涵管/u.test(b)?"管道铺设":/挖一般土方|挖沟槽|挖基坑|回填|清淤|余方|弃置|土方/u.test(b)&&"m3"===a.unit?"土方工程":/混凝土|垫层|涵头|压顶/u.test(b)&&"m3"===a.unit?"混凝土工程":/水泥混凝土|路床|铺装|道路|青砖|散水|块料/u.test(b)&&"m2"===a.unit?"道路铺装":/砌筑|砌体|砖/u.test(b)?"砌筑工程":/绿化|栽植|种植|苗木|草籽|喷播|灌木|乔木|色带|草坪/u.test(b)?"绿化工程":"安装工程"}let F={id:"village-municipal",projectTypes:["市政","园林绿化"],milestoneGroups:[{key:"prep",label:"施工准备与清杂拆除",pattern:/清杂|拆除|场地平整|临时/u},{key:"pipe",label:"污水管网工程",pattern:/塑料管|检查井|管网|排水|化粪池|雨水口/u},{key:"road",label:"道路铺装工程",pattern:/道路|路床|水泥混凝土|级配碎石|路缘石|青砖|散水|过路涵/u},{key:"landscape",label:"景观与绿化工程",pattern:/景观|绿化|栽植|种植|苗木|喷播|小菜园|沟塘|清淤/u},{key:"lighting",label:"亮化与收尾工程",pattern:/路灯|亮化|配电|电缆|防雷/u}],groupOfEntry:E,tradeMapping:[{trade:"管道工",pattern:/塑料管|管道|检查井|雨水口|化粪池|闭水|涵管|排水/u},{trade:"混凝土工",pattern:/混凝土|水泥砂浆|垫层|涵头|压顶/u},{trade:"瓦工",pattern:/砌筑|砌体|砖|路缘石|铺装|侧石|平石|块料|踏步|台阶/u},{trade:"绿化工",pattern:/绿化|栽植|种植|苗木|草籽|喷播|养护|灌木|乔木|色带|草坪/u},{trade:"电工",pattern:/路灯|配电|电缆|强电|防雷|接地|灯具|亮化/u},{trade:"普工",pattern:/土方|清杂|拆除|平整|回填|清淤|开挖/u}],laborUnitRange:{管道铺设:{unit:"m",min:.15,max:.3},土方工程:{unit:"m3",min:.08,max:.15},混凝土工程:{unit:"m3",min:.8,max:1.5},道路铺装:{unit:"m2",min:.3,max:.6},砌筑工程:{unit:"m3",min:1.2,max:2},绿化工程:{unit:"m2",min:.08,max:.15},安装工程:{unit:"项",min:0,max:0}},equipmentMapping:[{name:"挖掘机",spec:"0.6~1.0m\xb3",pattern:/人机配合|开挖|挖土|沟槽/u,unit:"m3",basis:"人机配合开挖(清单特征)"},{name:"自卸汽车",spec:"8t",pattern:/余方弃置|弃方|外运|回填/u,unit:"m3",basis:"土方运输与回填(清单条目)"},{name:"压路机",spec:"8~12t",pattern:/碾压|压实度/u,unit:"m2",basis:"路床碾压与压实度要求(清单特征)"},{name:"蛙式打夯机",spec:"",pattern:/回填|夯实/u,unit:"m3",basis:"沟槽回填夯实(清单条目)"},{name:"混凝土搅拌运输车",spec:"",pattern:/商品混凝土|C\d{2}混凝土/u,unit:"m3",basis:"商品混凝土运输(清单特征)"},{name:"插入式振捣器",spec:"",pattern:/混凝土浇筑|振捣/u,unit:"m3",basis:"混凝土浇筑(清单条目)"},{name:"洒水车",spec:"",pattern:/养护|绿化|喷播|栽植/u,unit:"m2",basis:"绿化养护与洒水(清单条目)"},{name:"高空作业车",spec:"",pattern:/路灯|灯具安装/u,unit:"套",basis:"路灯安装(清单条目)"}],machinePowerTable:[{name:"挖掘机",kw:90},{name:"自卸汽车",kw:120},{name:"压路机",kw:75},{name:"蛙式打夯机",kw:3},{name:"混凝土搅拌运输车",kw:110},{name:"插入式振捣器",kw:1.5},{name:"洒水车",kw:90},{name:"高空作业车",kw:60}],laborCostRatio:{min:.15,max:.25},dailyWage:{min:250,max:350},inspectionBatchRules:[{scope:"污水管网管道",namePattern:/塑料管|管道/u,unit:"m",divisor:200,descTemplate:"管道闭水试验分段检验,按每 200m 一段划分约 {count} 段(总长 {total}m)"},{scope:"道路工程",namePattern:/水泥混凝土|级配碎石|路床/u,unit:"m2",divisor:200,descTemplate:"路床压实度按每层每 200m\xb2 不少于 1 点检验,约 {count} 点(总面积 {total}m\xb2)"},{scope:"检查井",namePattern:/检查井/u,unit:"",divisor:1,descTemplate:"检查井逐座验收,共 {total} 座"}],difficultyTemplates:[{name:a=>`${a.villages.length} 个自然村分散施工组织协调`,measure:"按自然村分组划分施工段,多村平行施工 + 村内流水作业,配置专职协调员",basis:"清单按自然村分组",test:a=>a.villages.length>=2},{name:"雨季管网沟槽施工",measure:"雨季排水与边坡防护,分段开挖、快速回填(联动季节施工措施板块)",basis:"清单含沟槽开挖与管道铺设条目",test:a=>a.entries.some(a=>/挖沟槽|沟槽开挖|塑料管铺设/u.test(`${a.name} ${a.description}`))},{name:"村庄内道路施工交通疏导",measure:"分段封闭施工,设置临时道路保障居民出行(补疑条款:居民出行临时道路)",basis:"清单含道路工程条目且村内施工",test:a=>a.villages.length>0&&a.entries.some(a=>/道路|路床|路面/u.test(a.name))},{name:"既有杆管线保护",measure:"开挖前探测交底,杆线保护措施费含在清单单价内",basis:"清单特征原文含杆线保护条款",test:a=>a.entries.some(a=>/杆线|管线保护|既有管线/u.test(a.description))}],deploymentFlowFallback:"分区段流水作业",multiVillageFlow:a=>`多村平行施工 + 村内流水作业(${a} 个自然村分组)`,sequenceFallback:"清杂拆除 → 管网道路 → 景观绿化 → 亮化收尾",climateZone:"east",powerFallbackText:"临时用电以村庄既有电源分散接入为主,各施工组单独设置配电箱与计量表(柴油机械不计入用电负荷,电动机具零星分散)",waterNoteText:"施工用水以洒水车供水为主,总用水量按管网分段配置"},G={id:"building",projectTypes:["房建","装饰装修"],milestoneGroups:[{key:"prep",label:"施工准备与三通一平",pattern:/清杂|拆除|场地平整|临建|临时|三通一平/u},{key:"foundation",label:"基础工程",pattern:/桩基|基础|基坑|地下室|降水|支护|土方|挖方|回填/u},{key:"structure",label:"主体结构工程",pattern:/钢筋|模板|砌体|主体|框架|剪力墙|现浇|混凝土/u},{key:"finish",label:"装饰装修工程",pattern:/装饰|抹灰|防水|保温|门窗|屋面|涂料|吊顶|幕墙/u},{key:"mep",label:"安装与收尾工程",pattern:/电气|给排水|暖通|消防|电梯|智能化|收尾|竣工|调试/u}],groupOfEntry:function(a){let b=`${a.name} ${a.description}`;return/土方|挖方|回填|弃置|清淤/u.test(b)&&"m3"===a.unit?"土方工程":/钢筋|植筋/u.test(b)?"钢筋工程":/模板|支模/u.test(b)?"模板工程":/混凝土|垫层|现浇/u.test(b)?"混凝土工程":/砌筑|砌体|砖/u.test(b)?"砌筑工程":/防水|卷材|涂膜/u.test(b)?"防水工程":/保温|挤塑|聚苯/u.test(b)?"保温工程":/装饰|抹灰|涂料|吊顶|幕墙|墙砖|地砖|油漆|门窗/u.test(b)?"装饰工程":/电气|给排水|配电|照明|灯具|插座|管线|穿线|桥架|暖通|消防|电梯/u.test(b)?"安装电气":"安装工程"},tradeMapping:[{trade:"钢筋工",pattern:/钢筋|植筋/u},{trade:"模板工",pattern:/模板|支模/u},{trade:"防水工",pattern:/防水|卷材|涂膜/u},{trade:"架子工",pattern:/脚手架|外架/u},{trade:"抹灰工",pattern:/抹灰|粉刷|抹面/u},{trade:"水电工",pattern:/电气|给排水|配电|照明|灯具|插座|管线|穿线|桥架/u},{trade:"保温工",pattern:/保温|挤塑|聚苯/u},{trade:"混凝土工",pattern:/混凝土|水泥砂浆|垫层/u},{trade:"瓦工",pattern:/砌筑|砌体|砖|块料|铺装|墙砖|地砖/u},{trade:"普工",pattern:/土方|清杂|拆除|平整|回填|清淤|开挖/u}],laborUnitRange:{土方工程:{unit:"m3",min:.08,max:.15},钢筋工程:{unit:"t",min:.8,max:1.5},模板工程:{unit:"m2",min:.3,max:.6},混凝土工程:{unit:"m3",min:.8,max:1.5},砌筑工程:{unit:"m3",min:1.2,max:2},防水工程:{unit:"m2",min:.06,max:.12},保温工程:{unit:"m2",min:.15,max:.3},装饰工程:{unit:"m2",min:.2,max:.4},安装电气:{unit:"m",min:.08,max:.15},安装工程:{unit:"项",min:0,max:0}},equipmentMapping:[{name:"挖掘机",spec:"0.6~1.0m\xb3",pattern:/开挖|挖土|基坑|土方/u,unit:"m3",basis:"土方开挖(清单特征)"},{name:"自卸汽车",spec:"8t",pattern:/余方弃置|弃方|外运|回填/u,unit:"m3",basis:"土方运输与回填(清单条目)"},{name:"插入式振捣器",spec:"",pattern:/混凝土浇筑|振捣/u,unit:"m3",basis:"混凝土浇筑(清单条目)"},{name:"蛙式打夯机",spec:"",pattern:/回填|夯实/u,unit:"m3",basis:"回填夯实(清单条目)"},{name:"塔式起重机",spec:"QTZ63",pattern:/塔吊|塔式起重机/u,unit:"项",basis:"主体结构垂直运输(清单特征)"},{name:"施工升降机",spec:"SC200/200",pattern:/施工电梯|施工升降机/u,unit:"项",basis:"人员与材料垂直运输(清单特征)"},{name:"钢筋加工机械",spec:"",pattern:/钢筋/u,unit:"t",basis:"钢筋加工(清单条目)"},{name:"电焊机",spec:"",pattern:/焊接|钢结构|预埋/u,unit:"t",basis:"钢结构焊接与预埋(清单条目)"},{name:"混凝土输送泵",spec:"",pattern:/泵送|混凝土泵/u,unit:"m3",basis:"混凝土泵送(清单特征)"}],machinePowerTable:[{name:"挖掘机",kw:90},{name:"自卸汽车",kw:120},{name:"插入式振捣器",kw:1.5},{name:"蛙式打夯机",kw:3},{name:"塔式起重机",kw:45},{name:"施工升降机",kw:33},{name:"钢筋加工机械",kw:15},{name:"电焊机",kw:15},{name:"混凝土输送泵",kw:90},{name:"物料提升机",kw:11}],laborCostRatio:{min:.18,max:.3},dailyWage:{min:250,max:350},inspectionBatchRules:[{scope:"钢筋工程",namePattern:/钢筋/u,unit:"t",divisor:60,descTemplate:"钢筋按进场检验批划分,每 60t 一批,约 {count} 批(总量 {total}t)"},{scope:"混凝土工程",namePattern:/混凝土/u,unit:"m3",divisor:100,descTemplate:"混凝土按浇筑批次留置标准养护试件,每 100m\xb3 一批,约 {count} 批(总量 {total}m\xb3)"},{scope:"砌体工程",namePattern:/砌体|砌筑/u,unit:"m3",divisor:250,descTemplate:"砌体工程按砌筑量划分检验批,每 250m\xb3 一批,约 {count} 批(总量 {total}m\xb3)"},{scope:"防水工程",namePattern:/防水/u,unit:"m2",divisor:0,descTemplate:"防水工程按施工段划分检验批并做蓄水(淋水)试验(总量 {total}m\xb2)"}],difficultyTemplates:[{name:"深基坑施工",measure:"分层开挖、及时支护与信息化监测,编制专项施工方案并按危大工程规定组织专家论证",basis:"清单特征含基坑开挖深度",test:a=>a.entries.some(a=>{let b=/(?:挖深|开挖深度|基坑深度|坑深)[^。;;]{0,12}(\d+(?:\.\d+)?)\s*m/u.exec(a.description);return!!b&&Number.parseFloat(b[1]||"0")>=3})},{name:"高支模施工",measure:"编制专项施工方案并组织专家论证,支架验收合格后方可浇筑",basis:"清单特征含支模高度",test:a=>a.entries.some(a=>/支模高度|高支模|模板支撑[^。;;]{0,12}\d+(?:\.\d+)?\s*m/u.test(`${a.name} ${a.description}`))},{name:"大体积混凝土施工",measure:"分层浇筑、测温养护,掺加缓凝剂与矿物掺合料控制水化热",basis:"清单特征含大体积混凝土/筏板基础",test:a=>a.entries.some(a=>/大体积|基础底板|筏板/u.test(`${a.name} ${a.description}`))},{name:"垂直运输组织",measure:"塔吊与施工电梯合理布位,编制群塔作业防碰撞方案",basis:"清单特征含塔吊/施工电梯",test:a=>a.entries.some(a=>/塔吊|塔式起重机|施工电梯|施工升降机/u.test(`${a.name} ${a.description}`))},{name:"紧邻既有建筑保护",measure:"开工前房屋现状鉴定,设置沉降观测点,控制开挖对周边扰动",basis:"清单特征含紧邻既有建筑",test:a=>a.entries.some(a=>/紧邻|既有建筑|相邻建筑|周边建筑/u.test(a.description))}],deploymentFlowFallback:"分区段流水作业",sequenceFallback:"施工准备 → 基础工程 → 主体结构 → 装饰装修 → 安装收尾",climateZone:"central",powerFallbackText:"临时用电由现场总配电箱接入,采用 TN-S 三相五线制,各分配电箱单独计量(柴油机械不计入用电负荷)",waterNoteText:"施工用水以市政供水为主,总用水量按施工段分区配置"},H={id:"general",projectTypes:["其他"],milestoneGroups:[{key:"prep",label:"施工准备",pattern:/清杂|拆除|场地平整|临建|临时/u},{key:"main",label:"主体工程",pattern:/主体|结构|混凝土|钢筋|模板|砌体|土方|基础|安装/u},{key:"finish",label:"装饰与附属工程",pattern:/装饰|抹灰|防水|保温|门窗|屋面|绿化|景观/u},{key:"install",label:"安装工程",pattern:/电气|给排水|暖通|消防|电梯|灯具|管线|设备/u},{key:"close",label:"收尾与验收",pattern:/收尾|竣工|验收|调试|移交|清理/u}],groupOfEntry:E,tradeMapping:F.tradeMapping,laborUnitRange:F.laborUnitRange,equipmentMapping:[{name:"挖掘机",spec:"0.6~1.0m\xb3",pattern:/开挖|挖土|沟槽|土方/u,unit:"m3",basis:"土方开挖(清单特征)"},{name:"自卸汽车",spec:"8t",pattern:/余方弃置|弃方|外运|回填/u,unit:"m3",basis:"土方运输与回填(清单条目)"},{name:"插入式振捣器",spec:"",pattern:/混凝土浇筑|振捣/u,unit:"m3",basis:"混凝土浇筑(清单条目)"},{name:"蛙式打夯机",spec:"",pattern:/回填|夯实/u,unit:"m3",basis:"回填夯实(清单条目)"},{name:"混凝土搅拌运输车",spec:"",pattern:/商品混凝土|C\d{2}混凝土/u,unit:"m3",basis:"商品混凝土运输(清单特征)"}],machinePowerTable:[{name:"挖掘机",kw:90},{name:"自卸汽车",kw:120},{name:"插入式振捣器",kw:1.5},{name:"蛙式打夯机",kw:3},{name:"混凝土搅拌运输车",kw:110}],laborCostRatio:{min:.15,max:.25},dailyWage:{min:250,max:350},inspectionBatchRules:[{scope:"混凝土工程",namePattern:/混凝土/u,unit:"m3",divisor:100,descTemplate:"混凝土按浇筑批次留置标准养护试件,每 100m\xb3 一批,约 {count} 批(总量 {total}m\xb3)"},{scope:"检查井",namePattern:/检查井/u,unit:"",divisor:1,descTemplate:"检查井逐座验收,共 {total} 座"}],difficultyTemplates:[],deploymentFlowFallback:"分区段流水作业",sequenceFallback:"施工准备 → 主体施工 → 装饰安装 → 收尾验收",climateZone:void 0,powerFallbackText:"临时用电按现场配电箱分区接入,各用电点单独计量(柴油机械不计入用电负荷,电动机具零星分散)",waterNoteText:"施工用水按现场水源分区配置,总用水量按施工段核定"},I={id:"bridge-tunnel",projectTypes:["桥梁与隧道"],milestoneGroups:[{key:"prep",label:"施工准备与临时设施",pattern:/清杂|拆除|场地平整|临建|临时|三通一平|测量放样/u},{key:"foundation",label:"基础工程",pattern:/桩基|钻孔|灌注桩|围堰|承台|基础|基坑|降水|支护/u},{key:"substructure",label:"下部结构工程",pattern:/桥墩|桥台|墩柱|盖梁|系梁|支座垫石|下部/u},{key:"superstructure",label:"上部结构工程",pattern:/箱梁|梁板|主梁|现浇梁|预制|预应力|张拉|架设|合龙|上部/u},{key:"tunnel",label:"隧道洞身工程",pattern:/隧道|洞身|仰拱|衬砌|锚杆|喷混|掌子面|二衬/u},{key:"finish",label:"桥面系附属与收尾",pattern:/桥面|铺装|护栏|伸缩缝|防撞|排水|照明|收尾|竣工|交安|绿化/u}],groupOfEntry:function(a){let b=`${a.name} ${a.description}`;return/灌注桩|桩基|钻孔|围堰|承台/u.test(b)?"桩基与基础工程":/桥墩|桥台|墩柱|盖梁|系梁|下部/u.test(b)?"下部结构工程":/箱梁|梁板|主梁|现浇梁|预制|预应力|张拉|架设|上部/u.test(b)&&"m3"===a.unit?"上部结构工程":/钢绞线/u.test(b)&&"t"===a.unit?"钢绞线工程":/隧道|洞身|仰拱|衬砌|锚杆|喷混|掌子面/u.test(b)?"隧道工程":/桥面|铺装|护栏|伸缩缝|防撞/u.test(b)?"桥面系工程":/土方|挖方|填方|回填|清淤/u.test(b)&&"m3"===a.unit?"土方工程":/钢筋|植筋/u.test(b)?"钢筋工程":/模板|支模/u.test(b)?"模板工程":/混凝土|现浇/u.test(b)?"混凝土工程":"安装工程"},tradeMapping:[{trade:"桩基工",pattern:/灌注桩|桩基|钻孔/u},{trade:"钢筋工",pattern:/钢筋|植筋/u},{trade:"模板工",pattern:/模板|支模/u},{trade:"混凝土工",pattern:/混凝土|现浇|垫层/u},{trade:"张拉工",pattern:/预应力|张拉|钢绞线/u},{trade:"焊工",pattern:/焊接|钢结构|预埋件/u},{trade:"起重工",pattern:/吊装|架设|梁体|龙门吊|架桥机/u},{trade:"隧道工",pattern:/隧道|洞身|衬砌|锚杆|喷混|掌子面/u},{trade:"普工",pattern:/土方|清杂|拆除|平整|回填|清淤|开挖/u}],laborUnitRange:{桩基与基础工程:{unit:"m3",min:4,max:7},下部结构工程:{unit:"m3",min:1.5,max:3},上部结构工程:{unit:"m3",min:4,max:8},钢绞线工程:{unit:"t",min:1.5,max:3},隧道工程:{unit:"m3",min:1.5,max:3},桥面系工程:{unit:"m2",min:.4,max:.8},土方工程:{unit:"m3",min:.08,max:.15},钢筋工程:{unit:"t",min:.8,max:1.5},模板工程:{unit:"m2",min:.3,max:.6},混凝土工程:{unit:"m3",min:.8,max:1.5},安装工程:{unit:"项",min:0,max:0}},equipmentMapping:[{name:"旋挖钻机",spec:"",pattern:/钻孔|灌注桩|桩基/u,unit:"m3",basis:"桩基成孔(清单条目)"},{name:"泥浆泵",spec:"",pattern:/灌注桩|钻孔/u,unit:"m3",basis:"钻孔泥浆循环(清单条目)"},{name:"履带式起重机",spec:"",pattern:/吊装|梁体|预制/u,unit:"项",basis:"构件吊装(清单特征)"},{name:"架桥机",spec:"",pattern:/架设|架梁|箱梁/u,unit:"项",basis:"梁体架设(清单条目)"},{name:"张拉设备",spec:"",pattern:/预应力|张拉|钢绞线/u,unit:"束",basis:"预应力张拉(清单条目)"},{name:"挖掘机",spec:"0.6~1.0m\xb3",pattern:/开挖|挖土|基坑|土方/u,unit:"m3",basis:"土方开挖(清单特征)"},{name:"自卸汽车",spec:"8t",pattern:/余方弃置|弃方|外运|回填/u,unit:"m3",basis:"土方运输与回填(清单条目)"},{name:"混凝土输送泵",spec:"",pattern:/泵送|混凝土泵/u,unit:"m3",basis:"混凝土泵送(清单特征)"},{name:"插入式振捣器",spec:"",pattern:/混凝土浇筑|振捣/u,unit:"m3",basis:"混凝土浇筑(清单条目)"}],machinePowerTable:[{name:"旋挖钻机",kw:130},{name:"泥浆泵",kw:22},{name:"履带式起重机",kw:110},{name:"架桥机",kw:90},{name:"张拉设备",kw:7.5},{name:"挖掘机",kw:90},{name:"自卸汽车",kw:120},{name:"混凝土输送泵",kw:90},{name:"插入式振捣器",kw:1.5}],laborCostRatio:{min:.12,max:.22},dailyWage:{min:250,max:350},inspectionBatchRules:[{scope:"桩基工程",namePattern:/灌注桩|桩基/u,unit:"",divisor:1,descTemplate:"钻孔灌注桩逐桩检验(桩位/孔径/沉渣厚度/混凝土充盈系数),共 {total} 根"},{scope:"钢筋工程",namePattern:/钢筋/u,unit:"t",divisor:60,descTemplate:"钢筋按进场检验批划分,每 60t 一批,约 {count} 批(总量 {total}t)"},{scope:"混凝土工程",namePattern:/混凝土/u,unit:"m3",divisor:100,descTemplate:"混凝土按浇筑批次留置标准养护试件,每 100m\xb3 一批,约 {count} 批(总量 {total}m\xb3)"},{scope:"预应力张拉",namePattern:/预应力|钢绞线/u,unit:"束",divisor:0,descTemplate:"预应力孔道逐束张拉并记录伸长值(总量 {total} 束)"}],difficultyTemplates:[{name:"深水基础施工",measure:"围堰施工与排水方案专项设计,汛期前完成基础施工,设置水位监测",basis:"清单特征含围堰/深水基础",test:a=>a.entries.some(a=>/围堰|深水|水中墩|钢板桩/u.test(`${a.name} ${a.description}`))},{name:"大体积混凝土施工",measure:"分层浇筑、测温养护,掺加缓凝剂与矿物掺合料控制水化热",basis:"清单特征含承台/大体积混凝土",test:a=>a.entries.some(a=>/承台|大体积|基础底板/u.test(`${a.name} ${a.description}`))},{name:"预应力张拉控制",measure:"张拉设备标定,双控(应力+伸长值)张拉,孔道压浆密实",basis:"清单特征含预应力/钢绞线",test:a=>a.entries.some(a=>/预应力|张拉|钢绞线/u.test(`${a.name} ${a.description}`))},{name:"隧道开挖与支护",measure:"超前地质预报,短进尺、弱爆破、强支护,监控量测信息化施工",basis:"清单特征含隧道洞身开挖",test:a=>a.entries.some(a=>/隧道|洞身|掌子面/u.test(`${a.name} ${a.description}`))},{name:"架梁起重吊装",measure:"编制吊装专项方案,吊装前试吊与支腿地基验算,专职指挥",basis:"清单特征含梁体架设",test:a=>a.entries.some(a=>/架设|架梁|架桥机|吊装/u.test(`${a.name} ${a.description}`))},{name:"高空作业安全控制",measure:"高墩作业平台封闭防护,设置安全网与临边防护,恶劣天气停止作业",basis:"清单特征含高墩/墩柱",test:a=>a.entries.some(a=>/高墩|墩柱|盖梁/u.test(`${a.name} ${a.description}`))}],deploymentFlowFallback:"分区段流水作业",sequenceFallback:"施工准备 → 基础工程 → 下部结构 → 上部结构 → 隧道洞身 → 桥面系与收尾",climateZone:void 0,powerFallbackText:"临时用电由现场总配电箱接入,采用 TN-S 三相五线制,各用电点单独计量(柴油机械不计入用电负荷)",waterNoteText:"施工用水以现场水源为主,总用水量按施工段核定"},J={id:"highway",projectTypes:["公路"],milestoneGroups:[{key:"prep",label:"施工准备",pattern:/清杂|拆除|场地平整|临建|临时|三通一平|测量放样/u},{key:"subgrade",label:"路基工程",pattern:/路基|土方|挖方|填方|压实|软基|清表|路床/u},{key:"pavement",label:"路面工程",pattern:/路面|水稳|基层|沥青|面层|摊铺|碾压|级配/u},{key:"bridge",label:"桥涵工程",pattern:/桥梁|桥台|桥墩|桩基|梁板|涵洞|通道|台帽/u},{key:"safety",label:"交安与附属收尾",pattern:/护栏|标线|标志|交安|绿化|排水|边沟|收尾|竣工/u}],groupOfEntry:function(a){let b=`${a.name} ${a.description}`;return/土方|挖方|填方|清表|软基|路基/u.test(b)&&"m3"===a.unit?"土方工程":/水稳|基层|级配|路床/u.test(b)&&"m2"===a.unit?"路面基层":/沥青|面层|摊铺/u.test(b)&&"m2"===a.unit?"沥青面层":/混凝土|现浇/u.test(b)&&"m2"===a.unit?"混凝土路面":/混凝土|现浇/u.test(b)?"混凝土工程":/砌筑|砌体|边沟|护坡|挡墙/u.test(b)?"砌筑工程":/钢筋|植筋/u.test(b)?"钢筋工程":/护栏|标线|标志|交安|波形梁/u.test(b)?"交安设施":"安装工程"},tradeMapping:[{trade:"机械操作工",pattern:/土方|挖方|填方|清表|路基/u},{trade:"压路机司机",pattern:/碾压|压实|路基|路面/u},{trade:"摊铺机司机",pattern:/摊铺|沥青|水稳|基层/u},{trade:"混凝土工",pattern:/混凝土|现浇|垫层/u},{trade:"钢筋工",pattern:/钢筋|植筋/u},{trade:"瓦工",pattern:/砌筑|砌体|边沟|护坡|挡墙/u},{trade:"交安工",pattern:/护栏|标线|标志|交安|波形梁/u},{trade:"普工",pattern:/清杂|拆除|平整|回填|清淤/u}],laborUnitRange:{土方工程:{unit:"m3",min:.08,max:.15},路面基层:{unit:"m2",min:.2,max:.4},沥青面层:{unit:"m2",min:.08,max:.15},混凝土路面:{unit:"m2",min:.15,max:.3},混凝土工程:{unit:"m3",min:.8,max:1.5},砌筑工程:{unit:"m3",min:1.2,max:2},钢筋工程:{unit:"t",min:.8,max:1.5},交安设施:{unit:"m",min:.3,max:.6},安装工程:{unit:"项",min:0,max:0}},equipmentMapping:[{name:"推土机",spec:"",pattern:/清表|土方|填方|平整/u,unit:"m3",basis:"土方摊铺平整(清单条目)"},{name:"平地机",spec:"",pattern:/路基|路床|平整/u,unit:"m2",basis:"路床整平(清单条目)"},{name:"装载机",spec:"",pattern:/土方|挖方|填方|清运/u,unit:"m3",basis:"土方装载(清单条目)"},{name:"压路机",spec:"8~12t",pattern:/碾压|压实/u,unit:"m2",basis:"路基路面碾压(清单特征)"},{name:"摊铺机",spec:"",pattern:/摊铺|沥青|水稳/u,unit:"m2",basis:"路面摊铺(清单条目)"},{name:"沥青洒布车",spec:"",pattern:/沥青|透层|粘层/u,unit:"m2",basis:"沥青洒布(清单条目)"},{name:"挖掘机",spec:"0.6~1.0m\xb3",pattern:/开挖|挖土|沟槽|土方/u,unit:"m3",basis:"土方开挖(清单特征)"},{name:"自卸汽车",spec:"8t",pattern:/余方弃置|弃方|外运|回填/u,unit:"m3",basis:"土方运输与回填(清单条目)"},{name:"洒水车",spec:"",pattern:/养护|洒水/u,unit:"m2",basis:"养护洒水(清单条目)"}],machinePowerTable:[{name:"推土机",kw:75},{name:"平地机",kw:120},{name:"装载机",kw:160},{name:"压路机",kw:75},{name:"摊铺机",kw:110},{name:"沥青洒布车",kw:60},{name:"挖掘机",kw:90},{name:"自卸汽车",kw:120},{name:"洒水车",kw:90}],laborCostRatio:{min:.12,max:.2},dailyWage:{min:250,max:350},inspectionBatchRules:[{scope:"路基压实",namePattern:/路床|路基|填方/u,unit:"m2",divisor:1e3,descTemplate:"路基压实度按每 1000m\xb2 不少于 1 点检测,约 {count} 点(总面积 {total}m\xb2)"},{scope:"水稳基层",namePattern:/水稳|基层/u,unit:"m2",divisor:1e3,descTemplate:"水稳基层按每 1000m\xb2 一个检验批,约 {count} 批(总面积 {total}m\xb2)"},{scope:"沥青面层",namePattern:/沥青|面层/u,unit:"m2",divisor:1e3,descTemplate:"沥青面层按每 1000m\xb2 一个检验批,约 {count} 批(总面积 {total}m\xb2)"}],difficultyTemplates:[{name:"软土地基处理",measure:"软基处理方案专项设计(换填/搅拌桩/预压),沉降观测控制填筑速率",basis:"清单特征含软基处理",test:a=>a.entries.some(a=>/软基|软土|换填|搅拌桩/u.test(`${a.name} ${a.description}`))},{name:"交通疏导与半幅施工",measure:"分段半幅封闭施工,设置临时交通标志与导流设施,保障社会车辆通行",basis:"清单特征含保通/半幅施工",test:a=>a.entries.some(a=>/保通|半幅|交通疏导|既有道路/u.test(`${a.name} ${a.description}`))},{name:"路面平整度控制",measure:"摊铺机连续匀速作业,接缝处理与碾压工艺控制,平整度逐层检测",basis:"清单特征含沥青面层",test:a=>a.entries.some(a=>/沥青|面层/u.test(`${a.name} ${a.description}`))},{name:"路基沉降控制",measure:"分层填筑碾压,设置沉降观测点,填筑速率与观测数据联动",basis:"清单特征含高填方路基",test:a=>a.entries.some(a=>/高填方|填方/u.test(`${a.name} ${a.description}`))}],deploymentFlowFallback:"分段平行流水作业",sequenceFallback:"施工准备 → 路基工程 → 路面工程 → 桥涵工程 → 交安与附属收尾",climateZone:void 0,powerFallbackText:"临时用电由现场总配电箱接入,各用电点单独计量(柴油机械不计入用电负荷)",waterNoteText:"施工用水以现场水源为主,总用水量按施工段核定"},K={id:"water-conservancy",projectTypes:["水利水电"],milestoneGroups:[{key:"prep",label:"施工准备与围堰导流",pattern:/清杂|拆除|围堰|导流|截流|临建|临时/u},{key:"earthwork",label:"土方与基础工程",pattern:/土方|挖方|填方|基础|基坑|清淤|疏浚|开挖/u},{key:"structure",label:"闸站结构工程",pattern:/混凝土|钢筋|模板|闸室|闸墩|泵站|翼墙|底板|消力池|挡墙|砌筑/u},{key:"metal",label:"金属结构与机电安装",pattern:/金属结构|闸门|启闭机|埋件|机电|水泵|电气/u},{key:"finish",label:"护坡堤防与收尾",pattern:/护坡|护岸|堤防|绿化|水土保持|收尾|竣工|验收/u}],groupOfEntry:function(a){let b=`${a.name} ${a.description}`;return/围堰|导流|截流|清淤|疏浚/u.test(b)||/土方|挖方|填方|回填|开挖/u.test(b)&&"m3"===a.unit?"土方工程":/闸门|启闭机|埋件|金属结构/u.test(b)&&"t"===a.unit?"金属结构安装":/护坡|护岸|堤防|格宾|浆砌/u.test(b)&&"m2"===a.unit?"护坡工程":/钢筋|植筋/u.test(b)?"钢筋工程":/模板|支模/u.test(b)?"模板工程":/混凝土|现浇|底板|闸室|闸墩|泵站|翼墙|消力池/u.test(b)&&"m3"===a.unit?"混凝土工程":/砌筑|砌体|砖|挡墙/u.test(b)?"砌筑工程":(/机电|水泵|电气/u.test(b),"安装工程")},tradeMapping:[{trade:"钢筋工",pattern:/钢筋|植筋/u},{trade:"模板工",pattern:/模板|支模/u},{trade:"混凝土工",pattern:/混凝土|现浇|底板|闸室|闸墩|泵站|翼墙|消力池/u},{trade:"瓦工",pattern:/砌筑|砌体|砖|挡墙|护坡/u},{trade:"金属结构安装工",pattern:/金属结构|闸门|启闭机|埋件/u},{trade:"机电安装工",pattern:/机电|水泵|电气|配电/u},{trade:"潜水工",pattern:/水下|潜水/u},{trade:"普工",pattern:/土方|清杂|拆除|平整|回填|清淤|开挖/u}],laborUnitRange:{土方工程:{unit:"m3",min:.08,max:.15},混凝土工程:{unit:"m3",min:1,max:2},砌筑工程:{unit:"m3",min:1.2,max:2},钢筋工程:{unit:"t",min:.8,max:1.5},模板工程:{unit:"m2",min:.3,max:.6},金属结构安装:{unit:"t",min:15,max:25},护坡工程:{unit:"m2",min:.2,max:.4},安装工程:{unit:"项",min:0,max:0}},equipmentMapping:[{name:"挖掘机",spec:"0.6~1.0m\xb3",pattern:/开挖|挖土|基坑|土方|清淤/u,unit:"m3",basis:"土方开挖(清单特征)"},{name:"自卸汽车",spec:"8t",pattern:/余方弃置|弃方|外运|回填/u,unit:"m3",basis:"土方运输与回填(清单条目)"},{name:"装载机",spec:"",pattern:/土方|挖方|填方|清运/u,unit:"m3",basis:"土方装载(清单条目)"},{name:"混凝土输送泵",spec:"",pattern:/泵送|混凝土泵|混凝土/u,unit:"m3",basis:"混凝土泵送(清单特征)"},{name:"履带式起重机",spec:"",pattern:/吊装|闸门|启闭机/u,unit:"",basis:"闸门与启闭机吊装(清单条目,不限计量单位)"},{name:"泥浆泵",spec:"",pattern:/围堰|降水|导流|排水/u,unit:"",basis:"基坑降水与排水(清单条目,不限计量单位)"},{name:"插入式振捣器",spec:"",pattern:/混凝土|振捣/u,unit:"m3",basis:"混凝土浇筑(清单条目)"},{name:"蛙式打夯机",spec:"",pattern:/回填|夯实/u,unit:"m3",basis:"回填夯实(清单条目)"}],machinePowerTable:[{name:"挖掘机",kw:90},{name:"自卸汽车",kw:120},{name:"装载机",kw:160},{name:"混凝土输送泵",kw:90},{name:"履带式起重机",kw:110},{name:"泥浆泵",kw:22},{name:"插入式振捣器",kw:1.5},{name:"蛙式打夯机",kw:3}],laborCostRatio:{min:.15,max:.25},dailyWage:{min:250,max:350},inspectionBatchRules:[{scope:"混凝土工程",namePattern:/混凝土/u,unit:"m3",divisor:100,descTemplate:"混凝土按浇筑批次留置标准养护试件,每 100m\xb3 一批,约 {count} 批(总量 {total}m\xb3)"},{scope:"土方回填",namePattern:/回填|填方/u,unit:"m3",divisor:200,descTemplate:"土方回填按每 200m\xb3 一个检验批检测压实度,约 {count} 批(总量 {total}m\xb3)"},{scope:"金属结构",namePattern:/闸门|启闭机/u,unit:"",divisor:1,descTemplate:"金属结构逐件验收(出厂合格证+安装调试记录),共 {total} 件"}],difficultyTemplates:[{name:"围堰导流与度汛",measure:"围堰按度汛标准设计施工,汛期值守与应急预案,度汛演练",basis:"清单特征含围堰/导流",test:a=>a.entries.some(a=>/围堰|导流|度汛|截流/u.test(`${a.name} ${a.description}`))},{name:"深基坑降水与支护",measure:"降水方案专项设计,分层开挖及时支护,周边沉降监测",basis:"清单特征含基坑降水",test:a=>a.entries.some(a=>/降水|基坑|支护/u.test(`${a.name} ${a.description}`))},{name:"大体积混凝土施工",measure:"分层浇筑、测温养护,掺加缓凝剂与矿物掺合料控制水化热",basis:"清单特征含底板/大体积混凝土",test:a=>a.entries.some(a=>/底板|大体积|消力池/u.test(`${a.name} ${a.description}`))},{name:"闸门启闭机安装精度控制",measure:"埋件安装精度预控,闸门与启闭机联动调试,止水严密性试验",basis:"清单特征含闸门/启闭机",test:a=>a.entries.some(a=>/闸门|启闭机/u.test(`${a.name} ${a.description}`))},{name:"水下作业安全控制",measure:"潜水作业双人值守,水下作业专项方案与应急预案",basis:"清单特征含水下作业",test:a=>a.entries.some(a=>/水下|潜水/u.test(`${a.name} ${a.description}`))}],deploymentFlowFallback:"分区段流水作业",sequenceFallback:"施工准备与围堰导流 → 土方与基础 → 闸站结构 → 金属结构与机电安装 → 护坡堤防与收尾",climateZone:void 0,powerFallbackText:"临时用电由现场总配电箱接入,各用电点单独计量(柴油机械不计入用电负荷)",waterNoteText:"施工用水以现场水源为主,总用水量按施工段核定"},L={type:"object",required:["meta","data","outline"],properties:{meta:{type:"object",required:!0,properties:{version:{type:"string",required:!0,minLength:1},docType:{type:"string",required:!0,minLength:1},createdAt:{type:"string",required:!0,minLength:1},sourceMaterials:{type:"array",required:!0,items:{type:"string"}}}},data:{type:"object",required:!0,properties:{project:{type:"object",required:!0,properties:{name:{type:"string",required:!0,minLength:1},scope:{type:"string",required:!0},works:{type:"array",required:!0,items:{type:"string"}}}},contract:{type:"object",required:!0,properties:{totalDays:{type:"number",required:!0},qualityStandard:{type:"string",required:!0},pricingFile:{type:"string",required:!0}}},milestones:{type:"array",required:!0,minItems:1,items:{type:"object"}},resources:{type:"object",required:!0,properties:{labor:{type:"object",required:!0},equipment:{type:"array",required:!0}}},materialsPlan:{type:"array",required:!0},redLineFacts:{type:"array",required:!0},quantities:{type:"object",required:!0},standardBlocks:{type:"array",required:!0},keyDifficulties:{type:"array",required:!0,minItems:1}}},outline:{type:"object",required:!0,properties:{chapters:{type:"array",required:!0,minItems:1}}}}};function M(a){let b=a.boundFilePaths.filter(a=>/工程量清单/u.test(a)&&a.toLowerCase().endsWith(".xls")).filter(a=>{let b=a.split("/").pop()||a;return!/封面|编制说明/u.test(b)});if(0===b.length)return{warning:`绑定资料中未识别到工程量清单 .xls 文件(${a.boundFilePaths.length} 份资料)`};let c=g.join(f.homedir(),".customize-agent","projects",(0,d.computeProjectId)(g.resolve(a.projectRoot)),"kb.db");if(!e.existsSync(c))return{warning:`项目知识库索引不存在:${c}`};let h=[],i=[];for(let a of b)try{let b=function(a,b){let c=new((0,d.loadBetterSqlite3)())(a,{readonly:!0});try{return c.pragma("busy_timeout = 10000"),c.prepare("SELECT chunk_index, content, section_title FROM kb_chunks WHERE relative_path = ? ORDER BY chunk_index").all(b).map(a=>({chunkIndex:a.chunk_index,content:a.content,sectionTitle:a.section_title||""}))}finally{c.close()}}(c,a);if(0===b.length){h.push(`${a}(索引无切片)`);continue}let e=function(a){let b=a.sourceFile||"",c={totalChunks:a.chunks.length,markdownChunks:0,declarationChunks:0,skippedChunks:0,droppedIncompleteRows:0},d=[],e=[];for(let b of a.chunks){let a=b.sectionTitle,f=a.includes("表格路径声明");if(a.includes("附录")){c.skippedChunks++;continue}f?(e.push(b),c.declarationChunks++):"表格数据"===a||a.includes("表标题")||a.includes("第")||a.includes("工作表:")?(d.push(b),c.markdownChunks++):c.skippedChunks++}let f=new Map,g=a=>{let b=s.exec(a);if(!b)return;let c=b[1],d=f.get(c),e=u.exec(a)||v.exec(a),g=t.exec(a);d?(!d.villageGroup&&e&&(d.villageGroup=e[1].trim()),void 0===d.totalPages&&g&&(d.totalPages=Number(g[1]))):f.set(c,{villageGroup:e?e[1].trim():"",totalPages:g?Number(g[1]):void 0})};for(let a of d)g(a.sectionTitle),g(a.content.split("\n")[0]||"");let h=[],i="",j="",k="",l="plain",m=function(a){let b=[],c=!1;for(let d=0;d<a.length;d++){let e=a[d]??"";if(e.includes(".")){let e=d+1<a.length?a[d+1]??"":"",f=/^\d+$/u.test(e)&&e.length>=2;b.push(f?"unit-project":"subsection"),c=f}else/^\d+$/u.test(e)?b.push(c?"subsection":"section"):(b.push("section"),c=!1)}return b}(function(a){let b=[],c="",d=n;for(let e of a){let a=e.content.split("\n"),f=c;for(let e of(c="",a)){if(e.startsWith("|"))f.trim(),f=e;else{if(!f)continue;f+=e}if(!f.endsWith("|"))continue;let a=f.split("|").map(a=>a.trim());if(f="",o(a)){d=p(a)??d;continue}!a[d.seq]&&q(a[d.code]??"")&&a[d.name]&&"分部小计"!==a[d.name]&&b.push(a[d.code]??"")}f.trim()&&(c=f)}return b}(d)),z=-1,A=n,B="";for(let a of d){let d=x(a),e=d||B;d&&(B=d);let g=f.get(e),n=g?.villageGroup||e||"",s=a.content.split("\n"),u=i;i="";let v=function(a){if(t.exec(a))return 1;w.lastIndex=0;let b=w.exec(a);return w.lastIndex=0,b?Number(b[1]):void 0}(a.content);for(let d=0;d<s.length;d++){let e=s[d]||"";if(e.startsWith("|"))u.trim()&&c.droppedIncompleteRows++,u=e;else if(u)u+=e;else{let a=w.exec(e);a&&(v=Number(a[1])),w.lastIndex=0;continue}if(u.endsWith("|")){let c=u.split("|").map(a=>a.trim());u="",o(c)&&(A=p(c)??A);let d=c[A.seq]??"",e=c[A.code]??"",f=c[A.name]??"",g=v,i=function(a){let b=a.join(" "),c=/第(\d+)页\s*共\d+页/u.exec(b);return c?Number(c[1]):void 0}(c);if(i&&(v=i),/^\d+$/u.test(d)&&r.test(e)){let i=Number((c[A.quantity]??"").trim()),m={seq:Number(d),code:e,name:f,description:A.description>=0?c[A.description]??"":"",unit:c[A.unit]??"",quantity:Number.isFinite(i)?i:0,section:j,subsection:k,sectionKind:l,villageGroup:n,page:g,sourceFile:b,chunkIndex:a.chunkIndex,sourceKind:"markdown"};m.seq>0&&h.push(m)}else if(!d&&q(e)&&f&&"分部小计"!==f){let a=m[z+=1]??(e.includes(".")?"subsection":"section");"unit-project"===a?(j=f,k="",l="unit-project"):"section"===a?(j=f,k="",l="plain"):k=f}}}u.trim()&&(i=u)}i.trim()&&c.droppedIncompleteRows++;let C=[];for(let a of(B="",e)){let c=x(a),d=c||B;c&&(B=c);let e=f.get(d),g=e?.villageGroup||d||"";C.push(...function(a,b){let c,d,e=[],f=a.split("\n"),g=()=>{c&&"number"==typeof c.seq&&c.seq>0&&e.push({seq:c.seq,code:c.code||"",name:c.name||"",description:(c.description||"").trim(),unit:c.unit||"",quantity:"number"==typeof c.quantity?c.quantity:0,section:"",subsection:"",villageGroup:b.villageGroup,sourceFile:b.sourceFile,chunkIndex:b.chunkIndex,sourceKind:"declaration"}),c=void 0,d=void 0},h=a=>{if(!c||!d)return;let b=a.trim();if(b){if("seq"===d){let a=Number(b);Number.isFinite(a)&&a>0&&(c.seq=a)}else if("code"===d)c.code=(c.code||"")+b;else if("name"===d)c.name=(c.name||"")+b;else if("description"===d)c.description=(c.description||"")+(c.description?" ":"")+b;else if("unit"===d)c.unit=b;else if("quantity"===d){let a=Number(b);Number.isFinite(a)&&(c.quantity=a)}}};for(let a of f){if(/^R\d+C\d+$/u.test(a)){/^R\d+C1$/u.test(a)?(g(),c={},d="seq"):d=void 0;continue}if(/^序号:$/u.test(a)){d="seq";continue}if(/^项目编码:$/u.test(a)){d="code";continue}if(/^项目名称:$/u.test(a)){d="name";continue}if(/^项目特征描述:$/u.test(a)){d="description";continue}if(/^单位:$/u.test(a)){d="unit";continue}if(/^工程量:$/u.test(a)){d="quantity";continue}if(/^(?:人工费|机械费|暂估价|合价|金额.*)$/u.test(a)){d=void 0;continue}h(a)}return g(),e}(a.content,{villageGroup:g,sourceFile:b,chunkIndex:a.chunkIndex}))}let D=new Map;for(let a of h)D.set(`${a.villageGroup}|${a.seq}`,a);for(let a of C){let b=`${a.villageGroup}|${a.seq}`;D.has(b)||D.set(b,a)}let E=[...D.values()].sort((a,b)=>a.villageGroup.localeCompare(b.villageGroup,"zh-CN")||a.seq-b.seq);var F=E,G=h;let H=y(G);for(let a of F){let b;if("declaration"===a.sourceKind&&!a.section){for(let c of H.get(a.villageGroup)||[]){if(c.seq>a.seq)break;b=c}b&&(a.section=b.section,a.subsection=b.subsection,a.sectionKind=b.sectionKind)}}let I=[...f.values()].map(a=>a.villageGroup).find(Boolean);if(I&&E.every(a=>!a.section))for(let a of E)a.section=I,a.sectionKind="unit-project";let J=[];for(let[a,b]of y(E)){let c=b.map(a=>a.seq).sort((a,b)=>a-b),e=c[c.length-1]||0,g=[];for(let a=1;a<=e;a++)c.includes(a)||g.push(a);let h=function(a,b){for(let[c,d]of a)if(d.villageGroup===b)return{sheetId:c,...d}}(f,a),i=h?.totalPages,j=function(a,b,c){let d=new Set,e="";for(let f of a){let a=x(f),g=a||e;if(a&&(e=a),!c||g===c){if(!c&&!(f.content.split("\n")[0]||"").includes(b))continue;for(let a of(t.test(f.content)&&d.add(1),w.lastIndex=0,f.content.matchAll(w))){let b=Number(a[1]);d.add(b),b>1&&d.add(b-1)}w.lastIndex=0}}return[...d]}(d,a,h?.sheetId),k=i?Array.from({length:i},(a,b)=>b+1).filter(a=>!j.includes(a)):[],l=b.filter(a=>"declaration"===a.sourceKind).length,m=b.filter(a=>!a.code).length,n=b.filter(a=>!a.name).length,o=b.filter(a=>a.code&&!r.test(a.code)).length;J.push({villageGroup:a,sheetId:h?.sheetId||"",totalPagesDeclared:i,pagesCovered:j.sort((a,b)=>a-b),pagesMissing:k,entryCount:b.length,entrySeqMissing:g,entriesFromDeclaration:l,entriesWithoutCode:m,entriesWithoutName:n,entriesWithInvalidCode:o,complete:0===g.length&&b.length>0})}return J.sort((a,b)=>a.villageGroup.localeCompare(b.villageGroup,"zh-CN")),{entries:E,villages:J,totalEntries:E.length,sourceFile:b,complete:J.length>0&&J.every(a=>a.complete),diagnostics:c}}({chunks:b,sourceFile:a});e.totalEntries>0?i.push({filePath:a,boq:e}):h.push(`${a}(解析出 0 条目)`)}catch(b){h.push(`${a}(${b instanceof Error?b.message:String(b)})`)}if(0===i.length)return{warning:`清单解析失败:${h.join(";")}`};let j=1===i.length?i[0].boq:function(a){let b=a=>{let b=a.split("/").slice(-2)[0]||"",c=/^(\d+)/u.exec(b);return c?Number(c[1]):Number.MAX_SAFE_INTEGER},c=[...a].sort((a,c)=>b(a.filePath)-b(c.filePath)),d=[],e=[],f={totalChunks:0,markdownChunks:0,declarationChunks:0,skippedChunks:0,droppedIncompleteRows:0},g=new Set;for(let a of c){var h;let b=((h=a.filePath).split("/").pop()||h).replace(/\.xls$/iu,"").replace(/[\s\u00a0]+/gu,"")||"单位工程";if(g.has(b)){let a=2;for(;g.has(`${b}(${a})`);)a+=1;b=`${b}(${a})`}for(let c of(g.add(b),a.boq.entries))c.subsection=c.subsection||c.section,c.section=b,c.sectionKind="unit-project",c.villageGroup=b,d.push(c);for(let[c,d]of a.boq.villages.entries())e.push({...d,villageGroup:1===a.boq.villages.length?b:`${b}\xb7${d.villageGroup||`工作表${c+1}`}`});f.totalChunks+=a.boq.diagnostics.totalChunks,f.markdownChunks+=a.boq.diagnostics.markdownChunks,f.declarationChunks+=a.boq.diagnostics.declarationChunks,f.skippedChunks+=a.boq.diagnostics.skippedChunks,f.droppedIncompleteRows+=a.boq.diagnostics.droppedIncompleteRows}return{entries:d,villages:e,totalEntries:d.length,sourceFile:c.map(a=>a.filePath).join(";"),complete:e.length>0&&e.every(a=>a.complete),diagnostics:f}}(i);return h.length>0?{boq:j,warning:`部分清单文件解析失败(已并入其余 ${i.length} 份):${h.join(";")}`}:{boq:j}}function N(a){let b=new Map;for(let c of a.entries){if(!c.name)continue;let a=(c.villageGroup||c.section||"").trim(),d=b.get(c.name);if(d)d.total+=c.quantity,a&&d.groupTotals.set(a,(d.groupTotals.get(a)??0)+c.quantity);else{let d=new Map;a&&d.set(a,c.quantity),b.set(c.name,{value:c.quantity,unit:c.unit,sourceFile:c.sourceFile,seq:c.seq,total:c.quantity,groupTotals:d})}}let c={};for(let[a,d]of b){let b=a=>Math.round(1e3*a)/1e3,e=[...d.groupTotals.entries()].map(([a,c])=>({group:a,value:b(c)}));c[a]={value:b(d.total),unit:d.unit,sourceFile:d.sourceFile,seq:d.seq,groups:e.length>0?e:void 0}}return c}let O=[{key:"绿化养护期",namePattern:/养护/u,extract:a=>{let b=/(?:一级|二级)养护[^。;;]{0,20}/u.exec(a.description);return b?b[0].trim():void 0}},{key:"喷播草籽种类",namePattern:/喷播|草籽/u,extract:a=>{let b=/(?:草籽|种子)[^。;;]*?(?:荷兰菊|紫花地丁|白三叶)[^。;;]*/u.exec(a.description);if(b)return b[0].replace(/^[^::]*[::]?/u,"").trim();let c=/(?:荷兰菊|紫花地丁|白三叶)[^。;;]*/u.exec(a.description);return c?c[0].trim():void 0}},{key:"池塘清淤深度",namePattern:/清淤|清塘/u,extract:a=>{let b=/(?:清淤深度|深度)[^。;;]*?(\d+(?:\.\d+)?)\s*m/u.exec(a.description);return b?`清淤深度 ${b[1]}m`:void 0}},{key:"过路涵涵头混凝土",namePattern:/涵头|过路涵/u,extract:a=>{let b=/(C\d{2})[^。;;]*混凝土/u.exec(a.description)||/混凝土[^。;;]*(C\d{2})/u.exec(a.description);return b?`涵头混凝土 ${b[1]}`:void 0}},{key:"路肩土预留",namePattern:/路肩/u,extract:a=>{let b=/(\d+(?:\.\d+)?)\s*[-~至]\s*(\d+(?:\.\d+)?)\s*m/u.exec(a.description);return b?`两侧各预留 ${b[1]}-${b[2]}m`:void 0}},{key:"一般路灯",namePattern:/路灯/u,extract:a=>{let b=/(\d+)\s*W/u.exec(a.description),c=/高\s*(\d+(?:\.\d+)?)\s*m/u.exec(a.description);if(!b&&!c)return;let d=["一般路灯"];return b&&d.push(`${b[1]}W LED`),c&&d.push(`高${c[1]}m`),/含基础|含灯杆基础|灯杆基础/u.test(a.description)&&d.push("含基础"),d.join(" ")}},{key:"暂列金额",namePattern:/暂列金额/u,extract:a=>{let b=/(\d+(?:\.\d+)?)\s*万元/u.exec(a.description);return b?`${b[1]}万元`:void 0},amount:!0}];function P(a,b,c=F){let{laborCostRatio:d,dailyWage:e}=c,f=Math.max(30,Math.round(b)),g=1e4*a*d.min,h=1e4*a*d.max,i=g/e.max,j=h/e.min,k=Math.max(1,Math.round(i/f*1.3)),l=Math.max(k,Math.round(j/f*1.6));return{min:k,max:l,detail:`合同估算价 ${a} 万元 \xd7 人工费占比 ${Math.round(100*d.min)}%~${Math.round(100*d.max)}% \xf7 综合工日单价 ${e.min}~${e.max} 元 \xf7 有效工期 ${f} 天 \xd7 峰值系数 1.3~1.6`}}let Q=[/C\d{2,3}/u,/DN\d{2,4}/iu,/Φ\d+(?:\.\d+)?/u,/\d+(?:\.\d+)?\s*(?:kW|W)/iu,/厚(?:度)?[::]*\s*\d+(?:\.\d+)?\s*(?:mm|cm)/u,/\d+\s*[×xX]\s*\d+(?:\s*[×xX]\s*\d+)?\s*(?:mm|cm)?/u,/HRB\d{3,4}/u,/Q\d{3}[A-Z]?/u,/YJV[^。;;]{0,12}|VV\d+[^。;;]{0,12}/u],R=new Set(["挖掘机","自卸汽车","压路机","洒水车","高空作业车","混凝土搅拌运输车"]),S=[{id:"vertical_transport",label:"垂直运输方式",relevance:/塔吊|塔式起重机|施工电梯|施工升降机|物料提升机|垂直运输/u,options:[{value:"塔式起重机",aliases:/塔吊|塔式起重机/},{value:"施工升降机",aliases:/施工电梯|施工升降机/},{value:"物料提升机",aliases:/物料提升机/},{value:"汽车式起重机",aliases:/汽车吊|汽车式起重机/}]},{id:"formwork",label:"模板体系",relevance:/模板/u,exclusive:!0,options:[{value:"木胶合板模板",aliases:/木胶合板|覆膜胶合板|胶合板模板|木模板/},{value:"钢模板",aliases:/钢模板|定型钢模/},{value:"铝合金模板",aliases:/铝合金模板|铝模/},{value:"大模板",aliases:/大模板/},{value:"爬升模板",aliases:/爬升模板|爬模/}]},{id:"concrete_supply",label:"混凝土供应",relevance:/混凝土/u,exclusive:!0,options:[{value:"商品混凝土(预拌)",aliases:/商品混凝土|预拌混凝土/},{value:"自拌混凝土",aliases:/自拌混凝土|现场拌制混凝土|现场搅拌混凝土/}]},{id:"scaffold",label:"脚手架体系",relevance:/脚手架|爬架/u,options:[{value:"落地式钢管脚手架",aliases:/落地式[^,。;;]{0,6}脚手架|落地脚手架/},{value:"悬挑式脚手架",aliases:/悬挑[^,。;;]{0,6}脚手架|悬挑脚手架/},{value:"附着式升降脚手架",aliases:/附着式升降脚手架|爬架/},{value:"门式脚手架",aliases:/门式脚手架/},{value:"盘扣式脚手架",aliases:/盘扣/},{value:"碗扣式脚手架",aliases:/碗扣/}]},{id:"foundation_support",label:"基坑支护形式",relevance:/基坑|支护/u,exclusive:!0,options:[{value:"放坡开挖",aliases:/放坡/},{value:"土钉墙支护",aliases:/土钉墙|土钉支护/},{value:"灌注桩支护",aliases:/灌注桩|钻孔灌注桩|排桩支护/},{value:"钢板桩支护",aliases:/钢板桩|拉森桩/},{value:"地下连续墙",aliases:/地下连续墙|地连墙/},{value:"锚杆(索)支护",aliases:/锚杆|锚索/},{value:"喷锚支护",aliases:/喷锚/}]},{id:"earthwork_haul",label:"土方外运方式",relevance:/土方|渣土|弃土/u,options:[{value:"自卸汽车外运",aliases:/自卸汽车|自卸车/},{value:"密闭渣土车外运",aliases:/密闭式?[^,。;;]{0,4}车|渣土车/},{value:"场内平衡利用",aliases:/场内平衡|就地平衡|场内调配|回填利用/}]}],T=/不采用|不使用|不设置|不考虑|不得|禁止|取消/u;function U(a){return a.split(/[,,、::]/u).map(a=>a.trim()).filter(Boolean)}function V(a){let b=function(a,b){let c=[];for(let a of b){let b=function(a){let b=`${a.filePath||""} ${a.roleId||""} ${a.sectionTitle||""}`;return/补疑|澄清|答疑|修正|更新/u.test(b)?100:/招标文件|招标公告|投标人须知|前附表/u.test(b)?90:/清单|工程量/u.test(b)||/图纸|设计|dwg|drawing/iu.test(b)?80:/规范|标准|规程/u.test(b)?60:50}(a);for(let d of(0,i.wj)((0,j.lG)(a.content)).split(/[。;;\n]/u)){let a=d.trim();a.length<6||a.length>200||c.push({text:a,weight:b})}}for(let b of a){let a=`${b.key||""} ${b.fieldName||""} ${(0,j.lG)(b.value)}`.trim();a.length<6||a.length>200||c.push({text:a,weight:Math.round(60*Math.max(.5,Math.min(1,b.confidence||.7)))})}return c}(a.facts,a.evidence),c=[];for(let a of S){let d=new Map;for(let c of b){if(!a.relevance.test(c.text))continue;let b=U(c.text);for(let e of a.options){let a=b.find(a=>e.aliases.test(a));if(!a||T.test(a))continue;let f=d.get(e.value)||{score:0,mentions:0,bestWeight:0};f.score+=c.weight,f.mentions+=1,f.bestWeight=Math.max(f.bestWeight,c.weight),d.set(e.value,f)}}let e=[...d.entries()].map(([a,b])=>({value:a,...b})).sort((a,b)=>b.score-a.score||b.mentions-a.mentions||(a.value<b.value?-1:1)),f=e[0];if(!f||f.bestWeight<60)continue;if(a.exclusive){c.push({id:a.id,label:a.label,values:[f.value]});continue}let g=Math.max(60,.4*f.score),h=e.filter(a=>a.score>=g).slice(0,3).map(a=>a.value);h.length>0&&c.push({id:a.id,label:a.label,values:h})}return c}function W(a){return S.find(b=>b.id===a)}function X(a,b){let c=U(a).find(a=>b.test(a));return!!c&&T.test(c)}function Y(a){if(!a)return[];let b=[],c=new Set;for(let d of a.matchAll(/《([^《》]{2,40}(?:法|条例|办法|规程|规范|标准))》(?:[((][^))]{0,24}?(?:国令|令|主席令|〔\d{4}〕)[^))]{0,24}?[))])?/gu)){let a=d[1].replace(/[\s#]/gu,"").trim();if(/通知|意见|公示|公告/u.test(a)||a.length<4||a.length>20)continue;let e=(d[0].match(/[((]([^))]{0,24}?(?:国令|令|主席令|〔\d{4}〕)[^))]{0,24}?)[))]/u)||[])[1],f=e?`《${a}》(${e.trim()})`:`《${a}》`;if(!c.has(f)&&(c.add(f),b.push(f),b.length>=14))break}return b}let Z=[{item:"主要施工方法",weight:"1.5",chapterPattern:/主要分部分项|施工方案|施工方法/u},{item:"物资计划",weight:"0.5",chapterPattern:/物资|资源配置|材料/u},{item:"机械设备计划",weight:"0.5",chapterPattern:/机械|资源配置|设备/u},{item:"劳动力安排",weight:"0.5",chapterPattern:/劳动力|资源配置|人员/u},{item:"质量措施",weight:"1.5",chapterPattern:/质量/u},{item:"安全措施",weight:"1.5",chapterPattern:/安全/u},{item:"工期措施",weight:"1.0",chapterPattern:/工期|进度/u},{item:"文明施工",weight:"1.0",chapterPattern:/文明施工|环境保护|绿色施工/u},{item:"总平面布置图",weight:"0.5",chapterPattern:/总平面|平面布置/u},{item:"重难点及保证措施",weight:"1.5",chapterPattern:/重难点|重点|难点|概况/u}];function $(a,b){let c=a.trim();if(/^其他$|^其他工程$/u.test(c)){let a=b.map(a=>a.name);return a.some(a=>/彩绘|护栏|围栏|小品|标识|标牌|墙面|整治/u.test(a))?"环境整治工程":a.some(a=>/绿化|栽植|铺装|种植/u.test(a))?"景观附属工程":a.some(a=>/拆除|清理|清淤|清运/u.test(a))?"清理整治工程":"零星工程"}return/^其他装饰/u.test(c)?"零星装饰工程":/^措施项目$/u.test(c)?b.map(a=>a.name).some(a=>/化粪池|吊装|安装/u.test(a))?"模板、脚手架及化粪池安装工程":"模板与脚手架工程":/墙[、,]?柱面装饰/u.test(c)?b.some(a=>/幕墙|隔断/u.test(a.name))?c:"墙柱面装饰工程":c}function _(a){let b=[];for(let c of a.matchAll(/(?:\d+|[一二三四五六七八九十]+)[..、]\s*([^::;;。]{1,40}?)[::]\s*([^。;;\n]{1,80})/gu)){let a=c[1].trim(),d=c[2].trim();!/具体详见|其他|满足验收/u.test(a)&&!/(?:(?:详)?见|按)(?:设计|施工)?图纸|招标文件补疑/u.test(d)&&a&&d&&b.push({key:a,value:d})}return b}function aa(a,b){let c=[...b].sort((a,b)=>a.seq-b.seq),d={},e=new Map;for(let a of c)a.name&&e.set(a.name,(e.get(a.name)||0)+a.quantity);for(let[a,b]of e){let e=c.find(b=>b.name===a)?.unit||"";d[a]={value:Math.round(1e3*b)/1e3,unit:e}}let f=[...new Set(c.map(a=>a.name).filter(Boolean))].slice(0,16),g=function(a){let b=[];for(let c of a)for(let a of _(c.description))/含|配合|安装|铺设|浇筑|夯实|碾压|养护|刻痕|拉毛|切缝|灌缝|喷播|栽植|回填|吊装|固定/u.test(a.value)&&a.value.length<=60&&b.push(`${c.name}:${a.value}`);return[...new Set(b)].slice(0,20)}(c),h=[],i=new Set;for(let a of c){for(let b of _(a.description)){let a=`${b.key}=${b.value}`;if(!i.has(a)&&(i.add(a),h.push({key:b.key,value:b.value,source:"boq"}),h.length>=24))break}if(h.length>=24)break}let j=[];for(let a of c)for(let b of _(a.description))/压实|试验|检测|验收|闭水|合格/u.test(`${b.key}${b.value}`)&&j.length<12&&!j.includes(b.value)&&j.push(b.value);let k=(0,z.cn)([a]),l=[];for(let a of(0===j.length&&k.length>0&&j.push(...k[0].acceptance.slice(0,6).map(a=>`${a}(知识卡)`)),k.slice(0,2)))for(let b of a.standards)l.includes(b)||l.push(b);return{name:a,kind:"major",quantities:d,processChain:f,methods:g,params:h,acceptance:j,standards:l,source:"boq",coveredSeqs:c.map(a=>a.seq)}}function ab(a,b){if(b)return b.needsBlueprintAuthority(a);let c=[];return/劳动力/u.test(a)&&c.push("laborPeak"),/资源配置|资源|机械|设备|机具/u.test(a)&&c.push("blueprint"),/进度计划|进度|工期/u.test(a)&&c.push("schedule"),[...new Set(c)]}function ac(a,b,c){let d=ab(a,c),e=b?b.checks.filter(a=>!a.passed).map(a=>a.name):[],f=b?.authorityAvailability;return f?{missing:d.filter(a=>!f[a]),failedChecks:e}:{missing:d,failedChecks:e}}function ad(a,b){let c=["【一体化蓝图参数桶——全项目口径唯一权威源,正文引用必须与此一致,不得自行推导不同数值】"];return c.push("计划类数值(劳动力人数/工期/工程量/养护期)必须且只能引用以下锚点值:禁止将各工种人数相加推导峰值、禁止按定额自行估算、禁止改写锚点数值。"),c.push(`- 项目:${a.project.name}(${a.project.scope})`),c.push(...(0,B.Xe)((0,B.IV)(a),b)),a.inspectionBatches.length>0&&c.push(`- 检验批划分:${a.inspectionBatches.map(a=>`${a.scope}——${a.planDesc}`).join(";")}`),c.push(`- 临时用电:${a.tempUtilities.powerLoad}`),c.push(`- 临时用水:${a.tempUtilities.waterUsage}`),a.decisionLock.entries.length>0&&c.push(`- 关键决策锁:${a.decisionLock.entries.map(a=>`${a.label}:${a.values.join("、")}`).join(";")}`),a.constructionDeployment.sections.length>0&&c.push(`- 施工部署:${a.constructionDeployment.flow};施工顺序 ${a.constructionDeployment.sequence}`),a.keyDifficulties.length>0&&c.push(`- 重难点(逐项列明):${a.keyDifficulties.map(a=>`${a.name}——${a.measure}`).join(";")}`),c.push(`- 金额禁区:${a.amountRule}`),c.push(a.drawingNote),c.join("\n")}let ae=[{domain:"contract",chapterPattern:/进度|工期|总体|部署|概况|工程|计划/u},{domain:"schedule",chapterPattern:/进度|工期|部署|计划|总体|施工方案|分部分项/u},{domain:"labor",chapterPattern:/劳动力|人员|资源|进度|工期|部署|概况/u},{domain:"equipment",chapterPattern:/机械|设备|资源/u},{domain:"material",chapterPattern:/物资|材料|资源|采购|亮化|路灯|照明/u},{domain:"quantity",chapterPattern:/分部分项|施工方案|施工方法|土方|道路|管网|工程概况/u},{domain:"spec",chapterPattern:/材料|物资|质量|技术|施工方案|分部分项/u},{domain:"earthwork",chapterPattern:/土方|土石方|道路|管网|施工方案|分部分项/u},{domain:"test",chapterPattern:/质量|试验|检测|验收/u},{domain:"redline",chapterPattern:/绿化|种植|养护|苗木|技能|培训|成品保护|质量|亮化|路灯|照明|概况|工程|总体/u}],af=/编制|工程概况|项目概况|概况|说明/u;function ag(a,b,c){let d=[c.blockTitle,...c.subPointTitles,...c.skeletonNames??[]].map(a=>a.trim()).filter(a=>a.length>=2),e=a=>d.some(b=>a.includes(b)||b.includes(a)),f=[`【第 ${a.id} 章「${a.title}」蓝图切片(本节聚焦)——以下项目专属事实由蓝图冻结锁定,正文必须一致引用】`,m.Ru],g=[],h=[...new Set(a.subSections.flatMap(a=>a.requiredParams.filter(a=>"must_cite"===a.mode).map(a=>a.path)))];h.length>0&&g.push(`本章 must_cite 参数(正文必须出现且与蓝图一致):${h.join("、")}`);let i=[];for(let b of a.subSections){let a=b.workPackages.filter(a=>e(a.name));if(0===a.length)continue;let c=[`## ${b.id} ${b.title}`],d=b.requiredParams.filter(a=>"must_cite"===a.mode).map(a=>a.path);for(let b of(d.length>0&&c.push(`must_cite 参数:${d.join("、")}`),a))c.push(...function(a){let b=[`
220
+ ${b.content}`;return Math.min(1.8,.16*[...new Set([a.title,...a.sections||[],...a.requiredFacts].flatMap(a=>a.split(/[\s、,,。;;::()()《》【】-]+/u)).map(a=>a.trim()).filter(a=>a.length>=2).slice(0,36))].filter(a=>c.includes(a)).length)}function l(a){return`${a.sectionTitle||""}${a.content}`.slice(0,600)}function m(a,b,c,e){let f=b.map(b=>{let e=(0,d.A1)(b,a.requiredFacts)*j(a,b.processingType)+k(a,b),f=c.semantic?c.semantic.similarity(c.semantic.queryText,l(b)):0;return{...b,score:.5*e+10*f}});return(0,d.QR)(f,c,e)}function n(a,b,c){if(c<=0||b.length<=c)return b;let e=b.map(b=>({item:b,lexical:(0,d.A1)(b,a.requiredFacts)*j(a,b.processingType)+k(a,b)}));return e.sort((a,b)=>b.lexical-a.lexical),e.slice(0,c).map(a=>a.item)}function o(a,b,c){let d=(a.sections||[]).slice(0,10).join(" "),e=a.requiredFacts.slice(0,10).join(" "),f=a.title.split(/[、,,与和及]+/u).map(a=>a.trim()).filter(a=>a.length>=4);return[...new Set([...f.length>=2?[`${a.title} ${d} ${e}`.trim(),...f.map(b=>`${b} ${(a.sections||[]).slice(0,6).join(" ")}`.trim()),`${f.slice(0,3).join(" ")} ${e}`.trim()]:[`${a.title} ${d} ${e}`.trim()],...b,...c].filter(Boolean))]}async function p(a){if((0,f.Te)(a.signal),0===a.scopedFilePaths.length)return[];let b=`${a.chapter.title} ${a.sectionTitle}`.trim(),c=await a.manager.search(a.projectRoot,b,{scope:"project",filters:{filePaths:a.scopedFilePaths},limit:20,weights:i(b),generationMode:!0});return(0,d.QR)(c.results.filter(b=>a.scopedFilePaths.includes(b.filePath)).map(b=>({chapterId:a.chapter.id,filePath:b.filePath,score:b.score+1.2,content:b.content,roleId:a.fileRoleByPath.get(b.filePath),processingType:a.fileProcessingByPath.get(b.filePath),sectionTitle:b.sectionTitle,source:"section-evidence"})),{preservePinned:!0})}},65667:(a,b,c)=>{c.d(b,{Ti:()=>n,_H:()=>m,re:()=>l});let d=/^(?:为|达|共|约|计|配置|共计|总计|合计)$/u,e=/作业人员|施工人员|人员配置|班组|施工组|每村|分组|编组|编入|队伍/u,f=/^(?:为|达|共|约|计|配置|共计|总计|合计|投入|配备|启用)$/u,g=/^[))、::,,\s]{0,2}(?:混凝土|砼)?\s*(\d+(?:\.\d+)?)\s*(m3|m³|立方米|方|m2|m²|㎡|平方米|延长米|米|m|kg|千克|公斤|t|吨|套|个|块|根|只|组|件|片|樘|扇|盏|座|台|处|项|条|副|对|株)(?![A-Za-z0-9²³])/u,h=/^([^0-9]{0,2}?)(\d+(?:\.\d+)?)\s*人/u,i=/^([^0-9]{0,2}?)(\d+(?:\.\d+)?)\s*台/u,j=/阶段[^。;\n]{0,30}?(\d+(?:\.\d+)?)\s*人/u;function k(a){let b=(a||"").replace(/\s+/gu,"");return b?/m[3³]|立方米|方/u.test(b)?"volume":/m[2²]|㎡|平方米/u.test(b)?"area":/m|米/u.test(b)?"length":/吨|千克|公斤|kg|^t$/u.test(b)?"mass":/套|个|块|根|只|组|件|片|樘|扇|盏|座|台|处|项|条|副|对|株/u.test(b)?"count":null:null}function l(a){if(!a)return;let b=(a.resources?.labor?.composition??[]).filter(a=>a.trade&&Number.isFinite(a.count)&&a.count>0).map(a=>({trade:a.trade,count:a.count})),c=new Map;for(let b of a.resources?.equipment??[]){if(!b.name)continue;let a=c.get(b.name);a?a.push(b):c.set(b.name,[b])}let d=[];for(let[a,b]of c)for(let c of b){let e=c.quantity&&c.quantity>0?c.quantity:Math.round(((c.min??1)+(c.max??c.min??1))/2);Number.isFinite(e)&&!(e<=0)&&d.push({name:a,spec:c.spec||"",count:e,variantCount:b.length})}let e=new Map;for(let b of a.materialsPlan??[]){if(!b.name)continue;let a=e.get(b.name);a?a.push(b):e.set(b.name,[b])}let f=[];for(let[a,b]of e)if(!(b.length<2))for(let c of b){if(!c.spec||!Number.isFinite(c.quantity)||(c.quantity??0)<=0)continue;let d=k(c.unit||"");d&&f.push({name:a,spec:c.spec,quantity:c.quantity,unit:c.unit||"",family:d,variantCount:b.length})}return{composition:b,equipment:d,materials:f}}function m(a,b){let c=[],l=new Set(b.composition.map(a=>a.trade)),m=(a,b)=>{let c=[];if(!b)return c;let d=0;for(;d<a.length;){let e=a.indexOf(b,d);if(-1===e)break;c.push(e),d=e+b.length}return c},n=(a,b)=>{let c=[];if(!b)return c;let d=0;for(;d<a.length;){let e=a.indexOf(b,d);if(-1===e)break;let f=a[e-1]||"",g=`${f}${b}`;if(/[\u4e00-\u9fa5]/u.test(f)&&[...l].some(a=>a.length>b.length&&a.includes(g))){d=e+b.length;continue}c.push(e),d=e+b.length}return c},o=function(a){let b=[],c=0;for(;c<=a.length;){let d=a.indexOf("\n",c),e=-1===d?a.length:d;if(b.push({start:c,end:e}),-1===d)break;c=d+1}let d=/^\s*(?:#|\||>)/u,e=[],f=0;for(;f<b.length;){let c=b[f],g=a.slice(c.start,c.end);if(""===g.trim()||d.test(g)){f+=1;continue}let h=f;for(;h+1<b.length;){let c=b[h+1],e=a.slice(c.start,c.end);if(""===e.trim()||d.test(e))break;h+=1}e.push({start:c.start,end:b[h].end}),f=h+1}return e}(a),p=[];for(let b of o){let c=a.slice(b.start,b.end);if(!c.includes("阶段"))continue;let e=[];for(let a of c.matchAll(RegExp(j.source,"gu")))e.push({start:b.start+(a.index??0),total:Number(a[1])});if(0!==e.length)for(let[c,f]of e.entries()){let g=f.start,i=e[c+1]?.start??b.end,j=a.slice(g,i),k=0;for(let a of l)for(let b of n(j,a)){let c=j.slice(b+a.length,b+a.length+12),e=h.exec(c);e&&(!e[1]||d.test(e[1]))&&(k+=Number(e[2]))}k>0&&k===f.total&&p.push({start:g,end:i})}}let q=a=>p.some(b=>a>=b.start&&a<b.end);for(let f of b.composition)for(let b of n(a,f.trade)){if(q(b))continue;let g=a.slice(0,b),i=Math.max(g.lastIndexOf("。"),g.lastIndexOf(";"),g.lastIndexOf(";"),g.lastIndexOf("\n"));if(e.test(g.slice(i+1)))continue;let j=a.slice(b+f.trade.length,b+f.trade.length+12),k=h.exec(j);if(!k||k[1]&&!d.test(k[1]))continue;let l=Number(k[2]);if(l===f.count)continue;let m=b+f.trade.length+k[1].length;c.push({kind:"trade",label:`工种构成 ${f.trade}`,start:m,end:m+k[2].length,actual:l,expected:f.count,message:`工种构成人数与蓝图权威不一致:${f.trade} 正文 ${l} 人,蓝图权威 ${f.count} 人`,suggestion:"工种构成表必须与蓝图工种构成唯一口径一致,各工种人数不得自行改写。"})}for(let d of b.equipment)if(1===d.variantCount)for(let b of m(a,d.name)){let e=a.slice(b+d.name.length,b+d.name.length+12),g=i.exec(e);if(!g||g[1]&&!f.test(g[1]))continue;let h=Number(g[2]);if(h===d.count)continue;let j=b+d.name.length+g[1].length;c.push({kind:"equipment",label:`机械台数 ${d.name}`,start:j,end:j+g[2].length,actual:h,expected:d.count,message:`机械台数与蓝图权威不一致:${d.name} 正文 ${h} 台,蓝图权威 ${d.count} 台`,suggestion:"机械投入计划必须与蓝图机械清单一致,台数不得自行改写。"})}else if(d.spec)for(let b of m(a,d.spec)){let e=a.lastIndexOf("\n",b)+1,f=a.indexOf("\n",b);-1===f&&(f=a.length);let g=a.slice(e,f),h=b-e,i=e+Math.max(g.lastIndexOf(",",h)+1,g.lastIndexOf("。",h)+1,g.lastIndexOf(";",h)+1);if(!a.slice(i,f).includes(d.name))continue;let j=b+d.spec.length,k=a.slice(j,j+12),l=/(\d+(?:\.\d+)?)\s*台/u.exec(k);if(!l)continue;let m=Number(l[1]);if(m===d.count)continue;let n=j+(l.index??0);c.push({kind:"equipment",label:`机械台数 ${d.name}(${d.spec})`,start:n,end:n+l[1].length,actual:m,expected:d.count,message:`机械台数与蓝图权威不一致:${d.name}(${d.spec}) 正文 ${m} 台,蓝图权威 ${d.count} 台`,suggestion:"机械投入计划必须与蓝图机械清单一致,台数不得自行改写。"})}for(let d of b.materials)for(let b of m(a,d.spec)){let e=a.lastIndexOf("\n",b)+1,f=a.indexOf("\n",b);-1===f&&(f=a.length);let h=a.slice(e,f);if(/^\s*\|?\s*(?:合计|小计|总计|累计)/u.test(h))continue;let i=b-e,j=e+Math.max(h.lastIndexOf(";",i),h.lastIndexOf(";",i),h.lastIndexOf("。",i))+1,l=h.indexOf(";",i),m=h.indexOf(";",i),n=h.indexOf("。",i),o=Math.min(-1===l?h.length:l,-1===m?h.length:m,-1===n?h.length:n);if(!a.slice(j,e+o).includes(d.name))continue;let p=b+d.spec.length,q=a.slice(p,p+16),r=g.exec(q);if(!r||k(r[2])!==d.family)continue;let s=Number(r[1]);if(s===d.quantity)continue;let t=p+r[0].indexOf(r[1]);c.push({kind:"material",label:`材料拆分 ${d.name}(${d.spec})`,start:t,end:t+r[1].length,actual:s,expected:d.quantity,message:`材料规格拆分数量与蓝图权威不一致:${d.name}(${d.spec})正文 ${s}${d.unit},蓝图权威 ${d.quantity}${d.unit}`,suggestion:"同名多规格材料的拆分数量必须与清单逐项一致,不得自行分配。"})}return c}function n(a,b){if(!b)return{markdown:a,fixedCount:0,details:[],residualCount:0};let c=m(a,b);if(0===c.length)return{markdown:a,fixedCount:0,details:[],residualCount:0};let d=[...c].sort((a,b)=>b.start-a.start),e=a,f=[],g=1/0;for(let a of d)a.end>g||(e=`${e.slice(0,a.start)}${a.expected}${e.slice(a.end)}`,f.push(a),g=a.start);let h=m(e,b);return h.length>0?{markdown:a,fixedCount:0,details:[],residualCount:h.length}:{markdown:e,fixedCount:f.length,details:f.map(a=>`${a.label} ${a.actual}→${a.expected}`),residualCount:0}}},71678:(a,b,c)=>{c.d(b,{M8:()=>m,Xp:()=>q,a0:()=>l,dn:()=>r,hM:()=>k,mI:()=>t,xb:()=>p});var d=c(37047),e=c(41991),f=c(70208);let g=["对与评标活动有关的工作人员的纪律要求","评标委员会成员与投标人接触的限制","评标纪律与廉洁从业承诺要求","评审争议处理与投标澄清配合程序","评审结果确认与中标公示流程","评标办法与分值构成说明","异常低价评审与计算方式说明","清单计量与报价口径约定","投标文件实质性响应要求","投标保证金缴纳与退还程序","开标程序与投标文件递交截止时间","评标期间行为管控与资料闭环","预付款与进度款支付比例约定","履约担保与保证金缴纳退还约定","价格波动与合同价款调整约定","暂列金额与暂估价使用约定","税费计取与发票结算约定","违约责任与罚款赔偿条款"],h=["劳动力配置计划与高峰期人数安排","施工质量保证措施与验收标准","安全生产管理与教育培训要求","施工进度计划与关键线路安排","材料设备采购进场计划与检验要求","施工现场文明施工与环境保护管理","劳动纪律与班组作业管理制度","施工机械设备配置与维护保养计划","农民工工资支付保障与劳务实名制管理","材料采购质量证明与进场验收管理","工期承诺与进度考核奖惩管理"],i=/评标|投标|行贿|打招呼|递条子|廉洁|串标|围标|弄虚作假|干扰评标|纪律|澄清|中标|报价|清单计量|评审|保证金|开标|递交|争议|异常低价|评标基准价|预付款|进度款|担保|价格波动|材料调差|暂列金额|暂估价|计税|税金|发票|违约/u;function j(a){let b=a.sectionTitle?.trim()||"",c=(a.content||"").replace(/\s+/gu," ").slice(0,400);return b?`${b}。${c}`:c}function k(a){let b=a.sectionTitle?.trim()||a.content.replace(/\s+/gu,"").slice(0,60);return`${a.filePath}::${b}`}async function l(a,b){if(0===a.length)return{safe:[],excluded:[]};let c=a.filter(a=>i.test(j(a)));if(0===c.length)return{safe:[...a],excluded:[]};let e=c.map(j),f=await (0,d.Mv)(e,[...g],b),k=await (0,d.Mv)(e,[...h],b),l=new Set;for(let a of c){let b=j(a),c=Math.max(...g.map(a=>f(b,a))),d=Math.max(...h.map(a=>k(b,a)));c>=.6&&c>d&&l.add(a)}return{safe:a.filter(a=>!l.has(a)),excluded:[...l]}}async function m(a){return(0,e.A)({prototypes:[...g],negativePrototypes:[...h],threshold:.6,embedDocuments:a})}function n(a){return a.replace(/[\s\p{P}\p{S}]+/gu,"").toLowerCase()}let o=/^(?:我公司|本公司|我方|投标人|供应商|承包人)(?:就|对)[^,。;]{0,22}(?:均属|属实|真实有效|承担|负责|无异议|为准)$/u;function p(a){let b=a.trim().replace(/\s+/gu,"");if(!b||(0,f.mq)(b)||o.test(b))return!0;let c=n(b);if(g.some(a=>n(a)===c))return!0;let d=b.replace(/农民工工资保证金|工资保证金/gu,""),e=/评标|投标|开标|中标|评审|保证金|串标|围标|廉洁|询标|递交/u.test(d),h=/纪律|监督|争议|澄清|程序|行为|管控|限制|接触|公示|承诺|响应|办法/u.test(b);return!!(e&&h||/异常低价|评标基准价/u.test(b)||/电子保函|保函|投标保证金|履约担保|履约保证金|保证金(?:的)?(?:缴纳|退还|提交|方式)/u.test(b)&&!/农民工|工资|专用账户|实名|考勤|劳资/u.test(b)||/暂列金额|暂估价|材料调差/u.test(b)||/预付款(?:支付|比例|约定|申请|保函)|进度款(?:支付|申请|计量|约定)|履约担保/u.test(b)||/价格波动(?:调整|约定)|违约金(?:条款|约定)|计税|税金(?:计取|结算)|发票(?:开具|结算)/u.test(b))||q(b)}function q(a){let b=a.trim().replace(/\s+/gu,"");if(!b)return!1;let c=b.replace(/^\d{1,3}(?:[..]\d{1,3})*[、..]?/u,"");return!!(/^具备(?:有效|相应|满足)/u.test(c)||/^(?:须|应|需|得)?提供[^,,。;]{0,12}(?:证明|材料|文件|证件|证书|报告)/u.test(c))||!!/营业执照|资质证书|安全生产许可证|资格预审|资格审查|资质审查|财务状况|业绩证明|业绩要求|银行资信|审计报告|信用记录|信用评价|不良行为记录|联合体投标|联合体协议/u.test(b)&&!/施工|技术|方案|措施|管理|控制|验收|工艺|流程|计划|组织|进度|质量|工期|文明|绿色|环保|节能|材料|设备|机械|人员|劳务|检验|检测|试验|保证|落实|制度/u.test(b)}function r(a){let b=a.trim().replace(/\s+/gu,"");return!!b&&!!/投标人|投标方|承包人资格|资格要求|资格审查|资格预审|资质要求|资质条件|资质等级|资格条件|财务状况|业绩要求|业绩证明|信用要求|联合体/u.test(b)&&/营业执照|资质证书|安全生产许可证|级及以上资质|财务状况|财务报告|审计报告|银行资信|业绩证明|类似业绩|信用记录|信用评价|不良行为记录|投标保证金|履约保证金/u.test(b)}async function s(a){let b=a.sections.filter(a=>a?.trim());if(0===b.length)return[];let c=b.filter(a=>!p(a)),e=c.filter(a=>i.test(a));if(0===e.length)return c;let f=`${a.chapterTitle} ${a.chapterPurpose||""}`.trim(),j=await (0,d.Mv)(e,[...g],a.embedDocuments),k=await (0,d.Mv)(e,f?[f]:[],a.embedDocuments),l=await (0,d.Mv)(e,[...h],a.embedDocuments),m=new Set;for(let a of e){let b=Math.max(...g.map(b=>j(a,b))),c=f?k(a,f):0,d=Math.max(...h.map(b=>l(a,b)));b>=.6&&b>c&&b>d&&m.add(a)}return c.filter(a=>!m.has(a))}async function t(a,b){return Promise.all(a.map(async a=>({...a,sections:await s({sections:a.sections||[],chapterTitle:a.title,chapterPurpose:a.purpose,embedDocuments:b})})))}},73186:(a,b,c)=>{c.d(b,{Su:()=>i,U2:()=>k,Zq:()=>f,am:()=>j});var d=c(76760);function e(a){return d.resolve(a).replace(/\\/gu,"/").toLowerCase()}function f(a,b=[]){return{projectId:a,allowedFilePaths:[...new Set(b.filter(Boolean).map(e))]}}function g(a){return!!a?.allowedFilePaths.length}function h(a,b){if(!g(b))return!0;if(!a)return!1;let c=e(a);return b.allowedFilePaths.includes(c)}function i(a,b){return a.filter(a=>h(a.filePath,b))}function j(a,b){return a.filter(a=>h(a.sourceFile,b))}function k(a,b,c){if(!g(b))return;let d=a.filter(a=>!h(a.filePath,b));if(d.length>0){let a=d.slice(0,5).map(a=>a.filePath).join(";");throw Error(`EVIDENCE_SCOPE_VIOLATION:${c}:${a}`)}}},73859:(a,b,c)=>{c.d(b,{$i:()=>f,E1:()=>j,d2:()=>i,oC:()=>g,p4:()=>d,rF:()=>h});let d={id:"default_general_document",name:"通用文档",factFields:[{id:"document_identity",name:"对象名称",aliases:["项目名称","工程名称","文档名称","任务名称","招标项目名称","建设项目名称"],category:"identity",cardinality:"single",derivationPolicy:"source_only",usagePolicy:"must_use",confidencePolicy:{minForGeneration:.75,minForValidation:.85,allowPathOnly:!1},conflictPolicy:"strict"},{id:"schedule_requirement",name:"周期要求",aliases:["计划工期","工期","周期要求","进度节点要求","开工日期","竣工日期"],category:"schedule",cardinality:"single",derivationPolicy:"source_only",usagePolicy:"must_use",confidencePolicy:{minForGeneration:.7,minForValidation:.8,allowPathOnly:!1},conflictPolicy:"strict"},{id:"quality_requirement",name:"质量要求",aliases:["质量要求","质量标准","验收要求","评价标准"],category:"quality",cardinality:"multiple",derivationPolicy:"source_only",usagePolicy:"use_if_relevant",confidencePolicy:{minForGeneration:.65,minForValidation:.75,allowPathOnly:!1},conflictPolicy:"allow_multiple"},{id:"safety_requirement",name:"安全合规要求",aliases:["安全要求","安全合规要求","风险控制要求","合规要求"],category:"safety",cardinality:"multiple",derivationPolicy:"source_only",usagePolicy:"use_if_relevant",confidencePolicy:{minForGeneration:.65,minForValidation:.75,allowPathOnly:!1},conflictPolicy:"allow_multiple"},{id:"technical_parameter",name:"技术参数",aliases:["技术参数","参数规格范围","规格","型号","尺寸","标准编号","材料设备"],category:"technical",cardinality:"multiple",derivationPolicy:"source_only",usagePolicy:"must_use",confidencePolicy:{minForGeneration:.7,minForValidation:.8,allowPathOnly:!1},conflictPolicy:"allow_multiple"},{id:"resource_plan",name:"资源配置",aliases:["劳动力","机械","检测设备","应急物资","资源配置","人员配置"],category:"resource",cardinality:"multiple",derivationPolicy:"plan_inferable",usagePolicy:"use_if_relevant",confidencePolicy:{minForGeneration:.45,minForValidation:.55,allowPathOnly:!1},conflictPolicy:"allow_multiple"},{id:"commercial_data",name:"商务数据",aliases:["报价","单价","合价","综合单价","预留金","税率","金额","利润"],category:"commercial",cardinality:"multiple",derivationPolicy:"forbidden",usagePolicy:"do_not_use",confidencePolicy:{minForGeneration:1,minForValidation:1,allowPathOnly:!1},conflictPolicy:"ignore"},{id:"rule_requirement",name:"规则要求",aliases:["规则要求","变更说明","实施范围","对象范围","结构化数据范围"],category:"compliance",cardinality:"multiple",derivationPolicy:"source_only",usagePolicy:"use_if_relevant",confidencePolicy:{minForGeneration:.6,minForValidation:.7,allowPathOnly:!1},conflictPolicy:"allow_multiple"}],forbiddenValuePatterns:[/投标报价|报价明细|单价|合价|综合单价|预留金|暂列金额|税率|增值税|利润|结算/u],diagnosticValuePatterns:[/OCR|识别错误|乱码|无法确认|疑似|不确定|绑定片段|兜底|知识库|提示词|后台|文件路径|PDF|DWG|Excel/u,/^#+\s*/u,/^见(?:招标|投标人|前附|补疑|图纸|清单|文件|资料|公告|须知)/u],lowConfidenceValuePatterns:[/无法确认|疑似|不确定|需复核|文字模糊|语义断裂|识别错误|乱码/u]},e={...d,id:"construction_organization_design",name:"施工组织设计"};function f(a,b=""){let c=`${a?.id||""} ${a?.name||""} ${a?.category||""} ${a?.description||""} ${a?.outputTitle||""} ${b}`;return/施工组织设计|施工方案|危大工程|人、材、机|安全文明施工/u.test(c)?e:d}function g(a,b){if(b)return a.factFields.find(a=>a.name===b||a.aliases.some(a=>b.includes(a)||a.includes(b)))}function h(a,b){return a.forbiddenValuePatterns.some(a=>a.test(b))}function i(a,b){return a.diagnosticValuePatterns.some(a=>a.test(b))}function j(a,b){return a.lowConfidenceValuePatterns.some(a=>a.test(b))}},76193:(a,b,c)=>{c.d(b,{ll:()=>l,wF:()=>o,yT:()=>k}),c(51190),c(64406),c(10751);var d=c(93675);let e=new Set(["structure","table","fact_consistency","evidence_coverage","professional_chain","control_loop","format","style","scope"]),f=[{id:"table-line-residue",kind:"deterministic",anchoredTo:"table-quality",giveUpOnFailure:!0},{id:"templated-labels",kind:"deterministic",anchoredTo:"templated-label",giveUpOnFailure:!0},{id:"structure-integrity",kind:"deterministic",anchoredTo:"structure-integrity",giveUpOnFailure:!0},{id:"repeated-words",kind:"deterministic",anchoredTo:"repeated-word",giveUpOnFailure:!0},{id:"duplicate-tables",kind:"deterministic",anchoredTo:"duplicate-table",giveUpOnFailure:!0},{id:"finish-thickness",kind:"deterministic",anchoredTo:"finish-thickness",giveUpOnFailure:!0},{id:"slot-depth-value",kind:"deterministic",anchoredTo:"fact-reconciliation",authorities:["blueprint"],giveUpOnFailure:!0},{id:"labor-peak",kind:"deterministic",anchoredTo:"resource-consistency",authorities:["laborPeak"],giveUpOnFailure:!0},{id:"phase-labor-values",kind:"deterministic",anchoredTo:"phase-labor-mixing",authorities:["blueprint"],giveUpOnFailure:!0},{id:"resource-breakdown",kind:"deterministic",anchoredTo:"resource-breakdown-consistency",authorities:["blueprint"],giveUpOnFailure:!0},{id:"internal-table-row-dup",kind:"deterministic",anchoredTo:"table-spam",giveUpOnFailure:!0},{id:"duplicate-basic-info-tables",kind:"deterministic",anchoredTo:"table-quality",giveUpOnFailure:!0},{id:"fallback-placeholder-rows",kind:"deterministic",anchoredTo:"formal-placeholder",giveUpOnFailure:!0},{id:"greening-maintenance",kind:"deterministic",anchoredTo:"greening-maintenance-mismatch",authorities:["greeningMaintenance"],giveUpOnFailure:!0},{id:"paragraph-opening-repeat",kind:"deterministic",anchoredTo:"paragraph-opening-repeat",giveUpOnFailure:!0},{id:"paragraph-tail-repeat",kind:"deterministic",anchoredTo:"paragraph-tail-repeat",giveUpOnFailure:!0},{id:"collision-numbered-heading",kind:"deterministic",anchoredTo:"collision-numbered-heading",giveUpOnFailure:!0},{id:"heading-uncovered-items",kind:"deterministic",anchoredTo:"heading-uncovered-engineering-items",giveUpOnFailure:!0},{id:"inverted-date-range",kind:"deterministic",anchoredTo:"inverted-date-range",giveUpOnFailure:!0},{id:"truncated-sentence",kind:"deterministic",anchoredTo:"truncated-sentence",giveUpOnFailure:!0},{id:"meta-discourse",kind:"deterministic",anchoredTo:"meta-discourse-declaration",giveUpOnFailure:!0},{id:"formula-residue",kind:"deterministic",anchoredTo:"formula-residue",giveUpOnFailure:!0},{id:"self-undermining",kind:"deterministic",anchoredTo:"self-undermining-candidate",giveUpOnFailure:!0},{id:"ambiguous-either-or",kind:"deterministic",anchoredTo:"ambiguous-either-or",authorities:["supportSystem"],giveUpOnFailure:!0},{id:"empty-scoring-response",kind:"deterministic",anchoredTo:"requirements-coverage",giveUpOnFailure:!0},{id:"tender-meta-language",kind:"deterministic",anchoredTo:"formal-style",giveUpOnFailure:!0},{id:"forbidden-configuration",kind:"deterministic",anchoredTo:"formal-text-gate",giveUpOnFailure:!0},{id:"basis-regulation-region",kind:"deterministic",anchoredTo:"basis-regulations-coverage",authorities:["blueprint"],giveUpOnFailure:!0},{id:"work-injury-insurance",kind:"deterministic",anchoredTo:"local-adaptation-keyword",giveUpOnFailure:!0},{id:"duplicate-response-line",kind:"deterministic",anchoredTo:"duplicate-paragraph",giveUpOnFailure:!0},{id:"atlas-reference",kind:"deterministic",anchoredTo:"drawing-reference",giveUpOnFailure:!0},{id:"tertiary-h4-dedupe",kind:"deterministic",anchoredTo:"tertiary-heading",giveUpOnFailure:!0},{id:"internal-term-heading",kind:"deterministic",anchoredTo:"internal-terminology-anchor",giveUpOnFailure:!0},{id:"skeleton-fingerprint-variants",kind:"deterministic",anchoredTo:"skeleton-fingerprint",giveUpOnFailure:!0},{id:"flow-form-variants",kind:"deterministic",anchoredTo:"flow-form-repeat",giveUpOnFailure:!0},{id:"truncated-title-completion",kind:"deterministic",anchoredTo:"title-integrity",giveUpOnFailure:!0},{id:"sentence-like-heading-split",kind:"deterministic",anchoredTo:"title-integrity",giveUpOnFailure:!0},{id:"section-renumber",kind:"deterministic",anchoredTo:"section-numbering",giveUpOnFailure:!0}],g=[{id:"numeric-arbiter-concept",kind:"deterministic",anchoredTo:"parameter-concept-conflict",giveUpOnFailure:!0},{id:"numeric-arbiter-spec",kind:"deterministic",anchoredTo:"spec-location-mismatch",giveUpOnFailure:!0}],h=["source-enumeration","internal-terminology-anchor","fabricated-start-date","repeated-word","writer-missing-section","meta-discourse-declaration","formula-residue","finish-thickness","formal-placeholder","truncated-sentence"],i=[{id:"fact-landing",kind:"llm-patch",anchoredTo:"important-unplaced-facts",patchGuard:{detectors:[...h]},giveUpOnFailure:!0},{id:"table-repair",kind:"llm-patch",anchoredTo:"table-quality",patchGuard:{detectors:[...h]},giveUpOnFailure:!0},{id:"table-execution-repair",kind:"llm-patch",anchoredTo:"table-plan-execution",patchGuard:{detectors:[...h]},giveUpOnFailure:!0},{id:"templating-repair",kind:"llm-patch",anchoredTo:"templating-filler",patchGuard:{detectors:[...h]},giveUpOnFailure:!0},{id:"workpackage-skeleton-repair",kind:"llm-patch",anchoredTo:"workpackage-skeleton",patchGuard:{detectors:[...h]},giveUpOnFailure:!0},{id:"planned-section-repair",kind:"llm-patch",anchoredTo:"planned-section-completeness",patchGuard:{detectors:[...h]},giveUpOnFailure:!0},{id:"global-consistency-repair",kind:"llm-patch",anchoredTo:"global-consistency-review",patchGuard:{detectors:[...h]},giveUpOnFailure:!0}],j=new Set;function k(a,b){return j.add(a),b()}async function l(a,b){j.add(a);try{return await b()}catch(c){let b=c instanceof Error?c.message:String(c);return console.error(`[gen] detector degraded: ${a} failed, fallback to warning issue:`,c),[{level:"warning",severity:"warning",category:"format",owner:"system",repairability:"manual_review",message:`交付前检测器「${a}」执行失败,已降级为待复核:${b}`,suggestion:"此为检测器基础设施异常,非正文内容缺陷;其余交付前检查已照常完成。可稍后重新生成复核,或人工复核该检测维度。"}]}}let m=[{id:"spec-gate-rules",scope:"full-document",category:"structure"},{id:"auto-spec-validation",scope:"full-document",category:"structure"},{id:"fact-consistency",scope:"full-document",category:"fact_consistency"},{id:"project-contamination",scope:"full-document",category:"scope"},{id:"project-basic-placeholder",scope:"full-document",category:"format"},{id:"standard-final",scope:"full-document",category:"structure"},{id:"fact-coverage",scope:"full-document",category:"evidence_coverage"},{id:"page-target",scope:"full-document",category:"structure"},{id:"document-budget",scope:"full-document",category:"structure"},{id:"formal-text-gate",scope:"full-document",category:"format"},{id:"heading-uncovered-engineering-items",scope:"full-document",category:"structure"},{id:"writer-missing-section",scope:"full-document",category:"structure",deterministicSafe:!0},{id:"critical-section-depth",scope:"chapter",category:"structure"},{id:"critical-section-fact-density",scope:"chapter",category:"evidence_coverage"},{id:"chapter-fact-density",scope:"chapter",category:"evidence_coverage"},{id:"construction-org-professional-audit",scope:"chapter",category:"professional_chain"},{id:"toc-consistency",scope:"full-document",category:"structure",deterministicSafe:!0},{id:"section-numbering",scope:"full-document",category:"structure",deterministicSafe:!0},{id:"section-count-overflow",scope:"chapter",category:"structure"},{id:"heading-duplicate",scope:"full-document",category:"structure",deterministicSafe:!0},{id:"structure-integrity",scope:"full-document",category:"structure",deterministicSafe:!0},{id:"templated-label",scope:"full-document",category:"structure",deterministicSafe:!0},{id:"title-integrity",scope:"full-document",category:"structure"},{id:"evaluation-criteria-coverage",scope:"full-document",category:"evidence_coverage"},{id:"requirements-coverage",scope:"full-document",category:"evidence_coverage"},{id:"fabricated-start-date",scope:"full-document",category:"fact_consistency",deterministicSafe:!0},{id:"field-value-mismatch",scope:"full-document",category:"fact_consistency",deterministicSafe:!0},{id:"area-arithmetic",scope:"full-document",category:"fact_consistency",deterministicSafe:!0},{id:"resource-consistency",scope:"full-document",category:"fact_consistency",authorities:["laborPeak"]},{id:"node-schedule-consistency",scope:"full-document",category:"fact_consistency"},{id:"cross-section-numeric-conflict",scope:"full-document",category:"fact_consistency"},{id:"fact-reconciliation",scope:"full-document",category:"fact_consistency",authorities:["blueprint"]},{id:"greening-maintenance-mismatch",scope:"full-document",category:"fact_consistency",authorities:["greeningMaintenance"]},{id:"street-light-count-mismatch",scope:"full-document",category:"fact_consistency"},{id:"spec-location-mismatch",scope:"full-document",category:"fact_consistency"},{id:"blueprint-citation-consistency",scope:"full-document",category:"fact_consistency",authorities:["blueprint"]},{id:"cross-project-value-copy",scope:"full-document",category:"fact_consistency",authorities:["blueprint"]},{id:"phase-labor-mixing",scope:"full-document",category:"fact_consistency",authorities:["blueprint"]},{id:"equipment-batch-conflict",scope:"full-document",category:"fact_consistency",authorities:["blueprint"]},{id:"preliminary-action-timing",scope:"full-document",category:"fact_consistency",authorities:["blueprint"]},{id:"foundation-form-residue",scope:"full-document",category:"fact_consistency"},{id:"ambiguous-either-or",scope:"full-document",category:"fact_consistency",authorities:["supportSystem"]},{id:"excavation-depth-lock",scope:"full-document",category:"fact_consistency"},{id:"excavation-hazard-classification",scope:"full-document",category:"fact_consistency"},{id:"support-form-fact-consistency",scope:"full-document",category:"fact_consistency",authorities:["supportSystem"]},{id:"equipment-entry-timing",scope:"full-document",category:"fact_consistency"},{id:"fabricated-award",scope:"full-document",category:"fact_consistency"},{id:"bidder-qualification-section",scope:"full-document",category:"scope"},{id:"cross-chapter-duplicate-section",scope:"chapter",category:"structure"},{id:"basic-info-schedule-field",scope:"full-document",category:"fact_consistency"},{id:"duplicate-table",scope:"full-document",category:"table"},{id:"duplicate-paragraph",scope:"full-document",category:"structure"},{id:"paragraph-tail-repeat",scope:"full-document",category:"style",deterministicSafe:!0},{id:"collision-numbered-heading",scope:"full-document",category:"structure",deterministicSafe:!0},{id:"inverted-date-range",scope:"full-document",category:"fact_consistency",deterministicSafe:!0},{id:"resource-triad-section-hierarchy",scope:"full-document",category:"structure"},{id:"support-system-conflict",scope:"full-document",category:"fact_consistency",authorities:["supportSystem"]},{id:"dangerous-list-consistency",scope:"full-document",category:"fact_consistency"},{id:"hazard-exclusion-contradiction",scope:"full-document",category:"fact_consistency"},{id:"six-hundred-percent-coverage",scope:"full-document",category:"evidence_coverage"},{id:"self-undermining-candidate",scope:"full-document",category:"style"},{id:"paragraph-opening-repeat",scope:"full-document",category:"style",deterministicSafe:!0},{id:"flow-form-repeat",scope:"full-document",category:"style"},{id:"skeleton-fingerprint",scope:"full-document",category:"style"},{id:"repeated-word",scope:"full-document",category:"style",deterministicSafe:!0},{id:"commercial-data-in-body",scope:"full-document",category:"scope"},{id:"overview-recap",scope:"full-document",category:"style"},{id:"closure-phrase-density-cap",scope:"full-document",category:"style"},{id:"parameter-concept-conflict",scope:"full-document",category:"fact_consistency"},{id:"internal-terminology-anchor",scope:"full-document",category:"style",deterministicSafe:!0},{id:"construction-system-coverage",scope:"chapter",category:"evidence_coverage"},{id:"dangerous-applicability",scope:"full-document",category:"evidence_coverage"},{id:"innovation-tech-coverage",scope:"full-document",category:"evidence_coverage"},{id:"instruction-like-heading",scope:"full-document",category:"structure"},{id:"formal-heading-hierarchy",scope:"full-document",category:"structure",deterministicSafe:!0},{id:"formal-content-integrity",scope:"full-document",category:"format",deterministicSafe:!0},{id:"punctuation-artifact",scope:"full-document",category:"format",deterministicSafe:!0},{id:"table-quality",scope:"full-document",category:"table",deterministicSafe:!0},{id:"table-spam",scope:"full-document",category:"table",deterministicSafe:!0},{id:"basis-regulations-coverage",scope:"full-document",category:"fact_consistency",authorities:["blueprint"]},{id:"resource-breakdown-consistency",scope:"full-document",category:"fact_consistency",authorities:["blueprint"]},{id:"section-content-integrity",scope:"chapter",category:"structure"},{id:"professional-content",scope:"chapter",category:"professional_chain"},{id:"professional-score",scope:"chapter",category:"professional_chain"},{id:"generic-professional-content",scope:"chapter",category:"professional_chain"},{id:"management-measure-number",scope:"chapter",category:"professional_chain"},{id:"closed-loop-density",scope:"full-document",category:"control_loop"},{id:"cross-chapter-consistency",scope:"full-document",category:"fact_consistency"},{id:"process-spec-conflict",scope:"full-document",category:"fact_consistency"},{id:"evidence-usage-coverage",scope:"full-document",category:"evidence_coverage"},{id:"paragraph-generic",scope:"full-document",category:"style"},{id:"construction-org-generic-language",scope:"chapter",category:"style"},{id:"construction-org-control-loop",scope:"chapter",category:"control_loop"},{id:"construction-org-professional-chain",scope:"chapter",category:"professional_chain"},{id:"construction-org-consistency",scope:"full-document",category:"fact_consistency"},{id:"construction-org-chapter-data-coverage",scope:"chapter",category:"evidence_coverage"},{id:"construction-org-major-content",scope:"chapter",category:"professional_chain"},{id:"construction-org-division-section",scope:"chapter",category:"structure"},{id:"major-content-governance",scope:"full-document",category:"structure"},{id:"construction-org-bonus-module",scope:"chapter",category:"professional_chain"},{id:"chapter-dependency",scope:"chapter",category:"professional_chain"},{id:"document-delivery-score",scope:"full-document",category:"professional_chain"},{id:"generated-fact-verification",scope:"full-document",category:"fact_consistency"},{id:"duplicate-basic-info",scope:"full-document",category:"structure"},{id:"formal-style",scope:"full-document",category:"style"},{id:"tertiary-heading",scope:"full-document",category:"structure",deterministicSafe:!0},{id:"min-chapter-section",scope:"chapter",category:"structure"},{id:"precise-fact-usage",scope:"full-document",category:"fact_consistency"},{id:"boq-placement",scope:"full-document",category:"evidence_coverage"},{id:"stage-phrasing",scope:"full-document",category:"fact_consistency"},{id:"emergency-section-depth",scope:"full-document",category:"structure"},{id:"boq-row-trace",scope:"full-document",category:"evidence_coverage"},{id:"drawing-reference",scope:"full-document",category:"evidence_coverage"},{id:"web-evidence-leakage",scope:"full-document",category:"scope"},{id:"formal-placeholder",scope:"full-document",category:"format",deterministicSafe:!0},{id:"prompt-example-leak",scope:"full-document",category:"format"},{id:"degenerate-content",scope:"chapter",category:"style"},{id:"planned-auto-spec-gate",scope:"full-document",category:"structure"},{id:"planned-structure",scope:"full-document",category:"structure"},{id:"prompt-document-rule",scope:"full-document",category:"format"},{id:"local-adaptation-keyword",scope:"full-document",category:"evidence_coverage"},{id:"boq-division-coverage",scope:"full-document",category:"evidence_coverage"},{id:"important-unplaced-facts",scope:"chapter",category:"evidence_coverage"},{id:"table-plan-execution",scope:"chapter",category:"table"},{id:"templating-filler",scope:"full-document",category:"style"},{id:"templating-difficulty",scope:"full-document",category:"professional_chain"},{id:"workpackage-skeleton",scope:"chapter",category:"structure"},{id:"planned-section-completeness",scope:"chapter",category:"structure"},{id:"global-consistency-review",scope:"full-document",category:"fact_consistency"},{id:"source-enumeration",scope:"full-document",category:"style",deterministicSafe:!0},{id:"meta-discourse-declaration",scope:"full-document",category:"style",deterministicSafe:!0},{id:"finish-thickness",scope:"full-document",category:"fact_consistency",deterministicSafe:!0},{id:"formula-residue",scope:"full-document",category:"format",deterministicSafe:!0},{id:"truncated-sentence",scope:"full-document",category:"format",deterministicSafe:!0},{id:"block-structure-contract",scope:"chapter",category:"structure"},{id:"block-fact-density",scope:"chapter",category:"evidence_coverage"},{id:"block-templating",scope:"chapter",category:"style"},{id:"block-attribution-quantification",scope:"chapter",category:"professional_chain"},{id:"block-numeric-reconciliation",scope:"chapter",category:"fact_consistency"},{id:"block-format-constraints",scope:"chapter",category:"format"}];function n(a){return m.find(b=>b.id===a)}function o(){let a=[];for(let b of[...f,...g,...i]){let c=n(b.anchoredTo);if(!c){a.push(`修复器 ${b.id} 锚定检测器 ${b.anchoredTo} 未在注册表声明(检测定位=修复定位强制同源)`);continue}if(!function(a,b){let c=new Set(a??[]),d=new Set(b??[]);if(c.size!==d.size)return!1;for(let a of c)if(!d.has(a))return!1;return!0}(b.authorities,c.authorities)&&a.push(`修复器 ${b.id}(authorities=${JSON.stringify(b.authorities??[])})与锚定检测器 ${b.anchoredTo}(authorities=${JSON.stringify(c.authorities??[])})权威口径不一致`),"llm-patch"===b.kind&&!b.patchGuard){a.push(`LLM patch 修复器 ${b.id} 未声明 patchGuard(修复过程会重新引入已知坏内容,必须预检)`);continue}for(let c of b.patchGuard?.detectors??[]){let d=n(c);d?d.deterministicSafe||a.push(`修复器 ${b.id} patchGuard 引用检测器 ${c} 未标记 deterministicSafe(patchGuard 只收录零误伤确定性检测器)`):a.push(`修复器 ${b.id} patchGuard 引用检测器 ${c} 未在注册表声明`)}}for(let[b,c]of f.entries())f.slice(0,b).some(a=>a.id===c.id)&&a.push(`确定性修复器锚定声明重复:${c.id}`);let b=new Set(d.aW.map(a=>a.key));for(let c of b)f.some(a=>a.id===c)||a.push(`确定性修复器 ${c} 已接入 SURFACE_FIX_STEPS 但未在 DETERMINISTIC_FIXER_ANCHORS 声明锚定检测器`);for(let c of f)b.has(c.id)||a.push(`确定性修复器锚定声明 ${c.id} 无对应 SURFACE_FIX_STEPS 键(声明多余或键已改名)`);for(let[b,c]of g.entries())g.slice(0,b).some(a=>a.id===c.id)&&a.push(`数值裁决器修复器声明重复:${c.id}`);for(let b of m)b.category&&e.has(b.category)||a.push(`检测器 ${b.id} 声明了非法 category(当前=${b.category||"缺失"};合法值:${[...e].join("、")})`);if(a.length>0)throw Error(`检测器/修复器注册表一致性校验失败(${a.length} 项):
221
+ ${a.map(a=>`- ${a}`).join("\n")}`)}},79227:(a,b,c)=>{c.d(b,{C:()=>f,previewGenerationBudgetForTemplate:()=>g});var d=c(46482),e=c(95734);function f(a){let b=Math.max(1,a.chapters.length),c=a.targetWords>0?Math.round(a.targetWords/b):1200,d=a.strategy,f=[],g=a.materialFileCount<4&&a.evidenceCount<6,h=Math.max(1,Math.min(b,(Number.isFinite(a.configuredChapterConcurrency)&&a.configuredChapterConcurrency>0?Math.floor(a.configuredChapterConcurrency):void 0)??b)),i=(0,e.Qf)(a.targetWords),j="fast"===d.mode?1:Math.max(1,b),{floorChars:k,ceilingChars:l}=c>=6e3?{floorChars:14e3,ceilingChars:4e4}:c>=3e3?{floorChars:11e3,ceilingChars:28e3}:{floorChars:8e3,ceilingChars:18e3},m=d.repairRoundBudget?d.repairRoundBudget:Math.max(2,Math.min(4,2+ +(a.targetWords>=2e4)+ +!!g)),n=Math.min(m*b,Math.max(12,2*b));return"strict"===d.mode&&f.push("strict:风险领域关键词命中(专项/安全/质量/验收/合同/合规等)"),a.targetWords>=4e4&&f.push("strict:目标篇幅超长(≥4 万字)"),g&&f.push("strict:资料稀疏(资料包文件 <4 且可用证据 <6 条)"),"fast"===d.mode&&f.push("fast:小文档(≤6000 字且 ≤4 章)全局审查降级为 35% 抽检"),"longform"===d.mode&&f.push("longform:长文档(≥3 万字或 ≥8 章)"),"balanced"===d.mode&&f.push("balanced:常规篇幅文档,标准审查深度"),f.push(`全章节并行生成(${h}/${b} 章同批),审查流水线 ${j} 路,全局 LLM 并发不设上限,每章证据预算 ${Math.round(k/1e3)}k-${Math.round(l/1e3)}k 字符,修复轮次预算每章 ${m} 轮(文档级总池 ${n} 轮,收敛判定优先)`),{strategy:d,chapterConcurrency:h,reviewConcurrency:j,llmConcurrency:i,evidenceFloorChars:k,evidenceCeilingChars:l,repairRoundBudget:m,repairPoolBudget:n,triggers:f}}function g(a){let b=Math.max(1,a.chapters.length),c=Math.max(0,Math.round(a.targetWords??0)),e=(0,d.JP)({template:a.template,targetWords:c,requirement:a.requirement,materialFileCount:a.materialFileCount,evidenceCount:a.evidenceCount}),g=f({template:a.template,chapters:a.chapters,targetWords:c,requirement:a.requirement,materialFileCount:a.materialFileCount,evidenceCount:a.evidenceCount,hasVeryLargeExplicitChapter:a.hasVeryLargeExplicitChapter??!1,configuredChapterConcurrency:a.configuredChapterConcurrency??0,strategy:e});return{mode:e.mode,enableGlobalReview:e.enableGlobalReview,globalReviewSamplingRate:e.globalReviewSamplingRate??1,repairRoundBudget:g.repairRoundBudget,chapterConcurrency:g.chapterConcurrency,reviewConcurrency:g.reviewConcurrency,evidenceFloorChars:g.evidenceFloorChars,evidenceCeilingChars:g.evidenceCeilingChars,targetWords:c,chapterCount:b,triggers:g.triggers}}},81010:(a,b,c)=>{c.d(b,{C8:()=>al,dr:()=>av,OY:()=>at,DL:()=>ay,jM:()=>ad,RT:()=>ae,rR:()=>W,R3:()=>Z,iV:()=>au,RY:()=>$,Pd:()=>V,md:()=>ak,nR:()=>Y,m4:()=>X,eT:()=>ax,TF:()=>ai,Rx:()=>af,uw:()=>am,wY:()=>M,Fq:()=>az});var d=c(19898),e=c(73024),f=c(48161),g=c(76760),h=c(22213),i=c(1218),j=c(22157),k=c(38115),l=c(78217),m=c(3063);let n={seq:1,code:2,name:4,description:5,unit:6,quantity:8};function o(a){let b=a.map(a=>a.replace(/\s+/gu,""));return b.includes("序号")&&b.includes("项目编码")}function p(a){let b=a.map(a=>a.replace(/\s+/gu,"")),c=a=>b.findIndex(b=>a.includes(b)),d=c(["序号"]),e=c(["项目编码"]),f=c(["项目名称"]),g=c(["计量单位","单位"]),h=c(["工程量"]);if(!(d<0)&&!(e<0)&&!(f<0)&&!(g<0)&&!(h<0))return{seq:d,code:e,name:f,description:c(["项目特征描述"]),unit:g,quantity:h}}function q(a){return/^[一二三四五六七八九十\d]+(?:\.\d+)?$/u.test(a.trim())&&!r.test(a.trim())}let r=/^(?:\d{12}|(?:ZB|WB)\d{12})$/u,s=/工作表:(\d+(?:\.\d+)?)/u,t=/第1页\s*共(\d+)页/u,u=/工程名称:(.+?)\s*标段/u,v=/工程名称:([^\n||]{2,40}?)\s*$/mu,w=/第(\d+)页\s*共\d+页/gu;function x(a){let b=s.exec(a.sectionTitle);if(b)return b[1];let c=a.content.split("\n")[0]||"",d=s.exec(c);return d?d[1]:""}function y(a){let b=new Map;for(let c of a){let a=b.get(c.villageGroup)||[];a.push(c),b.set(c.villageGroup,a)}return b}var z=c(22496),A=c(95734),B=c(10751),C=c(48661);let D=[{zone:"east",pattern:/上海|江苏|浙江|安徽|福建|江西|山东/u,climate:{rainySeason:"6-8月",highTemp:"7-8月",winter:"12-2月"}},{zone:"south",pattern:/广东|广西|海南/u,climate:{rainySeason:"4-9月",highTemp:"6-9月",winter:"12-2月"}},{zone:"north",pattern:/北京|天津|河北|山西|内蒙古/u,climate:{rainySeason:"7-8月",highTemp:"7-8月",winter:"11-3月"}},{zone:"northeast",pattern:/辽宁|吉林|黑龙江/u,climate:{rainySeason:"7-8月",highTemp:"7月",winter:"11-3月"}},{zone:"northwest",pattern:/陕西|甘肃|宁夏|青海|新疆/u,climate:{rainySeason:"7-8月",highTemp:"7-8月",winter:"11-3月"}},{zone:"southwest",pattern:/四川|重庆|云南|贵州|西藏/u,climate:{rainySeason:"6-9月",highTemp:"7-8月",winter:"12-2月"}},{zone:"central",pattern:/湖北|湖南|河南/u,climate:{rainySeason:"6-8月",highTemp:"7-8月",winter:"12-2月"}}];function E(a){let b=`${a.name} ${a.description}`;return/塑料管|管道|检查井|雨水口|化粪池|涵管/u.test(b)?"管道铺设":/挖一般土方|挖沟槽|挖基坑|回填|清淤|余方|弃置|土方/u.test(b)&&"m3"===a.unit?"土方工程":/混凝土|垫层|涵头|压顶/u.test(b)&&"m3"===a.unit?"混凝土工程":/水泥混凝土|路床|铺装|道路|青砖|散水|块料/u.test(b)&&"m2"===a.unit?"道路铺装":/砌筑|砌体|砖/u.test(b)?"砌筑工程":/绿化|栽植|种植|苗木|草籽|喷播|灌木|乔木|色带|草坪/u.test(b)?"绿化工程":"安装工程"}let F={id:"village-municipal",projectTypes:["市政","园林绿化"],milestoneGroups:[{key:"prep",label:"施工准备与清杂拆除",pattern:/清杂|拆除|场地平整|临时/u},{key:"pipe",label:"污水管网工程",pattern:/塑料管|检查井|管网|排水|化粪池|雨水口/u},{key:"road",label:"道路铺装工程",pattern:/道路|路床|水泥混凝土|级配碎石|路缘石|青砖|散水|过路涵/u},{key:"landscape",label:"景观与绿化工程",pattern:/景观|绿化|栽植|种植|苗木|喷播|小菜园|沟塘|清淤/u},{key:"lighting",label:"亮化与收尾工程",pattern:/路灯|亮化|配电|电缆|防雷/u}],groupOfEntry:E,tradeMapping:[{trade:"管道工",pattern:/塑料管|管道|检查井|雨水口|化粪池|闭水|涵管|排水/u},{trade:"混凝土工",pattern:/混凝土|水泥砂浆|垫层|涵头|压顶/u},{trade:"瓦工",pattern:/砌筑|砌体|砖|路缘石|铺装|侧石|平石|块料|踏步|台阶/u},{trade:"绿化工",pattern:/绿化|栽植|种植|苗木|草籽|喷播|养护|灌木|乔木|色带|草坪/u},{trade:"电工",pattern:/路灯|配电|电缆|强电|防雷|接地|灯具|亮化/u},{trade:"普工",pattern:/土方|清杂|拆除|平整|回填|清淤|开挖/u}],laborUnitRange:{管道铺设:{unit:"m",min:.15,max:.3},土方工程:{unit:"m3",min:.08,max:.15},混凝土工程:{unit:"m3",min:.8,max:1.5},道路铺装:{unit:"m2",min:.3,max:.6},砌筑工程:{unit:"m3",min:1.2,max:2},绿化工程:{unit:"m2",min:.08,max:.15},安装工程:{unit:"项",min:0,max:0}},equipmentMapping:[{name:"挖掘机",spec:"0.6~1.0m\xb3",pattern:/人机配合|开挖|挖土|沟槽/u,unit:"m3",basis:"人机配合开挖(清单特征)"},{name:"自卸汽车",spec:"8t",pattern:/余方弃置|弃方|外运|回填/u,unit:"m3",basis:"土方运输与回填(清单条目)"},{name:"压路机",spec:"8~12t",pattern:/碾压|压实度/u,unit:"m2",basis:"路床碾压与压实度要求(清单特征)"},{name:"蛙式打夯机",spec:"",pattern:/回填|夯实/u,unit:"m3",basis:"沟槽回填夯实(清单条目)"},{name:"混凝土搅拌运输车",spec:"",pattern:/商品混凝土|C\d{2}混凝土/u,unit:"m3",basis:"商品混凝土运输(清单特征)"},{name:"插入式振捣器",spec:"",pattern:/混凝土浇筑|振捣/u,unit:"m3",basis:"混凝土浇筑(清单条目)"},{name:"洒水车",spec:"",pattern:/养护|绿化|喷播|栽植/u,unit:"m2",basis:"绿化养护与洒水(清单条目)"},{name:"高空作业车",spec:"",pattern:/路灯|灯具安装/u,unit:"套",basis:"路灯安装(清单条目)"}],machinePowerTable:[{name:"挖掘机",kw:90},{name:"自卸汽车",kw:120},{name:"压路机",kw:75},{name:"蛙式打夯机",kw:3},{name:"混凝土搅拌运输车",kw:110},{name:"插入式振捣器",kw:1.5},{name:"洒水车",kw:90},{name:"高空作业车",kw:60}],laborCostRatio:{min:.15,max:.25},dailyWage:{min:250,max:350},inspectionBatchRules:[{scope:"污水管网管道",namePattern:/塑料管|管道/u,unit:"m",divisor:200,descTemplate:"管道闭水试验分段检验,按每 200m 一段划分约 {count} 段(总长 {total}m)"},{scope:"道路工程",namePattern:/水泥混凝土|级配碎石|路床/u,unit:"m2",divisor:200,descTemplate:"路床压实度按每层每 200m\xb2 不少于 1 点检验,约 {count} 点(总面积 {total}m\xb2)"},{scope:"检查井",namePattern:/检查井/u,unit:"",divisor:1,descTemplate:"检查井逐座验收,共 {total} 座"}],difficultyTemplates:[{name:a=>`${a.villages.length} 个自然村分散施工组织协调`,measure:"按自然村分组划分施工段,多村平行施工 + 村内流水作业,配置专职协调员",basis:"清单按自然村分组",test:a=>a.villages.length>=2},{name:"雨季管网沟槽施工",measure:"雨季排水与边坡防护,分段开挖、快速回填(联动季节施工措施板块)",basis:"清单含沟槽开挖与管道铺设条目",test:a=>a.entries.some(a=>/挖沟槽|沟槽开挖|塑料管铺设/u.test(`${a.name} ${a.description}`))},{name:"村庄内道路施工交通疏导",measure:"分段封闭施工,设置临时道路保障居民出行(补疑条款:居民出行临时道路)",basis:"清单含道路工程条目且村内施工",test:a=>a.villages.length>0&&a.entries.some(a=>/道路|路床|路面/u.test(a.name))},{name:"既有杆管线保护",measure:"开挖前探测交底,杆线保护措施费含在清单单价内",basis:"清单特征原文含杆线保护条款",test:a=>a.entries.some(a=>/杆线|管线保护|既有管线/u.test(a.description))}],deploymentFlowFallback:"分区段流水作业",multiVillageFlow:a=>`多村平行施工 + 村内流水作业(${a} 个自然村分组)`,sequenceFallback:"清杂拆除 → 管网道路 → 景观绿化 → 亮化收尾",climateZone:"east",powerFallbackText:"临时用电以村庄既有电源分散接入为主,各施工组单独设置配电箱与计量表(柴油机械不计入用电负荷,电动机具零星分散)",waterNoteText:"施工用水以洒水车供水为主,总用水量按管网分段配置"},G={id:"building",projectTypes:["房建","装饰装修"],milestoneGroups:[{key:"prep",label:"施工准备与三通一平",pattern:/清杂|拆除|场地平整|临建|临时|三通一平/u},{key:"foundation",label:"基础工程",pattern:/桩基|基础|基坑|地下室|降水|支护|土方|挖方|回填/u},{key:"structure",label:"主体结构工程",pattern:/钢筋|模板|砌体|主体|框架|剪力墙|现浇|混凝土/u},{key:"finish",label:"装饰装修工程",pattern:/装饰|抹灰|防水|保温|门窗|屋面|涂料|吊顶|幕墙/u},{key:"mep",label:"安装与收尾工程",pattern:/电气|给排水|暖通|消防|电梯|智能化|收尾|竣工|调试/u}],groupOfEntry:function(a){let b=`${a.name} ${a.description}`;return/土方|挖方|回填|弃置|清淤/u.test(b)&&"m3"===a.unit?"土方工程":/钢筋|植筋/u.test(b)?"钢筋工程":/模板|支模/u.test(b)?"模板工程":/混凝土|垫层|现浇/u.test(b)?"混凝土工程":/砌筑|砌体|砖/u.test(b)?"砌筑工程":/防水|卷材|涂膜/u.test(b)?"防水工程":/保温|挤塑|聚苯/u.test(b)?"保温工程":/装饰|抹灰|涂料|吊顶|幕墙|墙砖|地砖|油漆|门窗/u.test(b)?"装饰工程":/电气|给排水|配电|照明|灯具|插座|管线|穿线|桥架|暖通|消防|电梯/u.test(b)?"安装电气":"安装工程"},tradeMapping:[{trade:"钢筋工",pattern:/钢筋|植筋/u},{trade:"模板工",pattern:/模板|支模/u},{trade:"防水工",pattern:/防水|卷材|涂膜/u},{trade:"架子工",pattern:/脚手架|外架/u},{trade:"抹灰工",pattern:/抹灰|粉刷|抹面/u},{trade:"水电工",pattern:/电气|给排水|配电|照明|灯具|插座|管线|穿线|桥架/u},{trade:"保温工",pattern:/保温|挤塑|聚苯/u},{trade:"混凝土工",pattern:/混凝土|水泥砂浆|垫层/u},{trade:"瓦工",pattern:/砌筑|砌体|砖|块料|铺装|墙砖|地砖/u},{trade:"普工",pattern:/土方|清杂|拆除|平整|回填|清淤|开挖/u}],laborUnitRange:{土方工程:{unit:"m3",min:.08,max:.15},钢筋工程:{unit:"t",min:.8,max:1.5},模板工程:{unit:"m2",min:.3,max:.6},混凝土工程:{unit:"m3",min:.8,max:1.5},砌筑工程:{unit:"m3",min:1.2,max:2},防水工程:{unit:"m2",min:.06,max:.12},保温工程:{unit:"m2",min:.15,max:.3},装饰工程:{unit:"m2",min:.2,max:.4},安装电气:{unit:"m",min:.08,max:.15},安装工程:{unit:"项",min:0,max:0}},equipmentMapping:[{name:"挖掘机",spec:"0.6~1.0m\xb3",pattern:/开挖|挖土|基坑|土方/u,unit:"m3",basis:"土方开挖(清单特征)"},{name:"自卸汽车",spec:"8t",pattern:/余方弃置|弃方|外运|回填/u,unit:"m3",basis:"土方运输与回填(清单条目)"},{name:"插入式振捣器",spec:"",pattern:/混凝土浇筑|振捣/u,unit:"m3",basis:"混凝土浇筑(清单条目)"},{name:"蛙式打夯机",spec:"",pattern:/回填|夯实/u,unit:"m3",basis:"回填夯实(清单条目)"},{name:"塔式起重机",spec:"QTZ63",pattern:/塔吊|塔式起重机/u,unit:"项",basis:"主体结构垂直运输(清单特征)"},{name:"施工升降机",spec:"SC200/200",pattern:/施工电梯|施工升降机/u,unit:"项",basis:"人员与材料垂直运输(清单特征)"},{name:"钢筋加工机械",spec:"",pattern:/钢筋/u,unit:"t",basis:"钢筋加工(清单条目)"},{name:"电焊机",spec:"",pattern:/焊接|钢结构|预埋/u,unit:"t",basis:"钢结构焊接与预埋(清单条目)"},{name:"混凝土输送泵",spec:"",pattern:/泵送|混凝土泵/u,unit:"m3",basis:"混凝土泵送(清单特征)"}],machinePowerTable:[{name:"挖掘机",kw:90},{name:"自卸汽车",kw:120},{name:"插入式振捣器",kw:1.5},{name:"蛙式打夯机",kw:3},{name:"塔式起重机",kw:45},{name:"施工升降机",kw:33},{name:"钢筋加工机械",kw:15},{name:"电焊机",kw:15},{name:"混凝土输送泵",kw:90},{name:"物料提升机",kw:11}],laborCostRatio:{min:.18,max:.3},dailyWage:{min:250,max:350},inspectionBatchRules:[{scope:"钢筋工程",namePattern:/钢筋/u,unit:"t",divisor:60,descTemplate:"钢筋按进场检验批划分,每 60t 一批,约 {count} 批(总量 {total}t)"},{scope:"混凝土工程",namePattern:/混凝土/u,unit:"m3",divisor:100,descTemplate:"混凝土按浇筑批次留置标准养护试件,每 100m\xb3 一批,约 {count} 批(总量 {total}m\xb3)"},{scope:"砌体工程",namePattern:/砌体|砌筑/u,unit:"m3",divisor:250,descTemplate:"砌体工程按砌筑量划分检验批,每 250m\xb3 一批,约 {count} 批(总量 {total}m\xb3)"},{scope:"防水工程",namePattern:/防水/u,unit:"m2",divisor:0,descTemplate:"防水工程按施工段划分检验批并做蓄水(淋水)试验(总量 {total}m\xb2)"}],difficultyTemplates:[{name:"深基坑施工",measure:"分层开挖、及时支护与信息化监测,编制专项施工方案并按危大工程规定组织专家论证",basis:"清单特征含基坑开挖深度",test:a=>a.entries.some(a=>{let b=/(?:挖深|开挖深度|基坑深度|坑深)[^。;;]{0,12}(\d+(?:\.\d+)?)\s*m/u.exec(a.description);return!!b&&Number.parseFloat(b[1]||"0")>=3})},{name:"高支模施工",measure:"编制专项施工方案并组织专家论证,支架验收合格后方可浇筑",basis:"清单特征含支模高度",test:a=>a.entries.some(a=>/支模高度|高支模|模板支撑[^。;;]{0,12}\d+(?:\.\d+)?\s*m/u.test(`${a.name} ${a.description}`))},{name:"大体积混凝土施工",measure:"分层浇筑、测温养护,掺加缓凝剂与矿物掺合料控制水化热",basis:"清单特征含大体积混凝土/筏板基础",test:a=>a.entries.some(a=>/大体积|基础底板|筏板/u.test(`${a.name} ${a.description}`))},{name:"垂直运输组织",measure:"塔吊与施工电梯合理布位,编制群塔作业防碰撞方案",basis:"清单特征含塔吊/施工电梯",test:a=>a.entries.some(a=>/塔吊|塔式起重机|施工电梯|施工升降机/u.test(`${a.name} ${a.description}`))},{name:"紧邻既有建筑保护",measure:"开工前房屋现状鉴定,设置沉降观测点,控制开挖对周边扰动",basis:"清单特征含紧邻既有建筑",test:a=>a.entries.some(a=>/紧邻|既有建筑|相邻建筑|周边建筑/u.test(a.description))}],deploymentFlowFallback:"分区段流水作业",sequenceFallback:"施工准备 → 基础工程 → 主体结构 → 装饰装修 → 安装收尾",climateZone:"central",powerFallbackText:"临时用电由现场总配电箱接入,采用 TN-S 三相五线制,各分配电箱单独计量(柴油机械不计入用电负荷)",waterNoteText:"施工用水以市政供水为主,总用水量按施工段分区配置"},H={id:"general",projectTypes:["其他"],milestoneGroups:[{key:"prep",label:"施工准备",pattern:/清杂|拆除|场地平整|临建|临时/u},{key:"main",label:"主体工程",pattern:/主体|结构|混凝土|钢筋|模板|砌体|土方|基础|安装/u},{key:"finish",label:"装饰与附属工程",pattern:/装饰|抹灰|防水|保温|门窗|屋面|绿化|景观/u},{key:"install",label:"安装工程",pattern:/电气|给排水|暖通|消防|电梯|灯具|管线|设备/u},{key:"close",label:"收尾与验收",pattern:/收尾|竣工|验收|调试|移交|清理/u}],groupOfEntry:E,tradeMapping:F.tradeMapping,laborUnitRange:F.laborUnitRange,equipmentMapping:[{name:"挖掘机",spec:"0.6~1.0m\xb3",pattern:/开挖|挖土|沟槽|土方/u,unit:"m3",basis:"土方开挖(清单特征)"},{name:"自卸汽车",spec:"8t",pattern:/余方弃置|弃方|外运|回填/u,unit:"m3",basis:"土方运输与回填(清单条目)"},{name:"插入式振捣器",spec:"",pattern:/混凝土浇筑|振捣/u,unit:"m3",basis:"混凝土浇筑(清单条目)"},{name:"蛙式打夯机",spec:"",pattern:/回填|夯实/u,unit:"m3",basis:"回填夯实(清单条目)"},{name:"混凝土搅拌运输车",spec:"",pattern:/商品混凝土|C\d{2}混凝土/u,unit:"m3",basis:"商品混凝土运输(清单特征)"}],machinePowerTable:[{name:"挖掘机",kw:90},{name:"自卸汽车",kw:120},{name:"插入式振捣器",kw:1.5},{name:"蛙式打夯机",kw:3},{name:"混凝土搅拌运输车",kw:110}],laborCostRatio:{min:.15,max:.25},dailyWage:{min:250,max:350},inspectionBatchRules:[{scope:"混凝土工程",namePattern:/混凝土/u,unit:"m3",divisor:100,descTemplate:"混凝土按浇筑批次留置标准养护试件,每 100m\xb3 一批,约 {count} 批(总量 {total}m\xb3)"},{scope:"检查井",namePattern:/检查井/u,unit:"",divisor:1,descTemplate:"检查井逐座验收,共 {total} 座"}],difficultyTemplates:[],deploymentFlowFallback:"分区段流水作业",sequenceFallback:"施工准备 → 主体施工 → 装饰安装 → 收尾验收",climateZone:void 0,powerFallbackText:"临时用电按现场配电箱分区接入,各用电点单独计量(柴油机械不计入用电负荷,电动机具零星分散)",waterNoteText:"施工用水按现场水源分区配置,总用水量按施工段核定"},I={id:"bridge-tunnel",projectTypes:["桥梁与隧道"],milestoneGroups:[{key:"prep",label:"施工准备与临时设施",pattern:/清杂|拆除|场地平整|临建|临时|三通一平|测量放样/u},{key:"foundation",label:"基础工程",pattern:/桩基|钻孔|灌注桩|围堰|承台|基础|基坑|降水|支护/u},{key:"substructure",label:"下部结构工程",pattern:/桥墩|桥台|墩柱|盖梁|系梁|支座垫石|下部/u},{key:"superstructure",label:"上部结构工程",pattern:/箱梁|梁板|主梁|现浇梁|预制|预应力|张拉|架设|合龙|上部/u},{key:"tunnel",label:"隧道洞身工程",pattern:/隧道|洞身|仰拱|衬砌|锚杆|喷混|掌子面|二衬/u},{key:"finish",label:"桥面系附属与收尾",pattern:/桥面|铺装|护栏|伸缩缝|防撞|排水|照明|收尾|竣工|交安|绿化/u}],groupOfEntry:function(a){let b=`${a.name} ${a.description}`;return/灌注桩|桩基|钻孔|围堰|承台/u.test(b)?"桩基与基础工程":/桥墩|桥台|墩柱|盖梁|系梁|下部/u.test(b)?"下部结构工程":/箱梁|梁板|主梁|现浇梁|预制|预应力|张拉|架设|上部/u.test(b)&&"m3"===a.unit?"上部结构工程":/钢绞线/u.test(b)&&"t"===a.unit?"钢绞线工程":/隧道|洞身|仰拱|衬砌|锚杆|喷混|掌子面/u.test(b)?"隧道工程":/桥面|铺装|护栏|伸缩缝|防撞/u.test(b)?"桥面系工程":/土方|挖方|填方|回填|清淤/u.test(b)&&"m3"===a.unit?"土方工程":/钢筋|植筋/u.test(b)?"钢筋工程":/模板|支模/u.test(b)?"模板工程":/混凝土|现浇/u.test(b)?"混凝土工程":"安装工程"},tradeMapping:[{trade:"桩基工",pattern:/灌注桩|桩基|钻孔/u},{trade:"钢筋工",pattern:/钢筋|植筋/u},{trade:"模板工",pattern:/模板|支模/u},{trade:"混凝土工",pattern:/混凝土|现浇|垫层/u},{trade:"张拉工",pattern:/预应力|张拉|钢绞线/u},{trade:"焊工",pattern:/焊接|钢结构|预埋件/u},{trade:"起重工",pattern:/吊装|架设|梁体|龙门吊|架桥机/u},{trade:"隧道工",pattern:/隧道|洞身|衬砌|锚杆|喷混|掌子面/u},{trade:"普工",pattern:/土方|清杂|拆除|平整|回填|清淤|开挖/u}],laborUnitRange:{桩基与基础工程:{unit:"m3",min:4,max:7},下部结构工程:{unit:"m3",min:1.5,max:3},上部结构工程:{unit:"m3",min:4,max:8},钢绞线工程:{unit:"t",min:1.5,max:3},隧道工程:{unit:"m3",min:1.5,max:3},桥面系工程:{unit:"m2",min:.4,max:.8},土方工程:{unit:"m3",min:.08,max:.15},钢筋工程:{unit:"t",min:.8,max:1.5},模板工程:{unit:"m2",min:.3,max:.6},混凝土工程:{unit:"m3",min:.8,max:1.5},安装工程:{unit:"项",min:0,max:0}},equipmentMapping:[{name:"旋挖钻机",spec:"",pattern:/钻孔|灌注桩|桩基/u,unit:"m3",basis:"桩基成孔(清单条目)"},{name:"泥浆泵",spec:"",pattern:/灌注桩|钻孔/u,unit:"m3",basis:"钻孔泥浆循环(清单条目)"},{name:"履带式起重机",spec:"",pattern:/吊装|梁体|预制/u,unit:"项",basis:"构件吊装(清单特征)"},{name:"架桥机",spec:"",pattern:/架设|架梁|箱梁/u,unit:"项",basis:"梁体架设(清单条目)"},{name:"张拉设备",spec:"",pattern:/预应力|张拉|钢绞线/u,unit:"束",basis:"预应力张拉(清单条目)"},{name:"挖掘机",spec:"0.6~1.0m\xb3",pattern:/开挖|挖土|基坑|土方/u,unit:"m3",basis:"土方开挖(清单特征)"},{name:"自卸汽车",spec:"8t",pattern:/余方弃置|弃方|外运|回填/u,unit:"m3",basis:"土方运输与回填(清单条目)"},{name:"混凝土输送泵",spec:"",pattern:/泵送|混凝土泵/u,unit:"m3",basis:"混凝土泵送(清单特征)"},{name:"插入式振捣器",spec:"",pattern:/混凝土浇筑|振捣/u,unit:"m3",basis:"混凝土浇筑(清单条目)"}],machinePowerTable:[{name:"旋挖钻机",kw:130},{name:"泥浆泵",kw:22},{name:"履带式起重机",kw:110},{name:"架桥机",kw:90},{name:"张拉设备",kw:7.5},{name:"挖掘机",kw:90},{name:"自卸汽车",kw:120},{name:"混凝土输送泵",kw:90},{name:"插入式振捣器",kw:1.5}],laborCostRatio:{min:.12,max:.22},dailyWage:{min:250,max:350},inspectionBatchRules:[{scope:"桩基工程",namePattern:/灌注桩|桩基/u,unit:"",divisor:1,descTemplate:"钻孔灌注桩逐桩检验(桩位/孔径/沉渣厚度/混凝土充盈系数),共 {total} 根"},{scope:"钢筋工程",namePattern:/钢筋/u,unit:"t",divisor:60,descTemplate:"钢筋按进场检验批划分,每 60t 一批,约 {count} 批(总量 {total}t)"},{scope:"混凝土工程",namePattern:/混凝土/u,unit:"m3",divisor:100,descTemplate:"混凝土按浇筑批次留置标准养护试件,每 100m\xb3 一批,约 {count} 批(总量 {total}m\xb3)"},{scope:"预应力张拉",namePattern:/预应力|钢绞线/u,unit:"束",divisor:0,descTemplate:"预应力孔道逐束张拉并记录伸长值(总量 {total} 束)"}],difficultyTemplates:[{name:"深水基础施工",measure:"围堰施工与排水方案专项设计,汛期前完成基础施工,设置水位监测",basis:"清单特征含围堰/深水基础",test:a=>a.entries.some(a=>/围堰|深水|水中墩|钢板桩/u.test(`${a.name} ${a.description}`))},{name:"大体积混凝土施工",measure:"分层浇筑、测温养护,掺加缓凝剂与矿物掺合料控制水化热",basis:"清单特征含承台/大体积混凝土",test:a=>a.entries.some(a=>/承台|大体积|基础底板/u.test(`${a.name} ${a.description}`))},{name:"预应力张拉控制",measure:"张拉设备标定,双控(应力+伸长值)张拉,孔道压浆密实",basis:"清单特征含预应力/钢绞线",test:a=>a.entries.some(a=>/预应力|张拉|钢绞线/u.test(`${a.name} ${a.description}`))},{name:"隧道开挖与支护",measure:"超前地质预报,短进尺、弱爆破、强支护,监控量测信息化施工",basis:"清单特征含隧道洞身开挖",test:a=>a.entries.some(a=>/隧道|洞身|掌子面/u.test(`${a.name} ${a.description}`))},{name:"架梁起重吊装",measure:"编制吊装专项方案,吊装前试吊与支腿地基验算,专职指挥",basis:"清单特征含梁体架设",test:a=>a.entries.some(a=>/架设|架梁|架桥机|吊装/u.test(`${a.name} ${a.description}`))},{name:"高空作业安全控制",measure:"高墩作业平台封闭防护,设置安全网与临边防护,恶劣天气停止作业",basis:"清单特征含高墩/墩柱",test:a=>a.entries.some(a=>/高墩|墩柱|盖梁/u.test(`${a.name} ${a.description}`))}],deploymentFlowFallback:"分区段流水作业",sequenceFallback:"施工准备 → 基础工程 → 下部结构 → 上部结构 → 隧道洞身 → 桥面系与收尾",climateZone:void 0,powerFallbackText:"临时用电由现场总配电箱接入,采用 TN-S 三相五线制,各用电点单独计量(柴油机械不计入用电负荷)",waterNoteText:"施工用水以现场水源为主,总用水量按施工段核定"},J={id:"highway",projectTypes:["公路"],milestoneGroups:[{key:"prep",label:"施工准备",pattern:/清杂|拆除|场地平整|临建|临时|三通一平|测量放样/u},{key:"subgrade",label:"路基工程",pattern:/路基|土方|挖方|填方|压实|软基|清表|路床/u},{key:"pavement",label:"路面工程",pattern:/路面|水稳|基层|沥青|面层|摊铺|碾压|级配/u},{key:"bridge",label:"桥涵工程",pattern:/桥梁|桥台|桥墩|桩基|梁板|涵洞|通道|台帽/u},{key:"safety",label:"交安与附属收尾",pattern:/护栏|标线|标志|交安|绿化|排水|边沟|收尾|竣工/u}],groupOfEntry:function(a){let b=`${a.name} ${a.description}`;return/土方|挖方|填方|清表|软基|路基/u.test(b)&&"m3"===a.unit?"土方工程":/水稳|基层|级配|路床/u.test(b)&&"m2"===a.unit?"路面基层":/沥青|面层|摊铺/u.test(b)&&"m2"===a.unit?"沥青面层":/混凝土|现浇/u.test(b)&&"m2"===a.unit?"混凝土路面":/混凝土|现浇/u.test(b)?"混凝土工程":/砌筑|砌体|边沟|护坡|挡墙/u.test(b)?"砌筑工程":/钢筋|植筋/u.test(b)?"钢筋工程":/护栏|标线|标志|交安|波形梁/u.test(b)?"交安设施":"安装工程"},tradeMapping:[{trade:"机械操作工",pattern:/土方|挖方|填方|清表|路基/u},{trade:"压路机司机",pattern:/碾压|压实|路基|路面/u},{trade:"摊铺机司机",pattern:/摊铺|沥青|水稳|基层/u},{trade:"混凝土工",pattern:/混凝土|现浇|垫层/u},{trade:"钢筋工",pattern:/钢筋|植筋/u},{trade:"瓦工",pattern:/砌筑|砌体|边沟|护坡|挡墙/u},{trade:"交安工",pattern:/护栏|标线|标志|交安|波形梁/u},{trade:"普工",pattern:/清杂|拆除|平整|回填|清淤/u}],laborUnitRange:{土方工程:{unit:"m3",min:.08,max:.15},路面基层:{unit:"m2",min:.2,max:.4},沥青面层:{unit:"m2",min:.08,max:.15},混凝土路面:{unit:"m2",min:.15,max:.3},混凝土工程:{unit:"m3",min:.8,max:1.5},砌筑工程:{unit:"m3",min:1.2,max:2},钢筋工程:{unit:"t",min:.8,max:1.5},交安设施:{unit:"m",min:.3,max:.6},安装工程:{unit:"项",min:0,max:0}},equipmentMapping:[{name:"推土机",spec:"",pattern:/清表|土方|填方|平整/u,unit:"m3",basis:"土方摊铺平整(清单条目)"},{name:"平地机",spec:"",pattern:/路基|路床|平整/u,unit:"m2",basis:"路床整平(清单条目)"},{name:"装载机",spec:"",pattern:/土方|挖方|填方|清运/u,unit:"m3",basis:"土方装载(清单条目)"},{name:"压路机",spec:"8~12t",pattern:/碾压|压实/u,unit:"m2",basis:"路基路面碾压(清单特征)"},{name:"摊铺机",spec:"",pattern:/摊铺|沥青|水稳/u,unit:"m2",basis:"路面摊铺(清单条目)"},{name:"沥青洒布车",spec:"",pattern:/沥青|透层|粘层/u,unit:"m2",basis:"沥青洒布(清单条目)"},{name:"挖掘机",spec:"0.6~1.0m\xb3",pattern:/开挖|挖土|沟槽|土方/u,unit:"m3",basis:"土方开挖(清单特征)"},{name:"自卸汽车",spec:"8t",pattern:/余方弃置|弃方|外运|回填/u,unit:"m3",basis:"土方运输与回填(清单条目)"},{name:"洒水车",spec:"",pattern:/养护|洒水/u,unit:"m2",basis:"养护洒水(清单条目)"}],machinePowerTable:[{name:"推土机",kw:75},{name:"平地机",kw:120},{name:"装载机",kw:160},{name:"压路机",kw:75},{name:"摊铺机",kw:110},{name:"沥青洒布车",kw:60},{name:"挖掘机",kw:90},{name:"自卸汽车",kw:120},{name:"洒水车",kw:90}],laborCostRatio:{min:.12,max:.2},dailyWage:{min:250,max:350},inspectionBatchRules:[{scope:"路基压实",namePattern:/路床|路基|填方/u,unit:"m2",divisor:1e3,descTemplate:"路基压实度按每 1000m\xb2 不少于 1 点检测,约 {count} 点(总面积 {total}m\xb2)"},{scope:"水稳基层",namePattern:/水稳|基层/u,unit:"m2",divisor:1e3,descTemplate:"水稳基层按每 1000m\xb2 一个检验批,约 {count} 批(总面积 {total}m\xb2)"},{scope:"沥青面层",namePattern:/沥青|面层/u,unit:"m2",divisor:1e3,descTemplate:"沥青面层按每 1000m\xb2 一个检验批,约 {count} 批(总面积 {total}m\xb2)"}],difficultyTemplates:[{name:"软土地基处理",measure:"软基处理方案专项设计(换填/搅拌桩/预压),沉降观测控制填筑速率",basis:"清单特征含软基处理",test:a=>a.entries.some(a=>/软基|软土|换填|搅拌桩/u.test(`${a.name} ${a.description}`))},{name:"交通疏导与半幅施工",measure:"分段半幅封闭施工,设置临时交通标志与导流设施,保障社会车辆通行",basis:"清单特征含保通/半幅施工",test:a=>a.entries.some(a=>/保通|半幅|交通疏导|既有道路/u.test(`${a.name} ${a.description}`))},{name:"路面平整度控制",measure:"摊铺机连续匀速作业,接缝处理与碾压工艺控制,平整度逐层检测",basis:"清单特征含沥青面层",test:a=>a.entries.some(a=>/沥青|面层/u.test(`${a.name} ${a.description}`))},{name:"路基沉降控制",measure:"分层填筑碾压,设置沉降观测点,填筑速率与观测数据联动",basis:"清单特征含高填方路基",test:a=>a.entries.some(a=>/高填方|填方/u.test(`${a.name} ${a.description}`))}],deploymentFlowFallback:"分段平行流水作业",sequenceFallback:"施工准备 → 路基工程 → 路面工程 → 桥涵工程 → 交安与附属收尾",climateZone:void 0,powerFallbackText:"临时用电由现场总配电箱接入,各用电点单独计量(柴油机械不计入用电负荷)",waterNoteText:"施工用水以现场水源为主,总用水量按施工段核定"},K={id:"water-conservancy",projectTypes:["水利水电"],milestoneGroups:[{key:"prep",label:"施工准备与围堰导流",pattern:/清杂|拆除|围堰|导流|截流|临建|临时/u},{key:"earthwork",label:"土方与基础工程",pattern:/土方|挖方|填方|基础|基坑|清淤|疏浚|开挖/u},{key:"structure",label:"闸站结构工程",pattern:/混凝土|钢筋|模板|闸室|闸墩|泵站|翼墙|底板|消力池|挡墙|砌筑/u},{key:"metal",label:"金属结构与机电安装",pattern:/金属结构|闸门|启闭机|埋件|机电|水泵|电气/u},{key:"finish",label:"护坡堤防与收尾",pattern:/护坡|护岸|堤防|绿化|水土保持|收尾|竣工|验收/u}],groupOfEntry:function(a){let b=`${a.name} ${a.description}`;return/围堰|导流|截流|清淤|疏浚/u.test(b)||/土方|挖方|填方|回填|开挖/u.test(b)&&"m3"===a.unit?"土方工程":/闸门|启闭机|埋件|金属结构/u.test(b)&&"t"===a.unit?"金属结构安装":/护坡|护岸|堤防|格宾|浆砌/u.test(b)&&"m2"===a.unit?"护坡工程":/钢筋|植筋/u.test(b)?"钢筋工程":/模板|支模/u.test(b)?"模板工程":/混凝土|现浇|底板|闸室|闸墩|泵站|翼墙|消力池/u.test(b)&&"m3"===a.unit?"混凝土工程":/砌筑|砌体|砖|挡墙/u.test(b)?"砌筑工程":(/机电|水泵|电气/u.test(b),"安装工程")},tradeMapping:[{trade:"钢筋工",pattern:/钢筋|植筋/u},{trade:"模板工",pattern:/模板|支模/u},{trade:"混凝土工",pattern:/混凝土|现浇|底板|闸室|闸墩|泵站|翼墙|消力池/u},{trade:"瓦工",pattern:/砌筑|砌体|砖|挡墙|护坡/u},{trade:"金属结构安装工",pattern:/金属结构|闸门|启闭机|埋件/u},{trade:"机电安装工",pattern:/机电|水泵|电气|配电/u},{trade:"潜水工",pattern:/水下|潜水/u},{trade:"普工",pattern:/土方|清杂|拆除|平整|回填|清淤|开挖/u}],laborUnitRange:{土方工程:{unit:"m3",min:.08,max:.15},混凝土工程:{unit:"m3",min:1,max:2},砌筑工程:{unit:"m3",min:1.2,max:2},钢筋工程:{unit:"t",min:.8,max:1.5},模板工程:{unit:"m2",min:.3,max:.6},金属结构安装:{unit:"t",min:15,max:25},护坡工程:{unit:"m2",min:.2,max:.4},安装工程:{unit:"项",min:0,max:0}},equipmentMapping:[{name:"挖掘机",spec:"0.6~1.0m\xb3",pattern:/开挖|挖土|基坑|土方|清淤/u,unit:"m3",basis:"土方开挖(清单特征)"},{name:"自卸汽车",spec:"8t",pattern:/余方弃置|弃方|外运|回填/u,unit:"m3",basis:"土方运输与回填(清单条目)"},{name:"装载机",spec:"",pattern:/土方|挖方|填方|清运/u,unit:"m3",basis:"土方装载(清单条目)"},{name:"混凝土输送泵",spec:"",pattern:/泵送|混凝土泵|混凝土/u,unit:"m3",basis:"混凝土泵送(清单特征)"},{name:"履带式起重机",spec:"",pattern:/吊装|闸门|启闭机/u,unit:"",basis:"闸门与启闭机吊装(清单条目,不限计量单位)"},{name:"泥浆泵",spec:"",pattern:/围堰|降水|导流|排水/u,unit:"",basis:"基坑降水与排水(清单条目,不限计量单位)"},{name:"插入式振捣器",spec:"",pattern:/混凝土|振捣/u,unit:"m3",basis:"混凝土浇筑(清单条目)"},{name:"蛙式打夯机",spec:"",pattern:/回填|夯实/u,unit:"m3",basis:"回填夯实(清单条目)"}],machinePowerTable:[{name:"挖掘机",kw:90},{name:"自卸汽车",kw:120},{name:"装载机",kw:160},{name:"混凝土输送泵",kw:90},{name:"履带式起重机",kw:110},{name:"泥浆泵",kw:22},{name:"插入式振捣器",kw:1.5},{name:"蛙式打夯机",kw:3}],laborCostRatio:{min:.15,max:.25},dailyWage:{min:250,max:350},inspectionBatchRules:[{scope:"混凝土工程",namePattern:/混凝土/u,unit:"m3",divisor:100,descTemplate:"混凝土按浇筑批次留置标准养护试件,每 100m\xb3 一批,约 {count} 批(总量 {total}m\xb3)"},{scope:"土方回填",namePattern:/回填|填方/u,unit:"m3",divisor:200,descTemplate:"土方回填按每 200m\xb3 一个检验批检测压实度,约 {count} 批(总量 {total}m\xb3)"},{scope:"金属结构",namePattern:/闸门|启闭机/u,unit:"",divisor:1,descTemplate:"金属结构逐件验收(出厂合格证+安装调试记录),共 {total} 件"}],difficultyTemplates:[{name:"围堰导流与度汛",measure:"围堰按度汛标准设计施工,汛期值守与应急预案,度汛演练",basis:"清单特征含围堰/导流",test:a=>a.entries.some(a=>/围堰|导流|度汛|截流/u.test(`${a.name} ${a.description}`))},{name:"深基坑降水与支护",measure:"降水方案专项设计,分层开挖及时支护,周边沉降监测",basis:"清单特征含基坑降水",test:a=>a.entries.some(a=>/降水|基坑|支护/u.test(`${a.name} ${a.description}`))},{name:"大体积混凝土施工",measure:"分层浇筑、测温养护,掺加缓凝剂与矿物掺合料控制水化热",basis:"清单特征含底板/大体积混凝土",test:a=>a.entries.some(a=>/底板|大体积|消力池/u.test(`${a.name} ${a.description}`))},{name:"闸门启闭机安装精度控制",measure:"埋件安装精度预控,闸门与启闭机联动调试,止水严密性试验",basis:"清单特征含闸门/启闭机",test:a=>a.entries.some(a=>/闸门|启闭机/u.test(`${a.name} ${a.description}`))},{name:"水下作业安全控制",measure:"潜水作业双人值守,水下作业专项方案与应急预案",basis:"清单特征含水下作业",test:a=>a.entries.some(a=>/水下|潜水/u.test(`${a.name} ${a.description}`))}],deploymentFlowFallback:"分区段流水作业",sequenceFallback:"施工准备与围堰导流 → 土方与基础 → 闸站结构 → 金属结构与机电安装 → 护坡堤防与收尾",climateZone:void 0,powerFallbackText:"临时用电由现场总配电箱接入,各用电点单独计量(柴油机械不计入用电负荷)",waterNoteText:"施工用水以现场水源为主,总用水量按施工段核定"},L={type:"object",required:["meta","data","outline"],properties:{meta:{type:"object",required:!0,properties:{version:{type:"string",required:!0,minLength:1},docType:{type:"string",required:!0,minLength:1},createdAt:{type:"string",required:!0,minLength:1},sourceMaterials:{type:"array",required:!0,items:{type:"string"}}}},data:{type:"object",required:!0,properties:{project:{type:"object",required:!0,properties:{name:{type:"string",required:!0,minLength:1},scope:{type:"string",required:!0},works:{type:"array",required:!0,items:{type:"string"}}}},contract:{type:"object",required:!0,properties:{totalDays:{type:"number",required:!0},qualityStandard:{type:"string",required:!0},pricingFile:{type:"string",required:!0}}},milestones:{type:"array",required:!0,minItems:1,items:{type:"object"}},resources:{type:"object",required:!0,properties:{labor:{type:"object",required:!0},equipment:{type:"array",required:!0}}},materialsPlan:{type:"array",required:!0},redLineFacts:{type:"array",required:!0},quantities:{type:"object",required:!0},standardBlocks:{type:"array",required:!0},keyDifficulties:{type:"array",required:!0,minItems:1}}},outline:{type:"object",required:!0,properties:{chapters:{type:"array",required:!0,minItems:1}}}}};function M(a){let b=a.boundFilePaths.filter(a=>/工程量清单/u.test(a)&&a.toLowerCase().endsWith(".xls")).filter(a=>{let b=a.split("/").pop()||a;return!/封面|编制说明/u.test(b)});if(0===b.length)return{warning:`绑定资料中未识别到工程量清单 .xls 文件(${a.boundFilePaths.length} 份资料)`};let c=g.join(f.homedir(),".customize-agent","projects",(0,d.computeProjectId)(g.resolve(a.projectRoot)),"kb.db");if(!e.existsSync(c))return{warning:`项目知识库索引不存在:${c}`};let h=[],i=[];for(let a of b)try{let b=function(a,b){let c=new((0,d.loadBetterSqlite3)())(a,{readonly:!0});try{return c.pragma("busy_timeout = 10000"),c.prepare("SELECT chunk_index, content, section_title FROM kb_chunks WHERE relative_path = ? ORDER BY chunk_index").all(b).map(a=>({chunkIndex:a.chunk_index,content:a.content,sectionTitle:a.section_title||""}))}finally{c.close()}}(c,a);if(0===b.length){h.push(`${a}(索引无切片)`);continue}let e=function(a){let b=a.sourceFile||"",c={totalChunks:a.chunks.length,markdownChunks:0,declarationChunks:0,skippedChunks:0,droppedIncompleteRows:0},d=[],e=[];for(let b of a.chunks){let a=b.sectionTitle,f=a.includes("表格路径声明");if(a.includes("附录")){c.skippedChunks++;continue}f?(e.push(b),c.declarationChunks++):"表格数据"===a||a.includes("表标题")||a.includes("第")||a.includes("工作表:")?(d.push(b),c.markdownChunks++):c.skippedChunks++}let f=new Map,g=a=>{let b=s.exec(a);if(!b)return;let c=b[1],d=f.get(c),e=u.exec(a)||v.exec(a),g=t.exec(a);d?(!d.villageGroup&&e&&(d.villageGroup=e[1].trim()),void 0===d.totalPages&&g&&(d.totalPages=Number(g[1]))):f.set(c,{villageGroup:e?e[1].trim():"",totalPages:g?Number(g[1]):void 0})};for(let a of d)g(a.sectionTitle),g(a.content.split("\n")[0]||"");let h=[],i="",j="",k="",l="plain",m=function(a){let b=[],c=!1;for(let d=0;d<a.length;d++){let e=a[d]??"";if(e.includes(".")){let e=d+1<a.length?a[d+1]??"":"",f=/^\d+$/u.test(e)&&e.length>=2;b.push(f?"unit-project":"subsection"),c=f}else/^\d+$/u.test(e)?b.push(c?"subsection":"section"):(b.push("section"),c=!1)}return b}(function(a){let b=[],c="",d=n;for(let e of a){let a=e.content.split("\n"),f=c;for(let e of(c="",a)){if(e.startsWith("|"))f.trim(),f=e;else{if(!f)continue;f+=e}if(!f.endsWith("|"))continue;let a=f.split("|").map(a=>a.trim());if(f="",o(a)){d=p(a)??d;continue}!a[d.seq]&&q(a[d.code]??"")&&a[d.name]&&"分部小计"!==a[d.name]&&b.push(a[d.code]??"")}f.trim()&&(c=f)}return b}(d)),z=-1,A=n,B="";for(let a of d){let d=x(a),e=d||B;d&&(B=d);let g=f.get(e),n=g?.villageGroup||e||"",s=a.content.split("\n"),u=i;i="";let v=function(a){if(t.exec(a))return 1;w.lastIndex=0;let b=w.exec(a);return w.lastIndex=0,b?Number(b[1]):void 0}(a.content);for(let d=0;d<s.length;d++){let e=s[d]||"";if(e.startsWith("|"))u.trim()&&c.droppedIncompleteRows++,u=e;else if(u)u+=e;else{let a=w.exec(e);a&&(v=Number(a[1])),w.lastIndex=0;continue}if(u.endsWith("|")){let c=u.split("|").map(a=>a.trim());u="",o(c)&&(A=p(c)??A);let d=c[A.seq]??"",e=c[A.code]??"",f=c[A.name]??"",g=v,i=function(a){let b=a.join(" "),c=/第(\d+)页\s*共\d+页/u.exec(b);return c?Number(c[1]):void 0}(c);if(i&&(v=i),/^\d+$/u.test(d)&&r.test(e)){let i=Number((c[A.quantity]??"").trim()),m={seq:Number(d),code:e,name:f,description:A.description>=0?c[A.description]??"":"",unit:c[A.unit]??"",quantity:Number.isFinite(i)?i:0,section:j,subsection:k,sectionKind:l,villageGroup:n,page:g,sourceFile:b,chunkIndex:a.chunkIndex,sourceKind:"markdown"};m.seq>0&&h.push(m)}else if(!d&&q(e)&&f&&"分部小计"!==f){let a=m[z+=1]??(e.includes(".")?"subsection":"section");"unit-project"===a?(j=f,k="",l="unit-project"):"section"===a?(j=f,k="",l="plain"):k=f}}}u.trim()&&(i=u)}i.trim()&&c.droppedIncompleteRows++;let C=[];for(let a of(B="",e)){let c=x(a),d=c||B;c&&(B=c);let e=f.get(d),g=e?.villageGroup||d||"";C.push(...function(a,b){let c,d,e=[],f=a.split("\n"),g=()=>{c&&"number"==typeof c.seq&&c.seq>0&&e.push({seq:c.seq,code:c.code||"",name:c.name||"",description:(c.description||"").trim(),unit:c.unit||"",quantity:"number"==typeof c.quantity?c.quantity:0,section:"",subsection:"",villageGroup:b.villageGroup,sourceFile:b.sourceFile,chunkIndex:b.chunkIndex,sourceKind:"declaration"}),c=void 0,d=void 0},h=a=>{if(!c||!d)return;let b=a.trim();if(b){if("seq"===d){let a=Number(b);Number.isFinite(a)&&a>0&&(c.seq=a)}else if("code"===d)c.code=(c.code||"")+b;else if("name"===d)c.name=(c.name||"")+b;else if("description"===d)c.description=(c.description||"")+(c.description?" ":"")+b;else if("unit"===d)c.unit=b;else if("quantity"===d){let a=Number(b);Number.isFinite(a)&&(c.quantity=a)}}};for(let a of f){if(/^R\d+C\d+$/u.test(a)){/^R\d+C1$/u.test(a)?(g(),c={},d="seq"):d=void 0;continue}if(/^序号:$/u.test(a)){d="seq";continue}if(/^项目编码:$/u.test(a)){d="code";continue}if(/^项目名称:$/u.test(a)){d="name";continue}if(/^项目特征描述:$/u.test(a)){d="description";continue}if(/^单位:$/u.test(a)){d="unit";continue}if(/^工程量:$/u.test(a)){d="quantity";continue}if(/^(?:人工费|机械费|暂估价|合价|金额.*)$/u.test(a)){d=void 0;continue}h(a)}return g(),e}(a.content,{villageGroup:g,sourceFile:b,chunkIndex:a.chunkIndex}))}let D=new Map;for(let a of h)D.set(`${a.villageGroup}|${a.seq}`,a);for(let a of C){let b=`${a.villageGroup}|${a.seq}`;D.has(b)||D.set(b,a)}let E=[...D.values()].sort((a,b)=>a.villageGroup.localeCompare(b.villageGroup,"zh-CN")||a.seq-b.seq);var F=E,G=h;let H=y(G);for(let a of F){let b;if("declaration"===a.sourceKind&&!a.section){for(let c of H.get(a.villageGroup)||[]){if(c.seq>a.seq)break;b=c}b&&(a.section=b.section,a.subsection=b.subsection,a.sectionKind=b.sectionKind)}}let I=[...f.values()].map(a=>a.villageGroup).find(Boolean);if(I&&E.every(a=>!a.section))for(let a of E)a.section=I,a.sectionKind="unit-project";let J=[];for(let[a,b]of y(E)){let c=b.map(a=>a.seq).sort((a,b)=>a-b),e=c[c.length-1]||0,g=[];for(let a=1;a<=e;a++)c.includes(a)||g.push(a);let h=function(a,b){for(let[c,d]of a)if(d.villageGroup===b)return{sheetId:c,...d}}(f,a),i=h?.totalPages,j=function(a,b,c){let d=new Set,e="";for(let f of a){let a=x(f),g=a||e;if(a&&(e=a),!c||g===c){if(!c&&!(f.content.split("\n")[0]||"").includes(b))continue;for(let a of(t.test(f.content)&&d.add(1),w.lastIndex=0,f.content.matchAll(w))){let b=Number(a[1]);d.add(b),b>1&&d.add(b-1)}w.lastIndex=0}}return[...d]}(d,a,h?.sheetId),k=i?Array.from({length:i},(a,b)=>b+1).filter(a=>!j.includes(a)):[],l=b.filter(a=>"declaration"===a.sourceKind).length,m=b.filter(a=>!a.code).length,n=b.filter(a=>!a.name).length,o=b.filter(a=>a.code&&!r.test(a.code)).length;J.push({villageGroup:a,sheetId:h?.sheetId||"",totalPagesDeclared:i,pagesCovered:j.sort((a,b)=>a-b),pagesMissing:k,entryCount:b.length,entrySeqMissing:g,entriesFromDeclaration:l,entriesWithoutCode:m,entriesWithoutName:n,entriesWithInvalidCode:o,complete:0===g.length&&b.length>0})}return J.sort((a,b)=>a.villageGroup.localeCompare(b.villageGroup,"zh-CN")),{entries:E,villages:J,totalEntries:E.length,sourceFile:b,complete:J.length>0&&J.every(a=>a.complete),diagnostics:c}}({chunks:b,sourceFile:a});e.totalEntries>0?i.push({filePath:a,boq:e}):h.push(`${a}(解析出 0 条目)`)}catch(b){h.push(`${a}(${b instanceof Error?b.message:String(b)})`)}if(0===i.length)return{warning:`清单解析失败:${h.join(";")}`};let j=1===i.length?i[0].boq:function(a){let b=a=>{let b=a.split("/").slice(-2)[0]||"",c=/^(\d+)/u.exec(b);return c?Number(c[1]):Number.MAX_SAFE_INTEGER},c=[...a].sort((a,c)=>b(a.filePath)-b(c.filePath)),d=[],e=[],f={totalChunks:0,markdownChunks:0,declarationChunks:0,skippedChunks:0,droppedIncompleteRows:0},g=new Set;for(let a of c){var h;let b=((h=a.filePath).split("/").pop()||h).replace(/\.xls$/iu,"").replace(/[\s\u00a0]+/gu,"")||"单位工程";if(g.has(b)){let a=2;for(;g.has(`${b}(${a})`);)a+=1;b=`${b}(${a})`}for(let c of(g.add(b),a.boq.entries))c.subsection=c.subsection||c.section,c.section=b,c.sectionKind="unit-project",c.villageGroup=b,d.push(c);for(let[c,d]of a.boq.villages.entries())e.push({...d,villageGroup:1===a.boq.villages.length?b:`${b}\xb7${d.villageGroup||`工作表${c+1}`}`});f.totalChunks+=a.boq.diagnostics.totalChunks,f.markdownChunks+=a.boq.diagnostics.markdownChunks,f.declarationChunks+=a.boq.diagnostics.declarationChunks,f.skippedChunks+=a.boq.diagnostics.skippedChunks,f.droppedIncompleteRows+=a.boq.diagnostics.droppedIncompleteRows}return{entries:d,villages:e,totalEntries:d.length,sourceFile:c.map(a=>a.filePath).join(";"),complete:e.length>0&&e.every(a=>a.complete),diagnostics:f}}(i);return h.length>0?{boq:j,warning:`部分清单文件解析失败(已并入其余 ${i.length} 份):${h.join(";")}`}:{boq:j}}function N(a){let b=new Map;for(let c of a.entries){if(!c.name)continue;let a=(c.villageGroup||c.section||"").trim(),d=b.get(c.name);if(d)d.total+=c.quantity,a&&d.groupTotals.set(a,(d.groupTotals.get(a)??0)+c.quantity);else{let d=new Map;a&&d.set(a,c.quantity),b.set(c.name,{value:c.quantity,unit:c.unit,sourceFile:c.sourceFile,seq:c.seq,total:c.quantity,groupTotals:d})}}let c={};for(let[a,d]of b){let b=a=>Math.round(1e3*a)/1e3,e=[...d.groupTotals.entries()].map(([a,c])=>({group:a,value:b(c)}));c[a]={value:b(d.total),unit:d.unit,sourceFile:d.sourceFile,seq:d.seq,groups:e.length>0?e:void 0}}return c}let O=[{key:"绿化养护期",namePattern:/养护/u,extract:a=>{let b=/(?:一级|二级)养护[^。;;]{0,20}/u.exec(a.description);return b?b[0].trim():void 0}},{key:"喷播草籽种类",namePattern:/喷播|草籽/u,extract:a=>{let b=/(?:草籽|种子)[^。;;]*?(?:荷兰菊|紫花地丁|白三叶)[^。;;]*/u.exec(a.description);if(b)return b[0].replace(/^[^::]*[::]?/u,"").trim();let c=/(?:荷兰菊|紫花地丁|白三叶)[^。;;]*/u.exec(a.description);return c?c[0].trim():void 0}},{key:"池塘清淤深度",namePattern:/清淤|清塘/u,extract:a=>{let b=/(?:清淤深度|深度)[^。;;]*?(\d+(?:\.\d+)?)\s*m/u.exec(a.description);return b?`清淤深度 ${b[1]}m`:void 0}},{key:"过路涵涵头混凝土",namePattern:/涵头|过路涵/u,extract:a=>{let b=/(C\d{2})[^。;;]*混凝土/u.exec(a.description)||/混凝土[^。;;]*(C\d{2})/u.exec(a.description);return b?`涵头混凝土 ${b[1]}`:void 0}},{key:"路肩土预留",namePattern:/路肩/u,extract:a=>{let b=/(\d+(?:\.\d+)?)\s*[-~至]\s*(\d+(?:\.\d+)?)\s*m/u.exec(a.description);return b?`两侧各预留 ${b[1]}-${b[2]}m`:void 0}},{key:"一般路灯",namePattern:/路灯/u,extract:a=>{let b=/(\d+)\s*W/u.exec(a.description),c=/高\s*(\d+(?:\.\d+)?)\s*m/u.exec(a.description);if(!b&&!c)return;let d=["一般路灯"];return b&&d.push(`${b[1]}W LED`),c&&d.push(`高${c[1]}m`),/含基础|含灯杆基础|灯杆基础/u.test(a.description)&&d.push("含基础"),d.join(" ")}},{key:"暂列金额",namePattern:/暂列金额/u,extract:a=>{let b=/(\d+(?:\.\d+)?)\s*万元/u.exec(a.description);return b?`${b[1]}万元`:void 0},amount:!0}];function P(a,b,c=F){let{laborCostRatio:d,dailyWage:e}=c,f=Math.max(30,Math.round(b)),g=1e4*a*d.min,h=1e4*a*d.max,i=g/e.max,j=h/e.min,k=Math.max(1,Math.round(i/f*1.3)),l=Math.max(k,Math.round(j/f*1.6));return{min:k,max:l,detail:`合同估算价 ${a} 万元 \xd7 人工费占比 ${Math.round(100*d.min)}%~${Math.round(100*d.max)}% \xf7 综合工日单价 ${e.min}~${e.max} 元 \xf7 有效工期 ${f} 天 \xd7 峰值系数 1.3~1.6`}}let Q=[/C\d{2,3}/u,/DN\d{2,4}/iu,/Φ\d+(?:\.\d+)?/u,/\d+(?:\.\d+)?\s*(?:kW|W)/iu,/厚(?:度)?[::]*\s*\d+(?:\.\d+)?\s*(?:mm|cm)/u,/\d+\s*[×xX]\s*\d+(?:\s*[×xX]\s*\d+)?\s*(?:mm|cm)?/u,/HRB\d{3,4}/u,/Q\d{3}[A-Z]?/u,/YJV[^。;;]{0,12}|VV\d+[^。;;]{0,12}/u],R=new Set(["挖掘机","自卸汽车","压路机","洒水车","高空作业车","混凝土搅拌运输车"]),S=[{id:"vertical_transport",label:"垂直运输方式",relevance:/塔吊|塔式起重机|施工电梯|施工升降机|物料提升机|垂直运输/u,options:[{value:"塔式起重机",aliases:/塔吊|塔式起重机/},{value:"施工升降机",aliases:/施工电梯|施工升降机/},{value:"物料提升机",aliases:/物料提升机/},{value:"汽车式起重机",aliases:/汽车吊|汽车式起重机/}]},{id:"formwork",label:"模板体系",relevance:/模板/u,exclusive:!0,options:[{value:"木胶合板模板",aliases:/木胶合板|覆膜胶合板|胶合板模板|木模板/},{value:"钢模板",aliases:/钢模板|定型钢模/},{value:"铝合金模板",aliases:/铝合金模板|铝模/},{value:"大模板",aliases:/大模板/},{value:"爬升模板",aliases:/爬升模板|爬模/}]},{id:"concrete_supply",label:"混凝土供应",relevance:/混凝土/u,exclusive:!0,options:[{value:"商品混凝土(预拌)",aliases:/商品混凝土|预拌混凝土/},{value:"自拌混凝土",aliases:/自拌混凝土|现场拌制混凝土|现场搅拌混凝土/}]},{id:"scaffold",label:"脚手架体系",relevance:/脚手架|爬架/u,options:[{value:"落地式钢管脚手架",aliases:/落地式[^,。;;]{0,6}脚手架|落地脚手架/},{value:"悬挑式脚手架",aliases:/悬挑[^,。;;]{0,6}脚手架|悬挑脚手架/},{value:"附着式升降脚手架",aliases:/附着式升降脚手架|爬架/},{value:"门式脚手架",aliases:/门式脚手架/},{value:"盘扣式脚手架",aliases:/盘扣/},{value:"碗扣式脚手架",aliases:/碗扣/}]},{id:"foundation_support",label:"基坑支护形式",relevance:/基坑|支护/u,exclusive:!0,options:[{value:"放坡开挖",aliases:/放坡/},{value:"土钉墙支护",aliases:/土钉墙|土钉支护/},{value:"灌注桩支护",aliases:/灌注桩|钻孔灌注桩|排桩支护/},{value:"钢板桩支护",aliases:/钢板桩|拉森桩/},{value:"地下连续墙",aliases:/地下连续墙|地连墙/},{value:"锚杆(索)支护",aliases:/锚杆|锚索/},{value:"喷锚支护",aliases:/喷锚/}]},{id:"earthwork_haul",label:"土方外运方式",relevance:/土方|渣土|弃土/u,options:[{value:"自卸汽车外运",aliases:/自卸汽车|自卸车/},{value:"密闭渣土车外运",aliases:/密闭式?[^,。;;]{0,4}车|渣土车/},{value:"场内平衡利用",aliases:/场内平衡|就地平衡|场内调配|回填利用/}]},{id:"foundation_form",label:"基础形式",relevance:/基础/u,options:[{value:"独立基础",aliases:/独立基础/},{value:"条形基础",aliases:/条形基础|带形基础/},{value:"筏板基础",aliases:/筏板基础|筏形基础|满堂基础/},{value:"桩基础",aliases:/桩基础|桩基/u},{value:"箱形基础",aliases:/箱形基础|箱型基础/}]},{id:"vibration_isolation",label:"设备减振方式",relevance:/减振|隔振|减震|振动/u,options:[{value:"减振吊架",aliases:/减振吊架|隔振吊架|减震吊架|弹性吊架/},{value:"减振基础",aliases:/减振基础|隔振基础|减震基础|惯性基础/},{value:"橡胶隔振垫",aliases:/橡胶隔振垫|橡胶减振垫|隔振垫/},{value:"弹簧减振器",aliases:/弹簧减振器|弹簧隔振器|阻尼弹簧减振器/}]},{id:"concrete_pouring",label:"混凝土浇筑连续组织",relevance:/浇筑/u,options:[{value:"连续浇筑",aliases:/连续浇筑|一次浇筑|整体浇筑/,weakAliases:/同步浇筑|同步施工|同步/u},{value:"分段浇筑",aliases:/分段浇筑|分仓浇筑|跳仓浇筑|分区浇筑/}]},{id:"pavement_structure",label:"路面结构类型",relevance:/路面|基层|面层|沥青|水泥稳定/u,exclusive:!0,options:[{value:"柔性路面",aliases:/沥青混凝土路面|沥青混凝土面层|沥青路面|沥青面层/,weakAliases:/柔性/u},{value:"半刚性路面",aliases:/半刚性/u},{value:"刚性路面",aliases:/刚性路面|水泥混凝土路面|水泥混凝土面层/}]}],T=/不采用|不使用|不设置|不考虑|不得|禁止|取消/u;function U(a){return a.split(/[,,、::]/u).map(a=>a.trim()).filter(Boolean)}function V(a){let b=function(a,b){let c=[];for(let a of b){let b=function(a){let b=`${a.filePath||""} ${a.roleId||""} ${a.sectionTitle||""}`;return/补疑|澄清|答疑|修正|更新/u.test(b)?100:/招标文件|招标公告|投标人须知|前附表/u.test(b)?90:/清单|工程量/u.test(b)||/图纸|设计|dwg|drawing/iu.test(b)?80:/规范|标准|规程/u.test(b)?60:50}(a);for(let d of(0,i.wj)((0,j.lG)(a.content)).split(/[。;;\n]/u)){let a=d.trim();a.length<6||a.length>200||c.push({text:a,weight:b})}}for(let b of a){let a=`${b.key||""} ${b.fieldName||""} ${(0,j.lG)(b.value)}`.trim();a.length<6||a.length>200||c.push({text:a,weight:Math.round(60*Math.max(.5,Math.min(1,b.confidence||.7)))})}return c}(a.facts,a.evidence),c=[];for(let a of S){let d=new Map;for(let c of b){if(!a.relevance.test(c.text))continue;let b=U(c.text);for(let e of a.options){let a=b.find(a=>e.aliases.test(a));if(!a||T.test(a))continue;let f=d.get(e.value)||{score:0,mentions:0,bestWeight:0};f.score+=c.weight,f.mentions+=1,f.bestWeight=Math.max(f.bestWeight,c.weight),d.set(e.value,f)}}let e=[...d.entries()].map(([a,b])=>({value:a,...b})).sort((a,b)=>b.score-a.score||b.mentions-a.mentions||(a.value<b.value?-1:1)),f=e[0];if(!f||f.bestWeight<60)continue;if(a.exclusive){c.push({id:a.id,label:a.label,values:[f.value]});continue}let g=Math.max(60,.4*f.score),h=e.filter(a=>a.score>=g).slice(0,3).map(a=>a.value);h.length>0&&c.push({id:a.id,label:a.label,values:h})}return c}function W(a){return S.find(b=>b.id===a)}function X(a,b){return S.find(c=>{let d=a=>c.options.some(b=>b.aliases.test(a)||b.weakAliases?.test(a));return c.options.some(c=>c.aliases.test(a)||c.aliases.test(b))&&d(a)&&d(b)})}function Y(a,b){for(let c of a.options){let a=c.aliases.exec(b);if(a)return{option:c,index:a.index,end:a.index+a[0].length}}for(let c of a.options){let a=c.weakAliases?.exec(b);if(a)return{option:c,index:a.index,end:a.index+a[0].length}}}function Z(a,b){let c=U(a).find(a=>b.test(a));return!!c&&T.test(c)}function $(a){if(!a)return[];let b=[],c=new Set;for(let d of a.matchAll(/《([^《》]{2,40}(?:法|条例|办法|规程|规范|标准))》(?:[((][^))]{0,24}?(?:国令|令|主席令|〔\d{4}〕)[^))]{0,24}?[))])?/gu)){let a=d[1].replace(/[\s#]/gu,"").trim();if(/通知|意见|公示|公告/u.test(a)||a.length<4||a.length>20)continue;let e=(d[0].match(/[((]([^))]{0,24}?(?:国令|令|主席令|〔\d{4}〕)[^))]{0,24}?)[))]/u)||[])[1],f=e?`《${a}》(${e.trim()})`:`《${a}》`;if(!c.has(f)&&(c.add(f),b.push(f),b.length>=14))break}return b}let _=[{item:"主要施工方法",weight:"1.5",chapterPattern:/主要分部分项|施工方案|施工方法/u},{item:"物资计划",weight:"0.5",chapterPattern:/物资|资源配置|材料/u},{item:"机械设备计划",weight:"0.5",chapterPattern:/机械|资源配置|设备/u},{item:"劳动力安排",weight:"0.5",chapterPattern:/劳动力|资源配置|人员/u},{item:"质量措施",weight:"1.5",chapterPattern:/质量/u},{item:"安全措施",weight:"1.5",chapterPattern:/安全/u},{item:"工期措施",weight:"1.0",chapterPattern:/工期|进度/u},{item:"文明施工",weight:"1.0",chapterPattern:/文明施工|环境保护|绿色施工/u},{item:"总平面布置图",weight:"0.5",chapterPattern:/总平面|平面布置/u},{item:"重难点及保证措施",weight:"1.5",chapterPattern:/重难点|重点|难点|概况/u}];function aa(a,b){let c=a.trim();if(/^其他$|^其他工程$/u.test(c)){let a=b.map(a=>a.name);return a.some(a=>/彩绘|护栏|围栏|小品|标识|标牌|墙面|整治/u.test(a))?"环境整治工程":a.some(a=>/绿化|栽植|铺装|种植/u.test(a))?"景观附属工程":a.some(a=>/拆除|清理|清淤|清运/u.test(a))?"清理整治工程":"零星工程"}return/^其他装饰/u.test(c)?"零星装饰工程":/^措施项目$/u.test(c)?b.map(a=>a.name).some(a=>/化粪池|吊装|安装/u.test(a))?"模板、脚手架及化粪池安装工程":"模板与脚手架工程":/墙[、,]?柱面装饰/u.test(c)?b.some(a=>/幕墙|隔断/u.test(a.name))?c:"墙柱面装饰工程":c}function ab(a){let b=[];for(let c of a.matchAll(/(?:\d+|[一二三四五六七八九十]+)[..、]\s*([^::;;。]{1,40}?)[::]\s*([^。;;\n]{1,80})/gu)){let a=c[1].trim(),d=c[2].trim();!/具体详见|其他|满足验收/u.test(a)&&!/(?:(?:详)?见|按)(?:设计|施工)?图纸|招标文件补疑/u.test(d)&&a&&d&&b.push({key:a,value:d})}return b}function ac(a,b){let c=[...b].sort((a,b)=>a.seq-b.seq),d={},e=new Map;for(let a of c)a.name&&e.set(a.name,(e.get(a.name)||0)+a.quantity);for(let[a,b]of e){let e=c.find(b=>b.name===a)?.unit||"";d[a]={value:Math.round(1e3*b)/1e3,unit:e}}let f=[...new Set(c.map(a=>a.name).filter(Boolean))].slice(0,16),g=function(a){let b=[];for(let c of a)for(let a of ab(c.description))/含|配合|安装|铺设|浇筑|夯实|碾压|养护|刻痕|拉毛|切缝|灌缝|喷播|栽植|回填|吊装|固定/u.test(a.value)&&a.value.length<=60&&b.push(`${c.name}:${a.value}`);return[...new Set(b)].slice(0,20)}(c),h=[],i=new Set;for(let a of c){for(let b of ab(a.description)){let a=`${b.key}=${b.value}`;if(!i.has(a)&&(i.add(a),h.push({key:b.key,value:b.value,source:"boq"}),h.length>=24))break}if(h.length>=24)break}let j=[];for(let a of c)for(let b of ab(a.description))/压实|试验|检测|验收|闭水|合格/u.test(`${b.key}${b.value}`)&&j.length<12&&!j.includes(b.value)&&j.push(b.value);let k=(0,z.cn)([a]),l=[];for(let a of(0===j.length&&k.length>0&&j.push(...k[0].acceptance.slice(0,6).map(a=>`${a}(知识卡)`)),k.slice(0,2)))for(let b of a.standards)l.includes(b)||l.push(b);return{name:a,kind:"major",quantities:d,processChain:f,methods:g,params:h,acceptance:j,standards:l,source:"boq",coveredSeqs:c.map(a=>a.seq)}}function ad(a,b){if(b)return b.needsBlueprintAuthority(a);let c=[];return/劳动力/u.test(a)&&c.push("laborPeak"),/资源配置|资源|机械|设备|机具/u.test(a)&&c.push("blueprint"),/进度计划|进度|工期/u.test(a)&&c.push("schedule"),[...new Set(c)]}function ae(a,b,c){let d=ad(a,c),e=b?b.checks.filter(a=>!a.passed).map(a=>a.name):[],f=b?.authorityAvailability;return f?{missing:d.filter(a=>!f[a]),failedChecks:e}:{missing:d,failedChecks:e}}function af(a,b){let c=["【一体化蓝图参数桶——全项目口径唯一权威源,正文引用必须与此一致,不得自行推导不同数值】"];return c.push("计划类数值(劳动力人数/工期/工程量/养护期)必须且只能引用以下锚点值:禁止将各工种人数相加推导峰值、禁止按定额自行估算、禁止改写锚点数值。"),c.push(`- 项目:${a.project.name}(${a.project.scope})`),c.push(...(0,B.Xe)((0,B.IV)(a),b)),a.inspectionBatches.length>0&&c.push(`- 检验批划分:${a.inspectionBatches.map(a=>`${a.scope}——${a.planDesc}`).join(";")}`),c.push(`- 临时用电:${a.tempUtilities.powerLoad}`),c.push(`- 临时用水:${a.tempUtilities.waterUsage}`),a.decisionLock.entries.length>0&&c.push(`- 关键决策锁:${a.decisionLock.entries.map(a=>`${a.label}:${a.values.join("、")}`).join(";")}`),a.constructionDeployment.sections.length>0&&c.push(`- 施工部署:${a.constructionDeployment.flow};施工顺序 ${a.constructionDeployment.sequence}`),a.keyDifficulties.length>0&&c.push(`- 重难点(逐项列明):${a.keyDifficulties.map(a=>`${a.name}——${a.measure}`).join(";")}`),c.push(`- 金额禁区:${a.amountRule}`),c.push(a.drawingNote),c.join("\n")}let ag=[{domain:"contract",chapterPattern:/进度|工期|总体|部署|概况|工程|计划/u},{domain:"schedule",chapterPattern:/进度|工期|部署|计划|总体|施工方案|分部分项/u},{domain:"labor",chapterPattern:/劳动力|人员|资源|进度|工期|部署|概况/u},{domain:"equipment",chapterPattern:/机械|设备|资源/u},{domain:"material",chapterPattern:/物资|材料|资源|采购|亮化|路灯|照明/u},{domain:"quantity",chapterPattern:/分部分项|施工方案|施工方法|土方|道路|管网|工程概况/u},{domain:"spec",chapterPattern:/材料|物资|质量|技术|施工方案|分部分项/u},{domain:"earthwork",chapterPattern:/土方|土石方|道路|管网|施工方案|分部分项/u},{domain:"test",chapterPattern:/质量|试验|检测|验收/u},{domain:"redline",chapterPattern:/绿化|种植|养护|苗木|技能|培训|成品保护|质量|亮化|路灯|照明|概况|工程|总体/u}],ah=/编制|工程概况|项目概况|概况|说明/u;function ai(a,b,c){let d=[c.blockTitle,...c.subPointTitles,...c.skeletonNames??[]].map(a=>a.trim()).filter(a=>a.length>=2),e=a=>d.some(b=>a.includes(b)||b.includes(a)),f=[`【第 ${a.id} 章「${a.title}」蓝图切片(本节聚焦)——以下项目专属事实由蓝图冻结锁定,正文必须一致引用】`,m.Ru],g=[],h=[...new Set(a.subSections.flatMap(a=>a.requiredParams.filter(a=>"must_cite"===a.mode).map(a=>a.path)))];h.length>0&&g.push(`本章 must_cite 参数(正文必须出现且与蓝图一致):${h.join("、")}`);let i=[];for(let b of a.subSections){let a=b.workPackages.filter(a=>e(a.name));if(0===a.length)continue;let c=[`## ${b.id} ${b.title}`],d=b.requiredParams.filter(a=>"must_cite"===a.mode).map(a=>a.path);for(let b of(d.length>0&&c.push(`must_cite 参数:${d.join("、")}`),a))c.push(...function(a){let b=[`
222
222
  ### 工作包:${a.name}(${"major"===a.kind?"主要":"一般"}工作包)`],c=Object.entries(a.quantities).map(([a,b])=>`${a} ${b.value}${b.unit}`).join("、");return c&&b.push(`- 工程量:${c}`),a.processChain.length>0&&b.push(`- 工序链:${a.processChain.join(" → ")}`),a.methods.length>0&&b.push(`- 施工方法(清单特征原文):${a.methods.join(";")}`),a.params.length>0&&b.push(`- 工艺参数:${a.params.map(a=>`${a.key}=${a.value}`).join(";")}`),a.acceptance.length>0&&b.push(`- 验收要求:${a.acceptance.join(";")}`),a.standards.length>0&&b.push(`- 规范依据:${a.standards.join(";")}`),b}(b));i.push(c.join("\n"))}let j=a.subSections.reduce((a,b)=>a+b.workPackages.length,0);if(0===i.length&&j>0){let b=[];for(let c of a.subSections){let a=c.workPackages.map(a=>{let b=Object.entries(a.quantities),c=b.slice(0,3).map(([a,b])=>`${a} ${b.value}${b.unit}`).join("、");return c?`${a.name}(${c}${b.length>3?" 等":""})`:a.name});a.length>0&&b.push(`- ${c.title}:${a.join(";")}`)}g.push(`【本章工作包索引(本节为章级总述/无专属工作包;各工作包详细参数见本章其他小节,本节不得复写单个分部方案)】
223
- ${b.join("\n")}`)}else g.push(...i);let k=function(a,b){let c=ae.filter(b=>b.chapterPattern.test(a.title)).map(a=>a.domain),d=(0,B.Bf)((0,B.IV)(b),c);return(af.test(a.title)&&d.push(...function(a){let b=[];return(a.basisRegulations??[]).length>0&&b.push(`- 招标文件引用法规(项目专属事实,编制依据小节必须列出法规名称及文号):${a.basisRegulations.join("、")}`),b.push("- 编制依据小节由写作模型自行列写:国家法律法规及文号、工程所在地地方性法规、与本工程分部对应的现行施工验收规范名称及编号;不得空写「国家现行法律、行政法规」等类别话术,不得编造文号"),b}(b)),0===d.length)?"":["【本章数值锚点——计划类数值必须且只能引用以下锚点值;禁止将各工种人数相加推导峰值、禁止按定额自行估算、禁止改写或自设任何计划类数值】",...d].join("\n")}(a,b),l=c.sliceCharsCap??6e3,n=[...f,...g,k].filter(Boolean).join("\n\n");if(n.length>l){let a=[],b=0;for(let c of n.split("\n")){if(b+c.length+1>l)break;a.push(c),b+=c.length+1}n=`${a.join("\n")}
224
- (本节蓝图切片过长已截断,未展开工作包见本章其他小节与绑定材料)`}return n}function ah(a){return a.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&")}function ai(a,b){let c=a.outline.chapters.find(a=>a.title===b);return c||a.outline.chapters.find(a=>b.includes(a.title)||a.title.includes(b))}function aj(a,b,c){let d=[],e=[],f=a,g=b.subSections.flatMap(a=>a.requiredParams.filter(a=>"must_cite"===a.mode&&a.strict)),h=[];/劳动力|人员|资源|进度|工期|部署|概况/u.test(b.title)&&c.resources.labor.peakValue>0&&h.push({path:"data.resources.labor.peak_value",mode:"must_cite",strict:!0}),/绿化|种植|养护|苗木|技能|培训|成品保护|质量/u.test(b.title)&&h.push({path:"data.redline.greening_maintenance",mode:"must_cite",strict:!0});let i=[...g,...h],j=new Set;for(let a of i)if(!j.has(a.path)){if(j.add(a.path),"data.contract.total_days"===a.path){if(c.contract.totalDays<=0)continue;let a=/(?:总工期|施工工期|合同工期|工期)(?:为|约|共计|控制)?[^\n。;;]{0,20}?(\d+(?:\.\d+)?)\s*(?:日历)?天/gu,b=!1;f=f.replace(a,(a,e)=>{b=!0;let f=Number(e);return f===c.contract.totalDays||f<=0?a:(d.push({anchor:"总工期",from:`${f}天`,to:`${c.contract.totalDays}天`}),a.replace(e,String(c.contract.totalDays)))}),b||e.push(`总工期 ${c.contract.totalDays} 日历天`);continue}if(a.path.startsWith("data.quantities.")){let b=a.path.slice(16),g=c.quantities[b];if(!g||g.value<=0)continue;let h=g.unit||"",i=RegExp(`${ah(b)}[^\\n。;;]{0,40}?(\\d+(?:\\.\\d+)?)\\s*${h?ah(h):""}`,"gu"),j=!1;f=f.replace(i,(a,c)=>{j=!0;let e=Number(c);return e===g.value||e<=0?a:(d.push({anchor:b,from:`${e}${h}`,to:`${g.value}${h}`}),a.replace(c,String(g.value)))}),j||e.push(`${b} ${g.value}${h}`);continue}if("data.resources.labor.peak_value"===a.path){let a=c.resources.labor.peakValue;if(a<=0)continue;let b=/(?:高峰(?:期)?(?:人数)?|峰值|劳动力(?:总人数|峰值)|各专业班组高峰人数)[^。;;\n]{0,24}?(?:约)?\s*([\d,]+)\s*人/gu,g=!1;f=f.replace(b,(b,c)=>{g=!0;let e=Number(String(c).replace(/,/g,""));return!Number.isFinite(e)||e===a||e<=0?b:(d.push({anchor:"劳动力峰值",from:`${c}人`,to:`${a}人`}),b.replace(c,String(a)))}),g||e.push(`劳动力峰值 ${a} 人`);continue}if("data.redline.greening_maintenance"===a.path){let a=c.redLineFacts.find(a=>/养护/u.test(a.key));if(!a)continue;let b=/养护[^。;;|]{0,10}?([一二两三四五六七八九十]+|\d{1,2})\s*年/u.exec(a.value);if(!b)continue;let g=(0,l._P)(b[1]??"");if(void 0===g||!Number.isFinite(g)||g<=0)continue;let h=/养护[^。;;\n|]{0,16}?([一二两三四五六七八九十]+|\d{1,2})\s*年/gu,i=!1;f=f.replace(h,(a,b)=>{i=!0;let c=(0,l._P)(b);return void 0===c||!Number.isFinite(c)||c===g||c<=0?a:(d.push({anchor:"养护期",from:`${b}年`,to:`${g}年`}),a.replace(b,String(g)))}),i||e.push(`养护期 ${g} 年`);continue}}return{markdown:f,fixed:d,missing:e}}function ak(a,b){let c=new Set,d=[];for(let e of a.subSections.flatMap(a=>a.requiredParams.filter(a=>"must_cite"===a.mode&&a.strict)))if(!c.has(e.path)){if(c.add(e.path),"data.contract.total_days"===e.path&&b.contract.totalDays>0){d.push(`总工期 ${b.contract.totalDays} 日历天`);continue}if(e.path.startsWith("data.quantities.")){let a=b.quantities[e.path.slice(16)];a&&a.value>0&&d.push(`${e.path.slice(16)} ${a.value}${a.unit}`)}}return d.join(";")}let al={core:1.5,general:1,brief:.6};function am(a){return/^(?:确保\s*)?[人材机](?:员|力|料|械|工)?\s*的保障体系与措施$/u.test(a)}function an(a,b){let c=a.replace(/\s+/gu,""),d=b.replace(/\s+/gu,"");return c===d||c.includes(d)||d.includes(c)}function ao(a,b){if(0===a.length)return;let c=Math.max(0,Math.round(b)),d=a.reduce((a,b)=>a+Math.max(1,b.subPoints.length),0),e=Math.max(1,Math.floor(c/1800)),f=a;if(f.length>e){let a=[],b=Math.max(1,Math.ceil(d/e)),c=[],g=0;for(let d of f){if(ap(d.title)){c.length>0&&(a.push(c),c=[],g=0),a.push([d]);continue}let f=Math.max(1,d.subPoints.length);c.length>0&&a.length<e-1&&g+f>b&&(a.push(c),c=[],g=0),c.push(d),g+=f}c.length>0&&a.push(c),f=a.map(a=>1===a.length?a[0]:{title:(a.find(a=>ap(a.title))||a[0]).title,subPoints:a.flatMap(a=>a.subPoints),facts:[...new Set(a.flatMap(a=>a.facts))],targetWords:0})}for(let a=0;a<64&&f.length<e;a+=1){let a=f.map(a=>Math.max(.5,a.subPoints.reduce((a,b)=>a+al[b.tier||"general"],0))),b=a.reduce((a,b)=>a+b,0)||f.length,d=-1,e=2800;if(f.forEach((f,g)=>{let h=Math.floor(c*a[g]/b);f.subPoints.length>=2&&h>e&&(d=g,e=h)}),d<0)break;let g=f[d],h=Math.ceil(g.subPoints.length/2);f.splice(d,1,{...g,subPoints:g.subPoints.slice(0,h),targetWords:0},{...g,subPoints:g.subPoints.slice(h),targetWords:0})}let g=f.map(a=>Math.max(.5,a.subPoints.reduce((a,b)=>a+al[b.tier||"general"],0))),h=g.reduce((a,b)=>a+b,0)||f.length,i=Math.min(1800,Math.floor(c/Math.max(1,f.length))),j=f.map((a,b)=>Math.max(i,Math.floor(c*g[b]/h))),k=j.reduce((a,b)=>a+b,0)-c;if(k>0){let a=j.map(a=>a-i),b=a.reduce((a,b)=>a+b,0);if(b>0){let c=0;j.forEach((d,e)=>{let f=Math.min(a[e],Math.floor(k*a[e]/b));j[e]=d-f,c+=f});for(let a=k-c;a>0;a-=1){let a=-1;if(j.forEach((b,c)=>{!(b<=i)&&(a<0||b>j[a])&&(a=c)}),a<0)break;j[a]=j[a]-1}}}let l=j.reduce((a,b)=>a+b,0);if(l<c){let a=0;j.forEach((b,c)=>{b>j[a]&&(a=c)}),j[a]=j[a]+(c-l)}for(let a of(f.forEach((a,b)=>{a.targetWords=Math.max(1,Math.min(j[b],4500))}),f)){if(0===a.subPoints.length)continue;let b=a.subPoints.map(a=>al[a.tier||"general"]),c=b.reduce((a,b)=>a+b,0)||a.subPoints.length,d=b.map(b=>Math.max(100,Math.floor(a.targetWords*b/c))),e=d.reduce((a,b)=>a+b,0);if(e>a.targetWords){let d=a.targetWords;a.subPoints.forEach((e,f)=>{let g=f===a.subPoints.length-1?Math.max(1,d):Math.max(1,Math.floor(a.targetWords*b[f]/c));e.quotaWords=g,d-=g});continue}let f=b.reduce((a,c,d)=>c>b[a]?d:a,0),g=a.targetWords-e;a.subPoints.forEach((a,b)=>{a.quotaWords=d[b]+(b===f?g:0)})}f!==a&&(a.length=0,a.push(...f))}function ap(a){return m.Yp.test(a)||m.gG.test(a)}function aq(a,b,c){let d=new Map,e=[];for(let b of a){if(am(b)||m.Yp.test(b)||m.gG.test(b)){e.push({kind:"solo",section:b});continue}let a=/工期|进度|节点|计划|纠偏|预警/u.test(b)?"工期进度":/质量|验收|三检|样板|隐蔽|复试|实测|通病/u.test(b)?"质量验收":/安全|危大|风险|隐患|应急|临边|洞口|消防|临电/u.test(b)?"安全风险":/文明|扬尘|噪声|绿色|废水|垃圾|环保|智慧/u.test(b)?"文明绿色":/劳务|工资|实名|银行|考勤|人员|岗位|组织|职责/u.test(b)?"组织劳务":/资源|材料|设备|机械|人材机|调配/u.test(b)?"资源保障":/施工|工艺|流程|顺序|穿插|部署|区段|流水/u.test(b)?"施工组织":"综合管理";d.has(a)||(d.set(a,[]),e.push({kind:"domain",key:a})),d.get(a).push(b)}let f=a=>{let b=[];for(let c of a){let a=b[b.length-1],d=a?a.sources[a.sources.length-1]:"";!(0,m.tZ)(c)&&!am(c)&&a&&(an(c,d)||function(a,b){let c=a=>{let b=new Set;for(let c=0;c<a.length-1;c+=1)b.add(a.slice(c,c+2));return b},d=c(b),e=[...c(a)];return 0===e.length?0:e.filter(a=>d.has(a)).length/e.length}(c,d)>=.75)?(a.sources.push(c),c.length>a.title.length&&(a.title=c)):b.push({title:c,sources:[c]})}return b},g=[];for(let a of e){if("solo"===a.kind){g.push({title:a.section,subPoints:[{title:a.section,sources:[a.section]}],facts:[],targetWords:0});continue}let c=f(d.get(a.key)||[]);for(let a=0;a<c.length;a+=6){let d=c.slice(a,a+6);g.push({title:d[0].title||b,subPoints:d,facts:[],targetWords:0})}}return ao(g,c),{blocks:g,coveredSections:a.slice(),fallbackSections:[]}}function ar(a){let b,{blueprintChapter:c,inputSections:d,chapterTitle:e,targetWords:f}=a,g=[],i=[];if(c&&0!==c.subSections.length){for(let a of c.subSections){let b=a.workPackages.map(a=>({title:a.name,sources:[a.name],tier:"major"===a.kind?"core":"general"}));b.length>6?g.push(...function(a,b){let c=a.replace(/工程$/u,""),d=[],e=new Map;for(let a of b){let b=(0,j.Ld)(a.title),c=e.get(b);void 0===c&&(c=d.length,e.set(b,c),d.push({label:b,points:[]})),d[c].points.push(a)}let f=[];for(let a of d)for(let b=0;b<a.points.length;b+=6){let d=a.points.slice(b,b+6),e=0===b?(0,k.UW)(c,a.label):(0,k.UW)(c,d[0].title);f.push({title:e,subPoints:d,facts:[],targetWords:0})}return f}(a.title,b)):g.push({title:a.title,subPoints:b,facts:[],targetWords:0})}if(0===g.length){let a=aq(d,e,f);g=a.blocks,i=a.coveredSections,b=a.fallbackSections}else i=d.filter(a=>g.some(b=>an(b.title,a)||b.subPoints.some(b=>b.sources.some(b=>an(b,a))||an(b.title,a)))),b=d.filter(a=>!i.includes(a))}else{let a=aq(d,e,f);g=a.blocks,i=a.coveredSections,b=a.fallbackSections}if(b.length>0){for(let a of aq(b,e,f).blocks)g.some(b=>an(b.title,a.title)||a.subPoints.some(a=>b.subPoints.some(b=>an(b.title,a.title))))||g.push(a);i=[...i,...b],b=[]}if(a.projectContext&&a.evidence){let b=a.projectContext,c=a.evidence,d=m.gG.test(e)?[]:(a.blueprintChapter?.subSections??[]).map(a=>a.title),i=m.gG.test(e)?new Set(g.map(a=>(0,j.Sw)(a.title)).filter(Boolean)):new Set;g=g.map(a=>{if(!ap(a.title)||m.gG.test(e)&&m.gG.test(a.title))return a;let k=function(a,b){let c=[];for(let b of a){let a=b.trim(),d=a.replace(/\s+/gu,"");if(!(!d||/^其他$|^其它$|^其他工程$|^其余/u.test(d))&&!c.some(a=>{let b=a.replace(/\s+/gu,"");return b.includes(d)||d.includes(b)})&&(c.push(a),c.length>=12))break}return c}([...(0,h.Ep)(b,c).filter(a=>{let b=a.replace(/^[一二三四五六七八九十百\d]+[、..\s::-]+/u,"");return!i.has((0,j.Sw)(b))}),...d],0);if(k.length<3)return a;let l=Math.max(1,g.filter(a=>ap(a.title)).length),n=Math.max(3,Math.min(k.length,Math.floor(f/350/l)));if(k.length<=n)return{...a,subPoints:k.map(a=>({title:a,sources:[a],tier:"core"}))};let o=k.slice(0,n),p=k.slice(n);return{...a,subPoints:[...o.map(a=>({title:a,sources:[a],tier:"core"})),{title:"其他分部分项工程施工要点",sources:p,tier:"brief"}]}})}let l=(0,k.SX)(g.map(a=>({title:a.title})));return g.forEach((a,b)=>{a.title=l[b]}),ao(g,f),0===g.length&&e.trim()&&(g=[{title:e,subPoints:[],facts:[],targetWords:Math.min(2800,Math.max(1800,f))}]),{blocks:g,coveredSections:i,fallbackSections:b}}function as(a,b){let c=[],d=a.split("\n").filter(a=>!/^\s*\|/u.test(a.trim())).join("\n");if(b.resources.labor.peakValue>0)for(let a of d.matchAll(/(?:劳动力峰值|施工高峰|高峰人数|高峰期劳动力|劳动力高峰)(?:为|约|达到|共计)?[^\n。;;]{0,20}?(\d+(?:\.\d+)?)\s*人/gu)){let d=Number(a[1]);if(d>0&&d!==b.resources.labor.peakValue){c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`蓝图引用冲突:正文出现与蓝图不一致的劳动力峰值 ${d} 人`,suggestion:`请统一使用蓝图劳动力峰值:${b.resources.labor.peakValue} 人`});break}}if(b.contract.totalDays>0)for(let a of d.matchAll(/(?:总工期|施工工期|合同工期|工期)(?:为|约|共计|控制)?[^\n。;;]{0,20}?(\d+(?:\.\d+)?)\s*(?:日历)?天/gu)){let e=Math.max(0,(a.index??0)-16),f=d.slice(e,(a.index??0)+a[0].length),g=(a.index??0)-e+a[0].indexOf(String(a[1])),h=f.slice(0,g),i=/^(?:总工期|施工工期|合同工期)/u.test(a[0]),j=g>0&&/按|阶段|拆除|清杂|准备|第\d+日|至第|集中|延误|滞后|分解|机动|预留|保留|余量|缓冲|占用|无法容纳|不少于|不超过|不得超过|不大于|不低于|至少|最多/u.test(h),k=!i&&g>0&&/计划|安排/u.test(h);if(j||k)continue;let l=Number(a[1]);if(l>0&&l!==b.contract.totalDays){c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`蓝图引用冲突:正文出现与蓝图不一致的工期表述 ${l}日历天`,suggestion:`请统一使用蓝图总工期:${b.contract.totalDays} 日历天`});break}}for(let d of b.redLineFacts.filter(a=>!a.amount&&"自然村数量"!==a.key)){let b=String(d.value).split(/[,。;、()()\]【】::\s\n[]+/u).map(a=>a.trim()).filter(a=>a.length>=3&&!/^[\d.]+$/u.test(a)&&!/^(?:其他|具体详见|满足设计要求|设计图纸|图集|招标文件|政府相关文件|规范等|资料)$/u.test(a));0!==b.length&&(b.some(b=>a.includes(b))||c.push({level:"warning",severity:"warning",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`蓝图红线事实缺口:正文未体现「${d.key}=${d.value}」`,suggestion:`请在对应章节补写该红线事实(数值必须与蓝图一致)`}))}let e=b.redLineFacts.find(a=>"自然村数量"===a.key),f=e?Number(/(\d+)/u.exec(e.value)?.[1]):0;if(f>0)for(let a of d.matchAll(/(\d+)\s*个(?:美丽宜居)?自然村(?!分组|施工组)/gu)){let b=d.slice(Math.max(0,(a.index??0)-16),a.index??0);if(/片区|分为|分成|划分为|每组|每片|每台|每个|各台|各车|每村/u.test(b))continue;let e=Number(a[1]);if(e>0&&e!==f){c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`蓝图红线事实冲突:正文出现与蓝图不一致的自然村数量 ${e} 个`,suggestion:`请统一使用蓝图自然村数量:${f} 个自然村`});break}}let g=[],h=[],i=Object.entries(b.quantities).sort((a,b)=>b[0].length-a[0].length),j=[];for(let[a,b]of i){if(!b||b.value<=0)continue;let c=b.unit||"",e=c?`${function(a){let b=a.trim().toLowerCase();return/(?:m2|m²|㎡)/.test(b)?"(?:㎡|m\xb2|m2)":/(?:m3|m³)/.test(b)?"(?:m\xb3|m3)":"t"===b||"吨"===b?"(?:吨|t)":ah(a)}(c)}(?![0-9A-Za-z])`:"",f=RegExp(ah(a),"gu");for(let i of d.matchAll(f)){let f=i.index??0,k=f+a.length;if(j.some(a=>f<a.end&&k>a.start))continue;j.push({start:f,end:k});let l=d.slice(k,k+40),m=Math.min(...[l.search(/[、。;;,,\n]/u)].filter(a=>a>=0).concat([l.length])),n=l.slice(0,m),o=RegExp(`(?<![\\dA-Za-z])(\\d+(?:\\.\\d+)?)\\s*${e}`,"u").exec(n);if(!o)continue;let p=d.slice(f,k+(o.index??0)+o[0].length),q=p.slice(a.length);if(/按[^。;;\n|]{0,16}?(?:强度|厚度|规格|等级|部位)[^。;;\n|]{0,8}?(?:分区|分别|分规格|分强度|分等级|分部位)/u.test(q))continue;let r=p.lastIndexOf(String(o[1]));if(/(?:每层每|按每|每批|每处|每层)\s*$/u.test(p.slice(0,r))||/^[^\d]{0,4}(?:不少于|至少)\s*\d+\s*[点个处]/u.test(p.slice(r+String(o[1]).length))||r>0&&/(?:间距|不大于|不小于|≥|≤|直径|宽度|厚度|高度|深度|坡度)[^0-9]*$/u.test(p.slice(0,r)))continue;let s=d.slice(Math.max(0,f-12),f);if(/[郢庄岗塘圩坝池井]/u.test(s))continue;let t=d.lastIndexOf("\n\n",f),u=-1===t?0:t+2,v=d.indexOf("\n\n",f),w=-1===v?d.length:v;if(/[郢庄岗塘圩坝]/u.test(d.slice(u,w))||/(?:直径|DN|Φ|φ)\\s*\\d+/u.test(d.slice(Math.max(0,f-8),f))||/(?:直径|DN|Φ|φ)\\s*\\d+/u.test(d.slice(f+a.length,f+a.length+8)))continue;let x=Number(o[1]);if(Number.isFinite(x)&&!(x<=0)){if(x===b.value){h.push({ns:f});continue}(b.groups??[]).some(a=>1e-6>Math.abs(a.value-x))||g.push({name:a,value:x,unit:c,authorityValue:b.value,ns:f})}}}let k=a=>{let b=Math.max(d.lastIndexOf("。",a),d.lastIndexOf("\n",a)),c=d.indexOf("。",a);-1===c&&(c=d.length);let e=d.indexOf("\n",a);return -1===e&&(e=d.length),{start:b+1,end:Math.min(c,e)+1}},l=(a,b)=>{if(a.length>10)return!1;let c=a.map(a=>Math.round(100*a)),d=Math.round(100*b);for(let a=1;a<1<<c.length;a+=1){let b=0,e=0;for(let d=0;d<c.length;d+=1)(a&1<<d)!=0&&(b+=c[d],e+=1);if(e>=2&&b===d)return!0}return!1},m=new Set;{let a=new Map;for(let b of g){let c=a.get(b.name)??[];c.push(b.value),a.set(b.name,c)}for(let[b,c]of a){let a=[...new Set(c)];a.length>=2&&l(a,g.find(a=>a.name===b)?.authorityValue??0)&&m.add(b)}}let n=new Set;for(let a of g){let b=k(a.ns),e=d.lastIndexOf("\n\n",a.ns),f=-1===e?0:e+2;if(/(?:单体|单座|单栋|单幢|每座|每栋|化粪池|作业对象)/u.test(d.slice(f,b.end)))continue;let i=g.filter(c=>c!==a&&c.ns>=b.start&&c.ns<b.end).length+1,j=h.filter(a=>a.ns>=b.start&&a.ns<b.end).length;!(i>=2&&j>=1||m.has(a.name))&&(n.has(a.name)||(n.add(a.name),c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`蓝图引用冲突:正文出现与蓝图不一致的工程量 ${a.name} ${a.value}${a.unit}`,suggestion:`请统一使用蓝图工程量:${a.name} ${a.authorityValue}${a.unit}`})))}return c}let at=/(?<=[日天])\s*[0-9]+(?:\.[0-9]+)?(?=[\s]*(?:招标|建设|质量|合同|项目|工程|资金|投标|开标|评标|付款|工期|开工|计划|计价|现场|资质|标段|[0-9]{1,3}[.、.]|[,,。;;]|$))/u;function au(a){let b=Object.values(a.byKey||{}).filter(a=>!!(a&&a.label&&a.value)).sort((a,b)=>(b.priority||0)-(a.priority||0));return 0===b.length?"":b.slice(0,60).map(a=>{let b=String(a.value),c=at.exec(b),d=c?b.slice(0,c.index).trim():b;return`- ${a.label}:${d}`}).join("\n")}function av(a){let b=Date.now(),c={stage:"阶段 0",standardBlocksLoaded:0,standardBlockGaps:[],laborDerivationBasis:"清单汇总 \xd7 经验区间系数(定额工效知识不全,降级区间表达)",llmCalls:0,fallbackUsed:[],warnings:[],durationMs:0},d={version:"2.0.0",projectCode:function(a,b){let c=a=>a.replace(/^\d+(?:\.\d+)*\s*--\s*(?=\d{4}年)/u,""),d=/项目名称[::]\s*([^\n]{2,60})/u.exec(a);if(d){let a=c(d[1].trim()),b=a.split(/计划工期[::]|合同工期[::]|总工期[::]|工期[::]|质量标准[::]|计价[::]|施工地点/u)[0]?.trim()||a;if(b)return b}let e=/(\d{4}\s*年度\S{2,40}建设项目)/u.exec(a);return e?c(e[1].trim()):b||""}(a.basicFacts||"",a.templateName)||void 0,docType:"单位工程施工组织设计",createdAt:new Date().toISOString().slice(0,10),sourceMaterials:[...a.boundFilePaths]},h=M({projectRoot:a.projectRoot,boundFilePaths:a.boundFilePaths});h.warning&&c.warnings.push(h.warning);let i=h.boq;i&&(c.boq={sourceFile:i.sourceFile,totalEntries:i.totalEntries,complete:i.complete,villageCount:i.villages.length,pagesMissingTotal:i.villages.reduce((a,b)=>a+b.pagesMissing.length,0)},i.complete||c.warnings.push("清单解析完整性校验未通过(序号缺口/页码缺失),蓝图覆盖校验将兜底报告")),c.stage="阶段 A";let j=i||{entries:[],villages:[],totalEntries:0,sourceFile:"",complete:!1,diagnostics:{totalChunks:0,markdownChunks:0,declarationChunks:0,skippedChunks:0,droppedIncompleteRows:0}},k=function(a){let b=[...new Set(a.boq.entries.map(a=>`${a.section} ${a.subsection} ${a.name}`))].join(" "),c=[/管网|排水|雨污|污水|给水|检查井/u,/道路|路床|路面|路缘石|青砖|散水/u,/绿化|栽植|种植|苗木|景观|喷播/u,/路灯|亮化|照明/u].filter(a=>a.test(b)).length;if(a.boq.villages.length>0&&c>=3)return F;let d=[{strategy:G,patterns:[/砌体|装饰|幕墙|地下室|层高|户型|塔吊|塔式起重机|脚手架|抹灰|门窗|屋面|防水/u]},{strategy:I,patterns:[/桥墩|桥台|墩柱|盖梁|系梁|箱梁|梁板|支座|伸缩缝|桥面|隧道|洞身|衬砌|锚杆/u]},{strategy:J,patterns:[/路基|路面|沥青|水稳|摊铺|压实|面层/u]},{strategy:K,patterns:[/闸室|闸墩|闸门|启闭机|围堰|导流|堤防|护坡|护岸|疏浚|水下/u]}].map(a=>({strategy:a.strategy,count:a.patterns.reduce((a,c)=>{let d=b.match(RegExp(c.source,"gu"));return a+(d?d.length:0)},0)})).sort((a,b)=>b.count-a.count);if((d[0]?.count||0)>=2)return d[0].strategy;let e=function(a){let b,c=[["市政",/市政|管网|排水|给水|雨污|污水|燃气/gu],["公路",/公路|路基|路面|沥青/gu],["桥梁与隧道",/桥梁|隧道/gu],["水利水电",/水利|河道|灌溉|防洪/gu],["电力",/电力|供配电|电压|电缆/gu],["机电安装",/机电|暖通|通风|空调|消防|给排水|智能化|电梯/gu],["装饰装修",/装饰|装修|幕墙/gu],["园林绿化",/园林|绿化|景观|苗木/gu],["铁路",/铁路|轨道/gu],["港口与航道",/港口|航道/gu],["矿山冶金",/矿山|冶金/gu],["房建",/房建|建筑|住宅|楼|结构|砌体|基坑|地下室|主体|层高|户型|公共建筑|产业园|厂房/gu]].map(([b,c])=>(c.lastIndex=0,{type:b,count:(a.match(c)||[]).length})).sort((a,b)=>b.count-a.count),d=c[0],e=0,f=0;for(let[c,d]of[["房建",/产业园|标准厂房|安置房|住宅小区|保障房|卫生院|门诊楼|办公楼/gu],["市政",/老旧小区|海绵城市|雨污分流|管网改造|管廊/gu],["桥梁与隧道",/桥梁|隧道|盾构|箱梁|斜拉|悬索|涵洞/gu],["公路",/公路|路基|路面|沥青|桩号|互通|匝道/gu],["水利水电",/堤防|水库|泵站|水闸|疏浚|节制闸|水电站|大坝|围堰/gu],["电力",/变电站|输电线路|配电|GIS设备|电缆|架空线路|铁塔|箱变/gu],["铁路",/铁路|轨道|道床|站台|信号机|接触网/gu],["港口与航道",/港口|码头|航道|护岸|堆场|泊位/gu],["矿山冶金",/矿山|矿井|选矿|冶炼|尾矿|轧钢/gu]]){d.lastIndex=0;let g=(a.match(d)||[]).length;g>=3&&g>e?(f=e,b=c,e=g):g>f&&(f=g)}if(b){if(f>0&&e<2*f&&d&&d.count>e)return d.type;let a=c.find(a=>a.type===b)?.count||0;return d&&d.type!==b&&d.count>2*a&&d.count>=2*e?d.type:b}return d&&d.count>0?d.type:"其他"}(`${a.templateName||""} ${a.basicFacts||""} ${a.chapterTitles.join(" ")} ${b}`);return"房建"===e||"装饰装修"===e?G:"桥梁与隧道"===e?I:"公路"===e?J:"水利水电"===e?K:H}({basicFacts:a.basicFacts,templateName:a.templateName,chapterTitles:a.chapterTitles,boq:j}),l=function(a){var b;let{boq:c}=a,d=a.strategy||F,h=N(c),i=function(a){let b=[];for(let c of O)for(let d of a.entries){if(!c.namePattern.test(`${d.name} ${d.description}`))continue;let a=c.extract(d);if(a){b.push({key:c.key,value:a,source:`清单条目 ${d.seq}「${d.name}」特征原文`,amount:c.amount});break}}return b}(c),j=function(a,b){let c=/(\d+)\s*个(?:美丽宜居)?自然村/u.exec(a);if(c)return Number(c[1]);let d=/(\d+)\s*个(?:美丽宜居)?自然村/u.exec(b);return d?Number(d[1]):0}(a.projectName,a.basicFacts||"")||c.villages.length;j>0&&i.push({key:"自然村数量",value:`${j} 个自然村`,source:"招标文件项目名称(清单自然村分组兜底)"});let k=function(a){let b={},c=a.entries.filter(a=>"垫层"===a.name).map(a=>/C\d{2}/u.exec(a.description)?.[0]).filter(a=>!!a);if(c.length>0){let a=new Map;for(let b of c)a.set(b,(a.get(b)||0)+1);b.cushion=[...a.entries()].sort((a,b)=>b[1]-a[1]||(a[0]<b[0]?-1:1))[0][0]}return b}(c),l=function(a,b){let c=/(?<!节点)(?<!阶段)(?<!分项)(?<!关键)(?:计划工期|合同工期|工期总日历天数|工期控制|工期目标|总工期|工期)[^。;;\n]{0,12}?(\d{1,4})\s*个?\s*日历天/u.exec(a)||/(\d{1,4})\s*个?\s*日历天[^。;;\n]{0,8}?(?:总工期|倒排|分解|完成)/u.exec(a),d=c?Number(c[1]):0,e=/质量(?:标准|要求)[^。;;\n]{0,20}?[::]\s*([^。;;\n]{1,20})/u.exec(a)||/合格/u.exec(a),f=e?(e[1]||"合格").trim():"",g=/(合造价〔\d{4}〕\d+号)/u.exec(a),h=g?g[1]:"",i=/(?:合同估算价|招标控制价|最高投标限价|项目总投资|投资估算|工程概算)[^。;;\n]{0,20}?([\d,]+(?:\.\d+)?)\s*万/u.exec(a);return{totalDays:d,qualityStandard:f,pricingFile:h,estimatedAmount:i?Number(i[1].replace(/,/g,"")):0}}(a.basicFacts||"",0),m=function(a,b,c=F){let d=b>0?b:360,e=c.milestoneGroups,f=e.map(b=>({...b,weight:a.entries.filter(a=>b.pattern.test(`${a.name} ${a.description}`)).reduce((a,b)=>a+b.quantity,0)})),g=Math.max(1,Math.round(.08*d)),h=d-g,i=f.slice(1),j=i.reduce((a,b)=>a+b.weight,0),k=f.reduce((a,b)=>a+b.weight,0),l=j<=0||k>0&&j/k<.05,m=l?0:j,n=i.length>0?Math.max(2,Math.round(.95*h/i.length)):0,o=[{key:"prep",label:e[0]?.label||"施工准备与清杂拆除",duration:g,basis:`前导工作封顶 8% 总工期(清杂整治可与主体并行穿插,不按工程量权重独占)`}];for(let a of i){if(l){o.push({key:a.key,label:a.label,duration:n,basis:`分部特征未命中策略分组(非 prep 权重占比 ${k>0?(j/k*100).toFixed(1):"0.0"}% < 5%),按总工期均分降级(每组 ${n} 天)`});continue}let b=Math.max(2,Math.round(a.weight/m*h*.95));o.push({key:a.key,label:a.label,duration:b,basis:`分部工程量权重 ${(a.weight/m*100).toFixed(1)}% \xd7 剩余工期 ${h} 天`})}let p=o.reduce((a,b)=>a+(b.duration||0),0);for(let a=o.length-1;a>=0&&p>d;a--){let b=p-d,c=Math.min(o[a]?.duration||0,b);o[a]&&c>0&&(o[a].duration=(o[a].duration||0)-c,p-=c)}return o}(c,l.totalDays,d),n=function(a,b,c=0,d=[],e=F){let f=Math.max(30,Math.round(.85*(b>0?b:360))),{groupOfEntry:g,laborUnitRange:h,tradeMapping:i,milestoneGroups:j}=e,k=new Map;for(let b of a.entries){if(b.quantity<=0)continue;let a=g(b),c=e.laborQuotaTable?.find(a=>a.pattern.test(`${b.name} ${b.description}`)&&a.unit===b.unit),d=c||h[a];if(!d||b.unit!==d.unit)continue;let f=i.find(a=>a.pattern.test(`${b.name} ${b.description}`))?.trade;if(!f)continue;let j=`${a}|${f}`,l=k.get(j)||{trade:f,workdaysMin:0,workdaysMax:0,unit:d.unit,basisQty:0,quota:c};l.quota!==c&&(l.quota=void 0),l.workdaysMin+=b.quantity*d.min,l.workdaysMax+=b.quantity*d.max,l.basisQty+=b.quantity,k.set(j,l)}let l=new Map;for(let a of k.values()){let b=l.get(a.trade)||{min:0,max:0,unit:a.unit,qty:0,quota:a.quota};b.quota!==a.quota&&(b.quota=void 0),b.min+=a.workdaysMin,b.max+=a.workdaysMax,b.qty+=a.basisQty,l.set(a.trade,b)}let m=[...l.entries()].sort((a,b)=>b[1].max-a[1].max).map(([a,b])=>({trade:a,min:Math.max(1,Math.round(b.min/f*1.3)),max:Math.max(1,Math.round(b.max/f*1.6)),basis:b.quota?`工种工程量约 ${Math.round(b.qty)}${b.unit} \xd7 定额工效(${b.quota.subName} ${b.quota.code},${b.quota.min}~${b.quota.max} 工日/${b.unit})\xf7 有效工期 ${f} 天(定额知识库命中)`:`工种工程量约 ${Math.round(b.qty)}${b.unit} \xd7 经验工效区间 \xf7 有效工期 ${f} 天(定额工效知识不全,降级区间表达)`})),n=m.reduce((a,b)=>a+(b.min||0),0),o=m.reduce((a,b)=>a+(b.max||0),0),p={min:Math.max(10,Math.round(.75*n)),max:Math.max(10,Math.round(.9*o))},q=p,r=`各工种同期在场按 0.75~0.9 重叠系数折算(各工种人数区间之和 ${n}~${o} 人)`;if(c>0){let a=P(c,f,e),b=Math.max(p.min,a.min),d=Math.min(p.max,a.max);b<=d?(q={min:b,max:d},r=`工程量推导区间 [${p.min}, ${p.max}] 与造价锚定区间 [${a.min}, ${a.max}] 的交集(${a.detail})`):(q={min:a.min,max:a.max},r=`工程量推导区间 [${p.min}, ${p.max}] 与造价锚定区间 [${a.min}, ${a.max}] 无交集,以造价锚定区间为准(${a.detail})`)}let s=Math.round((q.min+q.max)/2),t=[];for(let b of j){let c=a=>e.laborQuotaTable?.find(b=>b.pattern.test(`${a.name} ${a.description}`)&&b.unit===a.unit)||h[g(a)],k=a.entries.filter(a=>{if(a.quantity<=0||!b.pattern.test(`${a.name} ${a.description}`))return!1;let d=c(a);return!!d&&a.unit===d.unit&&i.some(b=>b.pattern.test(`${a.name} ${a.description}`))});if(0===k.length)continue;let l=k.reduce((a,b)=>a+b.quantity*(c(b)?.min||0),0),m=k.reduce((a,b)=>a+b.quantity*(c(b)?.max||0),0),n=d.find(a=>a.key===b.key)?.duration||Math.max(1,Math.round(f/j.length)),o=Math.max(1,Math.round(l/n*1.3)),p=Math.max(o,Math.round(m/n*1.6));t.push({phase:b.label,min:Math.min(o,s),max:Math.min(p,s),basis:`阶段条目工程量约 ${Math.round(k.reduce((a,b)=>a+b.quantity,0))} \xd7 经验工效区间 \xf7 阶段 ${n} 天(不均匀系数 1.3~1.6,同时在场人数按峰值 ${s} 人封顶)`})}let u=j[j.length-1];if(t.length>0&&u&&!t.some(a=>a.phase===u.label)){let a=Math.max(1,Math.round(.2*s));t.push({phase:u.label,min:a,max:a,basis:`收尾阶段零星作业兜底(峰值 ${s} 人的 20%),不参与工日推导`})}let v=m.map(a=>({trade:a.trade,mid:Math.max(1,Math.round(((a.min??1)+(a.max??a.min??1))/2))})),w=v.reduce((a,b)=>a+b.mid,0)||1,x=v.map(a=>({trade:a.trade,quota:a.mid*s/w})),y=x.map(a=>({trade:a.trade,count:Math.max(1,Math.floor(a.quota))})),z=s-y.reduce((a,b)=>a+b.count,0);if(z>0){let a=x.map((a,b)=>({index:b,frac:a.quota-Math.floor(a.quota)})).sort((a,b)=>b.frac-a.frac);for(let b=0;z>0&&b<a.length;b+=1){let c=a[b];if(!c)continue;let d=y[c.index];d&&(d.count+=1,z-=1)}}else if(z<0){let a=x.map((a,b)=>({index:b,quota:a.quota})).sort((a,b)=>a.quota-b.quota);for(let b=0;z<0&&b<a.length;b+=1){let c=a[b];if(!c)continue;let d=y[c.index];d&&!(d.count<=1)&&(d.count-=1,z+=1)}}let A=y.map(a=>({trade:a.trade,count:a.count,basis:`工种构成唯一口径:按工种工程量区间中值比例收敛(合计恒等于峰值 ${s} 人)`}));return{peak:q,peakValue:s,peakBasis:r,byPhase:t,byTrade:m,composition:A}}(c,l.totalDays,l.estimatedAmount||0,m,d),o=function(a,b=F){let c=[];for(let d of b.equipmentMapping){let b=a.entries.filter(a=>d.pattern.test(`${a.name} ${a.description}`)&&(!d.unit||a.unit===d.unit));if(0===b.length)continue;let e=b.reduce((a,b)=>a+b.quantity,0),f=Math.max(1,Math.min(4,Math.ceil(Math.log10(Math.max(10,e))-1))),g=Math.max(f,Math.min(8,f+2));c.push({name:d.name,spec:d.spec,min:f,max:g,basis:`${d.basis};相关条目工程量合计约 ${Math.round(e)}${b[0]?.unit||""}`})}return c}(c,d),p=function(a){let b=new Map;for(let c of a.entries){if(!c.name||c.quantity<=0)continue;let a=function(a){let b=[];for(let c of Q){let d=c.exec(a);d&&d[0]&&(b.some(a=>a.includes(d[0])||d[0].includes(a))||b.push(d[0]))}return b.join(" ")}(`${c.name} ${c.description}`),d=a?`${c.name}||${a}`:c.name,e=b.get(d);e?e.quantity+=c.quantity:b.set(d,{name:c.name,quantity:c.quantity,unit:c.unit,spec:a||void 0})}return[...b.values()].sort((a,b)=>b.quantity-a.quantity).map(a=>({name:a.name,quantity:Math.round(1e3*a.quantity)/1e3,unit:a.unit,spec:a.spec,batchDesc:"按施工段分批进场",basis:"清单汇总 + 进度匹配"}))}(c),q=function(a,b=F){let c=[];for(let d of b.inspectionBatchRules){let b=a.entries.filter(a=>d.namePattern.test(a.name)&&(!d.unit||a.unit===d.unit)).reduce((a,b)=>a+b.quantity,0);if(b<=0)continue;let e=d.divisor>0?Math.max(1,Math.ceil(b/d.divisor)):0,f=d.descTemplate.replace("{count}",String(e)).replace("{total}",String(Math.round(1e3*b)/1e3));c.push({scope:d.scope,planDesc:f})}return c}(c,d),r=function(a){let b=a.entries.filter(a=>/挖一般土方|挖沟槽土方|挖基坑土方|清淤/u.test(a.name)&&"m3"===a.unit).reduce((a,b)=>a+b.quantity,0),c=a.entries.filter(a=>/回填|路肩土|种植土/u.test(a.name)&&"m3"===a.unit).reduce((a,b)=>a+b.quantity,0),d=Math.max(0,Math.round((b-c)*1e3)/1e3);return{excavation:Math.round(1e3*b)/1e3,backfill:Math.round(1e3*c)/1e3,disposal:d,basis:"清单挖/填/弃量汇总(挖方含清淤),补疑口径:购土回填运距自行考虑"}}(c),s=function(a,b,c=F){let{machinePowerTable:d,powerFallbackText:e,waterNoteText:f}=c,g=a.filter(a=>!R.has(a.name)).reduce((a,b)=>a+(d.find(a=>a.name===b.name)?.kw||0)*(b.min||1),0),h=g>0?`按电动机具负荷计算,用电负荷约 ${Math.round(.7*g)} kW(电动机具总功率约 ${Math.round(g)} kW,同时系数 0.7),${e}`:e,i=Math.round(60*b.peakValue/1e3*10)/10;return{powerLoad:h,waterUsage:`生活用水按高峰人数 ${b.peakValue} 人、每人每日 60L 计算,高峰日生活用水量约 ${i} m\xb3;${f}`}}(o,n,d),t=(a.evidence||[]).map(a=>String(a.content||"")).join("\n"),u=function(a,b){let c=function(){let a=g.join(f.homedir(),".customize-agent","template-references"),b=g.join(a,"files","standard-blocks");if(!e.existsSync(b))return[];let c=g.join(a,"standard-blocks.json"),d=[];if(e.existsSync(c))try{d=(JSON.parse(e.readFileSync(c,"utf8")).blocks||[]).map(a=>a.id)}catch{d=[]}return 0===d.length&&(d=e.readdirSync(b).filter(a=>a.endsWith(".md")).map(a=>a.replace(/\.md$/u,""))),d.flatMap(a=>{let c=g.join(b,`${a}.md`);if(!e.existsSync(c))return[];let d=e.readFileSync(c,"utf8"),f=(/^title:\s*(\S.*)$/mu.exec(d)||[])[1]?.trim()||a;return[{id:a,title:f,source:(/^source:\s*(\S.*)$/mu.exec(d)||[])[1]?.trim()||"",lines:d.split("\n").filter(Boolean)}]})}(),d=[],h=[];for(let e of c){let c=[],f=!1;for(let a of e.lines){if(a.startsWith("---")||/^(id|title|source|updatedAt|tags):/u.test(a)||a.startsWith("# "))continue;if(a.startsWith("## ")){f=!0;continue}if(f)continue;let b=a.trim();if(!/^[-*\d]+[.、]?\s+/u.test(b))continue;let d=b.replace(/^[-*\d]+[.、]?\s+/u,"").trim();d&&c.push(d)}if("hazardous-works-37"===e.id){let c=function(a,b){let c,d=[],e=[...b.matchAll(/(?:开挖深度|挖深|基坑深度|沟槽深度)[^。;;\n]{0,30}?(\d+(?:\.\d+)?)\s*m/gu)].map(a=>Number(a[1])),f=a.entries.some(a=>/挖一般土方|挖沟槽|挖基坑/u.test(a.name)),g=!1;if(f){d.push("基坑(槽)土方开挖、降水——判定阈值:开挖深度超过3m(含3m)属危大工程,超过5m(含5m)属超过一定规模(须专家论证)");let a=e.length>0?Math.max(...e):void 0;void 0===a?(c="本项目含沟槽/基坑土方开挖,但资料(清单特征「挖土深度:详见设计图纸」)未给出具体开挖深度,危大等级判定待人工确认(不静默判定)",g=!0):c=a<3?`资料确认最大开挖深度 ${a}m < 3m,未达危大工程阈值,按一般土方工程管控`:a<5?`资料确认最大开挖深度 ${a}m,达到 3m(含)未达 5m,属危大工程,需编制专项施工方案(施工单位技术负责人审核签字、总监理工程师审查签字)`:`资料确认最大开挖深度 ${a}m ≥ 5m,属超过一定规模的危大工程,专项方案须专家论证(不少于5名符合专业要求的专家)`}else c="本项目清单未含基坑(槽)土方开挖条目,基坑工程危大判定不涉及";return d.push("专家论证程序:超过一定规模的危大工程专项方案组织不少于5名符合专业要求的专家论证;修改后的方案由施工单位技术负责人审核签字、加盖单位公章,并由总监理工程师审查签字、加盖执业印章后方可实施"),{items:d,conclusion:c,gap:g}}(a,b);d.push({id:"hazardous_works",title:"危大工程判定",source:e.source,items:[...c.items,`本项目判定结论:${c.conclusion}`],gap:c.gap})}else d.push({id:e.id,title:e.title,source:e.source,items:c.slice(0,30)})}for(let a of["organization","construction_prep","survey_plan","product_protection","emergency_plans","seasonal_measures","fire_control","tech_management","smart_site","handover_warranty","quality_innovation"])h.push(a),d.push({id:a,title:a,source:"(缺口:参考文档资产未建设)",items:[],gap:!0});return{blocks:d,gaps:h}}(c,t),v=function(a,b=F){let c=a.villages.map(a=>a.villageGroup).map(a=>({name:a,basis:"清单按自然村分组(工程名称)"})),d=c.length>1&&b.multiVillageFlow?.(c.length)||b.deploymentFlowFallback,e=[...new Set(a.entries.map(a=>a.section).filter(Boolean))];return{sections:c,sequence:e.length>0?e.join(" → "):b.sequenceFallback,sequenceBasis:"清单分部分项编排顺序归纳",flow:d}}(c,d),w=function(a,b=F){let c=[];for(let d of b.difficultyTemplates)d.test(a)&&c.push({name:"function"==typeof d.name?d.name(a):d.name,measure:d.measure,basis:d.basis});return 0===c.length&&c.push({name:"多工序交叉施工组织",measure:"按清单分部分项编排顺序组织流水作业,加强工序衔接检查",basis:"清单分部分项结构"}),c}(c,d),x=function(a){let b=V({facts:a.facts||[],evidence:a.evidence||[]}),c=[];a.contract&&a.contract.totalDays>0&&c.push({id:"contract_days",label:"总工期",values:[`${a.contract.totalDays} 日历天`]}),a.labor&&a.labor.peakValue>0&&c.push({id:"labor_peak",label:"劳动力峰值",values:[`${a.labor.peakValue} 人`]});let d=a.villageCount||0;if(d>0&&c.push({id:"village_count",label:"自然村数量",values:[`${d} 个自然村`]}),a.boq){let b=function(a){let b=new Map;for(let c of a.entries){if(!c.name||c.quantity<=0||/暂列|金额|计日工|税|费/u.test(c.name)||!c.section)continue;let a=b.get(c.section)||[];a.push(c),b.set(c.section,a)}return[...b.entries()].sort((a,b)=>b[1].length-a[1].length).slice(0,3).map(([a,b])=>{let c=[...b].sort((a,b)=>b.quantity-a.quantity||(a.name<b.name?-1:1))[0];return`${c.name} ${c.quantity}${c.unit}(${a})`})}(a.boq);b.length>0&&c.push({id:"core_quantities",label:"核心工程量",values:b})}return{entries:[...b,...c]}}({facts:a.facts,evidence:a.evidence,contract:l,labor:n,boq:c,villageCount:j}),y=[...new Set(c.entries.map(a=>a.section).filter(Boolean))],z=function(a){if(!a)return"";let b=/建设地点[:: \t|]*([^。;;\n|]{2,40}?)(?=[,,。;;\n|]|工期|质量标准|合同估算)/u.exec(a);return b?b[1].trim().replace(/[,,、\s]+$/gu,""):""}(a.basicFacts||""),A=z?function(a){for(let b of D)if(b.pattern.test(a))return{...b.climate};return{rainySeason:"",highTemp:"",winter:""}}(z):(b=d.climateZone)&&D.find(a=>a.zone===b)?.climate||{rainySeason:"",highTemp:"",winter:""},B=[];return m.some(a=>a.basis.includes("均分降级"))&&B.push("里程碑分组未命中策略特征(非 prep 权重占比 < 5%),已按总工期均分降级,详见 data.milestones.basis"),A.rainySeason||B.push("气候区域未识别,季节施工由写作层按建设地点常识处理"),{data:{project:{name:a.projectName||"(待提取:项目名称)",scope:c.villages.length>0?`${c.villages.length} 个自然村分组(${c.villages.map(a=>a.villageGroup).join("、")})`:"",works:y,location:z},contract:{totalDays:l.totalDays,qualityStandard:l.qualityStandard,pricingFile:l.pricingFile,estimatedAmount:l.estimatedAmount||void 0},climate:A,milestones:m,resources:{labor:n,equipment:o},materialsPlan:p,fundPlan:{wageRule:"工资性工程款按合造价〔2022〕8号执行",usagePlan:"按进度分阶段使用"},testPlan:[],earthworkBalance:r,tempUtilities:s,redLineFacts:i,amountRule:"商务禁区延续:金额类数据禁入正文(合同估算价例外),fund_plan/red_line_facts 渲染时遵守",decisionLock:x,quantities:h,specAuthorities:k,inspectionBatches:q,standardBlocks:u.blocks,constructionDeployment:v,keyDifficulties:w,basisRegulations:Y(`${a.basicFacts||""}
225
- ${t}`),drawingNote:"总平面布置图/横道图/组织机构图为后期人工配图,蓝图只规划对应章节正文内容"},diagnostics:{standardBlocksLoaded:u.blocks.filter(a=>!a.gap).length,standardBlockGaps:u.gaps,warnings:B}}}({boq:j,basicFacts:a.basicFacts,evidence:a.evidence,facts:a.facts,projectName:d.projectCode||"",strategy:k});c.standardBlocksLoaded=l.diagnostics.standardBlocksLoaded,c.standardBlockGaps=l.diagnostics.standardBlockGaps,c.warnings.push(...l.diagnostics.warnings),c.stage="阶段 B/C";let m=function(a){let{chapterTitles:b,boq:c}=a;return{chapters:b.map((b,d)=>{var e;let f=String(d+1),g=Z.filter(a=>a.chapterPattern.test(b)).map(a=>`${a.item}(评审权重 ${a.weight})`),h=/主要分部分项|施工方案|施工方法/u.test(b)?function(a,b){let c=new Map;for(let b of a.entries){if(!b.section)continue;let a=c.get(b.section)||[];a.push(b),c.set(b.section,a)}let d=[],e=0;for(let[a,f]of c){let c=$(a,f),g=f.some(a=>"unit-project"===a.sectionKind),h=[];if(g){let a=new Map;for(let b of f){let d=b.subsection||c,e=a.get(d)||[];e.push(b),a.set(d,e)}for(let[b,c]of a)h.push(aa($(b,c),c))}else h.push(aa(c,f));e+=1,d.push({id:`${b}.${e}`,title:c,targetWords:2400,requiredParams:h.flatMap(a=>Object.keys(a.quantities).slice(0,5).map(a=>({path:`data.quantities.${a}`,mode:"must_cite",strict:!0}))),scoredItems:["评标分项:主要施工方法(1.5)"],tablePlans:[],workPackages:h})}return d}(c,f):[];return{id:f,title:b,isActive:(e=a.docType,!(/专项施工方案|专项方案|危大/u.test(e)&&/总平面|平面布置|施工部署|总体部署/u.test(b))),requiredParams:[],scoredItems:g,subSections:h}})}}({chapterTitles:a.chapterTitles,boq:j,docType:d.docType});c.stage="阶段 D";let n={meta:d,data:l.data,outline:m,validation:{passed:!1,checks:[]},diagnostics:c};return n.validation=function(a,b){let c=[],d=(0,A.Jx)(a,L);c.push({name:"1. Schema 校验",passed:0===d.length,message:0===d.length?"结构/类型/必填/边界全部通过":d.join(";")});let e=function(a,b){let c=[];if(b){let d=N(b);for(let[b,e]of Object.entries(a.data.quantities)){let a=d[b];if(!a){c.push(`quantities.${b} 不在清单解析产物值集中(疑似编造)`);continue}a.value!==e.value&&c.push(`quantities.${b} 数值 ${e.value} 与清单聚合值 ${a.value} 不一致`)}}for(let b of a.data.redLineFacts)b.value&&b.source||c.push(`红线事实「${b.key}」缺值或缺来源`);if(b){let d=[...F.equipmentMapping,...G.equipmentMapping,...H.equipmentMapping,...I.equipmentMapping,...J.equipmentMapping,...K.equipmentMapping];for(let e of a.data.resources?.equipment||[]){let a=d.find(a=>a.name===e.name);if(!a)continue;let f=b.entries.filter(b=>a.pattern.test(`${b.name} ${b.description}`)&&b.unit===a.unit).reduce((a,b)=>a+b.quantity,0),g=/合计约\s*([\d.]+)/u.exec(e.basis);g&&Number(g[1])!==Math.round(f)&&c.push(`机械「${e.name}」basis 工程量 ${g[1]} 与清单同单位聚合 ${Math.round(f)} 不一致`)}}return c}(a,b);c.push({name:"2. 事实锚定校验",passed:0===e.length,message:0===e.length?"L1a 值全部 ∈ 清单解析产物值集,红线事实逐条有源":e.join(";")});let f=function(a,b){let c=[],d=a.outline.chapters.flatMap(a=>a.subSections).flatMap(a=>a.workPackages);if(b){let a=new Set;for(let b of d)for(let c of b.coveredSeqs)a.add(c);let e=b.entries.filter(b=>b.section&&!a.has(b.seq));e.length>0&&c.push(`清单条目零丢失校验失败:${e.length} 条未被工作包覆盖(如序号 ${e.slice(0,5).map(a=>a.seq).join("、")})`)}let e=new Set;for(let b of a.outline.chapters)for(let a of b.scoredItems)e.add(a.split("(")[0]||"");let f=Z.filter(a=>![...e].some(b=>b.includes(a.item))).map(a=>a.item);return f.length>0&&c.push(`十项评审承接缺失:${f.join("、")} 无章/节显性承接声明`),0===a.data.keyDifficulties.length&&c.push("重难点及保证措施未逐项列明(十项评审⑩硬要求)"),c}(a,b);c.push({name:"3. 覆盖校验",passed:0===f.length,message:0===f.length?"清单条目零丢失、十项评审全承接、重难点逐项列明":f.join(";")});let g=function(a){let b=[],c=a.data.contract?.totalDays||0,d=(a.data.milestones||[]).reduce((a,b)=>a+(b.duration||0),0);c>0&&d>c&&b.push(`里程碑总和 ${d} 天超过总工期 ${c} 天`);let{labor:e}=a.data.resources||{};if(e){for(let a of(e.peak&&e.peak.min>e.peak.max&&b.push(`劳动力峰值区间异常(min ${e.peak.min} > max ${e.peak.max})`),e.peakValue>0&&e.peak&&(e.peakValue<e.peak.min||e.peakValue>e.peak.max)&&b.push(`劳动力峰值唯一口径 ${e.peakValue} 人超出推导区间 ${e.peak.min}~${e.peak.max} 人`),e.byTrade||[]))(a.min||0)>(a.max||0)&&b.push(`工种「${a.trade}」人数区间异常`);let d=a.data.contract?.estimatedAmount||0;if(d>0&&e.peakValue>0&&c>0){let a=P(d,Math.max(30,Math.round(.85*c))),f=Math.round(.6*a.min),g=Math.round(1.3*a.max);(e.peakValue<f||e.peakValue>g)&&b.push(`劳动力峰值 ${e.peakValue} 人超出造价锚定量级窗口 [${f}, ${g}] 人(合同估算价 ${d} 万元锚定)`)}}let f=new Set((a.data.decisionLock?.entries??[]).map(a=>a.id));for(let c of(a.data.contract?.totalDays>0&&!f.has("contract_days")&&b.push(`决策锁缺失数据条目 contract_days(总工期 ${a.data.contract.totalDays} 日历天未入锁)`),e&&e.peakValue>0&&!f.has("labor_peak")&&b.push(`决策锁缺失数据条目 labor_peak(劳动力峰值 ${e.peakValue} 人未入锁)`),a.data.redLineFacts?.some(a=>"自然村数量"===a.key)&&!f.has("village_count")&&b.push("决策锁缺失数据条目 village_count(自然村数量红线事实未入锁)"),a.data.resources?.equipment||[]))(c.min||0)>(c.max||0)&&b.push(`机械「${c.name}」台数区间异常`);let g=(a.data.standardBlocks||[]).find(a=>"six-hundred-percent"===a.id);return g&&!g.gap&&6!==g.items.length&&b.push(`扬尘治理六个百分百板块条目数 ${g.items.length} 条(应为恰六条)`),b}(a);c.push({name:"4. 内部一致性校验",passed:0===g.length,message:0===g.length?"里程碑/劳动力/机械区间自洽":g.join(";")});let h=function(a){let b=!a.consistencyErrors.some(a=>/里程碑|总工期/u.test(a)),c=!a.consistencyErrors.some(a=>/劳动力|工种/u.test(a)),d=!a.consistencyErrors.some(a=>/机械/u.test(a));return{laborPeak:a.schemaPassed&&a.factPassed&&c,schedule:a.schemaPassed&&a.factPassed&&b,blueprint:a.schemaPassed&&a.factPassed&&a.coveragePassed&&d}}({schemaPassed:0===d.length,factPassed:0===e.length,coveragePassed:0===f.length,consistencyErrors:g});return{passed:c.every(a=>a.passed),checks:c,authorityAvailability:h}}(n,i),n.validation.passed||c.warnings.push(`蓝图校验未通过:${n.validation.checks.filter(a=>!a.passed).map(a=>a.name).join("、")}(一期旁路仅报告,不阻断生成)`),c.durationMs=Date.now()-b,n}function aw(a,b){let c=g.join((0,C.Gl)(a),"assets","blueprint.json");return e.writeFileSync(c,JSON.stringify(b,null,2),"utf8"),c}z.ts.length},85016:(a,b,c)=>{c.d(b,{D$:()=>g,NR:()=>l,WT:()=>k,fc:()=>m});var d=c(37047),e=c(22157);let f=[{anchor:"按工作包逐项说明施工内容",required:/工作包|逐项说明/u},{anchor:"本项目已确认资料",required:/已确认|确认资料|本项目资料/u},{anchor:"已确认的项目资料显示",required:/已确认|项目资料/u},{anchor:"根据已确认资料",required:/已确认/u},{anchor:"生成后事实反查未通过",required:/事实反查|反查/u},{anchor:"资料事实主表",required:/事实主表/u},{anchor:"事实卡",required:/事实卡/u},{anchor:"后台数据库记录",required:/后台数据库|后台记录/u},{anchor:"证据摘要中未包含",required:/证据摘要/u},{anchor:"本专业工程主要清单项落位如下",required:/清单项落位|落位如下/u},{anchor:"针对招标文件及补疑文件的技术要求进行专项落位",required:/专项落位/u},{anchor:"全文数据口径必须唯一",required:/数据口径|峰值口径|控制口径|口径必须唯一/u}],g=/工作包|事实卡|事实主表|后台数据库|落位|峰值口径|控制口径|数据口径/gu,h=/工作包|事实卡|事实主表|后台数据库|落位|峰值口径|控制口径|数据口径/u,i=/^\d+(?:\.\d+)*\s+\S+/u;function j(a,b){let c=Math.min(a.length,b.length),d=0;for(let e=0;e<c;e+=1)d+=a[e]*b[e];return d}async function k(a){let b=[],c=[...new Set(a.match(g)||[])];c.length>0&&b.push({level:"error",severity:"blocker",category:"format",owner:"system",repairability:"llm_repairable",message:`正式正文仍包含后台内部术语“${c.join("”“")}”,需要按上下文语义改写为正式术语`,suggestion:"请结合语境改写:“拆除工程工作包”→“拆除工程”,“按工作包逐项说明”→“按专业工程逐项说明”;禁止出现生成系统后台概念。",provenance:{detectorId:"internal-terminology-anchor",fingerprint:(0,e.c6)(a)}});let h=a.split(/\r?\n/u).map(a=>a.trim()).filter(a=>!/^#{1,6}\s/u.test(a)&&!/^\s*\|/u.test(a)&&!(i.test(a)&&a.length<=40&&!/[。!?!?;;,,::]/.test(a))).flatMap(a=>a.split(/(?<=[。!?!?;;])/u).map(a=>a.trim())).filter(a=>a.length>=8&&a.length<=80).slice(0,200);if(0===h.length)return b;let k=(0,d.VN)(),[l,m]=await Promise.all([k.embedDocuments(h),k.embedDocuments(f.map(a=>a.anchor))]),n=[];for(let a=0;a<h.length;a+=1){let b=l[a];if(!b||0===b.length)continue;let c=h[a];if(f.some(a=>a.required.test(c))&&(Math.max(...m.map(a=>j(b,a)))>=.62&&n.push(c.slice(0,24)),n.length>=6))break}return n.length>0&&b.push({level:"error",severity:"blocker",category:"format",owner:"system",repairability:"llm_repairable",message:`正式正文疑似包含后台内部话术(语义锚点命中 ${n.length} 处):${n.map(a=>`“${a}…”`).join("、")}`,suggestion:"将内部话术(已确认资料/事实卡/工作包等生成系统概念)改写为面向评标人的正式表述,仅陈述项目事实与施工内容。",provenance:{detectorId:"internal-terminology-anchor",fingerprint:(0,e.c6)(a)}}),b}async function l(a){let b=a.split(/\r?\n/u),c=a=>{let b=a.trim();return!!(/^#{1,6}\s/u.test(b)||/^\s*\|/u.test(b))||i.test(b)&&b.length<=40&&!/[。!?!?;;,,::]/.test(b)},e=[];b.forEach((a,b)=>{if(c(a))return;let d=a.split(/(?<=[。!?!?;;])/u).map(a=>a.trim()).filter(a=>h.test(a)||a.length>=8&&a.length<=80&&f.some(b=>b.required.test(a)));d.length>0&&e.push({index:b,sentences:d})});let g=e.flatMap(a=>a.sentences);if(0===g.length)return a;let k=g.filter(a=>h.test(a)),l=g.filter(a=>!h.test(a)).slice(0,200),m=new Set(k);if(l.length>0){let a=(0,d.VN)(),[b,c]=await Promise.all([a.embedDocuments(l),a.embedDocuments(f.map(a=>a.anchor))]);l.forEach((a,d)=>{let e=b[d];e&&0!==e.length&&Math.max(...c.map(a=>j(e,a)))>=.62&&m.add(a)})}return 0===m.size?a:b.map((a,b)=>{if(c(a))return a;let d=a;for(let a of m)d.includes(a)&&(d=d.split(a).join(""));return d}).join("\n")}function m(a){let b=0,c=a=>a.replace(/(职责|责任|分工|任务|措施|要求|管理|控制|工作|专项|标准|管控|验收|培训|教育|巡检|检查)落位/gu,"$1落实").replace(/(作业面|平面|现场|位置|点位|布局|空间|场地|工序|区域|临时设施|堆场|通道|道路|设备|设施|材料|构件|管线|照明|灯具|站房|楼层|部位)落位/gu,"$1布置").replace(/落位/gu,"落实");return{markdown:a.split(/\r?\n/u).map(a=>{let d=/^(#{1,6}\s+)(.*)$/u.exec(a);if(d){let e=d[2];if(!h.test(e))return a;let f=c(e);return f===e?a:(b+=1,`${d[1]}${f}`)}if(a.includes("|")&&a.includes("落位")){let d=c(a);if(d!==a)return b+=1,d}return a}).join("\n"),fixedCount:b}}},87635:(a,b,c)=>{c.d(b,{h:()=>s,jO:()=>r,ml:()=>k,qq:()=>i,xs:()=>h});var d=c(1218),e=c(51190),f=c(22157),g=c(13145);let h=["项目名称 项目编号 招标人 项目概况与招标范围 建设地点 建设规模 计划工期 质量标准 合同估算价","计划工期 合同工期 总工期 日历天","合同估算价 合同估算价格 投资估算 最高投标限价 招标控制价","质量标准 质量目标 合格","建设地点 建设规模 招标范围"];function i(a){let b=(0,d.de)(a),c=0;return/项目名称|工程名称|招标项目名称|项目编号|招标项目编号|招标人|建设单位|发包人/u.test(b)&&(c+=4),/计划工期|合同工期|总工期|\d+(?:\.\d+)?\s*(?:日历天|天|个月|月|年)/u.test(b)&&(c+=6),/合同估算价|投资估算|最高投标限价|招标控制价|\d+(?:\.\d+)?\s*(?:万元|元)/u.test(b)&&(c+=5),/质量标准|质量目标|合格|优良/u.test(b)&&(c+=4),/建设地点|建设规模|招标范围|项目概况与招标范围/u.test(b)&&(c+=4),/工程量|清单|图纸|设计说明|施工范围|施工内容|材料|设备|工艺|验收|复试|检测/u.test(b)&&(c+=3),/保证金账户|开户行|开户名称|收款账户|汇款|转账账户|电子交易系统|公共资源交易|开标时间|开标地点|评标委员会|评标办法/u.test(b)&&(c-=4),c}function j(a){return a.filter(a=>/项目名称|工程名称|项目编号|招标项目编号|招标人|建设单位|发包人|建设地点|建设规模|招标范围|计划工期|合同工期|周期要求|质量标准|合同估算|投资估算|最高投标限价|招标控制价/u.test(`${a.key||""}${a.fieldName||""}${a.fieldId||""}`))}function k(a){return(0,d.de)(a).replace(/PDF\s*第\s*\d+(?:\s*[-—至到~~]\s*\d+)?\s*页/giu,"相关资料").replace(/PDF\s*第(?![ \t]*[0-90-9])/giu,"").replace(/(\d)\s+(日)/gu,"$1$2").replace(/[。;;]$/u,"").trim()}let l=/(?:黄山杯|鲁班奖|白玉兰杯|钱江杯|扬子杯|安济杯|长安杯|汾水杯|省优|市优|国优|优质工程|确保[^。;;|,、,\n]{0,10}(?:杯|奖))/u;function m(a,b="",c=b){let g=function(a){let b=new Map;for(let c of a.split(/\r?\n/u)){if(!/^\|.*\|\s*$/u.test(c)||/^\|\s*:?-{3,}:?/u.test(c))continue;let a=c.trim().replace(/^\|/u,"").replace(/\|$/u,"").split("|").map(a=>a.replace(/\*\*/gu,"").trim());if(a.length<2)continue;let e="序号"===a[0]&&a.length>=3?a[1]:a[0],f="序号"===a[0]&&a.length>=3?a[2]:a[1],g="序号"===a[0]&&a.length>=4?a[3]:a[2],h=e.replace(/\/|:|:/gu,"").trim();if(!/项目名称|工程名称|项目编号|招标项目编号|招标人|项目业主|建设单位|发包人|建设地点|建设规模|施工范围|招标范围|计划工期|合同工期|质量标准|合同估算价|合同估算价格|投资估算|最高投标限价|招标控制价/u.test(h))continue;let i=/计划工期|合同工期/u.test(h)?"schedule_requirement":/质量标准/u.test(h)?"quality_standard":/合同估算价|合同估算价格|投资估算|最高投标限价|招标控制价/u.test(h)?"project_investment_estimate":/招标人|项目业主|建设单位|发包人/u.test(h)?"owner":/建设地点/u.test(h)?"project_location":/项目编号|招标项目编号/u.test(h)?"project_code":void 0;!(!f||/内容|参数|资料未明确|系统暂未从知识库确认|项目资料暂未明确/u.test(f))&&(0,d.R7)(i||"project_name",f)&&b.set(h,[k(f),k(g||"项目资料")||"项目资料"])}return b}(b),h=(0,e.mN)({facts:a,markdown:c}),i=a=>k((0,f.lG)(a||"")).replace(/\|/gu,"").replace(/\bCOL\d+\b/gu,"").replace(/\s{2,}/gu," ").trim(),j=(a,b)=>{let e=h.get(a);if(e){let b=i(e.value);if(b&&(0,d.R7)(a,b))return[b,e.source||"项目资料"]}let f=function(a,b){for(let[c,d]of a.entries())if(b.some(a=>a.test(c)))return d}(g,b);return f&&(0,d.R7)(a,f[0])?[f[0],f[1]||"项目资料"]:("project_name"===a?(()=>{let a=[/([\u4e00-\u9fa5A-Za-z0-9()()\-—_\s·]+?(?:施工总承包项目|一期项目|学生宿舍一期|学生宿舍项目))/u.exec(c)?.[1],/项目名称[::\s|]+([^|\n。;;]{6,80})/u.exec(c)?.[1]].map(i).filter(a=>a&&(0,d.R7)("project_name",a));return a[0]?[a[0],"项目资料"]:void 0})():void 0)||["",""]},n=[["项目名称",...j("project_name",[/项目名称|工程名称|project_name/u])],["项目编号",...j("project_code",[/项目编号|招标项目编号|project_code/u])],["招标人",...j("owner",[/招标人|项目业主|建设单位|发包人|owner/u])],["建设地点",...j("project_location",[/建设地点|project_location/u])],["建设规模",...j("project_scale",[/建设规模|project_scale/u])],["计划工期",...j("schedule_requirement",[/计划工期|合同工期|周期要求|schedule_requirement/u])],["质量标准",...j("quality_standard",[/质量标准|quality_standard/u])],["合同估算价",...j("project_investment_estimate",[/合同估算|投资估算|最高投标限价|招标控制价|project_investment_estimate/u])]],o=n.find(([a])=>"质量标准"===a);if(o&&o[1]&&!l.test(o[1])){let b=function(a,b){let c=a.filter(a=>/创优|优质优价|奖项|奖惩|award/u.test(`${a.fieldId||""}${a.key||""}${a.fieldName||""}`));if(c.some(a=>{let b=k((0,f.lG)(a.value||""));return!!b&&/^(?:无|否|不设|未设|无创优|无奖项|不作|不要求|不设创优)$/u.test(b.trim())}))return;let d=[];for(let a of c)d.push(k((0,f.lG)(a.value||"")));for(let a of(d.push(b),d)){let b=/(?:确保|争创|力争|确保获得)[^。;;|,、,\n]{0,12}(?:杯|奖|优质工程)/u.exec(a);if(!b)continue;let c=b[0].trim();if(c.length>=5&&c.length<=24)return c}}(a,c);b&&!o[1].includes(b)&&(o[1]=`${o[1]},${b}`)}return n.filter(([,a])=>!!a).map(([a,b,c])=>[a,b,c||"项目资料"])}function n(a,b="",c=b){return["**项目基本信息表**","","| 信息项 | 内容 |","|---|---|",...m(a,b,c).map(a=>`| ${a[0]} | ${a[1]} |`)].join("\n")}let o=[/^项目名称$/u,/^工程名称$/u,/^项目编号$/u,/^招标项目编号$/u,/^招标人$/u,/^项目业主$/u,/^建设单位$/u,/^发包人$/u,/^建设地点$/u,/^实施地点$/u,/^建设规模$/u,/^工程规模$/u,/^计划工期$/u,/^合同工期$/u,/^总工期$/u,/^质量标准$/u,/^质量目标$/u,/^合同估算价$/u,/^投资估算$/u,/^最高投标限价$/u,/^招标控制价$/u];function p(a){return o.some(b=>b.test(a))}function q(a){let b=a.replace(/\r?\n/gu,"\n").split("\n"),c=[],d=!1,e=a=>(0,g.Mp)(a).map(a=>a.replace(/\*\*/gu,"").trim()),f=a=>{let b=a.slice(2).map(e).filter(a=>a.length>=2).map(a=>a[0]||""),c=b.filter(p).length;return c>=3&&c>=Math.ceil(.45*b.length)};for(let a=0;a<b.length;){let e=b[a]||"",h=b[a+1]||"";if(/(?:\*\*[^\u000A]*项目基本信息表[^\u000A]*\*\*|####\s+[^\u000A]*项目基本信息表[^\u000A]*|###\s+[^\u000A]*项目基本信息表[^\u000A]*)/u.test(e)){let f=[e];for(a+=1;a<b.length&&!((0,g.VS)(b[a]||"")&&(0,g.vh)(b[a+1]||""))&&""===(b[a]||"").trim();)f.push(b[a]||""),a+=1;if(a<b.length&&(0,g.VS)(b[a]||"")&&(0,g.vh)(b[a+1]||""))for(f.push(b[a]||"",b[a+1]||""),a+=2;a<b.length&&(0,g.VS)(b[a]||"");)f.push(b[a]||""),a+=1;d||(d=!0,c.push(...f));continue}if(/^###\s+(?:\d+\.\d+\s+)?(?:项目基本信息|工程概况|项目概况)\s*$/u.test(e)){let h=[e];for(a+=1;a<b.length&&!((0,g.VS)(b[a]||"")&&(0,g.vh)(b[a+1]||""))&&!/^###\s+/u.test(b[a]||"");)h.push(b[a]||""),a+=1;if(a<b.length&&(0,g.VS)(b[a]||"")&&(0,g.vh)(b[a+1]||"")){let i=[b[a]||"",b[a+1]||""];for(a+=2;a<b.length&&(0,g.VS)(b[a]||"");)i.push(b[a]||""),a+=1;if(f(i)){if(d){let a=h.filter(a=>a.trim()&&!/^###\s+/u.test(a));a.length&&c.push(e,...a)}else d=!0,c.push(...h,...i);continue}c.push(...h,...i);continue}c.push(...h);continue}if((0,g.VS)(e)&&(0,g.vh)(h)){let i=[e,h];for(a+=2;a<b.length&&(0,g.VS)(b[a]||"");)i.push(b[a]||""),a+=1;if(f(i)){d||(d=!0,c.push(...i));continue}c.push(...i);continue}c.push(e),a+=1}return c.join("\n").replace(/\n{3,}/gu,"\n\n").replace(/\n{1,2}\|\s*信息项\s*\|\s*内容\s*\|\s*\n+(?:该小节围绕[^\n]*\n+)+\|\s*:?-{3,}:?\s*\|\s*:?-{3,}:?\s*\|\s*/gu,"\n\n")}function r(a,b){if(a=((a,b)=>{let c=a.split("\n"),d=[];for(let a=0;a<c.length;a+=1){let e=c[a]||"",f=/^(#{3,5})\s+(.+)$/u.exec(e.trim()),g=f?.[2]?.replace(/^\d+(?:\.\d+)*\s+/u,"").trim()||"";if(f&&b.some(a=>a.test(g))){for(a+=1;a<c.length&&!/^#{2,5}\s+/u.test((c[a]||"").trim());)a+=1;a-=1;continue}d.push(e)}return d.join("\n")})(a,[/^工程概况一览表$/u,/^招标文件?评分.*响应索引表$/u,/^招标评分项响应索引表$/u]).replace(/\*\*(?:工程概况一览表|招标文件?评分.*响应索引表|招标评分项响应索引表)\*\*[\s\S]*?(?=\n{2,}#{2,5}\s+|\n{2,}(?:[^|\n#]|$)|$)/gu,"").replace(/\n{3,}/gu,"\n\n"),!/项目基本信息|项目概况|工程概况|招标范围/u.test(a))return q((0,g.yk)((0,g.j7)(a)));let c=/^(#{2,4}\s+(?:\d+\.\d+\s+)?[^\n]*(?:项目概况|工程概况|项目基本信息|招标范围)[^\n]*\n)/mu,d=/^(#{2,4}\s+(?:\d+\.\d+\s+)?[^\n]*(?:概况|基本信息)[^\n]*\n)/mu,e=()=>c.exec(a)??d.exec(a);if(!/\|\s*信息项\s*\|\s*内容\s*\|/u.test(a)&&j(b).length>0){let c=e();if(c?.index||c?.index===0){let d=c.index+c[0].length,e=`${n(b,"",a)}
223
+ ${b.join("\n")}`)}else g.push(...i);let k=function(a,b){let c=ag.filter(b=>b.chapterPattern.test(a.title)).map(a=>a.domain),d=(0,B.Bf)((0,B.IV)(b),c);return(ah.test(a.title)&&d.push(...function(a){let b=[];return(a.basisRegulations??[]).length>0&&b.push(`- 招标文件引用法规(项目专属事实,编制依据小节必须列出法规名称及文号):${a.basisRegulations.join("、")}`),b.push("- 编制依据小节由写作模型自行列写:国家法律法规及文号、工程所在地地方性法规、与本工程分部对应的现行施工验收规范名称及编号;不得空写「国家现行法律、行政法规」等类别话术,不得编造文号"),b}(b)),0===d.length)?"":["【本章数值锚点——计划类数值必须且只能引用以下锚点值;禁止将各工种人数相加推导峰值、禁止按定额自行估算、禁止改写或自设任何计划类数值】",...d].join("\n")}(a,b),l=c.sliceCharsCap??6e3,n=[...f,...g,k].filter(Boolean).join("\n\n");if(n.length>l){let a=[],b=0;for(let c of n.split("\n")){if(b+c.length+1>l)break;a.push(c),b+=c.length+1}n=`${a.join("\n")}
224
+ (本节蓝图切片过长已截断,未展开工作包见本章其他小节与绑定材料)`}return n}function aj(a){return a.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&")}function ak(a,b){let c=a.outline.chapters.find(a=>a.title===b);return c||a.outline.chapters.find(a=>b.includes(a.title)||a.title.includes(b))}function al(a,b,c){let d=[],e=[],f=a,g=b.subSections.flatMap(a=>a.requiredParams.filter(a=>"must_cite"===a.mode&&a.strict)),h=[];/劳动力|人员|资源|进度|工期|部署|概况/u.test(b.title)&&c.resources.labor.peakValue>0&&h.push({path:"data.resources.labor.peak_value",mode:"must_cite",strict:!0}),/绿化|种植|养护|苗木|技能|培训|成品保护|质量/u.test(b.title)&&h.push({path:"data.redline.greening_maintenance",mode:"must_cite",strict:!0});let i=[...g,...h],j=new Set;for(let a of i)if(!j.has(a.path)){if(j.add(a.path),"data.contract.total_days"===a.path){if(c.contract.totalDays<=0)continue;let a=/(?:总工期|施工工期|合同工期|工期)(?:为|约|共计|控制)?[^\n。;;]{0,20}?(\d+(?:\.\d+)?)\s*(?:日历)?天/gu,b=!1;f=f.replace(a,(a,e)=>{b=!0;let f=Number(e);return f===c.contract.totalDays||f<=0?a:(d.push({anchor:"总工期",from:`${f}天`,to:`${c.contract.totalDays}天`}),a.replace(e,String(c.contract.totalDays)))}),b||e.push(`总工期 ${c.contract.totalDays} 日历天`);continue}if(a.path.startsWith("data.quantities.")){let b=a.path.slice(16),g=c.quantities[b];if(!g||g.value<=0)continue;let h=g.unit||"",i=RegExp(`${aj(b)}[^\\n。;;]{0,40}?(\\d+(?:\\.\\d+)?)\\s*${h?aj(h):""}`,"gu"),j=!1;f=f.replace(i,(a,c)=>{j=!0;let e=Number(c);return e===g.value||e<=0?a:(d.push({anchor:b,from:`${e}${h}`,to:`${g.value}${h}`}),a.replace(c,String(g.value)))}),j||e.push(`${b} ${g.value}${h}`);continue}if("data.resources.labor.peak_value"===a.path){let a=c.resources.labor.peakValue;if(a<=0)continue;let b=/(?:高峰(?:期)?(?:人数)?|峰值|劳动力(?:总人数|峰值)|各专业班组高峰人数)[^。;;\n]{0,24}?(?:约)?\s*([\d,]+)\s*人/gu,g=!1;f=f.replace(b,(b,c)=>{g=!0;let e=Number(String(c).replace(/,/g,""));return!Number.isFinite(e)||e===a||e<=0?b:(d.push({anchor:"劳动力峰值",from:`${c}人`,to:`${a}人`}),b.replace(c,String(a)))}),g||e.push(`劳动力峰值 ${a} 人`);continue}if("data.redline.greening_maintenance"===a.path){let a=c.redLineFacts.find(a=>/养护/u.test(a.key));if(!a)continue;let b=/养护[^。;;|]{0,10}?([一二两三四五六七八九十]+|\d{1,2})\s*年/u.exec(a.value);if(!b)continue;let g=(0,l._P)(b[1]??"");if(void 0===g||!Number.isFinite(g)||g<=0)continue;let h=/养护[^。;;\n|]{0,16}?([一二两三四五六七八九十]+|\d{1,2})\s*年/gu,i=!1;f=f.replace(h,(a,b)=>{i=!0;let c=(0,l._P)(b);return void 0===c||!Number.isFinite(c)||c===g||c<=0?a:(d.push({anchor:"养护期",from:`${b}年`,to:`${g}年`}),a.replace(b,String(g)))}),i||e.push(`养护期 ${g} 年`);continue}}return{markdown:f,fixed:d,missing:e}}function am(a,b){let c=new Set,d=[];for(let e of a.subSections.flatMap(a=>a.requiredParams.filter(a=>"must_cite"===a.mode&&a.strict)))if(!c.has(e.path)){if(c.add(e.path),"data.contract.total_days"===e.path&&b.contract.totalDays>0){d.push(`总工期 ${b.contract.totalDays} 日历天`);continue}if(e.path.startsWith("data.quantities.")){let a=b.quantities[e.path.slice(16)];a&&a.value>0&&d.push(`${e.path.slice(16)} ${a.value}${a.unit}`)}}return d.join(";")}let an={core:1.5,general:1,brief:.6};function ao(a){return/^(?:确保\s*)?[人材机](?:员|力|料|械|工)?\s*的保障体系与措施$/u.test(a)}function ap(a,b){let c=a.replace(/\s+/gu,""),d=b.replace(/\s+/gu,"");return c===d||c.includes(d)||d.includes(c)}function aq(a,b){if(0===a.length)return;let c=Math.max(0,Math.round(b)),d=a.reduce((a,b)=>a+Math.max(1,b.subPoints.length),0),e=Math.max(1,Math.floor(c/1800)),f=a;if(f.length>e){let a=[],b=Math.max(1,Math.ceil(d/e)),c=[],g=0;for(let d of f){if(ar(d.title)){c.length>0&&(a.push(c),c=[],g=0),a.push([d]);continue}let f=Math.max(1,d.subPoints.length);c.length>0&&(g+f>6||a.length<e-1&&g+f>b)&&(a.push(c),c=[],g=0),c.push(d),g+=f}c.length>0&&a.push(c),f=a.map(a=>1===a.length?a[0]:{title:(a.find(a=>ar(a.title))||a[0]).title,subPoints:a.flatMap(a=>a.subPoints),facts:[...new Set(a.flatMap(a=>a.facts))],targetWords:0})}for(let a=0;a<64&&f.length<e;a+=1){let a=f.map(a=>Math.max(.5,a.subPoints.reduce((a,b)=>a+an[b.tier||"general"],0))),b=a.reduce((a,b)=>a+b,0)||f.length,d=-1,e=2800;if(f.forEach((f,g)=>{let h=Math.floor(c*a[g]/b);f.subPoints.length>=2&&h>e&&(d=g,e=h)}),d<0)break;let g=f[d],h=Math.ceil(g.subPoints.length/2);f.splice(d,1,{...g,subPoints:g.subPoints.slice(0,h),targetWords:0},{...g,subPoints:g.subPoints.slice(h),targetWords:0})}let g=f.map(a=>Math.max(.5,a.subPoints.reduce((a,b)=>a+an[b.tier||"general"],0))),h=g.reduce((a,b)=>a+b,0)||f.length,i=Math.min(1800,Math.floor(c/Math.max(1,f.length))),j=f.map((a,b)=>Math.max(i,Math.floor(c*g[b]/h))),k=j.reduce((a,b)=>a+b,0)-c;if(k>0){let a=j.map(a=>a-i),b=a.reduce((a,b)=>a+b,0);if(b>0){let c=0;j.forEach((d,e)=>{let f=Math.min(a[e],Math.floor(k*a[e]/b));j[e]=d-f,c+=f});for(let a=k-c;a>0;a-=1){let a=-1;if(j.forEach((b,c)=>{!(b<=i)&&(a<0||b>j[a])&&(a=c)}),a<0)break;j[a]=j[a]-1}}}let l=j.reduce((a,b)=>a+b,0);if(l<c){let a=0;j.forEach((b,c)=>{b>j[a]&&(a=c)}),j[a]=j[a]+(c-l)}for(let a of(f.forEach((a,b)=>{a.targetWords=Math.max(1,Math.min(j[b],4500))}),f.forEach(a=>{let b=Math.max(1,Math.floor(a.targetWords/300));if(a.subPoints.length<=b)return;let c=a.subPoints.length,d=a.subPoints.slice(0,b-1),e=a.subPoints.slice(b-1);a.subPoints=[...d,{title:"其他分部分项工程施工要点",sources:[...new Set(e.flatMap(a=>a.sources))],tier:"brief"}],console.warn(`[blueprint] 块「${a.title}」超密度守卫:要点数 ${c} → ${a.subPoints.length}(块预算 ${a.targetWords} 字,密度上限 ${b} 要点,${e.length} 个要点合并为概览要点)`)}),f)){if(0===a.subPoints.length)continue;let b=a.subPoints.map(a=>an[a.tier||"general"]),c=b.reduce((a,b)=>a+b,0)||a.subPoints.length,d=b.map(b=>Math.max(100,Math.floor(a.targetWords*b/c))),e=d.reduce((a,b)=>a+b,0);if(e>a.targetWords){let d=a.targetWords;a.subPoints.forEach((e,f)=>{let g=f===a.subPoints.length-1?Math.max(1,d):Math.max(1,Math.floor(a.targetWords*b[f]/c));e.quotaWords=g,d-=g});continue}let f=b.reduce((a,c,d)=>c>b[a]?d:a,0),g=a.targetWords-e;a.subPoints.forEach((a,b)=>{a.quotaWords=d[b]+(b===f?g:0)})}f!==a&&(a.length=0,a.push(...f))}function ar(a){return m.Yp.test(a)||m.gG.test(a)}function as(a,b,c){let d=new Map,e=[];for(let b of a){if(ao(b)||m.Yp.test(b)||m.gG.test(b)){e.push({kind:"solo",section:b});continue}let a=/工期|进度|节点|计划|纠偏|预警/u.test(b)?"工期进度":/质量|验收|三检|样板|隐蔽|复试|实测|通病/u.test(b)?"质量验收":/安全|危大|风险|隐患|应急|临边|洞口|消防|临电/u.test(b)?"安全风险":/文明|扬尘|噪声|绿色|废水|垃圾|环保|智慧/u.test(b)?"文明绿色":/劳务|工资|实名|银行|考勤|人员|岗位|组织|职责/u.test(b)?"组织劳务":/资源|材料|设备|机械|人材机|调配/u.test(b)?"资源保障":/施工|工艺|流程|顺序|穿插|部署|区段|流水/u.test(b)?"施工组织":"综合管理";d.has(a)||(d.set(a,[]),e.push({kind:"domain",key:a})),d.get(a).push(b)}let f=a=>{let b=[];for(let c of a){let a=b[b.length-1],d=a?a.sources[a.sources.length-1]:"";!(0,m.tZ)(c)&&!ao(c)&&a&&(ap(c,d)||function(a,b){let c=a=>{let b=new Set;for(let c=0;c<a.length-1;c+=1)b.add(a.slice(c,c+2));return b},d=c(b),e=[...c(a)];return 0===e.length?0:e.filter(a=>d.has(a)).length/e.length}(c,d)>=.75)?(a.sources.push(c),c.length>a.title.length&&(a.title=c)):b.push({title:c,sources:[c]})}return b},g=[];for(let a of e){if("solo"===a.kind){g.push({title:a.section,subPoints:[{title:a.section,sources:[a.section]}],facts:[],targetWords:0});continue}let c=f(d.get(a.key)||[]);for(let a=0;a<c.length;a+=6){let d=c.slice(a,a+6);g.push({title:d[0].title||b,subPoints:d,facts:[],targetWords:0})}}return aq(g,c),{blocks:g,coveredSections:a.slice(),fallbackSections:[]}}function at(a){let b,{blueprintChapter:c,inputSections:d,chapterTitle:e,targetWords:f}=a,g=[],i=[];if(c&&0!==c.subSections.length){for(let a of c.subSections){let b=a.workPackages.map(a=>({title:a.name,sources:[a.name],tier:"major"===a.kind?"core":"general"}));b.length>6?g.push(...function(a,b){let c=a.replace(/工程$/u,""),d=[],e=new Map;for(let a of b){let b=(0,j.Ld)(a.title),c=e.get(b);void 0===c&&(c=d.length,e.set(b,c),d.push({label:b,points:[]})),d[c].points.push(a)}let f=[];for(let a of d)for(let b=0;b<a.points.length;b+=6){let d=a.points.slice(b,b+6),e=0===b?(0,k.UW)(c,a.label):(0,k.UW)(c,d[0].title);f.push({title:e,subPoints:d,facts:[],targetWords:0})}return f}(a.title,b)):g.push({title:a.title,subPoints:b,facts:[],targetWords:0})}if(0===g.length){let a=as(d,e,f);g=a.blocks,i=a.coveredSections,b=a.fallbackSections}else i=d.filter(a=>g.some(b=>ap(b.title,a)||b.subPoints.some(b=>b.sources.some(b=>ap(b,a))||ap(b.title,a)))),b=d.filter(a=>!i.includes(a))}else{let a=as(d,e,f);g=a.blocks,i=a.coveredSections,b=a.fallbackSections}if(b.length>0){for(let a of as(b,e,f).blocks)g.some(b=>ap(b.title,a.title)||a.subPoints.some(a=>b.subPoints.some(b=>ap(b.title,a.title))))||g.push(a);i=[...i,...b],b=[]}if(a.projectContext&&a.evidence){let b=a.projectContext,c=a.evidence,d=m.gG.test(e)?[]:(a.blueprintChapter?.subSections??[]).map(a=>a.title),i=m.gG.test(e)?new Set(g.map(a=>(0,j.Sw)(a.title)).filter(Boolean)):new Set;g=g.map(a=>{if(!ar(a.title)||m.gG.test(e)&&m.gG.test(a.title))return a;let k=function(a,b){let c=[];for(let b of a){let a=b.trim(),d=a.replace(/\s+/gu,"");if(!(!d||/^其他$|^其它$|^其他工程$|^其余/u.test(d))&&!c.some(a=>{let b=a.replace(/\s+/gu,"");return b.includes(d)||d.includes(b)})&&(c.push(a),c.length>=12))break}return c}([...(0,h.Ep)(b,c).filter(a=>{let b=a.replace(/^[一二三四五六七八九十百\d]+[、..\s::-]+/u,"");return!i.has((0,j.Sw)(b))}),...d],0);if(k.length<3)return a;let l=Math.max(1,g.filter(a=>ar(a.title)).length),n=Math.max(3,Math.min(k.length,Math.floor(f/350/l)));if(k.length<=n)return{...a,subPoints:k.map(a=>({title:a,sources:[a],tier:"core"}))};let o=k.slice(0,n),p=k.slice(n);return{...a,subPoints:[...o.map(a=>({title:a,sources:[a],tier:"core"})),{title:"其他分部分项工程施工要点",sources:p,tier:"brief"}]}})}let l=(0,k.SX)(g.map(a=>({title:a.title})));return g.forEach((a,b)=>{a.title=l[b]}),aq(g,f),0===g.length&&e.trim()&&(g=[{title:e,subPoints:[],facts:[],targetWords:Math.min(2800,Math.max(1800,f))}]),{blocks:g,coveredSections:i,fallbackSections:b}}function au(a,b){let c=b.filter(Boolean),d=c.length;if(a&&a.subSections.length>0){d=a.subSections.reduce((a,b)=>a+b.workPackages.length,0);let b=c.filter(b=>a.subSections.some(a=>ap(a.title,b)||a.workPackages.some(a=>ap(a.name,b)))).length;d+=c.length-b}let e=Math.ceil(d/6);return{points:d,minFeasibleWords:1800*e}}function av(a,b){let c=[],d=a.split("\n").filter(a=>!/^\s*\|/u.test(a.trim())).join("\n");if(b.resources.labor.peakValue>0)for(let a of d.matchAll(/(?:劳动力峰值|施工高峰|高峰人数|高峰期劳动力|劳动力高峰)(?:为|约|达到|共计)?[^\n。;;]{0,20}?(\d+(?:\.\d+)?)\s*人/gu)){let d=Number(a[1]);if(d>0&&d!==b.resources.labor.peakValue){c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`蓝图引用冲突:正文出现与蓝图不一致的劳动力峰值 ${d} 人`,suggestion:`请统一使用蓝图劳动力峰值:${b.resources.labor.peakValue} 人`});break}}if(b.contract.totalDays>0)for(let a of d.matchAll(/(?:总工期|施工工期|合同工期|工期)(?:为|约|共计|控制)?[^\n。;;]{0,20}?(\d+(?:\.\d+)?)\s*(?:日历)?天/gu)){let e=Math.max(0,(a.index??0)-16),f=d.slice(e,(a.index??0)+a[0].length),g=(a.index??0)-e+a[0].indexOf(String(a[1])),h=f.slice(0,g),i=/^(?:总工期|施工工期|合同工期)/u.test(a[0]),j=g>0&&/按|阶段|拆除|清杂|准备|第\d+日|至第|集中|延误|滞后|分解|机动|预留|保留|余量|缓冲|占用|无法容纳|不少于|不超过|不得超过|不大于|不低于|至少|最多/u.test(h),k=!i&&g>0&&/计划|安排/u.test(h);if(j||k)continue;let l=Number(a[1]);if(l>0&&l!==b.contract.totalDays){c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`蓝图引用冲突:正文出现与蓝图不一致的工期表述 ${l}日历天`,suggestion:`请统一使用蓝图总工期:${b.contract.totalDays} 日历天`});break}}for(let d of b.redLineFacts.filter(a=>!a.amount&&"自然村数量"!==a.key)){let b=String(d.value).split(/[,。;、()()\]【】::\s\n[]+/u).map(a=>a.trim()).filter(a=>a.length>=3&&!/^[\d.]+$/u.test(a)&&!/^(?:其他|具体详见|满足设计要求|设计图纸|图集|招标文件|政府相关文件|规范等|资料)$/u.test(a));0!==b.length&&(b.some(b=>a.includes(b))||c.push({level:"warning",severity:"warning",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`蓝图红线事实缺口:正文未体现「${d.key}=${d.value}」`,suggestion:`请在对应章节补写该红线事实(数值必须与蓝图一致)`}))}let e=b.redLineFacts.find(a=>"自然村数量"===a.key),f=e?Number(/(\d+)/u.exec(e.value)?.[1]):0;if(f>0)for(let a of d.matchAll(/(\d+)\s*个(?:美丽宜居)?自然村(?!分组|施工组)/gu)){let b=d.slice(Math.max(0,(a.index??0)-16),a.index??0);if(/片区|分为|分成|划分为|每组|每片|每台|每个|各台|各车|每村/u.test(b))continue;let e=Number(a[1]);if(e>0&&e!==f){c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`蓝图红线事实冲突:正文出现与蓝图不一致的自然村数量 ${e} 个`,suggestion:`请统一使用蓝图自然村数量:${f} 个自然村`});break}}let g=[],h=[],i=Object.entries(b.quantities).sort((a,b)=>b[0].length-a[0].length),j=[];for(let[a,b]of i){if(!b||b.value<=0)continue;let c=b.unit||"",e=c?`${function(a){let b=a.trim().toLowerCase();return/(?:m2|m²|㎡)/.test(b)?"(?:㎡|m\xb2|m2)":/(?:m3|m³)/.test(b)?"(?:m\xb3|m3)":"t"===b||"吨"===b?"(?:吨|t)":aj(a)}(c)}(?![0-9A-Za-z])`:"",f=RegExp(aj(a),"gu");for(let i of d.matchAll(f)){let f=i.index??0,k=f+a.length;if(j.some(a=>f<a.end&&k>a.start))continue;j.push({start:f,end:k});let l=d.slice(k,k+40),m=Math.min(...[l.search(/[、。;;,,\n]/u)].filter(a=>a>=0).concat([l.length])),n=l.slice(0,m),o=RegExp(`(?<![\\dA-Za-z])(\\d+(?:\\.\\d+)?)\\s*${e}`,"u").exec(n);if(!o)continue;let p=d.slice(f,k+(o.index??0)+o[0].length),q=p.slice(a.length);if(/按[^。;;\n|]{0,16}?(?:强度|厚度|规格|等级|部位)[^。;;\n|]{0,8}?(?:分区|分别|分规格|分强度|分等级|分部位)/u.test(q))continue;let r=p.lastIndexOf(String(o[1]));if(/(?:每层每|按每|每批|每处|每层)\s*$/u.test(p.slice(0,r))||/^[^\d]{0,4}(?:不少于|至少)\s*\d+\s*[点个处]/u.test(p.slice(r+String(o[1]).length))||r>0&&/(?:间距|不大于|不小于|≥|≤|直径|宽度|厚度|高度|深度|坡度)[^0-9]*$/u.test(p.slice(0,r)))continue;let s=d.slice(Math.max(0,f-12),f);if(/[郢庄岗塘圩坝池井]/u.test(s))continue;let t=d.lastIndexOf("\n\n",f),u=-1===t?0:t+2,v=d.indexOf("\n\n",f),w=-1===v?d.length:v;if(/[郢庄岗塘圩坝]/u.test(d.slice(u,w))||/(?:直径|DN|Φ|φ)\\s*\\d+/u.test(d.slice(Math.max(0,f-8),f))||/(?:直径|DN|Φ|φ)\\s*\\d+/u.test(d.slice(f+a.length,f+a.length+8)))continue;let x=Number(o[1]);if(Number.isFinite(x)&&!(x<=0)){if(x===b.value){h.push({ns:f});continue}(b.groups??[]).some(a=>1e-6>Math.abs(a.value-x))||g.push({name:a,value:x,unit:c,authorityValue:b.value,ns:f})}}}let k=a=>{let b=Math.max(d.lastIndexOf("。",a),d.lastIndexOf("\n",a)),c=d.indexOf("。",a);-1===c&&(c=d.length);let e=d.indexOf("\n",a);return -1===e&&(e=d.length),{start:b+1,end:Math.min(c,e)+1}},l=(a,b)=>{if(a.length>10)return!1;let c=a.map(a=>Math.round(100*a)),d=Math.round(100*b);for(let a=1;a<1<<c.length;a+=1){let b=0,e=0;for(let d=0;d<c.length;d+=1)(a&1<<d)!=0&&(b+=c[d],e+=1);if(e>=2&&b===d)return!0}return!1},m=new Set;{let a=new Map;for(let b of g){let c=a.get(b.name)??[];c.push(b.value),a.set(b.name,c)}for(let[b,c]of a){let a=[...new Set(c)];a.length>=2&&l(a,g.find(a=>a.name===b)?.authorityValue??0)&&m.add(b)}}let n=new Set;for(let a of g){let b=k(a.ns),e=d.lastIndexOf("\n\n",a.ns),f=-1===e?0:e+2;if(/(?:单体|单座|单栋|单幢|每座|每栋|化粪池|作业对象)/u.test(d.slice(f,b.end)))continue;let i=g.filter(c=>c!==a&&c.ns>=b.start&&c.ns<b.end).length+1,j=h.filter(a=>a.ns>=b.start&&a.ns<b.end).length;!(i>=2&&j>=1||m.has(a.name))&&(n.has(a.name)||(n.add(a.name),c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`蓝图引用冲突:正文出现与蓝图不一致的工程量 ${a.name} ${a.value}${a.unit}`,suggestion:`请统一使用蓝图工程量:${a.name} ${a.authorityValue}${a.unit}`})))}return c}let aw=/(?<=[日天])\s*[0-9]+(?:\.[0-9]+)?(?=[\s]*(?:招标|建设|质量|合同|项目|工程|资金|投标|开标|评标|付款|工期|开工|计划|计价|现场|资质|标段|[0-9]{1,3}[.、.]|[,,。;;]|$))/u;function ax(a){let b=Object.values(a.byKey||{}).filter(a=>!!(a&&a.label&&a.value)).sort((a,b)=>(b.priority||0)-(a.priority||0));return 0===b.length?"":b.slice(0,60).map(a=>{let b=String(a.value),c=aw.exec(b),d=c?b.slice(0,c.index).trim():b;return`- ${a.label}:${d}`}).join("\n")}function ay(a){let b=Date.now(),c={stage:"阶段 0",standardBlocksLoaded:0,standardBlockGaps:[],laborDerivationBasis:"清单汇总 \xd7 经验区间系数(定额工效知识不全,降级区间表达)",llmCalls:0,fallbackUsed:[],warnings:[],durationMs:0},d={version:"2.0.0",projectCode:function(a,b){let c=a=>a.replace(/^\d+(?:\.\d+)*\s*--\s*(?=\d{4}年)/u,""),d=/项目名称[::]\s*([^\n]{2,60})/u.exec(a);if(d){let a=c(d[1].trim()),b=a.split(/计划工期[::]|合同工期[::]|总工期[::]|工期[::]|质量标准[::]|计价[::]|施工地点/u)[0]?.trim()||a;if(b)return b}let e=/(\d{4}\s*年度\S{2,40}建设项目)/u.exec(a);return e?c(e[1].trim()):b||""}(a.basicFacts||"",a.templateName)||void 0,docType:"单位工程施工组织设计",createdAt:new Date().toISOString().slice(0,10),sourceMaterials:[...a.boundFilePaths]},h=M({projectRoot:a.projectRoot,boundFilePaths:a.boundFilePaths});h.warning&&c.warnings.push(h.warning);let i=h.boq;i&&(c.boq={sourceFile:i.sourceFile,totalEntries:i.totalEntries,complete:i.complete,villageCount:i.villages.length,pagesMissingTotal:i.villages.reduce((a,b)=>a+b.pagesMissing.length,0)},i.complete||c.warnings.push("清单解析完整性校验未通过(序号缺口/页码缺失),蓝图覆盖校验将兜底报告")),c.stage="阶段 A";let j=i||{entries:[],villages:[],totalEntries:0,sourceFile:"",complete:!1,diagnostics:{totalChunks:0,markdownChunks:0,declarationChunks:0,skippedChunks:0,droppedIncompleteRows:0}},k=function(a){let b=[...new Set(a.boq.entries.map(a=>`${a.section} ${a.subsection} ${a.name}`))].join(" "),c=[/管网|排水|雨污|污水|给水|检查井/u,/道路|路床|路面|路缘石|青砖|散水/u,/绿化|栽植|种植|苗木|景观|喷播/u,/路灯|亮化|照明/u].filter(a=>a.test(b)).length;if(a.boq.villages.length>0&&c>=3)return F;let d=[{strategy:G,patterns:[/砌体|装饰|幕墙|地下室|层高|户型|塔吊|塔式起重机|脚手架|抹灰|门窗|屋面|防水/u]},{strategy:I,patterns:[/桥墩|桥台|墩柱|盖梁|系梁|箱梁|梁板|支座|伸缩缝|桥面|隧道|洞身|衬砌|锚杆/u]},{strategy:J,patterns:[/路基|路面|沥青|水稳|摊铺|压实|面层/u]},{strategy:K,patterns:[/闸室|闸墩|闸门|启闭机|围堰|导流|堤防|护坡|护岸|疏浚|水下/u]}].map(a=>({strategy:a.strategy,count:a.patterns.reduce((a,c)=>{let d=b.match(RegExp(c.source,"gu"));return a+(d?d.length:0)},0)})).sort((a,b)=>b.count-a.count);if((d[0]?.count||0)>=2)return d[0].strategy;let e=function(a){let b,c=[["市政",/市政|管网|排水|给水|雨污|污水|燃气/gu],["公路",/公路|路基|路面|沥青/gu],["桥梁与隧道",/桥梁|隧道/gu],["水利水电",/水利|河道|灌溉|防洪/gu],["电力",/电力|供配电|电压|电缆/gu],["机电安装",/机电|暖通|通风|空调|消防|给排水|智能化|电梯/gu],["装饰装修",/装饰|装修|幕墙/gu],["园林绿化",/园林|绿化|景观|苗木/gu],["铁路",/铁路|轨道/gu],["港口与航道",/港口|航道/gu],["矿山冶金",/矿山|冶金/gu],["房建",/房建|建筑|住宅|楼|结构|砌体|基坑|地下室|主体|层高|户型|公共建筑|产业园|厂房/gu]].map(([b,c])=>(c.lastIndex=0,{type:b,count:(a.match(c)||[]).length})).sort((a,b)=>b.count-a.count),d=c[0],e=0,f=0;for(let[c,d]of[["房建",/产业园|标准厂房|安置房|住宅小区|保障房|卫生院|门诊楼|办公楼/gu],["市政",/老旧小区|海绵城市|雨污分流|管网改造|管廊/gu],["桥梁与隧道",/桥梁|隧道|盾构|箱梁|斜拉|悬索|涵洞/gu],["公路",/公路|路基|路面|沥青|桩号|互通|匝道/gu],["水利水电",/堤防|水库|泵站|水闸|疏浚|节制闸|水电站|大坝|围堰/gu],["电力",/变电站|输电线路|配电|GIS设备|电缆|架空线路|铁塔|箱变/gu],["铁路",/铁路|轨道|道床|站台|信号机|接触网/gu],["港口与航道",/港口|码头|航道|护岸|堆场|泊位/gu],["矿山冶金",/矿山|矿井|选矿|冶炼|尾矿|轧钢/gu]]){d.lastIndex=0;let g=(a.match(d)||[]).length;g>=3&&g>e?(f=e,b=c,e=g):g>f&&(f=g)}if(b){if(f>0&&e<2*f&&d&&d.count>e)return d.type;let a=c.find(a=>a.type===b)?.count||0;return d&&d.type!==b&&d.count>2*a&&d.count>=2*e?d.type:b}return d&&d.count>0?d.type:"其他"}(`${a.templateName||""} ${a.basicFacts||""} ${a.chapterTitles.join(" ")} ${b}`);return"房建"===e||"装饰装修"===e?G:"桥梁与隧道"===e?I:"公路"===e?J:"水利水电"===e?K:H}({basicFacts:a.basicFacts,templateName:a.templateName,chapterTitles:a.chapterTitles,boq:j}),l=function(a){var b;let{boq:c}=a,d=a.strategy||F,h=N(c),i=function(a){let b=[];for(let c of O)for(let d of a.entries){if(!c.namePattern.test(`${d.name} ${d.description}`))continue;let a=c.extract(d);if(a){b.push({key:c.key,value:a,source:`清单条目 ${d.seq}「${d.name}」特征原文`,amount:c.amount});break}}return b}(c),j=function(a,b){let c=/(\d+)\s*个(?:美丽宜居)?自然村/u.exec(a);if(c)return Number(c[1]);let d=/(\d+)\s*个(?:美丽宜居)?自然村/u.exec(b);return d?Number(d[1]):0}(a.projectName,a.basicFacts||"")||c.villages.length;j>0&&i.push({key:"自然村数量",value:`${j} 个自然村`,source:"招标文件项目名称(清单自然村分组兜底)"});let k=function(a){let b={},c=a.entries.filter(a=>"垫层"===a.name).map(a=>/C\d{2}/u.exec(a.description)?.[0]).filter(a=>!!a);if(c.length>0){let a=new Map;for(let b of c)a.set(b,(a.get(b)||0)+1);b.cushion=[...a.entries()].sort((a,b)=>b[1]-a[1]||(a[0]<b[0]?-1:1))[0][0]}return b}(c),l=function(a,b){let c=/(?<!节点)(?<!阶段)(?<!分项)(?<!关键)(?:计划工期|合同工期|工期总日历天数|工期控制|工期目标|总工期|工期)[^。;;\n]{0,12}?(\d{1,4})\s*个?\s*日历天/u.exec(a)||/(\d{1,4})\s*个?\s*日历天[^。;;\n]{0,8}?(?:总工期|倒排|分解|完成)/u.exec(a),d=c?Number(c[1]):0,e=/质量(?:标准|要求)[^。;;\n]{0,20}?[::]\s*([^。;;\n]{1,20})/u.exec(a)||/合格/u.exec(a),f=e?(e[1]||"合格").trim():"",g=/(合造价〔\d{4}〕\d+号)/u.exec(a),h=g?g[1]:"",i=/(?:合同估算价|招标控制价|最高投标限价|项目总投资|投资估算|工程概算)[^。;;\n]{0,20}?([\d,]+(?:\.\d+)?)\s*万/u.exec(a);return{totalDays:d,qualityStandard:f,pricingFile:h,estimatedAmount:i?Number(i[1].replace(/,/g,"")):0}}(a.basicFacts||"",0),m=function(a,b,c=F){let d=b>0?b:360,e=c.milestoneGroups,f=e.map(b=>({...b,weight:a.entries.filter(a=>b.pattern.test(`${a.name} ${a.description}`)).reduce((a,b)=>a+b.quantity,0)})),g=Math.max(1,Math.round(.08*d)),h=d-g,i=f.slice(1),j=i.reduce((a,b)=>a+b.weight,0),k=f.reduce((a,b)=>a+b.weight,0),l=j<=0||k>0&&j/k<.05,m=l?0:j,n=i.length>0?Math.max(2,Math.round(.95*h/i.length)):0,o=[{key:"prep",label:e[0]?.label||"施工准备与清杂拆除",duration:g,basis:`前导工作封顶 8% 总工期(清杂整治可与主体并行穿插,不按工程量权重独占)`}];for(let a of i){if(l){o.push({key:a.key,label:a.label,duration:n,basis:`分部特征未命中策略分组(非 prep 权重占比 ${k>0?(j/k*100).toFixed(1):"0.0"}% < 5%),按总工期均分降级(每组 ${n} 天)`});continue}let b=Math.max(2,Math.round(a.weight/m*h*.95));o.push({key:a.key,label:a.label,duration:b,basis:`分部工程量权重 ${(a.weight/m*100).toFixed(1)}% \xd7 剩余工期 ${h} 天`})}let p=o.reduce((a,b)=>a+(b.duration||0),0);for(let a=o.length-1;a>=0&&p>d;a--){let b=p-d,c=Math.min(o[a]?.duration||0,b);o[a]&&c>0&&(o[a].duration=(o[a].duration||0)-c,p-=c)}return o}(c,l.totalDays,d),n=function(a,b,c=0,d=[],e=F){let f=Math.max(30,Math.round(.85*(b>0?b:360))),{groupOfEntry:g,laborUnitRange:h,tradeMapping:i,milestoneGroups:j}=e,k=new Map;for(let b of a.entries){if(b.quantity<=0)continue;let a=g(b),c=e.laborQuotaTable?.find(a=>a.pattern.test(`${b.name} ${b.description}`)&&a.unit===b.unit),d=c||h[a];if(!d||b.unit!==d.unit)continue;let f=i.find(a=>a.pattern.test(`${b.name} ${b.description}`))?.trade;if(!f)continue;let j=`${a}|${f}`,l=k.get(j)||{trade:f,workdaysMin:0,workdaysMax:0,unit:d.unit,basisQty:0,quota:c};l.quota!==c&&(l.quota=void 0),l.workdaysMin+=b.quantity*d.min,l.workdaysMax+=b.quantity*d.max,l.basisQty+=b.quantity,k.set(j,l)}let l=new Map;for(let a of k.values()){let b=l.get(a.trade)||{min:0,max:0,unit:a.unit,qty:0,quota:a.quota};b.quota!==a.quota&&(b.quota=void 0),b.min+=a.workdaysMin,b.max+=a.workdaysMax,b.qty+=a.basisQty,l.set(a.trade,b)}let m=[...l.entries()].sort((a,b)=>b[1].max-a[1].max).map(([a,b])=>({trade:a,min:Math.max(1,Math.round(b.min/f*1.3)),max:Math.max(1,Math.round(b.max/f*1.6)),basis:b.quota?`工种工程量约 ${Math.round(b.qty)}${b.unit} \xd7 定额工效(${b.quota.subName} ${b.quota.code},${b.quota.min}~${b.quota.max} 工日/${b.unit})\xf7 有效工期 ${f} 天(定额知识库命中)`:`工种工程量约 ${Math.round(b.qty)}${b.unit} \xd7 经验工效区间 \xf7 有效工期 ${f} 天(定额工效知识不全,降级区间表达)`})),n=m.reduce((a,b)=>a+(b.min||0),0),o=m.reduce((a,b)=>a+(b.max||0),0),p={min:Math.max(10,Math.round(.75*n)),max:Math.max(10,Math.round(.9*o))},q=p,r=`各工种同期在场按 0.75~0.9 重叠系数折算(各工种人数区间之和 ${n}~${o} 人)`;if(c>0){let a=P(c,f,e),b=Math.max(p.min,a.min),d=Math.min(p.max,a.max);b<=d?(q={min:b,max:d},r=`工程量推导区间 [${p.min}, ${p.max}] 与造价锚定区间 [${a.min}, ${a.max}] 的交集(${a.detail})`):(q={min:a.min,max:a.max},r=`工程量推导区间 [${p.min}, ${p.max}] 与造价锚定区间 [${a.min}, ${a.max}] 无交集,以造价锚定区间为准(${a.detail})`)}let s=Math.round((q.min+q.max)/2),t=[];for(let b of j){let c=a=>e.laborQuotaTable?.find(b=>b.pattern.test(`${a.name} ${a.description}`)&&b.unit===a.unit)||h[g(a)],k=a.entries.filter(a=>{if(a.quantity<=0||!b.pattern.test(`${a.name} ${a.description}`))return!1;let d=c(a);return!!d&&a.unit===d.unit&&i.some(b=>b.pattern.test(`${a.name} ${a.description}`))});if(0===k.length)continue;let l=k.reduce((a,b)=>a+b.quantity*(c(b)?.min||0),0),m=k.reduce((a,b)=>a+b.quantity*(c(b)?.max||0),0),n=d.find(a=>a.key===b.key)?.duration||Math.max(1,Math.round(f/j.length)),o=Math.max(1,Math.round(l/n*1.3)),p=Math.max(o,Math.round(m/n*1.6));t.push({phase:b.label,min:Math.min(o,s),max:Math.min(p,s),basis:`阶段条目工程量约 ${Math.round(k.reduce((a,b)=>a+b.quantity,0))} \xd7 经验工效区间 \xf7 阶段 ${n} 天(不均匀系数 1.3~1.6,同时在场人数按峰值 ${s} 人封顶)`})}let u=j[j.length-1];if(t.length>0&&u&&!t.some(a=>a.phase===u.label)){let a=Math.max(1,Math.round(.2*s));t.push({phase:u.label,min:a,max:a,basis:`收尾阶段零星作业兜底(峰值 ${s} 人的 20%),不参与工日推导`})}let v=m.map(a=>({trade:a.trade,mid:Math.max(1,Math.round(((a.min??1)+(a.max??a.min??1))/2))})),w=v.reduce((a,b)=>a+b.mid,0)||1,x=v.map(a=>({trade:a.trade,quota:a.mid*s/w})),y=x.map(a=>({trade:a.trade,count:Math.max(1,Math.floor(a.quota))})),z=s-y.reduce((a,b)=>a+b.count,0);if(z>0){let a=x.map((a,b)=>({index:b,frac:a.quota-Math.floor(a.quota)})).sort((a,b)=>b.frac-a.frac);for(let b=0;z>0&&b<a.length;b+=1){let c=a[b];if(!c)continue;let d=y[c.index];d&&(d.count+=1,z-=1)}}else if(z<0){let a=x.map((a,b)=>({index:b,quota:a.quota})).sort((a,b)=>a.quota-b.quota);for(let b=0;z<0&&b<a.length;b+=1){let c=a[b];if(!c)continue;let d=y[c.index];d&&!(d.count<=1)&&(d.count-=1,z+=1)}}let A=y.map(a=>({trade:a.trade,count:a.count,basis:`工种构成唯一口径:按工种工程量区间中值比例收敛(合计恒等于峰值 ${s} 人)`}));return{peak:q,peakValue:s,peakBasis:r,byPhase:t,byTrade:m,composition:A}}(c,l.totalDays,l.estimatedAmount||0,m,d),o=function(a,b=F){let c=[];for(let d of b.equipmentMapping){let b=a.entries.filter(a=>d.pattern.test(`${a.name} ${a.description}`)&&(!d.unit||a.unit===d.unit));if(0===b.length)continue;let e=b.reduce((a,b)=>a+b.quantity,0),f=Math.max(1,Math.min(4,Math.ceil(Math.log10(Math.max(10,e))-1))),g=Math.max(f,Math.min(8,f+2));c.push({name:d.name,spec:d.spec,min:f,max:g,basis:`${d.basis};相关条目工程量合计约 ${Math.round(e)}${b[0]?.unit||""}`})}return c}(c,d),p=function(a){let b=new Map;for(let c of a.entries){if(!c.name||c.quantity<=0)continue;let a=function(a){let b=[];for(let c of Q){let d=c.exec(a);d&&d[0]&&(b.some(a=>a.includes(d[0])||d[0].includes(a))||b.push(d[0]))}return b.join(" ")}(`${c.name} ${c.description}`),d=a?`${c.name}||${a}`:c.name,e=b.get(d);e?e.quantity+=c.quantity:b.set(d,{name:c.name,quantity:c.quantity,unit:c.unit,spec:a||void 0})}return[...b.values()].sort((a,b)=>b.quantity-a.quantity).map(a=>({name:a.name,quantity:Math.round(1e3*a.quantity)/1e3,unit:a.unit,spec:a.spec,batchDesc:"按施工段分批进场",basis:"清单汇总 + 进度匹配"}))}(c),q=function(a,b=F){let c=[];for(let d of b.inspectionBatchRules){let b=a.entries.filter(a=>d.namePattern.test(a.name)&&(!d.unit||a.unit===d.unit)).reduce((a,b)=>a+b.quantity,0);if(b<=0)continue;let e=d.divisor>0?Math.max(1,Math.ceil(b/d.divisor)):0,f=d.descTemplate.replace("{count}",String(e)).replace("{total}",String(Math.round(1e3*b)/1e3));c.push({scope:d.scope,planDesc:f})}return c}(c,d),r=function(a){let b=a.entries.filter(a=>/挖一般土方|挖沟槽土方|挖基坑土方|清淤/u.test(a.name)&&"m3"===a.unit).reduce((a,b)=>a+b.quantity,0),c=a.entries.filter(a=>/回填|路肩土|种植土/u.test(a.name)&&"m3"===a.unit).reduce((a,b)=>a+b.quantity,0),d=Math.max(0,Math.round((b-c)*1e3)/1e3);return{excavation:Math.round(1e3*b)/1e3,backfill:Math.round(1e3*c)/1e3,disposal:d,basis:"清单挖/填/弃量汇总(挖方含清淤),补疑口径:购土回填运距自行考虑"}}(c),s=function(a,b,c=F){let{machinePowerTable:d,powerFallbackText:e,waterNoteText:f}=c,g=a.filter(a=>!R.has(a.name)).reduce((a,b)=>a+(d.find(a=>a.name===b.name)?.kw||0)*(b.min||1),0),h=g>0?`按电动机具负荷计算,用电负荷约 ${Math.round(.7*g)} kW(电动机具总功率约 ${Math.round(g)} kW,同时系数 0.7),${e}`:e,i=Math.round(60*b.peakValue/1e3*10)/10;return{powerLoad:h,waterUsage:`生活用水按高峰人数 ${b.peakValue} 人、每人每日 60L 计算,高峰日生活用水量约 ${i} m\xb3;${f}`}}(o,n,d),t=(a.evidence||[]).map(a=>String(a.content||"")).join("\n"),u=function(a,b){let c=function(){let a=g.join(f.homedir(),".customize-agent","template-references"),b=g.join(a,"files","standard-blocks");if(!e.existsSync(b))return[];let c=g.join(a,"standard-blocks.json"),d=[];if(e.existsSync(c))try{d=(JSON.parse(e.readFileSync(c,"utf8")).blocks||[]).map(a=>a.id)}catch{d=[]}return 0===d.length&&(d=e.readdirSync(b).filter(a=>a.endsWith(".md")).map(a=>a.replace(/\.md$/u,""))),d.flatMap(a=>{let c=g.join(b,`${a}.md`);if(!e.existsSync(c))return[];let d=e.readFileSync(c,"utf8"),f=(/^title:\s*(\S.*)$/mu.exec(d)||[])[1]?.trim()||a;return[{id:a,title:f,source:(/^source:\s*(\S.*)$/mu.exec(d)||[])[1]?.trim()||"",lines:d.split("\n").filter(Boolean)}]})}(),d=[],h=[];for(let e of c){let c=[],f=!1;for(let a of e.lines){if(a.startsWith("---")||/^(id|title|source|updatedAt|tags):/u.test(a)||a.startsWith("# "))continue;if(a.startsWith("## ")){f=!0;continue}if(f)continue;let b=a.trim();if(!/^[-*\d]+[.、]?\s+/u.test(b))continue;let d=b.replace(/^[-*\d]+[.、]?\s+/u,"").trim();d&&c.push(d)}if("hazardous-works-37"===e.id){let c=function(a,b){let c,d=[],e=[...b.matchAll(/(?:开挖深度|挖深|基坑深度|沟槽深度)[^。;;\n]{0,30}?(\d+(?:\.\d+)?)\s*m/gu)].map(a=>Number(a[1])),f=a.entries.some(a=>/挖一般土方|挖沟槽|挖基坑/u.test(a.name)),g=!1;if(f){d.push("基坑(槽)土方开挖、降水——判定阈值:开挖深度超过3m(含3m)属危大工程,超过5m(含5m)属超过一定规模(须专家论证)");let a=e.length>0?Math.max(...e):void 0;void 0===a?(c="本项目含沟槽/基坑土方开挖,但资料(清单特征「挖土深度:详见设计图纸」)未给出具体开挖深度,危大等级判定待人工确认(不静默判定)",g=!0):c=a<3?`资料确认最大开挖深度 ${a}m < 3m,未达危大工程阈值,按一般土方工程管控`:a<5?`资料确认最大开挖深度 ${a}m,达到 3m(含)未达 5m,属危大工程,需编制专项施工方案(施工单位技术负责人审核签字、总监理工程师审查签字)`:`资料确认最大开挖深度 ${a}m ≥ 5m,属超过一定规模的危大工程,专项方案须专家论证(不少于5名符合专业要求的专家)`}else c="本项目清单未含基坑(槽)土方开挖条目,基坑工程危大判定不涉及";return d.push("专家论证程序:超过一定规模的危大工程专项方案组织不少于5名符合专业要求的专家论证;修改后的方案由施工单位技术负责人审核签字、加盖单位公章,并由总监理工程师审查签字、加盖执业印章后方可实施"),{items:d,conclusion:c,gap:g}}(a,b);d.push({id:"hazardous_works",title:"危大工程判定",source:e.source,items:[...c.items,`本项目判定结论:${c.conclusion}`],gap:c.gap})}else d.push({id:e.id,title:e.title,source:e.source,items:c.slice(0,30)})}for(let a of["organization","construction_prep","survey_plan","product_protection","emergency_plans","seasonal_measures","fire_control","tech_management","smart_site","handover_warranty","quality_innovation"])h.push(a),d.push({id:a,title:a,source:"(缺口:参考文档资产未建设)",items:[],gap:!0});return{blocks:d,gaps:h}}(c,t),v=function(a,b=F){let c=a.villages.map(a=>a.villageGroup).map(a=>({name:a,basis:"清单按自然村分组(工程名称)"})),d=c.length>1&&b.multiVillageFlow?.(c.length)||b.deploymentFlowFallback,e=[...new Set(a.entries.map(a=>a.section).filter(Boolean))];return{sections:c,sequence:e.length>0?e.join(" → "):b.sequenceFallback,sequenceBasis:"清单分部分项编排顺序归纳",flow:d}}(c,d),w=function(a,b=F){let c=[];for(let d of b.difficultyTemplates)d.test(a)&&c.push({name:"function"==typeof d.name?d.name(a):d.name,measure:d.measure,basis:d.basis});return 0===c.length&&c.push({name:"多工序交叉施工组织",measure:"按清单分部分项编排顺序组织流水作业,加强工序衔接检查",basis:"清单分部分项结构"}),c}(c,d),x=function(a){let b=V({facts:a.facts||[],evidence:a.evidence||[]}),c=[];a.contract&&a.contract.totalDays>0&&c.push({id:"contract_days",label:"总工期",values:[`${a.contract.totalDays} 日历天`]}),a.labor&&a.labor.peakValue>0&&c.push({id:"labor_peak",label:"劳动力峰值",values:[`${a.labor.peakValue} 人`]});let d=a.villageCount||0;if(d>0&&c.push({id:"village_count",label:"自然村数量",values:[`${d} 个自然村`]}),a.boq){let b=function(a){let b=new Map;for(let c of a.entries){if(!c.name||c.quantity<=0||/暂列|金额|计日工|税|费/u.test(c.name)||!c.section)continue;let a=b.get(c.section)||[];a.push(c),b.set(c.section,a)}return[...b.entries()].sort((a,b)=>b[1].length-a[1].length).slice(0,3).map(([a,b])=>{let c=[...b].sort((a,b)=>b.quantity-a.quantity||(a.name<b.name?-1:1))[0];return`${c.name} ${c.quantity}${c.unit}(${a})`})}(a.boq);b.length>0&&c.push({id:"core_quantities",label:"核心工程量",values:b})}return{entries:[...b,...c]}}({facts:a.facts,evidence:a.evidence,contract:l,labor:n,boq:c,villageCount:j}),y=[...new Set(c.entries.map(a=>a.section).filter(Boolean))],z=function(a){if(!a)return"";let b=/建设地点[:: \t|]*([^。;;\n|]{2,40}?)(?=[,,。;;\n|]|工期|质量标准|合同估算)/u.exec(a);return b?b[1].trim().replace(/[,,、\s]+$/gu,""):""}(a.basicFacts||""),A=z?function(a){for(let b of D)if(b.pattern.test(a))return{...b.climate};return{rainySeason:"",highTemp:"",winter:""}}(z):(b=d.climateZone)&&D.find(a=>a.zone===b)?.climate||{rainySeason:"",highTemp:"",winter:""},B=[];return m.some(a=>a.basis.includes("均分降级"))&&B.push("里程碑分组未命中策略特征(非 prep 权重占比 < 5%),已按总工期均分降级,详见 data.milestones.basis"),A.rainySeason||B.push("气候区域未识别,季节施工由写作层按建设地点常识处理"),{data:{project:{name:a.projectName||"(待提取:项目名称)",scope:c.villages.length>0?`${c.villages.length} 个自然村分组(${c.villages.map(a=>a.villageGroup).join("、")})`:"",works:y,location:z},contract:{totalDays:l.totalDays,qualityStandard:l.qualityStandard,pricingFile:l.pricingFile,estimatedAmount:l.estimatedAmount||void 0},climate:A,milestones:m,resources:{labor:n,equipment:o},materialsPlan:p,fundPlan:{wageRule:"工资性工程款按合造价〔2022〕8号执行",usagePlan:"按进度分阶段使用"},testPlan:[],earthworkBalance:r,tempUtilities:s,redLineFacts:i,amountRule:"商务禁区延续:金额类数据禁入正文(合同估算价例外),fund_plan/red_line_facts 渲染时遵守",decisionLock:x,quantities:h,specAuthorities:k,inspectionBatches:q,standardBlocks:u.blocks,constructionDeployment:v,keyDifficulties:w,basisRegulations:$(`${a.basicFacts||""}
225
+ ${t}`),drawingNote:"总平面布置图/横道图/组织机构图为后期人工配图,蓝图只规划对应章节正文内容"},diagnostics:{standardBlocksLoaded:u.blocks.filter(a=>!a.gap).length,standardBlockGaps:u.gaps,warnings:B}}}({boq:j,basicFacts:a.basicFacts,evidence:a.evidence,facts:a.facts,projectName:d.projectCode||"",strategy:k});c.standardBlocksLoaded=l.diagnostics.standardBlocksLoaded,c.standardBlockGaps=l.diagnostics.standardBlockGaps,c.warnings.push(...l.diagnostics.warnings),c.stage="阶段 B/C";let m=function(a){let{chapterTitles:b,boq:c}=a;return{chapters:b.map((b,d)=>{var e;let f=String(d+1),g=_.filter(a=>a.chapterPattern.test(b)).map(a=>`${a.item}(评审权重 ${a.weight})`),h=/主要分部分项|施工方案|施工方法/u.test(b)?function(a,b){let c=new Map;for(let b of a.entries){if(!b.section)continue;let a=c.get(b.section)||[];a.push(b),c.set(b.section,a)}let d=[],e=0;for(let[a,f]of c){let c=aa(a,f),g=f.some(a=>"unit-project"===a.sectionKind),h=[];if(g){let a=new Map;for(let b of f){let d=b.subsection||c,e=a.get(d)||[];e.push(b),a.set(d,e)}for(let[b,c]of a)h.push(ac(aa(b,c),c))}else h.push(ac(c,f));e+=1,d.push({id:`${b}.${e}`,title:c,targetWords:2400,requiredParams:h.flatMap(a=>Object.keys(a.quantities).slice(0,5).map(a=>({path:`data.quantities.${a}`,mode:"must_cite",strict:!0}))),scoredItems:["评标分项:主要施工方法(1.5)"],tablePlans:[],workPackages:h})}return d}(c,f):[];return{id:f,title:b,isActive:(e=a.docType,!(/专项施工方案|专项方案|危大/u.test(e)&&/总平面|平面布置|施工部署|总体部署/u.test(b))),requiredParams:[],scoredItems:g,subSections:h}})}}({chapterTitles:a.chapterTitles,boq:j,docType:d.docType});c.stage="阶段 D";let n={meta:d,data:l.data,outline:m,validation:{passed:!1,checks:[]},diagnostics:c};return n.validation=function(a,b){let c=[],d=(0,A.Jx)(a,L);c.push({name:"1. Schema 校验",passed:0===d.length,message:0===d.length?"结构/类型/必填/边界全部通过":d.join(";")});let e=function(a,b){let c=[];if(b){let d=N(b);for(let[b,e]of Object.entries(a.data.quantities)){let a=d[b];if(!a){c.push(`quantities.${b} 不在清单解析产物值集中(疑似编造)`);continue}a.value!==e.value&&c.push(`quantities.${b} 数值 ${e.value} 与清单聚合值 ${a.value} 不一致`)}}for(let b of a.data.redLineFacts)b.value&&b.source||c.push(`红线事实「${b.key}」缺值或缺来源`);if(b){let d=[...F.equipmentMapping,...G.equipmentMapping,...H.equipmentMapping,...I.equipmentMapping,...J.equipmentMapping,...K.equipmentMapping];for(let e of a.data.resources?.equipment||[]){let a=d.find(a=>a.name===e.name);if(!a)continue;let f=b.entries.filter(b=>a.pattern.test(`${b.name} ${b.description}`)&&b.unit===a.unit).reduce((a,b)=>a+b.quantity,0),g=/合计约\s*([\d.]+)/u.exec(e.basis);g&&Number(g[1])!==Math.round(f)&&c.push(`机械「${e.name}」basis 工程量 ${g[1]} 与清单同单位聚合 ${Math.round(f)} 不一致`)}}return c}(a,b);c.push({name:"2. 事实锚定校验",passed:0===e.length,message:0===e.length?"L1a 值全部 ∈ 清单解析产物值集,红线事实逐条有源":e.join(";")});let f=function(a,b){let c=[],d=a.outline.chapters.flatMap(a=>a.subSections).flatMap(a=>a.workPackages);if(b){let a=new Set;for(let b of d)for(let c of b.coveredSeqs)a.add(c);let e=b.entries.filter(b=>b.section&&!a.has(b.seq));e.length>0&&c.push(`清单条目零丢失校验失败:${e.length} 条未被工作包覆盖(如序号 ${e.slice(0,5).map(a=>a.seq).join("、")})`)}let e=new Set;for(let b of a.outline.chapters)for(let a of b.scoredItems)e.add(a.split("(")[0]||"");let f=_.filter(a=>![...e].some(b=>b.includes(a.item))).map(a=>a.item);return f.length>0&&c.push(`十项评审承接缺失:${f.join("、")} 无章/节显性承接声明`),0===a.data.keyDifficulties.length&&c.push("重难点及保证措施未逐项列明(十项评审⑩硬要求)"),c}(a,b);c.push({name:"3. 覆盖校验",passed:0===f.length,message:0===f.length?"清单条目零丢失、十项评审全承接、重难点逐项列明":f.join(";")});let g=function(a){let b=[],c=a.data.contract?.totalDays||0,d=(a.data.milestones||[]).reduce((a,b)=>a+(b.duration||0),0);c>0&&d>c&&b.push(`里程碑总和 ${d} 天超过总工期 ${c} 天`);let{labor:e}=a.data.resources||{};if(e){for(let a of(e.peak&&e.peak.min>e.peak.max&&b.push(`劳动力峰值区间异常(min ${e.peak.min} > max ${e.peak.max})`),e.peakValue>0&&e.peak&&(e.peakValue<e.peak.min||e.peakValue>e.peak.max)&&b.push(`劳动力峰值唯一口径 ${e.peakValue} 人超出推导区间 ${e.peak.min}~${e.peak.max} 人`),e.byTrade||[]))(a.min||0)>(a.max||0)&&b.push(`工种「${a.trade}」人数区间异常`);let d=a.data.contract?.estimatedAmount||0;if(d>0&&e.peakValue>0&&c>0){let a=P(d,Math.max(30,Math.round(.85*c))),f=Math.round(.6*a.min),g=Math.round(1.3*a.max);(e.peakValue<f||e.peakValue>g)&&b.push(`劳动力峰值 ${e.peakValue} 人超出造价锚定量级窗口 [${f}, ${g}] 人(合同估算价 ${d} 万元锚定)`)}}let f=new Set((a.data.decisionLock?.entries??[]).map(a=>a.id));for(let c of(a.data.contract?.totalDays>0&&!f.has("contract_days")&&b.push(`决策锁缺失数据条目 contract_days(总工期 ${a.data.contract.totalDays} 日历天未入锁)`),e&&e.peakValue>0&&!f.has("labor_peak")&&b.push(`决策锁缺失数据条目 labor_peak(劳动力峰值 ${e.peakValue} 人未入锁)`),a.data.redLineFacts?.some(a=>"自然村数量"===a.key)&&!f.has("village_count")&&b.push("决策锁缺失数据条目 village_count(自然村数量红线事实未入锁)"),a.data.resources?.equipment||[]))(c.min||0)>(c.max||0)&&b.push(`机械「${c.name}」台数区间异常`);let g=(a.data.standardBlocks||[]).find(a=>"six-hundred-percent"===a.id);return g&&!g.gap&&6!==g.items.length&&b.push(`扬尘治理六个百分百板块条目数 ${g.items.length} 条(应为恰六条)`),b}(a);c.push({name:"4. 内部一致性校验",passed:0===g.length,message:0===g.length?"里程碑/劳动力/机械区间自洽":g.join(";")});let h=function(a){let b=!a.consistencyErrors.some(a=>/里程碑|总工期/u.test(a)),c=!a.consistencyErrors.some(a=>/劳动力|工种/u.test(a)),d=!a.consistencyErrors.some(a=>/机械/u.test(a));return{laborPeak:a.schemaPassed&&a.factPassed&&c,schedule:a.schemaPassed&&a.factPassed&&b,blueprint:a.schemaPassed&&a.factPassed&&a.coveragePassed&&d}}({schemaPassed:0===d.length,factPassed:0===e.length,coveragePassed:0===f.length,consistencyErrors:g});return{passed:c.every(a=>a.passed),checks:c,authorityAvailability:h}}(n,i),n.validation.passed||c.warnings.push(`蓝图校验未通过:${n.validation.checks.filter(a=>!a.passed).map(a=>a.name).join("、")}(一期旁路仅报告,不阻断生成)`),c.durationMs=Date.now()-b,n}function az(a,b){let c=g.join((0,C.Gl)(a),"assets","blueprint.json");return e.writeFileSync(c,JSON.stringify(b,null,2),"utf8"),c}z.ts.length},85016:(a,b,c)=>{c.d(b,{D$:()=>g,NR:()=>l,WT:()=>k,fc:()=>m});var d=c(37047),e=c(22157);let f=[{anchor:"按工作包逐项说明施工内容",required:/工作包|逐项说明/u},{anchor:"本项目已确认资料",required:/已确认|确认资料|本项目资料/u},{anchor:"已确认的项目资料显示",required:/已确认|项目资料/u},{anchor:"根据已确认资料",required:/已确认/u},{anchor:"生成后事实反查未通过",required:/事实反查|反查/u},{anchor:"资料事实主表",required:/事实主表/u},{anchor:"事实卡",required:/事实卡/u},{anchor:"后台数据库记录",required:/后台数据库|后台记录/u},{anchor:"证据摘要中未包含",required:/证据摘要/u},{anchor:"本专业工程主要清单项落位如下",required:/清单项落位|落位如下/u},{anchor:"针对招标文件及补疑文件的技术要求进行专项落位",required:/专项落位/u},{anchor:"全文数据口径必须唯一",required:/数据口径|峰值口径|控制口径|口径必须唯一/u}],g=/工作包|事实卡|事实主表|后台数据库|落位|峰值口径|控制口径|数据口径/gu,h=/工作包|事实卡|事实主表|后台数据库|落位|峰值口径|控制口径|数据口径/u,i=/^\d+(?:\.\d+)*\s+\S+/u;function j(a,b){let c=Math.min(a.length,b.length),d=0;for(let e=0;e<c;e+=1)d+=a[e]*b[e];return d}async function k(a){let b=[],c=[...new Set(a.match(g)||[])];c.length>0&&b.push({level:"error",severity:"blocker",category:"format",owner:"system",repairability:"llm_repairable",message:`正式正文仍包含后台内部术语“${c.join("”“")}”,需要按上下文语义改写为正式术语`,suggestion:"请结合语境改写:“拆除工程工作包”→“拆除工程”,“按工作包逐项说明”→“按专业工程逐项说明”;禁止出现生成系统后台概念。",provenance:{detectorId:"internal-terminology-anchor",fingerprint:(0,e.c6)(a)}});let h=a.split(/\r?\n/u).map(a=>a.trim()).filter(a=>!/^#{1,6}\s/u.test(a)&&!/^\s*\|/u.test(a)&&!(i.test(a)&&a.length<=40&&!/[。!?!?;;,,::]/.test(a))).flatMap(a=>a.split(/(?<=[。!?!?;;])/u).map(a=>a.trim())).filter(a=>a.length>=8&&a.length<=80).slice(0,200);if(0===h.length)return b;let k=(0,d.VN)(),[l,m]=await Promise.all([k.embedDocuments(h),k.embedDocuments(f.map(a=>a.anchor))]),n=[];for(let a=0;a<h.length;a+=1){let b=l[a];if(!b||0===b.length)continue;let c=h[a];if(f.some(a=>a.required.test(c))&&(Math.max(...m.map(a=>j(b,a)))>=.62&&n.push(c.slice(0,24)),n.length>=6))break}return n.length>0&&b.push({level:"error",severity:"blocker",category:"format",owner:"system",repairability:"llm_repairable",message:`正式正文疑似包含后台内部话术(语义锚点命中 ${n.length} 处):${n.map(a=>`“${a}…”`).join("、")}`,suggestion:"将内部话术(已确认资料/事实卡/工作包等生成系统概念)改写为面向评标人的正式表述,仅陈述项目事实与施工内容。",provenance:{detectorId:"internal-terminology-anchor",fingerprint:(0,e.c6)(a)}}),b}async function l(a){let b=a.split(/\r?\n/u),c=a=>{let b=a.trim();return!!(/^#{1,6}\s/u.test(b)||/^\s*\|/u.test(b))||i.test(b)&&b.length<=40&&!/[。!?!?;;,,::]/.test(b)},e=[];b.forEach((a,b)=>{if(c(a))return;let d=a.split(/(?<=[。!?!?;;])/u).map(a=>a.trim()).filter(a=>h.test(a)||a.length>=8&&a.length<=80&&f.some(b=>b.required.test(a)));d.length>0&&e.push({index:b,sentences:d})});let g=e.flatMap(a=>a.sentences);if(0===g.length)return a;let k=g.filter(a=>h.test(a)),l=g.filter(a=>!h.test(a)).slice(0,200),m=new Set(k);if(l.length>0){let a=(0,d.VN)(),[b,c]=await Promise.all([a.embedDocuments(l),a.embedDocuments(f.map(a=>a.anchor))]);l.forEach((a,d)=>{let e=b[d];e&&0!==e.length&&Math.max(...c.map(a=>j(e,a)))>=.62&&m.add(a)})}return 0===m.size?a:b.map((a,b)=>{if(c(a))return a;let d=a;for(let a of m)d.includes(a)&&(d=d.split(a).join(""));return d}).join("\n")}function m(a){let b=0,c=a=>a.replace(/(职责|责任|分工|任务|措施|要求|管理|控制|工作|专项|标准|管控|验收|培训|教育|巡检|检查)落位/gu,"$1落实").replace(/(作业面|平面|现场|位置|点位|布局|空间|场地|工序|区域|临时设施|堆场|通道|道路|设备|设施|材料|构件|管线|照明|灯具|站房|楼层|部位)落位/gu,"$1布置").replace(/落位/gu,"落实");return{markdown:a.split(/\r?\n/u).map(a=>{let d=/^(#{1,6}\s+)(.*)$/u.exec(a);if(d){let e=d[2];if(!h.test(e))return a;let f=c(e);return f===e?a:(b+=1,`${d[1]}${f}`)}if(a.includes("|")&&a.includes("落位")){let d=c(a);if(d!==a)return b+=1,d}return a}).join("\n"),fixedCount:b}}},87635:(a,b,c)=>{c.d(b,{h:()=>s,jO:()=>r,ml:()=>k,qq:()=>i,xs:()=>h});var d=c(1218),e=c(51190),f=c(22157),g=c(13145);let h=["项目名称 项目编号 招标人 项目概况与招标范围 建设地点 建设规模 计划工期 质量标准 合同估算价","计划工期 合同工期 总工期 日历天","合同估算价 合同估算价格 投资估算 最高投标限价 招标控制价","质量标准 质量目标 合格","建设地点 建设规模 招标范围"];function i(a){let b=(0,d.de)(a),c=0;return/项目名称|工程名称|招标项目名称|项目编号|招标项目编号|招标人|建设单位|发包人/u.test(b)&&(c+=4),/计划工期|合同工期|总工期|\d+(?:\.\d+)?\s*(?:日历天|天|个月|月|年)/u.test(b)&&(c+=6),/合同估算价|投资估算|最高投标限价|招标控制价|\d+(?:\.\d+)?\s*(?:万元|元)/u.test(b)&&(c+=5),/质量标准|质量目标|合格|优良/u.test(b)&&(c+=4),/建设地点|建设规模|招标范围|项目概况与招标范围/u.test(b)&&(c+=4),/工程量|清单|图纸|设计说明|施工范围|施工内容|材料|设备|工艺|验收|复试|检测/u.test(b)&&(c+=3),/保证金账户|开户行|开户名称|收款账户|汇款|转账账户|电子交易系统|公共资源交易|开标时间|开标地点|评标委员会|评标办法/u.test(b)&&(c-=4),c}function j(a){return a.filter(a=>/项目名称|工程名称|项目编号|招标项目编号|招标人|建设单位|发包人|建设地点|建设规模|招标范围|计划工期|合同工期|周期要求|质量标准|合同估算|投资估算|最高投标限价|招标控制价/u.test(`${a.key||""}${a.fieldName||""}${a.fieldId||""}`))}function k(a){return(0,d.de)(a).replace(/PDF\s*第\s*\d+(?:\s*[-—至到~~]\s*\d+)?\s*页/giu,"相关资料").replace(/PDF\s*第(?![ \t]*[0-90-9])/giu,"").replace(/(\d)\s+(日)/gu,"$1$2").replace(/[。;;]$/u,"").trim()}let l=/(?:黄山杯|鲁班奖|白玉兰杯|钱江杯|扬子杯|安济杯|长安杯|汾水杯|省优|市优|国优|优质工程|确保[^。;;|,、,\n]{0,10}(?:杯|奖))/u;function m(a,b="",c=b){let g=function(a){let b=new Map;for(let c of a.split(/\r?\n/u)){if(!/^\|.*\|\s*$/u.test(c)||/^\|\s*:?-{3,}:?/u.test(c))continue;let a=c.trim().replace(/^\|/u,"").replace(/\|$/u,"").split("|").map(a=>a.replace(/\*\*/gu,"").trim());if(a.length<2)continue;let e="序号"===a[0]&&a.length>=3?a[1]:a[0],f="序号"===a[0]&&a.length>=3?a[2]:a[1],g="序号"===a[0]&&a.length>=4?a[3]:a[2],h=e.replace(/\/|:|:/gu,"").trim();if(!/项目名称|工程名称|项目编号|招标项目编号|招标人|项目业主|建设单位|发包人|建设地点|建设规模|施工范围|招标范围|计划工期|合同工期|质量标准|合同估算价|合同估算价格|投资估算|最高投标限价|招标控制价/u.test(h))continue;let i=/计划工期|合同工期/u.test(h)?"schedule_requirement":/质量标准/u.test(h)?"quality_standard":/合同估算价|合同估算价格|投资估算|最高投标限价|招标控制价/u.test(h)?"project_investment_estimate":/招标人|项目业主|建设单位|发包人/u.test(h)?"owner":/建设地点/u.test(h)?"project_location":/项目编号|招标项目编号/u.test(h)?"project_code":void 0;!(!f||/内容|参数|资料未明确|系统暂未从知识库确认|项目资料暂未明确/u.test(f))&&(0,d.R7)(i||"project_name",f)&&b.set(h,[k(f),k(g||"项目资料")||"项目资料"])}return b}(b),h=(0,e.mN)({facts:a,markdown:c}),i=a=>k((0,f.lG)(a||"")).replace(/\|/gu,"").replace(/\bCOL\d+\b/gu,"").replace(/\s{2,}/gu," ").trim(),j=(a,b)=>{let e=h.get(a);if(e){let b=i(e.value);if(b&&(0,d.R7)(a,b))return[b,e.source||"项目资料"]}let f=function(a,b){for(let[c,d]of a.entries())if(b.some(a=>a.test(c)))return d}(g,b);return f&&(0,d.R7)(a,f[0])?[f[0],f[1]||"项目资料"]:("project_name"===a?(()=>{let a=[/([\u4e00-\u9fa5A-Za-z0-9()()\-—_\s·]+?(?:施工总承包项目|一期项目|学生宿舍一期|学生宿舍项目))/u.exec(c)?.[1],/项目名称[::\s|]+([^|\n。;;]{6,80})/u.exec(c)?.[1]].map(i).filter(a=>a&&(0,d.R7)("project_name",a));return a[0]?[a[0],"项目资料"]:void 0})():void 0)||["",""]},n=[["项目名称",...j("project_name",[/项目名称|工程名称|project_name/u])],["项目编号",...j("project_code",[/项目编号|招标项目编号|project_code/u])],["招标人",...j("owner",[/招标人|项目业主|建设单位|发包人|owner/u])],["建设地点",...j("project_location",[/建设地点|project_location/u])],["建设规模",...j("project_scale",[/建设规模|project_scale/u])],["计划工期",...j("schedule_requirement",[/计划工期|合同工期|周期要求|schedule_requirement/u])],["质量标准",...j("quality_standard",[/质量标准|quality_standard/u])],["合同估算价",...j("project_investment_estimate",[/合同估算|投资估算|最高投标限价|招标控制价|project_investment_estimate/u])]],o=n.find(([a])=>"质量标准"===a);if(o&&o[1]&&!l.test(o[1])){let b=function(a,b){let c=a.filter(a=>/创优|优质优价|奖项|奖惩|award/u.test(`${a.fieldId||""}${a.key||""}${a.fieldName||""}`));if(c.some(a=>{let b=k((0,f.lG)(a.value||""));return!!b&&/^(?:无|否|不设|未设|无创优|无奖项|不作|不要求|不设创优)$/u.test(b.trim())}))return;let d=[];for(let a of c)d.push(k((0,f.lG)(a.value||"")));for(let a of(d.push(b),d)){let b=/(?:确保|争创|力争|确保获得)[^。;;|,、,\n]{0,12}(?:杯|奖|优质工程)/u.exec(a);if(!b)continue;let c=b[0].trim();if(c.length>=5&&c.length<=24)return c}}(a,c);b&&!o[1].includes(b)&&(o[1]=`${o[1]},${b}`)}return n.filter(([,a])=>!!a).map(([a,b,c])=>[a,b,c||"项目资料"])}function n(a,b="",c=b){return["**项目基本信息表**","","| 信息项 | 内容 |","|---|---|",...m(a,b,c).map(a=>`| ${a[0]} | ${a[1]} |`)].join("\n")}let o=[/^项目名称$/u,/^工程名称$/u,/^项目编号$/u,/^招标项目编号$/u,/^招标人$/u,/^项目业主$/u,/^建设单位$/u,/^发包人$/u,/^建设地点$/u,/^实施地点$/u,/^建设规模$/u,/^工程规模$/u,/^计划工期$/u,/^合同工期$/u,/^总工期$/u,/^质量标准$/u,/^质量目标$/u,/^合同估算价$/u,/^投资估算$/u,/^最高投标限价$/u,/^招标控制价$/u];function p(a){return o.some(b=>b.test(a))}function q(a){let b=a.replace(/\r?\n/gu,"\n").split("\n"),c=[],d=!1,e=a=>(0,g.Mp)(a).map(a=>a.replace(/\*\*/gu,"").trim()),f=a=>{let b=a.slice(2).map(e).filter(a=>a.length>=2).map(a=>a[0]||""),c=b.filter(p).length;return c>=3&&c>=Math.ceil(.45*b.length)};for(let a=0;a<b.length;){let e=b[a]||"",h=b[a+1]||"";if(/(?:\*\*[^\u000A]*项目基本信息表[^\u000A]*\*\*|####\s+[^\u000A]*项目基本信息表[^\u000A]*|###\s+[^\u000A]*项目基本信息表[^\u000A]*)/u.test(e)){let f=[e];for(a+=1;a<b.length&&!((0,g.VS)(b[a]||"")&&(0,g.vh)(b[a+1]||""))&&""===(b[a]||"").trim();)f.push(b[a]||""),a+=1;if(a<b.length&&(0,g.VS)(b[a]||"")&&(0,g.vh)(b[a+1]||""))for(f.push(b[a]||"",b[a+1]||""),a+=2;a<b.length&&(0,g.VS)(b[a]||"");)f.push(b[a]||""),a+=1;d||(d=!0,c.push(...f));continue}if(/^###\s+(?:\d+\.\d+\s+)?(?:项目基本信息|工程概况|项目概况)\s*$/u.test(e)){let h=[e];for(a+=1;a<b.length&&!((0,g.VS)(b[a]||"")&&(0,g.vh)(b[a+1]||""))&&!/^###\s+/u.test(b[a]||"");)h.push(b[a]||""),a+=1;if(a<b.length&&(0,g.VS)(b[a]||"")&&(0,g.vh)(b[a+1]||"")){let i=[b[a]||"",b[a+1]||""];for(a+=2;a<b.length&&(0,g.VS)(b[a]||"");)i.push(b[a]||""),a+=1;if(f(i)){if(d){let a=h.filter(a=>a.trim()&&!/^###\s+/u.test(a));a.length&&c.push(e,...a)}else d=!0,c.push(...h,...i);continue}c.push(...h,...i);continue}c.push(...h);continue}if((0,g.VS)(e)&&(0,g.vh)(h)){let i=[e,h];for(a+=2;a<b.length&&(0,g.VS)(b[a]||"");)i.push(b[a]||""),a+=1;if(f(i)){d||(d=!0,c.push(...i));continue}c.push(...i);continue}c.push(e),a+=1}return c.join("\n").replace(/\n{3,}/gu,"\n\n").replace(/\n{1,2}\|\s*信息项\s*\|\s*内容\s*\|\s*\n+(?:该小节围绕[^\n]*\n+)+\|\s*:?-{3,}:?\s*\|\s*:?-{3,}:?\s*\|\s*/gu,"\n\n")}function r(a,b){if(a=((a,b)=>{let c=a.split("\n"),d=[];for(let a=0;a<c.length;a+=1){let e=c[a]||"",f=/^(#{3,5})\s+(.+)$/u.exec(e.trim()),g=f?.[2]?.replace(/^\d+(?:\.\d+)*\s+/u,"").trim()||"";if(f&&b.some(a=>a.test(g))){for(a+=1;a<c.length&&!/^#{2,5}\s+/u.test((c[a]||"").trim());)a+=1;a-=1;continue}d.push(e)}return d.join("\n")})(a,[/^工程概况一览表$/u,/^招标文件?评分.*响应索引表$/u,/^招标评分项响应索引表$/u]).replace(/\*\*(?:工程概况一览表|招标文件?评分.*响应索引表|招标评分项响应索引表)\*\*[\s\S]*?(?=\n{2,}#{2,5}\s+|\n{2,}(?:[^|\n#]|$)|$)/gu,"").replace(/\n{3,}/gu,"\n\n"),!/项目基本信息|项目概况|工程概况|招标范围/u.test(a))return q((0,g.yk)((0,g.j7)(a)));let c=/^(#{2,4}\s+(?:\d+\.\d+\s+)?[^\n]*(?:项目概况|工程概况|项目基本信息|招标范围)[^\n]*\n)/mu,d=/^(#{2,4}\s+(?:\d+\.\d+\s+)?[^\n]*(?:概况|基本信息)[^\n]*\n)/mu,e=()=>c.exec(a)??d.exec(a);if(!/\|\s*信息项\s*\|\s*内容\s*\|/u.test(a)&&j(b).length>0){let c=e();if(c?.index||c?.index===0){let d=c.index+c[0].length,e=`${n(b,"",a)}
226
226
 
227
227
  `;a=`${a.slice(0,d)}
228
228
  ${e}${a.slice(d).trimStart()}`}}let f=e();if(!f?.index&&f?.index!==0)return a;let h=f.index,i=h+f[0].length,k=/^#{2,4}\s+/gmu;k.lastIndex=i;let l=k.exec(a),o=l?.index??a.length,r=a.slice(i,o),s=n(b,r,a);if(!m(b,r,a).some(a=>!/资料未明确|系统暂未从知识库确认|项目资料暂未明确/u.test(a[1])))return a;let t=(function(a){let b=a.split("\n"),c=[],d=a=>{let b=(0,g.Mp)(a[0]||"").map(a=>a.replace(/\*\*/gu,"").trim());if("序号"===b[0]&&/项目名称/u.test(b[1]||""))return!0;let c=a.slice(2).map(g.Mp).filter(a=>a.length>=2);if(0===c.length)return!1;let d=c.map(a=>(a[0]||"").replace(/\*\*/gu,"").trim()),e=d.filter(p).length;return e>=3&&e>=Math.ceil(.45*d.length)};for(let a=0;a<b.length;){let e=b[a]||"";if(/^\s*\*\*[^\n]*项目基本信息表[^\n]*\*\*\s*$/u.test(e)||/^\s*#{3,5}\s+[^\n]*项目基本信息表\s*$/u.test(e)){for(a+=1;a<b.length&&""===(b[a]||"").trim();)a+=1;if(a<b.length&&(0,g.VS)(b[a]||""))for(a+=1;a<b.length&&((0,g.VS)(b[a]||"")||(0,g.vh)(b[a]||""));)a+=1;continue}if((0,g.VS)(e)&&a+1<b.length&&(0,g.vh)(b[a+1]||"")){let c=[e,b[a+1]||""],f=a+2;for(;f<b.length&&(0,g.VS)(b[f]||"");)c.push(b[f]||""),f+=1;if(d(c)){a=f;continue}}c.push(e),a+=1}return c.join("\n")})(r).replace(/该小节围绕“[^”]+”进行补充说明[^\u000A]*(?:\u000A\u000A该小节围绕“[^”]+”进行补充说明[^\u000A]*)*/gu,"").replace(/\n{3,}/gu,"\n\n").trim(),u=`${f[0].trimEnd()}
@@ -232,4 +232,4 @@ ${s}${t?`
232
232
  ${t}`:""}
233
233
 
234
234
  `;return q((0,g.yk)((0,g.j7)(`${a.slice(0,h)}${u}${a.slice(o).trimStart()}`)))}function s(a,b){return 0!==j(b).length&&/资料未明确|系统暂未从知识库确认|项目资料暂未明确/u.test(a)?["计划工期","合同工期","质量标准","合同估算价","合同估算价格","建设地点","建设规模"].filter(b=>RegExp(`${b}[^
235
- |。;;]{0,40}(?:资料未明确|系统暂未从知识库确认|项目资料暂未明确)`,"u").test(a)).map(a=>({level:"error",message:`${a} 已抽取到项目资料事实但正文仍显示暂未明确`,suggestion:"请优先使用项目基础事实卡片中的资料原值,不得用占位表达覆盖已确认事实。"})):[]}},87942:(a,b,c)=>{c.d(b,{x:()=>d});let d={version:"professional-document-workflow-v9",rules:["complete-local-knowledge-assumption","knowledge-coverage-recovery","fact-trace-placement","chapter-coverage-gate","structured-quality-report","post-repair-verification"]}},91943:(a,b,c)=>{c.d(b,{$t:()=>y,G5:()=>A,dC:()=>C,vi:()=>z});let d=/[\u4e00-\u9fa5]/gu,e=/^([ \u3000]*)(\d{1,3})\.\s+\S/u,f=/^([ \u3000]*)([-*+])\s+\S/u,g=/^(#{1,6})\s+\S/u,h=/(?:\.{2,}|…{2,})\s*\d+\s*$/u,i=/。、|,、|;、|。,|,。|。。/u,j=/(?<=[。;!?])/u,k=/[的与和及或在于是对从向把被将按并而则如若等共约达须应需可要能以由使让]/u;function l(a){return(a.match(d)||[]).length}function m(a){let b=a.trim();return b.length>80?`${b.slice(0,80)}…`:b}function n(a){return g.test(a.trim())}function o(a){return a.trim().startsWith("|")}function p(a){let b=e.exec(a);return!!b&&300>=Number.parseInt(b[2],10)}function q(a){return f.test(a)}function r(a){return n(a)||o(a)}function s(a){return a.replace(/[|`*_<>#\s\u3000]/gu,"").replace(/^:?-{2,}:?$/u,"")}function t(a){return a.trim().replace(/^\|/u,"").replace(/\|$/u,"").split("|").map(a=>a.trim())}function u(a){return t(a).map(s).join("|")}function v(a,b){for(let c=b-1;c>=0;c-=1)if(a[c].trim())return c;return -1}function w(a,b){for(let c=b+1;c<a.length;c+=1)if(a[c].trim())return c;return -1}function x(a){let b=[],c=0;for(;c<a.length;){let d=e.exec(a[c]),f=d?Number.parseInt(d[2],10):0;if(!d||f>300){c+=1;continue}let g=d[1].length,h=[{index:c,number:f}],i=c+1;for(;i<a.length;){if(!a[i].trim()){let b=i;for(;b<a.length&&!a[b].trim();)b+=1;let c=b<a.length?e.exec(a[b]):null;if(c&&c[1].length===g&&300>=Number.parseInt(c[2],10)){i=b;continue}break}let b=e.exec(a[i]);if(b&&b[1].length===g&&300>=Number.parseInt(b[2],10)){h.push({index:i,number:Number.parseInt(b[2],10)}),i+=1;continue}break}b.push({indent:g,items:h}),c=i>c?i:c+1}return b}function y(a){let b=a.replace(/\r\n?/gu,"\n").split("\n"),c={cleanable:[],blocking:[]};for(let a of x(b)){let d=a.items.map(a=>a.number);if(1===a.items.length){d[0]>1&&c.cleanable.push({kind:"orphan-list-number",line:a.items[0].index+1,excerpt:m(b[a.items[0].index]),message:`孤立有序编号「${d[0]}.」(无前序 1.~${d[0]-1}.,疑似跨节继承编号)`});continue}d.every((a,b)=>a===b+1)||c.cleanable.push({kind:"list-numbering",line:a.items[0].index+1,excerpt:`编号序列 ${d.join(",")}`,message:`有序列表编号不连续(第 ${a.items[0].index+1}~${a.items[a.items.length-1].index+1} 行编号:${d.join(",")})`})}!function(a,b){let c=0;for(;c<a.length;){if(!q(a[c])){c+=1;continue}let d=[c],e=c+1;for(;e<a.length;){if(!a[e].trim()){let b=e;for(;b<a.length&&!a[b].trim();)b+=1;if(b<a.length&&q(a[b])){e=b;continue}break}if(q(a[e])){d.push(e),e+=1;continue}break}if(1===d.length){let c=d[0],e=v(a,c),f=w(a,c),g=e>=0?a[e].trim():"",h=/[::]$/u.test(g)||/(?:包括|如下|以下|例如|分别是)[::]?$/u.test(g),i=e>=0&&!q(a[e])&&!n(a[e])&&!o(a[e])&&!p(a[e])&&!h,j=f>=0&&!q(a[f])&&!o(a[f]);i&&j&&b.cleanable.push({kind:"orphan-list-item",line:c+1,excerpt:m(a[c]),message:"孤立单项列表(前后均为正文语境,无列表上下文)"})}c=e>c?e:c+1}}(b,c),function(a,b){for(let c of function(a){let b=[],c=0;for(;c<a.length;){if(!o(a[c])){c+=1;continue}let d=[c],e=c+1;for(;e<a.length&&o(a[e]);)d.push(e),e+=1;b.push({start:c,rows:d}),c=e}return b}(a)){let d=c.rows;if(d.length<2||!function(a){let b=a.trim();return b.startsWith("|")&&/^[\s|:-]+$/u.test(b)&&/-{3,}/u.test(b)}(a[d[1]]))continue;let e=t(a[d[0]]),f=u(a[d[0]]),g=e[0]?.replace(/[\s*_]/gu,"")??"";e.length>=3&&/表$/u.test(g)&&l(g)>=8&&b.blocking.push({kind:"table-title-in-header",line:d[0]+1,excerpt:g,message:`表格表头首格为表名(「${g}」),列语义错位(表名应独立成行,表头首格必须填列名)`});let h=d.slice(2);if(0===h.length){b.blocking.push({kind:"table-empty",line:d[0]+1,excerpt:m(a[d[0]]),message:"空表(仅表头与分隔线,无任何数据行)"});continue}let i=u(a[h[0]])===f;i&&b.cleanable.push({kind:"table-header-duplicate",line:h[0]+1,excerpt:m(a[h[0]]),message:"重复表头行(分隔线后数据行与表头内容一致)"});let j=new Set;for(let c of(i&&j.add(f),h)){if(i&&c===h[0])continue;let d=u(a[c]);if(!(!d||d.split("|").every(a=>!a))){if(j.has(d)){b.cleanable.push({kind:"table-row-duplicate",line:c+1,excerpt:m(a[c]),message:"表内数据行完全重复"});continue}j.add(d)}}}}(b,c),function(a,b){for(let c=0;c<a.length;c+=1){let d=a[c].trim();if(!d||r(d)||p(d)||q(d)||h.test(d)||/\d$/u.test(d)||15>l(d))continue;let e=d[d.length-1];if(!/[\u4e00-\u9fa5]/u.test(e)||/[::、]$/u.test(d)||/[表图]$/u.test(d))continue;let f=w(a,c);if(f>=0&&(p(a[f])||q(a[f]))&&/(?:完成后|完毕后|结束后|如下|以下)$/u.test(d)||!(-1===f||n(a[f])||o(a[f])||p(a[f])||q(a[f]))&&!k.test(e))continue;let g=v(a,c),i=g>=0?a[g].trim():"";(g<0||n(i)||o(i)||p(i)||q(i)||/[。;!?""」』)\]】…]$/u.test(i))&&b.blocking.push({kind:"truncated-line",line:c+1,excerpt:m(a[c]),message:"句尾截断(行尾无终止标点且后续为标题/表格/列表/文末,疑似生成截断)"})}}(b,c),function(a,b){for(let c=0;c<a.length;c+=1){let d=/^(#{3,6})\s+(\S.*)$/u.exec(a[c].trim());if(!d)continue;let e=d[1].length,f=w(a,c);if(-1===f){b.blocking.push({kind:"empty-subsection",line:c+1,excerpt:m(a[c]),message:`空小节「${d[2].trim().slice(0,40)}」(小节标题后无任何内容)`});continue}let g=/^(#{1,6})\s+\S/u.exec(a[f].trim());g&&g[1].length<=e&&b.blocking.push({kind:"empty-subsection",line:c+1,excerpt:m(a[c]),message:`空小节「${d[2].trim().slice(0,40)}」(小节标题后无任何内容)`})}}(b,c),function(a,b){let c=new Map;for(let d=0;d<a.length;d+=1){let e=a[d].trim();if(!e||r(e)||p(e)||q(e))continue;let f=e.replace(/\s+/gu,"");if(40>l(f))continue;let g=c.get(f);if(void 0===g){c.set(f,d);continue}b.cleanable.push({kind:"duplicate-line",line:d+1,excerpt:m(a[d]),message:`与第 ${g+1} 行完全重复(≥40 字)`})}}(b,c);for(let a=0;a<b.length;a+=1){let d=b[a];if(!d.trim()||r(d)||p(d)||q(d))continue;let e=d.split(j).map(a=>a.trim()).filter(Boolean);for(let b=0;b+1<e.length;b+=1)if(e[b]===e[b+1]&&l(e[b])>=16){c.cleanable.push({kind:"duplicate-sentence-adjacent",line:a+1,excerpt:e[b].slice(0,60),message:`相邻句子重复(「${e[b].slice(0,24)}…」连续两遍)`});break}}for(let a=0;a<b.length;a+=1){let d=b[a];if(!d.trim()||r(d))continue;let e=i.exec(d);e&&c.blocking.push({kind:"sentence-fracture",line:a+1,excerpt:m(d),message:`标点断裂(「${e[0]}」句读错乱,疑似句段拼接残留/漂移句)`})}return c}function z(a){let b=a.replace(/\r\n?/gu,"\n"),c=[];for(let a=0;a<4;a+=1){let a=b.split("\n"),d=y(b);if(0===d.cleanable.length)break;let e=new Set,f=new Map;for(let b of x(a)){let d=b.items.map(a=>a.number);if(1===b.items.length&&d[0]>1){let e=b.items[0].index,g=a[e].replace(/^([ \u3000]*)\d{1,3}\.\s+/u,"$1");g!==a[e]&&(f.set(e,g),c.push(`孤立编号去号:第 ${e+1} 行(「${d[0]}.」)`));continue}b.items.length>1&&!d.every((a,b)=>a===b+1)&&(b.items.forEach((b,c)=>{let d=a[b.index].replace(/^([ \u3000]*)\d{1,3}\.\s+/u,`$1${c+1}. `);d!==a[b.index]&&f.set(b.index,d)}),c.push(`有序列表重排:第 ${b.items[0].index+1}~${b.items[b.items.length-1].index+1} 行(${d.join(",")} → 1..${d.length})`))}for(let b of d.cleanable){let d=b.line-1;if("orphan-list-item"===b.kind){let b=a[d].replace(/^([ \u3000]*)[-*+]\s+/u,"$1");b!==a[d]&&(f.set(d,b),c.push(`孤立列表项去号:第 ${d+1} 行`))}else if("table-header-duplicate"===b.kind)e.add(d),c.push(`重复表头行删除:第 ${d+1} 行`);else if("table-row-duplicate"===b.kind)e.add(d),c.push(`表内重复数据行删除:第 ${d+1} 行`);else if("duplicate-line"===b.kind)e.add(d),c.push(`完全重复行删除:第 ${d+1} 行`);else if("duplicate-sentence-adjacent"===b.kind){let b=function(a){let b=a.split(j),c=[];for(let a of b){let b=c[c.length-1];void 0!==b&&b===a&&l(a.trim())>=16||c.push(a)}return c.join("")}(a[d]);b!==a[d]&&(f.set(d,b),c.push(`相邻重复句去重:第 ${d+1} 行`))}}let g=a.map((a,b)=>e.has(b)?void 0:f.get(b)??a).filter(a=>void 0!==a).join("\n");if(g===b)break;b=g}return{markdown:b,cleaned:c}}function A(a,b){if(0===a.blocking.length)return;let c=a.blocking.slice(0,4).map(a=>`${a.message}(第 ${a.line} 行)`).join(";");return`${b?`${b} `:""}结构完整性未通过(${a.blocking.length} 处):${c}。请保留已正确内容,仅修正上述问题后重新输出完整小节。`}let B={"orphan-list-number":"孤立编号由确定性清理去号转正文;写时按小节独立起编,不得继承父级编号。","list-numbering":"编号重排为 1..n 连续;写时编号必须从 1 起连续。","orphan-list-item":"孤立单项列表去除列表符并入正文;单项内容不使用列表格式。","table-header-duplicate":"删除重复表头行;表格必须只有一个表头块。","table-row-duplicate":"删除重复数据行;同一数据不得在表内出现两次。","table-title-in-header":"表名必须独立成行(表题),表头首格必须为列名;须定向重写该表格。","table-empty":"空表须补充数据行或删除;不得交付仅表头的空表。","table-number-orphan-reference":"补建被引用的表实体或修正引用编号;表编号引用必须与实体一一对应。","table-number-duplicate":"表编号重排为全篇唯一;同一表编号不得出现两个实体。","duplicate-line":"删除后出现的重复行;该段内容只能出现一次。","duplicate-sentence-adjacent":"相邻重复句去重;不得同句连发两遍。","truncated-line":"句尾截断须补全该句后重写;不得交付截断内容。","empty-subsection":"空小节必须补写与该小节相关的正文内容,不得只留标题。","sentence-fracture":"句读断裂须重写该句;不得交付句段拼接残留。"};function C(a,b){let c=b?.includeCleanable??!0,d=y(a),e=function(a){let b=a.replace(/\r\n?/gu,"\n").split("\n"),c=[],d=new Map,e=/^表\s*(\d+)\s+\S/u;for(let a=0;a<b.length;a+=1){let c=e.exec((b[a]||"").trim());if(!c)continue;let f=a+1;for(;f<b.length&&!(b[f]||"").trim();)f+=1;if(f>=b.length||!/^\s*\|/u.test(b[f]||""))continue;let g=Number.parseInt(c[1],10);d.set(g,[...d.get(g)||[],a+1])}for(let[a,e]of d)e.length<=1||c.push({kind:"table-number-duplicate",line:e[1],excerpt:m((b[e[1]-1]||"").trim()),message:`表编号重复(「表${a}」实体出现 ${e.length} 次:第 ${e.join("、")} 行):表编号必须全篇唯一`});let f=[/[按如]\s*表\s*(\d+)/gu,/(?<![\u4e00-\u9fa5])见\s*表\s*(\d+)/gu,/(?:参见|详见|根据|依据|按照|参照|比照|遵照|结合)\s*表\s*(\d+)/gu];for(let a=0;a<b.length;a+=1){let e=b[a]||"";if(!e.includes("表"))continue;let g=new Set;for(let b of f){let f;for(b.lastIndex=0;f=b.exec(e);){let b=Number.parseInt(f[1],10);g.has(b)||d.has(b)||(g.add(b),c.push({kind:"table-number-orphan-reference",line:a+1,excerpt:m(e.trim()),message:`引用了「表${b}」但正文无该编号表实体(引用与实体必须一一对应)`}))}}}return c}(a);return(c?[...d.blocking,...e,...d.cleanable]:[...d.blocking,...e]).map(a=>({level:"error",severity:"blocker",category:"structure",message:`结构完整性缺陷:${a.message}(第 ${a.line} 行)`,suggestion:B[a.kind]}))}},93675:(a,b,c)=>{c.d(b,{aW:()=>l});var d=c(64406),e=c(65667),f=c(91943),g=c(40299),h=c(85016),i=c(55807),j=c(63516),k=c(54185);let l=[{key:"table-line-residue",stage5:!0,round2:!0,fix:a=>{let b=(0,d.br)(a);return{markdown:b.markdown,fixedCount:b.fixedCount}}},{key:"templated-labels",stage5:!0,round2:!0,fix:a=>{let b=(0,k.p_)(a);return{markdown:b.markdown,fixedCount:b.fixedCount}}},{key:"structure-integrity",stage5:!0,round2:!0,fix:a=>{let b=(0,f.vi)(a);return{markdown:b.markdown,fixedCount:b.cleaned.length}}},{key:"repeated-words",stage5:!0,round2:!0,fix:a=>{let b=(0,d.Vw)(a);return{markdown:b,fixedCount:+(b!==a)}}},{key:"duplicate-tables",stage5:!1,round2:!0,fix:a=>{let b=(0,d.lR)(a);return{markdown:b.markdown,fixedCount:b.removedCount}}},{key:"finish-thickness",stage5:!0,round2:!0,fix:a=>{let b=(0,d.JF)(a);return{markdown:b.markdown,fixedCount:b.fixedCount}}},{key:"slot-depth-value",stage5:!0,round2:!0,fix:a=>{let b=(0,d.yV)(a);return{markdown:b.markdown,fixedCount:b.fixedCount}}},{key:"labor-peak",stage5:!0,round2:!0,fix:(a,b)=>{let c=(0,d.BR)(a,b.laborPeakAuthority);return{markdown:c.markdown,fixedCount:c.fixedCount}}},{key:"phase-labor-values",stage5:!0,round2:!0,fix:(a,b)=>{let c=(0,d.Pl)(a,b.phaseLaborAuthorities);return{markdown:c.markdown,fixedCount:c.fixedCount}}},{key:"resource-breakdown",stage5:!0,round2:!0,fix:(a,b)=>{let c=(0,e.Ti)(a,b.resourceBreakdownAuthority);return{markdown:c.markdown,fixedCount:c.fixedCount}}},{key:"internal-table-row-dup",stage5:!0,round2:!0,fix:a=>{let b=(0,d.QM)(a);return{markdown:b.markdown,fixedCount:b.removedCount}}},{key:"duplicate-basic-info-tables",stage5:!0,round2:!0,fix:a=>{let b=(0,d.y4)(a);return{markdown:b.markdown,fixedCount:b.fixedCount}}},{key:"fallback-placeholder-rows",stage5:!0,round2:!0,fix:a=>{let b=(0,d.uL)(a);return{markdown:b.markdown,fixedCount:b.fixedCount}}},{key:"greening-maintenance",stage5:!0,round2:!0,fix:(a,b)=>{let c=(0,d.mG)(a,b.greeningMaintenanceAuthority);return{markdown:c.markdown,fixedCount:c.fixedCount}}},{key:"paragraph-opening-repeat",stage5:!0,round2:!0,fix:a=>{let b=(0,d.Qc)(a);return{markdown:b.markdown,fixedCount:b.fixedCount}}},{key:"paragraph-tail-repeat",stage5:!0,round2:!0,fix:a=>{let b=(0,d.kp)(a);return{markdown:b.markdown,fixedCount:b.fixedCount}}},{key:"collision-numbered-heading",stage5:!0,round2:!0,fix:a=>{let b=(0,d.fK)(a);return{markdown:b.markdown,fixedCount:b.fixedCount}}},{key:"heading-uncovered-items",stage5:!0,round2:!0,fix:a=>{let b=(0,d.N$)(a);return{markdown:b.markdown,fixedCount:b.fixedCount}}},{key:"inverted-date-range",stage5:!0,round2:!0,fix:a=>{let b=(0,d.r_)(a);return{markdown:b.markdown,fixedCount:b.fixedCount}}},{key:"truncated-sentence",stage5:!0,round2:!0,fix:a=>{let b=(0,d.Y4)(a);return{markdown:b.markdown,fixedCount:b.fixedCount}}},{key:"meta-discourse",stage5:!0,round2:!0,fix:a=>{let b=(0,d.Fd)(a);return{markdown:b.markdown,fixedCount:b.fixedCount}}},{key:"formula-residue",stage5:!0,round2:!0,fix:a=>{let b=(0,d.EJ)(a);return{markdown:b.markdown,fixedCount:b.fixedCount}}},{key:"self-undermining",stage5:!0,round2:!0,fix:a=>{let b=(0,d.ir)(a);return{markdown:b.markdown,fixedCount:b.fixedCount}}},{key:"ambiguous-either-or",stage5:!0,round2:!0,fix:(a,b)=>{let c=(0,d.SZ)(a,{supportForm:b.supportFormAuthority});return{markdown:c.markdown,fixedCount:c.fixedCount}}},{key:"empty-scoring-response",stage5:!0,round2:!0,fix:a=>{let b=(0,j.w)(a);return{markdown:b.markdown,fixedCount:b.fixedCount}}},{key:"tender-meta-language",stage5:!0,round2:!0,fix:a=>{let b=(0,j.TX)(a);return{markdown:b.markdown,fixedCount:b.fixedCount}}},{key:"forbidden-configuration",stage5:!0,round2:!0,fix:a=>{let b=(0,d.GI)(a);return{markdown:b.markdown,fixedCount:b.fixedCount}}},{key:"basis-regulation-region",stage5:!0,round2:!0,fix:(a,b)=>{let c=(0,d.zo)(a,b.basisRegulations);return{markdown:c.markdown,fixedCount:c.fixedCount}}},{key:"work-injury-insurance",stage5:!0,round2:!0,fix:a=>{let b=(0,d.qz)(a);return{markdown:b.markdown,fixedCount:b.fixedCount}}},{key:"duplicate-response-line",stage5:!0,round2:!0,fix:a=>{let b=(0,j.Mf)(a);return{markdown:b.markdown,fixedCount:b.fixedCount}}},{key:"atlas-reference",stage5:!0,round2:!1,fix:a=>{let b=(0,i.Fc)(a);return{markdown:b.markdown,fixedCount:b.fixedCount}}},{key:"tertiary-h4-dedupe",stage5:!1,round2:!0,fix:a=>(0,g.pV)(a)},{key:"internal-term-heading",stage5:!0,round2:!0,fix:a=>(0,h.fc)(a)},{key:"skeleton-fingerprint-variants",stage5:!1,round2:!0,fix:a=>{let b=(0,k.sO)(a);return{markdown:b.markdown,fixedCount:b.fixedCount}}},{key:"flow-form-variants",stage5:!1,round2:!0,fix:a=>{let b=(0,k.z9)(a);return{markdown:b.markdown,fixedCount:b.fixedCount}}},{key:"truncated-title-completion",stage5:!1,round2:!0,fix:a=>{let b=(0,k.G9)(a);return{markdown:b.markdown,fixedCount:b.fixedCount}}},{key:"sentence-like-heading-split",stage5:!1,round2:!0,fix:(a,b)=>{let c=(0,k.Q1)(a,b.plannedSectionTitles);return{markdown:c.markdown,fixedCount:c.fixedCount}}}]}};
235
+ |。;;]{0,40}(?:资料未明确|系统暂未从知识库确认|项目资料暂未明确)`,"u").test(a)).map(a=>({level:"error",message:`${a} 已抽取到项目资料事实但正文仍显示暂未明确`,suggestion:"请优先使用项目基础事实卡片中的资料原值,不得用占位表达覆盖已确认事实。"})):[]}},87942:(a,b,c)=>{c.d(b,{x:()=>d});let d={version:"professional-document-workflow-v9",rules:["complete-local-knowledge-assumption","knowledge-coverage-recovery","fact-trace-placement","chapter-coverage-gate","structured-quality-report","post-repair-verification"]}},91943:(a,b,c)=>{c.d(b,{$t:()=>z,G5:()=>B,PA:()=>E,Rc:()=>j,dC:()=>D,vi:()=>A});let d=/[\u4e00-\u9fa5]/gu,e=/^([ \u3000]*)(\d{1,3})\.\s+\S/u,f=/^([ \u3000]*)([-*+])\s+\S/u,g=/^(#{1,6})\s+\S/u,h=/(?:\.{2,}|…{2,})\s*\d+\s*$/u,i=/。、|,、|;、|。,|,。|。。/u,j=[{open:"(",close:")",label:"全角括号"},{open:"《",close:"》",label:"书名号"}],k=/(?<=[。;!?])/u,l=/[的与和及或在于是对从向把被将按并而则如若等共约达须应需可要能以由使让]/u;function m(a){return(a.match(d)||[]).length}function n(a){let b=a.trim();return b.length>80?`${b.slice(0,80)}…`:b}function o(a){return g.test(a.trim())}function p(a){return a.trim().startsWith("|")}function q(a){let b=e.exec(a);return!!b&&300>=Number.parseInt(b[2],10)}function r(a){return f.test(a)}function s(a){return o(a)||p(a)}function t(a){return a.replace(/[|`*_<>#\s\u3000]/gu,"").replace(/^:?-{2,}:?$/u,"")}function u(a){return a.trim().replace(/^\|/u,"").replace(/\|$/u,"").split("|").map(a=>a.trim())}function v(a){return u(a).map(t).join("|")}function w(a,b){for(let c=b-1;c>=0;c-=1)if(a[c].trim())return c;return -1}function x(a,b){for(let c=b+1;c<a.length;c+=1)if(a[c].trim())return c;return -1}function y(a){let b=[],c=0;for(;c<a.length;){let d=e.exec(a[c]),f=d?Number.parseInt(d[2],10):0;if(!d||f>300){c+=1;continue}let g=d[1].length,h=[{index:c,number:f}],i=c+1;for(;i<a.length;){if(!a[i].trim()){let b=i;for(;b<a.length&&!a[b].trim();)b+=1;let c=b<a.length?e.exec(a[b]):null;if(c&&c[1].length===g&&300>=Number.parseInt(c[2],10)){i=b;continue}break}let b=e.exec(a[i]);if(b&&b[1].length===g&&300>=Number.parseInt(b[2],10)){h.push({index:i,number:Number.parseInt(b[2],10)}),i+=1;continue}break}b.push({indent:g,items:h}),c=i>c?i:c+1}return b}function z(a){let b=a.replace(/\r\n?/gu,"\n").split("\n"),c={cleanable:[],blocking:[]};for(let a of y(b)){let d=a.items.map(a=>a.number);if(1===a.items.length){d[0]>1&&c.cleanable.push({kind:"orphan-list-number",line:a.items[0].index+1,excerpt:n(b[a.items[0].index]),message:`孤立有序编号「${d[0]}.」(无前序 1.~${d[0]-1}.,疑似跨节继承编号)`});continue}d.every((a,b)=>a===b+1)||c.cleanable.push({kind:"list-numbering",line:a.items[0].index+1,excerpt:`编号序列 ${d.join(",")}`,message:`有序列表编号不连续(第 ${a.items[0].index+1}~${a.items[a.items.length-1].index+1} 行编号:${d.join(",")})`})}!function(a,b){let c=0;for(;c<a.length;){if(!r(a[c])){c+=1;continue}let d=[c],e=c+1;for(;e<a.length;){if(!a[e].trim()){let b=e;for(;b<a.length&&!a[b].trim();)b+=1;if(b<a.length&&r(a[b])){e=b;continue}break}if(r(a[e])){d.push(e),e+=1;continue}break}if(1===d.length){let c=d[0],e=w(a,c),f=x(a,c),g=e>=0?a[e].trim():"",h=/[::]$/u.test(g)||/(?:包括|如下|以下|例如|分别是)[::]?$/u.test(g),i=e>=0&&!r(a[e])&&!o(a[e])&&!p(a[e])&&!q(a[e])&&!h,j=f>=0&&!r(a[f])&&!p(a[f]);i&&j&&b.cleanable.push({kind:"orphan-list-item",line:c+1,excerpt:n(a[c]),message:"孤立单项列表(前后均为正文语境,无列表上下文)"})}c=e>c?e:c+1}}(b,c),function(a,b){for(let c of function(a){let b=[],c=0;for(;c<a.length;){if(!p(a[c])){c+=1;continue}let d=[c],e=c+1;for(;e<a.length&&p(a[e]);)d.push(e),e+=1;b.push({start:c,rows:d}),c=e}return b}(a)){let d=c.rows;if(d.length<2||!function(a){let b=a.trim();return b.startsWith("|")&&/^[\s|:-]+$/u.test(b)&&/-{3,}/u.test(b)}(a[d[1]]))continue;let e=u(a[d[0]]),f=v(a[d[0]]),g=e[0]?.replace(/[\s*_]/gu,"")??"";e.length>=3&&/表$/u.test(g)&&m(g)>=8&&b.blocking.push({kind:"table-title-in-header",line:d[0]+1,excerpt:g,message:`表格表头首格为表名(「${g}」),列语义错位(表名应独立成行,表头首格必须填列名)`});let h=d.slice(2);if(0===h.length){b.blocking.push({kind:"table-empty",line:d[0]+1,excerpt:n(a[d[0]]),message:"空表(仅表头与分隔线,无任何数据行)"});continue}let i=v(a[h[0]])===f;i&&b.cleanable.push({kind:"table-header-duplicate",line:h[0]+1,excerpt:n(a[h[0]]),message:"重复表头行(分隔线后数据行与表头内容一致)"});let j=new Set;for(let c of(i&&j.add(f),h)){if(i&&c===h[0])continue;let d=v(a[c]);if(!(!d||d.split("|").every(a=>!a))){if(j.has(d)){b.cleanable.push({kind:"table-row-duplicate",line:c+1,excerpt:n(a[c]),message:"表内数据行完全重复"});continue}j.add(d)}}}}(b,c),function(a,b){for(let c=0;c<a.length;c+=1){let d=a[c].trim();if(!d||s(d)||q(d)||r(d)||h.test(d)||/\d$/u.test(d)||15>m(d))continue;let e=d[d.length-1];if(!/[\u4e00-\u9fa5]/u.test(e)||/[::、]$/u.test(d)||/[表图]$/u.test(d))continue;let f=x(a,c);if(f>=0&&(q(a[f])||r(a[f]))&&/(?:完成后|完毕后|结束后|如下|以下)$/u.test(d)||!(-1===f||o(a[f])||p(a[f])||q(a[f])||r(a[f]))&&!l.test(e))continue;let g=w(a,c),i=g>=0?a[g].trim():"";(g<0||o(i)||p(i)||q(i)||r(i)||/[。;!?""」』)\]】…]$/u.test(i))&&b.blocking.push({kind:"truncated-line",line:c+1,excerpt:n(a[c]),message:"句尾截断(行尾无终止标点且后续为标题/表格/列表/文末,疑似生成截断)"})}}(b,c),function(a,b){for(let c=0;c<a.length;c+=1){let d=/^(#{3,6})\s+(\S.*)$/u.exec(a[c].trim());if(!d)continue;let e=d[1].length,f=x(a,c);if(-1===f){b.blocking.push({kind:"empty-subsection",line:c+1,excerpt:n(a[c]),message:`空小节「${d[2].trim().slice(0,40)}」(小节标题后无任何内容)`});continue}let g=/^(#{1,6})\s+\S/u.exec(a[f].trim());g&&g[1].length<=e&&b.blocking.push({kind:"empty-subsection",line:c+1,excerpt:n(a[c]),message:`空小节「${d[2].trim().slice(0,40)}」(小节标题后无任何内容)`})}}(b,c),function(a,b){let c=new Map;for(let d=0;d<a.length;d+=1){let e=a[d].trim();if(!e||s(e)||q(e)||r(e))continue;let f=e.replace(/\s+/gu,"");if(40>m(f))continue;let g=c.get(f);if(void 0===g){c.set(f,d);continue}b.cleanable.push({kind:"duplicate-line",line:d+1,excerpt:n(a[d]),message:`与第 ${g+1} 行完全重复(≥40 字)`})}}(b,c);for(let a=0;a<b.length;a+=1){let d=b[a];if(!d.trim()||s(d)||q(d)||r(d))continue;let e=d.split(k).map(a=>a.trim()).filter(Boolean);for(let b=0;b+1<e.length;b+=1)if(e[b]===e[b+1]&&m(e[b])>=16){c.cleanable.push({kind:"duplicate-sentence-adjacent",line:a+1,excerpt:e[b].slice(0,60),message:`相邻句子重复(「${e[b].slice(0,24)}…」连续两遍)`});break}}for(let a=0;a<b.length;a+=1){let d=b[a];if(!d.trim()||s(d))continue;let e=i.exec(d);e&&c.blocking.push({kind:"sentence-fracture",line:a+1,excerpt:n(d),message:`标点断裂(「${e[0]}」句读错乱,疑似句段拼接残留/漂移句)`})}let d=b.join("\n");for(let{open:a,close:e,label:f}of j){let g=d.split(a).length-1,h=d.split(e).length-1;if(g===h)continue;let i=b.findIndex(b=>b.split(a).length-1!=b.split(e).length-1);c.blocking.push({kind:"punctuation-unbalanced",line:Math.max(1,i+1),excerpt:n(b[i]??""),message:`${f}不闭合(开 ${g} 处、闭 ${h} 处,疑似内容丢失/拼接残留)`})}return c}function A(a){let b=a.replace(/\r\n?/gu,"\n"),c=[];for(let a=0;a<4;a+=1){let a=b.split("\n"),d=z(b);if(0===d.cleanable.length)break;let e=new Set,f=new Map;for(let b of y(a)){let d=b.items.map(a=>a.number);if(1===b.items.length&&d[0]>1){let e=b.items[0].index,g=a[e].replace(/^([ \u3000]*)\d{1,3}\.\s+/u,"$1");g!==a[e]&&(f.set(e,g),c.push(`孤立编号去号:第 ${e+1} 行(「${d[0]}.」)`));continue}b.items.length>1&&!d.every((a,b)=>a===b+1)&&(b.items.forEach((b,c)=>{let d=a[b.index].replace(/^([ \u3000]*)\d{1,3}\.\s+/u,`$1${c+1}. `);d!==a[b.index]&&f.set(b.index,d)}),c.push(`有序列表重排:第 ${b.items[0].index+1}~${b.items[b.items.length-1].index+1} 行(${d.join(",")} → 1..${d.length})`))}for(let b of d.cleanable){let d=b.line-1;if("orphan-list-item"===b.kind){let b=a[d].replace(/^([ \u3000]*)[-*+]\s+/u,"$1");b!==a[d]&&(f.set(d,b),c.push(`孤立列表项去号:第 ${d+1} 行`))}else if("table-header-duplicate"===b.kind)e.add(d),c.push(`重复表头行删除:第 ${d+1} 行`);else if("table-row-duplicate"===b.kind)e.add(d),c.push(`表内重复数据行删除:第 ${d+1} 行`);else if("duplicate-line"===b.kind)e.add(d),c.push(`完全重复行删除:第 ${d+1} 行`);else if("duplicate-sentence-adjacent"===b.kind){let b=function(a){let b=a.split(k),c=[];for(let a of b){let b=c[c.length-1];void 0!==b&&b===a&&m(a.trim())>=16||c.push(a)}return c.join("")}(a[d]);b!==a[d]&&(f.set(d,b),c.push(`相邻重复句去重:第 ${d+1} 行`))}}let g=a.map((a,b)=>e.has(b)?void 0:f.get(b)??a).filter(a=>void 0!==a).join("\n");if(g===b)break;b=g}return{markdown:b,cleaned:c}}function B(a,b){if(0===a.blocking.length)return;let c=a.blocking.slice(0,4).map(a=>`${a.message}(第 ${a.line} 行)`).join(";");return`${b?`${b} `:""}结构完整性未通过(${a.blocking.length} 处):${c}。请保留已正确内容,仅修正上述问题后重新输出完整小节。`}let C={"orphan-list-number":"孤立编号由确定性清理去号转正文;写时按小节独立起编,不得继承父级编号。","list-numbering":"编号重排为 1..n 连续;写时编号必须从 1 起连续。","orphan-list-item":"孤立单项列表去除列表符并入正文;单项内容不使用列表格式。","table-header-duplicate":"删除重复表头行;表格必须只有一个表头块。","table-row-duplicate":"删除重复数据行;同一数据不得在表内出现两次。","table-title-in-header":"表名必须独立成行(表题),表头首格必须为列名;须定向重写该表格。","table-empty":"空表须补充数据行或删除;不得交付仅表头的空表。","table-number-orphan-reference":"补建被引用的表实体或修正引用编号;表编号引用必须与实体一一对应。","table-number-duplicate":"表编号重排为全篇唯一;同一表编号不得出现两个实体。","duplicate-line":"删除后出现的重复行;该段内容只能出现一次。","duplicate-sentence-adjacent":"相邻重复句去重;不得同句连发两遍。","truncated-line":"句尾截断须补全该句后重写;不得交付截断内容。","empty-subsection":"空小节必须补写与该小节相关的正文内容,不得只留标题。","sentence-fracture":"句读断裂须重写该句;不得交付句段拼接残留。","punctuation-unbalanced":"全角括号/书名号不闭合须重写所在语句;成对性破坏是内容丢失信号,补齐或删除残缺部分,不得带病交付。"};function D(a,b){let c=b?.includeCleanable??!0,d=z(a),e=function(a){let b=a.replace(/\r\n?/gu,"\n").split("\n"),c=[],d=new Map,e=/^表\s*(\d+)\s+\S/u;for(let a=0;a<b.length;a+=1){let c=e.exec((b[a]||"").trim());if(!c)continue;let f=a+1;for(;f<b.length&&!(b[f]||"").trim();)f+=1;if(f>=b.length||!/^\s*\|/u.test(b[f]||""))continue;let g=Number.parseInt(c[1],10);d.set(g,[...d.get(g)||[],a+1])}for(let[a,e]of d)e.length<=1||c.push({kind:"table-number-duplicate",line:e[1],excerpt:n((b[e[1]-1]||"").trim()),message:`表编号重复(「表${a}」实体出现 ${e.length} 次:第 ${e.join("、")} 行):表编号必须全篇唯一`});let f=[/[按如]\s*表\s*(\d+)/gu,/(?<![\u4e00-\u9fa5])见\s*表\s*(\d+)/gu,/(?:参见|详见|根据|依据|按照|参照|比照|遵照|结合)\s*表\s*(\d+)/gu];for(let a=0;a<b.length;a+=1){let e=b[a]||"";if(!e.includes("表"))continue;let g=new Set;for(let b of f){let f;for(b.lastIndex=0;f=b.exec(e);){let b=Number.parseInt(f[1],10);g.has(b)||d.has(b)||(g.add(b),c.push({kind:"table-number-orphan-reference",line:a+1,excerpt:n(e.trim()),message:`引用了「表${b}」但正文无该编号表实体(引用与实体必须一一对应)`}))}}}return c}(a);return(c?[...d.blocking,...e,...d.cleanable]:[...d.blocking,...e]).map(a=>({level:"error",severity:"blocker",category:"structure",message:`结构完整性缺陷:${a.message}(第 ${a.line} 行)`,suggestion:C[a.kind]}))}function E(a){let b,c=a.replace(/\r\n?/gu,"\n").split("\n"),d=[];{let a,b=!1,e=!1;for(let f of c){let c=f.trim();if(/^```/u.test(c)){b=!b;continue}if(b)continue;if(/^##\s+目录\s*$/u.test(c)){e=!0;continue}if(e){/^<div class="page-break"><\/div>$/u.test(c)&&(e=!1);continue}let g=/^##\s+第([一二三四五六七八九十百千万\d]+)章\s+/u.exec(c);if(g){a={declared:function(a){if(/^\d+$/u.test(a))return Number(a);let b={一:1,二:2,三:3,四:4,五:5,六:6,七:7,八:8,九:9};if("十"===a)return 10;if(1===a.length)return b[a];if(a.startsWith("十"))return 10+(b[a[1]]??0);if(a.endsWith("十"))return(b[a[0]]??0)*10;let c=a.indexOf("十");if(c>0&&c===a.length-2)return(b[a[0]]??0)*10+(b[a[c+1]]??0)}(g[1]||""),prefixCounts:new Map},d.push(a);continue}if(/^##\s+/u.test(c)){a=void 0;continue}let h=/^###\s+(\d+)\.(\d+)\s+/u.exec(c);if(h&&a){let b=Number(h[1]);a.prefixCounts.set(b,(a.prefixCounts.get(b)||0)+1)}}}if(0===d.length)return{markdown:a,fixedCount:0};let e=d.map(a=>{if(void 0!==a.declared)return a.declared;let b=[...a.prefixCounts.entries()].sort((a,b)=>b[1]-a[1]||a[0]-b[0])[0];return b?.[0]}),f=!1,g=!1,h=0,i=0,j=0,k=0,l=c.map(a=>{let c=a.trim();if(/^```/u.test(c))return f=!f,a;if(f)return a;if(/^##\s+目录\s*$/u.test(c))return g=!0,a;if(g)return/^<div class="page-break"><\/div>$/u.test(c)&&(g=!1),a;if(/^##\s+第[一二三四五六七八九十百千万\d]+章\s+/u.test(c))return b=e[h],h+=1,i=0,j=0,a;if(/^##\s+/u.test(c))return b=void 0,a;if(!b||a!==c)return a;let d=/^###\s+(.*)$/u.exec(c);if(d){i+=1,j=0;let c=(d[1]||"").replace(/^\d+(?:\.\d+)*\s+/u,"").trim();if(!c)return a;let e=`### ${b}.${i} ${c}`;return e!==a&&(k+=1),e}let l=/^####\s+(.*)$/u.exec(c);if(l){let c=/^\d+\.\d+\.(\d+)\s+(.*)$/u.exec(l[1]||"");if(!c)return a;j+=1;let d=`#### ${b}.${i}.${j} ${(c[2]||"").trim()}`;return d!==a&&(k+=1),d}return a});return 0===k?{markdown:a,fixedCount:0}:{markdown:l.join("\n"),fixedCount:k}}},93675:(a,b,c)=>{c.d(b,{aW:()=>l});var d=c(64406),e=c(65667),f=c(91943),g=c(40299),h=c(85016),i=c(55807),j=c(63516),k=c(54185);let l=[{key:"table-line-residue",stage5:!0,round2:!0,fix:a=>{let b=(0,d.br)(a);return{markdown:b.markdown,fixedCount:b.fixedCount}}},{key:"templated-labels",stage5:!0,round2:!0,fix:a=>{let b=(0,k.p_)(a);return{markdown:b.markdown,fixedCount:b.fixedCount}}},{key:"structure-integrity",stage5:!0,round2:!0,fix:a=>{let b=(0,f.vi)(a);return{markdown:b.markdown,fixedCount:b.cleaned.length}}},{key:"repeated-words",stage5:!0,round2:!0,fix:a=>{let b=(0,d.Vw)(a);return{markdown:b,fixedCount:+(b!==a)}}},{key:"duplicate-tables",stage5:!1,round2:!0,fix:a=>{let b=(0,d.lR)(a);return{markdown:b.markdown,fixedCount:b.removedCount}}},{key:"finish-thickness",stage5:!0,round2:!0,fix:a=>{let b=(0,d.JF)(a);return{markdown:b.markdown,fixedCount:b.fixedCount}}},{key:"slot-depth-value",stage5:!0,round2:!0,fix:a=>{let b=(0,d.yV)(a);return{markdown:b.markdown,fixedCount:b.fixedCount}}},{key:"labor-peak",stage5:!0,round2:!0,fix:(a,b)=>{let c=(0,d.BR)(a,b.laborPeakAuthority);return{markdown:c.markdown,fixedCount:c.fixedCount}}},{key:"phase-labor-values",stage5:!0,round2:!0,fix:(a,b)=>{let c=(0,d.Pl)(a,b.phaseLaborAuthorities);return{markdown:c.markdown,fixedCount:c.fixedCount}}},{key:"resource-breakdown",stage5:!0,round2:!0,fix:(a,b)=>{let c=(0,e.Ti)(a,b.resourceBreakdownAuthority);return{markdown:c.markdown,fixedCount:c.fixedCount}}},{key:"internal-table-row-dup",stage5:!0,round2:!0,fix:a=>{let b=(0,d.QM)(a);return{markdown:b.markdown,fixedCount:b.removedCount}}},{key:"duplicate-basic-info-tables",stage5:!0,round2:!0,fix:a=>{let b=(0,d.y4)(a);return{markdown:b.markdown,fixedCount:b.fixedCount}}},{key:"fallback-placeholder-rows",stage5:!0,round2:!0,fix:a=>{let b=(0,d.uL)(a);return{markdown:b.markdown,fixedCount:b.fixedCount}}},{key:"greening-maintenance",stage5:!0,round2:!0,fix:(a,b)=>{let c=(0,d.mG)(a,b.greeningMaintenanceAuthority);return{markdown:c.markdown,fixedCount:c.fixedCount}}},{key:"paragraph-opening-repeat",stage5:!0,round2:!0,fix:a=>{let b=(0,d.Qc)(a);return{markdown:b.markdown,fixedCount:b.fixedCount}}},{key:"paragraph-tail-repeat",stage5:!0,round2:!0,fix:a=>{let b=(0,d.kp)(a);return{markdown:b.markdown,fixedCount:b.fixedCount}}},{key:"collision-numbered-heading",stage5:!0,round2:!0,fix:a=>{let b=(0,d.fK)(a);return{markdown:b.markdown,fixedCount:b.fixedCount}}},{key:"heading-uncovered-items",stage5:!0,round2:!0,fix:a=>{let b=(0,d.N$)(a);return{markdown:b.markdown,fixedCount:b.fixedCount}}},{key:"inverted-date-range",stage5:!0,round2:!0,fix:a=>{let b=(0,d.r_)(a);return{markdown:b.markdown,fixedCount:b.fixedCount}}},{key:"truncated-sentence",stage5:!0,round2:!0,fix:a=>{let b=(0,d.Y4)(a);return{markdown:b.markdown,fixedCount:b.fixedCount}}},{key:"meta-discourse",stage5:!0,round2:!0,fix:a=>{let b=(0,d.Fd)(a);return{markdown:b.markdown,fixedCount:b.fixedCount}}},{key:"formula-residue",stage5:!0,round2:!0,fix:a=>{let b=(0,d.EJ)(a);return{markdown:b.markdown,fixedCount:b.fixedCount}}},{key:"self-undermining",stage5:!0,round2:!0,fix:a=>{let b=(0,d.ir)(a);return{markdown:b.markdown,fixedCount:b.fixedCount}}},{key:"ambiguous-either-or",stage5:!0,round2:!0,fix:(a,b)=>{let c=(0,d.SZ)(a,{supportForm:b.supportFormAuthority,decisionLock:b.decisionLockEntries});return{markdown:c.markdown,fixedCount:c.fixedCount}}},{key:"empty-scoring-response",stage5:!0,round2:!0,fix:a=>{let b=(0,j.w)(a);return{markdown:b.markdown,fixedCount:b.fixedCount}}},{key:"tender-meta-language",stage5:!0,round2:!0,fix:a=>{let b=(0,j.TX)(a);return{markdown:b.markdown,fixedCount:b.fixedCount}}},{key:"forbidden-configuration",stage5:!0,round2:!0,fix:a=>{let b=(0,d.GI)(a);return{markdown:b.markdown,fixedCount:b.fixedCount}}},{key:"basis-regulation-region",stage5:!0,round2:!0,fix:(a,b)=>{let c=(0,d.zo)(a,b.basisRegulations);return{markdown:c.markdown,fixedCount:c.fixedCount}}},{key:"work-injury-insurance",stage5:!0,round2:!0,fix:a=>{let b=(0,d.qz)(a);return{markdown:b.markdown,fixedCount:b.fixedCount}}},{key:"duplicate-response-line",stage5:!0,round2:!0,fix:a=>{let b=(0,j.Mf)(a);return{markdown:b.markdown,fixedCount:b.fixedCount}}},{key:"atlas-reference",stage5:!0,round2:!1,fix:a=>{let b=(0,i.Fc)(a);return{markdown:b.markdown,fixedCount:b.fixedCount}}},{key:"tertiary-h4-dedupe",stage5:!1,round2:!0,fix:a=>(0,g.pV)(a)},{key:"internal-term-heading",stage5:!0,round2:!0,fix:a=>(0,h.fc)(a)},{key:"skeleton-fingerprint-variants",stage5:!1,round2:!0,fix:a=>{let b=(0,k.sO)(a);return{markdown:b.markdown,fixedCount:b.fixedCount}}},{key:"flow-form-variants",stage5:!1,round2:!0,fix:a=>{let b=(0,k.z9)(a);return{markdown:b.markdown,fixedCount:b.fixedCount}}},{key:"truncated-title-completion",stage5:!1,round2:!0,fix:a=>{let b=(0,k.G9)(a);return{markdown:b.markdown,fixedCount:b.fixedCount}}},{key:"sentence-like-heading-split",stage5:!1,round2:!0,fix:(a,b)=>{let c=(0,k.Q1)(a,b.plannedSectionTitles);return{markdown:c.markdown,fixedCount:c.fixedCount}}},{key:"section-renumber",stage5:!0,round2:!0,fix:a=>{let b=(0,f.PA)(a);return{markdown:b.markdown,fixedCount:b.fixedCount}}}]}};