@customize-agent/server 4.22.1 → 4.22.3

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 (46) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +2 -2
  3. package/.next/prerender-manifest.json +3 -3
  4. package/.next/server/chunks/208.js +3 -3
  5. package/.next/server/chunks/4931.js +9 -9
  6. package/.next/server/chunks/5284.js +18 -9
  7. package/.next/server/chunks/8163.js +7 -7
  8. package/.next/server/pages/404.html +1 -1
  9. package/.next/server/pages/500.html +1 -1
  10. package/.next/server/pages/api/jobs/[id].js +2 -2
  11. package/.next/server/pages/api/jobs.js +2 -2
  12. package/.next/server/pages/api/kb/categories.js +2 -2
  13. package/.next/server/pages/api/kb/duplicates.js +2 -2
  14. package/.next/server/pages/api/kb/evaluate.js +2 -2
  15. package/.next/server/pages/api/kb/files/detail.js +2 -2
  16. package/.next/server/pages/api/kb/files/export.js +2 -2
  17. package/.next/server/pages/api/kb/files/open.js +2 -2
  18. package/.next/server/pages/api/kb/files/preview-pdf-page.js +2 -2
  19. package/.next/server/pages/api/kb/files/search.js +2 -2
  20. package/.next/server/pages/api/kb/files/tree.js +2 -2
  21. package/.next/server/pages/api/kb/files.js +2 -2
  22. package/.next/server/pages/api/kb/ignore.js +2 -2
  23. package/.next/server/pages/api/kb/operations.js +2 -2
  24. package/.next/server/pages/api/kb/search.js +2 -2
  25. package/.next/server/pages/api/kb/stats.js +2 -2
  26. package/.next/server/pages/api/kb/tags.js +2 -2
  27. package/.next/server/pages/api/kb/upload/progress.js +2 -2
  28. package/.next/server/pages/asset-library.html +1 -1
  29. package/.next/server/pages/document-roles.html +1 -1
  30. package/.next/server/pages/documents.html +1 -1
  31. package/.next/server/pages/guide.html +1 -1
  32. package/.next/server/pages/index.html +1 -1
  33. package/.next/server/pages/knowledge/file-detail.html +1 -1
  34. package/.next/server/pages/knowledge/files.html +1 -1
  35. package/.next/server/pages/knowledge/manage.html +1 -1
  36. package/.next/server/pages/knowledge.html +1 -1
  37. package/.next/server/pages/models.html +1 -1
  38. package/.next/server/pages/overview.html +1 -1
  39. package/.next/server/pages/prompt.html +1 -1
  40. package/.next/server/pages/settings.html +1 -1
  41. package/.next/server/pages/system/logs.html +1 -1
  42. package/.next/server/pages/template-references.html +1 -1
  43. package/.next/server/pages-manifest.json +31 -31
  44. package/package.json +1 -1
  45. /package/.next/static/{07Y_5mRHzJpxIj7CoRu6M → j8fr40eY_GBXxJqTLN5qq}/_buildManifest.js +0 -0
  46. /package/.next/static/{07Y_5mRHzJpxIj7CoRu6M → j8fr40eY_GBXxJqTLN5qq}/_ssgManifest.js +0 -0
@@ -13,8 +13,8 @@ ${a.content}`)>0).map(b=>({chapterId:"project-basic",filePath:b.filePath,score:M
13
13
  ${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,e.Te)(a.signal);let d=a.project.getFileDetail?.(c);if(d?.chunks?.length)for(let e of d.chunks){let f=O(`${e.sectionTitle||""}
14
14
  ${e.content||""}`);if(f<=0)continue;let g=d.file?.relativePath||c;b.push({chapterId:"project-basic",filePath:g,score:1+f,content:e.content,roleId:a.fileRoleByPath.get(g),processingType:a.fileProcessingByPath.get(g),sectionTitle:e.sectionTitle,source:"pinned-evidence"})}}let f=new Set;return b.sort((a,b)=>b.score-a.score).filter(a=>{let b=`${a.filePath}|${a.sectionTitle||""}|${(0,n.de)(a.content).slice(0,180)}`;return!f.has(b)&&(f.add(b),!0)})}function Z(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 $(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 _(a,b){let c=`${b.sectionTitle||""}
15
15
  ${b.filePath}
16
- ${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 aa(a){return`${a.sectionTitle||""}${a.content}`.slice(0,600)}function ab(a,b,c,d){let e=b.map(b=>{let d=(0,g.A1)(b,a.requiredFacts)*$(a,b.processingType)+_(a,b),e=c.semantic?c.semantic.similarity(c.semantic.queryText,aa(b)):0;return{...b,score:.5*d+10*e}});return(0,g.QR)(e,c,d)}function ac(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 ad(a){if((0,e.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:Z(b),generationMode:!0});return(0,g.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})}function ae(a){return(0,n.de)(a).replace(/[\s,,.。::;;||()()《》<>【】"“”'‘’]/gu,"").split("[").join("").split("]").join("").toLowerCase()}function af(a){return/工程造价|造价|报价|投标报价|报价明细|综合单价|单价|合价|金额|税率|增值税|利润|预留金|暂列金额|最高投标限价|招标控制价|合同估算价|合同估算价格|投资估算|估算价/u.test(a)}function ag(a){let b=Q((0,e.lG)(a));return!b||/资料未明确|系统暂未从知识库确认|未确认|待确认|无|暂无/u.test(b)||/###|第\s*\d+\s*页|共\s*\d+\s*页|新版交易系统|操作帮助|登录页面|见招标公告|未尽事宜|详见图纸|招标文件补疑|政府相关文件|规范等其它资料/u.test(b)||/^\d+(?:\.\d+)?\s*(?:mm|cm|m|㎡|m²|m3|m³|%|元|万元)?$/iu.test(b)||af(b)||b.length>160?"":b}function ah(a,b,c={}){let d=b.filter(a=>{let b=`${a.key||""}${a.fieldName||""}${a.fieldId||""}`,c=(0,e.lG)(a.value);return!(af(`${b}${c}`)||!ag(c)||/第\s*\d+\s*页|新版交易系统|操作帮助|见招标公告|未尽事宜|详见图纸|招标文件补疑|政府相关文件|规范等其它资料/u.test(`${b}${c}${a.sourceFile||""}`))&&(/项目名称|工程名称|项目编号|招标项目编号|招标人|建设单位|发包人|建设地点|建设规模|招标范围|计划工期|合同工期|质量标准|质量目标/u.test(b)||/危大|安全|资源|材料|机械|设备/u.test(b)&&!/^\d+(?:\.\d+)?\s*(?:mm|cm|m|㎡|m²|m3|m³|%|元|万元)?$/iu.test(c)||/面积|占地|建筑面积|长度|宽度|高度|厚度|深度|强度|等级|坡度|管径|直径|规格|跨度|天数|工期|周长|体积|重量/u.test(b)&&/^\d+(?:\.\d+)?\s*(?:㎡|m²|m2|m³|m3|m|mm|cm|km|MPa|kPa|kN|天|日历天|日|级|%|台|套|座|个|t|kg)/iu.test(c))}),f=new Set,g=[];for(let b of d){let d=ag(b.value);if(!d)continue;let e=b.fieldName||b.key||b.fieldId||"资料事实",h=`${e}:${d}`;if(!f.has(h)&&(f.add(h),!function(a,b){let c=ae(a),d=ae(b);if(!d||d.length<2||c.includes(d))return!0;let e=b.match(/\d+(?:\.\d+)?\s*(?:日历天|天|个月|月|年|万元|元|平方米|㎡|m²|立方米|m³|米|m|mm|cm|台|套|人|项|%|MPa|kPa)?/giu)||[];return e.length>0&&e.some(a=>ae(a).length>=2&&c.includes(ae(a)))}(a,d)&&(g.push({fact:b,label:e,value:d}),c.maxItems&&g.length>=c.maxItems)))break}return g}function ai(a,b,c={}){return ah(a,b,{maxItems:c.maxIssues}).map(a=>({level:"warning",message:`已确认事实未在正文中落位:${a.label}=${a.value}`,suggestion:"请将该事实自然写入对应章节或小节,不得改变原始数值和单位。"}))}var aj=c(22213);function ak(a,b){return 0>=(0,h.V7)(a.content)?"failed":"completed"}function al(a,b,c=12){if(0===b.length)return[];let d=b.slice(0,c).map(a=>p.basename(a)),e=b.length>c?` 等 ${b.length} 个文件`:"";return[`${a}:${d.join("、")}${e}`]}function am(a,b=5){return a?Object.entries(a).sort((a,b)=>b[1].inputChars-a[1].inputChars).slice(0,b):[]}function an(a,b,c){if(Number.isFinite(c)&&c>0)return Math.ceil(c);let d=new Set(b.filter(Boolean)),e=a.listFiles?.().filter(a=>0===d.size||d.has(a.relativePath)).reduce((a,b)=>a+Math.max(0,Math.ceil(Number(b.chunkCount)||0)),0)??0;return e>0?e:Math.max(1,d.size)}var ao=c(1494),ap=c(19898),aq=c(70208),ar=c(3063);let as=/^(?:\d{12}|(?:ZB|WB)\d{12})$/u,at=/工作表:(\d+\.\d+)/u,au=/第1页\s*共(\d+)页/u,av=/工程名称:(.+?)\s*标段/u,aw=/第(\d+)页\s*共\d+页/gu;function ax(a){let b=at.exec(a.sectionTitle);if(b)return b[1];let c=a.content.split("\n")[0]||"",d=at.exec(c);return d?d[1]:""}function ay(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 az=c(22496),aA=c(95734),aB=c(48661);let aC=[{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 aD(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 aE={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:aD,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:"施工用水以洒水车供水为主,总用水量按管网分段配置"},aF={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:"施工用水以市政供水为主,总用水量按施工段分区配置"},aG={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:aD,tradeMapping:aE.tradeMapping,laborUnitRange:aE.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:"施工用水按现场水源分区配置,总用水量按施工段核定"},aH={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:"施工用水以现场水源为主,总用水量按施工段核定"},aI={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:"施工用水以现场水源为主,总用水量按施工段核定"},aJ={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:"施工用水以现场水源为主,总用水量按施工段核定"},aK={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 aL(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=p.join(q.homedir(),".customize-agent","projects",(0,ap.computeProjectId)(p.resolve(a.projectRoot)),"kb.db");if(!o.existsSync(c))return{warning:`项目知识库索引不存在:${c}`};let d=[];for(let a of b)try{let b=function(a,b){let c=new((0,ap.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){d.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=at.exec(a);if(!b)return;let c=b[1],d=f.get(c),e=av.exec(a),g=au.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="";for(let d of a){let a=d.content.split("\n"),e=c;for(let d of(c="",a)){if(d.startsWith("|"))e.trim(),e=d;else{if(!e)continue;e+=d}if(!e.endsWith("|"))continue;let a=e.split("|").map(a=>a.trim());e="",/^[一二三四五六七八九十\d]+(?:\.\d+)?$/u.test(a[2]??"")&&!a[1]&&a[4]&&"分部小计"!==a[4]&&b.push(a[2]??"")}e.trim()&&(c=e)}return b}(d)),n=-1,o="";for(let a of d){let d=ax(a),e=d||o;d&&(o=d);let g=f.get(e),p=g?.villageGroup||e||"",q=a.content.split("\n"),r=i;i="";let s=function(a){if(au.exec(a))return 1;aw.lastIndex=0;let b=aw.exec(a);return aw.lastIndex=0,b?Number(b[1]):void 0}(a.content);for(let d=0;d<q.length;d++){let e=q[d]||"";if(e.startsWith("|"))r.trim()&&c.droppedIncompleteRows++,r=e;else if(r)r+=e;else{let a=aw.exec(e);a&&(s=Number(a[1])),aw.lastIndex=0;continue}if(r.endsWith("|")){let c=r.split("|").map(a=>a.trim());r="";let d=c[1]??"",e=s,f=function(a){let b=a.join(" "),c=/第(\d+)页\s*共\d+页/u.exec(b);return c?Number(c[1]):void 0}(c);if(f&&(s=f),/^\d+$/u.test(d)&&as.test(c[2]??"")){let f=Number((c[8]??"").trim()),g={seq:Number(d),code:c[2]??"",name:c[4]??"",description:c[5]??"",unit:c[6]??"",quantity:Number.isFinite(f)?f:0,section:j,subsection:k,sectionKind:l,villageGroup:p,page:e,sourceFile:b,chunkIndex:a.chunkIndex,sourceKind:"markdown"};g.seq>0&&h.push(g)}else if(/^[一二三四五六七八九十\d]+(?:\.\d+)?$/u.test(c[2]??"")&&!c[1]&&c[4]&&"分部小计"!==c[4]){let a=m[n+=1]??((c[2]??"").includes(".")?"subsection":"section");"unit-project"===a?(j=c[4],k="",l="unit-project"):"section"===a?(j=c[4],k="",l="plain"):k=c[4]}}}r.trim()&&(i=r)}i.trim()&&c.droppedIncompleteRows++;let p=[];for(let a of(o="",e)){let c=ax(a),d=c||o;c&&(o=c);let e=f.get(d),g=e?.villageGroup||d||"";p.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 q=new Map;for(let a of h)q.set(`${a.villageGroup}|${a.seq}`,a);for(let a of p){let b=`${a.villageGroup}|${a.seq}`;q.has(b)||q.set(b,a)}let r=[...q.values()].sort((a,b)=>a.villageGroup.localeCompare(b.villageGroup,"zh-CN")||a.seq-b.seq);var s=r,t=h;let u=ay(t);for(let a of s){let b;if("declaration"===a.sourceKind&&!a.section){for(let c of u.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 v=[];for(let[a,b]of ay(r)){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=ax(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(au.test(f.content)&&d.add(1),aw.lastIndex=0,f.content.matchAll(aw))){let b=Number(a[1]);d.add(b),b>1&&d.add(b-1)}aw.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&&!as.test(a.code)).length;v.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 v.sort((a,b)=>a.villageGroup.localeCompare(b.villageGroup,"zh-CN")),{entries:r,villages:v,totalEntries:r.length,sourceFile:b,complete:v.length>0&&v.every(a=>a.complete),diagnostics:c}}({chunks:b,sourceFile:a});if(e.totalEntries>0)return{boq:e};d.push(`${a}(解析出 0 条目)`)}catch(b){d.push(`${a}(${b instanceof Error?b.message:String(b)})`)}return{warning:`清单解析失败:${d.join(";")}`}}function aM(a){let b=new Map;for(let c of a.entries){if(!c.name)continue;let a=b.get(c.name);a?a.total+=c.quantity:b.set(c.name,{value:c.quantity,unit:c.unit,sourceFile:c.sourceFile,seq:c.seq,total:c.quantity})}let c={};for(let[a,d]of b)c[a]={value:Math.round(1e3*d.total)/1e3,unit:d.unit,sourceFile:d.sourceFile,seq:d.seq};return c}let aN=[{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 aO(a,b,c=aE){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 aP=[/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],aQ=new Set(["挖掘机","自卸汽车","压路机","洒水车","高空作业车","混凝土搅拌运输车"]),aR=[{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:/场内平衡|就地平衡|场内调配|回填利用/}]}],aS=/不采用|不使用|不设置|不考虑|不得|禁止|取消/u;function aT(a){return a.split(/[,,、::]/u).map(a=>a.trim()).filter(Boolean)}function aU(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,n.wj)((0,e.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,e.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 aR){let d=new Map;for(let c of b){if(!a.relevance.test(c.text))continue;let b=aT(c.text);for(let e of a.options){let a=b.find(a=>e.aliases.test(a));if(!a||aS.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}let aV=[{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 aW(a,b){let c=a.trim();if(!c)return"未分部条目";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 aX(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 aY(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 aX(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 aX(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 aX(a.description))/压实|试验|检测|验收|闭水|合格/u.test(`${b.key}${b.value}`)&&j.length<12&&!j.includes(b.value)&&j.push(b.value);let k=(0,az.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,skeleton:["施工概况","施工流程","施工方法"],source:"boq",coveredSeqs:c.map(a=>a.seq)}}function aZ(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 a$(a,b,c){return void 0!==a&&void 0!==b?Math.round((a+b)/2):void 0!==b?b:void 0!==a?a:c}let a_=[{id:"contract_days",chapterPattern:/进度|工期|总体|部署|概况|工程|计划/u,render:a=>a.contract.totalDays>0?[`- 总工期:${a.contract.totalDays} 日历天`]:[]},{id:"labor",chapterPattern:/劳动力|人员|资源|进度|工期|部署|概况/u,render:a=>{let b=[];return a.resources.labor.peakValue>0&&b.push(`- 劳动力峰值:${a.resources.labor.peakValue} 人(全项目唯一峰值口径,不得自设其他峰值)`),a.resources.labor.byPhase.length>0&&b.push(`- 分阶段劳动力投入:${a.resources.labor.byPhase.slice(0,10).map(a=>`${a.phase} ${a$(a.min,a.max,0)} 人`).join("、")}${a.resources.labor.byPhase.length>10?" 等":""}`),a.resources.labor.composition.length>0&&b.push(`- 工种构成(合计=${a.resources.labor.peakValue} 人,工种表唯一数据源,各工种人数与合计不得改写):${a.resources.labor.composition.map(a=>`${a.trade} ${a.count} 人`).join("、")}`),b}},{id:"equipment",chapterPattern:/机械|设备|资源/u,render:a=>0===a.resources.equipment.length?[]:[`- 主要机械:${a.resources.equipment.map(a=>`${a.name}${a.spec?`(${a.spec})`:""} ${a$(a.quantity,void 0,Math.max(a.quantity??0,1))} 台`).join("、")}`]},{id:"materials",chapterPattern:/物资|材料|资源|采购/u,render:a=>0===a.materialsPlan.length?[]:[`- 主要材料(名称、型号规格、数量必须与此一致;清单明确给出的规格是事实数据,未列材料不得自编型号规格):${a.materialsPlan.slice(0,15).map(a=>`${a.name}${a.spec?`(${a.spec})`:""} ${a.quantity??""}${a.unit}`).join("、")}${a.materialsPlan.length>15?" 等":""}`]},{id:"maintenance_redline",chapterPattern:/绿化|种植|养护|苗木|技能|培训|成品保护|质量|亮化|路灯|照明/u,render:a=>a.redLineFacts.filter(a=>!a.amount&&/养护|路灯/u.test(a.key)).map(a=>`- 评审红线事实(必须逐条出现且数值一致):${a.key}=${a.value}`)},{id:"quantity_breakdown",chapterPattern:/亮化|路灯|照明|材料|物资|资源|采购/u,render:a=>{let b=new Map;for(let c of a.materialsPlan){let a=b.get(c.name);a?a.push(c):b.set(c.name,[c])}let c=[];for(let[a,d]of b){if(d.length<2)continue;let b=d.reduce((a,b)=>a+(b.quantity??0),0);c.push(`- ${a}规格-数量拆分(逐项照抄,不得自行分配/改动):${d.map(a=>`${a.spec||"未标规格"} ${a.quantity??0}${a.unit}`).join(" + ")}(合计 ${Math.round(1e3*b)/1e3}${d[0]?.unit||""})`)}return c}},{id:"village_count",chapterPattern:/概况|工程|总体/u,render:a=>a.redLineFacts.filter(a=>!a.amount&&"自然村数量"===a.key).map(a=>`- 评审红线事实(必须逐条出现且数值一致):${a.key}=${a.value}`)},{id:"basis_regulations",chapterPattern:/编制|工程概况|项目概况|概况|说明/u,render:a=>{let b=[];return a.basisRegulations.length>0&&b.push(`- 招标文件引用法规(项目专属事实,编制依据小节必须列出法规名称及文号):${a.basisRegulations.join("、")}`),b.push("- 编制依据小节由写作模型自行列写:国家法律法规及文号、工程所在地地方性法规、与本工程分部对应的现行施工验收规范名称及编号;不得空写「国家现行法律、行政法规」等类别话术,不得编造文号"),b}}];function a0(a){return a.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&")}let a1=/总述|综述|概述|编制说明|施工准备|施工部署|总体施工(?:方案|工艺|方法)|主要分部分项工程/u,a2=[{key:"towerCrane",re:/塔式起重机|塔吊/u},{key:"hoist",re:/施工升降机|施工电梯/u},{key:"truckCrane",re:/汽车起重机|汽车吊/u},{key:"rebarCutter",re:/钢筋切断机/u},{key:"rebarBender",re:/钢筋弯曲机/u},{key:"circularSaw",re:/圆盘锯/u}],a3=[{key:"pump",re:/提升泵|潜水泵/u}];function a4(a){let b=[];for(let c of a?.milestones??[])c.label.trim()&&(c.duration??0)>0&&b.push({node:c.label.trim(),offset:`${c.duration} 天`});let c={};for(let b of a?.resources?.equipment??[]){let a=b.quantity??Math.round(((b.min??1)+(b.max??b.min??1))/2);if(!Number.isFinite(a)||a<=0)continue;let d=a2.find(a=>a.re.test(b.name));void 0!==d&&void 0===c[d.key]&&(c[d.key]=a)}for(let[b,d]of Object.entries(a?.quantities??{})){if(!d||d.value<=0||!/台|套/u.test(d.unit))continue;let a=a3.find(a=>a.re.test(b));void 0!==a&&void 0===c[a.key]&&(c[a.key]=d.value)}let d=[];for(let[b,c]of Object.entries(a?.quantities??{}))!(!c||!Number.isFinite(c.value)||c.value<10||/台|套/u.test(c.unit)&&a3.some(a=>a.re.test(b)))&&/[\u4e00-\u9fa5]{3,}/u.test(b)&&d.push({name:b,value:c.value,unit:c.unit});let e=a?.redLineFacts?.find(a=>"自然村数量"===a.key),f=e?/(\d+)/u.exec(e.value):null,g=(a?.milestones??[]).reduce((a,b)=>a+(b.duration??0),0),h=(a?.contract.totalDays??0)>0?Math.max(0,(a?.contract.totalDays??0)-g):0,i=a?.resources?.labor?.peakValue??0;return{nodeAuthorities:b,machineAuthorities:c,specAuthorities:{...a?.specAuthorities??{}},villageCountAuthority:f?Number(f[1]):0,slackDaysAuthority:h,quantityAuthorities:d,laborPeakAuthority:i>0?i:void 0}}function a5(a){return/^(?:确保\s*)?[人材机](?:员|力|料|械|工)?\s*的保障体系与措施$/u.test(a)}function a6(a,b){let c=a.replace(/\s+/gu,""),d=b.replace(/\s+/gu,"");return c===d||c.includes(d)||d.includes(c)}function a7(a,b,c){for(let c=0;c<2&&a.length>0&&!(4e3>=Math.floor(b/a.length));c+=1){let b=a.filter(a=>a.subPoints.length>=2&&!a8(a.title));if(0===b.length)break;let c=b.reduce((a,b)=>b.subPoints.length>a.subPoints.length?b:a),d=Math.ceil(c.subPoints.length/2);a.push({title:c.subPoints[d].title||c.title,subPoints:c.subPoints.slice(d),facts:[],targetWords:0}),c.subPoints=c.subPoints.slice(0,d)}let d=a.filter(a=>!a8(a.title)),e=ar.gG.test(c)&&d.length>=8&&d.length>0&&d.every(a=>a.subPoints.length<=3)?400:1200,f=a.reduce((a,b)=>a+b.subPoints.length,0)||a.length;for(let c of a){let d=Math.floor(.75*Math.max(e,Math.floor(b/Math.max(1,a.length)))+.25*b*(c.subPoints.length/f));c.targetWords=Math.min(4e3,Math.max(e,d)),(ar.Yp.test(c.title)||ar.gG.test(c.title))&&(c.targetWords=Math.min(4e3,Math.max(c.targetWords,3600)))}}function a8(a){return ar.Yp.test(a)||ar.gG.test(a)}function a9(a,b,c){let d=new Map,e=[];for(let b of a){if(a5(b)||ar.Yp.test(b)||ar.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,ar.tZ)(c)&&!a5(c)&&a&&(a6(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:1200});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:1200})}}return a7(g,c,b),{blocks:g,coveredSections:a.slice(),fallbackSections:[],llmPlanned:!1}}function ba(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=d.slice(a.index??0,(a.index??0)+a[0].length),f=e.indexOf(String(a[1]));if(f>0&&/按|阶段|拆除|清杂|准备/u.test(e.slice(0,f)))continue;let g=Number(a[1]);if(g>0&&g!==b.contract.totalDays){c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`蓝图引用冲突:正文出现与蓝图不一致的工期表述 ${g}日历天`,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=Object.entries(b.quantities).sort((a,b)=>b[0].length-a[0].length),i=[];for(let[a,b]of h){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)":a0(a)}(c)}(?![0-9A-Za-z])`:"",f=RegExp(`${a0(a)}[^
17
- 。;;]{0,40}?(\\d+(?:\\.\\d+)?)\\s*${e}`,"gu");for(let e of d.matchAll(f)){let f=e.index??0,h=f+a.length;if(i.some(a=>f<a.end&&h>a.start))continue;i.push({start:f,end:h});let j=d.slice(f,f+e[0].length),k=j.lastIndexOf(String(e[1]));if(k>0&&/(?:间距|不大于|不小于|≥|≤|直径|宽度|厚度|高度|深度|坡度)[^0-9]*$/u.test(j.slice(0,k)))continue;let l=d.slice(Math.max(0,f-12),f);if(/[郢庄岗塘圩坝池井]/u.test(l))continue;let m=d.lastIndexOf("\n\n",f),n=-1===m?0:m+2,o=d.indexOf("\n\n",f),p=-1===o?d.length:o;if(/[郢庄岗塘圩坝]/u.test(d.slice(n,p))||/(?:直径|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 q=Number(e[1]);Number.isFinite(q)&&!(q<=0)&&q!==b.value&&g.push({name:a,value:q,unit:c,authorityValue:b.value,ns:f})}}let j=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}},k=a=>Math.abs(a.value-a.authorityValue)/a.authorityValue,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=j(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 h=g.filter(c=>c!==a&&c.ns>=b.start&&c.ns<b.end),i=[a,...h].filter(a=>k(a)>.5).length,l=[a,...h].filter(a=>.5>=k(a)).length;!(i>=2&&i>l||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 bb=/(?<=[日天])\s*[0-9]+(?:\.[0-9]+)?(?=[\s]*(?:招标|建设|质量|合同|项目|工程|资金|投标|开标|评标|付款|工期|开工|计划|计价|现场|资质|标段|[0-9]{1,3}[.、.]|[,,。;;]|$))/u;az.ts.length;var bc=c(61373),bd=c(85016),be=c(37047),bf=c(71678);function bg(a=!1){return{awardObjectives:[],specialQualityStandards:[],awardClauses:[],systematicBenchmarks:[],frontScheduleClauses:[],dateFabricationProhibited:!1,prohibitionNotes:[],extracted:a}}let bh={type:"object",required:["awardObjectives","specialQualityStandards","awardClauses","systematicBenchmarks","prohibitionNotes"],properties:{awardObjectives:{type:"array",maxItems:10,items:{type:"object",required:!0,properties:{text:{type:"string",minLength:2,maxLength:120},coreTerms:{type:"array",maxItems:4,items:{type:"string",maxLength:24}},source:{type:"string",maxLength:80}}}},specialQualityStandards:{type:"array",maxItems:10,items:{type:"object",required:!0,properties:{text:{type:"string",minLength:2,maxLength:120},coreTerms:{type:"array",maxItems:4,items:{type:"string",maxLength:24}},source:{type:"string",maxLength:80}}}},awardClauses:{type:"array",maxItems:10,items:{type:"object",required:!0,properties:{text:{type:"string",minLength:2,maxLength:200},coreTerms:{type:"array",maxItems:4,items:{type:"string",maxLength:24}},source:{type:"string",maxLength:80}}}},greenBuildingGrade:{type:"object",properties:{text:{type:"string",minLength:2,maxLength:120},coreTerms:{type:"array",maxItems:4,items:{type:"string",maxLength:24}},source:{type:"string",maxLength:80}}},smartSiteGrade:{type:"object",properties:{text:{type:"string",minLength:2,maxLength:120},coreTerms:{type:"array",maxItems:4,items:{type:"string",maxLength:24}},source:{type:"string",maxLength:80}}},assemblyRate:{type:"object",properties:{text:{type:"string",minLength:2,maxLength:120},coreTerms:{type:"array",maxItems:4,items:{type:"string",maxLength:24}},source:{type:"string",maxLength:80}}},systematicBenchmarks:{type:"array",maxItems:10,items:{type:"object",required:!0,properties:{text:{type:"string",minLength:2,maxLength:120},coreTerms:{type:"array",maxItems:4,items:{type:"string",maxLength:24}},source:{type:"string",maxLength:80}}}},frontScheduleClauses:{type:"array",maxItems:20,items:{type:"object",required:!0,properties:{text:{type:"string",minLength:2,maxLength:200},coreTerms:{type:"array",maxItems:4,items:{type:"string",maxLength:24}},source:{type:"string",maxLength:80}}}},dateFabricationProhibited:{type:"boolean"},prohibitionNotes:{type:"array",maxItems:12,items:{type:"object",required:!0,properties:{text:{type:"string",minLength:2,maxLength:200},coreTerms:{type:"array",maxItems:4,items:{type:"string",maxLength:24}},source:{type:"string",maxLength:80}}}}}},bi=/^(?:☑?\s*无|无)\s*[。;;]?\s*$|:\s*(?:☑)?\s*无\s*[。;;]?\s*$|:\s*见\s*《?[^》]{2,40}》?\s*[。;;]?\s*$/u;function bj(a){if(!a?.text||a.text.trim().length<2)return;let b=a.text.trim();if(!bi.test(b))return{text:b,coreTerms:(a.coreTerms||[]).map(a=>a.trim()).filter(a=>a.length>=2&&a.length<=16).slice(0,4),source:a.source?.trim()||void 0}}function bk(a){if(!Array.isArray(a))return[];let b=new Set,c=[];for(let d of a){let a=bj(d);if(!a)continue;let e=a.text;b.has(e)||(b.add(e),c.push(a))}return c}async function bl(a,b={}){let c,d=bg(!1);if(!a||0===a.length)return d;let f=[...a].sort((a,b)=>{let c=`${a.sectionTitle||""}
16
+ ${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 aa(a){return`${a.sectionTitle||""}${a.content}`.slice(0,600)}function ab(a,b,c,d){let e=b.map(b=>{let d=(0,g.A1)(b,a.requiredFacts)*$(a,b.processingType)+_(a,b),e=c.semantic?c.semantic.similarity(c.semantic.queryText,aa(b)):0;return{...b,score:.5*d+10*e}});return(0,g.QR)(e,c,d)}function ac(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 ad(a){if((0,e.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:Z(b),generationMode:!0});return(0,g.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})}function ae(a){return(0,n.de)(a).replace(/[\s,,.。::;;||()()《》<>【】"“”'‘’]/gu,"").split("[").join("").split("]").join("").toLowerCase()}function af(a){return/工程造价|造价|报价|投标报价|报价明细|综合单价|单价|合价|金额|税率|增值税|利润|预留金|暂列金额|最高投标限价|招标控制价|合同估算价|合同估算价格|投资估算|估算价/u.test(a)}function ag(a){let b=Q((0,e.lG)(a));return!b||/资料未明确|系统暂未从知识库确认|未确认|待确认|无|暂无/u.test(b)||/###|第\s*\d+\s*页|共\s*\d+\s*页|新版交易系统|操作帮助|登录页面|见招标公告|未尽事宜|详见图纸|招标文件补疑|政府相关文件|规范等其它资料/u.test(b)||/^\d+(?:\.\d+)?\s*(?:mm|cm|m|㎡|m²|m3|m³|%|元|万元)?$/iu.test(b)||af(b)||b.length>160?"":b}function ah(a,b,c={}){let d=b.filter(a=>{let b=`${a.key||""}${a.fieldName||""}${a.fieldId||""}`,c=(0,e.lG)(a.value);return!(af(`${b}${c}`)||!ag(c)||/第\s*\d+\s*页|新版交易系统|操作帮助|见招标公告|未尽事宜|详见图纸|招标文件补疑|政府相关文件|规范等其它资料/u.test(`${b}${c}${a.sourceFile||""}`))&&(/项目名称|工程名称|项目编号|招标项目编号|招标人|建设单位|发包人|建设地点|建设规模|招标范围|计划工期|合同工期|质量标准|质量目标/u.test(b)||/危大|安全|资源|材料|机械|设备/u.test(b)&&!/^\d+(?:\.\d+)?\s*(?:mm|cm|m|㎡|m²|m3|m³|%|元|万元)?$/iu.test(c)||/面积|占地|建筑面积|长度|宽度|高度|厚度|深度|强度|等级|坡度|管径|直径|规格|跨度|天数|工期|周长|体积|重量/u.test(b)&&/^\d+(?:\.\d+)?\s*(?:㎡|m²|m2|m³|m3|m|mm|cm|km|MPa|kPa|kN|天|日历天|日|级|%|台|套|座|个|t|kg)/iu.test(c))}),f=new Set,g=[];for(let b of d){let d=ag(b.value);if(!d)continue;let e=b.fieldName||b.key||b.fieldId||"资料事实",h=`${e}:${d}`;if(!f.has(h)&&(f.add(h),!function(a,b){let c=ae(a),d=ae(b);if(!d||d.length<2||c.includes(d))return!0;let e=b.match(/\d+(?:\.\d+)?\s*(?:日历天|天|个月|月|年|万元|元|平方米|㎡|m²|立方米|m³|米|m|mm|cm|台|套|人|项|%|MPa|kPa)?/giu)||[];return e.length>0&&e.some(a=>ae(a).length>=2&&c.includes(ae(a)))}(a,d)&&(g.push({fact:b,label:e,value:d}),c.maxItems&&g.length>=c.maxItems)))break}return g}function ai(a,b,c={}){return ah(a,b,{maxItems:c.maxIssues}).map(a=>({level:"warning",message:`已确认事实未在正文中落位:${a.label}=${a.value}`,suggestion:"请将该事实自然写入对应章节或小节,不得改变原始数值和单位。"}))}var aj=c(22213);function ak(a,b){return 0>=(0,h.V7)(a.content)?"failed":"completed"}function al(a,b,c=12){if(0===b.length)return[];let d=b.slice(0,c).map(a=>p.basename(a)),e=b.length>c?` 等 ${b.length} 个文件`:"";return[`${a}:${d.join("、")}${e}`]}function am(a,b=5){return a?Object.entries(a).sort((a,b)=>b[1].inputChars-a[1].inputChars).slice(0,b):[]}function an(a,b,c){if(Number.isFinite(c)&&c>0)return Math.ceil(c);let d=new Set(b.filter(Boolean)),e=a.listFiles?.().filter(a=>0===d.size||d.has(a.relativePath)).reduce((a,b)=>a+Math.max(0,Math.ceil(Number(b.chunkCount)||0)),0)??0;return e>0?e:Math.max(1,d.size)}var ao=c(1494),ap=c(19898),aq=c(70208),ar=c(3063);let as=/^(?:\d{12}|(?:ZB|WB)\d{12})$/u,at=/工作表:(\d+\.\d+)/u,au=/第1页\s*共(\d+)页/u,av=/工程名称:(.+?)\s*标段/u,aw=/第(\d+)页\s*共\d+页/gu;function ax(a){let b=at.exec(a.sectionTitle);if(b)return b[1];let c=a.content.split("\n")[0]||"",d=at.exec(c);return d?d[1]:""}function ay(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 az=c(22496),aA=c(95734),aB=c(48661);let aC=[{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 aD(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 aE={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:aD,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:"施工用水以洒水车供水为主,总用水量按管网分段配置"},aF={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:"施工用水以市政供水为主,总用水量按施工段分区配置"},aG={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:aD,tradeMapping:aE.tradeMapping,laborUnitRange:aE.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:"施工用水按现场水源分区配置,总用水量按施工段核定"},aH={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:"施工用水以现场水源为主,总用水量按施工段核定"},aI={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:"施工用水以现场水源为主,总用水量按施工段核定"},aJ={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:"施工用水以现场水源为主,总用水量按施工段核定"},aK={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 aL(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=p.join(q.homedir(),".customize-agent","projects",(0,ap.computeProjectId)(p.resolve(a.projectRoot)),"kb.db");if(!o.existsSync(c))return{warning:`项目知识库索引不存在:${c}`};let d=[];for(let a of b)try{let b=function(a,b){let c=new((0,ap.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){d.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=at.exec(a);if(!b)return;let c=b[1],d=f.get(c),e=av.exec(a),g=au.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="";for(let d of a){let a=d.content.split("\n"),e=c;for(let d of(c="",a)){if(d.startsWith("|"))e.trim(),e=d;else{if(!e)continue;e+=d}if(!e.endsWith("|"))continue;let a=e.split("|").map(a=>a.trim());e="",/^[一二三四五六七八九十\d]+(?:\.\d+)?$/u.test(a[2]??"")&&!a[1]&&a[4]&&"分部小计"!==a[4]&&b.push(a[2]??"")}e.trim()&&(c=e)}return b}(d)),n=-1,o="";for(let a of d){let d=ax(a),e=d||o;d&&(o=d);let g=f.get(e),p=g?.villageGroup||e||"",q=a.content.split("\n"),r=i;i="";let s=function(a){if(au.exec(a))return 1;aw.lastIndex=0;let b=aw.exec(a);return aw.lastIndex=0,b?Number(b[1]):void 0}(a.content);for(let d=0;d<q.length;d++){let e=q[d]||"";if(e.startsWith("|"))r.trim()&&c.droppedIncompleteRows++,r=e;else if(r)r+=e;else{let a=aw.exec(e);a&&(s=Number(a[1])),aw.lastIndex=0;continue}if(r.endsWith("|")){let c=r.split("|").map(a=>a.trim());r="";let d=c[1]??"",e=s,f=function(a){let b=a.join(" "),c=/第(\d+)页\s*共\d+页/u.exec(b);return c?Number(c[1]):void 0}(c);if(f&&(s=f),/^\d+$/u.test(d)&&as.test(c[2]??"")){let f=Number((c[8]??"").trim()),g={seq:Number(d),code:c[2]??"",name:c[4]??"",description:c[5]??"",unit:c[6]??"",quantity:Number.isFinite(f)?f:0,section:j,subsection:k,sectionKind:l,villageGroup:p,page:e,sourceFile:b,chunkIndex:a.chunkIndex,sourceKind:"markdown"};g.seq>0&&h.push(g)}else if(/^[一二三四五六七八九十\d]+(?:\.\d+)?$/u.test(c[2]??"")&&!c[1]&&c[4]&&"分部小计"!==c[4]){let a=m[n+=1]??((c[2]??"").includes(".")?"subsection":"section");"unit-project"===a?(j=c[4],k="",l="unit-project"):"section"===a?(j=c[4],k="",l="plain"):k=c[4]}}}r.trim()&&(i=r)}i.trim()&&c.droppedIncompleteRows++;let p=[];for(let a of(o="",e)){let c=ax(a),d=c||o;c&&(o=c);let e=f.get(d),g=e?.villageGroup||d||"";p.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 q=new Map;for(let a of h)q.set(`${a.villageGroup}|${a.seq}`,a);for(let a of p){let b=`${a.villageGroup}|${a.seq}`;q.has(b)||q.set(b,a)}let r=[...q.values()].sort((a,b)=>a.villageGroup.localeCompare(b.villageGroup,"zh-CN")||a.seq-b.seq);var s=r,t=h;let u=ay(t);for(let a of s){let b;if("declaration"===a.sourceKind&&!a.section){for(let c of u.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 v=[];for(let[a,b]of ay(r)){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=ax(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(au.test(f.content)&&d.add(1),aw.lastIndex=0,f.content.matchAll(aw))){let b=Number(a[1]);d.add(b),b>1&&d.add(b-1)}aw.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&&!as.test(a.code)).length;v.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 v.sort((a,b)=>a.villageGroup.localeCompare(b.villageGroup,"zh-CN")),{entries:r,villages:v,totalEntries:r.length,sourceFile:b,complete:v.length>0&&v.every(a=>a.complete),diagnostics:c}}({chunks:b,sourceFile:a});if(e.totalEntries>0)return{boq:e};d.push(`${a}(解析出 0 条目)`)}catch(b){d.push(`${a}(${b instanceof Error?b.message:String(b)})`)}return{warning:`清单解析失败:${d.join(";")}`}}function aM(a){let b=new Map;for(let c of a.entries){if(!c.name)continue;let a=b.get(c.name);a?a.total+=c.quantity:b.set(c.name,{value:c.quantity,unit:c.unit,sourceFile:c.sourceFile,seq:c.seq,total:c.quantity})}let c={};for(let[a,d]of b)c[a]={value:Math.round(1e3*d.total)/1e3,unit:d.unit,sourceFile:d.sourceFile,seq:d.seq};return c}let aN=[{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 aO(a,b,c=aE){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 aP=[/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],aQ=new Set(["挖掘机","自卸汽车","压路机","洒水车","高空作业车","混凝土搅拌运输车"]),aR=[{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:/场内平衡|就地平衡|场内调配|回填利用/}]}],aS=/不采用|不使用|不设置|不考虑|不得|禁止|取消/u;function aT(a){return a.split(/[,,、::]/u).map(a=>a.trim()).filter(Boolean)}function aU(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,n.wj)((0,e.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,e.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 aR){let d=new Map;for(let c of b){if(!a.relevance.test(c.text))continue;let b=aT(c.text);for(let e of a.options){let a=b.find(a=>e.aliases.test(a));if(!a||aS.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}let aV=[{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 aW(a,b){let c=a.trim();if(!c)return"未分部条目";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 aX(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 aY(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 aX(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 aX(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 aX(a.description))/压实|试验|检测|验收|闭水|合格/u.test(`${b.key}${b.value}`)&&j.length<12&&!j.includes(b.value)&&j.push(b.value);let k=(0,az.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,skeleton:["施工概况","施工流程","施工方法"],source:"boq",coveredSeqs:c.map(a=>a.seq)}}function aZ(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 a$(a,b,c){return void 0!==a&&void 0!==b?Math.round((a+b)/2):void 0!==b?b:void 0!==a?a:c}let a_=[{id:"contract_days",chapterPattern:/进度|工期|总体|部署|概况|工程|计划/u,render:a=>a.contract.totalDays>0?[`- 总工期:${a.contract.totalDays} 日历天`]:[]},{id:"labor",chapterPattern:/劳动力|人员|资源|进度|工期|部署|概况/u,render:a=>{let b=[];return a.resources.labor.peakValue>0&&b.push(`- 劳动力峰值:${a.resources.labor.peakValue} 人(全项目唯一峰值口径,不得自设其他峰值)`),a.resources.labor.byPhase.length>0&&b.push(`- 分阶段劳动力投入:${a.resources.labor.byPhase.slice(0,10).map(a=>`${a.phase} ${a$(a.min,a.max,0)} 人`).join("、")}${a.resources.labor.byPhase.length>10?" 等":""}`),a.resources.labor.composition.length>0&&b.push(`- 工种构成(合计=${a.resources.labor.peakValue} 人,工种表唯一数据源,各工种人数与合计不得改写):${a.resources.labor.composition.map(a=>`${a.trade} ${a.count} 人`).join("、")}`),b}},{id:"equipment",chapterPattern:/机械|设备|资源/u,render:a=>0===a.resources.equipment.length?[]:[`- 主要机械:${a.resources.equipment.map(a=>`${a.name}${a.spec?`(${a.spec})`:""} ${a$(a.quantity,void 0,Math.max(a.quantity??0,1))} 台`).join("、")}`]},{id:"materials",chapterPattern:/物资|材料|资源|采购/u,render:a=>0===a.materialsPlan.length?[]:[`- 主要材料(名称、型号规格、数量必须与此一致;清单明确给出的规格是事实数据,未列材料不得自编型号规格):${a.materialsPlan.slice(0,15).map(a=>`${a.name}${a.spec?`(${a.spec})`:""} ${a.quantity??""}${a.unit}`).join("、")}${a.materialsPlan.length>15?" 等":""}`]},{id:"maintenance_redline",chapterPattern:/绿化|种植|养护|苗木|技能|培训|成品保护|质量|亮化|路灯|照明/u,render:a=>a.redLineFacts.filter(a=>!a.amount&&/养护|路灯/u.test(a.key)).map(a=>`- 评审红线事实(必须逐条出现且数值一致):${a.key}=${a.value}`)},{id:"quantity_breakdown",chapterPattern:/亮化|路灯|照明|材料|物资|资源|采购/u,render:a=>{let b=new Map;for(let c of a.materialsPlan){let a=b.get(c.name);a?a.push(c):b.set(c.name,[c])}let c=[];for(let[a,d]of b){if(d.length<2)continue;let b=d.reduce((a,b)=>a+(b.quantity??0),0);c.push(`- ${a}规格-数量拆分(逐项照抄,不得自行分配/改动):${d.map(a=>`${a.spec||"未标规格"} ${a.quantity??0}${a.unit}`).join(" + ")}(合计 ${Math.round(1e3*b)/1e3}${d[0]?.unit||""})`)}return c}},{id:"village_count",chapterPattern:/概况|工程|总体/u,render:a=>a.redLineFacts.filter(a=>!a.amount&&"自然村数量"===a.key).map(a=>`- 评审红线事实(必须逐条出现且数值一致):${a.key}=${a.value}`)},{id:"basis_regulations",chapterPattern:/编制|工程概况|项目概况|概况|说明/u,render:a=>{let b=[];return a.basisRegulations.length>0&&b.push(`- 招标文件引用法规(项目专属事实,编制依据小节必须列出法规名称及文号):${a.basisRegulations.join("、")}`),b.push("- 编制依据小节由写作模型自行列写:国家法律法规及文号、工程所在地地方性法规、与本工程分部对应的现行施工验收规范名称及编号;不得空写「国家现行法律、行政法规」等类别话术,不得编造文号"),b}}];function a0(a){return a.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&")}let a1=/总述|综述|概述|编制说明|施工准备|施工部署|总体施工(?:方案|工艺|方法)|主要分部分项工程/u,a2=[{key:"towerCrane",re:/塔式起重机|塔吊/u},{key:"hoist",re:/施工升降机|施工电梯/u},{key:"truckCrane",re:/汽车起重机|汽车吊/u},{key:"rebarCutter",re:/钢筋切断机/u},{key:"rebarBender",re:/钢筋弯曲机/u},{key:"circularSaw",re:/圆盘锯/u}],a3=[{key:"pump",re:/提升泵|潜水泵/u}];function a4(a){let b=[];for(let c of a?.milestones??[])c.label.trim()&&(c.duration??0)>0&&b.push({node:c.label.trim(),offset:`${c.duration} 天`});let c={};for(let b of a?.resources?.equipment??[]){let a=b.quantity??Math.round(((b.min??1)+(b.max??b.min??1))/2);if(!Number.isFinite(a)||a<=0)continue;let d=a2.find(a=>a.re.test(b.name));void 0!==d&&void 0===c[d.key]&&(c[d.key]=a)}for(let[b,d]of Object.entries(a?.quantities??{})){if(!d||d.value<=0||!/台|套/u.test(d.unit))continue;let a=a3.find(a=>a.re.test(b));void 0!==a&&void 0===c[a.key]&&(c[a.key]=d.value)}let d=[];for(let[b,c]of Object.entries(a?.quantities??{}))!(!c||!Number.isFinite(c.value)||c.value<10||/台|套/u.test(c.unit)&&a3.some(a=>a.re.test(b)))&&/[\u4e00-\u9fa5]{3,}/u.test(b)&&d.push({name:b,value:c.value,unit:c.unit});let e=a?.redLineFacts?.find(a=>"自然村数量"===a.key),f=e?/(\d+)/u.exec(e.value):null,g=(a?.milestones??[]).reduce((a,b)=>a+(b.duration??0),0),h=(a?.contract.totalDays??0)>0?Math.max(0,(a?.contract.totalDays??0)-g):0,i=a?.resources?.labor?.peakValue??0;return{nodeAuthorities:b,machineAuthorities:c,specAuthorities:{...a?.specAuthorities??{}},villageCountAuthority:f?Number(f[1]):0,slackDaysAuthority:h,quantityAuthorities:d,laborPeakAuthority:i>0?i:void 0}}function a5(a){return/^(?:确保\s*)?[人材机](?:员|力|料|械|工)?\s*的保障体系与措施$/u.test(a)}function a6(a,b){let c=a.replace(/\s+/gu,""),d=b.replace(/\s+/gu,"");return c===d||c.includes(d)||d.includes(c)}function a7(a,b,c){for(let c=0;c<2&&a.length>0&&!(4e3>=Math.floor(b/a.length));c+=1){let b=a.filter(a=>a.subPoints.length>=2&&!a8(a.title));if(0===b.length)break;let c=b.reduce((a,b)=>b.subPoints.length>a.subPoints.length?b:a),d=Math.ceil(c.subPoints.length/2);a.push({title:c.subPoints[d].title||c.title,subPoints:c.subPoints.slice(d),facts:[],targetWords:0}),c.subPoints=c.subPoints.slice(0,d)}let d=a.filter(a=>!a8(a.title)),e=ar.gG.test(c)&&d.length>=8&&d.length>0&&d.every(a=>a.subPoints.length<=3)?400:1200,f=a.reduce((a,b)=>a+b.subPoints.length,0)||a.length;for(let c of a){let d=Math.floor(.75*Math.max(e,Math.floor(b/Math.max(1,a.length)))+.25*b*(c.subPoints.length/f));c.targetWords=Math.min(4e3,Math.max(e,d)),(ar.Yp.test(c.title)||ar.gG.test(c.title))&&(c.targetWords=Math.min(4e3,Math.max(c.targetWords,3600)))}}function a8(a){return ar.Yp.test(a)||ar.gG.test(a)}function a9(a,b,c){let d=new Map,e=[];for(let b of a){if(a5(b)||ar.Yp.test(b)||ar.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,ar.tZ)(c)&&!a5(c)&&a&&(a6(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:1200});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:1200})}}return a7(g,c,b),{blocks:g,coveredSections:a.slice(),fallbackSections:[],llmPlanned:!1}}function ba(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=d.slice(a.index??0,(a.index??0)+a[0].length),f=e.indexOf(String(a[1]));if(f>0&&/按|阶段|拆除|清杂|准备/u.test(e.slice(0,f)))continue;let g=Number(a[1]);if(g>0&&g!==b.contract.totalDays){c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`蓝图引用冲突:正文出现与蓝图不一致的工期表述 ${g}日历天`,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)":a0(a)}(c)}(?![0-9A-Za-z])`:"",f=RegExp(`${a0(a)}[^
17
+ 。;;]{0,40}?(\\d+(?:\\.\\d+)?)\\s*${e}`,"gu");for(let e of d.matchAll(f)){let f=e.index??0,i=f+a.length;if(j.some(a=>f<a.end&&i>a.start))continue;j.push({start:f,end:i});let k=d.slice(f,f+e[0].length),l=k.lastIndexOf(String(e[1]));if(l>0&&/(?:间距|不大于|不小于|≥|≤|直径|宽度|厚度|高度|深度|坡度)[^0-9]*$/u.test(k.slice(0,l)))continue;let m=d.slice(Math.max(0,f-12),f);if(/[郢庄岗塘圩坝池井]/u.test(m))continue;let n=d.lastIndexOf("\n\n",f),o=-1===n?0:n+2,p=d.indexOf("\n\n",f),q=-1===p?d.length:p;if(/[郢庄岗塘圩坝]/u.test(d.slice(o,q))||/(?:直径|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 r=Number(e[1]);if(Number.isFinite(r)&&!(r<=0)){if(r===b.value){h.push({ns:f});continue}g.push({name:a,value:r,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 bb=/(?<=[日天])\s*[0-9]+(?:\.[0-9]+)?(?=[\s]*(?:招标|建设|质量|合同|项目|工程|资金|投标|开标|评标|付款|工期|开工|计划|计价|现场|资质|标段|[0-9]{1,3}[.、.]|[,,。;;]|$))/u;az.ts.length;var bc=c(61373),bd=c(85016),be=c(37047),bf=c(71678);function bg(a=!1){return{awardObjectives:[],specialQualityStandards:[],awardClauses:[],systematicBenchmarks:[],frontScheduleClauses:[],dateFabricationProhibited:!1,prohibitionNotes:[],extracted:a}}let bh={type:"object",required:["awardObjectives","specialQualityStandards","awardClauses","systematicBenchmarks","prohibitionNotes"],properties:{awardObjectives:{type:"array",maxItems:10,items:{type:"object",required:!0,properties:{text:{type:"string",minLength:2,maxLength:120},coreTerms:{type:"array",maxItems:4,items:{type:"string",maxLength:24}},source:{type:"string",maxLength:80}}}},specialQualityStandards:{type:"array",maxItems:10,items:{type:"object",required:!0,properties:{text:{type:"string",minLength:2,maxLength:120},coreTerms:{type:"array",maxItems:4,items:{type:"string",maxLength:24}},source:{type:"string",maxLength:80}}}},awardClauses:{type:"array",maxItems:10,items:{type:"object",required:!0,properties:{text:{type:"string",minLength:2,maxLength:200},coreTerms:{type:"array",maxItems:4,items:{type:"string",maxLength:24}},source:{type:"string",maxLength:80}}}},greenBuildingGrade:{type:"object",properties:{text:{type:"string",minLength:2,maxLength:120},coreTerms:{type:"array",maxItems:4,items:{type:"string",maxLength:24}},source:{type:"string",maxLength:80}}},smartSiteGrade:{type:"object",properties:{text:{type:"string",minLength:2,maxLength:120},coreTerms:{type:"array",maxItems:4,items:{type:"string",maxLength:24}},source:{type:"string",maxLength:80}}},assemblyRate:{type:"object",properties:{text:{type:"string",minLength:2,maxLength:120},coreTerms:{type:"array",maxItems:4,items:{type:"string",maxLength:24}},source:{type:"string",maxLength:80}}},systematicBenchmarks:{type:"array",maxItems:10,items:{type:"object",required:!0,properties:{text:{type:"string",minLength:2,maxLength:120},coreTerms:{type:"array",maxItems:4,items:{type:"string",maxLength:24}},source:{type:"string",maxLength:80}}}},frontScheduleClauses:{type:"array",maxItems:20,items:{type:"object",required:!0,properties:{text:{type:"string",minLength:2,maxLength:200},coreTerms:{type:"array",maxItems:4,items:{type:"string",maxLength:24}},source:{type:"string",maxLength:80}}}},dateFabricationProhibited:{type:"boolean"},prohibitionNotes:{type:"array",maxItems:12,items:{type:"object",required:!0,properties:{text:{type:"string",minLength:2,maxLength:200},coreTerms:{type:"array",maxItems:4,items:{type:"string",maxLength:24}},source:{type:"string",maxLength:80}}}}}},bi=/^(?:☑?\s*无|无)\s*[。;;]?\s*$|:\s*(?:☑)?\s*无\s*[。;;]?\s*$|:\s*见\s*《?[^》]{2,40}》?\s*[。;;]?\s*$/u;function bj(a){if(!a?.text||a.text.trim().length<2)return;let b=a.text.trim();if(!bi.test(b))return{text:b,coreTerms:(a.coreTerms||[]).map(a=>a.trim()).filter(a=>a.length>=2&&a.length<=16).slice(0,4),source:a.source?.trim()||void 0}}function bk(a){if(!Array.isArray(a))return[];let b=new Set,c=[];for(let d of a){let a=bj(d);if(!a)continue;let e=a.text;b.has(e)||(b.add(e),c.push(a))}return c}async function bl(a,b={}){let c,d=bg(!1);if(!a||0===a.length)return d;let f=[...a].sort((a,b)=>{let c=`${a.sectionTitle||""}
18
18
  ${a.content||""}`,d=`${b.sectionTitle||""}
19
19
  ${b.content||""}`;return Number(bn.test(d))-Number(bn.test(c))}),g=[],h=0,i=[];for(let a of f){if(!a.content||!a.content.trim())continue;let b=`【${a.filePath||"资料"}|${a.sectionTitle||"正文"}】
20
20
  ${(0,n.wj)(a.content)}`;g.length>0&&h+b.length>4e4&&(i.push(g),g=[],h=0),g.push(b),h+=b.length}async function j(a){let c=a.join("\n\n");if(!c.trim())return d;let f=function(a){let b=0x811c9dc5;for(let c=0;c<a.length;c+=1)b^=a.charCodeAt(c),b=Math.imul(b,0x1000193);return(b>>>0).toString(16)}(c),g=await (0,aA.bb)([(0,bc.y4)("你是招标文件“要求与标准”结构化提取器。"),'从施工项目绑定资料(招标文件/合同条款/技术标准/检查规范等)中提取文本性评分项要求——这些是评标专家会核对文档是否响应、且影响否决与得分的实质要求。\n只提取资料中明确写出的要求,绝不臆造;资料没有该类别时输出空数组或缺省。\ncoreTerms 是用于在正文中核对该要求是否被响应的核心词(2-4 个),必须选最能代表该要求的专有名词/等级/体系名(如“黄山杯”“二星级”“六个百分百”),不要泛化词。\ndateFabricationProhibited:资料写明“以开工令为准/开工日期以监理开工令为准/不得自定开工日期”时为 true,否则 false。\nsystematicBenchmarks 提取体系化基准要求(如“扬尘治理六个百分百”“四节一环保”),单条零散要求放 prohibitionNotes。\nfrontScheduleClauses:从“投标人须知前附表/投标人须知”章节提取施工组织设计必须响应的实质条款——计划工期与质量要求、创优目标与奖惩(如“确保黄山杯,支付300万元”)、缺陷责任期与质保金、履约担保、工期延误赔偿、项目经理/关键人员要求、分包限制、装配式/绿色建筑/智慧工地等级、安全文明与扬尘要求、付款方式(影响资金安排)。只提取施组正文需要写入或必须遵守的条款;投标程序类条款(开标时间地点、保证金账户、投标文件递交/解密方式、评标委员会组成等纯程序信息)一律不提取。\n工程量清单的项目特征描述不是评分项要求,不要提取。\n必须输出且仅输出一个 JSON 对象,字段结构如下(没有内容的字段输出空数组 [] 或省略可选字段,绝不输出其他字段名):\n{\n "awardObjectives": [{ "text": "创优目标原文", "coreTerms": ["核心词"], "source": "来源文件" }],\n "specialQualityStandards": [{ "text": "...", "coreTerms": [], "source": "..." }],\n "awardClauses": [{ "text": "...", "coreTerms": [], "source": "..." }],\n "greenBuildingGrade": { "text": "...", "coreTerms": [], "source": "..." },\n "smartSiteGrade": { "text": "...", "coreTerms": [], "source": "..." },\n "assemblyRate": { "text": "...", "coreTerms": [], "source": "..." },\n "systematicBenchmarks": [{ "text": "...", "coreTerms": [], "source": "..." }],\n "frontScheduleClauses": [{ "text": "...", "coreTerms": [], "source": "..." }],\n "dateFabricationProhibited": false,\n "prohibitionNotes": [{ "text": "...", "coreTerms": [], "source": "..." }]\n}\n只返回 JSON。'].join("\n"),c,{maxTokens:16e3,temperature:0,signal:b.signal,diagnostics:b.diagnostics,schema:bh,taskKind:"structuredGeneration"});return g?{awardObjectives:bk(g.awardObjectives),specialQualityStandards:bk(g.specialQualityStandards),awardClauses:bk(g.awardClauses),greenBuildingGrade:bj(g.greenBuildingGrade),smartSiteGrade:bj(g.smartSiteGrade),assemblyRate:bj(g.assemblyRate),systematicBenchmarks:bk(g.systematicBenchmarks),frontScheduleClauses:bk(g.frontScheduleClauses).filter(a=>!(0,e.hh)(a.text)),dateFabricationProhibited:!0===g.dateFabricationProhibited,prohibitionNotes:bk(g.prohibitionNotes).filter(a=>!(0,e.hh)(a.text)),extracted:!0,sourceHash:f}:{...d,sourceHash:f}}for(let a of(g.length>0&&i.push(g),i)){let b=await j(a);c=c?function(a,b){let c,d,e,f,g,h;return{...a,awardObjectives:bE(a.awardObjectives,b.awardObjectives),specialQualityStandards:bE(a.specialQualityStandards,b.specialQualityStandards),awardClauses:bE(a.awardClauses,b.awardClauses),greenBuildingGrade:(c=a.greenBuildingGrade,d=b.greenBuildingGrade,c||d),smartSiteGrade:(e=a.smartSiteGrade,f=b.smartSiteGrade,e||f),assemblyRate:(g=a.assemblyRate,h=b.assemblyRate,g||h),systematicBenchmarks:bE(a.systematicBenchmarks,b.systematicBenchmarks),frontScheduleClauses:bE(a.frontScheduleClauses,b.frontScheduleClauses),prohibitionNotes:bE(a.prohibitionNotes,b.prohibitionNotes),dateFabricationProhibited:a.dateFabricationProhibited||b.dateFabricationProhibited,extracted:a.extracted||b.extracted}}(c,b):b}return c||d}let bm=["工程创优奖项申报要求:争创或确保获得市级、省级或国家级优质工程奖,含具体奖项名称","绿色建筑星级等级要求","智慧工地等级要求","装配式建筑装配率要求","特殊质量标准与质量要求条款","扬尘治理六个百分百要求","质量目标必须确保达到合格或优良标准的要求"],bn=/确保|争创|创优|获得.{0,10}[杯奖]|优质工程奖|绿色建筑|星级|智慧工地|装配率|装配式|六个百分百|四节一环保/u,bo={specialQualityStandards:{label:"特殊质量标准",lexical:/特殊质量标准|质量标准和要求的约定|质量要求.{0,12}(?:为|是|满足)/u,hint:"特殊质量标准与质量要求条款(除创优/等级外的实质质量约束)"},frontScheduleClauses:{label:"前附表响应条款",lexical:/计划工期|日历天|缺陷责任期|履约担保|质保金|工期延误|项目经理|技术负责人|分包|转包|付款方式|支付.{0,10}万|[杯奖]|创优|奖项/u,hint:"投标人须知前附表施组响应实质条款(工期/质量/创优奖惩/人员/分包/付款等)"},dateFabricationProhibited:{label:"禁编日期条款",lexical:/开工令|以开工令|不得.{0,12}(?:自定|自行确定|编造)/u,hint:"以开工令为准的禁编日期条款(布尔字段)"},prohibitionNotes:{label:"禁止性要求",lexical:/不得|禁止|严禁|不允许/u,hint:"禁止/不得类条款与零散约束要求"}},bp={awardObjectives:{label:"创优目标",lexical:/创优|争创|确保获得|确保.{0,8}[杯奖]|优质工程奖/u},awardClauses:{label:"奖项条款",lexical:/获得.{0,12}[杯奖]|支付.{0,10}万|不予支付|奖项的约定/u},greenBuildingGrade:{label:"绿色建筑等级",lexical:/绿色建筑.{0,20}(?:等级|星级|标准|要求)|[一二三]星级/u},smartSiteGrade:{label:"智慧工地等级",lexical:/智慧工地.{0,20}(?:等级|要求|基本级|优良级|良好级)/u},assemblyRate:{label:"装配率",lexical:/装配率.{0,20}(?:%|不低于|不少于|为|要求)|装配式.{0,20}装配率/u},systematicBenchmarks:{label:"体系基准",lexical:/六个百分百|四节一环保|文明施工专项费用|围挡出入口.{0,12}冲洗|扬尘.{0,12}(?:冲洗|防治|治理)/u},...bo},bq=["awardObjectives","awardClauses","greenBuildingGrade","smartSiteGrade","assemblyRate","systematicBenchmarks"];function br(a){return bp[a].label}function bs(a){if(!a)return[...bq];let b=[];return 0===a.awardObjectives.length&&b.push("awardObjectives"),0===a.awardClauses.length&&b.push("awardClauses"),a.greenBuildingGrade||b.push("greenBuildingGrade"),a.smartSiteGrade||b.push("smartSiteGrade"),a.assemblyRate||b.push("assemblyRate"),0===a.systematicBenchmarks.length&&b.push("systematicBenchmarks"),b}function bt(a){if(!a)return["awardObjectives","specialQualityStandards","awardClauses","greenBuildingGrade","smartSiteGrade","assemblyRate","systematicBenchmarks","frontScheduleClauses","dateFabricationProhibited","prohibitionNotes"];let b=[];return 0===a.awardObjectives.length&&b.push("awardObjectives"),0===a.specialQualityStandards.length&&b.push("specialQualityStandards"),0===a.awardClauses.length&&b.push("awardClauses"),a.greenBuildingGrade||b.push("greenBuildingGrade"),a.smartSiteGrade||b.push("smartSiteGrade"),a.assemblyRate||b.push("assemblyRate"),0===a.systematicBenchmarks.length&&b.push("systematicBenchmarks"),0===a.frontScheduleClauses.length&&b.push("frontScheduleClauses"),a.dateFabricationProhibited||b.push("dateFabricationProhibited"),0===a.prohibitionNotes.length&&b.push("prohibitionNotes"),b}let bu={awardObjectives:'"awardObjectives": [{ "text": "创优目标原文", "coreTerms": ["核心词"], "source": "来源文件" }]',awardClauses:'"awardClauses": [{ "text": "条款原文", "coreTerms": [], "source": "..." }]',greenBuildingGrade:'"greenBuildingGrade": { "text": "...", "coreTerms": [], "source": "..." }',smartSiteGrade:'"smartSiteGrade": { "text": "...", "coreTerms": [], "source": "..." }',assemblyRate:'"assemblyRate": { "text": "...", "coreTerms": [], "source": "..." }',systematicBenchmarks:'"systematicBenchmarks": [{ "text": "...", "coreTerms": [], "source": "..." }]',specialQualityStandards:'"specialQualityStandards": [{ "text": "...", "coreTerms": [], "source": "..." }]',frontScheduleClauses:'"frontScheduleClauses": [{ "text": "...", "coreTerms": [], "source": "..." }]',dateFabricationProhibited:'"dateFabricationProhibited": true',prohibitionNotes:'"prohibitionNotes": [{ "text": "...", "coreTerms": [], "source": "..." }]'},bv={type:"object",properties:bh.properties};async function bw(a,b,c={}){let d=a,e=bt(d),f=[];for(let a=0;a<2&&e.length>0;a+=1){let a=new Map;for(let c of e){if(f.includes(c))continue;let d=function(a,b){let c=[];for(let d of a){let a=(0,n.wj)(`${d.sectionTitle||""}
@@ -25,10 +25,10 @@ ${a.content||""}`)),c=await (0,be.Mv)(bm,b),d=a.map((a,d)=>({item:a,text:b[d],sc
25
25
  ${a.item.content||""}`),c=`${a.item.filePath}|${a.item.sectionTitle||""}|${b.slice(0,120)}`;e.has(c)||(e.add(c),f.push({...a.item,content:b}))}return f}function bC(a){return bs(a).length>0}function bD(a,b){let c=(a,b)=>a.length>0?a:b;return{...a,awardObjectives:c(a.awardObjectives,b.awardObjectives),specialQualityStandards:c(a.specialQualityStandards,b.specialQualityStandards),awardClauses:c(a.awardClauses,b.awardClauses),greenBuildingGrade:a.greenBuildingGrade||b.greenBuildingGrade,smartSiteGrade:a.smartSiteGrade||b.smartSiteGrade,assemblyRate:a.assemblyRate||b.assemblyRate,systematicBenchmarks:c(a.systematicBenchmarks,b.systematicBenchmarks),frontScheduleClauses:c(a.frontScheduleClauses,b.frontScheduleClauses),prohibitionNotes:c(a.prohibitionNotes,b.prohibitionNotes),dateFabricationProhibited:a.dateFabricationProhibited||b.dateFabricationProhibited,extracted:a.extracted||b.extracted}}function bE(a,b){let c=new Set,d=[];for(let e of[...a,...b])c.has(e.text)||(c.add(e.text),d.push(e));return d}function bF(a){return!!a&&(a.awardObjectives.length>0||a.specialQualityStandards.length>0||a.awardClauses.length>0||!!a.greenBuildingGrade||!!a.smartSiteGrade||!!a.assemblyRate||a.systematicBenchmarks.length>0||a.frontScheduleClauses.length>0||a.dateFabricationProhibited||a.prohibitionNotes.length>0)}function bG(a){let b=p.join(process.env.HOME||process.cwd(),".customize-agent","cache","document-workflow",(0,e.c6)(a||"default"));return o.mkdirSync(b,{recursive:!0}),b}function bH(a){return a.map(a=>({filePath:a.filePath||"",sectionTitle:a.sectionTitle||"",contentHash:(0,e.c6)(a.content||"")})).sort((a,b)=>`${a.filePath}|${a.sectionTitle}`.localeCompare(`${b.filePath}|${b.sectionTitle}`))}function bI(a){return a.coreTerms.length>0?a.coreTerms.join(" "):a.text}function bJ(a){if(!a)return[];let b=[];for(let c of a.awardObjectives)b.push({kind:"创优目标",item:c});for(let c of a.specialQualityStandards)b.push({kind:"特殊质量标准",item:c});for(let c of a.awardClauses)b.push({kind:"奖项条款",item:c});for(let c of a.systematicBenchmarks)b.push({kind:"体系基准要求",item:c});for(let c of a.frontScheduleClauses)b.push({kind:"前附表响应条款",item:c});return a.greenBuildingGrade&&b.push({kind:"绿色建筑等级",item:a.greenBuildingGrade}),a.smartSiteGrade&&b.push({kind:"智慧工地等级",item:a.smartSiteGrade}),a.assemblyRate&&b.push({kind:"装配率要求",item:a.assemblyRate}),b}let bK={type:"object",required:["results"],properties:{results:{type:"array",required:!0,minItems:1,items:{type:"object",required:!0,properties:{index:{type:"number",required:!0},responsive:{type:"boolean",required:!0}}}}}},bL=new Map;async function bM(a,b={}){let c=a.map(a=>({kind:a.kind,text:a.text.trim()})).filter(a=>a.text.length>0);if(0===c.length)return new Map;let d=c.map(a=>`${a.kind}\u0001${a.text}`).join("\x02"),f=bL.get(d);if(void 0!==f)return f;let g=new Set;c.forEach((a,b)=>{((0,e.hh)(a.text)||(0,bf.dn)(a.text))&&g.add(b)});let h=await (0,aA.bb)([(0,bc.y4)("你是招标文件要求项程序性/实质性分类器。"),"对每个要求项判定其是否属于施工组织设计正文必须响应的实质要求:\n- 实质要求(responsive=true):创优目标与奖项、质量/工期/安全/环保目标、绿色建筑/智慧工地/装配式等级、扬尘治理、四节一环保、人员与分包要求、付款履约约束等施组需写入或遵守的条款\n- 程序性条款(responsive=false):开标时间地点、保证金账户、投标文件递交/解密方式、评标委员会组成、投标有效期等纯投标程序信息\n只输出 JSON,不得输出其他内容。"].join("\n"),c.map((a,b)=>`${b+1}. [${a.kind}] ${a.text}`).join("\n"),{maxTokens:2e3,temperature:0,signal:b.signal,diagnostics:b.diagnostics,schema:bK,taskKind:"structuredGeneration"});if(!h?.results?.length)return new Map(c.map((a,b)=>[b,!g.has(b)]));let i=new Map;for(let a of h.results)"number"==typeof a.index&&i.set(a.index,!1!==a.responsive);let j=new Map(c.map((a,b)=>[b,!g.has(b)&&(i.get(b)??!0)]));return bL.size>=32&&bL.clear(),bL.set(d,j),j}let bN={type:"object",required:["results"],properties:{results:{type:"array",required:!0,minItems:1,items:{type:"object",required:!0,properties:{index:{type:"number",required:!0},alternative:{type:"boolean",required:!0}}}}}};async function bO(a,b={}){let c=a.filter(a=>a.text.trim());if(0===c.length)return new Map;let d=await (0,aA.bb)([(0,bc.y4)("你是招标要求条款锚点关系判定器。"),'对每条条款判定其锚点之间的关系:\n- alternative=true:条款锚点为"或/及/任选其一"关系(如"省级或国家级奖项""A、B、C任选"),满足任一锚点即算完整响应\n- alternative=false:条款锚点必须全部满足(并列承诺、金额与奖项共存条款),缺任一锚点即部分响应\n只输出 JSON,不得输出其他内容。'].join("\n"),c.map((a,b)=>`${b+1}. 条款:${a.text}
26
26
  未命中锚点:${a.missingAnchors.join("、")||"(无)"}`).join("\n"),{maxTokens:1e3,temperature:0,signal:b.signal,diagnostics:b.diagnostics,schema:bN,taskKind:"structuredGeneration"});if(!d?.results?.length)return new Map(c.map((a,b)=>[b,!1]));let e=new Map;for(let a of d.results)"number"==typeof a.index&&e.set(a.index,!0===a.alternative);return new Map(c.map((a,b)=>[b,e.get(b)??!1]))}function bP(a){let b=a;for(;;){let a=b.replace(/^(?:争创|争取|力争|争获|确保|获得|创建|力创|评为|荣获|标为|目标为|承诺|为)/u,"");if(a===b||!a)break;b=a}return b}function bQ(a,b,c){let d=a.text.replace(/\s+/gu,""),e=new Set;for(let b of a.coreTerms){let a=b.replace(/\s+/gu,"");a.length>=2&&e.add(a)}if(!c?.skipNumericAnchors)for(let a of d.matchAll(/(?:\d+(?:\.\d+)?\s*(?:%|%|天|日|万元|亿元|元|米|m|M|mm|毫米|层|年|个|月|周|小时|分钟|项|处|台|套|辆|人|家|次|遍|道|吨|kPa|MPa))/giu))e.add(a[0].replace(/\s+/gu,""));for(let a of d.matchAll(/[\u4e00-\u9fa5]{2,6}[杯奖星]/gu)){let b=bP(a[0]);/^[\u4e00-\u9fa5]{2,7}$/u.test(b)&&e.add(b)}let f=[],g=[];for(let a of e)(b.includes(a)?f:g).push(a);return{total:e.size,hit:f,missing:g}}async function bR(a,b,c){let d=[],e=bJ(b);if(0===e.length)return d;let f=a.replace(/\s+/gu,""),g=[/100%围挡|周边100%围挡/u,/物料堆放100%覆盖|物料堆放.{0,8}覆盖|密目网.*覆盖|覆盖.{0,4}密目网/u,/出入车辆100%冲洗|车辆.{0,10}冲洗|冲洗.{0,10}车辆|冲洗点/u,/施工现场地面100%硬化|地面100%硬化/u,/拆迁工地100%湿法作业|拆迁.{0,10}湿法作业|湿法作业.{0,10}拆迁|无拆迁|不涉及拆迁/u,/渣土车辆100%密闭运输|密闭运输|密闭式/u],h=()=>g.filter(b=>b.test(a)).length,i=a.split(/\n/u).filter(a=>/^#{2,4}\s/u.test(a.trim())).map(a=>bS(a)).filter(Boolean).slice(0,80),j=await bM(e.map(a=>({kind:a.kind,text:a.item.text})),{signal:c.signal,diagnostics:c.diagnostics}),k=c.bodyTexts&&c.bodyTexts.length>0?[...i,...c.bodyTexts]:i,l=[];for(let[a,{kind:b,item:g}]of e.entries()){if(!1===j.get(a)||"体系基准要求"===b&&/六个百分百|扬尘治理/u.test(g.text)&&h()>=4)continue;let e=bI(g),i=0;for(let a of k){let b=c.semanticSimilarity(e,a);b>i&&(i=b)}if(i>=.6){if(!bY(g.text)){let a=new Set;for(let b of g.text.matchAll(/(?:\d+(?:\.\d+)?\s*(?:万元|亿元|元))/giu))a.add(b[0].replace(/\s+/gu,""));if(a.size>0&&[...a].filter(a=>!f.includes(a)).length>0){let a=bQ(g,f);l.push({item:g,kind:b,bestSimilarity:i,hit:a.hit,missing:a.missing})}}continue}let m=bQ(g,f,{skipNumericAnchors:bY(g.text)});if(!(m.total>0)||0!==m.missing.length){if(m.hit.length>0){l.push({item:g,kind:b,bestSimilarity:i,hit:m.hit,missing:m.missing});continue}d.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:`评分项要求未响应:${b}“${g.text}”在正文中零命中(最佳语义相似度 ${i.toFixed(2)})`,suggestion:`招标文件明确要求的${b}必须显性响应:在对应章节补写“${g.text}”及配套保证措施。`})}}if(l.length>0){let a=await bO(l.map(a=>({text:a.item.text,missingAnchors:a.missing})),{signal:c.signal,diagnostics:c.diagnostics});for(let[b,c]of l.entries())a.get(b)||d.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:`评分项要求部分响应:${c.kind}“${c.item.text}”已命中“${c.hit.join("、")}”,但缺少“${c.missing.join("、")}”(最佳语义相似度 ${c.bestSimilarity.toFixed(2)})`,suggestion:`条款内全部关键数据与奖项必须逐项显性响应:在对应章节补写“${c.missing.join("、")}”对应内容(缺一即部分响应)。`})}if(b){let a=[...b.awardObjectives,...b.awardClauses].map(a=>a.text);if(a.length>0){let b=new Set;for(let a of f.matchAll(/[杯奖]/gu)){let c=f[(a.index||0)+1];if("奖"===a[0]&&void 0!==c&&/[励金惩罚项]/u.test(c))continue;let d=(a.index||0)+1,e=f.slice(Math.max(0,d-13),d-1),g=e.match(/(?:(|\(|\u201c)([\u4e00-\u9fa5]{2,6})$/u),h=g?g[1]:e.match(/[\u4e00-\u9fa5]{2,6}$/u)?.[0];if(!h)continue;let i=bP(h)+a[0];/^[\u4e00-\u9fa5]{2,7}$/u.test(i)&&b.add(i)}for(let c of b)!/优质工程|优良工程|样板工程|示范工程|文明工地|标准化工地/u.test(c)&&(a.some(a=>a.includes(c))||d.unshift({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:`奖项名称疑似杜撰/替换:正文出现“${c}”,不在招标文件奖项要求原文中(招标文件要求:${a.map(a=>a.slice(0,60)).join(";")})`,suggestion:`奖项名称必须与招标文件原文逐字一致:把正文“${c}”改为招标文件原文奖项名称,禁止替换、降级或省略;招标文件“确保/达到”类要求不得弱化为“争创/争取”。`}));if(a.some(a=>/确保|必须|须/u.test(a)))for(let c of b)a.some(a=>a.includes(c))&&RegExp(`(?:争创|争取|力争|争获)${c}`).test(f)&&d.unshift({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:`奖项承诺强度弱化:“${c}”前使用了争取类措辞(争创/争取/力争),招标文件要求为“确保/必须”级别`,suggestion:`招标文件“确保/达到”类等级要求不得弱化为“争创/争取”:把正文争取类措辞改为“确保${c}”并配套创优保证措施。`})}}return d.slice(0,8)}function bS(a){return a.trim().replace(/^#{2,4}\s+/u,"").replace(/^\d+(?:\.\d+)*[\s、.]+/u,"").trim()}async function bT(a,b,c,d={}){let e=[];if(!a)return e;let f=b.map(a=>bS(a.title)).filter(Boolean);if(0===f.length)return e;let g=bJ(a),h=await bM(g.map(a=>({kind:a.kind,text:a.item.text})),{signal:d.signal,diagnostics:d.diagnostics});for(let[a,{kind:b,item:d}]of g.entries()){if(!1===h.get(a))continue;let g=bI(d),i="",j=0;for(let a of f){let b=c(g,a);b>j&&(j=b,i=a)}j>=.45&&e.push({kind:b,item:d,chapterTitle:i,score:j})}return e}function bU(a){if(!a)return[];let b=[];a.extracted&&b.push(`已从绑定资料结构化提取评分项要求(哈希 ${a.sourceHash?.slice(0,8)})`),a.awardObjectives.length&&b.push(`创优目标 ${a.awardObjectives.length} 条:${a.awardObjectives.map(a=>a.text).join("、")}`),a.specialQualityStandards.length&&b.push(`特殊质量标准 ${a.specialQualityStandards.length} 条`),a.awardClauses.length&&b.push(`奖项条款 ${a.awardClauses.length} 条`),a.greenBuildingGrade&&b.push(`绿色建筑等级:${a.greenBuildingGrade.text}`),a.smartSiteGrade&&b.push(`智慧工地等级:${a.smartSiteGrade.text}`),a.assemblyRate&&b.push(`装配率:${a.assemblyRate.text}`),a.systematicBenchmarks.length&&b.push(`体系基准 ${a.systematicBenchmarks.length} 条:${a.systematicBenchmarks.map(a=>a.text).join("、")}`);let c=a.frontScheduleClauses.filter(a=>!(0,bf.dn)(a.text));return c.length&&b.push(`前附表响应条款 ${c.length} 条:${c.map(a=>a.text).slice(0,8).join("、")}`),a.dateFabricationProhibited&&b.push("禁编日期:以开工令为准"),a.extracted||b.push("评分项要求未提取(无绑定资料或模型不可用),零响应检测跳过"),b}let bV=/暂列金额|暂估价|报价明细|综合单价|清单合价|预留金|投标报价|综合税率|增值税|税率/u,bW=/预付款|支付担保|履约保证金|工程款担保/u,bX=/履约保证金|保证金账户|中标金额|进度款|工程款|付款|结清|结算|违约金|贷款市场报价利率|LPR|最高投标限价|工程结算价款|预付款|支付担保|保函/u;function bY(a){return bX.test(a)}async function bZ(a){let{chapters:b,model:c,similarity:d}=a,e=bJ(c);if(0===e.length)return{fixedCount:0,details:[]};let f=await bT(c,b,d,{signal:a.signal,diagnostics:a.diagnostics});if(0===f.length&&0===b.length)return{fixedCount:0,details:[]};let g=new Map(f.map(a=>[a.item,a])),h=bS(b[0]?.title||""),i=b.map(a=>a.content).join("\n").replace(/\s+/gu,""),j=0,k=[];for(let{kind:a,item:c}of e){var l;let d=g.get(c);if(!d&&h&&(d={kind:a,item:c,chapterTitle:h,score:0}),!d||bV.test(c.text)&&!bW.test(c.text))continue;let e=bQ(c,i,{skipNumericAnchors:bY(c.text)});if(e.total>0&&0===e.missing.length)continue;let f=b.find(a=>bS(a.title)===d.chapterTitle);if(!f)continue;let m=/(?:要求|等级|标准)[::]\s*无\s*$/u.test(c.text.trim()),n=bY(c.text)?`按招标文件约定:${l=c.text,/违约金|贷款市场报价利率|LPR/u.test(l)?"本工程工期延误违约金按招标文件约定条款执行,进度计划与纠偏措施见工期章节。":/保证金/u.test(l)?"本工程履约保证金按招标文件约定的金额、提交期限与退还时限执行,可按约定以保函形式替代。":/预付款/u.test(l)?"本工程预付款的支付、扣回与使用按招标文件约定执行,专款用于施工准备。":/支付担保/u.test(l)?"本工程发包人工程款支付担保按招标文件约定执行,担保办结后我方按约组织进场施工。":/扬尘/u.test(l)?"本工程扬尘污染防治费用与建筑工人实名制管理费用按招标文件约定列入费用计划并专款专用。":/结清|结算|付款|进度款|工程款/u.test(l)?"本工程进度款、竣工结算款与最终结清款的支付审批时限按招标文件约定执行。":/最高投标限价/u.test(l)?"本工程相关费用按招标文件约定列入计划并专款专用。":"本工程相关商务条款按招标文件约定执行。"}`:m?`按招标文件要求:${c.text},本项无强制要求,施工按现行国家及地方相关标准执行。`:`按招标文件要求:${c.text}。${b$(c.text)}`;f.content=`${f.content.replace(/\s+$/u,"")}
27
27
 
28
- ${n}`,i+=n.replace(/\s+/gu,""),j+=1,k.push(`${a}“${c.text.slice(0,28)}${c.text.length>28?"…":""}” → ${d.chapterTitle}${0===d.score?"(兜底路由)":""}`)}return{fixedCount:j,details:k.slice(0,6)}}function b$(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"本工程绿化养护执行招标文件约定的养护等级与养护期,养护期内按养护方案落实浇水、修剪、施肥、除虫等作业并留存养护记录。";let b=/^([^::]{2,24})[::]/u.exec(a)?.[1];return b&&!/承包人|发包人|招标人/u.test(b)?`本工程${b}按上述条款执行,具体安排见对应章节。`:"本施工组织设计已按上述条款要求逐项落实执行。"}let b_=[{key:"table-line-residue",stage5:!0,round2:!0,fix:a=>{let b=(0,ao.br)(a);return{markdown:b.markdown,fixedCount:b.fixedCount}}},{key:"repeated-words",stage5:!0,round2:!0,fix:a=>{let b=(0,ao.Vw)(a);return{markdown:b,fixedCount:+(b!==a)}}},{key:"duplicate-tables",stage5:!1,round2:!0,fix:a=>{let b=(0,ao.lR)(a);return{markdown:b.markdown,fixedCount:b.removedCount}}},{key:"finish-thickness",stage5:!0,round2:!0,fix:a=>{let b=(0,ao.JF)(a);return{markdown:b.markdown,fixedCount:b.fixedCount}}},{key:"labor-peak",stage5:!0,round2:!0,fix:(a,b)=>{let c=(0,ao.BR)(a,b.laborPeakAuthority);return{markdown:c.markdown,fixedCount:c.fixedCount}}},{key:"internal-table-row-dup",stage5:!0,round2:!0,fix:a=>{let b=(0,ao.QM)(a);return{markdown:b.markdown,fixedCount:b.removedCount}}},{key:"greening-maintenance",stage5:!0,round2:!0,fix:(a,b)=>{let c=(0,ao.mG)(a,b.greeningMaintenanceAuthority);return{markdown:c.markdown,fixedCount:c.fixedCount}}},{key:"paragraph-opening-repeat",stage5:!0,round2:!0,fix:a=>{let b=(0,ao.Qc)(a);return{markdown:b.markdown,fixedCount:b.fixedCount}}},{key:"truncated-sentence",stage5:!0,round2:!0,fix:a=>{let b=(0,ao.Y4)(a);return{markdown:b.markdown,fixedCount:b.fixedCount}}},{key:"table-borne-prose",stage5:!1,round2:!0,fix:a=>{let b=(0,ao.hX)(a);return{markdown:b.markdown,fixedCount:b.fixedCount}}},{key:"meta-discourse",stage5:!0,round2:!0,fix:a=>{let b=(0,ao.Fd)(a);return{markdown:b.markdown,fixedCount:b.fixedCount}}},{key:"formula-residue",stage5:!0,round2:!0,fix:a=>{let b=(0,ao.EJ)(a);return{markdown:b.markdown,fixedCount:b.fixedCount}}},{key:"self-undermining",stage5:!0,round2:!0,fix:a=>{let b=(0,ao.ir)(a);return{markdown:b.markdown,fixedCount:b.fixedCount}}},{key:"empty-scoring-response",stage5:!0,round2:!0,fix:a=>{let b=function(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=b$(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}}(a);return{markdown:b.markdown,fixedCount:b.fixedCount}}},{key:"atlas-reference",stage5:!0,round2:!1,fix:a=>{let b=(0,M.Fc)(a);return{markdown:b.markdown,fixedCount:b.fixedCount}}},{key:"tertiary-h4-dedupe",stage5:!1,round2:!0,fix:a=>(0,bc.pV)(a)},{key:"internal-term-heading",stage5:!1,round2:!0,fix:a=>(0,bd.fc)(a)}],b0=[{id:"table-line-residue",kind:"deterministic",anchoredTo:"table-quality",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:"labor-peak",kind:"deterministic",anchoredTo:"resource-consistency",authorities:["laborPeak"],giveUpOnFailure:!0},{id:"internal-table-row-dup",kind:"deterministic",anchoredTo:"table-spam",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:"truncated-sentence",kind:"deterministic",anchoredTo:"truncated-sentence",giveUpOnFailure:!0},{id:"table-borne-prose",kind:"deterministic",anchoredTo:"major-content-governance",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:"empty-scoring-response",kind:"deterministic",anchoredTo:"requirements-coverage",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}],b1=["source-enumeration","internal-terminology-anchor","fabricated-start-date","repeated-word","writer-missing-section","meta-discourse-declaration","formula-residue","finish-thickness","formal-placeholder","truncated-sentence"],b2=[{id:"fact-landing",kind:"llm-patch",anchoredTo:"important-unplaced-facts",patchGuard:{detectors:[...b1]},giveUpOnFailure:!0},{id:"table-repair",kind:"llm-patch",anchoredTo:"table-quality",patchGuard:{detectors:[...b1]},giveUpOnFailure:!0},{id:"table-execution-repair",kind:"llm-patch",anchoredTo:"table-plan-execution",patchGuard:{detectors:[...b1]},giveUpOnFailure:!0},{id:"templating-repair",kind:"llm-patch",anchoredTo:"templating-filler",patchGuard:{detectors:[...b1]},giveUpOnFailure:!0},{id:"workpackage-skeleton-repair",kind:"llm-patch",anchoredTo:"workpackage-skeleton",patchGuard:{detectors:[...b1]},giveUpOnFailure:!0},{id:"planned-section-repair",kind:"llm-patch",anchoredTo:"planned-section-completeness",patchGuard:{detectors:[...b1]},giveUpOnFailure:!0},{id:"global-consistency-repair",kind:"llm-patch",anchoredTo:"global-consistency-review",patchGuard:{detectors:[...b1]},giveUpOnFailure:!0},{id:"qingtian-review-repair",kind:"llm-patch",anchoredTo:"qingtian-review",patchGuard:{detectors:[...b1]},giveUpOnFailure:!0}],b3=new Set;function b4(a,b){return b3.add(a),b()}let b5=[{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:"construction-org-professional-audit",scope:"chapter",category:"professional_chain"},{id:"toc-consistency",scope:"full-document",category:"structure",deterministicSafe:!0},{id:"heading-duplicate",scope:"full-document",category:"structure",deterministicSafe:!0},{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:"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:"foundation-form-residue",scope:"full-document",category:"fact_consistency"},{id:"ambiguous-either-or",scope:"full-document",category:"fact_consistency"},{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:"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:"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:"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:"qingtian-review",scope:"full-document",category:"qingtian_review"},{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}];function b6(a){return b5.find(b=>b.id===a)}var b7=c(73186),b8=c(80439);async function b9(a){var b;let c=(0,b7.Su)(a.chapterDrafts.flatMap(a=>a.evidence||[]),a.projectMaterialScope);(0,b7.U2)(c,a.projectMaterialScope,"finalize:chapter-evidence"),c.length>0&&(a.allEvidence.push(...c),a.allEvidence.splice(0,a.allEvidence.length,...(0,g.QR)(a.allEvidence,{preservePinned:!0})));let d=(0,b7.Su)(a.allEvidence,a.projectMaterialScope);a.allEvidence.splice(0,a.allEvidence.length,...d),(0,b7.U2)(a.allEvidence,a.projectMaterialScope,"finalize:all-evidence"),(0,e.Te)(a.signal);let f=(0,g.QR)(a.allEvidence,{preservePinned:!0});a.allEvidence.splice(0,a.allEvidence.length,...(0,b7.Su)(f,a.projectMaterialScope)),(0,b7.U2)(a.allEvidence,a.projectMaterialScope,"finalize:post-file-understanding"),a.facts=(0,n.B2)(a.template,a.allEvidence,a.documentSpec);let{localFacts:h,projectBasicFacts:i,preciseFacts:j,structuredTables:k}=(0,n.d6)({evidence:a.allEvidence,template:a.template,spec:a.documentSpec,profile:a.domainProfile,scope:a.projectMaterialScope,diagnostics:a.generationDiagnostics}),l=[...h,...i,...j],m={facts:[],stages:[{type:"fact_extraction",roleId:"llm-json",status:"skipped",message:"已有本地/资料事实覆盖主要必需字段,跳过 LLM 全量事实抽取"}]};if((0,n.N2)(l,a.template,a.documentSpec)){let b=(0,g.QR)(a.allEvidence,{preservePinned:!0});try{m=await (0,n.OQ)(b,a.factExtractionPromptTexts,a.template,a.documentSpec,a.signal,a.generationDiagnostics)}catch(b){if(a.signal?.aborted)throw b;console.error("[gen] fact extraction failed:",b)}}for(let b of m.stages)(0,b8.fx)(a.progressStages,b);let o=A(a.allEvidence);for(let c of(a.structuredFacts=(0,b7.am)((b=[...h,...i,...j,...m.facts,...o],a.allEvidence,b.filter(a=>!!a.sourceFile)),a.projectMaterialScope),a.governedStructuredFacts=K(a.structuredFacts,a.scopeConflicts??H(a.structuredFacts)),a.governedStructuredFacts))a.facts[c.key]=`${(0,e.lG)(c.value)}(来源:${c.sourceFile},角色:${c.roleId})`;a.factsModel=await (0,n.d7)(a.governedStructuredFacts,k,a.missingItems,a.documentSpec,a.domainProfile);let p=L({facts:a.governedStructuredFacts,projectRoot:a.projectRoot,requirement:a.requirement||"",templateId:a.template.id});a.factsModel.canonical=p,a.scheduleAuthority=(0,ao.GG)(a.factsModel),a.assemblyRateAuthority=(0,ao.hI)(a.factsModel),a.scaleSummary=(0,ao.Pt)(a.factsModel),a.supportAuthority=(0,ao.P3)(a.factsModel),a.decisionLockEntries=aU({facts:[...h,...i,...j],evidence:a.allEvidence})}function ca(a){return/--|延期到|资料|附件|扫描|目录|汇总|打包|备份|\d{1,2}\.\d{1,2}/u.test(a)}function cb(a){return a.replace(/[((]\d+[))]/gu,"").replace(/副本|最终版|扫描件|定稿/gu,"").replace(/[\s,。,.;;::《》“”‘’()()_-]+/gu,"").toLowerCase()}function cc(a,b){let c=cb(b);if(!c||c.length<4)return!0;let d=cb(a);return!!d.includes(c)||c.length>=12&&d.includes(c.slice(0,Math.max(8,Math.floor(.72*c.length))))}var cd=c(73859);function ce(a){return a.replace(/[((]\d+[))]/gu,"").replace(/副本|最终版|扫描件|定稿/gu,"").replace(/\s+/gu,"").replace(/[,。,.;;::《》“”‘’()()_-]/gu,"").toLowerCase()}function cf(a,b){let c=a.trim();if((0,cd.d2)(b,c)||(0,cd.rF)(b,c)||/签章|盖章|联系人|联系电话|电话|邮箱|解密|开标|评标|保证金|交易系统|空白|填写|上传|下载|递交|投标文件制作|电子服务系统|交易平台/u.test(c)||/\|/u.test(c)||/^#+\s*/u.test(c)||/见(?:招标公告|投标人须知|前附表|本项目|补疑)|资料参数行摘要|公共资源交易监督管理|开评标程序|监管部门|招标代理机构|监督管理部门|行政监督部门/u.test(c)||/是否|符合|采购范围|规定的投标截止时间|电子交易系统|投标人须知|招标文件正文/u.test(c)&&/\d{3,}/u.test(c)||/项目名称|工程名称/u.test(c)&&/项目编号|工程概况|建筑面积|本项目分为|现状建筑物|改造工程|标段/u.test(c)||/项目编号[::]|工程概况[::]|本项目分为|现状建筑物|总建筑面积|本次改造工程|清单编制说明/u.test(c))return"";let d=/\d+(?:\.\d+)?\s*(?:日历天|天|个月|月)/u.exec(c)?.[0],e=ce(d&&/工期|总工期|合同工期|计划工期|施工周期/u.test(c)?d:c);return!e||e.length>80?"":e}var cg=c(23760),ch=c(40693),ci=c(1358),cj=c(11248);function ck(a){return(0,cj.K3)(`${a.fieldName||a.key} ${(0,e.lG)(a.value)}`)}function cl(a){return[...a.project,...a.schedule,...a.quality,...a.safety,...a.resources,...a.preciseFacts,...a.bills,...a.drawings,...a.rules,...a.specifications].map(ck).join("\n")}function cm(a,b){let c=[{label:"工期",corpus:cl({...b,project:[],quality:[],safety:[],resources:[],preciseFacts:[],bills:[],drawings:[],rules:[],specifications:[]}),required:/工期|日历天|合同工期|计划工期/u},{label:"质量",corpus:cl({...b,project:[],schedule:[],safety:[],resources:[],preciseFacts:[],bills:[],drawings:[],rules:[],specifications:[]}),required:/质量目标|质量标准|验收|复验/u},{label:"安全",corpus:cl({...b,project:[],schedule:[],quality:[],resources:[],preciseFacts:[],bills:[],drawings:[],rules:[],specifications:[]}),required:/安全|文明|风险|应急/u},{label:"资源",corpus:cl({...b,project:[],schedule:[],quality:[],safety:[],preciseFacts:[],bills:[],drawings:[],rules:[],specifications:[]}),required:/资源|材料|设备|劳动力/u},{label:"工程量",corpus:cl({...b,project:[],schedule:[],quality:[],safety:[],resources:[],preciseFacts:[],drawings:[],rules:[],specifications:[]}),required:/工程量|清单|建筑面积|长度|吨|台|套|项/u}],d=(0,cj.K3)(a.replace(/\s+/gu,"")),e=[];for(let b of c)b.required.test(a)&&0===[...new Set(b.corpus.split("\n").map(a=>a.replace(/\s+/gu,"").slice(0,24)).filter(Boolean))].filter(a=>a.length>=6&&d.includes(a)).length&&e.push({level:"warning",message:`证据使用覆盖率偏低:正文中未明显使用${b.label}相关事实`,suggestion:`请在相应章节中引用至少一项${b.label}事实,避免只写通用表述。`});return e}async function cn(a,b){let c=a.split(/\n\s*\n/gu).map(a=>a.trim()).filter(Boolean),d=/(?:加强组织领导|严格执行规范|落实责任制度|确保工程质量|强化过程管理|提高思想认识|完善管理体系|形成闭环管理|统筹推进|全面落实)/gu,e=[];for(let a of c){if(120>(0,h.V7)(a)||(a.match(d)||[]).length<2)continue;let c=await b.analyze(a);c&&(c.concrete||e.push({level:"warning",message:`段落存在空泛表述:${a.slice(0,48)}...`,suggestion:"请补充该段对应的对象、动作、控制点或验收闭环,避免只保留管理性套话。"}))}return e}function co(a,b){let c=[];if(!b)return c;let d=a.map(a=>`${a.title}
28
+ ${n}`,i+=n.replace(/\s+/gu,""),j+=1,k.push(`${a}“${c.text.slice(0,28)}${c.text.length>28?"…":""}” → ${d.chapterTitle}${0===d.score?"(兜底路由)":""}`)}return{fixedCount:j,details:k.slice(0,6)}}function b$(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"本工程绿化养护执行招标文件约定的养护等级与养护期,养护期内按养护方案落实浇水、修剪、施肥、除虫等作业并留存养护记录。";let b=/^([^::]{2,24})[::]/u.exec(a)?.[1];return b&&!/承包人|发包人|招标人/u.test(b)?`本工程${b}按上述条款执行,具体安排见对应章节。`:"本施工组织设计已按上述条款要求逐项落实执行。"}let b_=[{key:"table-line-residue",stage5:!0,round2:!0,fix:a=>{let b=(0,ao.br)(a);return{markdown:b.markdown,fixedCount:b.fixedCount}}},{key:"repeated-words",stage5:!0,round2:!0,fix:a=>{let b=(0,ao.Vw)(a);return{markdown:b,fixedCount:+(b!==a)}}},{key:"duplicate-tables",stage5:!1,round2:!0,fix:a=>{let b=(0,ao.lR)(a);return{markdown:b.markdown,fixedCount:b.removedCount}}},{key:"finish-thickness",stage5:!0,round2:!0,fix:a=>{let b=(0,ao.JF)(a);return{markdown:b.markdown,fixedCount:b.fixedCount}}},{key:"labor-peak",stage5:!0,round2:!0,fix:(a,b)=>{let c=(0,ao.BR)(a,b.laborPeakAuthority);return{markdown:c.markdown,fixedCount:c.fixedCount}}},{key:"internal-table-row-dup",stage5:!0,round2:!0,fix:a=>{let b=(0,ao.QM)(a);return{markdown:b.markdown,fixedCount:b.removedCount}}},{key:"greening-maintenance",stage5:!0,round2:!0,fix:(a,b)=>{let c=(0,ao.mG)(a,b.greeningMaintenanceAuthority);return{markdown:c.markdown,fixedCount:c.fixedCount}}},{key:"paragraph-opening-repeat",stage5:!0,round2:!0,fix:a=>{let b=(0,ao.Qc)(a);return{markdown:b.markdown,fixedCount:b.fixedCount}}},{key:"paragraph-tail-repeat",stage5:!0,round2:!0,fix:a=>{let b=(0,ao.kp)(a);return{markdown:b.markdown,fixedCount:b.fixedCount}}},{key:"collision-numbered-heading",stage5:!0,round2:!0,fix:a=>{let b=(0,ao.fK)(a);return{markdown:b.markdown,fixedCount:b.fixedCount}}},{key:"inverted-date-range",stage5:!0,round2:!0,fix:a=>{let b=(0,ao.r_)(a);return{markdown:b.markdown,fixedCount:b.fixedCount}}},{key:"truncated-sentence",stage5:!0,round2:!0,fix:a=>{let b=(0,ao.Y4)(a);return{markdown:b.markdown,fixedCount:b.fixedCount}}},{key:"table-borne-prose",stage5:!1,round2:!0,fix:a=>{let b=(0,ao.hX)(a);return{markdown:b.markdown,fixedCount:b.fixedCount}}},{key:"meta-discourse",stage5:!0,round2:!0,fix:a=>{let b=(0,ao.Fd)(a);return{markdown:b.markdown,fixedCount:b.fixedCount}}},{key:"formula-residue",stage5:!0,round2:!0,fix:a=>{let b=(0,ao.EJ)(a);return{markdown:b.markdown,fixedCount:b.fixedCount}}},{key:"self-undermining",stage5:!0,round2:!0,fix:a=>{let b=(0,ao.ir)(a);return{markdown:b.markdown,fixedCount:b.fixedCount}}},{key:"empty-scoring-response",stage5:!0,round2:!0,fix:a=>{let b=function(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=b$(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}}(a);return{markdown:b.markdown,fixedCount:b.fixedCount}}},{key:"atlas-reference",stage5:!0,round2:!1,fix:a=>{let b=(0,M.Fc)(a);return{markdown:b.markdown,fixedCount:b.fixedCount}}},{key:"tertiary-h4-dedupe",stage5:!1,round2:!0,fix:a=>(0,bc.pV)(a)},{key:"internal-term-heading",stage5:!1,round2:!0,fix:a=>(0,bd.fc)(a)}],b0=[{id:"table-line-residue",kind:"deterministic",anchoredTo:"table-quality",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:"labor-peak",kind:"deterministic",anchoredTo:"resource-consistency",authorities:["laborPeak"],giveUpOnFailure:!0},{id:"internal-table-row-dup",kind:"deterministic",anchoredTo:"table-spam",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:"inverted-date-range",kind:"deterministic",anchoredTo:"inverted-date-range",giveUpOnFailure:!0},{id:"truncated-sentence",kind:"deterministic",anchoredTo:"truncated-sentence",giveUpOnFailure:!0},{id:"table-borne-prose",kind:"deterministic",anchoredTo:"major-content-governance",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:"empty-scoring-response",kind:"deterministic",anchoredTo:"requirements-coverage",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}],b1=["source-enumeration","internal-terminology-anchor","fabricated-start-date","repeated-word","writer-missing-section","meta-discourse-declaration","formula-residue","finish-thickness","formal-placeholder","truncated-sentence"],b2=[{id:"fact-landing",kind:"llm-patch",anchoredTo:"important-unplaced-facts",patchGuard:{detectors:[...b1]},giveUpOnFailure:!0},{id:"table-repair",kind:"llm-patch",anchoredTo:"table-quality",patchGuard:{detectors:[...b1]},giveUpOnFailure:!0},{id:"table-execution-repair",kind:"llm-patch",anchoredTo:"table-plan-execution",patchGuard:{detectors:[...b1]},giveUpOnFailure:!0},{id:"templating-repair",kind:"llm-patch",anchoredTo:"templating-filler",patchGuard:{detectors:[...b1]},giveUpOnFailure:!0},{id:"workpackage-skeleton-repair",kind:"llm-patch",anchoredTo:"workpackage-skeleton",patchGuard:{detectors:[...b1]},giveUpOnFailure:!0},{id:"planned-section-repair",kind:"llm-patch",anchoredTo:"planned-section-completeness",patchGuard:{detectors:[...b1]},giveUpOnFailure:!0},{id:"global-consistency-repair",kind:"llm-patch",anchoredTo:"global-consistency-review",patchGuard:{detectors:[...b1]},giveUpOnFailure:!0},{id:"qingtian-review-repair",kind:"llm-patch",anchoredTo:"qingtian-review",patchGuard:{detectors:[...b1]},giveUpOnFailure:!0}],b3=new Set;function b4(a,b){return b3.add(a),b()}let b5=[{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:"construction-org-professional-audit",scope:"chapter",category:"professional_chain"},{id:"toc-consistency",scope:"full-document",category:"structure",deterministicSafe:!0},{id:"heading-duplicate",scope:"full-document",category:"structure",deterministicSafe:!0},{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:"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:"foundation-form-residue",scope:"full-document",category:"fact_consistency"},{id:"ambiguous-either-or",scope:"full-document",category:"fact_consistency"},{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:"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:"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:"qingtian-review",scope:"full-document",category:"qingtian_review"},{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}];function b6(a){return b5.find(b=>b.id===a)}var b7=c(73186),b8=c(80439);async function b9(a){var b;let c=(0,b7.Su)(a.chapterDrafts.flatMap(a=>a.evidence||[]),a.projectMaterialScope);(0,b7.U2)(c,a.projectMaterialScope,"finalize:chapter-evidence"),c.length>0&&(a.allEvidence.push(...c),a.allEvidence.splice(0,a.allEvidence.length,...(0,g.QR)(a.allEvidence,{preservePinned:!0})));let d=(0,b7.Su)(a.allEvidence,a.projectMaterialScope);a.allEvidence.splice(0,a.allEvidence.length,...d),(0,b7.U2)(a.allEvidence,a.projectMaterialScope,"finalize:all-evidence"),(0,e.Te)(a.signal);let f=(0,g.QR)(a.allEvidence,{preservePinned:!0});a.allEvidence.splice(0,a.allEvidence.length,...(0,b7.Su)(f,a.projectMaterialScope)),(0,b7.U2)(a.allEvidence,a.projectMaterialScope,"finalize:post-file-understanding"),a.facts=(0,n.B2)(a.template,a.allEvidence,a.documentSpec);let{localFacts:h,projectBasicFacts:i,preciseFacts:j,structuredTables:k}=(0,n.d6)({evidence:a.allEvidence,template:a.template,spec:a.documentSpec,profile:a.domainProfile,scope:a.projectMaterialScope,diagnostics:a.generationDiagnostics}),l=[...h,...i,...j],m={facts:[],stages:[{type:"fact_extraction",roleId:"llm-json",status:"skipped",message:"已有本地/资料事实覆盖主要必需字段,跳过 LLM 全量事实抽取"}]};if((0,n.N2)(l,a.template,a.documentSpec)){let b=(0,g.QR)(a.allEvidence,{preservePinned:!0});try{m=await (0,n.OQ)(b,a.factExtractionPromptTexts,a.template,a.documentSpec,a.signal,a.generationDiagnostics)}catch(b){if(a.signal?.aborted)throw b;console.error("[gen] fact extraction failed:",b)}}for(let b of m.stages)(0,b8.fx)(a.progressStages,b);let o=A(a.allEvidence);for(let c of(a.structuredFacts=(0,b7.am)((b=[...h,...i,...j,...m.facts,...o],a.allEvidence,b.filter(a=>!!a.sourceFile)),a.projectMaterialScope),a.governedStructuredFacts=K(a.structuredFacts,a.scopeConflicts??H(a.structuredFacts)),a.governedStructuredFacts))a.facts[c.key]=`${(0,e.lG)(c.value)}(来源:${c.sourceFile},角色:${c.roleId})`;a.factsModel=await (0,n.d7)(a.governedStructuredFacts,k,a.missingItems,a.documentSpec,a.domainProfile);let p=L({facts:a.governedStructuredFacts,projectRoot:a.projectRoot,requirement:a.requirement||"",templateId:a.template.id});a.factsModel.canonical=p,a.scheduleAuthority=(0,ao.GG)(a.factsModel),a.assemblyRateAuthority=(0,ao.hI)(a.factsModel),a.scaleSummary=(0,ao.Pt)(a.factsModel),a.supportAuthority=(0,ao.P3)(a.factsModel),a.decisionLockEntries=aU({facts:[...h,...i,...j],evidence:a.allEvidence})}function ca(a){return/--|延期到|资料|附件|扫描|目录|汇总|打包|备份|\d{1,2}\.\d{1,2}/u.test(a)}function cb(a){return a.replace(/[((]\d+[))]/gu,"").replace(/副本|最终版|扫描件|定稿/gu,"").replace(/[\s,。,.;;::《》“”‘’()()_-]+/gu,"").toLowerCase()}function cc(a,b){let c=cb(b);if(!c||c.length<4)return!0;let d=cb(a);return!!d.includes(c)||c.length>=12&&d.includes(c.slice(0,Math.max(8,Math.floor(.72*c.length))))}var cd=c(73859);function ce(a){return a.replace(/[((]\d+[))]/gu,"").replace(/副本|最终版|扫描件|定稿/gu,"").replace(/\s+/gu,"").replace(/[,。,.;;::《》“”‘’()()_-]/gu,"").toLowerCase()}function cf(a,b){let c=a.trim();if((0,cd.d2)(b,c)||(0,cd.rF)(b,c)||/签章|盖章|联系人|联系电话|电话|邮箱|解密|开标|评标|保证金|交易系统|空白|填写|上传|下载|递交|投标文件制作|电子服务系统|交易平台/u.test(c)||/\|/u.test(c)||/^#+\s*/u.test(c)||/见(?:招标公告|投标人须知|前附表|本项目|补疑)|资料参数行摘要|公共资源交易监督管理|开评标程序|监管部门|招标代理机构|监督管理部门|行政监督部门/u.test(c)||/是否|符合|采购范围|规定的投标截止时间|电子交易系统|投标人须知|招标文件正文/u.test(c)&&/\d{3,}/u.test(c)||/项目名称|工程名称/u.test(c)&&/项目编号|工程概况|建筑面积|本项目分为|现状建筑物|改造工程|标段/u.test(c)||/项目编号[::]|工程概况[::]|本项目分为|现状建筑物|总建筑面积|本次改造工程|清单编制说明/u.test(c))return"";let d=/\d+(?:\.\d+)?\s*(?:日历天|天|个月|月)/u.exec(c)?.[0],e=ce(d&&/工期|总工期|合同工期|计划工期|施工周期/u.test(c)?d:c);return!e||e.length>80?"":e}var cg=c(23760),ch=c(40693),ci=c(1358),cj=c(11248);function ck(a){return(0,cj.K3)(`${a.fieldName||a.key} ${(0,e.lG)(a.value)}`)}function cl(a){return[...a.project,...a.schedule,...a.quality,...a.safety,...a.resources,...a.preciseFacts,...a.bills,...a.drawings,...a.rules,...a.specifications].map(ck).join("\n")}function cm(a,b){let c=[{label:"工期",corpus:cl({...b,project:[],quality:[],safety:[],resources:[],preciseFacts:[],bills:[],drawings:[],rules:[],specifications:[]}),required:/工期|日历天|合同工期|计划工期/u},{label:"质量",corpus:cl({...b,project:[],schedule:[],safety:[],resources:[],preciseFacts:[],bills:[],drawings:[],rules:[],specifications:[]}),required:/质量目标|质量标准|验收|复验/u},{label:"安全",corpus:cl({...b,project:[],schedule:[],quality:[],resources:[],preciseFacts:[],bills:[],drawings:[],rules:[],specifications:[]}),required:/安全|文明|风险|应急/u},{label:"资源",corpus:cl({...b,project:[],schedule:[],quality:[],safety:[],preciseFacts:[],bills:[],drawings:[],rules:[],specifications:[]}),required:/资源|材料|设备|劳动力/u},{label:"工程量",corpus:cl({...b,project:[],schedule:[],quality:[],safety:[],resources:[],preciseFacts:[],drawings:[],rules:[],specifications:[]}),required:/工程量|清单|建筑面积|长度|吨|台|套|项/u}],d=(0,cj.K3)(a.replace(/\s+/gu,"")),e=[];for(let b of c)b.required.test(a)&&0===[...new Set(b.corpus.split("\n").map(a=>a.replace(/\s+/gu,"").slice(0,24)).filter(Boolean))].filter(a=>a.length>=6&&d.includes(a)).length&&e.push({level:"warning",message:`证据使用覆盖率偏低:正文中未明显使用${b.label}相关事实`,suggestion:`请在相应章节中引用至少一项${b.label}事实,避免只写通用表述。`});return e}async function cn(a,b){let c=a.split(/\n\s*\n/gu).map(a=>a.trim()).filter(Boolean),d=/(?:加强组织领导|严格执行规范|落实责任制度|确保工程质量|强化过程管理|提高思想认识|完善管理体系|形成闭环管理|统筹推进|全面落实)/gu,e=[];for(let a of c){if(120>(0,h.V7)(a)||(a.match(d)||[]).length<2)continue;let c=await b.analyze(a);c&&(c.concrete||e.push({level:"warning",message:`段落存在空泛表述:${a.slice(0,48)}...`,suggestion:"请补充该段对应的对象、动作、控制点或验收闭环,避免只保留管理性套话。"}))}return e}function co(a,b){let c=[];if(!b)return c;let d=a.map(a=>`${a.title}
29
29
  ${a.content}`).join("\n\n");if(/进度|工期/u.test(d)&&/资源|材料|设备|劳动力/u.test(d)){let d=a.find(a=>/资源|材料|设备|劳动力/u.test(a.title)),e=d?b.get(d.title):void 0;e?.contentNeeds.resource||c.push({level:"warning",message:"章节逻辑依赖不足:进度章节与资源章节之间缺少明显支撑关系",suggestion:"请在资源章节补充与工期目标相匹配的劳动力、材料、设备投入和调配计划。"})}return/质量/u.test(d)&&/施工|工艺|技术/u.test(d)&&(a.some(a=>b.get(a.title)?.contentNeeds.quality||b.get(a.title)?.contentNeeds.construction)||c.push({level:"warning",message:"章节逻辑依赖不足:质量章节未明显支撑施工工艺控制",suggestion:"请在施工技术和质量章节之间补齐工艺控制点、验收要求和整改复验闭环。"})),/安全|文明|风险/u.test(d)&&(a.some(a=>b.get(a.title)?.contentNeeds.safety)||c.push({level:"warning",message:"章节逻辑依赖不足:安全章节缺少检查整改和应急支撑",suggestion:"请补齐风险识别、检查整改、应急响应和演练闭环。"})),c}let cp=/安全|文明|质量|绿色施工|环保|扬尘|消防|应急|危大|风险|规范|标准|管理要求|施工工艺|技术措施|验收/u,cq=/项目名称|工程名称|建设地点|建设单位|招标人|发包人|建设规模|招标范围|合同工期|计划工期|质量标准|危大工程清单|工程量|材料规格|设备型号|图纸参数|报价|单价|利润|税率|合同金额|联系方式|品牌/u,cr=/报价|单价|合价|金额|利润|税率|增值税|招标控制价|最高投标限价|中标价|合同价|暂列金额/u,cs=/联网增强|联网检索|网页资料|搜索结果|根据网页|互联网资料|在线资料|浏览器|搜索引擎/u,ct=["项目名称","工程名称","建设地点","建设单位","招标人","发包人","建设规模","招标范围","合同工期","计划工期","工程量","报价","单价"];function cu(a){return a.replace(/&amp;/gu,"&").replace(/&lt;/gu,"<").replace(/&gt;/gu,">").replace(/&quot;/gu,'"').replace(/&#39;/gu,"'").replace(/<[^>]+>/gu,"").replace(/\s+/gu," ").trim()}async function cv(a,b,c,d,e){let f=`https://duckduckgo.com/html/?q=${encodeURIComponent(a)}`,g=new AbortController,h=setTimeout(()=>g.abort(),8e3),i=()=>g.abort();e?.addEventListener("abort",i,{once:!0});let j=await fetch(f,{headers:{"User-Agent":"Mozilla/5.0 compatible; customize-agent web research"},signal:g.signal}).finally(()=>{clearTimeout(h),e?.removeEventListener("abort",i)});return j.ok?[...(await j.text()).matchAll(/<a[^>]+class="result__a"[^>]+href="([^"]+)"[^>]*>([\s\S]*?)<\/a>[\s\S]*?<a[^>]+class="result__snippet"[^>]*>([\s\S]*?)<\/a>/giu)].map(a=>{let b=cu(a[1]||""),c=cu(a[2]||""),d=cu(a[3]||""),e=/uddg=([^&]+)/u.exec(b)?.[1];return{url:e?decodeURIComponent(e):b,title:c,snippet:d}}).filter(a=>{let b=`${a.title} ${a.snippet} ${a.url}`;return!(!a.url||!a.snippet||cq.test(b)||cr.test(b)||cs.test(b)||d.some(a=>a&&b.includes(a)))&&(0===c.length||c.some(b=>a.url.includes(b)))}).slice(0,b):[]}async function cw(a){if(!a.config.enabled||!function(a,b){let c=`${a} ${b.join(" ")}`;return!(!cp.test(c)||/项目概况|工程概况|建设地点|建设规模|招标范围|工程量|报价|造价/u.test(c)&&!/安全|文明|质量|危大|环保|工艺|措施/u.test(c))}(a.chapterTitle,a.sectionTitles))return{evidence:[],queries:[],filtered:0};let b=function(a,b,c){let d=`${a} ${b.join(" ")}`,e=[/危大/u.test(d)?"危大工程 专项施工方案 管理规定 安全措施":"",/安全|文明/u.test(d)?"建筑工程 安全文明施工 管理要求":"",/质量|验收/u.test(d)?"建筑工程 质量控制 质量验收 通用要求":"",/扬尘|环保|绿色/u.test(d)?"施工现场 扬尘治理 绿色施工 环保要求":"",/消防|应急/u.test(d)?"施工现场 消防 应急管理 要求":"",/工艺|技术措施/u.test(d)?"建筑工程 施工工艺 技术措施 通用要求":""].filter(Boolean),f=`${a.replace(cq,"")} 公开规范 通用要求`.trim();return[...new Set(e.length?e:[f])].slice(0,c)}(a.chapterTitle,a.sectionTitles,a.config.maxQueriesPerChapter),c=[],d=0;for(let e of b)try{for(let b of(await cv(e,a.config.maxResultsPerQuery,a.config.trustedDomains,a.runtimeRules.forbiddenTerms||[],a.signal))){let e=function(a,b){let c=a;for(let a of ct)c=c.replace(RegExp(`${a}[^。;;
30
30
  ]{0,80}`,"gu"),"");for(let a of b.map(a=>{var b;return null==(b=a.value)?"":"string"==typeof b||"number"==typeof b||"boolean"==typeof b?String(b).trim():""}).filter(a=>a.length>=3&&a.length<=80))c=c.replace(RegExp(a.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&"),"gu"),"");return c.replace(cr,"").trim()}(b.snippet,a.localFacts);if(!e||e.length<20){d+=1;continue}c.push({chapterId:a.chapterId,filePath:b.url,score:.42,content:`参考依据:${b.title}
31
- ${e}`,source:function(a){let b=a.toLowerCase();return b.includes(".gov.cn")||b.includes("mohurd")||b.includes("zjt")||a.includes("住建")?"web-policy":"web-evidence"}(b.url),sectionTitle:a.chapterTitle})}}catch{d+=1}return{evidence:c,queries:b,filtered:d}}let cx=[{label:"工程名称",factGroups:["project"],patterns:[/工程名称\s*[::]\s*([^\n|]+)/u],locations:"封面、工程概况、页眉页脚、专项方案、表格标题"},{label:"建设地点",factGroups:["project"],patterns:[/建设地点\s*[::]\s*([^\n|]+)/u,/工程地点\s*[::]\s*([^\n|]+)/u],locations:"工程概况、周边环境、扬尘噪声、交通导改、属地化措施"},{label:"总工期",factGroups:["schedule"],patterns:[/总工期\s*[::]\s*([^\n|]+)/u,/计划工期\s*[::]\s*([^\n|]+)/u,/工期目标\s*[::]\s*([^\n|]+)/u],locations:"工程概况、进度计划、横道图、资源计划、纠偏措施"},{label:"建设规模",factGroups:["project","preciseFacts"],patterns:[/建设规模\s*[::]\s*([^\n|]+)/u,/建筑面积\s*[::]\s*([^\n|]+)/u,/道路长度\s*[::]\s*([^\n|]+)/u,/管线长度\s*[::]\s*([^\n|]+)/u],locations:"工程概况、工程量表、施工部署、资源配置"},{label:"机械数量型号",factGroups:["resources"],patterns:[/([\p{Script=Han}A-Za-z0-9]+(?:机|吊|泵|车))\s*[^\n|]{0,12}(\d+)\s*(台|套|辆)/u],locations:"机械表、平面布置、进度保障、安全专项方案"},{label:"劳动力人数",factGroups:["resources"],patterns:[/劳动力\s*[^\n|]{0,12}(\d+)\s*人/u,/班组\s*[^\n|]{0,12}(\d+)\s*人/u],locations:"劳动力计划、进度节点、抢工方案、工资保障台账"},{label:"危大工程清单",factGroups:["safety","preciseFacts"],patterns:[/危大工程\s*[::]\s*([^\n|]+)/u,/深基坑|高支模|起重吊装|脚手架/u],locations:"安全章节、专项方案、审批表、应急预案"},{label:"环保监测指标",factGroups:["quality","safety","preciseFacts"],patterns:[/PM10|PM2\.5|TSP|噪声|扬尘在线监测/u],locations:"文明施工、扬尘噪声、智慧工地、应急联动"}];function cy(a){return a.replace(/[\s,。;;::|]/gu,"").trim()}let cz=/塔式起重机|履带吊|汽车吊|卷扬机|脚手架|扣件|钢管|模板|噪声|PM2\.5|PM10|TSP|扬尘在线监测|临电|消防|安全网|围挡|洗车台|沉淀池|雾炮/u,cA=/不使用|不采用|不配置|无需|未采用|不得使用|禁止使用/u;function cB(a,b){let c=[];for(let d of b){let b=a[d];if(Array.isArray(b))for(let a of b)a&&"object"==typeof a&&"value"in a&&"string"==typeof a.value&&c.push(a.value)}return c.map(cy).filter(Boolean)}let cC=/([\u4e00-\u9fa5A-Za-z0-9()()]{1,12}?)(\d+(?:\.\d+)?)\s*(?:mm|cm|m|米|MPa|kN|kV|kW|℃|°C|元|万元|人|天|日|个|层|樘|处|套|台|t|吨)([\u4e00-\u9fa5A-Za-z0-9()()]{0,8})/gu,cD=["直径","厚度","宽度","长度","高度","深度","间距","距离","标高","偏差","数量","面积","体积","重量","压力","温度","强度","等级","坡度","规格","尺寸","层数","次数","跨度","半径"];async function cE(a){let b=function(a){let b=[];for(let c of a.split(/\r?\n/u)){let a=c.trim();if(!(/^#{1,6}\s/u.test(a)||/^\s*\|/u.test(a)))for(let c of a.matchAll(RegExp(cC.source,"gu"))){let a=(c[1]||"").trim(),d=Number(c[2]),e=(c[3]||"").trim(),f=`${a}${e}`.replace(/[\s,,、;;::]/gu,"");!(f.length<2)&&/[\u4e00-\u9fa5A-Za-z]{2,}/u.test(f)&&Number.isFinite(d)&&!(d<=0)&&(cD.some(a=>f.replace(/(?:mm|cm|m|MPa|kN|kV|kW|℃|元|万元|人|天|日|个|层|樘|处|套|台|t|吨)/gu,"").replace(/[\s,,、;;::()()]/gu,"")===a)||b.push({concept:f,value:d,raw:c[0]}))}}let c=new Set;return b.filter(a=>{let b=a.raw;return!c.has(b)&&(c.add(b),!0)}).slice(0,60)}(a);if(b.length<3)return[];let c=[...new Set(b.map(a=>a.concept))];if(c.length<2)return[];let d=await (0,be.VN)().embedDocuments(c);if(d.length!==c.length)throw Error(`本地语义模型嵌入数量不一致:期望 ${c.length} 条,实际 ${d.length} 条`);let e=new Map(c.map((a,b)=>[a,d[b]])),f=function(a,b){let c=new Map(a.map(a=>[a,a])),d=a=>{let b=c.get(a)||a;return b===a?a:(c.set(a,d(b)),c.get(a)||a)},e=(a,b)=>{c.set(d(a),d(b))};for(let c=0;c<a.length;c+=1)for(let d=c+1;d<a.length;d+=1)b(a[c],a[d])>=.6&&e(a[c],a[d]);return c}(c,(a,b)=>{let c=e.get(a),d=e.get(b);if(!c||!d||0===c.length||0===d.length)return 0;let f=Math.min(c.length,d.length),g=0;for(let a=0;a<f;a+=1)g+=c[a]*d[a];return g}),g=a=>{let b=a;for(;(f.get(b)||b)!==b;)b=f.get(b)||b;return b},h=new Map;for(let a of b){let b=g(a.concept),c=h.get(b)||[];c.push(a),h.set(b,c)}let i=[];for(let a of h.values()){if(a.length<2)continue;let b=[...new Set(a.map(a=>a.value))];if(b.length<2)continue;let c=Math.max(...b),d=Math.min(...b);if(!(c-d<=.02*c)&&!(c>20*d)&&!(a.filter(a=>/[、/](?:与)?\d/u.test(a.raw)).length>=2)&&(i.push(`“${a[0].concept}”出现多个口径:${[...new Set(a.map(a=>a.raw))].slice(0,3).join("、")}`),i.length>=4))break}return 0===i.length?[]:[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`同一参数概念出现多口径数值冲突:${i.join(";")}`,suggestion:"以绑定资料(图纸/清单/规范)裁决口径为准统一数值表述:每个参数概念全文只保留一个口径数值,删除矛盾表述。"}]}let cF=["电梯","幕墙","智能化","消防","暖通","给排水","电气","燃气","人防","室外","园林","绿化","景观","钢结构","防水","保温","门窗","通风","空调","防雷","接地","动力","照明","拆除","加固","装修","装饰"];var cG=c(27625);let cH=/分[为成]?[^。;;,,\n]{0,12}阶段|共[分设]?[^。;;,,\n]{0,12}阶段|划[分]?为[^。;;,,\n]{0,12}阶段|[二三四五六七八九十]个阶段/u,cI={一:1,二:2,三:3,四:4,五:5,六:6,七:7,八:8,九:9};function cJ(a){return/(\d+|[一二三四五六七八九十]+)\s*个?\s*阶段/u.exec(a)?.[1]??null}function cK(a){let b=a.map(cJ).filter(a=>null!==a).map(a=>/^\d+$/u.test(a)?parseInt(a,10):/^[一二三四五六七八九十]+$/u.test(a)?"十"===a?10:1===a.length?cI[a]??null:a.startsWith("十")?10+(cI[a[1]]??0):a.endsWith("十")?(cI[a[0]]??0)*10:(cI[a[0]]??0)*10+(cI[a[2]]??0):null).filter(a=>null!==a);return 0===b.length?null:1===new Set(b).size?b[0]:null}async function cL(a){let b=[...new Set(a.split(/\n+/u).filter(a=>a.trim()&&!/^\s*(#{1,6}\s+|\|)/u.test(a)).flatMap(a=>a.split(/[。;;]/u)).map(a=>a.replace(/\s+/gu,"").trim()).filter(a=>a.length>=8&&a.length<=60&&cH.test(a)))];if(b.length<2)return[];let c=await (0,be.Mv)(b,b),d=b.map((a,b)=>b),e=a=>{let b=a;for(;d[b]!==b;)b=d[b];let c=a;for(;d[c]!==b;){let a=d[c];d[c]=b,c=a}return b},f=(a,b)=>{d[e(b)]=e(a)};for(let a=0;a<b.length;a+=1)for(let d=a+1;d<b.length;d+=1)c(b[a],b[d])>=.62&&f(a,d);let g=new Map;for(let a=0;a<b.length;a+=1){let c=e(a),d=g.get(c)||[];d.push(b[a]),g.set(c,d)}if(g.size<2||new Set([...g.values()].map(cK).filter(a=>null!==a)).size<2)return[];let h=[...g.values()].map(a=>a.sort((a,b)=>b.length-a.length)[0]).slice(0,4);return[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`施工阶段划分口径不统一:正文出现 ${g.size} 种互异阶段划分口径(${h.map(a=>`“${a.slice(0,16)}”`).join("、")})`,suggestion:"全文统一阶段划分口径:以总进度计划/施工部署章节的划分为唯一口径,其余章节划分句逐字对齐或删除。"}]}var cM=c(41991);let cN=/应急预案|应急措施|应急响应|应急救援|突发事件|应急管理|应急物资|应急演练|应急组织|应急保障/u,cO=/应急|突发|救援|预案|抢险|疏散/u,cP=["应急预案的编制与响应流程","突发事件应急处置措施","应急救援组织体系与保障"],cQ=["应急照明系统安装调试","应急电源配置与切换方案"],cR={organization:"应急管理领导小组、应急救援队伍的组织机构与职责分工",procedure:"应急处置程序、应急响应流程与应急演练安排",resource:"应急物资、应急器材设备的储备与保障措施"},cS=/应急物资|急救箱|灭火器|沙袋|发电机|水泵|对讲机|应急照明|应急灯|防护服|救援绳|救生衣|铁锹|编织袋|抽水泵|警示带|应急器材/u,cT=/配备|储备|保障|配置|数量|不少于|共计|套|具|个|台|把|只/u,cU=["应急物资储备清单与配备数量","应急救援器材的配置与保障"],cV=["应急照明灯具数量与回路设计","应急电源的电气系统设计"];async function cW(a){return(0,cM.A)({prototypes:[...cP],negativePrototypes:[...cQ],embedDocuments:a})}async function cX(a){return(0,cM.A)({prototypes:[...cU],negativePrototypes:[...cV],embedDocuments:a})}async function cY(a,b){let c=a.split(/\r?\n/u),d=[],e=c.map(a=>{let b=/^(#{2,4})\s+(.+)$/u.exec(a.trim());if(b)return{level:b[1].length,title:b[2].replace(/^\d+(?:\.\d+)*\s+/u,"").trim()}}).filter(a=>void 0!==a).filter(a=>!cN.test(a.title)&&cO.test(a.title)),f=await cW(b),g=e.length>0?await f(e.map(a=>a.title)):[],h=new Set(e.filter((a,b)=>g[b]).map(a=>a.title)),i=a=>cN.test(a)||h.has(a),j=!1,k=[],l=[],m="",n=0;for(let a of c){let b=/^(#{2,4})\s+(.+)$/u.exec(a.trim());if(b){let a=b[1].length,c=b[2].replace(/^\d+(?:\.\d+)*\s+/u,"").trim();if(i(c)){j=!0,k.push(c);continue}a<=3&&j&&(j=!1);continue}if(j&&a.trim()&&!/^\s*\|/u.test(a)){l.push(a);let b=a.replace(/\s+/gu,"");m+=b,n+=b.length}}if(0===k.length)return d;let o=[];n<300&&o.push(`字数仅 ${n} 字(要求 ≥300 字)`);let p=m.match(/.{1,200}/gu)||[],q=Object.values(cR),r=await (0,be.Mv)(p,q),s=a=>p.some(b=>r(b,a)>=be.Eh);s(cR.organization)||o.push("应急组织体系"),s(cR.procedure)||o.push("应急处置程序/演练");let t=await cX(b),u=l.join("。").split(/[。;;]/u).map(a=>a.trim()).filter(a=>cS.test(a)&&cT.test(a)),v=u.length>0?await t(u):[];return s(cR.resource)||v.some(Boolean)||o.push("应急物资保障"),o.length>0&&d.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:`应急预案小节深度不足:${k.join("、")}(缺少:${o.join("、")})`,suggestion:"补写应急组织体系(领导小组/抢险队与职责)、应急处置程序与演练安排、应急物资清单与保障措施,达到可落地深度。",sectionTitle:k[0]}),d}async function cZ(a){let b=await (0,cg.Z2)(a.markdown,a.factsModel,{scopeClassifier:a.factTokenScopeClassifier}),c=bJ(a.tenderRequirements).map(({item:a})=>bI(a)),d=a.markdown.split(/\n/u).filter(a=>/^#{2,4}\s/u.test(a.trim())).map(a=>bS(a)).filter(Boolean).slice(0,80),e=(0,ao.s3)(a.markdown),f=await (0,be.Mv)(c,[...d,...e]),g=await (0,be.Mv)(a.evaluationCriteriaItems||[],d),i=new Map((await Promise.all(a.chapters.map(async b=>[b.title,await a.professionalDepthClassifier.analyze(b.content)]))).filter(a=>!!a[1])),j=(0,ao.t1)(a.markdown),k=await (0,be.Mv)(j.sentences,j.overviewBody?[j.overviewBody]:[]);return[...b4("toc-consistency",()=>a.promptDocumentRules?.forbidToc?[]:[...(0,cg.gN)(a.markdown),...(0,cg.f8)(a.markdown)]),...b4("heading-duplicate",()=>(0,cg.kw)(a.markdown)),...b4("evaluation-criteria-coverage",()=>(0,cg.wl)(a.markdown,a.evaluationCriteriaItems||[],{semanticSimilarity:g})),...await b4("requirements-coverage",()=>bR(a.markdown,a.tenderRequirements,{semanticSimilarity:f,bodyTexts:e})),...b4("fabricated-start-date",()=>(0,ao.cf)(a.markdown,a.factsModel)),...b4("field-value-mismatch",()=>(0,ao.a8)(a.markdown,a.factsModel)),...b4("area-arithmetic",()=>(0,ao.u2)(a.markdown)),...b4("resource-consistency",()=>(0,ao.rA)(a.markdown,{laborPeakAuthority:a.blueprintData?a4(a.blueprintData).laborPeakAuthority:void 0})),...b4("node-schedule-consistency",()=>(0,ao.Et)(a.markdown)),...b4("cross-section-numeric-conflict",()=>(0,ao.H)(a.markdown)),...b4("greening-maintenance-mismatch",()=>(0,ao.x5)(a.markdown,a.factsModel)),...b4("street-light-count-mismatch",()=>(0,ao.Tz)(a.markdown,a.factsModel)),...b4("spec-location-mismatch",()=>(0,ao.$$)(a.markdown,a.factsModel.specAuthorityMap)),...b4("blueprint-citation-consistency",()=>a.blueprintData?ba(a.markdown,a.blueprintData).filter(a=>"error"===a.level):[]),...b4("foundation-form-residue",()=>(0,ao.N$)(a.markdown)),...b4("ambiguous-either-or",()=>(0,ao.Fr)(a.markdown)),...b4("excavation-depth-lock",()=>(0,ao.bq)(a.markdown)),...b4("excavation-hazard-classification",()=>(0,ao.LA)(a.markdown,a.factsModel)),...b4("support-form-fact-consistency",()=>(0,ao.ek)(a.markdown,a.factsModel)),...b4("equipment-entry-timing",()=>(0,ao.fQ)(a.markdown,a.factsModel)),...b4("fabricated-award",()=>(0,ao.hu)(a.markdown,a.factsModel,a.tenderRequirements)),...b4("bidder-qualification-section",()=>(0,ao.Rv)(a.markdown)),...b4("cross-chapter-duplicate-section",()=>(function(a,b){let c=a=>a.replace(/^\d+(?:\.\d+)*[、..\s]*/u,"").replace(/[\s,,、]/gu,""),d=new Map;a.forEach((a,b)=>{let c=(0,aq.GQ)(a.title).replace(/[\s,,、]/gu,"");c&&!d.has(c)&&d.set(c,b)});let e=new Map,f=new Map;a.forEach((a,b)=>{let d=new Set;for(let g of(a.content||"").split(/\r?\n/u)){let a=/^###\s+(.+?)\s*$/u.exec(g.trim());if(!a)continue;let h=c(a[1]);if(h.length<8||d.has(h))continue;d.add(h),f.has(h)||f.set(h,a[1].replace(/^\d+(?:\.\d+)*[、..\s]*/u,"").trim());let i=e.get(h)||[];i.push(b),e.set(h,i)}});let g=new Map;b.forEach(a=>{let b=d.get((0,aq.GQ)(a.title).replace(/[\s,,、]/gu,""));if(void 0!==b)for(let d of a.sections||[]){let a=c(d);if(a.length<8)continue;let e=g.get(a)||[];e.includes(b)||e.push(b),g.set(a,e)}});let h=[];for(let[b,c]of e){if(c.length<2)continue;let d=g.get(b)||[];if(d.length>=2)continue;let e=1===d.length?d[0]:c[0],i=f.get(b)||b;for(let b of c){if(b===e)continue;let c=a[b];h.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",chapterId:c.id,sectionTitle:i,message:`跨章同名小节:“${i}”已在「${a[e].title}」落位,本章(「${c.title}」)同名小节属跨章串章重复,须改写归并`,suggestion:"同一主题小节全文只保留一处(归属章);非归属章的同名小节:内容与本章主题相关则改写标题为可区分的具体主题并归并内容,与本章无关则整节删除(含标题行);修复后全文不得再出现跨章同名小节。"})}}return h})(a.chapters,a.effectiveChapters||a.template.chapters||[])),...b4("basic-info-schedule-field",()=>(0,ao.cT)(a.markdown)),...b4("duplicate-table",()=>(0,ao.ub)(a.markdown)),...b4("duplicate-paragraph",()=>(0,ao.cl)(a.markdown)),...b4("resource-triad-section-hierarchy",()=>(0,ao.zP)(a.markdown)),...await b4("support-system-conflict",()=>(0,ao.r8)(a.markdown,(0,ao.P3)(a.factsModel))),...b4("dangerous-list-consistency",()=>(0,ao.vH)(a.markdown)),...await b4("six-hundred-percent-coverage",()=>(0,ao.sn)(a.markdown)),...await b4("self-undermining-candidate",()=>(0,ao.YN)(a.markdown)),...b4("paragraph-opening-repeat",()=>(0,ao.y2)(a.markdown)),...b4("repeated-word",()=>(0,ao.Xc)(a.markdown)),...await b4("commercial-data-in-body",()=>(0,ao.mC)(a.markdown)),...b4("overview-recap",()=>(0,ao.l4)(a.markdown,{semanticSimilarity:k})),...b4("closure-phrase-density-cap",()=>(0,ao.dF)(a.markdown)),...await b4("parameter-concept-conflict",()=>cE(a.markdown)),...await b4("internal-terminology-anchor",()=>(0,bd.WT)(a.markdown)),...b4("construction-system-coverage",()=>(function(a){let b=[...new Set(a.flatMap(a=>cF.filter(b=>a.title.includes(b))))];if(0===b.length)return[];let c=a.map(a=>a.content||"").join("\n"),d=b.filter(a=>!c.includes(a));if(0===d.length)return[];let e=a.find(a=>d.some(b=>a.title.includes(b)));return[{level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:`章节大纲涉及的专业工程系统在正文零覆盖:${d.join("、")}`,suggestion:"对应章节必须补写该专业工程的施工方案正文(施工概况/施工流程/施工方法,含可核实的工艺参数),不得整章零覆盖。",chapterId:e?.id}]})(a.chapters)),...b4("dangerous-applicability",()=>(0,cG.e6)(a.markdown)),...b4("innovation-tech-coverage",()=>(0,cg.Ef)(a.markdown,a.effectiveChapters||a.template.chapters||[])),...b4("instruction-like-heading",()=>(0,cg.K1)(a.markdown)),...b4("formal-heading-hierarchy",()=>(0,cg.Fv)(a.markdown)),...b4("formal-content-integrity",()=>(0,cg.k0)(a.markdown)),...b4("punctuation-artifact",()=>(0,cg.vZ)(a.markdown)),...b4("table-quality",()=>(0,cg.NS)(a.markdown)),...b4("table-spam",()=>(0,cg.SN)(a.markdown)),...b4("basis-regulations-coverage",()=>(0,cg.AN)(a.markdown,a.blueprintData)),...b4("resource-breakdown-consistency",()=>(0,cg.EJ)(a.markdown,a.blueprintData)),...b4("section-content-integrity",()=>(0,cg.qK)(a.markdown,a.chapters)),...b4("professional-content",()=>(0,cg.ji)(a.chapters,i)),...b4("professional-score",()=>(0,cg.i0)(a.chapters,i)),...b4("generic-professional-content",()=>(0,cg.ST)(a.chapters,i)),...b4("management-measure-number",()=>(0,cg.xX)(a.chapters,i)),...await b4("closed-loop-density",()=>(0,cg.Zu)(a.markdown)),...await b4("cross-chapter-consistency",()=>(0,cg.qm)(a.markdown,a.factsModel,a.scopeConflicts,i)),...await b4("process-spec-conflict",()=>(0,cg.hr)(a.markdown,a.factsModel)),...b4("evidence-usage-coverage",()=>cm(a.markdown,a.factsModel)),...await b4("paragraph-generic",()=>cn(a.markdown,a.professionalDepthClassifier)),...await b4("construction-org-generic-language",()=>(0,ch.Fw)(a.chapters)),...b4("construction-org-control-loop",()=>(0,ch.Hl)(a.chapters)),...b4("construction-org-professional-chain",()=>(0,ch.iX)({markdown:a.markdown,factsModel:a.factsModel,chapters:a.chapters})),...b4("construction-org-consistency",()=>(function(a,b){let c=[];if(!/施工组织设计|施工组织|施组|质量|安全|文明施工/u.test(a))return c;for(let d of cx){let e=cB(b,d.factGroups),f=(function(a,b){let c=[];for(let d of b){let b=new RegExp(d.source,d.flags.includes("g")?d.flags:`${d.flags}g`);for(let d of a.matchAll(b)){let a=cy(d[1]||d[0]||"");!cA.test(a)&&a.length>=2&&a.length<=80&&c.push(a)}}return[...new Set(c)]})(a,d.patterns).filter(a=>!cz.test(a)&&!function(a,b){return 0===b.length||b.some(b=>b.includes(a)||a.includes(b)||a.length>=4&&b.includes(a.slice(0,4)))}(a,e)).slice(0,5);f.length>0&&c.push({level:"warning",message:`施组数据一致性风险:${d.label} 可能与项目图谱/事实不一致(${f.join("、")})`,suggestion:`请核对${d.label}在${d.locations}中的表述,统一以招标文件、项目图谱和可信事实为准。`})}return c})(a.markdown,a.factsModel)),...b4("construction-org-chapter-data-coverage",()=>(function(a,b){let c=[],d=cB(b,["project","schedule","resources","quality","safety","preciseFacts"]);if(0===d.length)return c;for(let b of a)/概况|进度|资源|质量|安全|文明|工资|应急/u.test(`${b.title} ${(b.sections||[]).join(" ")}`)&&(d.some(a=>a.length>=3&&b.content.includes(a.slice(0,Math.min(10,a.length))))||c.push({level:"warning",message:`${b.title} 缺少可识别的项目图谱事实支撑`,suggestion:"请至少引用工程名称、工期、工程量、资源、风险、质量安全目标等项目专属事实之一,避免纯模板化。"}));return c})(a.chapters,a.factsModel)),...b4("construction-org-major-content",()=>(0,ch.Av)(a.chapters,a.markdown)),...b4("construction-org-division-section",()=>(0,ch.CS)(a.chapters,a.markdown)),...b4("major-content-governance",()=>(0,ch.l5)(a.markdown)),...b4("construction-org-bonus-module",()=>(0,ch.b7)(a.chapters)),...b4("chapter-dependency",()=>co(a.chapters,i)),...b4("document-delivery-score",()=>(function(a,b,c,d){let e={factuality:2*!(0,cg.vY)(a,c).some(a=>"error"===a.level),structure:b.length>0&&b.every(b=>a.includes(b.title)&&(0,h.V7)(b.content)>=600)?2:1,depth:0===(0,cg.i0)(b,d).length?2:1,executable:0===co(b,d).length?2:1,evidence:0===cm(a,c).length?2:1},f=e.factuality+e.structure+e.depth+e.executable+e.evidence;return[{level:"info",message:`文档交付评分报告:总分 ${f}/10,事实${e.factuality},结构${e.structure},专业${e.depth},可执行${e.executable},证据${e.evidence}`,suggestion:f>=8?"可交付,但建议继续优化证据使用覆盖率和章节依赖链路。":"建议优先修复低分维度后再导出。"}]})(a.markdown,a.chapters,a.factsModel,i)),...b4("generated-fact-verification",()=>b),...b4("duplicate-basic-info",()=>(0,cg.iC)(a.markdown)),...await b4("formal-style",()=>(0,cg.BV)(a.markdown)),...b4("tertiary-heading",()=>(0,bc.dh)(a.markdown)),...b4("min-chapter-section",()=>(0,cg.Ty)(a.chapters)),...await b4("precise-fact-usage",()=>(0,cg.N1)(a.markdown,a.factsModel,a.chapters)),...await b4("boq-placement",()=>(0,cg.S2)(a.markdown,a.chapters,a.factsModel)),...await b4("stage-phrasing",()=>cL(a.markdown)),...await b4("emergency-section-depth",()=>cY(a.markdown)),...b4("boq-row-trace",()=>(0,ci.QP)((0,ci.JV)(a.markdown,a.factsModel))),...b4("drawing-reference",()=>(0,cg.yd)(a.markdown,a.factsModel)),...b4("web-evidence-leakage",()=>(function(a){let b=[];return cs.test(a)&&b.push({level:"warning",message:"正文包含联网增强过程性表述",suggestion:"请删除联网检索、网页资料、搜索结果等过程性话术,改为正式交付语言。"}),b})(a.markdown)),...b4("formal-placeholder",()=>(0,cg.bM)(a.markdown)),...b4("prompt-example-leak",()=>(0,cg.M$)(a.markdown,a.promptBindings)),...b4("degenerate-content",()=>(0,cg.AC)(a.markdown,a.chapters)),...b4("planned-auto-spec-gate",()=>(0,cg.mR)(a.markdown,a.template)),...b4("planned-structure",()=>(0,bc.UG)(a.markdown,a.template)),...await b4("prompt-document-rule",()=>(0,bc.Ed)(a.markdown,a.promptDocumentRules)),...await b4("local-adaptation-keyword",()=>(0,ao.cJ)(a.markdown,a.factsModel)),...b4("boq-division-coverage",()=>(0,ci.sl)(a.markdown,a.chapters,a.factsModel))]}let c$={project:"项目基础事实",schedule:"工期与节点",quality:"质量目标与验收",safety:"安全文明要求",resources:"资源投入依据",quantities:"清单/图纸/工程量事实",rules:"规范规则与验收要求"};var c_=c(52922);let c0=["精心组织","科学统筹","科学管理","精益求精","全力保障","高效推进","力争优质","力争一流","一流水平","完善体系","最大限度","显著提升","大力落实","严格把控","充分确保","竭力打造","现代化管理","加强管理","提高意识","强化监督","持续完善","及时处理","全方位","常态化","提质增效","高标准","统筹推进"];[...c0];let c1=["危险性较大的分部分项工程安全管理","扬尘污染防治措施","建筑工人实名制管理","农民工工资专用账户与工资支付保障","生产安全事故应急预案与应急演练","绿色施工与四节一环保措施"],c2=["危险源辨识与风险识别评估","编制专项施工方案","组织专家论证并履行审批程序","对作业人员进行安全技术交底","施工过程监测与监控量测","分部分项工程验收","三级配电系统","两级漏电保护装置","漏电保护器与接地保护","实名制考勤与人员管理","农民工工资专用账户银行代发","应急预案编制与响应","绿色施工措施与评价"];function c3(a){return a.replace(/^第[一二三四五六七八九十百千万\d]+[章节]\s*/u,"").replace(/^\d+(?:\.\d+)*[、..\s]+/u,"").replace(/^[((]?[一二三四五六七八九十]+[))、..\s]+/u,"").replace(/\s+/gu,"").trim()}async function c4(a,b){let{blocks:c,completeBlocks:d}=await (0,c_.Pm)(a);return Math.round((.7*Math.min(1,d/Math.max(6,Math.ceil((b&&b>0?b:void 0)??(0,h.V7)(a)/1500)))+.3*(c?d/c:0))*100)}let c5=/目录|层级|编号|表格|表头|分隔线|页码|空小节|缺少规划小节|小节只有标题|缺节/u,c6=/跨章一致性复核|事实一致性冲突|事实冲突|评分项要求|可靠精确参数|应急预案|属地创优|工伤保险|专业评分|深度不足|事实反查|存在多个值|已确认事实未在正文中落位|事实未在正文中落位/u,c7=/缺少规划小节|小节只有标题|空小节|只有标题或表格无正文|小节内容补写未完成|小节生成未达标|同名小节|H4 标题|正文缺少章节标题|小节正文过短/u;async function c8(a,b){let c=await (0,c_.Bt)(a,b),d=(0,c_.Ye)(a),e=a.split(/\n+/u).filter(a=>a.trim()&&!/^\s*(#{1,6}\s+|\||[-*+]\s|>)/u.test(a)).flatMap(a=>a.split(/[。;;]/u)).map(a=>a.replace(/[\s,,、::()()【】[\]《》“”"'`]/gu,"")).filter(a=>a.length>=12),f=e.length?(e.length-new Set(e).size)/e.length:0,g=await (0,c_.gE)(a,b),h=(0,c_.nY)(a);return{level:g.heavyTemplated?"heavy":c.level,fillerRatio:c.ratio,fillerSentences:c.fillerSentences,totalSentences:c.totalSentences,vagueHitCount:d.reduce((a,b)=>a+b.count,0),vaguePhrases:d.map(a=>a.phrase),duplicateSentenceRate:f,crossProjectResidue:h,difficultyCountermeasureRatio:g.ratio,difficultyBothCount:g.bothCount,difficultyCountermeasures:g.countermeasures,difficultyHeavyTemplated:g.heavyTemplated}}async function c9(a){let b=a.markdown.split(/\n{2,}/u).filter(a=>a.trim().length>=30),c=await (0,be.Mv)(b,[...c1,...c2],a.embedDocuments),d=a=>b.some(b=>c(b,a)>=be.Eh),e=await (0,c_.Bt)(a.markdown,a.embedDocuments);return{completeness:function(a,b,c,d){let e=[...a.matchAll(/^#{1,3}\s+(.+)$/gmu)].map(a=>c3(a[1]||"")).filter(a=>a.length>=2),f=1,g=c?.chapters||[];if(g.length>0){let a=g.map(a=>c3(a.title)).filter(Boolean);f=a.filter(a=>e.some(b=>b.includes(a)||a.includes(b))).length/a.length}else b.length>0&&(f=b.filter(a=>e.some(b=>b.includes(c3(a.title))||c3(a.title).includes(b))).length/b.length);return Math.round((.55*f+.45*(c1.filter(d).length/c1.length))*100)}(a.markdown,a.chapters,a.template,d),specificity:function(a,b,c){let d=c.filter(ci.O7),e=d.filter(a=>"used"===a.status),f=d.length?e.length/d.length:1,g=e.map(a=>String(a.value||"").replace(/\s+/gu," ").trim()).filter(a=>a.length>=4&&a.length<=60),h=b.map(a=>(a.content||"").replace(/\s+/gu," ")),i=g.filter(a=>h.filter(b=>b.includes(a)).length>=2).length;return Math.round((.55*f+.45*(g.length?i/g.length:1))*100)}(a.markdown,a.chapters,a.factTraces),compliance:function(a,b){let c=c2.filter(b).length/c2.length,d=(0,c_.JD)(a);return Math.round((.8*c+.1*(d.twoStepComplete?1:d.categories.length>0&&d.graded?.6:.3*(d.categories.length>0))+.1*(0,c_.bH)(a).coverage)*100)}(a.markdown,d),executability:await c4(a.markdown,a.referenceCompleteBlocks),normalization:function(a){let b=a=>"table"===a.category||"format"===a.category||("structure"===a.category?c7.test(a.message):!a.category&&!c6.test(a.message)&&c5.test(a.message));return Math.max(0,100-8*a.filter(a=>"error"===a.level&&b(a)).length-Math.min(3*a.filter(a=>"warning"===a.level&&b(a)).length,30))}(a.issues),uniqueness:function(a,b){let c=c0.filter(b=>a.includes(b)).length,d=b.vagueSemanticSentences,e=100*Math.max(0,b.ratio-.1),f=a.split(/\n+/u).filter(a=>a.trim()&&!/^\s*(#{1,6}\s+|\||[-*+]\s|>)/u.test(a)).flatMap(a=>a.split(/[。;;]/u)).map(a=>a.replace(/[\s,,、::()()【】[\]《》“”"'`]/gu,"")).filter(a=>a.length>=12);return Math.max(0,Math.round(100-4*c-6*d-.5*e-60*(f.length?(f.length-new Set(f).size)/f.length:0)))}(a.markdown,e)}}async function da(a){let b=await c9({markdown:a.markdown,chapters:a.chapters,template:a.template,factTraces:a.factTraces,issues:a.issues,referenceCompleteBlocks:a.referenceCompleteBlocks,embedDocuments:a.embedDocuments}),c=Math.round((.3*b.completeness+.25*b.specificity+.2*b.compliance+.15*b.executability+.1*b.normalization)*Math.min(1,b.uniqueness/90)),d=a.issues.filter(a=>"error"===a.level).length,e=Math.max(0,Math.min(99,Math.round(c-8*d))),f=a.knowledgeCoverage.score>=95?95:85;return{overall:c,deliveryProbability:e,target:f,passed:e>=f&&0===d,scores:b,templating:await c8(a.markdown,a.embedDocuments),summary:`交付置信度 ${e}% / 目标 ${f}%,综合评分 ${c}/100(资料完整性 ${b.completeness}、方案针对性 ${b.specificity}、合规性 ${b.compliance}、可落地性 ${b.executability}、编制规范性 ${b.normalization}、低雷同性 ${b.uniqueness})`,actions:e>=f&&0===d?["已达到当前质量目标,建议保持事实口径和导出前复核。"]:["按招标评审口径补齐短板维度:章节与强制模块缺失补完整性、项目专属数据补针对性、危大闭环与强制制度补合规性、责任频次闭环句式补可落地性、表格层级与数据一致补规范性、清理空话禁用词与重复句式降雷同。","系统需优先修复阻断问题、扩大本地知识库检索、补抽结构化事实,并将未落位事实写入对应章节。"]}}let db=new Set(["fact-coverage","overview-recap","internal-terminology-anchor","global-consistency-snapshot","data-consistency-snapshot"]);function dc(...a){return a.flat()}var dd=c(91977),de=c(51144);function df(a){let b=Math.max(0,Math.ceil(a.totalChunks||0)),c=Math.max(0,Math.ceil(a.loadedChunks||0)),d=Math.max(0,b-c),e=b>0?c/b:1,f=[...b>=1e3&&e<.35?["切片未完全预加载"]:[],...!1===a.vectorReady?["向量索引未就绪"]:[]];return{totalChunks:b,loadedChunks:c,omittedChunks:d,loadedRatio:e,highRisk:f.length>0,riskReason:f.join("、")||void 0}}async function dg(a){(0,e.Te)(a.signal);let b=[];if(0===a.scopedFilePaths.length)return b;let c=/资源|人|材|机|材料|设备|清单|工程量|BOQ|报价/u.test(a.chapter.title),d=(c?1.6:1)*(/[、,,与和及]/.test(a.chapter.title)?1.4:1),f=Math.ceil((a.highRisk?18:10)*d),h=Math.ceil((a.highRisk?24:14)*(c?1.4:1)),i=Math.ceil((a.highRisk?72:42)*d),j=Math.ceil((a.highRisk?72e3:42e3)*d),k=[...new Set([...a.requiredNeeds||[],...a.extraClues||[]])].slice(0,12),l=(function(a,b=[],c=[]){let d=a.sections||[],e=[...a.requiredFacts,...b,...c],f=(0,de.Cr)(d,a=>(0,de.Ox)(a),{maxItems:16,maxChars:1200},"retrieval-sections").selected,g=(0,de.Cr)(e,a=>(0,de.Ox)(a),{maxItems:16,maxChars:1200},"retrieval-facts").selected,h=/[、,,与和及]/.test(a.title),i=/资源|人|材|机|材料|设备|清单|工程量|BOQ|报价/u.test(a.title),j=/进度|工期|节点/u.test(a.title)?["合同工期","计划工期","日历天","开工","竣工","关键线路","进度计划","施工进度"]:/质量|验收/u.test(a.title)?["质量标准","验收规范","检验批","复验","合格","质量保证","隐蔽验收"]:/安全|危大|风险/u.test(a.title)?["安全措施","风险源","危大工程","应急","检查整改","安全防护","应急预案","基坑支护","基坑开挖","基坑底标高","坡率","支护形式","降水","开挖深度","高支模","专项方案"]:i?["工程量清单","项目特征","材料设备","规格型号","数量单位","劳动力","机械设备","进场计划","资源保障","主要材料","施工机具","材料供应","设备配置"]:/施工|方案|方法|技术|工艺/u.test(a.title)?["施工方法","工艺流程","技术标准","构造做法","控制要点","施工准备"]:["工程范围","施工方法","控制要点","验收要求"],k=h?[...j,...a.title.split(/[、,,与和及]+/u).map(a=>a.trim()).filter(a=>a.length>=4)]:j,l=[...new Set([a.title,...f,...g,...k].flatMap(a=>a.split(/[\s、,,。;;::()()《》【】\-/]+/u)).map(a=>a.trim()).filter(a=>a.length>=2))],m=(0,de.Cr)(l,a=>(0,de.Ox)(a),{maxItems:36,maxChars:1200},"retrieval-tokens").selected,n=h?a.title.split(/[、,,与和及]+/u).map(a=>a.trim()).filter(a=>a.length>=4).map(a=>`${a} ${f.slice(0,6).join(" ")} ${g.slice(0,4).join(" ")}`.trim()):[];return[...new Set([`${a.title} ${f.join(" ")}`.trim(),...g.map(b=>`${a.title} ${b}`.trim()),...f.map(b=>`${a.title} ${b} ${g.slice(0,6).join(" ")}`.trim()),`${a.title} ${k.join(" ")}`.trim(),...n,m.join(" ")].filter(Boolean))]})(a.chapter,a.requiredNeeds,a.extraClues).slice(0,f),m=[...k.map(b=>`${a.chapter.title} ${b} ${(a.chapter.sections||[]).join(" ")}`.trim()).filter(a=>!l.includes(a)).map(a=>({text:a,boost:2,source:"required-fact-evidence"})),...l.map(a=>({text:a,boost:2.4,source:"deep-retrieval"}))];return b.push(...(await (0,e.l$)(m,async b=>{var c;(0,e.Te)(a.signal);let d=await a.manager.search(a.projectRoot,b.text,{scope:"project",filters:{filePaths:a.scopedFilePaths},limit:h,weights:{keyword:.62,vector:.32,rewrite:.9,hybridBonus:.28},generationMode:!0});return(c={chapter:a.chapter,results:d.results.filter(b=>a.scopedFilePaths.includes(b.filePath)),fileRoleByPath:a.fileRoleByPath,fileProcessingByPath:a.fileProcessingByPath,boost:b.boost,source:b.source}).results.map(a=>{let b=c.fileProcessingByPath.get(a.filePath);return{chapterId:c.chapter.id,filePath:a.filePath,score:a.score+c.boost+("table"===b?3:"structured_data"===b?2.6:3.2*("bill_of_quantities"===b)),content:a.content,roleId:c.fileRoleByPath.get(a.filePath),processingType:b,sectionTitle:a.sectionTitle,source:c.source}})},{kind:"deepRetrieval",highRisk:a.highRisk})).flat()),[...(0,g.QR)(b.filter(a=>"required-fact-evidence"===a.source),{maxItems:Math.max(6,3*k.length),maxChars:18e3,preservePinned:!0}),...(0,g.QR)(b.filter(a=>"required-fact-evidence"!==a.source),{maxItems:i,maxChars:j,preservePinned:!0})]}var dh=c(32434),di=c(36003);async function dj(a,b){let c=(0,bc.r4)(a.content);if(0===c.length)return[];let d=[];for(let e of c){let c=e.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&"),f=a.content.match(RegExp(`^###\\s+(?:\\d+(?:\\.\\d+)*[、..\\s]*\\s+)?${c}\\s*\\n([\\s\\S]*?)(?=^#{2,3}\\s+|$)`,"mu")),g=f?.[1]||"",h=await (0,di.AI)(e,(0,di.Ym)(e,a.chapter,a.evidence),b),i=(0,di.uQ)(e,g,h);i&&d.push(`${e}:${i}`)}return d}function dk(a,b){let c=a.trim();if(!c)return[];let d=Math.max(1e3,Math.ceil(b)),e=[],f=0;for(;f<c.length;){let a=Math.min(f+d,c.length),b=c.lastIndexOf("\n\n",a);(b<=f||a-b>.25*d)&&(b=c.lastIndexOf("\n",a)),(b<=f||a-b>.2*d)&&(b=a),e.push(c.slice(f,b).trim()),f=b}return e.filter(Boolean)}function dl(a){return"string"==typeof a?a:a&&"object"==typeof a&&"message"in a?String(a.message):JSON.stringify(a)}function dm(a){let b=Number(process.env[a]);return Number.isFinite(b)&&b>0?Math.ceil(b):0}async function dn(a){var b;(0,e.Te)(a.signal);let c=a.chapters.map(a=>{let b=a.content.replace(/#{1,6}\s+/gu,"").replace(/\*\*/gu,"").replace(/\|/gu," ").replace(/[\n\r]+/gu," ").trim(),c=function(a){let b=[];for(let c of[/(?:总建筑面积|建设规模|总用地面积|总占地面积)[^\n。;;]{0,18}\d+(?:[.,]\d+)?\s*万?\s*(?:㎡|m²|m2|平方米)/gu,/(?:合同估算价|合同估算价格|投资估算|最高投标限价|招标控制价|工程总投资|总投资|工程造价)[^\n。;;]{0,18}\d+(?:[.,]\d+)?\s*万?\s*(?:万元|亿元|元)/gu,/(?:计划工期|合同工期|总工期|施工周期)[^\n。;;]{0,18}\d+\s*(?:日历天|天|个月|月)/gu,/(?:质量标准|质量目标)[^\n。;;]{0,26}/gu,/(?:找平层|抹灰层|防水层|保温层|结合层|垫层|面层|粘结层)[^\n。;;]{0,24}\d+:\d+(?:\.\d+)?/gu]){let d=[...new Set(a.match(c)||[])].slice(0,4);b.push(...d)}return[...new Set(b.map(a=>a.replace(/\s+/gu," ").trim()).filter(Boolean))].join(";")}(a.content);return`章节:${a.title}
31
+ ${e}`,source:function(a){let b=a.toLowerCase();return b.includes(".gov.cn")||b.includes("mohurd")||b.includes("zjt")||a.includes("住建")?"web-policy":"web-evidence"}(b.url),sectionTitle:a.chapterTitle})}}catch{d+=1}return{evidence:c,queries:b,filtered:d}}let cx=[{label:"工程名称",factGroups:["project"],patterns:[/工程名称\s*[::]\s*([^\n|]+)/u],locations:"封面、工程概况、页眉页脚、专项方案、表格标题"},{label:"建设地点",factGroups:["project"],patterns:[/建设地点\s*[::]\s*([^\n|]+)/u,/工程地点\s*[::]\s*([^\n|]+)/u],locations:"工程概况、周边环境、扬尘噪声、交通导改、属地化措施"},{label:"总工期",factGroups:["schedule"],patterns:[/总工期\s*[::]\s*([^\n|]+)/u,/计划工期\s*[::]\s*([^\n|]+)/u,/工期目标\s*[::]\s*([^\n|]+)/u],locations:"工程概况、进度计划、横道图、资源计划、纠偏措施"},{label:"建设规模",factGroups:["project","preciseFacts"],patterns:[/建设规模\s*[::]\s*([^\n|]+)/u,/建筑面积\s*[::]\s*([^\n|]+)/u,/道路长度\s*[::]\s*([^\n|]+)/u,/管线长度\s*[::]\s*([^\n|]+)/u],locations:"工程概况、工程量表、施工部署、资源配置"},{label:"机械数量型号",factGroups:["resources"],patterns:[/([\p{Script=Han}A-Za-z0-9]+(?:机|吊|泵|车))\s*[^\n|]{0,12}(\d+)\s*(台|套|辆)/u],locations:"机械表、平面布置、进度保障、安全专项方案"},{label:"劳动力人数",factGroups:["resources"],patterns:[/劳动力\s*[^\n|]{0,12}(\d+)\s*人/u,/班组\s*[^\n|]{0,12}(\d+)\s*人/u],locations:"劳动力计划、进度节点、抢工方案、工资保障台账"},{label:"危大工程清单",factGroups:["safety","preciseFacts"],patterns:[/危大工程\s*[::]\s*([^\n|]+)/u,/深基坑|高支模|起重吊装|脚手架/u],locations:"安全章节、专项方案、审批表、应急预案"},{label:"环保监测指标",factGroups:["quality","safety","preciseFacts"],patterns:[/PM10|PM2\.5|TSP|噪声|扬尘在线监测/u],locations:"文明施工、扬尘噪声、智慧工地、应急联动"}];function cy(a){return a.replace(/[\s,。;;::|]/gu,"").trim()}let cz=/塔式起重机|履带吊|汽车吊|卷扬机|脚手架|扣件|钢管|模板|噪声|PM2\.5|PM10|TSP|扬尘在线监测|临电|消防|安全网|围挡|洗车台|沉淀池|雾炮/u,cA=/不使用|不采用|不配置|无需|未采用|不得使用|禁止使用/u;function cB(a,b){let c=[];for(let d of b){let b=a[d];if(Array.isArray(b))for(let a of b)a&&"object"==typeof a&&"value"in a&&"string"==typeof a.value&&c.push(a.value)}return c.map(cy).filter(Boolean)}let cC=/([\u4e00-\u9fa5A-Za-z0-9()()]{1,12}?)(\d+(?:\.\d+)?)\s*(?:mm|cm|m|米|MPa|kN|kV|kW|℃|°C|元|万元|人|天|日|个|层|樘|处|套|台|t|吨)([\u4e00-\u9fa5A-Za-z0-9()()]{0,8})/gu,cD=["直径","厚度","宽度","长度","高度","深度","间距","距离","标高","偏差","数量","面积","体积","重量","压力","温度","强度","等级","坡度","规格","尺寸","层数","次数","跨度","半径"];async function cE(a){let b=function(a){let b=[];for(let c of a.split(/\r?\n/u)){let a=c.trim();if(!(/^#{1,6}\s/u.test(a)||/^\s*\|/u.test(a)))for(let c of a.matchAll(RegExp(cC.source,"gu"))){let a=(c[1]||"").trim(),d=Number(c[2]),e=(c[3]||"").trim(),f=`${a}${e}`.replace(/[\s,,、;;::]/gu,"");!(f.length<2)&&/[\u4e00-\u9fa5A-Za-z]{2,}/u.test(f)&&Number.isFinite(d)&&!(d<=0)&&(cD.some(a=>f.replace(/(?:mm|cm|m|MPa|kN|kV|kW|℃|元|万元|人|天|日|个|层|樘|处|套|台|t|吨)/gu,"").replace(/[\s,,、;;::()()]/gu,"")===a)||b.push({concept:f,value:d,raw:c[0]}))}}let c=new Set;return b.filter(a=>{let b=a.raw;return!c.has(b)&&(c.add(b),!0)}).slice(0,60)}(a);if(b.length<3)return[];let c=[...new Set(b.map(a=>a.concept))];if(c.length<2)return[];let d=await (0,be.VN)().embedDocuments(c);if(d.length!==c.length)throw Error(`本地语义模型嵌入数量不一致:期望 ${c.length} 条,实际 ${d.length} 条`);let e=new Map(c.map((a,b)=>[a,d[b]])),f=function(a,b){let c=new Map(a.map(a=>[a,a])),d=a=>{let b=c.get(a)||a;return b===a?a:(c.set(a,d(b)),c.get(a)||a)},e=(a,b)=>{c.set(d(a),d(b))};for(let c=0;c<a.length;c+=1)for(let d=c+1;d<a.length;d+=1)b(a[c],a[d])>=.6&&e(a[c],a[d]);return c}(c,(a,b)=>{let c=e.get(a),d=e.get(b);if(!c||!d||0===c.length||0===d.length)return 0;let f=Math.min(c.length,d.length),g=0;for(let a=0;a<f;a+=1)g+=c[a]*d[a];return g}),g=a=>{let b=a;for(;(f.get(b)||b)!==b;)b=f.get(b)||b;return b},h=new Map;for(let a of b){let b=g(a.concept),c=h.get(b)||[];c.push(a),h.set(b,c)}let i=[];for(let a of h.values()){if(a.length<2)continue;let b=[...new Set(a.map(a=>a.value))];if(b.length<2)continue;let c=Math.max(...b),d=Math.min(...b);if(!(c-d<=.02*c)&&!(c>20*d)&&!(a.filter(a=>/[、/](?:与)?\d/u.test(a.raw)).length>=2)&&(i.push(`“${a[0].concept}”出现多个口径:${[...new Set(a.map(a=>a.raw))].slice(0,3).join("、")}`),i.length>=4))break}return 0===i.length?[]:[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`同一参数概念出现多口径数值冲突:${i.join(";")}`,suggestion:"以绑定资料(图纸/清单/规范)裁决口径为准统一数值表述:每个参数概念全文只保留一个口径数值,删除矛盾表述。"}]}let cF=["电梯","幕墙","智能化","消防","暖通","给排水","电气","燃气","人防","室外","园林","绿化","景观","钢结构","防水","保温","门窗","通风","空调","防雷","接地","动力","照明","拆除","加固","装修","装饰"];var cG=c(27625);let cH=/分[为成]?[^。;;,,\n]{0,12}阶段|共[分设]?[^。;;,,\n]{0,12}阶段|划[分]?为[^。;;,,\n]{0,12}阶段|[二三四五六七八九十]个阶段/u,cI={一:1,二:2,三:3,四:4,五:5,六:6,七:7,八:8,九:9};function cJ(a){return/(\d+|[一二三四五六七八九十]+)\s*个?\s*阶段/u.exec(a)?.[1]??null}function cK(a){let b=a.map(cJ).filter(a=>null!==a).map(a=>/^\d+$/u.test(a)?parseInt(a,10):/^[一二三四五六七八九十]+$/u.test(a)?"十"===a?10:1===a.length?cI[a]??null:a.startsWith("十")?10+(cI[a[1]]??0):a.endsWith("十")?(cI[a[0]]??0)*10:(cI[a[0]]??0)*10+(cI[a[2]]??0):null).filter(a=>null!==a);return 0===b.length?null:1===new Set(b).size?b[0]:null}async function cL(a){let b=[...new Set(a.split(/\n+/u).filter(a=>a.trim()&&!/^\s*(#{1,6}\s+|\|)/u.test(a)).flatMap(a=>a.split(/[。;;]/u)).map(a=>a.replace(/\s+/gu,"").trim()).filter(a=>a.length>=8&&a.length<=60&&cH.test(a)))];if(b.length<2)return[];let c=await (0,be.Mv)(b,b),d=b.map((a,b)=>b),e=a=>{let b=a;for(;d[b]!==b;)b=d[b];let c=a;for(;d[c]!==b;){let a=d[c];d[c]=b,c=a}return b},f=(a,b)=>{d[e(b)]=e(a)};for(let a=0;a<b.length;a+=1)for(let d=a+1;d<b.length;d+=1)c(b[a],b[d])>=.62&&f(a,d);let g=new Map;for(let a=0;a<b.length;a+=1){let c=e(a),d=g.get(c)||[];d.push(b[a]),g.set(c,d)}if(g.size<2||new Set([...g.values()].map(cK).filter(a=>null!==a)).size<2)return[];let h=[...g.values()].map(a=>a.sort((a,b)=>b.length-a.length)[0]).slice(0,4);return[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`施工阶段划分口径不统一:正文出现 ${g.size} 种互异阶段划分口径(${h.map(a=>`“${a.slice(0,16)}”`).join("、")})`,suggestion:"全文统一阶段划分口径:以总进度计划/施工部署章节的划分为唯一口径,其余章节划分句逐字对齐或删除。"}]}var cM=c(41991);let cN=/应急预案|应急措施|应急响应|应急救援|突发事件|应急管理|应急物资|应急演练|应急组织|应急保障/u,cO=/应急|突发|救援|预案|抢险|疏散/u,cP=["应急预案的编制与响应流程","突发事件应急处置措施","应急救援组织体系与保障"],cQ=["应急照明系统安装调试","应急电源配置与切换方案"],cR={organization:"应急管理领导小组、应急救援队伍的组织机构与职责分工",procedure:"应急处置程序、应急响应流程与应急演练安排",resource:"应急物资、应急器材设备的储备与保障措施"},cS=/应急物资|急救箱|灭火器|沙袋|发电机|水泵|对讲机|应急照明|应急灯|防护服|救援绳|救生衣|铁锹|编织袋|抽水泵|警示带|应急器材/u,cT=/配备|储备|保障|配置|数量|不少于|共计|套|具|个|台|把|只/u,cU=["应急物资储备清单与配备数量","应急救援器材的配置与保障"],cV=["应急照明灯具数量与回路设计","应急电源的电气系统设计"];async function cW(a){return(0,cM.A)({prototypes:[...cP],negativePrototypes:[...cQ],embedDocuments:a})}async function cX(a){return(0,cM.A)({prototypes:[...cU],negativePrototypes:[...cV],embedDocuments:a})}async function cY(a,b){let c=a.split(/\r?\n/u),d=[],e=c.map(a=>{let b=/^(#{2,4})\s+(.+)$/u.exec(a.trim());if(b)return{level:b[1].length,title:b[2].replace(/^\d+(?:\.\d+)*\s+/u,"").trim()}}).filter(a=>void 0!==a).filter(a=>!cN.test(a.title)&&cO.test(a.title)),f=await cW(b),g=e.length>0?await f(e.map(a=>a.title)):[],h=new Set(e.filter((a,b)=>g[b]).map(a=>a.title)),i=a=>cN.test(a)||h.has(a),j=!1,k=[],l=[],m="",n=0;for(let a of c){let b=/^(#{2,4})\s+(.+)$/u.exec(a.trim());if(b){let a=b[1].length,c=b[2].replace(/^\d+(?:\.\d+)*\s+/u,"").trim();if(i(c)){j=!0,k.push(c);continue}a<=3&&j&&(j=!1);continue}if(j&&a.trim()&&!/^\s*\|/u.test(a)){l.push(a);let b=a.replace(/\s+/gu,"");m+=b,n+=b.length}}if(0===k.length)return d;let o=[];n<300&&o.push(`字数仅 ${n} 字(要求 ≥300 字)`);let p=m.match(/.{1,200}/gu)||[],q=Object.values(cR),r=await (0,be.Mv)(p,q),s=a=>p.some(b=>r(b,a)>=be.Eh);s(cR.organization)||o.push("应急组织体系"),s(cR.procedure)||o.push("应急处置程序/演练");let t=await cX(b),u=l.join("。").split(/[。;;]/u).map(a=>a.trim()).filter(a=>cS.test(a)&&cT.test(a)),v=u.length>0?await t(u):[];return s(cR.resource)||v.some(Boolean)||o.push("应急物资保障"),o.length>0&&d.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:`应急预案小节深度不足:${k.join("、")}(缺少:${o.join("、")})`,suggestion:"补写应急组织体系(领导小组/抢险队与职责)、应急处置程序与演练安排、应急物资清单与保障措施,达到可落地深度。",sectionTitle:k[0]}),d}async function cZ(a){let b=await (0,cg.Z2)(a.markdown,a.factsModel,{scopeClassifier:a.factTokenScopeClassifier}),c=bJ(a.tenderRequirements).map(({item:a})=>bI(a)),d=a.markdown.split(/\n/u).filter(a=>/^#{2,4}\s/u.test(a.trim())).map(a=>bS(a)).filter(Boolean).slice(0,80),e=(0,ao.s3)(a.markdown),f=await (0,be.Mv)(c,[...d,...e]),g=await (0,be.Mv)(a.evaluationCriteriaItems||[],d),i=new Map((await Promise.all(a.chapters.map(async b=>[b.title,await a.professionalDepthClassifier.analyze(b.content)]))).filter(a=>!!a[1])),j=(0,ao.t1)(a.markdown),k=await (0,be.Mv)(j.sentences,j.overviewBody?[j.overviewBody]:[]);return[...b4("toc-consistency",()=>a.promptDocumentRules?.forbidToc?[]:[...(0,cg.gN)(a.markdown),...(0,cg.f8)(a.markdown)]),...b4("heading-duplicate",()=>(0,cg.kw)(a.markdown)),...b4("evaluation-criteria-coverage",()=>(0,cg.wl)(a.markdown,a.evaluationCriteriaItems||[],{semanticSimilarity:g})),...await b4("requirements-coverage",()=>bR(a.markdown,a.tenderRequirements,{semanticSimilarity:f,bodyTexts:e})),...b4("fabricated-start-date",()=>(0,ao.cf)(a.markdown,a.factsModel)),...b4("field-value-mismatch",()=>(0,ao.a8)(a.markdown,a.factsModel)),...b4("area-arithmetic",()=>(0,ao.u2)(a.markdown)),...b4("resource-consistency",()=>(0,ao.rA)(a.markdown,{laborPeakAuthority:a.blueprintData?a4(a.blueprintData).laborPeakAuthority:void 0})),...b4("node-schedule-consistency",()=>(0,ao.Et)(a.markdown)),...b4("cross-section-numeric-conflict",()=>(0,ao.H)(a.markdown)),...b4("greening-maintenance-mismatch",()=>(0,ao.x5)(a.markdown,a.factsModel)),...b4("street-light-count-mismatch",()=>(0,ao.Tz)(a.markdown,a.factsModel)),...b4("spec-location-mismatch",()=>(0,ao.$$)(a.markdown,a.factsModel.specAuthorityMap)),...b4("blueprint-citation-consistency",()=>a.blueprintData?ba(a.markdown,a.blueprintData).filter(a=>"error"===a.level):[]),...b4("foundation-form-residue",()=>(0,ao.N$)(a.markdown)),...b4("ambiguous-either-or",()=>(0,ao.Fr)(a.markdown)),...b4("excavation-depth-lock",()=>(0,ao.bq)(a.markdown)),...b4("excavation-hazard-classification",()=>(0,ao.LA)(a.markdown,a.factsModel)),...b4("support-form-fact-consistency",()=>(0,ao.ek)(a.markdown,a.factsModel)),...b4("equipment-entry-timing",()=>(0,ao.fQ)(a.markdown,a.factsModel)),...b4("fabricated-award",()=>(0,ao.hu)(a.markdown,a.factsModel,a.tenderRequirements)),...b4("bidder-qualification-section",()=>(0,ao.Rv)(a.markdown)),...b4("cross-chapter-duplicate-section",()=>(function(a,b){let c=a=>a.replace(/^\d+(?:\.\d+)*[、..\s]*/u,"").replace(/[\s,,、]/gu,""),d=new Map;a.forEach((a,b)=>{let c=(0,aq.GQ)(a.title).replace(/[\s,,、]/gu,"");c&&!d.has(c)&&d.set(c,b)});let e=new Map,f=new Map;a.forEach((a,b)=>{let d=new Set;for(let g of(a.content||"").split(/\r?\n/u)){let a=/^###\s+(.+?)\s*$/u.exec(g.trim());if(!a)continue;let h=c(a[1]);if(h.length<8||d.has(h))continue;d.add(h),f.has(h)||f.set(h,a[1].replace(/^\d+(?:\.\d+)*[、..\s]*/u,"").trim());let i=e.get(h)||[];i.push(b),e.set(h,i)}});let g=new Map;b.forEach(a=>{let b=d.get((0,aq.GQ)(a.title).replace(/[\s,,、]/gu,""));if(void 0!==b)for(let d of a.sections||[]){let a=c(d);if(a.length<8)continue;let e=g.get(a)||[];e.includes(b)||e.push(b),g.set(a,e)}});let h=[];for(let[b,c]of e){if(c.length<2)continue;let d=g.get(b)||[];if(d.length>=2)continue;let e=1===d.length?d[0]:c[0],i=f.get(b)||b;for(let b of c){if(b===e)continue;let c=a[b];h.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",chapterId:c.id,sectionTitle:i,message:`跨章同名小节:“${i}”已在「${a[e].title}」落位,本章(「${c.title}」)同名小节属跨章串章重复,须改写归并`,suggestion:"同一主题小节全文只保留一处(归属章);非归属章的同名小节:内容与本章主题相关则改写标题为可区分的具体主题并归并内容,与本章无关则整节删除(含标题行);修复后全文不得再出现跨章同名小节。"})}}return h})(a.chapters,a.effectiveChapters||a.template.chapters||[])),...b4("basic-info-schedule-field",()=>(0,ao.cT)(a.markdown)),...b4("duplicate-table",()=>(0,ao.ub)(a.markdown)),...b4("duplicate-paragraph",()=>(0,ao.cl)(a.markdown)),...b4("paragraph-tail-repeat",()=>(0,ao.AD)(a.markdown)),...b4("collision-numbered-heading",()=>(0,ao.xR)(a.markdown)),...b4("inverted-date-range",()=>(0,ao.jP)(a.markdown)),...b4("resource-triad-section-hierarchy",()=>(0,ao.zP)(a.markdown)),...await b4("support-system-conflict",()=>(0,ao.r8)(a.markdown,(0,ao.P3)(a.factsModel))),...b4("dangerous-list-consistency",()=>(0,ao.vH)(a.markdown)),...await b4("six-hundred-percent-coverage",()=>(0,ao.sn)(a.markdown)),...await b4("self-undermining-candidate",()=>(0,ao.YN)(a.markdown)),...b4("paragraph-opening-repeat",()=>(0,ao.y2)(a.markdown)),...b4("repeated-word",()=>(0,ao.Xc)(a.markdown)),...await b4("commercial-data-in-body",()=>(0,ao.mC)(a.markdown)),...b4("overview-recap",()=>(0,ao.l4)(a.markdown,{semanticSimilarity:k})),...b4("closure-phrase-density-cap",()=>(0,ao.dF)(a.markdown)),...await b4("parameter-concept-conflict",()=>cE(a.markdown)),...await b4("internal-terminology-anchor",()=>(0,bd.WT)(a.markdown)),...b4("construction-system-coverage",()=>(function(a){let b=[...new Set(a.flatMap(a=>cF.filter(b=>a.title.includes(b))))];if(0===b.length)return[];let c=a.map(a=>a.content||"").join("\n"),d=b.filter(a=>!c.includes(a));if(0===d.length)return[];let e=a.find(a=>d.some(b=>a.title.includes(b)));return[{level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:`章节大纲涉及的专业工程系统在正文零覆盖:${d.join("、")}`,suggestion:"对应章节必须补写该专业工程的施工方案正文(施工概况/施工流程/施工方法,含可核实的工艺参数),不得整章零覆盖。",chapterId:e?.id}]})(a.chapters)),...b4("dangerous-applicability",()=>(0,cG.e6)(a.markdown)),...b4("innovation-tech-coverage",()=>(0,cg.Ef)(a.markdown,a.effectiveChapters||a.template.chapters||[])),...b4("instruction-like-heading",()=>(0,cg.K1)(a.markdown)),...b4("formal-heading-hierarchy",()=>(0,cg.Fv)(a.markdown)),...b4("formal-content-integrity",()=>(0,cg.k0)(a.markdown)),...b4("punctuation-artifact",()=>(0,cg.vZ)(a.markdown)),...b4("table-quality",()=>(0,cg.NS)(a.markdown)),...b4("table-spam",()=>(0,cg.SN)(a.markdown)),...b4("basis-regulations-coverage",()=>(0,cg.AN)(a.markdown,a.blueprintData)),...b4("resource-breakdown-consistency",()=>(0,cg.EJ)(a.markdown,a.blueprintData)),...b4("section-content-integrity",()=>(0,cg.qK)(a.markdown,a.chapters)),...b4("professional-content",()=>(0,cg.ji)(a.chapters,i)),...b4("professional-score",()=>(0,cg.i0)(a.chapters,i)),...b4("generic-professional-content",()=>(0,cg.ST)(a.chapters,i)),...b4("management-measure-number",()=>(0,cg.xX)(a.chapters,i)),...await b4("closed-loop-density",()=>(0,cg.Zu)(a.markdown)),...await b4("cross-chapter-consistency",()=>(0,cg.qm)(a.markdown,a.factsModel,a.scopeConflicts,i)),...await b4("process-spec-conflict",()=>(0,cg.hr)(a.markdown,a.factsModel)),...b4("evidence-usage-coverage",()=>cm(a.markdown,a.factsModel)),...await b4("paragraph-generic",()=>cn(a.markdown,a.professionalDepthClassifier)),...await b4("construction-org-generic-language",()=>(0,ch.Fw)(a.chapters)),...b4("construction-org-control-loop",()=>(0,ch.Hl)(a.chapters)),...b4("construction-org-professional-chain",()=>(0,ch.iX)({markdown:a.markdown,factsModel:a.factsModel,chapters:a.chapters})),...b4("construction-org-consistency",()=>(function(a,b){let c=[];if(!/施工组织设计|施工组织|施组|质量|安全|文明施工/u.test(a))return c;for(let d of cx){let e=cB(b,d.factGroups),f=(function(a,b){let c=[];for(let d of b){let b=new RegExp(d.source,d.flags.includes("g")?d.flags:`${d.flags}g`);for(let d of a.matchAll(b)){let a=cy(d[1]||d[0]||"");!cA.test(a)&&a.length>=2&&a.length<=80&&c.push(a)}}return[...new Set(c)]})(a,d.patterns).filter(a=>!cz.test(a)&&!function(a,b){return 0===b.length||b.some(b=>b.includes(a)||a.includes(b)||a.length>=4&&b.includes(a.slice(0,4)))}(a,e)).slice(0,5);f.length>0&&c.push({level:"warning",message:`施组数据一致性风险:${d.label} 可能与项目图谱/事实不一致(${f.join("、")})`,suggestion:`请核对${d.label}在${d.locations}中的表述,统一以招标文件、项目图谱和可信事实为准。`})}return c})(a.markdown,a.factsModel)),...b4("construction-org-chapter-data-coverage",()=>(function(a,b){let c=[],d=cB(b,["project","schedule","resources","quality","safety","preciseFacts"]);if(0===d.length)return c;for(let b of a)/概况|进度|资源|质量|安全|文明|工资|应急/u.test(`${b.title} ${(b.sections||[]).join(" ")}`)&&(d.some(a=>a.length>=3&&b.content.includes(a.slice(0,Math.min(10,a.length))))||c.push({level:"warning",message:`${b.title} 缺少可识别的项目图谱事实支撑`,suggestion:"请至少引用工程名称、工期、工程量、资源、风险、质量安全目标等项目专属事实之一,避免纯模板化。"}));return c})(a.chapters,a.factsModel)),...b4("construction-org-major-content",()=>(0,ch.Av)(a.chapters,a.markdown)),...b4("construction-org-division-section",()=>(0,ch.CS)(a.chapters,a.markdown)),...b4("major-content-governance",()=>(0,ch.l5)(a.markdown)),...b4("construction-org-bonus-module",()=>(0,ch.b7)(a.chapters)),...b4("chapter-dependency",()=>co(a.chapters,i)),...b4("document-delivery-score",()=>(function(a,b,c,d){let e={factuality:2*!(0,cg.vY)(a,c).some(a=>"error"===a.level),structure:b.length>0&&b.every(b=>a.includes(b.title)&&(0,h.V7)(b.content)>=600)?2:1,depth:0===(0,cg.i0)(b,d).length?2:1,executable:0===co(b,d).length?2:1,evidence:0===cm(a,c).length?2:1},f=e.factuality+e.structure+e.depth+e.executable+e.evidence;return[{level:"info",message:`文档交付评分报告:总分 ${f}/10,事实${e.factuality},结构${e.structure},专业${e.depth},可执行${e.executable},证据${e.evidence}`,suggestion:f>=8?"可交付,但建议继续优化证据使用覆盖率和章节依赖链路。":"建议优先修复低分维度后再导出。"}]})(a.markdown,a.chapters,a.factsModel,i)),...b4("generated-fact-verification",()=>b),...b4("duplicate-basic-info",()=>(0,cg.iC)(a.markdown)),...await b4("formal-style",()=>(0,cg.BV)(a.markdown)),...b4("tertiary-heading",()=>(0,bc.dh)(a.markdown)),...b4("min-chapter-section",()=>(0,cg.Ty)(a.chapters)),...await b4("precise-fact-usage",()=>(0,cg.N1)(a.markdown,a.factsModel,a.chapters)),...await b4("boq-placement",()=>(0,cg.S2)(a.markdown,a.chapters,a.factsModel)),...await b4("stage-phrasing",()=>cL(a.markdown)),...await b4("emergency-section-depth",()=>cY(a.markdown)),...b4("boq-row-trace",()=>(0,ci.QP)((0,ci.JV)(a.markdown,a.factsModel))),...b4("drawing-reference",()=>(0,cg.yd)(a.markdown,a.factsModel)),...b4("web-evidence-leakage",()=>(function(a){let b=[];return cs.test(a)&&b.push({level:"warning",message:"正文包含联网增强过程性表述",suggestion:"请删除联网检索、网页资料、搜索结果等过程性话术,改为正式交付语言。"}),b})(a.markdown)),...b4("formal-placeholder",()=>(0,cg.bM)(a.markdown)),...b4("prompt-example-leak",()=>(0,cg.M$)(a.markdown,a.promptBindings)),...b4("degenerate-content",()=>(0,cg.AC)(a.markdown,a.chapters)),...b4("planned-auto-spec-gate",()=>(0,cg.mR)(a.markdown,a.template)),...b4("planned-structure",()=>(0,bc.UG)(a.markdown,a.template)),...await b4("prompt-document-rule",()=>(0,bc.Ed)(a.markdown,a.promptDocumentRules)),...await b4("local-adaptation-keyword",()=>(0,ao.cJ)(a.markdown,a.factsModel)),...b4("boq-division-coverage",()=>(0,ci.sl)(a.markdown,a.chapters,a.factsModel))]}let c$={project:"项目基础事实",schedule:"工期与节点",quality:"质量目标与验收",safety:"安全文明要求",resources:"资源投入依据",quantities:"清单/图纸/工程量事实",rules:"规范规则与验收要求"};var c_=c(52922);let c0=["精心组织","科学统筹","科学管理","精益求精","全力保障","高效推进","力争优质","力争一流","一流水平","完善体系","最大限度","显著提升","大力落实","严格把控","充分确保","竭力打造","现代化管理","加强管理","提高意识","强化监督","持续完善","及时处理","全方位","常态化","提质增效","高标准","统筹推进"];[...c0];let c1=["危险性较大的分部分项工程安全管理","扬尘污染防治措施","建筑工人实名制管理","农民工工资专用账户与工资支付保障","生产安全事故应急预案与应急演练","绿色施工与四节一环保措施"],c2=["危险源辨识与风险识别评估","编制专项施工方案","组织专家论证并履行审批程序","对作业人员进行安全技术交底","施工过程监测与监控量测","分部分项工程验收","三级配电系统","两级漏电保护装置","漏电保护器与接地保护","实名制考勤与人员管理","农民工工资专用账户银行代发","应急预案编制与响应","绿色施工措施与评价"];function c3(a){return a.replace(/^第[一二三四五六七八九十百千万\d]+[章节]\s*/u,"").replace(/^\d+(?:\.\d+)*[、..\s]+/u,"").replace(/^[((]?[一二三四五六七八九十]+[))、..\s]+/u,"").replace(/\s+/gu,"").trim()}async function c4(a,b){let{blocks:c,completeBlocks:d}=await (0,c_.Pm)(a);return Math.round((.7*Math.min(1,d/Math.max(6,Math.ceil((b&&b>0?b:void 0)??(0,h.V7)(a)/1500)))+.3*(c?d/c:0))*100)}let c5=/目录|层级|编号|表格|表头|分隔线|页码|空小节|缺少规划小节|小节只有标题|缺节/u,c6=/跨章一致性复核|事实一致性冲突|事实冲突|评分项要求|可靠精确参数|应急预案|属地创优|工伤保险|专业评分|深度不足|事实反查|存在多个值|已确认事实未在正文中落位|事实未在正文中落位/u,c7=/缺少规划小节|小节只有标题|空小节|只有标题或表格无正文|小节内容补写未完成|小节生成未达标|同名小节|H4 标题|正文缺少章节标题|小节正文过短/u;async function c8(a,b){let c=await (0,c_.Bt)(a,b),d=(0,c_.Ye)(a),e=a.split(/\n+/u).filter(a=>a.trim()&&!/^\s*(#{1,6}\s+|\||[-*+]\s|>)/u.test(a)).flatMap(a=>a.split(/[。;;]/u)).map(a=>a.replace(/[\s,,、::()()【】[\]《》“”"'`]/gu,"")).filter(a=>a.length>=12),f=e.length?(e.length-new Set(e).size)/e.length:0,g=await (0,c_.gE)(a,b),h=(0,c_.nY)(a);return{level:g.heavyTemplated?"heavy":c.level,fillerRatio:c.ratio,fillerSentences:c.fillerSentences,totalSentences:c.totalSentences,vagueHitCount:d.reduce((a,b)=>a+b.count,0),vaguePhrases:d.map(a=>a.phrase),duplicateSentenceRate:f,crossProjectResidue:h,difficultyCountermeasureRatio:g.ratio,difficultyBothCount:g.bothCount,difficultyCountermeasures:g.countermeasures,difficultyHeavyTemplated:g.heavyTemplated}}async function c9(a){let b=a.markdown.split(/\n{2,}/u).filter(a=>a.trim().length>=30),c=await (0,be.Mv)(b,[...c1,...c2],a.embedDocuments),d=a=>b.some(b=>c(b,a)>=be.Eh),e=await (0,c_.Bt)(a.markdown,a.embedDocuments);return{completeness:function(a,b,c,d){let e=[...a.matchAll(/^#{1,3}\s+(.+)$/gmu)].map(a=>c3(a[1]||"")).filter(a=>a.length>=2),f=1,g=c?.chapters||[];if(g.length>0){let a=g.map(a=>c3(a.title)).filter(Boolean);f=a.filter(a=>e.some(b=>b.includes(a)||a.includes(b))).length/a.length}else b.length>0&&(f=b.filter(a=>e.some(b=>b.includes(c3(a.title))||c3(a.title).includes(b))).length/b.length);return Math.round((.55*f+.45*(c1.filter(d).length/c1.length))*100)}(a.markdown,a.chapters,a.template,d),specificity:function(a,b,c){let d=c.filter(ci.O7),e=d.filter(a=>"used"===a.status),f=d.length?e.length/d.length:1,g=e.map(a=>String(a.value||"").replace(/\s+/gu," ").trim()).filter(a=>a.length>=4&&a.length<=60),h=b.map(a=>(a.content||"").replace(/\s+/gu," ")),i=g.filter(a=>h.filter(b=>b.includes(a)).length>=2).length;return Math.round((.55*f+.45*(g.length?i/g.length:1))*100)}(a.markdown,a.chapters,a.factTraces),compliance:function(a,b){let c=c2.filter(b).length/c2.length,d=(0,c_.JD)(a);return Math.round((.8*c+.1*(d.twoStepComplete?1:d.categories.length>0&&d.graded?.6:.3*(d.categories.length>0))+.1*(0,c_.bH)(a).coverage)*100)}(a.markdown,d),executability:await c4(a.markdown,a.referenceCompleteBlocks),normalization:function(a){let b=a=>"table"===a.category||"format"===a.category||("structure"===a.category?c7.test(a.message):!a.category&&!c6.test(a.message)&&c5.test(a.message));return Math.max(0,100-8*a.filter(a=>"error"===a.level&&b(a)).length-Math.min(3*a.filter(a=>"warning"===a.level&&b(a)).length,30))}(a.issues),uniqueness:function(a,b){let c=c0.filter(b=>a.includes(b)).length,d=b.vagueSemanticSentences,e=100*Math.max(0,b.ratio-.1),f=a.split(/\n+/u).filter(a=>a.trim()&&!/^\s*(#{1,6}\s+|\||[-*+]\s|>)/u.test(a)).flatMap(a=>a.split(/[。;;]/u)).map(a=>a.replace(/[\s,,、::()()【】[\]《》“”"'`]/gu,"")).filter(a=>a.length>=12);return Math.max(0,Math.round(100-4*c-6*d-.5*e-60*(f.length?(f.length-new Set(f).size)/f.length:0)))}(a.markdown,e)}}async function da(a){let b=await c9({markdown:a.markdown,chapters:a.chapters,template:a.template,factTraces:a.factTraces,issues:a.issues,referenceCompleteBlocks:a.referenceCompleteBlocks,embedDocuments:a.embedDocuments}),c=Math.round((.3*b.completeness+.25*b.specificity+.2*b.compliance+.15*b.executability+.1*b.normalization)*Math.min(1,b.uniqueness/90)),d=a.issues.filter(a=>"error"===a.level).length,e=Math.max(0,Math.min(99,Math.round(c-8*d))),f=a.knowledgeCoverage.score>=95?95:85;return{overall:c,deliveryProbability:e,target:f,passed:e>=f&&0===d,scores:b,templating:await c8(a.markdown,a.embedDocuments),summary:`交付置信度 ${e}% / 目标 ${f}%,综合评分 ${c}/100(资料完整性 ${b.completeness}、方案针对性 ${b.specificity}、合规性 ${b.compliance}、可落地性 ${b.executability}、编制规范性 ${b.normalization}、低雷同性 ${b.uniqueness})`,actions:e>=f&&0===d?["已达到当前质量目标,建议保持事实口径和导出前复核。"]:["按招标评审口径补齐短板维度:章节与强制模块缺失补完整性、项目专属数据补针对性、危大闭环与强制制度补合规性、责任频次闭环句式补可落地性、表格层级与数据一致补规范性、清理空话禁用词与重复句式降雷同。","系统需优先修复阻断问题、扩大本地知识库检索、补抽结构化事实,并将未落位事实写入对应章节。"]}}let db=new Set(["fact-coverage","overview-recap","internal-terminology-anchor","global-consistency-snapshot","data-consistency-snapshot"]);function dc(...a){return a.flat()}var dd=c(91977),de=c(51144);function df(a){let b=Math.max(0,Math.ceil(a.totalChunks||0)),c=Math.max(0,Math.ceil(a.loadedChunks||0)),d=Math.max(0,b-c),e=b>0?c/b:1,f=[...b>=1e3&&e<.35?["切片未完全预加载"]:[],...!1===a.vectorReady?["向量索引未就绪"]:[]];return{totalChunks:b,loadedChunks:c,omittedChunks:d,loadedRatio:e,highRisk:f.length>0,riskReason:f.join("、")||void 0}}async function dg(a){(0,e.Te)(a.signal);let b=[];if(0===a.scopedFilePaths.length)return b;let c=/资源|人|材|机|材料|设备|清单|工程量|BOQ|报价/u.test(a.chapter.title),d=(c?1.6:1)*(/[、,,与和及]/.test(a.chapter.title)?1.4:1),f=Math.ceil((a.highRisk?18:10)*d),h=Math.ceil((a.highRisk?24:14)*(c?1.4:1)),i=Math.ceil((a.highRisk?72:42)*d),j=Math.ceil((a.highRisk?72e3:42e3)*d),k=[...new Set([...a.requiredNeeds||[],...a.extraClues||[]])].slice(0,12),l=(function(a,b=[],c=[]){let d=a.sections||[],e=[...a.requiredFacts,...b,...c],f=(0,de.Cr)(d,a=>(0,de.Ox)(a),{maxItems:16,maxChars:1200},"retrieval-sections").selected,g=(0,de.Cr)(e,a=>(0,de.Ox)(a),{maxItems:16,maxChars:1200},"retrieval-facts").selected,h=/[、,,与和及]/.test(a.title),i=/资源|人|材|机|材料|设备|清单|工程量|BOQ|报价/u.test(a.title),j=/进度|工期|节点/u.test(a.title)?["合同工期","计划工期","日历天","开工","竣工","关键线路","进度计划","施工进度"]:/质量|验收/u.test(a.title)?["质量标准","验收规范","检验批","复验","合格","质量保证","隐蔽验收"]:/安全|危大|风险/u.test(a.title)?["安全措施","风险源","危大工程","应急","检查整改","安全防护","应急预案","基坑支护","基坑开挖","基坑底标高","坡率","支护形式","降水","开挖深度","高支模","专项方案"]:i?["工程量清单","项目特征","材料设备","规格型号","数量单位","劳动力","机械设备","进场计划","资源保障","主要材料","施工机具","材料供应","设备配置"]:/施工|方案|方法|技术|工艺/u.test(a.title)?["施工方法","工艺流程","技术标准","构造做法","控制要点","施工准备"]:["工程范围","施工方法","控制要点","验收要求"],k=h?[...j,...a.title.split(/[、,,与和及]+/u).map(a=>a.trim()).filter(a=>a.length>=4)]:j,l=[...new Set([a.title,...f,...g,...k].flatMap(a=>a.split(/[\s、,,。;;::()()《》【】\-/]+/u)).map(a=>a.trim()).filter(a=>a.length>=2))],m=(0,de.Cr)(l,a=>(0,de.Ox)(a),{maxItems:36,maxChars:1200},"retrieval-tokens").selected,n=h?a.title.split(/[、,,与和及]+/u).map(a=>a.trim()).filter(a=>a.length>=4).map(a=>`${a} ${f.slice(0,6).join(" ")} ${g.slice(0,4).join(" ")}`.trim()):[];return[...new Set([`${a.title} ${f.join(" ")}`.trim(),...g.map(b=>`${a.title} ${b}`.trim()),...f.map(b=>`${a.title} ${b} ${g.slice(0,6).join(" ")}`.trim()),`${a.title} ${k.join(" ")}`.trim(),...n,m.join(" ")].filter(Boolean))]})(a.chapter,a.requiredNeeds,a.extraClues).slice(0,f),m=[...k.map(b=>`${a.chapter.title} ${b} ${(a.chapter.sections||[]).join(" ")}`.trim()).filter(a=>!l.includes(a)).map(a=>({text:a,boost:2,source:"required-fact-evidence"})),...l.map(a=>({text:a,boost:2.4,source:"deep-retrieval"}))];return b.push(...(await (0,e.l$)(m,async b=>{var c;(0,e.Te)(a.signal);let d=await a.manager.search(a.projectRoot,b.text,{scope:"project",filters:{filePaths:a.scopedFilePaths},limit:h,weights:{keyword:.62,vector:.32,rewrite:.9,hybridBonus:.28},generationMode:!0});return(c={chapter:a.chapter,results:d.results.filter(b=>a.scopedFilePaths.includes(b.filePath)),fileRoleByPath:a.fileRoleByPath,fileProcessingByPath:a.fileProcessingByPath,boost:b.boost,source:b.source}).results.map(a=>{let b=c.fileProcessingByPath.get(a.filePath);return{chapterId:c.chapter.id,filePath:a.filePath,score:a.score+c.boost+("table"===b?3:"structured_data"===b?2.6:3.2*("bill_of_quantities"===b)),content:a.content,roleId:c.fileRoleByPath.get(a.filePath),processingType:b,sectionTitle:a.sectionTitle,source:c.source}})},{kind:"deepRetrieval",highRisk:a.highRisk})).flat()),[...(0,g.QR)(b.filter(a=>"required-fact-evidence"===a.source),{maxItems:Math.max(6,3*k.length),maxChars:18e3,preservePinned:!0}),...(0,g.QR)(b.filter(a=>"required-fact-evidence"!==a.source),{maxItems:i,maxChars:j,preservePinned:!0})]}var dh=c(32434),di=c(36003);async function dj(a,b){let c=(0,bc.r4)(a.content);if(0===c.length)return[];let d=[];for(let e of c){let c=e.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&"),f=a.content.match(RegExp(`^###\\s+(?:\\d+(?:\\.\\d+)*[、..\\s]*\\s+)?${c}\\s*\\n([\\s\\S]*?)(?=^#{2,3}\\s+|$)`,"mu")),g=f?.[1]||"",h=await (0,di.AI)(e,(0,di.Ym)(e,a.chapter,a.evidence),b),i=(0,di.uQ)(e,g,h);i&&d.push(`${e}:${i}`)}return d}function dk(a,b){let c=a.trim();if(!c)return[];let d=Math.max(1e3,Math.ceil(b)),e=[],f=0;for(;f<c.length;){let a=Math.min(f+d,c.length),b=c.lastIndexOf("\n\n",a);(b<=f||a-b>.25*d)&&(b=c.lastIndexOf("\n",a)),(b<=f||a-b>.2*d)&&(b=a),e.push(c.slice(f,b).trim()),f=b}return e.filter(Boolean)}function dl(a){return"string"==typeof a?a:a&&"object"==typeof a&&"message"in a?String(a.message):JSON.stringify(a)}function dm(a){let b=Number(process.env[a]);return Number.isFinite(b)&&b>0?Math.ceil(b):0}async function dn(a){var b;(0,e.Te)(a.signal);let c=a.chapters.map(a=>{let b=a.content.replace(/#{1,6}\s+/gu,"").replace(/\*\*/gu,"").replace(/\|/gu," ").replace(/[\n\r]+/gu," ").trim(),c=function(a){let b=[];for(let c of[/(?:总建筑面积|建设规模|总用地面积|总占地面积)[^\n。;;]{0,18}\d+(?:[.,]\d+)?\s*万?\s*(?:㎡|m²|m2|平方米)/gu,/(?:合同估算价|合同估算价格|投资估算|最高投标限价|招标控制价|工程总投资|总投资|工程造价)[^\n。;;]{0,18}\d+(?:[.,]\d+)?\s*万?\s*(?:万元|亿元|元)/gu,/(?:计划工期|合同工期|总工期|施工周期)[^\n。;;]{0,18}\d+\s*(?:日历天|天|个月|月)/gu,/(?:质量标准|质量目标)[^\n。;;]{0,26}/gu,/(?:找平层|抹灰层|防水层|保温层|结合层|垫层|面层|粘结层)[^\n。;;]{0,24}\d+:\d+(?:\.\d+)?/gu]){let d=[...new Set(a.match(c)||[])].slice(0,4);b.push(...d)}return[...new Set(b.map(a=>a.replace(/\s+/gu," ").trim()).filter(Boolean))].join(";")}(a.content);return`章节:${a.title}
32
32
  数值口径清单:${c||"(未提取到总量口径数字)"}
33
33
  正文摘要:${b.slice(0,600)}`}).join("\n\n---\n\n"),d=function(a){let b=Math.ceil(a.totalChars/Math.max(1e3,a.chunkChars)),c="chapter"===a.phase?dm("DOCUMENT_CHAPTER_REVIEW_MAX_CHUNKS")||Math.min(Math.max(2,Math.floor(a.totalChars/a.chapterCount/4e3)),b):"global"===a.phase?dm("DOCUMENT_GLOBAL_REVIEW_MAX_CHUNKS")||Math.min(4,b):dm("DOCUMENT_FINAL_REVIEW_MAX_CHUNKS")||Math.min(6,b);return{chunks:c,budgetPerChunk:Math.ceil(a.totalChars/Math.max(1,c)),maxIssues:Math.max(4,Math.min(28,Math.ceil(2.5*c)))}}({totalChars:c.length,chapterCount:a.chapters.length,chunkChars:16e3,phase:"global"}),f=dk(c,16e3).map((a,b)=>`**第 ${b+1}/${dk(c,16e3).length} 部分**
34
34
 
@@ -50,7 +50,7 @@ ${m.slice(0,2e3)}
50
50
  若表格首行就是分隔线(缺表头行),必须依据表格数据内容补写一行业务表头(每列一个业务字段名),再紧跟分隔线;表头不得使用泛化字段名。
51
51
  合计/小计/总计/累计行的空单元格一律填“—”(不适用语义);规格型号列中无规格型号的小型机具(蛙式打夯机等)可填“—”(机具无型号,合法);其余单元格一律不得为空、不得用占位符,不得凭空编造型号。
52
52
  若表头第一列是表名(如“竣工清理与移交计划表”),把表名移到表格上方正文叙述中,表头从业务列名开始,并同步校正数据行列对齐。
53
- 保持表头结构与列数不变,不得新增、删除或合并小节;只修改缺陷表格相关局部文本。`,o=await dO({originalContent:b.content,repairRound:"table-repair",diagnostics:a.generationDiagnostics,apply:async()=>(function(a,b){let c=dR(a,b);if(!c)return{content:a,removed:0};let d=dS(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:n,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,cg.NS)(a).filter(a=>"error"===a.level&&/空单元格|占位符单元格|列数不一致/u.test(a.message)&&a.message.includes(i)&&(!j||a.message.includes(j))).length]}),p=o.content;o.rolledBack||p===b.content||(a.finalChapterDrafts[d]={...b,content:k?(0,M.w_)(p,k):p},c+=1);let q=o.rolledBack||o.afterMetrics[0]>0,r=(0,b8.X5)({type:"llm_review",roleId:`agent-table-fix-${b.id}-${e}`,status:q?"failed":"success",message:o.rolledBack?`表格数据修复已回滚:${b.title}(修复后缺陷增多,保留修复前正文)`:q?`表格数据修复未生效:${b.title}`:`表格数据修复完成:${b.title}`,details:[g]},{subtitle:"表格数据修复"});(0,b8.fx)(a.progressStages,r),(0,b8.fx)(a.finalGateRepairStages,r),a.emitProgress(a.finalChapterDrafts,a.progressStages)}}))}c>0&&(a.finalMarkdown=a.rebuildFinalMarkdown(),await a.recomputeFinalValidationBundle())}}let dU={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 dV(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,aA.bb)([(0,bc.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:dU,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 dW(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=function(a){return aR.find(b=>b.id===a)}(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)||function(a,b){let c=aT(a).find(a=>b.test(a));return!!c&&aS.test(c)}(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:"与已锁定决策冲突的表述必须统一为锁定值(或整句删除);禁止保留两套并存的技术路线/机械选型/供应方式。禁止将本缺陷描述与修复要求本身写入正文,输出仅限正文内容。"}))])}async function dX(a){let b=await (0,cg.KI)(a.finalChapterDrafts,a.factsModel,a.scopeConflicts);a.laborPeakAuthority=a4(a.blueprintData).laborPeakAuthority,a.greeningMaintenanceAuthority=(0,ao.Dq)(a.factsModel);let c=await (0,ao.yR)(a.finalChapterDrafts),d=await bZ({chapters:a.finalChapterDrafts,model:a.tenderRequirements,similarity:a.requirementsSimilarity,signal:a.signal});(b.fixedCount>0||c>0||d.fixedCount>0)&&(a.finalMarkdown=a.rebuildFinalMarkdown()),d.fixedCount>0&&(0,b8.fx)(a.progressStages,(0,b8.X5)({type:"validation",roleId:"scoring-requirement-fix",status:"success",message:`评分项响应确定性补写 :${d.fixedCount} 条(${d.details.slice(0,3).join("、")})`,details:d.details.slice(3)},{subtitle:"交付前确 定性清洗"}));let e=(0,ao.qG)(a.finalChapterDrafts);a.surfaceFixContext={laborPeakAuthority:a.laborPeakAuthority,greeningMaintenanceAuthority:a.greeningMaintenanceAuthority};let f=new Map,g=(a,b)=>{b>0&&f.set(a,(f.get(a)??0)+b)};for(let b of a.finalChapterDrafts)for(let c of b_){if(!c.stage5)continue;let d=(0,ao.gD)(b=>c.fix(b,a.surfaceFixContext),b.content,2);d.fixedCount>0&&(b.content=d.markdown,g(c.key,d.fixedCount))}let h=a=>f.get(a)??0,i=h("table-line-residue"),j=h("finish-thickness"),k=h("labor-peak"),l=h("self-undermining"),m=h("empty-scoring-response"),n=h("atlas-reference"),o=h("meta-discourse"),p=h("formula-residue"),q=h("paragraph-opening-repeat"),r=h("truncated-sentence"),s=h("internal-table-row-dup"),t=h("greening-maintenance");(e.removedCount>0||i>0||j>0||k>0||l>0||m>0||n>0||o>0||p>0||q>0||r>0||s>0||t>0)&&(a.finalMarkdown=a.rebuildFinalMarkdown(),(0,b8.fx)(a.progressStages,(0,b8.X5)({type:"validation",roleId:"deterministic-surface-fix",status:"success",message:`交付前确定性清洗:跨章表格去重 ${e.removedCount} 行、断行残片合并 ${i} 处、装饰层厚度修复 ${j} 处、劳动力峰值统一 ${k} 处、段首机械重复剥离 ${q} 处、截断句残留收敛 ${r} 处、元话语声明清洗 ${o} 处、公式形态清洗 ${p} 处、自伤句式改写 ${l} 处、空响应句改写 ${m} 处、图集引用清洗 ${n} 处、表内重复行删除 ${s} 行、绿化养护期统一 ${t} 处、叠词收敛`},{subtitle:"交付前确定性清洗"})));let u=await (0,cg.Yb)(a.finalMarkdown,a.factsModel,a.scopeConflicts);u.fixedCount>0&&(a.finalMarkdown=u.markdown);let v=(0,ao.fE)(a.finalMarkdown,{scheduleAuthority:a.scheduleAuthority,assemblyRateAuthority:a.assemblyRateAuthority,...a4(a.blueprintData),supportAuthority:a.supportAuthority});v.fixedCount>0&&(a.finalMarkdown=v.markdown);let w=(0,ao.hX)(a.finalMarkdown);if(w.fixedCount>0&&(a.finalMarkdown=w.markdown),w.fixedCount>0&&(0,b8.fx)(a.progressStages,(0,b8.X5)({type:"validation",roleId:"table-borne-prose-fix",status:"success",message:`表格承载正文段落改写兜底:${w.fixedCount} 处(${w.details.slice(0,3).join("、")})`,details:w.details.slice(3)},{subtitle:"交付前确定性清洗"})),b.fixedCount>0||u.fixedCount>0||v.fixedCount>0){await a.recomputeFinalValidationBundle();let c=b.fixedCount+u.fixedCount+v.fixedCount,d=[...new Set([...b.details,...u.details,...v.details])];(0,b8.fx)(a.progressStages,(0,b8.X5)({type:"validation",roleId:"deterministic-consistency-fix",status:"success",message:`交付前确定性清洗:${c} 处(${d.slice(0,4).join("、")})`,details:d.slice(4)},{subtitle:"交付前确定性清洗"}))}let x=(0,bc.K7)(a.finalMarkdown);x!==a.finalMarkdown&&(a.finalMarkdown=x,await a.recomputeFinalValidationBundle())}let dY={合规红线:"【合规红线定向修复】",内容质量:"【内容质量定向修复】",数据逻辑:"【数据逻辑一致性定向修复】",内容完整:"【内容完整性定向补写】",本地适配:"【属地适配定向修复】",模板化:"【模板化定向改写】",围串标残留:"【跨项目残留定向清理】"},dZ={合规红线:"该章节正文存在触发废标或硬扣分的合规红线问题。请以局部 patch 方式修复:对照住建部37号令与招标文件实质性条款,将违规/缺失表述改为合规表述(如补写危大分级与审批流程、专家论证安排、实质响应内容),引用现行有效规范编号;不得删除其他合规内容。",内容质量:"该章节正文存在影响得分档位的内容质量问题。请以局部 patch 方式修复:将套话句改写为绑定本项目对象、动作、量化指标与验收闭环的具体表述(每句至少含一个本项目事实或工程对象);术语与清单特征对齐;措施按「具体动作+量化指标+验收标准」格式落地;评分项核心内容前移至小节开头。不得改动事实数据。",数据逻辑:"该章节正文存在前后矛盾或不可量化的数据逻辑问题。请以局部 patch 方式修复:以绑定资料(图纸/工程量清单/规范)为准统一唯一口径,删除矛盾数值;无法反查的数字改为定性表述,禁止编造;控制指标全部改写为可量化、可核查的表述。",内容完整:"该章节正文缺少评分点对应内容或关键要素不完整。请以局部 patch 方式补写缺失内容:内容必须绑定本项目事实与清单特征,按「具体动作+量化指标+验收标准」格式撰写,符合正文已有风格;不新增小节标题、不改动其他内容。",本地适配:"该章节正文缺少属地适配项。请以局部 patch 方式补写:属地创优目标(奖项名称以招标文件要求原文为准)、项目所在地气候专项措施、智慧工地对接项目所在地监管平台、危大属地管控要求等按缺陷描述逐项补齐,与项目实际规模相符,不得编造已获奖项或虚构平台名称。",模板化:"该章节正文被判定为模板化内容(通用表述占比超标/工艺与清单不匹配/通用句式残留)。请以局部 patch 方式改写:将通用表述替换为绑定本项目专属参数(部位、深度、高度、工程量、清单分项)的具体表述;删除“一般来说、通常情况下、按照规范施工”类通用句式;工艺名称逐字对齐清单项目特征。保持段落结构不变。",围串标残留:"该章节正文存在跨项目内容残留(其他项目名称/其他标段参数/其他城市地名/旧模板遗留)。请以局部 patch 方式清理:删除残留内容并改写为绑定本项目的对应表述;如残留内容无本项目对应物,直接删除相关句子。"},d$=[{field:"劳动力高峰人数",pattern:/(?:劳动力|用工)(?:高峰期|高峰|峰值)?[^。;\n\d]{0,18}(\d+(?:\.\d+)?)\s*人/gu},{field:"劳动力高峰人数",pattern:/(?:高峰期|高峰|峰值)[^。;\n\d]{0,14}(\d+(?:\.\d+)?)\s*人/gu},{field:"装配率",pattern:/(?:装配率|预制率)[^。;\n\d%]{0,12}(\d+(?:\.\d+)?)\s*%/gu},{field:"装配率",pattern:/(\d+(?:\.\d+)?)\s*%[^。;\n]{0,6}(?:装配率|预制率)/gu},{field:"支护形式",pattern:/(放坡|喷锚|土钉墙|灌注桩|排桩|地下连续墙|SMW工法桩|钢板桩|复合土钉墙)/gu,contextRequired:/支护|围护|基坑/u},{field:"总工期",pattern:/(?:总工期|计划工期|工期)[^。;\n\d]{0,10}(\d+)\s*(?:个)?(?:日历天|天)/gu},{field:"总建筑面积",pattern:/(?:总建筑面积|单体建筑面积|建筑面积)[^。;\n\d]{0,10}(\d+(?:\.\d+)?)\s*(?:㎡|平方米|m2|m²)/gu},{field:"质量标准",pattern:/质量(?:目标|标准)[^。;\n]{0,14}(合格|优良|省优|国优|市优|[\u4e00-\u9fa5]{2,6}(?:杯|奖))/gu,normalize:a=>a.replace(/^(?:确保|争创|争取|力争|获得|达到|争获|创建|力创|评为|荣获)/u,"")}],d_=(()=>{let a=Number(process.env.DOCUMENT_QINGTIAN_REVIEW_ROUNDS??3);return 0===a?3:Number.isFinite(a)&&a>0?Math.floor(a):3})(),d0={否决级:0,高风险:1,中风险:2,低风险:3},d1={type:"object",required:["issues"],properties:{issues:{type:"array",required:!0,maxItems:12,items:{type:"object",required:!0,properties:{dimension:{type:"string",required:!0},location:{type:"string",required:!0},quote:{type:"string",required:!0,minLength:4},riskLevel:{type:"string",required:!0},basis:{type:"string",required:!0},description:{type:"string",required:!0}}}},templatingLevel:{type:"string"}}};function d2(a,b){let c=[],d=[],e=0;for(let f of a){let a=(0,h.V7)(f.content);d.length>0&&e+a>b&&(c.push(d),d=[],e=0),d.push(f),e+=a}return d.length>0&&c.push(d),c}function d3(a,b=9e3,c=7){let d=[];for(let c of a)d.push(...function(a,b){let c=a.content||"";if((0,h.V7)(c)<=b)return[a];let d=c.split(/\n(?=#{2,4}\s+\S)/u).filter(a=>a.trim().length>0),e=[];for(let a of d){if((0,h.V7)(a)<=b){e.push(a);continue}let c=a.split(/\n\n+/u).filter(a=>a.trim().length>0),d="";for(let a of c)d&&(0,h.V7)(d)+(0,h.V7)(a)>b?(e.push(d),d=a):d=d?`${d}
53
+ 保持表头结构与列数不变,不得新增、删除或合并小节;只修改缺陷表格相关局部文本。`,o=await dO({originalContent:b.content,repairRound:"table-repair",diagnostics:a.generationDiagnostics,apply:async()=>(function(a,b){let c=dR(a,b);if(!c)return{content:a,removed:0};let d=dS(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:n,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,cg.NS)(a).filter(a=>"error"===a.level&&/空单元格|占位符单元格|列数不一致/u.test(a.message)&&a.message.includes(i)&&(!j||a.message.includes(j))).length]}),p=o.content;o.rolledBack||p===b.content||(a.finalChapterDrafts[d]={...b,content:k?(0,M.w_)(p,k):p},c+=1);let q=o.rolledBack||o.afterMetrics[0]>0,r=(0,b8.X5)({type:"llm_review",roleId:`agent-table-fix-${b.id}-${e}`,status:q?"failed":"success",message:o.rolledBack?`表格数据修复已回滚:${b.title}(修复后缺陷增多,保留修复前正文)`:q?`表格数据修复未生效:${b.title}`:`表格数据修复完成:${b.title}`,details:[g]},{subtitle:"表格数据修复"});(0,b8.fx)(a.progressStages,r),(0,b8.fx)(a.finalGateRepairStages,r),a.emitProgress(a.finalChapterDrafts,a.progressStages)}}))}c>0&&(a.finalMarkdown=a.rebuildFinalMarkdown(),await a.recomputeFinalValidationBundle())}}let dU={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 dV(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,aA.bb)([(0,bc.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:dU,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 dW(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=function(a){return aR.find(b=>b.id===a)}(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)||function(a,b){let c=aT(a).find(a=>b.test(a));return!!c&&aS.test(c)}(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:"与已锁定决策冲突的表述必须统一为锁定值(或整句删除);禁止保留两套并存的技术路线/机械选型/供应方式。禁止将本缺陷描述与修复要求本身写入正文,输出仅限正文内容。"}))])}async function dX(a){let b=await (0,cg.KI)(a.finalChapterDrafts,a.factsModel,a.scopeConflicts);a.laborPeakAuthority=a4(a.blueprintData).laborPeakAuthority,a.greeningMaintenanceAuthority=(0,ao.Dq)(a.factsModel);let c=await (0,ao.yR)(a.finalChapterDrafts),d=await bZ({chapters:a.finalChapterDrafts,model:a.tenderRequirements,similarity:a.requirementsSimilarity,signal:a.signal});(b.fixedCount>0||c>0||d.fixedCount>0)&&(a.finalMarkdown=a.rebuildFinalMarkdown()),d.fixedCount>0&&(0,b8.fx)(a.progressStages,(0,b8.X5)({type:"validation",roleId:"scoring-requirement-fix",status:"success",message:`评分项响应确定性补写 :${d.fixedCount} 条(${d.details.slice(0,3).join("、")})`,details:d.details.slice(3)},{subtitle:"交付前确 定性清洗"}));let e=(0,ao.qG)(a.finalChapterDrafts);a.surfaceFixContext={laborPeakAuthority:a.laborPeakAuthority,greeningMaintenanceAuthority:a.greeningMaintenanceAuthority};let f=new Map,g=(a,b)=>{b>0&&f.set(a,(f.get(a)??0)+b)};for(let b of a.finalChapterDrafts)for(let c of b_){if(!c.stage5)continue;let d=(0,ao.gD)(b=>c.fix(b,a.surfaceFixContext),b.content,2);d.fixedCount>0&&(b.content=d.markdown,g(c.key,d.fixedCount))}let h=a=>f.get(a)??0,i=h("table-line-residue"),j=h("finish-thickness"),k=h("labor-peak"),l=h("self-undermining"),m=h("empty-scoring-response"),n=h("atlas-reference"),o=h("meta-discourse"),p=h("formula-residue"),q=h("paragraph-opening-repeat"),r=h("truncated-sentence"),s=h("internal-table-row-dup"),t=h("greening-maintenance"),u=h("paragraph-tail-repeat");(e.removedCount>0||i>0||j>0||k>0||l>0||m>0||n>0||o>0||p>0||q>0||r>0||s>0||t>0||u>0)&&(a.finalMarkdown=a.rebuildFinalMarkdown(),(0,b8.fx)(a.progressStages,(0,b8.X5)({type:"validation",roleId:"deterministic-surface-fix",status:"success",message:`交付前确定性清洗:跨章表格去重 ${e.removedCount} 行、断行残片合并 ${i} 处、装饰层厚度修复 ${j} 处、劳动力峰值统一 ${k} 处、段首机械重复剥离 ${q} 处、截断句残留收敛 ${r} 处、元话语声明清洗 ${o} 处、公式形态清洗 ${p} 处、自伤句式改写 ${l} 处、空响应句改写 ${m} 处、图集引用清洗 ${n} 处、表内重复行删除 ${s} 行、绿化养护期统一 ${t} 处、段内句级复读剥离 ${u} 处、叠词收敛`},{subtitle:"交付前确定性清洗"})));let v=await (0,cg.Yb)(a.finalMarkdown,a.factsModel,a.scopeConflicts);v.fixedCount>0&&(a.finalMarkdown=v.markdown);let w=(0,ao.fE)(a.finalMarkdown,{scheduleAuthority:a.scheduleAuthority,assemblyRateAuthority:a.assemblyRateAuthority,...a4(a.blueprintData),supportAuthority:a.supportAuthority});w.fixedCount>0&&(a.finalMarkdown=w.markdown);let x=(0,ao.hX)(a.finalMarkdown);if(x.fixedCount>0&&(a.finalMarkdown=x.markdown),x.fixedCount>0&&(0,b8.fx)(a.progressStages,(0,b8.X5)({type:"validation",roleId:"table-borne-prose-fix",status:"success",message:`表格承载正文段落改写兜底:${x.fixedCount} 处(${x.details.slice(0,3).join("、")})`,details:x.details.slice(3)},{subtitle:"交付前确定性清洗"})),b.fixedCount>0||v.fixedCount>0||w.fixedCount>0){await a.recomputeFinalValidationBundle();let c=b.fixedCount+v.fixedCount+w.fixedCount,d=[...new Set([...b.details,...v.details,...w.details])];(0,b8.fx)(a.progressStages,(0,b8.X5)({type:"validation",roleId:"deterministic-consistency-fix",status:"success",message:`交付前确定性清洗:${c} 处(${d.slice(0,4).join("、")})`,details:d.slice(4)},{subtitle:"交付前确定性清洗"}))}let y=(0,bc.K7)(a.finalMarkdown);y!==a.finalMarkdown&&(a.finalMarkdown=y,await a.recomputeFinalValidationBundle())}let dY={合规红线:"【合规红线定向修复】",内容质量:"【内容质量定向修复】",数据逻辑:"【数据逻辑一致性定向修复】",内容完整:"【内容完整性定向补写】",本地适配:"【属地适配定向修复】",模板化:"【模板化定向改写】",围串标残留:"【跨项目残留定向清理】"},dZ={合规红线:"该章节正文存在触发废标或硬扣分的合规红线问题。请以局部 patch 方式修复:对照住建部37号令与招标文件实质性条款,将违规/缺失表述改为合规表述(如补写危大分级与审批流程、专家论证安排、实质响应内容),引用现行有效规范编号;不得删除其他合规内容。",内容质量:"该章节正文存在影响得分档位的内容质量问题。请以局部 patch 方式修复:将套话句改写为绑定本项目对象、动作、量化指标与验收闭环的具体表述(每句至少含一个本项目事实或工程对象);术语与清单特征对齐;措施按「具体动作+量化指标+验收标准」格式落地;评分项核心内容前移至小节开头。不得改动事实数据。",数据逻辑:"该章节正文存在前后矛盾或不可量化的数据逻辑问题。请以局部 patch 方式修复:以绑定资料(图纸/工程量清单/规范)为准统一唯一口径,删除矛盾数值;无法反查的数字改为定性表述,禁止编造;控制指标全部改写为可量化、可核查的表述。",内容完整:"该章节正文缺少评分点对应内容或关键要素不完整。请以局部 patch 方式补写缺失内容:内容必须绑定本项目事实与清单特征,按「具体动作+量化指标+验收标准」格式撰写,符合正文已有风格;不新增小节标题、不改动其他内容。",本地适配:"该章节正文缺少属地适配项。请以局部 patch 方式补写:属地创优目标(奖项名称以招标文件要求原文为准)、项目所在地气候专项措施、智慧工地对接项目所在地监管平台、危大属地管控要求等按缺陷描述逐项补齐,与项目实际规模相符,不得编造已获奖项或虚构平台名称。",模板化:"该章节正文被判定为模板化内容(通用表述占比超标/工艺与清单不匹配/通用句式残留)。请以局部 patch 方式改写:将通用表述替换为绑定本项目专属参数(部位、深度、高度、工程量、清单分项)的具体表述;删除“一般来说、通常情况下、按照规范施工”类通用句式;工艺名称逐字对齐清单项目特征。保持段落结构不变。",围串标残留:"该章节正文存在跨项目内容残留(其他项目名称/其他标段参数/其他城市地名/旧模板遗留)。请以局部 patch 方式清理:删除残留内容并改写为绑定本项目的对应表述;如残留内容无本项目对应物,直接删除相关句子。"},d$=[{field:"劳动力高峰人数",pattern:/(?:劳动力|用工)(?:高峰期|高峰|峰值)?[^。;\n\d]{0,18}(\d+(?:\.\d+)?)\s*人/gu},{field:"劳动力高峰人数",pattern:/(?:高峰期|高峰|峰值)[^。;\n\d]{0,14}(\d+(?:\.\d+)?)\s*人/gu},{field:"装配率",pattern:/(?:装配率|预制率)[^。;\n\d%]{0,12}(\d+(?:\.\d+)?)\s*%/gu},{field:"装配率",pattern:/(\d+(?:\.\d+)?)\s*%[^。;\n]{0,6}(?:装配率|预制率)/gu},{field:"支护形式",pattern:/(放坡|喷锚|土钉墙|灌注桩|排桩|地下连续墙|SMW工法桩|钢板桩|复合土钉墙)/gu,contextRequired:/支护|围护|基坑/u},{field:"总工期",pattern:/(?:总工期|计划工期|工期)[^。;\n\d]{0,10}(\d+)\s*(?:个)?(?:日历天|天)/gu},{field:"总建筑面积",pattern:/(?:总建筑面积|单体建筑面积|建筑面积)[^。;\n\d]{0,10}(\d+(?:\.\d+)?)\s*(?:㎡|平方米|m2|m²)/gu},{field:"质量标准",pattern:/质量(?:目标|标准)[^。;\n]{0,14}(合格|优良|省优|国优|市优|[\u4e00-\u9fa5]{2,6}(?:杯|奖))/gu,normalize:a=>a.replace(/^(?:确保|争创|争取|力争|获得|达到|争获|创建|力创|评为|荣获)/u,"")}],d_=(()=>{let a=Number(process.env.DOCUMENT_QINGTIAN_REVIEW_ROUNDS??3);return 0===a?3:Number.isFinite(a)&&a>0?Math.floor(a):3})(),d0={否决级:0,高风险:1,中风险:2,低风险:3},d1={type:"object",required:["issues"],properties:{issues:{type:"array",required:!0,maxItems:12,items:{type:"object",required:!0,properties:{dimension:{type:"string",required:!0},location:{type:"string",required:!0},quote:{type:"string",required:!0,minLength:4},riskLevel:{type:"string",required:!0},basis:{type:"string",required:!0},description:{type:"string",required:!0}}}},templatingLevel:{type:"string"}}};function d2(a,b){let c=[],d=[],e=0;for(let f of a){let a=(0,h.V7)(f.content);d.length>0&&e+a>b&&(c.push(d),d=[],e=0),d.push(f),e+=a}return d.length>0&&c.push(d),c}function d3(a,b=9e3,c=7){let d=[];for(let c of a)d.push(...function(a,b){let c=a.content||"";if((0,h.V7)(c)<=b)return[a];let d=c.split(/\n(?=#{2,4}\s+\S)/u).filter(a=>a.trim().length>0),e=[];for(let a of d){if((0,h.V7)(a)<=b){e.push(a);continue}let c=a.split(/\n\n+/u).filter(a=>a.trim().length>0),d="";for(let a of c)d&&(0,h.V7)(d)+(0,h.V7)(a)>b?(e.push(d),d=a):d=d?`${d}
54
54
 
55
55
  ${a}`:a;d&&e.push(d)}let f=[],g="";for(let a of e)g&&(0,h.V7)(g)+(0,h.V7)(a)>b?(f.push(g),g=a):g=g?`${g}
56
56
 
@@ -83,14 +83,14 @@ ${c.content.slice(0,12e3)}`].filter(Boolean).join("\n\n"),{maxTokens:1200,temper
83
83
  风格要求(补写内容同样必须遵守):
84
84
  ${b.styleRequirements.map(a=>`- ${a}`).join("\n")}`]:[]].join("\n"),n=[...new Set(l.flatMap(a=>a.match(/[\p{Script=Han}]{2,}|[A-Za-z]{3,}|\d+(?:\.\d+)?/gu)||[]).filter(Boolean))].slice(0,60),o=n.reduce((a,b)=>a+ +!!c.content.includes(b),0),p=await dO({originalContent:c.content,repairRound:"requirement-verification",diagnostics:a.generationDiagnostics,beforeMetrics:[o],apply:async()=>{let b=await a.withProgressHeartbeat(()=>(0,f.l8)({template:a.template,chapter:{id:c.id,title:c.title,content:c.content,evidence:c.evidence,missingFacts:c.missingFacts,sections:c.sections},issues:l.map(a=>`用户要求未落实:${a}`),promptTexts:m,requirement:a.requirement,forbidDrawingImages:!1,diagnostics:a.generationDiagnostics,signal:a.signal,patchGuard:(0,f.XG)("requirement-verification",a.generationDiagnostics)}));return b.content&&b.content!==c.content?b.content:c.content},recheck:a=>[n.reduce((b,c)=>b+ +!!a.includes(c),0)],shouldRollback:(a,b)=>b[0]<a[0]});p.rolledBack||p.content===c.content||(a.finalChapterDrafts[i]={...c,content:p.content},g+=1);let q=(0,b8.X5)({type:"llm_review",roleId:`agent-requirement-verification-${c.id}`,status:p.rolledBack?"failed":"success",message:p.rolledBack?`用户要求补写已回滚:${c.title}(修复后要求关键词命中减少,保留修复前正文)`:`用户要求补写完成:${c.title}(${l.length} 条未落实要求已定向补写)`,details:l.map(a=>`- ${a}`)},{subtitle:"用户要求核验"});(0,b8.fx)(a.progressStages,q),(0,b8.fx)(a.finalGateRepairStages,q),a.emitProgress(a.finalChapterDrafts,a.progressStages)}g>0&&(a.finalMarkdown=a.rebuildFinalMarkdown(),await a.recomputeFinalValidationBundle()),a.generationDiagnostics.llm.lastInfo=`用户要求执行核验闭环:${c} 条要求,核验 ${d} 章,${e} 章全部落实,${g} 章完成定向补写(单轮失败即放弃)`}function et(a){return Math.max(0,Math.min(100,Math.round(a)))}async function eu(a){let b=await dz(a),c=a.reduce((a,b)=>a+(b.content.match(/本小节围绕|交底覆盖率按100%|24小时内形成整改责任|按施工准备→过程实施→检查验收→问题整改→资料归档的闭环组织|按作业条件确认→技术交底→过程实施|依据本项目已确认资料中的项目边界/gu)||[]).length,0),d=await (0,c_.Bt)(a.map(a=>a.content).join("\n")),e=400*Math.max(0,d.ratio-.1);return{score:et(100-15*c-25*b.filter(a=>"error"===a.level).length-e),detail:`模板化空话命中 ${c} 处,套话句占比 ${(100*d.ratio).toFixed(1)}%(docx 达标线 ≤10%),废话段问题 ${b.length} 项`}}async function ev(a,b="",c={}){let d=function(a){let b=a.map(a=>`${a.title} ${(a.sections||[]).join(" ")} ${a.content}`).join("\n"),c=[{label:"工程概况",pattern:/工程概况|项目概况|基本概况/u},{label:"主要施工内容",pattern:/主要施工内容/u},{label:"重难点分析",pattern:/重点.{0,4}难点/u},{label:"施工部署",pattern:/施工部署|总体部署|流水/u},{label:"进度计划",pattern:/进度计划|工期保障|工期计划/u},{label:"质量保证",pattern:/质量保证|质量管理|质量控制/u},{label:"安全文明",pattern:/安全.{0,8}(?:管理|措施|文明)|文明施工/u},{label:"资源配置",pattern:/劳动力|机械设备|材料.{0,4}计划|资源配置/u},{label:"绿色环保",pattern:/绿色施工|扬尘|噪声|环保/u},{label:"应急管理",pattern:/应急/u}],d=c.filter(a=>a.pattern.test(b)),e=et(d.length/c.length*100),f=c.filter(a=>!a.pattern.test(b)).map(a=>a.label);return{score:e,detail:`覆盖 ${d.length}/${c.length} 个核心结构组${f.length?`;缺失:${f.join("、")}`:""}`}}(a),e=function(a){let b=a.map(a=>a.content).join("\n"),c=new Set(b.match(dp.s2)||[]),d=new Set(b.match(/工程量|材料|设备|范围|流程|验收|检测|复试|调试|隐蔽|检验批|资料|记录|系统|部位|接口|规格|标准/gu)||[]),e=Math.max(1,b.length),f=c.size/(e/1e3);return{score:et(Math.min(100,22*f+d.size/18*15)),detail:`量化参数 ${c.size} 项(每千字 ${f.toFixed(1)}),专业事实词 ${d.size}/18 类`}}(a),f=function(a){let b=a.map(a=>a.content).join("\n"),c=new Set(b.match(dp.aX)||[]),d=Math.max(1,b.length),e=c.size/(d/1e3);return{score:et(Math.min(100,20*e+40)),detail:`工艺参数 ${c.size} 项(每千字 ${e.toFixed(1)})`}}(a),g=function(a,b=""){let c=(b||a.map(a=>a.content).join("\n\n")).split("\n"),d=0,e=0,f=0;for(;f<c.length;){let a=c[f].trim();if(!/^\|.+\|$/u.test(a)){f+=1;continue}let b=[];for(;f<c.length&&/^\|.+\|$/u.test(c[f].trim());)b.push(c[f].trim()),f+=1;b.length<3||(d+=1,0===b.slice(1).filter(a=>a.replace(/\|/gu,"").replace(/[\s\-:]/gu,"").length>0).reduce((a,b)=>a+b.split("|").slice(1,-1).map(a=>(0,M.jG)(a.trim())).filter(a=>""===a||"-"===a||"—"===a||"/"===a).length,0)&&(e+=1))}return{score:0===d?40:et(e/d*100),detail:`表格 ${d} 个,其中字段完整 ${e} 个`}}(a,b),h=await eu(a),i=function(a){let b=dy(a);return{score:et(100-20*b.length-20*b.filter(a=>"error"===a.level).length),detail:`重复段落问题 ${b.length} 项`}}(a),j=function(a,b=""){let c=b||a.map(a=>a.content).join("\n\n"),d=[{label:"质量标准",pattern:/质量标准|质量要求|合格率/u},{label:"计划工期",pattern:/计划工期|工期要求|日历天/u},{label:"保修",pattern:/缺陷责任期|保修|质保/u},{label:"安全目标",pattern:/安全.{0,8}目标|文明.{0,8}目标/u},{label:"项目经理",pattern:/项目经理|项目负责人/u}],e=d.filter(a=>a.pattern.test(c)),f=d.filter(a=>!a.pattern.test(c));return{score:et(e.length/d.length*100),detail:`招标硬性要求响应 ${e.length}/${d.length} 项${f.length?`(未响应:${f.map(a=>a.label).join("、")})`:""}`}}(a,b),k=[{key:"structure",label:"结构完整度",score:d.score,detail:d.detail,weight:.18},{key:"factLanding",label:"事实落位率",score:e.score,detail:e.detail,weight:.18},{key:"processParameter",label:"工艺参数密度",score:f.score,detail:f.detail,weight:.16},{key:"table",label:"表格完整度",score:g.score,detail:g.detail,weight:.12},{key:"filler",label:"废话控制",score:h.score,detail:h.detail,weight:.14},{key:"duplication",label:"重复控制",score:i.score,detail:i.detail,weight:.12},{key:"reviewResponse",label:"评标响应度",score:j.score,detail:j.detail,weight:.1}],l=et(k.reduce((a,b)=>a+b.score*b.weight,0)),m=c.templating?.level==="heavy"?Math.min(l,54):c.templating?.level==="medium"?Math.min(l,69):l,n=m>=85?"专业":m>=70?"良好":m>=55?"合格":"待提升",o=[...dy(a),...await dz(a),...dB(a),...dC(a)].slice(0,5).map(a=>a.message),p=k.filter(a=>a.score<70).map(a=>`${a.label}(${a.score}分)`);return{total:m,grade:n,dimensions:k,summary:`施工组织设计专业度评分 ${m} 分(${n})${c.templating&&"light"!==c.templating.level?`;模板化等级:${"heavy"===c.templating.level?"重度":"中度"}(降档已生效)`:""}${p.length?`;待提升:${p.join("、")}`:""}`,topIssues:o}}async function ew(a){var b;if(!("heavy"===(b=a.templating).level||b.vagueHitCount>0||b.difficultyHeavyTemplated))return{issues:[],reviewed:!1};let c=(0,c_.T4)(a.markdown),d=[`确定性检测信号:模板化等级=${a.templating.level},套话句占比=${(100*a.templating.fillerRatio).toFixed(1)}%,模糊应答词命中=${a.templating.vagueHitCount}(${a.templating.vaguePhrases.join("、")||"无"}),重难点归因+量化双达标占比=${(100*a.templating.difficultyCountermeasureRatio).toFixed(0)}%,跨项目残留=${a.templating.crossProjectResidue.join("、")||"无"}${c.found.length?`,四新技术命中=${c.found.join("、")}`:""}`,`待复核正文(节选):
85
85
  ${function(a,b=6e3){return[a.match(/#{2,3}\s*[^\n]*(?:重难点|重点难点|工程难点|难点分析)[^\n]*\n[\s\S]{0,3500}/u)?.[0]||"",a.replace(/#{1,6}\s+[^\n]*\n/gu,"").replace(/\s+/gu," ").slice(0,b)].filter(Boolean).join("\n\n").slice(0,b+4e3)}(a.markdown)}`,'返回 JSON:{"issues":["问题1","问题2"]}'];try{let b=await (0,aA.bb)((0,bc.y4)('你是招标技术标评审专家。对施工组织设计做语义级复核,只报告确定性规则覆盖不到的语义问题。\n复核维度(按《施工组织设计全维度校验提示词》判定标尺):\n1. 重难点三级判定:识别精准性(是否点明本项目真实难点而非泛泛而谈)→ 归因合理性(是否说明难点成因/风险来源)→ 对策匹配度(对策是否针对该难点的成因,而非通用措施堆砌);\n2. 术语等效性:同一对象是否前后术语一致(如"砼"与"混凝土"混用需统一),是否出现词面不同但概念等效的双重标准表述;\n3. 四新技术升级价值:若正文声称采用四新技术,其价值表述是否停留在"提升效率"式套话,缺少可对标官方推广目录或替代落后工艺的实质说明。\n每条问题必须包含:问题所在内容简述+判定依据(对应上面哪条维度)+一句话改进建议。\n只报告真实存在的问题,正文无问题时返回空数组;不得编造问题。只返回 JSON。'),d.join("\n\n"),{maxTokens:1200,temperature:0,signal:a.signal,diagnostics:a.diagnostics,taskKind:"structuredGeneration"});return{issues:Array.isArray(b?.issues)?b.issues.filter(a=>"string"==typeof a&&a.length>0).slice(0,6):[],reviewed:!0}}catch{return{issues:[],reviewed:!1}}}async function ex(a){var b;a.reviewChecklist=[{key:"export-gate",label:"导出门禁",passed:(b={exportGate:a.qualityBundle.finalExportGate,qualityReport:a.qualityBundle.qualityReport,repairStrategies:a.qualityBundle.repairStrategies}).exportGate.passed,message:b.exportGate.passed?"导出门禁通过":`仍有 ${b.exportGate.blockingIssues.length} 个阻断问题`},{key:"delivery-probability",label:"交付置信度",passed:b.qualityReport.passed,message:`${b.qualityReport.deliveryProbability}% / ${b.qualityReport.target}%`},{key:"completeness",label:"资料完整性",passed:b.qualityReport.scores.completeness>=85,message:`${b.qualityReport.scores.completeness}/100`},{key:"specificity",label:"方案针对性",passed:b.qualityReport.scores.specificity>=85,message:`${b.qualityReport.scores.specificity}/100`},{key:"compliance",label:"合规性",passed:b.qualityReport.scores.compliance>=80,message:`${b.qualityReport.scores.compliance}/100`},{key:"repair-strategies",label:"修复策略",passed:0===b.repairStrategies.filter(a=>"high"===a.priority).length,message:b.repairStrategies.map(a=>a.title).join("、")||"无高优先级修复策略"}];let c=(0,cg.Ff)(a.validationIssues);a.generationDiagnostics.quality.blockingCount+=c.blocking,a.generationDiagnostics.quality.importantCount+=c.important,a.generationDiagnostics.quality.minorCount+=c.minor,a.telemetry=function(a){let b=[...a.diagnostics.metrics].sort((a,b)=>b.durationMs-a.durationMs).slice(0,5).map(a=>({name:a.name,durationMs:a.durationMs})),c={};for(let[b,d]of Object.entries(a.diagnostics.llm.patchGuardStats||{}))c[b]={hits:d.hits+d.rejects,repaired:d.hits,failed:d.rejects+(d.rollbacks??0)};return{llmCalls:a.diagnostics.llm.calls,llmFailures:a.diagnostics.llm.failures,maxParallelLlm:a.diagnostics.llm.maxActive,searchQueries:a.diagnostics.evidence.searchQueries,evidenceContextChars:a.diagnostics.evidence.contextChars,qualityIssues:{...a.diagnostics.quality},slowMetrics:b,elapsedMs:a.startedAt&&a.endedAt?a.endedAt-a.startedAt:void 0,repairHeat:Object.keys(c).length>0?c:void 0}}({diagnostics:a.generationDiagnostics});let d=a.qualityBundle.finalExportGate.blockingIssues.length;a.telemetry.qualityIssues.blockingCount=d,a.professionalScore=await ev(a.finalChapterDrafts,a.finalMarkdown,{templating:a.qualityBundle.qualityReport.templating}),a.templatingReview=a.qualityBundle.qualityReport.templating?await a.withProgressHeartbeat(()=>ew({templating:a.qualityBundle.qualityReport.templating,markdown:a.finalMarkdown,diagnostics:a.generationDiagnostics,signal:a.signal})):{issues:[],reviewed:!1},a.finalStages=[...a.executionStages,...a.finalGateRepairStages],a.finalStages.push((0,b8.X5)({type:"validation",roleId:"agent-final-gate",status:a.qualityBundle.finalExportGate.passed?"success":"failed",message:a.qualityBundle.finalExportGate.passed?"Agent 最终门禁通过":`Agent 最终门禁阻断 ${d} 个问题`,details:a.qualityBundle.finalExportGate.blockingIssues.map(a=>a.message)},{subtitle:"Agent 最终门禁"}));let e=a.qualityBundle.qualityReport.deliveryProbability<70;a.finalStages.push((0,b8.X5)({type:"validation",roleId:"document-delivery-score",status:a.qualityBundle.qualityReport.passed?"success":a.qualityBundle.finalExportGate.passed?"skipped":"failed",message:a.qualityBundle.finalExportGate.passed&&!a.qualityBundle.qualityReport.passed?`${a.qualityBundle.qualityReport.summary}${e?";置信度低于 70%,建议完成续修后再交付归档":"(导出门禁已通过,作为后续优化建议归档)"}`:a.qualityBundle.qualityReport.summary,details:e&&a.qualityBundle.finalExportGate.passed?[...a.qualityBundle.qualityReport.actions,"续修建议:交付置信度低于 70% 门槛,建议按交付复核清单补齐短板维度后重新生成或续修。"]:a.qualityBundle.qualityReport.actions},{subtitle:"交付评分"})),a.finalStages.push((0,b8.X5)({type:"validation",roleId:"document-professional-score",status:"专业"===a.professionalScore.grade||"良好"===a.professionalScore.grade?"success":"skipped",message:a.professionalScore.summary,details:[...a.professionalScore.dimensions.map(a=>`${a.label}:${a.score} 分(${a.detail})`),...a.professionalScore.topIssues.map(a=>`待修复:${a}`)]},{subtitle:"专业度评分"})),a.qualityBundle.qualityReport.templating&&"light"!==a.qualityBundle.qualityReport.templating.level&&a.finalStages.push((0,b8.X5)({type:"validation",roleId:"document-templating-report",status:"skipped",message:`模板化检测:${"heavy"===a.qualityBundle.qualityReport.templating.level?"重度":"中度"}模板化(套话句占比 ${(100*a.qualityBundle.qualityReport.templating.fillerRatio).toFixed(1)}%,重难点归因+量化双达标占比 ${(100*a.qualityBundle.qualityReport.templating.difficultyCountermeasureRatio).toFixed(0)}%,模糊应答词 ${a.qualityBundle.qualityReport.templating.vagueHitCount} 处)`,details:a.templatingReview.issues},{subtitle:"模板化检测"})),a.writingTaskBrief&&a.finalStages.push((0,b8.X5)({type:"reference",roleId:"document-writing-task-brief",status:"success",message:`写作任务书:${a.writingTaskBrief.documentType},${a.writingTaskBrief.chapters.length} 章任务卡,全局写作焦点 ${a.writingTaskBrief.globalWritingFocus.length} 条`,details:[...a.writingTaskBrief.globalWritingFocus,...a.writingTaskBrief.chapters.slice(0,10).map(a=>`${a.chapterTitle}:覆盖 ${a.mustCover.length} 项`)],subtitle:"写作任务书"})),a.finalStages.push((0,b8.X5)({type:"reference",roleId:"knowledge-coverage",status:a.qualityBundle.knowledgeCoverage.score>=85?"success":"failed",message:`资料确认覆盖率:${a.qualityBundle.knowledgeCoverage.score}%(证据 ${a.qualityBundle.knowledgeCoverage.evidenceCount} 条,文件 ${a.qualityBundle.knowledgeCoverage.confirmedFiles} 份)`,details:[a.qualityBundle.knowledgeCoverage.remediation]},{subtitle:"资料覆盖"})),a.finalStages.push((0,b8.X5)({type:"validation",roleId:"document-review-checklist",status:a.reviewChecklist.every(a=>a.passed)?"success":a.qualityBundle.finalExportGate.passed?"skipped":"failed",message:`交付复核清单:通过 ${a.reviewChecklist.filter(a=>a.passed).length}/${a.reviewChecklist.length}${a.qualityBundle.finalExportGate.passed&&!a.reviewChecklist.every(a=>a.passed)?"(导出门禁已通过,其余项作为优化建议归档)":""}`,details:a.reviewChecklist.map(a=>`${a.passed?"通过":"待修复"}:${a.label}${a.message?`(${a.message})`:""}`)},{subtitle:"交付复核"}));let f=[...a.generationDiagnostics.metrics].sort((a,b)=>b.durationMs-a.durationMs).slice(0,5).map(a=>`${a.name} ${Math.round(a.durationMs/1e3)}秒`).join(","),g=function(a,b=5){return am(a,b).map(([a,b])=>`${a} ${b.calls}次/${(b.inputChars/1e4).toFixed(1)}万字`).join(",")}(a.generationDiagnostics.llm.callBreakdown),h=a.generationDiagnostics.factSanitize?`,事实净化 截断${a.generationDiagnostics.factSanitize.truncated}/丢弃${a.generationDiagnostics.factSanitize.dropped}/编号补全${a.generationDiagnostics.factSanitize.repaired}`:"";a.finalStages.push((0,b8.X5)({type:"validation",roleId:"document-diagnostics",status:"success",message:`性能统计:LLM ${a.generationDiagnostics.llm.calls} 次,失败 ${a.generationDiagnostics.llm.failures} 次,瞬态重试 ${a.generationDiagnostics.llm.retries} 次,schema 校验失败 ${a.generationDiagnostics.llm.schemaFailures} 次,峰值并行 ${a.generationDiagnostics.llm.maxActive},检索 ${a.generationDiagnostics.evidence.searchQueries} 次/${Math.round(a.generationDiagnostics.evidence.searchMs/1e3)} 秒,证据上下文 ${a.generationDiagnostics.evidence.contextChars} 字,噪声过滤 ${a.generationDiagnostics.evidence.filteredNoise} 条,预算裁剪 ${a.generationDiagnostics.evidence.budgetDropped} 条,质量问题 阻断${a.generationDiagnostics.quality.blockingCount}/重要${a.generationDiagnostics.quality.importantCount}/轻微${a.generationDiagnostics.quality.minorCount}${h}${f?`,Top耗时:${f}`:""}${g?`,调用输入Top5:${g}`:""}`,details:[...a.generationDiagnostics.metrics.filter(a=>a.name.startsWith("phase:")).sort((a,b)=>a.startedAt-b.startedAt).map(a=>`${a.name}:${(a.durationMs/1e3).toFixed(1)} 秒`),...function(a,b=5){return am(a,b).map(([a,b])=>{let c=b.cacheHitTokens+b.cacheMissTokens,d=c>0?`,缓存命中 ${Math.round(b.cacheHitTokens/c*100)}%(${b.cacheHitTokens}/${c} token)`:"";return`${a}:${b.calls} 次,输入 ${(b.inputChars/1e4).toFixed(1)} 万字(L3 ${(b.l3Chars/1e4).toFixed(1)} 万字)${d}`})}(a.generationDiagnostics.llm.callBreakdown)]},{subtitle:"后台诊断"}))}let ey={prefixCacheHitRateFloor:.4,budgetDropRatioCeiling:.3,llmFailureRateCeiling:.1};async function ez(a){let b=function(a){let b=[],c=a.llm.promptCacheHitTokens??0,d=c+(a.llm.promptCacheMissTokens??0),e=d>0?c/d:null;null!==e&&e<ey.prefixCacheHitRateFloor&&b.push(`固定前缀缓存命中率 ${(100*e).toFixed(1)}% 低于 40%:固定前缀未收敛,检查 L0/L2 恒定段结构`);let f=a.llm.reasoningTokens??0;f>0&&b.push(`推理 token 累计 ${f}:disableThinking 未生效,检查模型 provider 配置`);let g=a.evidence.raw>0?a.evidence.budgetDropped/a.evidence.raw:null;null!==g&&g>ey.budgetDropRatioCeiling&&b.push(`证据预算裁剪 ${(100*g).toFixed(1)}%(${a.evidence.budgetDropped}/${a.evidence.raw}):裁剪过重,疑似预算配置失配`);let h=a.llm.calls>0?a.llm.failures/a.llm.calls:null;return null!==h&&h>ey.llmFailureRateCeiling&&b.push(`LLM 失败率 ${(100*h).toFixed(1)}%(${a.llm.failures}/${a.llm.calls}):失败率偏高,检查限流与重试策略`),{alerts:b,metrics:{prefixCacheHitRate:e,reasoningTokens:f,budgetDropRatio:g,llmFailureRate:h}}}(a.generationDiagnostics);a.telemetry.healthAlerts=b.alerts,0!==b.alerts.length&&a.finalStages.push((0,b8.X5)({type:"validation",roleId:"document-health-diagnosis",status:"skipped",message:`自动健康诊断:${b.alerts.length} 项告警(不阻断,供配置优化参考)`,details:b.alerts},{subtitle:"健康诊断"}))}async function eA(a){let b=[];for(let a of[...b0,...b2]){let c=b6(a.anchoredTo);if(!c){b.push(`修复器 ${a.id} 锚定检测器 ${a.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}(a.authorities,c.authorities)&&b.push(`修复器 ${a.id}(authorities=${JSON.stringify(a.authorities??[])})与锚定检测器 ${a.anchoredTo}(authorities=${JSON.stringify(c.authorities??[])})权威口径不一致`),"llm-patch"===a.kind&&!a.patchGuard){b.push(`LLM patch 修复器 ${a.id} 未声明 patchGuard(修复过程会重新引入已知坏内容,必须预检)`);continue}for(let c of a.patchGuard?.detectors??[]){let d=b6(c);d?d.deterministicSafe||b.push(`修复器 ${a.id} patchGuard 引用检测器 ${c} 未标记 deterministicSafe(patchGuard 只收录零误伤确定性检测器)`):b.push(`修复器 ${a.id} patchGuard 引用检测器 ${c} 未在注册表声明`)}}for(let[a,c]of b0.entries())b0.slice(0,a).some(a=>a.id===c.id)&&b.push(`确定性修复器锚定声明重复:${c.id}`);let c=new Set(b_.map(a=>a.key));for(let a of c)b0.some(b=>b.id===a)||b.push(`确定性修复器 ${a} 已接入 SURFACE_FIX_STEPS 但未在 DETERMINISTIC_FIXER_ANCHORS 声明锚定检测器`);for(let a of b0)c.has(a.id)||b.push(`确定性修复器锚定声明 ${a.id} 无对应 SURFACE_FIX_STEPS 键(声明多余或键已改名)`);if(b.length>0)throw Error(`检测器/修复器注册表一致性校验失败(${b.length} 项):
86
- ${b.map(a=>`- ${a}`).join("\n")}`);let{chapterDraftsByOrder:d,chapterGenerationStagesByOrder:e,chapterGenerationStages:f,effectiveChapters:i,input:j,hasExplicitOutline:k,failedChapterMessages:n}=a,{signal:o,requirement:p}=j,q=function(a){let{signal:b,requirement:c}=a.input;return{input:a,template:a.template,effectiveChapters:a.effectiveChapters,requirement:c,signal:b,projectRoot:a.projectRoot,projectId:a.projectId,projectMaterialSummary:a.projectMaterialSummary,documentSpec:a.documentSpec,documentBudget:a.documentBudget,promptBindings:a.promptBindings,promptDocumentRules:a.promptDocumentRules,domainProfile:a.domainProfile,scopeConflicts:a.scopeConflicts,evaluationCriteriaItems:a.evaluationCriteriaItems,tenderRequirements:a.tenderRequirements,requirementsSimilarity:a.requirementsSimilarity,factTokenScopeClassifier:a.factTokenScopeClassifier,professionalDepthClassifier:a.professionalDepthClassifier,blueprintData:a.blueprintData,billFactLock:a.billFactLock,requirementSemantics:a.requirementSemantics,generationDiagnostics:a.generationDiagnostics,repairPromptTexts:a.repairPromptTexts,progressStages:a.progressStages,chapterGenerationStages:a.chapterGenerationStages,emitProgress:a.emitProgress,withProgressHeartbeat:a.withProgressHeartbeat,missingItems:a.missingItems,failedChapterMessages:a.failedChapterMessages,indexHealth:a.indexHealth,webResearchReport:a.webResearchReport,hasExplicitOutline:a.hasExplicitOutline,retrievalCoverageReports:a.retrievalCoverageReports,projectMaterialScope:a.projectMaterialScope,writingTaskBrief:a.writingTaskBrief,globalConsistencyIssues:a.globalConsistencyIssues,agentWorkflow:a.agentWorkflow,factExtractionPromptTexts:a.factExtractionPromptTexts,readiness:a.readiness,promptPlan:a.promptPlan,allEvidence:a.allEvidence,facts:{},structuredFacts:[],governedStructuredFacts:[],factsModel:void 0,chapterDrafts:[],finalChapterDrafts:[],finalMarkdown:"",validationIssues:[],baseValidationIssues:[],executionStages:[],finalGateRepairStages:[],qingtianReviewBlockingIssues:[],sources:[],qualityBundle:void 0,scheduleAuthority:void 0,assemblyRateAuthority:void 0,scaleSummary:void 0,supportAuthority:void 0,laborPeakAuthority:void 0,greeningMaintenanceAuthority:void 0,surfaceFixContext:{laborPeakAuthority:void 0,greeningMaintenanceAuthority:void 0},decisionLockEntries:[],finalStages:[],reviewChecklist:[],telemetry:void 0,professionalScore:void 0,templatingReview:{issues:[],reviewed:!1},assets:[],validation:void 0,rebuildFinalMarkdown:()=>"",recomputeFinalValidationBundle:async()=>void 0}}(a),r=d.filter(a=>!!a);if(q.chapterDrafts=r,f.push(...e.filter(a=>!!a)),0===r.length)throw Error(`章节生成未完成:${n.join(";")||"没有生成任何有效章节"}`);if(k&&r.length<i.length)throw Error(`OUTLINE 指定 ${i.length} 章,实际只生成 ${r.length} 章:${n.join(";")||"部分章节未生成"}`);await b9(q),await dM(q);let s=(0,bc.rs)((0,bc.V3)({templateId:q.template.id,templateName:q.template.name,title:q.template.outputTitle,requirement:q.requirement||"",projectRoot:q.projectRoot,projectId:q.projectId,exportSettings:q.template.exportSettings,generationSettings:q.template.generationSettings,facts:q.facts,structuredFacts:q.structuredFacts,factsModel:q.factsModel,chapters:q.chapterDrafts,sources:q.sources,missingItems:[...new Set(q.missingItems)],validation:q.validation,validationIssues:q.validationIssues,executionStages:q.executionStages,exportGate:{passed:!1,blockingIssues:[],checklist:[]},assets:q.assets,partialChapters:q.chapterDrafts.map(a=>({id:a.id,title:a.title,chars:(0,h.V7)(a.content),status:ak(a,q.documentBudget.chapterTargets.get(a.id)),updatedAt:Date.now()})),checkpointChapters:q.chapterDrafts,generatedAt:Date.now()},{forbidDrawingImages:!1,promptRules:q.promptDocumentRules}),q.chapterDrafts,{forbidDrawingImages:!1,promptRules:q.promptDocumentRules});q.finalChapterDrafts=s.chapters.map(a=>{let b=q.effectiveChapters.find(b=>b.id===a.id)||a;return{...a,sections:a.sections||[],content:(0,M.w_)(a.content,b)}}),q.finalMarkdown=(0,bc.rs)((0,bc.V3)({templateId:q.template.id,templateName:q.template.name,title:q.template.outputTitle,requirement:q.requirement||"",projectRoot:q.projectRoot,projectId:q.projectId,exportSettings:q.template.exportSettings,generationSettings:q.template.generationSettings,facts:q.facts,structuredFacts:q.structuredFacts,factsModel:q.factsModel,chapters:q.finalChapterDrafts,sources:q.sources,missingItems:[...new Set(q.missingItems)],validation:q.validation,validationIssues:q.validationIssues,executionStages:q.executionStages,exportGate:{passed:!1,blockingIssues:[],checklist:[]},assets:q.assets,partialChapters:[],checkpointChapters:q.finalChapterDrafts,generatedAt:Date.now()},{forbidDrawingImages:!1,promptRules:q.promptDocumentRules}),q.finalChapterDrafts,{forbidDrawingImages:!1,promptRules:q.promptDocumentRules}).markdown,q.finalMarkdown=(0,ao._D)((0,M.Ht)(dI((0,bc.bR)((0,bc.kT)((0,bc.K7)(dE(X(q.finalMarkdown,q.structuredFacts),q.projectMaterialSummary)))),q.template))).markdown,await dN(q),await dP(q),await dT(q),await dW(q),await dX(q),await d8(q),await ei(q),await er(q),await es(q),await ex(q),await ez(q);let t=q.finalChapterDrafts.map(a=>({...a,evidence:(0,g.QR)(a.evidence||[],{preservePinned:!0})}));return q.finalChapterDrafts=t,{templateId:q.template.id,templateName:q.template.name,title:q.template.outputTitle,requirement:p||"",projectRoot:q.projectRoot,projectId:q.projectId,exportSettings:q.template.exportSettings,generationSettings:q.template.generationSettings,facts:q.facts,structuredFacts:q.structuredFacts,factsModel:q.factsModel,chapters:t,sources:q.sources,missingItems:[...new Set(q.missingItems)],validation:q.validation,validationIssues:q.validationIssues,exportGate:q.qualityBundle.finalExportGate,executionStages:q.finalStages,assets:q.assets,partialChapters:q.finalChapterDrafts.map(a=>({id:a.id,title:a.title,chars:(0,h.V7)(a.content),status:ak(a,q.documentBudget.chapterTargets.get(a.id)),updatedAt:Date.now()})),checkpointChapters:t,promptRules:q.promptDocumentRules,agentWorkflow:q.agentWorkflow,reviewMetadata:{chapterSummaries:[],globalIssues:[],diagnostics:q.generationDiagnostics,profile:function(a){let b=`${a.template.name} ${a.template.outputTitle||""} ${a.requirement||""} ${a.chapters.map(a=>a.title).join(" ")}`,c=[{pattern:/专项施工|危大|专项方案/u,type:"专项施工方案",dimensions:["专项对象边界","工艺参数","风险控制","验收要求","应急措施"]},{pattern:/投标|技术标|响应|招标/u,type:"投标技术方案",dimensions:["招标响应","技术优势","工期质量安全承诺","资源保障","履约可实施性"]},{pattern:/监理|旁站|巡视|平行检验/u,type:"监理规划/细则",dimensions:["监理目标","旁站巡视","平行检验","验收程序","资料签认"]},{pattern:/可研|可行性|项目建议书|投资估算/u,type:"可研/项目建议类文档",dimensions:["建设必要性","方案比选","投资估算","风险分析","实施效益"]},{pattern:/运维|维护|保养|巡检/u,type:"运维维护方案",dimensions:["巡检频次","维护流程","故障响应","备品备件","记录闭环"]}].find(a=>a.pattern.test(b));return{type:c?.type||"施工组织设计/施工技术方案",dimensions:c?.dimensions||["工程概况","施工部署","进度质量安全","资源配置","施工工艺和验收闭环"],requiredEvidencePolicy:"本地知识库为完整事实源;系统暂未确认的事实必须通过扩大检索、事实补抽或落位修复解决,不得归因为用户资料缺失。"}}({template:q.template,chapters:i,requirement:p}),knowledgeCoverage:q.qualityBundle.knowledgeCoverage,factTraces:q.qualityBundle.factTraces,chapterCoverage:q.qualityBundle.chapterCoverage,retrievalCoverage:q.retrievalCoverageReports,qualityReport:q.qualityBundle.qualityReport,repairStrategies:q.qualityBundle.repairStrategies,reviewChecklist:q.reviewChecklist,professionalScore:q.professionalScore,templatingReviewIssues:q.templatingReview.issues,writingTaskBrief:q.writingTaskBrief,workflowVersion:m.x,telemetry:q.telemetry,qualityBenchmark:await l(q.finalMarkdown)},generatedAt:Date.now(),markdown:q.finalMarkdown}}var eB=c(23021);function eC(a){return a.replace(/\s+/gu,"").toLowerCase()}var eD=c(30355),eE=c(2773);async function eF(a){a.planning.generationDiagnostics.metrics.push({name:"phase:plan",startedAt:a.planning.planPhaseStartedAt,endedAt:Date.now(),durationMs:Date.now()-a.planning.planPhaseStartedAt}),a.chapterLoop.draftPhaseStartedAt=Date.now();for(let b=0;b<a.planning.effectiveChapters.length;b+=a.blueprint.chapterConcurrency){let c=a.planning.effectiveChapters.slice(b,b+a.blueprint.chapterConcurrency);for(let d of(await Promise.all(c.map(async(c,d)=>{let i,j=b+d;(0,e.Te)(a.global.input.signal);let k=a.understanding.rolePoolRisk??df({totalChunks:0,loadedChunks:0,vectorReady:void 0}),l=a.blueprint.blueprintActive?{missing:[],failedChecks:[]}:function(a,b,c){let d=aZ(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}}(c.title,a.blueprint.integratedBlueprint?.validation,a.planning.chapterIntentClassifier);if(l.missing.length>0){let b=l.failedChecks.length>0?`蓝图校验项「${l.failedChecks.join("、")}」未通过`:"蓝图校验未通过或构建异常";throw a.global.progressStages.push((0,b8.X5)({type:"chapter_generation",roleId:"chapter_generation",status:"failed",message:`${(0,aq.GQ)(c.title)} 依赖蓝图权威 [${l.missing.join("、")}],${b},已按节点级把关阻断生成`,details:["数值密集型章所需蓝图权威不可用时禁止无权威成稿","请检查清单解析与蓝图构建诊断后重试"],progress:{current:j+1,total:a.planning.effectiveChapters.length,label:"章节阻断"}},{subtitle:(0,aq.GQ)(c.title),order:j})),a.global.emitProgress(),Error(`${(0,aq.GQ)(c.title)} 依赖蓝图权威 [${l.missing.join("、")}],${b},已按节点级把关阻断生成`)}let m=Date.now(),o=a.global.progressStages.length;try{let b,d;a.global.progressStages.push((0,b8.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:a.prepare.promptPlan.writerPrompts[0]?.id,status:"running",message:`${(0,aq.GQ)(c.title)} 正在检索证据并准备章节内容`,details:[`章节序号:${j+1}/${a.planning.effectiveChapters.length}`,`二级小节:${c.sections?.length||0} 个`,"正在生成检索查询"],progress:{current:j+1,total:a.planning.effectiveChapters.length,label:"章节生成"}},{subtitle:(0,aq.GQ)(c.title),order:j})),a.global.emitProgress();let p=a.global.input.resumeChapters?.find(a=>a.id===c.id||a.title===c.title),q=p?.content?.trim(),r=p?.evidence?.length?[...p.evidence]:[],s=a.prepare.projectUnderstanding.chapterPlans.find(a=>a.chapterId===c.id||a.chapterTitle===c.title),t=s?Object.values(s.evidenceQueries).flat().filter(Boolean):[],u=c.queries.length>0?c.queries:[a.prepare.template.name,a.prepare.template.outputTitle,c.title],v=a.understanding.chapterGraphMap.get(c.id);if(a.understanding.projectGraph&&v&&v.graphFiles.size>0){let b=[...a.understanding.availableEvidenceScopePaths],d=a=>b.includes(a)?a:b.find(b=>b.endsWith(a)||b.includes(a));for(let b of[...v.graphFiles].map(a=>d(a)||a).filter(b=>(0,f.Tz)(a.prepare.projectRoot,b,a.understanding.availableEvidenceScopePaths))){let d=a.understanding.getCachedFileDetail(b);if(d?.chunks?.length)for(let e of d.chunks)r.push({chapterId:c.id,filePath:d.file?.relativePath||b,score:5+(v.graphWorks.length+v.graphMethods.length)*.5,content:e.content,roleId:a.understanding.fileRoleByPath.get(b),processingType:a.understanding.fileProcessingByPath.get(b),sectionTitle:e.sectionTitle,source:"graph-evidence"})}}let w=a.planning.chapterIntentClassifier.needsBasicFacts(c.title),x=a.blueprint.billFactLock?(()=>{let b=el(c.title,c.sections||[]);return a.blueprint.billFactLock.entries.filter(a=>a.name&&b.some(b=>a.name.includes(b)||a.description.includes(b)||a.section.includes(b))).slice(0,6).map(a=>`${a.name} ${a.description} ${a.quantity}${a.unit}`.trim().slice(0,80))})():[],y=ac(c,[...u,...t,...x],[]),z=Date.now();a.global.progressStages[o]=(0,b8.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:a.prepare.promptPlan.writerPrompts[0]?.id,status:"running",message:`${(0,aq.GQ)(c.title)} 正在执行质量优先的章节检索${v?.graphFiles.size?`(图谱匹配 ${v.graphFiles.size} 个文件)`:""}`,details:y.map(a=>`检索:${a.slice(0,42)}`),progress:{current:j+1,total:a.planning.effectiveChapters.length,label:"证据检索"}},{subtitle:(0,aq.GQ)(c.title),order:j}),a.global.emitProgress();let A=q?[]:[...a.understanding.availableEvidenceScopePaths].filter(Boolean).sort(),B=q?[]:a.understanding.scopedIntelligence?.evidenceByChapterId?.[c.id]||[];B.length>0&&r.push(...B);let C=[],D=(c.requiredFacts||[]).filter(a=>!!a&&!y.some(b=>b.includes(a)||a.includes(b))).map(a=>`${c.title} ${a}`),E=(a.prepare.requirementSemantics?.factClues||[]).filter(a=>!y.some(b=>b.includes(a)||a.includes(b))&&!D.some(b=>b.includes(a)||a.includes(b))).map(a=>`${c.title} ${a}`.trim()).slice(0,8),F=[...y,...D,...E];if(A.length>0&&F.length>0){(0,e.Te)(a.global.input.signal);let b=await (0,e.l$)(F,async b=>a.understanding.searchWithCache(b,A,Math.min(a.understanding.requestedEvidencePerChapter,12),c.title),{kind:"search"});C.push(...b)}for(let b of(a.planning.generationDiagnostics.evidence.searchQueries+=F.length,a.planning.generationDiagnostics.evidence.searchMs+=Date.now()-z,a.global.progressStages[o]=(0,b8.X5)({type:"chapter_generation",roleId:"chapter_generation",status:"running",message:`${(0,aq.GQ)(c.title)} KB 检索完成:${F.length} 组查询,准备深度召回与语义排序`,progress:{current:j+1,total:a.planning.effectiveChapters.length,label:"证据检索"}},{subtitle:(0,aq.GQ)(c.title),order:j}),a.global.emitProgress(),C))r.push(...b.filter(b=>(0,f.Tz)(a.prepare.projectRoot,b.filePath,a.understanding.evidenceScopePaths)).map(b=>({chapterId:c.id,filePath:b.filePath,score:b.score,content:b.content,roleId:a.understanding.fileRoleByPath.get(b.filePath),processingType:a.understanding.fileProcessingByPath.get(b.filePath),sectionTitle:b.sectionTitle,source:b.source})));w&&A.length>0&&a.blueprint.basicFactSearchResults.length>0&&r.push(...a.blueprint.basicFactSearchResults.filter(b=>(0,f.Tz)(a.prepare.projectRoot,b.filePath,a.understanding.evidenceScopePaths)).map(b=>({chapterId:c.id,filePath:b.filePath,score:b.score,content:b.content,roleId:a.understanding.fileRoleByPath.get(b.filePath),processingType:a.understanding.fileProcessingByPath.get(b.filePath),sectionTitle:b.sectionTitle,source:"basic-fact-cache"})));let G=q?[]:await (0,eE.$b)({manager:a.understanding.manager,projectRoot:a.prepare.projectRoot,chapter:c,plan:s,profile:a.prepare.projectMaterialProfile,scopedFilePaths:A,limitPerQuery:Math.min(a.understanding.requestedEvidencePerChapter,10),signal:a.global.input.signal}).catch(()=>[]);r.push(...G);let H=new Set((c.pinnedEvidenceFilePaths||[]).filter(Boolean)),I=[];a.planning.chapterIntentClassifier.needsBasicFacts(c.title)&&r.push(...a.understanding.safeProjectBasicEvidence.map(a=>({...a,chapterId:c.id,source:"pinned-evidence"})));let K=a.understanding.writerEvidence.filter(a=>/招标|投标须知|评标办法|专用合同条款|投标人须知/u.test(`${a.filePath||""}${a.sectionTitle||""}`));for(let b of(/概况|工程|项目|总体|部署/u.test(c.title)&&K.length>0&&r.push(...K.map(a=>({...a,chapterId:c.id,source:"pinned-evidence"}))),new Set([...H]))){if(!(0,f.Tz)(a.prepare.projectRoot,b,a.understanding.evidenceScopePaths))continue;let d=H.has(b),e=a.understanding.getCachedFileDetail(b);e&&r.push(...e.chunks.map(b=>({chapterId:c.id,filePath:e.file.relativePath,score:1,content:b.content,roleId:a.understanding.fileRoleByPath.get(e.file.relativePath),processingType:a.understanding.fileProcessingByPath.get(e.file.relativePath),sectionTitle:b.sectionTitle,source:d?"pinned-evidence":"bound-file"})))}let L=r.filter(b=>(0,f.Tz)(a.prepare.projectRoot,b.filePath,a.understanding.availableEvidenceScopePaths));if(!q&&a.prepare.webAccessConfig.enabled&&a.prepare.webAccessConfig.allowProjectFacts){let b=await cw({config:a.prepare.webAccessConfig,chapterId:c.id,chapterTitle:c.title,sectionTitles:c.sections||[],runtimeRules:a.prepare.runtimePromptRules,localFacts:[...a.understanding.preliminaryFactsModel.project,...a.understanding.preliminaryFactsModel.schedule,...a.understanding.preliminaryFactsModel.quality,...a.understanding.preliminaryFactsModel.safety,...a.understanding.preliminaryFactsModel.resources,...a.understanding.preliminaryFactsModel.preciseFacts],signal:a.global.input.signal});a.understanding.webResearchReport.queries.push(...b.queries),a.understanding.webResearchReport.filteredCount+=b.filtered+b.evidence.length}let N=q?[]:(0,eE.SK)({project:a.understanding.project,chapter:c,plan:s,profile:a.prepare.projectMaterialProfile,scopedFilePaths:A,highRisk:k.highRisk});N.length>0&&L.push(...N),L=(0,b7.Su)(L,a.understanding.projectMaterialScope),a.understanding.excludedEvidenceKeys.size>0&&(L=L.filter(b=>!a.understanding.excludedEvidenceKeys.has((0,bf.hM)(b))));let O=(()=>{let a=Number(process.env.DOCUMENT_SEMANTIC_TOP_CANDIDATES);return Number.isFinite(a)&&a>0?Math.floor(a):3e3})(),P=function(a,b,c){if(c<=0||b.length<=c)return b;let d=b.map(b=>({item:b,lexical:(0,g.A1)(b,a.requiredFacts)*$(a,b.processingType)+_(a,b)}));return d.sort((a,b)=>b.lexical-a.lexical),d.slice(0,c).map(a=>a.item)}(c,L,O),Q=await (0,be.Mv)([(0,eB.Yx)(c)],P.map(aa)),R=ab(c,L,{preservePinned:!0,semantic:{similarity:Q,queryText:(0,eB.Yx)(c)}},a.planning.generationDiagnostics);R=J(R,a.understanding.canonicalFacts.scopeConflicts),(0,b7.U2)(R,a.understanding.projectMaterialScope,`chapter:${c.id}:initial`);let S=c.requiredFacts.filter(a=>!R.some(b=>(0,dd.Lk)(b,a))),T=0,U=v?[v.graphWorks.length?`图谱识别本章工程内容:${v.graphWorks.join("、")}`:"",v.graphMethods.length?`图谱识别本章施工方法:${v.graphMethods.join("、")}`:"",v.graphBoqItems.length?`图谱识别本章BOQ清单项(${v.graphBoqItems.length}项):${v.graphBoqItems.map(a=>`${a.name} ${a.quantity}${a.unit}`).join("、")}`:"",v.gaps.length?`图谱识别本章资料缺口:${v.gaps.join(";")}`:""].filter(Boolean).join("\n"):"",V=function(a){let b=[];for(let c of a){if(!c.resolution)continue;let a=c.values.filter(a=>`${a.value}${a.unit}`!==c.resolution);if(0===a.length)continue;let d=a.map(a=>`${a.value}${a.unit}`).join("、");"high"===c.confidence?b.push(`${c.scope}必须统一为 ${c.resolution}(补疑/答疑/澄清类修正文件权威最高;${d} 已被修正,正文禁止出现)`):"medium"===c.confidence?b.push(`${c.scope}应统一为 ${c.resolution}(按资料来源优先级裁决;${d} 为败选值,正文避免使用)`):b.push(`${c.scope}参考口径为 ${c.resolution}(锚定较弱,请人工复核;${d} 不参与自动改写)`)}return b}(a.understanding.canonicalFacts.scopeConflicts),W=a.planning.requirementsRoutes.length>0?(()=>{let b=bS(c.title),d=a.planning.requirementsRoutes.filter(a=>a.chapterTitle===b);return 0===d.length?"":["【本章必须显性响应的招标要求(逐条写入正文,零响应即评标失分)】",...d.map(a=>`- ${a.kind}:${a.item.text}`)].join("\n")})():"",X=a.planning.chapterIntentClassifier.needsDustControl(c.title)||a.planning.chapterIntentClassifier.needsDustControl(`${c.title}${c.purpose||""}`)?"【扬尘治理六个百分百——规范固定条目,必须逐项落实并写入正文,每项一句具体措施,六项不得缺项;若本项目无拆迁工程,对“拆迁工地100%湿法作业”必须显性写明“本项目无拆迁工程,不涉及拆迁工地湿法作业”,不得省略】\n- 施工工地周边100%围挡\n- 物料堆放100%覆盖\n- 出入车辆100%冲洗\n- 施工现场地面100%硬化\n- 拆迁工地100%湿法作业\n- 渣土车辆100%密闭运输":"",Y=(c.sections||[]).filter(a=>!/^(?:施工概况|施工流程|施工方法)$/u.test(a.trim())&&!/^附录/u.test(a.trim())),Z=Y.length>0?`【必须输出以下规划小节为三级标题(### 小节名),逐个小节展开正式正文:每小节正文不少于 100 字,不得只写标题、不得空小节、不得用表格替代正文;小节名与章标题相同或相近也必须输出,不得省略或合并】${Y.join("、")}`:"",ae=a.blueprint.billFactLock?function(a,b,c={}){if(!a||0===a.entries.length)return"";let d=/清单|工程量|主要施工内容|主要施工方法|主要分部分项|资源配置|材料|物资/u.test(b),e=Math.max(1,c.maxEntries??(d?120:60)),f=Math.max(1,c.maxChars??(d?9e3:6e3)),g=el(b,c.sections||[]),h=a.entries.map(a=>({entry:a,score:function(a,b){let c=`${a.name} ${a.description} ${a.section} ${a.subsection}`;return b.reduce((a,b)=>a+ +!!c.includes(b),0)}(a,g)})).sort((a,b)=>b.score-a.score||a.entry.seq-b.entry.seq).map(a=>a.entry).slice(0,e),i=[],j=0;for(let a of h){let b=a.specQuantityPairs.length>0?` [${a.specQuantityPairs.map(a=>`${a.spec} ${a.quantity}`).join(";")}]`:"",c=`${a.seq}. ${a.name}${a.description?`(${a.description})`:""}:${a.quantity}${a.unit}${a.section?`|${a.section}`:""}${b}`;if(j+c.length+1>f)break;i.push(c),j+=c.length+1}return 0===i.length?"":["【工程量清单事实锁——确定性权威数据(逐项照抄,不得改动或重新分配)】",`清单来源:${a.sourceFile.split("/").pop()}(${a.totalEntries} 条目,本节锁定 ${i.length} 条)`,"清单给出规格-数量拆分的必须逐项照抄原值(如 100W 109套、120W 9套),不得自行拆分或重新分配;清单只给总量的不得自行拆分;同一规格-数量拆分在全文各章必须一致。",...i].join("\n")}(a.blueprint.billFactLock,c.title,{sections:c.sections||[]}):"",af=[U,W,Z,X,V.length?`【数据口径强制约束】${V.join(";")}`:"",s?.writingGoal,s?.mustCover?.length?`本章必须覆盖:${s.mustCover.join("、")}`:"",s?.mustUseMaterialKinds?.length?`本章优先使用资料类型:${s.mustUseMaterialKinds.join("、")}`:"",ae].filter(Boolean).join("\n"),ag=(0,M.C_)(a.prepare.promptPlan,c);if(a.prepare.promptPlan.writerPrompts.length>0&&!ag.primaryWriter)throw Error(`${(0,aq.GQ)(c.title)} 写作主控提示词未进入章节生成阶段`);let ah=[ag.promptTexts,a.prepare.generationControlPrompt].filter(Boolean).join("\n\n"),ai=ag.promptDetails.length?ag.promptDetails:["未绑定章节写作提示词"],ak=(0,n.rC)({template:a.prepare.template,chapter:c,spec:a.prepare.documentSpec,profile:a.prepare.domainProfile,promptTexts:ah,requirement:a.global.input.requirement,plan:s?{requiredContents:s.mustCover,evidenceNeeds:Object.values(s.evidenceQueries).flat()}:void 0}),al=(0,n.ji)({needs:ak,factsModel:a.understanding.preliminaryFactsModel,evidence:L,profile:a.prepare.domainProfile,excludedEvidenceKeys:a.understanding.excludedEvidenceKeys}),am=al.filter(a=>a.need.required&&"satisfied"!==a.status).map(a=>a.need.label),an=function(a){let b=(a.chapter.requiredFacts||[]).filter(b=>!a.evidence.some(a=>eC(`${a.sectionTitle||""}${a.content||""}`).includes(eC(b)))),c=(a.chapter.tablePlans||[]).flatMap(a=>a.fillability?.missingProjectFactFields||[]),d=a.evidence.length<3?["章节证据数量不足"]:[],e=b.length+c.length+d.length,f=e>=5?"high":e>=2?"medium":"low",g="high"===f?"evidence_first":c.length>0?"generate_with_review_notes":b.length>0?"section_first":"normal";return{chapterId:a.chapter.id,chapterTitle:a.chapter.title,canGenerate:!0,riskLevel:f,missingFacts:b,missingEvidence:d,tableFieldGaps:[...new Set(c)],suggestedStrategy:g,reason:0===e?"章节事实、证据和表格可填性满足常规生成条件。":`识别到 ${e} 项生成前缺口,按 ${g} 策略生成。`}}({chapter:c,evidence:R}),ao=new Set(R.map(a=>a.filePath)).size,ap=!!v&&(v?.graphFiles.size||0)>=8&&ao>=6&&0===S.length&&"low"===an.riskLevel,as=function(a){let b=a.evidenceFileCount<=2;return a.scopedFileCount>80?b:"evidence_first"===a.suggestedStrategy||a.highRisk||a.missingFactsCount>0||a.requiredMissingNeedsCount>0||b||a.evidenceCount<8&&"low"!==a.riskLevel}({scopedFileCount:A.length,evidenceCount:R.length,evidenceFileCount:ao,suggestedStrategy:an.suggestedStrategy,highRisk:k.highRisk,missingFactsCount:S.length,requiredMissingNeedsCount:am.length,riskLevel:an.riskLevel});if(!ap&&as&&A.length>0){let b=new Set([...S,...am]).size;b>0&&(a.global.progressStages[o]=(0,b8.X5)({type:"chapter_generation",roleId:"chapter_generation",status:"running",message:`${(0,aq.GQ)(c.title)} 正在深度召回缺失事实证据(${b} 项需求)`,progress:{current:j+1,total:a.planning.effectiveChapters.length,label:"深度召回"}},{subtitle:(0,aq.GQ)(c.title),order:j}),a.global.emitProgress());let d=await dg({manager:a.understanding.manager,projectRoot:a.prepare.projectRoot,chapter:c,scopedFilePaths:A,fileRoleByPath:a.understanding.fileRoleByPath,fileProcessingByPath:a.understanding.fileProcessingByPath,requiredNeeds:[...new Set([...S,...am])],extraClues:a.prepare.requirementSemantics?.factClues||[],highRisk:k.highRisk||am.length>0,signal:a.global.input.signal}).catch(()=>[]);T=d.length,d.length>0&&(L=[...L,...(0,b7.Su)(d,a.understanding.projectMaterialScope)],a.understanding.excludedEvidenceKeys.size>0&&(L=L.filter(b=>!a.understanding.excludedEvidenceKeys.has((0,bf.hM)(b)))),R=ab(c,L,{preservePinned:!0},a.planning.generationDiagnostics),R=J(R,a.understanding.canonicalFacts.scopeConflicts),(0,b7.U2)(R,a.understanding.projectMaterialScope,`chapter:${c.id}:deep`),S=c.requiredFacts.filter(a=>!R.some(b=>(0,dd.Lk)(b,a)))),am=(al=(0,n.ji)({needs:ak,factsModel:a.understanding.preliminaryFactsModel,evidence:L,profile:a.prepare.domainProfile,excludedEvidenceKeys:a.understanding.excludedEvidenceKeys})).filter(a=>a.need.required&&"satisfied"!==a.status).map(a=>a.need.label),a.global.progressStages[o]=(0,b8.X5)({type:"chapter_generation",roleId:"chapter_generation",status:"running",message:`${(0,aq.GQ)(c.title)} 深度召回完成:命中 ${T} 条${am.length>0?`,仍缺 ${am.length} 项(触发轻量补充)`:""}`,progress:{current:j+1,total:a.planning.effectiveChapters.length,label:"证据检索"}},{subtitle:(0,aq.GQ)(c.title),order:j}),a.global.emitProgress()}if(am.length>0&&A.length>0){let b=(0,b7.Su)(await dg({manager:a.understanding.manager,projectRoot:a.prepare.projectRoot,chapter:c,scopedFilePaths:A,fileRoleByPath:a.understanding.fileRoleByPath,fileProcessingByPath:a.understanding.fileProcessingByPath,requiredNeeds:am,extraClues:a.prepare.requirementSemantics?.factClues||[],highRisk:!0,signal:a.global.input.signal}).catch(()=>[]),a.understanding.projectMaterialScope);b.length>0&&(L=[...L,...b],a.understanding.excludedEvidenceKeys.size>0&&(L=L.filter(b=>!a.understanding.excludedEvidenceKeys.has((0,bf.hM)(b)))),R=ab(c,L,{preservePinned:!0},a.planning.generationDiagnostics),R=J(R,a.understanding.canonicalFacts.scopeConflicts),(0,b7.U2)(R,a.understanding.projectMaterialScope,`chapter:${c.id}:supplemental`),S=c.requiredFacts.filter(a=>!R.some(b=>(0,dd.Lk)(b,a))),am=(al=(0,n.ji)({needs:ak,factsModel:a.understanding.preliminaryFactsModel,evidence:L,profile:a.prepare.domainProfile,excludedEvidenceKeys:a.understanding.excludedEvidenceKeys})).filter(a=>a.need.required&&"satisfied"!==a.status).map(a=>a.need.label))}for(let b of((0,b7.U2)(R,a.understanding.projectMaterialScope,`chapter:${c.id}:writer-session.global.input`),0===R.length&&a.understanding.missingItems.push(`${c.title}:缺少可支撑正文的项目资料证据`),S))a.understanding.missingItems.push(`${c.title}:事实需求未满足 ${b}`);let at=(0,b8.X5)({type:"knowledge_retrieval",roleId:"knowledge-base",status:a.understanding.allEvidence.length>0?"success":"failed",message:`已检索/绑定 ${a.understanding.allEvidence.length} 条证据`});a.understanding.knowledgeBaseStageIndex<0?a.understanding.knowledgeBaseStageIndex=(0,b8.fx)(a.global.progressStages,at):a.global.progressStages[a.understanding.knowledgeBaseStageIndex]={...at,order:a.global.progressStages[a.understanding.knowledgeBaseStageIndex]?.order??at.order},a.global.emitProgress(),(0,e.Te)(a.global.input.signal);let au=new Map,av=b=>{let d=(0,e.c6)({kind:"section",query:`${c.title} ${b}`.trim(),scopedFilePaths:A}),f=au.get(d);if(f)return Promise.resolve(f);let g=(0,di.Ym)(b,c,R),h=g.filter(a=>dp.AM.test(a.content)).length;return g.length>=4&&h>=1?(au.set(d,g),Promise.resolve(g)):ad({manager:a.understanding.manager,projectRoot:a.prepare.projectRoot,chapter:c,sectionTitle:b,scopedFilePaths:A,fileRoleByPath:a.understanding.fileRoleByPath,fileProcessingByPath:a.understanding.fileProcessingByPath,signal:a.global.input.signal}).then(a=>(au.set(d,a),a))},aw=b=>{if(0===b.length||0===A.length)return Promise.resolve([]);let d=b.join(" ");return ad({manager:a.understanding.manager,projectRoot:a.prepare.projectRoot,chapter:c,sectionTitle:d,scopedFilePaths:A,fileRoleByPath:a.understanding.fileRoleByPath,fileProcessingByPath:a.understanding.fileProcessingByPath,signal:a.global.input.signal}).catch(()=>[])},ax=function(a){let b=a.chapter.sections?.length||0,c=(a.chapter.sections||[]).filter(b=>a.evidence.some(a=>(0,dd.Lk)(a,b)||`${a.sectionTitle||""} ${a.content}`.includes(b))).length,d=a.chapter.requiredFacts.length,e=a.chapter.requiredFacts.filter(b=>a.evidence.some(a=>(0,dd.Lk)(a,b))).length;return{chapterId:a.chapter.id,chapterTitle:a.chapter.title,risk:a.risk,evidenceCount:a.evidence.length,evidenceFiles:new Set(a.evidence.map(a=>a.filePath)).size,sectionCovered:c,sectionTotal:b,requiredFactCovered:e,requiredFactTotal:d}}({chapter:c,evidence:R,risk:k});a.understanding.retrievalCoverageReports.push(ax);let ay=new Set(R.map(a=>a.filePath)),az=R.reduce((a,b)=>a+b.content.length,0),aB=[...k.highRisk?[`召回覆盖风险(${k.riskReason||"切片未完全预加载"}):已加载 ${k.loadedChunks}/${k.totalChunks},已启用深召回`]:[],`项目理解缓存证据:${B.length} 条`,`深召回证据:${T} 条`,`事实覆盖:${ax.requiredFactCovered}/${ax.requiredFactTotal}`,`小节覆盖:${ax.sectionCovered}/${ax.sectionTotal}`];a.global.progressStages[o]=(0,b8.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:a.prepare.promptPlan.writerPrompts[0]?.id,status:"running",message:`${(0,aq.GQ)(c.title)} 已选取 ${R.length} 条高相关证据,正在生成正文`,details:[`使用绑定文件:${ay.size} 份`,`上下文字符:${az}`,`检索查询:${y.length} 组`,...aB],progress:{current:j+1,total:a.planning.effectiveChapters.length,label:"正文生成"}},{subtitle:(0,aq.GQ)(c.title),order:j}),a.global.emitProgress(),a.planning.generationDiagnostics.evidence.contextChars+=az;let aC=(0,n.n9)(al),aD=a.planning.chapterIntentClassifier.needsBasicFacts(c.title)?a.understanding.earlyFactPool.projectBasicFacts:[],aE=(0,di.qX)((0,di.hZ)({chapter:c,plan:void 0,spec:a.prepare.documentSpec,roleFacts:I,evidence:R,missingFacts:S,indexedFacts:[...aD,...aC],resolvedFactNeeds:al,factNeedsPrompt:(0,n.GK)(al),specAuthorityMap:a.understanding.preliminaryFactsModel.specAuthorityMap})),aF=(0,eD.up)({plan:a.planning.plannedDocument.plan,chapter:c,context:a.understanding.agentWorkflow,evidence:R});if(a.understanding.agentWorkflow.chapterTasks=[...(a.understanding.agentWorkflow.chapterTasks||[]).filter(a=>a.chapterId!==c.id),aF.task],a.understanding.agentWorkflow.nodes.push(aF.node),(0,dh.cN)(a.understanding.agentWorkflow),(0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"validation",roleId:`agent-chapter-task-${c.id}`,status:aF.task.ready||q?"success":"failed",message:aF.task.ready?aF.node.outputSummary||`${(0,aq.GQ)(c.title)} 章节任务规划完成`:q?`${(0,aq.GQ)(c.title)} 章节任务未完全就绪,已复用已有正文并交由 Reviewer/Repairer 处理`:aF.node.outputSummary||`${(0,aq.GQ)(c.title)} 章节任务规划完成`,details:aF.task.issues.map(a=>a.message)},{subtitle:"Agent Chapter Task Planner",order:a.global.progressStages.length})),a.global.emitProgress(a.global.chapterDrafts),!aF.task.ready&&!q)throw Error(`${(0,aq.GQ)(c.title)} 章节任务未就绪:${aF.task.issues.map(a=>a.message).join(";")}`);let aG=[ah,(0,eD.bT)(aF.task)].filter(Boolean).join("\n\n"),aH={total:al.length,satisfied:al.filter(a=>"satisfied"===a.status).length,missing:al.filter(a=>"missing"===a.status).length,lowConfidence:al.filter(a=>"low_confidence"===a.status).length};for(let b of am)a.understanding.missingItems.push(`${c.title}:事实需求未确认 ${b}`);let aI=a.planning.documentBudget.chapterTargets.get(c.id)||1200,aJ=c.sections?.filter(Boolean).length||0,aK=/[、,,;;]/u.test(c.title),aL=function(a){let{budgetTarget:b,sectionCount:c,title:d,longformStrict:e}=a,f=/[、,,;;]/u.test(d),g=/工期|进度|质量|安全|危大|资源|人材机|保障|措施|重难点/u.test(d),h=/概况|结语|附录|说明/u.test(d),i=c>0?c*(f?720:g?900:780):g?5200:3600,j=e?h?2600:g?5200:3600:Math.min(1200,b),k=e?Math.min(Math.max(4200,b),c>=30?9800:f?8800:g?9200:7200):b,l=e?Math.max(j,b):Math.max(j,Math.min(b,i,k));return{budgetTarget:b,roundTarget:l,structureTarget:i,maxWords:Math.ceil(l*(a.longformStrict?1.12:1.18)),label:`章节预算约 ${b} 字,本轮生成约 ${l} 字,结构目标约 ${i} 字`}}({budgetTarget:aI,sectionCount:aJ,title:c.title,longformStrict:a.planning.documentBudget.longformStrict}),aM=Math.ceil(aL.maxWords*(a.planning.documentBudget.maxChars?1.05:1)),aN=aZ(c.title,a.planning.chapterIntentClassifier).length>0,aO=(a.blueprint.blueprintActive||aN&&0===l.missing.length)&&a.blueprint.integratedBlueprint?function(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))}(a.blueprint.integratedBlueprint,c.title):void 0,aP=aO&&a.blueprint.integratedBlueprint?function(a,b){let c=[`【第 ${a.id} 章「${a.title}」蓝图切片——以下项目专属事实由蓝图冻结锁定,正文必须一致引用】`];for(let b of a.subSections){c.push(`
86
+ ${b.map(a=>`- ${a}`).join("\n")}`);let{chapterDraftsByOrder:d,chapterGenerationStagesByOrder:e,chapterGenerationStages:f,effectiveChapters:i,input:j,hasExplicitOutline:k,failedChapterMessages:n}=a,{signal:o,requirement:p}=j,q=function(a){let{signal:b,requirement:c}=a.input;return{input:a,template:a.template,effectiveChapters:a.effectiveChapters,requirement:c,signal:b,projectRoot:a.projectRoot,projectId:a.projectId,projectMaterialSummary:a.projectMaterialSummary,documentSpec:a.documentSpec,documentBudget:a.documentBudget,promptBindings:a.promptBindings,promptDocumentRules:a.promptDocumentRules,domainProfile:a.domainProfile,scopeConflicts:a.scopeConflicts,evaluationCriteriaItems:a.evaluationCriteriaItems,tenderRequirements:a.tenderRequirements,requirementsSimilarity:a.requirementsSimilarity,factTokenScopeClassifier:a.factTokenScopeClassifier,professionalDepthClassifier:a.professionalDepthClassifier,blueprintData:a.blueprintData,billFactLock:a.billFactLock,requirementSemantics:a.requirementSemantics,generationDiagnostics:a.generationDiagnostics,repairPromptTexts:a.repairPromptTexts,progressStages:a.progressStages,chapterGenerationStages:a.chapterGenerationStages,emitProgress:a.emitProgress,withProgressHeartbeat:a.withProgressHeartbeat,missingItems:a.missingItems,failedChapterMessages:a.failedChapterMessages,indexHealth:a.indexHealth,webResearchReport:a.webResearchReport,hasExplicitOutline:a.hasExplicitOutline,retrievalCoverageReports:a.retrievalCoverageReports,projectMaterialScope:a.projectMaterialScope,writingTaskBrief:a.writingTaskBrief,globalConsistencyIssues:a.globalConsistencyIssues,agentWorkflow:a.agentWorkflow,factExtractionPromptTexts:a.factExtractionPromptTexts,readiness:a.readiness,promptPlan:a.promptPlan,allEvidence:a.allEvidence,facts:{},structuredFacts:[],governedStructuredFacts:[],factsModel:void 0,chapterDrafts:[],finalChapterDrafts:[],finalMarkdown:"",validationIssues:[],baseValidationIssues:[],executionStages:[],finalGateRepairStages:[],qingtianReviewBlockingIssues:[],sources:[],qualityBundle:void 0,scheduleAuthority:void 0,assemblyRateAuthority:void 0,scaleSummary:void 0,supportAuthority:void 0,laborPeakAuthority:void 0,greeningMaintenanceAuthority:void 0,surfaceFixContext:{laborPeakAuthority:void 0,greeningMaintenanceAuthority:void 0},decisionLockEntries:[],finalStages:[],reviewChecklist:[],telemetry:void 0,professionalScore:void 0,templatingReview:{issues:[],reviewed:!1},assets:[],validation:void 0,rebuildFinalMarkdown:()=>"",recomputeFinalValidationBundle:async()=>void 0}}(a),r=d.filter(a=>!!a);if(q.chapterDrafts=r,f.push(...e.filter(a=>!!a)),0===r.length)throw Error(`章节生成未完成:${n.join(";")||"没有生成任何有效章节"}`);if(k&&r.length<i.length)throw Error(`OUTLINE 指定 ${i.length} 章,实际只生成 ${r.length} 章:${n.join(";")||"部分章节未生成"}`);await b9(q),await dM(q);let s=(0,bc.rs)((0,bc.V3)({templateId:q.template.id,templateName:q.template.name,title:q.template.outputTitle,requirement:q.requirement||"",projectRoot:q.projectRoot,projectId:q.projectId,exportSettings:q.template.exportSettings,generationSettings:q.template.generationSettings,facts:q.facts,structuredFacts:q.structuredFacts,factsModel:q.factsModel,chapters:q.chapterDrafts,sources:q.sources,missingItems:[...new Set(q.missingItems)],validation:q.validation,validationIssues:q.validationIssues,executionStages:q.executionStages,exportGate:{passed:!1,blockingIssues:[],checklist:[]},assets:q.assets,partialChapters:q.chapterDrafts.map(a=>({id:a.id,title:a.title,chars:(0,h.V7)(a.content),status:ak(a,q.documentBudget.chapterTargets.get(a.id)),updatedAt:Date.now()})),checkpointChapters:q.chapterDrafts,generatedAt:Date.now()},{forbidDrawingImages:!1,promptRules:q.promptDocumentRules}),q.chapterDrafts,{forbidDrawingImages:!1,promptRules:q.promptDocumentRules});q.finalChapterDrafts=s.chapters.map(a=>{let b=q.effectiveChapters.find(b=>b.id===a.id)||a;return{...a,sections:a.sections||[],content:(0,M.w_)(a.content,b)}}),q.finalMarkdown=(0,bc.rs)((0,bc.V3)({templateId:q.template.id,templateName:q.template.name,title:q.template.outputTitle,requirement:q.requirement||"",projectRoot:q.projectRoot,projectId:q.projectId,exportSettings:q.template.exportSettings,generationSettings:q.template.generationSettings,facts:q.facts,structuredFacts:q.structuredFacts,factsModel:q.factsModel,chapters:q.finalChapterDrafts,sources:q.sources,missingItems:[...new Set(q.missingItems)],validation:q.validation,validationIssues:q.validationIssues,executionStages:q.executionStages,exportGate:{passed:!1,blockingIssues:[],checklist:[]},assets:q.assets,partialChapters:[],checkpointChapters:q.finalChapterDrafts,generatedAt:Date.now()},{forbidDrawingImages:!1,promptRules:q.promptDocumentRules}),q.finalChapterDrafts,{forbidDrawingImages:!1,promptRules:q.promptDocumentRules}).markdown,q.finalMarkdown=(0,ao._D)((0,M.Ht)(dI((0,bc.bR)((0,bc.kT)((0,bc.K7)(dE(X(q.finalMarkdown,q.structuredFacts),q.projectMaterialSummary)))),q.template))).markdown,await dN(q),await dP(q),await dT(q),await dW(q),await dX(q),await d8(q),await er(q),await es(q),await ei(q),await ex(q),await ez(q);let t=q.finalChapterDrafts.map(a=>({...a,evidence:(0,g.QR)(a.evidence||[],{preservePinned:!0})}));return q.finalChapterDrafts=t,{templateId:q.template.id,templateName:q.template.name,title:q.template.outputTitle,requirement:p||"",projectRoot:q.projectRoot,projectId:q.projectId,exportSettings:q.template.exportSettings,generationSettings:q.template.generationSettings,facts:q.facts,structuredFacts:q.structuredFacts,factsModel:q.factsModel,chapters:t,sources:q.sources,missingItems:[...new Set(q.missingItems)],validation:q.validation,validationIssues:q.validationIssues,exportGate:q.qualityBundle.finalExportGate,executionStages:q.finalStages,assets:q.assets,partialChapters:q.finalChapterDrafts.map(a=>({id:a.id,title:a.title,chars:(0,h.V7)(a.content),status:ak(a,q.documentBudget.chapterTargets.get(a.id)),updatedAt:Date.now()})),checkpointChapters:t,promptRules:q.promptDocumentRules,agentWorkflow:q.agentWorkflow,reviewMetadata:{chapterSummaries:[],globalIssues:[],diagnostics:q.generationDiagnostics,profile:function(a){let b=`${a.template.name} ${a.template.outputTitle||""} ${a.requirement||""} ${a.chapters.map(a=>a.title).join(" ")}`,c=[{pattern:/专项施工|危大|专项方案/u,type:"专项施工方案",dimensions:["专项对象边界","工艺参数","风险控制","验收要求","应急措施"]},{pattern:/投标|技术标|响应|招标/u,type:"投标技术方案",dimensions:["招标响应","技术优势","工期质量安全承诺","资源保障","履约可实施性"]},{pattern:/监理|旁站|巡视|平行检验/u,type:"监理规划/细则",dimensions:["监理目标","旁站巡视","平行检验","验收程序","资料签认"]},{pattern:/可研|可行性|项目建议书|投资估算/u,type:"可研/项目建议类文档",dimensions:["建设必要性","方案比选","投资估算","风险分析","实施效益"]},{pattern:/运维|维护|保养|巡检/u,type:"运维维护方案",dimensions:["巡检频次","维护流程","故障响应","备品备件","记录闭环"]}].find(a=>a.pattern.test(b));return{type:c?.type||"施工组织设计/施工技术方案",dimensions:c?.dimensions||["工程概况","施工部署","进度质量安全","资源配置","施工工艺和验收闭环"],requiredEvidencePolicy:"本地知识库为完整事实源;系统暂未确认的事实必须通过扩大检索、事实补抽或落位修复解决,不得归因为用户资料缺失。"}}({template:q.template,chapters:i,requirement:p}),knowledgeCoverage:q.qualityBundle.knowledgeCoverage,factTraces:q.qualityBundle.factTraces,chapterCoverage:q.qualityBundle.chapterCoverage,retrievalCoverage:q.retrievalCoverageReports,qualityReport:q.qualityBundle.qualityReport,repairStrategies:q.qualityBundle.repairStrategies,reviewChecklist:q.reviewChecklist,professionalScore:q.professionalScore,templatingReviewIssues:q.templatingReview.issues,writingTaskBrief:q.writingTaskBrief,workflowVersion:m.x,telemetry:q.telemetry,qualityBenchmark:await l(q.finalMarkdown)},generatedAt:Date.now(),markdown:q.finalMarkdown}}var eB=c(23021);function eC(a){return a.replace(/\s+/gu,"").toLowerCase()}var eD=c(30355),eE=c(2773);async function eF(a){a.planning.generationDiagnostics.metrics.push({name:"phase:plan",startedAt:a.planning.planPhaseStartedAt,endedAt:Date.now(),durationMs:Date.now()-a.planning.planPhaseStartedAt}),a.chapterLoop.draftPhaseStartedAt=Date.now();for(let b=0;b<a.planning.effectiveChapters.length;b+=a.blueprint.chapterConcurrency){let c=a.planning.effectiveChapters.slice(b,b+a.blueprint.chapterConcurrency);for(let d of(await Promise.all(c.map(async(c,d)=>{let i,j=b+d;(0,e.Te)(a.global.input.signal);let k=a.understanding.rolePoolRisk??df({totalChunks:0,loadedChunks:0,vectorReady:void 0}),l=a.blueprint.blueprintActive?{missing:[],failedChecks:[]}:function(a,b,c){let d=aZ(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}}(c.title,a.blueprint.integratedBlueprint?.validation,a.planning.chapterIntentClassifier);if(l.missing.length>0){let b=l.failedChecks.length>0?`蓝图校验项「${l.failedChecks.join("、")}」未通过`:"蓝图校验未通过或构建异常";throw a.global.progressStages.push((0,b8.X5)({type:"chapter_generation",roleId:"chapter_generation",status:"failed",message:`${(0,aq.GQ)(c.title)} 依赖蓝图权威 [${l.missing.join("、")}],${b},已按节点级把关阻断生成`,details:["数值密集型章所需蓝图权威不可用时禁止无权威成稿","请检查清单解析与蓝图构建诊断后重试"],progress:{current:j+1,total:a.planning.effectiveChapters.length,label:"章节阻断"}},{subtitle:(0,aq.GQ)(c.title),order:j})),a.global.emitProgress(),Error(`${(0,aq.GQ)(c.title)} 依赖蓝图权威 [${l.missing.join("、")}],${b},已按节点级把关阻断生成`)}let m=Date.now(),o=a.global.progressStages.length;try{let b,d;a.global.progressStages.push((0,b8.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:a.prepare.promptPlan.writerPrompts[0]?.id,status:"running",message:`${(0,aq.GQ)(c.title)} 正在检索证据并准备章节内容`,details:[`章节序号:${j+1}/${a.planning.effectiveChapters.length}`,`二级小节:${c.sections?.length||0} 个`,"正在生成检索查询"],progress:{current:j+1,total:a.planning.effectiveChapters.length,label:"章节生成"}},{subtitle:(0,aq.GQ)(c.title),order:j})),a.global.emitProgress();let p=a.global.input.resumeChapters?.find(a=>a.id===c.id||a.title===c.title),q=p?.content?.trim(),r=p?.evidence?.length?[...p.evidence]:[],s=a.prepare.projectUnderstanding.chapterPlans.find(a=>a.chapterId===c.id||a.chapterTitle===c.title),t=s?Object.values(s.evidenceQueries).flat().filter(Boolean):[],u=c.queries.length>0?c.queries:[a.prepare.template.name,a.prepare.template.outputTitle,c.title],v=a.understanding.chapterGraphMap.get(c.id);if(a.understanding.projectGraph&&v&&v.graphFiles.size>0){let b=[...a.understanding.availableEvidenceScopePaths],d=a=>b.includes(a)?a:b.find(b=>b.endsWith(a)||b.includes(a));for(let b of[...v.graphFiles].map(a=>d(a)||a).filter(b=>(0,f.Tz)(a.prepare.projectRoot,b,a.understanding.availableEvidenceScopePaths))){let d=a.understanding.getCachedFileDetail(b);if(d?.chunks?.length)for(let e of d.chunks)r.push({chapterId:c.id,filePath:d.file?.relativePath||b,score:5+(v.graphWorks.length+v.graphMethods.length)*.5,content:e.content,roleId:a.understanding.fileRoleByPath.get(b),processingType:a.understanding.fileProcessingByPath.get(b),sectionTitle:e.sectionTitle,source:"graph-evidence"})}}let w=a.planning.chapterIntentClassifier.needsBasicFacts(c.title),x=a.blueprint.billFactLock?(()=>{let b=el(c.title,c.sections||[]);return a.blueprint.billFactLock.entries.filter(a=>a.name&&b.some(b=>a.name.includes(b)||a.description.includes(b)||a.section.includes(b))).slice(0,6).map(a=>`${a.name} ${a.description} ${a.quantity}${a.unit}`.trim().slice(0,80))})():[],y=ac(c,[...u,...t,...x],[]),z=Date.now();a.global.progressStages[o]=(0,b8.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:a.prepare.promptPlan.writerPrompts[0]?.id,status:"running",message:`${(0,aq.GQ)(c.title)} 正在执行质量优先的章节检索${v?.graphFiles.size?`(图谱匹配 ${v.graphFiles.size} 个文件)`:""}`,details:y.map(a=>`检索:${a.slice(0,42)}`),progress:{current:j+1,total:a.planning.effectiveChapters.length,label:"证据检索"}},{subtitle:(0,aq.GQ)(c.title),order:j}),a.global.emitProgress();let A=q?[]:[...a.understanding.availableEvidenceScopePaths].filter(Boolean).sort(),B=q?[]:a.understanding.scopedIntelligence?.evidenceByChapterId?.[c.id]||[];B.length>0&&r.push(...B);let C=[],D=(c.requiredFacts||[]).filter(a=>!!a&&!y.some(b=>b.includes(a)||a.includes(b))).map(a=>`${c.title} ${a}`),E=(a.prepare.requirementSemantics?.factClues||[]).filter(a=>!y.some(b=>b.includes(a)||a.includes(b))&&!D.some(b=>b.includes(a)||a.includes(b))).map(a=>`${c.title} ${a}`.trim()).slice(0,8),F=[...y,...D,...E];if(A.length>0&&F.length>0){(0,e.Te)(a.global.input.signal);let b=await (0,e.l$)(F,async b=>a.understanding.searchWithCache(b,A,Math.min(a.understanding.requestedEvidencePerChapter,12),c.title),{kind:"search"});C.push(...b)}for(let b of(a.planning.generationDiagnostics.evidence.searchQueries+=F.length,a.planning.generationDiagnostics.evidence.searchMs+=Date.now()-z,a.global.progressStages[o]=(0,b8.X5)({type:"chapter_generation",roleId:"chapter_generation",status:"running",message:`${(0,aq.GQ)(c.title)} KB 检索完成:${F.length} 组查询,准备深度召回与语义排序`,progress:{current:j+1,total:a.planning.effectiveChapters.length,label:"证据检索"}},{subtitle:(0,aq.GQ)(c.title),order:j}),a.global.emitProgress(),C))r.push(...b.filter(b=>(0,f.Tz)(a.prepare.projectRoot,b.filePath,a.understanding.evidenceScopePaths)).map(b=>({chapterId:c.id,filePath:b.filePath,score:b.score,content:b.content,roleId:a.understanding.fileRoleByPath.get(b.filePath),processingType:a.understanding.fileProcessingByPath.get(b.filePath),sectionTitle:b.sectionTitle,source:b.source})));w&&A.length>0&&a.blueprint.basicFactSearchResults.length>0&&r.push(...a.blueprint.basicFactSearchResults.filter(b=>(0,f.Tz)(a.prepare.projectRoot,b.filePath,a.understanding.evidenceScopePaths)).map(b=>({chapterId:c.id,filePath:b.filePath,score:b.score,content:b.content,roleId:a.understanding.fileRoleByPath.get(b.filePath),processingType:a.understanding.fileProcessingByPath.get(b.filePath),sectionTitle:b.sectionTitle,source:"basic-fact-cache"})));let G=q?[]:await (0,eE.$b)({manager:a.understanding.manager,projectRoot:a.prepare.projectRoot,chapter:c,plan:s,profile:a.prepare.projectMaterialProfile,scopedFilePaths:A,limitPerQuery:Math.min(a.understanding.requestedEvidencePerChapter,10),signal:a.global.input.signal}).catch(()=>[]);r.push(...G);let H=new Set((c.pinnedEvidenceFilePaths||[]).filter(Boolean)),I=[];a.planning.chapterIntentClassifier.needsBasicFacts(c.title)&&r.push(...a.understanding.safeProjectBasicEvidence.map(a=>({...a,chapterId:c.id,source:"pinned-evidence"})));let K=a.understanding.writerEvidence.filter(a=>/招标|投标须知|评标办法|专用合同条款|投标人须知/u.test(`${a.filePath||""}${a.sectionTitle||""}`));for(let b of(/概况|工程|项目|总体|部署/u.test(c.title)&&K.length>0&&r.push(...K.map(a=>({...a,chapterId:c.id,source:"pinned-evidence"}))),new Set([...H]))){if(!(0,f.Tz)(a.prepare.projectRoot,b,a.understanding.evidenceScopePaths))continue;let d=H.has(b),e=a.understanding.getCachedFileDetail(b);e&&r.push(...e.chunks.map(b=>({chapterId:c.id,filePath:e.file.relativePath,score:1,content:b.content,roleId:a.understanding.fileRoleByPath.get(e.file.relativePath),processingType:a.understanding.fileProcessingByPath.get(e.file.relativePath),sectionTitle:b.sectionTitle,source:d?"pinned-evidence":"bound-file"})))}let L=r.filter(b=>(0,f.Tz)(a.prepare.projectRoot,b.filePath,a.understanding.availableEvidenceScopePaths));if(!q&&a.prepare.webAccessConfig.enabled&&a.prepare.webAccessConfig.allowProjectFacts){let b=await cw({config:a.prepare.webAccessConfig,chapterId:c.id,chapterTitle:c.title,sectionTitles:c.sections||[],runtimeRules:a.prepare.runtimePromptRules,localFacts:[...a.understanding.preliminaryFactsModel.project,...a.understanding.preliminaryFactsModel.schedule,...a.understanding.preliminaryFactsModel.quality,...a.understanding.preliminaryFactsModel.safety,...a.understanding.preliminaryFactsModel.resources,...a.understanding.preliminaryFactsModel.preciseFacts],signal:a.global.input.signal});a.understanding.webResearchReport.queries.push(...b.queries),a.understanding.webResearchReport.filteredCount+=b.filtered+b.evidence.length}let N=q?[]:(0,eE.SK)({project:a.understanding.project,chapter:c,plan:s,profile:a.prepare.projectMaterialProfile,scopedFilePaths:A,highRisk:k.highRisk});N.length>0&&L.push(...N),L=(0,b7.Su)(L,a.understanding.projectMaterialScope),a.understanding.excludedEvidenceKeys.size>0&&(L=L.filter(b=>!a.understanding.excludedEvidenceKeys.has((0,bf.hM)(b))));let O=(()=>{let a=Number(process.env.DOCUMENT_SEMANTIC_TOP_CANDIDATES);return Number.isFinite(a)&&a>0?Math.floor(a):3e3})(),P=function(a,b,c){if(c<=0||b.length<=c)return b;let d=b.map(b=>({item:b,lexical:(0,g.A1)(b,a.requiredFacts)*$(a,b.processingType)+_(a,b)}));return d.sort((a,b)=>b.lexical-a.lexical),d.slice(0,c).map(a=>a.item)}(c,L,O),Q=await (0,be.Mv)([(0,eB.Yx)(c)],P.map(aa)),R=ab(c,L,{preservePinned:!0,semantic:{similarity:Q,queryText:(0,eB.Yx)(c)}},a.planning.generationDiagnostics);R=J(R,a.understanding.canonicalFacts.scopeConflicts),(0,b7.U2)(R,a.understanding.projectMaterialScope,`chapter:${c.id}:initial`);let S=c.requiredFacts.filter(a=>!R.some(b=>(0,dd.Lk)(b,a))),T=0,U=v?[v.graphWorks.length?`图谱识别本章工程内容:${v.graphWorks.join("、")}`:"",v.graphMethods.length?`图谱识别本章施工方法:${v.graphMethods.join("、")}`:"",v.graphBoqItems.length?`图谱识别本章BOQ清单项(${v.graphBoqItems.length}项):${v.graphBoqItems.map(a=>`${a.name} ${a.quantity}${a.unit}`).join("、")}`:"",v.gaps.length?`图谱识别本章资料缺口:${v.gaps.join(";")}`:""].filter(Boolean).join("\n"):"",V=function(a){let b=[];for(let c of a){if(!c.resolution)continue;let a=c.values.filter(a=>`${a.value}${a.unit}`!==c.resolution);if(0===a.length)continue;let d=a.map(a=>`${a.value}${a.unit}`).join("、");"high"===c.confidence?b.push(`${c.scope}必须统一为 ${c.resolution}(补疑/答疑/澄清类修正文件权威最高;${d} 已被修正,正文禁止出现)`):"medium"===c.confidence?b.push(`${c.scope}应统一为 ${c.resolution}(按资料来源优先级裁决;${d} 为败选值,正文避免使用)`):b.push(`${c.scope}参考口径为 ${c.resolution}(锚定较弱,请人工复核;${d} 不参与自动改写)`)}return b}(a.understanding.canonicalFacts.scopeConflicts),W=a.planning.requirementsRoutes.length>0?(()=>{let b=bS(c.title),d=a.planning.requirementsRoutes.filter(a=>a.chapterTitle===b);return 0===d.length?"":["【本章必须显性响应的招标要求(逐条写入正文,零响应即评标失分)】",...d.map(a=>`- ${a.kind}:${a.item.text}`)].join("\n")})():"",X=a.planning.chapterIntentClassifier.needsDustControl(c.title)||a.planning.chapterIntentClassifier.needsDustControl(`${c.title}${c.purpose||""}`)?"【扬尘治理六个百分百——规范固定条目,必须逐项落实并写入正文,每项一句具体措施,六项不得缺项;若本项目无拆迁工程,对“拆迁工地100%湿法作业”必须显性写明“本项目无拆迁工程,不涉及拆迁工地湿法作业”,不得省略】\n- 施工工地周边100%围挡\n- 物料堆放100%覆盖\n- 出入车辆100%冲洗\n- 施工现场地面100%硬化\n- 拆迁工地100%湿法作业\n- 渣土车辆100%密闭运输":"",Y=(c.sections||[]).filter(a=>!/^(?:施工概况|施工流程|施工方法)$/u.test(a.trim())&&!/^附录/u.test(a.trim())),Z=Y.length>0?`【必须输出以下规划小节为三级标题(### 小节名),逐个小节展开正式正文:每小节正文不少于 100 字,不得只写标题、不得空小节、不得用表格替代正文;小节名与章标题相同或相近也必须输出,不得省略或合并】${Y.join("、")}`:"",ae=a.blueprint.billFactLock?function(a,b,c={}){if(!a||0===a.entries.length)return"";let d=/清单|工程量|主要施工内容|主要施工方法|主要分部分项|资源配置|材料|物资/u.test(b),e=Math.max(1,c.maxEntries??(d?120:60)),f=Math.max(1,c.maxChars??(d?9e3:6e3)),g=el(b,c.sections||[]),h=a.entries.map(a=>({entry:a,score:function(a,b){let c=`${a.name} ${a.description} ${a.section} ${a.subsection}`;return b.reduce((a,b)=>a+ +!!c.includes(b),0)}(a,g)})).sort((a,b)=>b.score-a.score||a.entry.seq-b.entry.seq).map(a=>a.entry).slice(0,e),i=[],j=0;for(let a of h){let b=a.specQuantityPairs.length>0?` [${a.specQuantityPairs.map(a=>`${a.spec} ${a.quantity}`).join(";")}]`:"",c=`${a.seq}. ${a.name}${a.description?`(${a.description})`:""}:${a.quantity}${a.unit}${a.section?`|${a.section}`:""}${b}`;if(j+c.length+1>f)break;i.push(c),j+=c.length+1}return 0===i.length?"":["【工程量清单事实锁——确定性权威数据(逐项照抄,不得改动或重新分配)】",`清单来源:${a.sourceFile.split("/").pop()}(${a.totalEntries} 条目,本节锁定 ${i.length} 条)`,"清单给出规格-数量拆分的必须逐项照抄原值(如 100W 109套、120W 9套),不得自行拆分或重新分配;清单只给总量的不得自行拆分;同一规格-数量拆分在全文各章必须一致。",...i].join("\n")}(a.blueprint.billFactLock,c.title,{sections:c.sections||[]}):"",af=[U,W,Z,X,V.length?`【数据口径强制约束】${V.join(";")}`:"",s?.writingGoal,s?.mustCover?.length?`本章必须覆盖:${s.mustCover.join("、")}`:"",s?.mustUseMaterialKinds?.length?`本章优先使用资料类型:${s.mustUseMaterialKinds.join("、")}`:"",ae].filter(Boolean).join("\n"),ag=(0,M.C_)(a.prepare.promptPlan,c);if(a.prepare.promptPlan.writerPrompts.length>0&&!ag.primaryWriter)throw Error(`${(0,aq.GQ)(c.title)} 写作主控提示词未进入章节生成阶段`);let ah=[ag.promptTexts,a.prepare.generationControlPrompt].filter(Boolean).join("\n\n"),ai=ag.promptDetails.length?ag.promptDetails:["未绑定章节写作提示词"],ak=(0,n.rC)({template:a.prepare.template,chapter:c,spec:a.prepare.documentSpec,profile:a.prepare.domainProfile,promptTexts:ah,requirement:a.global.input.requirement,plan:s?{requiredContents:s.mustCover,evidenceNeeds:Object.values(s.evidenceQueries).flat()}:void 0}),al=(0,n.ji)({needs:ak,factsModel:a.understanding.preliminaryFactsModel,evidence:L,profile:a.prepare.domainProfile,excludedEvidenceKeys:a.understanding.excludedEvidenceKeys}),am=al.filter(a=>a.need.required&&"satisfied"!==a.status).map(a=>a.need.label),an=function(a){let b=(a.chapter.requiredFacts||[]).filter(b=>!a.evidence.some(a=>eC(`${a.sectionTitle||""}${a.content||""}`).includes(eC(b)))),c=(a.chapter.tablePlans||[]).flatMap(a=>a.fillability?.missingProjectFactFields||[]),d=a.evidence.length<3?["章节证据数量不足"]:[],e=b.length+c.length+d.length,f=e>=5?"high":e>=2?"medium":"low",g="high"===f?"evidence_first":c.length>0?"generate_with_review_notes":b.length>0?"section_first":"normal";return{chapterId:a.chapter.id,chapterTitle:a.chapter.title,canGenerate:!0,riskLevel:f,missingFacts:b,missingEvidence:d,tableFieldGaps:[...new Set(c)],suggestedStrategy:g,reason:0===e?"章节事实、证据和表格可填性满足常规生成条件。":`识别到 ${e} 项生成前缺口,按 ${g} 策略生成。`}}({chapter:c,evidence:R}),ao=new Set(R.map(a=>a.filePath)).size,ap=!!v&&(v?.graphFiles.size||0)>=8&&ao>=6&&0===S.length&&"low"===an.riskLevel,as=function(a){let b=a.evidenceFileCount<=2;return a.scopedFileCount>80?b:"evidence_first"===a.suggestedStrategy||a.highRisk||a.missingFactsCount>0||a.requiredMissingNeedsCount>0||b||a.evidenceCount<8&&"low"!==a.riskLevel}({scopedFileCount:A.length,evidenceCount:R.length,evidenceFileCount:ao,suggestedStrategy:an.suggestedStrategy,highRisk:k.highRisk,missingFactsCount:S.length,requiredMissingNeedsCount:am.length,riskLevel:an.riskLevel});if(!ap&&as&&A.length>0){let b=new Set([...S,...am]).size;b>0&&(a.global.progressStages[o]=(0,b8.X5)({type:"chapter_generation",roleId:"chapter_generation",status:"running",message:`${(0,aq.GQ)(c.title)} 正在深度召回缺失事实证据(${b} 项需求)`,progress:{current:j+1,total:a.planning.effectiveChapters.length,label:"深度召回"}},{subtitle:(0,aq.GQ)(c.title),order:j}),a.global.emitProgress());let d=await dg({manager:a.understanding.manager,projectRoot:a.prepare.projectRoot,chapter:c,scopedFilePaths:A,fileRoleByPath:a.understanding.fileRoleByPath,fileProcessingByPath:a.understanding.fileProcessingByPath,requiredNeeds:[...new Set([...S,...am])],extraClues:a.prepare.requirementSemantics?.factClues||[],highRisk:k.highRisk||am.length>0,signal:a.global.input.signal}).catch(()=>[]);T=d.length,d.length>0&&(L=[...L,...(0,b7.Su)(d,a.understanding.projectMaterialScope)],a.understanding.excludedEvidenceKeys.size>0&&(L=L.filter(b=>!a.understanding.excludedEvidenceKeys.has((0,bf.hM)(b)))),R=ab(c,L,{preservePinned:!0},a.planning.generationDiagnostics),R=J(R,a.understanding.canonicalFacts.scopeConflicts),(0,b7.U2)(R,a.understanding.projectMaterialScope,`chapter:${c.id}:deep`),S=c.requiredFacts.filter(a=>!R.some(b=>(0,dd.Lk)(b,a)))),am=(al=(0,n.ji)({needs:ak,factsModel:a.understanding.preliminaryFactsModel,evidence:L,profile:a.prepare.domainProfile,excludedEvidenceKeys:a.understanding.excludedEvidenceKeys})).filter(a=>a.need.required&&"satisfied"!==a.status).map(a=>a.need.label),a.global.progressStages[o]=(0,b8.X5)({type:"chapter_generation",roleId:"chapter_generation",status:"running",message:`${(0,aq.GQ)(c.title)} 深度召回完成:命中 ${T} 条${am.length>0?`,仍缺 ${am.length} 项(触发轻量补充)`:""}`,progress:{current:j+1,total:a.planning.effectiveChapters.length,label:"证据检索"}},{subtitle:(0,aq.GQ)(c.title),order:j}),a.global.emitProgress()}if(am.length>0&&A.length>0){let b=(0,b7.Su)(await dg({manager:a.understanding.manager,projectRoot:a.prepare.projectRoot,chapter:c,scopedFilePaths:A,fileRoleByPath:a.understanding.fileRoleByPath,fileProcessingByPath:a.understanding.fileProcessingByPath,requiredNeeds:am,extraClues:a.prepare.requirementSemantics?.factClues||[],highRisk:!0,signal:a.global.input.signal}).catch(()=>[]),a.understanding.projectMaterialScope);b.length>0&&(L=[...L,...b],a.understanding.excludedEvidenceKeys.size>0&&(L=L.filter(b=>!a.understanding.excludedEvidenceKeys.has((0,bf.hM)(b)))),R=ab(c,L,{preservePinned:!0},a.planning.generationDiagnostics),R=J(R,a.understanding.canonicalFacts.scopeConflicts),(0,b7.U2)(R,a.understanding.projectMaterialScope,`chapter:${c.id}:supplemental`),S=c.requiredFacts.filter(a=>!R.some(b=>(0,dd.Lk)(b,a))),am=(al=(0,n.ji)({needs:ak,factsModel:a.understanding.preliminaryFactsModel,evidence:L,profile:a.prepare.domainProfile,excludedEvidenceKeys:a.understanding.excludedEvidenceKeys})).filter(a=>a.need.required&&"satisfied"!==a.status).map(a=>a.need.label))}for(let b of((0,b7.U2)(R,a.understanding.projectMaterialScope,`chapter:${c.id}:writer-session.global.input`),0===R.length&&a.understanding.missingItems.push(`${c.title}:缺少可支撑正文的项目资料证据`),S))a.understanding.missingItems.push(`${c.title}:事实需求未满足 ${b}`);let at=(0,b8.X5)({type:"knowledge_retrieval",roleId:"knowledge-base",status:a.understanding.allEvidence.length>0?"success":"failed",message:`已检索/绑定 ${a.understanding.allEvidence.length} 条证据`});a.understanding.knowledgeBaseStageIndex<0?a.understanding.knowledgeBaseStageIndex=(0,b8.fx)(a.global.progressStages,at):a.global.progressStages[a.understanding.knowledgeBaseStageIndex]={...at,order:a.global.progressStages[a.understanding.knowledgeBaseStageIndex]?.order??at.order},a.global.emitProgress(),(0,e.Te)(a.global.input.signal);let au=new Map,av=b=>{let d=(0,e.c6)({kind:"section",query:`${c.title} ${b}`.trim(),scopedFilePaths:A}),f=au.get(d);if(f)return Promise.resolve(f);let g=(0,di.Ym)(b,c,R),h=g.filter(a=>dp.AM.test(a.content)).length;return g.length>=4&&h>=1?(au.set(d,g),Promise.resolve(g)):ad({manager:a.understanding.manager,projectRoot:a.prepare.projectRoot,chapter:c,sectionTitle:b,scopedFilePaths:A,fileRoleByPath:a.understanding.fileRoleByPath,fileProcessingByPath:a.understanding.fileProcessingByPath,signal:a.global.input.signal}).then(a=>(au.set(d,a),a))},aw=b=>{if(0===b.length||0===A.length)return Promise.resolve([]);let d=b.join(" ");return ad({manager:a.understanding.manager,projectRoot:a.prepare.projectRoot,chapter:c,sectionTitle:d,scopedFilePaths:A,fileRoleByPath:a.understanding.fileRoleByPath,fileProcessingByPath:a.understanding.fileProcessingByPath,signal:a.global.input.signal}).catch(()=>[])},ax=function(a){let b=a.chapter.sections?.length||0,c=(a.chapter.sections||[]).filter(b=>a.evidence.some(a=>(0,dd.Lk)(a,b)||`${a.sectionTitle||""} ${a.content}`.includes(b))).length,d=a.chapter.requiredFacts.length,e=a.chapter.requiredFacts.filter(b=>a.evidence.some(a=>(0,dd.Lk)(a,b))).length;return{chapterId:a.chapter.id,chapterTitle:a.chapter.title,risk:a.risk,evidenceCount:a.evidence.length,evidenceFiles:new Set(a.evidence.map(a=>a.filePath)).size,sectionCovered:c,sectionTotal:b,requiredFactCovered:e,requiredFactTotal:d}}({chapter:c,evidence:R,risk:k});a.understanding.retrievalCoverageReports.push(ax);let ay=new Set(R.map(a=>a.filePath)),az=R.reduce((a,b)=>a+b.content.length,0),aB=[...k.highRisk?[`召回覆盖风险(${k.riskReason||"切片未完全预加载"}):已加载 ${k.loadedChunks}/${k.totalChunks},已启用深召回`]:[],`项目理解缓存证据:${B.length} 条`,`深召回证据:${T} 条`,`事实覆盖:${ax.requiredFactCovered}/${ax.requiredFactTotal}`,`小节覆盖:${ax.sectionCovered}/${ax.sectionTotal}`];a.global.progressStages[o]=(0,b8.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:a.prepare.promptPlan.writerPrompts[0]?.id,status:"running",message:`${(0,aq.GQ)(c.title)} 已选取 ${R.length} 条高相关证据,正在生成正文`,details:[`使用绑定文件:${ay.size} 份`,`上下文字符:${az}`,`检索查询:${y.length} 组`,...aB],progress:{current:j+1,total:a.planning.effectiveChapters.length,label:"正文生成"}},{subtitle:(0,aq.GQ)(c.title),order:j}),a.global.emitProgress(),a.planning.generationDiagnostics.evidence.contextChars+=az;let aC=(0,n.n9)(al),aD=a.planning.chapterIntentClassifier.needsBasicFacts(c.title)?a.understanding.earlyFactPool.projectBasicFacts:[],aE=(0,di.qX)((0,di.hZ)({chapter:c,plan:void 0,spec:a.prepare.documentSpec,roleFacts:I,evidence:R,missingFacts:S,indexedFacts:[...aD,...aC],resolvedFactNeeds:al,factNeedsPrompt:(0,n.GK)(al),specAuthorityMap:a.understanding.preliminaryFactsModel.specAuthorityMap})),aF=(0,eD.up)({plan:a.planning.plannedDocument.plan,chapter:c,context:a.understanding.agentWorkflow,evidence:R});if(a.understanding.agentWorkflow.chapterTasks=[...(a.understanding.agentWorkflow.chapterTasks||[]).filter(a=>a.chapterId!==c.id),aF.task],a.understanding.agentWorkflow.nodes.push(aF.node),(0,dh.cN)(a.understanding.agentWorkflow),(0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"validation",roleId:`agent-chapter-task-${c.id}`,status:aF.task.ready||q?"success":"failed",message:aF.task.ready?aF.node.outputSummary||`${(0,aq.GQ)(c.title)} 章节任务规划完成`:q?`${(0,aq.GQ)(c.title)} 章节任务未完全就绪,已复用已有正文并交由 Reviewer/Repairer 处理`:aF.node.outputSummary||`${(0,aq.GQ)(c.title)} 章节任务规划完成`,details:aF.task.issues.map(a=>a.message)},{subtitle:"Agent Chapter Task Planner",order:a.global.progressStages.length})),a.global.emitProgress(a.global.chapterDrafts),!aF.task.ready&&!q)throw Error(`${(0,aq.GQ)(c.title)} 章节任务未就绪:${aF.task.issues.map(a=>a.message).join(";")}`);let aG=[ah,(0,eD.bT)(aF.task)].filter(Boolean).join("\n\n"),aH={total:al.length,satisfied:al.filter(a=>"satisfied"===a.status).length,missing:al.filter(a=>"missing"===a.status).length,lowConfidence:al.filter(a=>"low_confidence"===a.status).length};for(let b of am)a.understanding.missingItems.push(`${c.title}:事实需求未确认 ${b}`);let aI=a.planning.documentBudget.chapterTargets.get(c.id)||1200,aJ=c.sections?.filter(Boolean).length||0,aK=/[、,,;;]/u.test(c.title),aL=function(a){let{budgetTarget:b,sectionCount:c,title:d,longformStrict:e}=a,f=/[、,,;;]/u.test(d),g=/工期|进度|质量|安全|危大|资源|人材机|保障|措施|重难点/u.test(d),h=/概况|结语|附录|说明/u.test(d),i=c>0?c*(f?720:g?900:780):g?5200:3600,j=e?h?2600:g?5200:3600:Math.min(1200,b),k=e?Math.min(Math.max(4200,b),c>=30?9800:f?8800:g?9200:7200):b,l=e?Math.max(j,b):Math.max(j,Math.min(b,i,k));return{budgetTarget:b,roundTarget:l,structureTarget:i,maxWords:Math.ceil(l*(a.longformStrict?1.12:1.18)),label:`章节预算约 ${b} 字,本轮生成约 ${l} 字,结构目标约 ${i} 字`}}({budgetTarget:aI,sectionCount:aJ,title:c.title,longformStrict:a.planning.documentBudget.longformStrict}),aM=Math.ceil(aL.maxWords*(a.planning.documentBudget.maxChars?1.05:1)),aN=aZ(c.title,a.planning.chapterIntentClassifier).length>0,aO=(a.blueprint.blueprintActive||aN&&0===l.missing.length)&&a.blueprint.integratedBlueprint?function(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))}(a.blueprint.integratedBlueprint,c.title):void 0,aP=aO&&a.blueprint.integratedBlueprint?function(a,b){let c=[`【第 ${a.id} 章「${a.title}」蓝图切片——以下项目专属事实由蓝图冻结锁定,正文必须一致引用】`];for(let b of a.subSections){c.push(`
87
87
  ## ${b.id} ${b.title}(目标 ${b.targetWords??2400} 字)`);let a=b.requiredParams.filter(a=>"must_cite"===a.mode).map(a=>a.path);for(let d of(a.length>0&&c.push(`must_cite 参数(正文必须出现且与蓝图一致):${a.join("、")}`),b.workPackages)){c.push(`
88
88
  ### 工作包:${d.name}(${"major"===d.kind?"主要":"一般"}工作包)`);let a=Object.entries(d.quantities).map(([a,b])=>`${a} ${b.value}${b.unit}`).join("、");a&&c.push(`- 工程量:${a}`),d.processChain.length>0&&c.push(`- 工序链:${d.processChain.join(" → ")}`),d.methods.length>0&&c.push(`- 施工方法(清单特征原文):${d.methods.join(";")}`),d.params.length>0&&c.push(`- 工艺参数:${d.params.map(a=>`${a.key}=${a.value}`).join(";")}`),d.acceptance.length>0&&c.push(`- 验收要求:${d.acceptance.join(";")}`),d.standards.length>0&&c.push(`- 规范依据:${d.standards.join(";")}`)}}let d=b?function(a,b){let c=[];for(let d of a_)d.chapterPattern.test(a.title)&&c.push(...d.render(b));return 0===c.length?"":["【本章数值锚点——计划类数值必须且只能引用以下锚点值;禁止将各工种人数相加推导峰值、禁止按定额自行估算、禁止改写或自设任何计划类数值】",...c].join("\n")}(a,b):"";return[c.join("\n"),d].filter(Boolean).join("\n\n")}(aO,a.blueprint.integratedBlueprint.data):"",aQ=aO&&a.blueprint.integratedBlueprint?function(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(";")}(aO,a.blueprint.integratedBlueprint.data):"",aR=aL.roundTarget,aS=(0,di.uV)(aR,aR),aT=aJ>0?a.planning.documentBudget.longformStrict?aR:Math.min(aR,Math.max(1800,aL.structureTarget)):aR,aU=aJ>=2&&aJ<=8&&!aK,aV=!!(aO&&aO.subSections.length>aJ),aW=aJ>=2&&(aJ>8||aK||aV||a.planning.documentBudget.longformStrict&&aJ>=6),aX=!aW&&aJ>=2&&aJ<=8&&(aU||a.planning.documentBudget.longformStrict),aY=0,a$=b=>{let d=Date.now();if(d-aY<3e3)return;aY=d;let e=b.filter(Boolean).join("\n\n");e.trim()&&a.global.emitProgress([...a.global.chapterDrafts,{id:c.id,title:c.title,content:`## ${c.title}
89
89
 
90
- ${e}`,evidence:R,missingFacts:S,sections:c.sections||[],tablePlans:c.tablePlans||[],inProgress:!0}])},a1=a=>{"complete"===a.phase&&a.partialSections&&a$(a.partialSections)};if(q)d=(0,M.w_)(q,c),d=await (0,M._k)(d,a.understanding.bidProcedureJudge),i=(0,b8.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:ag.primaryPromptId,status:"success",message:`${(0,aq.GQ)(c.title)} 已复用已有章节正文:当前 ${(0,h.V7)(d)} 字,跳过 Writer,直接进入章节收口`,details:[`有效证据:${R.length} 条`,`事实需求:${aH.satisfied}/${aH.total} 已满足,缺失 ${aH.missing},低置信 ${aH.lowConfidence}`,"来源:resumeChapters/checkpointChapters"],progress:{current:j+1,total:a.planning.effectiveChapters.length,label:"复用章节"}},{subtitle:(0,aq.GQ)(c.title),order:j}),a.global.progressStages[o]=i,a.global.emitProgress(a.global.chapterDrafts);else{let g;a.global.progressStages[o]=(0,b8.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:ag.primaryPromptId,status:"running",message:aW?`${(0,aq.GQ)(c.title)} 正在规划主题块并准备并发成稿`:aX?`${(0,aq.GQ)(c.title)} 正在按小节并发成稿`:`${(0,aq.GQ)(c.title)} 正在整章一次成稿`,details:aW||aX?[...ai,`有效证据:${R.length} 条`,`事实需求:${aH.satisfied}/${aH.total} 已满足,缺失 ${aH.missing},低置信 ${aH.lowConfidence}`,aL.label,`生成上限约 ${aM} 字`,`模板细目:${c.sections?.length||0} 条`,aW?"细目较多,先由章级 Planner 聚类为主题块并语义合并,再按主题块全并发出稿,避免逐小节碎片化":"按章节结构拆分小节自然并发生成,章节聚合后再审查修复"]:[...ai,`有效证据:${R.length} 条`,`事实需求:${aH.satisfied}/${aH.total} 已满足,缺失 ${aH.missing},低置信 ${aH.lowConfidence}`,aL.label,`生成上限约 ${aM} 字`,`规划小节:${aJ} 个`,"首次生成必须覆盖章节结构、小节和事实,篇幅目标仅作为规划参考"],progress:{current:j+1,total:a.planning.effectiveChapters.length,label:aW?"主题块并发":aX?"小节并发":"整章成稿"}},{subtitle:(0,aq.GQ)(c.title),order:j}),a.global.emitProgress();let i=async(a,b,c)=>{let d=await Promise.all(b.map(({block:b})=>(0,di.nl)({...a,targetWords:b.targetWords,maxWords:Math.ceil(1.1*b.targetWords)},{blocks:[b],coveredSections:[],fallbackSections:[],llmPlanned:!1}).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};if(aW){let d=await a.global.withProgressHeartbeat(()=>(0,f.X6)(a.planning.generationDiagnostics,`chapter-plan:${c.id}`,async()=>(function(a){let b,{blueprintChapter:c,inputSections:d,chapterTitle:f,targetWords:g}=a,h=[],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]}));for(let c=0;c<b.length;c+=6){let d=b.slice(c,c+6);h.push({title:1===d.length?a.title:`${a.title}(${c/6+1})`,subPoints:d,facts:[],targetWords:1200})}}if(0===h.length){let a=a9(d,f,g);h=a.blocks,i=a.coveredSections,b=a.fallbackSections}else i=d.filter(a=>h.some(b=>a6(b.title,a)||b.subPoints.some(b=>b.sources.some(b=>a6(b,a))||a6(b.title,a)))),b=d.filter(a=>!i.includes(a))}else{let a=a9(d,f,g);h=a.blocks,i=a.coveredSections,b=a.fallbackSections}if(b.length>0){for(let a of a9(b,f,g).blocks)h.some(b=>a6(b.title,a.title)||a.subPoints.some(a=>b.subPoints.some(b=>a6(b.title,a.title))))||h.push(a);i=[...i,...b],b=[]}if(a.projectContext&&a.evidence){let b=a.projectContext,c=a.evidence,d=ar.gG.test(f)?[]:(a.blueprintChapter?.subSections??[]).map(a=>a.title),g=ar.gG.test(f)?new Set(h.map(a=>(0,e.Sw)(a.title)).filter(Boolean)):new Set;h=h.map(a=>{if(!a8(a.title)||ar.gG.test(f)&&ar.gG.test(a.title))return a;let h=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,aj.Ep)(b,c).filter(a=>{let b=a.replace(/^[一二三四五六七八九十百\d]+[、..\s::-]+/u,"");return!g.has((0,e.Sw)(b))}),...d],0);return h.length<3?a:{...a,subPoints:h.map(a=>({title:a,sources:[a]}))}})}return a7(h,g,f),{blocks:h,coveredSections:i,fallbackSections:b,llmPlanned:!1}})({blueprintChapter:aO,inputSections:c.sections||[],chapterTitle:(0,aq.GQ)(c.title),targetWords:aT,projectContext:a.planning.projectContext,evidence:R}))),h=function(a){if(!a.blocks.some(a=>1===a.subPoints.length&&a.targetWords>2400&&!a8(a.title)))return a;let b=a.blocks.flatMap(a=>{if(1!==a.subPoints.length||a.targetWords<=2400||a8(a.title))return[a];let b=Math.max(1200,Math.floor(a.targetWords/2));return[{...a,title:`${a.title}(一)`,targetWords:b,halfFocus:"本部分为该主题的前半部分,聚焦总体构成与组织框架:逐项列明构成要素、总体规模指标与组织方式;只写本部分内容,不得涉及后半部分的具体展开。"},{...a,title:`${a.title}(二)`,targetWords:b,halfFocus:"本部分为该主题的后半部分,聚焦具体展开与实施要求:逐项展开实施内容、工艺要求与衔接安排;只写本部分内容,不得重复前半部分的总体框架。"}]});return{...a,blocks:b}}(d);if(h.blocks.length>0){b=h;let d=[ah,(0,eD.$8)(aF.task,h)].filter(Boolean).join("\n\n"),e=h.blocks.reduce((a,b)=>a+b.subPoints.length,0),k=h.blocks.reduce((a,b)=>a+b.subPoints.reduce((a,b)=>a+Math.max(0,b.sources.length-1),0),0),l=aO?h.fallbackSections.length>0?`(蓝图章切片确定性转换:${h.fallbackSections.length} 条细目由覆盖校验挂回主题块)`:"(蓝图章切片确定性转换:主题块来自蓝图小节/工作包)":"(蓝图未覆盖本章,已按语义域确定性分组)";a.global.progressStages[o]=(0,b8.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:ag.primaryPromptId,status:"running",message:`${(0,aq.GQ)(c.title)} 已规划 ${h.blocks.length} 个主题块,正在按主题块并发成稿${l}`,details:[...ai,`有效证据:${R.length} 条`,`输入细目 ${aJ} 条 → 主题块 ${h.blocks.length} 个(每块 2~4 个 H4 要点)`,`语义合并 ${k} 条细目,目录级 H4 合计 ${e} 个`,"单块 1200~2200 字,主题块间全并发,单节深度与整体耗时双优"],progress:{current:j+1,total:a.planning.effectiveChapters.length,label:"主题块并发"}},{subtitle:(0,aq.GQ)(c.title),order:j});let m=a.global.progressStages.find(a=>a.roleId===`agent-chapter-task-${c.id}`);m&&(m.message=`${aF.task.sections.filter(a=>a.ready).length}/${aF.task.sections.length} 条细目任务就绪(已规划为 ${h.blocks.length} 个主题块)`),a.global.emitProgress(a.global.chapterDrafts);let n={template:a.prepare.template,chapter:c,evidence:R,missingFacts:S,promptTexts:d,projectContext:a.planning.chapterScopedProjectContext(c),skeletonProjectContext:a.planning.projectContext,requirement:a.global.input.requirement,roleContext:af,targetWords:aT,maxWords:aM,forbidDrawingImages:!1,factCoverageContext:aE,compactProjectContext:!0,scopedProjectContext:!0,blueprintDataText:a.blueprint.blueprintDataText,blueprintSliceText:aP,blueprintMustCiteHint:aQ,sectionEvidenceProvider:av,onSectionProgress:a1,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,di.nl)(n,h)));if(p?.allSucceeded)g=p.markdown;else if(p){let a=await i(n,p.failedBlocks,p.sections),b=p.failedBlocks.filter(({index:b})=>!a[b]);b.length>0&&(a=await i(n,b,a)),a.every(a=>!!a)&&(g=`## ${c.title}
90
+ ${e}`,evidence:R,missingFacts:S,sections:c.sections||[],tablePlans:c.tablePlans||[],inProgress:!0}])},a1=a=>{"complete"===a.phase&&a.partialSections&&a$(a.partialSections)};if(q)d=(0,M.w_)(q,c),d=await (0,M._k)(d,a.understanding.bidProcedureJudge),i=(0,b8.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:ag.primaryPromptId,status:"success",message:`${(0,aq.GQ)(c.title)} 已复用已有章节正文:当前 ${(0,h.V7)(d)} 字,跳过 Writer,直接进入章节收口`,details:[`有效证据:${R.length} 条`,`事实需求:${aH.satisfied}/${aH.total} 已满足,缺失 ${aH.missing},低置信 ${aH.lowConfidence}`,"来源:resumeChapters/checkpointChapters"],progress:{current:j+1,total:a.planning.effectiveChapters.length,label:"复用章节"}},{subtitle:(0,aq.GQ)(c.title),order:j}),a.global.progressStages[o]=i,a.global.emitProgress(a.global.chapterDrafts);else{let g;a.global.progressStages[o]=(0,b8.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:ag.primaryPromptId,status:"running",message:aW?`${(0,aq.GQ)(c.title)} 正在规划主题块并准备并发成稿`:aX?`${(0,aq.GQ)(c.title)} 正在按小节并发成稿`:`${(0,aq.GQ)(c.title)} 正在整章一次成稿`,details:aW||aX?[...ai,`有效证据:${R.length} 条`,`事实需求:${aH.satisfied}/${aH.total} 已满足,缺失 ${aH.missing},低置信 ${aH.lowConfidence}`,aL.label,`生成上限约 ${aM} 字`,`模板细目:${c.sections?.length||0} 条`,aW?"细目较多,先由章级 Planner 聚类为主题块并语义合并,再按主题块全并发出稿,避免逐小节碎片化":"按章节结构拆分小节自然并发生成,章节聚合后再审查修复"]:[...ai,`有效证据:${R.length} 条`,`事实需求:${aH.satisfied}/${aH.total} 已满足,缺失 ${aH.missing},低置信 ${aH.lowConfidence}`,aL.label,`生成上限约 ${aM} 字`,`规划小节:${aJ} 个`,"首次生成必须覆盖章节结构、小节和事实,篇幅目标仅作为规划参考"],progress:{current:j+1,total:a.planning.effectiveChapters.length,label:aW?"主题块并发":aX?"小节并发":"整章成稿"}},{subtitle:(0,aq.GQ)(c.title),order:j}),a.global.emitProgress();let i=async(a,b,c)=>{let d=await Promise.all(b.map(({block:b})=>(0,di.nl)({...a,targetWords:b.targetWords,maxWords:Math.ceil(1.1*b.targetWords)},{blocks:[b],coveredSections:[],fallbackSections:[],llmPlanned:!1}).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};if(aW){let d=await a.global.withProgressHeartbeat(()=>(0,f.X6)(a.planning.generationDiagnostics,`chapter-plan:${c.id}`,async()=>(function(a){let b,{blueprintChapter:c,inputSections:d,chapterTitle:f,targetWords:g}=a,h=[],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]}));b.length>6?h.push(...function(a,b){let c=a.replace(/工程$/u,""),d=[],f=new Map;for(let a of b){let b=(0,e.Ld)(a.title),c=f.get(b);void 0===c&&(c=d.length,f.set(b,c),d.push({label:b,points:[]})),d[c].points.push(a)}let g=[];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?`${c}${a.label}`:d[0].title;g.push({title:e,subPoints:d,facts:[],targetWords:1200})}return g}(a.title,b)):h.push({title:a.title,subPoints:b,facts:[],targetWords:1200})}if(0===h.length){let a=a9(d,f,g);h=a.blocks,i=a.coveredSections,b=a.fallbackSections}else i=d.filter(a=>h.some(b=>a6(b.title,a)||b.subPoints.some(b=>b.sources.some(b=>a6(b,a))||a6(b.title,a)))),b=d.filter(a=>!i.includes(a))}else{let a=a9(d,f,g);h=a.blocks,i=a.coveredSections,b=a.fallbackSections}if(b.length>0){for(let a of a9(b,f,g).blocks)h.some(b=>a6(b.title,a.title)||a.subPoints.some(a=>b.subPoints.some(b=>a6(b.title,a.title))))||h.push(a);i=[...i,...b],b=[]}if(a.projectContext&&a.evidence){let b=a.projectContext,c=a.evidence,d=ar.gG.test(f)?[]:(a.blueprintChapter?.subSections??[]).map(a=>a.title),g=ar.gG.test(f)?new Set(h.map(a=>(0,e.Sw)(a.title)).filter(Boolean)):new Set;h=h.map(a=>{if(!a8(a.title)||ar.gG.test(f)&&ar.gG.test(a.title))return a;let h=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,aj.Ep)(b,c).filter(a=>{let b=a.replace(/^[一二三四五六七八九十百\d]+[、..\s::-]+/u,"");return!g.has((0,e.Sw)(b))}),...d],0);return h.length<3?a:{...a,subPoints:h.map(a=>({title:a,sources:[a]}))}})}return a7(h,g,f),{blocks:h,coveredSections:i,fallbackSections:b,llmPlanned:!1}})({blueprintChapter:aO,inputSections:c.sections||[],chapterTitle:(0,aq.GQ)(c.title),targetWords:aT,projectContext:a.planning.projectContext,evidence:R}))),h=function(a){if(!a.blocks.some(a=>1===a.subPoints.length&&a.targetWords>2400&&!a8(a.title)))return a;let b=a.blocks.flatMap(a=>{if(1!==a.subPoints.length||a.targetWords<=2400||a8(a.title))return[a];let b=Math.max(1200,Math.floor(a.targetWords/2));return[{...a,targetWords:b,halfFocus:"本部分为该主题的前半部分,聚焦总体构成与组织框架:逐项列明构成要素、总体规模指标与组织方式;只写本部分内容,不得涉及后半部分的具体展开。"},{...a,targetWords:b,halfFocus:"本部分为该主题的后半部分,聚焦具体展开与实施要求:逐项展开实施内容、工艺要求与衔接安排;只写本部分内容,不得重复前半部分的总体框架。"}]});return{...a,blocks:b}}(d);if(h.blocks.length>0){b=h;let d=[ah,(0,eD.$8)(aF.task,h)].filter(Boolean).join("\n\n"),e=h.blocks.reduce((a,b)=>a+b.subPoints.length,0),k=h.blocks.reduce((a,b)=>a+b.subPoints.reduce((a,b)=>a+Math.max(0,b.sources.length-1),0),0),l=aO?h.fallbackSections.length>0?`(蓝图章切片确定性转换:${h.fallbackSections.length} 条细目由覆盖校验挂回主题块)`:"(蓝图章切片确定性转换:主题块来自蓝图小节/工作包)":"(蓝图未覆盖本章,已按语义域确定性分组)";a.global.progressStages[o]=(0,b8.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:ag.primaryPromptId,status:"running",message:`${(0,aq.GQ)(c.title)} 已规划 ${h.blocks.length} 个主题块,正在按主题块并发成稿${l}`,details:[...ai,`有效证据:${R.length} 条`,`输入细目 ${aJ} 条 → 主题块 ${h.blocks.length} 个(每块 2~4 个 H4 要点)`,`语义合并 ${k} 条细目,目录级 H4 合计 ${e} 个`,"单块 1200~2200 字,主题块间全并发,单节深度与整体耗时双优"],progress:{current:j+1,total:a.planning.effectiveChapters.length,label:"主题块并发"}},{subtitle:(0,aq.GQ)(c.title),order:j});let m=a.global.progressStages.find(a=>a.roleId===`agent-chapter-task-${c.id}`);m&&(m.message=`${aF.task.sections.filter(a=>a.ready).length}/${aF.task.sections.length} 条细目任务就绪(已规划为 ${h.blocks.length} 个主题块)`),a.global.emitProgress(a.global.chapterDrafts);let n={template:a.prepare.template,chapter:c,evidence:R,missingFacts:S,promptTexts:d,projectContext:a.planning.chapterScopedProjectContext(c),skeletonProjectContext:a.planning.projectContext,requirement:a.global.input.requirement,roleContext:af,targetWords:aT,maxWords:aM,forbidDrawingImages:!1,factCoverageContext:aE,compactProjectContext:!0,scopedProjectContext:!0,blueprintDataText:a.blueprint.blueprintDataText,blueprintSliceText:aP,blueprintMustCiteHint:aQ,sectionEvidenceProvider:av,onSectionProgress:a1,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,di.nl)(n,h)));if(p?.allSucceeded)g=p.markdown;else if(p){let a=await i(n,p.failedBlocks,p.sections),b=p.failedBlocks.filter(({index:b})=>!a[b]);b.length>0&&(a=await i(n,b,a)),a.every(a=>!!a)&&(g=`## ${c.title}
91
91
 
92
92
  ${a.join("\n\n")}`)}}}else g=aX?await a.global.withProgressHeartbeat(()=>(0,f.X6)(a.planning.generationDiagnostics,`chapter-section-draft:${c.id}`,()=>(0,di.N1)({template:a.prepare.template,chapter:c,evidence:R,missingFacts:S,promptTexts:aG,projectContext:a.planning.chapterScopedProjectContext(c),skeletonProjectContext:a.planning.projectContext,requirement:a.global.input.requirement,roleContext:af,targetWords:aT,maxWords:aM,forbidDrawingImages:!1,factCoverageContext:aE,projectRoot:a.prepare.projectRoot,modelName:(0,aA.$y)()?.model.name,materialContextHash:(0,e.c6)({materialFilePaths:a.prepare.materialFilePaths,promptTexts:ah}),allowPartialResult:!1,compactProjectContext:!0,scopedProjectContext:!0,blueprintDataText:a.blueprint.blueprintDataText,blueprintSliceText:aP,sectionEvidenceProvider:av,onSectionProgress:a1,diagnostics:a.planning.generationDiagnostics,signal:a.global.input.signal}))):await a.global.withProgressHeartbeat(()=>(0,f.X6)(a.planning.generationDiagnostics,`chapter-draft:${c.id}`,()=>(0,di.eu)(a.prepare.template,c,R,S,aG,a.planning.chapterScopedProjectContext(c),a.global.input.requirement,af,{forbidDrawingImages:!1,minWords:aR,targetWords:aR,maxWords:aM,maxTokens:aS,factCoverageContext:aE,blueprintDataText:a.blueprint.blueprintDataText,blueprintSliceText:aP,signal:a.global.input.signal,diagnostics:a.planning.generationDiagnostics,supplementEvidenceProvider:aw,evidenceFloorChars:a.planning.generationBudget.evidenceFloorChars,evidenceCeilingChars:a.planning.generationBudget.evidenceCeilingChars})));if(g||(a.planning.generationDiagnostics.llm.lastError=a.planning.generationDiagnostics.llm.lastError||"全部成稿路径未返回有效正文"),g&&aO&&a.blueprint.integratedBlueprint){let b=function(a,b,c){let d=[],e=[],f=a,g=b.subSections.flatMap(a=>a.requiredParams.filter(a=>"must_cite"===a.mode&&a.strict)),i=[];/劳动力|人员|资源|进度|工期|部署|概况/u.test(b.title)&&c.resources.labor.peakValue>0&&i.push({path:"data.resources.labor.peak_value",mode:"must_cite",strict:!0}),/绿化|种植|养护|苗木|技能|培训|成品保护|质量/u.test(b.title)&&i.push({path:"data.redline.greening_maintenance",mode:"must_cite",strict:!0});let j=[...g,...i],k=new Set;for(let a of j)if(!k.has(a.path)){if(k.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(`${a0(b)}[^\\n。;;]{0,40}?(\\d+(?:\\.\\d+)?)\\s*${h?a0(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,h._P)(b[1]??"");if(void 0===g||!Number.isFinite(g)||g<=0)continue;let i=/养护[^。;;\n|]{0,16}?([一二两三四五六七八九十]+|\d{1,2})\s*年/gu,j=!1;f=f.replace(i,(a,b)=>{j=!0;let c=(0,h._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)))}),j||e.push(`养护期 ${g} 年`);continue}}return{markdown:f,fixed:d,missing:e}}(g,aO,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((0,e.Te)(a.global.input.signal),!g){let b=`${(0,aq.GQ)(c.title)} 大模型未返回有效正文,已阻断生成`;throw a.global.progressStages[o]=(0,b8.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:ag.primaryPromptId,status:"failed",message:b,details:[`LLM 最近错误:${a.planning.generationDiagnostics.llm.lastError||"空响应或超时"}`,`证据条数:${R.length}`],progress:{current:j+1,total:a.planning.effectiveChapters.length,label:"章节阻断"}},{subtitle:(0,aq.GQ)(c.title),order:j}),a.global.emitProgress(a.global.chapterDrafts),Error(b)}if(!g.trim())throw Error(`${(0,aq.GQ)(c.title)} 首次生成失败,未获得可用于定稿的正文`);let k=b&&b.blocks.length>0?b.blocks.map(a=>a.title):(c.sections||[]).filter(Boolean),l=b&&b.blocks.length>0?b.blocks.flatMap(a=>a.subPoints.map(a=>a.title)):[],m=g;k.length>0&&(m=(0,e.Ww)(m,k,3)),l.length>0&&(m=(0,e.Ww)(m,l,4)),d=(0,M.w_)(m,c),d=await (0,M._k)(d,a.understanding.bidProcedureJudge)}let a2=await dj({chapter:c,content:d,evidence:R}),a3=(0,h.V7)(d),a4=(0,bc.r4)(d),a5=b&&b.blocks.length>0?b.blocks.map(a=>a.title):(c.sections||[]).filter(Boolean),ba=a5.length>0?a5:a4.length>0?a4:[],bb=(0,cg.qK)(d,[{title:c.title,content:d,sections:ba}]).map(a=>a.message),bd=a2.slice(0,6).map(a=>`小节事实密度需优化:${a}`),bg=[...bb,...bd],bh=function(a,b,c=[]){return a<=0||c.some(a=>/未返回有效章节正文|生成失败/u.test(a))||c.some(a=>/空小节|缺少规划小节/u.test(a))?"failed":"success"}(a3,0,bg);return i=(0,b8.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:ag.primaryPromptId,status:bh,message:(0,b8.AQ)(`${(0,aq.GQ)(c.title)} 已由大模型成稿:当前 ${a3} 字;章节预算约 ${aL.budgetTarget} 字,本轮目标约 ${aL.roundTarget} 字${bg.length?`;待优化:${bg.slice(0,8).join("、")}`:""}`,m),details:[`本轮完成率:${Math.round(a3/Math.max(1,aL.roundTarget)*100)}%`,`结构目标约 ${aL.structureTarget} 字`,...ai,`二级小节:${ba.length} 个`],progress:{current:j+1,total:a.planning.effectiveChapters.length,label:bg.length?"章节已生成":"章节达标"}},{subtitle:(0,aq.GQ)(c.title),order:j}),a.understanding.chapterGenerationStagesByOrder[j]=i,async()=>{let b={id:c.id,title:c.title,content:d,evidence:R,missingFacts:S,sections:ba,tablePlans:c.tablePlans||[]};a.understanding.chapterDraftsByOrder[j]=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),i=(0,b8.X5)({type:"chapter_generation",roleId:"chapter_generation",status:"failed",message:`${(0,aq.GQ)(c.title)} 生成失败:${e}`,details:[`LLM 最近错误:${b||"无记录"}`,`LLM 调用失败 ${a.planning.generationDiagnostics.llm.failures} 次、重试 ${a.planning.generationDiagnostics.llm.retries} 次`]},{subtitle:(0,aq.GQ)(c.title),order:j}),a.understanding.chapterGenerationStagesByOrder[j]=i}i&&(a.global.progressStages[o]=i),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 eG(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,dQ.z)().chapterConcurrency||0;a.blueprint.chapterConcurrency=a.planning.generationBudget.chapterConcurrency,a.blueprint.reviewConcurrency=a.planning.generationBudget.reviewConcurrency,(0,b8.fx)(a.global.progressStages,(0,b8.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$)(N,async b=>a.understanding.searchWithCache(b,d,Math.min(a.understanding.requestedEvidencePerChapter,12),""),{kind:"search"})).flat():[],a.planning.generationDiagnostics.evidence.searchQueries+=N.length,a.planning.generationDiagnostics.evidence.searchMs+=Date.now()-f;let g=Date.now();try{a.blueprint.integratedBlueprint=function(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]},e=aL({projectRoot:a.projectRoot,boundFilePaths:a.boundFilePaths});e.warning&&c.warnings.push(e.warning);let f=e.boq;f&&(c.boq={sourceFile:f.sourceFile,totalEntries:f.totalEntries,complete:f.complete,villageCount:f.villages.length,pagesMissingTotal:f.villages.reduce((a,b)=>a+b.pagesMissing.length,0)},f.complete||c.warnings.push("清单解析完整性校验未通过(序号缺口/页码缺失),蓝图覆盖校验将兜底报告")),c.stage="阶段 A";let g=f||{entries:[],villages:[],totalEntries:0,sourceFile:"",complete:!1,diagnostics:{totalChunks:0,markdownChunks:0,declarationChunks:0,skippedChunks:0,droppedIncompleteRows:0}},h=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 aE;let d=[{strategy:aF,patterns:[/砌体|装饰|幕墙|地下室|层高|户型|塔吊|塔式起重机|脚手架|抹灰|门窗|屋面|防水/u]},{strategy:aH,patterns:[/桥墩|桥台|墩柱|盖梁|系梁|箱梁|梁板|支座|伸缩缝|桥面|隧道|洞身|衬砌|锚杆/u]},{strategy:aI,patterns:[/路基|路面|沥青|水稳|摊铺|压实|面层/u]},{strategy:aJ,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=`${a.templateName||""} ${a.basicFacts||""} ${a.chapterTitles.join(" ")} ${b}`,f=(0,i.aF)(e);return"房建"===f||"装饰装修"===f?aF:"桥梁与隧道"===f?aH:"公路"===f?aI:"水利水电"===f?aJ:aG}({basicFacts:a.basicFacts,templateName:a.templateName,chapterTitles:a.chapterTitles,boq:g}),j=function(a){var b;let{boq:c}=a,d=a.strategy||aE,e=aM(c),f=function(a){let b=[];for(let c of aN)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),g=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;g>0&&f.push({key:"自然村数量",value:`${g} 个自然村`,source:"招标文件项目名称(清单自然村分组兜底)"});let h=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),i=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),j=function(a,b,c=aE){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,i.totalDays,d),k=function(a,b,c=0,d=[],e=aE){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=aO(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,i.totalDays,i.estimatedAmount||0,j,d),l=function(a,b=aE){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),m=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 aP){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})}let c=new Map;for(let a of b.values())c.set(a.name,(c.get(a.name)??0)+a.quantity);let d=new Set([...c.entries()].sort((a,b)=>b[1]-a[1]).slice(0,40).map(([a])=>a));return[...b.values()].filter(a=>d.has(a.name)).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),n=function(a,b=aE){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=aE){let{machinePowerTable:d,powerFallbackText:e,waterNoteText:f}=c,g=a.filter(a=>!aQ.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}`}}(l,k,d),t=(a.evidence||[]).map(a=>String(a.content||"")).join("\n"),u=function(a,b){let c=function(){let a=p.join(q.homedir(),".customize-agent","template-references"),b=p.join(a,"files","standard-blocks");if(!o.existsSync(b))return[];let c=p.join(a,"standard-blocks.json"),d=[];if(o.existsSync(c))try{d=(JSON.parse(o.readFileSync(c,"utf8")).blocks||[]).map(a=>a.id)}catch{d=[]}return 0===d.length&&(d=o.readdirSync(b).filter(a=>a.endsWith(".md")).map(a=>a.replace(/\.md$/u,""))),d.flatMap(a=>{let c=p.join(b,`${a}.md`);if(!o.existsSync(c))return[];let d=o.readFileSync(c,"utf8"),e=(/^title:\s*(\S.*)$/mu.exec(d)||[])[1]?.trim()||a;return[{id:a,title:e,source:(/^source:\s*(\S.*)$/mu.exec(d)||[])[1]?.trim()||"",lines:d.split("\n").filter(Boolean)}]})}(),d=[],e=[];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"])e.push(a),d.push({id:a,title:a,source:"(缺口:参考文档资产未建设)",items:[],gap:!0});return{blocks:d,gaps:e}}(c,t),v=function(a,b=aE){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=aE){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=aU({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))continue;let a=c.section||"未分部条目",d=b.get(a)||[];d.push(c),b.set(a,d)}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:i,labor:k,boq:c,villageCount:g}),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 aC)if(b.pattern.test(a))return{...b.climate};return{rainySeason:"",highTemp:"",winter:""}}(z):(b=d.climateZone)&&aC.find(a=>a.zone===b)?.climate||{rainySeason:"",highTemp:"",winter:""},B=[];return j.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:i.totalDays,qualityStandard:i.qualityStandard,pricingFile:i.pricingFile,estimatedAmount:i.estimatedAmount||void 0},climate:A,milestones:j,resources:{labor:k,equipment:l},materialsPlan:m,fundPlan:{wageRule:"工资性工程款按合造价〔2022〕8号执行",usagePlan:"按进度分阶段使用"},testPlan:[],earthworkBalance:r,tempUtilities:s,redLineFacts:f,amountRule:"商务禁区延续:金额类数据禁入正文(合同估算价例外),fund_plan/red_line_facts 渲染时遵守",decisionLock:x,quantities:e,specAuthorities:h,inspectionBatches:n,standardBlocks:u.blocks,constructionDeployment:v,keyDifficulties:w,basisRegulations: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}(`${a.basicFacts||""}
93
- ${t}`),drawingNote:"总平面布置图/横道图/组织机构图为后期人工配图,蓝图只规划对应章节正文内容"},diagnostics:{standardBlocksLoaded:u.blocks.filter(a=>!a.gap).length,standardBlockGaps:u.gaps,warnings:B}}}({boq:g,basicFacts:a.basicFacts,evidence:a.evidence,facts:a.facts,projectName:d.projectCode||"",strategy:h});c.standardBlocksLoaded=j.diagnostics.standardBlocksLoaded,c.standardBlockGaps=j.diagnostics.standardBlockGaps,c.warnings.push(...j.diagnostics.warnings),c.stage="阶段 B/C";let k=function(a){let{chapterTitles:b,boq:c}=a;return{chapters:b.map((b,d)=>{var e;let f=String(d+1),g=aV.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){let a=b.section||"未分部条目",d=c.get(a)||[];d.push(b),c.set(a,d)}let d=[],e=0;for(let[a,f]of c){let c=aW(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(aY(aW(b,c),c))}else h.push(aY(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:g,docType:d.docType});c.stage="阶段 D";let l={meta:d,data:j.data,outline:k,validation:{passed:!1,checks:[]},diagnostics:c};return l.validation=function(a,b){let c=[],d=(0,aA.Jx)(a,aK);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=aM(b);for(let[b,e]of Object.entries(a.data.quantities)){let a=d[b];if(!a){c.push(`quantities.${b} 不在清单解析产物值集中(疑似编造)`);continue}Math.abs(a.value-e.value)>.011&&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=[...aE.equipmentMapping,...aF.equipmentMapping,...aG.equipmentMapping,...aH.equipmentMapping,...aI.equipmentMapping,...aJ.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&&Math.abs(Number(g[1])-Math.round(f))>1&&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=>!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=aV.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=aO(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}}(l,f),l.validation.passed||c.warnings.push(`蓝图校验未通过:${l.validation.checks.filter(a=>!a.passed).map(a=>a.name).join("、")}(一期旁路仅报告,不阻断生成)`),c.durationMs=Date.now()-b,l}({projectRoot:a.prepare.projectRoot,boundFilePaths:a.prepare.materialFilePaths,chapterTitles:a.planning.effectiveChapters.map(a=>a.title),templateName:a.prepare.template.name,basicFacts:function(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=bb.exec(b),d=c?b.slice(0,c.index).trim():b;return`- ${a.label}:${d}`}).join("\n")}(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=function(a,b){let c=p.join((0,aB.Gl)(a),"assets","blueprint.json");return o.writeFileSync(c,JSON.stringify(b,null,2),"utf8"),c}(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,b8.fx)(a.global.progressStages,(0,b8.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,b8.fx)(a.global.progressStages,(0,b8.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=aL({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:ek(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 b=function(a,b){let c=[];return{chapters:a.map(a=>{if(!/主要分部分项|施工方案|施工方法/u.test(a.title))return a;let d=b.chapters.find(b=>b.title===a.title||a.title.includes(b.title)||b.title.includes(a.title));if(!d)return a;let e=function(a,b){let c=a.sections.map(a=>a.trim()).filter(Boolean);if(0===c.length||0===b.subSections.length)return{sections:c};let d=b.subSections.map(a=>a.title),e=new Set(b.subSections.flatMap(a=>a.workPackages.map(a=>a.name))),f=new Set(b.subSections.flatMap(a=>a.workPackages.flatMap(a=>[...Object.keys(a.quantities),...a.processChain]))),g=[...new Set([...c.filter(a=>a1.test(a)&&!(d.find(b=>a===b||a.length>=2&&(a.includes(b)||b.includes(a)))||[...e].find(b=>a===b||a.length>=2&&(a.includes(b)||b.includes(a)))||[...f].find(b=>a===b))).slice(0,2),...d])],h=new Set(g),i=c.filter(a=>!h.has(a));return 0===i.length&&JSON.stringify(g)===JSON.stringify(c)?{sections:c}:{sections:g,report:{chapterTitle:a.title,removed:i,replacedWithBlueprint:!0,finalSections:g}}}(a,d);return e.report&&c.push(e.report),{...a,sections:e.sections}}),reports:c}}(a.planning.effectiveChapters.map(a=>({title:a.title,sections:a.sections||[]})),a.blueprint.integratedBlueprint.outline);if(b.reports.length>0){let c=new Map(b.chapters.map(a=>[a.title,a.sections]));a.planning.effectiveChapters=a.planning.effectiveChapters.map(a=>{let b=c.get(a.title);return b&&JSON.stringify(b)!==JSON.stringify(a.sections||[])?{...a,sections:b}:a}),a.prepare.template={...a.prepare.template,chapters:a.planning.effectiveChapters},(0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"validation",roleId:"blueprint-section-alignment",status:"success",message:`清单分部结构校准:${b.reports.length} 个施工方法类章节小节已按蓝图权威分部结构对齐`,details:b.reports.flatMap(a=>[`${a.chapterTitle}:最终小节 ${a.finalSections.join("、")}`,...a.removed.length>0?[`${a.chapterTitle} 子分部/未规范名降级:${a.removed.join("、")}(正文在分部小节内按工作包展开)`]:[]])},{subtitle:"清单分部结构校准",order:a.global.progressStages.length})),a.global.emitProgress()}}a.blueprint.blueprintActive=!!a.blueprint.integratedBlueprint?.validation.passed,a.blueprint.blueprintDataText=a.blueprint.integratedBlueprint?.validation.passed?function(a){let b=["【一体化蓝图参数桶——全项目口径唯一权威源,正文引用必须与此一致,不得自行推导不同数值】"];b.push("计划类数值(劳动力人数/工期/工程量/养护期)必须且只能引用以下锚点值:禁止将各工种人数相加推导峰值、禁止按定额自行估算、禁止改写锚点数值。"),b.push(`- 项目:${a.project.name}(${a.project.scope})`),a.contract.totalDays>0&&b.push(`- 总工期:${a.contract.totalDays} 日历天`),a.contract.qualityStandard&&b.push(`- 质量标准:${a.contract.qualityStandard}`),a.contract.pricingFile&&b.push(`- 计价依据:${a.contract.pricingFile}`),a.milestones.length>0&&b.push(`- 里程碑:${a.milestones.map(a=>`${a.label}${a.duration?` ${a.duration} 天`:""}`).join("、")}(总和 ≤ 总工期)`),a.resources.labor.peakValue>0&&b.push(`- 劳动力峰值:${a.resources.labor.peakValue} 人(造价锚定口径唯一峰值,各章必须引用该值,不得自设其他峰值)`),a.resources.labor.byPhase.length>0&&b.push(`- 分阶段劳动力投入(各阶段同时在场人数,分阶段计划表数据源):${a.resources.labor.byPhase.map(a=>`${a.phase} ${Math.round(((a.min??0)+(a.max??a.min??0))/2)} 人`).join("、")}`),a.resources.labor.composition.length>0&&b.push(`- 工种构成(合计=${a.resources.labor.peakValue} 人,写作层工种表唯一数据源,不得自设构成):${a.resources.labor.composition.map(a=>`${a.trade} ${a.count} 人`).join("、")}`),a.resources.equipment.length>0&&b.push(`- 主要机械:${a.resources.equipment.map(a=>`${a.name}${a.spec?`(${a.spec})`:""} ${a.quantity&&a.quantity>0?a.quantity:Math.round(((a.min??1)+(a.max??a.min??1))/2)} 台`).join("、")}`),a.materialsPlan.length>0&&b.push(`- 物资计划(清单汇总,规格为清单明确给出的型号参数):${a.materialsPlan.slice(0,12).map(a=>`${a.name}${a.spec?`(${a.spec})`:""} ${a.quantity??""}${a.unit}`).join("、")}${a.materialsPlan.length>12?" 等":""}`),a.inspectionBatches.length>0&&b.push(`- 检验批划分:${a.inspectionBatches.map(a=>`${a.scope}——${a.planDesc}`).join(";")}`),void 0!==a.earthworkBalance.excavation&&b.push(`- 土方平衡:挖方 ${a.earthworkBalance.excavation}m\xb3、填方 ${a.earthworkBalance.backfill}m\xb3${a.earthworkBalance.disposal?`、弃方 ${a.earthworkBalance.disposal}m\xb3`:""}(清单汇总口径)`),b.push(`- 临时用电:${a.tempUtilities.powerLoad}`),b.push(`- 临时用水:${a.tempUtilities.waterUsage}`);let c=a.redLineFacts.filter(a=>!a.amount);c.length>0&&b.push(`- 评审红线事实(must_cite,正文必须逐条出现且数值一致):${c.map(a=>`${a.key}=${a.value}`).join(";")}`);let d=a.redLineFacts.filter(a=>a.amount);return d.length>0&&b.push(`- 金额类红线事实(商务禁区,不进正文):${d.map(a=>`${a.key}=${a.value}`).join(";")}`),a.decisionLock.entries.length>0&&b.push(`- 关键决策锁:${a.decisionLock.entries.map(a=>`${a.label}:${a.values.join("、")}`).join(";")}`),a.constructionDeployment.sections.length>0&&b.push(`- 施工部署:${a.constructionDeployment.flow};施工顺序 ${a.constructionDeployment.sequence}`),a.keyDifficulties.length>0&&b.push(`- 重难点(逐项列明):${a.keyDifficulties.map(a=>`${a.name}——${a.measure}`).join(";")}`),b.push(`- 金额禁区:${a.amountRule}`),b.push(a.drawingNote),b.join("\n")}(a.blueprint.integratedBlueprint.data):""}var eH=c(35882);async function eI(a){if(0===a.requirementSummary.length||0===a.chapters.length)return[];let b=a.chapters.map(a=>`【${(0,aq.GQ)(a.title)}】
93
+ ${t}`),drawingNote:"总平面布置图/横道图/组织机构图为后期人工配图,蓝图只规划对应章节正文内容"},diagnostics:{standardBlocksLoaded:u.blocks.filter(a=>!a.gap).length,standardBlockGaps:u.gaps,warnings:B}}}({boq:g,basicFacts:a.basicFacts,evidence:a.evidence,facts:a.facts,projectName:d.projectCode||"",strategy:h});c.standardBlocksLoaded=j.diagnostics.standardBlocksLoaded,c.standardBlockGaps=j.diagnostics.standardBlockGaps,c.warnings.push(...j.diagnostics.warnings),c.stage="阶段 B/C";let k=function(a){let{chapterTitles:b,boq:c}=a;return{chapters:b.map((b,d)=>{var e;let f=String(d+1),g=aV.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){let a=b.section||"未分部条目",d=c.get(a)||[];d.push(b),c.set(a,d)}let d=[],e=0;for(let[a,f]of c){let c=aW(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(aY(aW(b,c),c))}else h.push(aY(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:g,docType:d.docType});c.stage="阶段 D";let l={meta:d,data:j.data,outline:k,validation:{passed:!1,checks:[]},diagnostics:c};return l.validation=function(a,b){let c=[],d=(0,aA.Jx)(a,aK);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=aM(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=[...aE.equipmentMapping,...aF.equipmentMapping,...aG.equipmentMapping,...aH.equipmentMapping,...aI.equipmentMapping,...aJ.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=>!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=aV.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=aO(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}}(l,f),l.validation.passed||c.warnings.push(`蓝图校验未通过:${l.validation.checks.filter(a=>!a.passed).map(a=>a.name).join("、")}(一期旁路仅报告,不阻断生成)`),c.durationMs=Date.now()-b,l}({projectRoot:a.prepare.projectRoot,boundFilePaths:a.prepare.materialFilePaths,chapterTitles:a.planning.effectiveChapters.map(a=>a.title),templateName:a.prepare.template.name,basicFacts:function(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=bb.exec(b),d=c?b.slice(0,c.index).trim():b;return`- ${a.label}:${d}`}).join("\n")}(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=function(a,b){let c=p.join((0,aB.Gl)(a),"assets","blueprint.json");return o.writeFileSync(c,JSON.stringify(b,null,2),"utf8"),c}(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,b8.fx)(a.global.progressStages,(0,b8.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,b8.fx)(a.global.progressStages,(0,b8.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=aL({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:ek(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 b=function(a,b){let c=[];return{chapters:a.map(a=>{if(!/主要分部分项|施工方案|施工方法/u.test(a.title))return a;let d=b.chapters.find(b=>b.title===a.title||a.title.includes(b.title)||b.title.includes(a.title));if(!d)return a;let e=function(a,b){let c=a.sections.map(a=>a.trim()).filter(Boolean);if(0===c.length||0===b.subSections.length)return{sections:c};let d=b.subSections.map(a=>a.title),e=new Set(b.subSections.flatMap(a=>a.workPackages.map(a=>a.name))),f=new Set(b.subSections.flatMap(a=>a.workPackages.flatMap(a=>[...Object.keys(a.quantities),...a.processChain]))),g=[...new Set([...c.filter(a=>a1.test(a)&&!(d.find(b=>a===b||a.length>=2&&(a.includes(b)||b.includes(a)))||[...e].find(b=>a===b||a.length>=2&&(a.includes(b)||b.includes(a)))||[...f].find(b=>a===b))).slice(0,2),...d])],h=new Set(g),i=c.filter(a=>!h.has(a));return 0===i.length&&JSON.stringify(g)===JSON.stringify(c)?{sections:c}:{sections:g,report:{chapterTitle:a.title,removed:i,replacedWithBlueprint:!0,finalSections:g}}}(a,d);return e.report&&c.push(e.report),{...a,sections:e.sections}}),reports:c}}(a.planning.effectiveChapters.map(a=>({title:a.title,sections:a.sections||[]})),a.blueprint.integratedBlueprint.outline);if(b.reports.length>0){let c=new Map(b.chapters.map(a=>[a.title,a.sections]));a.planning.effectiveChapters=a.planning.effectiveChapters.map(a=>{let b=c.get(a.title);return b&&JSON.stringify(b)!==JSON.stringify(a.sections||[])?{...a,sections:b}:a}),a.prepare.template={...a.prepare.template,chapters:a.planning.effectiveChapters},(0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"validation",roleId:"blueprint-section-alignment",status:"success",message:`清单分部结构校准:${b.reports.length} 个施工方法类章节小节已按蓝图权威分部结构对齐`,details:b.reports.flatMap(a=>[`${a.chapterTitle}:最终小节 ${a.finalSections.join("、")}`,...a.removed.length>0?[`${a.chapterTitle} 子分部/未规范名降级:${a.removed.join("、")}(正文在分部小节内按工作包展开)`]:[]])},{subtitle:"清单分部结构校准",order:a.global.progressStages.length})),a.global.emitProgress()}}a.blueprint.blueprintActive=!!a.blueprint.integratedBlueprint?.validation.passed,a.blueprint.blueprintDataText=a.blueprint.integratedBlueprint?.validation.passed?function(a){let b=["【一体化蓝图参数桶——全项目口径唯一权威源,正文引用必须与此一致,不得自行推导不同数值】"];b.push("计划类数值(劳动力人数/工期/工程量/养护期)必须且只能引用以下锚点值:禁止将各工种人数相加推导峰值、禁止按定额自行估算、禁止改写锚点数值。"),b.push(`- 项目:${a.project.name}(${a.project.scope})`),a.contract.totalDays>0&&b.push(`- 总工期:${a.contract.totalDays} 日历天`),a.contract.qualityStandard&&b.push(`- 质量标准:${a.contract.qualityStandard}`),a.contract.pricingFile&&b.push(`- 计价依据:${a.contract.pricingFile}`),a.milestones.length>0&&b.push(`- 里程碑:${a.milestones.map(a=>`${a.label}${a.duration?` ${a.duration} 天`:""}`).join("、")}(总和 ≤ 总工期)`),a.resources.labor.peakValue>0&&b.push(`- 劳动力峰值:${a.resources.labor.peakValue} 人(造价锚定口径唯一峰值,各章必须引用该值,不得自设其他峰值)`),a.resources.labor.byPhase.length>0&&b.push(`- 分阶段劳动力投入(各阶段同时在场人数,分阶段计划表数据源):${a.resources.labor.byPhase.map(a=>`${a.phase} ${Math.round(((a.min??0)+(a.max??a.min??0))/2)} 人`).join("、")}`),a.resources.labor.composition.length>0&&b.push(`- 工种构成(合计=${a.resources.labor.peakValue} 人,写作层工种表唯一数据源,不得自设构成):${a.resources.labor.composition.map(a=>`${a.trade} ${a.count} 人`).join("、")}`),a.resources.equipment.length>0&&b.push(`- 主要机械:${a.resources.equipment.map(a=>`${a.name}${a.spec?`(${a.spec})`:""} ${a.quantity&&a.quantity>0?a.quantity:Math.round(((a.min??1)+(a.max??a.min??1))/2)} 台`).join("、")}`),a.materialsPlan.length>0&&b.push(`- 物资计划(清单汇总,规格为清单明确给出的型号参数):${a.materialsPlan.slice(0,12).map(a=>`${a.name}${a.spec?`(${a.spec})`:""} ${a.quantity??""}${a.unit}`).join("、")}${a.materialsPlan.length>12?" 等":""}`),a.inspectionBatches.length>0&&b.push(`- 检验批划分:${a.inspectionBatches.map(a=>`${a.scope}——${a.planDesc}`).join(";")}`),void 0!==a.earthworkBalance.excavation&&b.push(`- 土方平衡:挖方 ${a.earthworkBalance.excavation}m\xb3、填方 ${a.earthworkBalance.backfill}m\xb3${a.earthworkBalance.disposal?`、弃方 ${a.earthworkBalance.disposal}m\xb3`:""}(清单汇总口径)`),b.push(`- 临时用电:${a.tempUtilities.powerLoad}`),b.push(`- 临时用水:${a.tempUtilities.waterUsage}`);let c=a.redLineFacts.filter(a=>!a.amount);c.length>0&&b.push(`- 评审红线事实(must_cite,正文必须逐条出现且数值一致):${c.map(a=>`${a.key}=${a.value}`).join(";")}`);let d=a.redLineFacts.filter(a=>a.amount);return d.length>0&&b.push(`- 金额类红线事实(商务禁区,不进正文):${d.map(a=>`${a.key}=${a.value}`).join(";")}`),a.decisionLock.entries.length>0&&b.push(`- 关键决策锁:${a.decisionLock.entries.map(a=>`${a.label}:${a.values.join("、")}`).join(";")}`),a.constructionDeployment.sections.length>0&&b.push(`- 施工部署:${a.constructionDeployment.flow};施工顺序 ${a.constructionDeployment.sequence}`),a.keyDifficulties.length>0&&b.push(`- 重难点(逐项列明):${a.keyDifficulties.map(a=>`${a.name}——${a.measure}`).join(";")}`),b.push(`- 金额禁区:${a.amountRule}`),b.push(a.drawingNote),b.join("\n")}(a.blueprint.integratedBlueprint.data):""}var eH=c(35882);async function eI(a){if(0===a.requirementSummary.length||0===a.chapters.length)return[];let b=a.chapters.map(a=>`【${(0,aq.GQ)(a.title)}】
94
94
  ${(a.sections||[]).filter(Boolean).map(a=>`- ${a}`).join("\n")||"(本章暂无预设小节)"}`).join("\n\n"),c=await (0,aA.bb)((0,bc.y4)('你是施工组织设计大纲校准专家。输入各章已有小节与招标评分项要求,只输出需要新增的小节。\n\n新增小节必须显性承接评分项要求(如"创优目标与奖惩承诺""绿色建筑等级达标专项""智慧工地实施""装配式专项施工方案"),只允许新增,不得修改或删除任何已有小节。\n\n只有当前章节结构确实缺少对应承接小节时才新增;已有小节已覆盖该要求时不要重复新增。\n\n新增小节标题必须具体、可直接成稿,控制在 16 个汉字以内;不得新增与评分项要求无关的小节,不得输出条款碎片(如"1委员会确定中")。\n\n只返回 JSON,不要返回 markdown。'),`文档模板:${a.templateName}
95
95
 
96
96
  招标评分项要求摘要(必须逐条在结构层显性承接):
@@ -109,7 +109,7 @@ ${(0,e.TP)("以上为系统提取的评分项要求内容:实质要求(奖
109
109
  用户要求全文:
110
110
  ${b}
111
111
 
112
- 返回 JSON:{"globalRequirements":["要求1"],"chapterRequirements":[{"chapterTitle":"章标题","requirements":["要求1"]}],"factClues":["事实线索1"],"styleRequirements":["风格要求1"]}`,{maxTokens:3e3,temperature:0,signal:a.signal,diagnostics:a.diagnostics,prefixKey:"requirement-semantics"}),f=[...new Set((e?.globalRequirements||[]).map(a=>ff("string"==typeof a?a:a?.text,60)).filter(Boolean))].slice(0,24),g=[...new Set((e?.factClues||[]).map(a=>ff("string"==typeof a?a:a?.text,120)).filter(Boolean))].slice(0,24),h=[...new Set((e?.styleRequirements||[]).map(a=>ff("string"==typeof a?a:a?.text,60)).filter(Boolean))].slice(0,8),i=(e?.chapterRequirements||[]).map(a=>({chapterTitle:ff(a?.chapterTitle,60),requirements:[...new Set((a?.requirements||[]).map(a=>ff("string"==typeof a?a:a?.text,60)).filter(Boolean))].slice(0,12)})).filter(a=>0===c.length||c.some(b=>b===a.chapterTitle||a.chapterTitle.includes(b)||b.includes(a.chapterTitle))).filter(a=>a.chapterTitle&&a.requirements.length>0).slice(0,16);if(!(f.length>0||i.length>0||g.length>0))return d;let j=[...f,...i.flatMap(a=>a.requirements),...h],k=[],l=0;for(let a of j){if(l+a.length+8>3e3)break;k.push(a),l+=a.length+8}let m=k.length>0?["【用户强制要求——最高优先级,必须逐条满足;用户要求与系统默认规则冲突时,以用户要求为准】",...k.map((a,b)=>`${b+1}. ${a}`),"以上要求来自用户提示词语义解析,生成、检查和修复必须共同遵守。"].join("\n"):"";return{parsed:!0,globalRequirements:f,chapterRequirements:i,factClues:g,styleRequirements:h,mandatoryBlockText:m,summary:`用户要求解析:全文级 ${f.length} 条、章节级 ${i.length} 组、事实线索 ${g.length} 条、风格 ${h.length} 条`}}catch(a){return console.error(`[requirementSemantics] 用户提示词语义解析失败(降级为无结构化要求):${a instanceof Error?a.message:String(a)}`),d}}let fh={"fact-landing-round":"未覆盖重要事实落地","table-repair-round":"表格缺失或格式错误","semantic-choice-conflict":"语义矛盾数值冲突","deterministic-stage5":"确定性缺陷(来源罗列/内部术语/编造日期)","formal-source-clean":"资料来源罗列话术","qingtian-full-review":"全维度评审缺陷","planned-section-final":"规划小节内容缺失","commercial-strip":"商务数据泄漏","table-deterministic-repair":"表格数据不一致","post-review-surface":"评审后兜底缺陷","terminology-strip":"内部术语泄漏","toc-consistency":"目录与正文不一致"};async function fi(a){try{let{listGeneratedDocuments:b,getGeneratedDocument:d}=await Promise.resolve().then(c.bind(c,48661)),e=b(a).filter(a=>"generating"!==a.status).slice(0,20).map(b=>d(b.id,a)).filter(a=>!!a).flatMap(a=>(a.exportReports||[]).map(a=>({exportedAt:a.exportedAt,repairHeat:a.repairHeat}))),{constraintSuggestions:f}=function(a){let b=[],c=[];if(a.length<3)return{retireCandidates:b,constraintSuggestions:c};let d=[...a].sort((a,b)=>a.exportedAt-b.exportedAt),e=d.slice(-3),f=d.slice(0,-3),g=new Set;for(let a of[...f,...e])for(let b of Object.keys(a.repairHeat||{}))g.add(b);for(let a of g){let d=e.map(b=>b.repairHeat?.[a]);if(f.some(b=>(b.repairHeat?.[a]?.hits??0)>0)&&d.every(a=>void 0!==a&&0===a.hits)&&b.push(a),d.every(a=>void 0!==a&&a.hits>0&&a.failed/a.hits>=.5)){let b=d.reduce((a,b)=>a+(b?b.failed/b.hits:0),0)/d.length;c.push(`${a}|${(100*b).toFixed(0)}%|连续3次`)}}return{retireCandidates:b,constraintSuggestions:c}}(e);if(0===f.length)return"";let g="【缺陷热力图自进化提醒(历史高频缺陷前置规避)】",h=f.map(a=>{let[b,c="",d=""]=a.split("|"),e=fh[b]??b,f=c?`(历史修复失败率 ${c})`:"";return`${e}${f}${d}内高频出现,本章写作时前置规避。`}).join(" "),i=`${g} ${h}`;if(i.length<=300)return i;let j=h.slice(0,300-g.length-4).replace(/\s+$/u,"");return`${g} ${j}…`}catch{return""}}async function fj(a){let b=(0,d.QJ)(a.global.input.templateId);if(!b)throw Error("Document template not found");if(a.prepare.projectRoot=p.resolve(a.global.input.projectRoot||(0,e7.aY)()),!a.prepare.projectRoot)throw Error("No knowledge base project found");a.prepare.projectId=(0,ap.computeProjectId)(a.prepare.projectRoot),a.prepare.template=b,a.understanding.manager=(0,e7.Qh)(),a.global.chapterDrafts=[],a.global.checkpointChapterOrderIds=[],a.global.emitProgress=(b,c=a.global.progressStages)=>{let d=b?[...b].sort((b,c)=>{let d=a.global.checkpointChapterOrderIds.indexOf(b.id),e=a.global.checkpointChapterOrderIds.indexOf(c.id);return(d<0?Number.MAX_SAFE_INTEGER:d)-(e<0?Number.MAX_SAFE_INTEGER:e)}):void 0;a.global.input.onProgress?.([...c],d?{chapters:d}:void 0)};let c=Math.max(15e3,Math.min(6e4,Number(process.env.DOCUMENT_GENERATION_HEARTBEAT_MS??3e4)));if(a.global.withProgressHeartbeat=async(b,d=a.global.progressStages)=>{let e=setInterval(()=>{a.global.input.signal?.aborted||a.global.emitProgress(a.global.chapterDrafts,d)},c);try{return await b()}finally{clearInterval(e)}},a.prepare.projectRoleConfigId=(0,d.N6)(a.prepare.template)||"none",a.prepare.projectRoleConfigName=(0,e9.Mu)(a.prepare.projectRoleConfigId)?.name||a.prepare.projectRoleConfigId,a.global.progressStages=[(0,b8.X5)({type:"role_binding",roleId:a.prepare.projectRoleConfigId,status:"running",message:`生成任务已创建,正在读取模板与角色配置:${a.prepare.template.name}`,details:[`当前项目:${a.prepare.projectId}`,`资料目录:${(0,e7.NW)(a.prepare.projectRoot)}`,"正在读取项目资料包和提示词配置"],progress:{current:1,total:4,label:"初始化配置"}},{subtitle:a.prepare.projectRoleConfigName,roleName:a.prepare.projectRoleConfigName,order:0})],a.global.emitProgress(),a.prepare.promptPlan=(0,d.bj)(a.prepare.template),a.prepare.promptBindings=a.prepare.promptPlan.bindings,(0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"validation",roleId:"document-preparation",status:"running",message:"正在分析模板规范、用户要求与项目资料包",details:["解析 OUTLINE 与模板章节","读取项目资料包","自动识别资料类型并构建项目理解"],progress:{current:1,total:3,label:"准备分析"}},{subtitle:"生成准备",order:a.global.progressStages.length})),a.global.emitProgress(),a.prepare.materialScope=(0,dh.ZR)(a.prepare.projectRoot,a.prepare.template,a.global.input.requirement||""),a.prepare.materialScope.ambiguous||!a.prepare.materialScope.locked||0===a.prepare.materialScope.selectedFiles.length)throw Error(`资料范围未锁定:${a.prepare.materialScope.reason}`);if(a.prepare.materialFilePaths=a.prepare.materialScope.selectedFiles,0===a.prepare.materialFilePaths.length)throw Error("模板未绑定可用项目资料包,请先在模板中绑定需要参与生成的项目文件夹。");let e=await a.global.withProgressHeartbeat(()=>(0,e7.q1)(a.prepare.projectRoot,a.prepare.materialFilePaths));e.deletedFiles>0&&((0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"validation",roleId:"document-preparation",status:"running",message:"知识库索引与绑定文件清单已同步",details:[`已清除 ${e.deletedFiles} 个跨项目文件的索引(${e.deletedChunks} 切片),生成全程只使用绑定资料`],progress:{current:1,total:3,label:"准备分析"}},{subtitle:"生成准备",order:a.global.progressStages.length})),a.global.emitProgress()),a.prepare.projectMaterialProfile=(0,eE.W9)(a.prepare.projectRoot,a.prepare.template,{requirement:a.global.input.requirement}),a.prepare.projectUnderstanding=(0,eE._n)(a.prepare.template,a.prepare.projectMaterialProfile);let{kindByPath:g,processingByPath:h}=(0,eE.Hz)(a.prepare.projectMaterialProfile);a.prepare.kindByPath=g,a.prepare.processingByPath=h;let i=(0,f.fC)([...a.prepare.promptPlan.writerPrompts,...a.prepare.promptPlan.chapterPrompts]);a.prepare.explicitPromptChapters=(0,aq.cs)([{text:a.global.input.requirement,source:"用户需求",strict:!0},{text:i,source:"提示词角色",strict:!0}]),a.prepare.hasExplicitOutline=a.prepare.explicitPromptChapters.length>=2,a.prepare.hasExplicitOutline&&(a.prepare.template={...b,chapters:a.prepare.explicitPromptChapters}),a.prepare.projectMaterialSummary=await a.global.withProgressHeartbeat(()=>Promise.resolve((0,fb.P)(a.prepare.projectRoot,{requirement:a.global.input.requirement,boundFilePaths:a.prepare.materialFilePaths}))),(0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"validation",roleId:"document-preparation",status:"running",message:"正在生成自动文档规格并评估生成准备度",details:[`项目资料:${a.prepare.materialFilePaths.length} 份`,`资料类型:${Object.values(a.prepare.projectMaterialProfile.groups).filter(a=>a.length>0).length} 类`,"生成事实字段与章节约束"],progress:{current:2,total:3,label:"规格评估"}},{subtitle:"生成准备",order:a.global.progressStages.length})),a.global.emitProgress();let j=await a.global.withProgressHeartbeat(()=>Promise.resolve((0,fa.x)(a.prepare.template,a.global.input.requirement||"")));if(a.prepare.documentSpec=j.spec,a.prepare.domainProfile=(0,cd.$i)(a.prepare.template,a.global.input.requirement||""),a.prepare.readiness=(0,fc.$)({template:a.prepare.template,spec:a.prepare.documentSpec,summary:a.prepare.projectMaterialSummary,resolvedRoles:[]}),!a.prepare.readiness.ready)throw Error(`生成准备度不足:${a.prepare.readiness.blockingIssues.join(";")}`);if(a.prepare.generationWritingConstraintsPrompt='【全文写作硬约束(每一章生成时必须遵守,违反即评审失分)】\n1. 禁止编造时间事实:开工日期、竣工日期、工期起止等未在项目资料中确认的日期一律不得写入正文;进度表述改用“开工后第 N 天”“第 N 周”等相对口径,或引用资料中已确认的日期。\n2. 禁止商务数据:暂列金额、暂估价、综合单价、清单合价、税率、投标报价等商务条款数据不得写入施工组织设计正文,商务口径只允许出现在项目信息表中。\n3. 禁止资料来源罗列话术:不得出现“根据/依据招标文件、工程量清单、图纸及答疑”式来源罗列句,直接陈述项目事实与施工安排;编制依据小节可集中列出依据文件。\n3b. 编制依据小节必须列出具体法规名称及文号:国家法律法规条目列出《中华人民共和国建筑法》(主席令第91号公布,2019年修正)、《建设工程质量管理条例》(国务院令第279号公布,2019年修订)等具体名称及文号;地方性法规与政府规章条目按工程所在地列出具体名称(如《安徽省建筑市场管理条例》《合肥市城市绿化管理条例》);规范标准条目列出《建筑工程施工质量验收统一标准》(GB 50300-2013)等具体编号;招标文件原文引用的法规按其原文列出。不得只写“国家现行法律、行政法规”“现行规范标准”“地方法规规章”等类别话术。\n4. 禁止跨章复述概况:除“工程概况/项目概况”章节外,其余章节不得以“本项目为/本工程为”开头整段复述项目总体概况,应直接展开本章主题内容。\n5. 禁止后台内部话术:不得出现“工作包”“WRITER_MISSING_SECTION”“已确认资料”等系统内部术语与兜底话术,一律改写为正式施工组织设计表述;不得模仿补写器格式书写“招标要求响应(前附表响应条款)”“按上述条款执行”等条款响应条幅——招标文件要求按正式表述落位各章节(如“本工程履约保证金按招标文件约定提交”)。\n6. 合规数值红线(安全、职业健康、危大工程章节必须逐条对照,违反即合规失分):\n a. 高温停工按《防暑降温措施管理办法》(安监总安健〔2012〕89号):日最高气温达到40℃以上应停止当日室外露天作业;37℃~40℃时室外露天作业时间累计不得超过6小时且气温最高时段3小时内不得安排室外露天作业;35℃~37℃时应换班轮休缩短连续作业时间。不得写成42℃等其他阈值。\n b. 危大工程判定线按住建部令第37号及建办质〔2018〕31号:基坑(槽)土方开挖、支护、降水,开挖深度超过3m(含3m)属危大工程,超过5m(含5m)属超过一定规模(需专家论证);模板支撑搭设高度8m及以上或搭设跨度18m及以上属超过一定规模;落地式钢管脚手架搭设高度24m及以上属危大工程、50m及以上属超过一定规模,悬挑式脚手架分段架体搭设高度20m及以上属超过一定规模;采用非常规起重设备方法且单件起吊重量10kN及以上属危大工程、100kN及以上属超过一定规模。判定必须给出本项目对应参数(开挖深度/支撑高度/搭设高度/起吊重量),参数未在资料中确认的不得自行判定为危大或超危大。证据中含基坑底标高、\xb10.000对应绝对标高、垫层底标高等数值的,必须直接引用并据此给出开挖深度具体数值(开挖深度=地面标高-坑底标高),不得仅写“开挖深度超过3m”而不给数值;标高、坡率(如1:1.5)等设计参数应写入基坑支护与土方开挖相关小节。\n c. 专家论证程序按住建部令第37号:超过一定规模的危大工程专项方案应组织不少于5名符合专业要求的专家(从地方住建主管部门专家库选取)论证;修改后的方案由施工单位技术负责人审核签字、加盖单位公章,并由总监理工程师审查签字、加盖执业印章后方可实施。\n d. 监测预警值单一口径:同一监测指标(基坑位移速率、沉降预警值等)全文只能出现一个数值口径,不得前后矛盾;预警值优先引用设计文件明确值,无设计要求时按现行监测技术标准选取并注明依据。\n e. 自设数值自洽:自设的防护尺寸、频次、时间节点等数值必须与同章及跨章表述一致,且尽量引用现行规范依据;无规范依据的自设值不得写成硬性规定。工期缓冲/预留天数的用途(如"竣工验收缓冲""工序衔接缓冲")全文只能有一个口径,不得一处写竣工验收缓冲、另一处写工序衔接缓冲。\n7. 禁止数据自查话术:不得把表格口径推算、数据一致性自查过程写入正文(如"上表合计行…与…不一致,故…修正为…"),表格与正文数值必须直接自洽;不得把招标条款编号碎片(如"3项规定""1委员会确定中""56m15:…")作为小节标题。\n7b. 禁止清单计量口径话术:不得出现"按清单口径""按清单汇总口径""清单口径为""按清单逐项""分部小计""本页小计"等工程量清单计量文件内部口径表述;工程量直接以正式施工组织设计口径陈述("本工程土方挖方总量为…m\xb3"),不得说明数值的清单来源或口径换算过程。\n7c. 小节标题规范:小节标题必须是正式施工组织设计主题表述,禁止把模板说明性文字("每个单位工程独立制表""制表(一)(二)")、指令性文字("详见XX""另见XX""按要求填写")或商务口径词("计量签证""计价""结算")作为小节标题;章节编号必须连续(如 5.1、5.2、5.3),不得跳号。\n8. 禁止商务投标函内容:投标/评标纪律承诺、廉洁承诺、廉洁自律、行贿、串标、围标、弄虚作假、干扰评标等商务投标函条款与承诺一律不得写入施工组织设计正文(招标文件中的此类条款属商务文件应响应内容,不是技术标内容);本节只写技术方案与管理措施,不得以承诺句形式响应此类条款。\n9. 禁止自行分配清单规格拆分数值:清单给出规格-数量拆分(如一般路灯 100W 109套、120W 9套)时必须逐项照抄原值,不得改动或重新分配;清单只给总量的不得自行拆分(“其中 A 套、B 套”式自拆即数据错误)。同一规格-数量拆分在全文各章必须一致。',"0"!==process.env.DOCUMENT_WRITING_CONSTRAINTS_EVOLUTION){let b=await fi(a.prepare.projectRoot);b&&(a.prepare.generationWritingConstraintsPrompt=`${a.prepare.generationWritingConstraintsPrompt}
112
+ 返回 JSON:{"globalRequirements":["要求1"],"chapterRequirements":[{"chapterTitle":"章标题","requirements":["要求1"]}],"factClues":["事实线索1"],"styleRequirements":["风格要求1"]}`,{maxTokens:3e3,temperature:0,signal:a.signal,diagnostics:a.diagnostics,prefixKey:"requirement-semantics"}),f=[...new Set((e?.globalRequirements||[]).map(a=>ff("string"==typeof a?a:a?.text,60)).filter(Boolean))].slice(0,24),g=[...new Set((e?.factClues||[]).map(a=>ff("string"==typeof a?a:a?.text,120)).filter(Boolean))].slice(0,24),h=[...new Set((e?.styleRequirements||[]).map(a=>ff("string"==typeof a?a:a?.text,60)).filter(Boolean))].slice(0,8),i=(e?.chapterRequirements||[]).map(a=>({chapterTitle:ff(a?.chapterTitle,60),requirements:[...new Set((a?.requirements||[]).map(a=>ff("string"==typeof a?a:a?.text,60)).filter(Boolean))].slice(0,12)})).filter(a=>0===c.length||c.some(b=>b===a.chapterTitle||a.chapterTitle.includes(b)||b.includes(a.chapterTitle))).filter(a=>a.chapterTitle&&a.requirements.length>0).slice(0,16);if(!(f.length>0||i.length>0||g.length>0))return d;let j=[...f,...i.flatMap(a=>a.requirements),...h],k=[],l=0;for(let a of j){if(l+a.length+8>3e3)break;k.push(a),l+=a.length+8}let m=k.length>0?["【用户强制要求——最高优先级,必须逐条满足;用户要求与系统默认规则冲突时,以用户要求为准】",...k.map((a,b)=>`${b+1}. ${a}`),"以上要求来自用户提示词语义解析,生成、检查和修复必须共同遵守。"].join("\n"):"";return{parsed:!0,globalRequirements:f,chapterRequirements:i,factClues:g,styleRequirements:h,mandatoryBlockText:m,summary:`用户要求解析:全文级 ${f.length} 条、章节级 ${i.length} 组、事实线索 ${g.length} 条、风格 ${h.length} 条`}}catch(a){return console.error(`[requirementSemantics] 用户提示词语义解析失败(降级为无结构化要求):${a instanceof Error?a.message:String(a)}`),d}}let fh={"fact-landing-round":"未覆盖重要事实落地","table-repair-round":"表格缺失或格式错误","semantic-choice-conflict":"语义矛盾数值冲突","deterministic-stage5":"确定性缺陷(来源罗列/内部术语/编造日期)","formal-source-clean":"资料来源罗列话术","qingtian-full-review":"全维度评审缺陷","planned-section-final":"规划小节内容缺失","commercial-strip":"商务数据泄漏","table-deterministic-repair":"表格数据不一致","post-review-surface":"评审后兜底缺陷","terminology-strip":"内部术语泄漏","toc-consistency":"目录与正文不一致"};async function fi(a){try{let{listGeneratedDocuments:b,getGeneratedDocument:d}=await Promise.resolve().then(c.bind(c,48661)),e=b(a).filter(a=>"generating"!==a.status).slice(0,20).map(b=>d(b.id,a)).filter(a=>!!a).flatMap(a=>(a.exportReports||[]).map(a=>({exportedAt:a.exportedAt,repairHeat:a.repairHeat}))),{constraintSuggestions:f}=function(a){let b=[],c=[];if(a.length<3)return{retireCandidates:b,constraintSuggestions:c};let d=[...a].sort((a,b)=>a.exportedAt-b.exportedAt),e=d.slice(-3),f=d.slice(0,-3),g=new Set;for(let a of[...f,...e])for(let b of Object.keys(a.repairHeat||{}))g.add(b);for(let a of g){let d=e.map(b=>b.repairHeat?.[a]);if(f.some(b=>(b.repairHeat?.[a]?.hits??0)>0)&&d.every(a=>void 0!==a&&0===a.hits)&&b.push(a),d.every(a=>void 0!==a&&a.hits>0&&a.failed/a.hits>=.5)){let b=d.reduce((a,b)=>a+(b?b.failed/b.hits:0),0)/d.length;c.push(`${a}|${(100*b).toFixed(0)}%|连续3次`)}}return{retireCandidates:b,constraintSuggestions:c}}(e);if(0===f.length)return"";let g="【缺陷热力图自进化提醒(历史高频缺陷前置规避)】",h=f.map(a=>{let[b,c="",d=""]=a.split("|"),e=fh[b]??b,f=c?`(历史修复失败率 ${c})`:"";return`${e}${f}${d}内高频出现,本章写作时前置规避。`}).join(" "),i=`${g} ${h}`;if(i.length<=300)return i;let j=h.slice(0,300-g.length-4).replace(/\s+$/u,"");return`${g} ${j}…`}catch{return""}}async function fj(a){let b=(0,d.QJ)(a.global.input.templateId);if(!b)throw Error("Document template not found");if(a.prepare.projectRoot=p.resolve(a.global.input.projectRoot||(0,e7.aY)()),!a.prepare.projectRoot)throw Error("No knowledge base project found");a.prepare.projectId=(0,ap.computeProjectId)(a.prepare.projectRoot),a.prepare.template=b,a.understanding.manager=(0,e7.Qh)(),a.global.chapterDrafts=[],a.global.checkpointChapterOrderIds=[],a.global.emitProgress=(b,c=a.global.progressStages)=>{let d=b?[...b].sort((b,c)=>{let d=a.global.checkpointChapterOrderIds.indexOf(b.id),e=a.global.checkpointChapterOrderIds.indexOf(c.id);return(d<0?Number.MAX_SAFE_INTEGER:d)-(e<0?Number.MAX_SAFE_INTEGER:e)}):void 0;a.global.input.onProgress?.([...c],d?{chapters:d}:void 0)};let c=Math.max(15e3,Math.min(6e4,Number(process.env.DOCUMENT_GENERATION_HEARTBEAT_MS??3e4)));if(a.global.withProgressHeartbeat=async(b,d=a.global.progressStages)=>{let e=setInterval(()=>{a.global.input.signal?.aborted||a.global.emitProgress(a.global.chapterDrafts,d)},c);try{return await b()}finally{clearInterval(e)}},a.prepare.projectRoleConfigId=(0,d.N6)(a.prepare.template)||"none",a.prepare.projectRoleConfigName=(0,e9.Mu)(a.prepare.projectRoleConfigId)?.name||a.prepare.projectRoleConfigId,a.global.progressStages=[(0,b8.X5)({type:"role_binding",roleId:a.prepare.projectRoleConfigId,status:"running",message:`生成任务已创建,正在读取模板与角色配置:${a.prepare.template.name}`,details:[`当前项目:${a.prepare.projectId}`,`资料目录:${(0,e7.NW)(a.prepare.projectRoot)}`,"正在读取项目资料包和提示词配置"],progress:{current:1,total:4,label:"初始化配置"}},{subtitle:a.prepare.projectRoleConfigName,roleName:a.prepare.projectRoleConfigName,order:0})],a.global.emitProgress(),a.prepare.promptPlan=(0,d.bj)(a.prepare.template),a.prepare.promptBindings=a.prepare.promptPlan.bindings,(0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"validation",roleId:"document-preparation",status:"running",message:"正在分析模板规范、用户要求与项目资料包",details:["解析 OUTLINE 与模板章节","读取项目资料包","自动识别资料类型并构建项目理解"],progress:{current:1,total:3,label:"准备分析"}},{subtitle:"生成准备",order:a.global.progressStages.length})),a.global.emitProgress(),a.prepare.materialScope=(0,dh.ZR)(a.prepare.projectRoot,a.prepare.template,a.global.input.requirement||""),a.prepare.materialScope.ambiguous||!a.prepare.materialScope.locked||0===a.prepare.materialScope.selectedFiles.length)throw Error(`资料范围未锁定:${a.prepare.materialScope.reason}`);if(a.prepare.materialFilePaths=a.prepare.materialScope.selectedFiles,0===a.prepare.materialFilePaths.length)throw Error("模板未绑定可用项目资料包,请先在模板中绑定需要参与生成的项目文件夹。");let e=a.prepare.materialScope.selectedRoots;e.length>0&&((0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"validation",roleId:"document-preparation",status:"running",message:"知识库索引与绑定文件清单已同步",details:[`本次生成仅使用绑定资料组:${e.join("、")}(${a.prepare.materialFilePaths.length} 份资料),库内其他资料组切片保留不清理`],progress:{current:1,total:3,label:"准备分析"}},{subtitle:"生成准备",order:a.global.progressStages.length})),a.global.emitProgress()),a.prepare.projectMaterialProfile=(0,eE.W9)(a.prepare.projectRoot,a.prepare.template,{requirement:a.global.input.requirement}),a.prepare.projectUnderstanding=(0,eE._n)(a.prepare.template,a.prepare.projectMaterialProfile);let{kindByPath:g,processingByPath:h}=(0,eE.Hz)(a.prepare.projectMaterialProfile);a.prepare.kindByPath=g,a.prepare.processingByPath=h;let i=(0,f.fC)([...a.prepare.promptPlan.writerPrompts,...a.prepare.promptPlan.chapterPrompts]);a.prepare.explicitPromptChapters=(0,aq.cs)([{text:a.global.input.requirement,source:"用户需求",strict:!0},{text:i,source:"提示词角色",strict:!0}]),a.prepare.hasExplicitOutline=a.prepare.explicitPromptChapters.length>=2,a.prepare.hasExplicitOutline&&(a.prepare.template={...b,chapters:a.prepare.explicitPromptChapters}),a.prepare.projectMaterialSummary=await a.global.withProgressHeartbeat(()=>Promise.resolve((0,fb.P)(a.prepare.projectRoot,{requirement:a.global.input.requirement,boundFilePaths:a.prepare.materialFilePaths}))),(0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"validation",roleId:"document-preparation",status:"running",message:"正在生成自动文档规格并评估生成准备度",details:[`项目资料:${a.prepare.materialFilePaths.length} 份`,`资料类型:${Object.values(a.prepare.projectMaterialProfile.groups).filter(a=>a.length>0).length} 类`,"生成事实字段与章节约束"],progress:{current:2,total:3,label:"规格评估"}},{subtitle:"生成准备",order:a.global.progressStages.length})),a.global.emitProgress();let j=await a.global.withProgressHeartbeat(()=>Promise.resolve((0,fa.x)(a.prepare.template,a.global.input.requirement||"")));if(a.prepare.documentSpec=j.spec,a.prepare.domainProfile=(0,cd.$i)(a.prepare.template,a.global.input.requirement||""),a.prepare.readiness=(0,fc.$)({template:a.prepare.template,spec:a.prepare.documentSpec,summary:a.prepare.projectMaterialSummary,resolvedRoles:[]}),!a.prepare.readiness.ready)throw Error(`生成准备度不足:${a.prepare.readiness.blockingIssues.join(";")}`);if(a.prepare.generationWritingConstraintsPrompt='【全文写作硬约束(每一章生成时必须遵守,违反即评审失分)】\n1. 禁止编造时间事实:开工日期、竣工日期、工期起止等未在项目资料中确认的日期一律不得写入正文;进度表述改用“开工后第 N 天”“第 N 周”等相对口径,或引用资料中已确认的日期。\n2. 禁止商务数据:暂列金额、暂估价、综合单价、清单合价、税率、投标报价等商务条款数据不得写入施工组织设计正文,商务口径只允许出现在项目信息表中。\n3. 禁止资料来源罗列话术:不得出现“根据/依据招标文件、工程量清单、图纸及答疑”式来源罗列句,直接陈述项目事实与施工安排;编制依据小节可集中列出依据文件。\n3b. 编制依据小节必须列出具体法规名称及文号:国家法律法规条目列出《中华人民共和国建筑法》(主席令第91号公布,2019年修正)、《建设工程质量管理条例》(国务院令第279号公布,2019年修订)等具体名称及文号;地方性法规与政府规章条目按工程所在地列出具体名称(如《安徽省建筑市场管理条例》《合肥市城市绿化管理条例》);规范标准条目列出《建筑工程施工质量验收统一标准》(GB 50300-2013)等具体编号;招标文件原文引用的法规按其原文列出。不得只写“国家现行法律、行政法规”“现行规范标准”“地方法规规章”等类别话术。\n4. 禁止跨章复述概况:除“工程概况/项目概况”章节外,其余章节不得以“本项目为/本工程为”开头整段复述项目总体概况,应直接展开本章主题内容。\n5. 禁止后台内部话术:不得出现“工作包”“WRITER_MISSING_SECTION”“已确认资料”等系统内部术语与兜底话术,一律改写为正式施工组织设计表述;不得模仿补写器格式书写“招标要求响应(前附表响应条款)”“按上述条款执行”等条款响应条幅——招标文件要求按正式表述落位各章节(如“本工程履约保证金按招标文件约定提交”)。\n6. 合规数值红线(安全、职业健康、危大工程章节必须逐条对照,违反即合规失分):\n a. 高温停工按《防暑降温措施管理办法》(安监总安健〔2012〕89号):日最高气温达到40℃以上应停止当日室外露天作业;37℃~40℃时室外露天作业时间累计不得超过6小时且气温最高时段3小时内不得安排室外露天作业;35℃~37℃时应换班轮休缩短连续作业时间。不得写成42℃等其他阈值。\n b. 危大工程判定线按住建部令第37号及建办质〔2018〕31号:基坑(槽)土方开挖、支护、降水,开挖深度超过3m(含3m)属危大工程,超过5m(含5m)属超过一定规模(需专家论证);模板支撑搭设高度8m及以上或搭设跨度18m及以上属超过一定规模;落地式钢管脚手架搭设高度24m及以上属危大工程、50m及以上属超过一定规模,悬挑式脚手架分段架体搭设高度20m及以上属超过一定规模;采用非常规起重设备方法且单件起吊重量10kN及以上属危大工程、100kN及以上属超过一定规模。判定必须给出本项目对应参数(开挖深度/支撑高度/搭设高度/起吊重量),参数未在资料中确认的不得自行判定为危大或超危大。证据中含基坑底标高、\xb10.000对应绝对标高、垫层底标高等数值的,必须直接引用并据此给出开挖深度具体数值(开挖深度=地面标高-坑底标高),不得仅写“开挖深度超过3m”而不给数值;标高、坡率(如1:1.5)等设计参数应写入基坑支护与土方开挖相关小节。\n c. 专家论证程序按住建部令第37号:超过一定规模的危大工程专项方案应组织不少于5名符合专业要求的专家(从地方住建主管部门专家库选取)论证;修改后的方案由施工单位技术负责人审核签字、加盖单位公章,并由总监理工程师审查签字、加盖执业印章后方可实施。\n d. 监测预警值单一口径:同一监测指标(基坑位移速率、沉降预警值等)全文只能出现一个数值口径,不得前后矛盾;预警值优先引用设计文件明确值,无设计要求时按现行监测技术标准选取并注明依据。\n e. 自设数值自洽:自设的防护尺寸、频次、时间节点等数值必须与同章及跨章表述一致,且尽量引用现行规范依据;无规范依据的自设值不得写成硬性规定。工期缓冲/预留天数的用途(如"竣工验收缓冲""工序衔接缓冲")全文只能有一个口径,不得一处写竣工验收缓冲、另一处写工序衔接缓冲。\n7. 禁止数据自查话术:不得把表格口径推算、数据一致性自查过程写入正文(如"上表合计行…与…不一致,故…修正为…"),表格与正文数值必须直接自洽;不得把招标条款编号碎片(如"3项规定""1委员会确定中""56m15:…")作为小节标题。\n7b. 禁止清单计量口径话术:不得出现"按清单口径""按清单汇总口径""清单口径为""按清单逐项""分部小计""本页小计"等工程量清单计量文件内部口径表述;工程量直接以正式施工组织设计口径陈述("本工程土方挖方总量为…m\xb3"),不得说明数值的清单来源或口径换算过程。\n7c. 小节标题规范:小节标题必须是正式施工组织设计主题表述,禁止把模板说明性文字("每个单位工程独立制表""制表(一)(二)")、指令性文字("详见XX""另见XX""按要求填写")或商务口径词("计量签证""计价""结算")作为小节标题;章节编号必须连续(如 5.1、5.2、5.3),不得跳号。\n8. 禁止商务投标函内容:投标/评标纪律承诺、廉洁承诺、廉洁自律、行贿、串标、围标、弄虚作假、干扰评标等商务投标函条款与承诺一律不得写入施工组织设计正文(招标文件中的此类条款属商务文件应响应内容,不是技术标内容);本节只写技术方案与管理措施,不得以承诺句形式响应此类条款。\n9. 禁止自行分配清单规格拆分数值:清单给出规格-数量拆分(如一般路灯 100W 109套、120W 9套)时必须逐项照抄原值,不得改动或重新分配;清单只给总量的不得自行拆分(“其中 A 套、B 套”式自拆即数据错误)。同一规格-数量拆分在全文各章必须一致。',"0"!==process.env.DOCUMENT_WRITING_CONSTRAINTS_EVOLUTION){let b=await fi(a.prepare.projectRoot);b&&(a.prepare.generationWritingConstraintsPrompt=`${a.prepare.generationWritingConstraintsPrompt}
113
113
  ${b}`,(0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"validation",roleId:"writing-constraints-evolution",status:"success",message:`写作硬约束自进化:已注入缺陷热力图规避提醒 ${b.length} 字符`,details:[b]},{subtitle:"写作硬约束"})))}a.prepare.generationControlPrompt=[a.prepare.generationWritingConstraintsPrompt,a.prepare.projectUnderstanding.prompt,(0,fb.F)(a.prepare.projectMaterialSummary,{publicSafe:!0}),(0,fa.N)(a.prepare.documentSpec,j.sourceHash,{publicSafe:!0}),(0,fc.R)(a.prepare.readiness,{publicSafe:!0})].filter(Boolean).join("\n\n"),a.prepare.diagnosticControlPrompt=[a.prepare.projectUnderstanding.prompt,(0,fb.F)(a.prepare.projectMaterialSummary),(0,fa.N)(a.prepare.documentSpec,j.sourceHash),(0,fc.R)(a.prepare.readiness)].filter(Boolean).join("\n\n");let k=(0,f.fC)([...a.prepare.promptPlan.writerPrompts,...a.prepare.promptPlan.formattingPrompts]),l=(0,f.fC)([...a.prepare.promptPlan.writerPrompts,...a.prepare.promptPlan.chapterPrompts,...a.prepare.promptPlan.formattingPrompts]),m=(0,f.fC)(a.prepare.promptPlan.prompts);a.prepare.webAccessConfig=(0,e8.I)().load().webAccess||{enabled:!1,allowProjectFacts:!1,maxQueriesPerChapter:2,maxResultsPerQuery:3,trustedDomains:[]},a.prepare.runtimePromptRules=(0,d9.c_)({promptTexts:[a.prepare.generationControlPrompt,m].filter(Boolean).join("\n\n"),requirement:a.global.input.requirement,template:a.prepare.template,rolePrompts:a.prepare.promptPlan.prompts}),a.prepare.runtimeRulesText=[(0,d9.el)(a.prepare.runtimePromptRules),!a.prepare.webAccessConfig.enabled?"":"公开资料补充使用规则:\n1. 公开资料只可用于补充通用规范、政策、工艺和措施。\n2. 不得使用公开资料新增或修改项目名称、建设地点、建设规模、工期、质量标准、工程量、材料规格、图纸参数、商务数据。\n3. 本地项目资料与公开资料冲突时,必须以本地项目资料为准。\n4. 不得在正文中出现任何检索过程、外部页面、工具调用或系统内部过程性表述。\n5. 不得把公开资料中的其他项目案例参数写入本项目正文。"].filter(Boolean).join("\n\n"),a.prepare.requirementSemantics=await a.global.withProgressHeartbeat(()=>fg({requirement:a.global.input.requirement,chapterTitles:a.prepare.template.chapters.map(a=>a.title),signal:a.global.input.signal,diagnostics:void 0}).catch(()=>fd())),a.prepare.requirementSemantics.mandatoryBlockText&&(a.prepare.runtimeRulesText=`${a.prepare.runtimeRulesText}
114
114
 
115
115
  ${a.prepare.requirementSemantics.mandatoryBlockText}`),a.prepare.promptTexts=[a.prepare.generationControlPrompt,a.prepare.runtimeRulesText,`生成前规划章节结构: