@customize-agent/server 4.22.0 → 4.22.1

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.
@@ -1,4 +1,4 @@
1
- "use strict";exports.id=4931,exports.ids=[4931,9227],exports.modules={40711:(a,b,c)=>{c.d(b,{h0x:()=>d.h0,bVF:()=>d.bV,OXS:()=>fk,QJx:()=>d.QJ,jGg:()=>d.jG,R1O:()=>fj,Bhi:()=>d.Bh,xmB:()=>d.xm,J5_:()=>d.J5});var d=c(23500),e=c(22157),f=c(46482),g=c(70933),h=c(78217),i=c(28103),j=c(5726);function k(a,b){return b<=0?100*(a>0):Math.min(120,a/b*100)}async function l(a){var b,c;if(!a||a.trim().length<500)return;let d=(0,i.aF)(a),e=(0,j.Ah)(d);if(!e)return;let f=await (0,i.WT)(a),g=e.profile,h=Math.max(g.arrowChainCoverage,.08),l=[{key:"paramDensity",label:"参数密度",generated:f.paramDensity,reference:g.paramDensity,score:k(f.paramDensity,.8*g.paramDensity),unit:"perKChars"},{key:"arrowChainCoverage",label:"工序链覆盖率",generated:f.arrowChainCoverage,reference:h,score:k(f.arrowChainCoverage,h),unit:"percent"},{key:"duplicationRate",label:"段落重复率",generated:f.duplicationRate,reference:g.duplicationRate,score:(b=f.duplicationRate)<=(c=g.duplicationRate)?100:Math.max(0,Math.round(100-(b-c)*400)),unit:"percent"},{key:"tableCount",label:"表格数量",generated:f.tableCount,reference:g.tableCount,score:k(f.tableCount,.6*g.tableCount),unit:"count"},{key:"sectionCount",label:"章节结构",generated:f.sectionCount,reference:g.sectionCount,score:f.sectionCount>=.4*g.sectionCount?100:k(f.sectionCount,g.sectionCount),unit:"count"}].map(a=>({...a,score:Math.round(Math.min(120,a.score)),passed:a.score>=80})),m={paramDensity:.3,arrowChainCoverage:.2,duplicationRate:.2,tableCount:.15,sectionCount:.15},n=Math.round(Math.min(100,l.reduce((a,b)=>a+b.score*(m[b.key]||0),0)));return{projectType:d,referenceSourceCount:e.sourceCount,overallScore:n,items:l}}var m=c(87942),n=c(1218),o=c(73024),p=c(76760),q=c(48161),r=c(28366);let s=[{key:"project_name",label:"项目名称",aliases:["项目名称","工程名称","招标项目名称"],valueType:"text"},{key:"project_code",label:"项目编号",aliases:["项目编号","招标项目编号","工程编号"],valueType:"identifier"},{key:"owner",label:"招标人",aliases:["招标人","项目业主","建设单位","发包人","采购人"],valueType:"organization"},{key:"project_location",label:"建设地点",aliases:["建设地点","实施地点","服务地点","交付地点"],valueType:"location"},{key:"project_scale",label:"建设规模",aliases:["建设规模","工程规模","项目规模"],valueType:"scale"},{key:"schedule_requirement",label:"计划工期",aliases:["计划工期","合同工期","总工期","工期","实施周期","服务期限"],valueType:"duration"},{key:"quality_standard",label:"质量标准",aliases:["质量标准","质量目标","验收标准","服务标准"],valueType:"standard"},{key:"project_investment_estimate",label:"合同估算价",aliases:["合同估算价","合同估算价格","投资估算","估算价格","最高投标限价","招标控制价","预算金额"],valueType:"money"},{key:"labor_peak",label:"劳动力高峰人数",aliases:["劳动力高峰","高峰期劳动力","高峰人数","劳动力峰值","高峰期人数","劳动力配置"],valueType:"count"},{key:"assembly_rate",label:"装配率",aliases:["装配率","装配式建筑占比","装配式比例","装配式建筑面积占比"],valueType:"percentage"},{key:"foundation_support_form",label:"基坑支护形式",aliases:["基坑支护形式","基坑支护方式","支护形式","支护方式"],valueType:"text"},{key:"excavation_depth",label:"基坑开挖深度",aliases:["基坑开挖深度","基坑深度","开挖深度","基坑底标高","坑底标高","坡底线","坑底"],valueType:"text"},{key:"award_clause",label:"创优奖惩条款",aliases:["创优奖惩","优质优价","创优目标","奖惩条款","创优奖项"],valueType:"award"}],t=[{pattern:/土钉/u,form:"土钉墙"},{pattern:/锚杆|锚索/u,form:"锚杆支护"},{pattern:/喷锚/u,form:"喷锚支护"},{pattern:/放坡/u,form:"放坡开挖"},{pattern:/地下连续墙/u,form:"地下连续墙"},{pattern:/支护桩/u,form:"支护桩"}];function u(a){return/^(见|详见|参见|按|以).{0,30}(招标公告|招标文件|投标人须知|前附表|合同|附件|图纸|清单|约定|规定|执行)/u.test(a)||/见招标公告|见投标人须知前附表|详见|按.*执行/u.test(a)}function v(a,b){switch(b.valueType){case"duration":if(!/\d+(?:\.\d+)?\s*(?:日历天|天|个月|月|年)/u.test(a))return{rejected:!0,score:-80,reason:"缺少明确工期数值和时间单位"};if(/延误|逾期|违约|赔偿|罚款|处罚|扣除|扣留|切除/u.test(a))return{rejected:!0,score:-90,reason:"命中工期违约条款而非计划工期"};return{rejected:!1,score:45,reason:"包含明确工期数值和时间单位"};case"money":if(!/\d+(?:\.\d+)?\s*(?:万元|元|亿元)/u.test(a))return{rejected:!0,score:-80,reason:"缺少明确金额数值和单位"};if(/综合单价|税率|增值税|利润|报价明细/u.test(a))return{rejected:!0,score:-90,reason:"命中非目标商务明细"};return{rejected:!1,score:45,reason:"包含明确金额数值和单位"};case"standard":if(!/合格|优良|一次性验收|达到|满足|符合/u.test(a))return{rejected:!0,score:-70,reason:"不符合标准类字段表达"};if(/工期|投标|技术标准|有效期/u.test(a))return{rejected:!0,score:-90,reason:"标准字段包含其他字段或投标条款"};return{rejected:!1,score:40,reason:"符合标准类字段表达"};case"location":if(u(a))return{rejected:!1,score:-40,reason:"引用型地点弱值"};if(!/(省|市|区|县|镇|街道|路|园区|大道|巷|内|号)/u.test(a))return{rejected:!1,score:-10,reason:"地点具体性不足"};return{rejected:!1,score:35,reason:"包含具体地址特征"};case"organization":if(/监督管理部门|投标人|中标候选人|评标委员会/u.test(a))return{rejected:!0,score:-90,reason:"组织字段角色串位"};if(/(公司|集团|单位|委员会|机关|中心|局|院|所|政府|运营管理)/u.test(a))return{rejected:!1,score:35,reason:"包含组织名称特征"};return{rejected:!1,score:5,reason:"组织名称特征较弱"};case"identifier":if(!/^[A-Za-z0-9\-_.()()]+$/u.test(a))return{rejected:!0,score:-70,reason:"编号格式不合法"};if(/(?:㎡|m²|m2|m3|m³|平方米|米|万元|元|日历天|个月)/u.test(a))return{rejected:!0,score:-60,reason:"编号中混入量纲单位,疑似字段串位"};return{rejected:!1,score:35,reason:"符合编号格式"};case"scale":if(/\d+(?:\.\d+)?\s*(?:㎡|平方米|m²|米|m|层|栋|座|万元|元)/iu.test(a))return{rejected:!1,score:30,reason:"包含规模数值或单位"};return{rejected:!1,score:5,reason:"规模字段为文本描述"};case"count":if(!/\d+(?:\.\d+)?\s*人/u.test(a))return{rejected:!0,score:-80,reason:"缺少明确人数数值"};if(/面积|工期|金额|报价|万元/u.test(a))return{rejected:!0,score:-70,reason:"人数字段混入其他量纲"};return{rejected:!1,score:40,reason:"包含明确人数数值"};case"percentage":if(!/\d+(?:\.\d+)?\s*(?:%|%)/u.test(a))return{rejected:!0,score:-80,reason:"缺少百分比数值"};if(/工期|金额|报价/u.test(a))return{rejected:!0,score:-70,reason:"百分比字段混入其他量纲"};return{rejected:!1,score:40,reason:"包含百分比数值"};case"award":if(!/(?:杯|奖|万元|优质优价)/u.test(a))return{rejected:!0,score:-70,reason:"缺少奖项或奖惩金额特征"};if(/评标|保证金|报价明细|综合单价/u.test(a))return{rejected:!0,score:-90,reason:"奖项字段串入评标条款"};return{rejected:!1,score:40,reason:"包含奖项/奖惩金额特征"};default:if("project_name"===b.key){if(/存在部位|风险等级|管控措施|监测频次|闭环要求|序号|内容|范围|不适用/u.test(a))return{rejected:!0,score:-90,reason:"项目名称字段串位或表头噪声"};if(!/项目|工程|学院|宿舍|楼|校区|施工总承包/u.test(a))return{rejected:!0,score:-70,reason:"项目名称缺少工程名称特征"};return{rejected:!1,score:35,reason:"符合项目名称特征"}}if("foundation_support_form"===b.key){if(!(t.some(b=>b.pattern.test(a)||a.includes(b.form))||/支护|放坡|锚|桩|喷|开挖|护坡/u.test(a)))return{rejected:!0,score:-70,reason:"基坑支护形式缺少支护工艺特征"};if(/监测|监测频次|闭环/u.test(a))return{rejected:!0,score:-80,reason:"支护形式字段串入监测管控内容"};return{rejected:!1,score:30,reason:"包含支护工艺特征"}}if("excavation_depth"===b.key){if(!/\d+(?:\.\d+)?/u.test(a))return{rejected:!0,score:-70,reason:"基坑开挖深度缺少数值"};if(/监测|监测频次|闭环|验收|支护桩/u.test(a))return{rejected:!0,score:-80,reason:"开挖深度字段串入监测管控内容"};return{rejected:!1,score:30,reason:"包含开挖深度数值"}}return{rejected:!1,score:a.length>=2?10:-20,reason:"文本字段"}}}function w(a,b){let c=(0,n.de)(a.value),d=[],e=30,f=!1;(!c||c.length>260)&&(f=!0,e-=100,d.push("空值或过长")),/###|投标文件的编制|备选投标方案|投标将被否决|投标人提供|投标有效期|电子交易系统|公共资源交易监督管理部门|中标候选|评标委员会|实质性内容作出响应|招标人有权核查/u.test(c)&&(f=!0,e-=100,d.push("大段条款或 Markdown 噪声")),/(?<=[日天])\s*[0-9]+(?:\.[0-9]+)?(?=[\s]*(?:招标|建设|质量|合同|项目|工程|资金|投标|开标|评标|付款|工期|开工|计划|计价|现场|资质|标段|[0-9]{1,3}[.、.]|[,,。;;]|$))/u.test(c)&&(f=!0,e-=100,d.push("值尾部编号粘连,疑似 PDF 编号串行残留")),s.some(a=>a.key!==b.key&&a.aliases.some(a=>c.includes(a)))&&(e-=45,d.push("包含其他字段名,疑似字段串位")),u(c)&&(e-=35,d.push("引用型弱值"));let g=v(c,b);return e+=g.score,d.push(g.reason),g.rejected&&(f=!0),"evidence"===a.sourceType&&(e+=20,d.push("来源为证据原文")),a.sourceName&&/补疑|答疑|澄清|补充|更正|修改/u.test(a.sourceName)&&(e+=35,d.push("补疑/澄清类修正文件,权威最高")),a.sourceName&&/招标文件|招标公告|前附表|合同|需求书|正文/u.test(a.sourceName)&&(e+=15,d.push("来源文件可信")),"generated_markdown"===a.sourceType&&(e-=10),{...a,value:c,confidence:e,rejected:f,reasons:d}}let x=/坡底线|坑底标高|基坑底标高|开挖深度|基坑深度/u,y=RegExp(t.map(a=>a.pattern.source).join("|"),"u"),z=/(?:超过|大于|小于|不[大低小]于|不低于|及以上|及以下|以上|以下)/u;function A(a){let b=[],c=new Map,d=new Map;for(let b of a){let a=String(b.content||""),e=b.filePath||b.sectionTitle||"drawing_annotation";if(!("drawing"===b.processingType||/dwg|图纸|CAD/iu.test(`${b.filePath||""} ${b.sectionTitle||""}`))&&!/CAD 语义标注/u.test(a)||!x.test(a)&&!y.test(a))continue;let f=a.split(/\r?\n/u);for(let a=0;a<f.length;a+=1){let b=f[a].trim();if(b){if(x.test(b)&&!/坑底H/u.test(b)&&!z.test(b)){let d=a=>Number.isFinite(a)&&a>=1&&a<50,g=[...b.matchAll(/-?(\d+(?:\.\d{1,3})?)/gu)].filter(a=>{let c=a.index??0,d=b[c-1],e=b[c+a[0].length];return":"!==d&&":"!==e&&"#"!==e}).map(a=>Math.abs(Number(a[1]))).filter(d),h=g.length>0?Math.max(...g):NaN,i=!1;if(!Number.isFinite(h)&&a>0&&/^-?[\d.,]+\s*$/u.test(f[a-1].trim())){let b=Math.abs(Number(f[a-1].trim().replace(/,/gu,"")));d(b)&&(h=b,i=!0)}if(Number.isFinite(h)){let d=(i?`${f[a-1].trim()} ${b}`:b).replace(/[|]/gu," ").replace(/\s+/gu," ").trim().slice(0,48),g=`${e}:${h.toFixed(2)}`;c.has(g)||c.set(g,{value:h,context:d})}}if(y.test(b))for(let a of t.filter(a=>a.pattern.test(b)).map(a=>a.form))d.has(a)||d.set(a,{form:a,context:b.replace(/\s+/gu," ").slice(0,60)})}}}if(c.size>0){let a=Math.max(...[...c.values()].map(a=>a.value)),d=[...c.values()].map(a=>a.context).slice(0,3).join(";");b.push({key:"基坑开挖深度",fieldId:"excavation_depth",fieldName:"基坑开挖深度",value:`${a}m(图纸标注:${d})`,sourceFile:"图纸标注",roleId:"drawing",processingType:"drawing",confidence:90})}if(d.size>0){let a=[...d.values()],c=a.map(a=>a.context).slice(0,3).join(";");b.push({key:"基坑支护形式",fieldId:"foundation_support_form",fieldName:"基坑支护形式",value:`${a.map(a=>a.form).join("、")}(图纸标注:${c})`,sourceFile:"图纸标注",roleId:"drawing",processingType:"drawing",confidence:90})}return b}function B(a){return function(a,b=s){let c=new Map;for(let d of b){let b=a.filter(a=>a.fieldKey===d.key).sort((a,b)=>b.confidence-a.confidence),e=b.find(a=>!a.rejected&&a.confidence>0);e&&c.set(d.key,{fieldKey:d.key,label:d.label,value:e.value,source:e.sourceName||e.sourceType,confidence:e.confidence,candidates:b,selectedReason:e.reasons.join(";")})}return c}([...function(a){let b=[];for(let c of a){let a=function(a){let b=`${a.fieldId||""}${a.key||""}${a.fieldName||""}`;return s.find(c=>c.key===a.fieldId||c.aliases.some(a=>b.includes(a)))}(c);if(!a)continue;let d=(0,e.lG)(c.value);b.push(w({fieldKey:a.key,label:a.label,value:d,sourceType:"structured_fact",sourceName:c.sourceFile||c.sourceRef?.sectionTitle||"structured_fact"},a))}let c=s.find(a=>"excavation_depth"===a.key);if(c)for(let d of a){if("excavation_depth"===d.fieldId)continue;let a=(0,e.lG)(d.value),f=`${d.fieldId||""}${d.key||""}${d.fieldName||""} ${a}`;if(!/坡底线|坑底|电梯井|坑底标高/u.test(f))continue;let g=[...a.matchAll(/-?(\d+(?:\.\d{1,3})?)(?=[^0-9.]|$)/gu)].map(a=>Math.abs(Number(a[1]))).filter(a=>Number.isFinite(a)&&a>.5&&a<50);if(0===g.length)continue;let h=Math.max(...g);b.push(w({fieldKey:"excavation_depth",label:c.label,value:`${h}m(图纸标注:${a.slice(0,60)})`,sourceType:"structured_fact",sourceName:d.sourceFile||d.sourceRef?.sectionTitle||"drawing_annotation"},c))}return b}(a.facts),...function(a,b="generated_markdown"){let c=[];for(let d of a.split(/\r?\n/u)){if(!/^\|.*\|\s*$/u.test(d)||/^\|\s*:?-{3,}:?/u.test(d))continue;let a=d.trim().replace(/^\|/u,"").replace(/\|$/u,"").split("|").map(a=>a.replace(/\*\*/gu,"").trim());if(a.length<2)continue;let e="序号"===a[0]&&a.length>=3?a[1]:a[0],f="序号"===a[0]&&a.length>=3?a[2]:a[1],g="序号"===a[0]&&a.length>=4?a[3]:a[2],h=s.find(a=>a.aliases.some(a=>e.includes(a))||a.label===e);!h||!f||/内容|参数|资料未明确|系统暂未确认|暂未从知识库确认/u.test(f)||c.push(w({fieldKey:h.key,label:h.label,value:f,sourceType:"generated_markdown",sourceName:g||b},h))}return c}(a.markdown||"")])}function C(a){return({user:100,addendum:96,contract:90,tender:85,boq:75,drawing:70,standard:60,evidence:55,structured_fact:50,projectGraph:40,generated_markdown:30,derived:20,unknown:10})[a]}function D(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}let E=new Map;function F(a){let b=E.get(a);return b||(b=RegExp(a,"u"),E.set(a,b)),b}function G(a,b){let c=`${a||""} ${b||""}`;return/补疑|答疑|澄清|补充|更正|修改/u.test(c)?95:/合同/u.test(c)?90:/招标文件|招标公告|前附表|投标人须知|需求书/u.test(c)?85:/清单|工程量|BOQ|编制说明/u.test(c)?75:/图纸|设计/u.test(c)?70:50}function H(a,b=(0,r.bC)()){let c=[];for(let d of["area","cost","duration","floors","parkingSpaces"]){let f=new Set,g=[];for(let c of a){let a=(0,e.lG)(c.value),h=G(c.sourceFile,c.roleId);for(let e of function(a,b,c,d){let e=[],f="area"===b?/(?<![地上地下门卫室值班室配电室配电房泵房水泵房锅炉房公厕车库车棚岗亭传达室警卫室样板房售楼处门房])总?建筑面积|建设规模/u:"cost"===b?/合同估算价|合同估算价格|投资估算|最高投标限价|招标控制价|工程总投资|总投资|工程造价/u:"floors"===b?/总?层数|建筑层数|地上层数|地下层数|楼层数/u:"parkingSpaces"===b?/总?车位|停车位|机动车位|车位数/u:/计划工期|合同工期|总工期|施工周期/u,g="floors"===b||"parkingSpaces"===b?"\\d+(?:[.,]\\d+)?":"\\d{2,}(?:[.,]\\d+)?",h=RegExp(`(?:${f.source})(?:[^0-9\\n]{0,14}?)(${g})\\s*${"area"===b?"(万?㎡|万?m\xb2|万?m2|万?平方米)":"cost"===b?"(万元|亿元|万?元)":"floors"===b?"(层)":"parkingSpaces"===b?"(个|个车位|个停车位)":"(日历天|天|个月|月)"}`,"giu"),i=RegExp(g,"u");for(let g of a.matchAll(h)){let h,j=g[0].match(f),k=j?.[0]||"",l=g[1].replace(/[,,]/gu,"").trim(),m=(g[2]||"").trim();if(!k||!l||!i.test(l))continue;let n=(g.index??0)+(j?.index??0),o=(g.index??0)+g[0].indexOf(g[1]),p=o-(n+k.length),q=a.slice(n+k.length,o);if("area"===b&&/占地|用地/u.test(q))continue;let r=function(a,b,c,d,e,f){let g=a.slice(Math.max(0,b-10),b),h=a.slice(b+c,d),i=`${g}${h}`,{addendumSource:j,amendmentContext:k,thresholdComparison:l,aspirationalPrefix:m}=f.factGovernance;return F(j).test(e||"")&&F(k).test(i)?"amendment":F(l).test(i)?"threshold":F(m).test(g)?"aspirational":"ontological"}(a,n,k.length,o,c,d);if("threshold"!==r&&"aspirational"!==r){if("duration"===b||"floors"===b||"parkingSpaces"===b)h=`${l}|${m}`;else{let a=+!!/万/u.test(m),b=Number(l)*(a?1e4:1);if(!Number.isFinite(b))continue;h=String(/亿元/u.test(m)?1e8*b:/万元/u.test(m)?1e4*b:b)}e.push({scope:k,value:l,unit:m,compareKey:h,contextClass:r,anchorScore:(p<=3?3:p<=9?2:1)+("ontological"===r||"amendment"===r?2:1),gapLength:p})}}return e}(a,d,c.sourceFile,b)){let a=`${c.sourceFile||""}|${e.scope}|${e.compareKey}`;f.has(a)||(f.add(a),g.push({...e,sourceFile:c.sourceFile,priority:h}))}}if(!(g.length<2))for(let[a,e]of g.reduce((a,b)=>{let c=b.scope.replace(/^总/u,""),d=a.get(c)||[];return d.push(b),a.set(c,d),a},new Map)){let f;if(new Set(e.map(a=>a.compareKey)).size<2||new Set(e.map(a=>a.sourceFile).filter(Boolean)).size<2)continue;let g=Math.max(...e.map(a=>a.priority)),h=e.filter(a=>a.priority===g),i=Math.max(...h.map(a=>a.anchorScore)),j=h.filter(a=>a.anchorScore===i),k=1===new Set(j.map(a=>a.compareKey)).size?j[0]:void 0;if(k){let a=k.gapLength>b.factGovernance.weakAnchorGapThreshold;f="amendment"===k.contextClass?a?"medium":"high":a?"low":"medium"}c.push({kind:d,scope:`${a}(${"area"===d?"面积":"cost"===d?"金额":"floors"===d?"层数":"parkingSpaces"===d?"车位数":"工期"}口径)`,values:[...new Map(e.map(a=>[`${a.value}${a.unit}|${a.sourceFile||""}`,{value:a.value,unit:a.unit,sourceFile:a.sourceFile,priority:a.priority}])).values()],resolution:k?`${k.value}${k.unit}`:void 0,...f?{confidence:f}:{}})}}return c}function I(a){let b=new Map;for(let c of a){if(!c.resolution||"low"===c.confidence||b.has(c.kind))continue;let a=c.values.find(a=>`${a.value}${a.unit}`===c.resolution),d=a?a.value.replace(/[,,]/gu,""):"",e=c.values.filter(a=>`${a.value}${a.unit}`!==c.resolution).map(a=>({value:a.value.replace(/[,,]/gu,""),unit:a.unit}));d&&0!==e.length&&b.set(c.kind,{winnerNum:d,losers:e})}return b}function J(a,b){return b?.length?a.map(a=>{let c=function(a,b){let c=a;for(let{winnerNum:a,losers:d}of I(b).values())for(let b of d)b.unit&&c.includes(`${b.value}${b.unit}`)?c=c.split(`${b.value}${b.unit}`).join(`${a}${b.unit}`):c.includes(b.value)&&(c=c.split(b.value).join(a));return c}(a.content,b);return c===a.content?a:{...a,content:c}}):a}function K(a,b){let c=I(b);if(0===c.size)return a;let d={area:/建设规模|工程规模|建筑面积|用地面积|占地面积|project_scale|scale/u,cost:/合同估算|投资估算|最高投标限价|招标控制价|总投资|工程造价|project_cost|cost|price|amount/u,duration:/计划工期|合同工期|总工期|施工周期|duration|schedule/u,floors:/总层数|建筑层数|地上层数|地下层数|楼层数|project_floors|floors/u,parkingSpaces:/总车位|停车位|机动车位|车位数|project_parking|parking/u};return a.map(a=>{let b=[...c.keys()].find(b=>d[b].test(a.key)||d[b].test(a.value));if(!b)return a;let{winnerNum:e,losers:f}=c.get(b),g=a.value,h=!1;for(let a of f)a.unit&&g.includes(`${a.value}${a.unit}`)?(g=g.split(`${a.value}${a.unit}`).join(`${e}${a.unit}`),h=!0):g.includes(a.value)&&(g=g.split(a.value).join(e),h=!0);return h?{...a,value:g}:a})}function L(a){var b;let c=(0,e.c6)({version:"canonical-facts-v7",rulesHash:(0,r.TG)(a.projectRoot),requirement:a.requirement||"",templateId:a.templateId||"",requiredKeys:a.requiredKeys||[],facts:a.facts.map(a=>({key:a.key,fieldId:a.fieldId,fieldName:a.fieldName,value:a.value,sourceFile:a.sourceFile,roleId:a.roleId,confidence:a.confidence})).sort((a,b)=>`${a.sourceFile}${a.key}${a.value}`.localeCompare(`${b.sourceFile}${b.key}${b.value}`)),graphHash:a.projectGraph?(0,e.c6)(a.projectGraph):"",markdownHash:a.markdown?(0,e.c6)(a.markdown.slice(0,2e4)):""}),d=function(a,b){let c=D(a);if(c)try{let a=JSON.parse(o.readFileSync(p.join(c,`canonical-facts-${b}.json`),"utf8"));return a&&a.byKey&&Array.isArray(a.scopeConflicts)?a:void 0}catch{return}}(a.projectRoot,c);if(d)return d;let f=a.facts||[],g=H(f,(0,r.bC)(a.projectRoot));for(let a of g.map(a=>({caseType:"scope_conflict_arbitration",recordedAt:Date.now(),kind:a.kind,scope:a.scope,values:a.values.map(a=>({value:a.value,unit:a.unit,sourceFile:a.sourceFile,priority:a.priority})),winner:a.resolution,confidence:a.confidence,manualReviewRequired:!a.resolution})))try{o.appendFileSync(p.join(function(){let a=p.join(q.homedir(),".customize-agent","cache","document-workflow","case-log");return o.mkdirSync(a,{recursive:!0}),a}(),"arbitration-cases.jsonl"),`${JSON.stringify(a)}
1
+ "use strict";exports.id=4931,exports.ids=[4931,9227],exports.modules={40711:(a,b,c)=>{c.d(b,{h0x:()=>d.h0,bVF:()=>d.bV,OXS:()=>fl,QJx:()=>d.QJ,jGg:()=>d.jG,R1O:()=>fk,Bhi:()=>d.Bh,xmB:()=>d.xm,J5_:()=>d.J5});var d=c(23500),e=c(22157),f=c(46482),g=c(70933),h=c(78217),i=c(28103),j=c(5726);function k(a,b){return b<=0?100*(a>0):Math.min(120,a/b*100)}async function l(a){var b,c;if(!a||a.trim().length<500)return;let d=(0,i.aF)(a),e=(0,j.Ah)(d);if(!e)return;let f=await (0,i.WT)(a),g=e.profile,h=Math.max(g.arrowChainCoverage,.08),l=[{key:"paramDensity",label:"参数密度",generated:f.paramDensity,reference:g.paramDensity,score:k(f.paramDensity,.8*g.paramDensity),unit:"perKChars"},{key:"arrowChainCoverage",label:"工序链覆盖率",generated:f.arrowChainCoverage,reference:h,score:k(f.arrowChainCoverage,h),unit:"percent"},{key:"duplicationRate",label:"段落重复率",generated:f.duplicationRate,reference:g.duplicationRate,score:(b=f.duplicationRate)<=(c=g.duplicationRate)?100:Math.max(0,Math.round(100-(b-c)*400)),unit:"percent"},{key:"tableCount",label:"表格数量",generated:f.tableCount,reference:g.tableCount,score:k(f.tableCount,.6*g.tableCount),unit:"count"},{key:"sectionCount",label:"章节结构",generated:f.sectionCount,reference:g.sectionCount,score:f.sectionCount>=.4*g.sectionCount?100:k(f.sectionCount,g.sectionCount),unit:"count"}].map(a=>({...a,score:Math.round(Math.min(120,a.score)),passed:a.score>=80})),m={paramDensity:.3,arrowChainCoverage:.2,duplicationRate:.2,tableCount:.15,sectionCount:.15},n=Math.round(Math.min(100,l.reduce((a,b)=>a+b.score*(m[b.key]||0),0)));return{projectType:d,referenceSourceCount:e.sourceCount,overallScore:n,items:l}}var m=c(87942),n=c(1218),o=c(73024),p=c(76760),q=c(48161),r=c(28366);let s=[{key:"project_name",label:"项目名称",aliases:["项目名称","工程名称","招标项目名称"],valueType:"text"},{key:"project_code",label:"项目编号",aliases:["项目编号","招标项目编号","工程编号"],valueType:"identifier"},{key:"owner",label:"招标人",aliases:["招标人","项目业主","建设单位","发包人","采购人"],valueType:"organization"},{key:"project_location",label:"建设地点",aliases:["建设地点","实施地点","服务地点","交付地点"],valueType:"location"},{key:"project_scale",label:"建设规模",aliases:["建设规模","工程规模","项目规模"],valueType:"scale"},{key:"schedule_requirement",label:"计划工期",aliases:["计划工期","合同工期","总工期","工期","实施周期","服务期限"],valueType:"duration"},{key:"quality_standard",label:"质量标准",aliases:["质量标准","质量目标","验收标准","服务标准"],valueType:"standard"},{key:"project_investment_estimate",label:"合同估算价",aliases:["合同估算价","合同估算价格","投资估算","估算价格","最高投标限价","招标控制价","预算金额"],valueType:"money"},{key:"labor_peak",label:"劳动力高峰人数",aliases:["劳动力高峰","高峰期劳动力","高峰人数","劳动力峰值","高峰期人数","劳动力配置"],valueType:"count"},{key:"assembly_rate",label:"装配率",aliases:["装配率","装配式建筑占比","装配式比例","装配式建筑面积占比"],valueType:"percentage"},{key:"foundation_support_form",label:"基坑支护形式",aliases:["基坑支护形式","基坑支护方式","支护形式","支护方式"],valueType:"text"},{key:"excavation_depth",label:"基坑开挖深度",aliases:["基坑开挖深度","基坑深度","开挖深度","基坑底标高","坑底标高","坡底线","坑底"],valueType:"text"},{key:"award_clause",label:"创优奖惩条款",aliases:["创优奖惩","优质优价","创优目标","奖惩条款","创优奖项"],valueType:"award"}],t=[{pattern:/土钉/u,form:"土钉墙"},{pattern:/锚杆|锚索/u,form:"锚杆支护"},{pattern:/喷锚/u,form:"喷锚支护"},{pattern:/放坡/u,form:"放坡开挖"},{pattern:/地下连续墙/u,form:"地下连续墙"},{pattern:/支护桩/u,form:"支护桩"}];function u(a){return/^(见|详见|参见|按|以).{0,30}(招标公告|招标文件|投标人须知|前附表|合同|附件|图纸|清单|约定|规定|执行)/u.test(a)||/见招标公告|见投标人须知前附表|详见|按.*执行/u.test(a)}function v(a,b){switch(b.valueType){case"duration":if(!/\d+(?:\.\d+)?\s*(?:日历天|天|个月|月|年)/u.test(a))return{rejected:!0,score:-80,reason:"缺少明确工期数值和时间单位"};if(/延误|逾期|违约|赔偿|罚款|处罚|扣除|扣留|切除/u.test(a))return{rejected:!0,score:-90,reason:"命中工期违约条款而非计划工期"};return{rejected:!1,score:45,reason:"包含明确工期数值和时间单位"};case"money":if(!/\d+(?:\.\d+)?\s*(?:万元|元|亿元)/u.test(a))return{rejected:!0,score:-80,reason:"缺少明确金额数值和单位"};if(/综合单价|税率|增值税|利润|报价明细/u.test(a))return{rejected:!0,score:-90,reason:"命中非目标商务明细"};return{rejected:!1,score:45,reason:"包含明确金额数值和单位"};case"standard":if(!/合格|优良|一次性验收|达到|满足|符合/u.test(a))return{rejected:!0,score:-70,reason:"不符合标准类字段表达"};if(/工期|投标|技术标准|有效期/u.test(a))return{rejected:!0,score:-90,reason:"标准字段包含其他字段或投标条款"};return{rejected:!1,score:40,reason:"符合标准类字段表达"};case"location":if(u(a))return{rejected:!1,score:-40,reason:"引用型地点弱值"};if(!/(省|市|区|县|镇|街道|路|园区|大道|巷|内|号)/u.test(a))return{rejected:!1,score:-10,reason:"地点具体性不足"};return{rejected:!1,score:35,reason:"包含具体地址特征"};case"organization":if(/监督管理部门|投标人|中标候选人|评标委员会/u.test(a))return{rejected:!0,score:-90,reason:"组织字段角色串位"};if(/(公司|集团|单位|委员会|机关|中心|局|院|所|政府|运营管理)/u.test(a))return{rejected:!1,score:35,reason:"包含组织名称特征"};return{rejected:!1,score:5,reason:"组织名称特征较弱"};case"identifier":if(!/^[A-Za-z0-9\-_.()()]+$/u.test(a))return{rejected:!0,score:-70,reason:"编号格式不合法"};if(/(?:㎡|m²|m2|m3|m³|平方米|米|万元|元|日历天|个月)/u.test(a))return{rejected:!0,score:-60,reason:"编号中混入量纲单位,疑似字段串位"};return{rejected:!1,score:35,reason:"符合编号格式"};case"scale":if(/\d+(?:\.\d+)?\s*(?:㎡|平方米|m²|米|m|层|栋|座|万元|元)/iu.test(a))return{rejected:!1,score:30,reason:"包含规模数值或单位"};return{rejected:!1,score:5,reason:"规模字段为文本描述"};case"count":if(!/\d+(?:\.\d+)?\s*人/u.test(a))return{rejected:!0,score:-80,reason:"缺少明确人数数值"};if(/面积|工期|金额|报价|万元/u.test(a))return{rejected:!0,score:-70,reason:"人数字段混入其他量纲"};return{rejected:!1,score:40,reason:"包含明确人数数值"};case"percentage":if(!/\d+(?:\.\d+)?\s*(?:%|%)/u.test(a))return{rejected:!0,score:-80,reason:"缺少百分比数值"};if(/工期|金额|报价/u.test(a))return{rejected:!0,score:-70,reason:"百分比字段混入其他量纲"};return{rejected:!1,score:40,reason:"包含百分比数值"};case"award":if(!/(?:杯|奖|万元|优质优价)/u.test(a))return{rejected:!0,score:-70,reason:"缺少奖项或奖惩金额特征"};if(/评标|保证金|报价明细|综合单价/u.test(a))return{rejected:!0,score:-90,reason:"奖项字段串入评标条款"};return{rejected:!1,score:40,reason:"包含奖项/奖惩金额特征"};default:if("project_name"===b.key){if(/存在部位|风险等级|管控措施|监测频次|闭环要求|序号|内容|范围|不适用/u.test(a))return{rejected:!0,score:-90,reason:"项目名称字段串位或表头噪声"};if(!/项目|工程|学院|宿舍|楼|校区|施工总承包/u.test(a))return{rejected:!0,score:-70,reason:"项目名称缺少工程名称特征"};return{rejected:!1,score:35,reason:"符合项目名称特征"}}if("foundation_support_form"===b.key){if(!(t.some(b=>b.pattern.test(a)||a.includes(b.form))||/支护|放坡|锚|桩|喷|开挖|护坡/u.test(a)))return{rejected:!0,score:-70,reason:"基坑支护形式缺少支护工艺特征"};if(/监测|监测频次|闭环/u.test(a))return{rejected:!0,score:-80,reason:"支护形式字段串入监测管控内容"};return{rejected:!1,score:30,reason:"包含支护工艺特征"}}if("excavation_depth"===b.key){if(!/\d+(?:\.\d+)?/u.test(a))return{rejected:!0,score:-70,reason:"基坑开挖深度缺少数值"};if(/监测|监测频次|闭环|验收|支护桩/u.test(a))return{rejected:!0,score:-80,reason:"开挖深度字段串入监测管控内容"};return{rejected:!1,score:30,reason:"包含开挖深度数值"}}return{rejected:!1,score:a.length>=2?10:-20,reason:"文本字段"}}}function w(a,b){let c=(0,n.de)(a.value),d=[],e=30,f=!1;(!c||c.length>260)&&(f=!0,e-=100,d.push("空值或过长")),/###|投标文件的编制|备选投标方案|投标将被否决|投标人提供|投标有效期|电子交易系统|公共资源交易监督管理部门|中标候选|评标委员会|实质性内容作出响应|招标人有权核查/u.test(c)&&(f=!0,e-=100,d.push("大段条款或 Markdown 噪声")),/(?<=[日天])\s*[0-9]+(?:\.[0-9]+)?(?=[\s]*(?:招标|建设|质量|合同|项目|工程|资金|投标|开标|评标|付款|工期|开工|计划|计价|现场|资质|标段|[0-9]{1,3}[.、.]|[,,。;;]|$))/u.test(c)&&(f=!0,e-=100,d.push("值尾部编号粘连,疑似 PDF 编号串行残留")),s.some(a=>a.key!==b.key&&a.aliases.some(a=>c.includes(a)))&&(e-=45,d.push("包含其他字段名,疑似字段串位")),u(c)&&(e-=35,d.push("引用型弱值"));let g=v(c,b);return e+=g.score,d.push(g.reason),g.rejected&&(f=!0),"evidence"===a.sourceType&&(e+=20,d.push("来源为证据原文")),a.sourceName&&/补疑|答疑|澄清|补充|更正|修改/u.test(a.sourceName)&&(e+=35,d.push("补疑/澄清类修正文件,权威最高")),a.sourceName&&/招标文件|招标公告|前附表|合同|需求书|正文/u.test(a.sourceName)&&(e+=15,d.push("来源文件可信")),"generated_markdown"===a.sourceType&&(e-=10),{...a,value:c,confidence:e,rejected:f,reasons:d}}let x=/坡底线|坑底标高|基坑底标高|开挖深度|基坑深度/u,y=RegExp(t.map(a=>a.pattern.source).join("|"),"u"),z=/(?:超过|大于|小于|不[大低小]于|不低于|及以上|及以下|以上|以下)/u;function A(a){let b=[],c=new Map,d=new Map;for(let b of a){let a=String(b.content||""),e=b.filePath||b.sectionTitle||"drawing_annotation";if(!("drawing"===b.processingType||/dwg|图纸|CAD/iu.test(`${b.filePath||""} ${b.sectionTitle||""}`))&&!/CAD 语义标注/u.test(a)||!x.test(a)&&!y.test(a))continue;let f=a.split(/\r?\n/u);for(let a=0;a<f.length;a+=1){let b=f[a].trim();if(b){if(x.test(b)&&!/坑底H/u.test(b)&&!z.test(b)){let d=a=>Number.isFinite(a)&&a>=1&&a<50,g=[...b.matchAll(/-?(\d+(?:\.\d{1,3})?)/gu)].filter(a=>{let c=a.index??0,d=b[c-1],e=b[c+a[0].length];return":"!==d&&":"!==e&&"#"!==e}).map(a=>Math.abs(Number(a[1]))).filter(d),h=g.length>0?Math.max(...g):NaN,i=!1;if(!Number.isFinite(h)&&a>0&&/^-?[\d.,]+\s*$/u.test(f[a-1].trim())){let b=Math.abs(Number(f[a-1].trim().replace(/,/gu,"")));d(b)&&(h=b,i=!0)}if(Number.isFinite(h)){let d=(i?`${f[a-1].trim()} ${b}`:b).replace(/[|]/gu," ").replace(/\s+/gu," ").trim().slice(0,48),g=`${e}:${h.toFixed(2)}`;c.has(g)||c.set(g,{value:h,context:d})}}if(y.test(b))for(let a of t.filter(a=>a.pattern.test(b)).map(a=>a.form))d.has(a)||d.set(a,{form:a,context:b.replace(/\s+/gu," ").slice(0,60)})}}}if(c.size>0){let a=Math.max(...[...c.values()].map(a=>a.value)),d=[...c.values()].map(a=>a.context).slice(0,3).join(";");b.push({key:"基坑开挖深度",fieldId:"excavation_depth",fieldName:"基坑开挖深度",value:`${a}m(图纸标注:${d})`,sourceFile:"图纸标注",roleId:"drawing",processingType:"drawing",confidence:90})}if(d.size>0){let a=[...d.values()],c=a.map(a=>a.context).slice(0,3).join(";");b.push({key:"基坑支护形式",fieldId:"foundation_support_form",fieldName:"基坑支护形式",value:`${a.map(a=>a.form).join("、")}(图纸标注:${c})`,sourceFile:"图纸标注",roleId:"drawing",processingType:"drawing",confidence:90})}return b}function B(a){return function(a,b=s){let c=new Map;for(let d of b){let b=a.filter(a=>a.fieldKey===d.key).sort((a,b)=>b.confidence-a.confidence),e=b.find(a=>!a.rejected&&a.confidence>0);e&&c.set(d.key,{fieldKey:d.key,label:d.label,value:e.value,source:e.sourceName||e.sourceType,confidence:e.confidence,candidates:b,selectedReason:e.reasons.join(";")})}return c}([...function(a){let b=[];for(let c of a){let a=function(a){let b=`${a.fieldId||""}${a.key||""}${a.fieldName||""}`;return s.find(c=>c.key===a.fieldId||c.aliases.some(a=>b.includes(a)))}(c);if(!a)continue;let d=(0,e.lG)(c.value);b.push(w({fieldKey:a.key,label:a.label,value:d,sourceType:"structured_fact",sourceName:c.sourceFile||c.sourceRef?.sectionTitle||"structured_fact"},a))}let c=s.find(a=>"excavation_depth"===a.key);if(c)for(let d of a){if("excavation_depth"===d.fieldId)continue;let a=(0,e.lG)(d.value),f=`${d.fieldId||""}${d.key||""}${d.fieldName||""} ${a}`;if(!/坡底线|坑底|电梯井|坑底标高/u.test(f))continue;let g=[...a.matchAll(/-?(\d+(?:\.\d{1,3})?)(?=[^0-9.]|$)/gu)].map(a=>Math.abs(Number(a[1]))).filter(a=>Number.isFinite(a)&&a>.5&&a<50);if(0===g.length)continue;let h=Math.max(...g);b.push(w({fieldKey:"excavation_depth",label:c.label,value:`${h}m(图纸标注:${a.slice(0,60)})`,sourceType:"structured_fact",sourceName:d.sourceFile||d.sourceRef?.sectionTitle||"drawing_annotation"},c))}return b}(a.facts),...function(a,b="generated_markdown"){let c=[];for(let d of a.split(/\r?\n/u)){if(!/^\|.*\|\s*$/u.test(d)||/^\|\s*:?-{3,}:?/u.test(d))continue;let a=d.trim().replace(/^\|/u,"").replace(/\|$/u,"").split("|").map(a=>a.replace(/\*\*/gu,"").trim());if(a.length<2)continue;let e="序号"===a[0]&&a.length>=3?a[1]:a[0],f="序号"===a[0]&&a.length>=3?a[2]:a[1],g="序号"===a[0]&&a.length>=4?a[3]:a[2],h=s.find(a=>a.aliases.some(a=>e.includes(a))||a.label===e);!h||!f||/内容|参数|资料未明确|系统暂未确认|暂未从知识库确认/u.test(f)||c.push(w({fieldKey:h.key,label:h.label,value:f,sourceType:"generated_markdown",sourceName:g||b},h))}return c}(a.markdown||"")])}function C(a){return({user:100,addendum:96,contract:90,tender:85,boq:75,drawing:70,standard:60,evidence:55,structured_fact:50,projectGraph:40,generated_markdown:30,derived:20,unknown:10})[a]}function D(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}let E=new Map;function F(a){let b=E.get(a);return b||(b=RegExp(a,"u"),E.set(a,b)),b}function G(a,b){let c=`${a||""} ${b||""}`;return/补疑|答疑|澄清|补充|更正|修改/u.test(c)?95:/合同/u.test(c)?90:/招标文件|招标公告|前附表|投标人须知|需求书/u.test(c)?85:/清单|工程量|BOQ|编制说明/u.test(c)?75:/图纸|设计/u.test(c)?70:50}function H(a,b=(0,r.bC)()){let c=[];for(let d of["area","cost","duration","floors","parkingSpaces"]){let f=new Set,g=[];for(let c of a){let a=(0,e.lG)(c.value),h=G(c.sourceFile,c.roleId);for(let e of function(a,b,c,d){let e=[],f="area"===b?/(?<![地上地下门卫室值班室配电室配电房泵房水泵房锅炉房公厕车库车棚岗亭传达室警卫室样板房售楼处门房])总?建筑面积|建设规模/u:"cost"===b?/合同估算价|合同估算价格|投资估算|最高投标限价|招标控制价|工程总投资|总投资|工程造价/u:"floors"===b?/总?层数|建筑层数|地上层数|地下层数|楼层数/u:"parkingSpaces"===b?/总?车位|停车位|机动车位|车位数/u:/计划工期|合同工期|总工期|施工周期/u,g="floors"===b||"parkingSpaces"===b?"\\d+(?:[.,]\\d+)?":"\\d{2,}(?:[.,]\\d+)?",h=RegExp(`(?:${f.source})(?:[^0-9\\n]{0,14}?)(${g})\\s*${"area"===b?"(万?㎡|万?m\xb2|万?m2|万?平方米)":"cost"===b?"(万元|亿元|万?元)":"floors"===b?"(层)":"parkingSpaces"===b?"(个|个车位|个停车位)":"(日历天|天|个月|月)"}`,"giu"),i=RegExp(g,"u");for(let g of a.matchAll(h)){let h,j=g[0].match(f),k=j?.[0]||"",l=g[1].replace(/[,,]/gu,"").trim(),m=(g[2]||"").trim();if(!k||!l||!i.test(l))continue;let n=(g.index??0)+(j?.index??0),o=(g.index??0)+g[0].indexOf(g[1]),p=o-(n+k.length),q=a.slice(n+k.length,o);if("area"===b&&/占地|用地/u.test(q))continue;let r=function(a,b,c,d,e,f){let g=a.slice(Math.max(0,b-10),b),h=a.slice(b+c,d),i=`${g}${h}`,{addendumSource:j,amendmentContext:k,thresholdComparison:l,aspirationalPrefix:m}=f.factGovernance;return F(j).test(e||"")&&F(k).test(i)?"amendment":F(l).test(i)?"threshold":F(m).test(g)?"aspirational":"ontological"}(a,n,k.length,o,c,d);if("threshold"!==r&&"aspirational"!==r){if("duration"===b||"floors"===b||"parkingSpaces"===b)h=`${l}|${m}`;else{let a=+!!/万/u.test(m),b=Number(l)*(a?1e4:1);if(!Number.isFinite(b))continue;h=String(/亿元/u.test(m)?1e8*b:/万元/u.test(m)?1e4*b:b)}e.push({scope:k,value:l,unit:m,compareKey:h,contextClass:r,anchorScore:(p<=3?3:p<=9?2:1)+("ontological"===r||"amendment"===r?2:1),gapLength:p})}}return e}(a,d,c.sourceFile,b)){let a=`${c.sourceFile||""}|${e.scope}|${e.compareKey}`;f.has(a)||(f.add(a),g.push({...e,sourceFile:c.sourceFile,priority:h}))}}if(!(g.length<2))for(let[a,e]of g.reduce((a,b)=>{let c=b.scope.replace(/^总/u,""),d=a.get(c)||[];return d.push(b),a.set(c,d),a},new Map)){let f;if(new Set(e.map(a=>a.compareKey)).size<2||new Set(e.map(a=>a.sourceFile).filter(Boolean)).size<2)continue;let g=Math.max(...e.map(a=>a.priority)),h=e.filter(a=>a.priority===g),i=Math.max(...h.map(a=>a.anchorScore)),j=h.filter(a=>a.anchorScore===i),k=1===new Set(j.map(a=>a.compareKey)).size?j[0]:void 0;if(k){let a=k.gapLength>b.factGovernance.weakAnchorGapThreshold;f="amendment"===k.contextClass?a?"medium":"high":a?"low":"medium"}c.push({kind:d,scope:`${a}(${"area"===d?"面积":"cost"===d?"金额":"floors"===d?"层数":"parkingSpaces"===d?"车位数":"工期"}口径)`,values:[...new Map(e.map(a=>[`${a.value}${a.unit}|${a.sourceFile||""}`,{value:a.value,unit:a.unit,sourceFile:a.sourceFile,priority:a.priority}])).values()],resolution:k?`${k.value}${k.unit}`:void 0,...f?{confidence:f}:{}})}}return c}function I(a){let b=new Map;for(let c of a){if(!c.resolution||"low"===c.confidence||b.has(c.kind))continue;let a=c.values.find(a=>`${a.value}${a.unit}`===c.resolution),d=a?a.value.replace(/[,,]/gu,""):"",e=c.values.filter(a=>`${a.value}${a.unit}`!==c.resolution).map(a=>({value:a.value.replace(/[,,]/gu,""),unit:a.unit}));d&&0!==e.length&&b.set(c.kind,{winnerNum:d,losers:e})}return b}function J(a,b){return b?.length?a.map(a=>{let c=function(a,b){let c=a;for(let{winnerNum:a,losers:d}of I(b).values())for(let b of d)b.unit&&c.includes(`${b.value}${b.unit}`)?c=c.split(`${b.value}${b.unit}`).join(`${a}${b.unit}`):c.includes(b.value)&&(c=c.split(b.value).join(a));return c}(a.content,b);return c===a.content?a:{...a,content:c}}):a}function K(a,b){let c=I(b);if(0===c.size)return a;let d={area:/建设规模|工程规模|建筑面积|用地面积|占地面积|project_scale|scale/u,cost:/合同估算|投资估算|最高投标限价|招标控制价|总投资|工程造价|project_cost|cost|price|amount/u,duration:/计划工期|合同工期|总工期|施工周期|duration|schedule/u,floors:/总层数|建筑层数|地上层数|地下层数|楼层数|project_floors|floors/u,parkingSpaces:/总车位|停车位|机动车位|车位数|project_parking|parking/u};return a.map(a=>{let b=[...c.keys()].find(b=>d[b].test(a.key)||d[b].test(a.value));if(!b)return a;let{winnerNum:e,losers:f}=c.get(b),g=a.value,h=!1;for(let a of f)a.unit&&g.includes(`${a.value}${a.unit}`)?(g=g.split(`${a.value}${a.unit}`).join(`${e}${a.unit}`),h=!0):g.includes(a.value)&&(g=g.split(a.value).join(e),h=!0);return h?{...a,value:g}:a})}function L(a){var b;let c=(0,e.c6)({version:"canonical-facts-v7",rulesHash:(0,r.TG)(a.projectRoot),requirement:a.requirement||"",templateId:a.templateId||"",requiredKeys:a.requiredKeys||[],facts:a.facts.map(a=>({key:a.key,fieldId:a.fieldId,fieldName:a.fieldName,value:a.value,sourceFile:a.sourceFile,roleId:a.roleId,confidence:a.confidence})).sort((a,b)=>`${a.sourceFile}${a.key}${a.value}`.localeCompare(`${b.sourceFile}${b.key}${b.value}`)),graphHash:a.projectGraph?(0,e.c6)(a.projectGraph):"",markdownHash:a.markdown?(0,e.c6)(a.markdown.slice(0,2e4)):""}),d=function(a,b){let c=D(a);if(c)try{let a=JSON.parse(o.readFileSync(p.join(c,`canonical-facts-${b}.json`),"utf8"));return a&&a.byKey&&Array.isArray(a.scopeConflicts)?a:void 0}catch{return}}(a.projectRoot,c);if(d)return d;let f=a.facts||[],g=H(f,(0,r.bC)(a.projectRoot));for(let a of g.map(a=>({caseType:"scope_conflict_arbitration",recordedAt:Date.now(),kind:a.kind,scope:a.scope,values:a.values.map(a=>({value:a.value,unit:a.unit,sourceFile:a.sourceFile,priority:a.priority})),winner:a.resolution,confidence:a.confidence,manualReviewRequired:!a.resolution})))try{o.appendFileSync(p.join(function(){let a=p.join(q.homedir(),".customize-agent","cache","document-workflow","case-log");return o.mkdirSync(a,{recursive:!0}),a}(),"arbitration-cases.jsonl"),`${JSON.stringify(a)}
2
2
  `,"utf-8")}catch{}let h=K(f,g),i=B({facts:h,markdown:a.markdown}),j={};for(let[a,b]of i.entries())j[a]=function(a){let b=a.source.includes("generated_markdown")?"generated_markdown":a.source.includes("evidence")?"evidence":"structured_fact";return{key:a.fieldKey,label:a.label,value:a.value,normalizedValue:(0,n.de)(a.value),sourceType:b,sourceFile:a.source,confidence:a.confidence,priority:C(b),locked:C(b)>=80,selectedReason:a.selectedReason}}(b);if(j.project_scale){let a=j.project_scale;if(/占地|用地/u.test(a.value)&&/建筑面积/u.test(a.value)){let b=a.value.search(/(?:单体)?总?建筑面积/u);if(b>0){let c=(0,n.wj)(a.value.slice(b)).trim();j.project_scale={...a,value:c,normalizedValue:(0,n.de)(c),selectedReason:`${a.selectedReason};混合口径已净化,scale 只取建筑面积段`}}}}let k=[];for(let a of[{key:"project_name",label:"项目名称",pattern:/项目名称|工程名称|招标项目名称|project_name/u,bucket:"projectIdentity",valueType:"text"},{key:"project_code",label:"项目编号",pattern:/项目编号|招标项目编号|project_code/u,bucket:"projectIdentity",valueType:"identifier"},{key:"owner",label:"招标人",pattern:/招标人|建设单位|发包人|owner/u,bucket:"projectIdentity",valueType:"organization"},{key:"project_location",label:"建设地点",pattern:/建设地点|实施地点|project_location/u,bucket:"projectIdentity",valueType:"location"},{key:"project_scale",label:"建设规模",pattern:/建设规模|工程规模|project_scale/u,bucket:"projectScope",valueType:"scale"},{key:"construction_scope",label:"施工范围",pattern:/施工范围|招标范围|工程范围/u,bucket:"projectScope",valueType:"text"},{key:"duration",label:"计划工期",pattern:/计划工期|合同工期|总工期|schedule_requirement|duration/u,bucket:"schedule",valueType:"duration"},{key:"quality_target",label:"质量目标",pattern:/质量标准|质量目标|quality_standard/u,bucket:"quality",valueType:"standard"}]){let b=function(a,b,c,d,f){let g=s.find(a=>a.key===b);return a.filter(a=>d.test(`${a.fieldId||""}${a.key||""}${a.fieldName||""}`)).map(a=>(function(a,b,c){let d=(0,e.lG)(a.value),f=function(a){let b=`${a.sourceFile||""} ${a.sourceRef?.sectionTitle||""} ${a.roleId||""}`;return/补疑|答疑|澄清|补充|更正|修改/u.test(b)?"addendum":/合同/u.test(b)?"contract":/招标|公告|前附表|需求书/u.test(b)?"tender":/清单|工程量|BOQ|报价/u.test(b)?"boq":/图纸|设计|CAD|DWG/u.test(b)?"drawing":/规范|标准/u.test(b)?"standard":"structured_fact"}(a);return{key:b,label:c,value:d,normalizedValue:(0,n.de)(d),sourceType:f,sourceFile:a.sourceFile,sourceRef:a.sourceRef?.sectionTitle,confidence:(()=>{let b=Number(a.confidence)||.5;return Math.round(100*("rule"===a.processingType&&b>1?.5:Math.min(b,.99)))})(),priority:C(f),locked:C(f)>=80,selectedReason:"按资料来源优先级和字段置信度决策"}})(a,b,c)).filter(a=>a.value&&!/资料未明确|系统暂未确认/u.test(a.value)).filter(a=>{let d=f??g?.valueType;return!d||"text"===d||!v(a.value,{key:b,label:c,aliases:[],valueType:d}).rejected}).sort((a,b)=>b.priority-a.priority||b.confidence-a.confidence||a.value.length-b.value.length)}(h,a.key,a.label,a.pattern,a.valueType);!j[a.key]&&b.length>0&&(j[a.key]=b[0]);let c=function(a,b,c){let d=[...new Map(c.map(a=>[a.normalizedValue,a])).values()];if(d.length<=1)return;let e=Math.max(...d.map(a=>a.priority)),f=d.filter(a=>a.priority===e);return{key:a,label:b,values:d.map(a=>({value:a.value,sourceFile:a.sourceFile,priority:a.priority,confidence:a.confidence})),decision:1===f.length?"highest_priority_selected":"manual_review_required"}}(a.key,a.label,b);c&&k.push(c)}let l=(b=a.projectGraph)?[...(b.resources||[]).map(a=>({key:`resource_${a.type}_${a.name}`,label:"equipment"===a.type?"机械设备":"labor"===a.type?"劳动力":"材料资源",value:[a.name,a.spec,a.quantity,a.unit].filter(Boolean).join(" "),normalizedValue:(0,n.de)([a.name,a.spec,a.quantity,a.unit].filter(Boolean).join(" ")),sourceType:"projectGraph",sourceFile:a.sourceFiles?.[0],confidence:55,priority:C("projectGraph"),locked:!1,selectedReason:"来自项目图谱资源节点"})).filter(a=>a.value),...(b.risks||[]).map(a=>({key:`risk_${a.risk}`,label:"风险源",value:[a.risk,a.level,a.mitigation].filter(Boolean).join(" "),normalizedValue:(0,n.de)([a.risk,a.level,a.mitigation].filter(Boolean).join(" ")),sourceType:"projectGraph",sourceFile:a.sourceFiles?.[0],confidence:55,priority:C("projectGraph"),locked:!1,selectedReason:"来自项目图谱风险节点"})).filter(a=>a.value)]:[],m=l.filter(a=>/resource_/u.test(a.key)),t=l.filter(a=>/risk_/u.test(a.key));for(let a of l)j[a.key]||(j[a.key]=a);let u=(a.requiredKeys||[]).filter(a=>!j[a]).map(a=>({key:a,label:s.find(b=>b.key===a)?.label||a,reason:"未从用户输入、招标资料、清单、图纸或项目图谱中确认该事实"})),w={projectIdentity:{projectName:j.project_name,projectCode:j.project_code,owner:j.owner,location:j.project_location},projectScope:{scale:j.project_scale,constructionScope:j.construction_scope},schedule:{duration:j.duration||j.schedule_requirement},quality:{target:j.quality_target||j.quality_standard},safety:{risks:t},resources:{resources:m},environment:{},constraints:{},byKey:j,conflicts:k,gaps:u,scopeConflicts:g},x=D(a.projectRoot);return x&&o.writeFileSync(p.join(x,`canonical-facts-${c}.json`),JSON.stringify(w,null,2)),w}var M=c(13145);let N=["项目名称 项目编号 招标人 项目概况与招标范围 建设地点 建设规模 计划工期 质量标准 合同估算价","计划工期 合同工期 总工期 日历天","合同估算价 合同估算价格 投资估算 最高投标限价 招标控制价","质量标准 质量目标 合格","建设地点 建设规模 招标范围"];function O(a){let b=(0,n.de)(a),c=0;return/项目名称|工程名称|招标项目名称|项目编号|招标项目编号|招标人|建设单位|发包人/u.test(b)&&(c+=4),/计划工期|合同工期|总工期|\d+(?:\.\d+)?\s*(?:日历天|天|个月|月|年)/u.test(b)&&(c+=6),/合同估算价|投资估算|最高投标限价|招标控制价|\d+(?:\.\d+)?\s*(?:万元|元)/u.test(b)&&(c+=5),/质量标准|质量目标|合格|优良/u.test(b)&&(c+=4),/建设地点|建设规模|招标范围|项目概况与招标范围/u.test(b)&&(c+=4),/工程量|清单|图纸|设计说明|施工范围|施工内容|材料|设备|工艺|验收|复试|检测/u.test(b)&&(c+=3),/保证金账户|开户行|开户名称|收款账户|汇款|转账账户|电子交易系统|公共资源交易|开标时间|开标地点|评标委员会|评标办法/u.test(b)&&(c-=4),c}function P(a){return a.filter(a=>/项目名称|工程名称|项目编号|招标项目编号|招标人|建设单位|发包人|建设地点|建设规模|招标范围|计划工期|合同工期|周期要求|质量标准|合同估算|投资估算|最高投标限价|招标控制价/u.test(`${a.key||""}${a.fieldName||""}${a.fieldId||""}`))}function Q(a){return(0,n.de)(a).replace(/PDF\s*第\s*\d+(?:\s*[-—至到~~]\s*\d+)?\s*页/giu,"相关资料").replace(/PDF\s*第(?![ \t]*[0-90-9])/giu,"").replace(/(\d)\s+(日)/gu,"$1$2").replace(/[。;;]$/u,"").trim()}let R=/(?:黄山杯|鲁班奖|白玉兰杯|钱江杯|扬子杯|安济杯|长安杯|汾水杯|省优|市优|国优|优质工程|确保[^。;;|,、,\n]{0,10}(?:杯|奖))/u;function S(a,b="",c=b){let d=function(a){let b=new Map;for(let c of a.split(/\r?\n/u)){if(!/^\|.*\|\s*$/u.test(c)||/^\|\s*:?-{3,}:?/u.test(c))continue;let a=c.trim().replace(/^\|/u,"").replace(/\|$/u,"").split("|").map(a=>a.replace(/\*\*/gu,"").trim());if(a.length<2)continue;let d="序号"===a[0]&&a.length>=3?a[1]:a[0],e="序号"===a[0]&&a.length>=3?a[2]:a[1],f="序号"===a[0]&&a.length>=4?a[3]:a[2],g=d.replace(/\/|:|:/gu,"").trim();if(!/项目名称|工程名称|项目编号|招标项目编号|招标人|项目业主|建设单位|发包人|建设地点|建设规模|施工范围|招标范围|计划工期|合同工期|质量标准|合同估算价|合同估算价格|投资估算|最高投标限价|招标控制价/u.test(g))continue;let h=/计划工期|合同工期/u.test(g)?"schedule_requirement":/质量标准/u.test(g)?"quality_standard":/合同估算价|合同估算价格|投资估算|最高投标限价|招标控制价/u.test(g)?"project_investment_estimate":/招标人|项目业主|建设单位|发包人/u.test(g)?"owner":/建设地点/u.test(g)?"project_location":/项目编号|招标项目编号/u.test(g)?"project_code":void 0;!(!e||/内容|参数|资料未明确|系统暂未从知识库确认|项目资料暂未明确/u.test(e))&&(0,n.R7)(h||"project_name",e)&&b.set(g,[Q(e),Q(f||"项目资料")||"项目资料"])}return b}(b),f=B({facts:a,markdown:c}),g=a=>Q((0,e.lG)(a||"")).replace(/\|/gu,"").replace(/\bCOL\d+\b/gu,"").replace(/\s{2,}/gu," ").trim(),h=(a,b)=>{let e=f.get(a);if(e){let b=g(e.value);if(b&&(0,n.R7)(a,b))return[b,e.source||"项目资料"]}let h=function(a,b){for(let[c,d]of a.entries())if(b.some(a=>a.test(c)))return d}(d,b);return h&&(0,n.R7)(a,h[0])?[h[0],h[1]||"项目资料"]:("project_name"===a?(()=>{let a=[/([\u4e00-\u9fa5A-Za-z0-9()()\-—_\s·]+?(?:施工总承包项目|一期项目|学生宿舍一期|学生宿舍项目))/u.exec(c)?.[1],/项目名称[::\s|]+([^|\n。;;]{6,80})/u.exec(c)?.[1]].map(g).filter(a=>a&&(0,n.R7)("project_name",a));return a[0]?[a[0],"项目资料"]:void 0})():void 0)||["",""]},i=[["项目名称",...h("project_name",[/项目名称|工程名称|project_name/u])],["项目编号",...h("project_code",[/项目编号|招标项目编号|project_code/u])],["招标人",...h("owner",[/招标人|项目业主|建设单位|发包人|owner/u])],["建设地点",...h("project_location",[/建设地点|project_location/u])],["建设规模",...h("project_scale",[/建设规模|project_scale/u])],["计划工期",...h("schedule_requirement",[/计划工期|合同工期|周期要求|schedule_requirement/u])],["质量标准",...h("quality_standard",[/质量标准|quality_standard/u])],["合同估算价",...h("project_investment_estimate",[/合同估算|投资估算|最高投标限价|招标控制价|project_investment_estimate/u])]],j=i.find(([a])=>"质量标准"===a);if(j&&j[1]&&!R.test(j[1])){let b=function(a,b){let c=a.filter(a=>/创优|优质优价|奖项|奖惩|award/u.test(`${a.fieldId||""}${a.key||""}${a.fieldName||""}`));if(c.some(a=>{let b=Q((0,e.lG)(a.value||""));return!!b&&/^(?:无|否|不设|未设|无创优|无奖项|不作|不要求|不设创优)$/u.test(b.trim())}))return;let d=[];for(let a of c)d.push(Q((0,e.lG)(a.value||"")));for(let a of(d.push(b),d)){let b=/(?:确保|争创|力争|确保获得)[^。;;|,、,\n]{0,12}(?:杯|奖|优质工程)/u.exec(a);if(!b)continue;let c=b[0].trim();if(c.length>=5&&c.length<=24)return c}}(a,c);b&&!j[1].includes(b)&&(j[1]=`${j[1]},${b}`)}return i.filter(([,a])=>!!a).map(([a,b,c])=>[a,b,c||"项目资料"])}function T(a,b="",c=b){return["**项目基本信息表**","","| 信息项 | 内容 |","|---|---|",...S(a,b,c).map(a=>`| ${a[0]} | ${a[1]} |`)].join("\n")}let U=[/^项目名称$/u,/^工程名称$/u,/^项目编号$/u,/^招标项目编号$/u,/^招标人$/u,/^项目业主$/u,/^建设单位$/u,/^发包人$/u,/^建设地点$/u,/^实施地点$/u,/^建设规模$/u,/^工程规模$/u,/^计划工期$/u,/^合同工期$/u,/^总工期$/u,/^质量标准$/u,/^质量目标$/u,/^合同估算价$/u,/^投资估算$/u,/^最高投标限价$/u,/^招标控制价$/u];function V(a){return U.some(b=>b.test(a))}function W(a){let b=a.replace(/\r?\n/gu,"\n").split("\n"),c=[],d=!1,e=a=>(0,M.Mp)(a).map(a=>a.replace(/\*\*/gu,"").trim()),f=a=>{let b=a.slice(2).map(e).filter(a=>a.length>=2).map(a=>a[0]||""),c=b.filter(V).length;return c>=3&&c>=Math.ceil(.45*b.length)};for(let a=0;a<b.length;){let e=b[a]||"",g=b[a+1]||"";if(/(?:\*\*[^\u000A]*项目基本信息表[^\u000A]*\*\*|####\s+[^\u000A]*项目基本信息表[^\u000A]*|###\s+[^\u000A]*项目基本信息表[^\u000A]*)/u.test(e)){let f=[e];for(a+=1;a<b.length&&!((0,M.VS)(b[a]||"")&&(0,M.vh)(b[a+1]||""))&&""===(b[a]||"").trim();)f.push(b[a]||""),a+=1;if(a<b.length&&(0,M.VS)(b[a]||"")&&(0,M.vh)(b[a+1]||""))for(f.push(b[a]||"",b[a+1]||""),a+=2;a<b.length&&(0,M.VS)(b[a]||"");)f.push(b[a]||""),a+=1;d||(d=!0,c.push(...f));continue}if(/^###\s+(?:\d+\.\d+\s+)?(?:项目基本信息|工程概况|项目概况)\s*$/u.test(e)){let g=[e];for(a+=1;a<b.length&&!((0,M.VS)(b[a]||"")&&(0,M.vh)(b[a+1]||""))&&!/^###\s+/u.test(b[a]||"");)g.push(b[a]||""),a+=1;if(a<b.length&&(0,M.VS)(b[a]||"")&&(0,M.vh)(b[a+1]||"")){let h=[b[a]||"",b[a+1]||""];for(a+=2;a<b.length&&(0,M.VS)(b[a]||"");)h.push(b[a]||""),a+=1;if(f(h)){if(d){let a=g.filter(a=>a.trim()&&!/^###\s+/u.test(a));a.length&&c.push(e,...a)}else d=!0,c.push(...g,...h);continue}c.push(...g,...h);continue}c.push(...g);continue}if((0,M.VS)(e)&&(0,M.vh)(g)){let h=[e,g];for(a+=2;a<b.length&&(0,M.VS)(b[a]||"");)h.push(b[a]||""),a+=1;if(f(h)){d||(d=!0,c.push(...h));continue}c.push(...h);continue}c.push(e),a+=1}return c.join("\n").replace(/\n{3,}/gu,"\n\n").replace(/\n{1,2}\|\s*信息项\s*\|\s*内容\s*\|\s*\n+(?:该小节围绕[^\n]*\n+)+\|\s*:?-{3,}:?\s*\|\s*:?-{3,}:?\s*\|\s*/gu,"\n\n")}function X(a,b){if(a=((a,b)=>{let c=a.split("\n"),d=[];for(let a=0;a<c.length;a+=1){let e=c[a]||"",f=/^(#{3,5})\s+(.+)$/u.exec(e.trim()),g=f?.[2]?.replace(/^\d+(?:\.\d+)*\s+/u,"").trim()||"";if(f&&b.some(a=>a.test(g))){for(a+=1;a<c.length&&!/^#{2,5}\s+/u.test((c[a]||"").trim());)a+=1;a-=1;continue}d.push(e)}return d.join("\n")})(a,[/^工程概况一览表$/u,/^招标文件?评分.*响应索引表$/u,/^招标评分项响应索引表$/u]).replace(/\*\*(?:工程概况一览表|招标文件?评分.*响应索引表|招标评分项响应索引表)\*\*[\s\S]*?(?=\n{2,}#{2,5}\s+|\n{2,}(?:[^|\n#]|$)|$)/gu,"").replace(/\n{3,}/gu,"\n\n"),!/项目基本信息|项目概况|工程概况|招标范围/u.test(a))return W((0,M.yk)((0,M.j7)(a)));if(!/\|\s*信息项\s*\|\s*内容\s*\|/u.test(a)&&P(b).length>0){let c=/^(#{3,4}\s+(?:\d+\.\d+\s+)?[^\n]*(?:项目概况|工程概况|项目基本信息|招标范围)[^\n]*\n)/mu.exec(a);if(c?.index||c?.index===0){let d=c.index+c[0].length,e=`${T(b,"",a)}
3
3
 
4
4
  `;a=`${a.slice(0,d)}
@@ -28,21 +28,21 @@ ${a.item.content||""}`),c=`${a.item.filePath}|${a.item.sectionTitle||""}|${b.sli
28
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}
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);async function df(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 dg=c(32434),dh=c(36003);async function di(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,dh.AI)(e,(0,dh.Ym)(e,a.chapter,a.evidence),b),i=(0,dh.uQ)(e,g,h);i&&d.push(`${e}:${i}`)}return d}function dj(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 dk(a){return"string"==typeof a?a:a&&"object"==typeof a&&"message"in a?String(a.message):JSON.stringify(a)}function dl(a){let b=Number(process.env[a]);return Number.isFinite(b)&&b>0?Math.ceil(b):0}async function dm(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("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
- 正文摘要:${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?dl("DOCUMENT_CHAPTER_REVIEW_MAX_CHUNKS")||Math.min(Math.max(2,Math.floor(a.totalChars/a.chapterCount/4e3)),b):"global"===a.phase?dl("DOCUMENT_GLOBAL_REVIEW_MAX_CHUNKS")||Math.min(4,b):dl("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=dj(c,16e3).map((a,b)=>`**第 ${b+1}/${dj(c,16e3).length} 部分**
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
 
35
35
  ${a}`).slice(0,d.chunks),g=(0,bc.y4)("你是专业文档审查专家。检查跨章节数值一致性。每个章节都附带“数值口径清单”(从正文确定性提取的总量口径数字)。只报告确定性矛盾,两类:(1) 两章之间同一口径的数值互相矛盾;(2) 正文数值与项目上下文中的资料口径或裁决口径明确不符。每条冲突必须包含:章节名+冲突数值+正确口径(正确口径必须取自项目上下文中的资料或裁决,不得自行编造)。资料未提供某口径不构成冲突,不得报告;各章表述一致但资料未明确的字段不得报告;各章一致的表述不得报告。只返回 JSON。"),h=(b=a.projectContext||"")?[...new Set(b.split("\n").map(a=>a.trim()).filter(Boolean).filter(a=>/\d/u.test(a)&&a.length<=500).slice(0,120).map(a=>a.length>240?`${a.slice(0,240)}…`:a))].join("\n").slice(0,8e3):"",i=[g,h?`【资料口径基准(冲突判定基准:正确口径必须取自此处,不得自行编造)】
36
36
  ${h}`:""].join("\n\n"),j=[...new Set((await Promise.all(f.map(b=>(0,aA.bb)(i,`${a.promptTexts}
37
37
 
38
38
  ${b}
39
39
 
40
- 返回 JSON:{"issues":[]}`,{maxTokens:1e3,temperature:0,signal:a.signal,diagnostics:a.diagnostics,contextLayers:{l0:i.length,l1:(0,aA.CX)([a.promptTexts]),l3:(0,aA.CX)([b,'\n\n返回 JSON:{"issues":[]}'])},prefixKey:"review-global-consistency"})))).flatMap(a=>Array.isArray(a?.issues)?a.issues:[]).map(dk).filter(Boolean))];return{issues:j,stage:(0,b8.X5)({type:"llm_review",roleId:"global-consistency-review",status:j.length>0?"failed":"success",message:j.length>0?`全局一致性审查完成:发现 ${j.length} 个跨章问题`:"全局一致性审查通过"},{subtitle:"全局一致性审查"})}}var dn=c(18274);let dp=[{pattern:/本小节围绕.+展开,结合绑定项目资料/u,label:"模板化开篇套话"},{pattern:/明确适用范围、控制目标、责任岗位与过程要求/u,label:"泛化目标罗列"},{pattern:/实施前应完成资料核对、技术交底和作业条件确认/u,label:"泛化前置条件"},{pattern:/交底覆盖率按\s*100%?\s*控制/u,label:"空泛交底承诺"},{pattern:/关键问题在\s*24\s*小时内形成整改责任/u,label:"空泛整改时限"},{pattern:/按施工准备→过程实施→检查验收→问题整改→资料归档的闭环组织/u,label:"通用闭环套话"},{pattern:/按作业条件确认→技术交底→过程实施→自检互检→整改复查/u,label:"通用流程套话"},{pattern:/依据本项目已确认资料中的项目边界/u,label:"资料依据套话"},{pattern:/执行日巡查、周复核和节点验收制度/u,label:"泛化巡查制度"},{pattern:/一般问题\s*7\s*日内闭环/u,label:"泛化整改时限"},{pattern:/由项目经理、技术负责人和专职安全员联合复核/u,label:"岗位名单堆砌"},{pattern:/确保与总体施工部署、工期计划和验收要求保持一致/u,label:"原则性呼应"},{pattern:/结合现场实际情况(?:,|,)?合理(?:组织|安排|布置|配置)/u,label:"结合实际套话"},{pattern:/严格(?:执行|落实|按照)国家(?:现行)?(?:有关)?(?:规范|标准|规程)/u,label:"规范泛引用"},{pattern:/做到(?:文明施工|安全生产|质量第一|安全第一)/u,label:"口号式承诺"},{pattern:/(?:确保|保证)工程(?:质量|安全|进度|文明施工)/u,label:"目标口号"},{pattern:/建立(?:健全)?(?:完善)?(?:的)?(?:管理)?体系(?:和|,)?(?:落实|确保|保证)/u,label:"体系空话"}],dq=RegExp(dp.map(a=>`(?:${a.pattern.source})`).join("|"),"u"),dr=["本小节围绕以下内容展开并结合绑定项目资料","明确适用范围控制目标责任岗位与过程要求","实施前应完成资料核对技术交底和作业条件确认","交底覆盖率按100%控制","关键问题在24小时内形成整改责任","按施工准备过程实施检查验收问题整改资料归档的闭环组织","依据本项目已确认资料中的项目边界","执行日巡查周复核和节点验收制度","一般问题7日内闭环","由项目经理技术负责人和专职安全员联合复核","确保与总体施工部署工期计划和验收要求保持一致","结合现场实际情况合理组织安排","严格执行国家现行有关规范标准","做到文明施工安全生产质量第一","确保工程质量和安全进度","建立健全管理体系并落实相关制度"],ds=["每道工序完成后由质检员实测实量并记录数据","混凝土浇筑完成后每天洒水养护不少于两次","每周组织不少于一次的现场安全专项检查"];async function dt(a){return(0,cM.A)({prototypes:[...dr],negativePrototypes:[...ds],lexicalHints:dq,embedDocuments:a})}let du=[/主要分部分项工程施工方案/u,/主要施工方法/u,/主要施工内容/u,/施工方案/u],dv=/(?:建筑面积|面积|总建筑面积)[约]?\s*\d+(?:\.\d+)?\s*(?:㎡|m²)|计划工期\s*\d+|日历天|地上\s*\d+\s*层|框架结构|质量标准[::]?\s*合格/giu;function dw(a){let b=a.split("\n"),c=[],d="",e=[];for(let a of b){let b=/^#{3,4}\s+(.+)$/u.exec(a.trim());b?((d||e.length>0)&&c.push({heading:d,body:e.join("\n")}),d=b[1].trim(),e=[]):e.push(a)}return(d||e.length>0)&&c.push({heading:d,body:e.join("\n")}),c}function dx(a){let b=[],c=new Map;for(let b of a)for(let a of dw(b.content)){let d=a.heading||b.title;for(let e of a.body.replace(/^#{1,6}\s+.*$/gmu,"").replace(/^\s*\|.*\|\s*$/gmu,"").replace(/^\s*[-|]\s*$/gmu,"").replace(/^\s*\[.*?\]\(.*?\)\s*$/gmu,"").split(/\n{1,}/u).map(a=>a.trim()).filter(a=>a.length>=60&&a.length<=400&&!/^\s*[-*]\s+/u.test(a))){let a=e.replace(/[,。,.;;::、()()【】[\]《》“”"'`\s]/gu,"");if(a.length<60)continue;let f=c.get(a)||[];f.some(a=>a.chapter===b.title&&a.section===d)||f.push({chapter:b.title,section:d}),c.set(a,f)}}let d=new Set;for(let[a,e]of c){let c=e.filter((a,b,c)=>c.findIndex(b=>b.chapter===a.chapter&&b.section===a.section)===b);if(c.length<2)continue;let f=c.map(a=>`${a.chapter}::${a.section}`).sort().join("|");if(d.has(f))continue;d.add(f);let g=e[0],h=g?`(如:${g.section} 中「${a.slice(0,30)}…」)`:"";if(b.push({level:c.length>=3?"error":"warning",severity:c.length>=3?"blocker":"warning",message:`发现相同段落出现在 ${c.length} 个不同小节:${c.map(a=>a.section).slice(0,6).join("、")}${h}`,suggestion:"每个小节必须针对其标题写专属内容,不得复制粘贴相同段落;重复小节应合并或删除后重写。"}),b.length>=8)break}return b}async function dy(a,b){let c=[],d=await dt(b);for(let b of a){let a=dw(b.content),e=[];for(let b of a){let a=b.body.split(/[。;;]/u).map(a=>a.trim()).filter(a=>a.length>=12);if(0===a.length)continue;let c=await d(a);a.forEach((a,b)=>{if(c[b])for(let{pattern:b,label:c}of dp)b.test(a)&&!e.includes(c)&&e.push(c)})}e.length>=3?c.push({level:"error",severity:"blocker",message:`${b.title} 存在大量模板化空话(${e.slice(0,6).join("、")})`,suggestion:'删除"本小节围绕…展开""按100%控制"式套话,按"责任岗位+执行动作+量化标准+检查频次+整改时限"重写。'}):e.length>0&&c.push({level:"warning",severity:"warning",message:`${b.title} 存在模板化空话:${e.join("、")}`,suggestion:"替换为具体量化做法;同一小节不得重复出现套话段落。"})}return c}async function dz(a,b){let c=[],d=await (0,c_.J_)(b);for(let e of a){let a=[],f=e.title;for(let b of e.content.split("\n")){let c=b.trim(),d=/^#{3,4}\s+(.+)$/u.exec(c);if(d){f=d[1].trim();continue}if(!(!c||/^\s*(#{1,6}\s+|\||[-*+]\s|>)/u.test(c)))for(let c of b.split(/[。;;]/u)){let b=c.trim();b.length>=12&&a.push({sentence:b,section:f})}}if(0===a.length)continue;let g=a.map(a=>a.sentence),h=await (0,be.Mv)(g,[...c_.vm],b),i=await d(g),j=0,k=new Set;for(let b=0;b<g.length;b+=1)!(c_.vm.some(a=>h(g[b],a)>=be.Eh)||i[b])||k.has(g[b])||j>=12||(k.add(g[b]),j+=1,c.push({chapterId:e.id,chapterTitle:e.title,section:a[b].section,sentence:g[b]}));if(c.length>=60)break}return c.slice(0,60)}function dA(a){let b=[];for(let c of a)for(let a of dw(c.content)){if(!du.some(b=>b.test(a.heading)||b.test(c.title)))continue;let d=new Set(a.body.match(dn.aX)||[]),e=new Set(a.body.match(dv)||[]),f=new Set(a.body.match(dn.LT)||[]),g=a.body.length;if(g<400)continue;let h=d.size/(g/1e3),i=/拆除|清理|清底|清运|弃置|运输|搬运/u.test(a.heading);if(0===d.size){if(f.size>=6){b.push({level:"warning",severity:"warning",message:`${c.title} / ${a.heading} 以设备配置参数为主:设备型号/容量参数 ${f.size} 项,工艺参数待补充`,suggestion:"设备清单型小节保留型号规格参数即可;如补充安装工艺(试验压力、坡度、间距、偏差),应同步写入工艺参数与验收节点。"});continue}if(i){b.push({level:"warning",severity:"warning",message:`${c.title} / ${a.heading} 以工程量与保护措施为主,建议补充拆除深度偏差、保护挑网宽度、警戒距离等参数`,suggestion:"拆除类作业补充拆除厚度偏差(mm)、防护挑网/安全网宽度(m)、警戒区距离(m)等安全与技术参数即可,不强制 mm/MPa 级工艺参数。"});continue}b.push({level:"error",severity:"blocker",message:`${c.title} / ${a.heading} 无工艺参数:全文只有概况性数字,缺乏 mm/MPa/间距/偏差/试验压力等工艺级参数`,suggestion:"必须写入工艺参数(如桩位偏差≤50mm、搭接宽度≥100mm、闭水试验48h),参数来自绑定资料或行业规范值。"})}else h<(i?.3:1.5)&&b.push({level:"warning",severity:"warning",message:`${c.title} / ${a.heading} 工艺参数密度偏低:每千字 ${d.size} 个工艺参数(概况数字 ${e.size} 个)`,suggestion:"增加工艺级参数落位;概况数字(面积、工期、层数)不能替代工艺参数。"})}return b}function dB(a){let b=[];for(let c of a){let a=c.content.split("\n");for(let d=0;d<a.length;d+=1){let f=a[d].trim();if(!/^#{3}\s+[^\n]*(?:主要分部分项工程施工方案|主要施工方法)/u.test(f))continue;let g=a.length;for(let b=d+1;b<a.length;b+=1)if(/^#{2,3}\s+/u.test(a[b].trim())){g=b;break}let h=a.slice(d+1,g).join("\n").split(/^####\s+/gmu).slice(1).map(a=>a.trim()).filter(Boolean);if(0===h.length)continue;let i=h.filter(a=>!(0,e.Jb)(a));i.length>0&&b.push({level:"error",severity:"blocker",message:`${c.title} / ${f.replace(/^#{3}\s+(?:\d+(?:\.\d+)*\s+)?/u,"")} 有 ${i.length}/${h.length} 个分部分项内容要素不全(作业对象与工程量/工序顺序/施工方法至少缺一)`,suggestion:"每个分项方案需覆盖作业对象与工程量、工序安排、施工方法三方面要素,可分段用“施工概况/工艺流程/施工方法”标签组织,也可自然成文;工序顺序表达形式不限(顺序词叙述、编号步骤、列表或箭头链均可)。"})}}return b}async function dC(a,b="",c){return[...dx(a),...await dy(a,c),...dA(a),...dB(a),...function(a,b=""){let c=[],d=(b||a.map(a=>a.content).join("\n\n")).split("\n"),e=0,f=0;for(;f<d.length;){let a=d[f].trim();if(!/^\|.+\|$/u.test(a)){f+=1;continue}let b=[];for(;f<d.length&&/^\|.+\|$/u.test(d[f].trim());)b.push(d[f].trim()),f+=1;if(b.length<3)continue;e+=1;let g=b[0].split("|").length-2,h=b.filter((a,b)=>0!==b&&a.replace(/\|/gu,"").replace(/[\s\-:]/gu,"").length>0),i=h.reduce((a,b)=>a+b.split("|").slice(1,-1).map(a=>(0,M.jG)(a.trim())).filter(a=>""===a||"-"===a||"—"===a||"/"===a).length,0),j=h.length*Math.max(1,g);if(i>0&&i/Math.max(1,j)>=.4&&c.push({level:"warning",severity:"warning",message:`第 ${e} 个表格存在 ${i} 个空单元格(${h.length} 行),表格信息不完整`,suggestion:"表格每一列都必须填写,缺失字段应从资料补齐;无法确认的字段应删除该行而非留空。"}),c.length>=5)break}return c}(a,b)]}function dD(a,b){let c=new Set([b?.projectName,...b?.fingerprint?.projectNames||[]].filter(Boolean));return(b?.contaminationCandidates||[]).reduce((a,b)=>!b||b.length<6||c.has(b)?a:a.replace(RegExp(b.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&"),"gu"),"本项目工程"),a)}let dE=[{words:["编制依据","国家法律法规","地方法规"],basisItem:"本施工组织设计的编制依据包括国家法律法规、地方法规及现行工程建设标准、规范"},{words:["工程量清单","施工图纸","分部分项","项目特征","规格","工程量","图纸设计说明"],basisItem:"- 工程量清单及施工图纸:本项目分部分项工程量清单(项目特征、规格及工程量)与施工图纸设计说明;"},{words:["劳动力计划","主要施工材料","主要施工机械"],basisItem:"- 施工组织设计文件:本工程劳动力计划、主要施工材料与主要施工机械配置计划;"}],dF=["- 招标文件及补疑补遗:本项目招标文件及招标补疑、澄清文件(招标文件与澄清、修正文件不一致的,以澄清、修正文件为准);","- 国家法律法规:《中华人民共和国建筑法》(2019年修正)、《中华人民共和国招标投标法》(2017年修正)、《中华人民共和国安全生产法》(2021年修正)、《中华人民共和国民法典》(2020年)、《建设工程质量管理条例》(国务院令第279号,2019年修订)、《建设工程安全生产管理条例》(国务院令第393号)、《保障农民工工资支付条例》(国务院令第724号);","- 国家/行业/地方现行规范标准:《建筑工程施工质量验收统一标准》(GB 50300-2013)及与本工程各分部分项工程对应的现行施工验收规范、标准与规程;","- 地方法规规章:工程所在地现行地方性法规与政府规章(招标文件引用的地方性法规按其原文列出);","- 企业管理体系:公司质量、环境、职业健康安全管理体系文件及企业施工工艺标准。"],dG=["招标文件及补疑补遗","国家法律法规","现行规范标准","地方法规规章","企业管理体系"];function dH(a,b){let c=(0,cg.t4)(b).filter(b=>!a.includes(b)),d=dG.filter(b=>a.includes(b)).length,e=/编制说明|工程概况|施工准备/u.test(a)||c.includes("编制依据")||c.includes("国家法律法规")||c.includes("地方法规")||a.includes("编制依据"),f=d<3&&e;if(0===c.length&&!f)return a;let g=dE.filter(a=>!f||"编制依据"!==a.words[0]).filter(a=>a.words.some(a=>c.includes(a))).map(a=>a.basisItem);if(0===g.length&&!f)return a;let h=[...f?dF:[],...g],i=f?["**编制依据**:本施工组织设计的编制依据按以下类别列出:",...h].join("\n"):h.join("\n").replace(/;$/u,"。"),j=/^(?:###|####)\s+(?:[\d.]+[\s\u00a0]*)?编制依据$/mu.exec(a)??/^(?:###|####)\s+(?:[\d.]+[\s\u00a0]*)?编制说明(?:与工程概况)?$/mu.exec(a)??/^(?:###|####)\s+(?:[\d.]+[\s\u00a0]*)?(?:工程概况|项目概况)$/mu.exec(a);if(j){let b=a.indexOf("\n",j.index)+1;return`${a.slice(0,b)}${i}
40
+ 返回 JSON:{"issues":[]}`,{maxTokens:1e3,temperature:0,signal:a.signal,diagnostics:a.diagnostics,contextLayers:{l0:i.length,l1:(0,aA.CX)([a.promptTexts]),l3:(0,aA.CX)([b,'\n\n返回 JSON:{"issues":[]}'])},prefixKey:"review-global-consistency"})))).flatMap(a=>Array.isArray(a?.issues)?a.issues:[]).map(dl).filter(Boolean))];return{issues:j,stage:(0,b8.X5)({type:"llm_review",roleId:"global-consistency-review",status:j.length>0?"failed":"success",message:j.length>0?`全局一致性审查完成:发现 ${j.length} 个跨章问题`:"全局一致性审查通过"},{subtitle:"全局一致性审查"})}}var dp=c(18274);let dq=[{pattern:/本小节围绕.+展开,结合绑定项目资料/u,label:"模板化开篇套话"},{pattern:/明确适用范围、控制目标、责任岗位与过程要求/u,label:"泛化目标罗列"},{pattern:/实施前应完成资料核对、技术交底和作业条件确认/u,label:"泛化前置条件"},{pattern:/交底覆盖率按\s*100%?\s*控制/u,label:"空泛交底承诺"},{pattern:/关键问题在\s*24\s*小时内形成整改责任/u,label:"空泛整改时限"},{pattern:/按施工准备→过程实施→检查验收→问题整改→资料归档的闭环组织/u,label:"通用闭环套话"},{pattern:/按作业条件确认→技术交底→过程实施→自检互检→整改复查/u,label:"通用流程套话"},{pattern:/依据本项目已确认资料中的项目边界/u,label:"资料依据套话"},{pattern:/执行日巡查、周复核和节点验收制度/u,label:"泛化巡查制度"},{pattern:/一般问题\s*7\s*日内闭环/u,label:"泛化整改时限"},{pattern:/由项目经理、技术负责人和专职安全员联合复核/u,label:"岗位名单堆砌"},{pattern:/确保与总体施工部署、工期计划和验收要求保持一致/u,label:"原则性呼应"},{pattern:/结合现场实际情况(?:,|,)?合理(?:组织|安排|布置|配置)/u,label:"结合实际套话"},{pattern:/严格(?:执行|落实|按照)国家(?:现行)?(?:有关)?(?:规范|标准|规程)/u,label:"规范泛引用"},{pattern:/做到(?:文明施工|安全生产|质量第一|安全第一)/u,label:"口号式承诺"},{pattern:/(?:确保|保证)工程(?:质量|安全|进度|文明施工)/u,label:"目标口号"},{pattern:/建立(?:健全)?(?:完善)?(?:的)?(?:管理)?体系(?:和|,)?(?:落实|确保|保证)/u,label:"体系空话"}],dr=RegExp(dq.map(a=>`(?:${a.pattern.source})`).join("|"),"u"),ds=["本小节围绕以下内容展开并结合绑定项目资料","明确适用范围控制目标责任岗位与过程要求","实施前应完成资料核对技术交底和作业条件确认","交底覆盖率按100%控制","关键问题在24小时内形成整改责任","按施工准备过程实施检查验收问题整改资料归档的闭环组织","依据本项目已确认资料中的项目边界","执行日巡查周复核和节点验收制度","一般问题7日内闭环","由项目经理技术负责人和专职安全员联合复核","确保与总体施工部署工期计划和验收要求保持一致","结合现场实际情况合理组织安排","严格执行国家现行有关规范标准","做到文明施工安全生产质量第一","确保工程质量和安全进度","建立健全管理体系并落实相关制度"],dt=["每道工序完成后由质检员实测实量并记录数据","混凝土浇筑完成后每天洒水养护不少于两次","每周组织不少于一次的现场安全专项检查"];async function du(a){return(0,cM.A)({prototypes:[...ds],negativePrototypes:[...dt],lexicalHints:dr,embedDocuments:a})}let dv=[/主要分部分项工程施工方案/u,/主要施工方法/u,/主要施工内容/u,/施工方案/u],dw=/(?:建筑面积|面积|总建筑面积)[约]?\s*\d+(?:\.\d+)?\s*(?:㎡|m²)|计划工期\s*\d+|日历天|地上\s*\d+\s*层|框架结构|质量标准[::]?\s*合格/giu;function dx(a){let b=a.split("\n"),c=[],d="",e=[];for(let a of b){let b=/^#{3,4}\s+(.+)$/u.exec(a.trim());b?((d||e.length>0)&&c.push({heading:d,body:e.join("\n")}),d=b[1].trim(),e=[]):e.push(a)}return(d||e.length>0)&&c.push({heading:d,body:e.join("\n")}),c}function dy(a){let b=[],c=new Map;for(let b of a)for(let a of dx(b.content)){let d=a.heading||b.title;for(let e of a.body.replace(/^#{1,6}\s+.*$/gmu,"").replace(/^\s*\|.*\|\s*$/gmu,"").replace(/^\s*[-|]\s*$/gmu,"").replace(/^\s*\[.*?\]\(.*?\)\s*$/gmu,"").split(/\n{1,}/u).map(a=>a.trim()).filter(a=>a.length>=60&&a.length<=400&&!/^\s*[-*]\s+/u.test(a))){let a=e.replace(/[,。,.;;::、()()【】[\]《》“”"'`\s]/gu,"");if(a.length<60)continue;let f=c.get(a)||[];f.some(a=>a.chapter===b.title&&a.section===d)||f.push({chapter:b.title,section:d}),c.set(a,f)}}let d=new Set;for(let[a,e]of c){let c=e.filter((a,b,c)=>c.findIndex(b=>b.chapter===a.chapter&&b.section===a.section)===b);if(c.length<2)continue;let f=c.map(a=>`${a.chapter}::${a.section}`).sort().join("|");if(d.has(f))continue;d.add(f);let g=e[0],h=g?`(如:${g.section} 中「${a.slice(0,30)}…」)`:"";if(b.push({level:c.length>=3?"error":"warning",severity:c.length>=3?"blocker":"warning",message:`发现相同段落出现在 ${c.length} 个不同小节:${c.map(a=>a.section).slice(0,6).join("、")}${h}`,suggestion:"每个小节必须针对其标题写专属内容,不得复制粘贴相同段落;重复小节应合并或删除后重写。"}),b.length>=8)break}return b}async function dz(a,b){let c=[],d=await du(b);for(let b of a){let a=dx(b.content),e=[];for(let b of a){let a=b.body.split(/[。;;]/u).map(a=>a.trim()).filter(a=>a.length>=12);if(0===a.length)continue;let c=await d(a);a.forEach((a,b)=>{if(c[b])for(let{pattern:b,label:c}of dq)b.test(a)&&!e.includes(c)&&e.push(c)})}e.length>=3?c.push({level:"error",severity:"blocker",message:`${b.title} 存在大量模板化空话(${e.slice(0,6).join("、")})`,suggestion:'删除"本小节围绕…展开""按100%控制"式套话,按"责任岗位+执行动作+量化标准+检查频次+整改时限"重写。'}):e.length>0&&c.push({level:"warning",severity:"warning",message:`${b.title} 存在模板化空话:${e.join("、")}`,suggestion:"替换为具体量化做法;同一小节不得重复出现套话段落。"})}return c}async function dA(a,b){let c=[],d=await (0,c_.J_)(b);for(let e of a){let a=[],f=e.title;for(let b of e.content.split("\n")){let c=b.trim(),d=/^#{3,4}\s+(.+)$/u.exec(c);if(d){f=d[1].trim();continue}if(!(!c||/^\s*(#{1,6}\s+|\||[-*+]\s|>)/u.test(c)))for(let c of b.split(/[。;;]/u)){let b=c.trim();b.length>=12&&a.push({sentence:b,section:f})}}if(0===a.length)continue;let g=a.map(a=>a.sentence),h=await (0,be.Mv)(g,[...c_.vm],b),i=await d(g),j=0,k=new Set;for(let b=0;b<g.length;b+=1)!(c_.vm.some(a=>h(g[b],a)>=be.Eh)||i[b])||k.has(g[b])||j>=12||(k.add(g[b]),j+=1,c.push({chapterId:e.id,chapterTitle:e.title,section:a[b].section,sentence:g[b]}));if(c.length>=60)break}return c.slice(0,60)}function dB(a){let b=[];for(let c of a)for(let a of dx(c.content)){if(!dv.some(b=>b.test(a.heading)||b.test(c.title)))continue;let d=new Set(a.body.match(dp.aX)||[]),e=new Set(a.body.match(dw)||[]),f=new Set(a.body.match(dp.LT)||[]),g=a.body.length;if(g<400)continue;let h=d.size/(g/1e3),i=/拆除|清理|清底|清运|弃置|运输|搬运/u.test(a.heading);if(0===d.size){if(f.size>=6){b.push({level:"warning",severity:"warning",message:`${c.title} / ${a.heading} 以设备配置参数为主:设备型号/容量参数 ${f.size} 项,工艺参数待补充`,suggestion:"设备清单型小节保留型号规格参数即可;如补充安装工艺(试验压力、坡度、间距、偏差),应同步写入工艺参数与验收节点。"});continue}if(i){b.push({level:"warning",severity:"warning",message:`${c.title} / ${a.heading} 以工程量与保护措施为主,建议补充拆除深度偏差、保护挑网宽度、警戒距离等参数`,suggestion:"拆除类作业补充拆除厚度偏差(mm)、防护挑网/安全网宽度(m)、警戒区距离(m)等安全与技术参数即可,不强制 mm/MPa 级工艺参数。"});continue}b.push({level:"error",severity:"blocker",message:`${c.title} / ${a.heading} 无工艺参数:全文只有概况性数字,缺乏 mm/MPa/间距/偏差/试验压力等工艺级参数`,suggestion:"必须写入工艺参数(如桩位偏差≤50mm、搭接宽度≥100mm、闭水试验48h),参数来自绑定资料或行业规范值。"})}else h<(i?.3:1.5)&&b.push({level:"warning",severity:"warning",message:`${c.title} / ${a.heading} 工艺参数密度偏低:每千字 ${d.size} 个工艺参数(概况数字 ${e.size} 个)`,suggestion:"增加工艺级参数落位;概况数字(面积、工期、层数)不能替代工艺参数。"})}return b}function dC(a){let b=[];for(let c of a){let a=c.content.split("\n");for(let d=0;d<a.length;d+=1){let f=a[d].trim();if(!/^#{3}\s+[^\n]*(?:主要分部分项工程施工方案|主要施工方法)/u.test(f))continue;let g=a.length;for(let b=d+1;b<a.length;b+=1)if(/^#{2,3}\s+/u.test(a[b].trim())){g=b;break}let h=a.slice(d+1,g).join("\n").split(/^####\s+/gmu).slice(1).map(a=>a.trim()).filter(Boolean);if(0===h.length)continue;let i=h.filter(a=>!(0,e.Jb)(a));i.length>0&&b.push({level:"error",severity:"blocker",message:`${c.title} / ${f.replace(/^#{3}\s+(?:\d+(?:\.\d+)*\s+)?/u,"")} 有 ${i.length}/${h.length} 个分部分项内容要素不全(作业对象与工程量/工序顺序/施工方法至少缺一)`,suggestion:"每个分项方案需覆盖作业对象与工程量、工序安排、施工方法三方面要素,可分段用“施工概况/工艺流程/施工方法”标签组织,也可自然成文;工序顺序表达形式不限(顺序词叙述、编号步骤、列表或箭头链均可)。"})}}return b}async function dD(a,b="",c){return[...dy(a),...await dz(a,c),...dB(a),...dC(a),...function(a,b=""){let c=[],d=(b||a.map(a=>a.content).join("\n\n")).split("\n"),e=0,f=0;for(;f<d.length;){let a=d[f].trim();if(!/^\|.+\|$/u.test(a)){f+=1;continue}let b=[];for(;f<d.length&&/^\|.+\|$/u.test(d[f].trim());)b.push(d[f].trim()),f+=1;if(b.length<3)continue;e+=1;let g=b[0].split("|").length-2,h=b.filter((a,b)=>0!==b&&a.replace(/\|/gu,"").replace(/[\s\-:]/gu,"").length>0),i=h.reduce((a,b)=>a+b.split("|").slice(1,-1).map(a=>(0,M.jG)(a.trim())).filter(a=>""===a||"-"===a||"—"===a||"/"===a).length,0),j=h.length*Math.max(1,g);if(i>0&&i/Math.max(1,j)>=.4&&c.push({level:"warning",severity:"warning",message:`第 ${e} 个表格存在 ${i} 个空单元格(${h.length} 行),表格信息不完整`,suggestion:"表格每一列都必须填写,缺失字段应从资料补齐;无法确认的字段应删除该行而非留空。"}),c.length>=5)break}return c}(a,b)]}function dE(a,b){let c=new Set([b?.projectName,...b?.fingerprint?.projectNames||[]].filter(Boolean));return(b?.contaminationCandidates||[]).reduce((a,b)=>!b||b.length<6||c.has(b)?a:a.replace(RegExp(b.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&"),"gu"),"本项目工程"),a)}let dF=[{words:["编制依据","国家法律法规","地方法规"],basisItem:"本施工组织设计的编制依据包括国家法律法规、地方法规及现行工程建设标准、规范"},{words:["工程量清单","施工图纸","分部分项","项目特征","规格","工程量","图纸设计说明"],basisItem:"- 工程量清单及施工图纸:本项目分部分项工程量清单(项目特征、规格及工程量)与施工图纸设计说明;"},{words:["劳动力计划","主要施工材料","主要施工机械"],basisItem:"- 施工组织设计文件:本工程劳动力计划、主要施工材料与主要施工机械配置计划;"}],dG=["- 招标文件及补疑补遗:本项目招标文件及招标补疑、澄清文件(招标文件与澄清、修正文件不一致的,以澄清、修正文件为准);","- 国家法律法规:《中华人民共和国建筑法》(2019年修正)、《中华人民共和国招标投标法》(2017年修正)、《中华人民共和国安全生产法》(2021年修正)、《中华人民共和国民法典》(2020年)、《建设工程质量管理条例》(国务院令第279号,2019年修订)、《建设工程安全生产管理条例》(国务院令第393号)、《保障农民工工资支付条例》(国务院令第724号);","- 国家/行业/地方现行规范标准:《建筑工程施工质量验收统一标准》(GB 50300-2013)及与本工程各分部分项工程对应的现行施工验收规范、标准与规程;","- 地方法规规章:工程所在地现行地方性法规与政府规章(招标文件引用的地方性法规按其原文列出);","- 企业管理体系:公司质量、环境、职业健康安全管理体系文件及企业施工工艺标准。"],dH=["招标文件及补疑补遗","国家法律法规","现行规范标准","地方法规规章","企业管理体系"];function dI(a,b){let c=(0,cg.t4)(b).filter(b=>!a.includes(b)),d=dH.filter(b=>a.includes(b)).length,e=/编制说明|工程概况|施工准备/u.test(a)||c.includes("编制依据")||c.includes("国家法律法规")||c.includes("地方法规")||a.includes("编制依据"),f=d<3&&e;if(0===c.length&&!f)return a;let g=dF.filter(a=>!f||"编制依据"!==a.words[0]).filter(a=>a.words.some(a=>c.includes(a))).map(a=>a.basisItem);if(0===g.length&&!f)return a;let h=[...f?dG:[],...g],i=f?["**编制依据**:本施工组织设计的编制依据按以下类别列出:",...h].join("\n"):h.join("\n").replace(/;$/u,"。"),j=/^(?:###|####)\s+(?:[\d.]+[\s\u00a0]*)?编制依据$/mu.exec(a)??/^(?:###|####)\s+(?:[\d.]+[\s\u00a0]*)?编制说明(?:与工程概况)?$/mu.exec(a)??/^(?:###|####)\s+(?:[\d.]+[\s\u00a0]*)?(?:工程概况|项目概况)$/mu.exec(a);if(j){let b=a.indexOf("\n",j.index)+1;return`${a.slice(0,b)}${i}
41
41
 
42
42
  ${a.slice(b)}`}return`${a.replace(/\s+$/u,"")}
43
43
 
44
- ${i}`}async function dI(a){let{documentSpec:b,validationIssues:c,factsModel:d,finalChapterDrafts:f,finalMarkdown:g,template:i,promptBindings:j,promptDocumentRules:k,projectMaterialSummary:l,domainProfile:m,structuredFacts:n,documentBudget:o,scopeConflicts:p,evaluationCriteriaItems:q,effectiveChapters:r,tenderRequirements:s,requirementsSimilarity:t,factTokenScopeClassifier:u,professionalDepthClassifier:v,blueprintData:w}=a;return dc(b4("spec-gate-rules",()=>(0,cg.kQ)(b,c,d,f,g,i.projectBindings||[],j)),b4("auto-spec-validation",()=>(function(a){let b=[],c=a.markdown||"";for(let e of a.spec.factFields.filter(a=>a.required)){var d;!((d=e.name).length<4||ca(d))&&/\d|GB|JGJ|C\d|HRB|DN|mm|MPa|kPa|工期|质量|安全|项目名称|工程名称|招标人|建设地点|建筑面积|结构形式|层数/u.test(d)&&!cc(c,e.name)&&b.push({level:"info",message:`正文可能未显式覆盖“${e.name}”`,suggestion:"建议检查对应章节是否已自然表达该事实。"})}let e=a.summary.facts.projectName;!e||"当前知识库项目"===e||ca(e)||cc(c,e)||b.push({level:"warning",message:"正文未明显体现关键对象名称",suggestion:"建议在概况、背景或首页标题中体现当前文档的关键对象名称。"});let f=a.summary.facts.documentNo;for(let a of(f&&!c.includes(f)&&b.push({level:"info",message:"正文未体现文档/任务编号",suggestion:"如文档需要编号,请在概况、背景或首页信息中补充。"}),["知识库证据","资料类型","提示词角色","文档规范包","规范包","后台自动规范","后台优化建议","基础事实候选","材料未提供","未检索到"]))c.includes(a)&&b.push({level:"error",message:`正文包含后台流程话术:${a}`,suggestion:"请重新生成或在审查阶段删除后台流程描述。"});return b})({markdown:g,spec:b,summary:l})),b4("fact-consistency",()=>(function(a){let b=a.profile||cd.p4,c=[],d=new Map;for(let c of a.facts){let a=c.fieldName||c.key;a&&function(a,b){let c=(0,cd.oC)(b,a);return c?"single"===c.cardinality&&"allow_multiple"!==c.conflictPolicy&&"ignore"!==c.conflictPolicy:/项目名称|工程名称|招标人|建设地点|建筑面积|结构形式|层数|工期|质量标准|合同价格形式|绿色建筑等级|投标有效期|质保期/u.test(a)}(a,b)&&cf(String(c.value),b)&&d.set(a,[...d.get(a)||[],{value:String(c.value),source:c.sourceFile}])}for(let[a,e]of d){let d=new Map;for(let a of e){let c=cf(a.value,b);c&&d.set(c,[...d.get(c)||[],a])}if(d.size>1){let b=[...d.values()].map(a=>`${a[0].value}(${a.map(a=>a.source).filter(Boolean).join("、")||"未知来源"})`).join(" vs ");c.push({level:"error",message:`事实一致性冲突:${a} 存在多个值:${b}`,suggestion:"请确认当前绑定材料组,或在模板绑定中只绑定当前文档所需材料。"})}}let e=a.summary.facts.projectName;if(e&&"当前知识库项目"!==e&&!/--|延期到|资料|附件|扫描|目录|汇总|打包|备份|招标工程量清单封面|招标工程量清单扉页|工程量清单表|清单封面|清单扉页|\d{1,2}\.\d{1,2}/u.test(e)){let b=ce(a.markdown),d=[e,...a.summary.fingerprint.projectNames].flatMap(a=>[a,a.replace(/^\d+(?:\.\d+)?[^\u4e00-\u9fa5]*/u,""),a.replace(/\([^)]*\)|([^)]*)/gu,"")]).map(a=>ce(a)).filter(a=>a.length>=4),f=d.filter(a=>a.length>=8),g=d.filter(a=>a.length<8),h=f.some(a=>b.includes(a)||a.length>=12&&b.includes(a.slice(0,Math.max(8,Math.floor(.72*a.length))))),i=g.some(a=>b.includes(a));(f.length>0?h:!(g.length>0)||i)||c.push({level:"warning",message:`正文未包含当前对象名称:${e}`,suggestion:"请确认标题、概况或背景信息是否已体现当前对象名称。"})}return c})({markdown:g,facts:n,summary:l,profile:m})),b4("project-contamination",()=>(function(a,b){let c=[],d=new Set([b.projectName,...b.fingerprint.projectNames].filter(Boolean));for(let e of b.contaminationCandidates)e.length>=6&&!d.has(e)&&a.replace(/\s+/gu,"").includes(e.replace(/\s+/gu,""))&&c.push({level:"error",message:`正文疑似混入其他对象名称:${e}`,suggestion:"请检查绑定材料选择、模板绑定文件和知识库证据范围。"});let e=b.fingerprint.documentNos,f=a.match(/\b\d{4}[A-Z]{2,}\d{4,}\b/gu)?.find(a=>!e.includes(a));return f&&e.length>0&&c.push({level:"error",message:`正文疑似混入其他文档编号:${f}`,suggestion:"请重新生成并检查是否召回了其他绑定材料。"}),c})(g,l)),b4("project-basic-placeholder",()=>0!==P(n).length&&/资料未明确|系统暂未从知识库确认|项目资料暂未明确/u.test(g)?["计划工期","合同工期","质量标准","合同估算价","合同估算价格","建设地点","建设规模"].filter(a=>RegExp(`${a}[^
45
- |。;;]{0,40}(?:资料未明确|系统暂未从知识库确认|项目资料暂未明确)`,"u").test(g)).map(a=>({level:"error",message:`${a} 已抽取到项目资料事实但正文仍显示暂未明确`,suggestion:"请优先使用项目基础事实卡片中的资料原值,不得用占位表达覆盖已确认事实。"})):[]),await b4("standard-final",()=>cZ({markdown:g,chapters:f,factsModel:d,template:i,promptBindings:j,promptDocumentRules:k,scopeConflicts:p,evaluationCriteriaItems:q,effectiveChapters:r,tenderRequirements:s,requirementsSimilarity:t,factTokenScopeClassifier:u,professionalDepthClassifier:v,blueprintData:w})),b4("fact-coverage",()=>ai(g,[...n,...d.preciseFacts],{maxIssues:30}).map(a=>({...a,level:"warning",severity:"warning",suggestion:"建议后续优化事实自然落位;导出阶段不因未落位的引用型或可优化事实阻断。"}))),b4("page-target",()=>(0,h.PE)(i.generationSettings||i.exportSettings,g).filter(a=>!(o.minPages&&/低于目标页数/u.test(a.message)))),b4("document-budget",()=>(0,h.ty)(o,g)),b4("planned-structure",()=>(0,bc.UG)(g,i)),b4("formal-text-gate",()=>(0,dg.IA)(g)),await b4("internal-terminology-anchor",()=>(0,bd.WT)(g)),b4("heading-uncovered-engineering-items",()=>(0,cg.j9)(g)),b4("writer-missing-section",()=>g.includes("WRITER_MISSING_SECTION")||g.includes("Writer 未完成")?[{level:"error",severity:"blocker",category:"structure",owner:"system",message:"最终正文仍包含未完成小节标记",suggestion:"必须重新补写对应小节并删除 WRITER_MISSING_SECTION/Writer 未完成。"}]:[]),b4("critical-section-depth",()=>(function(a){let b=[{title:"项目特点、重点、难点分析",minChars:1800},{title:"项目主要施工内容",minChars:2200},{title:"主要分部分项工程施工方案",minChars:1200,blockerMinChars:800},{title:"主要施工方法",minChars:2200},{title:"危大工程专项施工方案审批流程",minChars:500,blockerMinChars:250},{title:"原材料进场复试与见证取样",minChars:600,blockerMinChars:300}],c=[];for(let d of a)for(let a of b){let b=(0,e.Xl)(d.content,a.title)||(0,e.Xl)(d.content,a.title,{fuzzy:!0}),f=(0,h.V7)(b);if(!b||f>=a.minChars)continue;let g=function(a){let b=[{title:"项目特点、重点、难点分析",minChars:1800},{title:"项目主要施工内容",minChars:2200},{title:"主要分部分项工程施工方案",minChars:1200,blockerMinChars:800},{title:"主要施工方法",minChars:2200},{title:"危大工程专项施工方案审批流程",minChars:500,blockerMinChars:250},{title:"原材料进场复试与见证取样",minChars:600,blockerMinChars:300}].find(b=>b.title===a);if(!b)return 0;let c=b.blockerMinChars||Math.floor(.8*b.minChars),d=(0,aj.ap)(a);return Math.min(c,d>0?d:c)}(a.title);f>=g?c.push({level:"warning",severity:"warning",message:`${d.title} ${a.title} 正文深度接近目标:当前 ${f} 字,目标 ${a.minChars} 字`,suggestion:"已达到可交付深度,建议后续按项目数据继续优化扩写。"}):c.push({level:"error",severity:"blocker",message:`${d.title} ${a.title} 正文不足:当前 ${f} 字,要求不少于 ${g} 字`,suggestion:"关键小节必须补足项目数据、重点难点与施工内容对应关系后方可导出。"})}return c})(f)),b4("critical-section-fact-density",()=>(function(a){let b=[{title:"项目特点、重点、难点分析",minNumericFacts:5,minObjectFacts:8,objectPatterns:[/建筑面积|面积/u,/层|框架结构|既有建筑/u,/结构形式|结构加固|墙体补强|装配式/u,/拆除|改造|装修|装饰/u,/工期|日历天/u,/质量标准|合格/u,/营业商铺|经营区域|场地/u,/管网|防水|室外道排/u,/智能化|弱电|消防|暖通|通风空调|水电/u]},{title:"项目主要施工内容",minNumericFacts:4,minObjectFacts:6,objectPatterns:[/拆除|垃圾外运|既有设施保护/u,/结构加固|墙体补强|框架结构/u,/装饰|装修|基层|面层|环保|阻燃/u,/防水|管网|给排水|阀门|道排/u,/消防|水电|电气|弱电|智能化|通风空调/u,/屋面|立面|室外|附属/u,/施工流程|施工方法|施工顺序|工艺流程/u,/验收|检测|调试|资料闭环/u]},{title:"主要分部分项工程施工方案",minNumericFacts:4,minObjectFacts:6,objectPatterns:[/拆除|垃圾外运|既有设施保护/u,/结构加固|墙体补强|框架结构/u,/装饰|装修|基层|面层|环保|阻燃/u,/防水|管网|给排水|阀门|道排/u,/消防|水电|电气|弱电|智能化|通风空调/u,/屋面|立面|室外|附属/u,/施工流程|施工方法|施工顺序|工艺流程/u,/验收|检测|调试|资料闭环/u]},{title:"主要施工方法",minNumericFacts:4,minObjectFacts:6,objectPatterns:[/拆除|垃圾外运|既有设施保护/u,/结构加固|墙体补强|框架结构/u,/装饰|装修|基层|面层|环保|阻燃/u,/防水|管网|给排水|阀门|道排/u,/消防|水电|电气|弱电|智能化|通风空调/u,/屋面|立面|室外|附属/u,/施工流程|施工方法|施工顺序|工艺流程/u,/验收|检测|调试|资料闭环/u]}];return a.flatMap(a=>b.flatMap(b=>{let c=(0,e.Xl)(a.content,b.title);if(!c)return[];let d=new Set(c.match(/\d+(?:\.\d+)?\s*(?:m²|㎡|平方米|m|mm|层|栋|日历天|天|%|台|套|根|处|个|kg|t|吨)/giu)||[]).size,f=b.objectPatterns.filter(a=>a.test(c)).length,g=[];return d<b.minNumericFacts&&g.push({level:"warning",severity:"warning",message:`${a.title} ${b.title} 参数落位不足:当前 ${d} 个,建议不少于 ${b.minNumericFacts} 个`,suggestion:"关键小节必须写入项目规模、工期、层数、结构、专业工程或验收参数等具体数值。"}),f<b.minObjectFacts&&g.push({level:"warning",severity:"warning",message:`${a.title} ${b.title} 专业事实覆盖不足:当前 ${f} 类,建议不少于 ${b.minObjectFacts} 类`,suggestion:"优先基于当前项目绑定资料补充工程对象、专业范围、重点难点和对应施工内容;不得为满足类别数量编造或混入其他项目事实。"}),g}))})(f)),await b4("construction-org-professional-audit",async()=>(await dC(f,g)).map(a=>"error"===a.level?{...a,severity:"blocker"}:a))).map(a=>"error"===a.level?{...a,severity:a.severity||"blocker"}:a)}let dJ=/章节级证据覆盖较弱|章节事实覆盖不足|小节事实或量化参数落位可继续优化/u;async function dK(a){var b;let{finalChapterDrafts:c,effectiveChapters:d,factsModel:e,allEvidence:f,finalMarkdown:g,validationIssues:k,retrievalCoverageReports:l,includeRetrievalCoverage:m,template:n}=a,o=function(a){let b=a.chapters.map(b=>{let c=function(a){let b=["project"];return/进度|工期|节点|部署/u.test(a.title)&&b.push("schedule"),/质量|验收|材料/u.test(a.title)&&b.push("quality","rules"),/安全|文明|风险|危大/u.test(a.title)&&b.push("safety","rules"),/资源|材料|设备|劳动力|机械/u.test(a.title)&&b.push("resources"),/施工|工艺|技术|方案|清单|工程量|图纸/u.test(a.title)&&b.push("quantities"),[...new Set(b)]}(a.templateChapters.find(a=>a.id===b.id||a.title===b.title)||b),d=c.filter(c=>{var d;return d=a.factsModel,("project"===c?d.project.length>0||d.preciseFacts.length>0:"schedule"===c?d.schedule.length>0:"quality"===c?d.quality.length>0||d.specifications.length>0:"safety"===c?d.safety.length>0||d.rules.length>0:"resources"===c?d.resources.length>0||d.bills.length>0:"quantities"===c?d.bills.length>0||d.drawings.length>0||d.tables.length>0:"rules"===c&&(d.rules.length>0||d.specifications.length>0))||(b.evidence||[]).some(a=>RegExp(c$[c]||c,"u").test(`${a.sectionTitle||""} ${a.content||""}`))}),e=c.filter(a=>!d.includes(a)),f=c.length?Math.round(d.length/c.length*100):100;return{chapterId:b.id,title:b.title,requiredDomains:c,confirmedDomains:d,unconfirmedDomains:e,score:f}}),c=new Set(a.evidence.map(a=>a.filePath).filter(Boolean)),d=b.length?Math.round(b.reduce((a,b)=>a+b.score,0)/b.length):100;return{score:d,evidenceCount:a.evidence.length,confirmedFiles:c.size,chapterReports:b,unconfirmedDomains:[...new Set(b.flatMap(a=>a.unconfirmedDomains))],remediation:d>=95?"知识库事实覆盖已达到高置信交付要求。":"系统需扩大本地知识库检索、补抽结构化事实,并将已确认事实落位到对应章节。"}}({chapters:c,templateChapters:d,factsModel:e,evidence:f}),p=(0,ci.e$)(g,e),q=(b={chapters:c,templateChapters:d,factsModel:e}).chapters.map(a=>{let c=b.templateChapters.find(b=>b.id===a.id||b.title===a.title),d=function(a,b){let c=`${a.title} ${(b?.sections||a.sections||[]).join(" ")}`;return[{key:"structure",label:"结构完整",passed:(a.sections||b?.sections||[]).length>=2||/###\s+/u.test(a.content)},{key:"depth",label:"内容深度",passed:(0,h.V7)(a.content)>=600},{key:"evidence",label:"证据绑定",passed:(a.evidence||[]).length>0},{key:"professional",label:"专业控制点",passed:/验收|复核|检查|交底|控制点|整改|闭环|台账|进场|工序/u.test(a.content)},{key:"schedule",label:"工期支撑",passed:!/进度|工期|节点/u.test(c)||/工期|节点|计划|纠偏|资源|穿插/u.test(a.content)},{key:"quality",label:"质量验收",passed:!/质量|验收/u.test(c)||/质量|验收|复验|隐蔽|检验批|整改/u.test(a.content)},{key:"safety",label:"安全闭环",passed:!/安全|文明|风险|危大/u.test(c)||/风险|检查|整改|应急|培训|交底/u.test(a.content)}]}(a,c),e=d.filter(a=>a.passed).length;return{chapterId:a.id,title:a.title,score:d.length?Math.round(e/d.length*100):100,checks:d,action:e===d.length?"章节覆盖完整。":"系统需补齐章节结构、证据绑定、专业控制点和跨章依赖。"}}),r=dc(k,o.score>=85?[]:[{level:"warning",message:`系统知识库覆盖确认率偏低:${o.score}%`,suggestion:`${o.remediation} 未确认事实域:${o.unconfirmedDomains.map(a=>c$[a]||a).join("、")||"无"}`}],(0,ci.c$)(p,{maxIssues:20}),q.filter(a=>a.score<80).map(a=>({level:"warning",message:`章节覆盖不足:${a.title} ${a.score}%`,suggestion:`${a.action} 未通过项:${a.checks.filter(a=>!a.passed).map(a=>a.label).join("、")}`})),m?l.filter(a=>a.risk.highRisk&&(0===a.requiredFactTotal?a.evidenceCount<8:a.requiredFactCovered<a.requiredFactTotal)).map(a=>({level:"warning",message:`系统知识库召回覆盖需复核:${a.chapterTitle}`,suggestion:`知识库总切片 ${a.risk.totalChunks},当前预加载 ${a.risk.loadedChunks}${a.risk.riskReason?`(${a.risk.riskReason})`:""},已启用深召回;事实覆盖 ${a.requiredFactCovered}/${a.requiredFactTotal},小节覆盖 ${a.sectionCovered}/${a.sectionTotal}。`})):[]);r=r.map(a=>dJ.test(a.message)&&"warning"===a.level?{...a,level:"info"}:a);let s=(0,j.Ah)((0,i.aF)(g))?.profile.fiveElementCompleteBlocks,t=await da({markdown:g,chapters:c,issues:r,knowledgeCoverage:o,factTraces:p,template:n,referenceCompleteBlocks:s}),u=function(a){let b=[],c=a.issues.filter(a=>"error"===a.level);c.length>0&&b.push({priority:"high",title:"阻断问题修复",action:`修复 ${c.length} 个导出阻断问题,优先处理事实冲突、结构缺失、模板规则违规和占位残留。`});let d=(a.factTraces||[]).filter(a=>"unplaced"===a.status&&(0,ci.O7)(a));if(d.length>0){let a=d.length>12?`${d.length} 项(示例:${d.slice(0,8).map(a=>a.label).join("、")} 等)`:`${d.length} 项(${d.map(a=>a.label).join("、")})`;b.push({priority:"high",title:"事实落位修复",action:`将 ${a} 已确认知识库事实写入对应章节,保持原始数值、单位和来源口径。`})}a.knowledgeCoverage&&a.knowledgeCoverage.score<95&&b.push({priority:"medium",title:"知识库确认覆盖修复",action:"扩大本地知识库检索范围,执行事实补抽和章节证据重分配;这是系统检索、抽取、落位问题,不要求用户追加资料。"});let e=(a.chapterCoverage||[]).filter(a=>a.score<80);if(e.length>0){let a=e.length>10?`${e.slice(0,8).map(a=>a.title).join("、")} 及其他${e.length-8}章`:e.map(a=>a.title).join("、");b.push({priority:"medium",title:"章节覆盖修复",action:`补齐低覆盖章节(${e.length}章):${a}。`})}return a.qualityReport&&!a.qualityReport.passed&&b.push({priority:"medium",title:"交付置信度修复",action:a.qualityReport.actions.join(" ")}),b}({issues:r,qualityReport:t,knowledgeCoverage:o,factTraces:p,chapterCoverage:q});r=dc(r,t.passed?[]:[{level:"info",message:`交付置信度未达目标:${t.deliveryProbability}% / ${t.target}%`,suggestion:t.actions.join(" ")}],u.filter(a=>"high"===a.priority).map(a=>({level:"info",message:`修复策略待执行:${a.title}`,suggestion:a.action})));let v=(0,cg.Ai)(r,e,c);return{knowledgeCoverage:o,factTraces:p,chapterCoverage:q,qualityReport:t,repairStrategies:u,validationIssues:r,finalExportGate:v}}async function dL(a){var b,c;let f=(b=a.chapterDrafts,c=a.documentSpec,b.map(a=>{let b=c.chapterRules.find(b=>b.id===a.id||b.title===a.title),d=(b?.requiredFactIds||[]).map(a=>c.factFields.find(b=>b.id===a)?.name).filter(Boolean),e=[...new Set([...a.missingFacts||[],...d].filter(Boolean))],f=e.filter(b=>!a.missingFacts.includes(b)),g=e.filter(b=>a.missingFacts.includes(b));return{chapterId:a.id,title:a.title,requiredFacts:e,coveredFacts:f,missingFacts:g,evidenceCount:a.evidence.length}}));a.validation=function(a,b=[],c){let e=[],f=[];for(let b of a)0===b.evidence.length&&e.push(`${b.title} 未检索到资料证据`),b.content.length<80&&e.push(`${b.title} 内容较短,建议人工补充或重新生成`);return c&&a.length<c.chapters.length&&f.push(`章节生成不完整:已生成 ${a.length}/${c.chapters.length} 章`),c&&0===(0,d.zY)(c).length&&f.push("模板未绑定任何提示词"),{passed:0===f.length,warnings:e,errors:f}}(a.chapterDrafts,a.governedStructuredFacts,a.template),a.validation.warnings=[...a.validation.warnings,...a.readiness.warnings],a.validation.errors=[...a.validation.errors,...a.readiness.blockingIssues],a.sources=[...a.allEvidence.reduce((a,b)=>a.set(b.filePath,(a.get(b.filePath)??0)+1),new Map).entries()].sort((a,b)=>b[1]-a[1]).map(([a,b])=>({filePath:a,count:b}));let g=new Map;for(let b of a.allEvidence)g.set(b.source||"unknown",(g.get(b.source||"unknown")??0)+1);a.validationIssues=dc((0,dh.w9)(a.validation,a.factsModel,a.chapterDrafts),function(a){let b=[];for(let c of a)0===c.evidenceCount?b.push({level:"error",message:`章节缺少证据:${c.title}`,suggestion:"请补充对应绑定材料或调整模板章节检索词。"}):c.missingFacts.length>0&&b.push({level:"warning",message:`章节事实覆盖不足:${c.title},缺失 ${c.missingFacts.slice(0,6).join("、")}`,suggestion:"建议补充章节 requiredFacts 或绑定材料证据。"});return b}(f),(a.globalConsistencyIssues||[]).filter(a=>!/^跨章一致性冲突|^工序规格冲突/u.test(a)).slice(0,10).map(b=>{let c=/^数据一致性矛盾/u.test(b);return{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`${c?"数据一致性复核":"跨章一致性复核"}:${b}`,suggestion:c?"全文数据必须一致:以绑定资料(图纸/清单/招标文件)为准选定唯一值,统一矛盾数值对。":"跨章数值口径不一致属低级错误,必须定向修复统一口径后重新校验。",provenance:{detectorId:c?"data-consistency-snapshot":"global-consistency-snapshot",fingerprint:(0,e.c6)(a.chapterDrafts.map(a=>a.content).join("\n\n"))}}}));let h=a.chapterDrafts.map(a=>a.content).join("\n\n");a.validationIssues=dc(a.validationIssues,ai(h,a.structuredFacts,{maxIssues:20}).map(a=>({...a,level:"warning",severity:"warning",suggestion:"建议 Agent Writer 在章节生成阶段优先落位可信基础事实;导出阶段不因未落位的低置信或泛化事实阻断。",provenance:{detectorId:"fact-coverage",fingerprint:(0,e.c6)(h)}})));let i=Math.max(0,a.effectiveChapters.length-a.chapterDrafts.length);a.validationIssues=dc(a.validationIssues,[...i>0?[{level:"error",severity:"blocker",message:`部分章节生成失败:${i} 章`,suggestion:a.failedChapterMessages.join(";")||"请检查模型调用、知识库检索和事实抽取配置后重新生成失败章节。"}]:[]]);let j=await Promise.all(a.chapterDrafts.map(async b=>{let c=a.effectiveChapters.find(a=>a.id===b.id);if(!c)return[];let d=await di({chapter:c,content:b.content,evidence:b.evidence||[]});return d.length>0?[{level:"warning",message:`${b.title} 小节事实或量化参数落位可继续优化:${d.slice(0,5).join(";")}`,suggestion:"建议在 Agent Writer 阶段扩大定向证据,不得在导出阶段补写。"}]:[]}));a.validationIssues=dc(a.validationIssues,j.flat()),a.assets=[];let k=[...a.progressStages];for(let b of a.chapterGenerationStages)(0,b8.fx)(k,b);a.executionStages=function(a,b=300){if(a.length<=b)return a;let c=b-4-1;if(c<=0)return a.slice(-b);let d=a.slice(0,4),e=a.slice(-c),f=a.slice(4,a.length-c),g=f.filter(a=>"failed"===a.status).length;return[...d,{type:"validation",roleId:"stage-archive",status:g>0?"failed":"success",message:`已归档 ${f.length} 个中间执行阶段${g>0?`(含 ${g} 个失败记录)`:""}`,details:f[0]?.subtitle?[`归档区间:${f[0].subtitle} → ${f[f.length-1]?.subtitle||""}`]:[]},...e]}(k),(0,b8.fx)(a.executionStages,(0,b8.X5)({type:"reference",roleId:"knowledge-usage-report",status:"success",message:`资料使用报告:证据 ${a.allEvidence.length} 条,来源文件 ${a.sources.length} 份,结构化事实 ${a.structuredFacts.length} 条`,details:[`证据类型:${[...g.entries()].map(([a,b])=>`${a} ${b}`).join(",")||"无"}`,`索引健康:可用切片 ${a.indexHealth.usableChunkCount} 条,待索引 ${a.indexHealth.pendingJobs} 个,向量 ${a.indexHealth.vectorStatus?.status||"unknown"}`]},{subtitle:"资料使用报告"})),(0,b8.fx)(a.executionStages,(0,b8.X5)({type:"reference",roleId:"web-research-report",status:a.webResearchReport.enabled?"success":"skipped",message:a.webResearchReport.enabled?`联网增强:检索章节 ${new Set(a.webResearchReport.chapters).size} 个,查询 ${a.webResearchReport.queries.length} 个,使用公开资料 ${a.webResearchReport.evidenceCount} 条`:"联网增强未开启",details:a.webResearchReport.enabled?[`检索主题:${[...new Set(a.webResearchReport.queries)].join(";")||"无"}`,`过滤结果:${a.webResearchReport.filteredCount} 条`,"公开资料仅用于通用规范、政策、工艺和措施补充,不作为项目事实来源"]:["可在模型配置中开启联网增强"]},{subtitle:"联网增强报告"}))}async function dM(a){a.rebuildFinalMarkdown=()=>{var b;return(0,ao._D)((0,M.Ht)(dH((0,bc.bR)((0,bc.kT)((0,bc.K7)(dD(X((b={template:a.template,requirement:a.requirement,projectRoot:a.projectRoot,projectId:a.projectId,facts:a.facts,structuredFacts:a.structuredFacts,factsModel:a.factsModel,chapters:a.finalChapterDrafts,sources:a.sources,missingItems:a.missingItems,validation:a.validation,validationIssues:a.validationIssues,executionStages:a.executionStages,assets:a.assets,promptDocumentRules:a.promptDocumentRules},(0,M.Ht)((0,bc.rs)((0,bc.V3)({templateId:b.template.id,templateName:b.template.name,title:b.template.outputTitle,requirement:b.requirement||"",projectRoot:b.projectRoot,projectId:b.projectId,exportSettings:b.template.exportSettings,generationSettings:b.template.generationSettings,facts:b.facts,structuredFacts:b.structuredFacts,factsModel:b.factsModel,chapters:b.chapters,sources:b.sources,missingItems:[...new Set(b.missingItems)],validation:b.validation,validationIssues:b.validationIssues,executionStages:b.executionStages,exportGate:{passed:!1,blockingIssues:[],checklist:[]},assets:b.assets,partialChapters:[],checkpointChapters:b.chapters,generatedAt:Date.now()},{forbidDrawingImages:!1,promptRules:b.promptDocumentRules}),b.chapters,{forbidDrawingImages:!1,promptRules:b.promptDocumentRules}).markdown)),a.structuredFacts),a.projectMaterialSummary)))),a.template))).markdown};let b=B({facts:a.structuredFacts,markdown:a.finalMarkdown});b.size>0&&a.executionStages.push({type:"fact_extraction",roleId:"canonical-facts",status:"success",message:`已决策可信基础事实 ${b.size} 项`,details:[...b.values()].map(a=>`${a.label}=${a.value}(${a.source},confidence=${a.confidence})`).slice(0,12)}),a.baseValidationIssues=a.validationIssues,a.validationIssues=await dI({documentSpec:a.documentSpec,validationIssues:a.validationIssues,factsModel:a.factsModel,finalChapterDrafts:a.finalChapterDrafts,finalMarkdown:a.finalMarkdown,template:a.template,promptBindings:a.promptBindings,promptDocumentRules:a.promptDocumentRules,projectMaterialSummary:a.projectMaterialSummary,domainProfile:a.domainProfile,structuredFacts:a.structuredFacts,documentBudget:a.documentBudget,scopeConflicts:a.scopeConflicts,evaluationCriteriaItems:a.evaluationCriteriaItems,effectiveChapters:a.effectiveChapters,tenderRequirements:a.tenderRequirements,requirementsSimilarity:a.requirementsSimilarity,factTokenScopeClassifier:a.factTokenScopeClassifier,professionalDepthClassifier:a.professionalDepthClassifier,blueprintData:a.blueprintData}),a.qualityBundle=await dK({finalChapterDrafts:a.finalChapterDrafts,effectiveChapters:a.effectiveChapters,factsModel:a.factsModel,allEvidence:a.allEvidence,finalMarkdown:a.finalMarkdown,validationIssues:a.validationIssues,retrievalCoverageReports:a.retrievalCoverageReports,includeRetrievalCoverage:!0,template:a.template});let{knowledgeCoverage:c,factTraces:d,chapterCoverage:e,qualityReport:f,repairStrategies:g,finalExportGate:h}=a.qualityBundle;a.validationIssues=a.qualityBundle.validationIssues,a.finalGateRepairStages=[],a.qingtianReviewBlockingIssues=[],a.recomputeFinalValidationBundle=async()=>{let b=a.baseValidationIssues.filter(a=>!a.provenance||!db.has(a.provenance.detectorId));a.validationIssues=await dI({documentSpec:a.documentSpec,validationIssues:b,factsModel:a.factsModel,finalChapterDrafts:a.finalChapterDrafts,finalMarkdown:a.finalMarkdown,template:a.template,promptBindings:a.promptBindings,promptDocumentRules:a.promptDocumentRules,projectMaterialSummary:a.projectMaterialSummary,domainProfile:a.domainProfile,structuredFacts:a.structuredFacts,documentBudget:a.documentBudget,scopeConflicts:a.scopeConflicts,evaluationCriteriaItems:a.evaluationCriteriaItems,effectiveChapters:a.effectiveChapters,tenderRequirements:a.tenderRequirements,requirementsSimilarity:a.requirementsSimilarity,factTokenScopeClassifier:a.factTokenScopeClassifier,professionalDepthClassifier:a.professionalDepthClassifier,blueprintData:a.blueprintData}),a.validationIssues=[...a.validationIssues,...a.qingtianReviewBlockingIssues],a.qualityBundle=await dK({finalChapterDrafts:a.finalChapterDrafts,effectiveChapters:a.effectiveChapters,factsModel:a.factsModel,allEvidence:a.allEvidence,finalMarkdown:a.finalMarkdown,validationIssues:a.validationIssues,retrievalCoverageReports:a.retrievalCoverageReports,includeRetrievalCoverage:!1,template:a.template}),({knowledgeCoverage:c,factTraces:d,chapterCoverage:e,qualityReport:f,repairStrategies:g,finalExportGate:h}=a.qualityBundle),a.validationIssues=a.qualityBundle.validationIssues}}async function dN(a){let b=a.beforeMetrics?.map(Number)??(await a.recheck(a.originalContent)).map(Number),c=await a.apply();if(c===a.originalContent)return{content:a.originalContent,rolledBack:!1,beforeMetrics:b,afterMetrics:b};let d=(await a.recheck(c)).map(Number);return(a.shouldRollback??function(a,b){return b.some((b,c)=>b>a[c])})(b,d)?(!function(a,b){if(!a)return;let c=a.llm.patchGuardStats??(a.llm.patchGuardStats={}),d=c[b]??(c[b]={hits:0,rejects:0,rollbacks:0});d.rollbacks=(d.rollbacks??0)+1}(a.diagnostics,a.repairRound),{content:a.originalContent,rolledBack:!0,beforeMetrics:b,afterMetrics:d}):{content:c,rolledBack:!1,beforeMetrics:b,afterMetrics:d}}async function dO(a){let b=ah(a.finalMarkdown,[...a.structuredFacts,...a.factsModel.preciseFacts],{maxItems:60});if(b.length>0){let c=[[/项目名称|工程名称|项目编号|招标人|建设单位|发包人|建设地点|建设规模|招标范围|施工范围/u,/概况|基本信息|概述|总述|简介/u],[/计划工期|合同工期|天数/u,/工期|进度|施工部署|总体部署|流水/u],[/质量标准|质量目标/u,/质量/u],[/危大|安全/u,/安全/u],[/资源|材料|机械|设备|机具/u,/资源|投入|物资|机械|设备|机具|周转/u],[/面积|占地|建筑面积|长度|宽度|高度|厚度|深度|强度|等级|坡度|管径|直径|规格|跨度|周长|体积|重量/u,/概况|施工方法|主要施工|方案/u]],d=new Map,e=[],g=[];for(let f of b){let b=c.find(([a])=>a.test(f.label)),h=b?a.finalChapterDrafts.find(a=>b[1].test(a.title)):void 0;if(!h){e.push(`${f.label}=${f.value}`);continue}let i=d.get(h.id)||[];if(i.length>=12){g.push(`${f.label}=${f.value}`);continue}i.push({label:f.label,value:f.value,fact:f.fact}),d.set(h.id,i)}let h=0;for(let[b,c]of d){let d=a.finalChapterDrafts.findIndex(a=>a.id===b);if(d<0)continue;let i=a.finalChapterDrafts[d],j=a.effectiveChapters.find(a=>a.id===i.id||a.title===i.title),k=(0,b8.X5)({type:"llm_review",roleId:`agent-fact-landing-${b}`,status:"running",message:`正在落位 ${c.length} 条重要事实:${i.title}`,details:[...c.map(a=>`${a.label}=${a.value}`),...e.map(a=>`跳过:${a}(无匹配章节)`),...g.map(a=>`超限跳过:${a}`)]},{subtitle:"事实落位修复"});(0,b8.fx)(a.progressStages,k),(0,b8.fx)(a.finalGateRepairStages,k),a.emitProgress(a.finalChapterDrafts,a.progressStages);let l=["【事实落位定向修复】\n下列资料事实是项目硬数据,当前正文未出现。请逐条定位到本章最合适的位置(项目概况引导段、项目基本信息表对应行或对应小节),以局部 patch 方式自然写入,保持原始数值、单位与表述口径,不得改写、换算或编造。\n不得新增、删除或合并小节;表格内补充必须保持表头结构不变;只修改与落位事实直接相关的局部文本。",c.map(a=>`- ${a.label}=${a.value}`).join("\n")].join("\n"),m=0,n=await dN({originalContent:i.content,repairRound:"fact-landing",diagnostics:a.generationDiagnostics,apply:async()=>{let b=await a.withProgressHeartbeat(()=>(0,f.l8)({template:a.template,chapter:{id:i.id,title:i.title,content:i.content,evidence:i.evidence,missingFacts:i.missingFacts,sections:i.sections},issues:c.map(a=>`已确认事实未在正文中落位:${a.label}=${a.value}`),promptTexts:l,requirement:a.requirement,forbidDrawingImages:!1,diagnostics:a.generationDiagnostics,signal:a.signal,patchGuard:(0,f.XG)("fact-landing",a.generationDiagnostics)}));return b.content&&b.content!==i.content?(m=b.appliedCount,j?(0,M.w_)(b.content,j):b.content):i.content},recheck:a=>[ah(a,c.map(a=>a.fact)).length]});n.rolledBack||n.content===i.content||(a.finalChapterDrafts[d]={...i,content:n.content},h+=m);let o=(0,b8.X5)({type:"llm_review",roleId:`agent-fact-landing-${b}`,status:n.rolledBack||0===m?"failed":"success",message:n.rolledBack?`重要事实落位已回滚:${i.title}(修复后事实缺失增多,保留修复前正文)`:m>0?`重要事实落位完成:${i.title}(${m} 处 patch)`:`重要事实落位未生效:${i.title}`,details:c.map(a=>`${a.label}=${a.value}`)},{subtitle:"事实落位修复"});(0,b8.fx)(a.progressStages,o),(0,b8.fx)(a.finalGateRepairStages,o),a.emitProgress(a.finalChapterDrafts,a.progressStages)}h>0&&(a.finalMarkdown=a.rebuildFinalMarkdown(),await a.recomputeFinalValidationBundle())}}var dP=c(80572);function dQ(a,b){if(!b)return"";let c=a.split(/\r?\n/u);for(let a=0;a<c.length;a+=1){if(!/^\s*\|/u.test(c[a])||!c[a].includes(b))continue;let d=a;for(;d>0&&/^\s*\|/u.test(c[d-1]);)d-=1;let e=a;for(;e+1<c.length&&/^\s*\|/u.test(c[e+1]);)e+=1;return c.slice(d,e+1).join("\n")}return""}function dR(a){let b=a.map(a=>a.trim().replace(/^\|/u,"").replace(/\|$/u,"").split(/(?<!\\)\|/u).map(a=>(0,M.jG)(a.trim())));if(b.length<2)return{lines:a,removed:0};let c=b.length>1&&b[1].length>0&&b[1].every(a=>/^:?-{2,}:?$/u.test(a))?1:0,d=()=>Math.max(...b.map(a=>a.length)),e=0,f=!1;for(let a=c+1;a<b.length;a+=1){let c=b[a];if(/^(?:合计|小计|总计|累计)/u.test(c[0]||""))for(let a=1;a<c.length;a+=1)""===c[a]&&(c[a]="—",f=!0)}let g=b[0],h=b.slice(c+1);if(h.length>0&&/表$/u.test(g[0]||"")&&h.every(a=>a.length>0&&""===a[a.length-1])&&h.some(a=>""!==a[0])){b[0]=g.slice(1);for(let a=c+1;a<b.length;a+=1)b[a]=b[a].slice(0,b[a].length-1);f=!0,e+=1}if(b.length>c+1){let a=[];for(let e=0;e<d();e+=1)b.slice(c+1).every(a=>""===(a[e]||""))&&a.push(e);if(a.length>0){for(let c of b)for(let b=a.length-1;b>=0;b-=1)c.splice(a[b],1);f=!0,e+=1}}let i=/^(?:—+|-+|\/|N\/A|n\/a|待定|待补充|待确认|待查|待补|若干|暂无|无数据)$/u,j=a=>/规格型号|规格|型号/u.test(b[0][a]||"");for(let a=b.length-1;a>c;a-=1)!/^(?:合计|小计|总计|累计)/u.test(b[a][0]||"")&&b[a].some((a,b)=>!(j(b)&&/^(?:—+|-+)$/u.test(a))&&(""===a||i.test(a)))&&(b.splice(a,1),f=!0,e+=1);for(let a=c+1;a<b.length;a+=1){let c=b[a];for(let a=0;a<c.length;a+=1)/^约\d/u.test(c[a]||"")&&(c[a]=(c[a]||"").replace(/^约/u,""),f=!0)}return(b.length<=c+1&&(b.splice(0,b.length),f=!0,e+=1),f)?{lines:b.map((a,b)=>b===c?`| ${a.map(()=>"---").join(" | ")} |`:`| ${a.join(" | ")} |`),removed:e}:{lines:a,removed:0}}async function dS(a){let b=(0,cg.NS)(a.finalMarkdown).filter(a=>"error"===a.level&&/空单元格|占位符单元格|列数不一致|分隔线位置不规范/u.test(a.message));if(b.length>0){let c=0,d=[],e=new Map;for(let c=0;c<b.length;c+=1){let f=b[c],g=(f.message.split(":")[1]||"").split("(")[0]?.split("、")[0]||"",h=/([“"']?([^”"'))]{2,30})[”"']?行/u.exec(f.message)?.[1]||"",i=g?a.finalChapterDrafts.findIndex(a=>{let b=a.content||"";return b.includes(g)&&(!h||b.includes(h))}):-1;if(i<0)continue;let j={chapterIndex:i,issueIndex:c,message:f.message,suggestion:f.suggestion||"",tableAnchor:g,rowAnchor:h},k=e.get(i);void 0===k?(e.set(i,d.length),d.push([j])):d[k].push(j)}let g=Math.max(1,Math.min(4,(0,dP.z)().tableFixConcurrency||2));for(let b=0;b<d.length;b+=g){let e=d.slice(b,b+g);await Promise.all(e.map(async b=>{for(let{chapterIndex:d,issueIndex:e,message:g,suggestion:h,tableAnchor:i,rowAnchor:j}of b){let b=a.finalChapterDrafts[d],k=a.effectiveChapters.find(a=>a.id===b.id||a.title===b.title),l=(0,b8.X5)({type:"llm_review",roleId:`agent-table-fix-${b.id}-${e}`,status:"running",message:`正在修复表格数据缺失:${b.title}`,details:[g]},{subtitle:"表格数据修复"});(0,b8.fx)(a.progressStages,l),(0,b8.fx)(a.finalGateRepairStages,l),a.emitProgress(a.finalChapterDrafts,a.progressStages);let m=dQ(b.content,i)||dQ(a.finalMarkdown,i)||"",n=`【表格数据完整性定向修复】
44
+ ${i}`}async function dJ(a){let{documentSpec:b,validationIssues:c,factsModel:d,finalChapterDrafts:f,finalMarkdown:g,template:i,promptBindings:j,promptDocumentRules:k,projectMaterialSummary:l,domainProfile:m,structuredFacts:n,documentBudget:o,scopeConflicts:p,evaluationCriteriaItems:q,effectiveChapters:r,tenderRequirements:s,requirementsSimilarity:t,factTokenScopeClassifier:u,professionalDepthClassifier:v,blueprintData:w}=a;return dc(b4("spec-gate-rules",()=>(0,cg.kQ)(b,c,d,f,g,i.projectBindings||[],j)),b4("auto-spec-validation",()=>(function(a){let b=[],c=a.markdown||"";for(let e of a.spec.factFields.filter(a=>a.required)){var d;!((d=e.name).length<4||ca(d))&&/\d|GB|JGJ|C\d|HRB|DN|mm|MPa|kPa|工期|质量|安全|项目名称|工程名称|招标人|建设地点|建筑面积|结构形式|层数/u.test(d)&&!cc(c,e.name)&&b.push({level:"info",message:`正文可能未显式覆盖“${e.name}”`,suggestion:"建议检查对应章节是否已自然表达该事实。"})}let e=a.summary.facts.projectName;!e||"当前知识库项目"===e||ca(e)||cc(c,e)||b.push({level:"warning",message:"正文未明显体现关键对象名称",suggestion:"建议在概况、背景或首页标题中体现当前文档的关键对象名称。"});let f=a.summary.facts.documentNo;for(let a of(f&&!c.includes(f)&&b.push({level:"info",message:"正文未体现文档/任务编号",suggestion:"如文档需要编号,请在概况、背景或首页信息中补充。"}),["知识库证据","资料类型","提示词角色","文档规范包","规范包","后台自动规范","后台优化建议","基础事实候选","材料未提供","未检索到"]))c.includes(a)&&b.push({level:"error",message:`正文包含后台流程话术:${a}`,suggestion:"请重新生成或在审查阶段删除后台流程描述。"});return b})({markdown:g,spec:b,summary:l})),b4("fact-consistency",()=>(function(a){let b=a.profile||cd.p4,c=[],d=new Map;for(let c of a.facts){let a=c.fieldName||c.key;a&&function(a,b){let c=(0,cd.oC)(b,a);return c?"single"===c.cardinality&&"allow_multiple"!==c.conflictPolicy&&"ignore"!==c.conflictPolicy:/项目名称|工程名称|招标人|建设地点|建筑面积|结构形式|层数|工期|质量标准|合同价格形式|绿色建筑等级|投标有效期|质保期/u.test(a)}(a,b)&&cf(String(c.value),b)&&d.set(a,[...d.get(a)||[],{value:String(c.value),source:c.sourceFile}])}for(let[a,e]of d){let d=new Map;for(let a of e){let c=cf(a.value,b);c&&d.set(c,[...d.get(c)||[],a])}if(d.size>1){let b=[...d.values()].map(a=>`${a[0].value}(${a.map(a=>a.source).filter(Boolean).join("、")||"未知来源"})`).join(" vs ");c.push({level:"error",message:`事实一致性冲突:${a} 存在多个值:${b}`,suggestion:"请确认当前绑定材料组,或在模板绑定中只绑定当前文档所需材料。"})}}let e=a.summary.facts.projectName;if(e&&"当前知识库项目"!==e&&!/--|延期到|资料|附件|扫描|目录|汇总|打包|备份|招标工程量清单封面|招标工程量清单扉页|工程量清单表|清单封面|清单扉页|\d{1,2}\.\d{1,2}/u.test(e)){let b=ce(a.markdown),d=[e,...a.summary.fingerprint.projectNames].flatMap(a=>[a,a.replace(/^\d+(?:\.\d+)?[^\u4e00-\u9fa5]*/u,""),a.replace(/\([^)]*\)|([^)]*)/gu,"")]).map(a=>ce(a)).filter(a=>a.length>=4),f=d.filter(a=>a.length>=8),g=d.filter(a=>a.length<8),h=f.some(a=>b.includes(a)||a.length>=12&&b.includes(a.slice(0,Math.max(8,Math.floor(.72*a.length))))),i=g.some(a=>b.includes(a));(f.length>0?h:!(g.length>0)||i)||c.push({level:"warning",message:`正文未包含当前对象名称:${e}`,suggestion:"请确认标题、概况或背景信息是否已体现当前对象名称。"})}return c})({markdown:g,facts:n,summary:l,profile:m})),b4("project-contamination",()=>(function(a,b){let c=[],d=new Set([b.projectName,...b.fingerprint.projectNames].filter(Boolean));for(let e of b.contaminationCandidates)e.length>=6&&!d.has(e)&&a.replace(/\s+/gu,"").includes(e.replace(/\s+/gu,""))&&c.push({level:"error",message:`正文疑似混入其他对象名称:${e}`,suggestion:"请检查绑定材料选择、模板绑定文件和知识库证据范围。"});let e=b.fingerprint.documentNos,f=a.match(/\b\d{4}[A-Z]{2,}\d{4,}\b/gu)?.find(a=>!e.includes(a));return f&&e.length>0&&c.push({level:"error",message:`正文疑似混入其他文档编号:${f}`,suggestion:"请重新生成并检查是否召回了其他绑定材料。"}),c})(g,l)),b4("project-basic-placeholder",()=>0!==P(n).length&&/资料未明确|系统暂未从知识库确认|项目资料暂未明确/u.test(g)?["计划工期","合同工期","质量标准","合同估算价","合同估算价格","建设地点","建设规模"].filter(a=>RegExp(`${a}[^
45
+ |。;;]{0,40}(?:资料未明确|系统暂未从知识库确认|项目资料暂未明确)`,"u").test(g)).map(a=>({level:"error",message:`${a} 已抽取到项目资料事实但正文仍显示暂未明确`,suggestion:"请优先使用项目基础事实卡片中的资料原值,不得用占位表达覆盖已确认事实。"})):[]),await b4("standard-final",()=>cZ({markdown:g,chapters:f,factsModel:d,template:i,promptBindings:j,promptDocumentRules:k,scopeConflicts:p,evaluationCriteriaItems:q,effectiveChapters:r,tenderRequirements:s,requirementsSimilarity:t,factTokenScopeClassifier:u,professionalDepthClassifier:v,blueprintData:w})),b4("fact-coverage",()=>ai(g,[...n,...d.preciseFacts],{maxIssues:30}).map(a=>({...a,level:"warning",severity:"warning",suggestion:"建议后续优化事实自然落位;导出阶段不因未落位的引用型或可优化事实阻断。"}))),b4("page-target",()=>(0,h.PE)(i.generationSettings||i.exportSettings,g).filter(a=>!(o.minPages&&/低于目标页数/u.test(a.message)))),b4("document-budget",()=>(0,h.ty)(o,g)),b4("planned-structure",()=>(0,bc.UG)(g,i)),b4("formal-text-gate",()=>(0,dh.IA)(g)),await b4("internal-terminology-anchor",()=>(0,bd.WT)(g)),b4("heading-uncovered-engineering-items",()=>(0,cg.j9)(g)),b4("writer-missing-section",()=>g.includes("WRITER_MISSING_SECTION")||g.includes("Writer 未完成")?[{level:"error",severity:"blocker",category:"structure",owner:"system",message:"最终正文仍包含未完成小节标记",suggestion:"必须重新补写对应小节并删除 WRITER_MISSING_SECTION/Writer 未完成。"}]:[]),b4("critical-section-depth",()=>(function(a){let b=[{title:"项目特点、重点、难点分析",minChars:1800},{title:"项目主要施工内容",minChars:2200},{title:"主要分部分项工程施工方案",minChars:1200,blockerMinChars:800},{title:"主要施工方法",minChars:2200},{title:"危大工程专项施工方案审批流程",minChars:500,blockerMinChars:250},{title:"原材料进场复试与见证取样",minChars:600,blockerMinChars:300}],c=[];for(let d of a)for(let a of b){let b=(0,e.Xl)(d.content,a.title)||(0,e.Xl)(d.content,a.title,{fuzzy:!0}),f=(0,h.V7)(b);if(!b||f>=a.minChars)continue;let g=function(a){let b=[{title:"项目特点、重点、难点分析",minChars:1800},{title:"项目主要施工内容",minChars:2200},{title:"主要分部分项工程施工方案",minChars:1200,blockerMinChars:800},{title:"主要施工方法",minChars:2200},{title:"危大工程专项施工方案审批流程",minChars:500,blockerMinChars:250},{title:"原材料进场复试与见证取样",minChars:600,blockerMinChars:300}].find(b=>b.title===a);if(!b)return 0;let c=b.blockerMinChars||Math.floor(.8*b.minChars),d=(0,aj.ap)(a);return Math.min(c,d>0?d:c)}(a.title);f>=g?c.push({level:"warning",severity:"warning",message:`${d.title} ${a.title} 正文深度接近目标:当前 ${f} 字,目标 ${a.minChars} 字`,suggestion:"已达到可交付深度,建议后续按项目数据继续优化扩写。"}):c.push({level:"error",severity:"blocker",message:`${d.title} ${a.title} 正文不足:当前 ${f} 字,要求不少于 ${g} 字`,suggestion:"关键小节必须补足项目数据、重点难点与施工内容对应关系后方可导出。"})}return c})(f)),b4("critical-section-fact-density",()=>(function(a){let b=[{title:"项目特点、重点、难点分析",minNumericFacts:5,minObjectFacts:8,objectPatterns:[/建筑面积|面积/u,/层|框架结构|既有建筑/u,/结构形式|结构加固|墙体补强|装配式/u,/拆除|改造|装修|装饰/u,/工期|日历天/u,/质量标准|合格/u,/营业商铺|经营区域|场地/u,/管网|防水|室外道排/u,/智能化|弱电|消防|暖通|通风空调|水电/u]},{title:"项目主要施工内容",minNumericFacts:4,minObjectFacts:6,objectPatterns:[/拆除|垃圾外运|既有设施保护/u,/结构加固|墙体补强|框架结构/u,/装饰|装修|基层|面层|环保|阻燃/u,/防水|管网|给排水|阀门|道排/u,/消防|水电|电气|弱电|智能化|通风空调/u,/屋面|立面|室外|附属/u,/施工流程|施工方法|施工顺序|工艺流程/u,/验收|检测|调试|资料闭环/u]},{title:"主要分部分项工程施工方案",minNumericFacts:4,minObjectFacts:6,objectPatterns:[/拆除|垃圾外运|既有设施保护/u,/结构加固|墙体补强|框架结构/u,/装饰|装修|基层|面层|环保|阻燃/u,/防水|管网|给排水|阀门|道排/u,/消防|水电|电气|弱电|智能化|通风空调/u,/屋面|立面|室外|附属/u,/施工流程|施工方法|施工顺序|工艺流程/u,/验收|检测|调试|资料闭环/u]},{title:"主要施工方法",minNumericFacts:4,minObjectFacts:6,objectPatterns:[/拆除|垃圾外运|既有设施保护/u,/结构加固|墙体补强|框架结构/u,/装饰|装修|基层|面层|环保|阻燃/u,/防水|管网|给排水|阀门|道排/u,/消防|水电|电气|弱电|智能化|通风空调/u,/屋面|立面|室外|附属/u,/施工流程|施工方法|施工顺序|工艺流程/u,/验收|检测|调试|资料闭环/u]}];return a.flatMap(a=>b.flatMap(b=>{let c=(0,e.Xl)(a.content,b.title);if(!c)return[];let d=new Set(c.match(/\d+(?:\.\d+)?\s*(?:m²|㎡|平方米|m|mm|层|栋|日历天|天|%|台|套|根|处|个|kg|t|吨)/giu)||[]).size,f=b.objectPatterns.filter(a=>a.test(c)).length,g=[];return d<b.minNumericFacts&&g.push({level:"warning",severity:"warning",message:`${a.title} ${b.title} 参数落位不足:当前 ${d} 个,建议不少于 ${b.minNumericFacts} 个`,suggestion:"关键小节必须写入项目规模、工期、层数、结构、专业工程或验收参数等具体数值。"}),f<b.minObjectFacts&&g.push({level:"warning",severity:"warning",message:`${a.title} ${b.title} 专业事实覆盖不足:当前 ${f} 类,建议不少于 ${b.minObjectFacts} 类`,suggestion:"优先基于当前项目绑定资料补充工程对象、专业范围、重点难点和对应施工内容;不得为满足类别数量编造或混入其他项目事实。"}),g}))})(f)),await b4("construction-org-professional-audit",async()=>(await dD(f,g)).map(a=>"error"===a.level?{...a,severity:"blocker"}:a))).map(a=>"error"===a.level?{...a,severity:a.severity||"blocker"}:a)}let dK=/章节级证据覆盖较弱|章节事实覆盖不足|小节事实或量化参数落位可继续优化/u;async function dL(a){var b;let{finalChapterDrafts:c,effectiveChapters:d,factsModel:e,allEvidence:f,finalMarkdown:g,validationIssues:k,retrievalCoverageReports:l,includeRetrievalCoverage:m,template:n}=a,o=function(a){let b=a.chapters.map(b=>{let c=function(a){let b=["project"];return/进度|工期|节点|部署/u.test(a.title)&&b.push("schedule"),/质量|验收|材料/u.test(a.title)&&b.push("quality","rules"),/安全|文明|风险|危大/u.test(a.title)&&b.push("safety","rules"),/资源|材料|设备|劳动力|机械/u.test(a.title)&&b.push("resources"),/施工|工艺|技术|方案|清单|工程量|图纸/u.test(a.title)&&b.push("quantities"),[...new Set(b)]}(a.templateChapters.find(a=>a.id===b.id||a.title===b.title)||b),d=c.filter(c=>{var d;return d=a.factsModel,("project"===c?d.project.length>0||d.preciseFacts.length>0:"schedule"===c?d.schedule.length>0:"quality"===c?d.quality.length>0||d.specifications.length>0:"safety"===c?d.safety.length>0||d.rules.length>0:"resources"===c?d.resources.length>0||d.bills.length>0:"quantities"===c?d.bills.length>0||d.drawings.length>0||d.tables.length>0:"rules"===c&&(d.rules.length>0||d.specifications.length>0))||(b.evidence||[]).some(a=>RegExp(c$[c]||c,"u").test(`${a.sectionTitle||""} ${a.content||""}`))}),e=c.filter(a=>!d.includes(a)),f=c.length?Math.round(d.length/c.length*100):100;return{chapterId:b.id,title:b.title,requiredDomains:c,confirmedDomains:d,unconfirmedDomains:e,score:f}}),c=new Set(a.evidence.map(a=>a.filePath).filter(Boolean)),d=b.length?Math.round(b.reduce((a,b)=>a+b.score,0)/b.length):100;return{score:d,evidenceCount:a.evidence.length,confirmedFiles:c.size,chapterReports:b,unconfirmedDomains:[...new Set(b.flatMap(a=>a.unconfirmedDomains))],remediation:d>=95?"知识库事实覆盖已达到高置信交付要求。":"系统需扩大本地知识库检索、补抽结构化事实,并将已确认事实落位到对应章节。"}}({chapters:c,templateChapters:d,factsModel:e,evidence:f}),p=(0,ci.e$)(g,e),q=(b={chapters:c,templateChapters:d,factsModel:e}).chapters.map(a=>{let c=b.templateChapters.find(b=>b.id===a.id||b.title===a.title),d=function(a,b){let c=`${a.title} ${(b?.sections||a.sections||[]).join(" ")}`;return[{key:"structure",label:"结构完整",passed:(a.sections||b?.sections||[]).length>=2||/###\s+/u.test(a.content)},{key:"depth",label:"内容深度",passed:(0,h.V7)(a.content)>=600},{key:"evidence",label:"证据绑定",passed:(a.evidence||[]).length>0},{key:"professional",label:"专业控制点",passed:/验收|复核|检查|交底|控制点|整改|闭环|台账|进场|工序/u.test(a.content)},{key:"schedule",label:"工期支撑",passed:!/进度|工期|节点/u.test(c)||/工期|节点|计划|纠偏|资源|穿插/u.test(a.content)},{key:"quality",label:"质量验收",passed:!/质量|验收/u.test(c)||/质量|验收|复验|隐蔽|检验批|整改/u.test(a.content)},{key:"safety",label:"安全闭环",passed:!/安全|文明|风险|危大/u.test(c)||/风险|检查|整改|应急|培训|交底/u.test(a.content)}]}(a,c),e=d.filter(a=>a.passed).length;return{chapterId:a.id,title:a.title,score:d.length?Math.round(e/d.length*100):100,checks:d,action:e===d.length?"章节覆盖完整。":"系统需补齐章节结构、证据绑定、专业控制点和跨章依赖。"}}),r=dc(k,o.score>=85?[]:[{level:"warning",message:`系统知识库覆盖确认率偏低:${o.score}%`,suggestion:`${o.remediation} 未确认事实域:${o.unconfirmedDomains.map(a=>c$[a]||a).join("、")||"无"}`}],(0,ci.c$)(p,{maxIssues:20}),q.filter(a=>a.score<80).map(a=>({level:"warning",message:`章节覆盖不足:${a.title} ${a.score}%`,suggestion:`${a.action} 未通过项:${a.checks.filter(a=>!a.passed).map(a=>a.label).join("、")}`})),m?l.filter(a=>a.risk.highRisk&&(0===a.requiredFactTotal?a.evidenceCount<8:a.requiredFactCovered<a.requiredFactTotal)).map(a=>({level:"warning",message:`系统知识库召回覆盖需复核:${a.chapterTitle}`,suggestion:`知识库总切片 ${a.risk.totalChunks},当前预加载 ${a.risk.loadedChunks}${a.risk.riskReason?`(${a.risk.riskReason})`:""},已启用深召回;事实覆盖 ${a.requiredFactCovered}/${a.requiredFactTotal},小节覆盖 ${a.sectionCovered}/${a.sectionTotal}。`})):[]);r=r.map(a=>dK.test(a.message)&&"warning"===a.level?{...a,level:"info"}:a);let s=(0,j.Ah)((0,i.aF)(g))?.profile.fiveElementCompleteBlocks,t=await da({markdown:g,chapters:c,issues:r,knowledgeCoverage:o,factTraces:p,template:n,referenceCompleteBlocks:s}),u=function(a){let b=[],c=a.issues.filter(a=>"error"===a.level);c.length>0&&b.push({priority:"high",title:"阻断问题修复",action:`修复 ${c.length} 个导出阻断问题,优先处理事实冲突、结构缺失、模板规则违规和占位残留。`});let d=(a.factTraces||[]).filter(a=>"unplaced"===a.status&&(0,ci.O7)(a));if(d.length>0){let a=d.length>12?`${d.length} 项(示例:${d.slice(0,8).map(a=>a.label).join("、")} 等)`:`${d.length} 项(${d.map(a=>a.label).join("、")})`;b.push({priority:"high",title:"事实落位修复",action:`将 ${a} 已确认知识库事实写入对应章节,保持原始数值、单位和来源口径。`})}a.knowledgeCoverage&&a.knowledgeCoverage.score<95&&b.push({priority:"medium",title:"知识库确认覆盖修复",action:"扩大本地知识库检索范围,执行事实补抽和章节证据重分配;这是系统检索、抽取、落位问题,不要求用户追加资料。"});let e=(a.chapterCoverage||[]).filter(a=>a.score<80);if(e.length>0){let a=e.length>10?`${e.slice(0,8).map(a=>a.title).join("、")} 及其他${e.length-8}章`:e.map(a=>a.title).join("、");b.push({priority:"medium",title:"章节覆盖修复",action:`补齐低覆盖章节(${e.length}章):${a}。`})}return a.qualityReport&&!a.qualityReport.passed&&b.push({priority:"medium",title:"交付置信度修复",action:a.qualityReport.actions.join(" ")}),b}({issues:r,qualityReport:t,knowledgeCoverage:o,factTraces:p,chapterCoverage:q});r=dc(r,t.passed?[]:[{level:"info",message:`交付置信度未达目标:${t.deliveryProbability}% / ${t.target}%`,suggestion:t.actions.join(" ")}],u.filter(a=>"high"===a.priority).map(a=>({level:"info",message:`修复策略待执行:${a.title}`,suggestion:a.action})));let v=(0,cg.Ai)(r,e,c);return{knowledgeCoverage:o,factTraces:p,chapterCoverage:q,qualityReport:t,repairStrategies:u,validationIssues:r,finalExportGate:v}}async function dM(a){var b,c;let f=(b=a.chapterDrafts,c=a.documentSpec,b.map(a=>{let b=c.chapterRules.find(b=>b.id===a.id||b.title===a.title),d=(b?.requiredFactIds||[]).map(a=>c.factFields.find(b=>b.id===a)?.name).filter(Boolean),e=[...new Set([...a.missingFacts||[],...d].filter(Boolean))],f=e.filter(b=>!a.missingFacts.includes(b)),g=e.filter(b=>a.missingFacts.includes(b));return{chapterId:a.id,title:a.title,requiredFacts:e,coveredFacts:f,missingFacts:g,evidenceCount:a.evidence.length}}));a.validation=function(a,b=[],c){let e=[],f=[];for(let b of a)0===b.evidence.length&&e.push(`${b.title} 未检索到资料证据`),b.content.length<80&&e.push(`${b.title} 内容较短,建议人工补充或重新生成`);return c&&a.length<c.chapters.length&&f.push(`章节生成不完整:已生成 ${a.length}/${c.chapters.length} 章`),c&&0===(0,d.zY)(c).length&&f.push("模板未绑定任何提示词"),{passed:0===f.length,warnings:e,errors:f}}(a.chapterDrafts,a.governedStructuredFacts,a.template),a.validation.warnings=[...a.validation.warnings,...a.readiness.warnings],a.validation.errors=[...a.validation.errors,...a.readiness.blockingIssues],a.sources=[...a.allEvidence.reduce((a,b)=>a.set(b.filePath,(a.get(b.filePath)??0)+1),new Map).entries()].sort((a,b)=>b[1]-a[1]).map(([a,b])=>({filePath:a,count:b}));let g=new Map;for(let b of a.allEvidence)g.set(b.source||"unknown",(g.get(b.source||"unknown")??0)+1);a.validationIssues=dc((0,di.w9)(a.validation,a.factsModel,a.chapterDrafts),function(a){let b=[];for(let c of a)0===c.evidenceCount?b.push({level:"error",message:`章节缺少证据:${c.title}`,suggestion:"请补充对应绑定材料或调整模板章节检索词。"}):c.missingFacts.length>0&&b.push({level:"warning",message:`章节事实覆盖不足:${c.title},缺失 ${c.missingFacts.slice(0,6).join("、")}`,suggestion:"建议补充章节 requiredFacts 或绑定材料证据。"});return b}(f),(a.globalConsistencyIssues||[]).filter(a=>!/^跨章一致性冲突|^工序规格冲突/u.test(a)).slice(0,10).map(b=>{let c=/^数据一致性矛盾/u.test(b);return{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`${c?"数据一致性复核":"跨章一致性复核"}:${b}`,suggestion:c?"全文数据必须一致:以绑定资料(图纸/清单/招标文件)为准选定唯一值,统一矛盾数值对。":"跨章数值口径不一致属低级错误,必须定向修复统一口径后重新校验。",provenance:{detectorId:c?"data-consistency-snapshot":"global-consistency-snapshot",fingerprint:(0,e.c6)(a.chapterDrafts.map(a=>a.content).join("\n\n"))}}}));let h=a.chapterDrafts.map(a=>a.content).join("\n\n");a.validationIssues=dc(a.validationIssues,ai(h,a.structuredFacts,{maxIssues:20}).map(a=>({...a,level:"warning",severity:"warning",suggestion:"建议 Agent Writer 在章节生成阶段优先落位可信基础事实;导出阶段不因未落位的低置信或泛化事实阻断。",provenance:{detectorId:"fact-coverage",fingerprint:(0,e.c6)(h)}})));let i=Math.max(0,a.effectiveChapters.length-a.chapterDrafts.length);a.validationIssues=dc(a.validationIssues,[...i>0?[{level:"error",severity:"blocker",message:`部分章节生成失败:${i} 章`,suggestion:a.failedChapterMessages.join(";")||"请检查模型调用、知识库检索和事实抽取配置后重新生成失败章节。"}]:[]]);let j=await Promise.all(a.chapterDrafts.map(async b=>{let c=a.effectiveChapters.find(a=>a.id===b.id);if(!c)return[];let d=await dj({chapter:c,content:b.content,evidence:b.evidence||[]});return d.length>0?[{level:"warning",message:`${b.title} 小节事实或量化参数落位可继续优化:${d.slice(0,5).join(";")}`,suggestion:"建议在 Agent Writer 阶段扩大定向证据,不得在导出阶段补写。"}]:[]}));a.validationIssues=dc(a.validationIssues,j.flat()),a.assets=[];let k=[...a.progressStages];for(let b of a.chapterGenerationStages)(0,b8.fx)(k,b);a.executionStages=function(a,b=300){if(a.length<=b)return a;let c=b-4-1;if(c<=0)return a.slice(-b);let d=a.slice(0,4),e=a.slice(-c),f=a.slice(4,a.length-c),g=f.filter(a=>"failed"===a.status).length;return[...d,{type:"validation",roleId:"stage-archive",status:g>0?"failed":"success",message:`已归档 ${f.length} 个中间执行阶段${g>0?`(含 ${g} 个失败记录)`:""}`,details:f[0]?.subtitle?[`归档区间:${f[0].subtitle} → ${f[f.length-1]?.subtitle||""}`]:[]},...e]}(k),(0,b8.fx)(a.executionStages,(0,b8.X5)({type:"reference",roleId:"knowledge-usage-report",status:"success",message:`资料使用报告:证据 ${a.allEvidence.length} 条,来源文件 ${a.sources.length} 份,结构化事实 ${a.structuredFacts.length} 条`,details:[`证据类型:${[...g.entries()].map(([a,b])=>`${a} ${b}`).join(",")||"无"}`,`索引健康:可用切片 ${a.indexHealth.usableChunkCount} 条,待索引 ${a.indexHealth.pendingJobs} 个,向量 ${a.indexHealth.vectorStatus?.status||"unknown"}`]},{subtitle:"资料使用报告"})),(0,b8.fx)(a.executionStages,(0,b8.X5)({type:"reference",roleId:"web-research-report",status:a.webResearchReport.enabled?"success":"skipped",message:a.webResearchReport.enabled?`联网增强:检索章节 ${new Set(a.webResearchReport.chapters).size} 个,查询 ${a.webResearchReport.queries.length} 个,使用公开资料 ${a.webResearchReport.evidenceCount} 条`:"联网增强未开启",details:a.webResearchReport.enabled?[`检索主题:${[...new Set(a.webResearchReport.queries)].join(";")||"无"}`,`过滤结果:${a.webResearchReport.filteredCount} 条`,"公开资料仅用于通用规范、政策、工艺和措施补充,不作为项目事实来源"]:["可在模型配置中开启联网增强"]},{subtitle:"联网增强报告"}))}async function dN(a){a.rebuildFinalMarkdown=()=>{var b;return(0,ao._D)((0,M.Ht)(dI((0,bc.bR)((0,bc.kT)((0,bc.K7)(dE(X((b={template:a.template,requirement:a.requirement,projectRoot:a.projectRoot,projectId:a.projectId,facts:a.facts,structuredFacts:a.structuredFacts,factsModel:a.factsModel,chapters:a.finalChapterDrafts,sources:a.sources,missingItems:a.missingItems,validation:a.validation,validationIssues:a.validationIssues,executionStages:a.executionStages,assets:a.assets,promptDocumentRules:a.promptDocumentRules},(0,M.Ht)((0,bc.rs)((0,bc.V3)({templateId:b.template.id,templateName:b.template.name,title:b.template.outputTitle,requirement:b.requirement||"",projectRoot:b.projectRoot,projectId:b.projectId,exportSettings:b.template.exportSettings,generationSettings:b.template.generationSettings,facts:b.facts,structuredFacts:b.structuredFacts,factsModel:b.factsModel,chapters:b.chapters,sources:b.sources,missingItems:[...new Set(b.missingItems)],validation:b.validation,validationIssues:b.validationIssues,executionStages:b.executionStages,exportGate:{passed:!1,blockingIssues:[],checklist:[]},assets:b.assets,partialChapters:[],checkpointChapters:b.chapters,generatedAt:Date.now()},{forbidDrawingImages:!1,promptRules:b.promptDocumentRules}),b.chapters,{forbidDrawingImages:!1,promptRules:b.promptDocumentRules}).markdown)),a.structuredFacts),a.projectMaterialSummary)))),a.template))).markdown};let b=B({facts:a.structuredFacts,markdown:a.finalMarkdown});b.size>0&&a.executionStages.push({type:"fact_extraction",roleId:"canonical-facts",status:"success",message:`已决策可信基础事实 ${b.size} 项`,details:[...b.values()].map(a=>`${a.label}=${a.value}(${a.source},confidence=${a.confidence})`).slice(0,12)}),a.baseValidationIssues=a.validationIssues,a.validationIssues=await dJ({documentSpec:a.documentSpec,validationIssues:a.validationIssues,factsModel:a.factsModel,finalChapterDrafts:a.finalChapterDrafts,finalMarkdown:a.finalMarkdown,template:a.template,promptBindings:a.promptBindings,promptDocumentRules:a.promptDocumentRules,projectMaterialSummary:a.projectMaterialSummary,domainProfile:a.domainProfile,structuredFacts:a.structuredFacts,documentBudget:a.documentBudget,scopeConflicts:a.scopeConflicts,evaluationCriteriaItems:a.evaluationCriteriaItems,effectiveChapters:a.effectiveChapters,tenderRequirements:a.tenderRequirements,requirementsSimilarity:a.requirementsSimilarity,factTokenScopeClassifier:a.factTokenScopeClassifier,professionalDepthClassifier:a.professionalDepthClassifier,blueprintData:a.blueprintData}),a.qualityBundle=await dL({finalChapterDrafts:a.finalChapterDrafts,effectiveChapters:a.effectiveChapters,factsModel:a.factsModel,allEvidence:a.allEvidence,finalMarkdown:a.finalMarkdown,validationIssues:a.validationIssues,retrievalCoverageReports:a.retrievalCoverageReports,includeRetrievalCoverage:!0,template:a.template});let{knowledgeCoverage:c,factTraces:d,chapterCoverage:e,qualityReport:f,repairStrategies:g,finalExportGate:h}=a.qualityBundle;a.validationIssues=a.qualityBundle.validationIssues,a.finalGateRepairStages=[],a.qingtianReviewBlockingIssues=[],a.recomputeFinalValidationBundle=async()=>{let b=a.baseValidationIssues.filter(a=>!a.provenance||!db.has(a.provenance.detectorId));a.validationIssues=await dJ({documentSpec:a.documentSpec,validationIssues:b,factsModel:a.factsModel,finalChapterDrafts:a.finalChapterDrafts,finalMarkdown:a.finalMarkdown,template:a.template,promptBindings:a.promptBindings,promptDocumentRules:a.promptDocumentRules,projectMaterialSummary:a.projectMaterialSummary,domainProfile:a.domainProfile,structuredFacts:a.structuredFacts,documentBudget:a.documentBudget,scopeConflicts:a.scopeConflicts,evaluationCriteriaItems:a.evaluationCriteriaItems,effectiveChapters:a.effectiveChapters,tenderRequirements:a.tenderRequirements,requirementsSimilarity:a.requirementsSimilarity,factTokenScopeClassifier:a.factTokenScopeClassifier,professionalDepthClassifier:a.professionalDepthClassifier,blueprintData:a.blueprintData}),a.validationIssues=[...a.validationIssues,...a.qingtianReviewBlockingIssues],a.qualityBundle=await dL({finalChapterDrafts:a.finalChapterDrafts,effectiveChapters:a.effectiveChapters,factsModel:a.factsModel,allEvidence:a.allEvidence,finalMarkdown:a.finalMarkdown,validationIssues:a.validationIssues,retrievalCoverageReports:a.retrievalCoverageReports,includeRetrievalCoverage:!1,template:a.template}),({knowledgeCoverage:c,factTraces:d,chapterCoverage:e,qualityReport:f,repairStrategies:g,finalExportGate:h}=a.qualityBundle),a.validationIssues=a.qualityBundle.validationIssues}}async function dO(a){let b=a.beforeMetrics?.map(Number)??(await a.recheck(a.originalContent)).map(Number),c=await a.apply();if(c===a.originalContent)return{content:a.originalContent,rolledBack:!1,beforeMetrics:b,afterMetrics:b};let d=(await a.recheck(c)).map(Number);return(a.shouldRollback??function(a,b){return b.some((b,c)=>b>a[c])})(b,d)?(!function(a,b){if(!a)return;let c=a.llm.patchGuardStats??(a.llm.patchGuardStats={}),d=c[b]??(c[b]={hits:0,rejects:0,rollbacks:0});d.rollbacks=(d.rollbacks??0)+1}(a.diagnostics,a.repairRound),{content:a.originalContent,rolledBack:!0,beforeMetrics:b,afterMetrics:d}):{content:c,rolledBack:!1,beforeMetrics:b,afterMetrics:d}}async function dP(a){let b=ah(a.finalMarkdown,[...a.structuredFacts,...a.factsModel.preciseFacts],{maxItems:60});if(b.length>0){let c=[[/项目名称|工程名称|项目编号|招标人|建设单位|发包人|建设地点|建设规模|招标范围|施工范围/u,/概况|基本信息|概述|总述|简介/u],[/计划工期|合同工期|天数/u,/工期|进度|施工部署|总体部署|流水/u],[/质量标准|质量目标/u,/质量/u],[/危大|安全/u,/安全/u],[/资源|材料|机械|设备|机具/u,/资源|投入|物资|机械|设备|机具|周转/u],[/面积|占地|建筑面积|长度|宽度|高度|厚度|深度|强度|等级|坡度|管径|直径|规格|跨度|周长|体积|重量/u,/概况|施工方法|主要施工|方案/u]],d=new Map,e=[],g=[];for(let f of b){let b=c.find(([a])=>a.test(f.label)),h=b?a.finalChapterDrafts.find(a=>b[1].test(a.title)):void 0;if(!h){e.push(`${f.label}=${f.value}`);continue}let i=d.get(h.id)||[];if(i.length>=12){g.push(`${f.label}=${f.value}`);continue}i.push({label:f.label,value:f.value,fact:f.fact}),d.set(h.id,i)}let h=0;for(let[b,c]of d){let d=a.finalChapterDrafts.findIndex(a=>a.id===b);if(d<0)continue;let i=a.finalChapterDrafts[d],j=a.effectiveChapters.find(a=>a.id===i.id||a.title===i.title),k=(0,b8.X5)({type:"llm_review",roleId:`agent-fact-landing-${b}`,status:"running",message:`正在落位 ${c.length} 条重要事实:${i.title}`,details:[...c.map(a=>`${a.label}=${a.value}`),...e.map(a=>`跳过:${a}(无匹配章节)`),...g.map(a=>`超限跳过:${a}`)]},{subtitle:"事实落位修复"});(0,b8.fx)(a.progressStages,k),(0,b8.fx)(a.finalGateRepairStages,k),a.emitProgress(a.finalChapterDrafts,a.progressStages);let l=["【事实落位定向修复】\n下列资料事实是项目硬数据,当前正文未出现。请逐条定位到本章最合适的位置(项目概况引导段、项目基本信息表对应行或对应小节),以局部 patch 方式自然写入,保持原始数值、单位与表述口径,不得改写、换算或编造。\n不得新增、删除或合并小节;表格内补充必须保持表头结构不变;只修改与落位事实直接相关的局部文本。",c.map(a=>`- ${a.label}=${a.value}`).join("\n")].join("\n"),m=0,n=await dO({originalContent:i.content,repairRound:"fact-landing",diagnostics:a.generationDiagnostics,apply:async()=>{let b=await a.withProgressHeartbeat(()=>(0,f.l8)({template:a.template,chapter:{id:i.id,title:i.title,content:i.content,evidence:i.evidence,missingFacts:i.missingFacts,sections:i.sections},issues:c.map(a=>`已确认事实未在正文中落位:${a.label}=${a.value}`),promptTexts:l,requirement:a.requirement,forbidDrawingImages:!1,diagnostics:a.generationDiagnostics,signal:a.signal,patchGuard:(0,f.XG)("fact-landing",a.generationDiagnostics)}));return b.content&&b.content!==i.content?(m=b.appliedCount,j?(0,M.w_)(b.content,j):b.content):i.content},recheck:a=>[ah(a,c.map(a=>a.fact)).length]});n.rolledBack||n.content===i.content||(a.finalChapterDrafts[d]={...i,content:n.content},h+=m);let o=(0,b8.X5)({type:"llm_review",roleId:`agent-fact-landing-${b}`,status:n.rolledBack||0===m?"failed":"success",message:n.rolledBack?`重要事实落位已回滚:${i.title}(修复后事实缺失增多,保留修复前正文)`:m>0?`重要事实落位完成:${i.title}(${m} 处 patch)`:`重要事实落位未生效:${i.title}`,details:c.map(a=>`${a.label}=${a.value}`)},{subtitle:"事实落位修复"});(0,b8.fx)(a.progressStages,o),(0,b8.fx)(a.finalGateRepairStages,o),a.emitProgress(a.finalChapterDrafts,a.progressStages)}h>0&&(a.finalMarkdown=a.rebuildFinalMarkdown(),await a.recomputeFinalValidationBundle())}}var dQ=c(80572);function dR(a,b){if(!b)return"";let c=a.split(/\r?\n/u);for(let a=0;a<c.length;a+=1){if(!/^\s*\|/u.test(c[a])||!c[a].includes(b))continue;let d=a;for(;d>0&&/^\s*\|/u.test(c[d-1]);)d-=1;let e=a;for(;e+1<c.length&&/^\s*\|/u.test(c[e+1]);)e+=1;return c.slice(d,e+1).join("\n")}return""}function dS(a){let b=a.map(a=>a.trim().replace(/^\|/u,"").replace(/\|$/u,"").split(/(?<!\\)\|/u).map(a=>(0,M.jG)(a.trim())));if(b.length<2)return{lines:a,removed:0};let c=b.length>1&&b[1].length>0&&b[1].every(a=>/^:?-{2,}:?$/u.test(a))?1:0,d=()=>Math.max(...b.map(a=>a.length)),e=0,f=!1;for(let a=c+1;a<b.length;a+=1){let c=b[a];if(/^(?:合计|小计|总计|累计)/u.test(c[0]||""))for(let a=1;a<c.length;a+=1)""===c[a]&&(c[a]="—",f=!0)}let g=b[0],h=b.slice(c+1);if(h.length>0&&/表$/u.test(g[0]||"")&&h.every(a=>a.length>0&&""===a[a.length-1])&&h.some(a=>""!==a[0])){b[0]=g.slice(1);for(let a=c+1;a<b.length;a+=1)b[a]=b[a].slice(0,b[a].length-1);f=!0,e+=1}if(b.length>c+1){let a=[];for(let e=0;e<d();e+=1)b.slice(c+1).every(a=>""===(a[e]||""))&&a.push(e);if(a.length>0){for(let c of b)for(let b=a.length-1;b>=0;b-=1)c.splice(a[b],1);f=!0,e+=1}}let i=/^(?:—+|-+|\/|N\/A|n\/a|待定|待补充|待确认|待查|待补|若干|暂无|无数据)$/u,j=a=>/规格型号|规格|型号/u.test(b[0][a]||"");for(let a=b.length-1;a>c;a-=1)!/^(?:合计|小计|总计|累计)/u.test(b[a][0]||"")&&b[a].some((a,b)=>!(j(b)&&/^(?:—+|-+)$/u.test(a))&&(""===a||i.test(a)))&&(b.splice(a,1),f=!0,e+=1);for(let a=c+1;a<b.length;a+=1){let c=b[a];for(let a=0;a<c.length;a+=1)/^约\d/u.test(c[a]||"")&&(c[a]=(c[a]||"").replace(/^约/u,""),f=!0)}return(b.length<=c+1&&(b.splice(0,b.length),f=!0,e+=1),f)?{lines:b.map((a,b)=>b===c?`| ${a.map(()=>"---").join(" | ")} |`:`| ${a.join(" | ")} |`),removed:e}:{lines:a,removed:0}}async function dT(a){let b=(0,cg.NS)(a.finalMarkdown).filter(a=>"error"===a.level&&/空单元格|占位符单元格|列数不一致|分隔线位置不规范/u.test(a.message));if(b.length>0){let c=0,d=[],e=new Map;for(let c=0;c<b.length;c+=1){let f=b[c],g=(f.message.split(":")[1]||"").split("(")[0]?.split("、")[0]||"",h=/([“"']?([^”"'))]{2,30})[”"']?行/u.exec(f.message)?.[1]||"",i=g?a.finalChapterDrafts.findIndex(a=>{let b=a.content||"";return b.includes(g)&&(!h||b.includes(h))}):-1;if(i<0)continue;let j={chapterIndex:i,issueIndex:c,message:f.message,suggestion:f.suggestion||"",tableAnchor:g,rowAnchor:h},k=e.get(i);void 0===k?(e.set(i,d.length),d.push([j])):d[k].push(j)}let g=Math.max(1,Math.min(4,(0,dQ.z)().tableFixConcurrency||2));for(let b=0;b<d.length;b+=g){let e=d.slice(b,b+g);await Promise.all(e.map(async b=>{for(let{chapterIndex:d,issueIndex:e,message:g,suggestion:h,tableAnchor:i,rowAnchor:j}of b){let b=a.finalChapterDrafts[d],k=a.effectiveChapters.find(a=>a.id===b.id||a.title===b.title),l=(0,b8.X5)({type:"llm_review",roleId:`agent-table-fix-${b.id}-${e}`,status:"running",message:`正在修复表格数据缺失:${b.title}`,details:[g]},{subtitle:"表格数据修复"});(0,b8.fx)(a.progressStages,l),(0,b8.fx)(a.finalGateRepairStages,l),a.emitProgress(a.finalChapterDrafts,a.progressStages);let m=dR(b.content,i)||dR(a.finalMarkdown,i)||"",n=`【表格数据完整性定向修复】
46
46
  下列表格存在数据缺失缺陷:正式交付文档的表格不得出现空单元格,也不得用“—/若干/约/待定”等占位或模糊表达代替具体数据。
47
47
  缺陷表格原文(只允许修改这一张表,逐格修复;不得改动其他表格与小节):
48
48
  ${m.slice(0,2e3)}
@@ -50,24 +50,24 @@ ${m.slice(0,2e3)}
50
50
  若表格首行就是分隔线(缺表头行),必须依据表格数据内容补写一行业务表头(每列一个业务字段名),再紧跟分隔线;表头不得使用泛化字段名。
51
51
  合计/小计/总计/累计行的空单元格一律填“—”(不适用语义);规格型号列中无规格型号的小型机具(蛙式打夯机等)可填“—”(机具无型号,合法);其余单元格一律不得为空、不得用占位符,不得凭空编造型号。
52
52
  若表头第一列是表名(如“竣工清理与移交计划表”),把表名移到表格上方正文叙述中,表头从业务列名开始,并同步校正数据行列对齐。
53
- 保持表头结构与列数不变,不得新增、删除或合并小节;只修改缺陷表格相关局部文本。`,o=await dN({originalContent:b.content,repairRound:"table-repair",diagnostics:a.generationDiagnostics,apply:async()=>(function(a,b){let c=dQ(a,b);if(!c)return{content:a,removed:0};let d=dR(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 dT={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 dU(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:dT,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 dV(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 dW(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 dX={合规红线:"【合规红线定向修复】",内容质量:"【内容质量定向修复】",数据逻辑:"【数据逻辑一致性定向修复】",内容完整:"【内容完整性定向补写】",本地适配:"【属地适配定向修复】",模板化:"【模板化定向改写】",围串标残留:"【跨项目残留定向清理】"},dY={合规红线:"该章节正文存在触发废标或硬扣分的合规红线问题。请以局部 patch 方式修复:对照住建部37号令与招标文件实质性条款,将违规/缺失表述改为合规表述(如补写危大分级与审批流程、专家论证安排、实质响应内容),引用现行有效规范编号;不得删除其他合规内容。",内容质量:"该章节正文存在影响得分档位的内容质量问题。请以局部 patch 方式修复:将套话句改写为绑定本项目对象、动作、量化指标与验收闭环的具体表述(每句至少含一个本项目事实或工程对象);术语与清单特征对齐;措施按「具体动作+量化指标+验收标准」格式落地;评分项核心内容前移至小节开头。不得改动事实数据。",数据逻辑:"该章节正文存在前后矛盾或不可量化的数据逻辑问题。请以局部 patch 方式修复:以绑定资料(图纸/工程量清单/规范)为准统一唯一口径,删除矛盾数值;无法反查的数字改为定性表述,禁止编造;控制指标全部改写为可量化、可核查的表述。",内容完整:"该章节正文缺少评分点对应内容或关键要素不完整。请以局部 patch 方式补写缺失内容:内容必须绑定本项目事实与清单特征,按「具体动作+量化指标+验收标准」格式撰写,符合正文已有风格;不新增小节标题、不改动其他内容。",本地适配:"该章节正文缺少属地适配项。请以局部 patch 方式补写:属地创优目标(奖项名称以招标文件要求原文为准)、项目所在地气候专项措施、智慧工地对接项目所在地监管平台、危大属地管控要求等按缺陷描述逐项补齐,与项目实际规模相符,不得编造已获奖项或虚构平台名称。",模板化:"该章节正文被判定为模板化内容(通用表述占比超标/工艺与清单不匹配/通用句式残留)。请以局部 patch 方式改写:将通用表述替换为绑定本项目专属参数(部位、深度、高度、工程量、清单分项)的具体表述;删除“一般来说、通常情况下、按照规范施工”类通用句式;工艺名称逐字对齐清单项目特征。保持段落结构不变。",围串标残留:"该章节正文存在跨项目内容残留(其他项目名称/其他标段参数/其他城市地名/旧模板遗留)。请以局部 patch 方式清理:删除残留内容并改写为绑定本项目的对应表述;如残留内容无本项目对应物,直接删除相关句子。"},dZ=[{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})(),d_={否决级:0,高风险:1,中风险:2,低风险:3},d0={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 d1(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 d2(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");(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}
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
 
57
- ${a}`:a;return(g&&f.push(g),f.length<=1)?[a]:f.map((b,c)=>({...a,title:`${a.title}(分段 ${c+1}/${f.length})`,content:b}))}(c,b));let e=d1(d,b);if(e.length>c){let a=d.reduce((a,b)=>a+(0,h.V7)(b.content),0),f=Math.max(b,Math.ceil(a/Math.max(1,c)));for(;e.length>c&&f<a;)e=d1(d,f=Math.min(a,Math.ceil(1.3*f)+1))}return e}function d3(a){return"否决级"===a||"高风险"===a||"低风险"===a?a:"中风险"}function d4(a){let b=new Set;return a.filter(a=>{let c=`${a.dimension}|${(a.quote||"").replace(/\s+/gu,"").slice(0,24)}`;return!b.has(c)&&(b.add(c),!0)})}async function d5(a,b,c,d){let e=a.map(a=>`### ${a.title}
57
+ ${a}`:a;return(g&&f.push(g),f.length<=1)?[a]:f.map((b,c)=>({...a,title:`${a.title}(分段 ${c+1}/${f.length})`,content:b}))}(c,b));let e=d2(d,b);if(e.length>c){let a=d.reduce((a,b)=>a+(0,h.V7)(b.content),0),f=Math.max(b,Math.ceil(a/Math.max(1,c)));for(;e.length>c&&f<a;)e=d2(d,f=Math.min(a,Math.ceil(1.3*f)+1))}return e}function d4(a){return"否决级"===a||"高风险"===a||"低风险"===a?a:"中风险"}function d5(a){let b=new Set;return a.filter(a=>{let c=`${a.dimension}|${(a.quote||"").replace(/\s+/gu,"").slice(0,24)}`;return!b.has(c)&&(b.add(c),!0)})}async function d6(a,b,c,d){let e=a.map(a=>`### ${a.title}
58
58
  ${a.content}`).join("\n\n"),f=await (0,aA.bb)((0,bc.y4)("你是对标合肥青天大模型的施工组织设计全维度专职校验专员,精通青天大模型全维度评审逻辑、扣分规则与模板化降档机制。\n仅对标书做客观合规校验与问题定位,不润色、不创作、不补充方案内容;所有判定均要有明确依据与原文佐证,不得主观臆断;只输出结构化问题清单 JSON。\n\n【对标依据(唯一校验标准,不得自行增减规则)】\n1. 国家规范:《危险性较大的分部分项工程安全管理规定》(住建部令第37号)及安徽省实施细则\n2. 本地规则:安徽省建筑施工扬尘治理六个百分百标准、安徽省危大工程管控细则、智慧工地监管要求\n3. 评审逻辑:青天大模型九大评审维度(形式格式、内容完整、合规红线、内容质量、数据逻辑、原创围串标、本地适配、语义匹配、模板化判定)\n4. 模板化判定规则:空话套话密集、无项目专属参数、工艺不匹配清单、跨项目内容残留、多模板拼接断裂,均判定为模板化内容,按严重程度触发扣分、整体降档;判定阈值:重度(通用表述占比≥40%)、中度(20%-40%)、轻度(<20%)\n5. 项目专属:招标文件实质性要求、评标办法评分细则、工程量清单项目特征、施工图纸核心参数\n\n【本评审轮维度范围(Markdown 正文层可判定维度)】\n一、内容完整性:评分点全覆盖——招标评分办法列出的打分点(如工期保证措施、质量通病防治)必须在正文找到对应章节或段落,不得遗漏;工程概况、施工部署、总平面布置、进度计划、主要施工方法、资源配置、质量保证、安全生产、文明环保、危大专项、应急预案、重难点、季节性施工等要素完整。\n二、合规红线(硬红线,可触发否决):\n 1. 实质性条款全响应:★号废标条款、实质性要求均有具体响应内容,不只用“满足、符合”\n 2. 危大工程识别准确:对照住建部37号令目录,无漏判、错判;超危大工程明确标注等级\n 3. 危大管理流程合规:一般危大明确“施工单位技术负责人+总监理工程师”审批;超危大明确专家论证安排\n 4. 强制性条文合规:所有施工工艺、安全措施符合国家规范强条,无违规表述\n 5. 规范依据有效:引用的规范、图集、标准均为现行有效版本,编号与名称准确\n 6. 工期质量目标合规:工期、质量、安全目标完全响应招标文件,无偏离\n三、内容质量(语义匹配,决定得分档位):\n 1. 核心章节无空话套话:施工方法、危大工程、质量安全等核心章节无无实质动作的套话表述\n 2. 专业术语全程统一:全文术语与招标文件、工程量清单原文一致,无近义词替换、自行简化\n 3. 工艺匹配项目实际:施工工艺对应清单项目特征,贴合本项目场景,非通用模板堆砌\n 4. 措施具象可落地:所有管理措施均为「具体动作+量化指标+验收标准」格式,可执行可核查\n 5. 重难点针对性强(三级判定):识别精准性(是否命中本项目专属重难点,有无遗漏或误判);归因合理性(对成因、风险来源做具体归因,非仅复述现象);对策匹配度(针对[具体原因]→采取[具体工艺/技术手段]→达到[量化控制目标]的闭环,模板化对策如“加强监测、严格按规范施工”判定为无效对策)\n 6. 得分点前置:每个评分项核心内容放在章节开头显眼位置,不藏于段落深处\n四、数据与逻辑(交叉校验,隐形扣分):\n 1. 核心数据全文一致:工期、工程量、人员数量、设备型号、质量目标等核心数据前后统一,无矛盾\n 2. 工艺参数合规:施工工艺参数、安全质量指标符合国家规范与地方标准,与清单项目特征完全匹配\n 3. 资源配置合理:人员、设备数量匹配项目规模与工期,无明显夸大或不足\n 4. 进度逻辑自洽:工序先后顺序符合施工常理,关键线路清晰,节点工期匹配总工期\n 5. 指标全部可量化:质量、安全、进度控制指标可量化、可核查,主要分项工程有对应量化工艺指标\n五、原创与围串标(雷达检测,一票否决):无同错同漏(无模板化错别字、错误数据);跨项目内容零残留(无其他项目名称、其他标段参数、其他城市地名、旧模板遗留内容);内容拼接逻辑一致(无语义跳跃、多模板碎片拼接痕迹)。\n六、属地适配(安徽省专属加分项):\n 1. 扬尘治理六个百分百:完整覆盖六项要求(工地周边100%围挡、物料堆放100%覆盖、出入车辆100%冲洗、施工现场地面100%硬化、拆迁工地100%湿法作业、渣土车辆100%密闭运输)\n 2. 属地创优目标:明确招标文件要求的省市级奖项(奖项名称以招标文件原文为准)及配套管控措施\n 3. 季节性施工适配:结合项目所在地(安徽省)梅雨、高温、冬季气候特点制定专项措施,非通用模板\n 4. 智慧工地属地对接:人员实名制、塔机监控、扬尘监测等系统对接项目所在地监管平台\n 5. 危大属地管控要求:深基坑第三方监测、沟槽验收挂牌、起重机械平台联网等要求落地\n七、模板化套用专项(核心降档判定):\n 1. 项目专属信息绑定率:核心得分章节中绑定本项目专属参数(部位、深度、高度、工程量、清单分项)的句子占比≥80%\n 2. 通用模板句式零残留:无“一般来说、通常情况下、常规施工、按照规范施工”等通用模板固定句式\n 3. 工艺清单匹配度:核心施工工艺对应本项目清单分项,无大量清单外的通用工艺堆砌\n 4. 套话密度达标:核心章节空话套话占比≤10%,无大面积集中套话(量化判定)\n\n【风险等级判定标准】\n- 否决级:直接触发废标、投标无效的问题\n- 高风险:单一项扣分≥3分,或触发整体降档、重度模板化\n- 中风险:单一项扣分1-2分,中度模板化\n- 低风险:不直接扣分,影响整体观感的优化项\n\n【输出铁律】\n1. 每条问题必须附带章节位置与原文片段(直接引用正文原句),不得只给结论不给依据\n2. 每条问题必须标注所属维度、风险等级、对标依据\n3. 模板化判定必须有量化数据支撑,不得主观定性\n4. 只输出问题清单 JSON,不输出修改建议、不补充方案内容\n5. 本块内未发现问题的维度不得强行编造问题;不确定的不报\n6. 招标对标材料中已明确的数字事实与硬性要求(工程规模、工期、质量目标、创优要求、绿色等级、智慧工地等级、装配率、危大工程参数等),必须逐项核对正文表述是否一致:不一致、矛盾、缺失响应的必须报出;正文出现的合规数值(高温停工阈值、危大判定线、专家论证程序等)必须与国家规范与对标材料核对,错误必报"),function(a){let b=a.tenderContext?`【招标对标材料(核对基准,不得偏离)】
59
59
  ${a.tenderContext}`:a.requirement?`招标文件要求摘要:${a.requirement}`:"",c=a.knownConflictLines?`【确定性跨章数据一致性预扫描(系统预检出的全文疑似矛盾清单,补足分块评审盲区)】
60
60
  ${a.knownConflictLines}
61
- 以上为确定性扫描的疑似矛盾:逐项核对正文,确认为真实矛盾(同一口径多值/体系并存)必须按数据逻辑维度报出并给出正确定位;确认口径合法(不同对象/组合表述/非关键字段)的不报。`:"";return[`评审对象:${a.projectName} 施工组织设计正文(全文分块评审)`,b,c,"","请按系统提示词中的校验标准逐维度评审以下正文块,输出本块全部检出问题:",'JSON 结构:{"issues":[{"dimension":"维度名(合规红线/内容质量/数据逻辑/内容完整/本地适配/模板化/围串标残留)","location":"问题所在章节标题","quote":"问题原文片段(正文原句,20-80字)","riskLevel":"否决级/高风险/中风险/低风险","basis":"对标依据(规范或维度条款)","description":"问题描述(含量化依据)"}],"templatingLevel":"重度/中度/轻度/无"}',"",`本块为第 ${a.blockIndex}/${a.blockTotal} 块,包含章节:${a.chapterTitles.join("、")}`,"<正文块>",a.blockContent,"</正文块>"].filter(Boolean).join("\n")}({...b,chapterTitles:a.map(a=>a.title),blockContent:e}),{maxTokens:1800,temperature:0,signal:d,diagnostics:c,schema:d0,taskKind:"structuredGeneration",disableThinkingBoost:!0,prefixKey:"full-dimension-review"});if(f)return{issues:(f.issues||[]).map(a=>({...a,location:function(a,b){let c=(a||"").trim();return c?b.some(a=>a===c||a.includes(c)||c.includes(a))?c:`待核(原定位:${c.slice(0,40)})`:c}(a.location,b.headings),riskLevel:d3(a.riskLevel)})),templatingLevel:f.templatingLevel}}async function d6(a){var b;let{template:c,chapters:d,effectiveChapters:e,requirement:g,projectName:h,tenderContext:i,diagnostics:j,signal:k,heartbeat:l,onStage:m}=a,n=a=>l?l(a):a(),o={reviewed:!1,reviewCalls:0,repairCalls:0,reReviewCalls:0,issuesFound:0,fixedCount:0,remainingIssues:[],templatingLevels:[],repairedChapters:[]},p=d2(d);if(0===p.length)return o;let q=0===(b=function(a){let b=new Map;for(let c of a){let a=c.content||"";if(a)for(let d of dZ)for(let e of a.matchAll(d.pattern)){let f=(e[1]||"").replace(/\s+/gu,"");if(!f)continue;let g=a.slice(Math.max(0,(e.index||0)-12),(e.index||0)+26).replace(/\s+/gu," ").trim();if(d.contextRequired&&!d.contextRequired.test(g))continue;let h=d.normalize?d.normalize(f):f;if(!h)continue;let i=b.get(d.field)||[];i.push({value:h,chapter:c.title,snippet:g}),b.set(d.field,i)}}let c=[];for(let[a,d]of b){let b=new Set(d.map(a=>a.value)),e=new Set(d.map(a=>a.chapter));b.size>=2&&e.size>=2&&c.push({field:a,occurrences:d})}return c}(d)).length?"":b.map(a=>{let b=[...new Set(a.occurrences.map(a=>a.value))].join(" ↔ "),c=a.occurrences.slice(0,4).map(a=>`${a.chapter}:“${a.snippet}”`).join(";");return`- ${a.field}:${b}(${c})`}).join("\n"),r=function(a){let b=[];for(let c of a)for(let a of(b.push(c.title),(c.content||"").split("\n"))){let c=/^#{2,4}\s+(.+)$/u.exec(a.trim());c&&b.push(c[1].trim())}return b}(d),s=(0,f.XG)("qingtian-review-repair",j),t=[];for(let a=0;a<p.length;a+=1){let b=p[a];m?.({status:"running",message:`全维度评审:第 ${a+1}/${p.length} 块(${b.map(a=>a.title).join("、")})`,details:[]});let c=await n(()=>d5(b,{projectName:h||"本项目",requirement:g,tenderContext:i,knownConflictLines:q,headings:r,blockIndex:a+1,blockTotal:p.length},j,k));if(o.reviewCalls+=1,!c){j&&!/qingtian-review/u.test(j.llm.lastError||"")&&(j.llm.lastError=`qingtian-review: 第 ${a+1}/${p.length} 块评审无响应,跳过(${j.llm.lastError||"无响应"})`),m?.({status:"failed",message:`全维度评审:第 ${a+1}/${p.length} 块无响应,跳过`,details:[]});continue}c.templatingLevel&&"无"!==c.templatingLevel&&o.templatingLevels.push(c.templatingLevel),t.push(...c.issues||[])}let u=d4(t).sort((a,b)=>d_[a.riskLevel]-d_[b.riskLevel]);if(o.issuesFound=u.length,0===u.length)return m?.({status:"success",message:`全维度评审完成:${p.length} 块评审未检出问题`,details:[]}),o.reviewed=!0,o;let v=u.filter(a=>"否决级"!==a.riskLevel&&"高风险"!==a.riskLevel),w=u.filter(a=>"否决级"===a.riskLevel||"高风险"===a.riskLevel),x=Number.MAX_SAFE_INTEGER;for(let a=0;a<d$&&w.length>0;a+=1){let b=[];for(let a of w){let c=function(a,b){if(a.location){let c=b.findIndex(b=>b.title===a.location||b.title.includes(a.location)||a.location.includes(b.title));if(c>=0)return c}let c=(a.quote||"").replace(/\s+/gu,"").slice(0,20);return c.length>=8?b.findIndex(a=>(a.content||"").replace(/[\s,,]/gu,"").includes(c)):-1}(a,d);if(c<0)continue;let e=b.find(a=>a.chapterIndex===c);e?e.issues.length<12&&e.issues.push(a):b.push({chapterIndex:c,issues:[a]})}if(0===b.length)break;let i=0;for(let h of b){let b=d[h.chapterIndex],l=e.find(a=>a.id===b.id||a.title===b.title);m?.({status:"running",message:`全维度评审修复(第 ${a+1} 轮):${b.title}(${h.issues.length} 处)`,details:h.issues.map(a=>`[${a.riskLevel}]${a.description.slice(0,48)}`)});let p=await n(()=>(0,f.l8)({template:c,chapter:{id:b.id,title:b.title,content:b.content,evidence:b.evidence,missingFacts:b.missingFacts,sections:b.sections},issues:h.issues.map(a=>`[${a.riskLevel}][${a.dimension}] ${a.description}(原文:${a.quote})`),promptTexts:function(a){let b=a[0],c=dX[b?.dimension||""]||"【全维度评审定向修复】";return[c,dY[b?.dimension||""]||"该章节正文存在全维度评审检出的质量问题。请以局部 patch 方式结合缺陷描述逐项修复:精确定位问题句,删除错误内容或按专业规范改写,保持其余内容与事实数据不变。","只修复下列问题,其余内容保持原样:",a.map((a,b)=>`问题 ${b+1}:
61
+ 以上为确定性扫描的疑似矛盾:逐项核对正文,确认为真实矛盾(同一口径多值/体系并存)必须按数据逻辑维度报出并给出正确定位;确认口径合法(不同对象/组合表述/非关键字段)的不报。`:"";return[`评审对象:${a.projectName} 施工组织设计正文(全文分块评审)`,b,c,"","请按系统提示词中的校验标准逐维度评审以下正文块,输出本块全部检出问题:",'JSON 结构:{"issues":[{"dimension":"维度名(合规红线/内容质量/数据逻辑/内容完整/本地适配/模板化/围串标残留)","location":"问题所在章节标题","quote":"问题原文片段(正文原句,20-80字)","riskLevel":"否决级/高风险/中风险/低风险","basis":"对标依据(规范或维度条款)","description":"问题描述(含量化依据)"}],"templatingLevel":"重度/中度/轻度/无"}',"",`本块为第 ${a.blockIndex}/${a.blockTotal} 块,包含章节:${a.chapterTitles.join("、")}`,"<正文块>",a.blockContent,"</正文块>"].filter(Boolean).join("\n")}({...b,chapterTitles:a.map(a=>a.title),blockContent:e}),{maxTokens:1800,temperature:0,signal:d,diagnostics:c,schema:d1,taskKind:"structuredGeneration",disableThinkingBoost:!0,prefixKey:"full-dimension-review"});if(f)return{issues:(f.issues||[]).map(a=>({...a,location:function(a,b){let c=(a||"").trim();return c?b.some(a=>a===c||a.includes(c)||c.includes(a))?c:`待核(原定位:${c.slice(0,40)})`:c}(a.location,b.headings),riskLevel:d4(a.riskLevel)})),templatingLevel:f.templatingLevel}}async function d7(a){var b;let{template:c,chapters:d,effectiveChapters:e,requirement:g,projectName:h,tenderContext:i,diagnostics:j,signal:k,heartbeat:l,onStage:m}=a,n=a=>l?l(a):a(),o={reviewed:!1,reviewCalls:0,repairCalls:0,reReviewCalls:0,issuesFound:0,fixedCount:0,remainingIssues:[],templatingLevels:[],repairedChapters:[]},p=d3(d);if(0===p.length)return o;let q=0===(b=function(a){let b=new Map;for(let c of a){let a=c.content||"";if(a)for(let d of d$)for(let e of a.matchAll(d.pattern)){let f=(e[1]||"").replace(/\s+/gu,"");if(!f)continue;let g=a.slice(Math.max(0,(e.index||0)-12),(e.index||0)+26).replace(/\s+/gu," ").trim();if(d.contextRequired&&!d.contextRequired.test(g))continue;let h=d.normalize?d.normalize(f):f;if(!h)continue;let i=b.get(d.field)||[];i.push({value:h,chapter:c.title,snippet:g}),b.set(d.field,i)}}let c=[];for(let[a,d]of b){let b=new Set(d.map(a=>a.value)),e=new Set(d.map(a=>a.chapter));b.size>=2&&e.size>=2&&c.push({field:a,occurrences:d})}return c}(d)).length?"":b.map(a=>{let b=[...new Set(a.occurrences.map(a=>a.value))].join(" ↔ "),c=a.occurrences.slice(0,4).map(a=>`${a.chapter}:“${a.snippet}”`).join(";");return`- ${a.field}:${b}(${c})`}).join("\n"),r=function(a){let b=[];for(let c of a)for(let a of(b.push(c.title),(c.content||"").split("\n"))){let c=/^#{2,4}\s+(.+)$/u.exec(a.trim());c&&b.push(c[1].trim())}return b}(d),s=(0,f.XG)("qingtian-review-repair",j),t=[];for(let a=0;a<p.length;a+=1){let b=p[a];m?.({status:"running",message:`全维度评审:第 ${a+1}/${p.length} 块(${b.map(a=>a.title).join("、")})`,details:[]});let c=await n(()=>d6(b,{projectName:h||"本项目",requirement:g,tenderContext:i,knownConflictLines:q,headings:r,blockIndex:a+1,blockTotal:p.length},j,k));if(o.reviewCalls+=1,!c){j&&!/qingtian-review/u.test(j.llm.lastError||"")&&(j.llm.lastError=`qingtian-review: 第 ${a+1}/${p.length} 块评审无响应,跳过(${j.llm.lastError||"无响应"})`),m?.({status:"failed",message:`全维度评审:第 ${a+1}/${p.length} 块无响应,跳过`,details:[]});continue}c.templatingLevel&&"无"!==c.templatingLevel&&o.templatingLevels.push(c.templatingLevel),t.push(...c.issues||[])}let u=d5(t).sort((a,b)=>d0[a.riskLevel]-d0[b.riskLevel]);if(o.issuesFound=u.length,0===u.length)return m?.({status:"success",message:`全维度评审完成:${p.length} 块评审未检出问题`,details:[]}),o.reviewed=!0,o;let v=u.filter(a=>"否决级"!==a.riskLevel&&"高风险"!==a.riskLevel),w=u.filter(a=>"否决级"===a.riskLevel||"高风险"===a.riskLevel),x=Number.MAX_SAFE_INTEGER;for(let a=0;a<d_&&w.length>0;a+=1){let b=[];for(let a of w){let c=function(a,b){if(a.location){let c=b.findIndex(b=>b.title===a.location||b.title.includes(a.location)||a.location.includes(b.title));if(c>=0)return c}let c=(a.quote||"").replace(/\s+/gu,"").slice(0,20);return c.length>=8?b.findIndex(a=>(a.content||"").replace(/[\s,,]/gu,"").includes(c)):-1}(a,d);if(c<0)continue;let e=b.find(a=>a.chapterIndex===c);e?e.issues.length<12&&e.issues.push(a):b.push({chapterIndex:c,issues:[a]})}if(0===b.length)break;let i=0;for(let h of b){let b=d[h.chapterIndex],l=e.find(a=>a.id===b.id||a.title===b.title);m?.({status:"running",message:`全维度评审修复(第 ${a+1} 轮):${b.title}(${h.issues.length} 处)`,details:h.issues.map(a=>`[${a.riskLevel}]${a.description.slice(0,48)}`)});let p=await n(()=>(0,f.l8)({template:c,chapter:{id:b.id,title:b.title,content:b.content,evidence:b.evidence,missingFacts:b.missingFacts,sections:b.sections},issues:h.issues.map(a=>`[${a.riskLevel}][${a.dimension}] ${a.description}(原文:${a.quote})`),promptTexts:function(a){let b=a[0],c=dY[b?.dimension||""]||"【全维度评审定向修复】";return[c,dZ[b?.dimension||""]||"该章节正文存在全维度评审检出的质量问题。请以局部 patch 方式结合缺陷描述逐项修复:精确定位问题句,删除错误内容或按专业规范改写,保持其余内容与事实数据不变。","只修复下列问题,其余内容保持原样:",a.map((a,b)=>`问题 ${b+1}:
62
62
  - 位置:${a.location}
63
63
  - 原文片段:${a.quote}
64
64
  - 风险等级:${a.riskLevel}
65
65
  - 对标依据:${a.basis}
66
- - 问题描述:${a.description}`).join("\n\n")].join("\n")}(h.issues),requirement:g,forbidDrawingImages:!1,diagnostics:j,signal:k,patchGuard:s}));o.repairCalls+=1;let q=!!(p.content&&p.content!==b.content);q&&(d[h.chapterIndex]={...b,content:l?(0,M.w_)(p.content,l):p.content},o.fixedCount+=p.appliedCount,o.repairedChapters.push(b.title),i+=1),m?.({status:q?"success":"failed",message:q?`全维度评审修复完成:${b.title}(${p.appliedCount} 处 patch)`:`全维度评审修复未生效:${b.title}`,details:h.issues.map(a=>`[${a.riskLevel}]${a.description.slice(0,48)}`)})}if(0===i)break;let l=new Set(b.map(a=>d[a.chapterIndex].id)),p=d2(d.filter(a=>l.has(a.id)),9e3,2),t=[];for(let b=0;b<p.length;b+=1){let c=p[b];m?.({status:"running",message:`全维度评审复评(第 ${a+1} 轮):第 ${b+1}/${p.length} 块(${c.map(a=>a.title).join("、")})`,details:[]});let d=await n(()=>d5(c,{projectName:h||"本项目",requirement:g,knownConflictLines:q,headings:r,blockIndex:b+1,blockTotal:p.length},j,k));if(o.reReviewCalls+=1,!d){m?.({status:"failed",message:`全维度评审复评:第 ${b+1}/${p.length} 块无响应,跳过`,details:[]});continue}t.push(...(d.issues||[]).filter(a=>"否决级"===d3(a.riskLevel)||"高风险"===d3(a.riskLevel)))}if(w=d4(t),a>=1&&w.length>=x)break;x=w.length}let y=[];return y.push(...w),y.push(...v),o.remainingIssues=d4(y),o.reviewed=!0,m?.({status:"success",message:`全维度评审完成:${p.length} 块评审检出 ${o.issuesFound} 处问题,修复 ${o.fixedCount} 处 patch,剩余 ${o.remainingIssues.length} 处`,details:o.remainingIssues.slice(0,6).map(a=>`[${a.riskLevel}][${a.dimension}]${a.description.slice(0,40)}`)}),o}async function d7(a){let b=await d6({template:a.template,chapters:a.finalChapterDrafts,effectiveChapters:a.effectiveChapters,requirement:a.requirement,projectName:a.projectMaterialSummary?.projectName||"",tenderContext:function(a){let b=[],c=a.factsModel?.canonical,d=a=>a?.value;if(c){let a=a=>Array.isArray(a)?a.map(a=>a?.value).filter(Boolean):a?.value?[a.value]:[],e=[d(c.projectIdentity?.projectName)?`项目名称:${d(c.projectIdentity.projectName)}`:"",d(c.projectIdentity?.owner)?`招标人:${d(c.projectIdentity.owner)}`:"",d(c.projectIdentity?.location)?`建设地点:${d(c.projectIdentity.location)}`:"",...a(c.projectScope?.scale).map(a=>`建设规模:${a}`),...a(c.schedule?.duration).map(a=>`计划工期:${a}`),...a(c.quality?.target).map(a=>`质量目标:${a}`)].filter(Boolean);e.length&&b.push(`工程概况事实:
66
+ - 问题描述:${a.description}`).join("\n\n")].join("\n")}(h.issues),requirement:g,forbidDrawingImages:!1,diagnostics:j,signal:k,patchGuard:s}));o.repairCalls+=1;let q=!!(p.content&&p.content!==b.content);q&&(d[h.chapterIndex]={...b,content:l?(0,M.w_)(p.content,l):p.content},o.fixedCount+=p.appliedCount,o.repairedChapters.push(b.title),i+=1),m?.({status:q?"success":"failed",message:q?`全维度评审修复完成:${b.title}(${p.appliedCount} 处 patch)`:`全维度评审修复未生效:${b.title}`,details:h.issues.map(a=>`[${a.riskLevel}]${a.description.slice(0,48)}`)})}if(0===i)break;let l=new Set(b.map(a=>d[a.chapterIndex].id)),p=d3(d.filter(a=>l.has(a.id)),9e3,2),t=[];for(let b=0;b<p.length;b+=1){let c=p[b];m?.({status:"running",message:`全维度评审复评(第 ${a+1} 轮):第 ${b+1}/${p.length} 块(${c.map(a=>a.title).join("、")})`,details:[]});let d=await n(()=>d6(c,{projectName:h||"本项目",requirement:g,knownConflictLines:q,headings:r,blockIndex:b+1,blockTotal:p.length},j,k));if(o.reReviewCalls+=1,!d){m?.({status:"failed",message:`全维度评审复评:第 ${b+1}/${p.length} 块无响应,跳过`,details:[]});continue}t.push(...(d.issues||[]).filter(a=>"否决级"===d4(a.riskLevel)||"高风险"===d4(a.riskLevel)))}if(w=d5(t),a>=1&&w.length>=x)break;x=w.length}let y=[];return y.push(...w),y.push(...v),o.remainingIssues=d5(y),o.reviewed=!0,m?.({status:"success",message:`全维度评审完成:${p.length} 块评审检出 ${o.issuesFound} 处问题,修复 ${o.fixedCount} 处 patch,剩余 ${o.remainingIssues.length} 处`,details:o.remainingIssues.slice(0,6).map(a=>`[${a.riskLevel}][${a.dimension}]${a.description.slice(0,40)}`)}),o}async function d8(a){let b=await d7({template:a.template,chapters:a.finalChapterDrafts,effectiveChapters:a.effectiveChapters,requirement:a.requirement,projectName:a.projectMaterialSummary?.projectName||"",tenderContext:function(a){let b=[],c=a.factsModel?.canonical,d=a=>a?.value;if(c){let a=a=>Array.isArray(a)?a.map(a=>a?.value).filter(Boolean):a?.value?[a.value]:[],e=[d(c.projectIdentity?.projectName)?`项目名称:${d(c.projectIdentity.projectName)}`:"",d(c.projectIdentity?.owner)?`招标人:${d(c.projectIdentity.owner)}`:"",d(c.projectIdentity?.location)?`建设地点:${d(c.projectIdentity.location)}`:"",...a(c.projectScope?.scale).map(a=>`建设规模:${a}`),...a(c.schedule?.duration).map(a=>`计划工期:${a}`),...a(c.quality?.target).map(a=>`质量目标:${a}`)].filter(Boolean);e.length&&b.push(`工程概况事实:
67
67
  ${e.join("\n")}`)}let e=(a.evaluationCriteriaItems||[]).filter(Boolean);e.length&&b.push(`评标办法技术评审条目:
68
68
  ${e.map(a=>`- ${a}`).join("\n")}`);let f=a.tenderRequirements;if(f&&f.extracted){let a=[],c=(b,c)=>{for(let d of c||[])a.push(`${b}:${d.text}`)};c("创优目标",f.awardObjectives),c("特殊质量标准",f.specialQualityStandards),c("奖项条款",f.awardClauses),f.greenBuildingGrade&&a.push(`绿色建筑等级:${f.greenBuildingGrade.text}`),f.smartSiteGrade&&a.push(`智慧工地等级:${f.smartSiteGrade.text}`),f.assemblyRate&&a.push(`装配率要求:${f.assemblyRate.text}`),c("体系基准",f.systematicBenchmarks),c("禁止性约束",f.prohibitionNotes),f.dateFabricationProhibited&&a.push("禁编日期条款:正文不得自设具体开工/竣工日期"),a.length&&b.push(`招标文件评分项要求:
69
69
  ${a.map(a=>`- ${a}`).join("\n")}`)}let g=(a.factsModel?.bills||[]).slice(0,10).map(a=>`${a.fieldName||a.key} ${a.value}`.replace(/\s+/gu," ").trim()).filter(Boolean);return g.length&&b.push(`工程量清单特征摘要:
70
- ${g.map(a=>`- ${a}`).join("\n")}`),b.join("\n\n")}({factsModel:a.factsModel,evaluationCriteriaItems:a.evaluationCriteriaItems,tenderRequirements:a.tenderRequirements}),diagnostics:a.generationDiagnostics,signal:a.signal,heartbeat:a.withProgressHeartbeat,onStage:b=>{let c=(0,b8.X5)({type:"llm_review",roleId:"agent-qingtian-review",status:b.status,message:b.message,details:b.details},{subtitle:"全维度评审"});(0,b8.fx)(a.progressStages,c),(0,b8.fx)(a.finalGateRepairStages,c),a.emitProgress(a.finalChapterDrafts,a.progressStages)}});a.qingtianReviewBlockingIssues=b.reviewed?b.remainingIssues.map(a=>{let b="否决级"===a.riskLevel||"高风险"===a.riskLevel;return{level:b?"error":"warning",severity:b?"blocker":"warning",repairability:b?"llm_repairable":"not_repair_needed",category:"qingtian_review",owner:"llm",message:`[全维度评审\xb7${a.dimension}\xb7${a.riskLevel}]${a.location?`${a.location}:`:""}${a.description}${a.quote?`(原文:“${a.quote.slice(0,40)}”)`:""}`,suggestion:a.basis}}):[],b.fixedCount>0?(a.finalMarkdown=a.rebuildFinalMarkdown(),await a.recomputeFinalValidationBundle()):a.qingtianReviewBlockingIssues.length>0&&await a.recomputeFinalValidationBundle()}var d8=c(71001),d9=c(8667);let ea=/两可|按图纸|资料[^。;;\n]{0,14}(?:未明确|两可|冲突)|支护[^。;;\n]{0,10}并存/u;async function eb(a){let{chapterDraftsFinal:b,progressStages:c,emitProgress:d}=a,e=a.globalConsistencyIssues,f=b.map(a=>a.content).join("\n\n"),g=(0,ao.t1)(f),h=await (0,be.Mv)(g.sentences,g.overviewBody?[g.overviewBody]:[]),i=0,j=0,k=0;for(let a of b){let b=a.content.split(/\r?\n/u).length,c=(0,ao.lR)(a.content),d=(0,ao.QM)(c.markdown),e=(0,ao.Vc)(d.markdown),f=(0,ao.U$)(e.markdown,h),g=b-f.split(/\r?\n/u).length;g>0&&(i+=c.removedCount+d.removedCount,j+=e.removedCount,k+=g-c.removedCount-d.removedCount-e.removedCount,a.content=f)}if(i>0||j>0||k>0){let a=b.map(a=>a.content).join("\n\n"),f=[...(0,ao.ub)(a),...(0,ao.cl)(a),...(0,ao.l4)(a,{semanticSimilarity:h})].map(a=>`${a.message};${a.suggestion||""}`);e=[...new Set([...e.filter(a=>!/表格重复|段落完全重复|概况复述/u.test(a)),...f])];let g=[i>0?`重复表格 ${i} 行`:"",j>0?`重复段落 ${j} 行`:"",k>0?`概况复述句 ${k} 行`:""].filter(Boolean).join("、");(0,b8.fx)(c,(0,b8.X5)({type:"llm_review",roleId:"post-table-dedup",status:"success",message:`补表后确定性去重:${g}`},{subtitle:"表格执行率核验"})),d(b)}let l=await (0,ao.yR)(b);if(l>0){let a=(await (0,ao.LF)(b)).map(a=>`${a.message};${a.suggestion||""}`);e=[...new Set([...e.filter(a=>!/跨章语义重复/u.test(a)),...a])],(0,b8.fx)(c,(0,b8.X5)({type:"llm_review",roleId:"post-table-semantic-dedup",status:"success",message:`补表后语义重复 strip:删除雷同段 ${l} 段`},{subtitle:"表格执行率核验"})),d(b)}return e}async function ec(a){let{effectiveChapters:b,chapterDraftsFinal:c,template:d,repairPromptTexts:e,requirement:g,signal:h,generationDiagnostics:i,progressStages:j,emitProgress:k,withProgressHeartbeat:l}=a,m=(0,d9.Xi)(b,c),n=!1;if(m.length>0)for(let a=0;a<1&&m.length>0;a+=1){(0,b8.fx)(j,(0,b8.X5)({type:"llm_review",roleId:"table-execution-repair",status:"running",message:`表格执行率修复第 ${a+1} 轮(${m.length} 个章节缺表)`},{subtitle:"表格执行率修复"})),k(c);let o=0,p=[],q=m.flatMap(a=>{let b=c.find(b=>b.title===a.chapterTitle||a.chapterTitle.includes(b.title)||b.title.includes(a.chapterTitle));return b?[{gap:a,draft:b}]:[]}),r=async a=>{let{gap:j,draft:k}=a,m=[...new Set(j.plans.map(a=>a.moduleTitle).filter(Boolean))],n=m.length>0?k.evidence.filter(a=>{let b=a.sectionTitle;return!b||m.some(a=>b===a||b.includes(a)||a.includes(b))}):k.evidence,o={id:k.id,title:k.title,content:k.content,evidence:n.length?n:k.evidence,missingFacts:k.missingFacts||[],sections:k.sections},p=`计划表格缺失(计划 ${j.planned} 张,实际仅 ${j.actual} 张):${j.plans.map(a=>`${a.title}(表头:${a.fields.map(a=>a.name).join("、")})`).join(";")}。必须按表头字段补齐这些 markdown 表格并紧跟相关小节输出,不得删除已有正文;每个表格前须有 1~2 句引导叙述说明表格作用与关键结论,表格不能替代小节正文;deriveFromProject 字段基于项目工程量、总工期与工序流水按定额工效推导具体数值,projectFactOnly 字段不得编造。`;return dN({originalContent:k.content,repairRound:"table-execution-repair",diagnostics:i,beforeMetrics:[Math.max(0,j.planned-j.actual)],apply:async()=>{let a=await l(()=>(0,f.X6)(i,`table-execution-repair:${k.id}`,()=>(0,f.l8)({template:d,chapter:o,issues:[p],promptTexts:e,requirement:g,forbidDrawingImages:!0,diagnostics:i,signal:h,patchGuard:(0,f.XG)("table-execution-repair",i),maxTokens:Math.min(12e3,Math.max(6e3,1200*j.plans.length))})));return a.content&&a.content!==k.content?a.content:k.content},recheck:a=>{let d=c.map(b=>b.id===k.id?{title:b.title,content:a,sections:b.sections}:b);return[(0,d9.Xi)(b,d).filter(a=>a.chapterTitle===k.title||a.chapterTitle===j.chapterTitle||k.title.includes(a.chapterTitle)||a.chapterTitle.includes(k.title)).reduce((a,b)=>a+Math.max(0,b.planned-b.actual),0)]}})},s=await Promise.allSettled(q.map(a=>r(a))),t=new Set;if(s.forEach((a,b)=>{if("rejected"===a.status){if(h?.aborted)throw a.reason;p.push(`${q[b].gap.chapterTitle}:修复异常(${a.reason instanceof Error?a.reason.message:"未知错误"})`);return}let c=a.value,{gap:d,draft:e}=q[b];if(c.rolledBack)return void p.push(`${d.chapterTitle}:修复后计划表格缺口增多,已回滚本轮修改`);c.content&&c.content!==e.content&&!t.has(e.id)?(e.content=c.content,t.add(e.id),o+=1):t.has(e.id)||p.push(`${d.chapterTitle}:缺 ${d.plans.map(a=>a.title).join("、")}(${i?.llm.lastError||"补表 patch 未应用"})`)}),0===o){(0,b8.fx)(j,(0,b8.X5)({type:"llm_review",roleId:"table-execution-repair",status:"failed",message:`表格执行率修复第 ${a+1} 轮:补表 patch 未应用(${m.length} 个章节缺表)`,details:p},{subtitle:"表格执行率修复"})),k(c);break}n=!0,k(c),m=(0,d9.Xi)(b,c),(0,b8.fx)(j,(0,b8.X5)({type:"llm_review",roleId:"table-execution-repair",status:m.length>0?"failed":"success",message:m.length>0?`表格执行率修复第 ${a+1} 轮完成,仍有 ${m.length} 个章节缺表`:`表格执行率修复第 ${a+1} 轮完成`},{subtitle:"表格执行率修复"})),(0,b8.fx)(j,(0,b8.X5)({type:"llm_review",roleId:"table-execution-review",status:m.length>0?"failed":"success",message:m.length>0?`表格执行率复检:仍有 ${m.length} 个章节缺表`:"表格执行率复检通过"},{subtitle:"表格执行率核验"}))}return{tableFixApplied:n}}async function ed(a){let{chapterDraftsFinal:b,template:c,repairPromptTexts:d,requirement:e,signal:g,generationDiagnostics:h,progressStages:i,emitProgress:j,withProgressHeartbeat:k}=a,l=!1;for(let a=0;a<2;a+=1){let m=b.map(a=>a.content).join("\n\n"),n=await (0,c_.Bt)(m),o=await (0,c_.gE)(m),p=n.ratio>=.1||n.vagueSemanticSentences>0,q=o.countermeasures>0&&o.ratio<.5;if(!p&&!q)break;let r=new Map(b.map(a=>[a.id,a.content])),s=p?await dz(b):[],t=(q?o.entries.filter(a=>!a.attributed||!a.quantified).slice(0,20):[]).flatMap(a=>{let c=a.text.replace(/\s+/gu,""),d=b.find(a=>a.content.replace(/\s+/gu,"").includes(c));return d?[{chapter:d,text:a.text,missingAttribution:!a.attributed,missingTarget:!a.quantified}]:[]}),u=b.flatMap(a=>{let b=s.filter(b=>(b.chapterId||b.chapterTitle)===(a.id||a.title)).map(a=>a.sentence),c=t.filter(b=>b.chapter.id===a.id).map(a=>({text:a.text,missingAttribution:a.missingAttribution,missingTarget:a.missingTarget}));return b.length>0||c.length>0?[{chapter:a,sentences:b,difficulty:c}]:[]});if(0===u.length)break;(0,b8.fx)(i,(0,b8.X5)({type:"llm_review",roleId:"templating-repair",status:"running",message:`模板化修复第 ${a+1} 轮:套话句占比 ${(100*n.ratio).toFixed(1)}%,重难点双达标 ${(100*o.ratio).toFixed(0)}%(${u.length} 章)`},{subtitle:"模板化修复"})),j(b);let v=0,w=async a=>{let b=[];a.sentences.length>0&&b.push(`第 1~${a.sentences.length} 条目标原文是本章已检出的空话套话句:逐条删除,或改写为“责任岗位 + 执行动作 + 量化标准 + 检查频次 + 整改时限”的具体措施表述;改写必须使用本章证据摘要中的项目事实与量化数据,不得凭空编造数值;属必须保留的合规承诺句可保留但须具体化到可核查。`);let i=a.sentences.length+1;for(let c of a.difficulty){let a=[c.missingAttribution?"归因句(该难点的成因/风险来源)":"",c.missingTarget?"量化控制目标(数值+单位,来自本章证据摘要或行业规范,不得编造)":""].filter(Boolean).join("与");b.push(`第 ${i} 条目标原文是重难点分析条目,缺少${c.missingAttribution&&c.missingTarget?"成因归因与量化控制目标":a}:保留条目原有事实与数值,在其内补充${a}。`),i+=1}return b.push("清单之外的内容一律不得改动;不得删除任何小节标题、表格与数值参数。"),k(()=>(0,f.X6)(h,`templating-repair:${a.chapter.id}`,()=>(0,f.l8)({template:c,chapter:{id:a.chapter.id,title:a.chapter.title,content:a.chapter.content,evidence:a.chapter.evidence||[],missingFacts:a.chapter.missingFacts||[],sections:a.chapter.sections},issues:[b.join("\n")],promptTexts:d,requirement:e,forbidDrawingImages:!0,diagnostics:h,signal:g,patchGuard:(0,f.XG)("templating-repair",h),anchorTexts:[...a.sentences,...a.difficulty.map(a=>a.text)],maxTokens:6e3,evidenceChars:5e3})))},x=await dN({originalContent:m,repairRound:"templating-repair",diagnostics:h,beforeMetrics:[n.ratio,o.ratio],apply:async()=>((await Promise.allSettled(u.map(a=>w(a)))).forEach((a,b)=>{if("rejected"===a.status){if(g?.aborted)throw a.reason;console.error("[gen] templating repair failed:",a.reason);return}let c=a.value,{chapter:d}=u[b];c.content&&c.content!==d.content&&(d.content=c.content,v+=1)}),j(b),b.map(a=>a.content).join("\n\n")),recheck:async a=>{let b=await (0,c_.Bt)(a),c=await (0,c_.gE)(a);return[b.ratio,c.ratio]},shouldRollback:(a,b)=>b[0]>a[0]+.01&&!(b[1]>a[1]+.01)});if(0===v){(0,b8.fx)(i,(0,b8.X5)({type:"llm_review",roleId:"templating-repair",status:"failed",message:`模板化修复第 ${a+1} 轮:修复 patch 未落地(${u.length} 章锚点失配或 LLM 未产出)`,details:[`套话句占比 ${(100*n.ratio).toFixed(1)}% 未收敛,重难点双达标 ${(100*o.ratio).toFixed(0)}%`]},{subtitle:"模板化修复"}));break}if(x.rolledBack){for(let a of b){let b=r.get(a.id);void 0!==b&&(a.content=b)}(0,b8.fx)(i,(0,b8.X5)({type:"llm_review",roleId:"templating-repair",status:"failed",message:`模板化修复第 ${a+1} 轮:修复后套话句占比 ${(100*x.afterMetrics[0]).toFixed(1)}% > 修复前 ${(100*x.beforeMetrics[0]).toFixed(1)}%,已回滚本轮修改`,details:["LLM 重写未收敛,回滚保留修复前正文"]},{subtitle:"模板化修复"})),j(b);break}l=!0}if(l){let a=b.map(a=>a.content).join("\n\n"),c=await (0,c_.Bt)(a),d=await (0,c_.gE)(a),e=c.ratio<.1&&(!d.heavyTemplated||0===d.countermeasures);(0,b8.fx)(i,(0,b8.X5)({type:"llm_review",roleId:"templating-repair",status:e?"success":"failed",message:`模板化修复完成:套话句占比 ${(100*c.ratio).toFixed(1)}%(达标线 ≤10%),重难点归因+量化双达标 ${(100*d.ratio).toFixed(0)}%(达标线 ≥50%)`,details:e?[]:["未完全收敛:残留套话/缺要素条目由评分侧展示,不阻断交付"]},{subtitle:"模板化修复"})),j(b)}return{templatingFixApplied:l}}async function ee(a){let{chapterDraftsFinal:b,projectContext:c,template:d,repairPromptTexts:e,requirement:g,signal:h,generationDiagnostics:i,progressStages:j,emitProgress:k,withProgressHeartbeat:l}=a,m=/^#{3,4}\s+(?:\d+(?:\.\d+)*\s+)?(?:项目主要施工\s*内容|主要施工\s*内容|主要分部分项工程施工方案|主要分部分项施工方案|主要施工方法)\s*$/u,n=!1,o=0,p=0,q=(0,aj.sh)(c,b.flatMap(a=>a.evidence||[]));if(q.length>0){let a=/项目主要施工内容|主要施工内容|主要分部分项工程施工方案|主要分部分项施工方案|主要施工方法/u;for(let c of b){if(c.content.split("\n").some(a=>m.test(a.trim())))continue;let d=(c.sections||[]).find(b=>a.test(b));if(!d)continue;Array.isArray(c.sections)||(c.sections=[]);let e=c.sections.findIndex(b=>a.test(b)),f=e>=0?e+1:c.sections.length+1,g=`### ${b.indexOf(c)+1}.${f} ${d}`;c.content=`${c.content.replace(/\s+$/u,"")}
70
+ ${g.map(a=>`- ${a}`).join("\n")}`),b.join("\n\n")}({factsModel:a.factsModel,evaluationCriteriaItems:a.evaluationCriteriaItems,tenderRequirements:a.tenderRequirements}),diagnostics:a.generationDiagnostics,signal:a.signal,heartbeat:a.withProgressHeartbeat,onStage:b=>{let c=(0,b8.X5)({type:"llm_review",roleId:"agent-qingtian-review",status:b.status,message:b.message,details:b.details},{subtitle:"全维度评审"});(0,b8.fx)(a.progressStages,c),(0,b8.fx)(a.finalGateRepairStages,c),a.emitProgress(a.finalChapterDrafts,a.progressStages)}});a.qingtianReviewBlockingIssues=b.reviewed?b.remainingIssues.map(a=>{let b="否决级"===a.riskLevel||"高风险"===a.riskLevel;return{level:b?"error":"warning",severity:b?"blocker":"warning",repairability:b?"llm_repairable":"not_repair_needed",category:"qingtian_review",owner:"llm",message:`[全维度评审\xb7${a.dimension}\xb7${a.riskLevel}]${a.location?`${a.location}:`:""}${a.description}${a.quote?`(原文:“${a.quote.slice(0,40)}”)`:""}`,suggestion:a.basis}}):[],b.fixedCount>0?(a.finalMarkdown=a.rebuildFinalMarkdown(),await a.recomputeFinalValidationBundle()):a.qingtianReviewBlockingIssues.length>0&&await a.recomputeFinalValidationBundle()}var d9=c(71001),ea=c(8667);let eb=/两可|按图纸|资料[^。;;\n]{0,14}(?:未明确|两可|冲突)|支护[^。;;\n]{0,10}并存/u;async function ec(a){let{chapterDraftsFinal:b,progressStages:c,emitProgress:d}=a,e=a.globalConsistencyIssues,f=b.map(a=>a.content).join("\n\n"),g=(0,ao.t1)(f),h=await (0,be.Mv)(g.sentences,g.overviewBody?[g.overviewBody]:[]),i=0,j=0,k=0;for(let a of b){let b=a.content.split(/\r?\n/u).length,c=(0,ao.lR)(a.content),d=(0,ao.QM)(c.markdown),e=(0,ao.Vc)(d.markdown),f=(0,ao.U$)(e.markdown,h),g=b-f.split(/\r?\n/u).length;g>0&&(i+=c.removedCount+d.removedCount,j+=e.removedCount,k+=g-c.removedCount-d.removedCount-e.removedCount,a.content=f)}if(i>0||j>0||k>0){let a=b.map(a=>a.content).join("\n\n"),f=[...(0,ao.ub)(a),...(0,ao.cl)(a),...(0,ao.l4)(a,{semanticSimilarity:h})].map(a=>`${a.message};${a.suggestion||""}`);e=[...new Set([...e.filter(a=>!/表格重复|段落完全重复|概况复述/u.test(a)),...f])];let g=[i>0?`重复表格 ${i} 行`:"",j>0?`重复段落 ${j} 行`:"",k>0?`概况复述句 ${k} 行`:""].filter(Boolean).join("、");(0,b8.fx)(c,(0,b8.X5)({type:"llm_review",roleId:"post-table-dedup",status:"success",message:`补表后确定性去重:${g}`},{subtitle:"表格执行率核验"})),d(b)}let l=await (0,ao.yR)(b);if(l>0){let a=(await (0,ao.LF)(b)).map(a=>`${a.message};${a.suggestion||""}`);e=[...new Set([...e.filter(a=>!/跨章语义重复/u.test(a)),...a])],(0,b8.fx)(c,(0,b8.X5)({type:"llm_review",roleId:"post-table-semantic-dedup",status:"success",message:`补表后语义重复 strip:删除雷同段 ${l} 段`},{subtitle:"表格执行率核验"})),d(b)}return e}async function ed(a){let{effectiveChapters:b,chapterDraftsFinal:c,template:d,repairPromptTexts:e,requirement:g,signal:h,generationDiagnostics:i,progressStages:j,emitProgress:k,withProgressHeartbeat:l}=a,m=(0,ea.Xi)(b,c),n=!1;if(m.length>0)for(let a=0;a<1&&m.length>0;a+=1){(0,b8.fx)(j,(0,b8.X5)({type:"llm_review",roleId:"table-execution-repair",status:"running",message:`表格执行率修复第 ${a+1} 轮(${m.length} 个章节缺表)`},{subtitle:"表格执行率修复"})),k(c);let o=0,p=[],q=m.flatMap(a=>{let b=c.find(b=>b.title===a.chapterTitle||a.chapterTitle.includes(b.title)||b.title.includes(a.chapterTitle));return b?[{gap:a,draft:b}]:[]}),r=async a=>{let{gap:j,draft:k}=a,m=[...new Set(j.plans.map(a=>a.moduleTitle).filter(Boolean))],n=m.length>0?k.evidence.filter(a=>{let b=a.sectionTitle;return!b||m.some(a=>b===a||b.includes(a)||a.includes(b))}):k.evidence,o={id:k.id,title:k.title,content:k.content,evidence:n.length?n:k.evidence,missingFacts:k.missingFacts||[],sections:k.sections},p=`计划表格缺失(计划 ${j.planned} 张,实际仅 ${j.actual} 张):${j.plans.map(a=>`${a.title}(表头:${a.fields.map(a=>a.name).join("、")})`).join(";")}。必须按表头字段补齐这些 markdown 表格并紧跟相关小节输出,不得删除已有正文;每个表格前须有 1~2 句引导叙述说明表格作用与关键结论,表格不能替代小节正文;deriveFromProject 字段基于项目工程量、总工期与工序流水按定额工效推导具体数值,projectFactOnly 字段不得编造。`;return dO({originalContent:k.content,repairRound:"table-execution-repair",diagnostics:i,beforeMetrics:[Math.max(0,j.planned-j.actual)],apply:async()=>{let a=await l(()=>(0,f.X6)(i,`table-execution-repair:${k.id}`,()=>(0,f.l8)({template:d,chapter:o,issues:[p],promptTexts:e,requirement:g,forbidDrawingImages:!0,diagnostics:i,signal:h,patchGuard:(0,f.XG)("table-execution-repair",i),maxTokens:Math.min(12e3,Math.max(6e3,1200*j.plans.length))})));return a.content&&a.content!==k.content?a.content:k.content},recheck:a=>{let d=c.map(b=>b.id===k.id?{title:b.title,content:a,sections:b.sections}:b);return[(0,ea.Xi)(b,d).filter(a=>a.chapterTitle===k.title||a.chapterTitle===j.chapterTitle||k.title.includes(a.chapterTitle)||a.chapterTitle.includes(k.title)).reduce((a,b)=>a+Math.max(0,b.planned-b.actual),0)]}})},s=await Promise.allSettled(q.map(a=>r(a))),t=new Set;if(s.forEach((a,b)=>{if("rejected"===a.status){if(h?.aborted)throw a.reason;p.push(`${q[b].gap.chapterTitle}:修复异常(${a.reason instanceof Error?a.reason.message:"未知错误"})`);return}let c=a.value,{gap:d,draft:e}=q[b];if(c.rolledBack)return void p.push(`${d.chapterTitle}:修复后计划表格缺口增多,已回滚本轮修改`);c.content&&c.content!==e.content&&!t.has(e.id)?(e.content=c.content,t.add(e.id),o+=1):t.has(e.id)||p.push(`${d.chapterTitle}:缺 ${d.plans.map(a=>a.title).join("、")}(${i?.llm.lastError||"补表 patch 未应用"})`)}),0===o){(0,b8.fx)(j,(0,b8.X5)({type:"llm_review",roleId:"table-execution-repair",status:"failed",message:`表格执行率修复第 ${a+1} 轮:补表 patch 未应用(${m.length} 个章节缺表)`,details:p},{subtitle:"表格执行率修复"})),k(c);break}n=!0,k(c),m=(0,ea.Xi)(b,c),(0,b8.fx)(j,(0,b8.X5)({type:"llm_review",roleId:"table-execution-repair",status:m.length>0?"failed":"success",message:m.length>0?`表格执行率修复第 ${a+1} 轮完成,仍有 ${m.length} 个章节缺表`:`表格执行率修复第 ${a+1} 轮完成`},{subtitle:"表格执行率修复"})),(0,b8.fx)(j,(0,b8.X5)({type:"llm_review",roleId:"table-execution-review",status:m.length>0?"failed":"success",message:m.length>0?`表格执行率复检:仍有 ${m.length} 个章节缺表`:"表格执行率复检通过"},{subtitle:"表格执行率核验"}))}return{tableFixApplied:n}}async function ee(a){let{chapterDraftsFinal:b,template:c,repairPromptTexts:d,requirement:e,signal:g,generationDiagnostics:h,progressStages:i,emitProgress:j,withProgressHeartbeat:k}=a,l=!1;for(let a=0;a<2;a+=1){let m=b.map(a=>a.content).join("\n\n"),n=await (0,c_.Bt)(m),o=await (0,c_.gE)(m),p=n.ratio>=.1||n.vagueSemanticSentences>0,q=o.countermeasures>0&&o.ratio<.5;if(!p&&!q)break;let r=new Map(b.map(a=>[a.id,a.content])),s=p?await dA(b):[],t=(q?o.entries.filter(a=>!a.attributed||!a.quantified).slice(0,20):[]).flatMap(a=>{let c=a.text.replace(/\s+/gu,""),d=b.find(a=>a.content.replace(/\s+/gu,"").includes(c));return d?[{chapter:d,text:a.text,missingAttribution:!a.attributed,missingTarget:!a.quantified}]:[]}),u=b.flatMap(a=>{let b=s.filter(b=>(b.chapterId||b.chapterTitle)===(a.id||a.title)).map(a=>a.sentence),c=t.filter(b=>b.chapter.id===a.id).map(a=>({text:a.text,missingAttribution:a.missingAttribution,missingTarget:a.missingTarget}));return b.length>0||c.length>0?[{chapter:a,sentences:b,difficulty:c}]:[]});if(0===u.length)break;(0,b8.fx)(i,(0,b8.X5)({type:"llm_review",roleId:"templating-repair",status:"running",message:`模板化修复第 ${a+1} 轮:套话句占比 ${(100*n.ratio).toFixed(1)}%,重难点双达标 ${(100*o.ratio).toFixed(0)}%(${u.length} 章)`},{subtitle:"模板化修复"})),j(b);let v=0,w=async a=>{let b=[];a.sentences.length>0&&b.push(`第 1~${a.sentences.length} 条目标原文是本章已检出的空话套话句:逐条删除,或改写为“责任岗位 + 执行动作 + 量化标准 + 检查频次 + 整改时限”的具体措施表述;改写必须使用本章证据摘要中的项目事实与量化数据,不得凭空编造数值;属必须保留的合规承诺句可保留但须具体化到可核查。`);let i=a.sentences.length+1;for(let c of a.difficulty){let a=[c.missingAttribution?"归因句(该难点的成因/风险来源)":"",c.missingTarget?"量化控制目标(数值+单位,来自本章证据摘要或行业规范,不得编造)":""].filter(Boolean).join("与");b.push(`第 ${i} 条目标原文是重难点分析条目,缺少${c.missingAttribution&&c.missingTarget?"成因归因与量化控制目标":a}:保留条目原有事实与数值,在其内补充${a}。`),i+=1}return b.push("清单之外的内容一律不得改动;不得删除任何小节标题、表格与数值参数。"),k(()=>(0,f.X6)(h,`templating-repair:${a.chapter.id}`,()=>(0,f.l8)({template:c,chapter:{id:a.chapter.id,title:a.chapter.title,content:a.chapter.content,evidence:a.chapter.evidence||[],missingFacts:a.chapter.missingFacts||[],sections:a.chapter.sections},issues:[b.join("\n")],promptTexts:d,requirement:e,forbidDrawingImages:!0,diagnostics:h,signal:g,patchGuard:(0,f.XG)("templating-repair",h),anchorTexts:[...a.sentences,...a.difficulty.map(a=>a.text)],maxTokens:6e3,evidenceChars:5e3})))},x=await dO({originalContent:m,repairRound:"templating-repair",diagnostics:h,beforeMetrics:[n.ratio,o.ratio],apply:async()=>((await Promise.allSettled(u.map(a=>w(a)))).forEach((a,b)=>{if("rejected"===a.status){if(g?.aborted)throw a.reason;console.error("[gen] templating repair failed:",a.reason);return}let c=a.value,{chapter:d}=u[b];c.content&&c.content!==d.content&&(d.content=c.content,v+=1)}),j(b),b.map(a=>a.content).join("\n\n")),recheck:async a=>{let b=await (0,c_.Bt)(a),c=await (0,c_.gE)(a);return[b.ratio,c.ratio]},shouldRollback:(a,b)=>b[0]>a[0]+.01&&!(b[1]>a[1]+.01)});if(0===v){(0,b8.fx)(i,(0,b8.X5)({type:"llm_review",roleId:"templating-repair",status:"failed",message:`模板化修复第 ${a+1} 轮:修复 patch 未落地(${u.length} 章锚点失配或 LLM 未产出)`,details:[`套话句占比 ${(100*n.ratio).toFixed(1)}% 未收敛,重难点双达标 ${(100*o.ratio).toFixed(0)}%`]},{subtitle:"模板化修复"}));break}if(x.rolledBack){for(let a of b){let b=r.get(a.id);void 0!==b&&(a.content=b)}(0,b8.fx)(i,(0,b8.X5)({type:"llm_review",roleId:"templating-repair",status:"failed",message:`模板化修复第 ${a+1} 轮:修复后套话句占比 ${(100*x.afterMetrics[0]).toFixed(1)}% > 修复前 ${(100*x.beforeMetrics[0]).toFixed(1)}%,已回滚本轮修改`,details:["LLM 重写未收敛,回滚保留修复前正文"]},{subtitle:"模板化修复"})),j(b);break}l=!0}if(l){let a=b.map(a=>a.content).join("\n\n"),c=await (0,c_.Bt)(a),d=await (0,c_.gE)(a),e=c.ratio<.1&&(!d.heavyTemplated||0===d.countermeasures);(0,b8.fx)(i,(0,b8.X5)({type:"llm_review",roleId:"templating-repair",status:e?"success":"failed",message:`模板化修复完成:套话句占比 ${(100*c.ratio).toFixed(1)}%(达标线 ≤10%),重难点归因+量化双达标 ${(100*d.ratio).toFixed(0)}%(达标线 ≥50%)`,details:e?[]:["未完全收敛:残留套话/缺要素条目由评分侧展示,不阻断交付"]},{subtitle:"模板化修复"})),j(b)}return{templatingFixApplied:l}}async function ef(a){let{chapterDraftsFinal:b,projectContext:c,template:d,repairPromptTexts:e,requirement:g,signal:h,generationDiagnostics:i,progressStages:j,emitProgress:k,withProgressHeartbeat:l}=a,m=/^#{3,4}\s+(?:\d+(?:\.\d+)*\s+)?(?:项目主要施工\s*内容|主要施工\s*内容|主要分部分项工程施工方案|主要分部分项施工方案|主要施工方法)\s*$/u,n=!1,o=0,p=0,q=(0,aj.sh)(c,b.flatMap(a=>a.evidence||[]));if(q.length>0){let a=/项目主要施工内容|主要施工内容|主要分部分项工程施工方案|主要分部分项施工方案|主要施工方法/u;for(let c of b){if(c.content.split("\n").some(a=>m.test(a.trim())))continue;let d=(c.sections||[]).find(b=>a.test(b));if(!d)continue;Array.isArray(c.sections)||(c.sections=[]);let e=c.sections.findIndex(b=>a.test(b)),f=e>=0?e+1:c.sections.length+1,g=`### ${b.indexOf(c)+1}.${f} ${d}`;c.content=`${c.content.replace(/\s+$/u,"")}
71
71
 
72
72
  ${g}
73
73
  `,n=!0}let c=b.some(a=>a.content.split("\n").some(a=>m.test(a.trim()))),d=b.some(b=>(b.sections||[]).some(b=>a.test(b)));if(!c&&!d){let a=b.find(a=>/整体理解|工程概况|项目理解|招标范围|编制边界|现场踏勘|施工界面|主要施工方法|施工方案/u.test(a.title))||b[0];if(a){let c=b.indexOf(a);Array.isArray(a.sections)||(a.sections=[]);let d=a.sections.findIndex(a=>/项目主要施工内容|主要施工内容/u.test(a)),e=d>=0?d+1:(a.sections.push("项目主要施工内容"),a.sections.length),f=`### ${c+1}.${e} 项目主要施工内容`;a.content=`${a.content.replace(/\s+$/u,"")}
@@ -75,22 +75,22 @@ ${g}
75
75
  ${f}
76
76
  `,n=!0}}}for(let a of b){let b=a.content;for(let c of a.content.split("\n").map(a=>a.trim()).filter(a=>m.test(a))){let a=c.replace(/^#{3,4}\s+(?:\d+(?:\.\d+)*\s+)?/u,""),d=(0,aj.eB)(b,a,q);d!==b&&(b=d,o+=1)}a.content=b}for(let a of b){if(0===q.length)continue;let b=a.content;for(let c of a.content.split("\n").map(a=>a.trim()).filter(a=>m.test(a))){let d=c.replace(/^#{3,4}\s+(?:\d+(?:\.\d+)*\s+)?/u,"");if(ar.gG.test(a.title)&&ar.gG.test(d))continue;let e=(0,aj.qj)(b,d,q);e!==b&&(b=e,o+=1)}a.content=b}for(let a=0;a<2;a+=1){let c=b.flatMap(a=>{if(0===q.length)return[];let b=a.content.split("\n").map(a=>a.trim()).filter(a=>m.test(a)).flatMap(b=>{let c=b.replace(/^#{3,4}\s+(?:\d+(?:\.\d+)*\s+)?/u,"");if(ar.gG.test(a.title)&&ar.gG.test(c))return[];let d=(0,aj.ab)(a.content,c,q);return d.length>0?[{headingLine:b,sectionTitle:c,missing:d}]:[]});return b.length>0?[{chapter:a,entries:b}]:[]});if(0===c.length)break;(0,b8.fx)(j,(0,b8.X5)({type:"llm_review",roleId:"workpackage-skeleton-repair",status:"running",message:`工作包骨架补写第 ${a+1} 轮(${c.length} 章)`},{subtitle:"工作包骨架收口"})),k(b);let o=async a=>{let b=a.entries.map((a,b)=>{let c=a.missing.map((a,b)=>`#### ${b+1} ${a}`).join("\n");return`第 ${b+1} 处:「${a.headingLine}」小节内部缺少以下工作包小节(内部结构已由系统从资料锁定):
77
77
  ${c}
78
- 请在该小节内部按上述标题逐一补齐(标题一字不差,不得增删改、合并或调序),每个工作包小节按三要素展开正式正文:作业对象与工程量(什么部位、什么规模)、工序顺序(先后顺序清晰)、施工方法(工艺做法、工艺参数、验收检测)。已有内容一律不得改动,不得删除任何已有小节与段落,不得输出 Markdown 表格。`});return dN({originalContent:a.chapter.content,repairRound:"workpackage-skeleton-repair",diagnostics:i,beforeMetrics:[a.entries.reduce((a,b)=>a+b.missing.length,0)],apply:async()=>{let c=await l(()=>(0,f.X6)(i,`workpackage-skeleton-repair:${a.chapter.id}`,()=>(0,f.l8)({template:d,chapter:{id:a.chapter.id,title:a.chapter.title,content:a.chapter.content,evidence:a.chapter.evidence||[],missingFacts:a.chapter.missingFacts||[],sections:a.chapter.sections},issues:[b.join("\n"),"清单之外的内容一律不得改动;不得删除任何小节标题、表格与数值参数。"],promptTexts:e,requirement:g,forbidDrawingImages:!0,diagnostics:i,signal:h,patchGuard:(0,f.XG)("workpackage-skeleton-repair",i),anchorTexts:a.entries.map(a=>({text:a.headingLine,append:!0})),maxTokens:6e3})));return c.content&&c.content!==a.chapter.content?c.content:a.chapter.content},recheck:b=>{if(0===q.length)return[0];let c=0;for(let d of b.split("\n").map(a=>a.trim()).filter(a=>m.test(a))){let e=d.replace(/^#{3,4}\s+(?:\d+(?:\.\d+)*\s+)?/u,"");ar.gG.test(a.chapter.title)&&ar.gG.test(e)||(c+=(0,aj.ab)(b,e,q).length)}return[c]}})},r=await Promise.allSettled(c.map(a=>o(a))),s=0;if(r.forEach((a,b)=>{if("rejected"===a.status){if(h?.aborted)throw a.reason;console.error("[gen] workpackage skeleton repair failed:",a.reason);return}let d=a.value,{chapter:e}=c[b];if(d.rolledBack)return void console.error("[gen] workpackage skeleton repair rolled back:",e.title);d.content&&d.content!==e.content&&(e.content=d.content,s+=1,p+=1)}),k(b),0===s)break;n=!0}return(n||o>0)&&((0,b8.fx)(j,(0,b8.X5)({type:"llm_review",roleId:"workpackage-skeleton-repair",status:"success",message:`工作包骨架收口完成:表格剥离 ${o} 处、骨架补写 ${p} 章`},{subtitle:"工作包骨架收口"})),k(b)),{skeletonFixApplied:n}}async function ef(a){let{chapterDraftsFinal:b,template:c,repairPromptTexts:d,requirement:e,signal:g,generationDiagnostics:h,progressStages:i,emitProgress:j,withProgressHeartbeat:k}=a,l=(0,cg.yw)("",b).filter(a=>"missing_planned_section"===a.reason||"empty"===a.reason&&a.planned),m=b.flatMap(a=>{let b=l.filter(b=>b.chapterTitle===a.title);if(0===b.length)return[];let c=b.map(a=>({title:a.sectionTitle,emptyOnly:"empty"===a.reason})),d=a.content.split("\n").map(a=>a.trim()).filter(a=>/^#{2,4}\s/u.test(a)).pop();return d?[{chapter:a,sectionTitles:c,lastHeadingLine:d}]:[]});if(0===m.length)return{plannedSectionFixApplied:!1};(0,b8.fx)(i,(0,b8.X5)({type:"llm_review",roleId:"planned-section-repair",status:"running",message:`缺规划小节补写(${m.length} 章缺失)`},{subtitle:"缺节补写收口"})),j(b);let n=new Map(b.map((a,b)=>[a.title,b])),o=async a=>{let i=n.get(a.chapter.title)??b.indexOf(a.chapter),j=a.sectionTitles.map(({title:b,emptyOnly:c})=>{let d=(a.chapter.sections||[]).findIndex(a=>a===b)+1||(a.chapter.sections||[]).length+1,e=`### ${i+1}.${d} ${b}`;return c?`本章小节「${b}」只有标题或表格无正式正文:必须在既有小节标题下补写正式正文段落(正文写在表格前后均可),不得新增同名小节标题、不得删除或改动已有表格与数值。
79
- ${(0,d8.av)(a.chapter.title,b)}`:`本章正文缺少规划小节「${b}」:必须在章末新增小节标题「${e}」(标题一字不差)并写入正式正文。
80
- ${(0,d8.av)(a.chapter.title,b)}`});return dN({originalContent:a.chapter.content,repairRound:"planned-section-repair",diagnostics:h,beforeMetrics:[a.sectionTitles.length],apply:async()=>{let b=await k(()=>(0,f.X6)(h,`planned-section-repair:${a.chapter.id}`,()=>(0,f.l8)({template:c,chapter:{id:a.chapter.id,title:a.chapter.title,content:a.chapter.content,evidence:a.chapter.evidence||[],missingFacts:a.chapter.missingFacts||[],sections:a.chapter.sections},issues:[...j,"已有内容一律不得改动,不得删除任何已有小节、表格与数值参数;新增小节之外不得改动。"],promptTexts:d,requirement:e,forbidDrawingImages:!0,diagnostics:h,signal:g,patchGuard:(0,f.XG)("planned-section-repair",h),anchorTexts:[{text:a.lastHeadingLine,append:!0}],maxTokens:6e3})));return b.content&&b.content!==a.chapter.content?b.content:a.chapter.content},recheck:b=>[(0,cg.yw)("",[{title:a.chapter.title,content:b,sections:a.chapter.sections}]).filter(b=>b.chapterTitle===a.chapter.title&&("missing_planned_section"===b.reason||"empty"===b.reason&&b.planned)).length]})},p=await Promise.allSettled(m.map(a=>o(a))),q=0;return p.forEach((a,b)=>{if("rejected"===a.status){if(g?.aborted)throw a.reason;console.error("[gen] planned section repair failed:",a.reason);return}let c=a.value,{chapter:d}=m[b];if(c.rolledBack)return void console.error("[gen] planned section repair rolled back:",d.title);c.content&&c.content!==d.content&&(d.content=c.content,q+=1)}),j(b),(0,b8.fx)(i,(0,b8.X5)({type:"llm_review",roleId:"planned-section-repair",status:q>0?"success":"failed",message:q>0?`缺规划小节补写完成:补写 ${q} 章`:"缺规划小节补写:修复 patch 未落地(锚点失配或 LLM 未产出)"},{subtitle:"缺节补写收口"})),{plannedSectionFixApplied:q>0}}async function eg(a){let{chapterDraftsFinal:b,template:c,reviewPromptTexts:d,repairPromptTexts:e,requirement:g,signal:h,projectContext:i,generationDiagnostics:j,preliminaryFactsModel:k,scopeConflicts:l,progressStages:m,emitProgress:n,withProgressHeartbeat:o,blueprintData:p}=a,q=[],r=!1;try{let s=a.globalReviewSamplingRate??1,t=s>=1||b.length<=2?b:b.filter((a,b)=>b%Math.max(2,Math.round(1/s))==0),u=t.length,v=async()=>{let a=b.map(a=>a.content).join("\n\n"),[e,f]=await Promise.all([o(()=>dm({template:c,chapters:t,chapterReviews:[],promptTexts:d,requirement:g,projectContext:i,diagnostics:j,signal:h})),dU(a,{diagnostics:j,signal:h})]);return{issues:[...new Set([...e.issues,...f.map(a=>{let b={level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`数据一致性矛盾(${a.kind}):${a.description}(原文 A:“${a.itemA.slice(0,60)}” ↔ 原文 B:“${a.itemB.slice(0,60)}”)`,suggestion:"全文数据必须一致:以绑定资料(图纸/清单/招标文件)为准选定唯一值,统一矛盾数值对,删除或修正其余矛盾表述。禁止将本缺陷描述与修复要求本身写入正文,输出仅限正文内容。"};return`${b.message};${b.suggestion||""}`})])],stage:e.stage}},w=[],x=async()=>{let a=b.map(a=>a.content).join("\n\n"),c=(0,ao.t1)(a),d=await (0,be.Mv)(c.sentences,c.overviewBody?[c.overviewBody]:[]);return[...(await (0,cg.qm)(a,k,l)).filter(a=>/跨章一致性冲突/u.test(a.message)),...(await (0,cg.hr)(a,k)).filter(a=>"error"===a.level),...(0,ao.rA)(a,{laborPeakAuthority:a4(p).laborPeakAuthority}),...(0,ao.iY)(a),...(0,ao.IJ)(a),...(0,ao.nm)(a),...(0,ao.ON)(a),...(0,ao.Et)(a),...(0,ao.H)(a),...(0,ao.$$)(a,k.specAuthorityMap),...(0,ao.N$)(a),...(0,ao.Fr)(a),...(0,ao.bq)(a),...(0,ao.vH)(a),...(0,ao.cT)(a),...(0,ao.ub)(a),...(0,ao.CJ)(a),...(0,ao.cl)(a),...(0,ao.zP)(a),...await (0,ao.r8)(a,z),...await (0,ao.sn)(a),...(0,ao.l4)(a,{semanticSimilarity:d}),...await (0,ao.LF)(b),...p?ba(a,p).filter(a=>"error"===a.level):[],...(0,ch.jW)(a),...(0,ch.l5)(a)].map(a=>`${a.message};${a.suggestion||""}`)},y=await v(),z=(0,ao.P3)(k),A=(0,ao.z4)(k),B=y.issues;w=await x(),q=[...new Set([...B,...w])];let C=0;for(let a of b){let b=(0,ao.fE)(a.content,{...a4(p),supportAuthority:z});b.fixedCount>0&&(a.content=b.markdown,C+=b.fixedCount)}C>0&&(w=await x(),q=[...new Set([...B,...w])]);let D=!1,E=a=>[[...(0,ao.nm)(a),...(0,ao.ON)(a),...(0,ao.ub)(a),...(0,ao.CJ)(a),...(0,ao.cl)(a),...(0,ch.jW)(a),...(0,ch.l5)(a)].length];for(let a=0;a<1&&q.length>0;a+=1){(0,b8.fx)(m,(0,b8.X5)({type:"llm_review",roleId:"global-consistency-repair",status:"running",message:`跨章一致性冲突第 ${a+1} 轮定向修复(${q.length} 个冲突)`},{subtitle:"跨章一致性修复"})),n(b);let d=0,i=b.flatMap(a=>{let b=a.content.replace(/\s+/gu,"").replace(/平方米|m²|m2/giu,"㎡"),c=q.filter(c=>{if(c.includes(a.title))return!0;if(/基坑深度数值未锁定/u.test(c))return/基坑|支护|开挖|土方|降水/u.test(a.title)||a.content.includes("基坑");if((c.match(/不一致的表述\s*([^;;。\n]+)/u)?.[1]||"").split(/[、,,]/u).some(a=>{let c=a.trim().replace(/\s+/gu,"").replace(/平方米|m²|m2/giu,"㎡");return c.length>=3&&b.includes(c)}))return!0;let d=c.match(/正文([^配比厚度\s]{1,6}?)(?:配比|厚度)/u)?.[1];return!!(d&&a.content.includes(d)||[...c.matchAll(/“([^”]{6,80})”/gu)].some(a=>b.includes(a[1].replace(/\s+/gu,""))))||[...c.matchAll(/(\d[\d,,.]*)\s*(?:人|台|日|个|次|天|月|套|具|处|项|条)/gu)].some(a=>b.includes(a[0].replace(/\s+/gu,"")))});return c.length>0?[{chapter:a,related:c}]:[]});if((await Promise.allSettled(i.map(({chapter:a,related:b})=>dN({originalContent:a.content,repairRound:"global-consistency-repair",diagnostics:j,apply:async()=>{let d=await o(()=>(0,f.X6)(j,`global-consistency-repair:${a.id}`,()=>(0,f.l8)({template:c,chapter:{id:a.id,title:a.title,content:a.content,evidence:a.evidence||[],missingFacts:a.missingFacts||[],sections:a.sections},issues:b.map(a=>{let b=/重复/u.test(a)?"请删除本冲突描述的重复内容(保留首次出现的完整版本),不得改动其余正文。":/缺少三要素/u.test(a)?"请按冲突描述中列出的缺失要素定向补写:只补缺失要素的内容(作业对象与工程量/工序顺序/施工方法),不得删除或改动已有正文;补写的工程量数值必须取工程量清单汇总值,不得编造。":/清单内部口径词|不应使用 Markdown 表格/u.test(a)?"请删除本冲突描述中点名的清单内部口径内容(“分部小计/本页小计/合计/按实/暂估”等口径行或承载专业工程正文的 Markdown 表格),把表格中的项目总量数据改写为段落式连贯叙述(数值保持不变),不得改动其余正文。":/基坑深度数值未锁定/u.test(a)?void 0!==A?`请在本章基坑支护/开挖小节写出确定性的基坑开挖深度表述:本工程基坑开挖深度为 ${A}m(权威口径来自图纸标注,严禁写其他深度数值或「按图纸确定」类回避表述),并同步保留既有危大工程分级标注。`:"请从本章证据摘要中的图纸标注/勘察资料锁定基坑开挖深度数值,以确定性表述写入基坑支护小节(严禁「按图纸确定」类回避表述),不得编造数值。":/规格错位/u.test(a)?"请按冲突描述中的工程量清单权威规格修正本章对应部位的规格表述:同一材料不同部位允许不同规格,同一部位只允许权威规格,禁止把多种规格全文归一为一种。":"请严格按冲突描述中给出的资料口径修正本章对应表述,不得引入新的数值;与资料口径一致的既有表述(含分层/子项数值)不得改动;同一材料多种规格按所属部位/分部分项分别使用,禁止全文统一为一种规格。";return`${a};${b}`}),promptTexts:e,requirement:g,forbidDrawingImages:!0,diagnostics:j,signal:h,patchGuard:(0,f.XG)("global-consistency-repair",j)})));return d.content&&d.content!==a.content?d.content:a.content},recheck:E})))).forEach((a,b)=>{if("rejected"===a.status){if(h?.aborted)throw a.reason;console.error("[gen] global consistency repair failed:",a.reason);return}let c=a.value,{chapter:e}=i[b];if(c.rolledBack)return void console.error("[gen] global consistency repair rolled back:",e.title);c.content&&c.content!==e.content&&(e.content=c.content,d+=1)}),0===d){D&&(B=(await v()).issues);break}n(b);let k=await x();w=k,0===a||0===k.length?(B=(await v()).issues,D=!1):D=!0,q=[...new Set([...B,...k])],(0,b8.fx)(m,(0,b8.X5)({type:"llm_review",roleId:"global-consistency-review",status:q.length>0?"failed":"success",message:q.length>0?`跨章一致性复检:仍有 ${q.length} 个冲突`:"跨章一致性复检通过"},{subtitle:"全局一致性审查"})),n(b)}await ed({chapterDraftsFinal:b,template:c,repairPromptTexts:e,requirement:g,signal:h,generationDiagnostics:j,progressStages:m,emitProgress:n,withProgressHeartbeat:o}),await ee({chapterDraftsFinal:b,projectContext:i,template:c,repairPromptTexts:e,requirement:g,signal:h,generationDiagnostics:j,progressStages:m,emitProgress:n,withProgressHeartbeat:o});let F=await (0,cg.KI)(b,k,l),G=(0,ao.GG)(k),H=(0,ao.hI)(k),I=(0,ao.Pt)(k),J=a4(p),K=J.laborPeakAuthority&&J.laborPeakAuthority>0?J.laborPeakAuthority:(0,ao.dc)(b.map(a=>a.content).join("\n\n")),L=0;for(let a of b){let b=(0,ao.fE)(a.content,{scheduleAuthority:G,assemblyRateAuthority:H,...J,supportAuthority:z,laborPeakAuthority:K});b.fixedCount>0&&(a.content=b.markdown,L+=b.fixedCount)}let M=(0,ao.Dq)(k),N=b.map(a=>a.content).join("\n\n"),O=(0,ao.t1)(N),P=await (0,be.Mv)(O.sentences,O.overviewBody?[O.overviewBody]:[]),Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=(0,ao.qG)(b);for(let a of(Q+=X.removedCount,b)){let b=a.content.split(/\r?\n/u).length,c=(0,ao.lR)(a.content),d=(0,ao.QM)(c.markdown),e=(0,ao.Vc)(d.markdown),f=(0,ao.U$)(e.markdown,P),g=(0,ao.$h)(f),h=(0,ao.EN)(g.markdown,{areaSummary:I,scheduleDays:G}),i=(0,ao.K2)(h.markdown),j=(0,ao.mG)(i.markdown,M),k=j.markdown.split(/\r?\n/u).length,l=b-k,m=g.fixedCount-0+h.fixedCount+i.fixedCount+j.fixedCount;T+=g.fixedCount,V+=h.fixedCount,W+=i.fixedCount,U+=j.fixedCount,(l>0||m>0)&&(Q+=c.removedCount+d.removedCount,R+=e.removedCount,S+=l-c.removedCount-d.removedCount-e.removedCount,a.content=j.markdown)}let Y=await (0,ao.yR)(b),Z=0,$=0,_=0,aa=0,ab=0,ac=0,ad=0;for(let a of b){let b=(0,ao.ir)(a.content);b.fixedCount>0&&(a.content=b.markdown,Z+=b.fixedCount);let c=(0,ao.xp)(a.content);c.fixedCount>0&&(a.content=c.markdown,$+=c.fixedCount);let d=await (0,ao.lv)(a.content);d.fixedCount>0&&(a.content=d.markdown,_+=d.fixedCount);let e=(0,ao.Co)(a.content);e.fixedCount>0&&(a.content=e.markdown,aa+=e.fixedCount);let f=(0,ao.zj)(a.content);f.fixedCount>0&&(a.content=f.markdown,ab+=f.fixedCount);let g=(0,ao.SZ)(a.content);g.fixedCount>0&&(a.content=g.markdown,ac+=g.fixedCount);let h=(0,ao.GI)(a.content);h.fixedCount>0&&(a.content=h.markdown,ad+=h.fixedCount)}if(r=!0,F.fixedCount>0||L>0||Q>0||R>0||S>0||Y>0||T>0||V>0||W>0||Z>0||$>0||_>0||aa>0||ab>0||ac>0||ad>0||U>0){w=await x(),q=[...new Set([...B,...w])];let a=[F.fixedCount>0?`数值 ${F.fixedCount} 处`:"",L>0?`跨章数值 ${L} 处`:"",Q>0?`重复表格 ${Q} 行`:"",R>0?`重复段落 ${R} 行`:"",S>0?`概况复述句 ${S} 行`:"",Y>0?`跨章语义重复段 ${Y} 段`:"",Z>0?`自伤表述改写 ${Z} 处`:"",$>0?`危大辨识补漏 ${$} 项`:"",_>0?`扬尘六个百分百补写 ${_} 项`:"",aa>0?`内部术语清洗 ${aa} 处`:"",ab>0?`无表头表格补齐 ${ab} 处`:"",ac>0?`两可表述归一 ${ac} 处`:"",ad>0?`配置污染清洗 ${ad} 处`:"",U>0?`绿化养护期统一 ${U} 处`:""].filter(Boolean).join("、");(0,b8.fx)(m,(0,b8.X5)({type:"llm_review",roleId:"global-consistency-deterministic-fix",status:"success",message:`跨章一致性定点修复:${a}${F.details.slice(0,4).length>0?`(${F.details.slice(0,4).join("、")})`:""}`,details:F.details.slice(4)},{subtitle:"跨章一致性修复"})),n(b)}let ae=w.filter(a=>!ea.test(a)),af=[...B,...w.filter(a=>ea.test(a))],ag=ae.length>0?"failed":"success",ah=ae.length>0?`跨章一致性修复完成:仍残留 ${ae.length} 个可修复冲突(已记录,由交付门禁兑底)`:af.length>0?`跨章一致性修复完成:确定性冲突已全部消除;另有 ${af.length} 个审查提示/资料两可项(已记录,由交付门禁复核)`:"跨章一致性修复完成:冲突已全部消除";(0,b8.fx)(m,(0,b8.X5)({type:"llm_review",roleId:"global-consistency-repair",status:ag,message:ah},{subtitle:"跨章一致性修复"})),n(b);let ai=u<b.length?{...y.stage,message:`${y.stage.message||"全局一致性审查完成"}(抽检 ${u}/${b.length} 章)`}:y.stage;(0,b8.fx)(m,ai),n(b)}catch(a){if(h?.aborted)throw a;console.error("[gen] global consistency review failed:",a)}return{issues:q,dedupRan:r}}async function eh(a){(await ef({chapterDraftsFinal:a.finalChapterDrafts,template:a.template,repairPromptTexts:a.repairPromptTexts,requirement:a.requirement,signal:a.signal,generationDiagnostics:a.generationDiagnostics,progressStages:a.progressStages,emitProgress:a.emitProgress,withProgressHeartbeat:a.withProgressHeartbeat})).plannedSectionFixApplied&&(a.finalMarkdown=a.rebuildFinalMarkdown(),await a.recomputeFinalValidationBundle());let b=(0,ao.qj)(a.finalMarkdown);b!==a.finalMarkdown&&(a.finalMarkdown=b,await a.recomputeFinalValidationBundle());let c=function(a){let b=a.split(/\r?\n/u),c=[],d=0,e=0;for(;e<b.length;){if(!/^\s*\|/u.test(b[e])){c.push(b[e]),e+=1;continue}let a=e;for(;a+1<b.length&&/^\s*\|/u.test(b[a+1]);)a+=1;let f=dR(b.slice(e,a+1));f.removed>0&&(d+=1),c.push(...f.lines),e=a+1}return{markdown:c.join("\n"),removed:d}}(a.finalMarkdown);c.markdown!==a.finalMarkdown&&(a.finalMarkdown=c.markdown,await a.recomputeFinalValidationBundle());let d=(0,ao.g4)(b_.filter(a=>a.round2).map(b=>c=>b.fix(c,a.surfaceFixContext)),a.finalMarkdown,3);d.markdown!==a.finalMarkdown&&(a.finalMarkdown=d.markdown,await a.recomputeFinalValidationBundle());let e=await (0,bd.NR)(a.finalMarkdown);e!==a.finalMarkdown&&(a.finalMarkdown=e,await a.recomputeFinalValidationBundle());let f=(0,ao._D)(a.finalMarkdown);f.fixedCount>0&&(a.finalMarkdown=f.markdown,await a.recomputeFinalValidationBundle())}let ei=/(?:\d+(?:\.\d+)?\s*(?:W|kW|kV|V|A|Hz|mm|cm|m|km|kg|g|t|K|MPa|kN|℃|%|L|mL|s|h|min)\b|C\d{2,}|HRB\d+|HPB\d+|DN\s*\d+|Φ\s*\d+(?:\.\d+)?|φ\s*\d+(?:\.\d+)?|\d+(?:\.\d+)?\s*[×x*]\s*\d+(?:\.\d+)?)/giu;function ej(a){return[...new Set((a.match(ei)||[]).map(a=>a.replace(/\s+/gu,"").trim()))].filter(Boolean).slice(0,8)}function ek(a,b=[]){return[...new Set(`${a} ${b.join(" ")}`.match(/[\p{Script=Han}]{2,}|[A-Za-z0-9_-]{3,}/gu)||[])].filter(a=>a.length>=2)}let el=/(?:\d+(?:\.\d+)?\s*(?:mm|cm|m|km|㎡|m²|m3|m³|kg|g|t|K|L|ml|MPa|kPa|kN|N|℃|%|台|套|座|个|项|批|次|份|人|小时|分钟|日历天|天|周|月|年|万元|元|W|kW|kV|V|A|Hz|米|处|道|根|盏|株|标段|层|樘|孔|眼|间|户|栋|幢|d)\b|DN\s*\d+|Φ\s*\d+(?:\.\d+)?|φ\s*\d+(?:\.\d+)?|C\d{2,}|HRB\d+|HPB\d+)/giu;function em(a){return a.replace(/\s+/gu,"").toLowerCase()}function en(a){return[...new Set((a.match(el)||[]).map(em))]}function eo(a){return a.split(/[。;;!!??\n]/u).map(a=>a.trim()).filter(Boolean).filter(a=>!a.startsWith("#")&&el.test(a)).map(a=>a.slice(0,160))}function ep(a){if(/高温|防暑|危大|专家论证|超过一定规模|40℃|37℃|35℃/u.test(a)||/第\s*\d+\s*(天|周|月|日|层|道|步|轮|批)/u.test(a))return!0;let b=a.match(el)||[];return!!(b.length>0&&b.every(a=>/%$/u.test(a.trim()))&&/完成|进度|利用率|合格率|优良率|评标|得分|负荷/u.test(a)||b.every(a=>/^20\d{2}/u.test(a))&&/年/u.test(a)&&!/月|日/u.test(a))}async function eq(a){let b=function(a){let b=new Set;for(let c of a.allEvidence)if(c.content)for(let a of en((0,g.eE)(c.content)))b.add(a);let c=a.input.billFactLock;if(c)for(let a of c.entries){for(let c of en(`${a.name} ${a.description} ${a.quantity}${a.unit}`))b.add(c);for(let c of ej(a.description))b.add(em(c));for(let c of a.specQuantityPairs)for(let a of(b.add(em(c.spec)),en(c.quantity)))b.add(a)}let d=a.input.blueprintData?.quantities;if(d)for(let[a,c]of Object.entries(d))for(let d of("number"==typeof c.value&&Number.isFinite(c.value)&&b.add(em(`${c.value}${c.unit||""}`)),en(a)))b.add(d);for(let c of[...a.structuredFacts||[],...a.factsModel?.preciseFacts||[]])for(let a of en((0,e.lG)(c.value)))b.add(a);return b}(a);if(0===b.size)return;let c=new Map;for(let d of a.finalChapterDrafts){let a=[];for(let c of eo(d.content)){if(ep(c))continue;let d=en(c);if(0===d.length||d.every(a=>b.has(a)))continue;let e=d.filter(a=>!b.has(a));e.length>0&&a.push({sentence:c,tokens:e})}a.length>0&&c.set(d.id,a.slice(0,12))}let d=[...c.values()].reduce((a,b)=>a+b.length,0);if(0===d){(0,b8.fx)(a.progressStages,(0,b8.X5)({type:"validation",roleId:"numeric-verification",status:"success",message:"正文数值确定性核对通过:全部正文数值均在资料原文/清单事实锁/蓝图参数桶中找到同值来源",details:[`数值权威库规模:${b.size} 个归一化 token`]},{subtitle:"数值确定性核对"})),a.emitProgress(a.finalChapterDrafts,a.progressStages);return}let h=0,i=0;for(let[d,e]of c){let c=a.finalChapterDrafts.findIndex(a=>a.id===d);if(c<0)continue;let g=a.finalChapterDrafts[c],j=(0,b8.X5)({type:"llm_review",roleId:`agent-numeric-verification-${d}`,status:"running",message:`正文数值核对发现 ${e.length} 处疑似无来源数值,定向修复中:${g.title}`,details:e.map(a=>`疑似:${a.sentence}(缺来源 token:${a.tokens.join("、")})`)},{subtitle:"数值确定性核对"});(0,b8.fx)(a.progressStages,j),(0,b8.fx)(a.finalGateRepairStages,j),a.emitProgress(a.finalChapterDrafts,a.progressStages);let k=["【正文数值定向核对修复】\n下列句子中的数值(标注「缺来源 token」)在项目绑定材料、工程量清单与蓝图中均找不到同值来源,属于疑似编造数值。请逐句核对并修复:\n1. 若该数值在本章绑定证据中确实存在(仅表述口径不同),保持数值原样,只修正单位或表述;\n2. 若该数值是行业通用工艺参数(如养护龄期、分层厚度),可按规范惯例保留并改为规范原文表述;\n3. 其余情况必须删除该数值,改写为不带具体数值的过程控制表述(如「按设计要求」「分层碾压至压实度满足设计及规范要求」);\n禁止把疑似数值替换为另一个同样无来源的数值;禁止改动句子的非数值部分;只做局部修改,不得新增、删除或合并小节。",e.map(a=>`- 疑似句:${a.sentence}(缺来源 token:${a.tokens.join("、")})`).join("\n")].join("\n"),l=await dN({originalContent:g.content,repairRound:"numeric-verification",diagnostics:a.generationDiagnostics,apply:async()=>{let b=await a.withProgressHeartbeat(()=>(0,f.l8)({template:a.template,chapter:{id:g.id,title:g.title,content:g.content,evidence:g.evidence,missingFacts:g.missingFacts,sections:g.sections},issues:e.map(a=>`疑似无来源数值:${a.sentence}(token:${a.tokens.join("、")})`),promptTexts:k,requirement:a.requirement,forbidDrawingImages:!1,diagnostics:a.generationDiagnostics,signal:a.signal,patchGuard:(0,f.XG)("numeric-verification",a.generationDiagnostics)}));return b.content&&b.content!==g.content?b.content:g.content},recheck:a=>[eo(a).filter(a=>!ep(a)&&en(a).some(a=>!b.has(a))).length]});l.rolledBack||l.content===g.content||(a.finalChapterDrafts[c]={...g,content:l.content},h+=1);let m=eo((a.finalChapterDrafts[c]||g).content).filter(a=>!ep(a)&&en(a).some(a=>!b.has(a))).length;i+=m;let n=(0,b8.X5)({type:"llm_review",roleId:`agent-numeric-verification-${d}`,status:l.rolledBack?"failed":0===m?"success":"failed",message:l.rolledBack?`数值核对修复已回滚:${g.title}(修复后疑似数值增多,保留修复前正文)`:0===m?`数值核对修复完成:${g.title}(${e.length} 处疑似数值已处理)`:`数值核对修复部分生效:${g.title}(残留 ${m} 处疑似数值,单轮失败即放弃)`,details:[...e.map(a=>`疑似:${a.sentence}`),m>0?"残留项以 warning 记录,不阻断交付":""]},{subtitle:"数值确定性核对"});(0,b8.fx)(a.progressStages,n),(0,b8.fx)(a.finalGateRepairStages,n),a.emitProgress(a.finalChapterDrafts,a.progressStages)}h>0&&(a.finalMarkdown=a.rebuildFinalMarkdown(),await a.recomputeFinalValidationBundle()),a.generationDiagnostics.llm.lastInfo=`正文数值确定性核对:权威库 ${b.size} token,${d} 处疑似无来源数值,${h} 章完成定向修复,残留 ${i} 处(单轮失败即放弃)`}async function er(a){let b=a.requirementSemantics;if(!b||!b.parsed||0===(b.globalRequirements||[]).length&&0===(b.chapterRequirements||[]).length)return;let c=[...b.globalRequirements||[],...(b.chapterRequirements||[]).flatMap(a=>a.requirements)].filter(Boolean).length,d=0,e=0,g=0;for(let c of a.finalChapterDrafts){let h=function(a,b){let c=a.requirementSemantics;if(!c)return[];let d=(c.chapterRequirements||[]).filter(a=>a.chapterTitle&&(b.includes(a.chapterTitle)||a.chapterTitle.includes(b))).flatMap(a=>a.requirements);return[...new Set([...c.globalRequirements||[],...d])].filter(Boolean).slice(0,24)}(a,c.title);if(0===h.length)continue;d+=1;let i=a.finalChapterDrafts.findIndex(a=>a.id===c.id);if(i<0)continue;let j=(0,b8.X5)({type:"llm_review",roleId:`agent-requirement-verification-${c.id}`,status:"running",message:`用户要求执行核验:${c.title}(${h.length} 条要求)`,details:h.map(a=>`- ${a}`)},{subtitle:"用户要求核验"});(0,b8.fx)(a.progressStages,j),(0,b8.fx)(a.finalGateRepairStages,j),a.emitProgress(a.finalChapterDrafts,a.progressStages);let k=await a.withProgressHeartbeat(()=>(0,aA.bb)('你是投标文档用户要求核验专家。逐条核对「用户要求」是否已在章节正文中落实。\n\n判定口径:正文存在明确满足该要求的实质性内容即算落实;仅泛泛提及、半句带过、被其他内容顶替均算未落实。\n\n不得因为正文有其他内容就降低标准;用户要求是最高优先级,未落实必须如实列入 unmet。\n\n只返回 JSON:{"satisfied":true/false,"unmet":["未落实要求原文"]}。',[`章节标题:${c.title}`,`用户要求(逐条核验):
78
+ 请在该小节内部按上述标题逐一补齐(标题一字不差,不得增删改、合并或调序),每个工作包小节按三要素展开正式正文:作业对象与工程量(什么部位、什么规模)、工序顺序(先后顺序清晰)、施工方法(工艺做法、工艺参数、验收检测)。已有内容一律不得改动,不得删除任何已有小节与段落,不得输出 Markdown 表格。`});return dO({originalContent:a.chapter.content,repairRound:"workpackage-skeleton-repair",diagnostics:i,beforeMetrics:[a.entries.reduce((a,b)=>a+b.missing.length,0)],apply:async()=>{let c=await l(()=>(0,f.X6)(i,`workpackage-skeleton-repair:${a.chapter.id}`,()=>(0,f.l8)({template:d,chapter:{id:a.chapter.id,title:a.chapter.title,content:a.chapter.content,evidence:a.chapter.evidence||[],missingFacts:a.chapter.missingFacts||[],sections:a.chapter.sections},issues:[b.join("\n"),"清单之外的内容一律不得改动;不得删除任何小节标题、表格与数值参数。"],promptTexts:e,requirement:g,forbidDrawingImages:!0,diagnostics:i,signal:h,patchGuard:(0,f.XG)("workpackage-skeleton-repair",i),anchorTexts:a.entries.map(a=>({text:a.headingLine,append:!0})),maxTokens:6e3})));return c.content&&c.content!==a.chapter.content?c.content:a.chapter.content},recheck:b=>{if(0===q.length)return[0];let c=0;for(let d of b.split("\n").map(a=>a.trim()).filter(a=>m.test(a))){let e=d.replace(/^#{3,4}\s+(?:\d+(?:\.\d+)*\s+)?/u,"");ar.gG.test(a.chapter.title)&&ar.gG.test(e)||(c+=(0,aj.ab)(b,e,q).length)}return[c]}})},r=await Promise.allSettled(c.map(a=>o(a))),s=0;if(r.forEach((a,b)=>{if("rejected"===a.status){if(h?.aborted)throw a.reason;console.error("[gen] workpackage skeleton repair failed:",a.reason);return}let d=a.value,{chapter:e}=c[b];if(d.rolledBack)return void console.error("[gen] workpackage skeleton repair rolled back:",e.title);d.content&&d.content!==e.content&&(e.content=d.content,s+=1,p+=1)}),k(b),0===s)break;n=!0}return(n||o>0)&&((0,b8.fx)(j,(0,b8.X5)({type:"llm_review",roleId:"workpackage-skeleton-repair",status:"success",message:`工作包骨架收口完成:表格剥离 ${o} 处、骨架补写 ${p} 章`},{subtitle:"工作包骨架收口"})),k(b)),{skeletonFixApplied:n}}async function eg(a){let{chapterDraftsFinal:b,template:c,repairPromptTexts:d,requirement:e,signal:g,generationDiagnostics:h,progressStages:i,emitProgress:j,withProgressHeartbeat:k}=a,l=(0,cg.yw)("",b).filter(a=>"missing_planned_section"===a.reason||"empty"===a.reason&&a.planned),m=b.flatMap(a=>{let b=l.filter(b=>b.chapterTitle===a.title);if(0===b.length)return[];let c=b.map(a=>({title:a.sectionTitle,emptyOnly:"empty"===a.reason})),d=a.content.split("\n").map(a=>a.trim()).filter(a=>/^#{2,4}\s/u.test(a)).pop();return d?[{chapter:a,sectionTitles:c,lastHeadingLine:d}]:[]});if(0===m.length)return{plannedSectionFixApplied:!1};(0,b8.fx)(i,(0,b8.X5)({type:"llm_review",roleId:"planned-section-repair",status:"running",message:`缺规划小节补写(${m.length} 章缺失)`},{subtitle:"缺节补写收口"})),j(b);let n=new Map(b.map((a,b)=>[a.title,b])),o=async a=>{let i=n.get(a.chapter.title)??b.indexOf(a.chapter),j=a.sectionTitles.map(({title:b,emptyOnly:c})=>{let d=(a.chapter.sections||[]).findIndex(a=>a===b)+1||(a.chapter.sections||[]).length+1,e=`### ${i+1}.${d} ${b}`;return c?`本章小节「${b}」只有标题或表格无正式正文:必须在既有小节标题下补写正式正文段落(正文写在表格前后均可),不得新增同名小节标题、不得删除或改动已有表格与数值。
79
+ ${(0,d9.av)(a.chapter.title,b)}`:`本章正文缺少规划小节「${b}」:必须在章末新增小节标题「${e}」(标题一字不差)并写入正式正文。
80
+ ${(0,d9.av)(a.chapter.title,b)}`});return dO({originalContent:a.chapter.content,repairRound:"planned-section-repair",diagnostics:h,beforeMetrics:[a.sectionTitles.length],apply:async()=>{let b=await k(()=>(0,f.X6)(h,`planned-section-repair:${a.chapter.id}`,()=>(0,f.l8)({template:c,chapter:{id:a.chapter.id,title:a.chapter.title,content:a.chapter.content,evidence:a.chapter.evidence||[],missingFacts:a.chapter.missingFacts||[],sections:a.chapter.sections},issues:[...j,"已有内容一律不得改动,不得删除任何已有小节、表格与数值参数;新增小节之外不得改动。"],promptTexts:d,requirement:e,forbidDrawingImages:!0,diagnostics:h,signal:g,patchGuard:(0,f.XG)("planned-section-repair",h),anchorTexts:[{text:a.lastHeadingLine,append:!0}],maxTokens:6e3})));return b.content&&b.content!==a.chapter.content?b.content:a.chapter.content},recheck:b=>[(0,cg.yw)("",[{title:a.chapter.title,content:b,sections:a.chapter.sections}]).filter(b=>b.chapterTitle===a.chapter.title&&("missing_planned_section"===b.reason||"empty"===b.reason&&b.planned)).length]})},p=await Promise.allSettled(m.map(a=>o(a))),q=0;return p.forEach((a,b)=>{if("rejected"===a.status){if(g?.aborted)throw a.reason;console.error("[gen] planned section repair failed:",a.reason);return}let c=a.value,{chapter:d}=m[b];if(c.rolledBack)return void console.error("[gen] planned section repair rolled back:",d.title);c.content&&c.content!==d.content&&(d.content=c.content,q+=1)}),j(b),(0,b8.fx)(i,(0,b8.X5)({type:"llm_review",roleId:"planned-section-repair",status:q>0?"success":"failed",message:q>0?`缺规划小节补写完成:补写 ${q} 章`:"缺规划小节补写:修复 patch 未落地(锚点失配或 LLM 未产出)"},{subtitle:"缺节补写收口"})),{plannedSectionFixApplied:q>0}}async function eh(a){let{chapterDraftsFinal:b,template:c,reviewPromptTexts:d,repairPromptTexts:e,requirement:g,signal:h,projectContext:i,generationDiagnostics:j,preliminaryFactsModel:k,scopeConflicts:l,progressStages:m,emitProgress:n,withProgressHeartbeat:o,blueprintData:p}=a,q=[],r=!1;try{let s=a.globalReviewSamplingRate??1,t=s>=1||b.length<=2?b:b.filter((a,b)=>b%Math.max(2,Math.round(1/s))==0),u=t.length,v=async()=>{let a=b.map(a=>a.content).join("\n\n"),[e,f]=await Promise.all([o(()=>dn({template:c,chapters:t,chapterReviews:[],promptTexts:d,requirement:g,projectContext:i,diagnostics:j,signal:h})),dV(a,{diagnostics:j,signal:h})]);return{issues:[...new Set([...e.issues,...f.map(a=>{let b={level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`数据一致性矛盾(${a.kind}):${a.description}(原文 A:“${a.itemA.slice(0,60)}” ↔ 原文 B:“${a.itemB.slice(0,60)}”)`,suggestion:"全文数据必须一致:以绑定资料(图纸/清单/招标文件)为准选定唯一值,统一矛盾数值对,删除或修正其余矛盾表述。禁止将本缺陷描述与修复要求本身写入正文,输出仅限正文内容。"};return`${b.message};${b.suggestion||""}`})])],stage:e.stage}},w=[],x=async()=>{let a=b.map(a=>a.content).join("\n\n"),c=(0,ao.t1)(a),d=await (0,be.Mv)(c.sentences,c.overviewBody?[c.overviewBody]:[]);return[...(await (0,cg.qm)(a,k,l)).filter(a=>/跨章一致性冲突/u.test(a.message)),...(await (0,cg.hr)(a,k)).filter(a=>"error"===a.level),...(0,ao.rA)(a,{laborPeakAuthority:a4(p).laborPeakAuthority}),...(0,ao.iY)(a),...(0,ao.IJ)(a),...(0,ao.nm)(a),...(0,ao.ON)(a),...(0,ao.Et)(a),...(0,ao.H)(a),...(0,ao.$$)(a,k.specAuthorityMap),...(0,ao.N$)(a),...(0,ao.Fr)(a),...(0,ao.bq)(a),...(0,ao.vH)(a),...(0,ao.cT)(a),...(0,ao.ub)(a),...(0,ao.CJ)(a),...(0,ao.cl)(a),...(0,ao.zP)(a),...await (0,ao.r8)(a,z),...await (0,ao.sn)(a),...(0,ao.l4)(a,{semanticSimilarity:d}),...await (0,ao.LF)(b),...p?ba(a,p).filter(a=>"error"===a.level):[],...(0,ch.jW)(a),...(0,ch.l5)(a)].map(a=>`${a.message};${a.suggestion||""}`)},y=await v(),z=(0,ao.P3)(k),A=(0,ao.z4)(k),B=y.issues;w=await x(),q=[...new Set([...B,...w])];let C=0;for(let a of b){let b=(0,ao.fE)(a.content,{...a4(p),supportAuthority:z});b.fixedCount>0&&(a.content=b.markdown,C+=b.fixedCount)}C>0&&(w=await x(),q=[...new Set([...B,...w])]);let D=!1,E=a=>[[...(0,ao.nm)(a),...(0,ao.ON)(a),...(0,ao.ub)(a),...(0,ao.CJ)(a),...(0,ao.cl)(a),...(0,ch.jW)(a),...(0,ch.l5)(a)].length];for(let a=0;a<1&&q.length>0;a+=1){(0,b8.fx)(m,(0,b8.X5)({type:"llm_review",roleId:"global-consistency-repair",status:"running",message:`跨章一致性冲突第 ${a+1} 轮定向修复(${q.length} 个冲突)`},{subtitle:"跨章一致性修复"})),n(b);let d=0,i=b.flatMap(a=>{let b=a.content.replace(/\s+/gu,"").replace(/平方米|m²|m2/giu,"㎡"),c=q.filter(c=>{if(c.includes(a.title))return!0;if(/基坑深度数值未锁定/u.test(c))return/基坑|支护|开挖|土方|降水/u.test(a.title)||a.content.includes("基坑");if((c.match(/不一致的表述\s*([^;;。\n]+)/u)?.[1]||"").split(/[、,,]/u).some(a=>{let c=a.trim().replace(/\s+/gu,"").replace(/平方米|m²|m2/giu,"㎡");return c.length>=3&&b.includes(c)}))return!0;let d=c.match(/正文([^配比厚度\s]{1,6}?)(?:配比|厚度)/u)?.[1];return!!(d&&a.content.includes(d)||[...c.matchAll(/“([^”]{6,80})”/gu)].some(a=>b.includes(a[1].replace(/\s+/gu,""))))||[...c.matchAll(/(\d[\d,,.]*)\s*(?:人|台|日|个|次|天|月|套|具|处|项|条)/gu)].some(a=>b.includes(a[0].replace(/\s+/gu,"")))});return c.length>0?[{chapter:a,related:c}]:[]});if((await Promise.allSettled(i.map(({chapter:a,related:b})=>dO({originalContent:a.content,repairRound:"global-consistency-repair",diagnostics:j,apply:async()=>{let d=await o(()=>(0,f.X6)(j,`global-consistency-repair:${a.id}`,()=>(0,f.l8)({template:c,chapter:{id:a.id,title:a.title,content:a.content,evidence:a.evidence||[],missingFacts:a.missingFacts||[],sections:a.sections},issues:b.map(a=>{let b=/重复/u.test(a)?"请删除本冲突描述的重复内容(保留首次出现的完整版本),不得改动其余正文。":/缺少三要素/u.test(a)?"请按冲突描述中列出的缺失要素定向补写:只补缺失要素的内容(作业对象与工程量/工序顺序/施工方法),不得删除或改动已有正文;补写的工程量数值必须取工程量清单汇总值,不得编造。":/清单内部口径词|不应使用 Markdown 表格/u.test(a)?"请删除本冲突描述中点名的清单内部口径内容(“分部小计/本页小计/合计/按实/暂估”等口径行或承载专业工程正文的 Markdown 表格),把表格中的项目总量数据改写为段落式连贯叙述(数值保持不变),不得改动其余正文。":/基坑深度数值未锁定/u.test(a)?void 0!==A?`请在本章基坑支护/开挖小节写出确定性的基坑开挖深度表述:本工程基坑开挖深度为 ${A}m(权威口径来自图纸标注,严禁写其他深度数值或「按图纸确定」类回避表述),并同步保留既有危大工程分级标注。`:"请从本章证据摘要中的图纸标注/勘察资料锁定基坑开挖深度数值,以确定性表述写入基坑支护小节(严禁「按图纸确定」类回避表述),不得编造数值。":/规格错位/u.test(a)?"请按冲突描述中的工程量清单权威规格修正本章对应部位的规格表述:同一材料不同部位允许不同规格,同一部位只允许权威规格,禁止把多种规格全文归一为一种。":"请严格按冲突描述中给出的资料口径修正本章对应表述,不得引入新的数值;与资料口径一致的既有表述(含分层/子项数值)不得改动;同一材料多种规格按所属部位/分部分项分别使用,禁止全文统一为一种规格。";return`${a};${b}`}),promptTexts:e,requirement:g,forbidDrawingImages:!0,diagnostics:j,signal:h,patchGuard:(0,f.XG)("global-consistency-repair",j)})));return d.content&&d.content!==a.content?d.content:a.content},recheck:E})))).forEach((a,b)=>{if("rejected"===a.status){if(h?.aborted)throw a.reason;console.error("[gen] global consistency repair failed:",a.reason);return}let c=a.value,{chapter:e}=i[b];if(c.rolledBack)return void console.error("[gen] global consistency repair rolled back:",e.title);c.content&&c.content!==e.content&&(e.content=c.content,d+=1)}),0===d){D&&(B=(await v()).issues);break}n(b);let k=await x();w=k,0===a||0===k.length?(B=(await v()).issues,D=!1):D=!0,q=[...new Set([...B,...k])],(0,b8.fx)(m,(0,b8.X5)({type:"llm_review",roleId:"global-consistency-review",status:q.length>0?"failed":"success",message:q.length>0?`跨章一致性复检:仍有 ${q.length} 个冲突`:"跨章一致性复检通过"},{subtitle:"全局一致性审查"})),n(b)}await ee({chapterDraftsFinal:b,template:c,repairPromptTexts:e,requirement:g,signal:h,generationDiagnostics:j,progressStages:m,emitProgress:n,withProgressHeartbeat:o}),await ef({chapterDraftsFinal:b,projectContext:i,template:c,repairPromptTexts:e,requirement:g,signal:h,generationDiagnostics:j,progressStages:m,emitProgress:n,withProgressHeartbeat:o});let F=await (0,cg.KI)(b,k,l),G=(0,ao.GG)(k),H=(0,ao.hI)(k),I=(0,ao.Pt)(k),J=a4(p),K=J.laborPeakAuthority&&J.laborPeakAuthority>0?J.laborPeakAuthority:(0,ao.dc)(b.map(a=>a.content).join("\n\n")),L=0;for(let a of b){let b=(0,ao.fE)(a.content,{scheduleAuthority:G,assemblyRateAuthority:H,...J,supportAuthority:z,laborPeakAuthority:K});b.fixedCount>0&&(a.content=b.markdown,L+=b.fixedCount)}let M=(0,ao.Dq)(k),N=b.map(a=>a.content).join("\n\n"),O=(0,ao.t1)(N),P=await (0,be.Mv)(O.sentences,O.overviewBody?[O.overviewBody]:[]),Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=(0,ao.qG)(b);for(let a of(Q+=X.removedCount,b)){let b=a.content.split(/\r?\n/u).length,c=(0,ao.lR)(a.content),d=(0,ao.QM)(c.markdown),e=(0,ao.Vc)(d.markdown),f=(0,ao.U$)(e.markdown,P),g=(0,ao.$h)(f),h=(0,ao.EN)(g.markdown,{areaSummary:I,scheduleDays:G}),i=(0,ao.K2)(h.markdown),j=(0,ao.mG)(i.markdown,M),k=j.markdown.split(/\r?\n/u).length,l=b-k,m=g.fixedCount-0+h.fixedCount+i.fixedCount+j.fixedCount;T+=g.fixedCount,V+=h.fixedCount,W+=i.fixedCount,U+=j.fixedCount,(l>0||m>0)&&(Q+=c.removedCount+d.removedCount,R+=e.removedCount,S+=l-c.removedCount-d.removedCount-e.removedCount,a.content=j.markdown)}let Y=await (0,ao.yR)(b),Z=0,$=0,_=0,aa=0,ab=0,ac=0,ad=0;for(let a of b){let b=(0,ao.ir)(a.content);b.fixedCount>0&&(a.content=b.markdown,Z+=b.fixedCount);let c=(0,ao.xp)(a.content);c.fixedCount>0&&(a.content=c.markdown,$+=c.fixedCount);let d=await (0,ao.lv)(a.content);d.fixedCount>0&&(a.content=d.markdown,_+=d.fixedCount);let e=(0,ao.Co)(a.content);e.fixedCount>0&&(a.content=e.markdown,aa+=e.fixedCount);let f=(0,ao.zj)(a.content);f.fixedCount>0&&(a.content=f.markdown,ab+=f.fixedCount);let g=(0,ao.SZ)(a.content);g.fixedCount>0&&(a.content=g.markdown,ac+=g.fixedCount);let h=(0,ao.GI)(a.content);h.fixedCount>0&&(a.content=h.markdown,ad+=h.fixedCount)}if(r=!0,F.fixedCount>0||L>0||Q>0||R>0||S>0||Y>0||T>0||V>0||W>0||Z>0||$>0||_>0||aa>0||ab>0||ac>0||ad>0||U>0){w=await x(),q=[...new Set([...B,...w])];let a=[F.fixedCount>0?`数值 ${F.fixedCount} 处`:"",L>0?`跨章数值 ${L} 处`:"",Q>0?`重复表格 ${Q} 行`:"",R>0?`重复段落 ${R} 行`:"",S>0?`概况复述句 ${S} 行`:"",Y>0?`跨章语义重复段 ${Y} 段`:"",Z>0?`自伤表述改写 ${Z} 处`:"",$>0?`危大辨识补漏 ${$} 项`:"",_>0?`扬尘六个百分百补写 ${_} 项`:"",aa>0?`内部术语清洗 ${aa} 处`:"",ab>0?`无表头表格补齐 ${ab} 处`:"",ac>0?`两可表述归一 ${ac} 处`:"",ad>0?`配置污染清洗 ${ad} 处`:"",U>0?`绿化养护期统一 ${U} 处`:""].filter(Boolean).join("、");(0,b8.fx)(m,(0,b8.X5)({type:"llm_review",roleId:"global-consistency-deterministic-fix",status:"success",message:`跨章一致性定点修复:${a}${F.details.slice(0,4).length>0?`(${F.details.slice(0,4).join("、")})`:""}`,details:F.details.slice(4)},{subtitle:"跨章一致性修复"})),n(b)}let ae=w.filter(a=>!eb.test(a)),af=[...B,...w.filter(a=>eb.test(a))],ag=ae.length>0?"failed":"success",ah=ae.length>0?`跨章一致性修复完成:仍残留 ${ae.length} 个可修复冲突(已记录,由交付门禁兑底)`:af.length>0?`跨章一致性修复完成:确定性冲突已全部消除;另有 ${af.length} 个审查提示/资料两可项(已记录,由交付门禁复核)`:"跨章一致性修复完成:冲突已全部消除";(0,b8.fx)(m,(0,b8.X5)({type:"llm_review",roleId:"global-consistency-repair",status:ag,message:ah},{subtitle:"跨章一致性修复"})),n(b);let ai=u<b.length?{...y.stage,message:`${y.stage.message||"全局一致性审查完成"}(抽检 ${u}/${b.length} 章)`}:y.stage;(0,b8.fx)(m,ai),n(b)}catch(a){if(h?.aborted)throw a;console.error("[gen] global consistency review failed:",a)}return{issues:q,dedupRan:r}}async function ei(a){(await eg({chapterDraftsFinal:a.finalChapterDrafts,template:a.template,repairPromptTexts:a.repairPromptTexts,requirement:a.requirement,signal:a.signal,generationDiagnostics:a.generationDiagnostics,progressStages:a.progressStages,emitProgress:a.emitProgress,withProgressHeartbeat:a.withProgressHeartbeat})).plannedSectionFixApplied&&(a.finalMarkdown=a.rebuildFinalMarkdown(),await a.recomputeFinalValidationBundle());let b=(0,ao.qj)(a.finalMarkdown);b!==a.finalMarkdown&&(a.finalMarkdown=b,await a.recomputeFinalValidationBundle());let c=function(a){let b=a.split(/\r?\n/u),c=[],d=0,e=0;for(;e<b.length;){if(!/^\s*\|/u.test(b[e])){c.push(b[e]),e+=1;continue}let a=e;for(;a+1<b.length&&/^\s*\|/u.test(b[a+1]);)a+=1;let f=dS(b.slice(e,a+1));f.removed>0&&(d+=1),c.push(...f.lines),e=a+1}return{markdown:c.join("\n"),removed:d}}(a.finalMarkdown);c.markdown!==a.finalMarkdown&&(a.finalMarkdown=c.markdown,await a.recomputeFinalValidationBundle());let d=(0,ao.g4)(b_.filter(a=>a.round2).map(b=>c=>b.fix(c,a.surfaceFixContext)),a.finalMarkdown,3);d.markdown!==a.finalMarkdown&&(a.finalMarkdown=d.markdown,await a.recomputeFinalValidationBundle());let e=await (0,bd.NR)(a.finalMarkdown);e!==a.finalMarkdown&&(a.finalMarkdown=e,await a.recomputeFinalValidationBundle());let f=(0,ao._D)(a.finalMarkdown);f.fixedCount>0&&(a.finalMarkdown=f.markdown,await a.recomputeFinalValidationBundle())}let ej=/(?:\d+(?:\.\d+)?\s*(?:W|kW|kV|V|A|Hz|mm|cm|m|km|kg|g|t|K|MPa|kN|℃|%|L|mL|s|h|min)\b|C\d{2,}|HRB\d+|HPB\d+|DN\s*\d+|Φ\s*\d+(?:\.\d+)?|φ\s*\d+(?:\.\d+)?|\d+(?:\.\d+)?\s*[×x*]\s*\d+(?:\.\d+)?)/giu;function ek(a){return[...new Set((a.match(ej)||[]).map(a=>a.replace(/\s+/gu,"").trim()))].filter(Boolean).slice(0,8)}function el(a,b=[]){return[...new Set(`${a} ${b.join(" ")}`.match(/[\p{Script=Han}]{2,}|[A-Za-z0-9_-]{3,}/gu)||[])].filter(a=>a.length>=2)}let em=/(?:\d+(?:\.\d+)?\s*(?:mm|cm|m|km|㎡|m²|m3|m³|kg|g|t|K|L|ml|MPa|kPa|kN|N|℃|%|台|套|座|个|项|批|次|份|人|小时|分钟|日历天|天|周|月|年|万元|元|W|kW|kV|V|A|Hz|米|处|道|根|盏|株|标段|层|樘|孔|眼|间|户|栋|幢|d)\b|DN\s*\d+|Φ\s*\d+(?:\.\d+)?|φ\s*\d+(?:\.\d+)?|C\d{2,}|HRB\d+|HPB\d+)/giu;function en(a){return a.replace(/\s+/gu,"").toLowerCase()}function eo(a){return[...new Set((a.match(em)||[]).map(en))]}function ep(a){return a.split(/[。;;!!??\n]/u).map(a=>a.trim()).filter(Boolean).filter(a=>!a.startsWith("#")&&em.test(a)).map(a=>a.slice(0,160))}function eq(a){if(/高温|防暑|危大|专家论证|超过一定规模|40℃|37℃|35℃/u.test(a)||/第\s*\d+\s*(天|周|月|日|层|道|步|轮|批)/u.test(a))return!0;let b=a.match(em)||[];return!!(b.length>0&&b.every(a=>/%$/u.test(a.trim()))&&/完成|进度|利用率|合格率|优良率|评标|得分|负荷/u.test(a)||b.every(a=>/^20\d{2}/u.test(a))&&/年/u.test(a)&&!/月|日/u.test(a))}async function er(a){let b=function(a){let b=new Set;for(let c of a.allEvidence)if(c.content)for(let a of eo((0,g.eE)(c.content)))b.add(a);let c=a.input.billFactLock;if(c)for(let a of c.entries){for(let c of eo(`${a.name} ${a.description} ${a.quantity}${a.unit}`))b.add(c);for(let c of ek(a.description))b.add(en(c));for(let c of a.specQuantityPairs)for(let a of(b.add(en(c.spec)),eo(c.quantity)))b.add(a)}let d=a.input.blueprintData?.quantities;if(d)for(let[a,c]of Object.entries(d))for(let d of("number"==typeof c.value&&Number.isFinite(c.value)&&b.add(en(`${c.value}${c.unit||""}`)),eo(a)))b.add(d);for(let c of[...a.structuredFacts||[],...a.factsModel?.preciseFacts||[]])for(let a of eo((0,e.lG)(c.value)))b.add(a);return b}(a);if(0===b.size)return;let c=new Map;for(let d of a.finalChapterDrafts){let a=[];for(let c of ep(d.content)){if(eq(c))continue;let d=eo(c);if(0===d.length||d.every(a=>b.has(a)))continue;let e=d.filter(a=>!b.has(a));e.length>0&&a.push({sentence:c,tokens:e})}a.length>0&&c.set(d.id,a.slice(0,12))}let d=[...c.values()].reduce((a,b)=>a+b.length,0);if(0===d){(0,b8.fx)(a.progressStages,(0,b8.X5)({type:"validation",roleId:"numeric-verification",status:"success",message:"正文数值确定性核对通过:全部正文数值均在资料原文/清单事实锁/蓝图参数桶中找到同值来源",details:[`数值权威库规模:${b.size} 个归一化 token`]},{subtitle:"数值确定性核对"})),a.emitProgress(a.finalChapterDrafts,a.progressStages);return}let h=0,i=0;for(let[d,e]of c){let c=a.finalChapterDrafts.findIndex(a=>a.id===d);if(c<0)continue;let g=a.finalChapterDrafts[c],j=(0,b8.X5)({type:"llm_review",roleId:`agent-numeric-verification-${d}`,status:"running",message:`正文数值核对发现 ${e.length} 处疑似无来源数值,定向修复中:${g.title}`,details:e.map(a=>`疑似:${a.sentence}(缺来源 token:${a.tokens.join("、")})`)},{subtitle:"数值确定性核对"});(0,b8.fx)(a.progressStages,j),(0,b8.fx)(a.finalGateRepairStages,j),a.emitProgress(a.finalChapterDrafts,a.progressStages);let k=["【正文数值定向核对修复】\n下列句子中的数值(标注「缺来源 token」)在项目绑定材料、工程量清单与蓝图中均找不到同值来源,属于疑似编造数值。请逐句核对并修复:\n1. 若该数值在本章绑定证据中确实存在(仅表述口径不同),保持数值原样,只修正单位或表述;\n2. 若该数值是行业通用工艺参数(如养护龄期、分层厚度),可按规范惯例保留并改为规范原文表述;\n3. 其余情况必须删除该数值,改写为不带具体数值的过程控制表述(如「按设计要求」「分层碾压至压实度满足设计及规范要求」);\n禁止把疑似数值替换为另一个同样无来源的数值;禁止改动句子的非数值部分;只做局部修改,不得新增、删除或合并小节。",e.map(a=>`- 疑似句:${a.sentence}(缺来源 token:${a.tokens.join("、")})`).join("\n")].join("\n"),l=await dO({originalContent:g.content,repairRound:"numeric-verification",diagnostics:a.generationDiagnostics,apply:async()=>{let b=await a.withProgressHeartbeat(()=>(0,f.l8)({template:a.template,chapter:{id:g.id,title:g.title,content:g.content,evidence:g.evidence,missingFacts:g.missingFacts,sections:g.sections},issues:e.map(a=>`疑似无来源数值:${a.sentence}(token:${a.tokens.join("、")})`),promptTexts:k,requirement:a.requirement,forbidDrawingImages:!1,diagnostics:a.generationDiagnostics,signal:a.signal,patchGuard:(0,f.XG)("numeric-verification",a.generationDiagnostics)}));return b.content&&b.content!==g.content?b.content:g.content},recheck:a=>[ep(a).filter(a=>!eq(a)&&eo(a).some(a=>!b.has(a))).length]});l.rolledBack||l.content===g.content||(a.finalChapterDrafts[c]={...g,content:l.content},h+=1);let m=ep((a.finalChapterDrafts[c]||g).content).filter(a=>!eq(a)&&eo(a).some(a=>!b.has(a))).length;i+=m;let n=(0,b8.X5)({type:"llm_review",roleId:`agent-numeric-verification-${d}`,status:l.rolledBack?"failed":0===m?"success":"failed",message:l.rolledBack?`数值核对修复已回滚:${g.title}(修复后疑似数值增多,保留修复前正文)`:0===m?`数值核对修复完成:${g.title}(${e.length} 处疑似数值已处理)`:`数值核对修复部分生效:${g.title}(残留 ${m} 处疑似数值,单轮失败即放弃)`,details:[...e.map(a=>`疑似:${a.sentence}`),m>0?"残留项以 warning 记录,不阻断交付":""]},{subtitle:"数值确定性核对"});(0,b8.fx)(a.progressStages,n),(0,b8.fx)(a.finalGateRepairStages,n),a.emitProgress(a.finalChapterDrafts,a.progressStages)}h>0&&(a.finalMarkdown=a.rebuildFinalMarkdown(),await a.recomputeFinalValidationBundle()),a.generationDiagnostics.llm.lastInfo=`正文数值确定性核对:权威库 ${b.size} token,${d} 处疑似无来源数值,${h} 章完成定向修复,残留 ${i} 处(单轮失败即放弃)`}async function es(a){let b=a.requirementSemantics;if(!b||!b.parsed||0===(b.globalRequirements||[]).length&&0===(b.chapterRequirements||[]).length)return;let c=[...b.globalRequirements||[],...(b.chapterRequirements||[]).flatMap(a=>a.requirements)].filter(Boolean).length,d=0,e=0,g=0;for(let c of a.finalChapterDrafts){let h=function(a,b){let c=a.requirementSemantics;if(!c)return[];let d=(c.chapterRequirements||[]).filter(a=>a.chapterTitle&&(b.includes(a.chapterTitle)||a.chapterTitle.includes(b))).flatMap(a=>a.requirements);return[...new Set([...c.globalRequirements||[],...d])].filter(Boolean).slice(0,24)}(a,c.title);if(0===h.length)continue;d+=1;let i=a.finalChapterDrafts.findIndex(a=>a.id===c.id);if(i<0)continue;let j=(0,b8.X5)({type:"llm_review",roleId:`agent-requirement-verification-${c.id}`,status:"running",message:`用户要求执行核验:${c.title}(${h.length} 条要求)`,details:h.map(a=>`- ${a}`)},{subtitle:"用户要求核验"});(0,b8.fx)(a.progressStages,j),(0,b8.fx)(a.finalGateRepairStages,j),a.emitProgress(a.finalChapterDrafts,a.progressStages);let k=await a.withProgressHeartbeat(()=>(0,aA.bb)('你是投标文档用户要求核验专家。逐条核对「用户要求」是否已在章节正文中落实。\n\n判定口径:正文存在明确满足该要求的实质性内容即算落实;仅泛泛提及、半句带过、被其他内容顶替均算未落实。\n\n不得因为正文有其他内容就降低标准;用户要求是最高优先级,未落实必须如实列入 unmet。\n\n只返回 JSON:{"satisfied":true/false,"unmet":["未落实要求原文"]}。',[`章节标题:${c.title}`,`用户要求(逐条核验):
81
81
  ${h.map((a,b)=>`${b+1}. ${a}`).join("\n")}`,`章节正文:
82
82
  ${c.content.slice(0,12e3)}`].filter(Boolean).join("\n\n"),{maxTokens:1200,temperature:0,signal:a.signal,diagnostics:a.generationDiagnostics,prefixKey:"requirement-verification"})),l=Array.isArray(k?.unmet)?k.unmet.filter(Boolean).slice(0,12):[];if(!k||!0===k.satisfied||0===l.length){e+=1;let b=(0,b8.X5)({type:"llm_review",roleId:`agent-requirement-verification-${c.id}`,status:"success",message:`用户要求核验通过:${c.title}(${h.length} 条要求全部落实)`,details:h.map(a=>`- ${a}`)},{subtitle:"用户要求核验"});(0,b8.fx)(a.progressStages,b),(0,b8.fx)(a.finalGateRepairStages,b),a.emitProgress(a.finalChapterDrafts,a.progressStages);continue}let m=["【用户要求定向补写修复】","下列用户要求经核验未在本章正文中落实。请逐条在正文最合适的位置补充落实,用户要求是最高优先级:","用户要求与系统默认规则冲突时以用户要求为准;已落实内容不得删除或改写;只做局部修改,不得新增、删除或合并小节。",l.map(a=>`- ${a}`).join("\n"),...b?.styleRequirements?.length?[`
83
83
  风格要求(补写内容同样必须遵守):
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 dN({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 es(a){return Math.max(0,Math.min(100,Math.round(a)))}async function et(a){let b=await dy(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:es(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 eu(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=es(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(dn.s2)||[]),d=new Set(b.match(/工程量|材料|设备|范围|流程|验收|检测|复试|调试|隐蔽|检验批|资料|记录|系统|部位|接口|规格|标准/gu)||[]),e=Math.max(1,b.length),f=c.size/(e/1e3);return{score:es(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(dn.aX)||[]),d=Math.max(1,b.length),e=c.size/(d/1e3);return{score:es(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:es(e/d*100),detail:`表格 ${d} 个,其中字段完整 ${e} 个`}}(a,b),h=await et(a),i=function(a){let b=dx(a);return{score:es(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:es(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=es(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=[...dx(a),...await dy(a),...dA(a),...dB(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 ev(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
- ${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 ew(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 eu(a.finalChapterDrafts,a.finalMarkdown,{templating:a.qualityBundle.qualityReport.templating}),a.templatingReview=a.qualityBundle.qualityReport.templating?await a.withProgressHeartbeat(()=>ev({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 ex={prefixCacheHitRateFloor:.4,budgetDropRatioCeiling:.3,llmFailureRateCeiling:.1};async function ey(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<ex.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>ex.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>ex.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 ez(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 dL(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)(dH((0,bc.bR)((0,bc.kT)((0,bc.K7)(dD(X(q.finalMarkdown,q.structuredFacts),q.projectMaterialSummary)))),q.template))).markdown,await dM(q),await dO(q),await dS(q),await dV(q),await dW(q),await d7(q),await eh(q),await eq(q),await er(q),await ew(q),await ey(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 eA=c(23021);function eB(a){return a.replace(/\s+/gu,"").toLowerCase()}var eC=c(30355),eD=c(2773);async function eE(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.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(k.missing.length>0){let b=k.failedChecks.length>0?`蓝图校验项「${k.failedChecks.join("、")}」未通过`:"蓝图校验未通过或构建异常";throw a.global.progressStages.push((0,b8.X5)({type:"chapter_generation",roleId:"chapter_generation",status:"failed",message:`${(0,aq.GQ)(c.title)} 依赖蓝图权威 [${k.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)} 依赖蓝图权威 [${k.missing.join("、")}],${b},已按节点级把关阻断生成`)}let l=Date.now(),m=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 o=a.global.input.resumeChapters?.find(a=>a.id===c.id||a.title===c.title),p=o?.content?.trim(),q=o?.evidence?.length?[...o.evidence]:[],r=a.prepare.projectUnderstanding.chapterPlans.find(a=>a.chapterId===c.id||a.chapterTitle===c.title),s=r?Object.values(r.evidenceQueries).flat().filter(Boolean):[],t=c.queries.length>0?c.queries:[a.prepare.template.name,a.prepare.template.outputTitle,c.title],u=a.understanding.chapterGraphMap.get(c.id);if(a.understanding.projectGraph&&u&&u.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[...u.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)q.push({chapterId:c.id,filePath:d.file?.relativePath||b,score:5+(u.graphWorks.length+u.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 v=a.planning.chapterIntentClassifier.needsBasicFacts(c.title),w=a.blueprint.billFactLock?(()=>{let b=ek(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))})():[],x=ac(c,[...t,...s,...w],[]),y=Date.now();a.global.progressStages[m]=(0,b8.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:a.prepare.promptPlan.writerPrompts[0]?.id,status:"running",message:`${(0,aq.GQ)(c.title)} 正在执行质量优先的章节检索${u?.graphFiles.size?`(图谱匹配 ${u.graphFiles.size} 个文件)`:""}`,details:x.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 z=p?[]:[...a.understanding.availableEvidenceScopePaths].filter(Boolean).sort(),A=p?[]:a.understanding.scopedIntelligence?.evidenceByChapterId?.[c.id]||[];A.length>0&&q.push(...A);let B=[],C=(c.requiredFacts||[]).filter(a=>!!a&&!x.some(b=>b.includes(a)||a.includes(b))).map(a=>`${c.title} ${a}`),D=(a.prepare.requirementSemantics?.factClues||[]).filter(a=>!x.some(b=>b.includes(a)||a.includes(b))&&!C.some(b=>b.includes(a)||a.includes(b))).map(a=>`${c.title} ${a}`.trim()).slice(0,8),E=[...x,...C,...D];if(z.length>0&&E.length>0){(0,e.Te)(a.global.input.signal);let b=await (0,e.l$)(E,async b=>a.understanding.searchWithCache(b,z,Math.min(a.understanding.requestedEvidencePerChapter,12),c.title),{kind:"search"});B.push(...b)}for(let b of(a.planning.generationDiagnostics.evidence.searchQueries+=E.length,a.planning.generationDiagnostics.evidence.searchMs+=Date.now()-y,a.global.progressStages[m]=(0,b8.X5)({type:"chapter_generation",roleId:"chapter_generation",status:"running",message:`${(0,aq.GQ)(c.title)} KB 检索完成:${E.length} 组查询,准备深度召回与语义排序`,progress:{current:j+1,total:a.planning.effectiveChapters.length,label:"证据检索"}},{subtitle:(0,aq.GQ)(c.title),order:j}),a.global.emitProgress(),B))q.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})));v&&z.length>0&&a.blueprint.basicFactSearchResults.length>0&&q.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 F=p?[]:await (0,eD.$b)({manager:a.understanding.manager,projectRoot:a.prepare.projectRoot,chapter:c,plan:r,profile:a.prepare.projectMaterialProfile,scopedFilePaths:z,limitPerQuery:Math.min(a.understanding.requestedEvidencePerChapter,10),signal:a.global.input.signal}).catch(()=>[]);q.push(...F);let G=new Set((c.pinnedEvidenceFilePaths||[]).filter(Boolean)),H=[];a.planning.chapterIntentClassifier.needsBasicFacts(c.title)&&q.push(...a.understanding.safeProjectBasicEvidence.map(a=>({...a,chapterId:c.id,source:"pinned-evidence"})));let I=a.understanding.writerEvidence.filter(a=>/招标|投标须知|评标办法|专用合同条款|投标人须知/u.test(`${a.filePath||""}${a.sectionTitle||""}`));for(let b of(/概况|工程|项目|总体|部署/u.test(c.title)&&I.length>0&&q.push(...I.map(a=>({...a,chapterId:c.id,source:"pinned-evidence"}))),new Set([...G]))){if(!(0,f.Tz)(a.prepare.projectRoot,b,a.understanding.evidenceScopePaths))continue;let d=G.has(b),e=a.understanding.getCachedFileDetail(b);e&&q.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 K=q.filter(b=>(0,f.Tz)(a.prepare.projectRoot,b.filePath,a.understanding.availableEvidenceScopePaths));if(!p&&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 L=p?[]:(0,eD.SK)({project:a.understanding.project,chapter:c,plan:r,profile:a.prepare.projectMaterialProfile,scopedFilePaths:z,highRisk:a.understanding.rolePoolRisk.highRisk});L.length>0&&K.push(...L),K=(0,b7.Su)(K,a.understanding.projectMaterialScope),a.understanding.excludedEvidenceKeys.size>0&&(K=K.filter(b=>!a.understanding.excludedEvidenceKeys.has((0,bf.hM)(b))));let N=(()=>{let a=Number(process.env.DOCUMENT_SEMANTIC_TOP_CANDIDATES);return Number.isFinite(a)&&a>0?Math.floor(a):3e3})(),O=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,K,N),P=await (0,be.Mv)([(0,eA.Yx)(c)],O.map(aa)),Q=ab(c,K,{preservePinned:!0,semantic:{similarity:P,queryText:(0,eA.Yx)(c)}},a.planning.generationDiagnostics);Q=J(Q,a.understanding.canonicalFacts.scopeConflicts),(0,b7.U2)(Q,a.understanding.projectMaterialScope,`chapter:${c.id}:initial`);let R=c.requiredFacts.filter(a=>!Q.some(b=>(0,dd.Lk)(b,a))),S=0,T=u?[u.graphWorks.length?`图谱识别本章工程内容:${u.graphWorks.join("、")}`:"",u.graphMethods.length?`图谱识别本章施工方法:${u.graphMethods.join("、")}`:"",u.graphBoqItems.length?`图谱识别本章BOQ清单项(${u.graphBoqItems.length}项):${u.graphBoqItems.map(a=>`${a.name} ${a.quantity}${a.unit}`).join("、")}`:"",u.gaps.length?`图谱识别本章资料缺口:${u.gaps.join(";")}`:""].filter(Boolean).join("\n"):"",U=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),V=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")})():"",W=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%密闭运输":"",X=(c.sections||[]).filter(a=>!/^(?:施工概况|施工流程|施工方法)$/u.test(a.trim())&&!/^附录/u.test(a.trim())),Y=X.length>0?`【必须输出以下规划小节为三级标题(### 小节名),逐个小节展开正式正文:每小节正文不少于 100 字,不得只写标题、不得空小节、不得用表格替代正文;小节名与章标题相同或相近也必须输出,不得省略或合并】${X.join("、")}`:"",Z=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=ek(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||[]}):"",ae=[T,V,Y,W,U.length?`【数据口径强制约束】${U.join(";")}`:"",r?.writingGoal,r?.mustCover?.length?`本章必须覆盖:${r.mustCover.join("、")}`:"",r?.mustUseMaterialKinds?.length?`本章优先使用资料类型:${r.mustUseMaterialKinds.join("、")}`:"",Z].filter(Boolean).join("\n"),af=(0,M.C_)(a.prepare.promptPlan,c);if(a.prepare.promptPlan.writerPrompts.length>0&&!af.primaryWriter)throw Error(`${(0,aq.GQ)(c.title)} 写作主控提示词未进入章节生成阶段`);let ag=[af.promptTexts,a.prepare.generationControlPrompt].filter(Boolean).join("\n\n"),ah=af.promptDetails.length?af.promptDetails:["未绑定章节写作提示词"],ai=(0,n.rC)({template:a.prepare.template,chapter:c,spec:a.prepare.documentSpec,profile:a.prepare.domainProfile,promptTexts:ag,requirement:a.global.input.requirement,plan:r?{requiredContents:r.mustCover,evidenceNeeds:Object.values(r.evidenceQueries).flat()}:void 0}),ak=(0,n.ji)({needs:ai,factsModel:a.understanding.preliminaryFactsModel,evidence:K,profile:a.prepare.domainProfile,excludedEvidenceKeys:a.understanding.excludedEvidenceKeys}),al=ak.filter(a=>a.need.required&&"satisfied"!==a.status).map(a=>a.need.label),am=function(a){let b=(a.chapter.requiredFacts||[]).filter(b=>!a.evidence.some(a=>eB(`${a.sectionTitle||""}${a.content||""}`).includes(eB(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:Q}),an=new Set(Q.map(a=>a.filePath)).size,ao=!!u&&(u?.graphFiles.size||0)>=8&&an>=6&&0===R.length&&"low"===am.riskLevel,ap=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:z.length,evidenceCount:Q.length,evidenceFileCount:an,suggestedStrategy:am.suggestedStrategy,highRisk:a.understanding.rolePoolRisk.highRisk,missingFactsCount:R.length,requiredMissingNeedsCount:al.length,riskLevel:am.riskLevel});if(!ao&&ap&&z.length>0){let b=new Set([...R,...al]).size;b>0&&(a.global.progressStages[m]=(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 df({manager:a.understanding.manager,projectRoot:a.prepare.projectRoot,chapter:c,scopedFilePaths:z,fileRoleByPath:a.understanding.fileRoleByPath,fileProcessingByPath:a.understanding.fileProcessingByPath,requiredNeeds:[...new Set([...R,...al])],extraClues:a.prepare.requirementSemantics?.factClues||[],highRisk:a.understanding.rolePoolRisk.highRisk||al.length>0,signal:a.global.input.signal}).catch(()=>[]);S=d.length,d.length>0&&(K=[...K,...(0,b7.Su)(d,a.understanding.projectMaterialScope)],a.understanding.excludedEvidenceKeys.size>0&&(K=K.filter(b=>!a.understanding.excludedEvidenceKeys.has((0,bf.hM)(b)))),Q=ab(c,K,{preservePinned:!0},a.planning.generationDiagnostics),Q=J(Q,a.understanding.canonicalFacts.scopeConflicts),(0,b7.U2)(Q,a.understanding.projectMaterialScope,`chapter:${c.id}:deep`),R=c.requiredFacts.filter(a=>!Q.some(b=>(0,dd.Lk)(b,a)))),al=(ak=(0,n.ji)({needs:ai,factsModel:a.understanding.preliminaryFactsModel,evidence:K,profile:a.prepare.domainProfile,excludedEvidenceKeys:a.understanding.excludedEvidenceKeys})).filter(a=>a.need.required&&"satisfied"!==a.status).map(a=>a.need.label),a.global.progressStages[m]=(0,b8.X5)({type:"chapter_generation",roleId:"chapter_generation",status:"running",message:`${(0,aq.GQ)(c.title)} 深度召回完成:命中 ${S} 条${al.length>0?`,仍缺 ${al.length} 项(触发轻量补充)`:""}`,progress:{current:j+1,total:a.planning.effectiveChapters.length,label:"证据检索"}},{subtitle:(0,aq.GQ)(c.title),order:j}),a.global.emitProgress()}if(al.length>0&&z.length>0){let b=(0,b7.Su)(await df({manager:a.understanding.manager,projectRoot:a.prepare.projectRoot,chapter:c,scopedFilePaths:z,fileRoleByPath:a.understanding.fileRoleByPath,fileProcessingByPath:a.understanding.fileProcessingByPath,requiredNeeds:al,extraClues:a.prepare.requirementSemantics?.factClues||[],highRisk:!0,signal:a.global.input.signal}).catch(()=>[]),a.understanding.projectMaterialScope);b.length>0&&(K=[...K,...b],a.understanding.excludedEvidenceKeys.size>0&&(K=K.filter(b=>!a.understanding.excludedEvidenceKeys.has((0,bf.hM)(b)))),Q=ab(c,K,{preservePinned:!0},a.planning.generationDiagnostics),Q=J(Q,a.understanding.canonicalFacts.scopeConflicts),(0,b7.U2)(Q,a.understanding.projectMaterialScope,`chapter:${c.id}:supplemental`),R=c.requiredFacts.filter(a=>!Q.some(b=>(0,dd.Lk)(b,a))),al=(ak=(0,n.ji)({needs:ai,factsModel:a.understanding.preliminaryFactsModel,evidence:K,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)(Q,a.understanding.projectMaterialScope,`chapter:${c.id}:writer-session.global.input`),0===Q.length&&a.understanding.missingItems.push(`${c.title}:缺少可支撑正文的项目资料证据`),R))a.understanding.missingItems.push(`${c.title}:事实需求未满足 ${b}`);let as=(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,as):a.global.progressStages[a.understanding.knowledgeBaseStageIndex]={...as,order:a.global.progressStages[a.understanding.knowledgeBaseStageIndex]?.order??as.order},a.global.emitProgress(),(0,e.Te)(a.global.input.signal);let at=new Map,au=b=>{let d=(0,e.c6)({kind:"section",query:`${c.title} ${b}`.trim(),scopedFilePaths:z}),f=at.get(d);if(f)return Promise.resolve(f);let g=(0,dh.Ym)(b,c,Q),h=g.filter(a=>dn.AM.test(a.content)).length;return g.length>=4&&h>=1?(at.set(d,g),Promise.resolve(g)):ad({manager:a.understanding.manager,projectRoot:a.prepare.projectRoot,chapter:c,sectionTitle:b,scopedFilePaths:z,fileRoleByPath:a.understanding.fileRoleByPath,fileProcessingByPath:a.understanding.fileProcessingByPath,signal:a.global.input.signal}).then(a=>(at.set(d,a),a))},av=b=>{if(0===b.length||0===z.length)return Promise.resolve([]);let d=b.join(" ");return ad({manager:a.understanding.manager,projectRoot:a.prepare.projectRoot,chapter:c,sectionTitle:d,scopedFilePaths:z,fileRoleByPath:a.understanding.fileRoleByPath,fileProcessingByPath:a.understanding.fileProcessingByPath,signal:a.global.input.signal}).catch(()=>[])},aw=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:Q,risk:a.understanding.rolePoolRisk});a.understanding.retrievalCoverageReports.push(aw);let ax=new Set(Q.map(a=>a.filePath)),ay=Q.reduce((a,b)=>a+b.content.length,0),az=[...a.understanding.rolePoolRisk.highRisk?[`召回覆盖风险(${a.understanding.rolePoolRisk.riskReason||"切片未完全预加载"}):已加载 ${a.understanding.rolePoolRisk.loadedChunks}/${a.understanding.rolePoolRisk.totalChunks},已启用深召回`]:[],`项目理解缓存证据:${A.length} 条`,`深召回证据:${S} 条`,`事实覆盖:${aw.requiredFactCovered}/${aw.requiredFactTotal}`,`小节覆盖:${aw.sectionCovered}/${aw.sectionTotal}`];a.global.progressStages[m]=(0,b8.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:a.prepare.promptPlan.writerPrompts[0]?.id,status:"running",message:`${(0,aq.GQ)(c.title)} 已选取 ${Q.length} 条高相关证据,正在生成正文`,details:[`使用绑定文件:${ax.size} 份`,`上下文字符:${ay}`,`检索查询:${x.length} 组`,...az],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+=ay;let aB=(0,n.n9)(ak),aC=a.planning.chapterIntentClassifier.needsBasicFacts(c.title)?a.understanding.earlyFactPool.projectBasicFacts:[],aD=(0,dh.qX)((0,dh.hZ)({chapter:c,plan:void 0,spec:a.prepare.documentSpec,roleFacts:H,evidence:Q,missingFacts:R,indexedFacts:[...aC,...aB],resolvedFactNeeds:ak,factNeedsPrompt:(0,n.GK)(ak),specAuthorityMap:a.understanding.preliminaryFactsModel.specAuthorityMap})),aE=(0,eC.up)({plan:a.planning.plannedDocument.plan,chapter:c,context:a.understanding.agentWorkflow,evidence:Q});if(a.understanding.agentWorkflow.chapterTasks=[...(a.understanding.agentWorkflow.chapterTasks||[]).filter(a=>a.chapterId!==c.id),aE.task],a.understanding.agentWorkflow.nodes.push(aE.node),(0,dg.cN)(a.understanding.agentWorkflow),(0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"validation",roleId:`agent-chapter-task-${c.id}`,status:aE.task.ready||p?"success":"failed",message:aE.task.ready?aE.node.outputSummary||`${(0,aq.GQ)(c.title)} 章节任务规划完成`:p?`${(0,aq.GQ)(c.title)} 章节任务未完全就绪,已复用已有正文并交由 Reviewer/Repairer 处理`:aE.node.outputSummary||`${(0,aq.GQ)(c.title)} 章节任务规划完成`,details:aE.task.issues.map(a=>a.message)},{subtitle:"Agent Chapter Task Planner",order:a.global.progressStages.length})),a.global.emitProgress(a.global.chapterDrafts),!aE.task.ready&&!p)throw Error(`${(0,aq.GQ)(c.title)} 章节任务未就绪:${aE.task.issues.map(a=>a.message).join(";")}`);let aF=[ag,(0,eC.bT)(aE.task)].filter(Boolean).join("\n\n"),aG={total:ak.length,satisfied:ak.filter(a=>"satisfied"===a.status).length,missing:ak.filter(a=>"missing"===a.status).length,lowConfidence:ak.filter(a=>"low_confidence"===a.status).length};for(let b of al)a.understanding.missingItems.push(`${c.title}:事实需求未确认 ${b}`);let aH=a.planning.documentBudget.chapterTargets.get(c.id)||1200,aI=c.sections?.filter(Boolean).length||0,aJ=/[、,,;;]/u.test(c.title),aK=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:aH,sectionCount:aI,title:c.title,longformStrict:a.planning.documentBudget.longformStrict}),aL=Math.ceil(aK.maxWords*(a.planning.documentBudget.maxChars?1.05:1)),aM=aZ(c.title,a.planning.chapterIntentClassifier).length>0,aN=(a.blueprint.blueprintActive||aM&&0===k.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,aO=aN&&a.blueprint.integratedBlueprint?function(a,b){let c=[`【第 ${a.id} 章「${a.title}」蓝图切片——以下项目专属事实由蓝图冻结锁定,正文必须一致引用】`];for(let b of a.subSections){c.push(`
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
+ ${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(`
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
- ### 工作包:${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")}(aN,a.blueprint.integratedBlueprint.data):"",aP=aN&&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(";")}(aN,a.blueprint.integratedBlueprint.data):"",aQ=aK.roundTarget,aR=(0,dh.uV)(aQ,aQ),aS=aI>0?a.planning.documentBudget.longformStrict?aQ:Math.min(aQ,Math.max(1800,aK.structureTarget)):aQ,aT=aI>=2&&aI<=8&&!aJ,aU=!!(aN&&aN.subSections.length>aI),aV=aI>=2&&(aI>8||aJ||aU||a.planning.documentBudget.longformStrict&&aI>=6),aW=!aV&&aI>=2&&aI<=8&&(aT||a.planning.documentBudget.longformStrict),aX=0,aY=b=>{let d=Date.now();if(d-aX<3e3)return;aX=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}
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:Q,missingFacts:R,sections:c.sections||[],tablePlans:c.tablePlans||[],inProgress:!0}])},a$=a=>{"complete"===a.phase&&a.partialSections&&aY(a.partialSections)};if(p)d=(0,M.w_)(p,c),d=await (0,M._k)(d,a.understanding.bidProcedureJudge),i=(0,b8.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:af.primaryPromptId,status:"success",message:`${(0,aq.GQ)(c.title)} 已复用已有章节正文:当前 ${(0,h.V7)(d)} 字,跳过 Writer,直接进入章节收口`,details:[`有效证据:${Q.length} 条`,`事实需求:${aG.satisfied}/${aG.total} 已满足,缺失 ${aG.missing},低置信 ${aG.lowConfidence}`,"来源:resumeChapters/checkpointChapters"],progress:{current:j+1,total:a.planning.effectiveChapters.length,label:"复用章节"}},{subtitle:(0,aq.GQ)(c.title),order:j}),a.global.progressStages[m]=i,a.global.emitProgress(a.global.chapterDrafts);else{let g;a.global.progressStages[m]=(0,b8.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:af.primaryPromptId,status:"running",message:aV?`${(0,aq.GQ)(c.title)} 正在规划主题块并准备并发成稿`:aW?`${(0,aq.GQ)(c.title)} 正在按小节并发成稿`:`${(0,aq.GQ)(c.title)} 正在整章一次成稿`,details:aV||aW?[...ah,`有效证据:${Q.length} 条`,`事实需求:${aG.satisfied}/${aG.total} 已满足,缺失 ${aG.missing},低置信 ${aG.lowConfidence}`,aK.label,`生成上限约 ${aL} 字`,`模板细目:${c.sections?.length||0} 条`,aV?"细目较多,先由章级 Planner 聚类为主题块并语义合并,再按主题块全并发出稿,避免逐小节碎片化":"按章节结构拆分小节自然并发生成,章节聚合后再审查修复"]:[...ah,`有效证据:${Q.length} 条`,`事实需求:${aG.satisfied}/${aG.total} 已满足,缺失 ${aG.missing},低置信 ${aG.lowConfidence}`,aK.label,`生成上限约 ${aL} 字`,`规划小节:${aI} 个`,"首次生成必须覆盖章节结构、小节和事实,篇幅目标仅作为规划参考"],progress:{current:j+1,total:a.planning.effectiveChapters.length,label:aV?"主题块并发":aW?"小节并发":"整章成稿"}},{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,dh.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(aV){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:aN,inputSections:c.sections||[],chapterTitle:(0,aq.GQ)(c.title),targetWords:aS,projectContext:a.planning.projectContext,evidence:Q}))),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=[ag,(0,eC.$8)(aE.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=aN?h.fallbackSections.length>0?`(蓝图章切片确定性转换:${h.fallbackSections.length} 条细目由覆盖校验挂回主题块)`:"(蓝图章切片确定性转换:主题块来自蓝图小节/工作包)":"(蓝图未覆盖本章,已按语义域确定性分组)";a.global.progressStages[m]=(0,b8.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:af.primaryPromptId,status:"running",message:`${(0,aq.GQ)(c.title)} 已规划 ${h.blocks.length} 个主题块,正在按主题块并发成稿${l}`,details:[...ah,`有效证据:${Q.length} 条`,`输入细目 ${aI} 条 → 主题块 ${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 n=a.global.progressStages.find(a=>a.roleId===`agent-chapter-task-${c.id}`);n&&(n.message=`${aE.task.sections.filter(a=>a.ready).length}/${aE.task.sections.length} 条细目任务就绪(已规划为 ${h.blocks.length} 个主题块)`),a.global.emitProgress(a.global.chapterDrafts);let o={template:a.prepare.template,chapter:c,evidence:Q,missingFacts:R,promptTexts:d,projectContext:a.planning.chapterScopedProjectContext(c),skeletonProjectContext:a.planning.projectContext,requirement:a.global.input.requirement,roleContext:ae,targetWords:aS,maxWords:aL,forbidDrawingImages:!1,factCoverageContext:aD,compactProjectContext:!0,scopedProjectContext:!0,blueprintDataText:a.blueprint.blueprintDataText,blueprintSliceText:aO,blueprintMustCiteHint:aP,sectionEvidenceProvider:au,onSectionProgress:a$,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,dh.nl)(o,h)));if(p?.allSucceeded)g=p.markdown;else if(p){let a=await i(o,p.failedBlocks,p.sections),b=p.failedBlocks.filter(({index:b})=>!a[b]);b.length>0&&(a=await i(o,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]}));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}
91
91
 
92
- ${a.join("\n\n")}`)}}}else g=aW?await a.global.withProgressHeartbeat(()=>(0,f.X6)(a.planning.generationDiagnostics,`chapter-section-draft:${c.id}`,()=>(0,dh.N1)({template:a.prepare.template,chapter:c,evidence:Q,missingFacts:R,promptTexts:aF,projectContext:a.planning.chapterScopedProjectContext(c),skeletonProjectContext:a.planning.projectContext,requirement:a.global.input.requirement,roleContext:ae,targetWords:aS,maxWords:aL,forbidDrawingImages:!1,factCoverageContext:aD,projectRoot:a.prepare.projectRoot,modelName:(0,aA.$y)()?.model.name,materialContextHash:(0,e.c6)({materialFilePaths:a.prepare.materialFilePaths,promptTexts:ag}),allowPartialResult:!1,compactProjectContext:!0,scopedProjectContext:!0,blueprintDataText:a.blueprint.blueprintDataText,blueprintSliceText:aO,sectionEvidenceProvider:au,onSectionProgress:a$,diagnostics:a.planning.generationDiagnostics,signal:a.global.input.signal}))):await a.global.withProgressHeartbeat(()=>(0,f.X6)(a.planning.generationDiagnostics,`chapter-draft:${c.id}`,()=>(0,dh.eu)(a.prepare.template,c,Q,R,aF,a.planning.chapterScopedProjectContext(c),a.global.input.requirement,ae,{forbidDrawingImages:!1,minWords:aQ,targetWords:aQ,maxWords:aL,maxTokens:aR,factCoverageContext:aD,blueprintDataText:a.blueprint.blueprintDataText,blueprintSliceText:aO,signal:a.global.input.signal,diagnostics:a.planning.generationDiagnostics,supplementEvidenceProvider:av,evidenceFloorChars:a.planning.generationBudget.evidenceFloorChars,evidenceCeilingChars:a.planning.generationBudget.evidenceCeilingChars})));if(g||(a.planning.generationDiagnostics.llm.lastError=a.planning.generationDiagnostics.llm.lastError||"全部成稿路径未返回有效正文"),g&&aN&&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,aN,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[m]=(0,b8.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:af.primaryPromptId,status:"failed",message:b,details:[`LLM 最近错误:${a.planning.generationDiagnostics.llm.lastError||"空响应或超时"}`,`证据条数:${Q.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)):[],n=g;k.length>0&&(n=(0,e.Ww)(n,k,3)),l.length>0&&(n=(0,e.Ww)(n,l,4)),d=(0,M.w_)(n,c),d=await (0,M._k)(d,a.understanding.bidProcedureJudge)}let a1=await di({chapter:c,content:d,evidence:Q}),a2=(0,h.V7)(d),a3=(0,bc.r4)(d),a4=b&&b.blocks.length>0?b.blocks.map(a=>a.title):(c.sections||[]).filter(Boolean),a5=a4.length>0?a4:a3.length>0?a3:[],ba=(0,cg.qK)(d,[{title:c.title,content:d,sections:a5}]).map(a=>a.message),bb=a1.slice(0,6).map(a=>`小节事实密度需优化:${a}`),bd=[...ba,...bb],bg=function(a,b,c=[]){return a<=0||c.some(a=>/未返回有效章节正文|生成失败/u.test(a))||c.some(a=>/空小节|缺少规划小节/u.test(a))?"failed":"success"}(a2,0,bd);return i=(0,b8.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:af.primaryPromptId,status:bg,message:(0,b8.AQ)(`${(0,aq.GQ)(c.title)} 已由大模型成稿:当前 ${a2} 字;章节预算约 ${aK.budgetTarget} 字,本轮目标约 ${aK.roundTarget} 字${bd.length?`;待优化:${bd.slice(0,8).join("、")}`:""}`,l),details:[`本轮完成率:${Math.round(a2/Math.max(1,aK.roundTarget)*100)}%`,`结构目标约 ${aK.structureTarget} 字`,...ah,`二级小节:${a5.length} 个`],progress:{current:j+1,total:a.planning.effectiveChapters.length,label:bd.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:Q,missingFacts:R,sections:a5,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[m]=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 eF(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,dP.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:ej(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 eG=c(35882);async function eH(a){if(0===a.requirementSummary.length||0===a.chapters.length)return[];let b=a.chapters.map(a=>`【${(0,aq.GQ)(a.title)}】
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)}】
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
  招标评分项要求摘要(必须逐条在结构层显性承接):
@@ -101,19 +101,19 @@ ${b}
101
101
 
102
102
  请输出需要新增的小节;没有需要新增的章节不要出现在 additions 中,整体无新增则输出空数组。
103
103
 
104
- JSON 格式:{"additions":[{"chapterTitle":"章标题(必须与上方章节名一致)","sections":["新增小节标题"]}]}`,{maxTokens:2e3,temperature:0,signal:a.signal}),d=[],e=0;for(let b of c?.additions||[]){if(!b?.chapterTitle||!Array.isArray(b.sections))continue;let c=function(a,b){let c=(0,d8.nz)(b);if(!c)return -1;let d=a.findIndex(a=>(0,aq.GQ)(a.title)===c||(0,d8.nz)(a.title)===c);return d>=0?d:a.findIndex(a=>{let b=(0,d8.nz)(a.title);return b.length>=4&&(b.includes(c)||c.includes(b))})}(a.chapters,b.chapterTitle);if(c<0)continue;let f=a.chapters[c],g=[];for(let a of b.sections){let b=(0,d8.EN)((0,d8.nz)(String(a||"")));!(!b||(0,d8.tQ)(b,f.title)||(0,aq.mq)(b)||(0,bf.dn)(b)||(0,bf.xb)(b)||(f.sections||[]).some(a=>(0,d8.kw)(a,b)))&&(g.some(a=>(0,d8.kw)(a,b))||g.push(b))}let h=Math.min(2,g.length,Math.max(0,8-e)),i=g.slice(0,h);if(0!==i.length&&(e+=i.length,d.push({chapterTitle:f.title,sections:i}),e>=8))break}for(let b of[{summaryRe:/创优|优质工程|优质结构|文明工地|争创|质量目标/u,coverageRe:/创优|优质工程|优质结构|文明工地/u,sectionTitle:"创优目标与奖惩承诺",hostRe:/质量|创优/u,fallbackHostRe:/安全|文明|环保|绿色/u},{summaryRe:/工伤保险|意外伤害保险|社会保险/u,coverageRe:/工伤保险|劳动保障|意外伤害/u,sectionTitle:"工伤保险与劳动保障",hostRe:/安全|文明|保障|职业健康|劳保/u,fallbackHostRe:/质量/u}]){if(!a.requirementSummary.some(a=>b.summaryRe.test(a))||a.chapters.some(a=>(a.sections||[]).some(a=>b.coverageRe.test(a))))continue;let c=a.chapters.find(a=>b.hostRe.test((0,aq.GQ)(a.title)))||a.chapters.find(a=>b.fallbackHostRe.test((0,aq.GQ)(a.title)))||a.chapters[0];if(!c)continue;let e=d.find(a=>a.chapterTitle===c.title);e?e.sections.some(a=>(0,d8.kw)(a,b.sectionTitle))||e.sections.push(b.sectionTitle):d.push({chapterTitle:c.title,sections:[b.sectionTitle]})}return d}let eI=["计划总工期为300日历天","合同工期为300日历天","施工总工期为300日历天","招标控制价为6000万元","合同估算价为6000万元","投资估算为6000万元","总建筑面积为28000平方米","总用地面积为15000平方米","总占地面积为15000平方米","建设规模为28000平方米"],eJ=["专项应急演练4次","每日巡查2次","每周检查1次","每月安全培训2次","监理旁站24小时","三级安全教育培训20学时"];function eK(a,b){let c=Math.min(a.length,b.length),d=0;for(let e=0;e<c;e+=1)d+=a[e]*b[e];return d}async function eL(){let a=(0,be.VN)(),[b,c]=await Promise.all([a.embedDocuments([...eI]),a.embedDocuments([...eJ])]);if(b.length!==eI.length||c.length!==eJ.length)throw Error(`本地语义模型锚点嵌入数量不一致:范围锚点 ${b.length}/${eI.length},计数锚点 ${c.length}/${eJ.length}`);return{async batchClassify(d){if(0===d.length)return[];let e=await a.embedDocuments(d);return d.map((a,d)=>{let f=e[d];if(!f||0===f.length)return"other";let g=Math.max(...b.map(a=>eK(f,a))),h=Math.max(...c.map(a=>eK(f,a)));return h>=.62&&h>g?"other":g>=.6?"scope":"other"})}}}let eM=[{authority:"laborPeak",anchors:["劳动力安排计划","劳动力配置计划","劳动力投入计划","主要劳动力计划","劳动力使用计划"]},{authority:"schedule",anchors:["施工进度计划","施工总进度计划","工程进度计划","进度计划","工期计划","施工部署","总体部署"]},{authority:"blueprint",anchors:["主要资源配置计划","资源配置计划","资源需求计划","机械设备配置计划","材料供应计划","主要施工机械设备表"]}],eN=["工程概况","项目概况","工程总体概况","施工总体部署","施工部署","工程目标","工程质量目标","工程进度目标"],eO=["扬尘治理措施","扬尘污染防治措施","文明施工措施","环境保护措施","绿色施工措施","安全文明施工措施","扬尘控制措施"],eP=/劳动力/u,eQ=/资源配置|资源|机械|设备|机具/u,eR=/进度计划|进度|工期/u,eS=/概况|工程|项目|总体|部署|进度|工期|质量/u,eT=/扬尘|文明施工|环境保护|绿色施工|安全文明|环保/u;async function eU(a){let b=(0,be.VN)(),c=[...eM.flatMap(a=>a.anchors),...eN,...eO],d=await b.embedDocuments([...c,...a]);if(d.length!==c.length+a.length)throw Error(`本地语义模型锚点嵌入数量不一致:预期 ${c.length+a.length},实际 ${d.length}`);let e=d.slice(0,c.length),f=new Map;a.forEach((a,b)=>f.set(a,d[c.length+b]??[]));let g=0,h=eM.map(a=>{let b=e.slice(g,g+a.anchors.length);return g+=a.anchors.length,b}),i=e.slice(g,g+eN.length);g+=eN.length;let j=e.slice(g,g+eO.length),k=(a,b)=>{let c=f.get(a);return!!(c&&c.length>0&&Math.max(...b.map(a=>(function(a,b){let c=Math.min(a.length,b.length),d=0;for(let e=0;e<c;e+=1)d+=a[e]*b[e];return d})(c,a)))>=.6)};return{needsBlueprintAuthority(a){let b=[];return eM.forEach((c,d)=>{k(a,h[d])&&b.push(c.authority)}),!b.includes("laborPeak")&&eP.test(a)&&b.push("laborPeak"),!b.includes("blueprint")&&eQ.test(a)&&b.push("blueprint"),!b.includes("schedule")&&eR.test(a)&&b.push("schedule"),b},needsBasicFacts:a=>k(a,i)||eS.test(a),needsDustControl:a=>k(a,j)||eT.test(a)}}let eV={factuality:["本章关键数据以招标文件、工程量清单与施工图纸为依据","正文引用的工期、面积、金额与绑定资料口径一致","施工内容与项目实际工程范围对应而非通用模板描述"],structure:["内容按施工准备、工艺流程、施工方法、验收标准的顺序组织","章节内有清晰的工作阶段划分与工序步骤","段落之间有先后衔接与层次递进关系"],depth:["包含关键工序控制点、隐蔽工程验收与检验批划分","关键技术环节给出工艺参数与质量标准","针对本项目特点展开专业分析而非通用做法罗列"],executable:["明确责任主体、检查频次与记录台账要求","给出可执行的资源进场、调配与投入安排","措施可落地执行并配验收复核机制"],specificity:["结合本项目建设地点、工程规模与计划工期展开","引用本项目工程量数据支撑施工部署","措施针对本项目工程特点制定而非通用套话"],consistency:["章节间工期、质量、安全数据口径一致","本章内容与总进度计划、质量目标相互呼应","章节内前后表述无矛盾冲突"]},eW={schedule:["采用关键线路法编制进度计划,明确关键节点与动态纠偏措施","计划节点与资源投入相匹配,含穿插施工与资源保障安排"],quality:["材料进场验收与复验、隐蔽工程验收、质量问题整改与复验闭环","质量资料归档与检验批验收记录"],safety:["风险源辨识、临电消防管理、安全检查与隐患整改闭环","应急预案、应急物资与演练安排"],resource:["劳动力、材料、设备进场计划、验收、保管与调配","资源投入与进度节点相匹配"],construction:["施工准备、工艺流程、工序控制点与验收标准交底","施工方法与工艺参数明确具体"]},eX=["材料进场验收、工序控制点、隐蔽工程验收记录","检验批划分、技术交底、整改复查闭环","引用本项目工程量清单与设计图纸参数"],eY=["自检互检交接检、整改复查、资料归档","风险辨识、专项交底、现场检查、隐患整改、复查销项","计划分解、偏差识别、资源纠偏、节点复核"];function eZ(a,b){let c=0;for(let d of a)for(let a of b){let b=function(a,b){let c=Math.min(a.length,b.length),d=0;for(let e=0;e<c;e+=1)d+=a[e]*b[e];return d}(d,a);b>c&&(c=b)}return c}async function e$(){let a=(0,be.VN)(),b=[...Object.keys(eV).map(a=>[`dimension:${a}`,eV[a]]),...Object.keys(eW).map(a=>[`need:${a}`,eW[a]]),["concrete",[...eX]],["closedLoop",[...eY]]],c=new Map;for(let[d,e]of b){let b=await a.embedDocuments(e);if(b.length!==e.length)throw Error(`本地语义模型锚点嵌入数量不一致:${d} ${b.length}/${e.length}`);c.set(d,b)}let d=new Map,e=async b=>{let c=d.get(b);if(void 0!==c)return c;let e=function(a){let b=a.split(/\n+/u).map(a=>a.trim()).filter(Boolean),c=[],d="";for(let a of b)d&&d.length+a.length+1>400?(c.push(d),d=a):d=d?`${d}
105
- ${a}`:a;if(d&&c.push(d),c.length<=20)return c;let e=[c[0]],f=(c.length-2)/18;for(let a=1;a<19;a+=1)e.push(c[Math.min(c.length-2,Math.round(1+(a-1)*f))]);return e.push(c[c.length-1]),e}(b),f=await a.embedDocuments(e);return d.set(b,f),f};return{async analyze(a){if(!a.trim())return;let b=await e(a);if(0!==b.length)return{dimensions:function(a,b){let c={};for(let d of Object.keys(eV)){let e=b.get(`dimension:${d}`)||[];c[d]=eZ(a,e)>=be.Eh}return c}(b,c),contentNeeds:function(a,b){let c={};for(let d of Object.keys(eW)){let e=b.get(`need:${d}`)||[];c[d]=eZ(a,e)>=be.Eh}return c}(b,c),concrete:eZ(b,c.get("concrete")||[])>=be.Eh,closedLoop:eZ(b,c.get("closedLoop")||[])>=be.Eh}}}}let e_=[{pattern:/概况|总体|理解|说明|编制/u,goal:"以项目资料已确认的事实卡片展开工程概况与总体理解,不得空泛概述",mustCover:["工程名称、建设地点、建设规模、计划工期、质量标准等资料已确认事实","现场条件与招标范围边界","编制依据与适用范围","B5 专业工程清单:资料识别的专业工程逐个展开(不少于 5 个,每个专业工程写明作业对象与工程量、工序顺序、施工方法三方面要素,落到工程量与工艺参数)"]},{pattern:/主要施工内容/u,goal:"按专业工程展开作业对象与工程量、工序顺序、施工方法三方面要素(呈现形式不限),落到工程量与工艺参数",mustCover:["资料识别的专业工程(不少于5个)","每个专业工程的作业对象与工程量/工序顺序/施工方法三方面要素","工程量、材料设备规格、检测验收与资料闭环"]},{pattern:/主要分部分项工程施工方案|主要施工方法/u,goal:"按分项工程方案展开作业对象与工程量、工序顺序、施工方法三方面要素(呈现形式不限),落到工艺参数与工序顺序",mustCover:["资料明确的专业工程范围(逐项展开分项工程方案)","每个分项方案的作业对象与工程量/工序顺序/施工方法三方面要素","每个分项方案不少于4个工艺参数与至少1处3环节以上工序顺序表达","工艺参数来自绑定材料或行业通用规范值,不得编造"]},{pattern:/重点|难点/u,goal:"识别项目重点难点并给出针对性对策,每项落到责任岗位与验收节点",mustCover:["重点难点成因与影响范围","对应施工内容与专项措施","责任岗位、检查频次、整改闭环"]},{pattern:/部署|总体|流水|顺序/u,goal:"明确施工部署逻辑、流水段划分与资源调配机制",mustCover:["施工区段与流水划分","各阶段施工顺序与穿插关系","资源动态调配机制"]},{pattern:/进度|工期/u,goal:"围绕总工期与关键节点展开进度保障",mustCover:["总进度计划与关键节点","周/日计划分解","进度偏差识别与纠偏措施"]},{pattern:/质量/u,goal:"覆盖材料验收、过程控制、隐蔽验收、整改复验的质量闭环",mustCover:["质量目标与验收依据","三检制度与样板引路","隐蔽工程验收与材料复试","质量通病防治与闭环整改","保修与缺陷责任期承诺"]},{pattern:/安全|危大|风险/u,goal:"覆盖风险识别、危大工程专项方案、检查整改与应急响应",mustCover:["危险源辨识与风险分级","危大工程清单与专项方案","安全交底与隐患排查闭环","B5 应急预案:应急组织架构、应急物资储备清单、专项预案与演练计划(演练频次量化,如每半年 1 次)"]},{pattern:/资源|材料|设备|劳动力|人材机/u,goal:"说明资源配置依据、进场验收与保管调配",mustCover:["机械设备投入计划","分阶段劳动力计划","材料进场计划与验收"]},{pattern:/文明|绿色|环保|扬尘|噪声/u,goal:"覆盖扬尘噪声管控、四节一环保与智慧监测",mustCover:["扬尘噪声分时段管控","四节一环保措施","监测预警与台账","B5 四节一环保量化指标:节水(非传统水源利用率/用水量控制)、节材(材料损耗率/废弃物回收率)、节地(土方平衡率)、节能(能耗指标)各至少 1 项带单位量化指标,附录八基准对照项逐项量化响应"]},{pattern:/应急|预案/u,goal:"覆盖应急组织、物资储备与专项预案",mustCover:["应急组织架构","应急物资储备","专项预案与演练计划"]},{pattern:/竣工|验收|移交|保修/u,goal:"覆盖竣工清理、验收移交与保修响应",mustCover:["竣工清理与垃圾外运","缺陷修补与复查销项","验收移交与保修响应"]},{pattern:/工资|劳务|实名/u,goal:"覆盖劳务实名制与农民工工资保障闭环",mustCover:["劳务实名制管理","工资专用账户与银行代发","考勤与工资支付台账"]}];var e0=c(79227),e1=c(25284);async function e2(a){a.planning.effectiveChapters=a.planning.baseEffectiveChapters,a.planning.constructionOrgContext=(0,e1.TD)(a.understanding.scopedIntelligence?.constructionOrganizationGraph)||a.understanding.scopedIntelligence?.constructionOrganizationContext,a.planning.chapterGraphSummaryText=b=>{let c=a.understanding.chapterGraphMap.get(b);return c&&(c.graphWorks.length||c.graphMethods.length||c.graphBoqItems.length)?[c.graphWorks.length?`专业工程:${c.graphWorks.slice(0,8).join("、")}`:"",c.graphMethods.length?`主要工法/工艺:${c.graphMethods.slice(0,8).join("、")}`:"",c.graphBoqItems.length?`关键资源:${c.graphBoqItems.slice(0,8).map(a=>a.name).join("、")}`:""].filter(Boolean).join(";"):""},a.planning.baseProjectContext=[a.prepare.projectUnderstanding.prompt,a.planning.constructionOrgContext].filter(Boolean).join("\n\n"),a.planning.projectContext=a.planning.baseProjectContext;let b={...a.prepare.template,chapters:a.planning.effectiveChapters};a.planning.promptStructuralRules=(0,d8.My)([a.prepare.promptTexts,a.global.input.requirement||""].filter(Boolean).join("\n\n"),a.planning.effectiveChapters),a.planning.provisionalBudget=(0,h.tF)({requirement:a.global.input.requirement,promptTexts:a.prepare.promptTexts,template:b,chapters:a.planning.effectiveChapters,spec:a.prepare.documentSpec});let c=0,d=0,i=[];a.planning.plannedChapters=await (0,e.l$)(a.planning.effectiveChapters.map((a,b)=>({chapter:a,chapterIndex:b})),async({chapter:e,chapterIndex:f})=>{if(e.sections?.length){c+=1;let b=a.planning.promptStructuralRules.filter(a=>a.chapterIndex===f||a.chapterTitle&&(0,aq.GQ)(a.chapterTitle)===(0,aq.GQ)(e.title)).flatMap(a=>a.requiredSections.sort((a,b)=>(a.order||0)-(b.order||0)).map(a=>a.title));for(let a of[...b,...e.sections]){let b=(0,d8.EN)(String(a).trim());b&&b!==String(a).trim()&&i.push(`${(0,aq.GQ)(e.title)}:${a} → ${b}`)}let d=(0,d8.k2)([...b,...e.sections],e.title);return{...e,sections:d.length?d:(0,d8.k2)(e.sections,e.title)}}d+=1;let h=(0,g.QR)(a.understanding.writerEvidence.filter(a=>a.chapterId===e.id||(0,dd.Lk)(a,e.title)),{preservePinned:!0}),j=a.prepare.projectUnderstanding.chapterPlans.find(a=>a.chapterId===e.id)?.writingGoal||"",k=(0,M.C_)(a.prepare.promptPlan,e),l=await (0,d8.SP)({template:b,chapter:e,chapterIndex:f,evidence:h,promptTexts:k.promptTexts,projectContext:a.planning.projectContext,requirement:a.global.input.requirement,roleContext:j,targetWords:a.planning.provisionalBudget.chapterTargets.get(e.id)||1200,projectGraphSummary:a.planning.chapterGraphSummaryText(e.id),structuralRules:a.planning.promptStructuralRules,signal:a.global.input.signal}),m=a.planning.promptStructuralRules.filter(a=>a.chapterIndex===f||a.chapterTitle&&(0,aq.GQ)(a.chapterTitle)===(0,aq.GQ)(e.title)).flatMap(a=>a.requiredSections.map(a=>`强制小节:${a.title}`));if((0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"validation",roleId:"section-planning",promptId:k.primaryPromptId,status:l.length?"success":"failed",message:`${(0,aq.GQ)(e.title)} 小节规划${l.length?`生成 ${l.length} 个小节`:"未生成可用小节"}`,details:[...k.promptDetails,...m,...l.length?l.map(a=>`规划小节:${a}`):["规划结果为空或被污染过滤"]]},{subtitle:"小节规划"})),!l.length)throw Error(`${(0,aq.GQ)(e.title)} 小节规划未生成可用小节`);return{...e,sections:l}},{kind:"llmRepair",targetWords:a.planning.provisionalBudget.targetChars||4e3}),a.planning.tenderRequirements=await a.understanding.tenderRequirementsTask;let j=(0,eG.dK)({template:a.prepare.template,chapters:a.planning.plannedChapters,requirement:a.global.input.requirement}),k=j.chapters;{let c=0,d=await (0,e.l$)(j.chapters.map((a,b)=>({chapter:a,chapterIndex:b})),async({chapter:c})=>{if(!(c.sections||[]).length)return{chapterId:c.id,additions:[]};let d=(0,g.QR)(a.understanding.writerEvidence.filter(a=>a.chapterId===c.id||(0,dd.Lk)(a,c.title)),{preservePinned:!0}),e=a.prepare.projectUnderstanding.chapterPlans.find(a=>a.chapterId===c.id)?.writingGoal||"",f=(0,M.C_)(a.prepare.promptPlan,c),h=await (0,d8.wy)({template:b,chapter:c,evidence:d,promptTexts:f.promptTexts,projectContext:a.planning.projectContext,requirement:a.global.input.requirement,roleContext:e,projectGraphSummary:a.planning.chapterGraphSummaryText(c.id),maxTotalSections:eG.a0,signal:a.global.input.signal});return{chapterId:c.id,additions:h}},{kind:"llmRepair",targetWords:a.planning.provisionalBudget.targetChars||4e3}),f=[];k=j.chapters.map(a=>{let b=(d.find(b=>b.chapterId===a.id)?.additions||[]).filter(b=>!(a.sections||[]).some(a=>a.includes(b)||b.includes(a)));if(!b.length)return a;let e=b.slice(0,Math.max(0,eG.a0-(a.sections||[]).length));return e.length?(c+=e.length,f.push({chapterTitle:a.title,sections:e}),{...a,sections:[...a.sections||[],...e]}):a}),(0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"validation",roleId:"section-planning-additions",status:c>0?"success":"skipped",message:c>0?`专业小节补规划:为 ${f.length} 个章节新增 ${c} 个专业工作面小节`:"专业小节补规划:LLM 未产出有效增量,保留模板锁定结构",details:f.length?f.map(a=>`${(0,aq.GQ)(a.chapterTitle)}:${a.sections.join("、")}`):["无新增(LLM 空响应/无支撑依据/与已有小节重复)"]},{subtitle:"专业小节补规划",order:a.global.progressStages.length})),a.global.emitProgress()}let l=k;if(bF(a.planning.tenderRequirements)){let b=await a.global.withProgressHeartbeat(()=>eH({chapters:k,requirementSummary:bU(a.planning.tenderRequirements),templateName:a.prepare.template.name,signal:a.global.input.signal}));if(b.length>0){let c=function(a,b){if(!b.length)return{chapters:a,applied:[]};let c=[],d=a.map(a=>({...a,sections:[...a.sections||[]]}));for(let a of b){let b=d.findIndex(b=>(0,aq.GQ)(b.title)===(0,aq.GQ)(a.chapterTitle)||(0,d8.nz)(b.title)===(0,d8.nz)(a.chapterTitle));if(b<0)continue;let e=d[b],f=a.sections.filter(a=>!(e.sections||[]).some(b=>(0,d8.kw)(b,a)));0!==f.length&&(e.sections.push(...f),c.push({chapterTitle:a.chapterTitle,sections:f}))}return a.every((a,b)=>{let c=d[b];return!!c&&(a.sections||[]).every(a=>(c.sections||[]).some(b=>(0,d8.kw)(b,a)))})?{chapters:d,applied:c}:{chapters:a,applied:[]}}(k,b);c.applied.length>0?(l=c.chapters,(0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"validation",roleId:"outline-requirement-calibration",status:"success",message:`大纲要求校准:新增 ${c.applied.reduce((a,b)=>a+b.sections.length,0)} 个评分项承接小节(结构守恒校验通过)`,details:c.applied.map(a=>`${(0,aq.GQ)(a.chapterTitle)}:${a.sections.join("、")}`)},{subtitle:"大纲要求校准",order:a.global.progressStages.length}))):(0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"validation",roleId:"outline-requirement-calibration",status:"skipped",message:"大纲要求校准未通过结构守恒校验,回退原规划",details:["校准新增小节未通过章名匹配/标题清洗校验,全部丢弃"]},{subtitle:"大纲要求校准",order:a.global.progressStages.length})),a.global.emitProgress()}else(0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"validation",roleId:"outline-requirement-calibration",status:"skipped",message:"大纲要求校准未产出有效增量(章节结构已覆盖评分项要求或校准调用失败),回退原规划",details:[]},{subtitle:"大纲要求校准",order:a.global.progressStages.length})),a.global.emitProgress()}let m=await (0,bf.mI)(l),n=l.reduce((a,b,c)=>a+Math.max(0,(b.sections||[]).length-(m[c]?.sections||[]).length),0);{let b=j.report;b.unattached.length>0?(0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"validation",roleId:"construction-org-outline-unattached",status:"success",message:`标准模块挂靠:${b.totals.attachedModules} 个模块、${b.totals.sectionCount} 个小节;${b.unattached.length} 个可选模块未挂靠(无语义匹配章节,已记录)`,details:b.unattached.map(a=>`未挂靠:${a.moduleTitle}(${a.sections.length} 小节,${a.level})`)},{subtitle:"标准模块挂靠"})):(0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"validation",roleId:"construction-org-outline-attached",status:"success",message:`标准模块挂靠:${b.totals.attachedModules} 个模块、${b.totals.sectionCount} 个小节全部挂靠`,details:b.attached.map(a=>`${"fallback"===a.kind?"兜底挂靠":"挂靠"}:${a.moduleTitle} → ${a.chapterTitle}`)},{subtitle:"标准模块挂靠"}))}let o=await (0,be.Mv)(a.understanding.evaluationItems.map(a=>a.title),m.map(eA.Yx));a.planning.finalBidStructureAudit=(0,eA.KX)({template:a.prepare.template,chapters:m,requirement:a.global.input.requirement,evaluationItems:a.understanding.evaluationItems,semanticSimilarity:o}),a.planning.effectiveChapters=(0,d9.w9)({chapters:a.planning.finalBidStructureAudit.enrichedChapters,projectGraph:a.understanding.projectGraph,canonicalFacts:a.understanding.canonicalFacts}),a.planning.effectiveChapters=(0,eA.ji)(a.planning.effectiveChapters);let p=await (0,bf.mI)(a.planning.effectiveChapters),q=a.planning.effectiveChapters.reduce((a,b,c)=>a+Math.max(0,(b.sections||[]).length-(p[c]?.sections||[]).length),0);a.planning.effectiveChapters=p;let r=n+q;r>0&&((0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"validation",roleId:"outline-topic-filter",status:"success",message:`大纲小节主题过滤:剔除 ${r} 个评标纪律/商务报价类离题小节`,details:["被剔除小节不进入写作、目录与预算计划",...q>0?[`评标结构校验补挂回路二次剔除:${q} 个条款碎片/纪律小节`]:[]]},{subtitle:"大纲主题约束",order:a.global.progressStages.length})),a.global.emitProgress()),(a.planning.finalBidStructureAudit.issues.length>0||a.understanding.bidStructureAudit.issues.length>0)&&(0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"validation",roleId:"bid-structure-audit",status:a.planning.finalBidStructureAudit.issues.some(a=>"blocker"===a.severity)?"failed":"success",message:`评标结构符合性校验:${a.planning.finalBidStructureAudit.diagnostics.length} 个结构组,${a.planning.finalBidStructureAudit.diagnostics.filter(a=>"satisfied"===a.status).length} 个已满足,${a.planning.finalBidStructureAudit.diagnostics.filter(a=>"missing"===a.status&&"required"===a.level).length} 个必查缺失(已自动补挂),${a.planning.finalBidStructureAudit.diagnostics.filter(a=>"fragmented"===a.status).length} 个分散`,details:[...a.planning.finalBidStructureAudit.diagnostics.map(a=>`${"satisfied"===a.status?"满足":"fragmented"===a.status?"分散":"补挂"}:${a.groupTitle}${"missing"===a.status?`(补挂小节:${a.missingSections.join("、")})`:""}`),...a.planning.finalBidStructureAudit.issues.map(a=>`提示:${a.message}`).slice(0,8)]},{subtitle:"评标结构校验"})),a.prepare.template={...a.prepare.template,chapters:a.planning.effectiveChapters},a.planning.requirementsSimilarity=await (0,be.Mv)(bJ(a.planning.tenderRequirements).map(({item:a})=>bI(a)),a.planning.effectiveChapters.map(a=>bS(a.title))),a.planning.requirementsRoutes=await bT(a.planning.tenderRequirements,a.planning.effectiveChapters,a.planning.requirementsSimilarity),a.planning.requirementsRoutes.length>0&&((0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"validation",roleId:"tender-requirement-routing",status:"success",message:`评分项要求章节级路由:${a.planning.requirementsRoutes.length} 条要求已路由到责任章节(生成时显性响应)`,details:a.planning.requirementsRoutes.map(a=>`${a.kind}“${a.item.text}” → ${a.chapterTitle}(相似度 ${a.score.toFixed(2)})`)},{subtitle:"要求响应路由",order:a.global.progressStages.length})),a.global.emitProgress()),a.planning.factTokenScopeClassifier=await eL(),a.planning.chapterIntentClassifier=await eU(a.planning.effectiveChapters.map(a=>a.title)),a.planning.professionalDepthClassifier=await e$(),a.planning.writingTaskBrief=function(a){let b=(0,eG.yt)({template:{id:"runtime",name:a.templateName||"",outputTitle:"",description:"",category:"",chapters:a.chapters},chapters:a.chapters,requirement:a.requirement}),c=/施工组织设计|施工组织|施组|技术标/u.test(`${a.templateName||""} ${a.requirement||""} ${a.chapters.map(a=>a.title).join(" ")}`)||b.length>0,d=Object.values(a.factsModel?.canonical?.byKey||{}).map(a=>`${a.label}=${a.value}`),e=d.filter(a=>/建设规模|建筑面积|占地|用地面积|装配|层数|高度/u.test(a)).slice(0,8),f=(a.tenderRequirements?.frontScheduleClauses||[]).map(a=>a.text).filter(Boolean).slice(0,12),g=["正文必须落到本项目资料已确认的事实,不得使用模板化空话或跨小节复制段落","措施类内容写成“责任岗位+执行动作+量化标准+检查频次+整改时限+复查销项”闭环句式:同一自然段内三要素(责任岗位+检查频次+整改闭环)须同时出现,全文每 1500 字至少 1 段闭环句式","正文每 1000 字至少落位 6 处带单位量化工艺参数(mm/MPa/养护天数/间距/压实度等),施工流程与施工方法须有明确的工序顺序表达(形式由模型自然选择、不做统一要求:顺序词叙述、编号步骤、有序/无序列表或箭头链均可),每个分部分项方案至少 1 处 3 环节以上工序顺序表达",'专业工程类小节必须覆盖作业对象与工程量、工序顺序、施工方法三方面要素(呈现形式不限,段落式叙述或带标签分点均可),小节标题用专业工程正式名称(如"拆除工程"),禁止使用"工作包"等后台概念命名','质量目标与创优目标必须使用招标文件原文的奖项名称逐字落位,禁止替换、降级或省略为其他奖项名称(如把招标文件指定奖项写成其他奖项);招标文件"确保/达到"类等级要求不得弱化为"争创/争取"','B5 属地创优目标(安徽省属地适配项):招标文件未明确具体奖项时,正文必须提出不低于招标文件要求的属地创优目标,如"争创合肥市级优质工程""争创市级安全文明标准化工地"等,并在质量与文明施工章节落位','B5 表格数据一致性(丰乐镇第三轮实测:合计行 5088 与阶段工日之和 5808 矛盾、班组人数 22/28/30 多值并存):表格类内容(劳动力投入、材料配置、机械设备等)合计行数值必须与上方明细行数据一致、可由各行相加推导;各阶段人数与全项目峰值人数必须显式区分口径并保持一致(如写明"阶段高峰人数按阶段分别统计,合计行仅列全项目峰值口径");同一班组人数在配置表与进退场表中必须同值,不得多值并存',...f.length?[`投标人须知前附表响应条款(正文必须逐条落位或遵守,零响应即评标失分):${f.map((a,b)=>`${b+1}.${a}`).join(";")}`]:[]],h=a.chapters.map(b=>{var c;let d=(c=b.title,e_.find(a=>a.pattern.test(c))),e=(a.projectGraph?.works||[]).filter(a=>a.name&&(b.title.includes(a.name.slice(0,2))||/概况|总体|施工内容|方案|施工/u.test(b.title))).slice(0,10),f=(a.projectGraph?.resources||[]).filter(a=>a.quantity&&/概况|资源|总体|施工内容|方案/u.test(b.title)).slice(0,12).map(a=>({itemCode:"",itemName:a.name,quantity:a.quantity,unit:a.unit}));return{chapterId:b.id,chapterTitle:b.title,writingGoal:d?.goal||"结合本章标题与项目资料事实展开专业内容,避免泛化叙述",mustCover:[...d?.mustCover||[],...(b.requiredFacts||[]).slice(0,6)],factDomains:[...b.requiredFacts||[],...e.map(a=>a.name)].slice(0,10),evidenceRefs:b.queries.slice(0,6).map(a=>({filePath:a,kind:"query",priority:"should"})),boqTargets:f,drawingTargets:[],gaps:[]}});return{documentType:c?"施工组织设计":"专业文档",globalWritingFocus:c?[...g,"招标硬性要求必须逐项明确响应:质量标准、计划工期、缺陷责任期与保修、安全文明目标、项目经理及组织机构;工期/质量/保修类承诺可在概况与质量章节落位,不得遗漏",...e.length?[`项目规模事实卡(口径裁决值,正文引用规模数据必须与之一致,不得混淆总占地与建筑总量口径):${e.join(";")}`]:[],...d.length?[`项目可信基础事实(写作时必须优先落位):${d.slice(0,10).join(";")}`]:[]]:g.slice(0,2),chapters:h}}({chapters:a.planning.effectiveChapters,factsModel:a.understanding.preliminaryFactsModel,projectGraph:a.understanding.projectGraph||void 0,requirement:a.global.input.requirement,templateName:a.prepare.template.name,tenderRequirements:a.planning.tenderRequirements}),a.planning.tenderWritingRulesText=function(a){if(!a||!bF(a))return"";let b=[],c=(a,c)=>{for(let d of c)b.push(`${a}:${d.text}${d.source?`(来源:${d.source})`:""}。`)};return(c("本项目创优目标(必须全文显性响应,质量目标章节必须逐条承接并配套创优保证措施;奖项名称必须与招标文件原文逐字一致,禁止替换、降级或省略为其他奖项名称,“确保/达到”不得弱化为“争创”)",a.awardObjectives),c("特殊质量标准(实质性要求,质量目标必须显性写明)",a.specialQualityStandards),c("奖项条款(与创优目标关联,创优保证措施须覆盖申报与兑现条件)",a.awardClauses),a.greenBuildingGrade&&b.push(`绿色建筑等级要求:${a.greenBuildingGrade.text}。必须编制系统性绿色施工保证方案(节能/节地/节水/节材/室内环境指标控制与验收),不得仅以单一指标替代整体响应。`),a.smartSiteGrade&&b.push(`智慧工地等级要求:${a.smartSiteGrade.text},智慧工地建设方案须达到该等级。`),a.assemblyRate&&b.push(`装配率要求:${a.assemblyRate.text},装配式施工方案须覆盖水平构件与相关部品。`),c("体系基准要求(必须逐项覆盖表述,不得零散遗漏)",a.systematicBenchmarks),c("投标人须知前附表响应条款(施组必须逐条响应或遵守,零响应即评标失分)",a.frontScheduleClauses.filter(a=>!(0,bf.dn)(a.text))),a.dateFabricationProhibited&&b.push("禁止编造开工日期:招标文件以开工令时间为准,正文不得自行设定具体日历开工日期,一律表述为“以开工令时间为准”。"),c("禁止性/约束性要求(正文不得违反)",a.prohibitionNotes),0===b.length)?"":`【招标文件评分项要求(系统从绑定资料提取,必须逐条响应,零响应即评标失分)】
104
+ JSON 格式:{"additions":[{"chapterTitle":"章标题(必须与上方章节名一致)","sections":["新增小节标题"]}]}`,{maxTokens:2e3,temperature:0,signal:a.signal}),d=[],e=0;for(let b of c?.additions||[]){if(!b?.chapterTitle||!Array.isArray(b.sections))continue;let c=function(a,b){let c=(0,d9.nz)(b);if(!c)return -1;let d=a.findIndex(a=>(0,aq.GQ)(a.title)===c||(0,d9.nz)(a.title)===c);return d>=0?d:a.findIndex(a=>{let b=(0,d9.nz)(a.title);return b.length>=4&&(b.includes(c)||c.includes(b))})}(a.chapters,b.chapterTitle);if(c<0)continue;let f=a.chapters[c],g=[];for(let a of b.sections){let b=(0,d9.EN)((0,d9.nz)(String(a||"")));!(!b||(0,d9.tQ)(b,f.title)||(0,aq.mq)(b)||(0,bf.dn)(b)||(0,bf.xb)(b)||(f.sections||[]).some(a=>(0,d9.kw)(a,b)))&&(g.some(a=>(0,d9.kw)(a,b))||g.push(b))}let h=Math.min(2,g.length,Math.max(0,8-e)),i=g.slice(0,h);if(0!==i.length&&(e+=i.length,d.push({chapterTitle:f.title,sections:i}),e>=8))break}for(let b of[{summaryRe:/创优|优质工程|优质结构|文明工地|争创|质量目标/u,coverageRe:/创优|优质工程|优质结构|文明工地/u,sectionTitle:"创优目标与奖惩承诺",hostRe:/质量|创优/u,fallbackHostRe:/安全|文明|环保|绿色/u},{summaryRe:/工伤保险|意外伤害保险|社会保险/u,coverageRe:/工伤保险|劳动保障|意外伤害/u,sectionTitle:"工伤保险与劳动保障",hostRe:/安全|文明|保障|职业健康|劳保/u,fallbackHostRe:/质量/u}]){if(!a.requirementSummary.some(a=>b.summaryRe.test(a))||a.chapters.some(a=>(a.sections||[]).some(a=>b.coverageRe.test(a))))continue;let c=a.chapters.find(a=>b.hostRe.test((0,aq.GQ)(a.title)))||a.chapters.find(a=>b.fallbackHostRe.test((0,aq.GQ)(a.title)))||a.chapters[0];if(!c)continue;let e=d.find(a=>a.chapterTitle===c.title);e?e.sections.some(a=>(0,d9.kw)(a,b.sectionTitle))||e.sections.push(b.sectionTitle):d.push({chapterTitle:c.title,sections:[b.sectionTitle]})}return d}let eJ=["计划总工期为300日历天","合同工期为300日历天","施工总工期为300日历天","招标控制价为6000万元","合同估算价为6000万元","投资估算为6000万元","总建筑面积为28000平方米","总用地面积为15000平方米","总占地面积为15000平方米","建设规模为28000平方米"],eK=["专项应急演练4次","每日巡查2次","每周检查1次","每月安全培训2次","监理旁站24小时","三级安全教育培训20学时"];function eL(a,b){let c=Math.min(a.length,b.length),d=0;for(let e=0;e<c;e+=1)d+=a[e]*b[e];return d}async function eM(){let a=(0,be.VN)(),[b,c]=await Promise.all([a.embedDocuments([...eJ]),a.embedDocuments([...eK])]);if(b.length!==eJ.length||c.length!==eK.length)throw Error(`本地语义模型锚点嵌入数量不一致:范围锚点 ${b.length}/${eJ.length},计数锚点 ${c.length}/${eK.length}`);return{async batchClassify(d){if(0===d.length)return[];let e=await a.embedDocuments(d);return d.map((a,d)=>{let f=e[d];if(!f||0===f.length)return"other";let g=Math.max(...b.map(a=>eL(f,a))),h=Math.max(...c.map(a=>eL(f,a)));return h>=.62&&h>g?"other":g>=.6?"scope":"other"})}}}let eN=[{authority:"laborPeak",anchors:["劳动力安排计划","劳动力配置计划","劳动力投入计划","主要劳动力计划","劳动力使用计划"]},{authority:"schedule",anchors:["施工进度计划","施工总进度计划","工程进度计划","进度计划","工期计划","施工部署","总体部署"]},{authority:"blueprint",anchors:["主要资源配置计划","资源配置计划","资源需求计划","机械设备配置计划","材料供应计划","主要施工机械设备表"]}],eO=["工程概况","项目概况","工程总体概况","施工总体部署","施工部署","工程目标","工程质量目标","工程进度目标"],eP=["扬尘治理措施","扬尘污染防治措施","文明施工措施","环境保护措施","绿色施工措施","安全文明施工措施","扬尘控制措施"],eQ=/劳动力/u,eR=/资源配置|资源|机械|设备|机具/u,eS=/进度计划|进度|工期/u,eT=/概况|工程|项目|总体|部署|进度|工期|质量/u,eU=/扬尘|文明施工|环境保护|绿色施工|安全文明|环保/u;async function eV(a){let b=(0,be.VN)(),c=[...eN.flatMap(a=>a.anchors),...eO,...eP],d=await b.embedDocuments([...c,...a]);if(d.length!==c.length+a.length)throw Error(`本地语义模型锚点嵌入数量不一致:预期 ${c.length+a.length},实际 ${d.length}`);let e=d.slice(0,c.length),f=new Map;a.forEach((a,b)=>f.set(a,d[c.length+b]??[]));let g=0,h=eN.map(a=>{let b=e.slice(g,g+a.anchors.length);return g+=a.anchors.length,b}),i=e.slice(g,g+eO.length);g+=eO.length;let j=e.slice(g,g+eP.length),k=(a,b)=>{let c=f.get(a);return!!(c&&c.length>0&&Math.max(...b.map(a=>(function(a,b){let c=Math.min(a.length,b.length),d=0;for(let e=0;e<c;e+=1)d+=a[e]*b[e];return d})(c,a)))>=.6)};return{needsBlueprintAuthority(a){let b=[];return eN.forEach((c,d)=>{k(a,h[d])&&b.push(c.authority)}),!b.includes("laborPeak")&&eQ.test(a)&&b.push("laborPeak"),!b.includes("blueprint")&&eR.test(a)&&b.push("blueprint"),!b.includes("schedule")&&eS.test(a)&&b.push("schedule"),b},needsBasicFacts:a=>k(a,i)||eT.test(a),needsDustControl:a=>k(a,j)||eU.test(a)}}let eW={factuality:["本章关键数据以招标文件、工程量清单与施工图纸为依据","正文引用的工期、面积、金额与绑定资料口径一致","施工内容与项目实际工程范围对应而非通用模板描述"],structure:["内容按施工准备、工艺流程、施工方法、验收标准的顺序组织","章节内有清晰的工作阶段划分与工序步骤","段落之间有先后衔接与层次递进关系"],depth:["包含关键工序控制点、隐蔽工程验收与检验批划分","关键技术环节给出工艺参数与质量标准","针对本项目特点展开专业分析而非通用做法罗列"],executable:["明确责任主体、检查频次与记录台账要求","给出可执行的资源进场、调配与投入安排","措施可落地执行并配验收复核机制"],specificity:["结合本项目建设地点、工程规模与计划工期展开","引用本项目工程量数据支撑施工部署","措施针对本项目工程特点制定而非通用套话"],consistency:["章节间工期、质量、安全数据口径一致","本章内容与总进度计划、质量目标相互呼应","章节内前后表述无矛盾冲突"]},eX={schedule:["采用关键线路法编制进度计划,明确关键节点与动态纠偏措施","计划节点与资源投入相匹配,含穿插施工与资源保障安排"],quality:["材料进场验收与复验、隐蔽工程验收、质量问题整改与复验闭环","质量资料归档与检验批验收记录"],safety:["风险源辨识、临电消防管理、安全检查与隐患整改闭环","应急预案、应急物资与演练安排"],resource:["劳动力、材料、设备进场计划、验收、保管与调配","资源投入与进度节点相匹配"],construction:["施工准备、工艺流程、工序控制点与验收标准交底","施工方法与工艺参数明确具体"]},eY=["材料进场验收、工序控制点、隐蔽工程验收记录","检验批划分、技术交底、整改复查闭环","引用本项目工程量清单与设计图纸参数"],eZ=["自检互检交接检、整改复查、资料归档","风险辨识、专项交底、现场检查、隐患整改、复查销项","计划分解、偏差识别、资源纠偏、节点复核"];function e$(a,b){let c=0;for(let d of a)for(let a of b){let b=function(a,b){let c=Math.min(a.length,b.length),d=0;for(let e=0;e<c;e+=1)d+=a[e]*b[e];return d}(d,a);b>c&&(c=b)}return c}async function e_(){let a=(0,be.VN)(),b=[...Object.keys(eW).map(a=>[`dimension:${a}`,eW[a]]),...Object.keys(eX).map(a=>[`need:${a}`,eX[a]]),["concrete",[...eY]],["closedLoop",[...eZ]]],c=new Map;for(let[d,e]of b){let b=await a.embedDocuments(e);if(b.length!==e.length)throw Error(`本地语义模型锚点嵌入数量不一致:${d} ${b.length}/${e.length}`);c.set(d,b)}let d=new Map,e=async b=>{let c=d.get(b);if(void 0!==c)return c;let e=function(a){let b=a.split(/\n+/u).map(a=>a.trim()).filter(Boolean),c=[],d="";for(let a of b)d&&d.length+a.length+1>400?(c.push(d),d=a):d=d?`${d}
105
+ ${a}`:a;if(d&&c.push(d),c.length<=20)return c;let e=[c[0]],f=(c.length-2)/18;for(let a=1;a<19;a+=1)e.push(c[Math.min(c.length-2,Math.round(1+(a-1)*f))]);return e.push(c[c.length-1]),e}(b),f=await a.embedDocuments(e);return d.set(b,f),f};return{async analyze(a){if(!a.trim())return;let b=await e(a);if(0!==b.length)return{dimensions:function(a,b){let c={};for(let d of Object.keys(eW)){let e=b.get(`dimension:${d}`)||[];c[d]=e$(a,e)>=be.Eh}return c}(b,c),contentNeeds:function(a,b){let c={};for(let d of Object.keys(eX)){let e=b.get(`need:${d}`)||[];c[d]=e$(a,e)>=be.Eh}return c}(b,c),concrete:e$(b,c.get("concrete")||[])>=be.Eh,closedLoop:e$(b,c.get("closedLoop")||[])>=be.Eh}}}}let e0=[{pattern:/概况|总体|理解|说明|编制/u,goal:"以项目资料已确认的事实卡片展开工程概况与总体理解,不得空泛概述",mustCover:["工程名称、建设地点、建设规模、计划工期、质量标准等资料已确认事实","现场条件与招标范围边界","编制依据与适用范围","B5 专业工程清单:资料识别的专业工程逐个展开(不少于 5 个,每个专业工程写明作业对象与工程量、工序顺序、施工方法三方面要素,落到工程量与工艺参数)"]},{pattern:/主要施工内容/u,goal:"按专业工程展开作业对象与工程量、工序顺序、施工方法三方面要素(呈现形式不限),落到工程量与工艺参数",mustCover:["资料识别的专业工程(不少于5个)","每个专业工程的作业对象与工程量/工序顺序/施工方法三方面要素","工程量、材料设备规格、检测验收与资料闭环"]},{pattern:/主要分部分项工程施工方案|主要施工方法/u,goal:"按分项工程方案展开作业对象与工程量、工序顺序、施工方法三方面要素(呈现形式不限),落到工艺参数与工序顺序",mustCover:["资料明确的专业工程范围(逐项展开分项工程方案)","每个分项方案的作业对象与工程量/工序顺序/施工方法三方面要素","每个分项方案不少于4个工艺参数与至少1处3环节以上工序顺序表达","工艺参数来自绑定材料或行业通用规范值,不得编造"]},{pattern:/重点|难点/u,goal:"识别项目重点难点并给出针对性对策,每项落到责任岗位与验收节点",mustCover:["重点难点成因与影响范围","对应施工内容与专项措施","责任岗位、检查频次、整改闭环"]},{pattern:/部署|总体|流水|顺序/u,goal:"明确施工部署逻辑、流水段划分与资源调配机制",mustCover:["施工区段与流水划分","各阶段施工顺序与穿插关系","资源动态调配机制"]},{pattern:/进度|工期/u,goal:"围绕总工期与关键节点展开进度保障",mustCover:["总进度计划与关键节点","周/日计划分解","进度偏差识别与纠偏措施"]},{pattern:/质量/u,goal:"覆盖材料验收、过程控制、隐蔽验收、整改复验的质量闭环",mustCover:["质量目标与验收依据","三检制度与样板引路","隐蔽工程验收与材料复试","质量通病防治与闭环整改","保修与缺陷责任期承诺"]},{pattern:/安全|危大|风险/u,goal:"覆盖风险识别、危大工程专项方案、检查整改与应急响应",mustCover:["危险源辨识与风险分级","危大工程清单与专项方案","安全交底与隐患排查闭环","B5 应急预案:应急组织架构、应急物资储备清单、专项预案与演练计划(演练频次量化,如每半年 1 次)"]},{pattern:/资源|材料|设备|劳动力|人材机/u,goal:"说明资源配置依据、进场验收与保管调配",mustCover:["机械设备投入计划","分阶段劳动力计划","材料进场计划与验收"]},{pattern:/文明|绿色|环保|扬尘|噪声/u,goal:"覆盖扬尘噪声管控、四节一环保与智慧监测",mustCover:["扬尘噪声分时段管控","四节一环保措施","监测预警与台账","B5 四节一环保量化指标:节水(非传统水源利用率/用水量控制)、节材(材料损耗率/废弃物回收率)、节地(土方平衡率)、节能(能耗指标)各至少 1 项带单位量化指标,附录八基准对照项逐项量化响应"]},{pattern:/应急|预案/u,goal:"覆盖应急组织、物资储备与专项预案",mustCover:["应急组织架构","应急物资储备","专项预案与演练计划"]},{pattern:/竣工|验收|移交|保修/u,goal:"覆盖竣工清理、验收移交与保修响应",mustCover:["竣工清理与垃圾外运","缺陷修补与复查销项","验收移交与保修响应"]},{pattern:/工资|劳务|实名/u,goal:"覆盖劳务实名制与农民工工资保障闭环",mustCover:["劳务实名制管理","工资专用账户与银行代发","考勤与工资支付台账"]}];var e1=c(79227),e2=c(25284);async function e3(a){a.planning.effectiveChapters=a.planning.baseEffectiveChapters,a.planning.constructionOrgContext=(0,e2.TD)(a.understanding.scopedIntelligence?.constructionOrganizationGraph)||a.understanding.scopedIntelligence?.constructionOrganizationContext,a.planning.chapterGraphSummaryText=b=>{let c=a.understanding.chapterGraphMap.get(b);return c&&(c.graphWorks.length||c.graphMethods.length||c.graphBoqItems.length)?[c.graphWorks.length?`专业工程:${c.graphWorks.slice(0,8).join("、")}`:"",c.graphMethods.length?`主要工法/工艺:${c.graphMethods.slice(0,8).join("、")}`:"",c.graphBoqItems.length?`关键资源:${c.graphBoqItems.slice(0,8).map(a=>a.name).join("、")}`:""].filter(Boolean).join(";"):""},a.planning.baseProjectContext=[a.prepare.projectUnderstanding.prompt,a.planning.constructionOrgContext].filter(Boolean).join("\n\n"),a.planning.projectContext=a.planning.baseProjectContext;let b={...a.prepare.template,chapters:a.planning.effectiveChapters};a.planning.promptStructuralRules=(0,d9.My)([a.prepare.promptTexts,a.global.input.requirement||""].filter(Boolean).join("\n\n"),a.planning.effectiveChapters),a.planning.provisionalBudget=(0,h.tF)({requirement:a.global.input.requirement,promptTexts:a.prepare.promptTexts,template:b,chapters:a.planning.effectiveChapters,spec:a.prepare.documentSpec});let c=0,d=0,i=[];a.planning.plannedChapters=await (0,e.l$)(a.planning.effectiveChapters.map((a,b)=>({chapter:a,chapterIndex:b})),async({chapter:e,chapterIndex:f})=>{if(e.sections?.length){c+=1;let b=a.planning.promptStructuralRules.filter(a=>a.chapterIndex===f||a.chapterTitle&&(0,aq.GQ)(a.chapterTitle)===(0,aq.GQ)(e.title)).flatMap(a=>a.requiredSections.sort((a,b)=>(a.order||0)-(b.order||0)).map(a=>a.title));for(let a of[...b,...e.sections]){let b=(0,d9.EN)(String(a).trim());b&&b!==String(a).trim()&&i.push(`${(0,aq.GQ)(e.title)}:${a} → ${b}`)}let d=(0,d9.k2)([...b,...e.sections],e.title);return{...e,sections:d.length?d:(0,d9.k2)(e.sections,e.title)}}d+=1;let h=(0,g.QR)(a.understanding.writerEvidence.filter(a=>a.chapterId===e.id||(0,dd.Lk)(a,e.title)),{preservePinned:!0}),j=a.prepare.projectUnderstanding.chapterPlans.find(a=>a.chapterId===e.id)?.writingGoal||"",k=(0,M.C_)(a.prepare.promptPlan,e),l=await (0,d9.SP)({template:b,chapter:e,chapterIndex:f,evidence:h,promptTexts:k.promptTexts,projectContext:a.planning.projectContext,requirement:a.global.input.requirement,roleContext:j,targetWords:a.planning.provisionalBudget.chapterTargets.get(e.id)||1200,projectGraphSummary:a.planning.chapterGraphSummaryText(e.id),structuralRules:a.planning.promptStructuralRules,signal:a.global.input.signal}),m=a.planning.promptStructuralRules.filter(a=>a.chapterIndex===f||a.chapterTitle&&(0,aq.GQ)(a.chapterTitle)===(0,aq.GQ)(e.title)).flatMap(a=>a.requiredSections.map(a=>`强制小节:${a.title}`));if((0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"validation",roleId:"section-planning",promptId:k.primaryPromptId,status:l.length?"success":"failed",message:`${(0,aq.GQ)(e.title)} 小节规划${l.length?`生成 ${l.length} 个小节`:"未生成可用小节"}`,details:[...k.promptDetails,...m,...l.length?l.map(a=>`规划小节:${a}`):["规划结果为空或被污染过滤"]]},{subtitle:"小节规划"})),!l.length)throw Error(`${(0,aq.GQ)(e.title)} 小节规划未生成可用小节`);return{...e,sections:l}},{kind:"llmRepair",targetWords:a.planning.provisionalBudget.targetChars||4e3}),a.planning.tenderRequirements=await a.understanding.tenderRequirementsTask;let j=(0,eH.dK)({template:a.prepare.template,chapters:a.planning.plannedChapters,requirement:a.global.input.requirement}),k=j.chapters;{let c=0,d=await (0,e.l$)(j.chapters.map((a,b)=>({chapter:a,chapterIndex:b})),async({chapter:c})=>{if(!(c.sections||[]).length)return{chapterId:c.id,additions:[]};let d=(0,g.QR)(a.understanding.writerEvidence.filter(a=>a.chapterId===c.id||(0,dd.Lk)(a,c.title)),{preservePinned:!0}),e=a.prepare.projectUnderstanding.chapterPlans.find(a=>a.chapterId===c.id)?.writingGoal||"",f=(0,M.C_)(a.prepare.promptPlan,c),h=await (0,d9.wy)({template:b,chapter:c,evidence:d,promptTexts:f.promptTexts,projectContext:a.planning.projectContext,requirement:a.global.input.requirement,roleContext:e,projectGraphSummary:a.planning.chapterGraphSummaryText(c.id),maxTotalSections:eH.a0,signal:a.global.input.signal});return{chapterId:c.id,additions:h}},{kind:"llmRepair",targetWords:a.planning.provisionalBudget.targetChars||4e3}),f=[];k=j.chapters.map(a=>{let b=(d.find(b=>b.chapterId===a.id)?.additions||[]).filter(b=>!(a.sections||[]).some(a=>a.includes(b)||b.includes(a)));if(!b.length)return a;let e=b.slice(0,Math.max(0,eH.a0-(a.sections||[]).length));return e.length?(c+=e.length,f.push({chapterTitle:a.title,sections:e}),{...a,sections:[...a.sections||[],...e]}):a}),(0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"validation",roleId:"section-planning-additions",status:c>0?"success":"skipped",message:c>0?`专业小节补规划:为 ${f.length} 个章节新增 ${c} 个专业工作面小节`:"专业小节补规划:LLM 未产出有效增量,保留模板锁定结构",details:f.length?f.map(a=>`${(0,aq.GQ)(a.chapterTitle)}:${a.sections.join("、")}`):["无新增(LLM 空响应/无支撑依据/与已有小节重复)"]},{subtitle:"专业小节补规划",order:a.global.progressStages.length})),a.global.emitProgress()}let l=k;if(bF(a.planning.tenderRequirements)){let b=await a.global.withProgressHeartbeat(()=>eI({chapters:k,requirementSummary:bU(a.planning.tenderRequirements),templateName:a.prepare.template.name,signal:a.global.input.signal}));if(b.length>0){let c=function(a,b){if(!b.length)return{chapters:a,applied:[]};let c=[],d=a.map(a=>({...a,sections:[...a.sections||[]]}));for(let a of b){let b=d.findIndex(b=>(0,aq.GQ)(b.title)===(0,aq.GQ)(a.chapterTitle)||(0,d9.nz)(b.title)===(0,d9.nz)(a.chapterTitle));if(b<0)continue;let e=d[b],f=a.sections.filter(a=>!(e.sections||[]).some(b=>(0,d9.kw)(b,a)));0!==f.length&&(e.sections.push(...f),c.push({chapterTitle:a.chapterTitle,sections:f}))}return a.every((a,b)=>{let c=d[b];return!!c&&(a.sections||[]).every(a=>(c.sections||[]).some(b=>(0,d9.kw)(b,a)))})?{chapters:d,applied:c}:{chapters:a,applied:[]}}(k,b);c.applied.length>0?(l=c.chapters,(0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"validation",roleId:"outline-requirement-calibration",status:"success",message:`大纲要求校准:新增 ${c.applied.reduce((a,b)=>a+b.sections.length,0)} 个评分项承接小节(结构守恒校验通过)`,details:c.applied.map(a=>`${(0,aq.GQ)(a.chapterTitle)}:${a.sections.join("、")}`)},{subtitle:"大纲要求校准",order:a.global.progressStages.length}))):(0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"validation",roleId:"outline-requirement-calibration",status:"skipped",message:"大纲要求校准未通过结构守恒校验,回退原规划",details:["校准新增小节未通过章名匹配/标题清洗校验,全部丢弃"]},{subtitle:"大纲要求校准",order:a.global.progressStages.length})),a.global.emitProgress()}else(0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"validation",roleId:"outline-requirement-calibration",status:"skipped",message:"大纲要求校准未产出有效增量(章节结构已覆盖评分项要求或校准调用失败),回退原规划",details:[]},{subtitle:"大纲要求校准",order:a.global.progressStages.length})),a.global.emitProgress()}let m=await (0,bf.mI)(l),n=l.reduce((a,b,c)=>a+Math.max(0,(b.sections||[]).length-(m[c]?.sections||[]).length),0);{let b=j.report;b.unattached.length>0?(0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"validation",roleId:"construction-org-outline-unattached",status:"success",message:`标准模块挂靠:${b.totals.attachedModules} 个模块、${b.totals.sectionCount} 个小节;${b.unattached.length} 个可选模块未挂靠(无语义匹配章节,已记录)`,details:b.unattached.map(a=>`未挂靠:${a.moduleTitle}(${a.sections.length} 小节,${a.level})`)},{subtitle:"标准模块挂靠"})):(0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"validation",roleId:"construction-org-outline-attached",status:"success",message:`标准模块挂靠:${b.totals.attachedModules} 个模块、${b.totals.sectionCount} 个小节全部挂靠`,details:b.attached.map(a=>`${"fallback"===a.kind?"兜底挂靠":"挂靠"}:${a.moduleTitle} → ${a.chapterTitle}`)},{subtitle:"标准模块挂靠"}))}let o=await (0,be.Mv)(a.understanding.evaluationItems.map(a=>a.title),m.map(eB.Yx));a.planning.finalBidStructureAudit=(0,eB.KX)({template:a.prepare.template,chapters:m,requirement:a.global.input.requirement,evaluationItems:a.understanding.evaluationItems,semanticSimilarity:o}),a.planning.effectiveChapters=(0,ea.w9)({chapters:a.planning.finalBidStructureAudit.enrichedChapters,projectGraph:a.understanding.projectGraph,canonicalFacts:a.understanding.canonicalFacts}),a.planning.effectiveChapters=(0,eB.ji)(a.planning.effectiveChapters);let p=await (0,bf.mI)(a.planning.effectiveChapters),q=a.planning.effectiveChapters.reduce((a,b,c)=>a+Math.max(0,(b.sections||[]).length-(p[c]?.sections||[]).length),0);a.planning.effectiveChapters=p;let r=n+q;r>0&&((0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"validation",roleId:"outline-topic-filter",status:"success",message:`大纲小节主题过滤:剔除 ${r} 个评标纪律/商务报价类离题小节`,details:["被剔除小节不进入写作、目录与预算计划",...q>0?[`评标结构校验补挂回路二次剔除:${q} 个条款碎片/纪律小节`]:[]]},{subtitle:"大纲主题约束",order:a.global.progressStages.length})),a.global.emitProgress()),(a.planning.finalBidStructureAudit.issues.length>0||a.understanding.bidStructureAudit.issues.length>0)&&(0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"validation",roleId:"bid-structure-audit",status:a.planning.finalBidStructureAudit.issues.some(a=>"blocker"===a.severity)?"failed":"success",message:`评标结构符合性校验:${a.planning.finalBidStructureAudit.diagnostics.length} 个结构组,${a.planning.finalBidStructureAudit.diagnostics.filter(a=>"satisfied"===a.status).length} 个已满足,${a.planning.finalBidStructureAudit.diagnostics.filter(a=>"missing"===a.status&&"required"===a.level).length} 个必查缺失(已自动补挂),${a.planning.finalBidStructureAudit.diagnostics.filter(a=>"fragmented"===a.status).length} 个分散`,details:[...a.planning.finalBidStructureAudit.diagnostics.map(a=>`${"satisfied"===a.status?"满足":"fragmented"===a.status?"分散":"补挂"}:${a.groupTitle}${"missing"===a.status?`(补挂小节:${a.missingSections.join("、")})`:""}`),...a.planning.finalBidStructureAudit.issues.map(a=>`提示:${a.message}`).slice(0,8)]},{subtitle:"评标结构校验"})),a.prepare.template={...a.prepare.template,chapters:a.planning.effectiveChapters},a.planning.requirementsSimilarity=await (0,be.Mv)(bJ(a.planning.tenderRequirements).map(({item:a})=>bI(a)),a.planning.effectiveChapters.map(a=>bS(a.title))),a.planning.requirementsRoutes=await bT(a.planning.tenderRequirements,a.planning.effectiveChapters,a.planning.requirementsSimilarity),a.planning.requirementsRoutes.length>0&&((0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"validation",roleId:"tender-requirement-routing",status:"success",message:`评分项要求章节级路由:${a.planning.requirementsRoutes.length} 条要求已路由到责任章节(生成时显性响应)`,details:a.planning.requirementsRoutes.map(a=>`${a.kind}“${a.item.text}” → ${a.chapterTitle}(相似度 ${a.score.toFixed(2)})`)},{subtitle:"要求响应路由",order:a.global.progressStages.length})),a.global.emitProgress()),a.planning.factTokenScopeClassifier=await eM(),a.planning.chapterIntentClassifier=await eV(a.planning.effectiveChapters.map(a=>a.title)),a.planning.professionalDepthClassifier=await e_(),a.planning.writingTaskBrief=function(a){let b=(0,eH.yt)({template:{id:"runtime",name:a.templateName||"",outputTitle:"",description:"",category:"",chapters:a.chapters},chapters:a.chapters,requirement:a.requirement}),c=/施工组织设计|施工组织|施组|技术标/u.test(`${a.templateName||""} ${a.requirement||""} ${a.chapters.map(a=>a.title).join(" ")}`)||b.length>0,d=Object.values(a.factsModel?.canonical?.byKey||{}).map(a=>`${a.label}=${a.value}`),e=d.filter(a=>/建设规模|建筑面积|占地|用地面积|装配|层数|高度/u.test(a)).slice(0,8),f=(a.tenderRequirements?.frontScheduleClauses||[]).map(a=>a.text).filter(Boolean).slice(0,12),g=["正文必须落到本项目资料已确认的事实,不得使用模板化空话或跨小节复制段落","措施类内容写成“责任岗位+执行动作+量化标准+检查频次+整改时限+复查销项”闭环句式:同一自然段内三要素(责任岗位+检查频次+整改闭环)须同时出现,全文每 1500 字至少 1 段闭环句式","正文每 1000 字至少落位 6 处带单位量化工艺参数(mm/MPa/养护天数/间距/压实度等),施工流程与施工方法须有明确的工序顺序表达(形式由模型自然选择、不做统一要求:顺序词叙述、编号步骤、有序/无序列表或箭头链均可),每个分部分项方案至少 1 处 3 环节以上工序顺序表达",'专业工程类小节必须覆盖作业对象与工程量、工序顺序、施工方法三方面要素(呈现形式不限,段落式叙述或带标签分点均可),小节标题用专业工程正式名称(如"拆除工程"),禁止使用"工作包"等后台概念命名','质量目标与创优目标必须使用招标文件原文的奖项名称逐字落位,禁止替换、降级或省略为其他奖项名称(如把招标文件指定奖项写成其他奖项);招标文件"确保/达到"类等级要求不得弱化为"争创/争取"','B5 属地创优目标(安徽省属地适配项):招标文件未明确具体奖项时,正文必须提出不低于招标文件要求的属地创优目标,如"争创合肥市级优质工程""争创市级安全文明标准化工地"等,并在质量与文明施工章节落位','B5 表格数据一致性(丰乐镇第三轮实测:合计行 5088 与阶段工日之和 5808 矛盾、班组人数 22/28/30 多值并存):表格类内容(劳动力投入、材料配置、机械设备等)合计行数值必须与上方明细行数据一致、可由各行相加推导;各阶段人数与全项目峰值人数必须显式区分口径并保持一致(如写明"阶段高峰人数按阶段分别统计,合计行仅列全项目峰值口径");同一班组人数在配置表与进退场表中必须同值,不得多值并存',...f.length?[`投标人须知前附表响应条款(正文必须逐条落位或遵守,零响应即评标失分):${f.map((a,b)=>`${b+1}.${a}`).join(";")}`]:[]],h=a.chapters.map(b=>{var c;let d=(c=b.title,e0.find(a=>a.pattern.test(c))),e=(a.projectGraph?.works||[]).filter(a=>a.name&&(b.title.includes(a.name.slice(0,2))||/概况|总体|施工内容|方案|施工/u.test(b.title))).slice(0,10),f=(a.projectGraph?.resources||[]).filter(a=>a.quantity&&/概况|资源|总体|施工内容|方案/u.test(b.title)).slice(0,12).map(a=>({itemCode:"",itemName:a.name,quantity:a.quantity,unit:a.unit}));return{chapterId:b.id,chapterTitle:b.title,writingGoal:d?.goal||"结合本章标题与项目资料事实展开专业内容,避免泛化叙述",mustCover:[...d?.mustCover||[],...(b.requiredFacts||[]).slice(0,6)],factDomains:[...b.requiredFacts||[],...e.map(a=>a.name)].slice(0,10),evidenceRefs:b.queries.slice(0,6).map(a=>({filePath:a,kind:"query",priority:"should"})),boqTargets:f,drawingTargets:[],gaps:[]}});return{documentType:c?"施工组织设计":"专业文档",globalWritingFocus:c?[...g,"招标硬性要求必须逐项明确响应:质量标准、计划工期、缺陷责任期与保修、安全文明目标、项目经理及组织机构;工期/质量/保修类承诺可在概况与质量章节落位,不得遗漏",...e.length?[`项目规模事实卡(口径裁决值,正文引用规模数据必须与之一致,不得混淆总占地与建筑总量口径):${e.join(";")}`]:[],...d.length?[`项目可信基础事实(写作时必须优先落位):${d.slice(0,10).join(";")}`]:[]]:g.slice(0,2),chapters:h}}({chapters:a.planning.effectiveChapters,factsModel:a.understanding.preliminaryFactsModel,projectGraph:a.understanding.projectGraph||void 0,requirement:a.global.input.requirement,templateName:a.prepare.template.name,tenderRequirements:a.planning.tenderRequirements}),a.planning.tenderWritingRulesText=function(a){if(!a||!bF(a))return"";let b=[],c=(a,c)=>{for(let d of c)b.push(`${a}:${d.text}${d.source?`(来源:${d.source})`:""}。`)};return(c("本项目创优目标(必须全文显性响应,质量目标章节必须逐条承接并配套创优保证措施;奖项名称必须与招标文件原文逐字一致,禁止替换、降级或省略为其他奖项名称,“确保/达到”不得弱化为“争创”)",a.awardObjectives),c("特殊质量标准(实质性要求,质量目标必须显性写明)",a.specialQualityStandards),c("奖项条款(与创优目标关联,创优保证措施须覆盖申报与兑现条件)",a.awardClauses),a.greenBuildingGrade&&b.push(`绿色建筑等级要求:${a.greenBuildingGrade.text}。必须编制系统性绿色施工保证方案(节能/节地/节水/节材/室内环境指标控制与验收),不得仅以单一指标替代整体响应。`),a.smartSiteGrade&&b.push(`智慧工地等级要求:${a.smartSiteGrade.text},智慧工地建设方案须达到该等级。`),a.assemblyRate&&b.push(`装配率要求:${a.assemblyRate.text},装配式施工方案须覆盖水平构件与相关部品。`),c("体系基准要求(必须逐项覆盖表述,不得零散遗漏)",a.systematicBenchmarks),c("投标人须知前附表响应条款(施组必须逐条响应或遵守,零响应即评标失分)",a.frontScheduleClauses.filter(a=>!(0,bf.dn)(a.text))),a.dateFabricationProhibited&&b.push("禁止编造开工日期:招标文件以开工令时间为准,正文不得自行设定具体日历开工日期,一律表述为“以开工令时间为准”。"),c("禁止性/约束性要求(正文不得违反)",a.prohibitionNotes),0===b.length)?"":`【招标文件评分项要求(系统从绑定资料提取,必须逐条响应,零响应即评标失分)】
106
106
  ${b.map((a,b)=>`${b+1}. ${a}`).join("\n")}
107
- ${(0,e.TP)("以上为系统提取的评分项要求内容:实质要求(奖项名称、数字参数、等级指标等)必须显性响应进正文;本段提示词文字本身(编号、括号说明等元话语)禁止复述进正文")}`}(a.planning.tenderRequirements),a.planning.projectContext=[a.planning.baseProjectContext,a.planning.tenderWritingRulesText].filter(Boolean).join("\n\n"),a.planning.chapterScopedProjectContext=b=>[a.planning.constructionOrgContext,a.planning.tenderWritingRulesText].filter(Boolean).join("\n\n"),a.planning.documentBudget=(0,h.tF)({requirement:a.global.input.requirement,promptTexts:a.prepare.promptTexts,template:a.prepare.template,chapters:a.planning.effectiveChapters,spec:a.prepare.documentSpec}),a.planning.plannedDocument=await a.planning.plannedDocumentTask,a.understanding.agentWorkflow.documentPlan=a.planning.plannedDocument.plan,a.understanding.agentWorkflow.nodes.push(a.planning.plannedDocument.node),(0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"validation",roleId:"agent-document-planner",status:"success",message:a.planning.plannedDocument.node.outputSummary||"Agent 文档规划完成",details:a.planning.plannedDocument.plan.chapters.map(a=>`${a.title}:${a.sections.length} 条细目`)},{subtitle:"Agent Document Planner",order:a.global.progressStages.length})),a.global.checkpointChapterOrderIds=a.planning.effectiveChapters.map(a=>a.id);let s=a.planning.documentBudget.targetChars||[...a.planning.documentBudget.chapterTargets.values()].reduce((a,b)=>a+b,0);a.planning.generationStrategy=(0,f.JP)({template:a.prepare.template,targetWords:s,requirement:a.global.input.requirement,materialFileCount:a.prepare.materialFilePaths.length,evidenceCount:a.understanding.allEvidence.length}),a.planning.generationBudget=(0,e0.C)({template:a.prepare.template,chapters:a.planning.effectiveChapters,targetWords:s,requirement:a.global.input.requirement,materialFileCount:a.prepare.materialFilePaths.length,evidenceCount:a.understanding.allEvidence.length,hasVeryLargeExplicitChapter:a.planning.effectiveChapters.some(a=>(a.sections||[]).filter(Boolean).length>=30),configuredChapterConcurrency:(0,dP.z)().chapterConcurrency||0,strategy:a.planning.generationStrategy}),a.planning.generationDiagnostics=(0,f.Zk)(a.planning.generationStrategy),(a.understanding.earlyFactPool.factSanitize.truncated>0||a.understanding.earlyFactPool.factSanitize.dropped>0||a.understanding.earlyFactPool.factSanitize.repaired>0)&&(a.planning.generationDiagnostics.factSanitize={...a.understanding.earlyFactPool.factSanitize}),a.planning.planPhaseStartedAt=Date.now(),(0,aA.t5)(s),(0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"validation",roleId:"document-strategy",status:"success",message:`已自动选择 ${a.planning.generationStrategy.mode} 生成策略:章节审查 ${a.planning.generationStrategy.enableChapterReview?"启用":"跳过"}、全局审查 ${a.planning.generationStrategy.enableGlobalReview?`${a.planning.generationStrategy.globalReviewSamplingRate&&a.planning.generationStrategy.globalReviewSamplingRate<1?`抽检 ${Math.round((a.planning.generationStrategy.globalReviewSamplingRate??1)*100)}%`:"启用"}`:"跳过"}、最终质量审查 ${a.planning.generationStrategy.enableFinalQualityReview?"启用":"跳过"}、全文扩写 ${a.planning.generationStrategy.enableDocumentBudgetExpansion?"启用":"跳过"}`,details:a.planning.generationBudget.triggers},{subtitle:"后台自动策略"})),a.understanding.canonicalFacts.scopeConflicts.length>0&&(0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"validation",roleId:"scope-conflict-resolution",status:"success",message:`源级数据口径冲突已裁决(补疑/澄清修正文件权威最高):${a.understanding.canonicalFacts.scopeConflicts.map(a=>a.resolution?`${a.scope} → ${a.resolution}`:`${a.scope} → 待人工复核`).join(";")}`,details:a.understanding.canonicalFacts.scopeConflicts.flatMap(a=>a.values.map(a=>`来源「${a.sourceFile||"未知文件"}」取值 ${a.value}${a.unit}`))},{subtitle:"数据口径裁决"}));let t=a.prepare.hasExplicitOutline?"OUTLINE 章节":"模板章节";a.planning.sectionPlanningStage=(0,b8.X5)({type:"validation",roleId:"section-planning",status:"success",message:`小节规划:${d} 章由 LLM 基于${t}、项目资料理解和证据规划小节,${c} 章已由模板显式提供小节并跳过规划`,details:i.length?[...i]:void 0},{subtitle:"小节规划策略"});let u=a.prepare.hasExplicitOutline?`;识别到 OUTLINE 章节 ${a.prepare.explicitPromptChapters.length} 个`:";未识别到有效 OUTLINE,将使用模板章节",v=[...a.prepare.promptPlan.prompts.map(a=>`${a.category}|${a.roleId}|${a.id}|${a.name}|${a.bindingSource}|${a.content.length} 字符|hash=${a.contentHash}|${a.contentPreview}`),...a.prepare.promptPlan.unresolvedRoles.map(a=>`unresolved|${a}|项目角色配置中的提示词角色不存在`),...a.prepare.promptPlan.missingResourceRoles.map(a=>`missingResource|${a}|提示词角色未显式绑定资源`)];(0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"role_binding",roleId:a.prepare.projectRoleConfigId,status:"success",message:`已绑定项目资料 ${a.prepare.materialFilePaths.length} 份、${a.prepare.promptPlan.prompts.length} 个有效提示词;写作 ${a.prepare.promptPlan.writerPrompts.length}、章节 ${a.prepare.promptPlan.chapterPrompts.length}、抽取 ${a.prepare.promptPlan.extractionPrompts.length};已自动抽取运行时规则 ${a.prepare.runtimePromptRules.executionSummary.length} 条${u}`,details:[...v,...a.prepare.runtimePromptRules.executionSummary.map(a=>`runtimeRule|${a}`)]},{subtitle:a.prepare.projectRoleConfigName,roleName:a.prepare.projectRoleConfigName})),(0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"validation",roleId:"runtime-prompt-rules",status:"success",message:`运行时提示词规则已抽取:${a.prepare.runtimePromptRules.executionSummary.length} 条,版本 ${a.prepare.runtimePromptRules.sourceHash}`,details:a.prepare.runtimePromptRules.executionSummary.length?[...a.prepare.runtimePromptRules.executionSummary,`必需表格:${a.prepare.runtimePromptRules.requiredTables.join("、")||"无"}`,`必含关键词:${a.prepare.runtimePromptRules.requiredKeywords?.join("、")||"无"}`,`禁含内容:${a.prepare.runtimePromptRules.forbiddenPatterns?.join("、")||"无"}`]:["未从提示词中识别到额外硬规则,使用系统默认质量规则"]},{subtitle:"提示词规则执行"})),(0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"validation",roleId:"document-readiness",status:a.prepare.readiness.ready?"success":"failed",message:"生成准备度:绑定资料已就绪",details:a.prepare.readiness.diagnostics},{subtitle:"生成准备度检查"})),(0,b8.fx)(a.global.progressStages,a.planning.sectionPlanningStage),a.global.emitProgress()}var e3=c(14070),e4=c(70963);async function e5(a){if(a.understanding.evidenceScopePaths=new Set(a.prepare.materialFilePaths),a.understanding.fileRoleByPath=new Map([...a.prepare.kindByPath.entries()].map(([a,b])=>[a,(0,eD._W)(b)])),a.understanding.fileProcessingByPath=new Map([...a.prepare.processingByPath.entries()].map(([a,b])=>[a,b])),(0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"knowledge_retrieval",roleId:"knowledge-index",status:"running",message:"正在读取项目资料包索引",details:["使用上传阶段已完成的解析、切片和索引结果","不在生成流程中重新解析或入库","准备按资料类型召回章节证据"],progress:{current:1,total:3,label:"读取索引"}},{subtitle:"知识库检索",order:a.global.progressStages.length})),a.global.emitProgress(),a.understanding.project=await a.global.withProgressHeartbeat(()=>a.understanding.manager.getProject(a.prepare.projectRoot)),a.understanding.indexHealth=function(a,b){let c=new Set(b.filter(Boolean)),d=(a.listFiles?.()||[]).filter(a=>0===c.size||c.has(a.relativePath)),e=new Set(d.map(a=>a.relativePath)),f=[...c].filter(a=>!e.has(a)),g=d.filter(a=>0===Math.max(0,Math.ceil(Number(a.chunkCount)||0))).map(a=>a.relativePath),h=d.filter(a=>"error"===a.status).map(a=>a.relativePath),i="function"==typeof a.countPendingIndexJobs?a.countPendingIndexJobs():0,j="function"==typeof a.getVectorStatus?a.getVectorStatus():void 0,k=d.filter(a=>"error"!==a.status&&Math.max(0,Math.ceil(Number(a.chunkCount)||0))>0),l=k.map(a=>a.relativePath),m=k.reduce((a,b)=>a+Math.max(0,Math.ceil(Number(b.chunkCount)||0)),0),n=[...al("部分绑定文件未完成索引,已自动跳过",f),...al("部分绑定文件没有可用切片,已自动跳过",g),...al("部分绑定文件索引失败,已自动跳过",h)],o=c.size>0&&0===m?["所有绑定文件均无可用切片"]:[],p=[...n,...i>0?[`仍有 ${i} 个待索引任务,建议等待索引完成后生成`]:[],...j&&"ready"!==j.status?[`向量索引状态为 ${j.status},当前召回质量可能下降`]:[]];return{scopedRecords:d,usablePaths:l,missingFiles:f,emptyFiles:g,errorFiles:h,pendingJobs:i,vectorStatus:j,usableChunkCount:m,blockingIssues:o,warnings:p}}(a.understanding.project,[...a.understanding.evidenceScopePaths]),a.understanding.indexHealth.blockingIssues.length>0)throw Error(`生成前知识索引不可用:${a.understanding.indexHealth.blockingIssues.join(";")}`);a.understanding.availableEvidenceScopePaths=new Set(a.understanding.indexHealth.usablePaths),a.understanding.projectMaterialScope=(0,b7.Zq)(a.prepare.projectId,[...a.understanding.availableEvidenceScopePaths]),a.understanding.requestedEvidencePerChapter=an(a.understanding.project,[...a.understanding.availableEvidenceScopePaths],a.global.input.maxEvidencePerChapter);let b=a.understanding.indexHealth.pendingJobs>0||0===a.understanding.indexHealth.usableChunkCount;!function(a){let b=Math.max(0,Math.ceil(a.totalChunks||0)),c=Math.max(0,Math.ceil(a.loadedChunks||0)),d=[...b>=1e3&&(b>0?c/b:1)<.35?["切片未完全预加载"]:[],...!1===a.vectorReady?["向量索引未就绪"]:[]];d.join("、")}({totalChunks:Math.min(a.understanding.indexHealth.usableChunkCount,20*a.prepare.materialFilePaths.length),loadedChunks:Math.min(a.understanding.indexHealth.usableChunkCount,20*a.prepare.materialFilePaths.length),vectorReady:a.understanding.indexHealth.vectorStatus?"ready"===a.understanding.indexHealth.vectorStatus.status:void 0}),(0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"knowledge_retrieval",roleId:"knowledge-index",status:b?"failed":"success",message:`已读取知识索引:项目资料 ${a.understanding.indexHealth.scopedRecords.length} 份,可用切片 ${a.understanding.indexHealth.usableChunkCount} 条`,details:[`项目资料:${a.understanding.evidenceScopePaths.size} 份`,`可用证据文件:${a.understanding.availableEvidenceScopePaths.size} 份`,`向量状态:${a.understanding.indexHealth.vectorStatus?.status||"unknown"}`,...a.understanding.indexHealth.warnings,"后续将按招标正文/清单/图纸/补疑等资料类型召回"],progress:{current:3,total:3,label:"索引已就绪"}},{subtitle:"知识库检索",order:a.global.progressStages.length})),a.global.emitProgress(),(0,e.Te)(a.global.input.signal),a.understanding.allEvidence=[],a.understanding.retrievalCoverageReports=[],a.understanding.webResearchReport={enabled:a.prepare.webAccessConfig.enabled,queries:[],evidenceCount:0,filteredCount:0,chapters:[]},a.understanding.missingItems=[],a.understanding.failedChapterMessages=[],a.understanding.chapterGenerationStages=[],a.understanding.chapterDraftsByOrder=[],a.understanding.chapterGenerationStagesByOrder=[],a.understanding.knowledgeBaseStageIndex=-1;let c=new Map,d=new Map;a.understanding.getCachedFileDetail=b=>{let c=`${b}::full`;if(!d.has(c))try{d.set(c,a.understanding.project.getFileDetail?.(b))}catch{d.set(c,void 0)}return d.get(c)},a.understanding.searchWithCache=async(b,d,f,g)=>{let h=Z(g),i=(0,e.c6)({query:b,scopedFilePaths:d,limit:f,weights:h,generationMode:!0,reranker:!0}),j=c.get(i);if(j)return j;let k=await a.understanding.manager.search(a.prepare.projectRoot,b,{scope:"project",filters:{filePaths:d},limit:f,weights:h,generationMode:!0,disableReranker:!1}).catch(()=>null),l=k?.results||[];return c.set(i,l),l};let f={stage:(0,b8.X5)({type:"file_understanding",roleId:"project-understanding",status:"running",message:`正在理解项目资料:${a.prepare.projectMaterialProfile.files.length} 份资料,${Object.values(a.prepare.projectMaterialProfile.groups).filter(a=>a.length>0).length} 类资料类型`,progress:{current:1,total:3,label:"资料理解"}},{subtitle:"项目资料理解",order:a.global.progressStages.length})};(0,b8.fx)(a.global.progressStages,f.stage),a.global.emitProgress();let h=(0,b7.Su)(await Y({manager:a.understanding.manager,project:a.understanding.project,projectRoot:a.prepare.projectRoot,scopedFilePaths:[...a.understanding.evidenceScopePaths].filter(Boolean).sort(),fileRoleByPath:a.understanding.fileRoleByPath,fileProcessingByPath:a.understanding.fileProcessingByPath,signal:a.global.input.signal}),a.understanding.projectMaterialScope);(0,b7.U2)(h,a.understanding.projectMaterialScope,"project-basic-evidence"),h.length>0&&(a.understanding.allEvidence.push(...h),(0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"knowledge_retrieval",roleId:"project-basic-evidence",status:"success",message:`已锁定项目基础事实证据 ${h.length} 条`,details:h.slice(0,8).map(a=>`${p.basename(a.filePath)}|${a.sectionTitle||"正文片段"}|score=${a.score.toFixed(2)}`)},{subtitle:"基础事实召回",order:a.global.progressStages.length})),a.global.emitProgress());let{safe:i,excluded:j}=await (0,bf.a0)(a.understanding.allEvidence);a.understanding.writerEvidence=i,a.understanding.bidProcedureJudge=await (0,bf.M8)(),j.length>0&&((0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"knowledge_retrieval",roleId:"evidence-content-safety",status:"success",message:`证据内容安全过滤:${j.length} 条投标程序/评标纪律类证据已从写作链断开(系统侧提取通道不受影响)`,details:j.slice(0,6).map(a=>`${p.basename(a.filePath)}|${a.sectionTitle||"正文片段"}`)},{subtitle:"证据内容安全",order:a.global.progressStages.length})),a.global.emitProgress()),a.understanding.safeProjectBasicEvidence=h.filter(a=>!j.includes(a)),a.understanding.excludedEvidenceKeys=new Set(j.map(bf.hM)),a.understanding.earlyFactPool=(0,n.d6)({evidence:a.understanding.writerEvidence,template:a.prepare.template,spec:a.prepare.documentSpec,profile:a.prepare.domainProfile,scope:a.understanding.projectMaterialScope});let k=a.understanding.earlyFactPool.localFacts,l=[...k,...a.understanding.earlyFactPool.projectBasicFacts,...a.understanding.earlyFactPool.preciseFacts];a.understanding.scopedIntelligence=(0,e1.hp)({projectRoot:a.prepare.projectRoot,template:a.prepare.template,requirement:a.global.input.requirement,materialScope:a.prepare.materialScope});let m=[...(0,e.lX)(a.understanding.scopedIntelligence?.facts||[]),...l,...A(a.understanding.writerEvidence)],q=function(a,b){if(a.length<=1)return a;let c=H(a,(0,r.bC)(b)),d=K(a,c),f=/项目名称|工程名称|招标人|建设单位|建设地点|质量标准|合同价格形式|绿色建筑等级|投标有效期|质保期|劳动力高峰|装配率|支护形式|创优奖惩|结构形式|总层数|建筑层数|建筑面积|建设规模|计划工期|合同工期|总工期/u,g=a=>f.test(`${a.key||""}${a.fieldName||""}${a.fieldId||""}`),h=a=>a.fieldId||a.key||a.fieldName||"",i=new Map;for(let a of d){if(!g(a))continue;let b=h(a),c=i.get(b);if(!c){i.set(b,a);continue}let d=a=>({priority:G(a.sourceFile,a.roleId),normalized:(0,n.de)((0,e.lG)(a.value))}),f=d(c),j=d(a);(j.priority>f.priority||j.priority===f.priority&&j.normalized!==f.normalized&&j.normalized.length<f.normalized.length)&&i.set(b,a)}if(0===i.size)return d;let j=new Set;for(let a of d)g(a)&&i.get(h(a))!==a&&j.add(a);return 0===j.size?d:d.filter(a=>!j.has(a))}(m,a.prepare.projectRoot);for(let b of(a.understanding.preliminaryFactsModel=await (0,n.d7)(q,a.understanding.earlyFactPool.structuredTables,a.understanding.missingItems,a.prepare.documentSpec,a.prepare.domainProfile),a.understanding.agentWorkflow=(0,dg.Qu)({template:a.prepare.template,requirement:a.global.input.requirement,projectRoot:a.prepare.projectRoot,facts:q,projectGraph:a.understanding.scopedIntelligence?.projectGraph,projectGraphSource:a.understanding.scopedIntelligence?"project-intelligence":void 0,materialScope:a.prepare.materialScope}),(0,dg.SU)(a.understanding.agentWorkflow)))(0,b8.fx)(a.global.progressStages,b);if(a.understanding.scopedIntelligence&&(0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"file_understanding",roleId:"project-intelligence-cache",status:"success",message:`已复用入库后项目理解资产与绑定 scope 快照:${a.understanding.scopedIntelligence.files.length} 份绑定资料`,details:[`项目级缓存时间:${new Date(a.understanding.scopedIntelligence.cache.createdAt).toLocaleString()}`,`scope 快照:${a.understanding.scopedIntelligence.scopeSnapshot.scopeHash.slice(0,12)}`,`复用预计算事实:${a.understanding.scopedIntelligence.facts.length} 条`,`复用预计算项目图谱:${a.understanding.scopedIntelligence.projectGraph.works.length}工程/${a.understanding.scopedIntelligence.projectGraph.methods.length}工法/${a.understanding.scopedIntelligence.projectGraph.resources.length}资源`,`复用施工组织设计专项图谱:${a.understanding.scopedIntelligence.constructionOrganizationGraph.workPackages.length} 个工作包/${a.understanding.scopedIntelligence.constructionOrganizationGraph.controlMatrix.length} 条控制矩阵`,`图谱来源:${a.understanding.scopedIntelligence.cache.projectGraphMessage}`,`章节意图证据覆盖:${Object.keys(a.understanding.scopedIntelligence.evidenceByChapterId||{}).length}/${a.prepare.template.chapters.length} 章`,`排除正文不适用资料:${a.understanding.scopedIntelligence.files.filter(a=>!a.usableForBody).length} 份`]},{subtitle:"项目理解缓存 / Scope 快照"})),a.global.emitProgress(),a.understanding.projectGraph=a.understanding.agentWorkflow.baseProjectGraph,!a.understanding.scopedIntelligence){(0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"file_understanding",roleId:"project-graph",status:"running",message:`正在临时构建完整项目图谱:${a.understanding.allEvidence.length} 条证据 → LLM 结构化提取`,details:["缓存缺失或版本过期,建议重新构建项目理解缓存;本次生成将临时构建完整项目图谱。","提取:工程内容、施工方法、材料设备、技术标准、重点难点"],progress:{current:2,total:3,label:"项目图谱"}},{subtitle:"项目资料图谱分析",order:a.global.progressStages.length})),a.global.emitProgress();let b=await a.global.withProgressHeartbeat(()=>(0,e4.i)({evidence:a.understanding.writerEvidence,signal:a.global.input.signal,projectRoot:a.prepare.projectRoot,requirement:a.global.input.requirement,templateId:a.prepare.template.id}),a.global.progressStages);if(!b.graph)throw Error(`完整项目图谱构建失败:${b.stage.message||b.stage.status}`);a.understanding.projectGraph=b.graph,(0,b8.fx)(a.global.progressStages,b.stage),a.global.emitProgress()}a.understanding.projectGraph&&(a.prepare.projectUnderstanding=(0,eD._n)(a.prepare.template,a.prepare.projectMaterialProfile,a.understanding.projectGraph)),(0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"file_understanding",roleId:"project-understanding",status:"success",message:`已完成项目资料理解:${a.prepare.projectMaterialProfile.files.length} 份资料、${Object.values(a.prepare.projectMaterialProfile.groups).filter(a=>a.length>0).length} 类资料类型${a.understanding.projectGraph?`、图谱增强 ${a.understanding.projectGraph.works.length} 项工程内容`:""}`,details:[...a.prepare.projectUnderstanding.chapterPlans.slice(0,10).map(a=>`${a.chapterTitle}:必用 ${a.mustUseMaterialKinds.length} 类资料、必覆盖 ${a.mustCover.length} 项`),...a.prepare.projectUnderstanding.profile.warnings.length?[`资料风险:${a.prepare.projectUnderstanding.profile.warnings.slice(0,3).join(";")}`]:[]]},{subtitle:"项目资料理解",order:a.global.progressStages.length})),a.global.emitProgress(),a.understanding.canonicalFacts=L({facts:m,projectGraph:a.understanding.projectGraph,requiredKeys:s.map(a=>a.key),projectRoot:a.prepare.projectRoot,requirement:a.global.input.requirement,templateId:a.prepare.template.id}),a.understanding.preliminaryFactsModel.canonical=a.understanding.canonicalFacts;let t=(0,aq.effectiveTemplateChapters)(a.prepare.template,a.prepare.documentSpec,{preserveExplicitOutline:a.prepare.hasExplicitOutline}),u=(0,eG.dK)({template:a.prepare.template,chapters:t,requirement:a.global.input.requirement}).chapters,v=a.understanding.allEvidence.filter(a=>/评审|评分标准|评分办法|详细评审/u.test(`${a.sectionTitle||""}${a.content}`)).map(a=>a.content);a.understanding.evaluationItems=(0,eA.tL)(v),v.length>0&&0===a.understanding.evaluationItems.length&&(0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"validation",roleId:"bid-structure-audit",status:"skipped",message:"评审章节证据存在但未提取到评分条目标题:评分标准编号条目提取为空,承接审计将静默通过",details:["请检查招标文件评标办法章节编号格式;评分项要求(创优目标/绿色等级/禁编日期)由评分项要求提取通道覆盖"]},{subtitle:"评标结构校验",order:a.global.progressStages.length}));let w=await (0,be.Mv)(a.understanding.evaluationItems.map(a=>a.title),u.map(eA.Yx));if(a.understanding.bidStructureAudit=(0,eA.KX)({template:a.prepare.template,chapters:u,requirement:a.global.input.requirement,evaluationItems:a.understanding.evaluationItems,semanticSimilarity:w}),a.understanding.tenderRequirementsTask=(async()=>{try{var b;let c,d=[];for(let b of[...a.understanding.evidenceScopePaths].sort()){if(!/招标|补疑|答疑|评标/u.test(b))continue;let c=a.understanding.getCachedFileDetail(b);if(c?.chunks?.length)for(let e of c.chunks)d.push({chapterId:"tender-requirements",filePath:c.file?.relativePath||b,score:1,content:e.content||"",roleId:a.understanding.fileRoleByPath.get(b),processingType:a.understanding.fileProcessingByPath.get(b),sectionTitle:e.sectionTitle,source:"pinned-evidence"})}let f=d.length>0?await bA(d):(0,g.QR)([...a.understanding.allEvidence.filter(a=>/招标|评标|投标须知|专用合同|合同条款|技术标准|技术要求/u.test(`${a.filePath||""}${a.sectionTitle||""}`)),...a.understanding.allEvidence.filter(a=>!/招标|评标|投标须知|专用合同|合同条款|技术标准|技术要求/u.test(`${a.filePath||""}${a.sectionTitle||""}`))],{preservePinned:!0});if(d.length>0){let b=d.reduce((a,b)=>a+(b.content?.length||0),0),c=f.reduce((a,b)=>a+(b.content?.length||0),0);(0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"validation",roleId:"tender-requirement-preselect",status:"success",message:`评分项要求有用数据预筛:${d.length} → ${f.length} 条切片(${Math.round(c/Math.max(1,b)*100)}% 字符量)`,details:["投标程序/清单/目录/格式类切片已从主提取输入剔除(义务词形+语义命中双通道保留)","全量切片仍作必提条款窄通道召回池,兜底不失效"]},{subtitle:"评分项要求提取\xb7预筛",order:a.global.progressStages.length})),a.global.emitProgress()}let h="0"!==process.env.DOCUMENT_EXTRACTION_CACHE?(b={collectionEvidence:d,preselectEvidence:f},(0,e.c6)({version:"tender-requirements-extraction-v3",collection:bH(b.collectionEvidence),preselectInput:bH(b.preselectEvidence)})):void 0,i=h?function(a,b){try{let c=p.join(bG(a),`tender-requirements-${b}.json`),d=JSON.parse(o.readFileSync(c,"utf8"));if(!bF(d)||bC(d))return;return d}catch{return}}(a.prepare.projectRoot,h):void 0;if(i)c=i,(0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"validation",roleId:"tender-requirements-cache",status:"success",message:"复用上次提取结果(招标文件与预筛输入哈希命中,跳过主提取/窄通道 LLM)",details:bU(c)},{subtitle:"评分项要求提取\xb7缓存复用",order:a.global.progressStages.length})),a.global.emitProgress();else{c=await a.global.withProgressHeartbeat(()=>bl(f,{signal:a.global.input.signal})),!bF(c)&&f.length>0&&(c=await a.global.withProgressHeartbeat(()=>bl(f,{signal:a.global.input.signal})));let b=await bB(d),e=bs(c);if(b.length>0&&e.length>0){let d=await a.global.withProgressHeartbeat(()=>bl(b,{signal:a.global.input.signal}));bF(d)&&(c=bD(c,d),(0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"validation",roleId:"tender-mandatory-extraction",status:"success",message:"必提条款窄通道补提完成(主提取漏提字段已补齐)",details:bU(d)},{subtitle:"评分项要求提取\xb7必提补提",order:a.global.progressStages.length})),a.global.emitProgress())}let g=[];if(bt(c).length>0&&d.length>0){let b=await a.global.withProgressHeartbeat(()=>bw(c,d,{signal:a.global.input.signal}));c=b.model,g=b.stillGaps;let e=b.noEvidenceGaps,f=b.stillGaps;0===b.stillGaps.length&&((0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"validation",roleId:"tender-field-gap-extraction",status:"success",message:"评分项要求字段定向补提完成(字段级聚焦提取,全部评分项要求字段已提取)",details:bU(c)},{subtitle:"评分项要求提取\xb7字段补提",order:a.global.progressStages.length})),a.global.emitProgress());let h=a=>bq.includes(a);if(f.length>0){let b=f.filter(h),c=f.filter(a=>!h(a)),d=[b.length>0?`必提字段 ${b.map(a=>br(a)).join("、")}`:"",c.length>0?`常规字段 ${c.map(a=>br(a)).join("、")}`:""].filter(Boolean);(0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"validation",roleId:"tender-field-gap-missing",status:"skipped",message:`字段定向补提后仍缺失:${d.join(";")}(条款窗口证据存在但 LLM 提取失败)`,details:["请检查 LLM 可用性与输出质量;正文将无法显性响应上述评分项要求"]},{subtitle:"评分项要求提取\xb7字段缺口",order:a.global.progressStages.length})),a.global.emitProgress()}if(e.length>0){let b=e.filter(h),c=e.filter(a=>!h(a)),d=[b.length>0?`必提字段 ${b.map(a=>br(a)).join("、")}`:"",c.length>0?`常规字段 ${c.map(a=>br(a)).join("、")}`:""].filter(Boolean);(0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"validation",roleId:"tender-field-gap-no-evidence",status:"skipped",message:`${d.join(";")}:招标资料中未找到对应条款或条款值为「无」(判定为无此要求,非漏提)`,details:["若项目实际存在该要求,请检查招标文件相关章节切片完整性"]},{subtitle:"评分项要求提取\xb7字段缺口",order:a.global.progressStages.length})),a.global.emitProgress()}}h&&0===g.length&&function(a,b,c){if(!(!c||!bF(c)||bC(c)))try{o.writeFileSync(p.join(bG(a),`tender-requirements-${b}.json`),JSON.stringify(c,null,2))}catch{}}(a.prepare.projectRoot,h,c)}return bF(c)?((0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"validation",roleId:"tender-requirements-extraction",status:"success",message:"招标文件评分项要求结构化提取完成",details:bU(c)},{subtitle:"评分项要求提取",order:a.global.progressStages.length})),a.global.emitProgress()):f.length>0&&((0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"validation",roleId:"tender-requirements-extraction",status:"skipped",message:"评分项要求提取未获得有效结果(模型不可用或资料中无要求),零响应检测自动跳过",details:[]},{subtitle:"评分项要求提取",order:a.global.progressStages.length})),a.global.emitProgress()),c}catch(b){return(0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"validation",roleId:"tender-requirements-extraction",status:"skipped",message:"评分项要求提取链异常,已降级为空模型(零响应检测自动跳过)",details:[`异常信息:${b instanceof Error?b.message:String(b)}`,"请检查 LLM 可用性与本地语义模型状态"]},{subtitle:"评分项要求提取",order:a.global.progressStages.length})),a.global.emitProgress(),bg(!1)}})(),a.planning.baseEffectiveChapters=(0,d9.w9)({chapters:a.understanding.bidStructureAudit.enrichedChapters,projectGraph:a.understanding.projectGraph,canonicalFacts:a.understanding.canonicalFacts}),a.prepare.template={...a.prepare.template,chapters:a.planning.baseEffectiveChapters},a.planning.plannedDocumentTask=(0,eC.NP)({template:a.prepare.template,context:a.understanding.agentWorkflow,title:a.prepare.template.name}),a.planning.plannedDocumentTask.catch(()=>void 0),a.understanding.chapterGraphMap=new Map,a.understanding.projectGraph){let b=new Set;for(let c of[...a.understanding.projectGraph.works,...a.understanding.projectGraph.methods,...a.understanding.projectGraph.resources,...a.understanding.projectGraph.schedule,...a.understanding.projectGraph.standards,...a.understanding.projectGraph.risks,...a.understanding.projectGraph.requirements,...a.understanding.projectGraph.siteConditions])(c.sourceFiles||[]).forEach(a=>b.add(a));for(let c of a.planning.baseEffectiveChapters){let d=[c.title,c.purpose,...c.sections||[],...c.requiredFacts||[],...c.queries||[]].join(" "),e=a=>a&&((0,e3.C1)(a,d,.18)||(0,e3.C1)(a,c.title,.12)),f=/概况|总体|部署|施工|进度|工期|质量|安全|资源|人材机|材料|机械|劳动力|风险|危大|绿色|环保/u.test(d),g=a.understanding.projectGraph.works.filter(a=>a.name&&(e(a.name)||f)),h=a.understanding.projectGraph.methods.filter(a=>a.name&&(e(a.name)||(a.applicableWorks||[]).some(e)||f)),i=a.understanding.projectGraph.resources.filter(a=>a.name&&(e(a.name)||/资源|人材机|材料|机械|劳动力/u.test(d)&&/material|equipment|labor/u.test(a.type))),j=a.understanding.projectGraph.gaps.filter(a=>!(0,e1.Ut)(a)&&(e(a)||f)),k=new Set;for(let a of g)(a.sourceFiles||[]).forEach(a=>k.add(a));for(let a of h)(a.sourceFiles||[]).forEach(a=>k.add(a));for(let a of i)(a.sourceFiles||[]).forEach(a=>k.add(a));0===k.size&&f&&[...b].forEach(a=>k.add(a)),a.understanding.chapterGraphMap.set(c.id,{graphFiles:k,graphBoqItems:i.map(a=>({name:a.name,quantity:a.quantity,unit:a.unit,sourceFiles:a.sourceFiles||[]})),graphWorks:g.map(a=>a.name),graphMethods:h.map(a=>a.name),gaps:j})}a.understanding.scopedIntelligence||((0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"file_understanding",roleId:"project-graph-match",status:"success",message:`图谱→章节映射完成:${a.understanding.projectGraph.works.length}工程 ${a.understanding.projectGraph.methods.length}工法 ${a.understanding.projectGraph.resources.length}资源 → ${a.planning.baseEffectiveChapters.length}章`,details:a.planning.baseEffectiveChapters.map(b=>{let c=a.understanding.chapterGraphMap.get(b.id);return`${(0,aq.GQ)(b.title)}:匹配文件${c?.graphFiles.size||0}个,BOQ项${c?.graphBoqItems.length||0}个`})},{subtitle:"图谱章节映射"})),a.global.emitProgress())}}var e6=c(44533),e7=c(29281),e8=c(25840),e9=c(6444),fa=c(85441),fb=c(56942);function fc(){return{parsed:!1,globalRequirements:[],chapterRequirements:[],factClues:[],styleRequirements:[],mandatoryBlockText:"",summary:""}}let fd=[(0,bc.y4)("你是用户生成要求的语义解析专家。"),'把用户的生成提示词完整解析为可逐条核验的结构化要求清单,不得遗漏用户的任何实质要求;不得把通用客套话(如"请帮我生成""谢谢")当作要求。\n要求必须逐条短句(每条 ≤60 字)、可核验(生成后能判断是否满足);一条要求只写一件事,复合要求必须拆分。\nglobalRequirements:全文级强制要求——写作内容、深度、覆盖面、表格、量化要求等不限定具体章节的要求;若要求明确指向某个章节,必须放入 chapterRequirements 而不是 globalRequirements。\nchapterRequirements:章节级要求——chapterTitle 必须原样取自给定的章节列表,不得编造不存在的章节名;同一章节的多条要求合并为一条记录。\nfactClues:用户提示词中显式给出的项目专属事实线索——含数值、单位、规格、型号、标准编号、日期、地点、规模、金额、目标的短句(如"一般路灯 100W 109套、120W 9套""计划工期 365 日历天""开挖深度 5.2m");要求类语句("必须写X")不算事实线索;线索必须原样保留数值与表述,不得改写或换算。\nstyleRequirements:写作风格与格式要求(语气、详略、表格偏好、禁止风格等),最多 8 条。\n只返回 JSON。'].join("\n");function fe(a,b){let c=String(a||"").trim().replace(/^\d+[.、))]\s*/u,"");return!c||c.length>b?"":c}async function ff(a){let b=(a.requirement||"").trim(),c=(a.chapterTitles||[]).filter(Boolean),d=fc();if(!b||b.length<4||b.length<=40&&!/[::]|\n/u.test(b))return d;try{let e=await (0,aA.bb)(fd,`章节列表(chapterRequirements 的 chapterTitle 必须原样取自以下列表):${c.join("、")||"(无)"}
107
+ ${(0,e.TP)("以上为系统提取的评分项要求内容:实质要求(奖项名称、数字参数、等级指标等)必须显性响应进正文;本段提示词文字本身(编号、括号说明等元话语)禁止复述进正文")}`}(a.planning.tenderRequirements),a.planning.projectContext=[a.planning.baseProjectContext,a.planning.tenderWritingRulesText].filter(Boolean).join("\n\n"),a.planning.chapterScopedProjectContext=b=>[a.planning.constructionOrgContext,a.planning.tenderWritingRulesText].filter(Boolean).join("\n\n"),a.planning.documentBudget=(0,h.tF)({requirement:a.global.input.requirement,promptTexts:a.prepare.promptTexts,template:a.prepare.template,chapters:a.planning.effectiveChapters,spec:a.prepare.documentSpec}),a.planning.plannedDocument=await a.planning.plannedDocumentTask,a.understanding.agentWorkflow.documentPlan=a.planning.plannedDocument.plan,a.understanding.agentWorkflow.nodes.push(a.planning.plannedDocument.node),(0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"validation",roleId:"agent-document-planner",status:"success",message:a.planning.plannedDocument.node.outputSummary||"Agent 文档规划完成",details:a.planning.plannedDocument.plan.chapters.map(a=>`${a.title}:${a.sections.length} 条细目`)},{subtitle:"Agent Document Planner",order:a.global.progressStages.length})),a.global.checkpointChapterOrderIds=a.planning.effectiveChapters.map(a=>a.id);let s=a.planning.documentBudget.targetChars||[...a.planning.documentBudget.chapterTargets.values()].reduce((a,b)=>a+b,0);a.planning.generationStrategy=(0,f.JP)({template:a.prepare.template,targetWords:s,requirement:a.global.input.requirement,materialFileCount:a.prepare.materialFilePaths.length,evidenceCount:a.understanding.allEvidence.length}),a.planning.generationBudget=(0,e1.C)({template:a.prepare.template,chapters:a.planning.effectiveChapters,targetWords:s,requirement:a.global.input.requirement,materialFileCount:a.prepare.materialFilePaths.length,evidenceCount:a.understanding.allEvidence.length,hasVeryLargeExplicitChapter:a.planning.effectiveChapters.some(a=>(a.sections||[]).filter(Boolean).length>=30),configuredChapterConcurrency:(0,dQ.z)().chapterConcurrency||0,strategy:a.planning.generationStrategy}),a.planning.generationDiagnostics=(0,f.Zk)(a.planning.generationStrategy),(a.understanding.earlyFactPool.factSanitize.truncated>0||a.understanding.earlyFactPool.factSanitize.dropped>0||a.understanding.earlyFactPool.factSanitize.repaired>0)&&(a.planning.generationDiagnostics.factSanitize={...a.understanding.earlyFactPool.factSanitize}),a.planning.planPhaseStartedAt=Date.now(),(0,aA.t5)(s),(0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"validation",roleId:"document-strategy",status:"success",message:`已自动选择 ${a.planning.generationStrategy.mode} 生成策略:章节审查 ${a.planning.generationStrategy.enableChapterReview?"启用":"跳过"}、全局审查 ${a.planning.generationStrategy.enableGlobalReview?`${a.planning.generationStrategy.globalReviewSamplingRate&&a.planning.generationStrategy.globalReviewSamplingRate<1?`抽检 ${Math.round((a.planning.generationStrategy.globalReviewSamplingRate??1)*100)}%`:"启用"}`:"跳过"}、最终质量审查 ${a.planning.generationStrategy.enableFinalQualityReview?"启用":"跳过"}、全文扩写 ${a.planning.generationStrategy.enableDocumentBudgetExpansion?"启用":"跳过"}`,details:a.planning.generationBudget.triggers},{subtitle:"后台自动策略"})),a.understanding.canonicalFacts.scopeConflicts.length>0&&(0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"validation",roleId:"scope-conflict-resolution",status:"success",message:`源级数据口径冲突已裁决(补疑/澄清修正文件权威最高):${a.understanding.canonicalFacts.scopeConflicts.map(a=>a.resolution?`${a.scope} → ${a.resolution}`:`${a.scope} → 待人工复核`).join(";")}`,details:a.understanding.canonicalFacts.scopeConflicts.flatMap(a=>a.values.map(a=>`来源「${a.sourceFile||"未知文件"}」取值 ${a.value}${a.unit}`))},{subtitle:"数据口径裁决"}));let t=a.prepare.hasExplicitOutline?"OUTLINE 章节":"模板章节";a.planning.sectionPlanningStage=(0,b8.X5)({type:"validation",roleId:"section-planning",status:"success",message:`小节规划:${d} 章由 LLM 基于${t}、项目资料理解和证据规划小节,${c} 章已由模板显式提供小节并跳过规划`,details:i.length?[...i]:void 0},{subtitle:"小节规划策略"});let u=a.prepare.hasExplicitOutline?`;识别到 OUTLINE 章节 ${a.prepare.explicitPromptChapters.length} 个`:";未识别到有效 OUTLINE,将使用模板章节",v=[...a.prepare.promptPlan.prompts.map(a=>`${a.category}|${a.roleId}|${a.id}|${a.name}|${a.bindingSource}|${a.content.length} 字符|hash=${a.contentHash}|${a.contentPreview}`),...a.prepare.promptPlan.unresolvedRoles.map(a=>`unresolved|${a}|项目角色配置中的提示词角色不存在`),...a.prepare.promptPlan.missingResourceRoles.map(a=>`missingResource|${a}|提示词角色未显式绑定资源`)];(0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"role_binding",roleId:a.prepare.projectRoleConfigId,status:"success",message:`已绑定项目资料 ${a.prepare.materialFilePaths.length} 份、${a.prepare.promptPlan.prompts.length} 个有效提示词;写作 ${a.prepare.promptPlan.writerPrompts.length}、章节 ${a.prepare.promptPlan.chapterPrompts.length}、抽取 ${a.prepare.promptPlan.extractionPrompts.length};已自动抽取运行时规则 ${a.prepare.runtimePromptRules.executionSummary.length} 条${u}`,details:[...v,...a.prepare.runtimePromptRules.executionSummary.map(a=>`runtimeRule|${a}`)]},{subtitle:a.prepare.projectRoleConfigName,roleName:a.prepare.projectRoleConfigName})),(0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"validation",roleId:"runtime-prompt-rules",status:"success",message:`运行时提示词规则已抽取:${a.prepare.runtimePromptRules.executionSummary.length} 条,版本 ${a.prepare.runtimePromptRules.sourceHash}`,details:a.prepare.runtimePromptRules.executionSummary.length?[...a.prepare.runtimePromptRules.executionSummary,`必需表格:${a.prepare.runtimePromptRules.requiredTables.join("、")||"无"}`,`必含关键词:${a.prepare.runtimePromptRules.requiredKeywords?.join("、")||"无"}`,`禁含内容:${a.prepare.runtimePromptRules.forbiddenPatterns?.join("、")||"无"}`]:["未从提示词中识别到额外硬规则,使用系统默认质量规则"]},{subtitle:"提示词规则执行"})),(0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"validation",roleId:"document-readiness",status:a.prepare.readiness.ready?"success":"failed",message:"生成准备度:绑定资料已就绪",details:a.prepare.readiness.diagnostics},{subtitle:"生成准备度检查"})),(0,b8.fx)(a.global.progressStages,a.planning.sectionPlanningStage),a.global.emitProgress()}var e4=c(14070),e5=c(70963);async function e6(a){if(a.understanding.evidenceScopePaths=new Set(a.prepare.materialFilePaths),a.understanding.fileRoleByPath=new Map([...a.prepare.kindByPath.entries()].map(([a,b])=>[a,(0,eE._W)(b)])),a.understanding.fileProcessingByPath=new Map([...a.prepare.processingByPath.entries()].map(([a,b])=>[a,b])),(0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"knowledge_retrieval",roleId:"knowledge-index",status:"running",message:"正在读取项目资料包索引",details:["使用上传阶段已完成的解析、切片和索引结果","不在生成流程中重新解析或入库","准备按资料类型召回章节证据"],progress:{current:1,total:3,label:"读取索引"}},{subtitle:"知识库检索",order:a.global.progressStages.length})),a.global.emitProgress(),a.understanding.project=await a.global.withProgressHeartbeat(()=>a.understanding.manager.getProject(a.prepare.projectRoot)),a.understanding.indexHealth=function(a,b){let c=new Set(b.filter(Boolean)),d=(a.listFiles?.()||[]).filter(a=>0===c.size||c.has(a.relativePath)),e=new Set(d.map(a=>a.relativePath)),f=[...c].filter(a=>!e.has(a)),g=d.filter(a=>0===Math.max(0,Math.ceil(Number(a.chunkCount)||0))).map(a=>a.relativePath),h=d.filter(a=>"error"===a.status).map(a=>a.relativePath),i="function"==typeof a.countPendingIndexJobs?a.countPendingIndexJobs():0,j="function"==typeof a.getVectorStatus?a.getVectorStatus():void 0,k=d.filter(a=>"error"!==a.status&&Math.max(0,Math.ceil(Number(a.chunkCount)||0))>0),l=k.map(a=>a.relativePath),m=k.reduce((a,b)=>a+Math.max(0,Math.ceil(Number(b.chunkCount)||0)),0),n=[...al("部分绑定文件未完成索引,已自动跳过",f),...al("部分绑定文件没有可用切片,已自动跳过",g),...al("部分绑定文件索引失败,已自动跳过",h)],o=c.size>0&&0===m?["所有绑定文件均无可用切片"]:[],p=[...n,...i>0?[`仍有 ${i} 个待索引任务,建议等待索引完成后生成`]:[],...j&&"ready"!==j.status?[`向量索引状态为 ${j.status},当前召回质量可能下降`]:[]];return{scopedRecords:d,usablePaths:l,missingFiles:f,emptyFiles:g,errorFiles:h,pendingJobs:i,vectorStatus:j,usableChunkCount:m,blockingIssues:o,warnings:p}}(a.understanding.project,[...a.understanding.evidenceScopePaths]),a.understanding.indexHealth.blockingIssues.length>0)throw Error(`生成前知识索引不可用:${a.understanding.indexHealth.blockingIssues.join(";")}`);a.understanding.availableEvidenceScopePaths=new Set(a.understanding.indexHealth.usablePaths),a.understanding.projectMaterialScope=(0,b7.Zq)(a.prepare.projectId,[...a.understanding.availableEvidenceScopePaths]),a.understanding.requestedEvidencePerChapter=an(a.understanding.project,[...a.understanding.availableEvidenceScopePaths],a.global.input.maxEvidencePerChapter);let b=a.understanding.indexHealth.pendingJobs>0||0===a.understanding.indexHealth.usableChunkCount;a.understanding.rolePoolRisk=df({totalChunks:Math.min(a.understanding.indexHealth.usableChunkCount,20*a.prepare.materialFilePaths.length),loadedChunks:Math.min(a.understanding.indexHealth.usableChunkCount,20*a.prepare.materialFilePaths.length),vectorReady:a.understanding.indexHealth.vectorStatus?"ready"===a.understanding.indexHealth.vectorStatus.status:void 0}),(0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"knowledge_retrieval",roleId:"knowledge-index",status:b?"failed":"success",message:`已读取知识索引:项目资料 ${a.understanding.indexHealth.scopedRecords.length} 份,可用切片 ${a.understanding.indexHealth.usableChunkCount} 条`,details:[`项目资料:${a.understanding.evidenceScopePaths.size} 份`,`可用证据文件:${a.understanding.availableEvidenceScopePaths.size} 份`,`向量状态:${a.understanding.indexHealth.vectorStatus?.status||"unknown"}`,...a.understanding.indexHealth.warnings,"后续将按招标正文/清单/图纸/补疑等资料类型召回"],progress:{current:3,total:3,label:"索引已就绪"}},{subtitle:"知识库检索",order:a.global.progressStages.length})),a.global.emitProgress(),(0,e.Te)(a.global.input.signal),a.understanding.allEvidence=[],a.understanding.retrievalCoverageReports=[],a.understanding.webResearchReport={enabled:a.prepare.webAccessConfig.enabled,queries:[],evidenceCount:0,filteredCount:0,chapters:[]},a.understanding.missingItems=[],a.understanding.failedChapterMessages=[],a.understanding.chapterGenerationStages=[],a.understanding.chapterDraftsByOrder=[],a.understanding.chapterGenerationStagesByOrder=[],a.understanding.knowledgeBaseStageIndex=-1;let c=new Map,d=new Map;a.understanding.getCachedFileDetail=b=>{let c=`${b}::full`;if(!d.has(c))try{d.set(c,a.understanding.project.getFileDetail?.(b))}catch{d.set(c,void 0)}return d.get(c)},a.understanding.searchWithCache=async(b,d,f,g)=>{let h=Z(g),i=(0,e.c6)({query:b,scopedFilePaths:d,limit:f,weights:h,generationMode:!0,reranker:!0}),j=c.get(i);if(j)return j;let k=await a.understanding.manager.search(a.prepare.projectRoot,b,{scope:"project",filters:{filePaths:d},limit:f,weights:h,generationMode:!0,disableReranker:!1}).catch(()=>null),l=k?.results||[];return c.set(i,l),l};let f={stage:(0,b8.X5)({type:"file_understanding",roleId:"project-understanding",status:"running",message:`正在理解项目资料:${a.prepare.projectMaterialProfile.files.length} 份资料,${Object.values(a.prepare.projectMaterialProfile.groups).filter(a=>a.length>0).length} 类资料类型`,progress:{current:1,total:3,label:"资料理解"}},{subtitle:"项目资料理解",order:a.global.progressStages.length})};(0,b8.fx)(a.global.progressStages,f.stage),a.global.emitProgress();let h=(0,b7.Su)(await Y({manager:a.understanding.manager,project:a.understanding.project,projectRoot:a.prepare.projectRoot,scopedFilePaths:[...a.understanding.evidenceScopePaths].filter(Boolean).sort(),fileRoleByPath:a.understanding.fileRoleByPath,fileProcessingByPath:a.understanding.fileProcessingByPath,signal:a.global.input.signal}),a.understanding.projectMaterialScope);(0,b7.U2)(h,a.understanding.projectMaterialScope,"project-basic-evidence"),h.length>0&&(a.understanding.allEvidence.push(...h),(0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"knowledge_retrieval",roleId:"project-basic-evidence",status:"success",message:`已锁定项目基础事实证据 ${h.length} 条`,details:h.slice(0,8).map(a=>`${p.basename(a.filePath)}|${a.sectionTitle||"正文片段"}|score=${a.score.toFixed(2)}`)},{subtitle:"基础事实召回",order:a.global.progressStages.length})),a.global.emitProgress());let{safe:i,excluded:j}=await (0,bf.a0)(a.understanding.allEvidence);a.understanding.writerEvidence=i,a.understanding.bidProcedureJudge=await (0,bf.M8)(),j.length>0&&((0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"knowledge_retrieval",roleId:"evidence-content-safety",status:"success",message:`证据内容安全过滤:${j.length} 条投标程序/评标纪律类证据已从写作链断开(系统侧提取通道不受影响)`,details:j.slice(0,6).map(a=>`${p.basename(a.filePath)}|${a.sectionTitle||"正文片段"}`)},{subtitle:"证据内容安全",order:a.global.progressStages.length})),a.global.emitProgress()),a.understanding.safeProjectBasicEvidence=h.filter(a=>!j.includes(a)),a.understanding.excludedEvidenceKeys=new Set(j.map(bf.hM)),a.understanding.earlyFactPool=(0,n.d6)({evidence:a.understanding.writerEvidence,template:a.prepare.template,spec:a.prepare.documentSpec,profile:a.prepare.domainProfile,scope:a.understanding.projectMaterialScope});let k=a.understanding.earlyFactPool.localFacts,l=[...k,...a.understanding.earlyFactPool.projectBasicFacts,...a.understanding.earlyFactPool.preciseFacts];a.understanding.scopedIntelligence=(0,e2.hp)({projectRoot:a.prepare.projectRoot,template:a.prepare.template,requirement:a.global.input.requirement,materialScope:a.prepare.materialScope});let m=[...(0,e.lX)(a.understanding.scopedIntelligence?.facts||[]),...l,...A(a.understanding.writerEvidence)],q=function(a,b){if(a.length<=1)return a;let c=H(a,(0,r.bC)(b)),d=K(a,c),f=/项目名称|工程名称|招标人|建设单位|建设地点|质量标准|合同价格形式|绿色建筑等级|投标有效期|质保期|劳动力高峰|装配率|支护形式|创优奖惩|结构形式|总层数|建筑层数|建筑面积|建设规模|计划工期|合同工期|总工期/u,g=a=>f.test(`${a.key||""}${a.fieldName||""}${a.fieldId||""}`),h=a=>a.fieldId||a.key||a.fieldName||"",i=new Map;for(let a of d){if(!g(a))continue;let b=h(a),c=i.get(b);if(!c){i.set(b,a);continue}let d=a=>({priority:G(a.sourceFile,a.roleId),normalized:(0,n.de)((0,e.lG)(a.value))}),f=d(c),j=d(a);(j.priority>f.priority||j.priority===f.priority&&j.normalized!==f.normalized&&j.normalized.length<f.normalized.length)&&i.set(b,a)}if(0===i.size)return d;let j=new Set;for(let a of d)g(a)&&i.get(h(a))!==a&&j.add(a);return 0===j.size?d:d.filter(a=>!j.has(a))}(m,a.prepare.projectRoot);for(let b of(a.understanding.preliminaryFactsModel=await (0,n.d7)(q,a.understanding.earlyFactPool.structuredTables,a.understanding.missingItems,a.prepare.documentSpec,a.prepare.domainProfile),a.understanding.agentWorkflow=(0,dh.Qu)({template:a.prepare.template,requirement:a.global.input.requirement,projectRoot:a.prepare.projectRoot,facts:q,projectGraph:a.understanding.scopedIntelligence?.projectGraph,projectGraphSource:a.understanding.scopedIntelligence?"project-intelligence":void 0,materialScope:a.prepare.materialScope}),(0,dh.SU)(a.understanding.agentWorkflow)))(0,b8.fx)(a.global.progressStages,b);if(a.understanding.scopedIntelligence&&(0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"file_understanding",roleId:"project-intelligence-cache",status:"success",message:`已复用入库后项目理解资产与绑定 scope 快照:${a.understanding.scopedIntelligence.files.length} 份绑定资料`,details:[`项目级缓存时间:${new Date(a.understanding.scopedIntelligence.cache.createdAt).toLocaleString()}`,`scope 快照:${a.understanding.scopedIntelligence.scopeSnapshot.scopeHash.slice(0,12)}`,`复用预计算事实:${a.understanding.scopedIntelligence.facts.length} 条`,`复用预计算项目图谱:${a.understanding.scopedIntelligence.projectGraph.works.length}工程/${a.understanding.scopedIntelligence.projectGraph.methods.length}工法/${a.understanding.scopedIntelligence.projectGraph.resources.length}资源`,`复用施工组织设计专项图谱:${a.understanding.scopedIntelligence.constructionOrganizationGraph.workPackages.length} 个工作包/${a.understanding.scopedIntelligence.constructionOrganizationGraph.controlMatrix.length} 条控制矩阵`,`图谱来源:${a.understanding.scopedIntelligence.cache.projectGraphMessage}`,`章节意图证据覆盖:${Object.keys(a.understanding.scopedIntelligence.evidenceByChapterId||{}).length}/${a.prepare.template.chapters.length} 章`,`排除正文不适用资料:${a.understanding.scopedIntelligence.files.filter(a=>!a.usableForBody).length} 份`]},{subtitle:"项目理解缓存 / Scope 快照"})),a.global.emitProgress(),a.understanding.projectGraph=a.understanding.agentWorkflow.baseProjectGraph,!a.understanding.scopedIntelligence){(0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"file_understanding",roleId:"project-graph",status:"running",message:`正在临时构建完整项目图谱:${a.understanding.allEvidence.length} 条证据 → LLM 结构化提取`,details:["缓存缺失或版本过期,建议重新构建项目理解缓存;本次生成将临时构建完整项目图谱。","提取:工程内容、施工方法、材料设备、技术标准、重点难点"],progress:{current:2,total:3,label:"项目图谱"}},{subtitle:"项目资料图谱分析",order:a.global.progressStages.length})),a.global.emitProgress();let b=await a.global.withProgressHeartbeat(()=>(0,e5.i)({evidence:a.understanding.writerEvidence,signal:a.global.input.signal,projectRoot:a.prepare.projectRoot,requirement:a.global.input.requirement,templateId:a.prepare.template.id}),a.global.progressStages);if(!b.graph)throw Error(`完整项目图谱构建失败:${b.stage.message||b.stage.status}`);a.understanding.projectGraph=b.graph,(0,b8.fx)(a.global.progressStages,b.stage),a.global.emitProgress()}a.understanding.projectGraph&&(a.prepare.projectUnderstanding=(0,eE._n)(a.prepare.template,a.prepare.projectMaterialProfile,a.understanding.projectGraph)),(0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"file_understanding",roleId:"project-understanding",status:"success",message:`已完成项目资料理解:${a.prepare.projectMaterialProfile.files.length} 份资料、${Object.values(a.prepare.projectMaterialProfile.groups).filter(a=>a.length>0).length} 类资料类型${a.understanding.projectGraph?`、图谱增强 ${a.understanding.projectGraph.works.length} 项工程内容`:""}`,details:[...a.prepare.projectUnderstanding.chapterPlans.slice(0,10).map(a=>`${a.chapterTitle}:必用 ${a.mustUseMaterialKinds.length} 类资料、必覆盖 ${a.mustCover.length} 项`),...a.prepare.projectUnderstanding.profile.warnings.length?[`资料风险:${a.prepare.projectUnderstanding.profile.warnings.slice(0,3).join(";")}`]:[]]},{subtitle:"项目资料理解",order:a.global.progressStages.length})),a.global.emitProgress(),a.understanding.canonicalFacts=L({facts:m,projectGraph:a.understanding.projectGraph,requiredKeys:s.map(a=>a.key),projectRoot:a.prepare.projectRoot,requirement:a.global.input.requirement,templateId:a.prepare.template.id}),a.understanding.preliminaryFactsModel.canonical=a.understanding.canonicalFacts;let t=(0,aq.effectiveTemplateChapters)(a.prepare.template,a.prepare.documentSpec,{preserveExplicitOutline:a.prepare.hasExplicitOutline}),u=(0,eH.dK)({template:a.prepare.template,chapters:t,requirement:a.global.input.requirement}).chapters,v=a.understanding.allEvidence.filter(a=>/评审|评分标准|评分办法|详细评审/u.test(`${a.sectionTitle||""}${a.content}`)).map(a=>a.content);a.understanding.evaluationItems=(0,eB.tL)(v),v.length>0&&0===a.understanding.evaluationItems.length&&(0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"validation",roleId:"bid-structure-audit",status:"skipped",message:"评审章节证据存在但未提取到评分条目标题:评分标准编号条目提取为空,承接审计将静默通过",details:["请检查招标文件评标办法章节编号格式;评分项要求(创优目标/绿色等级/禁编日期)由评分项要求提取通道覆盖"]},{subtitle:"评标结构校验",order:a.global.progressStages.length}));let w=await (0,be.Mv)(a.understanding.evaluationItems.map(a=>a.title),u.map(eB.Yx));if(a.understanding.bidStructureAudit=(0,eB.KX)({template:a.prepare.template,chapters:u,requirement:a.global.input.requirement,evaluationItems:a.understanding.evaluationItems,semanticSimilarity:w}),a.understanding.tenderRequirementsTask=(async()=>{try{var b;let c,d=[];for(let b of[...a.understanding.evidenceScopePaths].sort()){if(!/招标|补疑|答疑|评标/u.test(b))continue;let c=a.understanding.getCachedFileDetail(b);if(c?.chunks?.length)for(let e of c.chunks)d.push({chapterId:"tender-requirements",filePath:c.file?.relativePath||b,score:1,content:e.content||"",roleId:a.understanding.fileRoleByPath.get(b),processingType:a.understanding.fileProcessingByPath.get(b),sectionTitle:e.sectionTitle,source:"pinned-evidence"})}let f=d.length>0?await bA(d):(0,g.QR)([...a.understanding.allEvidence.filter(a=>/招标|评标|投标须知|专用合同|合同条款|技术标准|技术要求/u.test(`${a.filePath||""}${a.sectionTitle||""}`)),...a.understanding.allEvidence.filter(a=>!/招标|评标|投标须知|专用合同|合同条款|技术标准|技术要求/u.test(`${a.filePath||""}${a.sectionTitle||""}`))],{preservePinned:!0});if(d.length>0){let b=d.reduce((a,b)=>a+(b.content?.length||0),0),c=f.reduce((a,b)=>a+(b.content?.length||0),0);(0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"validation",roleId:"tender-requirement-preselect",status:"success",message:`评分项要求有用数据预筛:${d.length} → ${f.length} 条切片(${Math.round(c/Math.max(1,b)*100)}% 字符量)`,details:["投标程序/清单/目录/格式类切片已从主提取输入剔除(义务词形+语义命中双通道保留)","全量切片仍作必提条款窄通道召回池,兜底不失效"]},{subtitle:"评分项要求提取\xb7预筛",order:a.global.progressStages.length})),a.global.emitProgress()}let h="0"!==process.env.DOCUMENT_EXTRACTION_CACHE?(b={collectionEvidence:d,preselectEvidence:f},(0,e.c6)({version:"tender-requirements-extraction-v3",collection:bH(b.collectionEvidence),preselectInput:bH(b.preselectEvidence)})):void 0,i=h?function(a,b){try{let c=p.join(bG(a),`tender-requirements-${b}.json`),d=JSON.parse(o.readFileSync(c,"utf8"));if(!bF(d)||bC(d))return;return d}catch{return}}(a.prepare.projectRoot,h):void 0;if(i)c=i,(0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"validation",roleId:"tender-requirements-cache",status:"success",message:"复用上次提取结果(招标文件与预筛输入哈希命中,跳过主提取/窄通道 LLM)",details:bU(c)},{subtitle:"评分项要求提取\xb7缓存复用",order:a.global.progressStages.length})),a.global.emitProgress();else{c=await a.global.withProgressHeartbeat(()=>bl(f,{signal:a.global.input.signal})),!bF(c)&&f.length>0&&(c=await a.global.withProgressHeartbeat(()=>bl(f,{signal:a.global.input.signal})));let b=await bB(d),e=bs(c);if(b.length>0&&e.length>0){let d=await a.global.withProgressHeartbeat(()=>bl(b,{signal:a.global.input.signal}));bF(d)&&(c=bD(c,d),(0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"validation",roleId:"tender-mandatory-extraction",status:"success",message:"必提条款窄通道补提完成(主提取漏提字段已补齐)",details:bU(d)},{subtitle:"评分项要求提取\xb7必提补提",order:a.global.progressStages.length})),a.global.emitProgress())}let g=[];if(bt(c).length>0&&d.length>0){let b=await a.global.withProgressHeartbeat(()=>bw(c,d,{signal:a.global.input.signal}));c=b.model,g=b.stillGaps;let e=b.noEvidenceGaps,f=b.stillGaps;0===b.stillGaps.length&&((0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"validation",roleId:"tender-field-gap-extraction",status:"success",message:"评分项要求字段定向补提完成(字段级聚焦提取,全部评分项要求字段已提取)",details:bU(c)},{subtitle:"评分项要求提取\xb7字段补提",order:a.global.progressStages.length})),a.global.emitProgress());let h=a=>bq.includes(a);if(f.length>0){let b=f.filter(h),c=f.filter(a=>!h(a)),d=[b.length>0?`必提字段 ${b.map(a=>br(a)).join("、")}`:"",c.length>0?`常规字段 ${c.map(a=>br(a)).join("、")}`:""].filter(Boolean);(0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"validation",roleId:"tender-field-gap-missing",status:"skipped",message:`字段定向补提后仍缺失:${d.join(";")}(条款窗口证据存在但 LLM 提取失败)`,details:["请检查 LLM 可用性与输出质量;正文将无法显性响应上述评分项要求"]},{subtitle:"评分项要求提取\xb7字段缺口",order:a.global.progressStages.length})),a.global.emitProgress()}if(e.length>0){let b=e.filter(h),c=e.filter(a=>!h(a)),d=[b.length>0?`必提字段 ${b.map(a=>br(a)).join("、")}`:"",c.length>0?`常规字段 ${c.map(a=>br(a)).join("、")}`:""].filter(Boolean);(0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"validation",roleId:"tender-field-gap-no-evidence",status:"skipped",message:`${d.join(";")}:招标资料中未找到对应条款或条款值为「无」(判定为无此要求,非漏提)`,details:["若项目实际存在该要求,请检查招标文件相关章节切片完整性"]},{subtitle:"评分项要求提取\xb7字段缺口",order:a.global.progressStages.length})),a.global.emitProgress()}}h&&0===g.length&&function(a,b,c){if(!(!c||!bF(c)||bC(c)))try{o.writeFileSync(p.join(bG(a),`tender-requirements-${b}.json`),JSON.stringify(c,null,2))}catch{}}(a.prepare.projectRoot,h,c)}return bF(c)?((0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"validation",roleId:"tender-requirements-extraction",status:"success",message:"招标文件评分项要求结构化提取完成",details:bU(c)},{subtitle:"评分项要求提取",order:a.global.progressStages.length})),a.global.emitProgress()):f.length>0&&((0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"validation",roleId:"tender-requirements-extraction",status:"skipped",message:"评分项要求提取未获得有效结果(模型不可用或资料中无要求),零响应检测自动跳过",details:[]},{subtitle:"评分项要求提取",order:a.global.progressStages.length})),a.global.emitProgress()),c}catch(b){return(0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"validation",roleId:"tender-requirements-extraction",status:"skipped",message:"评分项要求提取链异常,已降级为空模型(零响应检测自动跳过)",details:[`异常信息:${b instanceof Error?b.message:String(b)}`,"请检查 LLM 可用性与本地语义模型状态"]},{subtitle:"评分项要求提取",order:a.global.progressStages.length})),a.global.emitProgress(),bg(!1)}})(),a.planning.baseEffectiveChapters=(0,ea.w9)({chapters:a.understanding.bidStructureAudit.enrichedChapters,projectGraph:a.understanding.projectGraph,canonicalFacts:a.understanding.canonicalFacts}),a.prepare.template={...a.prepare.template,chapters:a.planning.baseEffectiveChapters},a.planning.plannedDocumentTask=(0,eD.NP)({template:a.prepare.template,context:a.understanding.agentWorkflow,title:a.prepare.template.name}),a.planning.plannedDocumentTask.catch(()=>void 0),a.understanding.chapterGraphMap=new Map,a.understanding.projectGraph){let b=new Set;for(let c of[...a.understanding.projectGraph.works,...a.understanding.projectGraph.methods,...a.understanding.projectGraph.resources,...a.understanding.projectGraph.schedule,...a.understanding.projectGraph.standards,...a.understanding.projectGraph.risks,...a.understanding.projectGraph.requirements,...a.understanding.projectGraph.siteConditions])(c.sourceFiles||[]).forEach(a=>b.add(a));for(let c of a.planning.baseEffectiveChapters){let d=[c.title,c.purpose,...c.sections||[],...c.requiredFacts||[],...c.queries||[]].join(" "),e=a=>a&&((0,e4.C1)(a,d,.18)||(0,e4.C1)(a,c.title,.12)),f=/概况|总体|部署|施工|进度|工期|质量|安全|资源|人材机|材料|机械|劳动力|风险|危大|绿色|环保/u.test(d),g=a.understanding.projectGraph.works.filter(a=>a.name&&(e(a.name)||f)),h=a.understanding.projectGraph.methods.filter(a=>a.name&&(e(a.name)||(a.applicableWorks||[]).some(e)||f)),i=a.understanding.projectGraph.resources.filter(a=>a.name&&(e(a.name)||/资源|人材机|材料|机械|劳动力/u.test(d)&&/material|equipment|labor/u.test(a.type))),j=a.understanding.projectGraph.gaps.filter(a=>!(0,e2.Ut)(a)&&(e(a)||f)),k=new Set;for(let a of g)(a.sourceFiles||[]).forEach(a=>k.add(a));for(let a of h)(a.sourceFiles||[]).forEach(a=>k.add(a));for(let a of i)(a.sourceFiles||[]).forEach(a=>k.add(a));0===k.size&&f&&[...b].forEach(a=>k.add(a)),a.understanding.chapterGraphMap.set(c.id,{graphFiles:k,graphBoqItems:i.map(a=>({name:a.name,quantity:a.quantity,unit:a.unit,sourceFiles:a.sourceFiles||[]})),graphWorks:g.map(a=>a.name),graphMethods:h.map(a=>a.name),gaps:j})}a.understanding.scopedIntelligence||((0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"file_understanding",roleId:"project-graph-match",status:"success",message:`图谱→章节映射完成:${a.understanding.projectGraph.works.length}工程 ${a.understanding.projectGraph.methods.length}工法 ${a.understanding.projectGraph.resources.length}资源 → ${a.planning.baseEffectiveChapters.length}章`,details:a.planning.baseEffectiveChapters.map(b=>{let c=a.understanding.chapterGraphMap.get(b.id);return`${(0,aq.GQ)(b.title)}:匹配文件${c?.graphFiles.size||0}个,BOQ项${c?.graphBoqItems.length||0}个`})},{subtitle:"图谱章节映射"})),a.global.emitProgress())}}var e7=c(44533),e8=c(29281),e9=c(25840),fa=c(6444),fb=c(85441),fc=c(56942);function fd(){return{parsed:!1,globalRequirements:[],chapterRequirements:[],factClues:[],styleRequirements:[],mandatoryBlockText:"",summary:""}}let fe=[(0,bc.y4)("你是用户生成要求的语义解析专家。"),'把用户的生成提示词完整解析为可逐条核验的结构化要求清单,不得遗漏用户的任何实质要求;不得把通用客套话(如"请帮我生成""谢谢")当作要求。\n要求必须逐条短句(每条 ≤60 字)、可核验(生成后能判断是否满足);一条要求只写一件事,复合要求必须拆分。\nglobalRequirements:全文级强制要求——写作内容、深度、覆盖面、表格、量化要求等不限定具体章节的要求;若要求明确指向某个章节,必须放入 chapterRequirements 而不是 globalRequirements。\nchapterRequirements:章节级要求——chapterTitle 必须原样取自给定的章节列表,不得编造不存在的章节名;同一章节的多条要求合并为一条记录。\nfactClues:用户提示词中显式给出的项目专属事实线索——含数值、单位、规格、型号、标准编号、日期、地点、规模、金额、目标的短句(如"一般路灯 100W 109套、120W 9套""计划工期 365 日历天""开挖深度 5.2m");要求类语句("必须写X")不算事实线索;线索必须原样保留数值与表述,不得改写或换算。\nstyleRequirements:写作风格与格式要求(语气、详略、表格偏好、禁止风格等),最多 8 条。\n只返回 JSON。'].join("\n");function ff(a,b){let c=String(a||"").trim().replace(/^\d+[.、))]\s*/u,"");return!c||c.length>b?"":c}async function fg(a){let b=(a.requirement||"").trim(),c=(a.chapterTitles||[]).filter(Boolean),d=fd();if(!b||b.length<4||b.length<=40&&!/[::]|\n/u.test(b))return d;try{let e=await (0,aA.bb)(fe,`章节列表(chapterRequirements 的 chapterTitle 必须原样取自以下列表):${c.join("、")||"(无)"}
108
108
 
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=>fe("string"==typeof a?a:a?.text,60)).filter(Boolean))].slice(0,24),g=[...new Set((e?.factClues||[]).map(a=>fe("string"==typeof a?a:a?.text,120)).filter(Boolean))].slice(0,24),h=[...new Set((e?.styleRequirements||[]).map(a=>fe("string"==typeof a?a:a?.text,60)).filter(Boolean))].slice(0,8),i=(e?.chapterRequirements||[]).map(a=>({chapterTitle:fe(a?.chapterTitle,60),requirements:[...new Set((a?.requirements||[]).map(a=>fe("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 fg={"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 fh(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=fg[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 fi(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,e6.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,e6.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,e8.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,e6.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,dg.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,e6.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,eD.W9)(a.prepare.projectRoot,a.prepare.template,{requirement:a.global.input.requirement}),a.prepare.projectUnderstanding=(0,eD._n)(a.prepare.template,a.prepare.projectMaterialProfile);let{kindByPath:g,processingByPath:h}=(0,eD.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,fa.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,e9.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,fb.$)({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 fh(a.prepare.projectRoot);b&&(a.prepare.generationWritingConstraintsPrompt=`${a.prepare.generationWritingConstraintsPrompt}
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,fa.F)(a.prepare.projectMaterialSummary,{publicSafe:!0}),(0,e9.N)(a.prepare.documentSpec,j.sourceHash,{publicSafe:!0}),(0,fb.R)(a.prepare.readiness,{publicSafe:!0})].filter(Boolean).join("\n\n"),a.prepare.diagnosticControlPrompt=[a.prepare.projectUnderstanding.prompt,(0,fa.F)(a.prepare.projectMaterialSummary),(0,e9.N)(a.prepare.documentSpec,j.sourceHash),(0,fb.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,e7.I)().load().webAccess||{enabled:!1,allowProjectFacts:!1,maxQueriesPerChapter:2,maxResultsPerQuery:3,trustedDomains:[]},a.prepare.runtimePromptRules=(0,d8.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,d8.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(()=>ff({requirement:a.global.input.requirement,chapterTitles:a.prepare.template.chapters.map(a=>a.title),signal:a.global.input.signal,diagnostics:void 0}).catch(()=>fc())),a.prepare.requirementSemantics.mandatoryBlockText&&(a.prepare.runtimeRulesText=`${a.prepare.runtimeRulesText}
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}
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,`生成前规划章节结构:
116
- ${(0,bc.CK)(a.prepare.template)}`,k||l].filter(Boolean).join("\n\n"),a.prepare.promptDocumentRules=a.prepare.runtimePromptRules,a.prepare.factExtractionPromptTexts=[a.prepare.diagnosticControlPrompt,a.prepare.runtimeRulesText,(0,f.fC)([...a.prepare.promptPlan.extractionPrompts,...a.prepare.promptPlan.referencePrompts])].filter(Boolean).join("\n\n"),a.prepare.reviewPromptTexts=[a.prepare.generationControlPrompt,a.prepare.runtimeRulesText,(0,f.fC)([...a.prepare.promptPlan.writerPrompts,...a.prepare.promptPlan.chapterPrompts,...a.prepare.promptPlan.formattingPrompts])].filter(Boolean).join("\n\n"),a.prepare.repairPromptTexts=[a.prepare.generationControlPrompt,a.prepare.runtimeRulesText,(0,f.fC)(a.prepare.promptPlan.formattingPrompts)].filter(Boolean).join("\n\n"),(0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"validation",roleId:"document-preparation",status:"success",message:`模板规范与项目资料理解完成,识别 ${a.prepare.materialFilePaths.length} 份项目资料`,details:[`提示词绑定:${a.prepare.promptBindings.length} 个`,`项目资料包:${a.prepare.projectMaterialProfile.materialRoots.join("、")||"当前知识库"}`,a.prepare.hasExplicitOutline?`识别 OUTLINE 章节:${a.prepare.explicitPromptChapters.length} 个`:"未识别显式 OUTLINE,使用模板章节"],progress:{current:3,total:3,label:"准备完成"}},{subtitle:"生成准备",order:a.global.progressStages.length})),a.global.emitProgress()}async function fj(a){let b=(0,d.QJ)(a.templateId);if(!b)throw Error("Document template not found");let c=b.chapters.find(b=>b.id===a.chapterId);if(!c)throw Error("Document chapter not found");let e=p.resolve(a.projectRoot||(0,e6.aY)());if(!e)throw Error("No knowledge base project found");let h=(0,e6.Qh)(),i=(0,eD.Hh)(e,b,{requirement:a.requirement}),j=(0,eD.W9)(e,b,{requirement:a.requirement}),{kindByPath:k,processingByPath:l}=(0,eD.Hz)(j),m=new Set(i),n=(0,b7.Zq)(e,i),o=new Map([...k.entries()].map(([a,b])=>[a,(0,eD._W)(b)])),q=new Map([...l.entries()].map(([a,b])=>[a,b])),r=an(await h.getProject(e),[...m],a.maxEvidencePerChapter),s=[],t=[...m].filter(Boolean).sort(),u=ac(c,c.queries,[]),v=function(a,b){let c=Number(process.env.DOCUMENT_MAX_QUERIES_PER_CHAPTER);return Math.max(2,Math.min(9,Math.floor(Number.isFinite(c)&&c>0?c:4)+ +((a.sections||[]).length>=6||a.requiredFacts.length>=8)+Math.min(2,b.length)))}(c,[]);for(let a of u.slice(0,v)){let b=await h.search(e,a,{scope:"project",filters:{filePaths:t},limit:Math.min(r,12),weights:{keyword:.4,vector:.45,rewrite:.75,hybridBonus:.15},generationMode:!0});s.push(...b.results.filter(a=>(0,f.Tz)(e,a.filePath,m)).map(a=>({chapterId:c.id,filePath:a.filePath,score:a.score,content:a.content,roleId:o.get(a.filePath),processingType:q.get(a.filePath),sectionTitle:a.sectionTitle,source:a.source})))}let w=ab(c,(0,b7.Su)(s.filter(a=>(0,f.Tz)(e,a.filePath,m)),n),{maxItems:function(a,b,c=!1){return Math.max(12,Math.min(c?58:26,a+10+4*((b.sections||[]).length>=6||b.requiredFacts.length>=8)+18*!!c))}(r,c),maxChars:16e3,preservePinned:!0});(0,b7.U2)(w,n,`regenerate:${c.id}`);let x=a.currentMarkdown||"",y=new Set(a.existingFacts??[]),z=c.requiredFacts.filter(a=>!y.has(a)&&!w.some(b=>(0,dd.Lk)(b,a)));if(0===w.length)throw Error(`${(0,aq.GQ)(c.title)} 缺少可支撑正文的项目资料证据`);let A=[`## ${c.title}`,"",a.requirement?`> 生成要求:${a.requirement}`:"",x?`> 当前文档上下文摘要:${x.replace(/\s+/gu," ")}`:"",`本章依据已锁定项目资料围绕“${c.purpose}”重新整理,并与当前文档上下文保持一致。`,"","### 资料依据",...w.map(g.OF)].filter(Boolean).join("\n");return{id:c.id,title:c.title,content:A,evidence:w,missingFacts:z}}async function fk(a){(0,e.Te)(a.signal);let b={global:{input:a},prepare:{},understanding:{},planning:{},blueprint:{chapterConcurrency:0,reviewConcurrency:0,reviewSemaphore:new e.jf(1),reviewTaskPool:[],basicFactSearchResults:[],integratedBlueprint:void 0,blueprintActive:!1,blueprintDataText:"",billFactLock:void 0},chapterLoop:{draftPhaseStartedAt:0,chapterDraftsFinal:[],globalReviewPhaseStartedAt:0}};await fi(b),await e5(b),await e2(b),await eF(b),await eE(b);let c=[],d=!1;if(b.planning.generationStrategy.enableGlobalReview){let a=await eg({globalReviewSamplingRate:b.planning.generationStrategy.globalReviewSamplingRate,chapterDraftsFinal:b.chapterLoop.chapterDraftsFinal,template:b.prepare.template,reviewPromptTexts:b.prepare.reviewPromptTexts,repairPromptTexts:b.prepare.repairPromptTexts,requirement:b.global.input.requirement,signal:b.global.input.signal,projectContext:b.planning.projectContext,generationDiagnostics:b.planning.generationDiagnostics,preliminaryFactsModel:b.understanding.preliminaryFactsModel,scopeConflicts:b.understanding.canonicalFacts.scopeConflicts,progressStages:b.global.progressStages,emitProgress:b.global.emitProgress,withProgressHeartbeat:b.global.withProgressHeartbeat,blueprintData:b.blueprint.integratedBlueprint?.validation.passed?b.blueprint.integratedBlueprint.data:void 0});c=a.issues,d=a.dedupRan}else await ee({chapterDraftsFinal:b.chapterLoop.chapterDraftsFinal,template:b.prepare.template,repairPromptTexts:b.prepare.repairPromptTexts,projectContext:b.planning.projectContext,requirement:b.global.input.requirement,signal:b.global.input.signal,generationDiagnostics:b.planning.generationDiagnostics,progressStages:b.global.progressStages,emitProgress:b.global.emitProgress,withProgressHeartbeat:b.global.withProgressHeartbeat});await ef({chapterDraftsFinal:b.chapterLoop.chapterDraftsFinal,template:b.prepare.template,repairPromptTexts:b.prepare.repairPromptTexts,requirement:b.global.input.requirement,signal:b.global.input.signal,generationDiagnostics:b.planning.generationDiagnostics,progressStages:b.global.progressStages,emitProgress:b.global.emitProgress,withProgressHeartbeat:b.global.withProgressHeartbeat});let{tableFixApplied:g}=await ec({effectiveChapters:b.planning.effectiveChapters,chapterDraftsFinal:b.chapterLoop.chapterDraftsFinal,template:b.prepare.template,repairPromptTexts:b.prepare.repairPromptTexts,requirement:b.global.input.requirement,signal:b.global.input.signal,generationDiagnostics:b.planning.generationDiagnostics,progressStages:b.global.progressStages,emitProgress:b.global.emitProgress,withProgressHeartbeat:b.global.withProgressHeartbeat});return(g||!d)&&(c=await eb({chapterDraftsFinal:b.chapterLoop.chapterDraftsFinal,globalConsistencyIssues:c,progressStages:b.global.progressStages,emitProgress:b.global.emitProgress})),!function(a){let{generationDiagnostics:b,progressStages:c,chapterDraftsFinal:d,emitProgress:e}=a,f=b.evidence,g=b.llm,h=(0,be.Bd)();b.semantic=h;let i=h.embedCacheHits+h.embedCacheMisses,j=i>0?Math.round(1e4*h.embedCacheHits/i)/100:null,k=(g.promptCacheHitTokens||0)+(g.promptCacheMissTokens||0),l=k>0?Math.round(1e4*(g.promptCacheHitTokens||0)/k)/100:null,m=g.layerChars,n=m?m.l0+m.l1+m.l2+m.l3:0,o=a=>n>0?Math.round(1e4*a/n)/100:0,p=m&&n>0?`上下文分层:L0 system 恒定 ${m.l0} 字(${o(m.l0)}%)、L1 任务级 ${m.l1} 字(${o(m.l1)}%)、L2 章级 ${m.l2} 字(${o(m.l2)}%)、L3 小节级 ${m.l3} 字(${o(m.l3)}%)`:"上下文分层:本次生成未采集 L0-L3 分层统计";(0,b8.fx)(c,(0,b8.X5)({type:"validation",roleId:"budget-trim-report",status:"success",message:`预算裁剪报告:证据 ${f.raw} 条 → 采用 ${f.used} 条(噪声过滤 ${f.filteredNoise} 条、预算兜底裁剪 ${f.budgetDropped} 条),证据上下文 ${f.contextChars} 字`,details:[`证据质量:平均噪声分 ${f.avgNoiseScore},平均事实密度 ${f.avgFactDensity}`,`证据分层(T0 关键事实/T1 高相关片段/T2 目录索引):T0 注入 ${f.t0Chars||0} 字、T1 注入 ${f.t1Chars||0} 字、T2 索引 ${f.t2Lines||0} 行、目录省略 ${f.omittedChars||0} 字——A2 块级增量压缩后 T1 应显著低于 T0+T2`,`检索:${f.searchQueries} 组查询,耗时 ${Math.round(f.searchMs/1e3)} 秒`,`LLM:${g.calls} 次调用,失败 ${g.failures} 次,重试 ${g.retries} 次,schema 校验失败 ${g.schemaFailures} 次`,`LLM 上下文输入:${g.inputChars||0} 字符(system+user)${g.unlayeredChars?`(其中未分层调用 ${g.unlayeredChars} 字符,占比 ${Math.round(g.unlayeredChars/(g.inputChars||1)*1e4)/100}%)`:""},输入 ${g.inputTokens||0} token / 输出 ${g.outputTokens||0} token`,p,null===l?"上下文缓存:提供商未返回 prefix cache 指标(prompt_cache_hit/miss_tokens),无法观测命中率":`上下文缓存:命中 ${g.promptCacheHitTokens} token / 未命中 ${g.promptCacheMissTokens} token(命中率 ${l}%)——未命中占比高说明固定前缀未收敛,system/user 分离(A5)后应显著上升`,`推理 token:${g.reasoningTokens?`${g.reasoningTokens} token(思考未完全关闭,disableThinking 未生效风险)`:"0(思考已关闭)"}`,null===j?"bge 嵌入缓存:本次生成无嵌入调用":`bge 嵌入缓存:命中 ${h.embedCacheHits} 条 / 未命中 ${h.embedCacheMisses} 条(命中率 ${j}%,全局 LRU 容量 ${process.env.DOCUMENT_EMBED_CACHE_SIZE||2e3})`,"防爆兜底类软限制(保留并逐项记录裁剪量):selectEvidenceByBudget 的 maxItems/maxChars、uniqueEvidence 噪声过滤、evidenceBundlePrompt 的 maxChars、块级证据 top-k 截断、块级 facts 截断","语义取舍类软限制(已迁移本地语义模型):evaluationTexts 词面过滤→条目对象化、criterionFeatures 二字滑窗→bge-small 余弦、章节证据字符硬截→语义排序取 top-k","LLM 输出侧:schema 校验(截断位置可诊断)、空响应重试提示词收敛、块成稿 maxTokens 按目标字数 1:1.2(不走 thinking \xd76 放大)"]},{subtitle:"预算裁剪审计"})),e(d)}({generationDiagnostics:b.planning.generationDiagnostics,progressStages:b.global.progressStages,chapterDraftsFinal:b.chapterLoop.chapterDraftsFinal,emitProgress:b.global.emitProgress}),b.planning.generationDiagnostics.metrics.push({name:"phase:global-review",startedAt:b.chapterLoop.globalReviewPhaseStartedAt,endedAt:Date.now(),durationMs:Date.now()-b.chapterLoop.globalReviewPhaseStartedAt}),(0,f.X6)(b.planning.generationDiagnostics,"phase:finalize",()=>ez({chapterDrafts:b.chapterLoop.chapterDraftsFinal,chapterDraftsByOrder:b.understanding.chapterDraftsByOrder,chapterGenerationStagesByOrder:b.understanding.chapterGenerationStagesByOrder,chapterGenerationStages:b.understanding.chapterGenerationStages,effectiveChapters:b.planning.effectiveChapters,template:b.prepare.template,allEvidence:b.understanding.allEvidence,projectMaterialScope:b.understanding.projectMaterialScope,progressStages:b.global.progressStages,documentSpec:b.prepare.documentSpec,projectMaterialProfile:b.prepare.projectMaterialProfile,projectMaterialSummary:b.prepare.projectMaterialSummary,domainProfile:b.prepare.domainProfile,documentBudget:b.planning.documentBudget,promptTexts:b.prepare.promptTexts,reviewPromptTexts:b.prepare.reviewPromptTexts,repairPromptTexts:b.prepare.repairPromptTexts,input:b.global.input,generationStrategy:b.planning.generationStrategy,generationDiagnostics:b.planning.generationDiagnostics,chapterScopedContext:b.planning.chapterScopedProjectContext,promptBindings:b.prepare.promptBindings,promptDocumentRules:b.prepare.promptDocumentRules,projectUnderstanding:b.prepare.projectUnderstanding,projectContext:b.planning.projectContext,projectRoot:b.prepare.projectRoot,projectId:b.prepare.projectId,readiness:b.prepare.readiness,factExtractionPromptTexts:b.prepare.factExtractionPromptTexts,blueprintData:b.blueprint.integratedBlueprint?.validation.passed?b.blueprint.integratedBlueprint.data:void 0,billFactLock:b.blueprint.billFactLock,requirementSemantics:b.prepare.requirementSemantics,hasExplicitOutline:b.prepare.hasExplicitOutline,missingItems:b.understanding.missingItems,retrievalCoverageReports:b.understanding.retrievalCoverageReports,failedChapterMessages:b.understanding.failedChapterMessages,webResearchReport:b.understanding.webResearchReport,indexHealth:b.understanding.indexHealth,promptPlan:b.prepare.promptPlan,globalConsistencyIssues:c,scopeConflicts:b.understanding.canonicalFacts.scopeConflicts,writingTaskBrief:b.planning.writingTaskBrief,evaluationCriteriaItems:b.understanding.evaluationItems.map(a=>a.title).filter(Boolean),tenderRequirements:b.planning.tenderRequirements,requirementsSimilarity:b.planning.requirementsSimilarity,factTokenScopeClassifier:b.planning.factTokenScopeClassifier,professionalDepthClassifier:b.planning.professionalDepthClassifier,agentWorkflow:b.understanding.agentWorkflow,emitProgress:b.global.emitProgress,withProgressHeartbeat:b.global.withProgressHeartbeat}))}},48661:(a,b,c)=>{c.d(b,{BH:()=>Q,Gl:()=>y,JU:()=>U,Jz:()=>V,Oy:()=>E,QG:()=>P,QH:()=>D,SE:()=>F,YL:()=>_,a6:()=>N,getGeneratedDocument:()=>L,listGeneratedDocuments:()=>K,r:()=>O,yE:()=>T});var d=c(77598),e=c(73024),f=c(48161),g=c(76760),h=c(40711),i=c(23760),j=c(87942),k=c(19898),l=c(44533),m=c(78217),n=c(80572),o=c(37095);function p(a,b){return a?.map(a=>"running"===a.status?{...a,status:"failed",message:b}:a)}function q(a){return a.title&&"生成中"!==a.title?a.title:`${a.templateName||"文档"}生成失败`}function r(...a){let b=new Map;for(let c of a)for(let a of c||[])a.id&&a.content?.trim()&&b.set(a.id,a);return[...b.values()]}function s(a){return(a||[]).map(a=>({id:a.id,title:a.title,chars:(0,m.V7)(a.content),status:a.inProgress?"in_progress":a.content.trim().length>0?"completed":"failed",updatedAt:Date.now(),timedOut:a.timedOut,elapsedMs:a.elapsedMs}))}let t=globalThis,u=t.__generatedDocumentTasks??=new Map,v=Math.max(36e5,Number(process.env.DOCUMENT_ABANDONED_RECORD_STALE_MS??864e5)),w=t.__generatedDocumentProcessStartedAt??=Date.now(),x=Math.max(3e4,Number(process.env.DOCUMENT_RECENT_UPDATE_GRACE_MS??6e4));function y(a=(0,l.aY)()){let b=g.join(f.homedir(),".customize-agent","projects",function(a=(0,l.aY)()){return(0,k.computeProjectId)(g.resolve(a))}(a),"generatedDocuments");return e.mkdirSync(g.join(b,"drafts"),{recursive:!0}),e.mkdirSync(g.join(b,"assets"),{recursive:!0}),b}function z(a=(0,l.aY)()){return g.join(y(a),"index.json")}function A(a=(0,l.aY)()){return g.join(y(a),"assets.json")}function B(a,b=(0,l.aY)()){return g.join(y(b),"drafts",`${a}.json`)}function C(a,b=(0,l.aY)()){return g.join(y(b),"drafts",`${a}.meta.json`)}function D(a,b=(0,l.aY)()){let c=G(C(a,b),null);return c&&Number.isFinite(c.updatedAt)?c:null}function E(a){return!(!a||"generating"!==a.status||Date.now()-a.updatedAt<x)&&(a.updatedAt<w||Date.now()-a.updatedAt>=v)}function F(a,b=(0,l.aY)()){return a.path?g.isAbsolute(a.path)?a.path:a.path.startsWith("generatedDocuments/assets/")?g.join(y(b),a.path.replace(/^generatedDocuments\/assets\//u,"assets/")):g.join((0,l.NW)(b),a.path):null}function G(a,b){try{return JSON.parse(e.readFileSync(a,"utf8"))}catch{return b}}function H(a,b){e.mkdirSync(g.dirname(a),{recursive:!0});let c=`${a}.${process.pid}.${Date.now()}.tmp`;e.writeFileSync(c,JSON.stringify(b,null,2)),e.renameSync(c,a)}function I(a){for(let b of u.values())if(b.documentId===a)return b;return null}function J(a,b=(0,l.aY)()){if("generating"!==a.status||I(a.id)||Date.now()-a.updatedAt<x)return a;let c=a.updatedAt<w?0:v;if(Date.now()-a.updatedAt<c)return a;let d="生成任务已中断,请点击继续生成或重新生成",e=a.checkpointChapters?.length?"warning":"failed",f={...a,title:q(a),status:e,error:a.error||d,executionStages:p(a.executionStages,d),completedAt:Date.now(),warningIssues:a.checkpointChapters?.length?[...a.warningIssues||[],d]:a.warningIssues};return a.taskId&&$(b,{taskId:a.taskId,title:`生成 ${f.title}`,status:"warning"===e?"warning":"error",percent:100,message:d,stages:f.executionStages,error:d}),f}function K(a=(0,l.aY)()){return G(z(a),[]).map(b=>{if("generating"!==b.status)return b;let c=G(B(b.id,a),null);if(!c)return b;let d=J(c,a);return d!==c?X(M(d,a,{preserveUpdatedAt:!0})):X(c)}).sort((a,b)=>(b.createdAt||b.updatedAt)-(a.createdAt||a.updatedAt))}function L(a,b=(0,l.aY)()){let c=G(B(a,b),null);if(!c)return null;let d=J(c,b);return function(a,b=(0,l.aY)()){if("generating"===a.status||!(a.editedMarkdown||a.markdown)?.trim())return a;let c=`document-${a.id}`;if(a.assets?.some(a=>a.id===c&&a.path))return a;let d=S(a,b);return d?M({...a,assets:[d,...(a.assets||[]).filter(a=>a.id!==d.id)]},b):a}(d!==c?M(d,b,{preserveUpdatedAt:!0}):d,b)}function M(a,b=(0,l.aY)(),c){let d=Date.now(),e=Y({...a,updatedAt:c?.preserveUpdatedAt?a.updatedAt:d});H(B(e.id,b),e),H(C(e.id,b),{updatedAt:e.updatedAt,status:e.status,completedAt:e.completedAt});let f=G(z(b),[]).filter(a=>a.id!==e.id);return f.unshift(X(e)),H(z(b),f),e}function N(a,b,c=(0,l.aY)()){let d=L(a,c);return d?M({...d,...b,id:a},c):null}function O(a,b=(0,l.aY)()){let c=L(a,b);if(!c)return null;if("generating"!==c.status)return c;for(let[b,c]of u)c.documentId===a&&(c.status="aborted",c.controller.abort(),u.delete(b));let d="用户中止",e=p(c.executionStages,d),f=M({...c,status:"aborted",error:d,executionStages:e,completedAt:Date.now()},b);return f.taskId&&$(b,{taskId:f.taskId,title:`生成 ${f.title}`,status:"warning",percent:100,message:d,stages:e,error:d}),f}function P(a,b=(0,l.aY)()){try{e.rmSync(B(a,b),{force:!0})}catch{console.warn("[generated-documents] 删除文档记录失败或文件不存在",a)}let c=G(z(b),[]).filter(b=>b.id!==a);H(z(b),c)}function Q(a=(0,l.aY)()){return G(A(a),[]).sort((a,b)=>b.updatedAt-a.updatedAt)}function R(a,b,c=(0,l.aY)()){let d=Date.now(),e=[...Q(c)];for(let c of a){let a=e.findIndex(a=>a.id===c.id),f=c.path?.startsWith("generatedDocuments/assets/")||"generated"===c.status||"prompt_ready"===c.status?"generated":"knowledge_base",h={...c,name:g.basename(c.path||c.url||c.id),source:f,indexed:a>=0&&e[a].indexed,usedByDocumentIds:a>=0?[...new Set([...e[a].usedByDocumentIds,b])]:[b],createdAt:a>=0?e[a].createdAt:d,updatedAt:d};a>=0?e[a]={...e[a],...h}:e.push(h)}return H(A(c),e),e}function S(a,b=(0,l.aY)()){let c=a.editedMarkdown||a.markdown;if(!c?.trim())return null;let d=`generatedDocuments/assets/${a.title.replace(/[\\/:*?"<>|]/gu,"_").slice(0,120)||"generated-document"}-${a.id}.md`,f=g.join(y(b),d.replace(/^generatedDocuments\//u,""));e.mkdirSync(g.dirname(f),{recursive:!0}),e.writeFileSync(f,c,"utf8");let h={id:`document-${a.id}`,type:"file",role:"generated",path:d,status:"generated",message:"模板运行生成的 Markdown 文档,仅登记到生成资源,不进入知识库"};return R([h],a.id,b).find(a=>a.id===h.id)||null}function T(a,b=(0,l.aY)()){return Q(b).find(b=>b.id===a)||null}function U(a,b=(0,l.aY)()){let c=T(a,b);if(!c)return!1;let d=F(c,b);if(d&&d.startsWith(y(b)))try{e.rmSync(d,{force:!0})}catch{console.warn("[generated-documents] 删除生成资源文件失败或文件不存在",d)}return H(A(b),Q(b).filter(b=>b.id!==a)),!0}function V(a,b,c=(0,l.aY)()){let d=T(a,c);if(!d)return null;let f=F(d,c);return f&&e.existsSync(f)?"directory"===b?g.dirname(f):f:null}function W(a){let b=Math.max(4,Math.floor((0,n.z)().persistEvidenceMaxItems??10)),c=Math.max(300,Math.floor((0,n.z)().persistEvidenceItemChars??900));return{...a,evidence:(a.evidence||[]).slice(0,b).map(a=>({...a,content:"string"==typeof a.content?a.content.replace(/\s+/gu," ").slice(0,c):""}))}}function X(a){let b=[...a.executionStages||a.draft?.executionStages||[]].reverse().find(a=>a.message||a.subtitle||a.roleId),c=a.partialChapters||s(a.checkpointChapters||a.draft?.checkpointChapters||a.draft?.chapters),d=a.draft?.validationIssues||[],e=a.draft?.exportGate?a.draft.exportGate.blockingIssues?.length??0:d.filter(a=>"blocker"===a.severity||"error"===a.level).length,f=d.filter(a=>"warning"===a.severity||"warning"===a.level).length||a.warningIssues?.length||0,g=d.filter(a=>"suggestion"===a.severity||"info"===a.level).length;return{id:a.id,taskId:a.taskId,templateId:a.templateId,templateName:a.templateName,templateVersion:a.templateVersion,title:a.title,requirement:a.requirement,projectRoot:a.projectRoot,projectId:a.projectId,knowledgeBasePath:a.knowledgeBasePath,status:a.status,createdAt:a.createdAt,updatedAt:a.updatedAt,completedAt:a.completedAt,elapsedMs:a.completedAt?a.completedAt-a.createdAt:a.updatedAt-a.createdAt,error:a.error,warningIssues:(a.warningIssues||[]).slice(0,12),warningCount:f,blockerCount:e,suggestionCount:g,wordCount:(0,m.V7)(a.editedMarkdown||a.markdown||a.draft?.markdown||""),chapterCount:c?.length||a.draft?.chapters?.length||0,completedChapterCount:(c||[]).filter(a=>"completed"===a.status).length,latestStage:b?.subtitle||b?.roleName||b?.roleId,latestMessage:b?.message,assets:(a.assets||[]).slice(0,8),partialChapters:c}}function Y(a){let b=a.draft?{...a.draft,chapters:a.draft.chapters?.map(W),checkpointChapters:a.draft.checkpointChapters?.map(W)}:a.draft;return{...a,draft:b,checkpointChapters:a.checkpointChapters?.map(W)}}function Z(a,b){let c=L(a.documentId,b);return c&&"generating"===c.status?{taskId:a.id,documentId:a.documentId,record:c}:null}function $(a,b){(0,o.Qf)(a,{id:b.taskId,type:"document",title:b.title,stage:"processing"===b.status?"generating":"error"===b.status?"error":"done",status:b.status,percent:b.percent,message:b.message,error:b.error,details:(b.stages||[]).filter(a=>"role_binding"===a.type||"runtime-prompt-rules"===a.roleId||"document-readiness"===a.roleId||"failed"===a.status).flatMap(a=>[`${a.subtitle||a.roleName||a.roleId}:${a.message||a.status}`,...(a.details||[]).slice(0,8).map(a=>` - ${a}`)]).slice(0,80)})}function _(a,b=(0,l.aY)()){let c,e=g.resolve(b),f=(0,k.computeProjectId)(e),n=Date.now(),o=a.resumeDocumentId?L(a.resumeDocumentId,e):null;if(o){let a=I(o.id),b=a?Z(a,e):null;if(b)return b}if(!o)for(let b of u.values()){let c=Z(b,e);if(c&&c.record.templateId===a.templateId&&c.record.projectRoot===e)return c}let t=Math.max(1,Number(process.env.DOCUMENT_MAX_CONCURRENT_GENERATIONS??2));if(u.size>=t)throw Error(`当前已有 ${u.size} 个文档生成任务在运行(上限 ${t}),请等待完成或中止后再运行`);let v=o?.id||`doc-${n}-${d.randomBytes(4).toString("hex")}`,w=`task-${n}-${d.randomBytes(4).toString("hex")}`,x=o?{...o,taskId:w,status:"generating",error:void 0,completedAt:void 0,executionStages:[{type:"validation",roleId:"resume-generation",status:"running",message:"已重新进入生成流程;仅复用通过当前工作流版本、项目、模板、需求和导出门禁校验的章节,其余章节重新生成"}],partialChapters:void 0,checkpointChapters:void 0,draft:void 0,warningIssues:void 0,updatedAt:n}:{id:v,taskId:w,templateId:a.templateId,templateVersion:(0,h.QJx)(a.templateId)?.version,title:"生成中",requirement:a.requirement||"",maxEvidencePerChapter:a.maxEvidencePerChapter,projectRoot:e,projectId:f,knowledgeBasePath:(0,l.NW)(e),markdown:"",status:"generating",assets:[],createdAt:n,updatedAt:n};M(x,e),$(e,{taskId:w,title:`生成 ${x.title}`,status:"processing",percent:1,message:"文档生成任务已进入后台队列",stages:x.executionStages});let y=new AbortController,z={},A=function(a,b,c){if(!a)return[];let d=(0,h.QJx)(b.templateId),e=a.reviewMetadata?.workflowVersion?.version||a.draft?.reviewMetadata?.workflowVersion?.version,f=a.draft?.exportGate?.passed===!0,g=a.templateId===b.templateId&&(!d||!a.templateVersion||a.templateVersion===d.version),i=a.projectRoot===c&&a.projectId===(0,k.computeProjectId)(c),l=(a.requirement||"")===(b.requirement||"");if(!g||!i||!l||e!==j.x.version||!f)return[];let m=new Set((a.draft?.partialChapters||a.partialChapters||[]).filter(a=>"completed"===a.status).map(a=>a.id));return r(a.draft?.chapters,a.checkpointChapters).filter(a=>m.has(a.id)&&!!a.content?.trim()&&!/WRITER_MISSING_SECTION|Writer 未完成/u.test(a.content))}(o,a,e),B="",C=0,D="",E=Math.max(1e3,Math.min(15e3,Number(process.env.DOCUMENT_PROGRESS_SAVE_INTERVAL_MS??5e3))),F=Math.max(3e4,Math.min(3e5,Number(process.env.DOCUMENT_PROGRESS_HEARTBEAT_SAVE_INTERVAL_MS??6e4))),G=(0,h.OXS)({...a,projectRoot:e,resumeChapters:A,signal:y.signal,onProgress:(a,b)=>{try{z.current&&(z.current.lastProgressAt=Date.now()),c=a,b?.chapters?.length&&(B=b.chapters.map(a=>`# ${a.title}
116
+ ${(0,bc.CK)(a.prepare.template)}`,k||l].filter(Boolean).join("\n\n"),a.prepare.promptDocumentRules=a.prepare.runtimePromptRules,a.prepare.factExtractionPromptTexts=[a.prepare.diagnosticControlPrompt,a.prepare.runtimeRulesText,(0,f.fC)([...a.prepare.promptPlan.extractionPrompts,...a.prepare.promptPlan.referencePrompts])].filter(Boolean).join("\n\n"),a.prepare.reviewPromptTexts=[a.prepare.generationControlPrompt,a.prepare.runtimeRulesText,(0,f.fC)([...a.prepare.promptPlan.writerPrompts,...a.prepare.promptPlan.chapterPrompts,...a.prepare.promptPlan.formattingPrompts])].filter(Boolean).join("\n\n"),a.prepare.repairPromptTexts=[a.prepare.generationControlPrompt,a.prepare.runtimeRulesText,(0,f.fC)(a.prepare.promptPlan.formattingPrompts)].filter(Boolean).join("\n\n"),(0,b8.fx)(a.global.progressStages,(0,b8.X5)({type:"validation",roleId:"document-preparation",status:"success",message:`模板规范与项目资料理解完成,识别 ${a.prepare.materialFilePaths.length} 份项目资料`,details:[`提示词绑定:${a.prepare.promptBindings.length} 个`,`项目资料包:${a.prepare.projectMaterialProfile.materialRoots.join("、")||"当前知识库"}`,a.prepare.hasExplicitOutline?`识别 OUTLINE 章节:${a.prepare.explicitPromptChapters.length} 个`:"未识别显式 OUTLINE,使用模板章节"],progress:{current:3,total:3,label:"准备完成"}},{subtitle:"生成准备",order:a.global.progressStages.length})),a.global.emitProgress()}async function fk(a){let b=(0,d.QJ)(a.templateId);if(!b)throw Error("Document template not found");let c=b.chapters.find(b=>b.id===a.chapterId);if(!c)throw Error("Document chapter not found");let e=p.resolve(a.projectRoot||(0,e7.aY)());if(!e)throw Error("No knowledge base project found");let h=(0,e7.Qh)(),i=(0,eE.Hh)(e,b,{requirement:a.requirement}),j=(0,eE.W9)(e,b,{requirement:a.requirement}),{kindByPath:k,processingByPath:l}=(0,eE.Hz)(j),m=new Set(i),n=(0,b7.Zq)(e,i),o=new Map([...k.entries()].map(([a,b])=>[a,(0,eE._W)(b)])),q=new Map([...l.entries()].map(([a,b])=>[a,b])),r=an(await h.getProject(e),[...m],a.maxEvidencePerChapter),s=[],t=[...m].filter(Boolean).sort(),u=ac(c,c.queries,[]),v=function(a,b){let c=Number(process.env.DOCUMENT_MAX_QUERIES_PER_CHAPTER);return Math.max(2,Math.min(9,Math.floor(Number.isFinite(c)&&c>0?c:4)+ +((a.sections||[]).length>=6||a.requiredFacts.length>=8)+Math.min(2,b.length)))}(c,[]);for(let a of u.slice(0,v)){let b=await h.search(e,a,{scope:"project",filters:{filePaths:t},limit:Math.min(r,12),weights:{keyword:.4,vector:.45,rewrite:.75,hybridBonus:.15},generationMode:!0});s.push(...b.results.filter(a=>(0,f.Tz)(e,a.filePath,m)).map(a=>({chapterId:c.id,filePath:a.filePath,score:a.score,content:a.content,roleId:o.get(a.filePath),processingType:q.get(a.filePath),sectionTitle:a.sectionTitle,source:a.source})))}let w=ab(c,(0,b7.Su)(s.filter(a=>(0,f.Tz)(e,a.filePath,m)),n),{maxItems:function(a,b,c=!1){return Math.max(12,Math.min(c?58:26,a+10+4*((b.sections||[]).length>=6||b.requiredFacts.length>=8)+18*!!c))}(r,c),maxChars:16e3,preservePinned:!0});(0,b7.U2)(w,n,`regenerate:${c.id}`);let x=a.currentMarkdown||"",y=new Set(a.existingFacts??[]),z=c.requiredFacts.filter(a=>!y.has(a)&&!w.some(b=>(0,dd.Lk)(b,a)));if(0===w.length)throw Error(`${(0,aq.GQ)(c.title)} 缺少可支撑正文的项目资料证据`);let A=[`## ${c.title}`,"",a.requirement?`> 生成要求:${a.requirement}`:"",x?`> 当前文档上下文摘要:${x.replace(/\s+/gu," ")}`:"",`本章依据已锁定项目资料围绕“${c.purpose}”重新整理,并与当前文档上下文保持一致。`,"","### 资料依据",...w.map(g.OF)].filter(Boolean).join("\n");return{id:c.id,title:c.title,content:A,evidence:w,missingFacts:z}}async function fl(a){(0,e.Te)(a.signal);let b={global:{input:a},prepare:{},understanding:{},planning:{},blueprint:{chapterConcurrency:0,reviewConcurrency:0,reviewSemaphore:new e.jf(1),reviewTaskPool:[],basicFactSearchResults:[],integratedBlueprint:void 0,blueprintActive:!1,blueprintDataText:"",billFactLock:void 0},chapterLoop:{draftPhaseStartedAt:0,chapterDraftsFinal:[],globalReviewPhaseStartedAt:0}};await fj(b),await e6(b),await e3(b),await eG(b),await eF(b);let c=[],d=!1;if(b.planning.generationStrategy.enableGlobalReview){let a=await eh({globalReviewSamplingRate:b.planning.generationStrategy.globalReviewSamplingRate,chapterDraftsFinal:b.chapterLoop.chapterDraftsFinal,template:b.prepare.template,reviewPromptTexts:b.prepare.reviewPromptTexts,repairPromptTexts:b.prepare.repairPromptTexts,requirement:b.global.input.requirement,signal:b.global.input.signal,projectContext:b.planning.projectContext,generationDiagnostics:b.planning.generationDiagnostics,preliminaryFactsModel:b.understanding.preliminaryFactsModel,scopeConflicts:b.understanding.canonicalFacts.scopeConflicts,progressStages:b.global.progressStages,emitProgress:b.global.emitProgress,withProgressHeartbeat:b.global.withProgressHeartbeat,blueprintData:b.blueprint.integratedBlueprint?.validation.passed?b.blueprint.integratedBlueprint.data:void 0});c=a.issues,d=a.dedupRan}else await ef({chapterDraftsFinal:b.chapterLoop.chapterDraftsFinal,template:b.prepare.template,repairPromptTexts:b.prepare.repairPromptTexts,projectContext:b.planning.projectContext,requirement:b.global.input.requirement,signal:b.global.input.signal,generationDiagnostics:b.planning.generationDiagnostics,progressStages:b.global.progressStages,emitProgress:b.global.emitProgress,withProgressHeartbeat:b.global.withProgressHeartbeat});await eg({chapterDraftsFinal:b.chapterLoop.chapterDraftsFinal,template:b.prepare.template,repairPromptTexts:b.prepare.repairPromptTexts,requirement:b.global.input.requirement,signal:b.global.input.signal,generationDiagnostics:b.planning.generationDiagnostics,progressStages:b.global.progressStages,emitProgress:b.global.emitProgress,withProgressHeartbeat:b.global.withProgressHeartbeat});let{tableFixApplied:g}=await ed({effectiveChapters:b.planning.effectiveChapters,chapterDraftsFinal:b.chapterLoop.chapterDraftsFinal,template:b.prepare.template,repairPromptTexts:b.prepare.repairPromptTexts,requirement:b.global.input.requirement,signal:b.global.input.signal,generationDiagnostics:b.planning.generationDiagnostics,progressStages:b.global.progressStages,emitProgress:b.global.emitProgress,withProgressHeartbeat:b.global.withProgressHeartbeat});return(g||!d)&&(c=await ec({chapterDraftsFinal:b.chapterLoop.chapterDraftsFinal,globalConsistencyIssues:c,progressStages:b.global.progressStages,emitProgress:b.global.emitProgress})),!function(a){let{generationDiagnostics:b,progressStages:c,chapterDraftsFinal:d,emitProgress:e}=a,f=b.evidence,g=b.llm,h=(0,be.Bd)();b.semantic=h;let i=h.embedCacheHits+h.embedCacheMisses,j=i>0?Math.round(1e4*h.embedCacheHits/i)/100:null,k=(g.promptCacheHitTokens||0)+(g.promptCacheMissTokens||0),l=k>0?Math.round(1e4*(g.promptCacheHitTokens||0)/k)/100:null,m=g.layerChars,n=m?m.l0+m.l1+m.l2+m.l3:0,o=a=>n>0?Math.round(1e4*a/n)/100:0,p=m&&n>0?`上下文分层:L0 system 恒定 ${m.l0} 字(${o(m.l0)}%)、L1 任务级 ${m.l1} 字(${o(m.l1)}%)、L2 章级 ${m.l2} 字(${o(m.l2)}%)、L3 小节级 ${m.l3} 字(${o(m.l3)}%)`:"上下文分层:本次生成未采集 L0-L3 分层统计";(0,b8.fx)(c,(0,b8.X5)({type:"validation",roleId:"budget-trim-report",status:"success",message:`预算裁剪报告:证据 ${f.raw} 条 → 采用 ${f.used} 条(噪声过滤 ${f.filteredNoise} 条、预算兜底裁剪 ${f.budgetDropped} 条),证据上下文 ${f.contextChars} 字`,details:[`证据质量:平均噪声分 ${f.avgNoiseScore},平均事实密度 ${f.avgFactDensity}`,`证据分层(T0 关键事实/T1 高相关片段/T2 目录索引):T0 注入 ${f.t0Chars||0} 字、T1 注入 ${f.t1Chars||0} 字、T2 索引 ${f.t2Lines||0} 行、目录省略 ${f.omittedChars||0} 字——A2 块级增量压缩后 T1 应显著低于 T0+T2`,`检索:${f.searchQueries} 组查询,耗时 ${Math.round(f.searchMs/1e3)} 秒`,`LLM:${g.calls} 次调用,失败 ${g.failures} 次,重试 ${g.retries} 次,schema 校验失败 ${g.schemaFailures} 次`,`LLM 上下文输入:${g.inputChars||0} 字符(system+user)${g.unlayeredChars?`(其中未分层调用 ${g.unlayeredChars} 字符,占比 ${Math.round(g.unlayeredChars/(g.inputChars||1)*1e4)/100}%)`:""},输入 ${g.inputTokens||0} token / 输出 ${g.outputTokens||0} token`,p,null===l?"上下文缓存:提供商未返回 prefix cache 指标(prompt_cache_hit/miss_tokens),无法观测命中率":`上下文缓存:命中 ${g.promptCacheHitTokens} token / 未命中 ${g.promptCacheMissTokens} token(命中率 ${l}%)——未命中占比高说明固定前缀未收敛,system/user 分离(A5)后应显著上升`,`推理 token:${g.reasoningTokens?`${g.reasoningTokens} token(思考未完全关闭,disableThinking 未生效风险)`:"0(思考已关闭)"}`,null===j?"bge 嵌入缓存:本次生成无嵌入调用":`bge 嵌入缓存:命中 ${h.embedCacheHits} 条 / 未命中 ${h.embedCacheMisses} 条(命中率 ${j}%,全局 LRU 容量 ${process.env.DOCUMENT_EMBED_CACHE_SIZE||2e3})`,"防爆兜底类软限制(保留并逐项记录裁剪量):selectEvidenceByBudget 的 maxItems/maxChars、uniqueEvidence 噪声过滤、evidenceBundlePrompt 的 maxChars、块级证据 top-k 截断、块级 facts 截断","语义取舍类软限制(已迁移本地语义模型):evaluationTexts 词面过滤→条目对象化、criterionFeatures 二字滑窗→bge-small 余弦、章节证据字符硬截→语义排序取 top-k","LLM 输出侧:schema 校验(截断位置可诊断)、空响应重试提示词收敛、块成稿 maxTokens 按目标字数 1:1.2(不走 thinking \xd76 放大)"]},{subtitle:"预算裁剪审计"})),e(d)}({generationDiagnostics:b.planning.generationDiagnostics,progressStages:b.global.progressStages,chapterDraftsFinal:b.chapterLoop.chapterDraftsFinal,emitProgress:b.global.emitProgress}),b.planning.generationDiagnostics.metrics.push({name:"phase:global-review",startedAt:b.chapterLoop.globalReviewPhaseStartedAt,endedAt:Date.now(),durationMs:Date.now()-b.chapterLoop.globalReviewPhaseStartedAt}),(0,f.X6)(b.planning.generationDiagnostics,"phase:finalize",()=>eA({chapterDrafts:b.chapterLoop.chapterDraftsFinal,chapterDraftsByOrder:b.understanding.chapterDraftsByOrder,chapterGenerationStagesByOrder:b.understanding.chapterGenerationStagesByOrder,chapterGenerationStages:b.understanding.chapterGenerationStages,effectiveChapters:b.planning.effectiveChapters,template:b.prepare.template,allEvidence:b.understanding.allEvidence,projectMaterialScope:b.understanding.projectMaterialScope,progressStages:b.global.progressStages,documentSpec:b.prepare.documentSpec,projectMaterialProfile:b.prepare.projectMaterialProfile,projectMaterialSummary:b.prepare.projectMaterialSummary,domainProfile:b.prepare.domainProfile,documentBudget:b.planning.documentBudget,promptTexts:b.prepare.promptTexts,reviewPromptTexts:b.prepare.reviewPromptTexts,repairPromptTexts:b.prepare.repairPromptTexts,input:b.global.input,generationStrategy:b.planning.generationStrategy,generationDiagnostics:b.planning.generationDiagnostics,chapterScopedContext:b.planning.chapterScopedProjectContext,promptBindings:b.prepare.promptBindings,promptDocumentRules:b.prepare.promptDocumentRules,projectUnderstanding:b.prepare.projectUnderstanding,projectContext:b.planning.projectContext,projectRoot:b.prepare.projectRoot,projectId:b.prepare.projectId,readiness:b.prepare.readiness,factExtractionPromptTexts:b.prepare.factExtractionPromptTexts,blueprintData:b.blueprint.integratedBlueprint?.validation.passed?b.blueprint.integratedBlueprint.data:void 0,billFactLock:b.blueprint.billFactLock,requirementSemantics:b.prepare.requirementSemantics,hasExplicitOutline:b.prepare.hasExplicitOutline,missingItems:b.understanding.missingItems,retrievalCoverageReports:b.understanding.retrievalCoverageReports,failedChapterMessages:b.understanding.failedChapterMessages,webResearchReport:b.understanding.webResearchReport,indexHealth:b.understanding.indexHealth,promptPlan:b.prepare.promptPlan,globalConsistencyIssues:c,scopeConflicts:b.understanding.canonicalFacts.scopeConflicts,writingTaskBrief:b.planning.writingTaskBrief,evaluationCriteriaItems:b.understanding.evaluationItems.map(a=>a.title).filter(Boolean),tenderRequirements:b.planning.tenderRequirements,requirementsSimilarity:b.planning.requirementsSimilarity,factTokenScopeClassifier:b.planning.factTokenScopeClassifier,professionalDepthClassifier:b.planning.professionalDepthClassifier,agentWorkflow:b.understanding.agentWorkflow,emitProgress:b.global.emitProgress,withProgressHeartbeat:b.global.withProgressHeartbeat}))}},48661:(a,b,c)=>{c.d(b,{BH:()=>Q,Gl:()=>y,JU:()=>U,Jz:()=>V,Oy:()=>E,QG:()=>P,QH:()=>D,SE:()=>F,YL:()=>_,a6:()=>N,getGeneratedDocument:()=>L,listGeneratedDocuments:()=>K,r:()=>O,yE:()=>T});var d=c(77598),e=c(73024),f=c(48161),g=c(76760),h=c(40711),i=c(23760),j=c(87942),k=c(19898),l=c(44533),m=c(78217),n=c(80572),o=c(37095);function p(a,b){return a?.map(a=>"running"===a.status?{...a,status:"failed",message:b}:a)}function q(a){return a.title&&"生成中"!==a.title?a.title:`${a.templateName||"文档"}生成失败`}function r(...a){let b=new Map;for(let c of a)for(let a of c||[])a.id&&a.content?.trim()&&b.set(a.id,a);return[...b.values()]}function s(a){return(a||[]).map(a=>({id:a.id,title:a.title,chars:(0,m.V7)(a.content),status:a.inProgress?"in_progress":a.content.trim().length>0?"completed":"failed",updatedAt:Date.now(),timedOut:a.timedOut,elapsedMs:a.elapsedMs}))}let t=globalThis,u=t.__generatedDocumentTasks??=new Map,v=Math.max(36e5,Number(process.env.DOCUMENT_ABANDONED_RECORD_STALE_MS??864e5)),w=t.__generatedDocumentProcessStartedAt??=Date.now(),x=Math.max(3e4,Number(process.env.DOCUMENT_RECENT_UPDATE_GRACE_MS??6e4));function y(a=(0,l.aY)()){let b=g.join(f.homedir(),".customize-agent","projects",function(a=(0,l.aY)()){return(0,k.computeProjectId)(g.resolve(a))}(a),"generatedDocuments");return e.mkdirSync(g.join(b,"drafts"),{recursive:!0}),e.mkdirSync(g.join(b,"assets"),{recursive:!0}),b}function z(a=(0,l.aY)()){return g.join(y(a),"index.json")}function A(a=(0,l.aY)()){return g.join(y(a),"assets.json")}function B(a,b=(0,l.aY)()){return g.join(y(b),"drafts",`${a}.json`)}function C(a,b=(0,l.aY)()){return g.join(y(b),"drafts",`${a}.meta.json`)}function D(a,b=(0,l.aY)()){let c=G(C(a,b),null);return c&&Number.isFinite(c.updatedAt)?c:null}function E(a){return!(!a||"generating"!==a.status||Date.now()-a.updatedAt<x)&&(a.updatedAt<w||Date.now()-a.updatedAt>=v)}function F(a,b=(0,l.aY)()){return a.path?g.isAbsolute(a.path)?a.path:a.path.startsWith("generatedDocuments/assets/")?g.join(y(b),a.path.replace(/^generatedDocuments\/assets\//u,"assets/")):g.join((0,l.NW)(b),a.path):null}function G(a,b){try{return JSON.parse(e.readFileSync(a,"utf8"))}catch{return b}}function H(a,b){e.mkdirSync(g.dirname(a),{recursive:!0});let c=`${a}.${process.pid}.${Date.now()}.tmp`;e.writeFileSync(c,JSON.stringify(b,null,2)),e.renameSync(c,a)}function I(a){for(let b of u.values())if(b.documentId===a)return b;return null}function J(a,b=(0,l.aY)()){if("generating"!==a.status||I(a.id)||Date.now()-a.updatedAt<x)return a;let c=a.updatedAt<w?0:v;if(Date.now()-a.updatedAt<c)return a;let d="生成任务已中断,请点击继续生成或重新生成",e=a.checkpointChapters?.length?"warning":"failed",f={...a,title:q(a),status:e,error:a.error||d,executionStages:p(a.executionStages,d),completedAt:Date.now(),warningIssues:a.checkpointChapters?.length?[...a.warningIssues||[],d]:a.warningIssues};return a.taskId&&$(b,{taskId:a.taskId,title:`生成 ${f.title}`,status:"warning"===e?"warning":"error",percent:100,message:d,stages:f.executionStages,error:d}),f}function K(a=(0,l.aY)()){return G(z(a),[]).map(b=>{if("generating"!==b.status)return b;let c=G(B(b.id,a),null);if(!c)return b;let d=J(c,a);return d!==c?X(M(d,a,{preserveUpdatedAt:!0})):X(c)}).sort((a,b)=>(b.createdAt||b.updatedAt)-(a.createdAt||a.updatedAt))}function L(a,b=(0,l.aY)()){let c=G(B(a,b),null);if(!c)return null;let d=J(c,b);return function(a,b=(0,l.aY)()){if("generating"===a.status||!(a.editedMarkdown||a.markdown)?.trim())return a;let c=`document-${a.id}`;if(a.assets?.some(a=>a.id===c&&a.path))return a;let d=S(a,b);return d?M({...a,assets:[d,...(a.assets||[]).filter(a=>a.id!==d.id)]},b):a}(d!==c?M(d,b,{preserveUpdatedAt:!0}):d,b)}function M(a,b=(0,l.aY)(),c){let d=Date.now(),e=Y({...a,updatedAt:c?.preserveUpdatedAt?a.updatedAt:d});H(B(e.id,b),e),H(C(e.id,b),{updatedAt:e.updatedAt,status:e.status,completedAt:e.completedAt});let f=G(z(b),[]).filter(a=>a.id!==e.id);return f.unshift(X(e)),H(z(b),f),e}function N(a,b,c=(0,l.aY)()){let d=L(a,c);return d?M({...d,...b,id:a},c):null}function O(a,b=(0,l.aY)()){let c=L(a,b);if(!c)return null;if("generating"!==c.status)return c;for(let[b,c]of u)c.documentId===a&&(c.status="aborted",c.controller.abort(),u.delete(b));let d="用户中止",e=p(c.executionStages,d),f=M({...c,status:"aborted",error:d,executionStages:e,completedAt:Date.now()},b);return f.taskId&&$(b,{taskId:f.taskId,title:`生成 ${f.title}`,status:"warning",percent:100,message:d,stages:e,error:d}),f}function P(a,b=(0,l.aY)()){try{e.rmSync(B(a,b),{force:!0})}catch{console.warn("[generated-documents] 删除文档记录失败或文件不存在",a)}let c=G(z(b),[]).filter(b=>b.id!==a);H(z(b),c)}function Q(a=(0,l.aY)()){return G(A(a),[]).sort((a,b)=>b.updatedAt-a.updatedAt)}function R(a,b,c=(0,l.aY)()){let d=Date.now(),e=[...Q(c)];for(let c of a){let a=e.findIndex(a=>a.id===c.id),f=c.path?.startsWith("generatedDocuments/assets/")||"generated"===c.status||"prompt_ready"===c.status?"generated":"knowledge_base",h={...c,name:g.basename(c.path||c.url||c.id),source:f,indexed:a>=0&&e[a].indexed,usedByDocumentIds:a>=0?[...new Set([...e[a].usedByDocumentIds,b])]:[b],createdAt:a>=0?e[a].createdAt:d,updatedAt:d};a>=0?e[a]={...e[a],...h}:e.push(h)}return H(A(c),e),e}function S(a,b=(0,l.aY)()){let c=a.editedMarkdown||a.markdown;if(!c?.trim())return null;let d=`generatedDocuments/assets/${a.title.replace(/[\\/:*?"<>|]/gu,"_").slice(0,120)||"generated-document"}-${a.id}.md`,f=g.join(y(b),d.replace(/^generatedDocuments\//u,""));e.mkdirSync(g.dirname(f),{recursive:!0}),e.writeFileSync(f,c,"utf8");let h={id:`document-${a.id}`,type:"file",role:"generated",path:d,status:"generated",message:"模板运行生成的 Markdown 文档,仅登记到生成资源,不进入知识库"};return R([h],a.id,b).find(a=>a.id===h.id)||null}function T(a,b=(0,l.aY)()){return Q(b).find(b=>b.id===a)||null}function U(a,b=(0,l.aY)()){let c=T(a,b);if(!c)return!1;let d=F(c,b);if(d&&d.startsWith(y(b)))try{e.rmSync(d,{force:!0})}catch{console.warn("[generated-documents] 删除生成资源文件失败或文件不存在",d)}return H(A(b),Q(b).filter(b=>b.id!==a)),!0}function V(a,b,c=(0,l.aY)()){let d=T(a,c);if(!d)return null;let f=F(d,c);return f&&e.existsSync(f)?"directory"===b?g.dirname(f):f:null}function W(a){let b=Math.max(4,Math.floor((0,n.z)().persistEvidenceMaxItems??10)),c=Math.max(300,Math.floor((0,n.z)().persistEvidenceItemChars??900));return{...a,evidence:(a.evidence||[]).slice(0,b).map(a=>({...a,content:"string"==typeof a.content?a.content.replace(/\s+/gu," ").slice(0,c):""}))}}function X(a){let b=[...a.executionStages||a.draft?.executionStages||[]].reverse().find(a=>a.message||a.subtitle||a.roleId),c=a.partialChapters||s(a.checkpointChapters||a.draft?.checkpointChapters||a.draft?.chapters),d=a.draft?.validationIssues||[],e=a.draft?.exportGate?a.draft.exportGate.blockingIssues?.length??0:d.filter(a=>"blocker"===a.severity||"error"===a.level).length,f=d.filter(a=>"warning"===a.severity||"warning"===a.level).length||a.warningIssues?.length||0,g=d.filter(a=>"suggestion"===a.severity||"info"===a.level).length;return{id:a.id,taskId:a.taskId,templateId:a.templateId,templateName:a.templateName,templateVersion:a.templateVersion,title:a.title,requirement:a.requirement,projectRoot:a.projectRoot,projectId:a.projectId,knowledgeBasePath:a.knowledgeBasePath,status:a.status,createdAt:a.createdAt,updatedAt:a.updatedAt,completedAt:a.completedAt,elapsedMs:a.completedAt?a.completedAt-a.createdAt:a.updatedAt-a.createdAt,error:a.error,warningIssues:(a.warningIssues||[]).slice(0,12),warningCount:f,blockerCount:e,suggestionCount:g,wordCount:(0,m.V7)(a.editedMarkdown||a.markdown||a.draft?.markdown||""),chapterCount:c?.length||a.draft?.chapters?.length||0,completedChapterCount:(c||[]).filter(a=>"completed"===a.status).length,latestStage:b?.subtitle||b?.roleName||b?.roleId,latestMessage:b?.message,assets:(a.assets||[]).slice(0,8),partialChapters:c}}function Y(a){let b=a.draft?{...a.draft,chapters:a.draft.chapters?.map(W),checkpointChapters:a.draft.checkpointChapters?.map(W)}:a.draft;return{...a,draft:b,checkpointChapters:a.checkpointChapters?.map(W)}}function Z(a,b){let c=L(a.documentId,b);return c&&"generating"===c.status?{taskId:a.id,documentId:a.documentId,record:c}:null}function $(a,b){(0,o.Qf)(a,{id:b.taskId,type:"document",title:b.title,stage:"processing"===b.status?"generating":"error"===b.status?"error":"done",status:b.status,percent:b.percent,message:b.message,error:b.error,details:(b.stages||[]).filter(a=>"role_binding"===a.type||"runtime-prompt-rules"===a.roleId||"document-readiness"===a.roleId||"failed"===a.status).flatMap(a=>[`${a.subtitle||a.roleName||a.roleId}:${a.message||a.status}`,...(a.details||[]).slice(0,8).map(a=>` - ${a}`)]).slice(0,80)})}function _(a,b=(0,l.aY)()){let c,e=g.resolve(b),f=(0,k.computeProjectId)(e),n=Date.now(),o=a.resumeDocumentId?L(a.resumeDocumentId,e):null;if(o){let a=I(o.id),b=a?Z(a,e):null;if(b)return b}if(!o)for(let b of u.values()){let c=Z(b,e);if(c&&c.record.templateId===a.templateId&&c.record.projectRoot===e)return c}let t=Math.max(1,Number(process.env.DOCUMENT_MAX_CONCURRENT_GENERATIONS??2));if(u.size>=t)throw Error(`当前已有 ${u.size} 个文档生成任务在运行(上限 ${t}),请等待完成或中止后再运行`);let v=o?.id||`doc-${n}-${d.randomBytes(4).toString("hex")}`,w=`task-${n}-${d.randomBytes(4).toString("hex")}`,x=o?{...o,taskId:w,status:"generating",error:void 0,completedAt:void 0,executionStages:[{type:"validation",roleId:"resume-generation",status:"running",message:"已重新进入生成流程;仅复用通过当前工作流版本、项目、模板、需求和导出门禁校验的章节,其余章节重新生成"}],partialChapters:void 0,checkpointChapters:void 0,draft:void 0,warningIssues:void 0,updatedAt:n}:{id:v,taskId:w,templateId:a.templateId,templateVersion:(0,h.QJx)(a.templateId)?.version,title:"生成中",requirement:a.requirement||"",maxEvidencePerChapter:a.maxEvidencePerChapter,projectRoot:e,projectId:f,knowledgeBasePath:(0,l.NW)(e),markdown:"",status:"generating",assets:[],createdAt:n,updatedAt:n};M(x,e),$(e,{taskId:w,title:`生成 ${x.title}`,status:"processing",percent:1,message:"文档生成任务已进入后台队列",stages:x.executionStages});let y=new AbortController,z={},A=function(a,b,c){if(!a)return[];let d=(0,h.QJx)(b.templateId),e=a.reviewMetadata?.workflowVersion?.version||a.draft?.reviewMetadata?.workflowVersion?.version,f=a.draft?.exportGate?.passed===!0,g=a.templateId===b.templateId&&(!d||!a.templateVersion||a.templateVersion===d.version),i=a.projectRoot===c&&a.projectId===(0,k.computeProjectId)(c),l=(a.requirement||"")===(b.requirement||"");if(!g||!i||!l||e!==j.x.version||!f)return[];let m=new Set((a.draft?.partialChapters||a.partialChapters||[]).filter(a=>"completed"===a.status).map(a=>a.id));return r(a.draft?.chapters,a.checkpointChapters).filter(a=>m.has(a.id)&&!!a.content?.trim()&&!/WRITER_MISSING_SECTION|Writer 未完成/u.test(a.content))}(o,a,e),B="",C=0,D="",E=Math.max(1e3,Math.min(15e3,Number(process.env.DOCUMENT_PROGRESS_SAVE_INTERVAL_MS??5e3))),F=Math.max(3e4,Math.min(3e5,Number(process.env.DOCUMENT_PROGRESS_HEARTBEAT_SAVE_INTERVAL_MS??6e4))),G=(0,h.OXS)({...a,projectRoot:e,resumeChapters:A,signal:y.signal,onProgress:(a,b)=>{try{z.current&&(z.current.lastProgressAt=Date.now()),c=a,b?.chapters?.length&&(B=b.chapters.map(a=>`# ${a.title}
117
117
 
118
118
  ${a.content}`).join("\n\n"));let d=Date.now(),f=JSON.stringify({stages:a.map(a=>({type:a.type,roleId:a.roleId,status:a.status,message:a.message,progress:a.progress})),checkpoint:b?.chapters?.map(a=>[a.id,a.content.length,a.sections?.length||0])||[]});if(!b?.chapters&&f===D&&d-C<Math.max(E,F))return;let g=L(v,e);if(g&&"generating"===g.status){let c=b?.chapters?r(g.checkpointChapters,b.chapters).map(W):g.checkpointChapters,h=c?.length?c.map(a=>`# ${a.title}
119
119