@customize-agent/server 4.33.0 → 4.34.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +20 -20
  3. package/.next/prerender-manifest.json +3 -3
  4. package/.next/server/chunks/9197.js +4 -4
  5. package/.next/server/middleware-build-manifest.js +1 -1
  6. package/.next/server/pages/404.html +1 -1
  7. package/.next/server/pages/500.html +1 -1
  8. package/.next/server/pages/asset-library.html +1 -1
  9. package/.next/server/pages/document-roles.html +1 -1
  10. package/.next/server/pages/documents.html +1 -1
  11. package/.next/server/pages/guide.html +1 -1
  12. package/.next/server/pages/index.html +1 -1
  13. package/.next/server/pages/knowledge/file-detail.html +1 -1
  14. package/.next/server/pages/knowledge/files.html +1 -1
  15. package/.next/server/pages/knowledge/manage.html +1 -1
  16. package/.next/server/pages/knowledge.html +1 -1
  17. package/.next/server/pages/models.html +1 -1
  18. package/.next/server/pages/overview.html +1 -1
  19. package/.next/server/pages/prompt.html +1 -1
  20. package/.next/server/pages/settings.html +1 -1
  21. package/.next/server/pages/system/logs.html +1 -1
  22. package/.next/server/pages-manifest.json +28 -28
  23. package/.next/static/{FDiaUq_cecZ34JbJAWojt → J468HRVNdevxgPDtRwIUi}/_buildManifest.js +1 -1
  24. package/.next/static/chunks/{289-35ac595388bbd018.js → 289-12dfcb3abec1c4b4.js} +1 -1
  25. package/.next/static/chunks/563-2b116a2500a97dba.js +1 -0
  26. package/.next/static/chunks/788-961761f5858f9189.js +1 -0
  27. package/.next/static/chunks/pages/documents-0e4216df99b9ec32.js +1 -0
  28. package/.next/static/chunks/pages/knowledge/files-7b78e962e432d199.js +1 -0
  29. package/.next/static/chunks/pages/knowledge/manage-7535b873ab505397.js +1 -0
  30. package/.next/static/chunks/pages/prompt-2c242e541f2e77a9.js +1 -0
  31. package/.next/static/chunks/pages/system/logs-c5a8920c6506a7e8.js +1 -0
  32. package/package.json +1 -1
  33. package/.next/static/chunks/563-b12f299d34bb9e44.js +0 -1
  34. package/.next/static/chunks/788-3afeb069ed706ac0.js +0 -1
  35. package/.next/static/chunks/pages/documents-d796eb8dca722e02.js +0 -1
  36. package/.next/static/chunks/pages/knowledge/files-8e25066889a85834.js +0 -1
  37. package/.next/static/chunks/pages/knowledge/manage-d0d0e0716e9d705b.js +0 -1
  38. package/.next/static/chunks/pages/prompt-5e1fb81efc656866.js +0 -1
  39. package/.next/static/chunks/pages/system/logs-6f45ef8d862759a2.js +0 -1
  40. /package/.next/static/{FDiaUq_cecZ34JbJAWojt → J468HRVNdevxgPDtRwIUi}/_ssgManifest.js +0 -0
@@ -56,9 +56,9 @@ ${c.slice(0,12e3)}`].filter(Boolean).join("\n\n"),{maxTokens:1200,temperature:0,
56
56
  ${b.styleRequirements.map(a=>`- ${a}`).join("\n")}`]:[]].join("\n"),i=[...new Set(d.flatMap(a=>a.match(/[\p{Script=Han}]{2,}|[A-Za-z]{3,}|\d+(?:\.\d+)?/gu)||[]).filter(Boolean))].slice(0,60),j=i.reduce((a,b)=>a+ +!!e.includes(b),0);return b0({originalContent:e,repairRound:"requirement-verification",diagnostics:a.generationDiagnostics,beforeMetrics:[j],apply:async()=>{let b=await a.withProgressHeartbeat(()=>(0,f.l8)({template:a.template,chapter:{id:c.id,title:c.title,content:e,evidence:c.evidence,missingFacts:c.missingFacts,sections:c.sections},issues:d.map(a=>`用户要求未落实:${a}`),promptTexts:h,requirement:a.requirement,forbidDrawingImages:!1,diagnostics:a.generationDiagnostics,signal:a.signal,patchGuard:(0,f.XG)("requirement-verification",a.generationDiagnostics)}));return b.content&&b.content!==e?b.content:e},recheck:a=>[i.reduce((b,c)=>b+ +!!a.includes(c),0)],shouldRollback:(a,b)=>b[0]<a[0]})},g=0,h=0,i=0;for(let b of a.finalChapterDrafts){let c,f=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,b.title);if(0===f.length)continue;g+=1;let j=a.finalChapterDrafts.findIndex(a=>a.id===b.id);if(j<0)continue;let k=(0,r.X5)({type:"llm_review",roleId:`agent-requirement-verification-${b.id}`,status:"running",message:`用户要求执行核验:${b.title}(${f.length} 条要求)`,details:f.map(a=>`- ${a}`)},{subtitle:"用户要求核验"});(0,r.fx)(a.progressStages,k),(0,r.fx)(a.finalGateRepairStages,k),a.emitProgress(a.finalChapterDrafts,a.progressStages);let l=await d(b.title,b.content,f),m=Array.isArray(l?.unmet)?l.unmet.filter(Boolean).slice(0,12):[];if(!l||!0===l.satisfied||0===m.length){h+=1;let c=(0,r.X5)({type:"llm_review",roleId:`agent-requirement-verification-${b.id}`,status:"success",message:`用户要求核验通过:${b.title}(${f.length} 条要求全部落实)`,details:f.map(a=>`- ${a}`)},{subtitle:"用户要求核验"});(0,r.fx)(a.progressStages,c),(0,r.fx)(a.finalGateRepairStages,c),a.emitProgress(a.finalChapterDrafts,a.progressStages);continue}let n=b.content,o=m,p=m,q=0,s=!1,t=!1,u=!1,v="not-landed";for(;o.length>0&&q<2;){q+=1;let c=(0,r.X5)({type:"llm_review",roleId:`agent-requirement-verification-${b.id}`,status:"running",message:`用户要求定向补写中(第 ${q}/2 轮):${b.title}(${o.length} 条未落实)`,details:o.map(a=>`- ${a}`)},{subtitle:"用户要求核验"});(0,r.fx)(a.progressStages,c),(0,r.fx)(a.finalGateRepairStages,c),a.emitProgress(a.finalChapterDrafts,a.progressStages);let g=await e(b,o,n,q);if(g.rolledBack&&(t=!0),g.rolledBack||g.content===n){v="not-landed";break}if(n=g.content,a.finalChapterDrafts[j]={...b,content:n},s=!0,q>=2){v="limit";break}let h=await d(b.title,n,f),i=Array.isArray(h?.unmet)?h.unmet.filter(Boolean).slice(0,12):[];if(!h||!0===h.satisfied||0===i.length){u=!0,p=[],v="verified";break}if(p=i,i.length>=o.length){v="no-drop";break}o=i}s&&(i+=1),c=u?`用户要求核验闭环通过:${b.title}(${m.length} 条未落实要求经 ${q} 轮定向补写后复验全部落实)`:!s&&t?`用户要求补写已回滚:${b.title}(修复后要求关键词命中减少,保留修复前正文;残留 ${p.length} 条以 warning 记录,不阻断交付)`:s?"no-drop"===v?`用户要求补写部分生效:${b.title}(第 ${q} 轮补写后复验残留 ${p.length} 条未继续下降,停止继续修复;残留以 warning 记录,不阻断交付)`:"limit"===v?`用户要求补写部分生效:${b.title}(已执行 ${q} 轮定向补写,达最多 2 轮上限;末次复验残留 ${p.length} 条以 warning 记录,不阻断交付)`:`用户要求补写部分生效:${b.title}(第 ${q} 轮补写未落地(回滚或模型未修改),保留上一轮修复后正文;复验残留 ${p.length} 条以 warning 记录,不阻断交付)`:`用户要求补写未生效:${b.title}(模型未产生有效修改;残留 ${p.length} 条以 warning 记录,不阻断交付)`;let w=(0,r.X5)({type:"llm_review",roleId:`agent-requirement-verification-${b.id}`,status:u?"success":"failed",message:c,details:[...m.map(a=>`- ${a}`),...!u&&p.length>0?[`残留未落实 ${p.length} 条:${p.join(";")}`]:[]]},{subtitle:"用户要求核验"});(0,r.fx)(a.progressStages,w),(0,r.fx)(a.finalGateRepairStages,w),a.emitProgress(a.finalChapterDrafts,a.progressStages)}i>0&&(a.finalMarkdown=a.rebuildFinalMarkdown(),await a.recomputeFinalValidationBundle()),a.generationDiagnostics.llm.lastInfo=`用户要求执行核验闭环:${c} 条要求,核验 ${g} 章,${h} 章全部落实,${i} 章完成定向补写(每章最多 2 轮收敛修复,未收敛残留以 warning 记录,不阻断交付)`}function cx(a){return Math.max(0,Math.min(100,Math.round(a)))}async function cy(a){let b=await bF(a),c=a.reduce((a,b)=>a+(b.content.match(/本小节围绕|交底覆盖率按100%|24小时内形成整改责任|按施工准备→过程实施→检查验收→问题整改→资料归档的闭环组织|按作业条件确认→技术交底→过程实施|依据本项目已确认资料中的项目边界/gu)||[]).length,0),d=await (0,a4.Bt)(a.map(a=>a.content).join("\n")),e=400*Math.max(0,d.ratio-.1);return{score:cx(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 cz(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=cx(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(bv.s2)||[]),d=new Set(b.match(/工程量|材料|设备|范围|流程|验收|检测|复试|调试|隐蔽|检验批|资料|记录|系统|部位|接口|规格|标准/gu)||[]),e=Math.max(1,b.length),f=c.size/(e/1e3);return{score:cx(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(bv.aX)||[]),d=Math.max(1,b.length),e=c.size/(d/1e3);return{score:cx(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,bu.jG)(a.trim())).filter(a=>""===a||"-"===a||"—"===a||"/"===a).length,0)&&(e+=1))}return{score:0===d?40:cx(e/d*100),detail:`表格 ${d} 个,其中字段完整 ${e} 个`}}(a,b),h=await cy(a),i=function(a){let b=bE(a);return{score:cx(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:cx(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=cx(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=[...bE(a),...await bF(a),...bH(a),...bI(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 cA(a){var b;if(!("heavy"===(b=a.templating).level||b.vagueHitCount>0||b.difficultyHeavyTemplated))return{issues:[],reviewed:!1};let c=(0,a4.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("、")}`:""}`,`待复核正文(节选):
57
57
  ${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,bo.bb)((0,z.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 cB(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,D.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 cz(a.finalChapterDrafts,a.finalMarkdown,{templating:a.qualityBundle.qualityReport.templating}),a.templatingReview=a.qualityBundle.qualityReport.templating?await a.withProgressHeartbeat(()=>cA({templating:a.qualityBundle.qualityReport.templating,markdown:a.finalMarkdown,diagnostics:a.generationDiagnostics,signal:a.signal})):{issues:[],reviewed:!1},a.finalStages=[...a.executionStages,...a.finalGateRepairStages],a.suspensionChecklist=a.qualityBundle.finalExportGate.passed?void 0:(0,i.aF)(a.qualityBundle.finalExportGate.blockingIssues,a.finalChapterDrafts),a.finalStages.push((0,r.X5)({type:"validation",roleId:"agent-final-gate",status:a.qualityBundle.finalExportGate.passed?"success":"failed",message:a.qualityBundle.finalExportGate.passed?"Agent 最终门禁通过":`Agent 最终门禁阻断 ${d} 个问题(已显式挂起,人工处理清单见明细)`,details:a.suspensionChecklist?(0,i.$w)(a.suspensionChecklist):[]},{subtitle:"Agent 最终门禁"}));let e=a.qualityBundle.qualityReport.deliveryProbability<70;a.finalStages.push((0,r.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,r.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,r.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,r.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,r.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,r.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=(0,k._8)(a.generationDiagnostics.metrics),g=(0,k.bz)(a.generationDiagnostics.llm.callBreakdown),h=a.generationDiagnostics.factSanitize?`,事实净化 截断${a.generationDiagnostics.factSanitize.truncated}/丢弃${a.generationDiagnostics.factSanitize.dropped}/编号补全${a.generationDiagnostics.factSanitize.repaired}`:"";a.finalStages.push((0,r.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:[...(0,k.Il)(a.generationDiagnostics.metrics),...(0,k.NJ)(a.generationDiagnostics.llm.callBreakdown)]},{subtitle:"后台诊断"}))}let cC={prefixCacheHitRateFloor:.4,budgetDropRatioCeiling:.3,llmFailureRateCeiling:.1};async function cD(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<cC.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>cC.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>cC.llmFailureRateCeiling&&b.push(`LLM 失败率 ${(100*h).toFixed(1)}%(${a.llm.failures}/${a.llm.calls}):失败率偏高,检查限流与重试策略`),{alerts:b,metrics:{prefixCacheHitRate:e,reasoningTokens:f,budgetDropRatio:g,llmFailureRate:h}}}(a.generationDiagnostics),c=process.memoryUsage(),d=Math.round(c.rss/1048576),e=Math.round(c.heapUsed/1048576),f=function(){let a=Number(process.env.DOCUMENT_MEMORY_ALERT_MB??3072);return Number.isFinite(a)&&a>0?a:3072}();console.log(`[gen] memory(finalize) rss=${d}MB heap=${e}MB threshold=${f}MB`);let g=d>=f?[...b.alerts,`进程内存 rss=${d}MB 超过告警阈值 ${f}MB:大文档生成建议 NODE_OPTIONS=--max-old-space-size=4096,并控制并发生成任务数(DOCUMENT_MAX_CONCURRENT_GENERATIONS)`]:b.alerts;a.telemetry.healthAlerts=g,0!==g.length&&a.finalStages.push((0,r.X5)({type:"validation",roleId:"document-health-diagnosis",status:"skipped",message:`自动健康诊断:${g.length} 项告警(不阻断,供配置优化参考)`,details:g},{subtitle:"健康诊断"}))}async function cE(a){(0,l.wF)();let{chapterDraftsByOrder:b,chapterGenerationStagesByOrder:c,chapterGenerationStages:d,effectiveChapters:e,input:f,hasExplicitOutline:m,failedChapterMessages:n}=a,{signal:o,requirement:q}=f,r=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:[],sources:[],qualityBundle:void 0,scheduleAuthority:void 0,assemblyRateAuthority:void 0,scaleSummary:void 0,supportAuthority:void 0,laborPeakAuthority:void 0,greeningMaintenanceAuthority:void 0,surfaceFixContext:{laborPeakAuthority:void 0,greeningMaintenanceAuthority:void 0,resourceBreakdownAuthority:void 0,supportFormAuthority:void 0},decisionLockEntries:[],finalStages:[],reviewChecklist:[],telemetry:void 0,professionalScore:void 0,templatingReview:{issues:[],reviewed:!1},assets:[],validation:void 0,rebuildFinalMarkdown:()=>"",recomputeFinalValidationBundle:async()=>void 0}}(a),t=b.filter(a=>!!a);if(r.chapterDrafts=t,d.push(...c.filter(a=>!!a)),0===t.length)throw Error(`章节生成未完成:${n.join(";")||"没有生成任何有效章节"}`);if(m&&t.length<e.length)throw Error(`OUTLINE 指定 ${e.length} 章,实际只生成 ${t.length} 章:${n.join(";")||"部分章节未生成"}`);await s(r),await bZ(r);let u=(0,z.rs)((0,z.V3)({templateId:r.template.id,templateName:r.template.name,title:r.template.outputTitle,requirement:r.requirement||"",projectRoot:r.projectRoot,projectId:r.projectId,exportSettings:r.template.exportSettings,generationSettings:r.template.generationSettings,facts:r.facts,structuredFacts:r.structuredFacts,factsModel:r.factsModel,chapters:r.chapterDrafts,sources:r.sources,missingItems:[...new Set(r.missingItems)],validation:r.validation,validationIssues:r.validationIssues,executionStages:r.executionStages,exportGate:{passed:!1,blockingIssues:[],checklist:[]},assets:r.assets,partialChapters:r.chapterDrafts.map(a=>({id:a.id,title:a.title,chars:(0,h.V7)(a.content),status:(0,k.DR)(a,r.documentBudget.chapterTargets.get(a.id)),updatedAt:Date.now()})),checkpointChapters:r.chapterDrafts,generatedAt:Date.now()},{forbidDrawingImages:!1,promptRules:r.promptDocumentRules}),r.chapterDrafts,{forbidDrawingImages:!1,promptRules:r.promptDocumentRules});r.finalChapterDrafts=u.chapters.map(a=>{let b=r.effectiveChapters.find(b=>b.id===a.id)||a;return{...a,sections:a.sections||[],content:(0,k.w_)(a.content,b)}}),r.finalMarkdown=(0,z.rs)((0,z.V3)({templateId:r.template.id,templateName:r.template.name,title:r.template.outputTitle,requirement:r.requirement||"",projectRoot:r.projectRoot,projectId:r.projectId,exportSettings:r.template.exportSettings,generationSettings:r.template.generationSettings,facts:r.facts,structuredFacts:r.structuredFacts,factsModel:r.factsModel,chapters:r.finalChapterDrafts,sources:r.sources,missingItems:[...new Set(r.missingItems)],validation:r.validation,validationIssues:r.validationIssues,executionStages:r.executionStages,exportGate:{passed:!1,blockingIssues:[],checklist:[]},assets:r.assets,partialChapters:[],checkpointChapters:r.finalChapterDrafts,generatedAt:Date.now()},{forbidDrawingImages:!1,promptRules:r.promptDocumentRules}),r.finalChapterDrafts,{forbidDrawingImages:!1,promptRules:r.promptDocumentRules}).markdown,r.finalMarkdown=(0,p._D)((0,k.Ht)(bU((0,z.bR)((0,z.kT)((0,z.K7)(bL((0,k.jO)(r.finalMarkdown,r.structuredFacts),r.projectMaterialSummary)))),r.template))).markdown,r.finalMarkdown=(0,A.u7)(r.finalMarkdown,bV({promptRules:r.promptDocumentRules,projectRoot:r.projectRoot})),await b_(r),await b1(r),await b5(r),await b8(r),await cb(r),await cv(r),await cw(r),await co(r),await cB(r),await cD(r);let v=r.finalChapterDrafts.map(a=>({...a,evidence:(0,g.QR)(a.evidence||[],{preservePinned:!0})}));return r.finalChapterDrafts=v,{templateId:r.template.id,templateName:r.template.name,title:r.template.outputTitle,requirement:q||"",projectRoot:r.projectRoot,projectId:r.projectId,exportSettings:r.template.exportSettings,generationSettings:r.template.generationSettings,facts:r.facts,structuredFacts:r.structuredFacts,factsModel:r.factsModel,chapters:v,sources:r.sources,missingItems:[...new Set(r.missingItems)],validation:r.validation,validationIssues:r.validationIssues,exportGate:r.qualityBundle.finalExportGate,executionStages:r.finalStages,assets:r.assets,partialChapters:r.finalChapterDrafts.map(a=>({id:a.id,title:a.title,chars:(0,h.V7)(a.content),status:(0,k.DR)(a,r.documentBudget.chapterTargets.get(a.id)),updatedAt:Date.now()})),checkpointChapters:v,promptRules:r.promptDocumentRules,agentWorkflow:r.agentWorkflow,reviewMetadata:{chapterSummaries:[],globalIssues:[],diagnostics:r.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:r.template,chapters:e,requirement:q}),knowledgeCoverage:r.qualityBundle.knowledgeCoverage,factTraces:r.qualityBundle.factTraces,chapterCoverage:r.qualityBundle.chapterCoverage,retrievalCoverage:r.retrievalCoverageReports,qualityReport:r.qualityBundle.qualityReport,repairStrategies:r.qualityBundle.repairStrategies,reviewChecklist:r.reviewChecklist,professionalScore:r.professionalScore,templatingReviewIssues:r.templatingReview.issues,authorityAudit:r.authorityAuditReport,suspensionChecklist:r.suspensionChecklist??(r.qualityBundle.finalExportGate.passed?void 0:(0,i.aF)(r.qualityBundle.finalExportGate.blockingIssues,r.finalChapterDrafts)),writingTaskBrief:r.writingTaskBrief,workflowVersion:j.x,telemetry:r.telemetry},generatedAt:Date.now(),markdown:r.finalMarkdown}}var cF=c(71678),cG=c(29055);let cH=[{id:"overview",title:"工程概况与总体理解",requiredSectionPatterns:[/编制依据|编制说明/u,/工程概况|项目概况|基本概况/u,/现场踏勘|施工条件|现场条件/u],chapterPatterns:[/概况|总体|理解|说明|编制|项目/u],remedy:"应设置工程概况章节,包含编制依据、工程基本概况、现场条件与总体理解。",level:"required"},{id:"major-content",title:"项目主要施工内容",requiredSectionPatterns:[/主要施工内容|主要施工项目|施工内容/u],chapterPatterns:[/概况|总体|理解|主要施工|工程/u],remedy:'必须包含"项目主要施工内容"小节,按工作包展开施工概况、施工流程、施工方法。',level:"required"},{id:"key-difficulty",title:"重难点分析与对策",requiredSectionPatterns:[/重点.*难点|难点.*对策|重难点/u],chapterPatterns:[/概况|总体|理解|重点|难点|施工/u],remedy:"应设置项目特点、重点、难点分析小节,并逐项给出应对措施与责任闭环。",level:"required"},{id:"deployment",title:"施工部署与施工组织",requiredSectionPatterns:[/施工部署|总体部署|流水|施工顺序|施工区段/u],chapterPatterns:[/部署|组织|总体|方案/u],remedy:"应设置施工部署小节,明确流水段划分、施工顺序与资源调配。",level:"required"},{id:"schedule",title:"进度计划与工期保障",requiredSectionPatterns:[/进度计划|工期|节点/u],chapterPatterns:[/进度|工期|计划|保障/u],remedy:"应设置进度计划与工期保障小节,含总进度计划、关键节点与纠偏措施。",level:"required"},{id:"quality",title:"质量保证体系与措施",requiredSectionPatterns:[/质量/u],chapterPatterns:[/质量|验收|保障|措施/u],remedy:"应设置质量保证体系与措施小节,含质量目标、三检、隐蔽验收、通病防治。",level:"required"},{id:"safety",title:"安全文明施工与危大工程管控",requiredSectionPatterns:[/安全/u,/危大工程|危大/u],chapterPatterns:[/安全|文明|风险|危大|保障|措施/u],remedy:"应设置安全管理与危大工程管控小节,含危险源辨识、危大清单、专项方案。",level:"required"},{id:"resources",title:"劳动力材料机械设备配置",requiredSectionPatterns:[/劳动力|机械设备|材料.*计划|资源配置|人材机/u],chapterPatterns:[/资源|劳动力|机械|材料|设备|计划/u],remedy:"应设置资源配置小节,含分阶段劳动力、机械设备投入与材料进场计划。",level:"required"},{id:"environment",title:"绿色文明施工与环保措施",requiredSectionPatterns:[/文明施工|扬尘|噪声|绿色|环保|四节/u],chapterPatterns:[/文明|绿色|环保|扬尘|噪声|保障|措施/u],remedy:"应设置文明施工与绿色施工小节,含扬尘噪声管控与四节一环保措施。",level:"required"},{id:"emergency",title:"应急管理体系",requiredSectionPatterns:[/应急/u],chapterPatterns:[/应急|安全|保障|措施/u],remedy:"应设置应急管理小节,含应急组织、物资储备与专项预案。",level:"recommended"}],cI={building:[{id:"key-difficulty",title:"危大工程专项管控(房建)",requiredSectionPatterns:[/深基坑|高支模|起重吊装|脚手架/u],chapterPatterns:[/危大|安全|专项/u],remedy:"房建项目应对深基坑、高支模、起重吊装、脚手架等危大工程逐项给出专项方案与安全管理措施。",level:"recommended"}],municipal:[{id:"key-difficulty",title:"交通导改与管线保护(市政)",requiredSectionPatterns:[/交通导改|交通导行|占道施工/u,/管线保护|管线探测/u],chapterPatterns:[/交通|管线|安全|专项|保障/u],remedy:"市政项目应设置交通导改与既有管线保护专项内容。",level:"recommended"}],renovation:[{id:"key-difficulty",title:"居民协调与既有保护(改造)",requiredSectionPatterns:[/居民|扰民|既有.*保护|不中断/u],chapterPatterns:[/居民|协调|保护|保障|专项/u],remedy:"改造项目应设置居民沟通协调与既有设施保护专项内容。",level:"recommended"}],decoration:[{id:"key-difficulty",title:"成品保护与交叉施工(装饰)",requiredSectionPatterns:[/成品保护/u,/交叉施工|工序穿插/u],chapterPatterns:[/成品保护|交叉|协调|保障|专项/u],remedy:"装饰项目应设置成品保护与交叉施工工序优化专项内容。",level:"recommended"}]};function cJ(a){return(0,aK.GQ)(a).replace(/\s+/gu,"").toLowerCase()}function cK(a){return cJ(`${a.title} ${(a.sections||[]).join(" ")}`).slice(0,800)}function cL(a){var b;let c,d=(b=a.chapters,[...cH].map(a=>{let c=[],d=new Set;for(let e of b){let b=cJ(`${e.title} ${(e.sections||[]).join(" ")}`);for(let f of a.requiredSectionPatterns)f.test(b)&&!d.has(f)&&(d.add(f),c.push(e.title))}let e=[...new Set(c)],f=a.requiredSectionPatterns.filter(a=>!d.has(a)).map(a=>(function(a){let b=a.source.replace(/[\\/^$.*+?()[\]{}]/gu,"").replace(/u$/u,"");return b.split("|").map(a=>a.trim()).find(Boolean)||b})(a)),g=d.size===a.requiredSectionPatterns.length?e.length>1?"fragmented":"satisfied":"missing";return{groupId:a.id,groupTitle:a.title,level:a.level,status:g,carrierChapters:e,missingSections:f,remedy:a.remedy}})),e=[],f=d.filter(a=>"required"===a.level&&"missing"===a.status);for(let a of f)e.push({level:"error",severity:"blocker",message:`评标结构缺失:${a.groupTitle}(缺少:${a.missingSections.join("、")})`,suggestion:a.remedy});for(let a of d.filter(a=>"fragmented"===a.status))e.push({level:"warning",severity:"warning",message:`${a.groupTitle} 小节散落在 ${a.carrierChapters.length} 个章节(${a.carrierChapters.join("、")}),结构可能失真`,suggestion:"建议将同类内容集中到一个承载章节,避免章节间职责重叠。"});for(let b of a.chapters){let a=(b.sections||[]).length;a>18&&e.push({level:"warning",severity:"warning",message:`${b.title} 规划小节 ${a} 个,超过 18 个上限,易产生内容膨胀与重复`,suggestion:"合并语义相近的小节,或将细分内容下移为三级小节而非二级小节。"})}let g=a.chapters.map(a=>({...a,sections:[...a.sections||[]]})),h=new Set;for(let a of f){let b=cH.find(b=>b.id===a.groupId);if(!b)continue;let c=g.findIndex(a=>{let c=cJ(a.title);return b.chapterPatterns.some(a=>a.test(c))&&!/雨季|冬季|高温|防汛|扬尘|噪声|工资|劳务|实名|应急|BIM|智慧|管线/u.test(c)}),d=g[c>=0?c:0];for(let c of a.missingSections.filter(a=>!h.has(a))){h.add(c);let a=!function(a){let b=(0,aK.GQ)(a).replace(/\s+/gu,"");return b.length>0&&b.length<=3&&/^[\u4e00-\u9fa5]+$/u.test(b)}(c)?c:b.title;!(0,cF.xb)(a)&&(d.sections.some(b=>cJ(b).includes(cJ(a))||cJ(a).includes(cJ(b)))||d.sections.push(a))}}let i=/^(?:确保\s*)?([人材机])(?:员|力|料|械|工)?\s*的保障体系与措施$/u;for(let a of g){if(!/人[、,,]材[、,,]机/u.test(a.title))continue;let b=new Set,c=[];for(let d of a.sections){if(cJ(d)===cJ(a.title))continue;let e=i.exec(d.trim());e?b.has(e[1])||(b.add(e[1]),c.push(d.trim())):c.push(d)}for(let a of["人","材","机"])b.has(a)||c.push(`确保${a}的保障体系与措施`);c.length!==a.sections.length&&(a.sections=c)}if(a.evaluationItems?.length){let b=a.chapters.map(cK);for(let{item:d}of(c=function(a,b,c){let d=[],e=a.map(cK);for(let a of b){let b=a.title;if(!b||e.some(a=>(function(a,b){let c=cJ(b);return!!c&&(a.includes(c)||c.includes(a.slice(0,40)))})(a,b)))continue;let f=0;if(c?.semanticSimilarity)for(let a of e)f=Math.max(f,c.semanticSimilarity(b,a));f>=.6||d.push({item:a,title:b,bestSimilarity:c?.semanticSimilarity?f:void 0})}return{items:b,uncovered:d}}(a.chapters,a.evaluationItems,{semanticSimilarity:a.semanticSimilarity})).uncovered){let c=d.title;if(!c||(0,aK.Fe)(c)||(0,aK.ob)(c)||(0,cF.xb)(c))continue;let f=b.reduce((b,d,e)=>{let f=a.semanticSimilarity?a.semanticSimilarity(c,d):+!!d.includes(cJ(c));return f>b.score?{index:e,score:f}:b},{index:-1,score:-1}).index,h=g[f>=0?f:0];h.sections.some(a=>cJ(a).includes(cJ(c))||cJ(c).includes(cJ(a)))||(h.sections.push(c),h.purpose=`${h.purpose||""};系统已按招标文件技术评审条目自动补足小节“${c}”,必须基于项目资料与适用技术展开实质内容。`,e.push({level:"warning",severity:"warning",message:`评分标准条目“${c}”无承接章节,已自动补小节“${c}”至“${h.title}”`,suggestion:"请确认补充小节与招标文件评审条目口径一致。"}))}}for(let b of(0,cG.y)(a))if("general"!==b)for(let a of cI[b]){let b=cJ(g.map(a=>`${a.title} ${(a.sections||[]).join(" ")}`).join(" "));if(a.requiredSectionPatterns.some(a=>a.test(b)))continue;let c=g.findIndex(b=>{let c=cJ(b.title);return a.chapterPatterns.some(a=>a.test(c))}),d=g[c>=0?c:0];(0,cF.xb)(a.title)||d.sections.push(a.title)}return{diagnostics:d,issues:e,enrichedChapters:g,criteriaAudit:c}}function cM(a){return a.replace(/\s+/gu,"").toLowerCase()}let cN=[{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:["劳务实名制管理","工资专用账户与银行代发","考勤与工资支付台账"]}],cO=["【结构完整性红线】有序列表编号必须从「1.」起连续、不得跳号或重号,小节内列表独立起编、不得继承父级编号;编号后必须紧跟实质内容(禁止孤立编号);禁止双重冒号「::」「;:」「。:」等行尾标点残留;禁止句子中途截断(行尾无终止标点)与整段重复行;每个小节必须有实质正文,禁止只写标题的空小节","【表格规范红线】每张表只允许一个表头行(禁止重复表头),表名必须独立成行(禁止混入表头首格);数据行不得留空单元格;禁止用「—/若干/约/待定/暂无/待补充」等占位或模糊表达代替具体数据(合计行的「—」与规格型号列「机具无型号」的「—」除外);合计行数值必须可由明细行相加推导;列数与表头一致;说明性内容必须用段落承载,禁止用表格单元格堆砌正文","【数据口径红线(宁缺毋假)】同一指标(劳动力总数、机械台数、工期阶段划分、班组人数等)全文档只允许一套口径,禁止在不同章节或表格中并列矛盾数值;禁止自行取平均值、保守值、众数等在多套口径中盲选统一;无法从资料锁定唯一数值时不得写具体数值(改用定性表述或显式标注待核),严禁编造数值或将候选值随手择一写入","【禁止资料堆砌伪段落】禁止以「本项目主要施工内容包括:X的Y量为Z……」「经识别,本项目工程量为:……」式清单罗列句充当正文段落;禁止把资料条目用顿号/分号首尾相接拼成伪句子;每段必须是连贯的施工描述(含施工对象、工序逻辑、工艺做法、参数落位),工程量清单类明细如需呈现应使用规范表格,不得用罗列句复制表格内容","【工期时序与分批口径红线】时间表述必须符合施工时序逻辑:前期准备动作(施工方案编制报审、图纸会审、交底、考察、封样、检测、培训演练、采购调查等)的完成时限必须落在施工准备阶段内,禁止出现「开工令下发后第 N 日内」且 N 达到或超过总工期的写法(等同于把前期动作排到竣工日);机械、设备、劳动力分批进场表述(首批/剩余/补充进场)各批次数量必须能合计推导为进场总数且与资源配置表同口径,禁止分批数量与总数互相矛盾"];var cP=c(30355),cQ=c(2773),cR=c(38115),cS=c(31129);async function cT(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 g,i=b+d;(0,e.Te)(a.global.input.signal);let j=a.understanding.rolePoolRisk??bk({totalChunks:0,loadedChunks:0,vectorReady:void 0}),l=a.blueprint.blueprintActive?{missing:[],failedChecks:[]}:(0,q.RT)(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,r.X5)({type:"chapter_generation",roleId:"chapter_generation",status:"failed",message:`${(0,aK.GQ)(c.title)} 依赖蓝图权威 [${l.missing.join("、")}],${b},已按节点级把关阻断生成`,details:["数值密集型章所需蓝图权威不可用时禁止无权威成稿","请检查清单解析与蓝图构建诊断后重试"],progress:{current:i+1,total:a.planning.effectiveChapters.length,label:"章节阻断"}},{subtitle:(0,aK.GQ)(c.title),order:i})),a.global.emitProgress(),Error(`${(0,aK.GQ)(c.title)} 依赖蓝图权威 [${l.missing.join("、")}],${b},已按节点级把关阻断生成`)}let s=Date.now(),t=a.global.progressStages.length;try{let b,d;a.global.progressStages.push((0,r.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:a.prepare.promptPlan.writerPrompts[0]?.id,status:"running",message:`${(0,aK.GQ)(c.title)} 正在检索证据并准备章节内容`,details:[`章节序号:${i+1}/${a.planning.effectiveChapters.length}`,`二级小节:${c.sections?.length||0} 个`,"正在生成检索查询"],progress:{current:i+1,total:a.planning.effectiveChapters.length,label:"章节生成"}},{subtitle:(0,aK.GQ)(c.title),order:i})),a.global.emitProgress();let u=a.global.input.resumeChapters?.find(a=>a.id===c.id||a.title===c.title),v=u?.content?.trim(),w=u?.evidence?.length?[...u.evidence]:[],x=a.prepare.projectUnderstanding.chapterPlans.find(a=>a.chapterId===c.id||a.chapterTitle===c.title),y=x?Object.values(x.evidenceQueries).flat().filter(Boolean):[],A=c.queries.length>0?c.queries:[a.prepare.template.name,a.prepare.template.outputTitle,c.title],B=a.understanding.chapterGraphMap.get(c.id);if(a.understanding.projectGraph&&B&&B.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[...B.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)w.push({chapterId:c.id,filePath:d.file?.relativePath||b,score:5+(B.graphWorks.length+B.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 C=a.planning.chapterIntentClassifier.needsBasicFacts(c.title),E=a.blueprint.billFactLock?(()=>{let b=cr(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))})():[],G=(0,k.QP)(c,[...A,...y,...E],[]),H=Date.now();a.global.progressStages[t]=(0,r.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:a.prepare.promptPlan.writerPrompts[0]?.id,status:"running",message:`${(0,aK.GQ)(c.title)} 正在执行质量优先的章节检索${B?.graphFiles.size?`(图谱匹配 ${B.graphFiles.size} 个文件)`:""}`,details:G.map(a=>`检索:${a.slice(0,42)}`),progress:{current:i+1,total:a.planning.effectiveChapters.length,label:"证据检索"}},{subtitle:(0,aK.GQ)(c.title),order:i}),a.global.emitProgress();let I=v?[]:[...a.understanding.availableEvidenceScopePaths].filter(Boolean).sort(),J=v?[]:a.understanding.scopedIntelligence?.evidenceByChapterId?.[c.id]||[];J.length>0&&w.push(...J);let K=[],L=(c.requiredFacts||[]).filter(a=>!!a&&!G.some(b=>b.includes(a)||a.includes(b))).map(a=>`${c.title} ${a}`),M=(a.prepare.requirementSemantics?.factClues||[]).filter(a=>!G.some(b=>b.includes(a)||a.includes(b))&&!L.some(b=>b.includes(a)||a.includes(b))).map(a=>`${c.title} ${a}`.trim()).slice(0,8),N=[...G,...L,...M];if(I.length>0&&N.length>0){(0,e.Te)(a.global.input.signal);let b=await (0,e.l$)(N,async b=>a.understanding.searchWithCache(b,I,Math.min(a.understanding.requestedEvidencePerChapter,12),c.title),{kind:"search"});K.push(...b)}for(let b of(a.planning.generationDiagnostics.evidence.searchQueries+=N.length,a.planning.generationDiagnostics.evidence.searchMs+=Date.now()-H,a.global.progressStages[t]=(0,r.X5)({type:"chapter_generation",roleId:"chapter_generation",status:"running",message:`${(0,aK.GQ)(c.title)} KB 检索完成:${N.length} 组查询,准备深度召回与语义排序`,progress:{current:i+1,total:a.planning.effectiveChapters.length,label:"证据检索"}},{subtitle:(0,aK.GQ)(c.title),order:i}),a.global.emitProgress(),K))w.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})));C&&I.length>0&&a.blueprint.basicFactSearchResults.length>0&&w.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 O=v?[]:await (0,cQ.$b)({manager:a.understanding.manager,projectRoot:a.prepare.projectRoot,chapter:c,plan:x,profile:a.prepare.projectMaterialProfile,scopedFilePaths:I,limitPerQuery:Math.min(a.understanding.requestedEvidencePerChapter,10),signal:a.global.input.signal}).catch(()=>[]);w.push(...O);let P=new Set((c.pinnedEvidenceFilePaths||[]).filter(Boolean)),Q=[];a.planning.chapterIntentClassifier.needsBasicFacts(c.title)&&w.push(...a.understanding.safeProjectBasicEvidence.map(a=>({...a,chapterId:c.id,source:"pinned-evidence"})));let R=a.understanding.writerEvidence.filter(a=>/招标|投标须知|评标办法|专用合同条款|投标人须知/u.test(`${a.filePath||""}${a.sectionTitle||""}`));for(let b of(/概况|工程|项目|总体|部署/u.test(c.title)&&R.length>0&&w.push(...R.map(a=>({...a,chapterId:c.id,source:"pinned-evidence"}))),new Set([...P]))){if(!(0,f.Tz)(a.prepare.projectRoot,b,a.understanding.evidenceScopePaths))continue;let d=P.has(b),e=a.understanding.getCachedFileDetail(b);e&&w.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 S=w.filter(b=>(0,f.Tz)(a.prepare.projectRoot,b.filePath,a.understanding.availableEvidenceScopePaths));if(!v&&a.prepare.webAccessConfig.enabled&&a.prepare.webAccessConfig.allowProjectFacts){let b=await _({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 T=v?[]:(0,cQ.SK)({project:a.understanding.project,chapter:c,plan:x,profile:a.prepare.projectMaterialProfile,scopedFilePaths:I,highRisk:j.highRisk});T.length>0&&S.push(...T),S=(0,m.Su)(S,a.understanding.projectMaterialScope),a.understanding.excludedEvidenceKeys.size>0&&(S=S.filter(b=>!a.understanding.excludedEvidenceKeys.has((0,cF.hM)(b))));let U=(()=>{let a=Number(process.env.DOCUMENT_SEMANTIC_TOP_CANDIDATES);return Number.isFinite(a)&&a>0?Math.floor(a):3e3})(),V=(0,k.Mz)(c,S,U),W=await (0,af.Mv)([cK(c)],V.map(k.t7)),X=(0,k.UG)(c,S,{preservePinned:!0,semantic:{similarity:W,queryText:cK(c)}},a.planning.generationDiagnostics);X=(0,o.pm)(X,a.understanding.canonicalFacts.scopeConflicts),(0,m.U2)(X,a.understanding.projectMaterialScope,`chapter:${c.id}:initial`);let Y=c.requiredFacts.filter(a=>!X.some(b=>(0,bi.Lk)(b,a))),Z=0,$=B?[B.graphWorks.length?`图谱识别本章工程内容:${B.graphWorks.join("、")}`:"",B.graphMethods.length?`图谱识别本章施工方法:${B.graphMethods.join("、")}`:"",B.graphBoqItems.length?`图谱识别本章BOQ清单项(${B.graphBoqItems.length}项):${B.graphBoqItems.map(a=>`${a.name} ${a.quantity}${a.unit}`).join("、")}`:"",B.gaps.length?`图谱识别本章资料缺口:${B.gaps.join(";")}`:""].filter(Boolean).join("\n"):"",aa=(0,o.Bf)(a.understanding.canonicalFacts.scopeConflicts),ab=a.planning.requirementsRoutes.length>0?(()=>{let b=(0,ag.NT)(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")})():"",ac=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%密闭运输":"",ad=(c.sections||[]).filter(a=>!/^(?:施工概况|施工流程|施工方法)$/u.test(a.trim())&&!/^附录/u.test(a.trim())),ae=ad.length>0?`【必须输出以下规划小节为三级标题(### 小节名),逐个小节展开正式正文:每小节正文不少于 100 字,不得只写标题、不得空小节、不得用表格替代正文;小节名与章标题相同或相近也必须输出,不得省略或合并】${ad.join("、")}`:"",ah=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=cr(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||[]}):"",ai=function(a,b){let c=b.indexOf(a),d=(a,b)=>`${(0,aK.tb)(a,b.title)}${b.sections?.length?`(小节:${b.sections.join("、")})`:""}`,e=b.map((a,b)=>({item:a,index:b})).filter(b=>b.item!==a);return["【跨章写作职责分工——只就本章主题展开,写时即不产生跨章重复】",`- 本章职责:${d(c>=0?c:0,a)}`,...e.length>0?["- 其他章节职责(不得展开复述其主题内容):",...e.map(a=>` - ${d(a.index,a.item)}`)]:[],"- 写作规范:只就本章主题展开;其他章节主题的内容如需关联,一句话引用(“详见第X章”,X 替换为实际章号),不得展开复述;写足本章预算字数,字数不足时深化本章主题内容,不得借写其他章节主题充数。"].join("\n")}(c,a.planning.effectiveChapters),aj=[$,ab,ae,ai,ac,aa.length?`【数据口径强制约束】${aa.join(";")}`:"",...cO,x?.writingGoal,x?.mustCover?.length?`本章必须覆盖:${x.mustCover.join("、")}`:"",x?.mustUseMaterialKinds?.length?`本章优先使用资料类型:${x.mustUseMaterialKinds.join("、")}`:"",ah].filter(Boolean).join("\n"),ak=(0,k.C_)(a.prepare.promptPlan,c);if(a.prepare.promptPlan.writerPrompts.length>0&&!ak.primaryWriter)throw Error(`${(0,aK.GQ)(c.title)} 写作主控提示词未进入章节生成阶段`);let al=[ak.promptTexts,a.prepare.generationControlPrompt].filter(Boolean).join("\n\n"),am=ak.promptDetails.length?ak.promptDetails:["未绑定章节写作提示词"],an=(0,n.rC)({template:a.prepare.template,chapter:c,spec:a.prepare.documentSpec,profile:a.prepare.domainProfile,promptTexts:al,requirement:a.global.input.requirement,plan:x?{requiredContents:x.mustCover,evidenceNeeds:Object.values(x.evidenceQueries).flat()}:void 0}),ao=(0,n.ji)({needs:an,factsModel:a.understanding.preliminaryFactsModel,evidence:S,profile:a.prepare.domainProfile,excludedEvidenceKeys:a.understanding.excludedEvidenceKeys}),ap=ao.filter(a=>a.need.required&&"satisfied"!==a.status).map(a=>a.need.label),aq=function(a){let b=(a.chapter.requiredFacts||[]).filter(b=>!a.evidence.some(a=>cM(`${a.sectionTitle||""}${a.content||""}`).includes(cM(b)))),c=a.evidence.length<3?["章节证据数量不足"]:[],d=b.length+c.length,e=d>=5?"high":d>=2?"medium":"low",f="high"===e?"evidence_first":b.length>0?"section_first":"normal";return{chapterId:a.chapter.id,chapterTitle:a.chapter.title,canGenerate:!0,riskLevel:e,missingFacts:b,missingEvidence:c,suggestedStrategy:f,reason:0===d?"章节事实与证据满足常规生成条件。":`识别到 ${d} 项生成前缺口,按 ${f} 策略生成。`}}({chapter:c,evidence:X}),ar=new Set(X.map(a=>a.filePath)).size,as=!!B&&(B?.graphFiles.size||0)>=8&&ar>=6&&0===Y.length&&"low"===aq.riskLevel,at=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:I.length,evidenceCount:X.length,evidenceFileCount:ar,suggestedStrategy:aq.suggestedStrategy,highRisk:j.highRisk,missingFactsCount:Y.length,requiredMissingNeedsCount:ap.length,riskLevel:aq.riskLevel});if(!as&&at&&I.length>0){let b=new Set([...Y,...ap]).size;b>0&&(a.global.progressStages[t]=(0,r.X5)({type:"chapter_generation",roleId:"chapter_generation",status:"running",message:`${(0,aK.GQ)(c.title)} 正在深度召回缺失事实证据(${b} 项需求)`,progress:{current:i+1,total:a.planning.effectiveChapters.length,label:"深度召回"}},{subtitle:(0,aK.GQ)(c.title),order:i}),a.global.emitProgress());let d=await bl({manager:a.understanding.manager,projectRoot:a.prepare.projectRoot,chapter:c,scopedFilePaths:I,fileRoleByPath:a.understanding.fileRoleByPath,fileProcessingByPath:a.understanding.fileProcessingByPath,requiredNeeds:[...new Set([...Y,...ap])],extraClues:a.prepare.requirementSemantics?.factClues||[],highRisk:j.highRisk||ap.length>0,signal:a.global.input.signal}).catch(()=>[]);Z=d.length,d.length>0&&(S=[...S,...(0,m.Su)(d,a.understanding.projectMaterialScope)],a.understanding.excludedEvidenceKeys.size>0&&(S=S.filter(b=>!a.understanding.excludedEvidenceKeys.has((0,cF.hM)(b)))),X=(0,k.UG)(c,S,{preservePinned:!0},a.planning.generationDiagnostics),X=(0,o.pm)(X,a.understanding.canonicalFacts.scopeConflicts),(0,m.U2)(X,a.understanding.projectMaterialScope,`chapter:${c.id}:deep`),Y=c.requiredFacts.filter(a=>!X.some(b=>(0,bi.Lk)(b,a)))),ap=(ao=(0,n.ji)({needs:an,factsModel:a.understanding.preliminaryFactsModel,evidence:S,profile:a.prepare.domainProfile,excludedEvidenceKeys:a.understanding.excludedEvidenceKeys})).filter(a=>a.need.required&&"satisfied"!==a.status).map(a=>a.need.label),a.global.progressStages[t]=(0,r.X5)({type:"chapter_generation",roleId:"chapter_generation",status:"running",message:`${(0,aK.GQ)(c.title)} 深度召回完成:命中 ${Z} 条${ap.length>0?`,仍缺 ${ap.length} 项(触发轻量补充)`:""}`,progress:{current:i+1,total:a.planning.effectiveChapters.length,label:"证据检索"}},{subtitle:(0,aK.GQ)(c.title),order:i}),a.global.emitProgress()}if(ap.length>0&&I.length>0){let b=(0,m.Su)(await bl({manager:a.understanding.manager,projectRoot:a.prepare.projectRoot,chapter:c,scopedFilePaths:I,fileRoleByPath:a.understanding.fileRoleByPath,fileProcessingByPath:a.understanding.fileProcessingByPath,requiredNeeds:ap,extraClues:a.prepare.requirementSemantics?.factClues||[],highRisk:!0,signal:a.global.input.signal}).catch(()=>[]),a.understanding.projectMaterialScope);b.length>0&&(S=[...S,...b],a.understanding.excludedEvidenceKeys.size>0&&(S=S.filter(b=>!a.understanding.excludedEvidenceKeys.has((0,cF.hM)(b)))),X=(0,k.UG)(c,S,{preservePinned:!0},a.planning.generationDiagnostics),X=(0,o.pm)(X,a.understanding.canonicalFacts.scopeConflicts),(0,m.U2)(X,a.understanding.projectMaterialScope,`chapter:${c.id}:supplemental`),Y=c.requiredFacts.filter(a=>!X.some(b=>(0,bi.Lk)(b,a))),ap=(ao=(0,n.ji)({needs:an,factsModel:a.understanding.preliminaryFactsModel,evidence:S,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,m.U2)(X,a.understanding.projectMaterialScope,`chapter:${c.id}:writer-session.global.input`),0===X.length&&a.understanding.missingItems.push(`${c.title}:缺少可支撑正文的项目资料证据`),Y))a.understanding.missingItems.push(`${c.title}:事实需求未满足 ${b}`);let au=(0,r.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,r.fx)(a.global.progressStages,au):a.global.progressStages[a.understanding.knowledgeBaseStageIndex]={...au,order:a.global.progressStages[a.understanding.knowledgeBaseStageIndex]?.order??au.order},a.global.emitProgress(),(0,e.Te)(a.global.input.signal);let av=new Map,aw=b=>{let d=(0,e.c6)({kind:"section",query:`${c.title} ${b}`.trim(),scopedFilePaths:I}),f=av.get(d);if(f)return Promise.resolve(f);let g=(0,bn.Ym)(b,c,X),h=g.filter(a=>bv.AM.test(a.content)).length;return g.length>=4&&h>=1?(av.set(d,g),Promise.resolve(g)):(0,k.hW)({manager:a.understanding.manager,projectRoot:a.prepare.projectRoot,chapter:c,sectionTitle:b,scopedFilePaths:I,fileRoleByPath:a.understanding.fileRoleByPath,fileProcessingByPath:a.understanding.fileProcessingByPath,signal:a.global.input.signal}).then(a=>(av.set(d,a),a))},ax=function(a){let b=a.chapter.sections?.length||0,c=(a.chapter.sections||[]).filter(b=>a.evidence.some(a=>(0,bi.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,bi.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:X,risk:j});a.understanding.retrievalCoverageReports.push(ax);let ay=new Set(X.map(a=>a.filePath)),az=X.reduce((a,b)=>a+b.content.length,0),aA=[...j.highRisk?[`召回覆盖风险(${j.riskReason||"切片未完全预加载"}):已加载 ${j.loadedChunks}/${j.totalChunks},已启用深召回`]:[],`项目理解缓存证据:${J.length} 条`,`深召回证据:${Z} 条`,`事实覆盖:${ax.requiredFactCovered}/${ax.requiredFactTotal}`,`小节覆盖:${ax.sectionCovered}/${ax.sectionTotal}`];a.global.progressStages[t]=(0,r.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:a.prepare.promptPlan.writerPrompts[0]?.id,status:"running",message:`${(0,aK.GQ)(c.title)} 已选取 ${X.length} 条高相关证据,正在生成正文`,details:[`使用绑定文件:${ay.size} 份`,`上下文字符:${az}`,`检索查询:${G.length} 组`,...aA],progress:{current:i+1,total:a.planning.effectiveChapters.length,label:"正文生成"}},{subtitle:(0,aK.GQ)(c.title),order:i}),a.global.emitProgress(),a.planning.generationDiagnostics.evidence.contextChars+=az;let aB=(0,n.n9)(ao),aC=a.planning.chapterIntentClassifier.needsBasicFacts(c.title)?a.understanding.earlyFactPool.projectBasicFacts:[],aD=(0,bn.qX)((0,bn.hZ)({chapter:c,plan:void 0,spec:a.prepare.documentSpec,roleFacts:Q,evidence:X,missingFacts:Y,indexedFacts:[...aC,...aB],resolvedFactNeeds:ao,factNeedsPrompt:(0,n.GK)(ao),specAuthorityMap:a.understanding.preliminaryFactsModel.specAuthorityMap})),aE=(0,cP.up)({plan:a.planning.plannedDocument.plan,chapter:c,context:a.understanding.agentWorkflow,evidence:X});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,bm.cN)(a.understanding.agentWorkflow),(0,r.fx)(a.global.progressStages,(0,r.X5)({type:"validation",roleId:`agent-chapter-task-${c.id}`,status:aE.task.ready||v?"success":"failed",message:aE.task.ready?aE.node.outputSummary||`${(0,aK.GQ)(c.title)} 章节任务规划完成`:v?`${(0,aK.GQ)(c.title)} 章节任务未完全就绪,已复用已有正文并交由 Reviewer/Repairer 处理`:aE.node.outputSummary||`${(0,aK.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&&!v)throw Error(`${(0,aK.GQ)(c.title)} 章节任务未就绪:${aE.task.issues.map(a=>a.message).join(";")}`);let aF={total:ao.length,satisfied:ao.filter(a=>"satisfied"===a.status).length,missing:ao.filter(a=>"missing"===a.status).length,lowConfidence:ao.filter(a=>"low_confidence"===a.status).length};for(let b of ap)a.understanding.missingItems.push(`${c.title}:事实需求未确认 ${b}`);let aG=a.planning.documentBudget.chapterTargets.get(c.id)||1200,aH=c.sections?.filter(Boolean).length||0,aI=(0,k.gq)({budgetTarget:aG,sectionCount:aH,title:c.title,longformStrict:a.planning.documentBudget.longformStrict}),aJ=Math.ceil(aI.maxWords*(a.planning.documentBudget.maxChars?1.05:1)),aL=(0,q.jM)(c.title,a.planning.chapterIntentClassifier).length>0,aM=(a.blueprint.blueprintActive||aL&&0===l.missing.length)&&a.blueprint.integratedBlueprint?(0,q.md)(a.blueprint.integratedBlueprint,c.title):void 0,aN=aM&&a.blueprint.integratedBlueprint?(0,q.uw)(aM,a.blueprint.integratedBlueprint.data):"",aO=aI.roundTarget,aP=aH>0?a.planning.documentBudget.longformStrict?aO:Math.min(aO,Math.max(1800,aI.structureTarget)):aO,aQ=0,aR=b=>{let d=Date.now();if(d-aQ<3e3)return;aQ=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}
58
58
 
59
- ${e}`,evidence:X,missingFacts:Y,sections:c.sections||[],tablePlans:c.tablePlans||[],inProgress:!0}])},aS=a=>{"complete"===a.phase&&a.partialSections&&aR(a.partialSections)};if(v)d=(0,k.w_)(v,c),d=await (0,k._k)(d,a.understanding.bidProcedureJudge),g=(0,r.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:ak.primaryPromptId,status:"success",message:`${(0,aK.GQ)(c.title)} 已复用已有章节正文:当前 ${(0,h.V7)(d)} 字,跳过 Writer,直接进入章节收口`,details:[`有效证据:${X.length} 条`,`事实需求:${aF.satisfied}/${aF.total} 已满足,缺失 ${aF.missing},低置信 ${aF.lowConfidence}`,"来源:resumeChapters/checkpointChapters"],progress:{current:i+1,total:a.planning.effectiveChapters.length,label:"复用章节"}},{subtitle:(0,aK.GQ)(c.title),order:i}),a.global.progressStages[t]=g,a.global.emitProgress(a.global.chapterDrafts);else{let g;a.global.progressStages[t]=(0,r.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:ak.primaryPromptId,status:"running",message:`${(0,aK.GQ)(c.title)} 正在规划主题块并准备并发成稿`,details:[...am,`有效证据:${X.length} 条`,`事实需求:${aF.satisfied}/${aF.total} 已满足,缺失 ${aF.missing},低置信 ${aF.lowConfidence}`,aI.label,`生成上限约 ${aJ} 字`,`模板细目:${c.sections?.length||0} 条`,"先由章级 Planner 聚类为主题块并语义合并,再按主题块全并发出稿,避免逐小节碎片化"],progress:{current:i+1,total:a.planning.effectiveChapters.length,label:"主题块并发"}},{subtitle:(0,aK.GQ)(c.title),order:i}),a.global.emitProgress();let h=async(a,b,c)=>{let d=await Promise.all(b.map(({block:b})=>(0,bn.nl)({...a,targetWords:b.targetWords,maxWords:Math.ceil(1.1*b.targetWords)},{blocks:[b],coveredSections:[],fallbackSections:[]}).then(a=>a?.markdown).catch(()=>void 0))),e=[...c];return b.forEach(({index:a},b)=>{let c=d[b];c&&(e[a]=c.replace(/^##\s+.+$/mu,"").trim())}),e},j=await a.global.withProgressHeartbeat(()=>(0,f.X6)(a.planning.generationDiagnostics,`chapter-plan:${c.id}`,async()=>(0,q.OY)({blueprintChapter:aM,inputSections:c.sections||[],chapterTitle:(0,aK.GQ)(c.title),targetWords:aP,projectContext:a.planning.projectContext,evidence:X}))),l=await a.global.withProgressHeartbeat(()=>(0,cR.G8)({chapterTitle:(0,aK.GQ)(c.title),blocks:j.blocks.map(a=>({title:a.title,pointTitles:a.subPoints.map(a=>a.title)})),fingerprintPool:a.planning.fingerprintPool||(0,cS.$R)(),excludeDocumentId:a.global.input.diversitySeed,profile:a.planning.diversityProfile,signal:a.global.input.signal,diagnostics:a.planning.generationDiagnostics}));if(l.renamed>0&&(j={...j,blocks:j.blocks.map((a,b)=>({...a,title:l.titles[b]}))}),j.blocks.length>0){b=j;let d=[al,(0,cP.$8)(aE.task,j)].filter(Boolean).join("\n\n"),e=j.blocks.reduce((a,b)=>a+b.subPoints.length,0),k=j.blocks.reduce((a,b)=>a+b.subPoints.reduce((a,b)=>a+Math.max(0,b.sources.length-1),0),0),m=aM?j.fallbackSections.length>0?`(蓝图章切片确定性转换:${j.fallbackSections.length} 条细目由覆盖校验挂回主题块)`:"(蓝图章切片确定性转换:主题块来自蓝图小节/工作包)":"(蓝图未覆盖本章,已按语义域确定性分组)";a.global.progressStages[t]=(0,r.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:ak.primaryPromptId,status:"running",message:`${(0,aK.GQ)(c.title)} 已规划 ${j.blocks.length} 个主题块,正在按主题块并发成稿${m}`,details:[...am,`有效证据:${X.length} 条`,`输入细目 ${aH} 条 → 主题块 ${j.blocks.length} 个(每块 2~4 个 H4 要点)`,`语义合并 ${k} 条细目,目录级 H4 合计 ${e} 个`,"单块 1200~2200 字,主题块间全并发,单节深度与整体耗时双优",...l.summary?[l.summary]:[]],progress:{current:i+1,total:a.planning.effectiveChapters.length,label:"主题块并发"}},{subtitle:(0,aK.GQ)(c.title),order:i});let n=a.global.progressStages.find(a=>a.roleId===`agent-chapter-task-${c.id}`);n&&(n.message=`${aE.task.sections.filter(a=>a.ready).length}/${aE.task.sections.length} 条细目任务就绪(已规划为 ${j.blocks.length} 个主题块)`),a.global.emitProgress(a.global.chapterDrafts);let o={template:a.prepare.template,chapter:c,evidence:X,missingFacts:Y,promptTexts:d,projectContext:a.planning.chapterScopedProjectContext(c),skeletonProjectContext:a.planning.projectContext,requirement:a.global.input.requirement,roleContext:aj,targetWords:aP,maxWords:aJ,forbidDrawingImages:!1,factCoverageContext:aD,compactProjectContext:!0,scopedProjectContext:!0,blueprintData:a.blueprint.integratedBlueprint?.validation.passed?a.blueprint.integratedBlueprint.data:void 0,blueprintChapter:aM,blueprintMustCiteHint:aN,sectionEvidenceProvider:aw,onSectionProgress:aS,diagnostics:a.planning.generationDiagnostics,signal:a.global.input.signal},p=await a.global.withProgressHeartbeat(()=>(0,f.X6)(a.planning.generationDiagnostics,`chapter-planned-block-draft:${c.id}`,()=>(0,bn.nl)(o,j)));if(p?.allSucceeded)g=p.markdown;else if(p){let a=await h(o,p.failedBlocks,p.sections);a.every(a=>!!a)&&(g=`## ${c.title}
59
+ ${e}`,evidence:X,missingFacts:Y,sections:c.sections||[],tablePlans:c.tablePlans||[],inProgress:!0}])},aS=a=>{"complete"===a.phase&&a.partialSections&&aR(a.partialSections)};if(v)d=(0,k.w_)(v,c),d=await (0,k._k)(d,a.understanding.bidProcedureJudge),g=(0,r.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:ak.primaryPromptId,status:"success",message:`${(0,aK.GQ)(c.title)} 已复用已有章节正文:当前 ${(0,h.V7)(d)} 字,跳过 Writer,直接进入章节收口`,details:[`有效证据:${X.length} 条`,`事实需求:${aF.satisfied}/${aF.total} 已满足,缺失 ${aF.missing},低置信 ${aF.lowConfidence}`,"来源:resumeChapters/checkpointChapters"],progress:{current:i+1,total:a.planning.effectiveChapters.length,label:"复用章节"}},{subtitle:(0,aK.GQ)(c.title),order:i}),a.global.progressStages[t]=g,a.global.emitProgress(a.global.chapterDrafts);else{let g;a.global.progressStages[t]=(0,r.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:ak.primaryPromptId,status:"running",message:`${(0,aK.GQ)(c.title)} 正在规划主题块并准备并发成稿`,details:[...am,`有效证据:${X.length} 条`,`事实需求:${aF.satisfied}/${aF.total} 已满足,缺失 ${aF.missing},低置信 ${aF.lowConfidence}`,aI.label,`生成上限约 ${aJ} 字`,`模板细目:${c.sections?.length||0} 条`,"先由章级 Planner 聚类为主题块并语义合并,再按主题块全并发出稿,避免逐小节碎片化"],progress:{current:i+1,total:a.planning.effectiveChapters.length,label:"主题块并发"}},{subtitle:(0,aK.GQ)(c.title),order:i}),a.global.emitProgress();let h=async(a,b,c)=>{let d=await Promise.all(b.map(({block:b})=>(0,bn.nl)({...a,targetWords:b.targetWords,maxWords:Math.ceil(1.1*b.targetWords)},{blocks:[b],coveredSections:[],fallbackSections:[]}).then(a=>a?.markdown).catch(()=>void 0))),e=[...c];return b.forEach(({index:a},b)=>{let c=d[b];c&&(e[a]=c.replace(/^##\s+.+$/mu,"").trim())}),e},j=await a.global.withProgressHeartbeat(()=>(0,f.X6)(a.planning.generationDiagnostics,`chapter-plan:${c.id}`,async()=>(0,q.OY)({blueprintChapter:aM,inputSections:c.sections||[],chapterTitle:(0,aK.GQ)(c.title),targetWords:aP,projectContext:a.planning.projectContext,evidence:X}))),l=await a.global.withProgressHeartbeat(()=>(0,cR.G8)({chapterTitle:(0,aK.GQ)(c.title),blocks:j.blocks.map(a=>({title:a.title,pointTitles:a.subPoints.map(a=>a.title)})),fingerprintPool:a.planning.fingerprintPool||(0,cS.$R)(),excludeDocumentId:a.global.input.diversitySeed,profile:a.planning.diversityProfile,signal:a.global.input.signal,diagnostics:a.planning.generationDiagnostics}));if(l.renamed>0&&(j={...j,blocks:j.blocks.map((a,b)=>({...a,title:l.titles[b]}))}),j.blocks.length>0){b=j;let d=[al,(0,cP.$8)(aE.task,j)].filter(Boolean).join("\n\n"),e=j.blocks.reduce((a,b)=>a+b.subPoints.length,0),k=j.blocks.reduce((a,b)=>a+b.subPoints.reduce((a,b)=>a+Math.max(0,b.sources.length-1),0),0),m=aM?j.fallbackSections.length>0?`(蓝图章切片确定性转换:${j.fallbackSections.length} 条细目由覆盖校验挂回主题块)`:"(蓝图章切片确定性转换:主题块来自蓝图小节/工作包)":"(蓝图未覆盖本章,已按语义域确定性分组)";a.global.progressStages[t]=(0,r.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:ak.primaryPromptId,status:"running",message:`${(0,aK.GQ)(c.title)} 已规划 ${j.blocks.length} 个主题块,正在按主题块并发成稿${m}`,details:[...am,`有效证据:${X.length} 条`,`输入细目 ${aH} 条 → 主题块 ${j.blocks.length} 个(每块 2~4 个 H4 要点)`,`语义合并 ${k} 条细目,目录级 H4 合计 ${e} 个`,"单块 1800~2800 字,主题块间全并发,单节深度与整体耗时双优",...l.summary?[l.summary]:[]],progress:{current:i+1,total:a.planning.effectiveChapters.length,label:"主题块并发"}},{subtitle:(0,aK.GQ)(c.title),order:i});let n=a.global.progressStages.find(a=>a.roleId===`agent-chapter-task-${c.id}`);n&&(n.message=`${aE.task.sections.filter(a=>a.ready).length}/${aE.task.sections.length} 条细目任务就绪(已规划为 ${j.blocks.length} 个主题块)`),a.global.emitProgress(a.global.chapterDrafts);let o={template:a.prepare.template,chapter:c,evidence:X,missingFacts:Y,promptTexts:d,projectContext:a.planning.chapterScopedProjectContext(c),skeletonProjectContext:a.planning.projectContext,requirement:a.global.input.requirement,roleContext:aj,targetWords:aP,maxWords:aJ,forbidDrawingImages:!1,factCoverageContext:aD,compactProjectContext:!0,scopedProjectContext:!0,blueprintData:a.blueprint.integratedBlueprint?.validation.passed?a.blueprint.integratedBlueprint.data:void 0,blueprintChapter:aM,blueprintMustCiteHint:aN,sectionEvidenceProvider:aw,onSectionProgress:aS,diagnostics:a.planning.generationDiagnostics,signal:a.global.input.signal},p=await a.global.withProgressHeartbeat(()=>(0,f.X6)(a.planning.generationDiagnostics,`chapter-planned-block-draft:${c.id}`,()=>(0,bn.nl)(o,j)));if(p?.allSucceeded)g=p.markdown;else if(p){let a=await h(o,p.failedBlocks,p.sections);a.every(a=>!!a)&&(g=`## ${c.title}
60
60
 
61
- ${a.join("\n\n")}`)}}if(g||(a.planning.generationDiagnostics.llm.lastError=a.planning.generationDiagnostics.llm.lastError||"全部成稿路径未返回有效正文"),g&&aM&&a.blueprint.integratedBlueprint){let b=(0,q.C8)(g,aM,a.blueprint.integratedBlueprint.data);b.fixed.length>0?(g=b.markdown,a.planning.generationDiagnostics.llm.lastInfo=`蓝图引用对齐:${c.title} 回填 ${b.fixed.length} 处(${b.fixed.map(a=>`${a.anchor} ${a.from}→${a.to}`).join("、")})${b.missing.length?`;未引用缺口 ${b.missing.length} 项:${b.missing.join("、")}`:""}`):b.missing.length>0&&(a.planning.generationDiagnostics.llm.lastInfo=`蓝图引用缺口观测:${c.title} 未在正文引用 ${b.missing.length} 项 must_cite 参数(${b.missing.slice(0,6).join("、")}${b.missing.length>6?" 等":""}),由跨章一致性审查兑底`)}if(g&&a.blueprint.integratedBlueprint){let b=(0,p.Pl)(g,(0,F.i2)(a.blueprint.integratedBlueprint.data));if(b.fixedCount>0){g=b.markdown;let d=a.planning.generationDiagnostics.llm.lastInfo;a.planning.generationDiagnostics.llm.lastInfo=`${d?`${d};`:""}阶段劳动力口径对齐:${c.title} 回填 ${b.fixedCount} 处(${b.details.join("、")})`}}if((0,e.Te)(a.global.input.signal),!g){let b=`${(0,aK.GQ)(c.title)} 大模型未返回有效正文,已阻断生成`;throw a.global.progressStages[t]=(0,r.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:ak.primaryPromptId,status:"failed",message:b,details:[`LLM 最近错误:${a.planning.generationDiagnostics.llm.lastError||"空响应或超时"}`,`证据条数:${X.length}`],progress:{current:i+1,total:a.planning.effectiveChapters.length,label:"章节阻断"}},{subtitle:(0,aK.GQ)(c.title),order:i}),a.global.emitProgress(a.global.chapterDrafts),Error(b)}if(!g.trim())throw Error(`${(0,aK.GQ)(c.title)} 首次生成失败,未获得可用于定稿的正文`);let m=b&&b.blocks.length>0?b.blocks.map(a=>a.title):(c.sections||[]).filter(Boolean),n=b&&b.blocks.length>0?b.blocks.flatMap(a=>a.subPoints.map(a=>a.title)):[],o=g;m.length>0&&(o=(0,e.Ww)(o,m,3)),n.length>0&&(o=(0,e.Ww)(o,n,4)),d=(0,k.w_)(o,c),d=await (0,k._k)(d,a.understanding.bidProcedureJudge)}let aT=await bp({chapter:c,content:d,evidence:X}),aU=(0,h.V7)(d),aV=(0,z.r4)(d),aW=b&&b.blocks.length>0?b.blocks.map(a=>a.title):(c.sections||[]).filter(Boolean),aX=aW.filter((a,b)=>a!==aW[b-1]),aY=aX.length>0?aX:aV.length>0?aV:[],aZ=(0,D.qK)(d,[{title:c.title,content:d,sections:aY}]).map(a=>a.message),a$=aT.slice(0,6).map(a=>`小节事实密度需优化:${a}`),a_=[...aZ,...a$],a0=(0,k.md)(aU,aO,a_);return g=(0,r.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:ak.primaryPromptId,status:a0,message:(0,r.AQ)(`${(0,aK.GQ)(c.title)} 已由大模型成稿:当前 ${aU} 字;章节预算约 ${aI.budgetTarget} 字,本轮目标约 ${aI.roundTarget} 字${a_.length?`;待优化:${a_.slice(0,8).join("、")}`:""}`,s),details:[`本轮完成率:${Math.round(aU/Math.max(1,aI.roundTarget)*100)}%`,`结构目标约 ${aI.structureTarget} 字`,...am,`二级小节:${aY.length} 个`],progress:{current:i+1,total:a.planning.effectiveChapters.length,label:a_.length?"章节已生成":"章节达标"}},{subtitle:(0,aK.GQ)(c.title),order:i}),a.understanding.chapterGenerationStagesByOrder[i]=g,async()=>{let b={id:c.id,title:c.title,content:d,evidence:X,missingFacts:Y,sections:aY,tablePlans:c.tablePlans||[]};a.understanding.chapterDraftsByOrder[i]=b,a.global.chapterDrafts=a.understanding.chapterDraftsByOrder.filter(a=>!!a),a.global.emitProgress(a.global.chapterDrafts)}}catch(f){if(a.global.input.signal?.aborted)throw f;let b=a.planning.generationDiagnostics.llm.lastError,d=`failures=${a.planning.generationDiagnostics.llm.failures} retries=${a.planning.generationDiagnostics.llm.retries} reasoningTokens=${a.planning.generationDiagnostics.llm.reasoningTokens||0}`;console.error(`[gen] chapter ${c.title} failed:`,f,b?`| LLM lastError: ${b}`:"| LLM lastError: (none)","|",d);let e=`${c.title}:${f instanceof Error?f.message:"生成失败"}`;a.understanding.failedChapterMessages.push(e),g=(0,r.X5)({type:"chapter_generation",roleId:"chapter_generation",status:"failed",message:`${(0,aK.GQ)(c.title)} 生成失败:${e}`,details:[`LLM 最近错误:${b||"无记录"}`,`LLM 调用失败 ${a.planning.generationDiagnostics.llm.failures} 次、重试 ${a.planning.generationDiagnostics.llm.retries} 次`]},{subtitle:(0,aK.GQ)(c.title),order:i}),a.understanding.chapterGenerationStagesByOrder[i]=g}g&&(a.global.progressStages[t]=g),a.global.emitProgress(a.global.chapterDrafts)}))))d&&a.blueprint.reviewTaskPool.push(a.blueprint.reviewSemaphore.run(d))}await Promise.all(a.blueprint.reviewTaskPool),a.planning.generationDiagnostics.metrics.push({name:"phase:draft",startedAt:a.chapterLoop.draftPhaseStartedAt,endedAt:Date.now(),durationMs:Date.now()-a.chapterLoop.draftPhaseStartedAt}),a.chapterLoop.globalReviewPhaseStartedAt=Date.now(),a.chapterLoop.chapterDraftsFinal=a.understanding.chapterDraftsByOrder.filter(a=>!!a),a.understanding.chapterGenerationStages.push(...a.understanding.chapterGenerationStagesByOrder.filter(a=>!!a))}async function cU(a){let b=Math.round(([...a.planning.documentBudget.chapterTargets.values()].reduce((a,b)=>a+b,0)||a.planning.documentBudget.targetChars||0)/Math.max(1,a.planning.effectiveChapters.length)),c=(0,b2.z)().chapterConcurrency||0;a.blueprint.chapterConcurrency=a.planning.generationBudget.chapterConcurrency,a.blueprint.reviewConcurrency=a.planning.generationBudget.reviewConcurrency,(0,r.fx)(a.global.progressStages,(0,r.X5)({type:"validation",roleId:"chapter-concurrency",status:"success",message:`章节流水线调度:${a.planning.effectiveChapters.length} 章全部同批并行生成,审查修复 ${a.blueprint.reviewConcurrency} 路流水线(章节生成完立即进入审查,与后续章节生成重叠)`,details:[`有效章节数:${a.planning.effectiveChapters.length}`,`平均章节目标:${b} 字`,Number.isFinite(c)&&c>0?`章节并发来自 tuningProfile.chapterConcurrency=${Math.floor(c)}`:`全部章节并行生成,在飞调用不设并发上限;每章单轮修复(失败即放弃)`]},{subtitle:"章节流水线策略"})),a.global.emitProgress(),a.blueprint.reviewSemaphore=new e.jf(a.blueprint.reviewConcurrency),a.blueprint.reviewTaskPool=[];let d=[...a.understanding.availableEvidenceScopePaths].filter(Boolean).sort(),f=Date.now();a.blueprint.basicFactSearchResults=d.length>0?(await (0,e.l$)(k.xs,async b=>a.understanding.searchWithCache(b,d,Math.min(a.understanding.requestedEvidencePerChapter,12),""),{kind:"search"})).flat():[],a.planning.generationDiagnostics.evidence.searchQueries+=k.xs.length,a.planning.generationDiagnostics.evidence.searchMs+=Date.now()-f;let g=Date.now();try{a.blueprint.integratedBlueprint=(0,q.DL)({projectRoot:a.prepare.projectRoot,boundFilePaths:a.prepare.materialFilePaths,chapterTitles:a.planning.effectiveChapters.map(a=>a.title),templateName:a.prepare.template.name,basicFacts:(0,q.eT)(a.understanding.canonicalFacts),evidence:a.understanding.writerEvidence,facts:[...a.understanding.earlyFactPool.localFacts,...a.understanding.earlyFactPool.projectBasicFacts,...a.understanding.earlyFactPool.preciseFacts],signal:a.global.input.signal,diagnostics:a.planning.generationDiagnostics});let b=(0,q.Fq)(a.prepare.projectRoot,a.blueprint.integratedBlueprint),c=a.blueprint.integratedBlueprint.outline.chapters.reduce((a,b)=>a+b.subSections.reduce((a,b)=>a+b.workPackages.length,0),0);(0,r.fx)(a.global.progressStages,(0,r.X5)({type:"validation",roleId:"integrated-blueprint",status:a.blueprint.integratedBlueprint.validation.passed?"success":"failed",message:a.blueprint.integratedBlueprint.validation.passed?`一体化蓝图已构建并落盘:清单 ${a.blueprint.integratedBlueprint.diagnostics.boq?.totalEntries??0} 条目、标准板块 ${a.blueprint.integratedBlueprint.diagnostics.standardBlocksLoaded} 个、工作包 ${c} 个(校验通过,参数桶与章切片接管各章写作)`:`一体化蓝图已构建但校验未通过(参数桶不注入,不阻断生成):${a.blueprint.integratedBlueprint.validation.checks.filter(a=>!a.passed).map(a=>a.name).join("、")}`,details:[`耗时 ${Date.now()-g}ms`,`落盘:${b}`,`清单解析:${a.blueprint.integratedBlueprint.diagnostics.boq?`${a.blueprint.integratedBlueprint.diagnostics.boq.totalEntries} 条目 / ${a.blueprint.integratedBlueprint.diagnostics.boq.villageCount} 村 / 完整性校验${a.blueprint.integratedBlueprint.diagnostics.boq.complete?"通过":"未通过"}`:"未解析(见警告)"}`,`标准板块缺口:${a.blueprint.integratedBlueprint.diagnostics.standardBlockGaps.length>0?a.blueprint.integratedBlueprint.diagnostics.standardBlockGaps.join("、"):"无"}`,`四道校验:${a.blueprint.integratedBlueprint.validation.checks.map(a=>`${a.name}${a.passed?"✓":"✗"}`).join(" / ")}`,...a.blueprint.integratedBlueprint.diagnostics.warnings.slice(0,6).map(a=>`警告:${a}`)]},{subtitle:"一体化蓝图"})),a.global.emitProgress()}catch(b){a.blueprint.integratedBlueprint=void 0,(0,r.fx)(a.global.progressStages,(0,r.X5)({type:"validation",roleId:"integrated-blueprint",status:"failed",message:`一体化蓝图构建异常(参数桶不注入,不阻断生成):${b instanceof Error?b.message:String(b)}`,details:[`耗时 ${Date.now()-g}ms`,"蓝图异常时参数桶与章切片不注入,各章按证据独立成稿"]},{subtitle:"一体化蓝图"})),a.global.emitProgress()}if(a.blueprint.integratedBlueprint)try{let b=(0,q.wY)({projectRoot:a.prepare.projectRoot,boundFilePaths:a.prepare.materialFilePaths});a.blueprint.billFactLock=function(a){let b=a.boq;if(b&&0!==b.totalEntries)return{entries:b.entries.map(a=>({seq:a.seq,name:String(a.name||"").trim(),description:String(a.description||"").trim(),quantity:a.quantity,unit:String(a.unit||"").trim(),section:String(a.section||"").trim(),subsection:String(a.subsection||"").trim(),villageGroup:String(a.villageGroup||"").trim(),sourceFile:a.sourceFile,specQuantityPairs:cq(a.description).map(b=>({spec:b,quantity:`${a.quantity}${a.unit}`}))})),totalEntries:b.totalEntries,sourceFile:b.sourceFile,complete:b.complete}}({boq:b.boq}),a.blueprint.billFactLock&&(a.planning.generationDiagnostics.llm.lastInfo=`清单事实锁:锁定 ${a.blueprint.billFactLock.totalEntries} 条目(完整性校验${a.blueprint.billFactLock.complete?"通过":"未通过"}),写作直读与数值核对轮生效`)}catch(b){console.error(`[blueprint] 清单事实锁构建失败(章节按证据独立成稿):${b instanceof Error?b.message:String(b)}`),a.blueprint.billFactLock=void 0}a.blueprint.blueprintActive=!!a.blueprint.integratedBlueprint?.validation.passed}var cV=c(36366);async function cW(a){if(0===a.requirementSummary.length||0===a.chapters.length)return[];let b=a.chapters.map(a=>`【${(0,aK.GQ)(a.title)}】
61
+ ${a.join("\n\n")}`)}}if(g||(a.planning.generationDiagnostics.llm.lastError=a.planning.generationDiagnostics.llm.lastError||"全部成稿路径未返回有效正文"),g&&aM&&a.blueprint.integratedBlueprint){let b=(0,q.C8)(g,aM,a.blueprint.integratedBlueprint.data);b.fixed.length>0?(g=b.markdown,a.planning.generationDiagnostics.llm.lastInfo=`蓝图引用对齐:${c.title} 回填 ${b.fixed.length} 处(${b.fixed.map(a=>`${a.anchor} ${a.from}→${a.to}`).join("、")})${b.missing.length?`;未引用缺口 ${b.missing.length} 项:${b.missing.join("、")}`:""}`):b.missing.length>0&&(a.planning.generationDiagnostics.llm.lastInfo=`蓝图引用缺口观测:${c.title} 未在正文引用 ${b.missing.length} 项 must_cite 参数(${b.missing.slice(0,6).join("、")}${b.missing.length>6?" 等":""}),由跨章一致性审查兑底`)}if(g&&a.blueprint.integratedBlueprint){let b=(0,p.Pl)(g,(0,F.i2)(a.blueprint.integratedBlueprint.data));if(b.fixedCount>0){g=b.markdown;let d=a.planning.generationDiagnostics.llm.lastInfo;a.planning.generationDiagnostics.llm.lastInfo=`${d?`${d};`:""}阶段劳动力口径对齐:${c.title} 回填 ${b.fixedCount} 处(${b.details.join("、")})`}}if((0,e.Te)(a.global.input.signal),!g){let b=a.planning.generationDiagnostics.llm.lastError||"空响应或超时",d=`${(0,aK.GQ)(c.title)} 正文未达到成稿要求,已阻断生成(${b.slice(0,160)})`;throw a.global.progressStages[t]=(0,r.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:ak.primaryPromptId,status:"failed",message:d,details:[`阻断归因:${b}`,`证据条数:${X.length}`],progress:{current:i+1,total:a.planning.effectiveChapters.length,label:"章节阻断"}},{subtitle:(0,aK.GQ)(c.title),order:i}),a.global.emitProgress(a.global.chapterDrafts),Error(d)}if(!g.trim())throw Error(`${(0,aK.GQ)(c.title)} 首次生成失败,未获得可用于定稿的正文`);let m=b&&b.blocks.length>0?b.blocks.map(a=>a.title):(c.sections||[]).filter(Boolean),n=b&&b.blocks.length>0?b.blocks.flatMap(a=>a.subPoints.map(a=>a.title)):[],o=g;m.length>0&&(o=(0,e.Ww)(o,m,3)),n.length>0&&(o=(0,e.Ww)(o,n,4)),d=(0,k.w_)(o,c),d=await (0,k._k)(d,a.understanding.bidProcedureJudge)}let aT=await bp({chapter:c,content:d,evidence:X}),aU=(0,h.V7)(d),aV=(0,z.r4)(d),aW=b&&b.blocks.length>0?b.blocks.map(a=>a.title):(c.sections||[]).filter(Boolean),aX=aW.filter((a,b)=>a!==aW[b-1]),aY=aX.length>0?aX:aV.length>0?aV:[],aZ=(0,D.qK)(d,[{title:c.title,content:d,sections:aY}]).map(a=>a.message),a$=aT.slice(0,6).map(a=>`小节事实密度需优化:${a}`),a_=[...aZ,...a$],a0=(0,k.md)(aU,aO,a_);return g=(0,r.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:ak.primaryPromptId,status:a0,message:(0,r.AQ)(`${(0,aK.GQ)(c.title)} 已由大模型成稿:当前 ${aU} 字;章节预算约 ${aI.budgetTarget} 字,本轮目标约 ${aI.roundTarget} 字${a_.length?`;待优化:${a_.slice(0,8).join("、")}`:""}`,s),details:[`本轮完成率:${Math.round(aU/Math.max(1,aI.roundTarget)*100)}%`,`结构目标约 ${aI.structureTarget} 字`,...am,`二级小节:${aY.length} 个`],progress:{current:i+1,total:a.planning.effectiveChapters.length,label:a_.length?"章节已生成":"章节达标"}},{subtitle:(0,aK.GQ)(c.title),order:i}),a.understanding.chapterGenerationStagesByOrder[i]=g,async()=>{let b={id:c.id,title:c.title,content:d,evidence:X,missingFacts:Y,sections:aY,tablePlans:c.tablePlans||[]};a.understanding.chapterDraftsByOrder[i]=b,a.global.chapterDrafts=a.understanding.chapterDraftsByOrder.filter(a=>!!a),a.global.emitProgress(a.global.chapterDrafts)}}catch(f){if(a.global.input.signal?.aborted)throw f;let b=a.planning.generationDiagnostics.llm.lastError,d=`failures=${a.planning.generationDiagnostics.llm.failures} retries=${a.planning.generationDiagnostics.llm.retries} reasoningTokens=${a.planning.generationDiagnostics.llm.reasoningTokens||0}`;console.error(`[gen] chapter ${c.title} failed:`,f,b?`| LLM lastError: ${b}`:"| LLM lastError: (none)","|",d);let e=`${c.title}:${f instanceof Error?f.message:"生成失败"}`;a.understanding.failedChapterMessages.push(e),g=(0,r.X5)({type:"chapter_generation",roleId:"chapter_generation",status:"failed",message:`${(0,aK.GQ)(c.title)} 生成失败:${e}`,details:[`LLM 最近错误:${b||"无记录"}`,`LLM 调用失败 ${a.planning.generationDiagnostics.llm.failures} 次、重试 ${a.planning.generationDiagnostics.llm.retries} 次`]},{subtitle:(0,aK.GQ)(c.title),order:i}),a.understanding.chapterGenerationStagesByOrder[i]=g}g&&(a.global.progressStages[t]=g),a.global.emitProgress(a.global.chapterDrafts)}))))d&&a.blueprint.reviewTaskPool.push(a.blueprint.reviewSemaphore.run(d))}await Promise.all(a.blueprint.reviewTaskPool),a.planning.generationDiagnostics.metrics.push({name:"phase:draft",startedAt:a.chapterLoop.draftPhaseStartedAt,endedAt:Date.now(),durationMs:Date.now()-a.chapterLoop.draftPhaseStartedAt}),a.chapterLoop.globalReviewPhaseStartedAt=Date.now(),a.chapterLoop.chapterDraftsFinal=a.understanding.chapterDraftsByOrder.filter(a=>!!a),a.understanding.chapterGenerationStages.push(...a.understanding.chapterGenerationStagesByOrder.filter(a=>!!a))}async function cU(a){let b=Math.round(([...a.planning.documentBudget.chapterTargets.values()].reduce((a,b)=>a+b,0)||a.planning.documentBudget.targetChars||0)/Math.max(1,a.planning.effectiveChapters.length)),c=(0,b2.z)().chapterConcurrency||0;a.blueprint.chapterConcurrency=a.planning.generationBudget.chapterConcurrency,a.blueprint.reviewConcurrency=a.planning.generationBudget.reviewConcurrency,(0,r.fx)(a.global.progressStages,(0,r.X5)({type:"validation",roleId:"chapter-concurrency",status:"success",message:`章节流水线调度:${a.planning.effectiveChapters.length} 章全部同批并行生成,审查修复 ${a.blueprint.reviewConcurrency} 路流水线(章节生成完立即进入审查,与后续章节生成重叠)`,details:[`有效章节数:${a.planning.effectiveChapters.length}`,`平均章节目标:${b} 字`,Number.isFinite(c)&&c>0?`章节并发来自 tuningProfile.chapterConcurrency=${Math.floor(c)}`:`全部章节并行生成,在飞调用不设并发上限;每章单轮修复(失败即放弃)`]},{subtitle:"章节流水线策略"})),a.global.emitProgress(),a.blueprint.reviewSemaphore=new e.jf(a.blueprint.reviewConcurrency),a.blueprint.reviewTaskPool=[];let d=[...a.understanding.availableEvidenceScopePaths].filter(Boolean).sort(),f=Date.now();a.blueprint.basicFactSearchResults=d.length>0?(await (0,e.l$)(k.xs,async b=>a.understanding.searchWithCache(b,d,Math.min(a.understanding.requestedEvidencePerChapter,12),""),{kind:"search"})).flat():[],a.planning.generationDiagnostics.evidence.searchQueries+=k.xs.length,a.planning.generationDiagnostics.evidence.searchMs+=Date.now()-f;let g=Date.now();try{a.blueprint.integratedBlueprint=(0,q.DL)({projectRoot:a.prepare.projectRoot,boundFilePaths:a.prepare.materialFilePaths,chapterTitles:a.planning.effectiveChapters.map(a=>a.title),templateName:a.prepare.template.name,basicFacts:(0,q.eT)(a.understanding.canonicalFacts),evidence:a.understanding.writerEvidence,facts:[...a.understanding.earlyFactPool.localFacts,...a.understanding.earlyFactPool.projectBasicFacts,...a.understanding.earlyFactPool.preciseFacts],signal:a.global.input.signal,diagnostics:a.planning.generationDiagnostics});let b=(0,q.Fq)(a.prepare.projectRoot,a.blueprint.integratedBlueprint),c=a.blueprint.integratedBlueprint.outline.chapters.reduce((a,b)=>a+b.subSections.reduce((a,b)=>a+b.workPackages.length,0),0);(0,r.fx)(a.global.progressStages,(0,r.X5)({type:"validation",roleId:"integrated-blueprint",status:a.blueprint.integratedBlueprint.validation.passed?"success":"failed",message:a.blueprint.integratedBlueprint.validation.passed?`一体化蓝图已构建并落盘:清单 ${a.blueprint.integratedBlueprint.diagnostics.boq?.totalEntries??0} 条目、标准板块 ${a.blueprint.integratedBlueprint.diagnostics.standardBlocksLoaded} 个、工作包 ${c} 个(校验通过,参数桶与章切片接管各章写作)`:`一体化蓝图已构建但校验未通过(参数桶不注入,不阻断生成):${a.blueprint.integratedBlueprint.validation.checks.filter(a=>!a.passed).map(a=>a.name).join("、")}`,details:[`耗时 ${Date.now()-g}ms`,`落盘:${b}`,`清单解析:${a.blueprint.integratedBlueprint.diagnostics.boq?`${a.blueprint.integratedBlueprint.diagnostics.boq.totalEntries} 条目 / ${a.blueprint.integratedBlueprint.diagnostics.boq.villageCount} 村 / 完整性校验${a.blueprint.integratedBlueprint.diagnostics.boq.complete?"通过":"未通过"}`:"未解析(见警告)"}`,`标准板块缺口:${a.blueprint.integratedBlueprint.diagnostics.standardBlockGaps.length>0?a.blueprint.integratedBlueprint.diagnostics.standardBlockGaps.join("、"):"无"}`,`四道校验:${a.blueprint.integratedBlueprint.validation.checks.map(a=>`${a.name}${a.passed?"✓":"✗"}`).join(" / ")}`,...a.blueprint.integratedBlueprint.diagnostics.warnings.slice(0,6).map(a=>`警告:${a}`)]},{subtitle:"一体化蓝图"})),a.global.emitProgress()}catch(b){a.blueprint.integratedBlueprint=void 0,(0,r.fx)(a.global.progressStages,(0,r.X5)({type:"validation",roleId:"integrated-blueprint",status:"failed",message:`一体化蓝图构建异常(参数桶不注入,不阻断生成):${b instanceof Error?b.message:String(b)}`,details:[`耗时 ${Date.now()-g}ms`,"蓝图异常时参数桶与章切片不注入,各章按证据独立成稿"]},{subtitle:"一体化蓝图"})),a.global.emitProgress()}if(a.blueprint.integratedBlueprint)try{let b=(0,q.wY)({projectRoot:a.prepare.projectRoot,boundFilePaths:a.prepare.materialFilePaths});a.blueprint.billFactLock=function(a){let b=a.boq;if(b&&0!==b.totalEntries)return{entries:b.entries.map(a=>({seq:a.seq,name:String(a.name||"").trim(),description:String(a.description||"").trim(),quantity:a.quantity,unit:String(a.unit||"").trim(),section:String(a.section||"").trim(),subsection:String(a.subsection||"").trim(),villageGroup:String(a.villageGroup||"").trim(),sourceFile:a.sourceFile,specQuantityPairs:cq(a.description).map(b=>({spec:b,quantity:`${a.quantity}${a.unit}`}))})),totalEntries:b.totalEntries,sourceFile:b.sourceFile,complete:b.complete}}({boq:b.boq}),a.blueprint.billFactLock&&(a.planning.generationDiagnostics.llm.lastInfo=`清单事实锁:锁定 ${a.blueprint.billFactLock.totalEntries} 条目(完整性校验${a.blueprint.billFactLock.complete?"通过":"未通过"}),写作直读与数值核对轮生效`)}catch(b){console.error(`[blueprint] 清单事实锁构建失败(章节按证据独立成稿):${b instanceof Error?b.message:String(b)}`),a.blueprint.billFactLock=void 0}a.blueprint.blueprintActive=!!a.blueprint.integratedBlueprint?.validation.passed}var cV=c(36366);async function cW(a){if(0===a.requirementSummary.length||0===a.chapters.length)return[];let b=a.chapters.map(a=>`【${(0,aK.GQ)(a.title)}】
62
62
  ${(a.sections||[]).filter(Boolean).map(a=>`- ${a}`).join("\n")||"(本章暂无预设小节)"}`).join("\n\n"),c=await (0,bo.bb)((0,z.y4)('你是施工组织设计大纲校准专家。输入各章已有小节与招标评分项要求,只输出需要新增的小节。\n\n新增小节必须显性承接评分项要求(如"创优目标与奖惩承诺""绿色建筑等级达标专项""智慧工地实施""装配式专项施工方案"),只允许新增,不得修改或删除任何已有小节。\n\n只有当前章节结构确实缺少对应承接小节时才新增;已有小节已覆盖该要求时不要重复新增。\n\n新增小节标题必须具体、可直接成稿,控制在 16 个汉字以内;不得新增与评分项要求无关的小节,不得输出条款碎片(如"1委员会确定中")。\n\n只返回 JSON,不要返回 markdown。'),[`文档模板:${a.templateName}`,`招标评分项要求摘要(必须逐条在结构层显性承接):
63
63
  ${a.requirementSummary.map(a=>`- ${a}`).join("\n")}`,`各章当前小节列表:
64
64
  ${b}`,a.diversityDirective?`${a.diversityDirective}
@@ -156,7 +156,7 @@ ${V}`:""}`:`本节是「${a.chapter.title}」章的唯一小节(本章无细
156
156
  ${f}`:W,{forbidDrawingImages:a.forbidDrawingImages,compactProjectContext:a.compactProjectContext,scopedProjectContext:a.scopedProjectContext,chapterLevelContext:a.roleContext||"",minWords:b.targetWords,targetWords:b.targetWords,maxWords:Math.ceil(1.1*b.targetWords),maxTokens:Math.max(3200,Math.ceil(1.5*b.targetWords)),sharedFactLayerText:D,evidenceRankBoost:r,onlyRankBoosted:!0,skipT2Catalog:!0,evidenceFloorChars:1e3,evidenceCeilingChars:H,factCoverageContext:a.factCoverageContext||"",blueprintDataText:P,blueprintSliceText:Q,twoStep:!1,signal:a.signal,diagnostics:a.diagnostics}),u=a.diagnostics?await (0,k.X6)(a.diagnostics,`block-draft:${a.chapter.id}:${c}:a${d}`,o):await o();if(!u){console.error(`[gen][block-qc] 块写作返回空内容 attempt=${d}: ${b.title}(目标 ${b.targetWords} 字)`);continue}let w=u.replace(/^##\s+.+$/mu,"").trim(),y=(0,p.KJ)(i,w),B=/^###\s+\S+/mu.test(y)?y:`### ${b.title}
157
157
 
158
158
  ${y}`,C=[];if(z){let a=(0,p.I6)(B);a!==B&&(B=a);let b=(B.match(/^#{3,4}\s+(.+)$/gmu)||[]).map(a=>a.replace(/^#{3,4}\s+/u,""));C=K.filter(a=>!b.some(b=>(0,j.Sw)(b).includes((0,j.Sw)(a))))}let E=(0,q.vi)(B);E.cleaned.length>0&&(B=E.markdown,a.diagnostics&&(a.diagnostics.llm.lastInfo=`块结构确定性清理:${b.title}(${E.cleaned.length} 项)`));let G=(0,q.$t)(B),I=0===d&&G.blocking.length>0;I&&(af=(0,q.G5)(G,b.title)||"",console.error(`[gen][block-qc] 首轮结构完整性阻断(${G.blocking.length} 处): ${b.title}: ${G.blocking.slice(0,3).map(a=>a.message).join(" / ")}`));let J=(0,e.V7)(B);$=J;let L=`${D}
159
- ${v.map(a=>a.content).join("\n")}`,M=a.evidence.map(a=>a.content).join("\n"),N=(0,s.yT)("block-numeric-reconciliation",()=>(0,g.I)(B,L,M));N.mismatched.length>0&&a.diagnostics&&(a.diagnostics.llm.lastInfo=`数值核验:${b.title} 发现 ${N.mismatched.length} 处疑似错误数值(${N.mismatched.map(a=>`${a.found}→${a.expected}`).join("、")})`),C.length>0&&C.length<=2&&console.error(`[gen][block-qc] 骨架小缺口豁免(交修复链兜底 ${C.length} 个): ${b.title}: ${C.join("、")}`);let O=C.length<=2?[]:C;if(0===d)try{h=await (0,s.yT)("block-templating",()=>(0,t.SA)(B))}catch(a){console.error(`[gen][block-qc] 模板化扫描失败(放行): ${b.title}`,a)}let T=0===d&&void 0!==h&&(0,t.mv)(h);T&&h&&console.error(`[gen][block-qc] 首轮模板化阻断(套话 ${h.fillerSentences}/${h.totalSentences} 句、占比 ${(100*h.fillerRatio).toFixed(1)}%、模糊 ${h.vagueCount} 处): ${b.title}: ${h.fillerDetails.slice(0,3).join(" / ")}`);let U=[...v.filter(a=>n.some(b=>a.content.includes(b))).map(a=>a.content),...S].join("\n"),V=(0,s.yT)("block-fact-density",()=>(0,t.oM)(B,U)),ah=0===d&&V.blocking;ah&&console.error(`[gen][block-qc] 首轮密度缺口阻断(${V.verdict.params}/${V.verdict.required} 参数,材料 ${V.materialParams} 个): ${b.title}`);let ai=(0,t.jk)(`${a.chapter.title} ${b.title}`);if(0===d&&ai)try{l=await (0,s.yT)("block-attribution-quantification",()=>(0,t.o9)(B))}catch(a){console.error(`[gen][block-qc] 归因量化扫描失败(放行): ${b.title}`,a)}let aj=0===d&&void 0!==l&&(0,t.KM)(l);aj&&l&&console.error(`[gen][block-qc] 首轮归因量化阻断(双达标率 ${(100*l.bothRatio).toFixed(0)}%,${l.entries} 条目): ${b.title}`);let ak=(0,s.yT)("block-format-constraints",()=>(0,t.mY)(B)),al=0===d&&ak.length>0;al&&console.error(`[gen][block-qc] 首轮格式硬约束阻断(后台话术 ${ak.length} 行): ${b.title}: ${ak.slice(0,2).join(" / ")}`);let{missing:am,duplicates:an,extraneous:ao}=(0,s.yT)("block-structure-contract",()=>{let a=B.split("\n").map(a=>(0,j.Sw)(a)).filter(Boolean);return{missing:[...i.filter(b=>{let c=(0,j.Sw)(b);return!!c&&!a.some(a=>a.includes(c))}),...O.map(a=>`工作包小节:${a}`)],duplicates:(0,j.W6)(B),extraneous:(0,j.wx)(B,b.title,i,[...m],[...b.subPoints.flatMap(a=>a.sources),...K])}}),ap=0===d&&N.mismatched.length>0,aq=z&&!A?(0,x.V0)(c):void 0,ar=aq?(0,x.v_)(B):void 0,as=0===d&&void 0!==aq&&void 0!==ar&&ar!==aq,at=J<Math.floor(.85*b.targetWords),au=J>Math.ceil(1.15*b.targetWords);if((at||au)&&console.error(`[gen][block-qc] 篇幅越界阻断 attempt=${d}(${J} 字 vs 块目标 ${b.targetWords} 字,合同 ${Math.floor(.85*b.targetWords)}~${Math.ceil(1.15*b.targetWords)}): ${b.title}`),!at&&!au&&0===am.length&&0===an.length&&0===ao.length&&!ap&&!as&&!T&&!I&&!ah&&!aj&&!al)return B;if(X=am,Y=an,Z=ao,_=(0,g.n8)(N),aa=void 0!==aq&&ar!==aq?`【上一轮工序表达形式不符】本块指定的工序顺序表达形式为「${aq}」,上一轮正文${ar?`使用了「${ar}」形式`:"未见明确的工序顺序表达"}。必须改用「${aq}」形式重写工序顺序表达,内容与数值保持不变。`:"",ab=T&&h?`【上一轮空话套话句】以下句子是空泛口号(无责任岗位、量化标准、检查频次等可核查信息):${h.fillerDetails.map(a=>`“${a}”`).join("、")}。必须删除或改写为“责任岗位 + 执行动作 + 量化标准 + 检查频次 + 整改时限”式具体措施,并嵌入本节项目事实(不得编造数值)。`:"",ac=ah?`【上一轮量化参数密度不足】本节 ${V.verdict.chars} 字仅落位 ${V.verdict.params} 个不同量化参数(要求 ≥${V.verdict.required} 个,约 ${t.J5} 个/千字),材料中仍有未落位参数。必须从本节材料事实/证据中选取适用参数自然写入对应部位与工序(同一参数不得反复堆砌,不得从行业惯例或相邻章节借参数,不得编造)。`:"",ad=aj&&l?`【上一轮归因量化不达标】以下条目缺少“成因归因链”或“量化控制目标”的完整表达:${l.missing.map(a=>`“${a.text.slice(0,60)}”`).join("、")}。必须逐条补齐:先写难点/特点成因分析(为什么难),再写可核查的量化目标与控制措施(数值/指标),不得只写口号式措施。`:"",ae=al?`【上一轮后台/兜底话术】以下句子属于后台处理话术(不得出现在正式正文):${ak.map(a=>`“${a.slice(0,60)}”`).join("、")}。必须删除或改写为正式表述——用绑定资料中的明确事实替换“待确认/不适用/以招标文件为准”类表述;确实无资料支撑的内容直接删除该句,不得保留任何后台痕迹。`:"",ag=au?`【上一轮篇幅超限】当前输出 ${J} 字,超出本节篇幅上限 ${Math.ceil(1.15*b.targetWords)} 字(目标 ${b.targetWords} 字)。必须压缩重写:同类工序/措施合并叙述,相同内容只完整表述一次,删除重复铺陈与并列复述;保留全部 H4 标题与关键数值,把总字数压缩到 ${Math.floor(.9*b.targetWords)}~${Math.ceil(1.1*b.targetWords)} 字。`:"",0===am.length&&!I&&!ap&&!T&&!ah&&!aj&&!al){let c=(0,j.dY)((0,j.wq)(B),b.title,i,[...b.subPoints.flatMap(a=>a.sources)]),d=(0,e.V7)(c);if(d>=Math.floor(.85*b.targetWords)&&d<=Math.ceil(1.15*b.targetWords))return a.diagnostics&&(ao.length>0||an.length>0)&&(a.diagnostics.llm.lastInfo=`块标题层已确定性修复:${b.title}(清单外 ${ao.length} 个、重复 H4 ${an.length} 个;${J}→${d} 字)`),c}a.diagnostics&&(a.diagnostics.llm.lastError=`规划块质检未达标:${b.title}(${J} 字,缺 ${am.join("、")||"无"}${an.length?`,重复 H4 ${an.join("、")}`:""}${ao.length?`,清单外 ${ao.slice(0,5).join("、")}${ao.length>5?" 等":""}`:""}${G.blocking.length?`,结构缺陷 ${G.blocking.length} 处`:""}${ah?`,密度缺口 ${V.verdict.params}/${V.verdict.required}`:""}${aj&&l?`,归因量化 ${(100*l.bothRatio).toFixed(0)}%`:""}${al?`,后台话术 ${ak.length} 行`:""})`),console.error(`[gen][block-qc] 块质检不达标 attempt=${d}: ${b.title}(目标 ${b.targetWords} 字,实际 ${J} 字,缺 ${am.join("、")||"无"},重复 ${an.join("、")||"无"},清单外 ${ao.join("、")||"无"},结构缺陷 ${G.blocking.length} 处,密度缺口 ${ah?"是":"否"},归因量化 ${aj?"不达标":"达标"},后台话术 ${al?"有":"无"},keySection=${z||"none"})`)}catch(b){a.diagnostics&&(a.diagnostics.llm.lastError=b instanceof Error?b.message:String(b))}}},J=async(b,c)=>{A[c]=await I(b,c),A[c]&&a.onSectionProgress?.({completed:A.filter(Boolean).length,total:d.length,sectionTitle:b.title,phase:"complete",partialSections:[...A]})};d.length>0&&((0,j.Te)(a.signal),await J(d[0],0));for(let b=1;b<d.length;b+=z){(0,j.Te)(a.signal);let c=d.slice(b,b+z);await Promise.all(c.map((a,c)=>J(a,b+c)))}if(A.every(a=>!a))return;let K=d.map((a,b)=>({index:b,block:a})).filter(({index:a})=>!A[a]),L=[];for(let a=0;a<d.length;a+=1){let b=A[a];if(!b){c=void 0;continue}let e=(0,j.Sw)(d[a].title);c===e&&L.length>0?L[L.length-1]=`${L[L.length-1]}
159
+ ${v.map(a=>a.content).join("\n")}`,M=a.evidence.map(a=>a.content).join("\n"),N=(0,s.yT)("block-numeric-reconciliation",()=>(0,g.I)(B,L,M));N.mismatched.length>0&&a.diagnostics&&(a.diagnostics.llm.lastInfo=`数值核验:${b.title} 发现 ${N.mismatched.length} 处疑似错误数值(${N.mismatched.map(a=>`${a.found}→${a.expected}`).join("、")})`),C.length>0&&C.length<=2&&console.error(`[gen][block-qc] 骨架小缺口豁免(交修复链兜底 ${C.length} 个): ${b.title}: ${C.join("、")}`);let O=C.length<=2?[]:C;if(0===d)try{h=await (0,s.yT)("block-templating",()=>(0,t.SA)(B))}catch(a){console.error(`[gen][block-qc] 模板化扫描失败(放行): ${b.title}`,a)}let T=0===d&&void 0!==h&&(0,t.mv)(h);T&&h&&console.error(`[gen][block-qc] 首轮模板化阻断(套话 ${h.fillerSentences}/${h.totalSentences} 句、占比 ${(100*h.fillerRatio).toFixed(1)}%、模糊 ${h.vagueCount} 处): ${b.title}: ${h.fillerDetails.slice(0,3).join(" / ")}`);let U=[...v.filter(a=>n.some(b=>a.content.includes(b))).map(a=>a.content),...S].join("\n"),V=(0,s.yT)("block-fact-density",()=>(0,t.oM)(B,U)),ah=0===d&&V.blocking;ah&&console.error(`[gen][block-qc] 首轮密度缺口阻断(${V.verdict.params}/${V.verdict.required} 参数,材料 ${V.materialParams} 个): ${b.title}`);let ai=(0,t.jk)(`${a.chapter.title} ${b.title}`);if(0===d&&ai)try{l=await (0,s.yT)("block-attribution-quantification",()=>(0,t.o9)(B))}catch(a){console.error(`[gen][block-qc] 归因量化扫描失败(放行): ${b.title}`,a)}let aj=0===d&&void 0!==l&&(0,t.KM)(l);aj&&l&&console.error(`[gen][block-qc] 首轮归因量化阻断(双达标率 ${(100*l.bothRatio).toFixed(0)}%,${l.entries} 条目): ${b.title}`);let ak=(0,s.yT)("block-format-constraints",()=>(0,t.mY)(B)),al=0===d&&ak.length>0;al&&console.error(`[gen][block-qc] 首轮格式硬约束阻断(后台话术 ${ak.length} 行): ${b.title}: ${ak.slice(0,2).join(" / ")}`);let{missing:am,duplicates:an,extraneous:ao}=(0,s.yT)("block-structure-contract",()=>{let a=B.split("\n").map(a=>(0,j.Sw)(a)).filter(Boolean);return{missing:[...i.filter(b=>{let c=(0,j.Sw)(b);return!!c&&!a.some(a=>a.includes(c))}),...O.map(a=>`工作包小节:${a}`)],duplicates:(0,j.W6)(B),extraneous:(0,j.wx)(B,b.title,i,[...m],[...b.subPoints.flatMap(a=>a.sources),...K])}}),ap=0===d&&N.mismatched.length>0,aq=z&&!A?(0,x.V0)(c):void 0,ar=aq?(0,x.v_)(B):void 0,as=0===d&&void 0!==aq&&void 0!==ar&&ar!==aq,at=0===d&&J<Math.floor(.7*b.targetWords),au=0===d&&J>Math.ceil(1.4*b.targetWords);if(at||au?console.error(`[gen][block-qc] 篇幅越界阻断 attempt=${d}(${J} 字 vs 块目标 ${b.targetWords} 字,越界区 <${Math.floor(.7*b.targetWords)} 或 >${Math.ceil(1.4*b.targetWords)}): ${b.title}`):(J<Math.floor(.85*b.targetWords)||J>Math.ceil(1.15*b.targetWords))&&console.error(`[gen][block-qc] 篇幅接受区放行(${J} 字 vs 块目标 ${b.targetWords} 字,达标区 ${Math.floor(.85*b.targetWords)}~${Math.ceil(1.15*b.targetWords)}): ${b.title}`),!at&&!au&&0===am.length&&0===an.length&&0===ao.length&&!ap&&!as&&!T&&!I&&!ah&&!aj&&!al)return B;if(X=am,Y=an,Z=ao,_=(0,g.n8)(N),aa=void 0!==aq&&ar!==aq?`【上一轮工序表达形式不符】本块指定的工序顺序表达形式为「${aq}」,上一轮正文${ar?`使用了「${ar}」形式`:"未见明确的工序顺序表达"}。必须改用「${aq}」形式重写工序顺序表达,内容与数值保持不变。`:"",ab=T&&h?`【上一轮空话套话句】以下句子是空泛口号(无责任岗位、量化标准、检查频次等可核查信息):${h.fillerDetails.map(a=>`“${a}”`).join("、")}。必须删除或改写为“责任岗位 + 执行动作 + 量化标准 + 检查频次 + 整改时限”式具体措施,并嵌入本节项目事实(不得编造数值)。`:"",ac=ah?`【上一轮量化参数密度不足】本节 ${V.verdict.chars} 字仅落位 ${V.verdict.params} 个不同量化参数(要求 ≥${V.verdict.required} 个,约 ${t.J5} 个/千字),材料中仍有未落位参数。必须从本节材料事实/证据中选取适用参数自然写入对应部位与工序(同一参数不得反复堆砌,不得从行业惯例或相邻章节借参数,不得编造)。`:"",ad=aj&&l?`【上一轮归因量化不达标】以下条目缺少“成因归因链”或“量化控制目标”的完整表达:${l.missing.map(a=>`“${a.text.slice(0,60)}”`).join("、")}。必须逐条补齐:先写难点/特点成因分析(为什么难),再写可核查的量化目标与控制措施(数值/指标),不得只写口号式措施。`:"",ae=al?`【上一轮后台/兜底话术】以下句子属于后台处理话术(不得出现在正式正文):${ak.map(a=>`“${a.slice(0,60)}”`).join("、")}。必须删除或改写为正式表述——用绑定资料中的明确事实替换“待确认/不适用/以招标文件为准”类表述;确实无资料支撑的内容直接删除该句,不得保留任何后台痕迹。`:"",ag=au?`【上一轮篇幅超限】当前输出 ${J} 字,超出本节篇幅上限 ${Math.ceil(1.15*b.targetWords)} 字(目标 ${b.targetWords} 字)。必须压缩重写:同类工序/措施合并叙述,相同内容只完整表述一次,删除重复铺陈与并列复述;保留全部 H4 标题与关键数值,把总字数压缩到 ${Math.floor(.9*b.targetWords)}~${Math.ceil(1.1*b.targetWords)} 字。`:"",0===am.length&&!I&&!ap&&!T&&!ah&&!aj&&!al){let c=(0,j.dY)((0,j.wq)(B),b.title,i,[...b.subPoints.flatMap(a=>a.sources)]),f=(0,e.V7)(c),g=f>=Math.floor(.7*b.targetWords)&&f<=Math.ceil(1.4*b.targetWords);if(d>0||g)return a.diagnostics&&(ao.length>0||an.length>0)&&(a.diagnostics.llm.lastInfo=`块标题层已确定性修复:${b.title}(清单外 ${ao.length} 个、重复 H4 ${an.length} 个;${J}→${f} 字)`),c}a.diagnostics&&(a.diagnostics.llm.lastError=`规划块质检未达标:${b.title}(${J} 字,缺 ${am.join("、")||"无"}${an.length?`,重复 H4 ${an.join("、")}`:""}${ao.length?`,清单外 ${ao.slice(0,5).join("、")}${ao.length>5?" 等":""}`:""}${G.blocking.length?`,结构缺陷 ${G.blocking.length} 处`:""}${ah?`,密度缺口 ${V.verdict.params}/${V.verdict.required}`:""}${aj&&l?`,归因量化 ${(100*l.bothRatio).toFixed(0)}%`:""}${al?`,后台话术 ${ak.length} 行`:""})`),console.error(`[gen][block-qc] 块质检不达标 attempt=${d}: ${b.title}(目标 ${b.targetWords} 字,实际 ${J} 字,缺 ${am.join("、")||"无"},重复 ${an.join("、")||"无"},清单外 ${ao.join("、")||"无"},结构缺陷 ${G.blocking.length} 处,密度缺口 ${ah?"是":"否"},归因量化 ${aj?"不达标":"达标"},后台话术 ${al?"有":"无"},keySection=${z||"none"})`)}catch(b){a.diagnostics&&(a.diagnostics.llm.lastError=b instanceof Error?b.message:String(b))}}},J=async(b,c)=>{A[c]=await I(b,c),A[c]&&a.onSectionProgress?.({completed:A.filter(Boolean).length,total:d.length,sectionTitle:b.title,phase:"complete",partialSections:[...A]})};d.length>0&&((0,j.Te)(a.signal),await J(d[0],0));for(let b=1;b<d.length;b+=z){(0,j.Te)(a.signal);let c=d.slice(b,b+z);await Promise.all(c.map((a,c)=>J(a,b+c)))}if(A.every(a=>!a))return;let K=d.map((a,b)=>({index:b,block:a})).filter(({index:a})=>!A[a]),L=[];for(let a=0;a<d.length;a+=1){let b=A[a];if(!b){c=void 0;continue}let e=(0,j.Sw)(d[a].title);c===e&&L.length>0?L[L.length-1]=`${L[L.length-1]}
160
160
 
161
161
  ${l(b,e)}`:L.push(b),c=e}let M=(0,h.kT)((0,h.FD)(`## ${a.chapter.title}
162
162
 
@@ -221,7 +221,7 @@ ${b.content}`;return Math.min(1.8,.16*[...new Set([a.title,...a.sections||[],...
221
221
  ${a.map(a=>`- ${a}`).join("\n")}`)}},79227:(a,b,c)=>{c.d(b,{C:()=>f,previewGenerationBudgetForTemplate:()=>g});var d=c(46482),e=c(95734);function f(a){let b=Math.max(1,a.chapters.length),c=a.targetWords>0?Math.round(a.targetWords/b):1200,d=a.strategy,f=[],g=a.materialFileCount<4&&a.evidenceCount<6,h=Math.max(1,Math.min(b,(Number.isFinite(a.configuredChapterConcurrency)&&a.configuredChapterConcurrency>0?Math.floor(a.configuredChapterConcurrency):void 0)??b)),i=(0,e.Qf)(a.targetWords),j="fast"===d.mode?1:Math.max(1,b),{floorChars:k,ceilingChars:l}=c>=6e3?{floorChars:14e3,ceilingChars:4e4}:c>=3e3?{floorChars:11e3,ceilingChars:28e3}:{floorChars:8e3,ceilingChars:18e3},m=d.repairRoundBudget?d.repairRoundBudget:Math.max(2,Math.min(4,2+ +(a.targetWords>=2e4)+ +!!g)),n=Math.min(m*b,Math.max(12,2*b));return"strict"===d.mode&&f.push("strict:风险领域关键词命中(专项/安全/质量/验收/合同/合规等)"),a.targetWords>=4e4&&f.push("strict:目标篇幅超长(≥4 万字)"),g&&f.push("strict:资料稀疏(资料包文件 <4 且可用证据 <6 条)"),"fast"===d.mode&&f.push("fast:小文档(≤6000 字且 ≤4 章)全局审查降级为 35% 抽检"),"longform"===d.mode&&f.push("longform:长文档(≥3 万字或 ≥8 章)"),"balanced"===d.mode&&f.push("balanced:常规篇幅文档,标准审查深度"),f.push(`全章节并行生成(${h}/${b} 章同批),审查流水线 ${j} 路,全局 LLM 并发不设上限,每章证据预算 ${Math.round(k/1e3)}k-${Math.round(l/1e3)}k 字符,修复轮次预算每章 ${m} 轮(文档级总池 ${n} 轮,收敛判定优先)`),{strategy:d,chapterConcurrency:h,reviewConcurrency:j,llmConcurrency:i,evidenceFloorChars:k,evidenceCeilingChars:l,repairRoundBudget:m,repairPoolBudget:n,triggers:f}}function g(a){let b=Math.max(1,a.chapters.length),c=Math.max(0,Math.round(a.targetWords??0)),e=(0,d.JP)({template:a.template,targetWords:c,requirement:a.requirement,materialFileCount:a.materialFileCount,evidenceCount:a.evidenceCount}),g=f({template:a.template,chapters:a.chapters,targetWords:c,requirement:a.requirement,materialFileCount:a.materialFileCount,evidenceCount:a.evidenceCount,hasVeryLargeExplicitChapter:a.hasVeryLargeExplicitChapter??!1,configuredChapterConcurrency:a.configuredChapterConcurrency??0,strategy:e});return{mode:e.mode,enableGlobalReview:e.enableGlobalReview,globalReviewSamplingRate:e.globalReviewSamplingRate??1,repairRoundBudget:g.repairRoundBudget,chapterConcurrency:g.chapterConcurrency,reviewConcurrency:g.reviewConcurrency,evidenceFloorChars:g.evidenceFloorChars,evidenceCeilingChars:g.evidenceCeilingChars,targetWords:c,chapterCount:b,triggers:g.triggers}}},81010:(a,b,c)=>{c.d(b,{C8:()=>aj,dr:()=>as,OY:()=>ar,DL:()=>av,jM:()=>ab,RT:()=>ac,rR:()=>W,R3:()=>X,RY:()=>Y,Pd:()=>V,md:()=>ai,eT:()=>au,TF:()=>ag,Rx:()=>ad,uw:()=>ak,wY:()=>M,Fq:()=>aw});var d=c(19898),e=c(73024),f=c(48161),g=c(76760),h=c(22213),i=c(1218),j=c(22157),k=c(38115),l=c(78217),m=c(3063);let n={seq:1,code:2,name:4,description:5,unit:6,quantity:8};function o(a){let b=a.map(a=>a.replace(/\s+/gu,""));return b.includes("序号")&&b.includes("项目编码")}function p(a){let b=a.map(a=>a.replace(/\s+/gu,"")),c=a=>b.findIndex(b=>a.includes(b)),d=c(["序号"]),e=c(["项目编码"]),f=c(["项目名称"]),g=c(["计量单位","单位"]),h=c(["工程量"]);if(!(d<0)&&!(e<0)&&!(f<0)&&!(g<0)&&!(h<0))return{seq:d,code:e,name:f,description:c(["项目特征描述"]),unit:g,quantity:h}}function q(a){return/^[一二三四五六七八九十\d]+(?:\.\d+)?$/u.test(a.trim())&&!r.test(a.trim())}let r=/^(?:\d{12}|(?:ZB|WB)\d{12})$/u,s=/工作表:(\d+(?:\.\d+)?)/u,t=/第1页\s*共(\d+)页/u,u=/工程名称:(.+?)\s*标段/u,v=/工程名称:([^\n||]{2,40}?)\s*$/mu,w=/第(\d+)页\s*共\d+页/gu;function x(a){let b=s.exec(a.sectionTitle);if(b)return b[1];let c=a.content.split("\n")[0]||"",d=s.exec(c);return d?d[1]:""}function y(a){let b=new Map;for(let c of a){let a=b.get(c.villageGroup)||[];a.push(c),b.set(c.villageGroup,a)}return b}var z=c(22496),A=c(95734),B=c(10751),C=c(48661);let D=[{zone:"east",pattern:/上海|江苏|浙江|安徽|福建|江西|山东/u,climate:{rainySeason:"6-8月",highTemp:"7-8月",winter:"12-2月"}},{zone:"south",pattern:/广东|广西|海南/u,climate:{rainySeason:"4-9月",highTemp:"6-9月",winter:"12-2月"}},{zone:"north",pattern:/北京|天津|河北|山西|内蒙古/u,climate:{rainySeason:"7-8月",highTemp:"7-8月",winter:"11-3月"}},{zone:"northeast",pattern:/辽宁|吉林|黑龙江/u,climate:{rainySeason:"7-8月",highTemp:"7月",winter:"11-3月"}},{zone:"northwest",pattern:/陕西|甘肃|宁夏|青海|新疆/u,climate:{rainySeason:"7-8月",highTemp:"7-8月",winter:"11-3月"}},{zone:"southwest",pattern:/四川|重庆|云南|贵州|西藏/u,climate:{rainySeason:"6-9月",highTemp:"7-8月",winter:"12-2月"}},{zone:"central",pattern:/湖北|湖南|河南/u,climate:{rainySeason:"6-8月",highTemp:"7-8月",winter:"12-2月"}}];function E(a){let b=`${a.name} ${a.description}`;return/塑料管|管道|检查井|雨水口|化粪池|涵管/u.test(b)?"管道铺设":/挖一般土方|挖沟槽|挖基坑|回填|清淤|余方|弃置|土方/u.test(b)&&"m3"===a.unit?"土方工程":/混凝土|垫层|涵头|压顶/u.test(b)&&"m3"===a.unit?"混凝土工程":/水泥混凝土|路床|铺装|道路|青砖|散水|块料/u.test(b)&&"m2"===a.unit?"道路铺装":/砌筑|砌体|砖/u.test(b)?"砌筑工程":/绿化|栽植|种植|苗木|草籽|喷播|灌木|乔木|色带|草坪/u.test(b)?"绿化工程":"安装工程"}let F={id:"village-municipal",projectTypes:["市政","园林绿化"],milestoneGroups:[{key:"prep",label:"施工准备与清杂拆除",pattern:/清杂|拆除|场地平整|临时/u},{key:"pipe",label:"污水管网工程",pattern:/塑料管|检查井|管网|排水|化粪池|雨水口/u},{key:"road",label:"道路铺装工程",pattern:/道路|路床|水泥混凝土|级配碎石|路缘石|青砖|散水|过路涵/u},{key:"landscape",label:"景观与绿化工程",pattern:/景观|绿化|栽植|种植|苗木|喷播|小菜园|沟塘|清淤/u},{key:"lighting",label:"亮化与收尾工程",pattern:/路灯|亮化|配电|电缆|防雷/u}],groupOfEntry:E,tradeMapping:[{trade:"管道工",pattern:/塑料管|管道|检查井|雨水口|化粪池|闭水|涵管|排水/u},{trade:"混凝土工",pattern:/混凝土|水泥砂浆|垫层|涵头|压顶/u},{trade:"瓦工",pattern:/砌筑|砌体|砖|路缘石|铺装|侧石|平石|块料|踏步|台阶/u},{trade:"绿化工",pattern:/绿化|栽植|种植|苗木|草籽|喷播|养护|灌木|乔木|色带|草坪/u},{trade:"电工",pattern:/路灯|配电|电缆|强电|防雷|接地|灯具|亮化/u},{trade:"普工",pattern:/土方|清杂|拆除|平整|回填|清淤|开挖/u}],laborUnitRange:{管道铺设:{unit:"m",min:.15,max:.3},土方工程:{unit:"m3",min:.08,max:.15},混凝土工程:{unit:"m3",min:.8,max:1.5},道路铺装:{unit:"m2",min:.3,max:.6},砌筑工程:{unit:"m3",min:1.2,max:2},绿化工程:{unit:"m2",min:.08,max:.15},安装工程:{unit:"项",min:0,max:0}},equipmentMapping:[{name:"挖掘机",spec:"0.6~1.0m\xb3",pattern:/人机配合|开挖|挖土|沟槽/u,unit:"m3",basis:"人机配合开挖(清单特征)"},{name:"自卸汽车",spec:"8t",pattern:/余方弃置|弃方|外运|回填/u,unit:"m3",basis:"土方运输与回填(清单条目)"},{name:"压路机",spec:"8~12t",pattern:/碾压|压实度/u,unit:"m2",basis:"路床碾压与压实度要求(清单特征)"},{name:"蛙式打夯机",spec:"",pattern:/回填|夯实/u,unit:"m3",basis:"沟槽回填夯实(清单条目)"},{name:"混凝土搅拌运输车",spec:"",pattern:/商品混凝土|C\d{2}混凝土/u,unit:"m3",basis:"商品混凝土运输(清单特征)"},{name:"插入式振捣器",spec:"",pattern:/混凝土浇筑|振捣/u,unit:"m3",basis:"混凝土浇筑(清单条目)"},{name:"洒水车",spec:"",pattern:/养护|绿化|喷播|栽植/u,unit:"m2",basis:"绿化养护与洒水(清单条目)"},{name:"高空作业车",spec:"",pattern:/路灯|灯具安装/u,unit:"套",basis:"路灯安装(清单条目)"}],machinePowerTable:[{name:"挖掘机",kw:90},{name:"自卸汽车",kw:120},{name:"压路机",kw:75},{name:"蛙式打夯机",kw:3},{name:"混凝土搅拌运输车",kw:110},{name:"插入式振捣器",kw:1.5},{name:"洒水车",kw:90},{name:"高空作业车",kw:60}],laborCostRatio:{min:.15,max:.25},dailyWage:{min:250,max:350},inspectionBatchRules:[{scope:"污水管网管道",namePattern:/塑料管|管道/u,unit:"m",divisor:200,descTemplate:"管道闭水试验分段检验,按每 200m 一段划分约 {count} 段(总长 {total}m)"},{scope:"道路工程",namePattern:/水泥混凝土|级配碎石|路床/u,unit:"m2",divisor:200,descTemplate:"路床压实度按每层每 200m\xb2 不少于 1 点检验,约 {count} 点(总面积 {total}m\xb2)"},{scope:"检查井",namePattern:/检查井/u,unit:"",divisor:1,descTemplate:"检查井逐座验收,共 {total} 座"}],difficultyTemplates:[{name:a=>`${a.villages.length} 个自然村分散施工组织协调`,measure:"按自然村分组划分施工段,多村平行施工 + 村内流水作业,配置专职协调员",basis:"清单按自然村分组",test:a=>a.villages.length>=2},{name:"雨季管网沟槽施工",measure:"雨季排水与边坡防护,分段开挖、快速回填(联动季节施工措施板块)",basis:"清单含沟槽开挖与管道铺设条目",test:a=>a.entries.some(a=>/挖沟槽|沟槽开挖|塑料管铺设/u.test(`${a.name} ${a.description}`))},{name:"村庄内道路施工交通疏导",measure:"分段封闭施工,设置临时道路保障居民出行(补疑条款:居民出行临时道路)",basis:"清单含道路工程条目且村内施工",test:a=>a.villages.length>0&&a.entries.some(a=>/道路|路床|路面/u.test(a.name))},{name:"既有杆管线保护",measure:"开挖前探测交底,杆线保护措施费含在清单单价内",basis:"清单特征原文含杆线保护条款",test:a=>a.entries.some(a=>/杆线|管线保护|既有管线/u.test(a.description))}],deploymentFlowFallback:"分区段流水作业",multiVillageFlow:a=>`多村平行施工 + 村内流水作业(${a} 个自然村分组)`,sequenceFallback:"清杂拆除 → 管网道路 → 景观绿化 → 亮化收尾",climateZone:"east",powerFallbackText:"临时用电以村庄既有电源分散接入为主,各施工组单独设置配电箱与计量表(柴油机械不计入用电负荷,电动机具零星分散)",waterNoteText:"施工用水以洒水车供水为主,总用水量按管网分段配置"},G={id:"building",projectTypes:["房建","装饰装修"],milestoneGroups:[{key:"prep",label:"施工准备与三通一平",pattern:/清杂|拆除|场地平整|临建|临时|三通一平/u},{key:"foundation",label:"基础工程",pattern:/桩基|基础|基坑|地下室|降水|支护|土方|挖方|回填/u},{key:"structure",label:"主体结构工程",pattern:/钢筋|模板|砌体|主体|框架|剪力墙|现浇|混凝土/u},{key:"finish",label:"装饰装修工程",pattern:/装饰|抹灰|防水|保温|门窗|屋面|涂料|吊顶|幕墙/u},{key:"mep",label:"安装与收尾工程",pattern:/电气|给排水|暖通|消防|电梯|智能化|收尾|竣工|调试/u}],groupOfEntry:function(a){let b=`${a.name} ${a.description}`;return/土方|挖方|回填|弃置|清淤/u.test(b)&&"m3"===a.unit?"土方工程":/钢筋|植筋/u.test(b)?"钢筋工程":/模板|支模/u.test(b)?"模板工程":/混凝土|垫层|现浇/u.test(b)?"混凝土工程":/砌筑|砌体|砖/u.test(b)?"砌筑工程":/防水|卷材|涂膜/u.test(b)?"防水工程":/保温|挤塑|聚苯/u.test(b)?"保温工程":/装饰|抹灰|涂料|吊顶|幕墙|墙砖|地砖|油漆|门窗/u.test(b)?"装饰工程":/电气|给排水|配电|照明|灯具|插座|管线|穿线|桥架|暖通|消防|电梯/u.test(b)?"安装电气":"安装工程"},tradeMapping:[{trade:"钢筋工",pattern:/钢筋|植筋/u},{trade:"模板工",pattern:/模板|支模/u},{trade:"防水工",pattern:/防水|卷材|涂膜/u},{trade:"架子工",pattern:/脚手架|外架/u},{trade:"抹灰工",pattern:/抹灰|粉刷|抹面/u},{trade:"水电工",pattern:/电气|给排水|配电|照明|灯具|插座|管线|穿线|桥架/u},{trade:"保温工",pattern:/保温|挤塑|聚苯/u},{trade:"混凝土工",pattern:/混凝土|水泥砂浆|垫层/u},{trade:"瓦工",pattern:/砌筑|砌体|砖|块料|铺装|墙砖|地砖/u},{trade:"普工",pattern:/土方|清杂|拆除|平整|回填|清淤|开挖/u}],laborUnitRange:{土方工程:{unit:"m3",min:.08,max:.15},钢筋工程:{unit:"t",min:.8,max:1.5},模板工程:{unit:"m2",min:.3,max:.6},混凝土工程:{unit:"m3",min:.8,max:1.5},砌筑工程:{unit:"m3",min:1.2,max:2},防水工程:{unit:"m2",min:.06,max:.12},保温工程:{unit:"m2",min:.15,max:.3},装饰工程:{unit:"m2",min:.2,max:.4},安装电气:{unit:"m",min:.08,max:.15},安装工程:{unit:"项",min:0,max:0}},equipmentMapping:[{name:"挖掘机",spec:"0.6~1.0m\xb3",pattern:/开挖|挖土|基坑|土方/u,unit:"m3",basis:"土方开挖(清单特征)"},{name:"自卸汽车",spec:"8t",pattern:/余方弃置|弃方|外运|回填/u,unit:"m3",basis:"土方运输与回填(清单条目)"},{name:"插入式振捣器",spec:"",pattern:/混凝土浇筑|振捣/u,unit:"m3",basis:"混凝土浇筑(清单条目)"},{name:"蛙式打夯机",spec:"",pattern:/回填|夯实/u,unit:"m3",basis:"回填夯实(清单条目)"},{name:"塔式起重机",spec:"QTZ63",pattern:/塔吊|塔式起重机/u,unit:"项",basis:"主体结构垂直运输(清单特征)"},{name:"施工升降机",spec:"SC200/200",pattern:/施工电梯|施工升降机/u,unit:"项",basis:"人员与材料垂直运输(清单特征)"},{name:"钢筋加工机械",spec:"",pattern:/钢筋/u,unit:"t",basis:"钢筋加工(清单条目)"},{name:"电焊机",spec:"",pattern:/焊接|钢结构|预埋/u,unit:"t",basis:"钢结构焊接与预埋(清单条目)"},{name:"混凝土输送泵",spec:"",pattern:/泵送|混凝土泵/u,unit:"m3",basis:"混凝土泵送(清单特征)"}],machinePowerTable:[{name:"挖掘机",kw:90},{name:"自卸汽车",kw:120},{name:"插入式振捣器",kw:1.5},{name:"蛙式打夯机",kw:3},{name:"塔式起重机",kw:45},{name:"施工升降机",kw:33},{name:"钢筋加工机械",kw:15},{name:"电焊机",kw:15},{name:"混凝土输送泵",kw:90},{name:"物料提升机",kw:11}],laborCostRatio:{min:.18,max:.3},dailyWage:{min:250,max:350},inspectionBatchRules:[{scope:"钢筋工程",namePattern:/钢筋/u,unit:"t",divisor:60,descTemplate:"钢筋按进场检验批划分,每 60t 一批,约 {count} 批(总量 {total}t)"},{scope:"混凝土工程",namePattern:/混凝土/u,unit:"m3",divisor:100,descTemplate:"混凝土按浇筑批次留置标准养护试件,每 100m\xb3 一批,约 {count} 批(总量 {total}m\xb3)"},{scope:"砌体工程",namePattern:/砌体|砌筑/u,unit:"m3",divisor:250,descTemplate:"砌体工程按砌筑量划分检验批,每 250m\xb3 一批,约 {count} 批(总量 {total}m\xb3)"},{scope:"防水工程",namePattern:/防水/u,unit:"m2",divisor:0,descTemplate:"防水工程按施工段划分检验批并做蓄水(淋水)试验(总量 {total}m\xb2)"}],difficultyTemplates:[{name:"深基坑施工",measure:"分层开挖、及时支护与信息化监测,编制专项施工方案并按危大工程规定组织专家论证",basis:"清单特征含基坑开挖深度",test:a=>a.entries.some(a=>{let b=/(?:挖深|开挖深度|基坑深度|坑深)[^。;;]{0,12}(\d+(?:\.\d+)?)\s*m/u.exec(a.description);return!!b&&Number.parseFloat(b[1]||"0")>=3})},{name:"高支模施工",measure:"编制专项施工方案并组织专家论证,支架验收合格后方可浇筑",basis:"清单特征含支模高度",test:a=>a.entries.some(a=>/支模高度|高支模|模板支撑[^。;;]{0,12}\d+(?:\.\d+)?\s*m/u.test(`${a.name} ${a.description}`))},{name:"大体积混凝土施工",measure:"分层浇筑、测温养护,掺加缓凝剂与矿物掺合料控制水化热",basis:"清单特征含大体积混凝土/筏板基础",test:a=>a.entries.some(a=>/大体积|基础底板|筏板/u.test(`${a.name} ${a.description}`))},{name:"垂直运输组织",measure:"塔吊与施工电梯合理布位,编制群塔作业防碰撞方案",basis:"清单特征含塔吊/施工电梯",test:a=>a.entries.some(a=>/塔吊|塔式起重机|施工电梯|施工升降机/u.test(`${a.name} ${a.description}`))},{name:"紧邻既有建筑保护",measure:"开工前房屋现状鉴定,设置沉降观测点,控制开挖对周边扰动",basis:"清单特征含紧邻既有建筑",test:a=>a.entries.some(a=>/紧邻|既有建筑|相邻建筑|周边建筑/u.test(a.description))}],deploymentFlowFallback:"分区段流水作业",sequenceFallback:"施工准备 → 基础工程 → 主体结构 → 装饰装修 → 安装收尾",climateZone:"central",powerFallbackText:"临时用电由现场总配电箱接入,采用 TN-S 三相五线制,各分配电箱单独计量(柴油机械不计入用电负荷)",waterNoteText:"施工用水以市政供水为主,总用水量按施工段分区配置"},H={id:"general",projectTypes:["其他"],milestoneGroups:[{key:"prep",label:"施工准备",pattern:/清杂|拆除|场地平整|临建|临时/u},{key:"main",label:"主体工程",pattern:/主体|结构|混凝土|钢筋|模板|砌体|土方|基础|安装/u},{key:"finish",label:"装饰与附属工程",pattern:/装饰|抹灰|防水|保温|门窗|屋面|绿化|景观/u},{key:"install",label:"安装工程",pattern:/电气|给排水|暖通|消防|电梯|灯具|管线|设备/u},{key:"close",label:"收尾与验收",pattern:/收尾|竣工|验收|调试|移交|清理/u}],groupOfEntry:E,tradeMapping:F.tradeMapping,laborUnitRange:F.laborUnitRange,equipmentMapping:[{name:"挖掘机",spec:"0.6~1.0m\xb3",pattern:/开挖|挖土|沟槽|土方/u,unit:"m3",basis:"土方开挖(清单特征)"},{name:"自卸汽车",spec:"8t",pattern:/余方弃置|弃方|外运|回填/u,unit:"m3",basis:"土方运输与回填(清单条目)"},{name:"插入式振捣器",spec:"",pattern:/混凝土浇筑|振捣/u,unit:"m3",basis:"混凝土浇筑(清单条目)"},{name:"蛙式打夯机",spec:"",pattern:/回填|夯实/u,unit:"m3",basis:"回填夯实(清单条目)"},{name:"混凝土搅拌运输车",spec:"",pattern:/商品混凝土|C\d{2}混凝土/u,unit:"m3",basis:"商品混凝土运输(清单特征)"}],machinePowerTable:[{name:"挖掘机",kw:90},{name:"自卸汽车",kw:120},{name:"插入式振捣器",kw:1.5},{name:"蛙式打夯机",kw:3},{name:"混凝土搅拌运输车",kw:110}],laborCostRatio:{min:.15,max:.25},dailyWage:{min:250,max:350},inspectionBatchRules:[{scope:"混凝土工程",namePattern:/混凝土/u,unit:"m3",divisor:100,descTemplate:"混凝土按浇筑批次留置标准养护试件,每 100m\xb3 一批,约 {count} 批(总量 {total}m\xb3)"},{scope:"检查井",namePattern:/检查井/u,unit:"",divisor:1,descTemplate:"检查井逐座验收,共 {total} 座"}],difficultyTemplates:[],deploymentFlowFallback:"分区段流水作业",sequenceFallback:"施工准备 → 主体施工 → 装饰安装 → 收尾验收",climateZone:void 0,powerFallbackText:"临时用电按现场配电箱分区接入,各用电点单独计量(柴油机械不计入用电负荷,电动机具零星分散)",waterNoteText:"施工用水按现场水源分区配置,总用水量按施工段核定"},I={id:"bridge-tunnel",projectTypes:["桥梁与隧道"],milestoneGroups:[{key:"prep",label:"施工准备与临时设施",pattern:/清杂|拆除|场地平整|临建|临时|三通一平|测量放样/u},{key:"foundation",label:"基础工程",pattern:/桩基|钻孔|灌注桩|围堰|承台|基础|基坑|降水|支护/u},{key:"substructure",label:"下部结构工程",pattern:/桥墩|桥台|墩柱|盖梁|系梁|支座垫石|下部/u},{key:"superstructure",label:"上部结构工程",pattern:/箱梁|梁板|主梁|现浇梁|预制|预应力|张拉|架设|合龙|上部/u},{key:"tunnel",label:"隧道洞身工程",pattern:/隧道|洞身|仰拱|衬砌|锚杆|喷混|掌子面|二衬/u},{key:"finish",label:"桥面系附属与收尾",pattern:/桥面|铺装|护栏|伸缩缝|防撞|排水|照明|收尾|竣工|交安|绿化/u}],groupOfEntry:function(a){let b=`${a.name} ${a.description}`;return/灌注桩|桩基|钻孔|围堰|承台/u.test(b)?"桩基与基础工程":/桥墩|桥台|墩柱|盖梁|系梁|下部/u.test(b)?"下部结构工程":/箱梁|梁板|主梁|现浇梁|预制|预应力|张拉|架设|上部/u.test(b)&&"m3"===a.unit?"上部结构工程":/钢绞线/u.test(b)&&"t"===a.unit?"钢绞线工程":/隧道|洞身|仰拱|衬砌|锚杆|喷混|掌子面/u.test(b)?"隧道工程":/桥面|铺装|护栏|伸缩缝|防撞/u.test(b)?"桥面系工程":/土方|挖方|填方|回填|清淤/u.test(b)&&"m3"===a.unit?"土方工程":/钢筋|植筋/u.test(b)?"钢筋工程":/模板|支模/u.test(b)?"模板工程":/混凝土|现浇/u.test(b)?"混凝土工程":"安装工程"},tradeMapping:[{trade:"桩基工",pattern:/灌注桩|桩基|钻孔/u},{trade:"钢筋工",pattern:/钢筋|植筋/u},{trade:"模板工",pattern:/模板|支模/u},{trade:"混凝土工",pattern:/混凝土|现浇|垫层/u},{trade:"张拉工",pattern:/预应力|张拉|钢绞线/u},{trade:"焊工",pattern:/焊接|钢结构|预埋件/u},{trade:"起重工",pattern:/吊装|架设|梁体|龙门吊|架桥机/u},{trade:"隧道工",pattern:/隧道|洞身|衬砌|锚杆|喷混|掌子面/u},{trade:"普工",pattern:/土方|清杂|拆除|平整|回填|清淤|开挖/u}],laborUnitRange:{桩基与基础工程:{unit:"m3",min:4,max:7},下部结构工程:{unit:"m3",min:1.5,max:3},上部结构工程:{unit:"m3",min:4,max:8},钢绞线工程:{unit:"t",min:1.5,max:3},隧道工程:{unit:"m3",min:1.5,max:3},桥面系工程:{unit:"m2",min:.4,max:.8},土方工程:{unit:"m3",min:.08,max:.15},钢筋工程:{unit:"t",min:.8,max:1.5},模板工程:{unit:"m2",min:.3,max:.6},混凝土工程:{unit:"m3",min:.8,max:1.5},安装工程:{unit:"项",min:0,max:0}},equipmentMapping:[{name:"旋挖钻机",spec:"",pattern:/钻孔|灌注桩|桩基/u,unit:"m3",basis:"桩基成孔(清单条目)"},{name:"泥浆泵",spec:"",pattern:/灌注桩|钻孔/u,unit:"m3",basis:"钻孔泥浆循环(清单条目)"},{name:"履带式起重机",spec:"",pattern:/吊装|梁体|预制/u,unit:"项",basis:"构件吊装(清单特征)"},{name:"架桥机",spec:"",pattern:/架设|架梁|箱梁/u,unit:"项",basis:"梁体架设(清单条目)"},{name:"张拉设备",spec:"",pattern:/预应力|张拉|钢绞线/u,unit:"束",basis:"预应力张拉(清单条目)"},{name:"挖掘机",spec:"0.6~1.0m\xb3",pattern:/开挖|挖土|基坑|土方/u,unit:"m3",basis:"土方开挖(清单特征)"},{name:"自卸汽车",spec:"8t",pattern:/余方弃置|弃方|外运|回填/u,unit:"m3",basis:"土方运输与回填(清单条目)"},{name:"混凝土输送泵",spec:"",pattern:/泵送|混凝土泵/u,unit:"m3",basis:"混凝土泵送(清单特征)"},{name:"插入式振捣器",spec:"",pattern:/混凝土浇筑|振捣/u,unit:"m3",basis:"混凝土浇筑(清单条目)"}],machinePowerTable:[{name:"旋挖钻机",kw:130},{name:"泥浆泵",kw:22},{name:"履带式起重机",kw:110},{name:"架桥机",kw:90},{name:"张拉设备",kw:7.5},{name:"挖掘机",kw:90},{name:"自卸汽车",kw:120},{name:"混凝土输送泵",kw:90},{name:"插入式振捣器",kw:1.5}],laborCostRatio:{min:.12,max:.22},dailyWage:{min:250,max:350},inspectionBatchRules:[{scope:"桩基工程",namePattern:/灌注桩|桩基/u,unit:"",divisor:1,descTemplate:"钻孔灌注桩逐桩检验(桩位/孔径/沉渣厚度/混凝土充盈系数),共 {total} 根"},{scope:"钢筋工程",namePattern:/钢筋/u,unit:"t",divisor:60,descTemplate:"钢筋按进场检验批划分,每 60t 一批,约 {count} 批(总量 {total}t)"},{scope:"混凝土工程",namePattern:/混凝土/u,unit:"m3",divisor:100,descTemplate:"混凝土按浇筑批次留置标准养护试件,每 100m\xb3 一批,约 {count} 批(总量 {total}m\xb3)"},{scope:"预应力张拉",namePattern:/预应力|钢绞线/u,unit:"束",divisor:0,descTemplate:"预应力孔道逐束张拉并记录伸长值(总量 {total} 束)"}],difficultyTemplates:[{name:"深水基础施工",measure:"围堰施工与排水方案专项设计,汛期前完成基础施工,设置水位监测",basis:"清单特征含围堰/深水基础",test:a=>a.entries.some(a=>/围堰|深水|水中墩|钢板桩/u.test(`${a.name} ${a.description}`))},{name:"大体积混凝土施工",measure:"分层浇筑、测温养护,掺加缓凝剂与矿物掺合料控制水化热",basis:"清单特征含承台/大体积混凝土",test:a=>a.entries.some(a=>/承台|大体积|基础底板/u.test(`${a.name} ${a.description}`))},{name:"预应力张拉控制",measure:"张拉设备标定,双控(应力+伸长值)张拉,孔道压浆密实",basis:"清单特征含预应力/钢绞线",test:a=>a.entries.some(a=>/预应力|张拉|钢绞线/u.test(`${a.name} ${a.description}`))},{name:"隧道开挖与支护",measure:"超前地质预报,短进尺、弱爆破、强支护,监控量测信息化施工",basis:"清单特征含隧道洞身开挖",test:a=>a.entries.some(a=>/隧道|洞身|掌子面/u.test(`${a.name} ${a.description}`))},{name:"架梁起重吊装",measure:"编制吊装专项方案,吊装前试吊与支腿地基验算,专职指挥",basis:"清单特征含梁体架设",test:a=>a.entries.some(a=>/架设|架梁|架桥机|吊装/u.test(`${a.name} ${a.description}`))},{name:"高空作业安全控制",measure:"高墩作业平台封闭防护,设置安全网与临边防护,恶劣天气停止作业",basis:"清单特征含高墩/墩柱",test:a=>a.entries.some(a=>/高墩|墩柱|盖梁/u.test(`${a.name} ${a.description}`))}],deploymentFlowFallback:"分区段流水作业",sequenceFallback:"施工准备 → 基础工程 → 下部结构 → 上部结构 → 隧道洞身 → 桥面系与收尾",climateZone:void 0,powerFallbackText:"临时用电由现场总配电箱接入,采用 TN-S 三相五线制,各用电点单独计量(柴油机械不计入用电负荷)",waterNoteText:"施工用水以现场水源为主,总用水量按施工段核定"},J={id:"highway",projectTypes:["公路"],milestoneGroups:[{key:"prep",label:"施工准备",pattern:/清杂|拆除|场地平整|临建|临时|三通一平|测量放样/u},{key:"subgrade",label:"路基工程",pattern:/路基|土方|挖方|填方|压实|软基|清表|路床/u},{key:"pavement",label:"路面工程",pattern:/路面|水稳|基层|沥青|面层|摊铺|碾压|级配/u},{key:"bridge",label:"桥涵工程",pattern:/桥梁|桥台|桥墩|桩基|梁板|涵洞|通道|台帽/u},{key:"safety",label:"交安与附属收尾",pattern:/护栏|标线|标志|交安|绿化|排水|边沟|收尾|竣工/u}],groupOfEntry:function(a){let b=`${a.name} ${a.description}`;return/土方|挖方|填方|清表|软基|路基/u.test(b)&&"m3"===a.unit?"土方工程":/水稳|基层|级配|路床/u.test(b)&&"m2"===a.unit?"路面基层":/沥青|面层|摊铺/u.test(b)&&"m2"===a.unit?"沥青面层":/混凝土|现浇/u.test(b)&&"m2"===a.unit?"混凝土路面":/混凝土|现浇/u.test(b)?"混凝土工程":/砌筑|砌体|边沟|护坡|挡墙/u.test(b)?"砌筑工程":/钢筋|植筋/u.test(b)?"钢筋工程":/护栏|标线|标志|交安|波形梁/u.test(b)?"交安设施":"安装工程"},tradeMapping:[{trade:"机械操作工",pattern:/土方|挖方|填方|清表|路基/u},{trade:"压路机司机",pattern:/碾压|压实|路基|路面/u},{trade:"摊铺机司机",pattern:/摊铺|沥青|水稳|基层/u},{trade:"混凝土工",pattern:/混凝土|现浇|垫层/u},{trade:"钢筋工",pattern:/钢筋|植筋/u},{trade:"瓦工",pattern:/砌筑|砌体|边沟|护坡|挡墙/u},{trade:"交安工",pattern:/护栏|标线|标志|交安|波形梁/u},{trade:"普工",pattern:/清杂|拆除|平整|回填|清淤/u}],laborUnitRange:{土方工程:{unit:"m3",min:.08,max:.15},路面基层:{unit:"m2",min:.2,max:.4},沥青面层:{unit:"m2",min:.08,max:.15},混凝土路面:{unit:"m2",min:.15,max:.3},混凝土工程:{unit:"m3",min:.8,max:1.5},砌筑工程:{unit:"m3",min:1.2,max:2},钢筋工程:{unit:"t",min:.8,max:1.5},交安设施:{unit:"m",min:.3,max:.6},安装工程:{unit:"项",min:0,max:0}},equipmentMapping:[{name:"推土机",spec:"",pattern:/清表|土方|填方|平整/u,unit:"m3",basis:"土方摊铺平整(清单条目)"},{name:"平地机",spec:"",pattern:/路基|路床|平整/u,unit:"m2",basis:"路床整平(清单条目)"},{name:"装载机",spec:"",pattern:/土方|挖方|填方|清运/u,unit:"m3",basis:"土方装载(清单条目)"},{name:"压路机",spec:"8~12t",pattern:/碾压|压实/u,unit:"m2",basis:"路基路面碾压(清单特征)"},{name:"摊铺机",spec:"",pattern:/摊铺|沥青|水稳/u,unit:"m2",basis:"路面摊铺(清单条目)"},{name:"沥青洒布车",spec:"",pattern:/沥青|透层|粘层/u,unit:"m2",basis:"沥青洒布(清单条目)"},{name:"挖掘机",spec:"0.6~1.0m\xb3",pattern:/开挖|挖土|沟槽|土方/u,unit:"m3",basis:"土方开挖(清单特征)"},{name:"自卸汽车",spec:"8t",pattern:/余方弃置|弃方|外运|回填/u,unit:"m3",basis:"土方运输与回填(清单条目)"},{name:"洒水车",spec:"",pattern:/养护|洒水/u,unit:"m2",basis:"养护洒水(清单条目)"}],machinePowerTable:[{name:"推土机",kw:75},{name:"平地机",kw:120},{name:"装载机",kw:160},{name:"压路机",kw:75},{name:"摊铺机",kw:110},{name:"沥青洒布车",kw:60},{name:"挖掘机",kw:90},{name:"自卸汽车",kw:120},{name:"洒水车",kw:90}],laborCostRatio:{min:.12,max:.2},dailyWage:{min:250,max:350},inspectionBatchRules:[{scope:"路基压实",namePattern:/路床|路基|填方/u,unit:"m2",divisor:1e3,descTemplate:"路基压实度按每 1000m\xb2 不少于 1 点检测,约 {count} 点(总面积 {total}m\xb2)"},{scope:"水稳基层",namePattern:/水稳|基层/u,unit:"m2",divisor:1e3,descTemplate:"水稳基层按每 1000m\xb2 一个检验批,约 {count} 批(总面积 {total}m\xb2)"},{scope:"沥青面层",namePattern:/沥青|面层/u,unit:"m2",divisor:1e3,descTemplate:"沥青面层按每 1000m\xb2 一个检验批,约 {count} 批(总面积 {total}m\xb2)"}],difficultyTemplates:[{name:"软土地基处理",measure:"软基处理方案专项设计(换填/搅拌桩/预压),沉降观测控制填筑速率",basis:"清单特征含软基处理",test:a=>a.entries.some(a=>/软基|软土|换填|搅拌桩/u.test(`${a.name} ${a.description}`))},{name:"交通疏导与半幅施工",measure:"分段半幅封闭施工,设置临时交通标志与导流设施,保障社会车辆通行",basis:"清单特征含保通/半幅施工",test:a=>a.entries.some(a=>/保通|半幅|交通疏导|既有道路/u.test(`${a.name} ${a.description}`))},{name:"路面平整度控制",measure:"摊铺机连续匀速作业,接缝处理与碾压工艺控制,平整度逐层检测",basis:"清单特征含沥青面层",test:a=>a.entries.some(a=>/沥青|面层/u.test(`${a.name} ${a.description}`))},{name:"路基沉降控制",measure:"分层填筑碾压,设置沉降观测点,填筑速率与观测数据联动",basis:"清单特征含高填方路基",test:a=>a.entries.some(a=>/高填方|填方/u.test(`${a.name} ${a.description}`))}],deploymentFlowFallback:"分段平行流水作业",sequenceFallback:"施工准备 → 路基工程 → 路面工程 → 桥涵工程 → 交安与附属收尾",climateZone:void 0,powerFallbackText:"临时用电由现场总配电箱接入,各用电点单独计量(柴油机械不计入用电负荷)",waterNoteText:"施工用水以现场水源为主,总用水量按施工段核定"},K={id:"water-conservancy",projectTypes:["水利水电"],milestoneGroups:[{key:"prep",label:"施工准备与围堰导流",pattern:/清杂|拆除|围堰|导流|截流|临建|临时/u},{key:"earthwork",label:"土方与基础工程",pattern:/土方|挖方|填方|基础|基坑|清淤|疏浚|开挖/u},{key:"structure",label:"闸站结构工程",pattern:/混凝土|钢筋|模板|闸室|闸墩|泵站|翼墙|底板|消力池|挡墙|砌筑/u},{key:"metal",label:"金属结构与机电安装",pattern:/金属结构|闸门|启闭机|埋件|机电|水泵|电气/u},{key:"finish",label:"护坡堤防与收尾",pattern:/护坡|护岸|堤防|绿化|水土保持|收尾|竣工|验收/u}],groupOfEntry:function(a){let b=`${a.name} ${a.description}`;return/围堰|导流|截流|清淤|疏浚/u.test(b)||/土方|挖方|填方|回填|开挖/u.test(b)&&"m3"===a.unit?"土方工程":/闸门|启闭机|埋件|金属结构/u.test(b)&&"t"===a.unit?"金属结构安装":/护坡|护岸|堤防|格宾|浆砌/u.test(b)&&"m2"===a.unit?"护坡工程":/钢筋|植筋/u.test(b)?"钢筋工程":/模板|支模/u.test(b)?"模板工程":/混凝土|现浇|底板|闸室|闸墩|泵站|翼墙|消力池/u.test(b)&&"m3"===a.unit?"混凝土工程":/砌筑|砌体|砖|挡墙/u.test(b)?"砌筑工程":(/机电|水泵|电气/u.test(b),"安装工程")},tradeMapping:[{trade:"钢筋工",pattern:/钢筋|植筋/u},{trade:"模板工",pattern:/模板|支模/u},{trade:"混凝土工",pattern:/混凝土|现浇|底板|闸室|闸墩|泵站|翼墙|消力池/u},{trade:"瓦工",pattern:/砌筑|砌体|砖|挡墙|护坡/u},{trade:"金属结构安装工",pattern:/金属结构|闸门|启闭机|埋件/u},{trade:"机电安装工",pattern:/机电|水泵|电气|配电/u},{trade:"潜水工",pattern:/水下|潜水/u},{trade:"普工",pattern:/土方|清杂|拆除|平整|回填|清淤|开挖/u}],laborUnitRange:{土方工程:{unit:"m3",min:.08,max:.15},混凝土工程:{unit:"m3",min:1,max:2},砌筑工程:{unit:"m3",min:1.2,max:2},钢筋工程:{unit:"t",min:.8,max:1.5},模板工程:{unit:"m2",min:.3,max:.6},金属结构安装:{unit:"t",min:15,max:25},护坡工程:{unit:"m2",min:.2,max:.4},安装工程:{unit:"项",min:0,max:0}},equipmentMapping:[{name:"挖掘机",spec:"0.6~1.0m\xb3",pattern:/开挖|挖土|基坑|土方|清淤/u,unit:"m3",basis:"土方开挖(清单特征)"},{name:"自卸汽车",spec:"8t",pattern:/余方弃置|弃方|外运|回填/u,unit:"m3",basis:"土方运输与回填(清单条目)"},{name:"装载机",spec:"",pattern:/土方|挖方|填方|清运/u,unit:"m3",basis:"土方装载(清单条目)"},{name:"混凝土输送泵",spec:"",pattern:/泵送|混凝土泵|混凝土/u,unit:"m3",basis:"混凝土泵送(清单特征)"},{name:"履带式起重机",spec:"",pattern:/吊装|闸门|启闭机/u,unit:"",basis:"闸门与启闭机吊装(清单条目,不限计量单位)"},{name:"泥浆泵",spec:"",pattern:/围堰|降水|导流|排水/u,unit:"",basis:"基坑降水与排水(清单条目,不限计量单位)"},{name:"插入式振捣器",spec:"",pattern:/混凝土|振捣/u,unit:"m3",basis:"混凝土浇筑(清单条目)"},{name:"蛙式打夯机",spec:"",pattern:/回填|夯实/u,unit:"m3",basis:"回填夯实(清单条目)"}],machinePowerTable:[{name:"挖掘机",kw:90},{name:"自卸汽车",kw:120},{name:"装载机",kw:160},{name:"混凝土输送泵",kw:90},{name:"履带式起重机",kw:110},{name:"泥浆泵",kw:22},{name:"插入式振捣器",kw:1.5},{name:"蛙式打夯机",kw:3}],laborCostRatio:{min:.15,max:.25},dailyWage:{min:250,max:350},inspectionBatchRules:[{scope:"混凝土工程",namePattern:/混凝土/u,unit:"m3",divisor:100,descTemplate:"混凝土按浇筑批次留置标准养护试件,每 100m\xb3 一批,约 {count} 批(总量 {total}m\xb3)"},{scope:"土方回填",namePattern:/回填|填方/u,unit:"m3",divisor:200,descTemplate:"土方回填按每 200m\xb3 一个检验批检测压实度,约 {count} 批(总量 {total}m\xb3)"},{scope:"金属结构",namePattern:/闸门|启闭机/u,unit:"",divisor:1,descTemplate:"金属结构逐件验收(出厂合格证+安装调试记录),共 {total} 件"}],difficultyTemplates:[{name:"围堰导流与度汛",measure:"围堰按度汛标准设计施工,汛期值守与应急预案,度汛演练",basis:"清单特征含围堰/导流",test:a=>a.entries.some(a=>/围堰|导流|度汛|截流/u.test(`${a.name} ${a.description}`))},{name:"深基坑降水与支护",measure:"降水方案专项设计,分层开挖及时支护,周边沉降监测",basis:"清单特征含基坑降水",test:a=>a.entries.some(a=>/降水|基坑|支护/u.test(`${a.name} ${a.description}`))},{name:"大体积混凝土施工",measure:"分层浇筑、测温养护,掺加缓凝剂与矿物掺合料控制水化热",basis:"清单特征含底板/大体积混凝土",test:a=>a.entries.some(a=>/底板|大体积|消力池/u.test(`${a.name} ${a.description}`))},{name:"闸门启闭机安装精度控制",measure:"埋件安装精度预控,闸门与启闭机联动调试,止水严密性试验",basis:"清单特征含闸门/启闭机",test:a=>a.entries.some(a=>/闸门|启闭机/u.test(`${a.name} ${a.description}`))},{name:"水下作业安全控制",measure:"潜水作业双人值守,水下作业专项方案与应急预案",basis:"清单特征含水下作业",test:a=>a.entries.some(a=>/水下|潜水/u.test(`${a.name} ${a.description}`))}],deploymentFlowFallback:"分区段流水作业",sequenceFallback:"施工准备与围堰导流 → 土方与基础 → 闸站结构 → 金属结构与机电安装 → 护坡堤防与收尾",climateZone:void 0,powerFallbackText:"临时用电由现场总配电箱接入,各用电点单独计量(柴油机械不计入用电负荷)",waterNoteText:"施工用水以现场水源为主,总用水量按施工段核定"},L={type:"object",required:["meta","data","outline"],properties:{meta:{type:"object",required:!0,properties:{version:{type:"string",required:!0,minLength:1},docType:{type:"string",required:!0,minLength:1},createdAt:{type:"string",required:!0,minLength:1},sourceMaterials:{type:"array",required:!0,items:{type:"string"}}}},data:{type:"object",required:!0,properties:{project:{type:"object",required:!0,properties:{name:{type:"string",required:!0,minLength:1},scope:{type:"string",required:!0},works:{type:"array",required:!0,items:{type:"string"}}}},contract:{type:"object",required:!0,properties:{totalDays:{type:"number",required:!0},qualityStandard:{type:"string",required:!0},pricingFile:{type:"string",required:!0}}},milestones:{type:"array",required:!0,minItems:1,items:{type:"object"}},resources:{type:"object",required:!0,properties:{labor:{type:"object",required:!0},equipment:{type:"array",required:!0}}},materialsPlan:{type:"array",required:!0},redLineFacts:{type:"array",required:!0},quantities:{type:"object",required:!0},standardBlocks:{type:"array",required:!0},keyDifficulties:{type:"array",required:!0,minItems:1}}},outline:{type:"object",required:!0,properties:{chapters:{type:"array",required:!0,minItems:1}}}}};function M(a){let b=a.boundFilePaths.filter(a=>/工程量清单/u.test(a)&&a.toLowerCase().endsWith(".xls")).filter(a=>{let b=a.split("/").pop()||a;return!/封面|编制说明/u.test(b)});if(0===b.length)return{warning:`绑定资料中未识别到工程量清单 .xls 文件(${a.boundFilePaths.length} 份资料)`};let c=g.join(f.homedir(),".customize-agent","projects",(0,d.computeProjectId)(g.resolve(a.projectRoot)),"kb.db");if(!e.existsSync(c))return{warning:`项目知识库索引不存在:${c}`};let h=[],i=[];for(let a of b)try{let b=function(a,b){let c=new((0,d.loadBetterSqlite3)())(a,{readonly:!0});try{return c.pragma("busy_timeout = 10000"),c.prepare("SELECT chunk_index, content, section_title FROM kb_chunks WHERE relative_path = ? ORDER BY chunk_index").all(b).map(a=>({chunkIndex:a.chunk_index,content:a.content,sectionTitle:a.section_title||""}))}finally{c.close()}}(c,a);if(0===b.length){h.push(`${a}(索引无切片)`);continue}let e=function(a){let b=a.sourceFile||"",c={totalChunks:a.chunks.length,markdownChunks:0,declarationChunks:0,skippedChunks:0,droppedIncompleteRows:0},d=[],e=[];for(let b of a.chunks){let a=b.sectionTitle,f=a.includes("表格路径声明");if(a.includes("附录")){c.skippedChunks++;continue}f?(e.push(b),c.declarationChunks++):"表格数据"===a||a.includes("表标题")||a.includes("第")||a.includes("工作表:")?(d.push(b),c.markdownChunks++):c.skippedChunks++}let f=new Map,g=a=>{let b=s.exec(a);if(!b)return;let c=b[1],d=f.get(c),e=u.exec(a)||v.exec(a),g=t.exec(a);d?(!d.villageGroup&&e&&(d.villageGroup=e[1].trim()),void 0===d.totalPages&&g&&(d.totalPages=Number(g[1]))):f.set(c,{villageGroup:e?e[1].trim():"",totalPages:g?Number(g[1]):void 0})};for(let a of d)g(a.sectionTitle),g(a.content.split("\n")[0]||"");let h=[],i="",j="",k="",l="plain",m=function(a){let b=[],c=!1;for(let d=0;d<a.length;d++){let e=a[d]??"";if(e.includes(".")){let e=d+1<a.length?a[d+1]??"":"",f=/^\d+$/u.test(e)&&e.length>=2;b.push(f?"unit-project":"subsection"),c=f}else/^\d+$/u.test(e)?b.push(c?"subsection":"section"):(b.push("section"),c=!1)}return b}(function(a){let b=[],c="",d=n;for(let e of a){let a=e.content.split("\n"),f=c;for(let e of(c="",a)){if(e.startsWith("|"))f.trim(),f=e;else{if(!f)continue;f+=e}if(!f.endsWith("|"))continue;let a=f.split("|").map(a=>a.trim());if(f="",o(a)){d=p(a)??d;continue}!a[d.seq]&&q(a[d.code]??"")&&a[d.name]&&"分部小计"!==a[d.name]&&b.push(a[d.code]??"")}f.trim()&&(c=f)}return b}(d)),z=-1,A=n,B="";for(let a of d){let d=x(a),e=d||B;d&&(B=d);let g=f.get(e),n=g?.villageGroup||e||"",s=a.content.split("\n"),u=i;i="";let v=function(a){if(t.exec(a))return 1;w.lastIndex=0;let b=w.exec(a);return w.lastIndex=0,b?Number(b[1]):void 0}(a.content);for(let d=0;d<s.length;d++){let e=s[d]||"";if(e.startsWith("|"))u.trim()&&c.droppedIncompleteRows++,u=e;else if(u)u+=e;else{let a=w.exec(e);a&&(v=Number(a[1])),w.lastIndex=0;continue}if(u.endsWith("|")){let c=u.split("|").map(a=>a.trim());u="",o(c)&&(A=p(c)??A);let d=c[A.seq]??"",e=c[A.code]??"",f=c[A.name]??"",g=v,i=function(a){let b=a.join(" "),c=/第(\d+)页\s*共\d+页/u.exec(b);return c?Number(c[1]):void 0}(c);if(i&&(v=i),/^\d+$/u.test(d)&&r.test(e)){let i=Number((c[A.quantity]??"").trim()),m={seq:Number(d),code:e,name:f,description:A.description>=0?c[A.description]??"":"",unit:c[A.unit]??"",quantity:Number.isFinite(i)?i:0,section:j,subsection:k,sectionKind:l,villageGroup:n,page:g,sourceFile:b,chunkIndex:a.chunkIndex,sourceKind:"markdown"};m.seq>0&&h.push(m)}else if(!d&&q(e)&&f&&"分部小计"!==f){let a=m[z+=1]??(e.includes(".")?"subsection":"section");"unit-project"===a?(j=f,k="",l="unit-project"):"section"===a?(j=f,k="",l="plain"):k=f}}}u.trim()&&(i=u)}i.trim()&&c.droppedIncompleteRows++;let C=[];for(let a of(B="",e)){let c=x(a),d=c||B;c&&(B=c);let e=f.get(d),g=e?.villageGroup||d||"";C.push(...function(a,b){let c,d,e=[],f=a.split("\n"),g=()=>{c&&"number"==typeof c.seq&&c.seq>0&&e.push({seq:c.seq,code:c.code||"",name:c.name||"",description:(c.description||"").trim(),unit:c.unit||"",quantity:"number"==typeof c.quantity?c.quantity:0,section:"",subsection:"",villageGroup:b.villageGroup,sourceFile:b.sourceFile,chunkIndex:b.chunkIndex,sourceKind:"declaration"}),c=void 0,d=void 0},h=a=>{if(!c||!d)return;let b=a.trim();if(b){if("seq"===d){let a=Number(b);Number.isFinite(a)&&a>0&&(c.seq=a)}else if("code"===d)c.code=(c.code||"")+b;else if("name"===d)c.name=(c.name||"")+b;else if("description"===d)c.description=(c.description||"")+(c.description?" ":"")+b;else if("unit"===d)c.unit=b;else if("quantity"===d){let a=Number(b);Number.isFinite(a)&&(c.quantity=a)}}};for(let a of f){if(/^R\d+C\d+$/u.test(a)){/^R\d+C1$/u.test(a)?(g(),c={},d="seq"):d=void 0;continue}if(/^序号:$/u.test(a)){d="seq";continue}if(/^项目编码:$/u.test(a)){d="code";continue}if(/^项目名称:$/u.test(a)){d="name";continue}if(/^项目特征描述:$/u.test(a)){d="description";continue}if(/^单位:$/u.test(a)){d="unit";continue}if(/^工程量:$/u.test(a)){d="quantity";continue}if(/^(?:人工费|机械费|暂估价|合价|金额.*)$/u.test(a)){d=void 0;continue}h(a)}return g(),e}(a.content,{villageGroup:g,sourceFile:b,chunkIndex:a.chunkIndex}))}let D=new Map;for(let a of h)D.set(`${a.villageGroup}|${a.seq}`,a);for(let a of C){let b=`${a.villageGroup}|${a.seq}`;D.has(b)||D.set(b,a)}let E=[...D.values()].sort((a,b)=>a.villageGroup.localeCompare(b.villageGroup,"zh-CN")||a.seq-b.seq);var F=E,G=h;let H=y(G);for(let a of F){let b;if("declaration"===a.sourceKind&&!a.section){for(let c of H.get(a.villageGroup)||[]){if(c.seq>a.seq)break;b=c}b&&(a.section=b.section,a.subsection=b.subsection,a.sectionKind=b.sectionKind)}}let I=[...f.values()].map(a=>a.villageGroup).find(Boolean);if(I&&E.every(a=>!a.section))for(let a of E)a.section=I,a.sectionKind="unit-project";let J=[];for(let[a,b]of y(E)){let c=b.map(a=>a.seq).sort((a,b)=>a-b),e=c[c.length-1]||0,g=[];for(let a=1;a<=e;a++)c.includes(a)||g.push(a);let h=function(a,b){for(let[c,d]of a)if(d.villageGroup===b)return{sheetId:c,...d}}(f,a),i=h?.totalPages,j=function(a,b,c){let d=new Set,e="";for(let f of a){let a=x(f),g=a||e;if(a&&(e=a),!c||g===c){if(!c&&!(f.content.split("\n")[0]||"").includes(b))continue;for(let a of(t.test(f.content)&&d.add(1),w.lastIndex=0,f.content.matchAll(w))){let b=Number(a[1]);d.add(b),b>1&&d.add(b-1)}w.lastIndex=0}}return[...d]}(d,a,h?.sheetId),k=i?Array.from({length:i},(a,b)=>b+1).filter(a=>!j.includes(a)):[],l=b.filter(a=>"declaration"===a.sourceKind).length,m=b.filter(a=>!a.code).length,n=b.filter(a=>!a.name).length,o=b.filter(a=>a.code&&!r.test(a.code)).length;J.push({villageGroup:a,sheetId:h?.sheetId||"",totalPagesDeclared:i,pagesCovered:j.sort((a,b)=>a-b),pagesMissing:k,entryCount:b.length,entrySeqMissing:g,entriesFromDeclaration:l,entriesWithoutCode:m,entriesWithoutName:n,entriesWithInvalidCode:o,complete:0===g.length&&b.length>0})}return J.sort((a,b)=>a.villageGroup.localeCompare(b.villageGroup,"zh-CN")),{entries:E,villages:J,totalEntries:E.length,sourceFile:b,complete:J.length>0&&J.every(a=>a.complete),diagnostics:c}}({chunks:b,sourceFile:a});e.totalEntries>0?i.push({filePath:a,boq:e}):h.push(`${a}(解析出 0 条目)`)}catch(b){h.push(`${a}(${b instanceof Error?b.message:String(b)})`)}if(0===i.length)return{warning:`清单解析失败:${h.join(";")}`};let j=1===i.length?i[0].boq:function(a){let b=a=>{let b=a.split("/").slice(-2)[0]||"",c=/^(\d+)/u.exec(b);return c?Number(c[1]):Number.MAX_SAFE_INTEGER},c=[...a].sort((a,c)=>b(a.filePath)-b(c.filePath)),d=[],e=[],f={totalChunks:0,markdownChunks:0,declarationChunks:0,skippedChunks:0,droppedIncompleteRows:0},g=new Set;for(let a of c){var h;let b=((h=a.filePath).split("/").pop()||h).replace(/\.xls$/iu,"").replace(/[\s\u00a0]+/gu,"")||"单位工程";if(g.has(b)){let a=2;for(;g.has(`${b}(${a})`);)a+=1;b=`${b}(${a})`}for(let c of(g.add(b),a.boq.entries))c.subsection=c.subsection||c.section,c.section=b,c.sectionKind="unit-project",c.villageGroup=b,d.push(c);for(let[c,d]of a.boq.villages.entries())e.push({...d,villageGroup:1===a.boq.villages.length?b:`${b}\xb7${d.villageGroup||`工作表${c+1}`}`});f.totalChunks+=a.boq.diagnostics.totalChunks,f.markdownChunks+=a.boq.diagnostics.markdownChunks,f.declarationChunks+=a.boq.diagnostics.declarationChunks,f.skippedChunks+=a.boq.diagnostics.skippedChunks,f.droppedIncompleteRows+=a.boq.diagnostics.droppedIncompleteRows}return{entries:d,villages:e,totalEntries:d.length,sourceFile:c.map(a=>a.filePath).join(";"),complete:e.length>0&&e.every(a=>a.complete),diagnostics:f}}(i);return h.length>0?{boq:j,warning:`部分清单文件解析失败(已并入其余 ${i.length} 份):${h.join(";")}`}:{boq:j}}function N(a){let b=new Map;for(let c of a.entries){if(!c.name)continue;let a=(c.villageGroup||c.section||"").trim(),d=b.get(c.name);if(d)d.total+=c.quantity,a&&d.groupTotals.set(a,(d.groupTotals.get(a)??0)+c.quantity);else{let d=new Map;a&&d.set(a,c.quantity),b.set(c.name,{value:c.quantity,unit:c.unit,sourceFile:c.sourceFile,seq:c.seq,total:c.quantity,groupTotals:d})}}let c={};for(let[a,d]of b){let b=a=>Math.round(1e3*a)/1e3,e=[...d.groupTotals.entries()].map(([a,c])=>({group:a,value:b(c)}));c[a]={value:b(d.total),unit:d.unit,sourceFile:d.sourceFile,seq:d.seq,groups:e.length>0?e:void 0}}return c}let O=[{key:"绿化养护期",namePattern:/养护/u,extract:a=>{let b=/(?:一级|二级)养护[^。;;]{0,20}/u.exec(a.description);return b?b[0].trim():void 0}},{key:"喷播草籽种类",namePattern:/喷播|草籽/u,extract:a=>{let b=/(?:草籽|种子)[^。;;]*?(?:荷兰菊|紫花地丁|白三叶)[^。;;]*/u.exec(a.description);if(b)return b[0].replace(/^[^::]*[::]?/u,"").trim();let c=/(?:荷兰菊|紫花地丁|白三叶)[^。;;]*/u.exec(a.description);return c?c[0].trim():void 0}},{key:"池塘清淤深度",namePattern:/清淤|清塘/u,extract:a=>{let b=/(?:清淤深度|深度)[^。;;]*?(\d+(?:\.\d+)?)\s*m/u.exec(a.description);return b?`清淤深度 ${b[1]}m`:void 0}},{key:"过路涵涵头混凝土",namePattern:/涵头|过路涵/u,extract:a=>{let b=/(C\d{2})[^。;;]*混凝土/u.exec(a.description)||/混凝土[^。;;]*(C\d{2})/u.exec(a.description);return b?`涵头混凝土 ${b[1]}`:void 0}},{key:"路肩土预留",namePattern:/路肩/u,extract:a=>{let b=/(\d+(?:\.\d+)?)\s*[-~至]\s*(\d+(?:\.\d+)?)\s*m/u.exec(a.description);return b?`两侧各预留 ${b[1]}-${b[2]}m`:void 0}},{key:"一般路灯",namePattern:/路灯/u,extract:a=>{let b=/(\d+)\s*W/u.exec(a.description),c=/高\s*(\d+(?:\.\d+)?)\s*m/u.exec(a.description);if(!b&&!c)return;let d=["一般路灯"];return b&&d.push(`${b[1]}W LED`),c&&d.push(`高${c[1]}m`),/含基础|含灯杆基础|灯杆基础/u.test(a.description)&&d.push("含基础"),d.join(" ")}},{key:"暂列金额",namePattern:/暂列金额/u,extract:a=>{let b=/(\d+(?:\.\d+)?)\s*万元/u.exec(a.description);return b?`${b[1]}万元`:void 0},amount:!0}];function P(a,b,c=F){let{laborCostRatio:d,dailyWage:e}=c,f=Math.max(30,Math.round(b)),g=1e4*a*d.min,h=1e4*a*d.max,i=g/e.max,j=h/e.min,k=Math.max(1,Math.round(i/f*1.3)),l=Math.max(k,Math.round(j/f*1.6));return{min:k,max:l,detail:`合同估算价 ${a} 万元 \xd7 人工费占比 ${Math.round(100*d.min)}%~${Math.round(100*d.max)}% \xf7 综合工日单价 ${e.min}~${e.max} 元 \xf7 有效工期 ${f} 天 \xd7 峰值系数 1.3~1.6`}}let Q=[/C\d{2,3}/u,/DN\d{2,4}/iu,/Φ\d+(?:\.\d+)?/u,/\d+(?:\.\d+)?\s*(?:kW|W)/iu,/厚(?:度)?[::]*\s*\d+(?:\.\d+)?\s*(?:mm|cm)/u,/\d+\s*[×xX]\s*\d+(?:\s*[×xX]\s*\d+)?\s*(?:mm|cm)?/u,/HRB\d{3,4}/u,/Q\d{3}[A-Z]?/u,/YJV[^。;;]{0,12}|VV\d+[^。;;]{0,12}/u],R=new Set(["挖掘机","自卸汽车","压路机","洒水车","高空作业车","混凝土搅拌运输车"]),S=[{id:"vertical_transport",label:"垂直运输方式",relevance:/塔吊|塔式起重机|施工电梯|施工升降机|物料提升机|垂直运输/u,options:[{value:"塔式起重机",aliases:/塔吊|塔式起重机/},{value:"施工升降机",aliases:/施工电梯|施工升降机/},{value:"物料提升机",aliases:/物料提升机/},{value:"汽车式起重机",aliases:/汽车吊|汽车式起重机/}]},{id:"formwork",label:"模板体系",relevance:/模板/u,exclusive:!0,options:[{value:"木胶合板模板",aliases:/木胶合板|覆膜胶合板|胶合板模板|木模板/},{value:"钢模板",aliases:/钢模板|定型钢模/},{value:"铝合金模板",aliases:/铝合金模板|铝模/},{value:"大模板",aliases:/大模板/},{value:"爬升模板",aliases:/爬升模板|爬模/}]},{id:"concrete_supply",label:"混凝土供应",relevance:/混凝土/u,exclusive:!0,options:[{value:"商品混凝土(预拌)",aliases:/商品混凝土|预拌混凝土/},{value:"自拌混凝土",aliases:/自拌混凝土|现场拌制混凝土|现场搅拌混凝土/}]},{id:"scaffold",label:"脚手架体系",relevance:/脚手架|爬架/u,options:[{value:"落地式钢管脚手架",aliases:/落地式[^,。;;]{0,6}脚手架|落地脚手架/},{value:"悬挑式脚手架",aliases:/悬挑[^,。;;]{0,6}脚手架|悬挑脚手架/},{value:"附着式升降脚手架",aliases:/附着式升降脚手架|爬架/},{value:"门式脚手架",aliases:/门式脚手架/},{value:"盘扣式脚手架",aliases:/盘扣/},{value:"碗扣式脚手架",aliases:/碗扣/}]},{id:"foundation_support",label:"基坑支护形式",relevance:/基坑|支护/u,exclusive:!0,options:[{value:"放坡开挖",aliases:/放坡/},{value:"土钉墙支护",aliases:/土钉墙|土钉支护/},{value:"灌注桩支护",aliases:/灌注桩|钻孔灌注桩|排桩支护/},{value:"钢板桩支护",aliases:/钢板桩|拉森桩/},{value:"地下连续墙",aliases:/地下连续墙|地连墙/},{value:"锚杆(索)支护",aliases:/锚杆|锚索/},{value:"喷锚支护",aliases:/喷锚/}]},{id:"earthwork_haul",label:"土方外运方式",relevance:/土方|渣土|弃土/u,options:[{value:"自卸汽车外运",aliases:/自卸汽车|自卸车/},{value:"密闭渣土车外运",aliases:/密闭式?[^,。;;]{0,4}车|渣土车/},{value:"场内平衡利用",aliases:/场内平衡|就地平衡|场内调配|回填利用/}]}],T=/不采用|不使用|不设置|不考虑|不得|禁止|取消/u;function U(a){return a.split(/[,,、::]/u).map(a=>a.trim()).filter(Boolean)}function V(a){let b=function(a,b){let c=[];for(let a of b){let b=function(a){let b=`${a.filePath||""} ${a.roleId||""} ${a.sectionTitle||""}`;return/补疑|澄清|答疑|修正|更新/u.test(b)?100:/招标文件|招标公告|投标人须知|前附表/u.test(b)?90:/清单|工程量/u.test(b)||/图纸|设计|dwg|drawing/iu.test(b)?80:/规范|标准|规程/u.test(b)?60:50}(a);for(let d of(0,i.wj)((0,j.lG)(a.content)).split(/[。;;\n]/u)){let a=d.trim();a.length<6||a.length>200||c.push({text:a,weight:b})}}for(let b of a){let a=`${b.key||""} ${b.fieldName||""} ${(0,j.lG)(b.value)}`.trim();a.length<6||a.length>200||c.push({text:a,weight:Math.round(60*Math.max(.5,Math.min(1,b.confidence||.7)))})}return c}(a.facts,a.evidence),c=[];for(let a of S){let d=new Map;for(let c of b){if(!a.relevance.test(c.text))continue;let b=U(c.text);for(let e of a.options){let a=b.find(a=>e.aliases.test(a));if(!a||T.test(a))continue;let f=d.get(e.value)||{score:0,mentions:0,bestWeight:0};f.score+=c.weight,f.mentions+=1,f.bestWeight=Math.max(f.bestWeight,c.weight),d.set(e.value,f)}}let e=[...d.entries()].map(([a,b])=>({value:a,...b})).sort((a,b)=>b.score-a.score||b.mentions-a.mentions||(a.value<b.value?-1:1)),f=e[0];if(!f||f.bestWeight<60)continue;if(a.exclusive){c.push({id:a.id,label:a.label,values:[f.value]});continue}let g=Math.max(60,.4*f.score),h=e.filter(a=>a.score>=g).slice(0,3).map(a=>a.value);h.length>0&&c.push({id:a.id,label:a.label,values:h})}return c}function W(a){return S.find(b=>b.id===a)}function X(a,b){let c=U(a).find(a=>b.test(a));return!!c&&T.test(c)}function Y(a){if(!a)return[];let b=[],c=new Set;for(let d of a.matchAll(/《([^《》]{2,40}(?:法|条例|办法|规程|规范|标准))》(?:[((][^))]{0,24}?(?:国令|令|主席令|〔\d{4}〕)[^))]{0,24}?[))])?/gu)){let a=d[1].replace(/[\s#]/gu,"").trim();if(/通知|意见|公示|公告/u.test(a)||a.length<4||a.length>20)continue;let e=(d[0].match(/[((]([^))]{0,24}?(?:国令|令|主席令|〔\d{4}〕)[^))]{0,24}?)[))]/u)||[])[1],f=e?`《${a}》(${e.trim()})`:`《${a}》`;if(!c.has(f)&&(c.add(f),b.push(f),b.length>=14))break}return b}let Z=[{item:"主要施工方法",weight:"1.5",chapterPattern:/主要分部分项|施工方案|施工方法/u},{item:"物资计划",weight:"0.5",chapterPattern:/物资|资源配置|材料/u},{item:"机械设备计划",weight:"0.5",chapterPattern:/机械|资源配置|设备/u},{item:"劳动力安排",weight:"0.5",chapterPattern:/劳动力|资源配置|人员/u},{item:"质量措施",weight:"1.5",chapterPattern:/质量/u},{item:"安全措施",weight:"1.5",chapterPattern:/安全/u},{item:"工期措施",weight:"1.0",chapterPattern:/工期|进度/u},{item:"文明施工",weight:"1.0",chapterPattern:/文明施工|环境保护|绿色施工/u},{item:"总平面布置图",weight:"0.5",chapterPattern:/总平面|平面布置/u},{item:"重难点及保证措施",weight:"1.5",chapterPattern:/重难点|重点|难点|概况/u}];function $(a,b){let c=a.trim();if(/^其他$|^其他工程$/u.test(c)){let a=b.map(a=>a.name);return a.some(a=>/彩绘|护栏|围栏|小品|标识|标牌|墙面|整治/u.test(a))?"环境整治工程":a.some(a=>/绿化|栽植|铺装|种植/u.test(a))?"景观附属工程":a.some(a=>/拆除|清理|清淤|清运/u.test(a))?"清理整治工程":"零星工程"}return/^其他装饰/u.test(c)?"零星装饰工程":/^措施项目$/u.test(c)?b.map(a=>a.name).some(a=>/化粪池|吊装|安装/u.test(a))?"模板、脚手架及化粪池安装工程":"模板与脚手架工程":/墙[、,]?柱面装饰/u.test(c)?b.some(a=>/幕墙|隔断/u.test(a.name))?c:"墙柱面装饰工程":c}function _(a){let b=[];for(let c of a.matchAll(/(?:\d+|[一二三四五六七八九十]+)[..、]\s*([^::;;。]{1,40}?)[::]\s*([^。;;\n]{1,80})/gu)){let a=c[1].trim(),d=c[2].trim();!/具体详见|其他|满足验收/u.test(a)&&!/(?:(?:详)?见|按)(?:设计|施工)?图纸|招标文件补疑/u.test(d)&&a&&d&&b.push({key:a,value:d})}return b}function aa(a,b){let c=[...b].sort((a,b)=>a.seq-b.seq),d={},e=new Map;for(let a of c)a.name&&e.set(a.name,(e.get(a.name)||0)+a.quantity);for(let[a,b]of e){let e=c.find(b=>b.name===a)?.unit||"";d[a]={value:Math.round(1e3*b)/1e3,unit:e}}let f=[...new Set(c.map(a=>a.name).filter(Boolean))].slice(0,16),g=function(a){let b=[];for(let c of a)for(let a of _(c.description))/含|配合|安装|铺设|浇筑|夯实|碾压|养护|刻痕|拉毛|切缝|灌缝|喷播|栽植|回填|吊装|固定/u.test(a.value)&&a.value.length<=60&&b.push(`${c.name}:${a.value}`);return[...new Set(b)].slice(0,20)}(c),h=[],i=new Set;for(let a of c){for(let b of _(a.description)){let a=`${b.key}=${b.value}`;if(!i.has(a)&&(i.add(a),h.push({key:b.key,value:b.value,source:"boq"}),h.length>=24))break}if(h.length>=24)break}let j=[];for(let a of c)for(let b of _(a.description))/压实|试验|检测|验收|闭水|合格/u.test(`${b.key}${b.value}`)&&j.length<12&&!j.includes(b.value)&&j.push(b.value);let k=(0,z.cn)([a]),l=[];for(let a of(0===j.length&&k.length>0&&j.push(...k[0].acceptance.slice(0,6).map(a=>`${a}(知识卡)`)),k.slice(0,2)))for(let b of a.standards)l.includes(b)||l.push(b);return{name:a,kind:"major",quantities:d,processChain:f,methods:g,params:h,acceptance:j,standards:l,source:"boq",coveredSeqs:c.map(a=>a.seq)}}function ab(a,b){if(b)return b.needsBlueprintAuthority(a);let c=[];return/劳动力/u.test(a)&&c.push("laborPeak"),/资源配置|资源|机械|设备|机具/u.test(a)&&c.push("blueprint"),/进度计划|进度|工期/u.test(a)&&c.push("schedule"),[...new Set(c)]}function ac(a,b,c){let d=ab(a,c),e=b?b.checks.filter(a=>!a.passed).map(a=>a.name):[],f=b?.authorityAvailability;return f?{missing:d.filter(a=>!f[a]),failedChecks:e}:{missing:d,failedChecks:e}}function ad(a,b){let c=["【一体化蓝图参数桶——全项目口径唯一权威源,正文引用必须与此一致,不得自行推导不同数值】"];return c.push("计划类数值(劳动力人数/工期/工程量/养护期)必须且只能引用以下锚点值:禁止将各工种人数相加推导峰值、禁止按定额自行估算、禁止改写锚点数值。"),c.push(`- 项目:${a.project.name}(${a.project.scope})`),c.push(...(0,B.Xe)((0,B.IV)(a),b)),a.inspectionBatches.length>0&&c.push(`- 检验批划分:${a.inspectionBatches.map(a=>`${a.scope}——${a.planDesc}`).join(";")}`),c.push(`- 临时用电:${a.tempUtilities.powerLoad}`),c.push(`- 临时用水:${a.tempUtilities.waterUsage}`),a.decisionLock.entries.length>0&&c.push(`- 关键决策锁:${a.decisionLock.entries.map(a=>`${a.label}:${a.values.join("、")}`).join(";")}`),a.constructionDeployment.sections.length>0&&c.push(`- 施工部署:${a.constructionDeployment.flow};施工顺序 ${a.constructionDeployment.sequence}`),a.keyDifficulties.length>0&&c.push(`- 重难点(逐项列明):${a.keyDifficulties.map(a=>`${a.name}——${a.measure}`).join(";")}`),c.push(`- 金额禁区:${a.amountRule}`),c.push(a.drawingNote),c.join("\n")}let ae=[{domain:"contract",chapterPattern:/进度|工期|总体|部署|概况|工程|计划/u},{domain:"schedule",chapterPattern:/进度|工期|部署|计划|总体|施工方案|分部分项/u},{domain:"labor",chapterPattern:/劳动力|人员|资源|进度|工期|部署|概况/u},{domain:"equipment",chapterPattern:/机械|设备|资源/u},{domain:"material",chapterPattern:/物资|材料|资源|采购|亮化|路灯|照明/u},{domain:"quantity",chapterPattern:/分部分项|施工方案|施工方法|土方|道路|管网|工程概况/u},{domain:"spec",chapterPattern:/材料|物资|质量|技术|施工方案|分部分项/u},{domain:"earthwork",chapterPattern:/土方|土石方|道路|管网|施工方案|分部分项/u},{domain:"test",chapterPattern:/质量|试验|检测|验收/u},{domain:"redline",chapterPattern:/绿化|种植|养护|苗木|技能|培训|成品保护|质量|亮化|路灯|照明|概况|工程|总体/u}],af=/编制|工程概况|项目概况|概况|说明/u;function ag(a,b,c){let d=[c.blockTitle,...c.subPointTitles,...c.skeletonNames??[]].map(a=>a.trim()).filter(a=>a.length>=2),e=a=>d.some(b=>a.includes(b)||b.includes(a)),f=[`【第 ${a.id} 章「${a.title}」蓝图切片(本节聚焦)——以下项目专属事实由蓝图冻结锁定,正文必须一致引用】`,m.Ru],g=[],h=[...new Set(a.subSections.flatMap(a=>a.requiredParams.filter(a=>"must_cite"===a.mode).map(a=>a.path)))];h.length>0&&g.push(`本章 must_cite 参数(正文必须出现且与蓝图一致):${h.join("、")}`);let i=[];for(let b of a.subSections){let a=b.workPackages.filter(a=>e(a.name));if(0===a.length)continue;let c=[`## ${b.id} ${b.title}`],d=b.requiredParams.filter(a=>"must_cite"===a.mode).map(a=>a.path);for(let b of(d.length>0&&c.push(`must_cite 参数:${d.join("、")}`),a))c.push(...function(a){let b=[`
222
222
  ### 工作包:${a.name}(${"major"===a.kind?"主要":"一般"}工作包)`],c=Object.entries(a.quantities).map(([a,b])=>`${a} ${b.value}${b.unit}`).join("、");return c&&b.push(`- 工程量:${c}`),a.processChain.length>0&&b.push(`- 工序链:${a.processChain.join(" → ")}`),a.methods.length>0&&b.push(`- 施工方法(清单特征原文):${a.methods.join(";")}`),a.params.length>0&&b.push(`- 工艺参数:${a.params.map(a=>`${a.key}=${a.value}`).join(";")}`),a.acceptance.length>0&&b.push(`- 验收要求:${a.acceptance.join(";")}`),a.standards.length>0&&b.push(`- 规范依据:${a.standards.join(";")}`),b}(b));i.push(c.join("\n"))}let j=a.subSections.reduce((a,b)=>a+b.workPackages.length,0);if(0===i.length&&j>0){let b=[];for(let c of a.subSections){let a=c.workPackages.map(a=>{let b=Object.entries(a.quantities),c=b.slice(0,3).map(([a,b])=>`${a} ${b.value}${b.unit}`).join("、");return c?`${a.name}(${c}${b.length>3?" 等":""})`:a.name});a.length>0&&b.push(`- ${c.title}:${a.join(";")}`)}g.push(`【本章工作包索引(本节为章级总述/无专属工作包;各工作包详细参数见本章其他小节,本节不得复写单个分部方案)】
223
223
  ${b.join("\n")}`)}else g.push(...i);let k=function(a,b){let c=ae.filter(b=>b.chapterPattern.test(a.title)).map(a=>a.domain),d=(0,B.Bf)((0,B.IV)(b),c);return(af.test(a.title)&&d.push(...function(a){let b=[];return(a.basisRegulations??[]).length>0&&b.push(`- 招标文件引用法规(项目专属事实,编制依据小节必须列出法规名称及文号):${a.basisRegulations.join("、")}`),b.push("- 编制依据小节由写作模型自行列写:国家法律法规及文号、工程所在地地方性法规、与本工程分部对应的现行施工验收规范名称及编号;不得空写「国家现行法律、行政法规」等类别话术,不得编造文号"),b}(b)),0===d.length)?"":["【本章数值锚点——计划类数值必须且只能引用以下锚点值;禁止将各工种人数相加推导峰值、禁止按定额自行估算、禁止改写或自设任何计划类数值】",...d].join("\n")}(a,b),l=c.sliceCharsCap??6e3,n=[...f,...g,k].filter(Boolean).join("\n\n");if(n.length>l){let a=[],b=0;for(let c of n.split("\n")){if(b+c.length+1>l)break;a.push(c),b+=c.length+1}n=`${a.join("\n")}
224
- (本节蓝图切片过长已截断,未展开工作包见本章其他小节与绑定材料)`}return n}function ah(a){return a.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&")}function ai(a,b){let c=a.outline.chapters.find(a=>a.title===b);return c||a.outline.chapters.find(a=>b.includes(a.title)||a.title.includes(b))}function aj(a,b,c){let d=[],e=[],f=a,g=b.subSections.flatMap(a=>a.requiredParams.filter(a=>"must_cite"===a.mode&&a.strict)),h=[];/劳动力|人员|资源|进度|工期|部署|概况/u.test(b.title)&&c.resources.labor.peakValue>0&&h.push({path:"data.resources.labor.peak_value",mode:"must_cite",strict:!0}),/绿化|种植|养护|苗木|技能|培训|成品保护|质量/u.test(b.title)&&h.push({path:"data.redline.greening_maintenance",mode:"must_cite",strict:!0});let i=[...g,...h],j=new Set;for(let a of i)if(!j.has(a.path)){if(j.add(a.path),"data.contract.total_days"===a.path){if(c.contract.totalDays<=0)continue;let a=/(?:总工期|施工工期|合同工期|工期)(?:为|约|共计|控制)?[^\n。;;]{0,20}?(\d+(?:\.\d+)?)\s*(?:日历)?天/gu,b=!1;f=f.replace(a,(a,e)=>{b=!0;let f=Number(e);return f===c.contract.totalDays||f<=0?a:(d.push({anchor:"总工期",from:`${f}天`,to:`${c.contract.totalDays}天`}),a.replace(e,String(c.contract.totalDays)))}),b||e.push(`总工期 ${c.contract.totalDays} 日历天`);continue}if(a.path.startsWith("data.quantities.")){let b=a.path.slice(16),g=c.quantities[b];if(!g||g.value<=0)continue;let h=g.unit||"",i=RegExp(`${ah(b)}[^\\n。;;]{0,40}?(\\d+(?:\\.\\d+)?)\\s*${h?ah(h):""}`,"gu"),j=!1;f=f.replace(i,(a,c)=>{j=!0;let e=Number(c);return e===g.value||e<=0?a:(d.push({anchor:b,from:`${e}${h}`,to:`${g.value}${h}`}),a.replace(c,String(g.value)))}),j||e.push(`${b} ${g.value}${h}`);continue}if("data.resources.labor.peak_value"===a.path){let a=c.resources.labor.peakValue;if(a<=0)continue;let b=/(?:高峰(?:期)?(?:人数)?|峰值|劳动力(?:总人数|峰值)|各专业班组高峰人数)[^。;;\n]{0,24}?(?:约)?\s*([\d,]+)\s*人/gu,g=!1;f=f.replace(b,(b,c)=>{g=!0;let e=Number(String(c).replace(/,/g,""));return!Number.isFinite(e)||e===a||e<=0?b:(d.push({anchor:"劳动力峰值",from:`${c}人`,to:`${a}人`}),b.replace(c,String(a)))}),g||e.push(`劳动力峰值 ${a} 人`);continue}if("data.redline.greening_maintenance"===a.path){let a=c.redLineFacts.find(a=>/养护/u.test(a.key));if(!a)continue;let b=/养护[^。;;|]{0,10}?([一二两三四五六七八九十]+|\d{1,2})\s*年/u.exec(a.value);if(!b)continue;let g=(0,l._P)(b[1]??"");if(void 0===g||!Number.isFinite(g)||g<=0)continue;let h=/养护[^。;;\n|]{0,16}?([一二两三四五六七八九十]+|\d{1,2})\s*年/gu,i=!1;f=f.replace(h,(a,b)=>{i=!0;let c=(0,l._P)(b);return void 0===c||!Number.isFinite(c)||c===g||c<=0?a:(d.push({anchor:"养护期",from:`${b}年`,to:`${g}年`}),a.replace(b,String(g)))}),i||e.push(`养护期 ${g} 年`);continue}}return{markdown:f,fixed:d,missing:e}}function ak(a,b){let c=new Set,d=[];for(let e of a.subSections.flatMap(a=>a.requiredParams.filter(a=>"must_cite"===a.mode&&a.strict)))if(!c.has(e.path)){if(c.add(e.path),"data.contract.total_days"===e.path&&b.contract.totalDays>0){d.push(`总工期 ${b.contract.totalDays} 日历天`);continue}if(e.path.startsWith("data.quantities.")){let a=b.quantities[e.path.slice(16)];a&&a.value>0&&d.push(`${e.path.slice(16)} ${a.value}${a.unit}`)}}return d.join(";")}let al={core:1.5,general:1,brief:.6};function am(a){return/^(?:确保\s*)?[人材机](?:员|力|料|械|工)?\s*的保障体系与措施$/u.test(a)}function an(a,b){let c=a.replace(/\s+/gu,""),d=b.replace(/\s+/gu,"");return c===d||c.includes(d)||d.includes(c)}function ao(a,b){if(0===a.length)return;let c=Math.max(0,Math.round(b)),d=a.reduce((a,b)=>a+Math.max(1,b.subPoints.length),0),e=Math.max(1,Math.floor(c/1200)),f=a;if(f.length>e){let a=[],b=Math.max(1,Math.ceil(d/e)),c=[],g=0;for(let d of f){let f=Math.max(1,d.subPoints.length);c.length>0&&a.length<e-1&&g+f>b&&(a.push(c),c=[],g=0),c.push(d),g+=f}c.length>0&&a.push(c),f=a.map(a=>1===a.length?a[0]:{title:(a.find(a=>ap(a.title))||a[0]).title,subPoints:a.flatMap(a=>a.subPoints),facts:[...new Set(a.flatMap(a=>a.facts))],targetWords:0})}for(let a=0;a<64;a+=1){let a=f.map(a=>Math.max(.5,a.subPoints.reduce((a,b)=>a+al[b.tier||"general"],0))),b=a.reduce((a,b)=>a+b,0)||f.length,d=-1,e=4500;if(f.forEach((f,g)=>{let h=Math.floor(c*a[g]/b);f.subPoints.length>=2&&h>e&&(d=g,e=h)}),d<0)break;let g=f[d],h=Math.ceil(g.subPoints.length/2);f.splice(d,1,{...g,subPoints:g.subPoints.slice(0,h),targetWords:0},{...g,subPoints:g.subPoints.slice(h),targetWords:0})}let g=f.map(a=>Math.max(.5,a.subPoints.reduce((a,b)=>a+al[b.tier||"general"],0))),h=g.reduce((a,b)=>a+b,0)||f.length,i=0;for(let a of(f.forEach((a,b)=>{a.targetWords=Math.max(1,Math.min(b===f.length-1?c-i:Math.floor(c*g[b]/h),4500)),i+=a.targetWords}),f)){if(0===a.subPoints.length)continue;let b=a.subPoints.map(a=>al[a.tier||"general"]),c=b.reduce((a,b)=>a+b,0)||a.subPoints.length,d=b.map(b=>Math.max(100,Math.floor(a.targetWords*b/c))),e=d.reduce((a,b)=>a+b,0);if(e>a.targetWords){let d=a.targetWords;a.subPoints.forEach((e,f)=>{let g=f===a.subPoints.length-1?Math.max(1,d):Math.max(1,Math.floor(a.targetWords*b[f]/c));e.quotaWords=g,d-=g});continue}let f=b.reduce((a,c,d)=>c>b[a]?d:a,0),g=a.targetWords-e;a.subPoints.forEach((a,b)=>{a.quotaWords=d[b]+(b===f?g:0)})}f!==a&&(a.length=0,a.push(...f))}function ap(a){return m.Yp.test(a)||m.gG.test(a)}function aq(a,b,c){let d=new Map,e=[];for(let b of a){if(am(b)||m.Yp.test(b)||m.gG.test(b)){e.push({kind:"solo",section:b});continue}let a=/工期|进度|节点|计划|纠偏|预警/u.test(b)?"工期进度":/质量|验收|三检|样板|隐蔽|复试|实测|通病/u.test(b)?"质量验收":/安全|危大|风险|隐患|应急|临边|洞口|消防|临电/u.test(b)?"安全风险":/文明|扬尘|噪声|绿色|废水|垃圾|环保|智慧/u.test(b)?"文明绿色":/劳务|工资|实名|银行|考勤|人员|岗位|组织|职责/u.test(b)?"组织劳务":/资源|材料|设备|机械|人材机|调配/u.test(b)?"资源保障":/施工|工艺|流程|顺序|穿插|部署|区段|流水/u.test(b)?"施工组织":"综合管理";d.has(a)||(d.set(a,[]),e.push({kind:"domain",key:a})),d.get(a).push(b)}let f=a=>{let b=[];for(let c of a){let a=b[b.length-1],d=a?a.sources[a.sources.length-1]:"";!(0,m.tZ)(c)&&!am(c)&&a&&(an(c,d)||function(a,b){let c=a=>{let b=new Set;for(let c=0;c<a.length-1;c+=1)b.add(a.slice(c,c+2));return b},d=c(b),e=[...c(a)];return 0===e.length?0:e.filter(a=>d.has(a)).length/e.length}(c,d)>=.75)?(a.sources.push(c),c.length>a.title.length&&(a.title=c)):b.push({title:c,sources:[c]})}return b},g=[];for(let a of e){if("solo"===a.kind){g.push({title:a.section,subPoints:[{title:a.section,sources:[a.section]}],facts:[],targetWords:0});continue}let c=f(d.get(a.key)||[]);for(let a=0;a<c.length;a+=6){let d=c.slice(a,a+6);g.push({title:d[0].title||b,subPoints:d,facts:[],targetWords:0})}}return ao(g,c),{blocks:g,coveredSections:a.slice(),fallbackSections:[]}}function ar(a){let b,{blueprintChapter:c,inputSections:d,chapterTitle:e,targetWords:f}=a,g=[],i=[];if(c&&0!==c.subSections.length){for(let a of c.subSections){let b=a.workPackages.map(a=>({title:a.name,sources:[a.name],tier:"major"===a.kind?"core":"general"}));b.length>6?g.push(...function(a,b){let c=a.replace(/工程$/u,""),d=[],e=new Map;for(let a of b){let b=(0,j.Ld)(a.title),c=e.get(b);void 0===c&&(c=d.length,e.set(b,c),d.push({label:b,points:[]})),d[c].points.push(a)}let f=[];for(let a of d)for(let b=0;b<a.points.length;b+=6){let d=a.points.slice(b,b+6),e=0===b?(0,k.UW)(c,a.label):(0,k.UW)(c,d[0].title);f.push({title:e,subPoints:d,facts:[],targetWords:0})}return f}(a.title,b)):g.push({title:a.title,subPoints:b,facts:[],targetWords:0})}if(0===g.length){let a=aq(d,e,f);g=a.blocks,i=a.coveredSections,b=a.fallbackSections}else i=d.filter(a=>g.some(b=>an(b.title,a)||b.subPoints.some(b=>b.sources.some(b=>an(b,a))||an(b.title,a)))),b=d.filter(a=>!i.includes(a))}else{let a=aq(d,e,f);g=a.blocks,i=a.coveredSections,b=a.fallbackSections}if(b.length>0){for(let a of aq(b,e,f).blocks)g.some(b=>an(b.title,a.title)||a.subPoints.some(a=>b.subPoints.some(b=>an(b.title,a.title))))||g.push(a);i=[...i,...b],b=[]}if(a.projectContext&&a.evidence){let b=a.projectContext,c=a.evidence,d=m.gG.test(e)?[]:(a.blueprintChapter?.subSections??[]).map(a=>a.title),i=m.gG.test(e)?new Set(g.map(a=>(0,j.Sw)(a.title)).filter(Boolean)):new Set;g=g.map(a=>{if(!ap(a.title)||m.gG.test(e)&&m.gG.test(a.title))return a;let k=function(a,b){let c=[];for(let b of a){let a=b.trim(),d=a.replace(/\s+/gu,"");if(!(!d||/^其他$|^其它$|^其他工程$|^其余/u.test(d))&&!c.some(a=>{let b=a.replace(/\s+/gu,"");return b.includes(d)||d.includes(b)})&&(c.push(a),c.length>=12))break}return c}([...(0,h.Ep)(b,c).filter(a=>{let b=a.replace(/^[一二三四五六七八九十百\d]+[、..\s::-]+/u,"");return!i.has((0,j.Sw)(b))}),...d],0);if(k.length<3)return a;let l=Math.max(1,g.filter(a=>ap(a.title)).length),n=Math.max(3,Math.min(k.length,Math.floor(f/350/l)));if(k.length<=n)return{...a,subPoints:k.map(a=>({title:a,sources:[a],tier:"core"}))};let o=k.slice(0,n),p=k.slice(n);return{...a,subPoints:[...o.map(a=>({title:a,sources:[a],tier:"core"})),{title:"其他分部分项工程施工要点",sources:p,tier:"brief"}]}})}let l=(0,k.SX)(g.map(a=>({title:a.title})));return g.forEach((a,b)=>{a.title=l[b]}),ao(g,f),0===g.length&&e.trim()&&(g=[{title:e,subPoints:[],facts:[],targetWords:Math.min(4500,Math.max(1200,f))}]),{blocks:g,coveredSections:i,fallbackSections:b}}function as(a,b){let c=[],d=a.split("\n").filter(a=>!/^\s*\|/u.test(a.trim())).join("\n");if(b.resources.labor.peakValue>0)for(let a of d.matchAll(/(?:劳动力峰值|施工高峰|高峰人数|高峰期劳动力|劳动力高峰)(?:为|约|达到|共计)?[^\n。;;]{0,20}?(\d+(?:\.\d+)?)\s*人/gu)){let d=Number(a[1]);if(d>0&&d!==b.resources.labor.peakValue){c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`蓝图引用冲突:正文出现与蓝图不一致的劳动力峰值 ${d} 人`,suggestion:`请统一使用蓝图劳动力峰值:${b.resources.labor.peakValue} 人`});break}}if(b.contract.totalDays>0)for(let a of d.matchAll(/(?:总工期|施工工期|合同工期|工期)(?:为|约|共计|控制)?[^\n。;;]{0,20}?(\d+(?:\.\d+)?)\s*(?:日历)?天/gu)){let e=Math.max(0,(a.index??0)-16),f=d.slice(e,(a.index??0)+a[0].length),g=(a.index??0)-e+a[0].indexOf(String(a[1])),h=f.slice(0,g),i=/^(?:总工期|施工工期|合同工期)/u.test(a[0]),j=g>0&&/按|阶段|拆除|清杂|准备|第\d+日|至第|集中|延误|滞后|分解|机动|预留|保留|余量|缓冲|占用|无法容纳|不少于|不超过|不得超过|不大于|不低于|至少|最多/u.test(h),k=!i&&g>0&&/计划|安排/u.test(h);if(j||k)continue;let l=Number(a[1]);if(l>0&&l!==b.contract.totalDays){c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`蓝图引用冲突:正文出现与蓝图不一致的工期表述 ${l}日历天`,suggestion:`请统一使用蓝图总工期:${b.contract.totalDays} 日历天`});break}}for(let d of b.redLineFacts.filter(a=>!a.amount&&"自然村数量"!==a.key)){let b=String(d.value).split(/[,。;、()()\]【】::\s\n[]+/u).map(a=>a.trim()).filter(a=>a.length>=3&&!/^[\d.]+$/u.test(a)&&!/^(?:其他|具体详见|满足设计要求|设计图纸|图集|招标文件|政府相关文件|规范等|资料)$/u.test(a));0!==b.length&&(b.some(b=>a.includes(b))||c.push({level:"warning",severity:"warning",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`蓝图红线事实缺口:正文未体现「${d.key}=${d.value}」`,suggestion:`请在对应章节补写该红线事实(数值必须与蓝图一致)`}))}let e=b.redLineFacts.find(a=>"自然村数量"===a.key),f=e?Number(/(\d+)/u.exec(e.value)?.[1]):0;if(f>0)for(let a of d.matchAll(/(\d+)\s*个(?:美丽宜居)?自然村(?!分组|施工组)/gu)){let b=d.slice(Math.max(0,(a.index??0)-16),a.index??0);if(/片区|分为|分成|划分为|每组|每片|每台|每个|各台|各车|每村/u.test(b))continue;let e=Number(a[1]);if(e>0&&e!==f){c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`蓝图红线事实冲突:正文出现与蓝图不一致的自然村数量 ${e} 个`,suggestion:`请统一使用蓝图自然村数量:${f} 个自然村`});break}}let g=[],h=[],i=Object.entries(b.quantities).sort((a,b)=>b[0].length-a[0].length),j=[];for(let[a,b]of i){if(!b||b.value<=0)continue;let c=b.unit||"",e=c?`${function(a){let b=a.trim().toLowerCase();return/(?:m2|m²|㎡)/.test(b)?"(?:㎡|m\xb2|m2)":/(?:m3|m³)/.test(b)?"(?:m\xb3|m3)":"t"===b||"吨"===b?"(?:吨|t)":ah(a)}(c)}(?![0-9A-Za-z])`:"",f=RegExp(ah(a),"gu");for(let i of d.matchAll(f)){let f=i.index??0,k=f+a.length;if(j.some(a=>f<a.end&&k>a.start))continue;j.push({start:f,end:k});let l=d.slice(k,k+40),m=Math.min(...[l.search(/[、。;;,,\n]/u)].filter(a=>a>=0).concat([l.length])),n=l.slice(0,m),o=RegExp(`(?<![\\dA-Za-z])(\\d+(?:\\.\\d+)?)\\s*${e}`,"u").exec(n);if(!o)continue;let p=d.slice(f,k+(o.index??0)+o[0].length),q=p.slice(a.length);if(/按[^。;;\n|]{0,16}?(?:强度|厚度|规格|等级|部位)[^。;;\n|]{0,8}?(?:分区|分别|分规格|分强度|分等级|分部位)/u.test(q))continue;let r=p.lastIndexOf(String(o[1]));if(/(?:每层每|按每|每批|每处|每层)\s*$/u.test(p.slice(0,r))||/^[^\d]{0,4}(?:不少于|至少)\s*\d+\s*[点个处]/u.test(p.slice(r+String(o[1]).length))||r>0&&/(?:间距|不大于|不小于|≥|≤|直径|宽度|厚度|高度|深度|坡度)[^0-9]*$/u.test(p.slice(0,r)))continue;let s=d.slice(Math.max(0,f-12),f);if(/[郢庄岗塘圩坝池井]/u.test(s))continue;let t=d.lastIndexOf("\n\n",f),u=-1===t?0:t+2,v=d.indexOf("\n\n",f),w=-1===v?d.length:v;if(/[郢庄岗塘圩坝]/u.test(d.slice(u,w))||/(?:直径|DN|Φ|φ)\\s*\\d+/u.test(d.slice(Math.max(0,f-8),f))||/(?:直径|DN|Φ|φ)\\s*\\d+/u.test(d.slice(f+a.length,f+a.length+8)))continue;let x=Number(o[1]);if(Number.isFinite(x)&&!(x<=0)){if(x===b.value){h.push({ns:f});continue}(b.groups??[]).some(a=>1e-6>Math.abs(a.value-x))||g.push({name:a,value:x,unit:c,authorityValue:b.value,ns:f})}}}let k=a=>{let b=Math.max(d.lastIndexOf("。",a),d.lastIndexOf("\n",a)),c=d.indexOf("。",a);-1===c&&(c=d.length);let e=d.indexOf("\n",a);return -1===e&&(e=d.length),{start:b+1,end:Math.min(c,e)+1}},l=(a,b)=>{if(a.length>10)return!1;let c=a.map(a=>Math.round(100*a)),d=Math.round(100*b);for(let a=1;a<1<<c.length;a+=1){let b=0,e=0;for(let d=0;d<c.length;d+=1)(a&1<<d)!=0&&(b+=c[d],e+=1);if(e>=2&&b===d)return!0}return!1},m=new Set;{let a=new Map;for(let b of g){let c=a.get(b.name)??[];c.push(b.value),a.set(b.name,c)}for(let[b,c]of a){let a=[...new Set(c)];a.length>=2&&l(a,g.find(a=>a.name===b)?.authorityValue??0)&&m.add(b)}}let n=new Set;for(let a of g){let b=k(a.ns),e=d.lastIndexOf("\n\n",a.ns),f=-1===e?0:e+2;if(/(?:单体|单座|单栋|单幢|每座|每栋|化粪池|作业对象)/u.test(d.slice(f,b.end)))continue;let i=g.filter(c=>c!==a&&c.ns>=b.start&&c.ns<b.end).length+1,j=h.filter(a=>a.ns>=b.start&&a.ns<b.end).length;!(i>=2&&j>=1||m.has(a.name))&&(n.has(a.name)||(n.add(a.name),c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`蓝图引用冲突:正文出现与蓝图不一致的工程量 ${a.name} ${a.value}${a.unit}`,suggestion:`请统一使用蓝图工程量:${a.name} ${a.authorityValue}${a.unit}`})))}return c}let at=/(?<=[日天])\s*[0-9]+(?:\.[0-9]+)?(?=[\s]*(?:招标|建设|质量|合同|项目|工程|资金|投标|开标|评标|付款|工期|开工|计划|计价|现场|资质|标段|[0-9]{1,3}[.、.]|[,,。;;]|$))/u;function au(a){let b=Object.values(a.byKey||{}).filter(a=>!!(a&&a.label&&a.value)).sort((a,b)=>(b.priority||0)-(a.priority||0));return 0===b.length?"":b.slice(0,60).map(a=>{let b=String(a.value),c=at.exec(b),d=c?b.slice(0,c.index).trim():b;return`- ${a.label}:${d}`}).join("\n")}function av(a){let b=Date.now(),c={stage:"阶段 0",standardBlocksLoaded:0,standardBlockGaps:[],laborDerivationBasis:"清单汇总 \xd7 经验区间系数(定额工效知识不全,降级区间表达)",llmCalls:0,fallbackUsed:[],warnings:[],durationMs:0},d={version:"2.0.0",projectCode:function(a,b){let c=a=>a.replace(/^\d+(?:\.\d+)*\s*--\s*(?=\d{4}年)/u,""),d=/项目名称[::]\s*([^\n]{2,60})/u.exec(a);if(d){let a=c(d[1].trim()),b=a.split(/计划工期[::]|合同工期[::]|总工期[::]|工期[::]|质量标准[::]|计价[::]|施工地点/u)[0]?.trim()||a;if(b)return b}let e=/(\d{4}\s*年度\S{2,40}建设项目)/u.exec(a);return e?c(e[1].trim()):b||""}(a.basicFacts||"",a.templateName)||void 0,docType:"单位工程施工组织设计",createdAt:new Date().toISOString().slice(0,10),sourceMaterials:[...a.boundFilePaths]},h=M({projectRoot:a.projectRoot,boundFilePaths:a.boundFilePaths});h.warning&&c.warnings.push(h.warning);let i=h.boq;i&&(c.boq={sourceFile:i.sourceFile,totalEntries:i.totalEntries,complete:i.complete,villageCount:i.villages.length,pagesMissingTotal:i.villages.reduce((a,b)=>a+b.pagesMissing.length,0)},i.complete||c.warnings.push("清单解析完整性校验未通过(序号缺口/页码缺失),蓝图覆盖校验将兜底报告")),c.stage="阶段 A";let j=i||{entries:[],villages:[],totalEntries:0,sourceFile:"",complete:!1,diagnostics:{totalChunks:0,markdownChunks:0,declarationChunks:0,skippedChunks:0,droppedIncompleteRows:0}},k=function(a){let b=[...new Set(a.boq.entries.map(a=>`${a.section} ${a.subsection} ${a.name}`))].join(" "),c=[/管网|排水|雨污|污水|给水|检查井/u,/道路|路床|路面|路缘石|青砖|散水/u,/绿化|栽植|种植|苗木|景观|喷播/u,/路灯|亮化|照明/u].filter(a=>a.test(b)).length;if(a.boq.villages.length>0&&c>=3)return F;let d=[{strategy:G,patterns:[/砌体|装饰|幕墙|地下室|层高|户型|塔吊|塔式起重机|脚手架|抹灰|门窗|屋面|防水/u]},{strategy:I,patterns:[/桥墩|桥台|墩柱|盖梁|系梁|箱梁|梁板|支座|伸缩缝|桥面|隧道|洞身|衬砌|锚杆/u]},{strategy:J,patterns:[/路基|路面|沥青|水稳|摊铺|压实|面层/u]},{strategy:K,patterns:[/闸室|闸墩|闸门|启闭机|围堰|导流|堤防|护坡|护岸|疏浚|水下/u]}].map(a=>({strategy:a.strategy,count:a.patterns.reduce((a,c)=>{let d=b.match(RegExp(c.source,"gu"));return a+(d?d.length:0)},0)})).sort((a,b)=>b.count-a.count);if((d[0]?.count||0)>=2)return d[0].strategy;let e=function(a){let b,c=[["市政",/市政|管网|排水|给水|雨污|污水|燃气/gu],["公路",/公路|路基|路面|沥青/gu],["桥梁与隧道",/桥梁|隧道/gu],["水利水电",/水利|河道|灌溉|防洪/gu],["电力",/电力|供配电|电压|电缆/gu],["机电安装",/机电|暖通|通风|空调|消防|给排水|智能化|电梯/gu],["装饰装修",/装饰|装修|幕墙/gu],["园林绿化",/园林|绿化|景观|苗木/gu],["铁路",/铁路|轨道/gu],["港口与航道",/港口|航道/gu],["矿山冶金",/矿山|冶金/gu],["房建",/房建|建筑|住宅|楼|结构|砌体|基坑|地下室|主体|层高|户型|公共建筑|产业园|厂房/gu]].map(([b,c])=>(c.lastIndex=0,{type:b,count:(a.match(c)||[]).length})).sort((a,b)=>b.count-a.count),d=c[0],e=0,f=0;for(let[c,d]of[["房建",/产业园|标准厂房|安置房|住宅小区|保障房|卫生院|门诊楼|办公楼/gu],["市政",/老旧小区|海绵城市|雨污分流|管网改造|管廊/gu],["桥梁与隧道",/桥梁|隧道|盾构|箱梁|斜拉|悬索|涵洞/gu],["公路",/公路|路基|路面|沥青|桩号|互通|匝道/gu],["水利水电",/堤防|水库|泵站|水闸|疏浚|节制闸|水电站|大坝|围堰/gu],["电力",/变电站|输电线路|配电|GIS设备|电缆|架空线路|铁塔|箱变/gu],["铁路",/铁路|轨道|道床|站台|信号机|接触网/gu],["港口与航道",/港口|码头|航道|护岸|堆场|泊位/gu],["矿山冶金",/矿山|矿井|选矿|冶炼|尾矿|轧钢/gu]]){d.lastIndex=0;let g=(a.match(d)||[]).length;g>=3&&g>e?(f=e,b=c,e=g):g>f&&(f=g)}if(b){if(f>0&&e<2*f&&d&&d.count>e)return d.type;let a=c.find(a=>a.type===b)?.count||0;return d&&d.type!==b&&d.count>2*a&&d.count>=2*e?d.type:b}return d&&d.count>0?d.type:"其他"}(`${a.templateName||""} ${a.basicFacts||""} ${a.chapterTitles.join(" ")} ${b}`);return"房建"===e||"装饰装修"===e?G:"桥梁与隧道"===e?I:"公路"===e?J:"水利水电"===e?K:H}({basicFacts:a.basicFacts,templateName:a.templateName,chapterTitles:a.chapterTitles,boq:j}),l=function(a){var b;let{boq:c}=a,d=a.strategy||F,h=N(c),i=function(a){let b=[];for(let c of O)for(let d of a.entries){if(!c.namePattern.test(`${d.name} ${d.description}`))continue;let a=c.extract(d);if(a){b.push({key:c.key,value:a,source:`清单条目 ${d.seq}「${d.name}」特征原文`,amount:c.amount});break}}return b}(c),j=function(a,b){let c=/(\d+)\s*个(?:美丽宜居)?自然村/u.exec(a);if(c)return Number(c[1]);let d=/(\d+)\s*个(?:美丽宜居)?自然村/u.exec(b);return d?Number(d[1]):0}(a.projectName,a.basicFacts||"")||c.villages.length;j>0&&i.push({key:"自然村数量",value:`${j} 个自然村`,source:"招标文件项目名称(清单自然村分组兜底)"});let k=function(a){let b={},c=a.entries.filter(a=>"垫层"===a.name).map(a=>/C\d{2}/u.exec(a.description)?.[0]).filter(a=>!!a);if(c.length>0){let a=new Map;for(let b of c)a.set(b,(a.get(b)||0)+1);b.cushion=[...a.entries()].sort((a,b)=>b[1]-a[1]||(a[0]<b[0]?-1:1))[0][0]}return b}(c),l=function(a,b){let c=/(?<!节点)(?<!阶段)(?<!分项)(?<!关键)(?:计划工期|合同工期|工期总日历天数|工期控制|工期目标|总工期|工期)[^。;;\n]{0,12}?(\d{1,4})\s*个?\s*日历天/u.exec(a)||/(\d{1,4})\s*个?\s*日历天[^。;;\n]{0,8}?(?:总工期|倒排|分解|完成)/u.exec(a),d=c?Number(c[1]):0,e=/质量(?:标准|要求)[^。;;\n]{0,20}?[::]\s*([^。;;\n]{1,20})/u.exec(a)||/合格/u.exec(a),f=e?(e[1]||"合格").trim():"",g=/(合造价〔\d{4}〕\d+号)/u.exec(a),h=g?g[1]:"",i=/(?:合同估算价|招标控制价|最高投标限价|项目总投资|投资估算|工程概算)[^。;;\n]{0,20}?([\d,]+(?:\.\d+)?)\s*万/u.exec(a);return{totalDays:d,qualityStandard:f,pricingFile:h,estimatedAmount:i?Number(i[1].replace(/,/g,"")):0}}(a.basicFacts||"",0),m=function(a,b,c=F){let d=b>0?b:360,e=c.milestoneGroups,f=e.map(b=>({...b,weight:a.entries.filter(a=>b.pattern.test(`${a.name} ${a.description}`)).reduce((a,b)=>a+b.quantity,0)})),g=Math.max(1,Math.round(.08*d)),h=d-g,i=f.slice(1),j=i.reduce((a,b)=>a+b.weight,0),k=f.reduce((a,b)=>a+b.weight,0),l=j<=0||k>0&&j/k<.05,m=l?0:j,n=i.length>0?Math.max(2,Math.round(.95*h/i.length)):0,o=[{key:"prep",label:e[0]?.label||"施工准备与清杂拆除",duration:g,basis:`前导工作封顶 8% 总工期(清杂整治可与主体并行穿插,不按工程量权重独占)`}];for(let a of i){if(l){o.push({key:a.key,label:a.label,duration:n,basis:`分部特征未命中策略分组(非 prep 权重占比 ${k>0?(j/k*100).toFixed(1):"0.0"}% < 5%),按总工期均分降级(每组 ${n} 天)`});continue}let b=Math.max(2,Math.round(a.weight/m*h*.95));o.push({key:a.key,label:a.label,duration:b,basis:`分部工程量权重 ${(a.weight/m*100).toFixed(1)}% \xd7 剩余工期 ${h} 天`})}let p=o.reduce((a,b)=>a+(b.duration||0),0);for(let a=o.length-1;a>=0&&p>d;a--){let b=p-d,c=Math.min(o[a]?.duration||0,b);o[a]&&c>0&&(o[a].duration=(o[a].duration||0)-c,p-=c)}return o}(c,l.totalDays,d),n=function(a,b,c=0,d=[],e=F){let f=Math.max(30,Math.round(.85*(b>0?b:360))),{groupOfEntry:g,laborUnitRange:h,tradeMapping:i,milestoneGroups:j}=e,k=new Map;for(let b of a.entries){if(b.quantity<=0)continue;let a=g(b),c=e.laborQuotaTable?.find(a=>a.pattern.test(`${b.name} ${b.description}`)&&a.unit===b.unit),d=c||h[a];if(!d||b.unit!==d.unit)continue;let f=i.find(a=>a.pattern.test(`${b.name} ${b.description}`))?.trade;if(!f)continue;let j=`${a}|${f}`,l=k.get(j)||{trade:f,workdaysMin:0,workdaysMax:0,unit:d.unit,basisQty:0,quota:c};l.quota!==c&&(l.quota=void 0),l.workdaysMin+=b.quantity*d.min,l.workdaysMax+=b.quantity*d.max,l.basisQty+=b.quantity,k.set(j,l)}let l=new Map;for(let a of k.values()){let b=l.get(a.trade)||{min:0,max:0,unit:a.unit,qty:0,quota:a.quota};b.quota!==a.quota&&(b.quota=void 0),b.min+=a.workdaysMin,b.max+=a.workdaysMax,b.qty+=a.basisQty,l.set(a.trade,b)}let m=[...l.entries()].sort((a,b)=>b[1].max-a[1].max).map(([a,b])=>({trade:a,min:Math.max(1,Math.round(b.min/f*1.3)),max:Math.max(1,Math.round(b.max/f*1.6)),basis:b.quota?`工种工程量约 ${Math.round(b.qty)}${b.unit} \xd7 定额工效(${b.quota.subName} ${b.quota.code},${b.quota.min}~${b.quota.max} 工日/${b.unit})\xf7 有效工期 ${f} 天(定额知识库命中)`:`工种工程量约 ${Math.round(b.qty)}${b.unit} \xd7 经验工效区间 \xf7 有效工期 ${f} 天(定额工效知识不全,降级区间表达)`})),n=m.reduce((a,b)=>a+(b.min||0),0),o=m.reduce((a,b)=>a+(b.max||0),0),p={min:Math.max(10,Math.round(.75*n)),max:Math.max(10,Math.round(.9*o))},q=p,r=`各工种同期在场按 0.75~0.9 重叠系数折算(各工种人数区间之和 ${n}~${o} 人)`;if(c>0){let a=P(c,f,e),b=Math.max(p.min,a.min),d=Math.min(p.max,a.max);b<=d?(q={min:b,max:d},r=`工程量推导区间 [${p.min}, ${p.max}] 与造价锚定区间 [${a.min}, ${a.max}] 的交集(${a.detail})`):(q={min:a.min,max:a.max},r=`工程量推导区间 [${p.min}, ${p.max}] 与造价锚定区间 [${a.min}, ${a.max}] 无交集,以造价锚定区间为准(${a.detail})`)}let s=Math.round((q.min+q.max)/2),t=[];for(let b of j){let c=a=>e.laborQuotaTable?.find(b=>b.pattern.test(`${a.name} ${a.description}`)&&b.unit===a.unit)||h[g(a)],k=a.entries.filter(a=>{if(a.quantity<=0||!b.pattern.test(`${a.name} ${a.description}`))return!1;let d=c(a);return!!d&&a.unit===d.unit&&i.some(b=>b.pattern.test(`${a.name} ${a.description}`))});if(0===k.length)continue;let l=k.reduce((a,b)=>a+b.quantity*(c(b)?.min||0),0),m=k.reduce((a,b)=>a+b.quantity*(c(b)?.max||0),0),n=d.find(a=>a.key===b.key)?.duration||Math.max(1,Math.round(f/j.length)),o=Math.max(1,Math.round(l/n*1.3)),p=Math.max(o,Math.round(m/n*1.6));t.push({phase:b.label,min:Math.min(o,s),max:Math.min(p,s),basis:`阶段条目工程量约 ${Math.round(k.reduce((a,b)=>a+b.quantity,0))} \xd7 经验工效区间 \xf7 阶段 ${n} 天(不均匀系数 1.3~1.6,同时在场人数按峰值 ${s} 人封顶)`})}let u=j[j.length-1];if(t.length>0&&u&&!t.some(a=>a.phase===u.label)){let a=Math.max(1,Math.round(.2*s));t.push({phase:u.label,min:a,max:a,basis:`收尾阶段零星作业兜底(峰值 ${s} 人的 20%),不参与工日推导`})}let v=m.map(a=>({trade:a.trade,mid:Math.max(1,Math.round(((a.min??1)+(a.max??a.min??1))/2))})),w=v.reduce((a,b)=>a+b.mid,0)||1,x=v.map(a=>({trade:a.trade,quota:a.mid*s/w})),y=x.map(a=>({trade:a.trade,count:Math.max(1,Math.floor(a.quota))})),z=s-y.reduce((a,b)=>a+b.count,0);if(z>0){let a=x.map((a,b)=>({index:b,frac:a.quota-Math.floor(a.quota)})).sort((a,b)=>b.frac-a.frac);for(let b=0;z>0&&b<a.length;b+=1){let c=a[b];if(!c)continue;let d=y[c.index];d&&(d.count+=1,z-=1)}}else if(z<0){let a=x.map((a,b)=>({index:b,quota:a.quota})).sort((a,b)=>a.quota-b.quota);for(let b=0;z<0&&b<a.length;b+=1){let c=a[b];if(!c)continue;let d=y[c.index];d&&!(d.count<=1)&&(d.count-=1,z+=1)}}let A=y.map(a=>({trade:a.trade,count:a.count,basis:`工种构成唯一口径:按工种工程量区间中值比例收敛(合计恒等于峰值 ${s} 人)`}));return{peak:q,peakValue:s,peakBasis:r,byPhase:t,byTrade:m,composition:A}}(c,l.totalDays,l.estimatedAmount||0,m,d),o=function(a,b=F){let c=[];for(let d of b.equipmentMapping){let b=a.entries.filter(a=>d.pattern.test(`${a.name} ${a.description}`)&&(!d.unit||a.unit===d.unit));if(0===b.length)continue;let e=b.reduce((a,b)=>a+b.quantity,0),f=Math.max(1,Math.min(4,Math.ceil(Math.log10(Math.max(10,e))-1))),g=Math.max(f,Math.min(8,f+2));c.push({name:d.name,spec:d.spec,min:f,max:g,basis:`${d.basis};相关条目工程量合计约 ${Math.round(e)}${b[0]?.unit||""}`})}return c}(c,d),p=function(a){let b=new Map;for(let c of a.entries){if(!c.name||c.quantity<=0)continue;let a=function(a){let b=[];for(let c of Q){let d=c.exec(a);d&&d[0]&&(b.some(a=>a.includes(d[0])||d[0].includes(a))||b.push(d[0]))}return b.join(" ")}(`${c.name} ${c.description}`),d=a?`${c.name}||${a}`:c.name,e=b.get(d);e?e.quantity+=c.quantity:b.set(d,{name:c.name,quantity:c.quantity,unit:c.unit,spec:a||void 0})}return[...b.values()].sort((a,b)=>b.quantity-a.quantity).map(a=>({name:a.name,quantity:Math.round(1e3*a.quantity)/1e3,unit:a.unit,spec:a.spec,batchDesc:"按施工段分批进场",basis:"清单汇总 + 进度匹配"}))}(c),q=function(a,b=F){let c=[];for(let d of b.inspectionBatchRules){let b=a.entries.filter(a=>d.namePattern.test(a.name)&&(!d.unit||a.unit===d.unit)).reduce((a,b)=>a+b.quantity,0);if(b<=0)continue;let e=d.divisor>0?Math.max(1,Math.ceil(b/d.divisor)):0,f=d.descTemplate.replace("{count}",String(e)).replace("{total}",String(Math.round(1e3*b)/1e3));c.push({scope:d.scope,planDesc:f})}return c}(c,d),r=function(a){let b=a.entries.filter(a=>/挖一般土方|挖沟槽土方|挖基坑土方|清淤/u.test(a.name)&&"m3"===a.unit).reduce((a,b)=>a+b.quantity,0),c=a.entries.filter(a=>/回填|路肩土|种植土/u.test(a.name)&&"m3"===a.unit).reduce((a,b)=>a+b.quantity,0),d=Math.max(0,Math.round((b-c)*1e3)/1e3);return{excavation:Math.round(1e3*b)/1e3,backfill:Math.round(1e3*c)/1e3,disposal:d,basis:"清单挖/填/弃量汇总(挖方含清淤),补疑口径:购土回填运距自行考虑"}}(c),s=function(a,b,c=F){let{machinePowerTable:d,powerFallbackText:e,waterNoteText:f}=c,g=a.filter(a=>!R.has(a.name)).reduce((a,b)=>a+(d.find(a=>a.name===b.name)?.kw||0)*(b.min||1),0),h=g>0?`按电动机具负荷计算,用电负荷约 ${Math.round(.7*g)} kW(电动机具总功率约 ${Math.round(g)} kW,同时系数 0.7),${e}`:e,i=Math.round(60*b.peakValue/1e3*10)/10;return{powerLoad:h,waterUsage:`生活用水按高峰人数 ${b.peakValue} 人、每人每日 60L 计算,高峰日生活用水量约 ${i} m\xb3;${f}`}}(o,n,d),t=(a.evidence||[]).map(a=>String(a.content||"")).join("\n"),u=function(a,b){let c=function(){let a=g.join(f.homedir(),".customize-agent","template-references"),b=g.join(a,"files","standard-blocks");if(!e.existsSync(b))return[];let c=g.join(a,"standard-blocks.json"),d=[];if(e.existsSync(c))try{d=(JSON.parse(e.readFileSync(c,"utf8")).blocks||[]).map(a=>a.id)}catch{d=[]}return 0===d.length&&(d=e.readdirSync(b).filter(a=>a.endsWith(".md")).map(a=>a.replace(/\.md$/u,""))),d.flatMap(a=>{let c=g.join(b,`${a}.md`);if(!e.existsSync(c))return[];let d=e.readFileSync(c,"utf8"),f=(/^title:\s*(\S.*)$/mu.exec(d)||[])[1]?.trim()||a;return[{id:a,title:f,source:(/^source:\s*(\S.*)$/mu.exec(d)||[])[1]?.trim()||"",lines:d.split("\n").filter(Boolean)}]})}(),d=[],h=[];for(let e of c){let c=[],f=!1;for(let a of e.lines){if(a.startsWith("---")||/^(id|title|source|updatedAt|tags):/u.test(a)||a.startsWith("# "))continue;if(a.startsWith("## ")){f=!0;continue}if(f)continue;let b=a.trim();if(!/^[-*\d]+[.、]?\s+/u.test(b))continue;let d=b.replace(/^[-*\d]+[.、]?\s+/u,"").trim();d&&c.push(d)}if("hazardous-works-37"===e.id){let c=function(a,b){let c,d=[],e=[...b.matchAll(/(?:开挖深度|挖深|基坑深度|沟槽深度)[^。;;\n]{0,30}?(\d+(?:\.\d+)?)\s*m/gu)].map(a=>Number(a[1])),f=a.entries.some(a=>/挖一般土方|挖沟槽|挖基坑/u.test(a.name)),g=!1;if(f){d.push("基坑(槽)土方开挖、降水——判定阈值:开挖深度超过3m(含3m)属危大工程,超过5m(含5m)属超过一定规模(须专家论证)");let a=e.length>0?Math.max(...e):void 0;void 0===a?(c="本项目含沟槽/基坑土方开挖,但资料(清单特征「挖土深度:详见设计图纸」)未给出具体开挖深度,危大等级判定待人工确认(不静默判定)",g=!0):c=a<3?`资料确认最大开挖深度 ${a}m < 3m,未达危大工程阈值,按一般土方工程管控`:a<5?`资料确认最大开挖深度 ${a}m,达到 3m(含)未达 5m,属危大工程,需编制专项施工方案(施工单位技术负责人审核签字、总监理工程师审查签字)`:`资料确认最大开挖深度 ${a}m ≥ 5m,属超过一定规模的危大工程,专项方案须专家论证(不少于5名符合专业要求的专家)`}else c="本项目清单未含基坑(槽)土方开挖条目,基坑工程危大判定不涉及";return d.push("专家论证程序:超过一定规模的危大工程专项方案组织不少于5名符合专业要求的专家论证;修改后的方案由施工单位技术负责人审核签字、加盖单位公章,并由总监理工程师审查签字、加盖执业印章后方可实施"),{items:d,conclusion:c,gap:g}}(a,b);d.push({id:"hazardous_works",title:"危大工程判定",source:e.source,items:[...c.items,`本项目判定结论:${c.conclusion}`],gap:c.gap})}else d.push({id:e.id,title:e.title,source:e.source,items:c.slice(0,30)})}for(let a of["organization","construction_prep","survey_plan","product_protection","emergency_plans","seasonal_measures","fire_control","tech_management","smart_site","handover_warranty","quality_innovation"])h.push(a),d.push({id:a,title:a,source:"(缺口:参考文档资产未建设)",items:[],gap:!0});return{blocks:d,gaps:h}}(c,t),v=function(a,b=F){let c=a.villages.map(a=>a.villageGroup).map(a=>({name:a,basis:"清单按自然村分组(工程名称)"})),d=c.length>1&&b.multiVillageFlow?.(c.length)||b.deploymentFlowFallback,e=[...new Set(a.entries.map(a=>a.section).filter(Boolean))];return{sections:c,sequence:e.length>0?e.join(" → "):b.sequenceFallback,sequenceBasis:"清单分部分项编排顺序归纳",flow:d}}(c,d),w=function(a,b=F){let c=[];for(let d of b.difficultyTemplates)d.test(a)&&c.push({name:"function"==typeof d.name?d.name(a):d.name,measure:d.measure,basis:d.basis});return 0===c.length&&c.push({name:"多工序交叉施工组织",measure:"按清单分部分项编排顺序组织流水作业,加强工序衔接检查",basis:"清单分部分项结构"}),c}(c,d),x=function(a){let b=V({facts:a.facts||[],evidence:a.evidence||[]}),c=[];a.contract&&a.contract.totalDays>0&&c.push({id:"contract_days",label:"总工期",values:[`${a.contract.totalDays} 日历天`]}),a.labor&&a.labor.peakValue>0&&c.push({id:"labor_peak",label:"劳动力峰值",values:[`${a.labor.peakValue} 人`]});let d=a.villageCount||0;if(d>0&&c.push({id:"village_count",label:"自然村数量",values:[`${d} 个自然村`]}),a.boq){let b=function(a){let b=new Map;for(let c of a.entries){if(!c.name||c.quantity<=0||/暂列|金额|计日工|税|费/u.test(c.name)||!c.section)continue;let a=b.get(c.section)||[];a.push(c),b.set(c.section,a)}return[...b.entries()].sort((a,b)=>b[1].length-a[1].length).slice(0,3).map(([a,b])=>{let c=[...b].sort((a,b)=>b.quantity-a.quantity||(a.name<b.name?-1:1))[0];return`${c.name} ${c.quantity}${c.unit}(${a})`})}(a.boq);b.length>0&&c.push({id:"core_quantities",label:"核心工程量",values:b})}return{entries:[...b,...c]}}({facts:a.facts,evidence:a.evidence,contract:l,labor:n,boq:c,villageCount:j}),y=[...new Set(c.entries.map(a=>a.section).filter(Boolean))],z=function(a){if(!a)return"";let b=/建设地点[:: \t|]*([^。;;\n|]{2,40}?)(?=[,,。;;\n|]|工期|质量标准|合同估算)/u.exec(a);return b?b[1].trim().replace(/[,,、\s]+$/gu,""):""}(a.basicFacts||""),A=z?function(a){for(let b of D)if(b.pattern.test(a))return{...b.climate};return{rainySeason:"",highTemp:"",winter:""}}(z):(b=d.climateZone)&&D.find(a=>a.zone===b)?.climate||{rainySeason:"",highTemp:"",winter:""},B=[];return m.some(a=>a.basis.includes("均分降级"))&&B.push("里程碑分组未命中策略特征(非 prep 权重占比 < 5%),已按总工期均分降级,详见 data.milestones.basis"),A.rainySeason||B.push("气候区域未识别,季节施工由写作层按建设地点常识处理"),{data:{project:{name:a.projectName||"(待提取:项目名称)",scope:c.villages.length>0?`${c.villages.length} 个自然村分组(${c.villages.map(a=>a.villageGroup).join("、")})`:"",works:y,location:z},contract:{totalDays:l.totalDays,qualityStandard:l.qualityStandard,pricingFile:l.pricingFile,estimatedAmount:l.estimatedAmount||void 0},climate:A,milestones:m,resources:{labor:n,equipment:o},materialsPlan:p,fundPlan:{wageRule:"工资性工程款按合造价〔2022〕8号执行",usagePlan:"按进度分阶段使用"},testPlan:[],earthworkBalance:r,tempUtilities:s,redLineFacts:i,amountRule:"商务禁区延续:金额类数据禁入正文(合同估算价例外),fund_plan/red_line_facts 渲染时遵守",decisionLock:x,quantities:h,specAuthorities:k,inspectionBatches:q,standardBlocks:u.blocks,constructionDeployment:v,keyDifficulties:w,basisRegulations:Y(`${a.basicFacts||""}
224
+ (本节蓝图切片过长已截断,未展开工作包见本章其他小节与绑定材料)`}return n}function ah(a){return a.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&")}function ai(a,b){let c=a.outline.chapters.find(a=>a.title===b);return c||a.outline.chapters.find(a=>b.includes(a.title)||a.title.includes(b))}function aj(a,b,c){let d=[],e=[],f=a,g=b.subSections.flatMap(a=>a.requiredParams.filter(a=>"must_cite"===a.mode&&a.strict)),h=[];/劳动力|人员|资源|进度|工期|部署|概况/u.test(b.title)&&c.resources.labor.peakValue>0&&h.push({path:"data.resources.labor.peak_value",mode:"must_cite",strict:!0}),/绿化|种植|养护|苗木|技能|培训|成品保护|质量/u.test(b.title)&&h.push({path:"data.redline.greening_maintenance",mode:"must_cite",strict:!0});let i=[...g,...h],j=new Set;for(let a of i)if(!j.has(a.path)){if(j.add(a.path),"data.contract.total_days"===a.path){if(c.contract.totalDays<=0)continue;let a=/(?:总工期|施工工期|合同工期|工期)(?:为|约|共计|控制)?[^\n。;;]{0,20}?(\d+(?:\.\d+)?)\s*(?:日历)?天/gu,b=!1;f=f.replace(a,(a,e)=>{b=!0;let f=Number(e);return f===c.contract.totalDays||f<=0?a:(d.push({anchor:"总工期",from:`${f}天`,to:`${c.contract.totalDays}天`}),a.replace(e,String(c.contract.totalDays)))}),b||e.push(`总工期 ${c.contract.totalDays} 日历天`);continue}if(a.path.startsWith("data.quantities.")){let b=a.path.slice(16),g=c.quantities[b];if(!g||g.value<=0)continue;let h=g.unit||"",i=RegExp(`${ah(b)}[^\\n。;;]{0,40}?(\\d+(?:\\.\\d+)?)\\s*${h?ah(h):""}`,"gu"),j=!1;f=f.replace(i,(a,c)=>{j=!0;let e=Number(c);return e===g.value||e<=0?a:(d.push({anchor:b,from:`${e}${h}`,to:`${g.value}${h}`}),a.replace(c,String(g.value)))}),j||e.push(`${b} ${g.value}${h}`);continue}if("data.resources.labor.peak_value"===a.path){let a=c.resources.labor.peakValue;if(a<=0)continue;let b=/(?:高峰(?:期)?(?:人数)?|峰值|劳动力(?:总人数|峰值)|各专业班组高峰人数)[^。;;\n]{0,24}?(?:约)?\s*([\d,]+)\s*人/gu,g=!1;f=f.replace(b,(b,c)=>{g=!0;let e=Number(String(c).replace(/,/g,""));return!Number.isFinite(e)||e===a||e<=0?b:(d.push({anchor:"劳动力峰值",from:`${c}人`,to:`${a}人`}),b.replace(c,String(a)))}),g||e.push(`劳动力峰值 ${a} 人`);continue}if("data.redline.greening_maintenance"===a.path){let a=c.redLineFacts.find(a=>/养护/u.test(a.key));if(!a)continue;let b=/养护[^。;;|]{0,10}?([一二两三四五六七八九十]+|\d{1,2})\s*年/u.exec(a.value);if(!b)continue;let g=(0,l._P)(b[1]??"");if(void 0===g||!Number.isFinite(g)||g<=0)continue;let h=/养护[^。;;\n|]{0,16}?([一二两三四五六七八九十]+|\d{1,2})\s*年/gu,i=!1;f=f.replace(h,(a,b)=>{i=!0;let c=(0,l._P)(b);return void 0===c||!Number.isFinite(c)||c===g||c<=0?a:(d.push({anchor:"养护期",from:`${b}年`,to:`${g}年`}),a.replace(b,String(g)))}),i||e.push(`养护期 ${g} 年`);continue}}return{markdown:f,fixed:d,missing:e}}function ak(a,b){let c=new Set,d=[];for(let e of a.subSections.flatMap(a=>a.requiredParams.filter(a=>"must_cite"===a.mode&&a.strict)))if(!c.has(e.path)){if(c.add(e.path),"data.contract.total_days"===e.path&&b.contract.totalDays>0){d.push(`总工期 ${b.contract.totalDays} 日历天`);continue}if(e.path.startsWith("data.quantities.")){let a=b.quantities[e.path.slice(16)];a&&a.value>0&&d.push(`${e.path.slice(16)} ${a.value}${a.unit}`)}}return d.join(";")}let al={core:1.5,general:1,brief:.6};function am(a){return/^(?:确保\s*)?[人材机](?:员|力|料|械|工)?\s*的保障体系与措施$/u.test(a)}function an(a,b){let c=a.replace(/\s+/gu,""),d=b.replace(/\s+/gu,"");return c===d||c.includes(d)||d.includes(c)}function ao(a,b){if(0===a.length)return;let c=Math.max(0,Math.round(b)),d=a.reduce((a,b)=>a+Math.max(1,b.subPoints.length),0),e=Math.max(1,Math.floor(c/1800)),f=a;if(f.length>e){let a=[],b=Math.max(1,Math.ceil(d/e)),c=[],g=0;for(let d of f){if(ap(d.title)){c.length>0&&(a.push(c),c=[],g=0),a.push([d]);continue}let f=Math.max(1,d.subPoints.length);c.length>0&&a.length<e-1&&g+f>b&&(a.push(c),c=[],g=0),c.push(d),g+=f}c.length>0&&a.push(c),f=a.map(a=>1===a.length?a[0]:{title:(a.find(a=>ap(a.title))||a[0]).title,subPoints:a.flatMap(a=>a.subPoints),facts:[...new Set(a.flatMap(a=>a.facts))],targetWords:0})}for(let a=0;a<64&&f.length<e;a+=1){let a=f.map(a=>Math.max(.5,a.subPoints.reduce((a,b)=>a+al[b.tier||"general"],0))),b=a.reduce((a,b)=>a+b,0)||f.length,d=-1,e=2800;if(f.forEach((f,g)=>{let h=Math.floor(c*a[g]/b);f.subPoints.length>=2&&h>e&&(d=g,e=h)}),d<0)break;let g=f[d],h=Math.ceil(g.subPoints.length/2);f.splice(d,1,{...g,subPoints:g.subPoints.slice(0,h),targetWords:0},{...g,subPoints:g.subPoints.slice(h),targetWords:0})}let g=f.map(a=>Math.max(.5,a.subPoints.reduce((a,b)=>a+al[b.tier||"general"],0))),h=g.reduce((a,b)=>a+b,0)||f.length,i=Math.min(1800,Math.floor(c/Math.max(1,f.length))),j=f.map((a,b)=>Math.max(i,Math.floor(c*g[b]/h))),k=j.reduce((a,b)=>a+b,0)-c;if(k>0){let a=j.map(a=>a-i),b=a.reduce((a,b)=>a+b,0);if(b>0){let c=0;j.forEach((d,e)=>{let f=Math.min(a[e],Math.floor(k*a[e]/b));j[e]=d-f,c+=f});for(let a=k-c;a>0;a-=1){let a=-1;if(j.forEach((b,c)=>{!(b<=i)&&(a<0||b>j[a])&&(a=c)}),a<0)break;j[a]=j[a]-1}}}let l=j.reduce((a,b)=>a+b,0);if(l<c){let a=0;j.forEach((b,c)=>{b>j[a]&&(a=c)}),j[a]=j[a]+(c-l)}for(let a of(f.forEach((a,b)=>{a.targetWords=Math.max(1,Math.min(j[b],4500))}),f)){if(0===a.subPoints.length)continue;let b=a.subPoints.map(a=>al[a.tier||"general"]),c=b.reduce((a,b)=>a+b,0)||a.subPoints.length,d=b.map(b=>Math.max(100,Math.floor(a.targetWords*b/c))),e=d.reduce((a,b)=>a+b,0);if(e>a.targetWords){let d=a.targetWords;a.subPoints.forEach((e,f)=>{let g=f===a.subPoints.length-1?Math.max(1,d):Math.max(1,Math.floor(a.targetWords*b[f]/c));e.quotaWords=g,d-=g});continue}let f=b.reduce((a,c,d)=>c>b[a]?d:a,0),g=a.targetWords-e;a.subPoints.forEach((a,b)=>{a.quotaWords=d[b]+(b===f?g:0)})}f!==a&&(a.length=0,a.push(...f))}function ap(a){return m.Yp.test(a)||m.gG.test(a)}function aq(a,b,c){let d=new Map,e=[];for(let b of a){if(am(b)||m.Yp.test(b)||m.gG.test(b)){e.push({kind:"solo",section:b});continue}let a=/工期|进度|节点|计划|纠偏|预警/u.test(b)?"工期进度":/质量|验收|三检|样板|隐蔽|复试|实测|通病/u.test(b)?"质量验收":/安全|危大|风险|隐患|应急|临边|洞口|消防|临电/u.test(b)?"安全风险":/文明|扬尘|噪声|绿色|废水|垃圾|环保|智慧/u.test(b)?"文明绿色":/劳务|工资|实名|银行|考勤|人员|岗位|组织|职责/u.test(b)?"组织劳务":/资源|材料|设备|机械|人材机|调配/u.test(b)?"资源保障":/施工|工艺|流程|顺序|穿插|部署|区段|流水/u.test(b)?"施工组织":"综合管理";d.has(a)||(d.set(a,[]),e.push({kind:"domain",key:a})),d.get(a).push(b)}let f=a=>{let b=[];for(let c of a){let a=b[b.length-1],d=a?a.sources[a.sources.length-1]:"";!(0,m.tZ)(c)&&!am(c)&&a&&(an(c,d)||function(a,b){let c=a=>{let b=new Set;for(let c=0;c<a.length-1;c+=1)b.add(a.slice(c,c+2));return b},d=c(b),e=[...c(a)];return 0===e.length?0:e.filter(a=>d.has(a)).length/e.length}(c,d)>=.75)?(a.sources.push(c),c.length>a.title.length&&(a.title=c)):b.push({title:c,sources:[c]})}return b},g=[];for(let a of e){if("solo"===a.kind){g.push({title:a.section,subPoints:[{title:a.section,sources:[a.section]}],facts:[],targetWords:0});continue}let c=f(d.get(a.key)||[]);for(let a=0;a<c.length;a+=6){let d=c.slice(a,a+6);g.push({title:d[0].title||b,subPoints:d,facts:[],targetWords:0})}}return ao(g,c),{blocks:g,coveredSections:a.slice(),fallbackSections:[]}}function ar(a){let b,{blueprintChapter:c,inputSections:d,chapterTitle:e,targetWords:f}=a,g=[],i=[];if(c&&0!==c.subSections.length){for(let a of c.subSections){let b=a.workPackages.map(a=>({title:a.name,sources:[a.name],tier:"major"===a.kind?"core":"general"}));b.length>6?g.push(...function(a,b){let c=a.replace(/工程$/u,""),d=[],e=new Map;for(let a of b){let b=(0,j.Ld)(a.title),c=e.get(b);void 0===c&&(c=d.length,e.set(b,c),d.push({label:b,points:[]})),d[c].points.push(a)}let f=[];for(let a of d)for(let b=0;b<a.points.length;b+=6){let d=a.points.slice(b,b+6),e=0===b?(0,k.UW)(c,a.label):(0,k.UW)(c,d[0].title);f.push({title:e,subPoints:d,facts:[],targetWords:0})}return f}(a.title,b)):g.push({title:a.title,subPoints:b,facts:[],targetWords:0})}if(0===g.length){let a=aq(d,e,f);g=a.blocks,i=a.coveredSections,b=a.fallbackSections}else i=d.filter(a=>g.some(b=>an(b.title,a)||b.subPoints.some(b=>b.sources.some(b=>an(b,a))||an(b.title,a)))),b=d.filter(a=>!i.includes(a))}else{let a=aq(d,e,f);g=a.blocks,i=a.coveredSections,b=a.fallbackSections}if(b.length>0){for(let a of aq(b,e,f).blocks)g.some(b=>an(b.title,a.title)||a.subPoints.some(a=>b.subPoints.some(b=>an(b.title,a.title))))||g.push(a);i=[...i,...b],b=[]}if(a.projectContext&&a.evidence){let b=a.projectContext,c=a.evidence,d=m.gG.test(e)?[]:(a.blueprintChapter?.subSections??[]).map(a=>a.title),i=m.gG.test(e)?new Set(g.map(a=>(0,j.Sw)(a.title)).filter(Boolean)):new Set;g=g.map(a=>{if(!ap(a.title)||m.gG.test(e)&&m.gG.test(a.title))return a;let k=function(a,b){let c=[];for(let b of a){let a=b.trim(),d=a.replace(/\s+/gu,"");if(!(!d||/^其他$|^其它$|^其他工程$|^其余/u.test(d))&&!c.some(a=>{let b=a.replace(/\s+/gu,"");return b.includes(d)||d.includes(b)})&&(c.push(a),c.length>=12))break}return c}([...(0,h.Ep)(b,c).filter(a=>{let b=a.replace(/^[一二三四五六七八九十百\d]+[、..\s::-]+/u,"");return!i.has((0,j.Sw)(b))}),...d],0);if(k.length<3)return a;let l=Math.max(1,g.filter(a=>ap(a.title)).length),n=Math.max(3,Math.min(k.length,Math.floor(f/350/l)));if(k.length<=n)return{...a,subPoints:k.map(a=>({title:a,sources:[a],tier:"core"}))};let o=k.slice(0,n),p=k.slice(n);return{...a,subPoints:[...o.map(a=>({title:a,sources:[a],tier:"core"})),{title:"其他分部分项工程施工要点",sources:p,tier:"brief"}]}})}let l=(0,k.SX)(g.map(a=>({title:a.title})));return g.forEach((a,b)=>{a.title=l[b]}),ao(g,f),0===g.length&&e.trim()&&(g=[{title:e,subPoints:[],facts:[],targetWords:Math.min(2800,Math.max(1800,f))}]),{blocks:g,coveredSections:i,fallbackSections:b}}function as(a,b){let c=[],d=a.split("\n").filter(a=>!/^\s*\|/u.test(a.trim())).join("\n");if(b.resources.labor.peakValue>0)for(let a of d.matchAll(/(?:劳动力峰值|施工高峰|高峰人数|高峰期劳动力|劳动力高峰)(?:为|约|达到|共计)?[^\n。;;]{0,20}?(\d+(?:\.\d+)?)\s*人/gu)){let d=Number(a[1]);if(d>0&&d!==b.resources.labor.peakValue){c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`蓝图引用冲突:正文出现与蓝图不一致的劳动力峰值 ${d} 人`,suggestion:`请统一使用蓝图劳动力峰值:${b.resources.labor.peakValue} 人`});break}}if(b.contract.totalDays>0)for(let a of d.matchAll(/(?:总工期|施工工期|合同工期|工期)(?:为|约|共计|控制)?[^\n。;;]{0,20}?(\d+(?:\.\d+)?)\s*(?:日历)?天/gu)){let e=Math.max(0,(a.index??0)-16),f=d.slice(e,(a.index??0)+a[0].length),g=(a.index??0)-e+a[0].indexOf(String(a[1])),h=f.slice(0,g),i=/^(?:总工期|施工工期|合同工期)/u.test(a[0]),j=g>0&&/按|阶段|拆除|清杂|准备|第\d+日|至第|集中|延误|滞后|分解|机动|预留|保留|余量|缓冲|占用|无法容纳|不少于|不超过|不得超过|不大于|不低于|至少|最多/u.test(h),k=!i&&g>0&&/计划|安排/u.test(h);if(j||k)continue;let l=Number(a[1]);if(l>0&&l!==b.contract.totalDays){c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`蓝图引用冲突:正文出现与蓝图不一致的工期表述 ${l}日历天`,suggestion:`请统一使用蓝图总工期:${b.contract.totalDays} 日历天`});break}}for(let d of b.redLineFacts.filter(a=>!a.amount&&"自然村数量"!==a.key)){let b=String(d.value).split(/[,。;、()()\]【】::\s\n[]+/u).map(a=>a.trim()).filter(a=>a.length>=3&&!/^[\d.]+$/u.test(a)&&!/^(?:其他|具体详见|满足设计要求|设计图纸|图集|招标文件|政府相关文件|规范等|资料)$/u.test(a));0!==b.length&&(b.some(b=>a.includes(b))||c.push({level:"warning",severity:"warning",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`蓝图红线事实缺口:正文未体现「${d.key}=${d.value}」`,suggestion:`请在对应章节补写该红线事实(数值必须与蓝图一致)`}))}let e=b.redLineFacts.find(a=>"自然村数量"===a.key),f=e?Number(/(\d+)/u.exec(e.value)?.[1]):0;if(f>0)for(let a of d.matchAll(/(\d+)\s*个(?:美丽宜居)?自然村(?!分组|施工组)/gu)){let b=d.slice(Math.max(0,(a.index??0)-16),a.index??0);if(/片区|分为|分成|划分为|每组|每片|每台|每个|各台|各车|每村/u.test(b))continue;let e=Number(a[1]);if(e>0&&e!==f){c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`蓝图红线事实冲突:正文出现与蓝图不一致的自然村数量 ${e} 个`,suggestion:`请统一使用蓝图自然村数量:${f} 个自然村`});break}}let g=[],h=[],i=Object.entries(b.quantities).sort((a,b)=>b[0].length-a[0].length),j=[];for(let[a,b]of i){if(!b||b.value<=0)continue;let c=b.unit||"",e=c?`${function(a){let b=a.trim().toLowerCase();return/(?:m2|m²|㎡)/.test(b)?"(?:㎡|m\xb2|m2)":/(?:m3|m³)/.test(b)?"(?:m\xb3|m3)":"t"===b||"吨"===b?"(?:吨|t)":ah(a)}(c)}(?![0-9A-Za-z])`:"",f=RegExp(ah(a),"gu");for(let i of d.matchAll(f)){let f=i.index??0,k=f+a.length;if(j.some(a=>f<a.end&&k>a.start))continue;j.push({start:f,end:k});let l=d.slice(k,k+40),m=Math.min(...[l.search(/[、。;;,,\n]/u)].filter(a=>a>=0).concat([l.length])),n=l.slice(0,m),o=RegExp(`(?<![\\dA-Za-z])(\\d+(?:\\.\\d+)?)\\s*${e}`,"u").exec(n);if(!o)continue;let p=d.slice(f,k+(o.index??0)+o[0].length),q=p.slice(a.length);if(/按[^。;;\n|]{0,16}?(?:强度|厚度|规格|等级|部位)[^。;;\n|]{0,8}?(?:分区|分别|分规格|分强度|分等级|分部位)/u.test(q))continue;let r=p.lastIndexOf(String(o[1]));if(/(?:每层每|按每|每批|每处|每层)\s*$/u.test(p.slice(0,r))||/^[^\d]{0,4}(?:不少于|至少)\s*\d+\s*[点个处]/u.test(p.slice(r+String(o[1]).length))||r>0&&/(?:间距|不大于|不小于|≥|≤|直径|宽度|厚度|高度|深度|坡度)[^0-9]*$/u.test(p.slice(0,r)))continue;let s=d.slice(Math.max(0,f-12),f);if(/[郢庄岗塘圩坝池井]/u.test(s))continue;let t=d.lastIndexOf("\n\n",f),u=-1===t?0:t+2,v=d.indexOf("\n\n",f),w=-1===v?d.length:v;if(/[郢庄岗塘圩坝]/u.test(d.slice(u,w))||/(?:直径|DN|Φ|φ)\\s*\\d+/u.test(d.slice(Math.max(0,f-8),f))||/(?:直径|DN|Φ|φ)\\s*\\d+/u.test(d.slice(f+a.length,f+a.length+8)))continue;let x=Number(o[1]);if(Number.isFinite(x)&&!(x<=0)){if(x===b.value){h.push({ns:f});continue}(b.groups??[]).some(a=>1e-6>Math.abs(a.value-x))||g.push({name:a,value:x,unit:c,authorityValue:b.value,ns:f})}}}let k=a=>{let b=Math.max(d.lastIndexOf("。",a),d.lastIndexOf("\n",a)),c=d.indexOf("。",a);-1===c&&(c=d.length);let e=d.indexOf("\n",a);return -1===e&&(e=d.length),{start:b+1,end:Math.min(c,e)+1}},l=(a,b)=>{if(a.length>10)return!1;let c=a.map(a=>Math.round(100*a)),d=Math.round(100*b);for(let a=1;a<1<<c.length;a+=1){let b=0,e=0;for(let d=0;d<c.length;d+=1)(a&1<<d)!=0&&(b+=c[d],e+=1);if(e>=2&&b===d)return!0}return!1},m=new Set;{let a=new Map;for(let b of g){let c=a.get(b.name)??[];c.push(b.value),a.set(b.name,c)}for(let[b,c]of a){let a=[...new Set(c)];a.length>=2&&l(a,g.find(a=>a.name===b)?.authorityValue??0)&&m.add(b)}}let n=new Set;for(let a of g){let b=k(a.ns),e=d.lastIndexOf("\n\n",a.ns),f=-1===e?0:e+2;if(/(?:单体|单座|单栋|单幢|每座|每栋|化粪池|作业对象)/u.test(d.slice(f,b.end)))continue;let i=g.filter(c=>c!==a&&c.ns>=b.start&&c.ns<b.end).length+1,j=h.filter(a=>a.ns>=b.start&&a.ns<b.end).length;!(i>=2&&j>=1||m.has(a.name))&&(n.has(a.name)||(n.add(a.name),c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`蓝图引用冲突:正文出现与蓝图不一致的工程量 ${a.name} ${a.value}${a.unit}`,suggestion:`请统一使用蓝图工程量:${a.name} ${a.authorityValue}${a.unit}`})))}return c}let at=/(?<=[日天])\s*[0-9]+(?:\.[0-9]+)?(?=[\s]*(?:招标|建设|质量|合同|项目|工程|资金|投标|开标|评标|付款|工期|开工|计划|计价|现场|资质|标段|[0-9]{1,3}[.、.]|[,,。;;]|$))/u;function au(a){let b=Object.values(a.byKey||{}).filter(a=>!!(a&&a.label&&a.value)).sort((a,b)=>(b.priority||0)-(a.priority||0));return 0===b.length?"":b.slice(0,60).map(a=>{let b=String(a.value),c=at.exec(b),d=c?b.slice(0,c.index).trim():b;return`- ${a.label}:${d}`}).join("\n")}function av(a){let b=Date.now(),c={stage:"阶段 0",standardBlocksLoaded:0,standardBlockGaps:[],laborDerivationBasis:"清单汇总 \xd7 经验区间系数(定额工效知识不全,降级区间表达)",llmCalls:0,fallbackUsed:[],warnings:[],durationMs:0},d={version:"2.0.0",projectCode:function(a,b){let c=a=>a.replace(/^\d+(?:\.\d+)*\s*--\s*(?=\d{4}年)/u,""),d=/项目名称[::]\s*([^\n]{2,60})/u.exec(a);if(d){let a=c(d[1].trim()),b=a.split(/计划工期[::]|合同工期[::]|总工期[::]|工期[::]|质量标准[::]|计价[::]|施工地点/u)[0]?.trim()||a;if(b)return b}let e=/(\d{4}\s*年度\S{2,40}建设项目)/u.exec(a);return e?c(e[1].trim()):b||""}(a.basicFacts||"",a.templateName)||void 0,docType:"单位工程施工组织设计",createdAt:new Date().toISOString().slice(0,10),sourceMaterials:[...a.boundFilePaths]},h=M({projectRoot:a.projectRoot,boundFilePaths:a.boundFilePaths});h.warning&&c.warnings.push(h.warning);let i=h.boq;i&&(c.boq={sourceFile:i.sourceFile,totalEntries:i.totalEntries,complete:i.complete,villageCount:i.villages.length,pagesMissingTotal:i.villages.reduce((a,b)=>a+b.pagesMissing.length,0)},i.complete||c.warnings.push("清单解析完整性校验未通过(序号缺口/页码缺失),蓝图覆盖校验将兜底报告")),c.stage="阶段 A";let j=i||{entries:[],villages:[],totalEntries:0,sourceFile:"",complete:!1,diagnostics:{totalChunks:0,markdownChunks:0,declarationChunks:0,skippedChunks:0,droppedIncompleteRows:0}},k=function(a){let b=[...new Set(a.boq.entries.map(a=>`${a.section} ${a.subsection} ${a.name}`))].join(" "),c=[/管网|排水|雨污|污水|给水|检查井/u,/道路|路床|路面|路缘石|青砖|散水/u,/绿化|栽植|种植|苗木|景观|喷播/u,/路灯|亮化|照明/u].filter(a=>a.test(b)).length;if(a.boq.villages.length>0&&c>=3)return F;let d=[{strategy:G,patterns:[/砌体|装饰|幕墙|地下室|层高|户型|塔吊|塔式起重机|脚手架|抹灰|门窗|屋面|防水/u]},{strategy:I,patterns:[/桥墩|桥台|墩柱|盖梁|系梁|箱梁|梁板|支座|伸缩缝|桥面|隧道|洞身|衬砌|锚杆/u]},{strategy:J,patterns:[/路基|路面|沥青|水稳|摊铺|压实|面层/u]},{strategy:K,patterns:[/闸室|闸墩|闸门|启闭机|围堰|导流|堤防|护坡|护岸|疏浚|水下/u]}].map(a=>({strategy:a.strategy,count:a.patterns.reduce((a,c)=>{let d=b.match(RegExp(c.source,"gu"));return a+(d?d.length:0)},0)})).sort((a,b)=>b.count-a.count);if((d[0]?.count||0)>=2)return d[0].strategy;let e=function(a){let b,c=[["市政",/市政|管网|排水|给水|雨污|污水|燃气/gu],["公路",/公路|路基|路面|沥青/gu],["桥梁与隧道",/桥梁|隧道/gu],["水利水电",/水利|河道|灌溉|防洪/gu],["电力",/电力|供配电|电压|电缆/gu],["机电安装",/机电|暖通|通风|空调|消防|给排水|智能化|电梯/gu],["装饰装修",/装饰|装修|幕墙/gu],["园林绿化",/园林|绿化|景观|苗木/gu],["铁路",/铁路|轨道/gu],["港口与航道",/港口|航道/gu],["矿山冶金",/矿山|冶金/gu],["房建",/房建|建筑|住宅|楼|结构|砌体|基坑|地下室|主体|层高|户型|公共建筑|产业园|厂房/gu]].map(([b,c])=>(c.lastIndex=0,{type:b,count:(a.match(c)||[]).length})).sort((a,b)=>b.count-a.count),d=c[0],e=0,f=0;for(let[c,d]of[["房建",/产业园|标准厂房|安置房|住宅小区|保障房|卫生院|门诊楼|办公楼/gu],["市政",/老旧小区|海绵城市|雨污分流|管网改造|管廊/gu],["桥梁与隧道",/桥梁|隧道|盾构|箱梁|斜拉|悬索|涵洞/gu],["公路",/公路|路基|路面|沥青|桩号|互通|匝道/gu],["水利水电",/堤防|水库|泵站|水闸|疏浚|节制闸|水电站|大坝|围堰/gu],["电力",/变电站|输电线路|配电|GIS设备|电缆|架空线路|铁塔|箱变/gu],["铁路",/铁路|轨道|道床|站台|信号机|接触网/gu],["港口与航道",/港口|码头|航道|护岸|堆场|泊位/gu],["矿山冶金",/矿山|矿井|选矿|冶炼|尾矿|轧钢/gu]]){d.lastIndex=0;let g=(a.match(d)||[]).length;g>=3&&g>e?(f=e,b=c,e=g):g>f&&(f=g)}if(b){if(f>0&&e<2*f&&d&&d.count>e)return d.type;let a=c.find(a=>a.type===b)?.count||0;return d&&d.type!==b&&d.count>2*a&&d.count>=2*e?d.type:b}return d&&d.count>0?d.type:"其他"}(`${a.templateName||""} ${a.basicFacts||""} ${a.chapterTitles.join(" ")} ${b}`);return"房建"===e||"装饰装修"===e?G:"桥梁与隧道"===e?I:"公路"===e?J:"水利水电"===e?K:H}({basicFacts:a.basicFacts,templateName:a.templateName,chapterTitles:a.chapterTitles,boq:j}),l=function(a){var b;let{boq:c}=a,d=a.strategy||F,h=N(c),i=function(a){let b=[];for(let c of O)for(let d of a.entries){if(!c.namePattern.test(`${d.name} ${d.description}`))continue;let a=c.extract(d);if(a){b.push({key:c.key,value:a,source:`清单条目 ${d.seq}「${d.name}」特征原文`,amount:c.amount});break}}return b}(c),j=function(a,b){let c=/(\d+)\s*个(?:美丽宜居)?自然村/u.exec(a);if(c)return Number(c[1]);let d=/(\d+)\s*个(?:美丽宜居)?自然村/u.exec(b);return d?Number(d[1]):0}(a.projectName,a.basicFacts||"")||c.villages.length;j>0&&i.push({key:"自然村数量",value:`${j} 个自然村`,source:"招标文件项目名称(清单自然村分组兜底)"});let k=function(a){let b={},c=a.entries.filter(a=>"垫层"===a.name).map(a=>/C\d{2}/u.exec(a.description)?.[0]).filter(a=>!!a);if(c.length>0){let a=new Map;for(let b of c)a.set(b,(a.get(b)||0)+1);b.cushion=[...a.entries()].sort((a,b)=>b[1]-a[1]||(a[0]<b[0]?-1:1))[0][0]}return b}(c),l=function(a,b){let c=/(?<!节点)(?<!阶段)(?<!分项)(?<!关键)(?:计划工期|合同工期|工期总日历天数|工期控制|工期目标|总工期|工期)[^。;;\n]{0,12}?(\d{1,4})\s*个?\s*日历天/u.exec(a)||/(\d{1,4})\s*个?\s*日历天[^。;;\n]{0,8}?(?:总工期|倒排|分解|完成)/u.exec(a),d=c?Number(c[1]):0,e=/质量(?:标准|要求)[^。;;\n]{0,20}?[::]\s*([^。;;\n]{1,20})/u.exec(a)||/合格/u.exec(a),f=e?(e[1]||"合格").trim():"",g=/(合造价〔\d{4}〕\d+号)/u.exec(a),h=g?g[1]:"",i=/(?:合同估算价|招标控制价|最高投标限价|项目总投资|投资估算|工程概算)[^。;;\n]{0,20}?([\d,]+(?:\.\d+)?)\s*万/u.exec(a);return{totalDays:d,qualityStandard:f,pricingFile:h,estimatedAmount:i?Number(i[1].replace(/,/g,"")):0}}(a.basicFacts||"",0),m=function(a,b,c=F){let d=b>0?b:360,e=c.milestoneGroups,f=e.map(b=>({...b,weight:a.entries.filter(a=>b.pattern.test(`${a.name} ${a.description}`)).reduce((a,b)=>a+b.quantity,0)})),g=Math.max(1,Math.round(.08*d)),h=d-g,i=f.slice(1),j=i.reduce((a,b)=>a+b.weight,0),k=f.reduce((a,b)=>a+b.weight,0),l=j<=0||k>0&&j/k<.05,m=l?0:j,n=i.length>0?Math.max(2,Math.round(.95*h/i.length)):0,o=[{key:"prep",label:e[0]?.label||"施工准备与清杂拆除",duration:g,basis:`前导工作封顶 8% 总工期(清杂整治可与主体并行穿插,不按工程量权重独占)`}];for(let a of i){if(l){o.push({key:a.key,label:a.label,duration:n,basis:`分部特征未命中策略分组(非 prep 权重占比 ${k>0?(j/k*100).toFixed(1):"0.0"}% < 5%),按总工期均分降级(每组 ${n} 天)`});continue}let b=Math.max(2,Math.round(a.weight/m*h*.95));o.push({key:a.key,label:a.label,duration:b,basis:`分部工程量权重 ${(a.weight/m*100).toFixed(1)}% \xd7 剩余工期 ${h} 天`})}let p=o.reduce((a,b)=>a+(b.duration||0),0);for(let a=o.length-1;a>=0&&p>d;a--){let b=p-d,c=Math.min(o[a]?.duration||0,b);o[a]&&c>0&&(o[a].duration=(o[a].duration||0)-c,p-=c)}return o}(c,l.totalDays,d),n=function(a,b,c=0,d=[],e=F){let f=Math.max(30,Math.round(.85*(b>0?b:360))),{groupOfEntry:g,laborUnitRange:h,tradeMapping:i,milestoneGroups:j}=e,k=new Map;for(let b of a.entries){if(b.quantity<=0)continue;let a=g(b),c=e.laborQuotaTable?.find(a=>a.pattern.test(`${b.name} ${b.description}`)&&a.unit===b.unit),d=c||h[a];if(!d||b.unit!==d.unit)continue;let f=i.find(a=>a.pattern.test(`${b.name} ${b.description}`))?.trade;if(!f)continue;let j=`${a}|${f}`,l=k.get(j)||{trade:f,workdaysMin:0,workdaysMax:0,unit:d.unit,basisQty:0,quota:c};l.quota!==c&&(l.quota=void 0),l.workdaysMin+=b.quantity*d.min,l.workdaysMax+=b.quantity*d.max,l.basisQty+=b.quantity,k.set(j,l)}let l=new Map;for(let a of k.values()){let b=l.get(a.trade)||{min:0,max:0,unit:a.unit,qty:0,quota:a.quota};b.quota!==a.quota&&(b.quota=void 0),b.min+=a.workdaysMin,b.max+=a.workdaysMax,b.qty+=a.basisQty,l.set(a.trade,b)}let m=[...l.entries()].sort((a,b)=>b[1].max-a[1].max).map(([a,b])=>({trade:a,min:Math.max(1,Math.round(b.min/f*1.3)),max:Math.max(1,Math.round(b.max/f*1.6)),basis:b.quota?`工种工程量约 ${Math.round(b.qty)}${b.unit} \xd7 定额工效(${b.quota.subName} ${b.quota.code},${b.quota.min}~${b.quota.max} 工日/${b.unit})\xf7 有效工期 ${f} 天(定额知识库命中)`:`工种工程量约 ${Math.round(b.qty)}${b.unit} \xd7 经验工效区间 \xf7 有效工期 ${f} 天(定额工效知识不全,降级区间表达)`})),n=m.reduce((a,b)=>a+(b.min||0),0),o=m.reduce((a,b)=>a+(b.max||0),0),p={min:Math.max(10,Math.round(.75*n)),max:Math.max(10,Math.round(.9*o))},q=p,r=`各工种同期在场按 0.75~0.9 重叠系数折算(各工种人数区间之和 ${n}~${o} 人)`;if(c>0){let a=P(c,f,e),b=Math.max(p.min,a.min),d=Math.min(p.max,a.max);b<=d?(q={min:b,max:d},r=`工程量推导区间 [${p.min}, ${p.max}] 与造价锚定区间 [${a.min}, ${a.max}] 的交集(${a.detail})`):(q={min:a.min,max:a.max},r=`工程量推导区间 [${p.min}, ${p.max}] 与造价锚定区间 [${a.min}, ${a.max}] 无交集,以造价锚定区间为准(${a.detail})`)}let s=Math.round((q.min+q.max)/2),t=[];for(let b of j){let c=a=>e.laborQuotaTable?.find(b=>b.pattern.test(`${a.name} ${a.description}`)&&b.unit===a.unit)||h[g(a)],k=a.entries.filter(a=>{if(a.quantity<=0||!b.pattern.test(`${a.name} ${a.description}`))return!1;let d=c(a);return!!d&&a.unit===d.unit&&i.some(b=>b.pattern.test(`${a.name} ${a.description}`))});if(0===k.length)continue;let l=k.reduce((a,b)=>a+b.quantity*(c(b)?.min||0),0),m=k.reduce((a,b)=>a+b.quantity*(c(b)?.max||0),0),n=d.find(a=>a.key===b.key)?.duration||Math.max(1,Math.round(f/j.length)),o=Math.max(1,Math.round(l/n*1.3)),p=Math.max(o,Math.round(m/n*1.6));t.push({phase:b.label,min:Math.min(o,s),max:Math.min(p,s),basis:`阶段条目工程量约 ${Math.round(k.reduce((a,b)=>a+b.quantity,0))} \xd7 经验工效区间 \xf7 阶段 ${n} 天(不均匀系数 1.3~1.6,同时在场人数按峰值 ${s} 人封顶)`})}let u=j[j.length-1];if(t.length>0&&u&&!t.some(a=>a.phase===u.label)){let a=Math.max(1,Math.round(.2*s));t.push({phase:u.label,min:a,max:a,basis:`收尾阶段零星作业兜底(峰值 ${s} 人的 20%),不参与工日推导`})}let v=m.map(a=>({trade:a.trade,mid:Math.max(1,Math.round(((a.min??1)+(a.max??a.min??1))/2))})),w=v.reduce((a,b)=>a+b.mid,0)||1,x=v.map(a=>({trade:a.trade,quota:a.mid*s/w})),y=x.map(a=>({trade:a.trade,count:Math.max(1,Math.floor(a.quota))})),z=s-y.reduce((a,b)=>a+b.count,0);if(z>0){let a=x.map((a,b)=>({index:b,frac:a.quota-Math.floor(a.quota)})).sort((a,b)=>b.frac-a.frac);for(let b=0;z>0&&b<a.length;b+=1){let c=a[b];if(!c)continue;let d=y[c.index];d&&(d.count+=1,z-=1)}}else if(z<0){let a=x.map((a,b)=>({index:b,quota:a.quota})).sort((a,b)=>a.quota-b.quota);for(let b=0;z<0&&b<a.length;b+=1){let c=a[b];if(!c)continue;let d=y[c.index];d&&!(d.count<=1)&&(d.count-=1,z+=1)}}let A=y.map(a=>({trade:a.trade,count:a.count,basis:`工种构成唯一口径:按工种工程量区间中值比例收敛(合计恒等于峰值 ${s} 人)`}));return{peak:q,peakValue:s,peakBasis:r,byPhase:t,byTrade:m,composition:A}}(c,l.totalDays,l.estimatedAmount||0,m,d),o=function(a,b=F){let c=[];for(let d of b.equipmentMapping){let b=a.entries.filter(a=>d.pattern.test(`${a.name} ${a.description}`)&&(!d.unit||a.unit===d.unit));if(0===b.length)continue;let e=b.reduce((a,b)=>a+b.quantity,0),f=Math.max(1,Math.min(4,Math.ceil(Math.log10(Math.max(10,e))-1))),g=Math.max(f,Math.min(8,f+2));c.push({name:d.name,spec:d.spec,min:f,max:g,basis:`${d.basis};相关条目工程量合计约 ${Math.round(e)}${b[0]?.unit||""}`})}return c}(c,d),p=function(a){let b=new Map;for(let c of a.entries){if(!c.name||c.quantity<=0)continue;let a=function(a){let b=[];for(let c of Q){let d=c.exec(a);d&&d[0]&&(b.some(a=>a.includes(d[0])||d[0].includes(a))||b.push(d[0]))}return b.join(" ")}(`${c.name} ${c.description}`),d=a?`${c.name}||${a}`:c.name,e=b.get(d);e?e.quantity+=c.quantity:b.set(d,{name:c.name,quantity:c.quantity,unit:c.unit,spec:a||void 0})}return[...b.values()].sort((a,b)=>b.quantity-a.quantity).map(a=>({name:a.name,quantity:Math.round(1e3*a.quantity)/1e3,unit:a.unit,spec:a.spec,batchDesc:"按施工段分批进场",basis:"清单汇总 + 进度匹配"}))}(c),q=function(a,b=F){let c=[];for(let d of b.inspectionBatchRules){let b=a.entries.filter(a=>d.namePattern.test(a.name)&&(!d.unit||a.unit===d.unit)).reduce((a,b)=>a+b.quantity,0);if(b<=0)continue;let e=d.divisor>0?Math.max(1,Math.ceil(b/d.divisor)):0,f=d.descTemplate.replace("{count}",String(e)).replace("{total}",String(Math.round(1e3*b)/1e3));c.push({scope:d.scope,planDesc:f})}return c}(c,d),r=function(a){let b=a.entries.filter(a=>/挖一般土方|挖沟槽土方|挖基坑土方|清淤/u.test(a.name)&&"m3"===a.unit).reduce((a,b)=>a+b.quantity,0),c=a.entries.filter(a=>/回填|路肩土|种植土/u.test(a.name)&&"m3"===a.unit).reduce((a,b)=>a+b.quantity,0),d=Math.max(0,Math.round((b-c)*1e3)/1e3);return{excavation:Math.round(1e3*b)/1e3,backfill:Math.round(1e3*c)/1e3,disposal:d,basis:"清单挖/填/弃量汇总(挖方含清淤),补疑口径:购土回填运距自行考虑"}}(c),s=function(a,b,c=F){let{machinePowerTable:d,powerFallbackText:e,waterNoteText:f}=c,g=a.filter(a=>!R.has(a.name)).reduce((a,b)=>a+(d.find(a=>a.name===b.name)?.kw||0)*(b.min||1),0),h=g>0?`按电动机具负荷计算,用电负荷约 ${Math.round(.7*g)} kW(电动机具总功率约 ${Math.round(g)} kW,同时系数 0.7),${e}`:e,i=Math.round(60*b.peakValue/1e3*10)/10;return{powerLoad:h,waterUsage:`生活用水按高峰人数 ${b.peakValue} 人、每人每日 60L 计算,高峰日生活用水量约 ${i} m\xb3;${f}`}}(o,n,d),t=(a.evidence||[]).map(a=>String(a.content||"")).join("\n"),u=function(a,b){let c=function(){let a=g.join(f.homedir(),".customize-agent","template-references"),b=g.join(a,"files","standard-blocks");if(!e.existsSync(b))return[];let c=g.join(a,"standard-blocks.json"),d=[];if(e.existsSync(c))try{d=(JSON.parse(e.readFileSync(c,"utf8")).blocks||[]).map(a=>a.id)}catch{d=[]}return 0===d.length&&(d=e.readdirSync(b).filter(a=>a.endsWith(".md")).map(a=>a.replace(/\.md$/u,""))),d.flatMap(a=>{let c=g.join(b,`${a}.md`);if(!e.existsSync(c))return[];let d=e.readFileSync(c,"utf8"),f=(/^title:\s*(\S.*)$/mu.exec(d)||[])[1]?.trim()||a;return[{id:a,title:f,source:(/^source:\s*(\S.*)$/mu.exec(d)||[])[1]?.trim()||"",lines:d.split("\n").filter(Boolean)}]})}(),d=[],h=[];for(let e of c){let c=[],f=!1;for(let a of e.lines){if(a.startsWith("---")||/^(id|title|source|updatedAt|tags):/u.test(a)||a.startsWith("# "))continue;if(a.startsWith("## ")){f=!0;continue}if(f)continue;let b=a.trim();if(!/^[-*\d]+[.、]?\s+/u.test(b))continue;let d=b.replace(/^[-*\d]+[.、]?\s+/u,"").trim();d&&c.push(d)}if("hazardous-works-37"===e.id){let c=function(a,b){let c,d=[],e=[...b.matchAll(/(?:开挖深度|挖深|基坑深度|沟槽深度)[^。;;\n]{0,30}?(\d+(?:\.\d+)?)\s*m/gu)].map(a=>Number(a[1])),f=a.entries.some(a=>/挖一般土方|挖沟槽|挖基坑/u.test(a.name)),g=!1;if(f){d.push("基坑(槽)土方开挖、降水——判定阈值:开挖深度超过3m(含3m)属危大工程,超过5m(含5m)属超过一定规模(须专家论证)");let a=e.length>0?Math.max(...e):void 0;void 0===a?(c="本项目含沟槽/基坑土方开挖,但资料(清单特征「挖土深度:详见设计图纸」)未给出具体开挖深度,危大等级判定待人工确认(不静默判定)",g=!0):c=a<3?`资料确认最大开挖深度 ${a}m < 3m,未达危大工程阈值,按一般土方工程管控`:a<5?`资料确认最大开挖深度 ${a}m,达到 3m(含)未达 5m,属危大工程,需编制专项施工方案(施工单位技术负责人审核签字、总监理工程师审查签字)`:`资料确认最大开挖深度 ${a}m ≥ 5m,属超过一定规模的危大工程,专项方案须专家论证(不少于5名符合专业要求的专家)`}else c="本项目清单未含基坑(槽)土方开挖条目,基坑工程危大判定不涉及";return d.push("专家论证程序:超过一定规模的危大工程专项方案组织不少于5名符合专业要求的专家论证;修改后的方案由施工单位技术负责人审核签字、加盖单位公章,并由总监理工程师审查签字、加盖执业印章后方可实施"),{items:d,conclusion:c,gap:g}}(a,b);d.push({id:"hazardous_works",title:"危大工程判定",source:e.source,items:[...c.items,`本项目判定结论:${c.conclusion}`],gap:c.gap})}else d.push({id:e.id,title:e.title,source:e.source,items:c.slice(0,30)})}for(let a of["organization","construction_prep","survey_plan","product_protection","emergency_plans","seasonal_measures","fire_control","tech_management","smart_site","handover_warranty","quality_innovation"])h.push(a),d.push({id:a,title:a,source:"(缺口:参考文档资产未建设)",items:[],gap:!0});return{blocks:d,gaps:h}}(c,t),v=function(a,b=F){let c=a.villages.map(a=>a.villageGroup).map(a=>({name:a,basis:"清单按自然村分组(工程名称)"})),d=c.length>1&&b.multiVillageFlow?.(c.length)||b.deploymentFlowFallback,e=[...new Set(a.entries.map(a=>a.section).filter(Boolean))];return{sections:c,sequence:e.length>0?e.join(" → "):b.sequenceFallback,sequenceBasis:"清单分部分项编排顺序归纳",flow:d}}(c,d),w=function(a,b=F){let c=[];for(let d of b.difficultyTemplates)d.test(a)&&c.push({name:"function"==typeof d.name?d.name(a):d.name,measure:d.measure,basis:d.basis});return 0===c.length&&c.push({name:"多工序交叉施工组织",measure:"按清单分部分项编排顺序组织流水作业,加强工序衔接检查",basis:"清单分部分项结构"}),c}(c,d),x=function(a){let b=V({facts:a.facts||[],evidence:a.evidence||[]}),c=[];a.contract&&a.contract.totalDays>0&&c.push({id:"contract_days",label:"总工期",values:[`${a.contract.totalDays} 日历天`]}),a.labor&&a.labor.peakValue>0&&c.push({id:"labor_peak",label:"劳动力峰值",values:[`${a.labor.peakValue} 人`]});let d=a.villageCount||0;if(d>0&&c.push({id:"village_count",label:"自然村数量",values:[`${d} 个自然村`]}),a.boq){let b=function(a){let b=new Map;for(let c of a.entries){if(!c.name||c.quantity<=0||/暂列|金额|计日工|税|费/u.test(c.name)||!c.section)continue;let a=b.get(c.section)||[];a.push(c),b.set(c.section,a)}return[...b.entries()].sort((a,b)=>b[1].length-a[1].length).slice(0,3).map(([a,b])=>{let c=[...b].sort((a,b)=>b.quantity-a.quantity||(a.name<b.name?-1:1))[0];return`${c.name} ${c.quantity}${c.unit}(${a})`})}(a.boq);b.length>0&&c.push({id:"core_quantities",label:"核心工程量",values:b})}return{entries:[...b,...c]}}({facts:a.facts,evidence:a.evidence,contract:l,labor:n,boq:c,villageCount:j}),y=[...new Set(c.entries.map(a=>a.section).filter(Boolean))],z=function(a){if(!a)return"";let b=/建设地点[:: \t|]*([^。;;\n|]{2,40}?)(?=[,,。;;\n|]|工期|质量标准|合同估算)/u.exec(a);return b?b[1].trim().replace(/[,,、\s]+$/gu,""):""}(a.basicFacts||""),A=z?function(a){for(let b of D)if(b.pattern.test(a))return{...b.climate};return{rainySeason:"",highTemp:"",winter:""}}(z):(b=d.climateZone)&&D.find(a=>a.zone===b)?.climate||{rainySeason:"",highTemp:"",winter:""},B=[];return m.some(a=>a.basis.includes("均分降级"))&&B.push("里程碑分组未命中策略特征(非 prep 权重占比 < 5%),已按总工期均分降级,详见 data.milestones.basis"),A.rainySeason||B.push("气候区域未识别,季节施工由写作层按建设地点常识处理"),{data:{project:{name:a.projectName||"(待提取:项目名称)",scope:c.villages.length>0?`${c.villages.length} 个自然村分组(${c.villages.map(a=>a.villageGroup).join("、")})`:"",works:y,location:z},contract:{totalDays:l.totalDays,qualityStandard:l.qualityStandard,pricingFile:l.pricingFile,estimatedAmount:l.estimatedAmount||void 0},climate:A,milestones:m,resources:{labor:n,equipment:o},materialsPlan:p,fundPlan:{wageRule:"工资性工程款按合造价〔2022〕8号执行",usagePlan:"按进度分阶段使用"},testPlan:[],earthworkBalance:r,tempUtilities:s,redLineFacts:i,amountRule:"商务禁区延续:金额类数据禁入正文(合同估算价例外),fund_plan/red_line_facts 渲染时遵守",decisionLock:x,quantities:h,specAuthorities:k,inspectionBatches:q,standardBlocks:u.blocks,constructionDeployment:v,keyDifficulties:w,basisRegulations:Y(`${a.basicFacts||""}
225
225
  ${t}`),drawingNote:"总平面布置图/横道图/组织机构图为后期人工配图,蓝图只规划对应章节正文内容"},diagnostics:{standardBlocksLoaded:u.blocks.filter(a=>!a.gap).length,standardBlockGaps:u.gaps,warnings:B}}}({boq:j,basicFacts:a.basicFacts,evidence:a.evidence,facts:a.facts,projectName:d.projectCode||"",strategy:k});c.standardBlocksLoaded=l.diagnostics.standardBlocksLoaded,c.standardBlockGaps=l.diagnostics.standardBlockGaps,c.warnings.push(...l.diagnostics.warnings),c.stage="阶段 B/C";let m=function(a){let{chapterTitles:b,boq:c}=a;return{chapters:b.map((b,d)=>{var e;let f=String(d+1),g=Z.filter(a=>a.chapterPattern.test(b)).map(a=>`${a.item}(评审权重 ${a.weight})`),h=/主要分部分项|施工方案|施工方法/u.test(b)?function(a,b){let c=new Map;for(let b of a.entries){if(!b.section)continue;let a=c.get(b.section)||[];a.push(b),c.set(b.section,a)}let d=[],e=0;for(let[a,f]of c){let c=$(a,f),g=f.some(a=>"unit-project"===a.sectionKind),h=[];if(g){let a=new Map;for(let b of f){let d=b.subsection||c,e=a.get(d)||[];e.push(b),a.set(d,e)}for(let[b,c]of a)h.push(aa($(b,c),c))}else h.push(aa(c,f));e+=1,d.push({id:`${b}.${e}`,title:c,targetWords:2400,requiredParams:h.flatMap(a=>Object.keys(a.quantities).slice(0,5).map(a=>({path:`data.quantities.${a}`,mode:"must_cite",strict:!0}))),scoredItems:["评标分项:主要施工方法(1.5)"],tablePlans:[],workPackages:h})}return d}(c,f):[];return{id:f,title:b,isActive:(e=a.docType,!(/专项施工方案|专项方案|危大/u.test(e)&&/总平面|平面布置|施工部署|总体部署/u.test(b))),requiredParams:[],scoredItems:g,subSections:h}})}}({chapterTitles:a.chapterTitles,boq:j,docType:d.docType});c.stage="阶段 D";let n={meta:d,data:l.data,outline:m,validation:{passed:!1,checks:[]},diagnostics:c};return n.validation=function(a,b){let c=[],d=(0,A.Jx)(a,L);c.push({name:"1. Schema 校验",passed:0===d.length,message:0===d.length?"结构/类型/必填/边界全部通过":d.join(";")});let e=function(a,b){let c=[];if(b){let d=N(b);for(let[b,e]of Object.entries(a.data.quantities)){let a=d[b];if(!a){c.push(`quantities.${b} 不在清单解析产物值集中(疑似编造)`);continue}a.value!==e.value&&c.push(`quantities.${b} 数值 ${e.value} 与清单聚合值 ${a.value} 不一致`)}}for(let b of a.data.redLineFacts)b.value&&b.source||c.push(`红线事实「${b.key}」缺值或缺来源`);if(b){let d=[...F.equipmentMapping,...G.equipmentMapping,...H.equipmentMapping,...I.equipmentMapping,...J.equipmentMapping,...K.equipmentMapping];for(let e of a.data.resources?.equipment||[]){let a=d.find(a=>a.name===e.name);if(!a)continue;let f=b.entries.filter(b=>a.pattern.test(`${b.name} ${b.description}`)&&b.unit===a.unit).reduce((a,b)=>a+b.quantity,0),g=/合计约\s*([\d.]+)/u.exec(e.basis);g&&Number(g[1])!==Math.round(f)&&c.push(`机械「${e.name}」basis 工程量 ${g[1]} 与清单同单位聚合 ${Math.round(f)} 不一致`)}}return c}(a,b);c.push({name:"2. 事实锚定校验",passed:0===e.length,message:0===e.length?"L1a 值全部 ∈ 清单解析产物值集,红线事实逐条有源":e.join(";")});let f=function(a,b){let c=[],d=a.outline.chapters.flatMap(a=>a.subSections).flatMap(a=>a.workPackages);if(b){let a=new Set;for(let b of d)for(let c of b.coveredSeqs)a.add(c);let e=b.entries.filter(b=>b.section&&!a.has(b.seq));e.length>0&&c.push(`清单条目零丢失校验失败:${e.length} 条未被工作包覆盖(如序号 ${e.slice(0,5).map(a=>a.seq).join("、")})`)}let e=new Set;for(let b of a.outline.chapters)for(let a of b.scoredItems)e.add(a.split("(")[0]||"");let f=Z.filter(a=>![...e].some(b=>b.includes(a.item))).map(a=>a.item);return f.length>0&&c.push(`十项评审承接缺失:${f.join("、")} 无章/节显性承接声明`),0===a.data.keyDifficulties.length&&c.push("重难点及保证措施未逐项列明(十项评审⑩硬要求)"),c}(a,b);c.push({name:"3. 覆盖校验",passed:0===f.length,message:0===f.length?"清单条目零丢失、十项评审全承接、重难点逐项列明":f.join(";")});let g=function(a){let b=[],c=a.data.contract?.totalDays||0,d=(a.data.milestones||[]).reduce((a,b)=>a+(b.duration||0),0);c>0&&d>c&&b.push(`里程碑总和 ${d} 天超过总工期 ${c} 天`);let{labor:e}=a.data.resources||{};if(e){for(let a of(e.peak&&e.peak.min>e.peak.max&&b.push(`劳动力峰值区间异常(min ${e.peak.min} > max ${e.peak.max})`),e.peakValue>0&&e.peak&&(e.peakValue<e.peak.min||e.peakValue>e.peak.max)&&b.push(`劳动力峰值唯一口径 ${e.peakValue} 人超出推导区间 ${e.peak.min}~${e.peak.max} 人`),e.byTrade||[]))(a.min||0)>(a.max||0)&&b.push(`工种「${a.trade}」人数区间异常`);let d=a.data.contract?.estimatedAmount||0;if(d>0&&e.peakValue>0&&c>0){let a=P(d,Math.max(30,Math.round(.85*c))),f=Math.round(.6*a.min),g=Math.round(1.3*a.max);(e.peakValue<f||e.peakValue>g)&&b.push(`劳动力峰值 ${e.peakValue} 人超出造价锚定量级窗口 [${f}, ${g}] 人(合同估算价 ${d} 万元锚定)`)}}let f=new Set((a.data.decisionLock?.entries??[]).map(a=>a.id));for(let c of(a.data.contract?.totalDays>0&&!f.has("contract_days")&&b.push(`决策锁缺失数据条目 contract_days(总工期 ${a.data.contract.totalDays} 日历天未入锁)`),e&&e.peakValue>0&&!f.has("labor_peak")&&b.push(`决策锁缺失数据条目 labor_peak(劳动力峰值 ${e.peakValue} 人未入锁)`),a.data.redLineFacts?.some(a=>"自然村数量"===a.key)&&!f.has("village_count")&&b.push("决策锁缺失数据条目 village_count(自然村数量红线事实未入锁)"),a.data.resources?.equipment||[]))(c.min||0)>(c.max||0)&&b.push(`机械「${c.name}」台数区间异常`);let g=(a.data.standardBlocks||[]).find(a=>"six-hundred-percent"===a.id);return g&&!g.gap&&6!==g.items.length&&b.push(`扬尘治理六个百分百板块条目数 ${g.items.length} 条(应为恰六条)`),b}(a);c.push({name:"4. 内部一致性校验",passed:0===g.length,message:0===g.length?"里程碑/劳动力/机械区间自洽":g.join(";")});let h=function(a){let b=!a.consistencyErrors.some(a=>/里程碑|总工期/u.test(a)),c=!a.consistencyErrors.some(a=>/劳动力|工种/u.test(a)),d=!a.consistencyErrors.some(a=>/机械/u.test(a));return{laborPeak:a.schemaPassed&&a.factPassed&&c,schedule:a.schemaPassed&&a.factPassed&&b,blueprint:a.schemaPassed&&a.factPassed&&a.coveragePassed&&d}}({schemaPassed:0===d.length,factPassed:0===e.length,coveragePassed:0===f.length,consistencyErrors:g});return{passed:c.every(a=>a.passed),checks:c,authorityAvailability:h}}(n,i),n.validation.passed||c.warnings.push(`蓝图校验未通过:${n.validation.checks.filter(a=>!a.passed).map(a=>a.name).join("、")}(一期旁路仅报告,不阻断生成)`),c.durationMs=Date.now()-b,n}function aw(a,b){let c=g.join((0,C.Gl)(a),"assets","blueprint.json");return e.writeFileSync(c,JSON.stringify(b,null,2),"utf8"),c}z.ts.length},85016:(a,b,c)=>{c.d(b,{D$:()=>g,NR:()=>l,WT:()=>k,fc:()=>m});var d=c(37047),e=c(22157);let f=[{anchor:"按工作包逐项说明施工内容",required:/工作包|逐项说明/u},{anchor:"本项目已确认资料",required:/已确认|确认资料|本项目资料/u},{anchor:"已确认的项目资料显示",required:/已确认|项目资料/u},{anchor:"根据已确认资料",required:/已确认/u},{anchor:"生成后事实反查未通过",required:/事实反查|反查/u},{anchor:"资料事实主表",required:/事实主表/u},{anchor:"事实卡",required:/事实卡/u},{anchor:"后台数据库记录",required:/后台数据库|后台记录/u},{anchor:"证据摘要中未包含",required:/证据摘要/u},{anchor:"本专业工程主要清单项落位如下",required:/清单项落位|落位如下/u},{anchor:"针对招标文件及补疑文件的技术要求进行专项落位",required:/专项落位/u},{anchor:"全文数据口径必须唯一",required:/数据口径|峰值口径|控制口径|口径必须唯一/u}],g=/工作包|事实卡|事实主表|后台数据库|落位|峰值口径|控制口径|数据口径/gu,h=/工作包|事实卡|事实主表|后台数据库|落位|峰值口径|控制口径|数据口径/u,i=/^\d+(?:\.\d+)*\s+\S+/u;function j(a,b){let c=Math.min(a.length,b.length),d=0;for(let e=0;e<c;e+=1)d+=a[e]*b[e];return d}async function k(a){let b=[],c=[...new Set(a.match(g)||[])];c.length>0&&b.push({level:"error",severity:"blocker",category:"format",owner:"system",repairability:"llm_repairable",message:`正式正文仍包含后台内部术语“${c.join("”“")}”,需要按上下文语义改写为正式术语`,suggestion:"请结合语境改写:“拆除工程工作包”→“拆除工程”,“按工作包逐项说明”→“按专业工程逐项说明”;禁止出现生成系统后台概念。",provenance:{detectorId:"internal-terminology-anchor",fingerprint:(0,e.c6)(a)}});let h=a.split(/\r?\n/u).map(a=>a.trim()).filter(a=>!/^#{1,6}\s/u.test(a)&&!/^\s*\|/u.test(a)&&!(i.test(a)&&a.length<=40&&!/[。!?!?;;,,::]/.test(a))).flatMap(a=>a.split(/(?<=[。!?!?;;])/u).map(a=>a.trim())).filter(a=>a.length>=8&&a.length<=80).slice(0,200);if(0===h.length)return b;let k=(0,d.VN)(),[l,m]=await Promise.all([k.embedDocuments(h),k.embedDocuments(f.map(a=>a.anchor))]),n=[];for(let a=0;a<h.length;a+=1){let b=l[a];if(!b||0===b.length)continue;let c=h[a];if(f.some(a=>a.required.test(c))&&(Math.max(...m.map(a=>j(b,a)))>=.62&&n.push(c.slice(0,24)),n.length>=6))break}return n.length>0&&b.push({level:"error",severity:"blocker",category:"format",owner:"system",repairability:"llm_repairable",message:`正式正文疑似包含后台内部话术(语义锚点命中 ${n.length} 处):${n.map(a=>`“${a}…”`).join("、")}`,suggestion:"将内部话术(已确认资料/事实卡/工作包等生成系统概念)改写为面向评标人的正式表述,仅陈述项目事实与施工内容。",provenance:{detectorId:"internal-terminology-anchor",fingerprint:(0,e.c6)(a)}}),b}async function l(a){let b=a.split(/\r?\n/u),c=a=>{let b=a.trim();return!!(/^#{1,6}\s/u.test(b)||/^\s*\|/u.test(b))||i.test(b)&&b.length<=40&&!/[。!?!?;;,,::]/.test(b)},e=[];b.forEach((a,b)=>{if(c(a))return;let d=a.split(/(?<=[。!?!?;;])/u).map(a=>a.trim()).filter(a=>h.test(a)||a.length>=8&&a.length<=80&&f.some(b=>b.required.test(a)));d.length>0&&e.push({index:b,sentences:d})});let g=e.flatMap(a=>a.sentences);if(0===g.length)return a;let k=g.filter(a=>h.test(a)),l=g.filter(a=>!h.test(a)).slice(0,200),m=new Set(k);if(l.length>0){let a=(0,d.VN)(),[b,c]=await Promise.all([a.embedDocuments(l),a.embedDocuments(f.map(a=>a.anchor))]);l.forEach((a,d)=>{let e=b[d];e&&0!==e.length&&Math.max(...c.map(a=>j(e,a)))>=.62&&m.add(a)})}return 0===m.size?a:b.map((a,b)=>{if(c(a))return a;let d=a;for(let a of m)d.includes(a)&&(d=d.split(a).join(""));return d}).join("\n")}function m(a){let b=0,c=a=>a.replace(/(职责|责任|分工|任务|措施|要求|管理|控制|工作|专项|标准|管控|验收|培训|教育|巡检|检查)落位/gu,"$1落实").replace(/(作业面|平面|现场|位置|点位|布局|空间|场地|工序|区域|临时设施|堆场|通道|道路|设备|设施|材料|构件|管线|照明|灯具|站房|楼层|部位)落位/gu,"$1布置").replace(/落位/gu,"落实");return{markdown:a.split(/\r?\n/u).map(a=>{let d=/^(#{1,6}\s+)(.*)$/u.exec(a);if(d){let e=d[2];if(!h.test(e))return a;let f=c(e);return f===e?a:(b+=1,`${d[1]}${f}`)}if(a.includes("|")&&a.includes("落位")){let d=c(a);if(d!==a)return b+=1,d}return a}).join("\n"),fixedCount:b}}},87635:(a,b,c)=>{c.d(b,{h:()=>s,jO:()=>r,ml:()=>k,qq:()=>i,xs:()=>h});var d=c(1218),e=c(51190),f=c(22157),g=c(13145);let h=["项目名称 项目编号 招标人 项目概况与招标范围 建设地点 建设规模 计划工期 质量标准 合同估算价","计划工期 合同工期 总工期 日历天","合同估算价 合同估算价格 投资估算 最高投标限价 招标控制价","质量标准 质量目标 合格","建设地点 建设规模 招标范围"];function i(a){let b=(0,d.de)(a),c=0;return/项目名称|工程名称|招标项目名称|项目编号|招标项目编号|招标人|建设单位|发包人/u.test(b)&&(c+=4),/计划工期|合同工期|总工期|\d+(?:\.\d+)?\s*(?:日历天|天|个月|月|年)/u.test(b)&&(c+=6),/合同估算价|投资估算|最高投标限价|招标控制价|\d+(?:\.\d+)?\s*(?:万元|元)/u.test(b)&&(c+=5),/质量标准|质量目标|合格|优良/u.test(b)&&(c+=4),/建设地点|建设规模|招标范围|项目概况与招标范围/u.test(b)&&(c+=4),/工程量|清单|图纸|设计说明|施工范围|施工内容|材料|设备|工艺|验收|复试|检测/u.test(b)&&(c+=3),/保证金账户|开户行|开户名称|收款账户|汇款|转账账户|电子交易系统|公共资源交易|开标时间|开标地点|评标委员会|评标办法/u.test(b)&&(c-=4),c}function j(a){return a.filter(a=>/项目名称|工程名称|项目编号|招标项目编号|招标人|建设单位|发包人|建设地点|建设规模|招标范围|计划工期|合同工期|周期要求|质量标准|合同估算|投资估算|最高投标限价|招标控制价/u.test(`${a.key||""}${a.fieldName||""}${a.fieldId||""}`))}function k(a){return(0,d.de)(a).replace(/PDF\s*第\s*\d+(?:\s*[-—至到~~]\s*\d+)?\s*页/giu,"相关资料").replace(/PDF\s*第(?![ \t]*[0-90-9])/giu,"").replace(/(\d)\s+(日)/gu,"$1$2").replace(/[。;;]$/u,"").trim()}let l=/(?:黄山杯|鲁班奖|白玉兰杯|钱江杯|扬子杯|安济杯|长安杯|汾水杯|省优|市优|国优|优质工程|确保[^。;;|,、,\n]{0,10}(?:杯|奖))/u;function m(a,b="",c=b){let g=function(a){let b=new Map;for(let c of a.split(/\r?\n/u)){if(!/^\|.*\|\s*$/u.test(c)||/^\|\s*:?-{3,}:?/u.test(c))continue;let a=c.trim().replace(/^\|/u,"").replace(/\|$/u,"").split("|").map(a=>a.replace(/\*\*/gu,"").trim());if(a.length<2)continue;let e="序号"===a[0]&&a.length>=3?a[1]:a[0],f="序号"===a[0]&&a.length>=3?a[2]:a[1],g="序号"===a[0]&&a.length>=4?a[3]:a[2],h=e.replace(/\/|:|:/gu,"").trim();if(!/项目名称|工程名称|项目编号|招标项目编号|招标人|项目业主|建设单位|发包人|建设地点|建设规模|施工范围|招标范围|计划工期|合同工期|质量标准|合同估算价|合同估算价格|投资估算|最高投标限价|招标控制价/u.test(h))continue;let i=/计划工期|合同工期/u.test(h)?"schedule_requirement":/质量标准/u.test(h)?"quality_standard":/合同估算价|合同估算价格|投资估算|最高投标限价|招标控制价/u.test(h)?"project_investment_estimate":/招标人|项目业主|建设单位|发包人/u.test(h)?"owner":/建设地点/u.test(h)?"project_location":/项目编号|招标项目编号/u.test(h)?"project_code":void 0;!(!f||/内容|参数|资料未明确|系统暂未从知识库确认|项目资料暂未明确/u.test(f))&&(0,d.R7)(i||"project_name",f)&&b.set(h,[k(f),k(g||"项目资料")||"项目资料"])}return b}(b),h=(0,e.mN)({facts:a,markdown:c}),i=a=>k((0,f.lG)(a||"")).replace(/\|/gu,"").replace(/\bCOL\d+\b/gu,"").replace(/\s{2,}/gu," ").trim(),j=(a,b)=>{let e=h.get(a);if(e){let b=i(e.value);if(b&&(0,d.R7)(a,b))return[b,e.source||"项目资料"]}let f=function(a,b){for(let[c,d]of a.entries())if(b.some(a=>a.test(c)))return d}(g,b);return f&&(0,d.R7)(a,f[0])?[f[0],f[1]||"项目资料"]:("project_name"===a?(()=>{let a=[/([\u4e00-\u9fa5A-Za-z0-9()()\-—_\s·]+?(?:施工总承包项目|一期项目|学生宿舍一期|学生宿舍项目))/u.exec(c)?.[1],/项目名称[::\s|]+([^|\n。;;]{6,80})/u.exec(c)?.[1]].map(i).filter(a=>a&&(0,d.R7)("project_name",a));return a[0]?[a[0],"项目资料"]:void 0})():void 0)||["",""]},n=[["项目名称",...j("project_name",[/项目名称|工程名称|project_name/u])],["项目编号",...j("project_code",[/项目编号|招标项目编号|project_code/u])],["招标人",...j("owner",[/招标人|项目业主|建设单位|发包人|owner/u])],["建设地点",...j("project_location",[/建设地点|project_location/u])],["建设规模",...j("project_scale",[/建设规模|project_scale/u])],["计划工期",...j("schedule_requirement",[/计划工期|合同工期|周期要求|schedule_requirement/u])],["质量标准",...j("quality_standard",[/质量标准|quality_standard/u])],["合同估算价",...j("project_investment_estimate",[/合同估算|投资估算|最高投标限价|招标控制价|project_investment_estimate/u])]],o=n.find(([a])=>"质量标准"===a);if(o&&o[1]&&!l.test(o[1])){let b=function(a,b){let c=a.filter(a=>/创优|优质优价|奖项|奖惩|award/u.test(`${a.fieldId||""}${a.key||""}${a.fieldName||""}`));if(c.some(a=>{let b=k((0,f.lG)(a.value||""));return!!b&&/^(?:无|否|不设|未设|无创优|无奖项|不作|不要求|不设创优)$/u.test(b.trim())}))return;let d=[];for(let a of c)d.push(k((0,f.lG)(a.value||"")));for(let a of(d.push(b),d)){let b=/(?:确保|争创|力争|确保获得)[^。;;|,、,\n]{0,12}(?:杯|奖|优质工程)/u.exec(a);if(!b)continue;let c=b[0].trim();if(c.length>=5&&c.length<=24)return c}}(a,c);b&&!o[1].includes(b)&&(o[1]=`${o[1]},${b}`)}return n.filter(([,a])=>!!a).map(([a,b,c])=>[a,b,c||"项目资料"])}function n(a,b="",c=b){return["**项目基本信息表**","","| 信息项 | 内容 |","|---|---|",...m(a,b,c).map(a=>`| ${a[0]} | ${a[1]} |`)].join("\n")}let o=[/^项目名称$/u,/^工程名称$/u,/^项目编号$/u,/^招标项目编号$/u,/^招标人$/u,/^项目业主$/u,/^建设单位$/u,/^发包人$/u,/^建设地点$/u,/^实施地点$/u,/^建设规模$/u,/^工程规模$/u,/^计划工期$/u,/^合同工期$/u,/^总工期$/u,/^质量标准$/u,/^质量目标$/u,/^合同估算价$/u,/^投资估算$/u,/^最高投标限价$/u,/^招标控制价$/u];function p(a){return o.some(b=>b.test(a))}function q(a){let b=a.replace(/\r?\n/gu,"\n").split("\n"),c=[],d=!1,e=a=>(0,g.Mp)(a).map(a=>a.replace(/\*\*/gu,"").trim()),f=a=>{let b=a.slice(2).map(e).filter(a=>a.length>=2).map(a=>a[0]||""),c=b.filter(p).length;return c>=3&&c>=Math.ceil(.45*b.length)};for(let a=0;a<b.length;){let e=b[a]||"",h=b[a+1]||"";if(/(?:\*\*[^\u000A]*项目基本信息表[^\u000A]*\*\*|####\s+[^\u000A]*项目基本信息表[^\u000A]*|###\s+[^\u000A]*项目基本信息表[^\u000A]*)/u.test(e)){let f=[e];for(a+=1;a<b.length&&!((0,g.VS)(b[a]||"")&&(0,g.vh)(b[a+1]||""))&&""===(b[a]||"").trim();)f.push(b[a]||""),a+=1;if(a<b.length&&(0,g.VS)(b[a]||"")&&(0,g.vh)(b[a+1]||""))for(f.push(b[a]||"",b[a+1]||""),a+=2;a<b.length&&(0,g.VS)(b[a]||"");)f.push(b[a]||""),a+=1;d||(d=!0,c.push(...f));continue}if(/^###\s+(?:\d+\.\d+\s+)?(?:项目基本信息|工程概况|项目概况)\s*$/u.test(e)){let h=[e];for(a+=1;a<b.length&&!((0,g.VS)(b[a]||"")&&(0,g.vh)(b[a+1]||""))&&!/^###\s+/u.test(b[a]||"");)h.push(b[a]||""),a+=1;if(a<b.length&&(0,g.VS)(b[a]||"")&&(0,g.vh)(b[a+1]||"")){let i=[b[a]||"",b[a+1]||""];for(a+=2;a<b.length&&(0,g.VS)(b[a]||"");)i.push(b[a]||""),a+=1;if(f(i)){if(d){let a=h.filter(a=>a.trim()&&!/^###\s+/u.test(a));a.length&&c.push(e,...a)}else d=!0,c.push(...h,...i);continue}c.push(...h,...i);continue}c.push(...h);continue}if((0,g.VS)(e)&&(0,g.vh)(h)){let i=[e,h];for(a+=2;a<b.length&&(0,g.VS)(b[a]||"");)i.push(b[a]||""),a+=1;if(f(i)){d||(d=!0,c.push(...i));continue}c.push(...i);continue}c.push(e),a+=1}return c.join("\n").replace(/\n{3,}/gu,"\n\n").replace(/\n{1,2}\|\s*信息项\s*\|\s*内容\s*\|\s*\n+(?:该小节围绕[^\n]*\n+)+\|\s*:?-{3,}:?\s*\|\s*:?-{3,}:?\s*\|\s*/gu,"\n\n")}function r(a,b){if(a=((a,b)=>{let c=a.split("\n"),d=[];for(let a=0;a<c.length;a+=1){let e=c[a]||"",f=/^(#{3,5})\s+(.+)$/u.exec(e.trim()),g=f?.[2]?.replace(/^\d+(?:\.\d+)*\s+/u,"").trim()||"";if(f&&b.some(a=>a.test(g))){for(a+=1;a<c.length&&!/^#{2,5}\s+/u.test((c[a]||"").trim());)a+=1;a-=1;continue}d.push(e)}return d.join("\n")})(a,[/^工程概况一览表$/u,/^招标文件?评分.*响应索引表$/u,/^招标评分项响应索引表$/u]).replace(/\*\*(?:工程概况一览表|招标文件?评分.*响应索引表|招标评分项响应索引表)\*\*[\s\S]*?(?=\n{2,}#{2,5}\s+|\n{2,}(?:[^|\n#]|$)|$)/gu,"").replace(/\n{3,}/gu,"\n\n"),!/项目基本信息|项目概况|工程概况|招标范围/u.test(a))return q((0,g.yk)((0,g.j7)(a)));let c=/^(#{2,4}\s+(?:\d+\.\d+\s+)?[^\n]*(?:项目概况|工程概况|项目基本信息|招标范围)[^\n]*\n)/mu,d=/^(#{2,4}\s+(?:\d+\.\d+\s+)?[^\n]*(?:概况|基本信息)[^\n]*\n)/mu,e=()=>c.exec(a)??d.exec(a);if(!/\|\s*信息项\s*\|\s*内容\s*\|/u.test(a)&&j(b).length>0){let c=e();if(c?.index||c?.index===0){let d=c.index+c[0].length,e=`${n(b,"",a)}
226
226
 
227
227
  `;a=`${a.slice(0,d)}