@customize-agent/server 4.17.5 → 4.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/build-manifest.json +2 -2
- package/.next/prerender-manifest.json +3 -3
- package/.next/server/chunks/208.js +1 -1
- package/.next/server/chunks/2661.js +137 -0
- package/.next/server/chunks/5284.js +4 -4
- package/.next/server/chunks/6482.js +6 -6
- package/.next/server/chunks/8661.js +1 -1
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/pages/api/assets/generated/preview.js +1 -1
- package/.next/server/pages/api/assets/generated/preview.js.nft.json +1 -1
- package/.next/server/pages/api/assets/generated.js +1 -1
- package/.next/server/pages/api/assets/generated.js.nft.json +1 -1
- package/.next/server/pages/api/documents/chapter/regenerate.js +1 -1
- package/.next/server/pages/api/documents/chapter/regenerate.js.nft.json +1 -1
- package/.next/server/pages/api/documents/export.js +1 -1
- package/.next/server/pages/api/documents/export.js.nft.json +1 -1
- package/.next/server/pages/api/documents/generate.js +2 -2
- package/.next/server/pages/api/documents/generate.js.nft.json +1 -1
- package/.next/server/pages/api/documents/generated/[id].js +1 -1
- package/.next/server/pages/api/documents/generated/[id].js.nft.json +1 -1
- package/.next/server/pages/api/documents/generated.js +1 -1
- package/.next/server/pages/api/documents/generated.js.nft.json +1 -1
- package/.next/server/pages/api/documents/templates.js +1 -1
- package/.next/server/pages/api/documents/templates.js.nft.json +1 -1
- package/.next/server/pages/asset-library.html +1 -1
- package/.next/server/pages/document-roles.html +1 -1
- package/.next/server/pages/documents.html +1 -1
- package/.next/server/pages/guide.html +1 -1
- package/.next/server/pages/index.html +1 -1
- package/.next/server/pages/knowledge/file-detail.html +1 -1
- package/.next/server/pages/knowledge/files.html +1 -1
- package/.next/server/pages/knowledge/manage.html +1 -1
- package/.next/server/pages/knowledge.html +1 -1
- package/.next/server/pages/models.html +1 -1
- package/.next/server/pages/overview.html +1 -1
- package/.next/server/pages/prompt.html +1 -1
- package/.next/server/pages/settings.html +1 -1
- package/.next/server/pages/system/logs.html +1 -1
- package/.next/server/pages/template-references.html +1 -1
- package/.next/server/pages-manifest.json +30 -30
- package/package.json +1 -1
- package/.next/server/chunks/3541.js +0 -164
- /package/.next/static/{eD1hy5SC1XLxhcWbW6t23 → 1BBOo_XAIKPfroaev-ASR}/_buildManifest.js +0 -0
- /package/.next/static/{eD1hy5SC1XLxhcWbW6t23 → 1BBOo_XAIKPfroaev-ASR}/_ssgManifest.js +0 -0
|
@@ -20,7 +20,7 @@ ${b.map(a=>`- ${a}`).join("\n")}`:""}async function t(a,b){let c=[],d=await l(b)
|
|
|
20
20
|
${(a.sections||[]).join("\n")}
|
|
21
21
|
${a.content}`).join("\n\n"),e=a.filter(a=>/项目主要施工内容|主要施工内容/u.test(`${a.title} ${(a.sections||[]).join(" ")}`)),g=/施工组织设计|施工组织|计划工期|质量标准|项目经理|工程概况/u.test(d)&&/施工/u.test(d),h=(a,b)=>{let d=b.replace(/^####\s+(?:\d+(?:\.\d+)*\s+)?(?:项目主要施工\s*内容|主要施工\s*内容)\s*\n+/mu,""),e=(d.match(/^####\s+(?:\d+(?:\.\d+)*\s+)?[一二三四五六七八九十\d]*[、..]?\s*\S+/gmu)||[]).length||(d.match(/^[一二三四五六七八九十]+、\S+/gmu)||[]).length,g=d.split(/^####\s+/gmu).slice(1).map(a=>a.trim()).filter(Boolean),h=g.filter(a=>!(0,f.Jb)(a)),i=g.filter(a=>/资料内容事实|#{2,6}\s+|\*\*[^*]+\*\*|未尽事宜|专业施工内容统筹|招标范围还包含|具备有效的.*资质/u.test(a)),j=g.filter(a=>{if(!/施工方法[::]/u.test(a))return!1;let b=a.match(/施工方法[::]([\s\S]*?)(?=\n施工|$)/u)?.[1]||"";return b.length<30||(b.match(/工程|维修|改造|安装|设备/gu)||[]).length>=4&&!/\d|㎡|m2|m²|mm|厚|验收|检测|调试|试验|复试|记录|报告/u.test(b)}),k=g.filter(a=>{let b=a.match(/施工流程[::]([\s\S]*?)(?=\n施工方法|$)/u)?.[1]||"";return/未尽事宜|本项目为|总建筑面积|保留现状|专业施工内容统筹|招标文件列明|招标范围/u.test(b)}),l=g.map(a=>(a.split("\n")[0]||"").replace(/^\d+(?:\.\d+)*\s+/u,"").replace(/工程$/u,"").replace(/[、..]/gu,"").trim()),m=[...new Set(l.filter((a,b)=>a&&l.indexOf(a)!==b))];m.length>0&&c.push({level:"error",severity:"blocker",message:`${a} 主要施工内容存在 ${m.length} 组重复专业工程小节:${m.slice(0,5).join("、")}`,suggestion:"同一专业工程只保留一个小节,将重复小节的独有内容合并后删除冗余小节,避免专业工程重复铺陈。"}),e<5&&c.push({level:"error",severity:"blocker",message:`${a} 主要施工内容专业工程不足:当前 ${e} 个,要求不少于 5 个`,suggestion:"按资料识别专业工程/分部分项工程,逐项写施工概况、施工流程、施工方法。"}),h.length>0&&c.push({level:"warning",message:`${a} 主要施工内容存在 ${h.length} 个专业工程内容要素不全(作业对象与工程量/工序顺序/施工方法至少缺一)`,suggestion:"每个专业工程需覆盖作业对象与工程量、工序安排、施工方法三方面要素,可分段用“施工概况/施工流程/施工方法”标签组织,也可自然成文,写法正确即可。"}),i.length>0&&c.push({level:"error",severity:"blocker",message:`${a} 主要施工内容存在脏事实或标题污染`,suggestion:"清理“资料内容事实”、嵌入的 ### 标题、粗体伪标题、未尽事宜、招标范围罗列等污染内容,只保留可交付正文。"}),j.length>0&&c.push({level:"error",severity:"blocker",message:`${a} 主要施工内容存在 ${j.length} 个专业工程施工方法过弱`,suggestion:"施工方法不能只是专业工程名称或专业范围罗列,必须写资料已确认的工程量、材料、检测、调试、验收或记录要求。"}),k.length>0&&c.push({level:"error",severity:"blocker",message:`${a} 主要施工内容存在 ${k.length} 个专业工程流程污染`,suggestion:"施工流程只能写工序链条,不能混入项目概况、总建筑面积、招标范围、未尽事宜等说明性事实。"}),(0,f.Z1)(b)||c.push({level:"error",severity:"blocker",message:`${a} 主要施工内容缺少工序顺序表达`,suggestion:"施工流程须有明确的工序顺序表达,形式由模型自然选择、不做统一要求:顺序词叙述(先测量放线,再基层处理,随后工序实施,然后检查验收,最后资料归档)、编号步骤、有序/无序列表或箭头链均可。"});let n=(b.match(/\d+(?:\.\d+)?\s*(?:㎡|m²|mm|cm|m|MPa|kPa|%|日历天|层|台|套|个|项|批|次|小时|年)/giu)||[]).length,o=(b.match(/工程量|材料|设备|范围|流程|验收|检测|复试|调试|隐蔽|检验批|资料|记录|系统|部位|接口|规格|标准/gu)||[]).length;(n<2||o<12)&&c.push({level:"error",severity:"blocker",message:`${a} 主要施工内容事实细度不足:参数 ${n} 项、事实细节 ${o} 项`,suggestion:"主要施工内容必须落到资料已确认的范围、工程量/材料、流程、验收和记录要求;资料未明确的工具、型号、参数不得编造。"}),/^\s*\|.+\|\s*$/mu.test(b)&&c.push({level:"error",severity:"blocker",message:`${a} 主要施工内容不应使用 Markdown 表格替代专业工程正文`,suggestion:"主要施工内容应采用三级小节和段落式专业工程写法,不使用表格承载主体内容。"})};if(0===e.length&&g){let a=x(d);return a?(h("全文",a),c):[{level:"error",severity:"blocker",message:"施工组织设计缺少“项目主要施工内容”小节",suggestion:"必须生成“### 项目主要施工内容”,并在该小节内部使用“#### 专业工程名称”逐项展开。"}]}for(let a of e){let b=x(a.content)||x(d);if(!b){c.push({level:"error",severity:"blocker",message:`${a.title} 主要施工内容小节缺失或标题结构异常`,suggestion:"必须生成“### 项目主要施工内容”,并在该小节内部使用“#### 专业工程名称”逐项展开。"});continue}h(a.title,b)}return c}function z(a){let b=[];for(let c of a){let a=`${c.title} ${(c.sections||[]).join(" ")} ${c.content}`;for(let d of o)d.pattern.test(a)&&!c.content.includes(d.title)&&b.push({level:"info",message:`${c.title} 可补充隐藏高分模块:${d.title}`,suggestion:d.prompt})}return b}function A(a){let b=a.split("\n"),c=b.findIndex(a=>/^###\s+(?:\d+(?:\.\d+)*\s+)?[^\n]*?(?:主要分部分项工程施工方案|主要施工方法)[^\n]*$/u.test(a.trim()));if(c<0)return"";let d=b.length;for(let a=c+1;a<b.length;a+=1)if(/^#{2,3}\s+/u.test(b[a].trim())){d=a;break}return b.slice(c,d).join("\n")}function B(a,b=""){let c=[],d=b||a.map(a=>`${a.title}
|
|
22
22
|
${(a.sections||[]).join("\n")}
|
|
23
|
-
${a.content}`).join("\n\n"),g=a.filter(a=>e.gG.test(`${a.title} ${(a.sections||[]).join(" ")}`));if(0===g.length)return c;let h=(a,b)=>{let d=b.split(/^####\s+/gmu).slice(1).map(a=>a.trim()).filter(Boolean);0===d.length&&(d=[...b.matchAll(/^\*\*[^*]+\*\*[\s\S]*?(?=^\*\*[^*]+\*\*|\s*$)/gmu)].map(a=>a[0].trim()).filter(Boolean));let g=d.length,h=d.filter(a=>{let b=/(?:施工)?(?:概况|范围)[::]\s*\S|工程量|作业对象|部位/u.test(a),c=e.fM.test(a)||(0,f.Z1)(a),d=/(?:施工)?方法[::]\s*\S|工艺参数|验收标准|检测|试验|记录/u.test(a);return!b||!c||!d}),i=d.filter(a=>/资料内容事实|#{2,6}\s+|\*\*[^*]+\*\*|未尽事宜|按规范施工|结合实际执行|招标范围还包含/u.test(a)),j=d.filter(a=>{let b=a.match(/(?:\*\*)?施工方法(?:\*\*)?[::]([\s\S]*?)(?=\n施工|$)/u)?.[1]||"";if(b.trim()&&(0,f.Z1)(b))return!1;let c=a.match(/(?:\*\*)?(?:施工流程|工艺流程)(?:\*\*)?[::]([\s\S]*?)(?=\n(?:施工|工艺)|$)/u)?.[1]||"";return!(0,f.Z1)(c)}),k=/\d+(?:\.\d+)?\s*(?:㎡|m²|m2|m3|m³|mm|cm|m|MPa|kPa|%|日历天|天|小时|层|台|套|个|次|kN|t|N|颗|樘|扇)/giu,l=/(?:间距|偏差|坡度|养护|搭接|试验压力|含水率|饱满度|压实度|厚度|饱满)[^\n]{0,10}\d/giu,m=d.filter(a=>(a.match(k)||[]).length+(a.match(l)||[]).length<e.Ck.minParamsPerPackage);g<e.Ck.blockerMinPackages?c.push({level:"error",severity:"blocker",message:`${a} 分部分项工程施工方案分项不足:当前 ${g} 个,要求不少于 ${e.Ck.blockerMinPackages} 个`,suggestion:"按资料识别的专业工程/分部分项工程逐项展开,每项写施工概况、工艺流程、施工方法。"}):g<e.Ck.minPackages&&c.push({level:"warning",message:`${a} 分部分项工程施工方案建议扩充:当前 ${g} 个分项方案,建议不少于 ${e.Ck.minPackages} 个`,suggestion:"优先覆盖资料明确的专业工程范围(土方、基础、主体、装饰、安装、室外等)。"}),h.length>0&&c.push({level:"warning",message:`${a} 分部分项工程施工方案存在 ${h.length} 个分项方案内容要素不全(作业对象与工程量/工序顺序/施工方法至少缺一)`,suggestion:"每个分项方案需覆盖作业对象与工程量、工序安排、施工方法三方面要素,可分段用“施工概况/工艺流程/施工方法”标签组织,也可自然成文,写法正确即可。"}),i.length>0&&c.push({level:"error",severity:"blocker",message:`${a} 分部分项工程施工方案存在脏事实或空话污染`,suggestion:"清理“资料内容事实”、嵌入的 ### 标题、粗体伪标题、未尽事宜、“按规范施工/结合实际执行”式空话,只保留可交付正文。"}),j.length>0&&c.push({level:"error",severity:"blocker",message:`${a} 分部分项工程施工方案存在 ${j.length} 个分项方案施工方法缺少工序顺序表达`,suggestion:"每个分项方案的施工方法段/施工流程段必须有明确的工序顺序表达,形式由模型自然选择(顺序词叙述、编号步骤、有序列表或箭头链均可,如“先进行基层清理,再放线定位,随后分层摊铺,然后碾压,最后做压实度检测并验收”),保证工序先后顺序清晰。"}),m.length>0&&c.push({level:"error",severity:"blocker",message:`${a} 分部分项工程施工方案存在 ${m.length} 个分项方案工艺参数不足(少于 ${e.Ck.minParamsPerPackage} 个)`,suggestion:"每个分项方案必须落位至少 4 个具体工艺参数(mm、MPa、间距、偏差、坡度、养护天数、试验压力、搭接长度等),参数来自绑定材料或行业通用规范值,不得编造。"});let n=d.filter(a=>a.replace(/\s/gu,"").length<e.Ck.minPackageChars);n.length>0&&c.push({level:"error",severity:"blocker",message:`${a} 分部分项工程施工方案存在 ${n.length} 个分项方案正文过短(少于 ${e.Ck.minPackageChars} 字)`,suggestion:"每个分项方案都要写足作业对象与工程量、工序安排、施工方法三方面要素,门窗维修、立面修补等小分项同样需要展开,不得一句话带过。"});let o=d.map(a=>a.replace(/\s/gu,"").length);o.length>1&&Math.min(...o)>0&&Math.min(...o)<Math.max(...o)*e.Ck.balanceRatio&&c.push({level:"warning",message:`${a} 分部分项工程施工方案分项深度失衡:最短分项不足最长分项三分之一`,suggestion:"参照最长分项(如拆除、结构加固)的展开深度,为偏短分项补足机具、材料规格、工艺参数与验收标准。"})};for(let a of g){let b=A(a.content)||A(d);if(!b){c.push({level:"error",severity:"blocker",message:`${a.title} 分部分项工程施工方案小节缺失或标题结构异常`,suggestion:"必须生成“### 主要分部分项工程施工方案”,并在该小节内部使用“#### 分项工程方案”逐项展开。"});continue}h(a.title,b)}return c}},92817:(a,b,c)=>{c.d(b,{hZ:()=>z,eu:()=>D,mF:()=>V,nl:()=>_,AI:()=>R,N1:()=>Z,w9:()=>w,qX:()=>B,ap:()=>r.ap,eL:()=>r.eL,Ym:()=>G,xu:()=>r.xu,AO:()=>O,uV:()=>r.uV,uQ:()=>S});var d=c(76760),e=c(78217),f=c(70933),g=c(61373),h=c(95734),i=c(22157),j=c(46482),k=c(71001),l=c(8667),m=c(40693);let n=[{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 施工现场临时用电安全技术规范"]}],o=new Map,p=new Map;for(let a of n)for(let b of(p.set(a.id,a),o.set(a.name,a),a.aliases))o.set(b,a);let q=[{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"]}];var r=c(22213),s=c(18274),t=c(41991),u=c(1358),v=c(3063);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}let x=/\b\d+(?:\.\d+)?\s*(?:日历天|小时|分钟|天|周|月|年|万元|元|台|套|个|项|批|次|份|人)(?=[。,,;;::、\s]|$)/gu;function y(a){let b=new Set;for(let c of a){let a=(0,i.lG)(c.content).replace(/\s+/gu," ");if((!/报价明细|投标报价|单价|合价|综合单价|预留金|税率|增值税|利润|结算/u.test(a)||/合同估算价|合同估算价格|投资估算|最高投标限价|招标控制价/u.test(a))&&!/OCR|识别错误|乱码|无法确认|疑似|不确定|语义断裂/u.test(a)){for(let c of a.matchAll(s._W))b.add(c[0].trim());for(let c of a.matchAll(x))b.add(c[0].trim());if(b.size>=40)break}}return[...b].slice(0,40)}function z(a){let b=a.spec?.chapterRules.find(b=>b.id===a.chapter.id||b.title===a.chapter.title),c=(b?.requiredFactIds||[]).map(b=>a.spec?.factFields.find(a=>a.id===b)?.name).filter(Boolean),d=[...new Set([...a.chapter.requiredFacts,...c,...a.plan?.requiredContents||[],...a.plan?.evidenceNeeds||[],...(a.resolvedFactNeeds||[]).filter(a=>a.need.required).map(a=>a.need.label)].filter(Boolean))],e=a.roleFacts.map(({fact:a})=>`- ${a.key}:${(0,f.eE)((0,i.lG)(a.value))}`),g=(a.resolvedFactNeeds||[]).flatMap(a=>a.facts),h=a.indexedFacts||[],j=g.length>0?[]:h.map(a=>`- ${a.key||a.fieldName||"资料事实"}:${(0,f.eE)((0,i.lG)(a.value))}${a.sourceFile?`(来源:${a.sourceFile.split("/").pop()})`:""}`),k=[...g,...h].filter(a=>/建设地点|建设规模|招标范围|计划工期|合同工期|周期要求|质量标准|合同估算|投资估算|最高投标限价|招标控制价/u.test(`${a.key||""}${a.fieldName||""}${a.fieldId||""}`)).filter((a,b,c)=>c.findIndex(b=>`${b.key||b.fieldName}:${(0,i.lG)(b.value)}`==`${a.key||a.fieldName}:${(0,i.lG)(a.value)}`)===b),l=[...new Set([...y(a.evidence),...g.map(a=>(0,i.lG)(a.value)).filter(a=>s.sv.test(a)),...h.map(a=>(0,i.lG)(a.value)).filter(a=>s.sv.test(a))])],m=new Set([...a.evidence.map(a=>a.filePath),...g.map(a=>a.sourceFile),...(a.indexedFacts||[]).map(a=>a.sourceFile)]).size,n=(a.resolvedFactNeeds||[]).filter(a=>"satisfied"!==a.status&&a.need.required).map(a=>a.need.label);return["【本章事实覆盖与参数落位要求】",d.length?`必须优先覆盖的事实/要求:
|
|
23
|
+
${a.content}`).join("\n\n"),g=a.filter(a=>e.gG.test(`${a.title} ${(a.sections||[]).join(" ")}`));if(0===g.length)return c;let h=(a,b)=>{let d=b.split(/^####\s+/gmu).slice(1).map(a=>a.trim()).filter(Boolean);0===d.length&&(d=[...b.matchAll(/^\*\*[^*]+\*\*[\s\S]*?(?=^\*\*[^*]+\*\*|\s*$)/gmu)].map(a=>a[0].trim()).filter(Boolean));let g=d.length,h=d.filter(a=>{let b=/(?:施工)?(?:概况|范围)[::]\s*\S|工程量|作业对象|部位/u.test(a),c=e.fM.test(a)||(0,f.Z1)(a),d=/(?:施工)?方法[::]\s*\S|工艺参数|验收标准|检测|试验|记录/u.test(a);return!b||!c||!d}),i=d.filter(a=>/资料内容事实|#{2,6}\s+|\*\*[^*]+\*\*|未尽事宜|按规范施工|结合实际执行|招标范围还包含/u.test(a)),j=d.filter(a=>{let b=a.match(/(?:\*\*)?施工方法(?:\*\*)?[::]([\s\S]*?)(?=\n施工|$)/u)?.[1]||"";if(b.trim()&&(0,f.Z1)(b))return!1;let c=a.match(/(?:\*\*)?(?:施工流程|工艺流程)(?:\*\*)?[::]([\s\S]*?)(?=\n(?:施工|工艺)|$)/u)?.[1]||"";return!(0,f.Z1)(c)}),k=/\d+(?:\.\d+)?\s*(?:㎡|m²|m2|m3|m³|mm|cm|m|MPa|kPa|%|日历天|天|小时|层|台|套|个|次|kN|t|N|颗|樘|扇)/giu,l=/(?:间距|偏差|坡度|养护|搭接|试验压力|含水率|饱满度|压实度|厚度|饱满)[^\n]{0,10}\d/giu,m=d.filter(a=>(a.match(k)||[]).length+(a.match(l)||[]).length<e.Ck.minParamsPerPackage);g<e.Ck.blockerMinPackages?c.push({level:"error",severity:"blocker",message:`${a} 分部分项工程施工方案分项不足:当前 ${g} 个,要求不少于 ${e.Ck.blockerMinPackages} 个`,suggestion:"按资料识别的专业工程/分部分项工程逐项展开,每项写施工概况、工艺流程、施工方法。"}):g<e.Ck.minPackages&&c.push({level:"warning",message:`${a} 分部分项工程施工方案建议扩充:当前 ${g} 个分项方案,建议不少于 ${e.Ck.minPackages} 个`,suggestion:"优先覆盖资料明确的专业工程范围(土方、基础、主体、装饰、安装、室外等)。"}),h.length>0&&c.push({level:"warning",message:`${a} 分部分项工程施工方案存在 ${h.length} 个分项方案内容要素不全(作业对象与工程量/工序顺序/施工方法至少缺一)`,suggestion:"每个分项方案需覆盖作业对象与工程量、工序安排、施工方法三方面要素,可分段用“施工概况/工艺流程/施工方法”标签组织,也可自然成文,写法正确即可。"}),i.length>0&&c.push({level:"error",severity:"blocker",message:`${a} 分部分项工程施工方案存在脏事实或空话污染`,suggestion:"清理“资料内容事实”、嵌入的 ### 标题、粗体伪标题、未尽事宜、“按规范施工/结合实际执行”式空话,只保留可交付正文。"}),j.length>0&&c.push({level:"error",severity:"blocker",message:`${a} 分部分项工程施工方案存在 ${j.length} 个分项方案施工方法缺少工序顺序表达`,suggestion:"每个分项方案的施工方法段/施工流程段必须有明确的工序顺序表达,形式由模型自然选择(顺序词叙述、编号步骤、有序列表或箭头链均可,如“先进行基层清理,再放线定位,随后分层摊铺,然后碾压,最后做压实度检测并验收”),保证工序先后顺序清晰。"}),m.length>0&&c.push({level:"error",severity:"blocker",message:`${a} 分部分项工程施工方案存在 ${m.length} 个分项方案工艺参数不足(少于 ${e.Ck.minParamsPerPackage} 个)`,suggestion:"每个分项方案必须落位至少 4 个具体工艺参数(mm、MPa、间距、偏差、坡度、养护天数、试验压力、搭接长度等),参数来自绑定材料或行业通用规范值,不得编造。"});let n=d.filter(a=>a.replace(/\s/gu,"").length<e.Ck.minPackageChars);n.length>0&&c.push({level:"error",severity:"blocker",message:`${a} 分部分项工程施工方案存在 ${n.length} 个分项方案正文过短(少于 ${e.Ck.minPackageChars} 字)`,suggestion:"每个分项方案都要写足作业对象与工程量、工序安排、施工方法三方面要素,门窗维修、立面修补等小分项同样需要展开,不得一句话带过。"});let o=d.map(a=>a.replace(/\s/gu,"").length);o.length>1&&Math.min(...o)>0&&Math.min(...o)<Math.max(...o)*e.Ck.balanceRatio&&c.push({level:"warning",message:`${a} 分部分项工程施工方案分项深度失衡:最短分项不足最长分项三分之一`,suggestion:"参照最长分项(如拆除、结构加固)的展开深度,为偏短分项补足机具、材料规格、工艺参数与验收标准。"})};for(let a of g){let b=A(a.content)||A(d);if(!b){c.push({level:"error",severity:"blocker",message:`${a.title} 分部分项工程施工方案小节缺失或标题结构异常`,suggestion:"必须生成“### 主要分部分项工程施工方案”,并在该小节内部使用“#### 分项工程方案”逐项展开。"});continue}h(a.title,b)}return c}},92817:(a,b,c)=>{c.d(b,{hZ:()=>z,eu:()=>D,nl:()=>_,AI:()=>R,N1:()=>Z,w9:()=>w,qX:()=>B,eL:()=>r.eL,Ym:()=>G,xu:()=>r.xu,uV:()=>r.uV,uQ:()=>S});var d=c(76760),e=c(78217),f=c(70933),g=c(61373),h=c(95734),i=c(22157),j=c(46482),k=c(71001),l=c(8667),m=c(40693);let n=[{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 施工现场临时用电安全技术规范"]}],o=new Map,p=new Map;for(let a of n)for(let b of(p.set(a.id,a),o.set(a.name,a),a.aliases))o.set(b,a);let q=[{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"]}];var r=c(22213),s=c(18274),t=c(41991),u=c(1358),v=c(3063);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}let x=/\b\d+(?:\.\d+)?\s*(?:日历天|小时|分钟|天|周|月|年|万元|元|台|套|个|项|批|次|份|人)(?=[。,,;;::、\s]|$)/gu;function y(a){let b=new Set;for(let c of a){let a=(0,i.lG)(c.content).replace(/\s+/gu," ");if((!/报价明细|投标报价|单价|合价|综合单价|预留金|税率|增值税|利润|结算/u.test(a)||/合同估算价|合同估算价格|投资估算|最高投标限价|招标控制价/u.test(a))&&!/OCR|识别错误|乱码|无法确认|疑似|不确定|语义断裂/u.test(a)){for(let c of a.matchAll(s._W))b.add(c[0].trim());for(let c of a.matchAll(x))b.add(c[0].trim());if(b.size>=40)break}}return[...b].slice(0,40)}function z(a){let b=a.spec?.chapterRules.find(b=>b.id===a.chapter.id||b.title===a.chapter.title),c=(b?.requiredFactIds||[]).map(b=>a.spec?.factFields.find(a=>a.id===b)?.name).filter(Boolean),d=[...new Set([...a.chapter.requiredFacts,...c,...a.plan?.requiredContents||[],...a.plan?.evidenceNeeds||[],...(a.resolvedFactNeeds||[]).filter(a=>a.need.required).map(a=>a.need.label)].filter(Boolean))],e=a.roleFacts.map(({fact:a})=>`- ${a.key}:${(0,f.eE)((0,i.lG)(a.value))}`),g=(a.resolvedFactNeeds||[]).flatMap(a=>a.facts),h=a.indexedFacts||[],j=g.length>0?[]:h.map(a=>`- ${a.key||a.fieldName||"资料事实"}:${(0,f.eE)((0,i.lG)(a.value))}${a.sourceFile?`(来源:${a.sourceFile.split("/").pop()})`:""}`),k=[...g,...h].filter(a=>/建设地点|建设规模|招标范围|计划工期|合同工期|周期要求|质量标准|合同估算|投资估算|最高投标限价|招标控制价/u.test(`${a.key||""}${a.fieldName||""}${a.fieldId||""}`)).filter((a,b,c)=>c.findIndex(b=>`${b.key||b.fieldName}:${(0,i.lG)(b.value)}`==`${a.key||a.fieldName}:${(0,i.lG)(a.value)}`)===b),l=[...new Set([...y(a.evidence),...g.map(a=>(0,i.lG)(a.value)).filter(a=>s.sv.test(a)),...h.map(a=>(0,i.lG)(a.value)).filter(a=>s.sv.test(a))])],m=new Set([...a.evidence.map(a=>a.filePath),...g.map(a=>a.sourceFile),...(a.indexedFacts||[]).map(a=>a.sourceFile)]).size,n=(a.resolvedFactNeeds||[]).filter(a=>"satisfied"!==a.status&&a.need.required).map(a=>a.need.label);return["【本章事实覆盖与参数落位要求】",d.length?`必须优先覆盖的事实/要求:
|
|
24
24
|
${d.map(a=>`- ${a}`).join("\n")}`:"",e.length?`角色节点已抽取事实:
|
|
25
25
|
${e.join("\n")}`:"",k.length?`项目基础事实卡片(资料已明确,必须优先使用,不得输出任何占位话术;其中工程地点、建设规模、计划工期等总述数据只在项目概况/工程概况类章节集中交代,其他章节仅可引用所需的具体数字,不得复述完整概况段):
|
|
26
26
|
${k.map(a=>`- ${a.key||a.fieldName}:${(0,f.eE)((0,i.lG)(a.value))}${a.sourceFile?`(来源:${a.sourceFile.split("/").pop()})`:""}`).join("\n")}
|
|
@@ -87,15 +87,15 @@ ${a.promptTexts}`:"",`章节标题:${a.chapter.title}`,`当前小节:${a.sec
|
|
|
87
87
|
${l}`:"",`已有小节正文:
|
|
88
88
|
${(0,r.DD)(a.currentContent).slice(0,12e3)}`].filter(Boolean).join("\n\n"),!1,{maxTokens:Math.min(8192,Math.max(2800,Math.ceil(2.6*m))),temperature:.25,signal:a.signal,diagnostics:a.diagnostics,contextLayers:o,prefixKey:`writer-supplement:${a.chapter.id}`}),q=(0,g.kT)((0,g.FD)(p||"",a.forbidDrawingImages)).replace(/^#{3,4}\s+.*\n+/u,"").trim();return q?`${a.currentContent.trim()}
|
|
89
89
|
|
|
90
|
-
${q}`:a.currentContent}async function Y(a){if((0,r.hf)(a.sectionTitle)){let b=await W({...a,targetWords:
|
|
90
|
+
${q}`:a.currentContent}async function Y(a){if((0,r.hf)(a.sectionTitle)){let b=await W({...a,targetWords:a.targetWords,maxWords:Math.ceil(1.22*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,g.kT)((0,g.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=(0,r.zJ)(a)?760:Math.max(1400,Math.floor(Number(process.env.DOCUMENT_WRITING_TASK_MAX_WORDS??2800))),d=(0,r.zJ)(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:function(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]}`}(a,c,d),targetWords:e,index:c+1,total:d}))}(a.sectionTitle,a.targetWords),c=Array(b.length),d=async b=>{let c,d;(0,i.Te)(a.signal);let e=b.total>1?2:3;for(let f=0;f<e&&!c;f+=1){let g=b.targetWords;try{c=await V({...a,sectionTitle:b.sectionTitle,targetWords:g,maxWords:Math.ceil(1.18*g),qualityFeedback:[b.total>1?`这是首轮生成的主题任务 ${b.index}/${b.total},只聚焦“${b.taskTitle}”。不得重复同小节其他主题的通用表述;优先写入与本主题相关的资料事实、规格、数量、标准、检查要求和执行动作。`:a.qualityFeedback,f>0?`上一轮未生成有效正文${d?`(被拒原因:${d})`:""}。本轮必须直接输出“### ${a.sectionTitle}”及正式正文,逐条修正被拒原因,优先完成可审查、可落位事实的核心内容。`:""].filter(Boolean).join("\n")})}catch{c=void 0}if(c||(d=a.diagnostics?.llm.lastError),!c&&f===e-1)try{c=await W({...a,sectionTitle:b.sectionTitle,targetWords:g,maxWords:Math.ceil(1.18*g),qualityFeedback:`前序 Writer 未完成${d?`(被拒原因:${d})`:""}。本轮使用轻量定向 Writer,只完成“${a.sectionTitle}”正式正文,逐条修正被拒原因。`})}catch(d){a.diagnostics&&(a.diagnostics.llm.lastError=`focused writer 后置异常:${a.chapter.title} / ${b.sectionTitle} / ${d instanceof Error?d.message:String(d)}`),c=void 0}}return c?(0,r.DD)(c):void 0},f=Number(process.env.DOCUMENT_WRITING_TASK_CONCURRENCY||2),h=Math.max(1,Math.min(b.length,2,Number.isFinite(f)?Math.floor(f):2));for(let e=0;e<b.length;e+=h){(0,i.Te)(a.signal);let f=b.slice(e,e+h);(await Promise.all(f.map(a=>d(a)))).forEach((a,b)=>{c[e+b]=a})}let j=c.filter(a=>!!a);if(0===j.length){a.diagnostics&&!a.diagnostics.llm.lastError&&(a.diagnostics.llm.lastError=`task writer 未产出有效正文:${a.chapter.title} / ${a.sectionTitle}`);return}let k=`### ${a.sectionTitle}
|
|
91
91
|
|
|
92
92
|
${j.join("\n\n")}`;if(200>(0,e.V7)((0,r.DD)(k))){a.diagnostics&&(a.diagnostics.llm.lastError=`task writer 正文空壳:${a.chapter.title} / ${a.sectionTitle} / ${(0,e.V7)((0,r.DD)(k))}字`);return}let l=(0,r.eK)(a.sectionTitle,k);if(l){a.diagnostics&&(a.diagnostics.llm.lastError=`task writer ${l}:${a.chapter.title} / ${a.sectionTitle}`);return}return k=await X({...a,currentContent:k,targetWords:a.targetWords}),(0,g.kT)((0,g.FD)(k,a.forbidDrawingImages))}async function Z(a){let b=E(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),j=Array(b.length),k=0,m=Number(process.env.DOCUMENT_CHAPTER_POOL_CHARS||8e3),n=(0,f.R7)((0,f.QO)(a.chapter,a.evidence),a.chapter.requiredFacts||[],Number.isFinite(m)?Math.floor(m):8e3),o=b.map(a=>a.title),p=(0,l.nn)(a.chapter,o),q=b.length-1,r=async(c,d=!1)=>{a.onSectionProgress?.({completed:k,total:b.length,sectionTitle:c.title,phase:d?"retry":"start",partialSections:[...j]});try{let d=a.sectionEvidenceProvider?await a.sectionEvidenceProvider(c.title).catch(()=>[]):[],e=F(c.title).filter(a=>a.length>=2),f={...a,evidence:d.length?[...a.evidence,...d]:a.evidence,projectContext:a.projectContext,roleContext:a.roleContext||"",factCoverageContext:a.factCoverageContext,compactProjectContext:a.compactProjectContext,scopedProjectContext:a.scopedProjectContext,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),tablePlanInstruction:function(a,b,c=[]){let d=(0,l.El)(a,b),e=[...d,...c.filter(a=>!d.some(b=>b.id===a.id))];return(0,l.Gl)(e,b)}(a.chapter,c.title,c.index===q?p:[]),sharedFactLayerText:n,sectionRankBoost:a=>Math.min(24,e.reduce((b,c)=>b+6*!!a.content.includes(c),0))},g=c.targetWords>=1400?await Y({...f,signal:a.signal}):await $({...f,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 g&&(k+=1,j[c.index]=g,a.onSectionProgress?.({completed:k,total:b.length,sectionTitle:c.title,phase:"complete",partialSections:[...j]})),g}catch(b){console.warn(`[document-workflow] 小节生成失败:${a.chapter.title} / ${c.title}`,b);return}},s=b.length;if(s>0){(0,i.Te)(a.signal);let c=await r({...b[0],index:0});e[0]=c}for(let c=1;c<s;){(0,i.Te)(a.signal);let f=(0,h.bU)(a.diagnostics)>=5?1:d,g=b.slice(c,Math.min(s,c+f));(await Promise.all(g.map((a,b)=>r({...a,index:c+b})))).forEach((a,b)=>{e[c+b]=a}),c+=f}let t=e.map((a,b)=>a?-1:b).filter(a=>a>=0),u=t;if(u.length>0){for(let c=0;c<u.length;){(0,i.Te)(a.signal);let f=(0,h.bU)(a.diagnostics)>=5?1:d,g=u.slice(c,c+f);(await Promise.all(g.map(a=>r({...b[a],index:a},!0)))).forEach((a,b)=>{a&&(e[g[b]]=a)}),c+=f}t=e.map((a,b)=>a?-1:b).filter(a=>a>=0);for(let c=0;c<t.length;){(0,i.Te)(a.signal);let f=(0,h.bU)(a.diagnostics)>=5?1:d,g=t.slice(c,c+f);(await Promise.all(g.map(a=>r({...b[a],targetWords:Math.max(b[a].targetWords,900),index:a},!0)))).forEach((a,b)=>{a&&(e[g[b]]=a)}),c+=f}}(t=e.map((a,b)=>a?-1:b).filter(a=>a>=0)).length>0&&a.diagnostics&&(a.diagnostics.llm.lastError=`章级生成缺失小节:${a.chapter.title} / ${t.map(a=>b[a].title).join("、")}`);let v=e.map(a=>a||"");return(0,g.kT)((0,g.FD)(`## ${a.chapter.title}
|
|
93
93
|
|
|
94
94
|
${v.join("\n\n")}`,a.forbidDrawingImages))}async function $(a,b){let c;for(let d=0;d<b;d+=1){let b=await V({...a,qualityFeedback:c});if(!b){c=`上一轮未生成有效正文${a.diagnostics?.llm.lastError?`(被拒原因:${a.diagnostics.llm.lastError})`:""},请针对被拒原因重新生成完整小节正文。`;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,e.V7)(c);return d<360?`正文有效内容不足:${a} 当前约 ${d} 字`:/资料未提供|信息有限|无法确定|待补充|建议扩大本地知识库检索|以下是|本文档|本小节围绕/u.test(c)?`存在空泛或说明性话术:${a}`:void 0}(a.sectionTitle,b);if(!d)return b;c=d}}async function _(a,b){let c=b.blocks;if(0===c.length)return;let d=c.flatMap(a=>a.subPoints.flatMap(a=>a.sources)),k=(0,l.nn)(a.chapter,d),m=c.map((b,d)=>{let e=(a.chapter.tablePlans||[]).filter(a=>{if(k.includes(a))return!1;let c=a.title||"";return b.subPoints.some(a=>a.sources.some(a=>c.includes(a)||a.includes(c))||c.includes(a.title)||a.title.includes(c))});return d===c.length-1?[...e,...k]:e}),n=Number(process.env.DOCUMENT_PLANNED_BLOCK_CONCURRENCY||c.length),o=Math.max(1,Math.min(c.length,(0,h.Sq)(),Number.isFinite(n)?Math.floor(n):c.length)),p=Array(c.length).fill(void 0),q=Number(process.env.DOCUMENT_CHAPTER_POOL_CHARS||8e3),s=(0,f.R7)((0,f.QO)(a.chapter,a.evidence),a.chapter.requiredFacts||[],Number.isFinite(q)?Math.floor(q):8e3),t=Number(process.env.DOCUMENT_BLOCK_EVIDENCE_CHARS||1e3),u=Number.isFinite(t)&&t>0?Math.floor(t):1e3,v=(()=>{let a=Number(process.env.DOCUMENT_BLOCK_FALLBACK_TIMEOUT_MS??18e4);return 0===a?1/0:Number.isFinite(a)&&a>0?Math.floor(a):18e4})(),w=async(b,c)=>{let d=Date.now(),f=()=>Date.now()-d>v,g=b.subPoints.map(a=>a.title),h=F(`${b.title} ${g.join(" ")}`).filter(a=>a.length>=2),k=a=>Math.min(24,h.reduce((b,c)=>b+6*!!a.content.includes(c),0)),l=[...a.evidence.map(a=>({item:a,score:h.reduce((b,c)=>b+ +!!a.content.includes(c),0)})).sort((a,b)=>b.score-a.score).map(a=>a.item),...a.sectionEvidenceProvider?await a.sectionEvidenceProvider(b.title).catch(()=>[]):[]],n={...a.chapter,title:b.title,sections:g,tablePlans:m[c]||[]},o=b.facts.length?`【本主题块专属事实(只能在本节使用,不得重复出现在本章其他节)】${b.facts.map(a=>`- ${a}`).join("\n")}`:"",p=b.subPoints.map(a=>a.sources.length>1?`- #### ${a.title}(覆盖评分细目:${a.sources.join("、")})`:`- #### ${a.title}`).join("\n"),q=[o,`本节是「${a.chapter.title}」章的一个主题小节,只写本节标题覆盖的内容,不得重复本章其他节内容;必须按以下 H4 要点逐点写出实施性正文,H4 标题必须与给定标题完全一致,不得改名、合并或遗漏;每个 H4 必须覆盖其标注的全部评分细目内容,但不得为这些细目单独开设小节标题:
|
|
95
95
|
${p}`].filter(Boolean).join("\n\n"),t=[],x=[],y=(()=>{let a=Number(process.env.DOCUMENT_BLOCK_MAX_ATTEMPTS??2);return 0===a?2:Number.isFinite(a)&&a>0?Math.floor(a):2})();for(let h=0;h<y;h+=1){if(h>0&&f()){a.diagnostics&&(a.diagnostics.llm.lastError=`规划块成稿超时(>${Math.round((Date.now()-d)/1e3)}s):${b.title},跳过重试转紧凑备用`);break}let m=0===h?"":["【上一轮未通过质检】",t.length?`缺失 H4 要点标题:${t.join("、")}。必须逐点补齐以上 H4 标题并展开正式正文,H4 标题与给定标题完全一致。`:"",x.length?`重复展开的 H4 要点标题:${x.join("、")}。同一小节内相同要点被重复展开多轮,必须只保留一轮完整展开,其余重复小节连同标题整体删除,不得以换编号方式重复同一内容。`:"",0===t.length&&0===x.length?"必须完整包含每个 H4 要点标题并展开正文,不得合并或遗漏要点。":"","总字数不少于目标字数。"].filter(Boolean).join("");try{let d=()=>D(a.template,n,l,a.missingFacts,a.promptTexts,a.projectContext,a.requirement,m?`${q}
|
|
96
96
|
|
|
97
|
-
${m}`:q,{forbidDrawingImages:a.forbidDrawingImages,compactProjectContext:a.compactProjectContext,scopedProjectContext:a.scopedProjectContext,chapterLevelContext:a.roleContext||"",minWords:
|
|
97
|
+
${m}`:q,{forbidDrawingImages:a.forbidDrawingImages,compactProjectContext:a.compactProjectContext,scopedProjectContext:a.scopedProjectContext,chapterLevelContext:a.roleContext||"",minWords:b.targetWords,targetWords:b.targetWords,maxWords:Math.ceil(1.1*b.targetWords),maxTokens:Math.max(3200,Math.ceil(1.5*b.targetWords)),disableThinkingBoost:!0,sharedFactLayerText:s,evidenceRankBoost:k,onlyRankBoosted:!0,skipT2Catalog:!0,evidenceFloorChars:1e3,evidenceCeilingChars:u,factCoverageContext:a.factCoverageContext||"",planDataMasterText:a.planDataMasterText,decisionLockText:a.decisionLockText,twoStep:!1,signal:a.signal,diagnostics:a.diagnostics}),f=a.diagnostics?await (0,j.X6)(a.diagnostics,`block-draft:${a.chapter.id}:${c}:a${h}`,d):await d();if(!f)continue;let o=f.replace(/^##\s+.+$/mu,"").trim(),p=(0,r.KJ)(g,o),v=/^###\s+\S+/mu.test(p)?p:`### ${b.title}
|
|
98
98
|
|
|
99
|
-
${p}`,w=(0,e.V7)(v),y=g.filter(a=>!v.includes(a)),z=(0,i.W6)(v);if(w>=Math.
|
|
99
|
+
${p}`,w=(0,e.V7)(v),y=g.filter(a=>!v.includes(a)),z=(0,i.W6)(v);if(w>=Math.floor(.9*b.targetWords)&&0===y.length&&0===z.length)return v;if(t=y,x=z,1===h&&0===y.length&&z.length>0){let a=(0,i.wq)(v);if((0,e.V7)(a)>=Math.floor(.9*b.targetWords))return a}a.diagnostics&&1===h&&(a.diagnostics.llm.lastError=`规划块质检未达标:${b.title}(${w} 字,缺 ${y.join("、")||"无"}${z.length?`,重复 H4 ${z.join("、")}`:""})`)}catch(b){a.diagnostics&&1===h&&(a.diagnostics.llm.lastError=b instanceof Error?b.message:String(b))}}if(b.subPoints.length>=4&&!f()){let d=Math.ceil(b.subPoints.length/2),e=Math.max(800,Math.floor(b.targetWords/2)),f=await Promise.all([w({...b,title:`${b.title}(一)`,subPoints:b.subPoints.slice(0,d),targetWords:e},c),w({...b,title:`${b.title}(二)`,subPoints:b.subPoints.slice(d),targetWords:e},c)]);if(f.every(a=>!!a))return f.join("\n\n");a.diagnostics&&(a.diagnostics.llm.lastError=`规划块拆半后仍未成稿:${b.title}`)}},x=async(b,d)=>{p[d]=await w(b,d),p[d]&&a.onSectionProgress?.({completed:p.filter(Boolean).length,total:c.length,sectionTitle:b.title,phase:"complete",partialSections:[...p]})};c.length>0&&((0,i.Te)(a.signal),await x(c[0],0));for(let b=1;b<c.length;b+=o){(0,i.Te)(a.signal);let d=c.slice(b,b+o);await Promise.all(d.map((a,c)=>x(a,b+c)))}if(p.every(a=>!a))return;let y=c.map((a,b)=>({index:b,block:a})).filter(({index:a})=>!p[a]),z=(0,g.kT)((0,g.FD)(`## ${a.chapter.title}
|
|
100
100
|
|
|
101
101
|
${p.filter(Boolean).join("\n\n")}`,a.forbidDrawingImages));return 0===y.length?{sections:p,failedBlocks:y,allSucceeded:!0,markdown:z}:(a.diagnostics&&y.length>0&&(a.diagnostics.llm.lastError=`规划块部分失败:${y.map(({block:a})=>a.title).join("、")}`),{sections:p,failedBlocks:y,allSucceeded:!1,markdown:z})}}};
|