@customize-agent/server 4.2.4 → 4.2.5

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.
@@ -113,7 +113,7 @@ ${a.projectContext}`:"",a.roleContext,a.promptTexts?`配置写作主控提示词
113
113
  ${a.promptTexts}`:"",m.length?`系统已从提示词解析出本章强制二级小节,必须按此顺序置于本章小节最前,不得删除、改名或重排:${m.join("、")}`:"",i?`真实绑定资料:
114
114
  ${i}`:"",`请输出 ${n}-${o} 个适合直接成稿的二级小节标题。标题必须具体、业务相关、能承载真实资料;每个标题控制在 16 个汉字以内,避免多个小节表达同一内容。核心章节不得只输出"总体部署与责任分工、实施流程与关键控制"两个泛化小节。`,'JSON 格式:{"sections":["小节标题1","小节标题2"]}'].filter(Boolean).join("\n\n"),{maxTokens:1600,temperature:.1,signal:a.signal,diagnostics:a.diagnostics}),q=Array.from(new Set(function(a){let b=h(a),c=[],d=/体系|措施|管理|保障|方案|要求|计划|控制|配置/u,e=a=>{let b=/^(.*?)([^与和及、,,;;]+(?:[与和及][^与和及、,,;;]+)+)(的.+)$/u.exec(a);if(!b)return!1;let d=b[1]||"",e=b[3]||"";for(let a of b[2].split(/[与和及]/u))c.push(h(`${d}${a}${e}`));return!0},f=a=>{let b=a.split(/[、,,]/u).map(h).filter(Boolean);if(b.length>1&&b.every(a=>a.length>=4&&d.test(a))){for(let a of b)e(a)||c.push(a);return!0}let f=/^(.*?)([^、,,;;]+(?:[、,,][^、,,;;]+)+)(的.+)$/u.exec(a);if(!f)return!1;let g=f[1]||"",i=f[3]||"";for(let a of f[2].split(/[、,,]/u))c.push(h(`${g}${a}${i}`));return!0};for(let a of b.split(/[;;]/u)){if(f(a)||e(a))continue;let d=h(a);d&&d!==b&&c.push(d)}return Array.from(new Set(c)).filter(c=>c.length>=4&&c.length<=60&&c!==b&&!j(c,a))}(a.chapter.title)));for(let b of(p?.sections||[]).map(h).filter(b=>!j(b,a.chapter.title)))q.some(a=>a.includes(b)||b.includes(a))||q.push(b);for(let b of[...[a.chapter.title,...a.chapter.requiredFacts||[],...a.chapter.queries||[]].flatMap(a=>String(a||"").split(/[;;。\n]/u)).map(h).filter(b=>!j(b,a.chapter.title)),...(g=a.chapter.title,/质量/u.test(g)?["质量目标与质量管理体系","关键工序质量控制措施","材料设备进场验收与检验","质量检查试验与验收程序","质量通病防治与整改闭环","成品保护与资料管理"]:/安全/u.test(g)?["安全生产管理体系","危险源辨识与分级管控","现场安全防护措施","临时用电与机械设备安全管理","应急处置与安全检查整改","安全教育培训与交底"]:/工期|进度/u.test(g)?["总工期目标与节点安排","施工进度计划编制原则","关键线路与工序穿插安排","资源投入与工期保障措施","进度偏差纠偏与动态调整","工期风险识别与应对措施"]:/物资|材料/u.test(g)?["主要材料设备需求分析","材料采购与进场计划","材料验收复试与保管","周转材料配置与使用管理","材料供应风险与保障措施"]:/机械|设备/u.test(g)?["主要机械设备配置原则","机械设备进退场计划","机械设备调度与运行管理","机械设备维护保养与安全检查","关键设备保障措施"]:/劳动力/u.test(g)?["劳动力配置原则","各阶段劳动力投入计划","专业工种与特种作业人员配置","劳动力动态调配措施","劳务管理与教育交底"]:/文明|环保/u.test(g)?["现场封闭与场容场貌管理","环境保护与污染防治措施","材料设备定置化管理","职业健康与消防文明管理","文明施工检查与整改"]:/总平面|平面布置/u.test(g)?["施工总平面布置原则","临时道路与材料堆场布置","临时用水用电及排水布置","办公生活与加工区域布置","总平面动态调整与管理"]:/危大|专项/u.test(g)?["危大工程识别与清单管理","专项施工方案编制与审批","专家论证与技术交底","现场实施监测与旁站管理","应急处置与验收销项"]:/施工方法|施工方案|主要/u.test(g)?["总体施工部署与流程安排","主要分部分项施工方法","关键工序技术控制要点","资源配置与穿插组织","质量安全与成品保护措施"]:["总体部署与责任分工","实施流程与关键控制","资源配置与资料依据","质量安全与风险控制","检查验收与闭环管理","资料记录与成果移交"]).filter(b=>!j(b,a.chapter.title))]){if(q.length>=n)break;q.some(a=>a.includes(b)||b.includes(a))||q.push(b)}return(function(a,b,c){let d=v(c.flatMap(a=>a.requiredSections).sort((a,b)=>(a.order||0)-(b.order||0)).map(a=>a.title),b);for(let c of v(a,b))d.some(a=>k(a,c))||d.push(c);return d})(q,a.chapter.title,l).slice(0,Math.max(o,m.length))}},78217:(a,b,c)=>{function d(a,b){return Math.ceil(e(a)/f(b))}function e(a){return a.replace(/<[^>]+>/gu,"").replace(/\s+/gu,"").length}function f(a){let b=Number(String(a&&"typography"in a&&a.typography?.bodySize||"").replace(/[^\d.]/gu,""))||14,c=Number(String(a&&"typography"in a&&a.typography?.lineHeight||"").replace(/[^\d.]/gu,""))||22;return b>=14&&c>=22?900:1050}function g(a){let b=a.trim();if(/^\d+(?:\.\d+)?$/u.test(b))return Number(b);let c={零:0,一:1,二:2,两:2,三:3,四:4,五:5,六:6,七:7,八:8,九:9};if("十"===b)return 10;let d=/^([一二两三四五六七八九])?十([一二三四五六七八九])?$/u.exec(b);if(d)return(d[1]?c[d[1]]:1)*10+(d[2]?c[d[2]]:0)}function h(a="",b=""){let c=`${a}${b}`;return/不少于|至少|不低于|以上|起码/u.test(c)?"minimum":/约|大概|左右|大约|约为|附近/u.test(c)?"approximate":"exact"}function i(a){let b=a.replace(/\s+/gu," "),c=[...b.matchAll(/(不少于|至少|不低于|约为|约|大概|大约|左右|生成|输出|达到|共)?\s*(\d+(?:\.\d+)?|[一二两三四五六七八九十]{1,3})\s*(?:页|頁)\s*(以上|左右|以内|以下)?/gu)],d=[...b.matchAll(/(不少于|至少|不低于|约为|约|大概|大约|左右|生成|输出|达到|共)?\s*(\d+(?:\.\d+)?|[一二两三四五六七八九十]{1,3})\s*(万)?\s*(?:字|字符)\s*(以上|左右|以内|以下)?/gu)],e=c.map(a=>{let b=g(a[2]||"");return Number.isFinite(b)?{value:b,mode:h(a[1],a[3])}:void 0}).filter(a=>!!a).at(-1),f=d.map(a=>{let b=g(a[2]||"");return b?{value:Math.round(b*(a[3]?1e4:1)),mode:h(a[1],a[4])}:void 0}).filter(a=>!!a).at(-1);return{targetPages:e?.value,pageMode:e?.mode,targetChars:f?.value,charMode:f?.mode}}function j(a){let b=a.title+a.purpose;return/方法|技术|质量|安全|进度|资源|保障|措施|部署|方案|流程|执行/u.test(b)?1.3:/概况|结语|附录/u.test(b)?.75:1}function k(a){let b=a.template.generationSettings||a.template.exportSettings,c=f(a.template.exportSettings||a.template.generationSettings),d=i(a.requirement||""),e=i(a.promptTexts||""),g=d.targetChars||d.targetPages?d:e,h=!!(g.targetChars||g.targetPages),k=h?void 0:b?.targetPages?.target||b?.targetPages?.min,l=g.targetPages?g.targetPages*c:void 0,m=g.targetPages||k,n=h?"explicit":k?"template":a.spec?.chapterRules.some(a=>a.minWords)||a.spec?.dynamicChapterRule.minWordsPerChapter?"spec":"default",o=h?Math.max(g.targetChars||0,l||0)||void 0:Math.max((k?k*c:void 0)||0)||void 0,p=g.pageMode||"exact",q=g.charMode||p,r=h&&"approximate"===q,s=h&&"minimum"===q,t=h?m?Math.floor(m*(s?1:.9)):void 0:b?.targetPages?.min||(m?Math.floor(.95*m):void 0),u=h&&m&&!s?Math.ceil(m*(r?1.15:1.08)):b?.targetPages?.max,v=o?Math.floor(o*(s?1:.9)):t?t*c:void 0,w=o&&!s?Math.ceil(o*(r?1.15:1.08)):u?u*c:void 0,x=a.chapters.length>0?a.chapters:a.template.chapters,y=x.reduce((a,b)=>a+j(b),0)||1,z=new Map,A=x.map(a=>({chapter:a,target:o?Math.round(o*j(a)/y):0})),B=x.reduce((b,c)=>b+Math.max(a.spec?.chapterRules.find(a=>a.id===c.id||a.title===c.title)?.minWords||0,a.spec?.dynamicChapterRule.minWordsPerChapter||0,o?Math.min(900,Math.max(450,Math.floor(o/Math.max(1,x.length)*.35))):1200),0),C=o&&B>.92*o?Math.max(.45,.92*o/B):1;for(let{chapter:b,target:c}of A){let d=Math.floor(Math.max(Math.max(a.spec?.chapterRules.find(a=>a.id===b.id||a.title===b.title)?.minWords||0,a.spec?.dynamicChapterRule.minWordsPerChapter||0),o?Math.min(900,Math.max(450,Math.floor(o/Math.max(1,x.length)*.35))):1200)*C);z.set(b.id,Math.max(d,c))}let D=!!(h&&(s||"exact"===q)&&(o||v||0)>=4e4);return{targetPages:m,minPages:t,maxPages:u,targetChars:o,minChars:v,maxChars:w,charsPerPage:c,chapterTargets:z,source:n,mode:q,longformStrict:D}}function l(a,b){let c=a?.targetPages;if(!c?.min&&!c?.target&&!c?.max)return[];let e=d(b,a),f=c.min||c.target,g=c.max||c.target,h=[];return f&&e<f&&h.push({level:"warning",message:`正文篇幅低于目标页数:预计约 ${e} 页,目标不少于 ${f} 页`,suggestion:"建议增加章节正文深度,或根据实际需求调整目标页数。"}),g&&e>g+4&&h.push({level:"warning",message:`正文篇幅可能超过目标页数:预计约 ${e} 页,目标不超过 ${g} 页`,suggestion:"建议检查是否存在重复段落或过度展开。"}),h}function m(a,b){let{currentChars:c,estimatedPages:d}=function(a,b){let c=e(b),d=Math.ceil(c/a.charsPerPage);return{currentChars:c,estimatedPages:d}}(a,b),f=[];return a.minChars&&c<a.minChars&&f.push({level:"warning",message:`正文篇幅低于目标字数:当前 ${c} 字,目标不少于 ${a.minChars} 字`,suggestion:"建议继续扩写缺口章节,或根据实际需求调整目标字数/页数。"}),a.maxChars&&c>Math.ceil(1.12*a.maxChars)?f.push({level:"error",message:`正文篇幅超过目标字数区间:当前 ${c} 字,建议不超过 ${a.maxChars} 字`,suggestion:"请压缩重复段落、过细小节或过度展开内容后再导出。"}):a.maxChars&&c>a.maxChars&&f.push({level:"warning",message:`正文篇幅超过目标字数区间:当前 ${c} 字,建议不超过 ${a.maxChars} 字`,suggestion:"建议减少重复段落、过细小节或过度展开内容。"}),a.minPages&&d<a.minPages&&f.push({level:"warning",message:`正文篇幅低于目标页数:预计约 ${d} 页,目标不少于 ${a.minPages} 页`,suggestion:"建议继续扩写正文,或根据实际导出版式调整目标页数。"}),a.maxPages&&d>a.maxPages&&f.push({level:"warning",message:`正文篇幅超过目标页数区间:预计约 ${d} 页,建议不超过 ${a.maxPages} 页`,suggestion:"建议压缩过度展开内容或调整目标页数。"}),f}c.d(b,{Cv:()=>d,PE:()=>l,V7:()=>e,tF:()=>k,ty:()=>m})},80439:(a,b,c)=>{function d(a){return a?({"knowledge-base":"知识库","document-readiness":"生成准备度检查","quality-repair":"质量补写","export-gate":"导出门禁","final-format":"正式排版","multimodal-files":"多模态文件理解","llm-json":"LLM 事实抽取","llm-review":"LLM 审查","document-workflow":"最终规范校验"})[a]:void 0}function e(a,b={}){let c={executionVersion:2,title:{role_binding:"项目角色配置绑定",knowledge_retrieval:"知识库证据检索",file_understanding:"项目资料理解",fact_extraction:"事实抽取",chapter_generation:"章节正文生成",asset_generation:"生成资源处理",llm_review:"LLM 审查优化",validation:"内容优化与质量校验",formatting:"正式排版整理",export_ready:"导出就绪检查",reference:"资料增强"}[a.type],group:a.type,...a,...b};return{...c,roleName:c.roleName||d(c.roleId),subtitle:c.subtitle||c.roleName||d(c.roleId)}}function f(a,b){let c=a=>"chapter_generation"===a.type||/^agent-(?:reviewer|repairer|chapter-task|final-gate-repair)-/u.test(a.roleId||"")?[a.type,a.roleId||"",a.promptId||"",a.subtitle||"",a.order??""].join("::"):[a.type,a.roleId||"",a.promptId||""].join("::"),d=c(b),e=a.findIndex(a=>c(a)===d);return e>=0?(a[e]={...b,order:a[e]?.order??b.order},e):(a.push(b),a.length-1)}function g(a,b){return`${a},耗时 ${Math.round((Date.now()-b)/1e3)} 秒`}c.d(b,{AQ:()=>g,X5:()=>e,fx:()=>f})},81125:(a,b,c)=>{c.d(b,{h:()=>e,o:()=>f});var d=c(92808);function e(a,b){let c=function(a,b){let c=[a.name,a.category,a.description,a.outputTitle,...a.chapters.flatMap(a=>[a.title,a.purpose])].join("\n"),d=new Set(["project_overview","scope_description"]);return/需求|规则|响应|方案|实施|专项|安全|质量|进度|合规|施工组织|技术标/iu.test(c)&&["requirement_document","structured_data"].forEach(a=>d.add(a)),(/安全|质量|进度|工期|文明|环保|验收/iu.test(c)||b.materialInventory.schedule_quality_safety.length>0)&&d.add("schedule_quality_safety"),(/设计|图纸|平面|立面|剖面|做法/iu.test(c)||b.materialInventory.design_specification.length>0)&&d.add("design_specification"),(/风险|重点|难点|约束|现场|危大/iu.test(c)||b.materialInventory.risk_constraints.length>0)&&d.add("risk_constraints"),d}(a,b);return[...new Set([...function(a){let b=[a.name,a.description,a.outputTitle,...a.chapters.flatMap(a=>[a.title,a.purpose,...a.requiredFacts||[],...a.queries||[]])].join("\n"),c=new Set((0,d.t0)(b,d.hW));return c.add("project_overview"),c.add("scope_description"),[...c]}(a),...c])].map(a=>{let d=b.materialInventory[a]||[],e=c.has(a),f=d.length>0,g=f&&d.length<(e?2:1);return{role:a,required:e,satisfied:f,weak:g,evidenceCount:d.length,filePaths:d.map(a=>a.filePath),reason:f?`已匹配 ${d.length} 个资料文件`:e?"必需资料角色缺失":"可选资料角色缺失"}})}function f(a){if(0===a.length)return 1;let b=a.filter(a=>a.required),c=a.filter(a=>!a.required),d=b.length?b.filter(a=>a.satisfied).length/b.length:1;return Math.max(0,Math.min(1,.75*d+.2*(c.length?c.filter(a=>a.satisfied).length/c.length:1)+.05-.05*!!b.some(a=>a.weak)))}},85441:(a,b,c)=>{c.d(b,{F:()=>u,P:()=>s});var d=c(76760),e=c(44533),f=c(92808);let g=["project_overview","requirement_document","structured_data","scope_description"],h=["project_overview","requirement_document","addendum","structured_data","budget_cost","design_specification","resource_recommendation","schedule_quality_safety","scope_description","technical_specification","risk_constraints"];function i(a){let b=[];for(let c of a)for(let a of c.relativePath.split(/[\\/]/gu))a&&b.push(a);return b}function j(a){return/--|延期到|资料|附件|扫描|目录|汇总|打包|备份|\d{1,2}\.\d{1,2}/u.test(a)}function k(a){return m(a).replace(/^\d+(?:\.\d+)?[-_\s]*/u,"").replace(/^(?:延期到\d+(?:\.\d+)?[-_—–\s]*)+/u,"").trim()}function l(a){let b=new Set,c=[];for(let d of a)!d||b.has(d)||(b.add(d),c.push(d));return c}function m(a){return a.replace(/\.(?:pdf|docx?|xlsx?|xls|dwg)$/iu,"").trim()}function n(a){let b=new Set,c=[];for(let d of i(a)){let a=k(d);!(!/项目|任务|文档|合同|计划|方案|工程/iu.test(a)||a.length<6||b.has(a))&&(!j(a)||/\.\w+$/u.test(d))&&(b.add(a),c.push(a))}return c}function o(a,b){return 0===a.length?b:a.map(a=>m(a.fileName)).join("、")}function p(a,b,c){b.lastIndex=0;let d=new Set,e=[];for(let f of a.matchAll(b)){let a=(f[c]||"").trim();!a||d.has(a)||(d.add(a),e.push(a))}return b.lastIndex=0,e}function q(a){return a.replace(/\\/gu,"/").replace(/^\/+|\/+$/gu,"")}function r(a){let b=q(a).split("/").filter(Boolean);return b.length>1?b[0]:void 0}function s(a,b){let c=(0,e.Yy)(a),m=function(a,b){let c=a.filter(a=>"error"!==a.status),d=new Set((b?.boundFilePaths||[]).map(q)),e=c.filter(a=>d.has(q(a.relativePath)));if(e.length>0){let a=[...new Set(e.map(a=>r(a.relativePath)).filter(Boolean))],b=1===a.length?a[0]:void 0;return{files:e,reason:b?`模板绑定文件定位到资料组:${b}`:"使用模板显式绑定文件作为资料范围",ambiguous:!1}}let f=(b?.requirement||"").trim();if(f){let a=new Map;for(let b of c){let c=r(b.relativePath);if(!c)continue;let d=function(a,b){let c=0;for(let d of a.split(/(?:\s|_|-|—|(|)|\(|\)|【|】|\[|\]|、|,|,)+/u)){let a=d.trim();a.length>=2&&b.includes(a)&&(c+=1)}return c}(c,f);d>0&&a.set(c,(a.get(c)||0)+d)}let b=[...a.entries()].sort((a,b)=>b[1]-a[1])[0];if(b)return{files:c.filter(a=>r(a.relativePath)===b[0]),reason:`需求描述定位到资料组:${b[0]}`,ambiguous:!1}}let g=[...new Set(c.map(a=>r(a.relativePath)).filter(Boolean))];return 1===g.length?{files:c.filter(a=>r(a.relativePath)===g[0]),reason:`知识库单一资料组:${g[0]}`,ambiguous:!1}:{files:c,reason:g.length>1?`未指定资料组,检测到 ${g.length} 个资料组,已阻断生成避免跨项目污染`:"未检测到资料组,使用全部资料",ambiguous:g.length>1}}(c,b),s=m.files,t=function(){let a={};for(let b of h)a[b]=[];return a}(),u=new Map((b?.boundFileRoles||[]).map(a=>[q(a.filePath),a.roles]));for(let a of s){let b=q(a.relativePath),c=[...u.entries()].filter(([a])=>b.endsWith(a)||a.endsWith(b)).flatMap(([,a])=>a);for(let b of[...new Set([...function(a){let b=new Set((0,f.t0)(a,f.hW));return b.add("project_overview"),[...b]}(a.relativePath),...c])])t[b].push({filePath:a.relativePath,fileName:d.basename(a.relativePath),role:b,chunkCount:a.chunkCount})}let v=function(a){let b,c;for(let d of i(a)){let a=k(d);if(/项目|工程/iu.test(a)&&!(a.length<6)){if(/\.\w+$/u.test(d)){b||=a;continue}if(j(a)){c||=a.split(/--/u).filter(a=>/项目|工程/u.test(a)).sort((a,b)=>a.length-b.length)[0]||a;continue}return a}}return b||c||"当前知识库项目"}(s),w=function(a){for(let b of a){let a=b.relativePath.match(/\b\d{4}[A-Z]{2,}\d{4,}\b/u)?.[0];if(a)return a}}(s),x=function(a,b){let c=n(a),d=n(b),e=l(a.map(a=>a.relativePath).join("\n").match(/\b\d{4}[A-Z]{2,}\d{4,}\b/gu)||[]),f=l(a.map(a=>r(a.relativePath)).filter(Boolean)),g=[c.length>0,e.length>0,1===f.length];return{fingerprint:{projectNames:c,documentNos:e,fileGroups:f,confidence:g.filter(Boolean).length/g.length},contaminationCandidates:d.filter(a=>!c.includes(a))}}(s,c),y=function(a){let b=function(a){let b="";for(let c of a)b+=`${c.relativePath}
115
115
  `;return b}(a);return{ownerNames:p(b,/(?:责任主体|委托人|客户|甲方|乙方|需求方|服务方|执行方|负责人)[::]?([^\\/\n,,。;;]{2,40})/gu,1),locationNames:p(b,/(?:项目地点|实施地点|服务地点|交付地点|项目地址|执行地点)[::]?([^\\/\n,,。;;]{2,50})/gu,1),scheduleValues:p(b,/(\d+\s*(?:天|周|个月|月|年|小时)|(?:周期|期限|交付|完成)[^\\/\n,,。;;]{0,30})/gu,1),qualityTargets:p(b,/(?:质量(?:标准|目标|要求)?[::]?[^\\/\n,,。;;]{2,40}|合格|优良)/gu,0)}}(s),z=function(a){let b=new Set(g);for(let c of["design_specification","schedule_quality_safety","risk_constraints","resource_recommendation","technical_specification","budget_cost","addendum"])a[c].length>0&&b.add(c);return[...b]}(t),A=z.filter(a=>t[a].length>0),B=z.filter(a=>0===t[a].length);return{projectId:v.replace(/[^a-zA-Z0-9\u4e00-\u9fa5_-]/gu,"-").slice(0,80)||"current-project",projectName:v,generatedAt:Date.now(),fingerprint:x.fingerprint,contaminationCandidates:x.contaminationCandidates,source:{totalFiles:c.length,selectedFiles:s.length,selectionReason:m.reason,ambiguous:m.ambiguous},facts:{projectName:v,documentNo:w,scopeDescriptions:t.scope_description.map(a=>a.fileName.replace(/\.(?:pdf|docx?|xlsx?|xls|dwg)$/iu,"")),professionalScopes:[...new Set(t.scope_description.concat(t.design_specification,t.structured_data).map(a=>a.fileName.replace(/\.(?:pdf|docx?|xlsx?|xls|dwg)$/iu,"")))],scheduleRequirement:t.schedule_quality_safety.length?"已识别周期、质量、安全或合规相关资料,生成时应以需求文件、变更说明和技术要求为准。":void 0,qualityRequirement:t.schedule_quality_safety.length?"已识别质量或评价相关资料。":void 0,safetyRequirement:t.schedule_quality_safety.length?"已识别安全或合规相关资料。":void 0,materialBrandRequirement:t.resource_recommendation.length?"已识别资源、材料、设备或品牌相关资料。":void 0,ownerNames:y.ownerNames,locationNames:y.locationNames,scheduleValues:y.scheduleValues,qualityTargets:y.qualityTargets},materialInventory:t,extractedSections:{projectOverview:`绑定材料组:${v}${w?`,文档/任务编号:${w}`:""}。`,scopeSummary:`范围资料:${o(t.scope_description,"未识别到明确范围资料")}。`,designSummary:`设计/方案/说明资料:${o(t.design_specification,"未识别到设计、方案或说明资料")}。`,structuredDataSummary:`结构化数据资料:${o(t.structured_data,"未识别到表格、列表或明细资料")}。`,scheduleQualitySafetySummary:`周期质量安全资料:${o(t.schedule_quality_safety,"未识别到周期、质量或安全专项资料")}。`,constraintsAndRisks:`约束和风险资料:${o(t.risk_constraints,"未识别到重点难点或约束资料")}。`},coverage:{requiredRoles:z,satisfiedRoles:A,missingRoles:B,materialCompletenessRate:z.length?A.length/z.length:1}}}function t(a){return a.replace(/OCR|识别错误|乱码/giu,"资料文字不清").replace(/知识库|提示词|后台|绑定片段|兜底/gu,"项目资料").replace(/PDF|DWG|Excel|XLSX?|DOCX?/giu,"资料文件")}function u(a,b={}){return b.publicSafe?["## 项目资料事实边界",t(a.extractedSections.projectOverview),`明确事实:责任主体 ${a.facts.ownerNames?.join("、")||"资料未明确"};地点 ${a.facts.locationNames?.join("、")||"资料未明确"};周期 ${a.facts.scheduleValues?.join("、")||"资料未明确"};质量 ${a.facts.qualityTargets?.join("、")||"资料未明确"}。`,t(a.extractedSections.scopeSummary),t(a.extractedSections.structuredDataSummary),t(a.extractedSections.designSummary),t(a.extractedSections.scheduleQualitySafetySummary),t(a.extractedSections.constraintsAndRisks),"仅使用资料中明确、可信的事实;资料未明确的工程实体事实不得推导,允许推导的计划配置类数据须明确标注为计划配置值。"].filter(Boolean).join("\n"):["## 后台绑定材料摘要",a.extractedSections.projectOverview,`材料指纹:对象名候选 ${a.fingerprint.projectNames.join("、")||"无"};编号 ${a.fingerprint.documentNos.join("、")||"无"};资料组 ${a.fingerprint.fileGroups.join("、")||"无"};置信度 ${Math.round(100*a.fingerprint.confidence)}%。`,`内容级事实候选:责任主体 ${a.facts.ownerNames?.join("、")||"无"};地点 ${a.facts.locationNames?.join("、")||"无"};周期 ${a.facts.scheduleValues?.join("、")||"无"};质量 ${a.facts.qualityTargets?.join("、")||"无"}。`,a.extractedSections.scopeSummary,a.extractedSections.structuredDataSummary,a.extractedSections.designSummary,a.extractedSections.scheduleQualitySafetySummary,a.extractedSections.constraintsAndRisks,`资料满足率:${Math.round(100*a.coverage.materialCompletenessRate)}%`].join("\n")}},91977:(a,b,c)=>{c.d(b,{I2:()=>g,Lk:()=>e,Uy:()=>f});var d=c(70208);function e(a,b){let c=`${a.filePath}
116
- ${a.content}`;return(function(a){let b=a.replace(/要求|计划|目标|标准|内容|信息|事实|依据|参数|范围|要点/gu,"");return[a,b].filter(Boolean)})(b).some(a=>c.includes(a))}function f(a,b){let c=(0,d._9)(a,b).flatMap(a=>a.requiredFacts).map(a=>({id:a,name:a,required:!0,sourceRoleIds:[],extractionHint:""})),e=b?.factFields.map(a=>({id:a.id,name:a.name,required:a.required,sourceRoleIds:a.sourceRoleIds||[],extractionHint:a.extractionHint||""}))||[],f=new Map;for(let a of[...c,...e])f.set(a.id,{...f.get(a.id)||a,...a,required:a.required||f.get(a.id)?.required||!1});return[...f.values()]}function g(a,b){return(!b.sourceRoleIds?.length||!!(a.roleId&&b.sourceRoleIds.includes(a.roleId)))&&e(a,b.name)}},92808:(a,b,c)=>{c.d(b,{NT:()=>e,Ny:()=>f,hW:()=>g,nt:()=>d,rs:()=>i,t0:()=>h});let d=[{id:"report",label:"报告",patterns:[/报告|调研|分析|评估|研究|复盘|总结/iu],output:["报告"]},{id:"plan",label:"实施方案",patterns:[/方案|规划|计划|预案|路径|路线图/iu],output:["实施方案"]},{id:"standard",label:"规范说明",patterns:[/规范|标准|制度|规则|指南|手册/iu],output:["规范说明"]},{id:"proposal",label:"建议方案",patterns:[/建议|提案|需求|响应|说明书/iu],output:["建议方案"]}],e=[{id:"requirement",label:"需求规则资料",patterns:[/需求|要求|规则|条款|约束|响应|澄清|变更/iu],output:["需求约束","规则要求","变更说明"]},{id:"scope",label:"范围资料",patterns:[/范围|内容|任务|目标|边界|对象|工作内容/iu],output:["实施范围","对象范围"]},{id:"structured-data",label:"结构化数据资料",patterns:[/表格|列表|明细|数量|数据|字段|参数|规格|sheet|table|data/iu],output:["结构化数据范围","参数规格范围"]},{id:"quality",label:"质量评价资料",patterns:[/质量|验收|审核|评审|评价|标准|规范|指标/iu],output:["质量要求","评价标准"]},{id:"schedule",label:"时间进度资料",patterns:[/周期|期限|进度|计划|节点|里程碑|时间|日期/iu],output:["周期要求","进度节点要求"]},{id:"safety",label:"安全合规资料",patterns:[/安全|合规|风险|应急|环保|隐私|审计|控制/iu],output:["安全合规要求","风险控制要求"]},{id:"resource",label:"资源配置资料",patterns:[/资源|人员|设备|材料|品牌|采购|供应|配置/iu],output:["资源配置要求"]},{id:"analysis",label:"分析结论",patterns:[/报告|调研|分析|评估|研究|建议|结论/iu],output:["背景依据","分析结论","风险建议"]}],f=[{id:"overview",label:"概况章节",patterns:[/概况|背景|理解|说明|总则|摘要/iu],output:["对象名称","材料范围","实施范围"]},{id:"implementation",label:"实施章节",patterns:[/方法|部署|实施|范围|组织|流程|步骤/iu],output:["实施范围","对象范围","结构化数据范围"]},{id:"controls",label:"控制章节",patterns:[/质量|周期|进度|安全|合规|验收|审核|评价/iu],output:["质量要求","周期要求","安全合规要求"]},{id:"resources",label:"资源章节",patterns:[/资源|人员|设备|材料|品牌|采购|供应|配置/iu],output:["资源配置要求"]},{id:"risk",label:"风险章节",patterns:[/风险|重点|难点|约束|应急|合规/iu],output:["风险控制要求","风险建议"]}],g=[{id:"requirement",label:"需求规则资料",patterns:[/需求|要求|规则|条款|响应|requirement|rule/iu],output:["requirement_document"]},{id:"change",label:"变更澄清资料",patterns:[/补充|澄清|变更|修订|addendum|change/iu],output:["addendum"]},{id:"structured-data",label:"结构化数据资料",patterns:[/表格|列表|明细|数量|数据|字段|参数|规格|sheet|table|data/iu],output:["structured_data"]},{id:"budget",label:"预算费用资料",patterns:[/预算|费用|金额|报价|限价|成本|price|cost|budget/iu],output:["budget_cost"]},{id:"design",label:"设计方案资料",patterns:[/设计|方案|说明|图像|地图|附件|drawing|image|map|design/iu],output:["design_specification"]},{id:"resource",label:"资源配置资料",patterns:[/资源|人员|设备|材料|品牌|采购|供应|配置/iu],output:["resource_recommendation"]},{id:"schedule-quality-safety",label:"进度质量合规资料",patterns:[/质量|周期|进度|安全|合规|验收|审核|评价|环保|应急/iu],output:["schedule_quality_safety"]},{id:"scope",label:"范围任务资料",patterns:[/范围|内容|任务|目标|边界|对象|工作内容/iu],output:["scope_description"]},{id:"technical",label:"技术标准资料",patterns:[/技术|规范|标准|规程|指南|手册|参数|spec|standard/iu],output:["technical_specification"]},{id:"risk",label:"风险约束资料",patterns:[/风险|重点|难点|约束|限制|现场|条件|应急/iu],output:["risk_constraints"]}];function h(a,b){let c=new Set;for(let d of b)for(let b of d.patterns)if(b.lastIndex=0,b.test(a)){for(let a of d.output)c.add(a);break}return[...c]}function i(a,b){for(let c of b)for(let b of c.patterns)if(b.lastIndex=0,b.test(a))return c.output[0]}},92817:(a,b,c)=>{c.d(b,{hZ:()=>x,we:()=>aj,eu:()=>y,mF:()=>K,DG:()=>ah,N1:()=>ai,w9:()=>w,mt:()=>af,ap:()=>ad,eL:()=>T,xu:()=>U,uV:()=>ak,m5:()=>aq,dV:()=>ap});var d=c(73024),e=c(76760),f=c(95393),g=c(78217),h=c(70933),i=c(61373),j=c(95734),k=c(22157),l=c(51144),m=c(34680);c(70208);var n=c(80439),o=c(71001),p=c(8667),q=c(40693);let r=[{id:"earthwork-excavation",name:"土方开挖",aliases:["土方","基坑开挖","土方开挖","挖土"],process:["测量放线","标高复核","分层开挖","边坡修整","基底验槽"],params:["分层开挖厚度≤2m","基底标高偏差0~-50mm","边坡坡度按土质取1:0.5~1:1","预留200~300mm人工清底"],acceptance:["基底验槽","钎探记录","标高与轴线复核","隐蔽验收记录"],standards:["GB 50202-2018 建筑地基基础工程施工质量验收标准"]},{id:"foundation-pit-support",name:"基坑支护",aliases:["基坑支护","钢板桩","土钉墙","支护桩","冠梁"],process:["测量定位","支护桩成孔","钢筋笼制安","混凝土浇筑","冠梁施工","分层开挖","位移监测"],params:["桩位偏差≤50mm","垂直度≤1%","冠梁顶标高偏差\xb110mm","监测频率:开挖期每天1次","报警值按设计位移速率3mm/d"],acceptance:["桩身完整性检测","锚杆拉拔试验","基坑监测日报","专项方案审批记录"],standards:["JGJ 120-2012 建筑基坑支护技术规程","GB 50497-2019 建筑基坑工程监测技术标准"]},{id:"pile-foundation",name:"桩基工程",aliases:["桩基","钻孔灌注桩","预制桩","静压桩","PHC管桩"],process:["测量定位","成孔(压桩)","清孔验收","钢筋笼制安","混凝土灌注","桩身检测"],params:["桩径偏差\xb15mm","沉渣厚度≤50mm(端承桩)","充盈系数≥1.0","桩顶标高偏差\xb110mm","静载试验不少于总桩数1%且≥3根"],acceptance:["桩基静载试验","低应变/声波透射检测","成孔记录","钢筋隐蔽验收"],standards:["JGJ 94-2008 建筑桩基技术规范","GB 50202-2018"]},{id:"rebar-works",name:"钢筋工程",aliases:["钢筋","钢筋绑扎","钢筋加工","钢筋连接"],process:["翻样下料","加工成型","运输堆放","绑扎安装","隐蔽验收"],params:["直螺纹接头拧紧力矩值按规格控制","接头错开≥35d且≥500mm","保护层垫块间距≤1m","绑扎搭接长度按图集16G101"],acceptance:["钢筋原材复试","接头工艺检验","隐蔽工程验收记录","保护层实测"],standards:["GB 50204-2015 混凝土结构工程施工质量验收规范","JGJ 18-2012 钢筋焊接及验收规程"]},{id:"formwork-works",name:"模板工程",aliases:["模板","模板支撑","高支模","脚手架模板"],process:["方案编制","立杆搭设","主次龙骨铺设","面板安装","验收挂牌","拆模申请"],params:["立杆间距≤900\xd7900mm(危大)","扫地杆距地≤200mm","水平杆步距≤1500mm","剪刀撑连续设置","拆模强度:板≥75%设计强度"],acceptance:["高支模专项方案论证","架体验收挂牌","沉降变形监测","拆模令"],standards:["JGJ 162-2008 建筑施工模板安全技术规范","JGJ 130-2011 建筑施工扣件式钢管脚手架安全技术规范"]},{id:"concrete-works",name:"混凝土工程",aliases:["混凝土","砼浇筑","混凝土浇筑","振捣"],process:["浇筑申请","坍落度检测","分层浇筑","振捣密实","收面养护","试块留置"],params:["坍落度按配比\xb130mm","分层浇筑厚度≤500mm","振动棒快插慢拔","养护≥7d(掺外加剂≥14d)","标养试块每100m\xb3≥1组"],acceptance:["坍落度检测记录","试块标养与同条件报告","混凝土外观检查","强度评定"],standards:["GB 50204-2015","GB/T 50107-2010 混凝土强度检验评定标准"]},{id:"steel-structure",name:"钢结构工程",aliases:["钢结构","钢构件","焊接","高强螺栓"],process:["深化设计","构件加工","进场验收","吊装就位","校正固定","焊接/螺栓连接","涂装"],params:["高强螺栓初拧终拧扭矩比1.1","焊缝等级按设计一级/二级","挠度允许值L/400","防火涂料厚度按耐火极限"],acceptance:["焊缝探伤检测","高强螺栓扭矩检查","构件尺寸偏差实测","防火涂料厚度检测"],standards:["GB 50205-2020 钢结构工程施工质量验收标准","JGJ 82-2011 钢结构高强度螺栓连接技术规程"]},{id:"masonry-works",name:"砌体工程",aliases:["砌体","砌筑","加气块","二次结构"],process:["弹线定位","排砖撂底","砌筑","构造柱植筋","圈梁浇筑","顶砖处理"],params:["灰缝厚度8~12mm","垂直度偏差≤5mm(每层)","拉结筋间距≤500mm","顶砖间隔7d斜砌"],acceptance:["砌筑砂浆试块","构造柱钢筋隐蔽验收","垂直度平整度实测","拉结筋检测"],standards:["GB 50203-2011 砌体结构工程施工质量验收规范"]},{id:"waterproofing",name:"防水工程",aliases:["防水","屋面防水","卫生间防水","地下防水","卷材"],process:["基层处理","阴阳角附加层","防水层铺贴","搭接密封","闭水/淋水试验","保护层"],params:["卷材搭接宽度≥100mm","附加层宽度≥500mm","卫生间闭水试验48h","屋面蓄水试验24h","涂膜厚度按设计≥1.5mm"],acceptance:["闭水/蓄水试验记录","隐蔽验收记录","防水材料复试","淋水试验"],standards:["GB 50207-2012 屋面工程质量验收规范","GB 50208-2011 地下防水工程质量验收规范"]},{id:"plastering",name:"抹灰工程",aliases:["抹灰","粉刷","墙面抹灰","挂网"],process:["基层处理","浇水湿润","打点冲筋","分层抹灰","压光","养护"],params:["不同基体交接处挂网宽≥200mm","每遍抹灰厚度≤7mm","平整度偏差≤4mm","空鼓面积≤400cm\xb2且不连续"],acceptance:["空鼓敲击检查","平整度垂直度实测","养护记录"],standards:["GB 50210-2018 建筑装饰装修工程质量验收标准"]},{id:"tile-paving",name:"墙地砖铺贴",aliases:["墙地砖","瓷砖","铺贴","石材"],process:["基层检查","排砖放线","选砖泡水","铺贴","勾缝","成品保护"],params:["粘结层厚度≤10mm","接缝宽度按设计要求","空鼓率单块≤15%且整面≤5%","平整度偏差≤2mm"],acceptance:["空鼓锤击检查","平整度实测","坡度泼水检查","成品保护验收"],standards:["GB 50210-2018"]},{id:"ceil-partition",name:"吊顶与轻质隔墙",aliases:["吊顶","轻钢龙骨","隔墙","石膏板"],process:["弹线定位","龙骨安装","面板安装","接缝处理","面层施工"],params:["主龙骨间距≤1200mm","吊杆间距≤1000mm","罩面板接缝错开","石膏板接缝处粘贴网格布"],acceptance:["龙骨隐蔽验收","面板平整度实测","吊顶起拱检查"],standards:["GB 50210-2018"]},{id:"painting",name:"涂饰工程",aliases:["涂料","油漆","乳胶漆","腻子"],process:["基层清理","刮腻子","打磨","底漆","面漆","修整"],params:["腻子每遍厚度≤2mm","底漆1遍面漆2遍","施工温度5~35℃","平整度偏差≤2mm"],acceptance:["涂层色泽均匀检查","无流坠起皮检查","平整度实测"],standards:["GB 50210-2018"]},{id:"door-window",name:"门窗工程",aliases:["门窗","铝合金窗","幕墙","玻璃"],process:["洞口复核","安装固定","缝隙填塞","打胶密封","开启调试","淋水试验"],params:["框与墙间隙≤5mm","密封胶连续饱满","窗扇开关力≤50N","气密水密性能按设计等级"],acceptance:["淋水试验","开启灵活检查","垂直度偏差实测","性能检测报告"],standards:["GB 50210-2018","GB/T 7106-2019 建筑外门窗气密水密抗风压性能检测方法"]},{id:"plumbing",name:"给排水工程",aliases:["给排水","给水管道","排水管道","管道安装"],process:["预留预埋","支架安装","管道安装","压力试验","冲洗消毒","通水试验"],params:["给水管试验压力为工作压力1.5倍且≥0.6MPa","排水管坡度按管径DN50~DN200取2.5%~0.8%","支架间距按管径设置","PPR热熔温度260℃"],acceptance:["管道水压试验","通球试验","灌水试验","冲洗消毒记录"],standards:["GB 50242-2002 建筑给水排水及采暖工程施工质量验收规范"]},{id:"electrical",name:"电气工程",aliases:["电气","配管","穿线","桥架","配电箱","防雷接地"],process:["预留预埋","配管桥架","穿线放缆","设备安装","绝缘测试","通电调试"],params:["管路弯曲半径≥6D(埋地≥10D)","导线绝缘电阻≥0.5MΩ","桥架支架间距≤1.5m","防雷接地电阻≤1Ω"],acceptance:["绝缘电阻测试","接地电阻测试","通电试运行","隐蔽验收记录"],standards:["GB 50303-2015 建筑电气工程施工质量验收规范"]},{id:"hvac",name:"通风空调工程",aliases:["通风空调","风管","空调","新风","保温"],process:["风管制作","吊架安装","风管安装","设备安装","严密性试验","系统调试"],params:["风管支吊架间距≤3m","中压风管漏光法检测","保温层厚度按设计","风口风速按设计值\xb110%"],acceptance:["风管严密性试验","风量平衡调试","设备单机试运行","系统联动调试"],standards:["GB 50243-2016 通风与空调工程施工质量验收规范"]},{id:"fire-protection",name:"消防工程",aliases:["消防","消火栓","喷淋","火灾报警","防排烟"],process:["预留预埋","管道安装","喷头/探测器安装","系统试压","联动调试","检测验收"],params:["喷淋试验压力≥1.4MPa","消火栓充实水柱≥10m","探测器保护半径按类别","防排烟风管严密性"],acceptance:["消防水压试验","联动调试记录","消防检测报告","竣工验收备案"],standards:["GB 50261-2017 自动喷水灭火系统施工及验收规范","GB 50166-2019 火灾自动报警系统施工及验收标准"]},{id:"weak-current",name:"弱电智能化工程",aliases:["弱电","智能化","综合布线","监控","门禁"],process:["管线预埋","桥架敷设","线缆敷设","设备安装","单机调试","系统联调"],params:["双绞线弯曲半径≥4D","光缆弯曲半径≥15D","面板安装高度距地300mm","链路测试按TIA-568"],acceptance:["链路测试报告","单机调试记录","系统联调记录","隐蔽验收"],standards:["GB 50311-2016 综合布线系统工程设计规范","GB 50339-2013 智能建筑工程质量验收规范"]},{id:"municipal-road",name:"道路工程",aliases:["道路","路基","路面","水稳","沥青"],process:["测量放线","路基处理","分层碾压","水稳摊铺","沥青摊铺","标线设施"],params:["路基压实度≥93%(路床)","水稳层7d无侧限抗压强度按设计","沥青压实度≥96%","面层平整度≤5mm(3m直尺)"],acceptance:["压实度检测","弯沉检测","取芯厚度检测","平整度实测"],standards:["CJJ 1-2008 城镇道路工程施工与质量验收规范"]},{id:"municipal-pipe",name:"市政管道工程",aliases:["管道","雨污水","沟槽","检查井","承插管"],process:["测量放线","沟槽开挖支护","基础垫层","管道安装","接口处理","闭水试验","回填"],params:["沟槽开挖放坡按土质1:0.33~1:0.5","垫层厚度按设计≥100mm","管道安装轴线偏差≤15mm","闭水试验渗水量按GB 50268","回填分层厚度≤250mm"],acceptance:["闭水试验记录","管内底高程检测","管道CCTV检测","回填压实度检测"],standards:["GB 50268-2008 给水排水管道工程施工及验收规范"]},{id:"demolition",name:"拆除工程",aliases:["拆除","墙体拆除","结构拆除","垃圾外运"],process:["方案编制","围挡隔离","管线切断","分层拆除","垃圾清运","验收交接"],params:["拆除顺序自上而下","垃圾清运日产日清","湿法作业降尘","既有保留部位防护到位"],acceptance:["拆除专项方案","既有设施保护检查","垃圾清运记录"],standards:["JGJ 147-2016 建筑拆除工程安全技术规范"]},{id:"structural-strengthen",name:"结构加固",aliases:["结构加固","粘钢","碳纤维","植筋","加大截面"],process:["设计交底","基层处理","植筋","粘贴加固","养护","检测验收"],params:["植筋锚固深度按设计≥15d","碳纤维布粘结强度≥2.5MPa","胶粘剂固化时间按产品说明","加大截面混凝土强度等级≥C25"],acceptance:["拉拔试验","粘结密实度检测","隐蔽验收记录"],standards:["GB 50367-2013 混凝土结构加固设计规范","GB 50550-2010 建筑结构加固工程施工质量验收规范"]},{id:"facade-renovation",name:"外立面整治",aliases:["外立面","立面修补","真石漆","外保温"],process:["脚手架搭设","空鼓铲除","界面处理","保温层施工","面层施工","验收落架"],params:["保温板粘贴面积≥40%","锚栓数量每平米≥6个","抗裂砂浆厚度3~5mm","面层垂直度偏差≤4mm"],acceptance:["粘结强度现场拉拔","锚栓拉拔试验","平整度实测"],standards:["GB 50411-2019 建筑节能工程施工质量验收标准","JGJ 144-2019 外墙外保温工程技术标准"]},{id:"scaffold",name:"脚手架工程",aliases:["脚手架","外架","落地架","悬挑架"],process:["方案编制","基础处理","立杆搭设","连墙件设置","安全网封闭","验收挂牌","拆除"],params:["立杆纵距≤1.5m","连墙件两步三跨","剪刀撑与地面夹角45\xb0~60\xb0","悬挑架工字钢锚固长度≥1.25倍悬挑长度","架体高于作业层1.5m"],acceptance:["架体分段验收","连墙件检查","安全网封闭检查"],standards:["JGJ 130-2011 建筑施工扣件式钢管脚手架安全技术规范"]},{id:"tower-crane",name:"起重吊装",aliases:["起重吊装","塔吊","吊装","汽车吊"],process:["方案编制","设备报验","基础验收","安装调试","检测备案","日常检查","拆除"],params:["吊装作业半径内警戒","吊索具安全系数≥6","塔吊垂直度≤4‰","风速≥6级停止吊装"],acceptance:["特种设备检测","安装验收记录","司机指挥持证检查"],standards:["JGJ 196-2010 建筑施工塔式起重机安装使用拆卸安全技术规程"]},{id:"electrical-hookup",name:"临时用电",aliases:["临电","临时用电","三级配电"],process:["方案编制","线路敷设","配电箱设置","接地保护","验收送电","日常巡检"],params:["三级配电两级漏保","漏电动作电流≤30mA/0.1s","PE线截面按相线1/2","电缆埋深≥0.7m","配电箱距地1.4~1.6m"],acceptance:["绝缘电阻测试","接地电阻测试","验收送电记录"],standards:["JGJ 46-2005 施工现场临时用电安全技术规范"]}],s=new Map,t=new Map;for(let a of r)for(let b of(t.set(a.id,a),s.set(a.name,a),a.aliases))s.set(b,a);let u=[{pattern:/安装工程|机电安装/u,cardIds:["electrical","plumbing","hvac","fire-protection","weak-current"]},{pattern:/结构加固|加固改造/u,cardIds:["structural-strengthen","concrete-works","rebar-works","formwork-works"]},{pattern:/装饰工程|装饰装修/u,cardIds:["plastering","tile-paving","ceil-partition","painting","door-window"]},{pattern:/外墙|屋面|立面/u,cardIds:["facade-renovation","waterproofing","scaffold"]},{pattern:/室外道排|道排|室外管网|雨污水/u,cardIds:["municipal-pipe","municipal-road","earthwork-excavation"]},{pattern:/智能化/u,cardIds:["weak-current"]},{pattern:/消防/u,cardIds:["fire-protection"]},{pattern:/拆除/u,cardIds:["demolition"]},{pattern:/水电改造/u,cardIds:["plumbing","electrical"]}];function v(a,b=[]){let c=new Set;for(let b of a){let a=s.get(b);for(let[d,e]of(a&&c.add(a),s))d.length>=3&&b.includes(d)&&c.add(e);for(let a of u)if(a.pattern.test(b))for(let b of a.cardIds){let a=t.get(b);a&&c.add(a)}}for(let a of r){if(c.size>=16)break;(!a.projectTypes||a.projectTypes.some(a=>b.includes(a)))&&c.add(a)}return[...c].slice(0,16)}function w(a,b,c){let d=[...a.errors.map(a=>({level:"error",message:a,suggestion:"请补充配置或资料后重新生成。"})),...a.warnings.map(a=>({level:"warning",message:a,suggestion:"建议人工确认或补充对应资料。"}))];return c.some(a=>/资料未提供|系统暂未从知识库确认/u.test(a.content))&&d.push({level:"warning",message:"存在系统暂未从知识库确认的章节内容",suggestion:"请检查项目角色配置、文件绑定顺序和事实抽取落位结果。"}),b.conflicts.length>0&&d.push(...b.conflicts.map(a=>({level:"warning",message:a,suggestion:"请根据当前模板绑定的角色、文件证据和用户要求复核取值口径。"}))),d}function x(a){let b=a.spec?.chapterRules.find(b=>b.id===a.chapter.id||b.title===a.chapter.title),c=(b?.requiredFactIds||[]).map(b=>a.spec?.factFields.find(a=>a.id===b)?.name).filter(Boolean),d=[...new Set([...a.chapter.requiredFacts,...c,...a.plan?.requiredContents||[],...a.plan?.evidenceNeeds||[],...(a.resolvedFactNeeds||[]).filter(a=>a.need.required).map(a=>a.need.label)].filter(Boolean))],e=a.roleFacts.map(({fact:a})=>`- ${a.key}:${(0,h.eE)((0,k.lG)(a.value))}`),f=(a.resolvedFactNeeds||[]).flatMap(a=>a.facts),g=a.indexedFacts||[],i=(0,l.Cr)(g,a=>(0,l.rF)(a),{maxItems:48,maxChars:12e3},"indexedFacts"),j=f.length>0?[]:i.selected.map(a=>`- ${a.key||a.fieldName||"资料事实"}:${(0,h.eE)((0,k.lG)(a.value)).slice(0,180)}${a.sourceFile?`(来源:${a.sourceFile.split("/").pop()})`:""}`),m=i.dropped.length>0?[`⚠️ ${i.dropped.length} 个低优先级事实未列出(完整列表见事实主表)`]:[],n=[...f,...g].filter(a=>/建设地点|建设规模|招标范围|计划工期|合同工期|周期要求|质量标准|合同估算|投资估算|最高投标限价|招标控制价/u.test(`${a.key||""}${a.fieldName||""}${a.fieldId||""}`)).filter((a,b,c)=>c.findIndex(b=>`${b.key||b.fieldName}:${(0,k.lG)(b.value)}`==`${a.key||a.fieldName}:${(0,k.lG)(a.value)}`)===b),o=[...new Set([...function(a){let b=new Set,c=/(?:\b[A-Z]{1,8}[\w./-]*\d[\w./-]*\b|\b\d+(?:\.\d+)?\s*(?:mm|cm|m|km|㎡|m²|m3|m³|kg|g|t|L|ml|MPa|kPa|℃|%|台|套|个|项|批|次|份|人|小时|分钟|日历天|天|周|月|年|万元|元)\b|\b\d+\s*[×xX]\s*\d+(?:\s*[×xX]\s*\d+)?\b|\b(?:GB|GB\/T|ISO|IEC|IEEE|RFC|API|DB\d*|T\/[A-Z]+)\s*[\w.-]+\b)/giu;for(let d of a){let a=(0,k.lG)(d.content).replace(/\s+/gu," ");if((!/报价明细|投标报价|单价|合价|综合单价|预留金|税率|增值税|利润|结算/u.test(a)||/合同估算价|合同估算价格|投资估算|最高投标限价|招标控制价/u.test(a))&&!/OCR|识别错误|乱码|无法确认|疑似|不确定|语义断裂/u.test(a)){for(let d of a.matchAll(c))b.add(d[0].trim());if(b.size>=40)break}}return[...b].slice(0,40)}(a.evidence),...f.map(a=>(0,k.lG)(a.value)).filter(a=>/\d|DN|φ|Φ|mm|cm|m²|m3|m³|MPa|kPa|℃|%|GB|JGJ|ISO|台|套|个|项|批|次|份|人|㎡|日历天|万元|元/iu.test(a)),...g.map(a=>(0,k.lG)(a.value)).filter(a=>/\d|DN|φ|Φ|mm|cm|m²|m3|m³|MPa|kPa|℃|%|GB|JGJ|ISO|台|套|个|项|批|次|份|人|㎡|日历天|万元|元/iu.test(a))])],p=0,q=[];for(let a of o){if(p+a.length>3e3&&q.length>=10)break;q.push(a),p+=a.length+1}let r=new Set([...a.evidence.map(a=>a.filePath),...f.map(a=>a.sourceFile),...(a.indexedFacts||[]).map(a=>a.sourceFile)]).size,s=(a.resolvedFactNeeds||[]).filter(a=>"satisfied"!==a.status&&a.need.required).map(a=>a.need.label);return["【本章事实覆盖与参数落位要求】",d.length?`必须优先覆盖的事实/要求:
116
+ ${a.content}`;return(function(a){let b=a.replace(/要求|计划|目标|标准|内容|信息|事实|依据|参数|范围|要点/gu,"");return[a,b].filter(Boolean)})(b).some(a=>c.includes(a))}function f(a,b){let c=(0,d._9)(a,b).flatMap(a=>a.requiredFacts).map(a=>({id:a,name:a,required:!0,sourceRoleIds:[],extractionHint:""})),e=b?.factFields.map(a=>({id:a.id,name:a.name,required:a.required,sourceRoleIds:a.sourceRoleIds||[],extractionHint:a.extractionHint||""}))||[],f=new Map;for(let a of[...c,...e])f.set(a.id,{...f.get(a.id)||a,...a,required:a.required||f.get(a.id)?.required||!1});return[...f.values()]}function g(a,b){return(!b.sourceRoleIds?.length||!!(a.roleId&&b.sourceRoleIds.includes(a.roleId)))&&e(a,b.name)}},92808:(a,b,c)=>{c.d(b,{NT:()=>e,Ny:()=>f,hW:()=>g,nt:()=>d,rs:()=>i,t0:()=>h});let d=[{id:"report",label:"报告",patterns:[/报告|调研|分析|评估|研究|复盘|总结/iu],output:["报告"]},{id:"plan",label:"实施方案",patterns:[/方案|规划|计划|预案|路径|路线图/iu],output:["实施方案"]},{id:"standard",label:"规范说明",patterns:[/规范|标准|制度|规则|指南|手册/iu],output:["规范说明"]},{id:"proposal",label:"建议方案",patterns:[/建议|提案|需求|响应|说明书/iu],output:["建议方案"]}],e=[{id:"requirement",label:"需求规则资料",patterns:[/需求|要求|规则|条款|约束|响应|澄清|变更/iu],output:["需求约束","规则要求","变更说明"]},{id:"scope",label:"范围资料",patterns:[/范围|内容|任务|目标|边界|对象|工作内容/iu],output:["实施范围","对象范围"]},{id:"structured-data",label:"结构化数据资料",patterns:[/表格|列表|明细|数量|数据|字段|参数|规格|sheet|table|data/iu],output:["结构化数据范围","参数规格范围"]},{id:"quality",label:"质量评价资料",patterns:[/质量|验收|审核|评审|评价|标准|规范|指标/iu],output:["质量要求","评价标准"]},{id:"schedule",label:"时间进度资料",patterns:[/周期|期限|进度|计划|节点|里程碑|时间|日期/iu],output:["周期要求","进度节点要求"]},{id:"safety",label:"安全合规资料",patterns:[/安全|合规|风险|应急|环保|隐私|审计|控制/iu],output:["安全合规要求","风险控制要求"]},{id:"resource",label:"资源配置资料",patterns:[/资源|人员|设备|材料|品牌|采购|供应|配置/iu],output:["资源配置要求"]},{id:"analysis",label:"分析结论",patterns:[/报告|调研|分析|评估|研究|建议|结论/iu],output:["背景依据","分析结论","风险建议"]}],f=[{id:"overview",label:"概况章节",patterns:[/概况|背景|理解|说明|总则|摘要/iu],output:["对象名称","材料范围","实施范围"]},{id:"implementation",label:"实施章节",patterns:[/方法|部署|实施|范围|组织|流程|步骤/iu],output:["实施范围","对象范围","结构化数据范围"]},{id:"controls",label:"控制章节",patterns:[/质量|周期|进度|安全|合规|验收|审核|评价/iu],output:["质量要求","周期要求","安全合规要求"]},{id:"resources",label:"资源章节",patterns:[/资源|人员|设备|材料|品牌|采购|供应|配置/iu],output:["资源配置要求"]},{id:"risk",label:"风险章节",patterns:[/风险|重点|难点|约束|应急|合规/iu],output:["风险控制要求","风险建议"]}],g=[{id:"requirement",label:"需求规则资料",patterns:[/需求|要求|规则|条款|响应|requirement|rule/iu],output:["requirement_document"]},{id:"change",label:"变更澄清资料",patterns:[/补充|澄清|变更|修订|addendum|change/iu],output:["addendum"]},{id:"structured-data",label:"结构化数据资料",patterns:[/表格|列表|明细|数量|数据|字段|参数|规格|sheet|table|data/iu],output:["structured_data"]},{id:"budget",label:"预算费用资料",patterns:[/预算|费用|金额|报价|限价|成本|price|cost|budget/iu],output:["budget_cost"]},{id:"design",label:"设计方案资料",patterns:[/设计|方案|说明|图像|地图|附件|drawing|image|map|design/iu],output:["design_specification"]},{id:"resource",label:"资源配置资料",patterns:[/资源|人员|设备|材料|品牌|采购|供应|配置/iu],output:["resource_recommendation"]},{id:"schedule-quality-safety",label:"进度质量合规资料",patterns:[/质量|周期|进度|安全|合规|验收|审核|评价|环保|应急/iu],output:["schedule_quality_safety"]},{id:"scope",label:"范围任务资料",patterns:[/范围|内容|任务|目标|边界|对象|工作内容/iu],output:["scope_description"]},{id:"technical",label:"技术标准资料",patterns:[/技术|规范|标准|规程|指南|手册|参数|spec|standard/iu],output:["technical_specification"]},{id:"risk",label:"风险约束资料",patterns:[/风险|重点|难点|约束|限制|现场|条件|应急/iu],output:["risk_constraints"]}];function h(a,b){let c=new Set;for(let d of b)for(let b of d.patterns)if(b.lastIndex=0,b.test(a)){for(let a of d.output)c.add(a);break}return[...c]}function i(a,b){for(let c of b)for(let b of c.patterns)if(b.lastIndex=0,b.test(a))return c.output[0]}},92817:(a,b,c)=>{c.d(b,{hZ:()=>x,we:()=>al,eu:()=>y,mF:()=>K,DG:()=>aj,N1:()=>ak,w9:()=>w,mt:()=>ah,ap:()=>af,eL:()=>V,xu:()=>W,uV:()=>am,m5:()=>as,dV:()=>ar});var d=c(73024),e=c(76760),f=c(95393),g=c(78217),h=c(70933),i=c(61373),j=c(95734),k=c(22157),l=c(51144),m=c(34680);c(70208);var n=c(80439),o=c(71001),p=c(8667),q=c(40693);let r=[{id:"earthwork-excavation",name:"土方开挖",aliases:["土方","基坑开挖","土方开挖","挖土"],process:["测量放线","标高复核","分层开挖","边坡修整","基底验槽"],params:["分层开挖厚度≤2m","基底标高偏差0~-50mm","边坡坡度按土质取1:0.5~1:1","预留200~300mm人工清底"],acceptance:["基底验槽","钎探记录","标高与轴线复核","隐蔽验收记录"],standards:["GB 50202-2018 建筑地基基础工程施工质量验收标准"]},{id:"earthwork-backfill",name:"土方回填",aliases:["素土回填","填土碾压","回填","余方弃置","人工清底"],process:["基底隐蔽验收","分层摊铺","分层碾压","压实度检测","边角补夯","表面整平"],params:["每层虚铺厚度≤300mm","填土含水率控制在最优含水率\xb12%","压实系数≥0.94","边角部位采用小型夯实机补夯","压实度每层每100m\xb2不少于1组检测"],acceptance:["压实度检测报告","回填土施工记录","隐蔽验收记录"],standards:["GB 50202-2018 建筑地基基础工程施工质量验收标准","GB 50268-2008 给水排水管道工程施工及验收规范"]},{id:"foundation-pit-support",name:"基坑支护",aliases:["基坑支护","钢板桩","土钉墙","支护桩","冠梁"],process:["测量定位","支护桩成孔","钢筋笼制安","混凝土浇筑","冠梁施工","分层开挖","位移监测"],params:["桩位偏差≤50mm","垂直度≤1%","冠梁顶标高偏差\xb110mm","监测频率:开挖期每天1次","报警值按设计位移速率3mm/d"],acceptance:["桩身完整性检测","锚杆拉拔试验","基坑监测日报","专项方案审批记录"],standards:["JGJ 120-2012 建筑基坑支护技术规程","GB 50497-2019 建筑基坑工程监测技术标准"]},{id:"pile-foundation",name:"桩基工程",aliases:["桩基","钻孔灌注桩","预制桩","静压桩","PHC管桩"],process:["测量定位","成孔(压桩)","清孔验收","钢筋笼制安","混凝土灌注","桩身检测"],params:["桩径偏差\xb15mm","沉渣厚度≤50mm(端承桩)","充盈系数≥1.0","桩顶标高偏差\xb110mm","静载试验不少于总桩数1%且≥3根"],acceptance:["桩基静载试验","低应变/声波透射检测","成孔记录","钢筋隐蔽验收"],standards:["JGJ 94-2008 建筑桩基技术规范","GB 50202-2018"]},{id:"rebar-works",name:"钢筋工程",aliases:["钢筋","钢筋绑扎","钢筋加工","钢筋连接"],process:["翻样下料","加工成型","运输堆放","绑扎安装","隐蔽验收"],params:["直螺纹接头拧紧力矩值按规格控制","接头错开≥35d且≥500mm","保护层垫块间距≤1m","绑扎搭接长度按图集16G101"],acceptance:["钢筋原材复试","接头工艺检验","隐蔽工程验收记录","保护层实测"],standards:["GB 50204-2015 混凝土结构工程施工质量验收规范","JGJ 18-2012 钢筋焊接及验收规程"]},{id:"formwork-works",name:"模板工程",aliases:["模板","模板支撑","高支模","脚手架模板"],process:["方案编制","立杆搭设","主次龙骨铺设","面板安装","验收挂牌","拆模申请"],params:["立杆间距≤900\xd7900mm(危大)","扫地杆距地≤200mm","水平杆步距≤1500mm","剪刀撑连续设置","拆模强度:板≥75%设计强度"],acceptance:["高支模专项方案论证","架体验收挂牌","沉降变形监测","拆模令"],standards:["JGJ 162-2008 建筑施工模板安全技术规范","JGJ 130-2011 建筑施工扣件式钢管脚手架安全技术规范"]},{id:"concrete-works",name:"混凝土工程",aliases:["混凝土","砼浇筑","混凝土浇筑","振捣"],process:["浇筑申请","坍落度检测","分层浇筑","振捣密实","收面养护","试块留置"],params:["坍落度按配比\xb130mm","分层浇筑厚度≤500mm","振动棒快插慢拔","养护≥7d(掺外加剂≥14d)","标养试块每100m\xb3≥1组"],acceptance:["坍落度检测记录","试块标养与同条件报告","混凝土外观检查","强度评定"],standards:["GB 50204-2015","GB/T 50107-2010 混凝土强度检验评定标准"]},{id:"steel-structure",name:"钢结构工程",aliases:["钢结构","钢构件","焊接","高强螺栓"],process:["深化设计","构件加工","进场验收","吊装就位","校正固定","焊接/螺栓连接","涂装"],params:["高强螺栓初拧终拧扭矩比1.1","焊缝等级按设计一级/二级","挠度允许值L/400","防火涂料厚度按耐火极限"],acceptance:["焊缝探伤检测","高强螺栓扭矩检查","构件尺寸偏差实测","防火涂料厚度检测"],standards:["GB 50205-2020 钢结构工程施工质量验收标准","JGJ 82-2011 钢结构高强度螺栓连接技术规程"]},{id:"masonry-works",name:"砌体工程",aliases:["砌体","砌筑","加气块","二次结构"],process:["弹线定位","排砖撂底","砌筑","构造柱植筋","圈梁浇筑","顶砖处理"],params:["灰缝厚度8~12mm","垂直度偏差≤5mm(每层)","拉结筋间距≤500mm","顶砖间隔7d斜砌"],acceptance:["砌筑砂浆试块","构造柱钢筋隐蔽验收","垂直度平整度实测","拉结筋检测"],standards:["GB 50203-2011 砌体结构工程施工质量验收规范"]},{id:"waterproofing",name:"防水工程",aliases:["防水","屋面防水","卫生间防水","地下防水","卷材"],process:["基层处理","阴阳角附加层","防水层铺贴","搭接密封","闭水/淋水试验","保护层"],params:["卷材搭接宽度≥100mm","附加层宽度≥500mm","卫生间闭水试验48h","屋面蓄水试验24h","涂膜厚度按设计≥1.5mm"],acceptance:["闭水/蓄水试验记录","隐蔽验收记录","防水材料复试","淋水试验"],standards:["GB 50207-2012 屋面工程质量验收规范","GB 50208-2011 地下防水工程质量验收规范"]},{id:"plastering",name:"抹灰工程",aliases:["抹灰","粉刷","墙面抹灰","挂网"],process:["基层处理","浇水湿润","打点冲筋","分层抹灰","压光","养护"],params:["不同基体交接处挂网宽≥200mm","每遍抹灰厚度≤7mm","平整度偏差≤4mm","空鼓面积≤400cm\xb2且不连续"],acceptance:["空鼓敲击检查","平整度垂直度实测","养护记录"],standards:["GB 50210-2018 建筑装饰装修工程质量验收标准"]},{id:"tile-paving",name:"墙地砖铺贴",aliases:["墙地砖","瓷砖","铺贴","石材"],process:["基层检查","排砖放线","选砖泡水","铺贴","勾缝","成品保护"],params:["粘结层厚度≤10mm","接缝宽度按设计要求","空鼓率单块≤15%且整面≤5%","平整度偏差≤2mm"],acceptance:["空鼓锤击检查","平整度实测","坡度泼水检查","成品保护验收"],standards:["GB 50210-2018"]},{id:"ceil-partition",name:"吊顶与轻质隔墙",aliases:["吊顶","轻钢龙骨","隔墙","石膏板"],process:["弹线定位","龙骨安装","面板安装","接缝处理","面层施工"],params:["主龙骨间距≤1200mm","吊杆间距≤1000mm","罩面板接缝错开","石膏板接缝处粘贴网格布"],acceptance:["龙骨隐蔽验收","面板平整度实测","吊顶起拱检查"],standards:["GB 50210-2018"]},{id:"painting",name:"涂饰工程",aliases:["涂料","油漆","乳胶漆","腻子"],process:["基层清理","刮腻子","打磨","底漆","面漆","修整"],params:["腻子每遍厚度≤2mm","底漆1遍面漆2遍","施工温度5~35℃","平整度偏差≤2mm"],acceptance:["涂层色泽均匀检查","无流坠起皮检查","平整度实测"],standards:["GB 50210-2018"]},{id:"door-window",name:"门窗工程",aliases:["门窗","铝合金窗","幕墙","玻璃"],process:["洞口复核","安装固定","缝隙填塞","打胶密封","开启调试","淋水试验"],params:["框与墙间隙≤5mm","密封胶连续饱满","窗扇开关力≤50N","气密水密性能按设计等级"],acceptance:["淋水试验","开启灵活检查","垂直度偏差实测","性能检测报告"],standards:["GB 50210-2018","GB/T 7106-2019 建筑外门窗气密水密抗风压性能检测方法"]},{id:"plumbing",name:"给排水工程",aliases:["给排水","给水管道","排水管道","管道安装"],process:["预留预埋","支架安装","管道安装","压力试验","冲洗消毒","通水试验"],params:["给水管试验压力为工作压力1.5倍且≥0.6MPa","排水管坡度按管径DN50~DN200取2.5%~0.8%","支架间距按管径设置","PPR热熔温度260℃"],acceptance:["管道水压试验","通球试验","灌水试验","冲洗消毒记录"],standards:["GB 50242-2002 建筑给水排水及采暖工程施工质量验收规范"]},{id:"electrical",name:"电气工程",aliases:["电气","配管","穿线","桥架","配电箱","防雷接地"],process:["预留预埋","配管桥架","穿线放缆","设备安装","绝缘测试","通电调试"],params:["管路弯曲半径≥6D(埋地≥10D)","导线绝缘电阻≥0.5MΩ","桥架支架间距≤1.5m","防雷接地电阻≤1Ω"],acceptance:["绝缘电阻测试","接地电阻测试","通电试运行","隐蔽验收记录"],standards:["GB 50303-2015 建筑电气工程施工质量验收规范"]},{id:"hvac",name:"通风空调工程",aliases:["通风空调","风管","空调","新风","保温"],process:["风管制作","吊架安装","风管安装","设备安装","严密性试验","系统调试"],params:["风管支吊架间距≤3m","中压风管漏光法检测","保温层厚度按设计","风口风速按设计值\xb110%"],acceptance:["风管严密性试验","风量平衡调试","设备单机试运行","系统联动调试"],standards:["GB 50243-2016 通风与空调工程施工质量验收规范"]},{id:"fire-protection",name:"消防工程",aliases:["消防","消火栓","喷淋","火灾报警","防排烟"],process:["预留预埋","管道安装","喷头/探测器安装","系统试压","联动调试","检测验收"],params:["喷淋试验压力≥1.4MPa","消火栓充实水柱≥10m","探测器保护半径按类别","防排烟风管严密性"],acceptance:["消防水压试验","联动调试记录","消防检测报告","竣工验收备案"],standards:["GB 50261-2017 自动喷水灭火系统施工及验收规范","GB 50166-2019 火灾自动报警系统施工及验收标准"]},{id:"weak-current",name:"弱电智能化工程",aliases:["弱电","智能化","综合布线","监控","门禁"],process:["管线预埋","桥架敷设","线缆敷设","设备安装","单机调试","系统联调"],params:["双绞线弯曲半径≥4D","光缆弯曲半径≥15D","面板安装高度距地300mm","链路测试按TIA-568"],acceptance:["链路测试报告","单机调试记录","系统联调记录","隐蔽验收"],standards:["GB 50311-2016 综合布线系统工程设计规范","GB 50339-2013 智能建筑工程质量验收规范"]},{id:"municipal-road",name:"道路工程",aliases:["道路","路基","路面","水稳","沥青"],process:["测量放线","路基处理","分层碾压","水稳摊铺","沥青摊铺","标线设施"],params:["路基压实度≥93%(路床)","水稳层7d无侧限抗压强度按设计","沥青压实度≥96%","面层平整度≤5mm(3m直尺)"],acceptance:["压实度检测","弯沉检测","取芯厚度检测","平整度实测"],standards:["CJJ 1-2008 城镇道路工程施工与质量验收规范"]},{id:"municipal-pipe",name:"市政管道工程",aliases:["管道","雨污水","沟槽","检查井","承插管"],process:["测量放线","沟槽开挖支护","基础垫层","管道安装","接口处理","闭水试验","回填"],params:["沟槽开挖放坡按土质1:0.33~1:0.5","垫层厚度按设计≥100mm","管道安装轴线偏差≤15mm","闭水试验渗水量按GB 50268","回填分层厚度≤250mm"],acceptance:["闭水试验记录","管内底高程检测","管道CCTV检测","回填压实度检测"],standards:["GB 50268-2008 给水排水管道工程施工及验收规范"]},{id:"demolition",name:"拆除工程",aliases:["拆除","墙体拆除","结构拆除","垃圾外运"],process:["方案编制","围挡隔离","管线切断","分层拆除","垃圾清运","验收交接"],params:["拆除顺序自上而下","垃圾清运日产日清","湿法作业降尘","既有保留部位防护到位"],acceptance:["拆除专项方案","既有设施保护检查","垃圾清运记录"],standards:["JGJ 147-2016 建筑拆除工程安全技术规范"]},{id:"structural-strengthen",name:"结构加固",aliases:["结构加固","粘钢","碳纤维","植筋","加大截面"],process:["设计交底","基层处理","植筋","粘贴加固","养护","检测验收"],params:["植筋锚固深度按设计≥15d","碳纤维布粘结强度≥2.5MPa","胶粘剂固化时间按产品说明","加大截面混凝土强度等级≥C25"],acceptance:["拉拔试验","粘结密实度检测","隐蔽验收记录"],standards:["GB 50367-2013 混凝土结构加固设计规范","GB 50550-2010 建筑结构加固工程施工质量验收规范"]},{id:"facade-renovation",name:"外立面整治",aliases:["外立面","立面修补","真石漆","外保温"],process:["脚手架搭设","空鼓铲除","界面处理","保温层施工","面层施工","验收落架"],params:["保温板粘贴面积≥40%","锚栓数量每平米≥6个","抗裂砂浆厚度3~5mm","面层垂直度偏差≤4mm"],acceptance:["粘结强度现场拉拔","锚栓拉拔试验","平整度实测"],standards:["GB 50411-2019 建筑节能工程施工质量验收标准","JGJ 144-2019 外墙外保温工程技术标准"]},{id:"scaffold",name:"脚手架工程",aliases:["脚手架","外架","落地架","悬挑架"],process:["方案编制","基础处理","立杆搭设","连墙件设置","安全网封闭","验收挂牌","拆除"],params:["立杆纵距≤1.5m","连墙件两步三跨","剪刀撑与地面夹角45\xb0~60\xb0","悬挑架工字钢锚固长度≥1.25倍悬挑长度","架体高于作业层1.5m"],acceptance:["架体分段验收","连墙件检查","安全网封闭检查"],standards:["JGJ 130-2011 建筑施工扣件式钢管脚手架安全技术规范"]},{id:"tower-crane",name:"起重吊装",aliases:["起重吊装","塔吊","吊装","汽车吊"],process:["方案编制","设备报验","基础验收","安装调试","检测备案","日常检查","拆除"],params:["吊装作业半径内警戒","吊索具安全系数≥6","塔吊垂直度≤4‰","风速≥6级停止吊装"],acceptance:["特种设备检测","安装验收记录","司机指挥持证检查"],standards:["JGJ 196-2010 建筑施工塔式起重机安装使用拆卸安全技术规程"]},{id:"electrical-hookup",name:"临时用电",aliases:["临电","临时用电","三级配电"],process:["方案编制","线路敷设","配电箱设置","接地保护","验收送电","日常巡检"],params:["三级配电两级漏保","漏电动作电流≤30mA/0.1s","PE线截面按相线1/2","电缆埋深≥0.7m","配电箱距地1.4~1.6m"],acceptance:["绝缘电阻测试","接地电阻测试","验收送电记录"],standards:["JGJ 46-2005 施工现场临时用电安全技术规范"]}],s=new Map,t=new Map;for(let a of r)for(let b of(t.set(a.id,a),s.set(a.name,a),a.aliases))s.set(b,a);let u=[{pattern:/安装工程|机电安装/u,cardIds:["electrical","plumbing","hvac","fire-protection","weak-current"]},{pattern:/结构加固|加固改造/u,cardIds:["structural-strengthen","concrete-works","rebar-works","formwork-works"]},{pattern:/装饰工程|装饰装修/u,cardIds:["plastering","tile-paving","ceil-partition","painting","door-window"]},{pattern:/外墙|屋面|立面/u,cardIds:["facade-renovation","waterproofing","scaffold"]},{pattern:/室外道排|道排|室外管网|雨污水/u,cardIds:["municipal-pipe","municipal-road","earthwork-excavation"]},{pattern:/智能化/u,cardIds:["weak-current"]},{pattern:/消防/u,cardIds:["fire-protection"]},{pattern:/拆除/u,cardIds:["demolition"]},{pattern:/水电改造/u,cardIds:["plumbing","electrical"]}];function v(a,b=[]){let c=new Set;for(let b of a){let a=s.get(b);for(let[d,e]of(a&&c.add(a),s))d.length>=3&&b.includes(d)&&c.add(e);for(let a of u)if(a.pattern.test(b))for(let b of a.cardIds){let a=t.get(b);a&&c.add(a)}}for(let a of r){if(c.size>=16)break;(!a.projectTypes||a.projectTypes.some(a=>b.includes(a)))&&c.add(a)}return[...c].slice(0,16)}function w(a,b,c){let d=[...a.errors.map(a=>({level:"error",message:a,suggestion:"请补充配置或资料后重新生成。"})),...a.warnings.map(a=>({level:"warning",message:a,suggestion:"建议人工确认或补充对应资料。"}))];return c.some(a=>/资料未提供|系统暂未从知识库确认/u.test(a.content))&&d.push({level:"warning",message:"存在系统暂未从知识库确认的章节内容",suggestion:"请检查项目角色配置、文件绑定顺序和事实抽取落位结果。"}),b.conflicts.length>0&&d.push(...b.conflicts.map(a=>({level:"warning",message:a,suggestion:"请根据当前模板绑定的角色、文件证据和用户要求复核取值口径。"}))),d}function x(a){let b=a.spec?.chapterRules.find(b=>b.id===a.chapter.id||b.title===a.chapter.title),c=(b?.requiredFactIds||[]).map(b=>a.spec?.factFields.find(a=>a.id===b)?.name).filter(Boolean),d=[...new Set([...a.chapter.requiredFacts,...c,...a.plan?.requiredContents||[],...a.plan?.evidenceNeeds||[],...(a.resolvedFactNeeds||[]).filter(a=>a.need.required).map(a=>a.need.label)].filter(Boolean))],e=a.roleFacts.map(({fact:a})=>`- ${a.key}:${(0,h.eE)((0,k.lG)(a.value))}`),f=(a.resolvedFactNeeds||[]).flatMap(a=>a.facts),g=a.indexedFacts||[],i=(0,l.Cr)(g,a=>(0,l.rF)(a),{maxItems:48,maxChars:12e3},"indexedFacts"),j=f.length>0?[]:i.selected.map(a=>`- ${a.key||a.fieldName||"资料事实"}:${(0,h.eE)((0,k.lG)(a.value)).slice(0,180)}${a.sourceFile?`(来源:${a.sourceFile.split("/").pop()})`:""}`),m=i.dropped.length>0?[`⚠️ ${i.dropped.length} 个低优先级事实未列出(完整列表见事实主表)`]:[],n=[...f,...g].filter(a=>/建设地点|建设规模|招标范围|计划工期|合同工期|周期要求|质量标准|合同估算|投资估算|最高投标限价|招标控制价/u.test(`${a.key||""}${a.fieldName||""}${a.fieldId||""}`)).filter((a,b,c)=>c.findIndex(b=>`${b.key||b.fieldName}:${(0,k.lG)(b.value)}`==`${a.key||a.fieldName}:${(0,k.lG)(a.value)}`)===b),o=[...new Set([...function(a){let b=new Set,c=/(?:\b[A-Z]{1,8}[\w./-]*\d[\w./-]*\b|\b\d+(?:\.\d+)?\s*(?:mm|cm|m|km|㎡|m²|m3|m³|kg|g|t|L|ml|MPa|kPa|℃|%|台|套|个|项|批|次|份|人|小时|分钟|日历天|天|周|月|年|万元|元)\b|\b\d+\s*[×xX]\s*\d+(?:\s*[×xX]\s*\d+)?\b|\b(?:GB|GB\/T|ISO|IEC|IEEE|RFC|API|DB\d*|T\/[A-Z]+)\s*[\w.-]+\b)/giu;for(let d of a){let a=(0,k.lG)(d.content).replace(/\s+/gu," ");if((!/报价明细|投标报价|单价|合价|综合单价|预留金|税率|增值税|利润|结算/u.test(a)||/合同估算价|合同估算价格|投资估算|最高投标限价|招标控制价/u.test(a))&&!/OCR|识别错误|乱码|无法确认|疑似|不确定|语义断裂/u.test(a)){for(let d of a.matchAll(c))b.add(d[0].trim());if(b.size>=40)break}}return[...b].slice(0,40)}(a.evidence),...f.map(a=>(0,k.lG)(a.value)).filter(a=>/\d|DN|φ|Φ|mm|cm|m²|m3|m³|MPa|kPa|℃|%|GB|JGJ|ISO|台|套|个|项|批|次|份|人|㎡|日历天|万元|元/iu.test(a)),...g.map(a=>(0,k.lG)(a.value)).filter(a=>/\d|DN|φ|Φ|mm|cm|m²|m3|m³|MPa|kPa|℃|%|GB|JGJ|ISO|台|套|个|项|批|次|份|人|㎡|日历天|万元|元/iu.test(a))])],p=0,q=[];for(let a of o){if(p+a.length>3e3&&q.length>=10)break;q.push(a),p+=a.length+1}let r=new Set([...a.evidence.map(a=>a.filePath),...f.map(a=>a.sourceFile),...(a.indexedFacts||[]).map(a=>a.sourceFile)]).size,s=(a.resolvedFactNeeds||[]).filter(a=>"satisfied"!==a.status&&a.need.required).map(a=>a.need.label);return["【本章事实覆盖与参数落位要求】",d.length?`必须优先覆盖的事实/要求:
117
117
  ${d.map(a=>`- ${a}`).join("\n")}`:"",e.length?`角色节点已抽取事实:
118
118
  ${e.join("\n")}`:"",n.length?`项目基础事实卡片(资料已明确,项目概况、项目基本信息表、进度和质量相关内容必须优先使用,不得输出任何占位话术):
119
119
  ${n.map(a=>`- ${a.key||a.fieldName}:${(0,h.eE)((0,k.lG)(a.value)).slice(0,220)}${a.sourceFile?`(来源:${a.sourceFile.split("/").pop()})`:""}`).join("\n")}
@@ -133,44 +133,47 @@ ${a.content}`)).slice(0,12).map(a=>a.item)]}let C=/\d+(?:\.\d+)?\s*(?:mm|cm|m|km
133
133
  小节:${a}
134
134
  必须优先落位的资料事实:
135
135
  ${g.join("\n")}
136
- 成稿要求:1)至少自然写入其中 2 条资料事实;2)如存在数字、规格、标准编号、数量、工期,必须至少原样写入 1 条;3)围绕“资料依据—对象范围—实施做法—检查验收/闭环”展开,不得写成“结合实际、按规范执行”的泛化空话;4)不得改写、换算或编造资料未提供的参数。`:""}}async function K(a){var b;let c=B(a.sectionTitle,a.chapter,a.evidence),d=J(a.sectionTitle,c),e=(0,h.ks)((0,h.QO)(a.chapter,c),{maxChars:(0,h.Pc)(a.targetWords,3500,9e3)}),f=/项目主要施工内容/u.test(a.sectionTitle)?W(a.projectContext,c):[],k=f.length>0?v(f.map(a=>a.name)):[],l=k.length>0?(b=f.map(a=>a.name),0===k.length?"":["【施工工艺知识卡】",'以下为本领域常见工作包的工艺参考。写作"施工概况/施工流程/施工方法"时:',"1) 工序链必须与本项目资料确认的对象匹配,可裁剪但不得照搬无关工序;",'2) 工艺参数仅作为专业表达参考,只有在绑定资料明确时才写入具体数值,否则写控制方向(如"按规范控制桩位偏差")而非编造数字;','3) 检测验收必须落到记录名称(如"闭水试验记录、隐蔽验收记录、静载试验报告")。',...k.map(a=>{let c=b.some(b=>a.aliases.includes(b)||b===a.name);return`${c?"【直接匹配】":"【项目类型通用】"}${a.name}:
136
+ 成稿要求:1)至少自然写入其中 2 条资料事实;2)如存在数字、规格、标准编号、数量、工期,必须至少原样写入 1 条;3)围绕“资料依据—对象范围—实施做法—检查验收/闭环”展开,不得写成“结合实际、按规范执行”的泛化空话;4)不得改写、换算或编造资料未提供的参数。`:""}}async function K(a){var b;let c=B(a.sectionTitle,a.chapter,a.evidence),d=J(a.sectionTitle,c),e=(0,h.ks)((0,h.QO)(a.chapter,c),{maxChars:(0,h.Pc)(a.targetWords,3500,9e3)}),f=/项目主要施工内容/u.test(a.sectionTitle)?Y(a.projectContext,c):[],k=f.length>0?v(f.map(a=>a.name)):[],l=k.length>0?(b=f.map(a=>a.name),0===k.length?"":["【施工工艺知识卡】",'以下为本领域常见工作包的工艺参考。写作"施工概况/施工流程/施工方法"时:',"1) 工序链必须与本项目资料确认的对象匹配,可裁剪但不得照搬无关工序;",'2) 工艺参数仅作为专业表达参考,只有在绑定资料明确时才写入具体数值,否则写控制方向(如"按规范控制桩位偏差")而非编造数字;','3) 检测验收必须落到记录名称(如"闭水试验记录、隐蔽验收记录、静载试验报告")。',...k.map(a=>{let c=b.some(b=>a.aliases.includes(b)||b===a.name);return`${c?"【直接匹配】":"【项目类型通用】"}${a.name}:
137
137
  - 工序链:${a.process.join("→")}
138
138
  - 工艺参数(参考):${a.params.join(";")}
139
139
  - 检测验收:${a.acceptance.join(";")}
140
140
  - 规范依据:${a.standards.join(";")}`})].join("\n")):"",n=[`文档模板:${a.template.name}`,`章节标题:${a.chapter.title}`,`当前二级小节:${a.sectionTitle}`,a.requirement?`用户要求:${a.requirement}`:"",a.projectContext?`上下文:
141
141
  ${a.compactProjectContext?function(a,b=2e3){let c=a.split(/\r?\n/u).map(a=>a.trim()).filter(Boolean),d=c.filter(a=>/【.+】/u.test(a)||/=/u.test(a)||/^\d+\.\s+/u.test(a)||/:\S{1,40}$/u.test(a)),e=(d.length>=8?d:c).join("\n").trim();return e.length<=b?e:`${e.slice(0,b)}
142
- (上下文已截断,完整信息见绑定材料与证据)`}(a.projectContext):a.projectContext}`:"",a.factCoverageContext||"",(0,o.av)(a.chapter.title,a.sectionTitle),d.prompt,a.roleContext,a.missingFacts.length?`需要特别补足的信息:${a.missingFacts.join("、")}`:"",a.qualityFeedback?`上轮小节未通过质量检查,必须修正:${a.qualityFeedback}`:"",/项目主要施工内容/u.test(a.sectionTitle)?"【项目主要施工内容专项结构】只能根据绑定材料中的当前项目事实识别施工对象和工作包;不得套用固定行业模板,不得复述完整工程概况,不得写“以图纸清单为准”式空话;不得使用 Markdown 表格。必须按专业工程/分部分项工程逐项展开,每项使用“#### 工作包名称”作为三级小节标题,并固定包含“施工概况:”“施工流程:”“施工方法:”三段。施工概况必须写该工作包对应的本项目作业对象、部位、规模/工程量、材料设备或系统边界,写成连贯叙述段落,不得出现“1.xxx 2.xxx”编号清单或“xxx|工程量”式清单原文罗列;施工流程必须使用“→”串联关键工序;施工方法必须写成连贯叙述,落到具体工具机具、测量/检测方法、工艺参数、材料规格、穿插关系、质量验收、复试检测和资料闭环,禁止“按规范施工”“结合实际执行”式空话,严禁把工程量清单条目原样罗列成“xxx:2台;xxx:1台;”式参数堆砌。施工方法写法样例(句式参照,内容按本项目事实替换):“配电箱采用挂墙方式安装,箱体中心距地1.5m,盘面垂直度偏差不超过1.5/1000;柜内元器件按系统图接线,导线分色标识,接线紧固力矩按规格控制;安装完成后进行绝缘电阻测试并形成通电试运行记录。”至少形成 5 个施工工作包,工作包必须来自绑定材料证据。":"",/主要分部分项工程施工方案/u.test(a.sectionTitle)?"【主要分部分项工程施工方案专项要求】每个“#### 分项工程方案”三级小节必须包含施工概况(本项目作业对象、部位、工程量)、工艺流程(用“→”串联关键工序)和施工方法(工具机具、材料规格、验收标准)。每个分项方案正文必须落位至少 4 个工艺参数(mm、MPa、间距、偏差、坡度、养护天数、试验压力、搭接长度等),参数来自绑定材料或行业通用规范值,不得编造;纯设备配置型小节必须写型号、规格、容量、数量参数;不得写“按规范施工”“结合实际执行”式空话。":"",l,`请只生成当前节内容,使用“### ${a.sectionTitle}”作为节标题;正文必须下沉到若干“#### 三级小节标题”下面,不得在 ### 标题后直接写大段正文。目标约 ${a.targetWords} 字${a.maxWords?`,最多不超过 ${a.maxWords} 字`:""}。`,"本章节结构已由系统按模板和提示词锁定;不得删除、重命名、合并或重排当前节标题;每个节下必须自然展开三级小节,三级小节承载正文。",i.KX,e?`绑定材料:
143
- ${e}`:""].filter(Boolean).join("\n\n"),p=()=>(0,j.rI)(["你是专业文档的小节生成专家。",i.rd,a.promptTexts].filter(Boolean).join("\n\n"),n,!1,{maxTokens:Math.min(ak(a.targetWords),Math.max(1800,Math.ceil(1.8*a.targetWords))),temperature:.25,signal:a.signal,diagnostics:a.diagnostics}),q=a.diagnostics?await (0,m.X6)(a.diagnostics,`section-draft:${a.chapter.id}:${a.sectionTitle}`,p):await p();if(!q||q.length<80)return;let r=(0,i.kT)((0,i.FD)(q.startsWith("### ")?q:`### ${a.sectionTitle}
142
+ (上下文已截断,完整信息见绑定材料与证据)`}(a.projectContext):a.projectContext}`:"",a.factCoverageContext||"",(0,o.av)(a.chapter.title,a.sectionTitle),d.prompt,a.roleContext,a.missingFacts.length?`需要特别补足的信息:${a.missingFacts.join("、")}`:"",a.qualityFeedback?`上轮小节未通过质量检查,必须修正:${a.qualityFeedback}`:"",/项目主要施工内容/u.test(a.sectionTitle)?"【项目主要施工内容专项结构】只能根据绑定材料中的当前项目事实识别施工对象和工作包;不得套用固定行业模板,不得复述完整工程概况,不得写“以图纸清单为准”式空话;不得使用 Markdown 表格。必须按专业工程/分部分项工程逐项展开,每项使用“#### 工作包名称”作为三级小节标题,并固定包含“施工概况:”“施工流程:”“施工方法:”三段。工作包小节必须与上下文“主要施工工作包”列表一一对应,每个工作包只允许展开一次;严禁把同一个工作包以“X工程”“X工作包”两种口径重复写成两个小节,也不得新增图谱之外的工作包小节。施工概况必须写该工作包对应的本项目作业对象、部位、规模/工程量、材料设备或系统边界,写成连贯叙述段落,不得出现“1.xxx 2.xxx”编号清单或“xxx|工程量”式清单原文罗列;施工流程必须使用“→”串联关键工序;施工方法必须写成连贯叙述,落到具体工具机具、测量/检测方法、工艺参数、材料规格、穿插关系、质量验收、复试检测和资料闭环,每个工作包施工方法必须落位至少 3 个具体工艺参数(厚度、间距、偏差、含水率、饱满度、坡度、压实度等),参数来自绑定材料或行业通用规范值,禁止“按规范施工”“结合实际执行”式空话,严禁把工程量清单条目原样罗列成“xxx:2台;xxx:1台;”式参数堆砌。施工方法写法样例(句式参照,内容按本项目事实替换):“配电箱采用挂墙方式安装,箱体中心距地1.5m,盘面垂直度偏差不超过1.5/1000;柜内元器件按系统图接线,导线分色标识,接线紧固力矩按规格控制;安装完成后进行绝缘电阻测试并形成通电试运行记录。”至少形成 5 个施工工作包,工作包必须来自绑定材料证据。":"",/主要分部分项工程施工方案/u.test(a.sectionTitle)?"【主要分部分项工程施工方案专项要求】每个“#### 分项工程方案”三级小节必须包含施工概况(本项目作业对象、部位、工程量)、工艺流程(用“→”串联关键工序)和施工方法(工具机具、材料规格、验收标准)。每个分项方案正文必须落位至少 4 个工艺参数(mm、MPa、间距、偏差、坡度、养护天数、试验压力、搭接长度等),参数来自绑定材料或行业通用规范值,不得编造;纯设备配置型小节必须写型号、规格、容量、数量参数;不得写“按规范施工”“结合实际执行”式空话。":"",l,`请只生成当前节内容,使用“### ${a.sectionTitle}”作为节标题;正文必须下沉到若干“#### 三级小节标题”下面,不得在 ### 标题后直接写大段正文。目标约 ${a.targetWords} 字${a.maxWords?`,最多不超过 ${a.maxWords} 字`:""}。`,"本章节结构已由系统按模板和提示词锁定;不得删除、重命名、合并或重排当前节标题;每个节下必须自然展开三级小节,三级小节承载正文。",i.KX,e?`绑定材料:
143
+ ${e}`:""].filter(Boolean).join("\n\n"),p=()=>(0,j.rI)(["你是专业文档的小节生成专家。",i.rd,a.promptTexts].filter(Boolean).join("\n\n"),n,!1,{maxTokens:Math.min(am(a.targetWords),Math.max(1800,Math.ceil(1.8*a.targetWords))),temperature:.25,signal:a.signal,diagnostics:a.diagnostics}),q=a.diagnostics?await (0,m.X6)(a.diagnostics,`section-draft:${a.chapter.id}:${a.sectionTitle}`,p):await p();if(!q||q.length<80)return;let r=(0,i.kT)((0,i.FD)(q.startsWith("### ")?q:`### ${a.sectionTitle}
144
144
 
145
- ${q}`,a.forbidDrawingImages)).replace(/^##\s+.*\n+/u,"").trim(),s=$(a.sectionTitle,r);if(s){if(a.diagnostics&&(a.diagnostics.llm.lastError=`${s}:${a.chapter.title} / ${a.sectionTitle}`),/项目主要施工内容/u.test(a.sectionTitle)){let b=Y(a.sectionTitle,a.projectContext,a.evidence);if(b)return b}return}let t=ad(a.sectionTitle),u=Math.min(Math.max(Math.floor(.7*a.targetWords),t),Math.max(500,a.targetWords));if(aa(a.sectionTitle)&&(0,g.V7)(r)<u){if(a.diagnostics&&(a.diagnostics.llm.lastError=`section writer 正文不足:${a.chapter.title} / ${a.sectionTitle} / ${(0,g.V7)(r)}/${u}字`),/项目主要施工内容/u.test(a.sectionTitle)){let b=Y(a.sectionTitle,a.projectContext,a.evidence);if(b)return b}return}return _(a.sectionTitle,r)}function L(a,b,c){if(/项目特点.*重点.*难点|重点.*难点.*分析/u.test(a))return["项目特点与基础事实","施工重点识别","施工难点成因与影响","应对措施与责任闭环","重点难点与施工内容对应关系"][b%5];if(/项目主要施工内容/u.test(a))return["专业工程工作包识别与施工概况","专业工程施工流程","专业工程施工方法","工程量参数与资源穿插","验收检测与资料闭环"][b%5];if(/主要分部分项工程施工方案|主要施工方法/u.test(a))return["当前项目分部分项对象","主要工艺流程与施工顺序","材料设备与参数控制","质量安全控制点","验收移交与资料闭环"][b%5];let d=a.toLowerCase(),e=/资源|材料|设备|人材机/u.test(a)?["资源配置依据","材料设备规格与数量","进场组织与保管要求","使用调配与过程核验","验收记录与动态调整"]:/施工|工艺|技术|安装|土建|结构|给排水|电气/u.test(a)||/method|technical/u.test(d)?["施工准备与技术依据","主要工艺流程","材料设备与参数控制","质量验收要点","成品保护与问题处置"]:/安全|文明|危大|风险/u.test(a)?["风险识别与控制边界","防护设施与作业条件","人员设备安全管理","检查频次与整改闭环","应急响应与资料留存"]:/质量|验收|标准/u.test(a)?["质量目标与验收依据","过程控制点","材料设备复核","检验批与验收资料","问题整改与成品保护"]:["资料依据与适用范围","对象范围与关键参数","实施方法与组织安排","质量安全控制要求","检查验收与闭环管理"];return c<=1?a:`${a}:${e[b%e.length]}`}function M(a){return a.replace(/^#{3,4}\s+.*\n+/u,"").trim()}function N(a,b){let c=a.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&"),d=b.match(RegExp(`^###\\s+(?:\\d+(?:\\.\\d+)*\\s+)?${c}\\s*\\n([\\s\\S]*?)(?=^###\\s+|^##\\s+|(?![\\s\\S]))`,"mu"));return d?d[0]:b}function O(a,b){let c=b?N(b,a):a;return/^####\s+\S+/mu.test(c)}function P(a){return(0,h.eE)(a).replace(/#{2,6}\s*[^;;。\n]+/gu,"").replace(/资料内容事实[;;::]?/gu,"").replace(/\s+/gu," ").trim()}function Q(a,b=6){return[...new Set(a)].map(a=>P(a).replace(/^[①-⑳㈠-㈩⑴-⒇]\s*/u,"").replace(/^\d+\s*[..、::))]\s*/u,"").replace(/^[一二三四五六七八九十]+\s*[、..]\s*/u,"").replace(/|\s*([^;;、,,\n]+)/gu,"($1)")).filter(a=>a&&a.length>=4).slice(0,b)}function R(a){let b=P(a);return!(!b||b.length<4||b.length>120||/资料内容事实|#{2,6}|未尽事宜|项目编号\s*[::]?\s*[一二三四五六七八九十]?$/u.test(b)||/本项目为|总建筑面积|保留现状|专业施工内容统筹|招标文件列明|招标范围还包含|具备有效的.*资质/u.test(b))&&(!((b.match(/工程|维修|改造|安装|设备/gu)||[]).length>=4)||!!/\d|㎡|m2|m²|mm|厚|验收|检测|调试|试验|复试/u.test(b))&&/\d|㎡|m2|m²|mm|厚|工程|材料|设备|系统|范围|改造|维修|加固|消防|水电|智能化|管网|屋面|门窗|验收|检测|调试/u.test(b)}function S(a){return a.split(/→|;|;|、|,|,/u).map(a=>P(a)).filter(a=>a&&a.length>=2&&a.length<=40).filter(a=>!/^按?施工准备$|^实施$|^检查$|^验收组织?$|^按规范和资料闭环$/u.test(a)).filter(a=>!/本项目为|总建筑面积|保留现状|专业施工内容统筹|招标文件列明|招标范围|未尽事宜|具备有效/u.test(a))}function T(a){let b=[];for(let c of a){let a=c.replace(/[::,,、;;||()()]/gu," ").replace(/\s+/gu," ").trim(),d=new Set(a.split(" ").filter(a=>a.length>=2)),e=new Set([...a.match(/\d+[A-Z]{2,}[A-Za-z0-9]*/gu)||[],...a.match(/\d+(?:\.\d+)?\s*(?:台|套|个|座|㎡|m2|m²|m³|m3|kg|t|根|扇|樘|块|件|组|mm)/gu)||[]]),f=a.split(" ")[0]||"",g=b.findIndex(b=>{if(b.norm.includes(a)||a.includes(b.norm))return!0;if(!([...e].some(a=>b.models.has(a))||[...b.models].some(a=>e.has(a))))return!1;let c=(a,b)=>[...a].every(a=>b.has(a));return c(d,b.tokens)||c(b.tokens,d)||f===b.norm.split(" ")[0]});if(g>=0){let f=b[g];(d.size>f.tokens.size||d.size===f.tokens.size&&c.length<f.text.length)&&(b[g]={text:c,norm:a,tokens:d,models:e})}else b.push({text:c,norm:a,tokens:d,models:e})}return b.map(a=>a.text)}function U(a,b){let c=b.map(a=>a.replace(/[::,,、;;||()()]/gu," ").replace(/\s+/gu," ").trim()),d=/安装|敷设|浇筑|砌筑|抹灰|回填|拆除|吊装|固定|连接|试验|调试|养护|压实|铺设|焊接|绑扎|涂刷|灌浆|开挖|预制|穿线|放线|找平|清底|防水|密封/u;return a.filter(a=>{if(/\d+(?:\.\d+)?\s*(?:台|套|个|座|㎡|m2|m²|m³|m3|kg|t|根|扇|樘|块|件|组)/u.test(a)||/[A-Z]+\d+/u.test(a)&&/箱|柜|泵|机组|风机|面板/u.test(a))return!1;let b=a.replace(/[::,,、;;||()()]/gu," ").replace(/\s+/gu," ").trim();return!!(b.length<=6&&d.test(b))||(b.length<4?!c.some(a=>a.includes(b)):!c.some(a=>a.includes(b)))})}function V(a){let b=P(a);return!b||(b.match(/工程|维修|改造|安装|设备|系统|管网|屋面|门窗|消防|智能化/gu)||[]).length>=5&&!/\d|㎡|m2|m²|mm|厚|验收|检测|调试|试验|复试|记录|报告|材料|设备|规格|标准|检验批/u.test(b)}function W(a,b){let c=[],d=a.match(/施工工作包结构化数据:\s*(\[[^\n]*\])/u);if(d)try{for(let a of JSON.parse(d[1])){let b=P(a.name||""),d=P(a.scope||""),e=T([...a.quantities||[],...a.materials||[],...a.methods||[]].map(P).filter(R).filter(a=>!V(a))),f=U((a.process||[]).flatMap(S),e),g=(a.acceptance||[]).map(P).filter(a=>a&&!V(a));!(!b||/^\d*徽光阁项目施工$/u.test(b))&&"徽光阁项目施工"!==b&&(!d||/资料内容事实|#{2,6}/u.test(d)||c.push({name:b,scope:d,quantities:e,process:f,acceptance:g}))}if(c.length>0)return c.slice(0,16)}catch{c.length=0}for(let b of a.split(/\r?\n/u).filter(a=>/^\d+\.\s+.+?|范围:/u.test(a))){let a=b.match(/^\d+\.\s+(.+?)|范围:(.+?)|工程量\/材料:(.+?)|流程:(.+?)|验收:(.+)$/u);if(!a)continue;let d=P(a[1]),e=P(a[2]),f=T(a[3].split(/[;;、,,]/u).map(a=>P(a)).filter(R).filter(a=>"按证据展开"!==a)),g=U(S(a[4]),f),h=a[5].split(/[;;、,,]/u).map(a=>P(a)).filter(a=>a&&"按规范和资料闭环"!==a).filter(a=>!V(a));!(!d||/^\d*徽光阁项目施工$/u.test(d))&&"徽光阁项目施工"!==d&&(!e||/资料内容事实|#{2,6}/u.test(e)||c.push({name:d,scope:e,quantities:f,process:g,acceptance:h}))}return c.slice(0,8)}function X(a,b){let c=v([a]),d=c.find(b=>b.aliases.includes(a)||b.name===a)??c.find(a=>/加固|混凝土|钢筋|砌体|抹灰|墙地砖|吊顶|涂饰|门窗|给排水|电气|通风|消防|弱电|智能化|道路|市政|拆除|立面|脚手架/u.test(a.name))??c[0],e=[];return d?(e.push(`${a}按${d.process.slice(0,8).join("→")}的工序组织施工`),d.params.length&&e.push(`关键工艺参数按${d.params.slice(0,5).join(",")}控制`),d.acceptance.length&&e.push(`质量验收执行${d.acceptance.slice(0,4).join("、")}并形成检测记录闭环`)):e.push(`${a}按施工准备→过程实施→检查验收→问题整改→资料归档组织,重点控制工具机具、工艺参数、材料规格与验收检测`),b.length&&e.push(`本工作包对应工程量与材料设备包括${b.slice(0,6).join("")}`),e.join(";")+""}function Y(a,b="",c=[]){let d=W(b,c).filter(a=>a.scope&&(a.quantities.length>0||a.process.length>0||a.acceptance.length>0));if(d.length<5)return;let e=function(a,b){let c=`${a}
146
- ${b.map(a=>(0,h.eE)((0,k.lG)(a.content))).join("\n")}`;return[...new Set([c.match(/建筑面积(?:约)?\s*[\d.]+\s*(?:㎡|m²)/u)?.[0],c.match(/地上\s*[一二三四五六七八九十\d]+\s*层/u)?.[0],c.match(/[一二三四五六七八九十\d]+\s*层框架结构/u)?.[0],c.match(/保留在营业商铺\s*[\d.]+\s*㎡/u)?.[0],c.match(/闲置空间(?:约)?\s*[\d.]+\s*㎡/u)?.[0],c.match(/计划工期\s*[\d.]+\s*日历天/u)?.[0],c.match(/质量标准[::]?\s*合格/u)?.[0]].filter(Boolean))].slice(0,6).join(",")}(b,c),f=d.map(a=>{let b=a.process.length>=3?a.process:[...new Set([...a.process,...v([a.name])[0]?.process||[]])].filter(Boolean).slice(0,10),c=[...a.quantities,...a.acceptance].filter(a=>!/本项目为|总建筑面积|保留现状|专业施工内容统筹|招标文件列明|招标范围还包含|具备有效/u.test(a)).filter(a=>!((a.match(/工程|维修|改造|安装|设备/gu)||[]).length>=4&&!/\d|㎡|m2|m²|mm|厚|验收|检测|调试|试验|复试/u.test(a))).slice(0,8);return{pkg:a,process:b,methodFacts:c}}).filter(a=>a.methodFacts.length>=2&&a.process.length>=2);if(!(f.length<5))return[`### ${a}`,"",...f.flatMap(({pkg:a,process:b,methodFacts:c})=>{let d=Q(a.quantities,6),f=Q(a.acceptance,4),g=d.length?`该工作包涉及的工程量、材料与设备包括${d.join(";")}。`:f.length?`该工作包涉及的验收与检测要求包括${f.join(";")}。`:"",h=a.scope.replace(/[。;;,,、\s]+$/u,""),i=X(a.name,[]);return[`#### ${a.name}`,"",`施工概况:${a.name}属于本项目主要施工内容,实施范围为${h}。${e?`本项目已确认的基础条件包括${e}。`:""}${g}`,"",`施工流程:${b.join("→")}。`,"",`施工方法:${i}`,""]})].join("\n")}function Z(a,b="",c=[]){let d=W(b,c).filter(a=>a.scope&&(a.quantities.length>0||a.process.length>0||a.acceptance.length>0));if(!(d.length<2))return[`### ${a}`,"",...d.slice(0,8).map(a=>{let b=Q(a.quantities,6),c=Q(a.acceptance,4),d=[...new Set(a.process)].slice(0,8),e=a.scope.replace(/[。;;,,、\s]+$/u,""),f=[`本分部分项工程实施范围为${e}。`,b.length?`涉及主要工程量与材料设备:${b.join(";")}。`:"",d.length?`施工流程按${d.join("→")}组织。`:"",`施工方法:${X(a.name,Q(a.quantities,4))}`,c.length?`验收要点:${c.join(";")}。`:"","过程控制执行样板引路、工序交接检、隐蔽验收和问题整改闭环,关键参数由责任岗位复核后签字确认。"].filter(Boolean);return`#### ${a.name}
145
+ ${q}`,a.forbidDrawingImages)).replace(/^##\s+.*\n+/u,"").trim(),s=aa(a.sectionTitle,r);if(s){if(a.diagnostics&&(a.diagnostics.llm.lastError=`${s}:${a.chapter.title} / ${a.sectionTitle}`),/项目主要施工内容/u.test(a.sectionTitle)){let b=$(a.sectionTitle,a.projectContext,a.evidence);if(b)return b}return}let t=af(a.sectionTitle),u=Math.min(Math.max(Math.floor(.7*a.targetWords),t),Math.max(500,a.targetWords));if(ac(a.sectionTitle)&&(0,g.V7)(r)<u){if(a.diagnostics&&(a.diagnostics.llm.lastError=`section writer 正文不足:${a.chapter.title} / ${a.sectionTitle} / ${(0,g.V7)(r)}/${u}字`),/项目主要施工内容/u.test(a.sectionTitle)){let b=$(a.sectionTitle,a.projectContext,a.evidence);if(b)return b}return}let w=/项目主要施工内容/u.test(a.sectionTitle)?function(a){let b=a.match(/^###\s+(?:\d+\.\d+\s+)?项目主要施工内容\s*\n([\s\S]*?)(?=^###\s+|^##\s+|(?!(\s|\S)))/mu);if(!b)return a;let c=b[0],d=c.indexOf("\n"),e=c.slice(d+1).split(/^(?=####\s+)/mu),f=[];for(let a of e){let b=a.match(/^####\s+(.+?)\s*\n([\s\S]*)$/u);if(!b)continue;let c=b[1].trim(),d=c.replace(/^\d+\.\d+\.\d+\s*/u,""),e=b[2].split(/(?=施工概况|施工流程|施工方法)/u).filter(Boolean).map(a=>O(a.replace(/^施工(?:概况|流程|方法)[::]?/u,"")));f.push({title:c,cleanTitle:d,body:b[2],isWorkPackage:/工作包\s*$/u.test(d),titleGrams:O(d),segGrams:e})}let g=f.filter(a=>a.isWorkPackage),h=f.filter(a=>!a.isWorkPackage);if(0===g.length||0===h.length)return a;let i=new Set;for(let a of g){let b,c=0;for(let d of h){if(i.has(d))continue;let e=function(a,b){let c=0;for(let d of a)b.has(d)&&(c+=1);return c}(a.titleGrams,d.titleGrams);if(e<2)continue;let f=Array.from({length:Math.min(a.segGrams.length,d.segGrams.length)},(b,c)=>(function(a,b){let c=0;for(let d of a)!P.has(d)&&b.has(d)&&(c+=1);return c})(a.segGrams[c],d.segGrams[c])).filter(a=>a>=4).length;if(f<2)continue;let g=e+2*f;g>c&&(c=g,b=d)}if(!b)continue;let d=b,e=a=>a.replace(/平方米/gu,"m2").replace(/m²|㎡/gu,"m2").replace(/立方米/gu,"m3").replace(/m³/gu,"m3").replace(/毫米/gu,"mm").replace(/\s+/gu,""),f=e(d.body),g=/\d+(?:\.\d+)?(?:平方米|立方米|毫米|m2|m3|mm|㎡|m²|m³|米|台|套|个|座|根|扇|樘|块|件|组|吨|kg|t|%)/gu,j=a=>{let b=a.match(g);return!!b&&0!==b.length&&b.every(a=>f.includes(e(a)))},k=[];for(let b of a.body.split(/[。;,,\n]/u).map(a=>a.trim()).filter(Boolean)){if(!/\d/u.test(b))continue;let a=b.replace(/^施工(?:概况|流程|方法)[::]?/u,"").trim();a&&(j(a)||k.push(a))}k.length>0&&(d.body=`${d.body.trimEnd()}${k.join("")}。
146
+ `),i.add(a)}let j=f.filter(a=>!i.has(a));if(j.length===f.length)return a;let k=j.every(a=>/^\d+\.\d+\.\d+\s+/u.test(a.title)),l=j.map((a,c)=>{let d=k?`#### ${a.title.replace(/^\d+\.\d+\.\d+\s*/u,`${b[0].split("\n")[0].match(/\d+\.\d+/u)?.[0]||"1.1"}.${c+1} `)}`:`#### ${a.cleanTitle}`;return`${d}
147
+ ${a.body.trimEnd()}`}),m=c.slice(0,d+1);return a.replace(c,`${m}${l.join("\n")}
148
+ `)}(r):r;return ab(a.sectionTitle,w)}function L(a,b,c){if(/项目特点.*重点.*难点|重点.*难点.*分析/u.test(a))return["项目特点与基础事实","施工重点识别","施工难点成因与影响","应对措施与责任闭环","重点难点与施工内容对应关系"][b%5];if(/项目主要施工内容/u.test(a))return["专业工程工作包识别与施工概况","专业工程施工流程","专业工程施工方法","工程量参数与资源穿插","验收检测与资料闭环"][b%5];if(/主要分部分项工程施工方案|主要施工方法/u.test(a))return["当前项目分部分项对象","主要工艺流程与施工顺序","材料设备与参数控制","质量安全控制点","验收移交与资料闭环"][b%5];let d=a.toLowerCase(),e=/资源|材料|设备|人材机/u.test(a)?["资源配置依据","材料设备规格与数量","进场组织与保管要求","使用调配与过程核验","验收记录与动态调整"]:/施工|工艺|技术|安装|土建|结构|给排水|电气/u.test(a)||/method|technical/u.test(d)?["施工准备与技术依据","主要工艺流程","材料设备与参数控制","质量验收要点","成品保护与问题处置"]:/安全|文明|危大|风险/u.test(a)?["风险识别与控制边界","防护设施与作业条件","人员设备安全管理","检查频次与整改闭环","应急响应与资料留存"]:/质量|验收|标准/u.test(a)?["质量目标与验收依据","过程控制点","材料设备复核","检验批与验收资料","问题整改与成品保护"]:["资料依据与适用范围","对象范围与关键参数","实施方法与组织安排","质量安全控制要求","检查验收与闭环管理"];return c<=1?a:`${a}:${e[b%e.length]}`}function M(a){return a.replace(/^#{3,4}\s+.*\n+/u,"").trim()}function N(a,b){let c=a.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&"),d=b.match(RegExp(`^###\\s+(?:\\d+(?:\\.\\d+)*\\s+)?${c}\\s*\\n([\\s\\S]*?)(?=^###\\s+|^##\\s+|(?![\\s\\S]))`,"mu"));return d?d[0]:b}function O(a){let b=new Set;for(let c of a.match(/[\u4e00-\u9fa5]{2,}/gu)||[]){if(2===c.length){b.add(c);continue}for(let a=0;a<=c.length-2;a+=1)b.add(c.slice(a,a+2))}return b}let P=new Set(["采用","安装","控制","检测","检查","验收","记录","施工","要求","完成","进行","实测","形成","复核","处理","保护","清理","准备","组织","安全","质量","部位","范围","内容","工作","项目","工程","材料","设备","分别","规范","图纸","设计","依据","确认","资料","技术","文件","标准","合格","偏差","允许","符合","确保","防止","严禁","不得","统一","配备","设置","使用","作业","过程","移交","闭环","整改","问题","发现","及时","后续","工序","环节","位置","高度","间距","严格","必须","所有","相关","执行","落实","到位","同步","相应","重点","加强","管理","隐蔽","报告","签字","填写","留置","保养","维修"]);function Q(a,b){let c=b?N(b,a):a;return/^####\s+\S+/mu.test(c)}function R(a){return(0,h.eE)(a).replace(/#{2,6}\s*[^;;。\n]+/gu,"").replace(/资料内容事实[;;::]?/gu,"").replace(/\s+/gu," ").trim()}function S(a,b=6){return[...new Set(a)].map(a=>R(a).replace(/^[①-⑳㈠-㈩⑴-⒇]\s*/u,"").replace(/^\d+\s*[..、::))]\s*/u,"").replace(/^[一二三四五六七八九十]+\s*[、..]\s*/u,"").replace(/|\s*([^;;、,,\n]+)/gu,"($1)")).filter(a=>a&&a.length>=4).slice(0,b)}function T(a){let b=R(a);return!(!b||b.length<4||b.length>120||/资料内容事实|#{2,6}|未尽事宜|项目编号\s*[::]?\s*[一二三四五六七八九十]?$/u.test(b)||/本项目为|总建筑面积|保留现状|专业施工内容统筹|招标文件列明|招标范围还包含|具备有效的.*资质/u.test(b))&&(!((b.match(/工程|维修|改造|安装|设备/gu)||[]).length>=4)||!!/\d|㎡|m2|m²|mm|厚|验收|检测|调试|试验|复试/u.test(b))&&/\d|㎡|m2|m²|mm|厚|工程|材料|设备|系统|范围|改造|维修|加固|消防|水电|智能化|管网|屋面|门窗|验收|检测|调试/u.test(b)}function U(a){return a.split(/→|;|;|、|,|,/u).map(a=>R(a)).filter(a=>a&&a.length>=2&&a.length<=40).filter(a=>!/^按?施工准备$|^实施$|^检查$|^验收组织?$|^按规范和资料闭环$/u.test(a)).filter(a=>!/本项目为|总建筑面积|保留现状|专业施工内容统筹|招标文件列明|招标范围|未尽事宜|具备有效/u.test(a))}function V(a){let b=[];for(let c of a){let a=c.replace(/[::,,、;;||()()]/gu," ").replace(/\s+/gu," ").trim(),d=new Set(a.split(" ").filter(a=>a.length>=2)),e=new Set([...a.match(/\d+[A-Z]{2,}[A-Za-z0-9]*/gu)||[],...a.match(/\d+(?:\.\d+)?\s*(?:台|套|个|座|㎡|m2|m²|m³|m3|kg|t|根|扇|樘|块|件|组|mm)/gu)||[]]),f=a.split(" ")[0]||"",g=b.findIndex(b=>{if(b.norm.includes(a)||a.includes(b.norm))return!0;if(!([...e].some(a=>b.models.has(a))||[...b.models].some(a=>e.has(a))))return!1;let c=(a,b)=>[...a].every(a=>b.has(a));return c(d,b.tokens)||c(b.tokens,d)||f===b.norm.split(" ")[0]});if(g>=0){let f=b[g];(d.size>f.tokens.size||d.size===f.tokens.size&&c.length<f.text.length)&&(b[g]={text:c,norm:a,tokens:d,models:e})}else b.push({text:c,norm:a,tokens:d,models:e})}return b.map(a=>a.text)}function W(a,b){let c=b.map(a=>a.replace(/[::,,、;;||()()]/gu," ").replace(/\s+/gu," ").trim()),d=/安装|敷设|浇筑|砌筑|抹灰|回填|拆除|吊装|固定|连接|试验|调试|养护|压实|铺设|焊接|绑扎|涂刷|灌浆|开挖|预制|穿线|放线|找平|清底|防水|密封/u;return a.filter(a=>{if(/\d+(?:\.\d+)?\s*(?:台|套|个|座|㎡|m2|m²|m³|m3|kg|t|根|扇|樘|块|件|组)/u.test(a)||/[A-Z]+\d+/u.test(a)&&/箱|柜|泵|机组|风机|面板/u.test(a))return!1;let b=a.replace(/[::,,、;;||()()]/gu," ").replace(/\s+/gu," ").trim();return!!(b.length<=6&&d.test(b))||(b.length<4?!c.some(a=>a.includes(b)):!c.some(a=>a.includes(b)))})}function X(a){let b=R(a);return!b||(b.match(/工程|维修|改造|安装|设备|系统|管网|屋面|门窗|消防|智能化/gu)||[]).length>=5&&!/\d|㎡|m2|m²|mm|厚|验收|检测|调试|试验|复试|记录|报告|材料|设备|规格|标准|检验批/u.test(b)}function Y(a,b){let c=[],d=a.match(/施工工作包结构化数据:\s*(\[[^\n]*\])/u);if(d)try{for(let a of JSON.parse(d[1])){let b=R(a.name||""),d=R(a.scope||""),e=V([...a.quantities||[],...a.materials||[],...a.methods||[]].map(R).filter(T).filter(a=>!X(a))),f=W((a.process||[]).flatMap(U),e),g=(a.acceptance||[]).map(R).filter(a=>a&&!X(a));!(!b||/^\d*徽光阁项目施工$/u.test(b))&&"徽光阁项目施工"!==b&&(!d||/资料内容事实|#{2,6}/u.test(d)||c.push({name:b,scope:d,quantities:e,process:f,acceptance:g}))}if(c.length>0)return c.slice(0,16)}catch{c.length=0}for(let b of a.split(/\r?\n/u).filter(a=>/^\d+\.\s+.+?|范围:/u.test(a))){let a=b.match(/^\d+\.\s+(.+?)|范围:(.+?)|工程量\/材料:(.+?)|流程:(.+?)|验收:(.+)$/u);if(!a)continue;let d=R(a[1]),e=R(a[2]),f=V(a[3].split(/[;;、,,]/u).map(a=>R(a)).filter(T).filter(a=>"按证据展开"!==a)),g=W(U(a[4]),f),h=a[5].split(/[;;、,,]/u).map(a=>R(a)).filter(a=>a&&"按规范和资料闭环"!==a).filter(a=>!X(a));!(!d||/^\d*徽光阁项目施工$/u.test(d))&&"徽光阁项目施工"!==d&&(!e||/资料内容事实|#{2,6}/u.test(e)||c.push({name:d,scope:e,quantities:f,process:g,acceptance:h}))}return c.slice(0,8)}function Z(a,b){let c=v([a]),d=c.find(b=>b.aliases.includes(a)||b.name===a)??c.find(a=>/加固|混凝土|钢筋|砌体|抹灰|墙地砖|吊顶|涂饰|门窗|给排水|电气|通风|消防|弱电|智能化|道路|市政|拆除|立面|脚手架/u.test(a.name))??c[0],e=[];return d?(e.push(`${a}按${d.process.slice(0,8).join("→")}的工序组织施工`),d.params.length&&e.push(`关键工艺参数按${d.params.slice(0,5).join(",")}控制`),d.acceptance.length&&e.push(`质量验收执行${d.acceptance.slice(0,4).join("、")}并形成检测记录闭环`)):e.push(`${a}按施工准备→过程实施→检查验收→问题整改→资料归档组织,重点控制工具机具、工艺参数、材料规格与验收检测`),b.length&&e.push(`本工作包对应工程量与材料设备包括${b.slice(0,6).join(";")}`),e.join(";")+"。"}function $(a,b="",c=[]){let d=Y(b,c).filter(a=>a.scope&&(a.quantities.length>0||a.process.length>0||a.acceptance.length>0));if(d.length<5)return;let e=function(a,b){let c=`${a}
149
+ ${b.map(a=>(0,h.eE)((0,k.lG)(a.content))).join("\n")}`;return[...new Set([c.match(/建筑面积(?:约)?\s*[\d.]+\s*(?:㎡|m²)/u)?.[0],c.match(/地上\s*[一二三四五六七八九十\d]+\s*层/u)?.[0],c.match(/[一二三四五六七八九十\d]+\s*层框架结构/u)?.[0],c.match(/保留在营业商铺\s*[\d.]+\s*㎡/u)?.[0],c.match(/闲置空间(?:约)?\s*[\d.]+\s*㎡/u)?.[0],c.match(/计划工期\s*[\d.]+\s*日历天/u)?.[0],c.match(/质量标准[::]?\s*合格/u)?.[0]].filter(Boolean))].slice(0,6).join(",")}(b,c),f=d.map(a=>{let b=a.process.length>=3?a.process:[...new Set([...a.process,...v([a.name])[0]?.process||[]])].filter(Boolean).slice(0,10),c=[...a.quantities,...a.acceptance].filter(a=>!/本项目为|总建筑面积|保留现状|专业施工内容统筹|招标文件列明|招标范围还包含|具备有效/u.test(a)).filter(a=>!((a.match(/工程|维修|改造|安装|设备/gu)||[]).length>=4&&!/\d|㎡|m2|m²|mm|厚|验收|检测|调试|试验|复试/u.test(a))).slice(0,8);return{pkg:a,process:b,methodFacts:c}}).filter(a=>a.methodFacts.length>=2&&a.process.length>=2);if(!(f.length<5))return[`### ${a}`,"",...f.flatMap(({pkg:a,process:b,methodFacts:c})=>{let d=S(a.quantities,6),f=S(a.acceptance,4),g=d.length?`该工作包涉及的工程量、材料与设备包括${d.join(";")}。`:f.length?`该工作包涉及的验收与检测要求包括${f.join(";")}。`:"",h=a.scope.replace(/[。;;,,、\s]+$/u,""),i=Z(a.name,[]);return[`#### ${a.name}`,"",`施工概况:${a.name}属于本项目主要施工内容,实施范围为${h}。${e?`本项目已确认的基础条件包括${e}。`:""}${g}`,"",`施工流程:${b.join("→")}。`,"",`施工方法:${i}`,""]})].join("\n")}function _(a,b="",c=[]){let d=Y(b,c).filter(a=>a.scope&&(a.quantities.length>0||a.process.length>0||a.acceptance.length>0));if(!(d.length<2))return[`### ${a}`,"",...d.slice(0,8).map(a=>{let b=S(a.quantities,6),c=S(a.acceptance,4),d=[...new Set(a.process)].slice(0,8),e=a.scope.replace(/[。;;,,、\s]+$/u,""),f=[`本分部分项工程实施范围为${e}。`,b.length?`涉及主要工程量与材料设备:${b.join(";")}。`:"",d.length?`施工流程按${d.join("→")}组织。`:"",`施工方法:${Z(a.name,S(a.quantities,4))}`,c.length?`验收要点:${c.join(";")}。`:"","过程控制执行样板引路、工序交接检、隐蔽验收和问题整改闭环,关键参数由责任岗位复核后签字确认。"].filter(Boolean);return`#### ${a.name}
147
150
 
148
- ${f.join("")}`})].join("\n\n")}function $(a,b){if(/项目主要施工内容/u.test(a)){let c=N(a,b);if(!O(b,a))return`${a} 缺少施工工作包三级小节`;if(!function(a){let b=M(a),c=(b.match(/^####\s+(?:\d+\.\d+\.\d+\s+)?[一二三四五六七八九十\d]*[、..]?\s*\S+/gmu)||[]).length||(b.match(/^[一二三四五六七八九十]+、\S+/gmu)||[]).length,d=["施工概况","施工流程","施工方法"].filter(a=>b.includes(a)).length;return c>=3&&3===d&&/→|->|测量|放线|验收|复试|检测|闭环/u.test(b)}(c))return`${a} 未按施工工作包展开`;let d=c.split(/^####\s+/gmu).slice(1).map(a=>a.trim()).filter(Boolean);if(d.some(a=>!a.includes("施工概况")||!a.includes("施工流程")||!a.includes("施工方法")))return`${a} 存在工作包结构不完整`;let e=M(c);if(/资料内容事实|(?:^#{2,3}|^#{5,6})\s+|\*\*[^*]+\*\*|未尽事宜|专业施工内容统筹|招标范围还包含|具备有效的.*资质|安全生产考核合格证书|注册建造师|联合体投标|项目经理要求|投标人资格|投标人资质|营业执照|安全生产许可证|资格审查|资格后审|中标通知书|签订合同|电子交易系统|投标保证金|评标办法|踏勘现场|投标预备会/mu.test(e))return`${a} 存在脏事实或标题污染`;if(d.some(a=>/施工流程[::][\s\S]*?(未尽事宜|本项目为|总建筑面积|保留现状|专业施工内容统筹|招标文件列明|招标范围|安全生产考核合格证书|联合体投标|注册建造师)/u.test(a)))return`${a} 存在工作包流程污染`;if(d.some(a=>{let b=a.match(/施工方法[::]([\s\S]*?)(?=\n施工|$)/u)?.[1]||"";if(/安全生产考核合格证书|联合体投标|注册建造师|投标人资格|资质要求|营业执照|安全生产许可证/u.test(b)||b.length<30)return!0;let c=(b.match(/[::]\s*\d/gu)||[]).length;return/\d/u.test(b)&&!/→|采用|组织|浇筑|铺设|焊接|绑扎|砌筑|抹灰|涂刷|敷设|压实|养护|试验|调试|测量|放线|验收|检测|复试|记录|报告|吊装|灌注|埋设|嵌缝/u.test(b)&&(c>=2||!/安装|固定|挂墙|机具/u.test(b))||(b.match(/工程|维修|改造|安装|设备/gu)||[]).length>=4&&!/\d|㎡|m2|m²|mm|厚|验收|检测|调试|试验|复试|记录|报告/u.test(b)}))return`${a} 存在工作包施工方法过弱`;let f=M(c);if(/^\s*\|.+\|\s*$/mu.test(f))return`${a} 不应使用 Markdown 表格替代工作包正文`}return""}function _(a,b){if(O(b))return b;let c=M(b);return c?`### ${a}
151
+ ${f.join("")}`})].join("\n\n")}function aa(a,b){if(/项目主要施工内容/u.test(a)){let c=N(a,b);if(!Q(b,a))return`${a} 缺少施工工作包三级小节`;if(!function(a){let b=M(a),c=(b.match(/^####\s+(?:\d+\.\d+\.\d+\s+)?[一二三四五六七八九十\d]*[、..]?\s*\S+/gmu)||[]).length||(b.match(/^[一二三四五六七八九十]+、\S+/gmu)||[]).length,d=["施工概况","施工流程","施工方法"].filter(a=>b.includes(a)).length;return c>=3&&3===d&&/→|->|测量|放线|验收|复试|检测|闭环/u.test(b)}(c))return`${a} 未按施工工作包展开`;let d=c.split(/^####\s+/gmu).slice(1).map(a=>a.trim()).filter(Boolean);if(d.some(a=>!a.includes("施工概况")||!a.includes("施工流程")||!a.includes("施工方法")))return`${a} 存在工作包结构不完整`;let e=M(c);if(/资料内容事实|(?:^#{2,3}|^#{5,6})\s+|\*\*[^*]+\*\*|未尽事宜|专业施工内容统筹|招标范围还包含|具备有效的.*资质|安全生产考核合格证书|注册建造师|联合体投标|项目经理要求|投标人资格|投标人资质|营业执照|安全生产许可证|资格审查|资格后审|中标通知书|签订合同|电子交易系统|投标保证金|评标办法|踏勘现场|投标预备会/mu.test(e))return`${a} 存在脏事实或标题污染`;if(d.some(a=>/施工流程[::][\s\S]*?(未尽事宜|本项目为|总建筑面积|保留现状|专业施工内容统筹|招标文件列明|招标范围|安全生产考核合格证书|联合体投标|注册建造师)/u.test(a)))return`${a} 存在工作包流程污染`;if(d.some(a=>{let b=a.match(/施工方法[::]([\s\S]*?)(?=\n施工|$)/u)?.[1]||"";if(/安全生产考核合格证书|联合体投标|注册建造师|投标人资格|资质要求|营业执照|安全生产许可证/u.test(b)||b.length<30)return!0;let c=(b.match(/[::]\s*\d/gu)||[]).length;return/\d/u.test(b)&&!/→|采用|组织|浇筑|铺设|焊接|绑扎|砌筑|抹灰|涂刷|敷设|压实|养护|试验|调试|测量|放线|验收|检测|复试|记录|报告|吊装|灌注|埋设|嵌缝/u.test(b)&&(c>=2||!/安装|固定|挂墙|机具/u.test(b))||(b.match(/工程|维修|改造|安装|设备/gu)||[]).length>=4&&!/\d|㎡|m2|m²|mm|厚|验收|检测|调试|试验|复试|记录|报告/u.test(b)}))return`${a} 存在工作包施工方法过弱`;let f=M(c);if(/^\s*\|.+\|\s*$/mu.test(f))return`${a} 不应使用 Markdown 表格替代工作包正文`}return""}function ab(a,b){if(Q(b))return b;let c=M(b);return c?`### ${a}
149
152
 
150
153
  #### ${a}
151
154
 
152
- ${c}`:b}function aa(a){return/项目特点.*重点.*难点|重点.*难点.*分析|项目主要施工内容|主要分部分项工程施工方案|主要施工方法|危大工程专项施工方案审批流程|原材料进场复试|见证取样/u.test(a)}function ab(a){return/项目管理组织|组织架构|岗位职责|施工部署|施工流水|交通组织|人车分流/u.test(a)}async function ac(a){var b;let c=(ab(a.sectionTitle)?[...B(a.sectionTitle,a.chapter,a.evidence),...a.evidence]:B(a.sectionTitle,a.chapter,a.evidence)).filter((a,b,c)=>c.findIndex(b=>b.filePath===a.filePath&&b.content===a.content)===b).slice(0,24),d=J(a.sectionTitle,c),e=c.map((a,b)=>`${b+1}. ${(0,h.eE)(a.content).slice(0,520)}`).filter(Boolean).join("\n"),f=a.diagnostics?.llm.lastError,g=await (0,j.rI)(["你是专业文档节内小节 Writer。只生成一个指定节,不生成整章。",i.rd,i.KX,"必须直接输出 Markdown:先输出指定 ### 节标题,再在其下生成若干 #### 三级小节承载正文;不得在 ### 后直接写大段正文;不得解释过程,不得输出资料不足、待确认、兜底等话术。"].join("\n\n"),[`章节标题:${a.chapter.title}`,`指定节标题:### ${a.sectionTitle}`,a.requirement?`用户要求:${a.requirement}`:"",(0,o.av)(a.chapter.title,a.sectionTitle),(b=a.sectionTitle,/项目特点.*重点.*难点|重点.*难点.*分析/u.test(b)?"关键小节结构要求:必须分为“项目特点分析、施工重点识别、施工难点及应对措施、重点难点与施工内容对应关系”。\n必须落位项目具体数据:项目名称、建设地点、建筑面积、层数、结构形式、装配式范围、计划工期、质量标准、施工专业范围、现场场地约束、既有管网接驳等已确认事实。\n必须用正式表格或分项清单表达:重点/难点、形成原因、影响范围、对应施工内容、控制措施、责任岗位、验收节点。":/项目主要施工内容/u.test(b)?"关键小节结构要求:必须参照优秀施工组织设计的“主要施工内容”写法,按当前项目资料识别专业工程/分部分项工作包,不得只写综合概述。\n每个工作包固定采用段落式三段:施工概况、施工流程、施工方法;不得使用 Markdown 表格,避免导出时产生表格分隔线残留。\n施工概况必须写清对象范围、工程量或规模、材料设备规格、施工部位;施工流程必须用箭头串联工序;施工方法必须写工艺做法、穿插组织、质量验收、检测复试、资料闭环。\n工作包类别必须从资料事实中识别,可覆盖但不限于结构加固、消防、装饰、水电、通风空调、弱电智能化、室外道排、屋面、立面、附属工程。":/主要分部分项工程施工方案|主要施工方法/u.test(b)?"关键小节结构要求:必须按专业工程和关键工序展开,不得只写概述流程。\n必须覆盖资料明确的专业工程范围。\n必须逐项响应“项目特点、重点、难点分析”中的控制对象,写明施工范围、施工方法、工艺流程、关键控制点、检查验收和资料闭环。":""),d.prompt,`目标正文约 ${a.targetWords} 字,最多 ${a.maxWords||Math.ceil(1.18*a.targetWords)} 字。正文必须分布在 #### 三级小节下,包含对象范围、执行措施、检查验收和资料闭环;没有精确数值时写正式过程控制,不编造数值。`,"禁止写“根据/依据招标文件、补疑澄清文件、工程量清单及设计图纸”等资料来源罗列话术;直接写项目事实、施工内容、控制措施和验收要求。",ab(a.sectionTitle)?"该小节属于施工组织设计通用管理小节:允许基于项目基础事实、招标范围、工期质量目标、现场组织要求和施工总承包管理逻辑形成正式措施,但不得编造具体姓名、品牌、型号、金额或不存在的日期。":"",a.qualityFeedback||"",e?`压缩证据:
155
+ ${c}`:b}function ac(a){return/项目特点.*重点.*难点|重点.*难点.*分析|项目主要施工内容|主要分部分项工程施工方案|主要施工方法|危大工程专项施工方案审批流程|原材料进场复试|见证取样/u.test(a)}function ad(a){return/项目管理组织|组织架构|岗位职责|施工部署|施工流水|交通组织|人车分流/u.test(a)}async function ae(a){var b;let c=(ad(a.sectionTitle)?[...B(a.sectionTitle,a.chapter,a.evidence),...a.evidence]:B(a.sectionTitle,a.chapter,a.evidence)).filter((a,b,c)=>c.findIndex(b=>b.filePath===a.filePath&&b.content===a.content)===b).slice(0,24),d=J(a.sectionTitle,c),e=c.map((a,b)=>`${b+1}. ${(0,h.eE)(a.content).slice(0,520)}`).filter(Boolean).join("\n"),f=a.diagnostics?.llm.lastError,g=await (0,j.rI)(["你是专业文档节内小节 Writer。只生成一个指定节,不生成整章。",i.rd,i.KX,"必须直接输出 Markdown:先输出指定 ### 节标题,再在其下生成若干 #### 三级小节承载正文;不得在 ### 后直接写大段正文;不得解释过程,不得输出资料不足、待确认、兜底等话术。"].join("\n\n"),[`章节标题:${a.chapter.title}`,`指定节标题:### ${a.sectionTitle}`,a.requirement?`用户要求:${a.requirement}`:"",(0,o.av)(a.chapter.title,a.sectionTitle),(b=a.sectionTitle,/项目特点.*重点.*难点|重点.*难点.*分析/u.test(b)?"关键小节结构要求:必须分为“项目特点分析、施工重点识别、施工难点及应对措施、重点难点与施工内容对应关系”。\n必须落位项目具体数据:项目名称、建设地点、建筑面积、层数、结构形式、装配式范围、计划工期、质量标准、施工专业范围、现场场地约束、既有管网接驳等已确认事实。\n必须用正式表格或分项清单表达:重点/难点、形成原因、影响范围、对应施工内容、控制措施、责任岗位、验收节点。":/项目主要施工内容/u.test(b)?"关键小节结构要求:必须参照优秀施工组织设计的“主要施工内容”写法,按当前项目资料识别专业工程/分部分项工作包,不得只写综合概述。\n每个工作包固定采用段落式三段:施工概况、施工流程、施工方法;不得使用 Markdown 表格,避免导出时产生表格分隔线残留。\n施工概况必须写清对象范围、工程量或规模、材料设备规格、施工部位;施工流程必须用箭头串联工序;施工方法必须写工艺做法、穿插组织、质量验收、检测复试、资料闭环。\n工作包类别必须从资料事实中识别,可覆盖但不限于结构加固、消防、装饰、水电、通风空调、弱电智能化、室外道排、屋面、立面、附属工程。":/主要分部分项工程施工方案|主要施工方法/u.test(b)?"关键小节结构要求:必须按专业工程和关键工序展开,不得只写概述流程。\n必须覆盖资料明确的专业工程范围。\n必须逐项响应“项目特点、重点、难点分析”中的控制对象,写明施工范围、施工方法、工艺流程、关键控制点、检查验收和资料闭环。":""),d.prompt,`目标正文约 ${a.targetWords} 字,最多 ${a.maxWords||Math.ceil(1.18*a.targetWords)} 字。正文必须分布在 #### 三级小节下,包含对象范围、执行措施、检查验收和资料闭环;没有精确数值时写正式过程控制,不编造数值。`,"禁止写“根据/依据招标文件、补疑澄清文件、工程量清单及设计图纸”等资料来源罗列话术;直接写项目事实、施工内容、控制措施和验收要求。",ad(a.sectionTitle)?"该小节属于施工组织设计通用管理小节:允许基于项目基础事实、招标范围、工期质量目标、现场组织要求和施工总承包管理逻辑形成正式措施,但不得编造具体姓名、品牌、型号、金额或不存在的日期。":"",a.qualityFeedback||"",e?`压缩证据:
153
156
  ${e}`:""].filter(Boolean).join("\n\n"),!1,{maxTokens:Math.min(4800,Math.max(2200,Math.ceil(1.65*a.targetWords))),temperature:.2,signal:a.signal,diagnostics:a.diagnostics});if(!g||g.length<40){let b=a.diagnostics?.llm.lastError;a.diagnostics&&(a.diagnostics.llm.lastError=`focused writer 无正文:${a.chapter.title} / ${a.sectionTitle} / ${b&&b!==f?b:"空响应"}`);return}let k=(0,i.kT)((0,i.FD)(g.startsWith("### ")?g:`### ${a.sectionTitle}
154
157
 
155
- ${g}`,a.forbidDrawingImages)),l=M(k);if(l.length<40){a.diagnostics&&(a.diagnostics.llm.lastError=`focused writer 正文过短:${a.chapter.title} / ${a.sectionTitle} / ${l.length}字`);return}let m=$(a.sectionTitle,k);if(m){a.diagnostics&&(a.diagnostics.llm.lastError=`focused writer ${m}:${a.chapter.title} / ${a.sectionTitle}`);return}return _(a.sectionTitle,k.replace(/^##\s+.*\n+/u,"").trim())}function ad(a){return/危大工程专项施工方案审批流程|原材料进场复试|见证取样/u.test(a)?650:/项目主要施工内容/u.test(a)?1800:/主要分部分项工程施工方案|主要施工方法/u.test(a)?1200:1500*!!/项目特点.*重点.*难点|重点.*难点.*分析/u.test(a)}async function ae(a){let b=(0,g.V7)(a.currentContent),c=ad(a.sectionTitle),d=Math.max(a.targetWords,c)-b,e=B(a.sectionTitle,a.chapter,a.evidence),f=J(a.sectionTitle,e);if(d<=Math.max(260,Math.floor(.12*a.targetWords)))return a.currentContent;let k=(0,h.ks)((0,h.QO)(a.chapter,e),{maxChars:(0,h.Pc)(Math.min(a.targetWords,2600),3500,9e3)}),l=Math.max(500,d),m=await (0,j.rI)(["你是专业文档小节补写专家。只做补写,不重写全文。",i.rd,"必须保留已有正文中的事实、参数、编号和结构;只补充缺口段落,不删除、不压缩已有内容。",i.KX,a.promptTexts].filter(Boolean).join("\n\n"),[`章节标题:${a.chapter.title}`,`当前小节:${a.sectionTitle}`,a.requirement?`用户要求:${a.requirement}`:"",a.factCoverageContext||"",(0,o.av)(a.chapter.title,a.sectionTitle),f.prompt,`当前小节约 ${b} 字,目标约 ${a.targetWords} 字,本轮补充约 ${l} 字。`,"请输出可直接追加或插入到本小节的补充段落;不要重复小节标题,不要解释生成过程;优先使用绑定资料中的事实和量化参数,不得输出“该小节围绕”等模板化占位句。",k?`绑定材料:
158
+ ${g}`,a.forbidDrawingImages)),l=M(k);if(l.length<40){a.diagnostics&&(a.diagnostics.llm.lastError=`focused writer 正文过短:${a.chapter.title} / ${a.sectionTitle} / ${l.length}字`);return}let m=aa(a.sectionTitle,k);if(m){a.diagnostics&&(a.diagnostics.llm.lastError=`focused writer ${m}:${a.chapter.title} / ${a.sectionTitle}`);return}return ab(a.sectionTitle,k.replace(/^##\s+.*\n+/u,"").trim())}function af(a){return/危大工程专项施工方案审批流程|原材料进场复试|见证取样/u.test(a)?650:/项目主要施工内容/u.test(a)?1800:/主要分部分项工程施工方案|主要施工方法/u.test(a)?1200:1500*!!/项目特点.*重点.*难点|重点.*难点.*分析/u.test(a)}async function ag(a){let b=(0,g.V7)(a.currentContent),c=af(a.sectionTitle),d=Math.max(a.targetWords,c)-b,e=B(a.sectionTitle,a.chapter,a.evidence),f=J(a.sectionTitle,e);if(d<=Math.max(260,Math.floor(.12*a.targetWords)))return a.currentContent;let k=(0,h.ks)((0,h.QO)(a.chapter,e),{maxChars:(0,h.Pc)(Math.min(a.targetWords,2600),3500,9e3)}),l=Math.max(500,d),m=await (0,j.rI)(["你是专业文档小节补写专家。只做补写,不重写全文。",i.rd,"必须保留已有正文中的事实、参数、编号和结构;只补充缺口段落,不删除、不压缩已有内容。",i.KX,a.promptTexts].filter(Boolean).join("\n\n"),[`章节标题:${a.chapter.title}`,`当前小节:${a.sectionTitle}`,a.requirement?`用户要求:${a.requirement}`:"",a.factCoverageContext||"",(0,o.av)(a.chapter.title,a.sectionTitle),f.prompt,`当前小节约 ${b} 字,目标约 ${a.targetWords} 字,本轮补充约 ${l} 字。`,"请输出可直接追加或插入到本小节的补充段落;不要重复小节标题,不要解释生成过程;优先使用绑定资料中的事实和量化参数,不得输出“该小节围绕”等模板化占位句。",k?`绑定材料:
156
159
  ${k}`:"",`已有小节正文:
157
- ${M(a.currentContent).slice(0,12e3)}`].filter(Boolean).join("\n\n"),!1,{maxTokens:ak(l),temperature:.25,signal:a.signal,diagnostics:a.diagnostics}),n=(0,i.kT)((0,i.FD)(m||"",a.forbidDrawingImages)).replace(/^#{3,4}\s+.*\n+/u,"").trim();return n?`${a.currentContent.trim()}
160
+ ${M(a.currentContent).slice(0,12e3)}`].filter(Boolean).join("\n\n"),!1,{maxTokens:am(l),temperature:.25,signal:a.signal,diagnostics:a.diagnostics}),n=(0,i.kT)((0,i.FD)(m||"",a.forbidDrawingImages)).replace(/^#{3,4}\s+.*\n+/u,"").trim();return n?`${a.currentContent.trim()}
158
161
 
159
- ${n}`:a.currentContent}function af(a){return z(a.chapter,Math.max(1e3,(0,g.V7)(a.content))).flatMap(b=>{let c=b.title.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&"),d=a.content.match(RegExp(`^#{2,4}\\s+(?:\\d+(?:\\.\\d+)*\\s+)?${c}\\s*\\n([\\s\\S]*?)(?=^#{2,4}\\s+|$)`,"mu")),e=d?.[1]||"",f=J(b.title,B(b.title,a.chapter,a.evidence)),h=function(a,b,c){if(0===c.items.length)return;let d=(0,g.V7)(b);if(d<180)return`小节正文过短,需补写专业做法和证据依据`;let e=/概况|范围|清单|图纸|设计|材料|设备|工期|质量|安全|危大|资源|验收/u.test(a),f=c.items.filter(a=>I(a.text,b)>=(a.quantified?1:2)),h=c.items.filter(a=>a.quantified&&I(a.text,b)>=1),i=e?Math.min(c.items.length,2):Math.min(c.items.length,1),j=e&&c.quantifiedCount>0?1:0;if(f.length>=i&&h.length>=j||!e&&d>=650&&/复核|检查|验收|交底|台账|整改|闭环|进场|协调|保护/u.test(b))return;let k=c.items.filter(a=>!f.includes(a)).slice(0,e?4:2).map(a=>a.text);return`知识库事实落位不足:当前小节已落位 ${f.length}/${c.items.length} 条知识库事实、${h.length}/${c.quantifiedCount} 条量化事实;建议补入:${k.join(";")}`}(b.title,e,f);return h?[`${b.title}:${h}`]:[]})}async function ag(a){if(ab(a.sectionTitle)){let b=await ac({...a,targetWords:Math.max(620,Math.floor(.75*a.targetWords)),maxWords:Math.ceil(1.22*Math.max(620,Math.floor(.75*a.targetWords))),qualityFeedback:`本小节使用 focused writer 优先成稿。必须直接输出“### ${a.sectionTitle}”及正式正文。`}).catch(b=>{a.diagnostics&&(a.diagnostics.llm.lastError=`focused writer 异常:${a.chapter.title} / ${a.sectionTitle} / ${b instanceof Error?b.message:String(b)}`)});if(b)return(0,i.kT)((0,i.FD)(b,a.forbidDrawingImages))}let b=function(a,b){if(/项目主要施工内容/u.test(a))return[{sectionTitle:a,taskTitle:a,targetWords:Math.max(b,2200),index:1,total:1}];let c=aa(a)?760:Math.max(1400,Math.floor(Number(process.env.DOCUMENT_WRITING_TASK_MAX_WORDS??2800))),d=aa(a)?Math.max(3,Math.ceil(b/c)):b>1.5*c?Math.ceil(b/c):1,e=Math.max(800,Math.ceil(b/d));return d<=1?[{sectionTitle:a,taskTitle:a,targetWords:b,index:1,total:1}]:Array.from({length:d},(b,c)=>({sectionTitle:a,taskTitle:L(a,c,d),targetWords:e,index:c+1,total:d}))}(a.sectionTitle,a.targetWords),c=[];for(let d of b){let b;(0,k.Te)(a.signal);let e=d.total>1?2:3;for(let c=0;c<e&&!b;c+=1){let f=0===c?d.targetWords:Math.max(560,Math.floor(d.targetWords*(1===c?.85:.7)));try{b=await K({...a,sectionTitle:d.sectionTitle,targetWords:f,maxWords:Math.ceil(1.18*f),qualityFeedback:[d.total>1?`这是首轮生成的主题任务 ${d.index}/${d.total},只聚焦“${d.taskTitle}”。不得重复同小节其他主题的通用表述;优先写入与本主题相关的资料事实、规格、数量、标准、检查要求和执行动作。`:a.qualityFeedback,c>0?`上一轮未生成有效正文。本轮必须直接输出“### ${a.sectionTitle}”及正式正文,优先完成可审查、可落位事实的核心内容。`:""].filter(Boolean).join("\n")})}catch{b=void 0}if(!b&&c===e-1)try{b=await ac({...a,sectionTitle:d.sectionTitle,targetWords:Math.max(520,Math.floor(.85*f)),maxWords:Math.ceil(1.18*Math.max(520,Math.floor(.85*f))),qualityFeedback:`前序 Writer 未完成。本轮使用轻量定向 Writer,只完成“${a.sectionTitle}”正式正文。`})}catch(c){a.diagnostics&&(a.diagnostics.llm.lastError=`focused writer 后置异常:${a.chapter.title} / ${d.sectionTitle} / ${c instanceof Error?c.message:String(c)}`),b=void 0}}b&&c.push(M(b))}if(0===c.length){if(/项目主要施工内容/u.test(a.sectionTitle)){let b=Y(a.sectionTitle,a.projectContext,a.evidence);if(b)return(0,i.kT)((0,i.FD)(b,a.forbidDrawingImages))}if(/主要分部分项工程施工方案|主要施工方法/u.test(a.sectionTitle)){let b=Z(a.sectionTitle,a.projectContext,a.evidence);if(b)return(0,i.kT)((0,i.FD)(b,a.forbidDrawingImages))}return}let d=`### ${a.sectionTitle}
162
+ ${n}`:a.currentContent}function ah(a){return z(a.chapter,Math.max(1e3,(0,g.V7)(a.content))).flatMap(b=>{let c=b.title.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&"),d=a.content.match(RegExp(`^#{2,4}\\s+(?:\\d+(?:\\.\\d+)*\\s+)?${c}\\s*\\n([\\s\\S]*?)(?=^#{2,4}\\s+|$)`,"mu")),e=d?.[1]||"",f=J(b.title,B(b.title,a.chapter,a.evidence)),h=function(a,b,c){if(0===c.items.length)return;let d=(0,g.V7)(b);if(d<180)return`小节正文过短,需补写专业做法和证据依据`;let e=/概况|范围|清单|图纸|设计|材料|设备|工期|质量|安全|危大|资源|验收/u.test(a),f=c.items.filter(a=>I(a.text,b)>=(a.quantified?1:2)),h=c.items.filter(a=>a.quantified&&I(a.text,b)>=1),i=e?Math.min(c.items.length,2):Math.min(c.items.length,1),j=e&&c.quantifiedCount>0?1:0;if(f.length>=i&&h.length>=j||!e&&d>=650&&/复核|检查|验收|交底|台账|整改|闭环|进场|协调|保护/u.test(b))return;let k=c.items.filter(a=>!f.includes(a)).slice(0,e?4:2).map(a=>a.text);return`知识库事实落位不足:当前小节已落位 ${f.length}/${c.items.length} 条知识库事实、${h.length}/${c.quantifiedCount} 条量化事实;建议补入:${k.join(";")}`}(b.title,e,f);return h?[`${b.title}:${h}`]:[]})}async function ai(a){if(ad(a.sectionTitle)){let b=await ae({...a,targetWords:Math.max(620,Math.floor(.75*a.targetWords)),maxWords:Math.ceil(1.22*Math.max(620,Math.floor(.75*a.targetWords))),qualityFeedback:`本小节使用 focused writer 优先成稿。必须直接输出“### ${a.sectionTitle}”及正式正文。`}).catch(b=>{a.diagnostics&&(a.diagnostics.llm.lastError=`focused writer 异常:${a.chapter.title} / ${a.sectionTitle} / ${b instanceof Error?b.message:String(b)}`)});if(b)return(0,i.kT)((0,i.FD)(b,a.forbidDrawingImages))}let b=function(a,b){if(/项目主要施工内容/u.test(a))return[{sectionTitle:a,taskTitle:a,targetWords:Math.max(b,2200),index:1,total:1}];let c=ac(a)?760:Math.max(1400,Math.floor(Number(process.env.DOCUMENT_WRITING_TASK_MAX_WORDS??2800))),d=ac(a)?Math.max(3,Math.ceil(b/c)):b>1.5*c?Math.ceil(b/c):1,e=Math.max(800,Math.ceil(b/d));return d<=1?[{sectionTitle:a,taskTitle:a,targetWords:b,index:1,total:1}]:Array.from({length:d},(b,c)=>({sectionTitle:a,taskTitle:L(a,c,d),targetWords:e,index:c+1,total:d}))}(a.sectionTitle,a.targetWords),c=[];for(let d of b){let b;(0,k.Te)(a.signal);let e=d.total>1?2:3;for(let c=0;c<e&&!b;c+=1){let f=0===c?d.targetWords:Math.max(560,Math.floor(d.targetWords*(1===c?.85:.7)));try{b=await K({...a,sectionTitle:d.sectionTitle,targetWords:f,maxWords:Math.ceil(1.18*f),qualityFeedback:[d.total>1?`这是首轮生成的主题任务 ${d.index}/${d.total},只聚焦“${d.taskTitle}”。不得重复同小节其他主题的通用表述;优先写入与本主题相关的资料事实、规格、数量、标准、检查要求和执行动作。`:a.qualityFeedback,c>0?`上一轮未生成有效正文。本轮必须直接输出“### ${a.sectionTitle}”及正式正文,优先完成可审查、可落位事实的核心内容。`:""].filter(Boolean).join("\n")})}catch{b=void 0}if(!b&&c===e-1)try{b=await ae({...a,sectionTitle:d.sectionTitle,targetWords:Math.max(520,Math.floor(.85*f)),maxWords:Math.ceil(1.18*Math.max(520,Math.floor(.85*f))),qualityFeedback:`前序 Writer 未完成。本轮使用轻量定向 Writer,只完成“${a.sectionTitle}”正式正文。`})}catch(c){a.diagnostics&&(a.diagnostics.llm.lastError=`focused writer 后置异常:${a.chapter.title} / ${d.sectionTitle} / ${c instanceof Error?c.message:String(c)}`),b=void 0}}b&&c.push(M(b))}if(0===c.length){if(/项目主要施工内容/u.test(a.sectionTitle)){let b=$(a.sectionTitle,a.projectContext,a.evidence);if(b)return(0,i.kT)((0,i.FD)(b,a.forbidDrawingImages))}if(/主要分部分项工程施工方案|主要施工方法/u.test(a.sectionTitle)){let b=_(a.sectionTitle,a.projectContext,a.evidence);if(b)return(0,i.kT)((0,i.FD)(b,a.forbidDrawingImages))}return}let d=`### ${a.sectionTitle}
160
163
 
161
- ${c.join("\n\n")}`;if(200>(0,g.V7)(M(d))){if(a.diagnostics&&(a.diagnostics.llm.lastError=`task writer 正文空壳:${a.chapter.title} / ${a.sectionTitle} / ${(0,g.V7)(M(d))}字`),/主要分部分项工程施工方案|主要施工方法/u.test(a.sectionTitle)){let b=Z(a.sectionTitle,a.projectContext,a.evidence);if(b)return(0,i.kT)((0,i.FD)(b,a.forbidDrawingImages))}return}let e=$(a.sectionTitle,d);if(e){if(a.diagnostics&&(a.diagnostics.llm.lastError=`task writer ${e}:${a.chapter.title} / ${a.sectionTitle}`),/项目主要施工内容/u.test(a.sectionTitle)){let b=Y(a.sectionTitle,a.projectContext,a.evidence);if(b)return(0,i.kT)((0,i.FD)(b,a.forbidDrawingImages))}return}return d=await ae({...a,currentContent:d,targetWords:a.targetWords}),(0,i.kT)((0,i.FD)(d,a.forbidDrawingImages))}async function ah(a){let b=z(a.chapter,a.targetWords);if((a.chapter.sections||[]).filter(Boolean).length>0)return ai(a);if(b.length<2)return;let c=b.length>=30?4:5,d=Number(process.env.DOCUMENT_SECTION_GROUP_SIZE||c),e=Math.max(2,Math.min(b.length>=30?5:6,Number.isFinite(d)?Math.floor(d):c)),f=b.some(a=>/项目主要施工内容/u.test(a.title)),h=function(a,b){let c=[],d=new Map;for(let b of a){var e;let a=(e=b.title,/工期|进度|节点|计划|纠偏|预警/u.test(e)?"工期进度":/质量|验收|三检|样板|隐蔽|复试|实测|通病/u.test(e)?"质量验收":/安全|危大|风险|隐患|应急|临边|洞口|消防|临电/u.test(e)?"安全风险":/文明|扬尘|噪声|绿色|废水|垃圾|环保|智慧/u.test(e)?"文明绿色":/劳务|工资|实名|银行|考勤|人员|岗位|组织|职责/u.test(e)?"组织劳务":/资源|材料|设备|机械|人材机|调配/u.test(e)?"资源保障":/施工|工艺|流程|顺序|穿插|部署|区段|流水/u.test(e)?"施工组织":"综合管理"),c=d.get(a)||[];c.push(b),d.set(a,c)}for(let a of d.values())for(let d=0;d<a.length;d+=b)c.push(a.slice(d,d+b));return c}(b,e),j=Number(process.env.DOCUMENT_SECTION_GROUP_CONCURRENCY||3),l=Math.max(1,Math.min(h.length,Number.isFinite(j)?Math.floor(j):3)),m=Array(h.length).fill(""),n=0,o=async c=>{let d=c.map(a=>a.title);d.join("、");let e=Math.min(c.reduce((a,b)=>a+b.targetWords,0),b.length>=30?2400:2800),h=await Promise.all(d.map(b=>a.sectionEvidenceProvider?a.sectionEvidenceProvider(b).catch(()=>[]):Promise.resolve([]))),i=[...a.evidence,...h.flat().filter(a=>!!a)].filter(a=>!/违约金额|元\/条|罚款|处罚|检查项目检查内容|清单不再单独列项/u.test(a.content.slice(0,500))).sort((a,b)=>b.score-a.score).slice(0,10).map(a=>({...a,content:a.content.slice(0,1400)})),j={...a.chapter,sections:b.length>=30?d.slice(0,12):d};if(n>=(b.length>=30?1:2))throw Error(`小节组 ${d.join("、")} 连续空响应,已阻断以避免标题占位正文`);let l=async()=>{let b=Array(c.length),e=[],f=Math.max(1,Math.min(c.length,Number(process.env.DOCUMENT_SECTION_GROUP_TASK_CONCURRENCY||2))),h=async(b,c=a.signal)=>{let d=c||a.signal,f=a.sectionEvidenceProvider?await a.sectionEvidenceProvider(b.title).catch(()=>[]):[],g=a.diagnostics?.llm.lastError;try{let c=await ag({template:a.template,chapter:a.chapter,sectionTitle:b.title,evidence:f.length?[...i,...f]:i,missingFacts:a.missingFacts,promptTexts:a.promptTexts,projectContext:a.projectContext,requirement:a.requirement,roleContext:a.roleContext||"",targetWords:Math.max(b.targetWords,900),maxWords:Math.ceil(1.16*Math.max(b.targetWords,900)),forbidDrawingImages:a.forbidDrawingImages,factCoverageContext:a.factCoverageContext,signal:d,diagnostics:a.diagnostics});if(!c){let c=a.diagnostics?.llm.lastError;e.push(`${b.title}:${c&&c!==g?c:"Writer 返回空正文"}`)}return c}catch(a){e.push(`${b.title}:${a instanceof Error?a.message:String(a)}`);return}};for(let d=0;d<c.length;d+=f){(0,k.Te)(a.signal);let e=c.slice(d,d+f);(await Promise.all(e.map(b=>h(b,a.signal)))).forEach((a,c)=>{b[d+c]=a})}let j=d.filter((a,c)=>!b[c]);if(j.length>0)throw Error(`${a.chapter.title} 小节组生成未完成:${j.map(a=>`${a}(${e.filter(b=>b.startsWith(`${a}:`)).join(";")||"未记录到具体异常"})`).join("、")}`);let l=b.filter(Boolean).join("\n\n");return{content:l,llmChars:(0,g.V7)(l)}};if(!f&&!d.some(a=>/项目主要施工内容/u.test(a)))try{let b=await y(a.template,j,i,a.missingFacts,a.promptTexts,a.projectContext,a.requirement,a.roleContext||"",{forbidDrawingImages:a.forbidDrawingImages,minWords:Math.floor(.45*e),targetWords:e,maxWords:Math.ceil(1.08*e),maxTokens:ak(Math.floor(.45*e),e),factCoverageContext:`${a.factCoverageContext||""}
164
+ ${c.join("\n\n")}`;if(200>(0,g.V7)(M(d))){if(a.diagnostics&&(a.diagnostics.llm.lastError=`task writer 正文空壳:${a.chapter.title} / ${a.sectionTitle} / ${(0,g.V7)(M(d))}字`),/主要分部分项工程施工方案|主要施工方法/u.test(a.sectionTitle)){let b=_(a.sectionTitle,a.projectContext,a.evidence);if(b)return(0,i.kT)((0,i.FD)(b,a.forbidDrawingImages))}return}let e=aa(a.sectionTitle,d);if(e){if(a.diagnostics&&(a.diagnostics.llm.lastError=`task writer ${e}:${a.chapter.title} / ${a.sectionTitle}`),/项目主要施工内容/u.test(a.sectionTitle)){let b=$(a.sectionTitle,a.projectContext,a.evidence);if(b)return(0,i.kT)((0,i.FD)(b,a.forbidDrawingImages))}return}return d=await ag({...a,currentContent:d,targetWords:a.targetWords}),(0,i.kT)((0,i.FD)(d,a.forbidDrawingImages))}async function aj(a){let b=z(a.chapter,a.targetWords);if((a.chapter.sections||[]).filter(Boolean).length>0)return ak(a);if(b.length<2)return;let c=b.length>=30?4:5,d=Number(process.env.DOCUMENT_SECTION_GROUP_SIZE||c),e=Math.max(2,Math.min(b.length>=30?5:6,Number.isFinite(d)?Math.floor(d):c)),f=b.some(a=>/项目主要施工内容/u.test(a.title)),h=function(a,b){let c=[],d=new Map;for(let b of a){var e;let a=(e=b.title,/工期|进度|节点|计划|纠偏|预警/u.test(e)?"工期进度":/质量|验收|三检|样板|隐蔽|复试|实测|通病/u.test(e)?"质量验收":/安全|危大|风险|隐患|应急|临边|洞口|消防|临电/u.test(e)?"安全风险":/文明|扬尘|噪声|绿色|废水|垃圾|环保|智慧/u.test(e)?"文明绿色":/劳务|工资|实名|银行|考勤|人员|岗位|组织|职责/u.test(e)?"组织劳务":/资源|材料|设备|机械|人材机|调配/u.test(e)?"资源保障":/施工|工艺|流程|顺序|穿插|部署|区段|流水/u.test(e)?"施工组织":"综合管理"),c=d.get(a)||[];c.push(b),d.set(a,c)}for(let a of d.values())for(let d=0;d<a.length;d+=b)c.push(a.slice(d,d+b));return c}(b,e),j=Number(process.env.DOCUMENT_SECTION_GROUP_CONCURRENCY||3),l=Math.max(1,Math.min(h.length,Number.isFinite(j)?Math.floor(j):3)),m=Array(h.length).fill(""),n=0,o=async c=>{let d=c.map(a=>a.title);d.join("、");let e=Math.min(c.reduce((a,b)=>a+b.targetWords,0),b.length>=30?2400:2800),h=await Promise.all(d.map(b=>a.sectionEvidenceProvider?a.sectionEvidenceProvider(b).catch(()=>[]):Promise.resolve([]))),i=[...a.evidence,...h.flat().filter(a=>!!a)].filter(a=>!/违约金额|元\/条|罚款|处罚|检查项目检查内容|清单不再单独列项/u.test(a.content.slice(0,500))).sort((a,b)=>b.score-a.score).slice(0,10).map(a=>({...a,content:a.content.slice(0,1400)})),j={...a.chapter,sections:b.length>=30?d.slice(0,12):d};if(n>=(b.length>=30?1:2))throw Error(`小节组 ${d.join("、")} 连续空响应,已阻断以避免标题占位正文`);let l=async()=>{let b=Array(c.length),e=[],f=Math.max(1,Math.min(c.length,Number(process.env.DOCUMENT_SECTION_GROUP_TASK_CONCURRENCY||2))),h=async(b,c=a.signal)=>{let d=c||a.signal,f=a.sectionEvidenceProvider?await a.sectionEvidenceProvider(b.title).catch(()=>[]):[],g=a.diagnostics?.llm.lastError;try{let c=await ai({template:a.template,chapter:a.chapter,sectionTitle:b.title,evidence:f.length?[...i,...f]:i,missingFacts:a.missingFacts,promptTexts:a.promptTexts,projectContext:a.projectContext,requirement:a.requirement,roleContext:a.roleContext||"",targetWords:Math.max(b.targetWords,900),maxWords:Math.ceil(1.16*Math.max(b.targetWords,900)),forbidDrawingImages:a.forbidDrawingImages,factCoverageContext:a.factCoverageContext,signal:d,diagnostics:a.diagnostics});if(!c){let c=a.diagnostics?.llm.lastError;e.push(`${b.title}:${c&&c!==g?c:"Writer 返回空正文"}`)}return c}catch(a){e.push(`${b.title}:${a instanceof Error?a.message:String(a)}`);return}};for(let d=0;d<c.length;d+=f){(0,k.Te)(a.signal);let e=c.slice(d,d+f);(await Promise.all(e.map(b=>h(b,a.signal)))).forEach((a,c)=>{b[d+c]=a})}let j=d.filter((a,c)=>!b[c]);if(j.length>0)throw Error(`${a.chapter.title} 小节组生成未完成:${j.map(a=>`${a}(${e.filter(b=>b.startsWith(`${a}:`)).join(";")||"未记录到具体异常"})`).join("、")}`);let l=b.filter(Boolean).join("\n\n");return{content:l,llmChars:(0,g.V7)(l)}};if(!f&&!d.some(a=>/项目主要施工内容/u.test(a)))try{let b=await y(a.template,j,i,a.missingFacts,a.promptTexts,a.projectContext,a.requirement,a.roleContext||"",{forbidDrawingImages:a.forbidDrawingImages,minWords:Math.floor(.45*e),targetWords:e,maxWords:Math.ceil(1.08*e),maxTokens:am(Math.floor(.45*e),e),factCoverageContext:`${a.factCoverageContext||""}
162
165
  本轮输出多个节时,每个 ### 节下必须至少有一个 #### 三级小节承载正文。`,signal:a.signal,diagnostics:a.diagnostics}),c=function(a,b){let c=b;for(let b of a){if(/项目主要施工内容/u.test(b))continue;let a=b.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&");c=c.replace(RegExp(`(^###\\s+(?:\\d+\\.\\d+\\s+)?${a}\\s*\\n)([\\s\\S]*?)(?=^###\\s+|^##\\s+|$)`,"gmu"),(a,c,d)=>/^####\\s+\\S+/mu.test(d)?`${c}${d}`:`${c}
163
166
  #### ${b}
164
167
 
165
168
  ${d.trim()}
166
169
  `)}return c}(d,b?.replace(RegExp(`^##\\s+${a.chapter.title.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&")}\\s*`,"mu"),"").trim()||""),f=(0,g.V7)(c);if(f>=Math.max(500,Math.floor(.25*e)))return{content:c,llmChars:f}}catch{}return l()};for(let b=0;b<h.length;b+=l){(0,k.Te)(a.signal);let c=h.slice(b,b+l);(await Promise.all(c.map(a=>o(a)))).forEach((a,c)=>{m[b+c]=a.content,a.llmChars<120&&(n+=1)})}let p=h.filter((a,b)=>!m[b]);if(p.length>0)throw Error(`${a.chapter.title} 小节组生成未完成:${p.flatMap(a=>a.map(a=>a.title)).join("、")}`);let q=m.filter(Boolean).join("\n\n");if(q.trim())return(0,i.kT)((0,i.FD)(`## ${a.chapter.title}
167
170
 
168
- ${q}`,a.forbidDrawingImages))}async function ai(a){let b=z(a.chapter,a.targetWords);if(b.length<2)return;let c=Number(process.env.DOCUMENT_SECTION_CONCURRENCY||b.length||1),d=Math.max(1,Math.min(b.length,Number.isFinite(c)?Math.floor(c):b.length||1)),e=Array(b.length),f=Array(b.length),g=0,h=async(c,d=!1)=>{a.onSectionProgress?.({completed:g,total:b.length,sectionTitle:c.title,phase:d?"retry":"start",partialSections:[...f]});try{let d=a.sectionEvidenceProvider?await a.sectionEvidenceProvider(c.title).catch(()=>[]):[],e={...a,evidence:d.length?[...a.evidence,...d]:a.evidence,projectContext:a.projectContext,roleContext:a.roleContext||"",factCoverageContext:a.factCoverageContext,compactProjectContext:a.compactProjectContext,sectionTitle:c.title,targetWords:c.targetWords,maxWords:a.maxWords?Math.max(c.targetWords,Math.ceil(a.maxWords/b.length)):Math.ceil(1.12*c.targetWords)},h=c.targetWords>=1400?await ag({...e,signal:a.signal}):await al({...e,signal:a.signal},function(a){let b=Number(process.env.DOCUMENT_SECTION_SUPPLEMENT_ATTEMPTS??2);return Math.max(1,Math.min(3,Number.isFinite(b)?Math.floor(b):2,a))}(b.length));return h&&(g+=1,f[c.index]=h,a.onSectionProgress?.({completed:g,total:b.length,sectionTitle:c.title,phase:"complete",partialSections:[...f]})),h}catch(b){console.warn(`[document-workflow] 小节生成失败:${a.chapter.title} / ${c.title}`,b);return}},l=b.length;for(let c=0;c<l;){(0,k.Te)(a.signal);let f=(0,j.bU)()>=2?1:d,g=b.slice(c,Math.min(l,c+f));(await Promise.all(g.map((a,b)=>h({...a,index:c+b})))).forEach((a,b)=>{e[c+b]=a}),c+=f}let m=e.map((a,b)=>a?-1:b).filter(a=>a>=0),n=m;if(n.length>0){for(let c=0;c<n.length;){(0,k.Te)(a.signal);let f=(0,j.bU)()>=2?1:d,g=n.slice(c,c+f);(await Promise.all(g.map(a=>h({...b[a],index:a},!0)))).forEach((a,b)=>{a&&(e[g[b]]=a)}),c+=f}m=e.map((a,b)=>a?-1:b).filter(a=>a>=0);for(let c=0;c<m.length;){(0,k.Te)(a.signal);let f=(0,j.bU)()>=2?1:d,g=m.slice(c,c+f);(await Promise.all(g.map(a=>h({...b[a],targetWords:Math.max(b[a].targetWords,900),index:a},!0)))).forEach((a,b)=>{a&&(e[g[b]]=a)}),c+=f}}for(let c of m=e.map((a,b)=>a?-1:b).filter(a=>a>=0)){let d=b[c].title;e[c]=/项目主要施工内容/u.test(d)?Y(d,a.projectContext,a.evidence)||void 0:/主要分部分项工程施工方案|主要施工方法/u.test(d)&&Z(d,a.projectContext,a.evidence)||function(a){let b=/项目特点.*重点.*难点|重点.*难点.*分析/u.test(a)?5:3,c=Array.from({length:b},(c,d)=>L(a,d,b)),d={0:"依据本项目已确认资料中的项目边界、工程量与设计做法,逐项明确作业对象、部位范围与过程控制目标,作为作业条件确认、技术交底和过程实施的输入。",1:"按“作业条件确认→技术交底→过程实施→自检互检→整改复查→资料归档”组织,交底覆盖到直接作业人员,实施过程留存检查记录与影像,问题整改定人、定时限、定复查。",2:"过程控制重点落到材料规格与验收、工序交接、测量复核和成品保护;关键节点由责任岗位复核后签字确认,发现偏差当日反馈、限期整改并销项。",3:"按项目质量与安全目标分解到责任岗位,执行日巡查、周复核、节点验收三级检查,形成台账与闭环记录。",4:"收尾阶段完成缺陷自查、整改销项、验收资料整理与移交,确保与总体进度计划和质量验收要求衔接。"};return[`### ${a}`,"",...c.flatMap((a,b)=>[`#### ${a}`,"",d[b%5]||d[0],""])].join("\n")}(d)}let o=e.map(a=>a||"");return(0,i.kT)((0,i.FD)(`## ${a.chapter.title}
171
+ ${q}`,a.forbidDrawingImages))}async function ak(a){let b=z(a.chapter,a.targetWords);if(b.length<2)return;let c=Number(process.env.DOCUMENT_SECTION_CONCURRENCY||b.length||1),d=Math.max(1,Math.min(b.length,Number.isFinite(c)?Math.floor(c):b.length||1)),e=Array(b.length),f=Array(b.length),g=0,h=async(c,d=!1)=>{a.onSectionProgress?.({completed:g,total:b.length,sectionTitle:c.title,phase:d?"retry":"start",partialSections:[...f]});try{let d=a.sectionEvidenceProvider?await a.sectionEvidenceProvider(c.title).catch(()=>[]):[],e={...a,evidence:d.length?[...a.evidence,...d]:a.evidence,projectContext:a.projectContext,roleContext:a.roleContext||"",factCoverageContext:a.factCoverageContext,compactProjectContext:a.compactProjectContext,sectionTitle:c.title,targetWords:c.targetWords,maxWords:a.maxWords?Math.max(c.targetWords,Math.ceil(a.maxWords/b.length)):Math.ceil(1.12*c.targetWords)},h=c.targetWords>=1400?await ai({...e,signal:a.signal}):await an({...e,signal:a.signal},function(a){let b=Number(process.env.DOCUMENT_SECTION_SUPPLEMENT_ATTEMPTS??2);return Math.max(1,Math.min(3,Number.isFinite(b)?Math.floor(b):2,a))}(b.length));return h&&(g+=1,f[c.index]=h,a.onSectionProgress?.({completed:g,total:b.length,sectionTitle:c.title,phase:"complete",partialSections:[...f]})),h}catch(b){console.warn(`[document-workflow] 小节生成失败:${a.chapter.title} / ${c.title}`,b);return}},l=b.length;for(let c=0;c<l;){(0,k.Te)(a.signal);let f=(0,j.bU)()>=2?1:d,g=b.slice(c,Math.min(l,c+f));(await Promise.all(g.map((a,b)=>h({...a,index:c+b})))).forEach((a,b)=>{e[c+b]=a}),c+=f}let m=e.map((a,b)=>a?-1:b).filter(a=>a>=0),n=m;if(n.length>0){for(let c=0;c<n.length;){(0,k.Te)(a.signal);let f=(0,j.bU)()>=2?1:d,g=n.slice(c,c+f);(await Promise.all(g.map(a=>h({...b[a],index:a},!0)))).forEach((a,b)=>{a&&(e[g[b]]=a)}),c+=f}m=e.map((a,b)=>a?-1:b).filter(a=>a>=0);for(let c=0;c<m.length;){(0,k.Te)(a.signal);let f=(0,j.bU)()>=2?1:d,g=m.slice(c,c+f);(await Promise.all(g.map(a=>h({...b[a],targetWords:Math.max(b[a].targetWords,900),index:a},!0)))).forEach((a,b)=>{a&&(e[g[b]]=a)}),c+=f}}for(let c of m=e.map((a,b)=>a?-1:b).filter(a=>a>=0)){let d=b[c].title;e[c]=/项目主要施工内容/u.test(d)?$(d,a.projectContext,a.evidence)||void 0:/主要分部分项工程施工方案|主要施工方法/u.test(d)&&_(d,a.projectContext,a.evidence)||function(a){let b=/项目特点.*重点.*难点|重点.*难点.*分析/u.test(a)?5:3,c=Array.from({length:b},(c,d)=>L(a,d,b)),d={0:"依据本项目已确认资料中的项目边界、工程量与设计做法,逐项明确作业对象、部位范围与过程控制目标,作为作业条件确认、技术交底和过程实施的输入。",1:"按“作业条件确认→技术交底→过程实施→自检互检→整改复查→资料归档”组织,交底覆盖到直接作业人员,实施过程留存检查记录与影像,问题整改定人、定时限、定复查。",2:"过程控制重点落到材料规格与验收、工序交接、测量复核和成品保护;关键节点由责任岗位复核后签字确认,发现偏差当日反馈、限期整改并销项。",3:"按项目质量与安全目标分解到责任岗位,执行日巡查、周复核、节点验收三级检查,形成台账与闭环记录。",4:"收尾阶段完成缺陷自查、整改销项、验收资料整理与移交,确保与总体进度计划和质量验收要求衔接。"};return[`### ${a}`,"",...c.flatMap((a,b)=>[`#### ${a}`,"",d[b%5]||d[0],""])].join("\n")}(d)}let o=e.map(a=>a||"");return(0,i.kT)((0,i.FD)(`## ${a.chapter.title}
169
172
 
170
- ${o.join("\n\n")}`,a.forbidDrawingImages))}function aj(a){let b=(a.chapter.sections?.length?a.chapter.sections:["资料依据与施工对象","主要控制措施","检查验收与闭环管理"]).flatMap(b=>{let c=(function(a,b,c){let d=[a,b.title,...a.split(/[、,,;;\s]+/u)].filter(a=>a.length>=2),e=c.map(a=>{let b=(0,h.eE)(a.content||"").replace(/\s+/gu," ").trim(),c=d.reduce((c,d)=>c+(b.includes(d)||(a.sectionTitle||"").includes(d)?1:0),0)+a.score;return{content:b,score:c}}).filter(a=>a.content.length>=30).sort((a,b)=>b.score-a.score),f=[];for(let a of e.slice(0,8)){for(let b of a.content.split(/[。;;\n]/u).map(a=>a.trim()).filter(Boolean))if(!(b.length<18||b.length>180||/报价|单价|税率|利润|后台|知识库|提示词|OCR|文件路径/u.test(b))&&!(/^(?:本节围绕|本小节依据|项目实施时应|实施过程中应|当前绑定资料|当前项目绑定资料)/u.test(b)||/确保各项措施与本工程实施条件相匹配/u.test(b)||/形成责任明确、过程可控、资料完整的管理闭环/u.test(b)||/确保现场管理要求与施工进度、资源组织和验收节点同步推进/u.test(b)||/^管理闭环[。;;]?$/u.test(b)||/资料参数行摘要|房建市政施工评定分离招标示范文本|我方已仔细研究|中标通知书|签订合同|履约保证金|投标函|投标人须知|招标公告|开标|评标|保证金|电子交易系统|公共资源交易|监管部门|专用账户监管协议书|资金托管专用账号/u.test(b)||/^#+\s*/u.test(b)||/^(?\d+)/u.test(b))&&(f.some(a=>a.includes(b)||b.includes(a))||f.push(b),f.length>=10))break;if(f.length>=10)break}return f})(b,a.chapter,a.evidence).slice(0,8);return 0===c.length?[]:[[`### ${b}`,"",...c.map(a=>`- ${a}。`)].join("\n")]});return 0===b.length?"":(0,i.kT)((0,i.FD)(`## ${a.chapter.title}
173
+ ${o.join("\n\n")}`,a.forbidDrawingImages))}function al(a){let b=(a.chapter.sections?.length?a.chapter.sections:["资料依据与施工对象","主要控制措施","检查验收与闭环管理"]).flatMap(b=>{let c=(function(a,b,c){let d=[a,b.title,...a.split(/[、,,;;\s]+/u)].filter(a=>a.length>=2),e=c.map(a=>{let b=(0,h.eE)(a.content||"").replace(/\s+/gu," ").trim(),c=d.reduce((c,d)=>c+(b.includes(d)||(a.sectionTitle||"").includes(d)?1:0),0)+a.score;return{content:b,score:c}}).filter(a=>a.content.length>=30).sort((a,b)=>b.score-a.score),f=[];for(let a of e.slice(0,8)){for(let b of a.content.split(/[。;;\n]/u).map(a=>a.trim()).filter(Boolean))if(!(b.length<18||b.length>180||/报价|单价|税率|利润|后台|知识库|提示词|OCR|文件路径/u.test(b))&&!(/^(?:本节围绕|本小节依据|项目实施时应|实施过程中应|当前绑定资料|当前项目绑定资料)/u.test(b)||/确保各项措施与本工程实施条件相匹配/u.test(b)||/形成责任明确、过程可控、资料完整的管理闭环/u.test(b)||/确保现场管理要求与施工进度、资源组织和验收节点同步推进/u.test(b)||/^管理闭环[。;;]?$/u.test(b)||/资料参数行摘要|房建市政施工评定分离招标示范文本|我方已仔细研究|中标通知书|签订合同|履约保证金|投标函|投标人须知|招标公告|开标|评标|保证金|电子交易系统|公共资源交易|监管部门|专用账户监管协议书|资金托管专用账号/u.test(b)||/^#+\s*/u.test(b)||/^(?\d+)/u.test(b))&&(f.some(a=>a.includes(b)||b.includes(a))||f.push(b),f.length>=10))break;if(f.length>=10)break}return f})(b,a.chapter,a.evidence).slice(0,8);return 0===c.length?[]:[[`### ${b}`,"",...c.map(a=>`- ${a}。`)].join("\n")]});return 0===b.length?"":(0,i.kT)((0,i.FD)(`## ${a.chapter.title}
171
174
 
172
- ${b.join("\n\n")}`,a.forbidDrawingImages))}function ak(a,b){return Math.min(24e3,Math.max(5e3,Math.ceil(1.45*(b||a))))}async function al(a,b){let c;for(let d=0;d<b;d+=1){let b=await K({...a,qualityFeedback:c});if(!b){c="上一轮未生成有效正文,请重新生成完整小节正文。";continue}let d=function(a,b){let c=b.replace(/^#{3,4}\s+.*\n+/u,"").split(/\r?\n/u).filter(a=>!/^\s*\|/u.test(a)).filter(a=>!/^\s*\|?\s*:?-{3,}:?/u.test(a)).join("\n"),d=(0,g.V7)(c);return d<360?`正文有效内容不足:${a} 当前约 ${d} 字`:/资料未提供|信息有限|无法确定|待补充|建议扩大本地知识库检索|以下是|本文档|本小节围绕/u.test(c)?`存在空泛或说明性话术:${a}`:void 0}(a.sectionTitle,b);if(!d)return b;c=d}}function am(a,b){let c=a.trim();if(!c)return[];let d=Math.max(1e3,Math.ceil(b)),e=[],f=0;for(;f<c.length;){let a=Math.min(f+d,c.length),b=c.lastIndexOf("\n\n",a);(b<=f||a-b>.25*d)&&(b=c.lastIndexOf("\n",a)),(b<=f||a-b>.2*d)&&(b=a),e.push(c.slice(f,b).trim()),f=b}return e.filter(Boolean)}function an(a){return"string"==typeof a?a:a&&"object"==typeof a&&"message"in a?String(a.message):JSON.stringify(a)}function ao(a){let b=Number(process.env[a]);return Number.isFinite(b)&&b>0?Math.ceil(b):0}async function ap(a,b,c){let g,h=(0,j.$y)();if(!h)return{notes:[],stage:(0,n.X5)({type:"file_understanding",roleId:"multimodal-files",status:"skipped",message:"当前模型不可用"},{subtitle:"多模态参考文件"})};try{g=(0,f.createProvider)(h.model.provider,{apiKey:h.provider.apiKey,baseUrl:h.provider.baseUrl,modelName:h.model.name,directEndpoint:h.provider.directEndpoint})}catch{return{notes:[],stage:(0,n.X5)({type:"file_understanding",roleId:"multimodal-files",status:"skipped",message:`当前模型服务 ${h.model.provider} 不支持多模态文件理解,已跳过`},{subtitle:"多模态参考文件"})}}let i=[...new Set(b.map(a=>a.filePath).filter(a=>/\.(png|jpe?g|webp|pdf|docx|xlsx)$/iu.test(a)))].slice(0,4);if(0===i.length)return{notes:[],stage:(0,n.X5)({type:"file_understanding",roleId:"multimodal-files",status:"skipped",message:"未找到多模态参考文件"},{subtitle:"多模态参考文件"})};let k=[];for(let b of i){let c=e.isAbsolute(b)?b:e.join(a,b);if(d.existsSync(c)&&!(d.statSync(c).size>8388608)&&(k.push({name:e.basename(b),buffer:d.readFileSync(c),mimeType:/\.png$/iu.test(b)?"image/png":/\.jpe?g$/iu.test(b)?"image/jpeg":/\.webp$/iu.test(b)?"image/webp":"application/pdf"}),k.length>=4))break}if(0===k.length)return{notes:[],stage:(0,n.X5)({type:"file_understanding",roleId:"multimodal-files",status:"skipped",message:"未找到可读取的多模态文件"},{subtitle:"多模态参考文件"})};try{if(c?.aborted)throw Error("aborted");let a=await g.understandFiles?.({files:k});if(!a?.length)return{notes:[],stage:(0,n.X5)({type:"file_understanding",roleId:"multimodal-files",status:"failed",message:"多模态模型未返回文件理解结果"},{subtitle:"多模态参考文件"})};return{notes:a,stage:(0,n.X5)({type:"file_understanding",roleId:"multimodal-files",status:"success",message:`已完成 ${a.length} 个多模态文件理解`},{subtitle:"多模态参考文件"})}}catch(a){return console.error("[multimodal] failed:",a),{notes:[],stage:(0,n.X5)({type:"file_understanding",roleId:"multimodal-files",status:"failed",message:"多模态文件理解失败"},{subtitle:"多模态参考文件"})}}}async function aq(a){(0,k.Te)(a.signal);let b=a.chapters.map(a=>{let b=a.content.replace(/#{1,6}\s+/gu,"").replace(/\*\*/gu,"").replace(/\|/gu," ").replace(/[\n\r]+/gu," ").trim();return`章节:${a.title}
173
- ${b.slice(0,1600)}`}).join("\n\n---\n\n"),c=function(a){let b=Math.ceil(a.totalChars/Math.max(1e3,a.chunkChars)),c="chapter"===a.phase?ao("DOCUMENT_CHAPTER_REVIEW_MAX_CHUNKS")||Math.min(Math.max(2,Math.floor(a.totalChars/a.chapterCount/4e3)),b):"global"===a.phase?ao("DOCUMENT_GLOBAL_REVIEW_MAX_CHUNKS")||Math.min(4,b):ao("DOCUMENT_FINAL_REVIEW_MAX_CHUNKS")||Math.min(6,b);return{chunks:c,budgetPerChunk:Math.ceil(a.totalChars/Math.max(1,c)),maxIssues:Math.max(4,Math.min(28,Math.ceil(2.5*c)))}}({totalChars:b.length,chapterCount:a.chapters.length,chunkChars:16e3,phase:"global"}),d=am(b,16e3).map((a,c)=>`**第 ${c+1}/${am(b,16e3).length} 部分**
175
+ ${b.join("\n\n")}`,a.forbidDrawingImages))}function am(a,b){return Math.min(24e3,Math.max(5e3,Math.ceil(1.45*(b||a))))}async function an(a,b){let c;for(let d=0;d<b;d+=1){let b=await K({...a,qualityFeedback:c});if(!b){c="上一轮未生成有效正文,请重新生成完整小节正文。";continue}let d=function(a,b){let c=b.replace(/^#{3,4}\s+.*\n+/u,"").split(/\r?\n/u).filter(a=>!/^\s*\|/u.test(a)).filter(a=>!/^\s*\|?\s*:?-{3,}:?/u.test(a)).join("\n"),d=(0,g.V7)(c);return d<360?`正文有效内容不足:${a} 当前约 ${d} 字`:/资料未提供|信息有限|无法确定|待补充|建议扩大本地知识库检索|以下是|本文档|本小节围绕/u.test(c)?`存在空泛或说明性话术:${a}`:void 0}(a.sectionTitle,b);if(!d)return b;c=d}}function ao(a,b){let c=a.trim();if(!c)return[];let d=Math.max(1e3,Math.ceil(b)),e=[],f=0;for(;f<c.length;){let a=Math.min(f+d,c.length),b=c.lastIndexOf("\n\n",a);(b<=f||a-b>.25*d)&&(b=c.lastIndexOf("\n",a)),(b<=f||a-b>.2*d)&&(b=a),e.push(c.slice(f,b).trim()),f=b}return e.filter(Boolean)}function ap(a){return"string"==typeof a?a:a&&"object"==typeof a&&"message"in a?String(a.message):JSON.stringify(a)}function aq(a){let b=Number(process.env[a]);return Number.isFinite(b)&&b>0?Math.ceil(b):0}async function ar(a,b,c){let g,h=(0,j.$y)();if(!h)return{notes:[],stage:(0,n.X5)({type:"file_understanding",roleId:"multimodal-files",status:"skipped",message:"当前模型不可用"},{subtitle:"多模态参考文件"})};try{g=(0,f.createProvider)(h.model.provider,{apiKey:h.provider.apiKey,baseUrl:h.provider.baseUrl,modelName:h.model.name,directEndpoint:h.provider.directEndpoint})}catch{return{notes:[],stage:(0,n.X5)({type:"file_understanding",roleId:"multimodal-files",status:"skipped",message:`当前模型服务 ${h.model.provider} 不支持多模态文件理解,已跳过`},{subtitle:"多模态参考文件"})}}let i=[...new Set(b.map(a=>a.filePath).filter(a=>/\.(png|jpe?g|webp|pdf|docx|xlsx)$/iu.test(a)))].slice(0,4);if(0===i.length)return{notes:[],stage:(0,n.X5)({type:"file_understanding",roleId:"multimodal-files",status:"skipped",message:"未找到多模态参考文件"},{subtitle:"多模态参考文件"})};let k=[];for(let b of i){let c=e.isAbsolute(b)?b:e.join(a,b);if(d.existsSync(c)&&!(d.statSync(c).size>8388608)&&(k.push({name:e.basename(b),buffer:d.readFileSync(c),mimeType:/\.png$/iu.test(b)?"image/png":/\.jpe?g$/iu.test(b)?"image/jpeg":/\.webp$/iu.test(b)?"image/webp":"application/pdf"}),k.length>=4))break}if(0===k.length)return{notes:[],stage:(0,n.X5)({type:"file_understanding",roleId:"multimodal-files",status:"skipped",message:"未找到可读取的多模态文件"},{subtitle:"多模态参考文件"})};try{if(c?.aborted)throw Error("aborted");let a=await g.understandFiles?.({files:k});if(!a?.length)return{notes:[],stage:(0,n.X5)({type:"file_understanding",roleId:"multimodal-files",status:"failed",message:"多模态模型未返回文件理解结果"},{subtitle:"多模态参考文件"})};return{notes:a,stage:(0,n.X5)({type:"file_understanding",roleId:"multimodal-files",status:"success",message:`已完成 ${a.length} 个多模态文件理解`},{subtitle:"多模态参考文件"})}}catch(a){return console.error("[multimodal] failed:",a),{notes:[],stage:(0,n.X5)({type:"file_understanding",roleId:"multimodal-files",status:"failed",message:"多模态文件理解失败"},{subtitle:"多模态参考文件"})}}}async function as(a){(0,k.Te)(a.signal);let b=a.chapters.map(a=>{let b=a.content.replace(/#{1,6}\s+/gu,"").replace(/\*\*/gu,"").replace(/\|/gu," ").replace(/[\n\r]+/gu," ").trim();return`章节:${a.title}
176
+ ${b.slice(0,1600)}`}).join("\n\n---\n\n"),c=function(a){let b=Math.ceil(a.totalChars/Math.max(1e3,a.chunkChars)),c="chapter"===a.phase?aq("DOCUMENT_CHAPTER_REVIEW_MAX_CHUNKS")||Math.min(Math.max(2,Math.floor(a.totalChars/a.chapterCount/4e3)),b):"global"===a.phase?aq("DOCUMENT_GLOBAL_REVIEW_MAX_CHUNKS")||Math.min(4,b):aq("DOCUMENT_FINAL_REVIEW_MAX_CHUNKS")||Math.min(6,b);return{chunks:c,budgetPerChunk:Math.ceil(a.totalChars/Math.max(1,c)),maxIssues:Math.max(4,Math.min(28,Math.ceil(2.5*c)))}}({totalChars:b.length,chapterCount:a.chapters.length,chunkChars:16e3,phase:"global"}),d=ao(b,16e3).map((a,c)=>`**第 ${c+1}/${ao(b,16e3).length} 部分**
174
177
 
175
178
  ${a}`).slice(0,c.chunks),e=[...new Set((await Promise.all(d.map(b=>(0,j.bb)("你是专业文档审查专家。检查跨章节一致性。只返回 JSON。",`${a.promptTexts}
176
179
 
@@ -178,5 +181,5 @@ ${a.projectContext||""}
178
181
 
179
182
  ${b}
180
183
 
181
- 返回 JSON:{"issues":[]}`,{maxTokens:1e3,temperature:.1,signal:a.signal,diagnostics:a.diagnostics})))).flatMap(a=>Array.isArray(a?.issues)?a.issues:[]).map(an).filter(Boolean))];return{issues:e,stage:(0,n.X5)({type:"llm_review",roleId:"global-consistency-review",status:e.length>0?"failed":"success",message:e.length>0?`全局一致性审查完成:发现 ${e.length} 个跨章问题`:"全局一致性审查通过"},{subtitle:"全局一致性审查"})}}},95734:(a,b,c)=>{c.d(b,{$y:()=>p,bU:()=>o,bb:()=>r,rI:()=>q});var d=c(95393),e=c(96770),f=c(29281),g=c(22157);let h=new Map,i=0,j=Number(process.env.DOCUMENT_LLM_MAX_CONCURRENCY),k=Number.isFinite(j)&&j>0?Math.floor(j):4,l=0,m=[];function n(){i=Math.max(0,i-1);let a=m.shift();a&&!a.settled&&(a.settled=!0,i+=1,a.resolve(n))}function o(){return l}function p(){let a=(0,f.I)().load(),b=a.models.reasoning.active||a.models.action.active||a.models.reader.active,c=[...a.models.reasoning.list,...a.models.action.list,...a.models.reader.list].find(a=>a.name===b);if(!c)return;let d=a.providers[c.provider];if(d)return{model:c,provider:d}}async function q(a,b,c=!1,f={}){var j;f.diagnostics&&(f.diagnostics.llm.calls+=1);let o=await (j=f.signal,new Promise((a,b)=>{if(i<k){i+=1,a(n);return}let c={resolve:a,reject:b,settled:!1};m.push(c);let d=()=>{if(c.settled)return;c.settled=!0;let a=m.indexOf(c);a>=0&&m.splice(a,1),b(Error("用户中止"))};if(j){if(j.aborted)return void d();j.addEventListener("abort",d,{once:!0})}}));f.diagnostics&&(f.diagnostics.llm.maxActive=Math.max(f.diagnostics.llm.maxActive,i));try{let i,j=p();if(!j)return;let{model:k,provider:m}=j,n=(0,g.c6)({provider:k.provider,model:k.name,baseUrl:m.baseUrl,directEndpoint:m.directEndpoint,protocol:m.protocol,apiKeyHash:m.apiKey?(0,g.c6)(m.apiKey):""}),o=h.get(n);o||(o=(0,d.createProvider)(function(a,b){let c=(0,e.resolveProtocol)(a,b);return"anthropic"===c?"anthropic":"google"===c?"google":"ollama"===c?"ollama":"openrouter"===c?"openrouter":"openai"}(k.provider,m),{baseUrl:m.baseUrl,apiKey:m.apiKey,modelName:k.name,directEndpoint:m.directEndpoint}),h.set(n,o));let q=k.name.toLowerCase(),r=o.capabilities?.supportsThinking===!0||/reasoning|thinking|reasoner|deepseek.*pro|o[1-9]|^r[1-9]/iu.test(q),s=o.capabilities?.maxOutputTokens||8192,t=/deepseek/iu.test(q)?Math.min(s,8192):s,u=r&&f.maxTokens?Math.min(Math.ceil(6*f.maxTokens),t):f.maxTokens,v=Symbol("empty-content"),w=async d=>{if(f.signal?.aborted)throw Error("用户中止");let e=await o.chat([{role:"system",content:c?`${a}
184
+ 返回 JSON:{"issues":[]}`,{maxTokens:1e3,temperature:.1,signal:a.signal,diagnostics:a.diagnostics})))).flatMap(a=>Array.isArray(a?.issues)?a.issues:[]).map(ap).filter(Boolean))];return{issues:e,stage:(0,n.X5)({type:"llm_review",roleId:"global-consistency-review",status:e.length>0?"failed":"success",message:e.length>0?`全局一致性审查完成:发现 ${e.length} 个跨章问题`:"全局一致性审查通过"},{subtitle:"全局一致性审查"})}}},95734:(a,b,c)=>{c.d(b,{$y:()=>p,bU:()=>o,bb:()=>r,rI:()=>q});var d=c(95393),e=c(96770),f=c(29281),g=c(22157);let h=new Map,i=0,j=Number(process.env.DOCUMENT_LLM_MAX_CONCURRENCY),k=Number.isFinite(j)&&j>0?Math.floor(j):4,l=0,m=[];function n(){i=Math.max(0,i-1);let a=m.shift();a&&!a.settled&&(a.settled=!0,i+=1,a.resolve(n))}function o(){return l}function p(){let a=(0,f.I)().load(),b=a.models.reasoning.active||a.models.action.active||a.models.reader.active,c=[...a.models.reasoning.list,...a.models.action.list,...a.models.reader.list].find(a=>a.name===b);if(!c)return;let d=a.providers[c.provider];if(d)return{model:c,provider:d}}async function q(a,b,c=!1,f={}){var j;f.diagnostics&&(f.diagnostics.llm.calls+=1);let o=await (j=f.signal,new Promise((a,b)=>{if(i<k){i+=1,a(n);return}let c={resolve:a,reject:b,settled:!1};m.push(c);let d=()=>{if(c.settled)return;c.settled=!0;let a=m.indexOf(c);a>=0&&m.splice(a,1),b(Error("用户中止"))};if(j){if(j.aborted)return void d();j.addEventListener("abort",d,{once:!0})}}));f.diagnostics&&(f.diagnostics.llm.maxActive=Math.max(f.diagnostics.llm.maxActive,i));try{let i,j=p();if(!j)return;let{model:k,provider:m}=j,n=(0,g.c6)({provider:k.provider,model:k.name,baseUrl:m.baseUrl,directEndpoint:m.directEndpoint,protocol:m.protocol,apiKeyHash:m.apiKey?(0,g.c6)(m.apiKey):""}),o=h.get(n);o||(o=(0,d.createProvider)(function(a,b){let c=(0,e.resolveProtocol)(a,b);return"anthropic"===c?"anthropic":"google"===c?"google":"ollama"===c?"ollama":"openrouter"===c?"openrouter":"openai"}(k.provider,m),{baseUrl:m.baseUrl,apiKey:m.apiKey,modelName:k.name,directEndpoint:m.directEndpoint}),h.set(n,o));let q=k.name.toLowerCase(),r=o.capabilities?.supportsThinking===!0||/reasoning|thinking|reasoner|deepseek.*pro|o[1-9]|^r[1-9]/iu.test(q),s=o.capabilities?.maxOutputTokens||8192,t=/deepseek/iu.test(q)?Math.min(s,8192):s,u=r&&f.maxTokens?Math.min(Math.ceil(6*f.maxTokens),t):f.maxTokens,v=Symbol("empty-content"),w=async d=>{if(f.signal?.aborted)throw Error("用户中止");let e=await o.chat([{role:"system",content:c?`${a}
182
185
  只返回 JSON,不要返回 markdown。`:a},{role:"user",content:b}],{temperature:f.temperature??.3*!c,maxTokens:d,signal:f.signal}),g=e.content?.trim()??"";if(g)return g;throw v};for(let a=0;a<=1;a+=1){if(f.signal?.aborted)throw Error("用户中止");try{let b=0===a?u:r?t:u,c=await w(b);return l=0,c}catch(b){if(i=b,f.signal?.aborted)throw Error("用户中止",{cause:b});if(b!==v&&!function(a){let b=a instanceof Error?`${a.name} ${a.message}`:String(a);return/connection error|econnrefused|econnreset|fetch failed|network|socket|eai_again|enotfound|etimedout|429|502|503|504|rate ?limit|too many requests|overloaded|服务繁忙|连接失败/iu.test(b)}(b)||a>=1)break;f.diagnostics&&(f.diagnostics.llm.retries+=1),await new Promise(a=>{setTimeout(a,1200)})}}l+=1,f.diagnostics&&(f.diagnostics.llm.failures+=1,f.diagnostics.llm.lastError=i instanceof Error?i.message:i===v?"空响应(思考阶段耗尽输出预算)":String(i));return}finally{o()}}async function r(a,b,c={}){let d=await q(a,b,!0,{maxTokens:c.maxTokens,temperature:c.temperature,signal:c.signal,diagnostics:c.diagnostics});if(d)try{return JSON.parse(function(a){let b=a.trim(),c=b.match(/^```(?:json)?\s*([\s\S]*?)\s*```$/iu)?.[1]?.trim();if(c)return c;let d=b.indexOf("{"),e=b.lastIndexOf("}"),f=b.indexOf("["),g=b.lastIndexOf("]"),h=d>=0&&e>d?b.slice(d,e+1):"",i=f>=0&&g>f?b.slice(f,g+1):"";return h&&(!i||d<=f)?h:i||b}(d))}catch{return}}}};