@customize-agent/server 4.12.22 → 4.12.23

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.
@@ -28,22 +28,22 @@ ${k.map(a=>`- ${a.key||a.fieldName}:${(0,f.eE)((0,i.lG)(a.value))}${a.sourceFi
28
28
  ${j.join("\n")}`:"",l.length?`本章资料中可直接使用的可靠精确参数/编号:${l.join("、")}。这些参数来自绑定资料,不属于编造;涉及对应对象、部位、工序、材料、设备、项目概况、质量验收或安全控制时必须自然写入正文,并保持原样或等价专业表达。量化参数落位是硬性验收项:本章正文必须达到每千字不少于 2 个不同量化参数的密度(以上方清单参数优先),同一参数不得反复堆砌凑数,参数种类不足将被打回重写。项目基础事实中的合同估算价、计划工期可用于项目概况;不得写入报价明细、单价、税率、预留金。`:"",n.length?`当前事实需求仍未充分确认:${n.join("、")}。未确认项不得编造;但已满足事实需求中的资料事实必须写入对应小节。`:"",a.missingFacts.length?`模板显式要求中当前检索未充分命中的项:${a.missingFacts.join("、")}。未命中项不得编造,但不得因此省略上方已经明确的可靠参数。`:"",`本章可用材料来源约 ${m} 个文件,正文必须按事实需求把可用事实内化到对应小节,不得单列后台资料清单。`].filter(Boolean).join("\n")}function A(a){let b=function(a){if(!a)return[];let b=[];for(let c of a.split(/\r?\n|[。;;]/u)){let a=c.trim();if(!(a.length<4)&&!(a.length>240)&&/计划工期|合同工期|工期|日历天|建设地点|工程地点|建设规模|工程规模|建筑面积|质量标准|质量目标|招标范围|施工范围|工作内容|合同估算|投资估算|最高投标限价|招标控制价|暂列金额|安全目标|文明施工目标|项目名称|工程名称/u.test(a)&&(!/(?:请|务必|不得|禁止|不要|要求你|你需要|生成|输出|格式|模板)/u.test(a)||/(?:日历天|㎡|m2|平方米|万元|元|米|天|%|层|栋|台|套)/u.test(a))&&(b.push(a),b.length>=24))break}return[...new Set(b)]}(a);return 0===b.length?"":["【用户提示词明确给定的事实——最高优先级,必须原样写入正文相关小节】",...b.map(a=>`- ${a}`),"这些事实来自用户要求;若与绑定材料中的数值冲突,以绑定材料为准。"].join("\n")}async function B(a){let b=a.sections.length?a.sections.map((a,b)=>`${b+1}. ${a}`).join("\n"):"(本章无预设小节,请按材料自然归纳 2-5 个主题作为大纲小节)",c=["你是文档事实规划专家。先通读绑定材料,再为本章每个小节列出「可写事实」,供 Writer 逐条落位。","事实必须逐字来自绑定材料:数值、单位、标准编号必须原样保留,不得改写、换算或编造;不得把写作要求当作事实。","quantifiedFacts 放含数字/单位/编号的事实;missingFacts 放该小节需要但材料中确实找不到的事实(供 Writer 用公共专业知识补做法,禁止编造具体值)。","只返回 JSON,不要返回 markdown。"].filter(Boolean).join("\n\n"),d=[a.promptTexts?`配置写作主控提示词:
29
29
  ${a.promptTexts}`:"",`文档模板:${a.template.name}`,`章节标题:${a.chapter.title}`,`章节目的:${a.chapter.purpose}`,`预设小节:
30
30
  ${b}`,a.requiredFacts.length?`模板要求覆盖的事实:${a.requiredFacts.join("、")}`:"",a.missingFacts.length?`当前检索未充分命中的事实(如材料中确实没有,写入对应小节的 missingFacts):${a.missingFacts.join("、")}`:"",`绑定材料:
31
- ${a.evidenceText}`,'返回 JSON:{"sections":[{"title":"小节名","facts":["可写事实(必须来自材料)"],"quantifiedFacts":["含数值/单位/编号的事实(必须原样)"],"missingFacts":["该小节需要但材料缺失的事实"]}]}'].filter(Boolean).join("\n\n");for(let b=0;b<2;b+=1){let b=await (0,h.bb)(c,d,{maxTokens:1600,temperature:0,signal:a.signal,diagnostics:a.diagnostics});if(b&&Array.isArray(b.sections)&&b.sections.length>0)return b}}async function C(a,b,c,d,e,i,j,k="",n={}){let o,p=(0,f.QO)(b,c),q=(0,f.ks)(p,{maxChars:(0,f.Pc)(n.targetWords||n.minWords,n.evidenceFloorChars,n.evidenceCeilingChars),requiredFacts:b.requiredFacts,diagnostics:n.diagnostics}),r=process.env.DOCUMENT_TWO_STEP_GENERATION,s=!1!==n.twoStep&&"0"!==r&&c.length>=3&&q.length>0,t="",u=new Set;if(s&&(o=await B({template:a,chapter:b,sections:b.sections?.filter(Boolean)||[],requiredFacts:b.requiredFacts,missingFacts:d,promptTexts:e,evidenceText:q,signal:n.signal,diagnostics:n.diagnostics}))){var w,x;let a=[...new Set(o.sections.flatMap(a=>(a.missingFacts||[]).filter(Boolean)))];if(a.length>0&&n.supplementEvidenceProvider){let d=(await n.supplementEvidenceProvider(a).catch(()=>[])).filter(a=>!c.some(b=>b.filePath===a.filePath&&(b.sectionTitle||"")===(a.sectionTitle||"")));if(d.length>0){let e=[...c,...d];q=(0,f.ks)((0,f.QO)(b,e),{maxChars:(0,f.Pc)(n.targetWords||n.minWords,n.evidenceFloorChars,n.evidenceCeilingChars),requiredFacts:b.requiredFacts,diagnostics:n.diagnostics}),(u=new Set(a.filter(a=>!function(a,b){let c=b.map(a=>`${a.sectionTitle||""}
32
- ${a.content}`).join("\n"),d=a.split(/[\s、,,。;;::()()【】[\]《》]/u).map(a=>a.trim()).filter(a=>a.length>=4);return 0!==d.length&&(d.filter(a=>c.includes(a)).length>=2||[...new Set(a.match(/.{6,}/gu)||[])].some(a=>c.includes(a)))}(a,e)))).size<a.length&&(q=`${q}
31
+ ${a.evidenceText}`,'返回 JSON:{"sections":[{"title":"小节名","facts":["可写事实(必须来自材料)"],"quantifiedFacts":["含数值/单位/编号的事实(必须原样)"],"missingFacts":["该小节需要但材料缺失的事实"]}]}'].filter(Boolean).join("\n\n");for(let b=0;b<2;b+=1){let b=await (0,h.bb)(c,d,{maxTokens:1600,temperature:0,signal:a.signal,diagnostics:a.diagnostics});if(b&&Array.isArray(b.sections)&&b.sections.length>0)return b}}async function C(a,b,c,d,e,i,j,k="",n={}){let o,p=(0,f.QO)(b,c),q=!!n.sharedFactLayerText,r=(0,f.ks)(p,{maxChars:(0,f.Pc)(n.targetWords||n.minWords,n.evidenceFloorChars,n.evidenceCeilingChars),requiredFacts:b.requiredFacts,skipT0:q,diagnostics:n.diagnostics}),s=process.env.DOCUMENT_TWO_STEP_GENERATION,t=!1!==n.twoStep&&"0"!==s&&c.length>=3&&r.length>0,u="",w=new Set;if(t&&(o=await B({template:a,chapter:b,sections:b.sections?.filter(Boolean)||[],requiredFacts:b.requiredFacts,missingFacts:d,promptTexts:e,evidenceText:r,signal:n.signal,diagnostics:n.diagnostics}))){var x,y;let a=[...new Set(o.sections.flatMap(a=>(a.missingFacts||[]).filter(Boolean)))];if(a.length>0&&n.supplementEvidenceProvider){let d=(await n.supplementEvidenceProvider(a).catch(()=>[])).filter(a=>!c.some(b=>b.filePath===a.filePath&&(b.sectionTitle||"")===(a.sectionTitle||"")));if(d.length>0){let e=[...c,...d];r=(0,f.ks)((0,f.QO)(b,e),{maxChars:(0,f.Pc)(n.targetWords||n.minWords,n.evidenceFloorChars,n.evidenceCeilingChars),requiredFacts:b.requiredFacts,skipT0:q,diagnostics:n.diagnostics}),(w=new Set(a.filter(a=>!function(a,b){let c=b.map(a=>`${a.sectionTitle||""}
32
+ ${a.content}`).join("\n"),d=a.split(/[\s、,,。;;::()()【】[\]《》]/u).map(a=>a.trim()).filter(a=>a.length>=4);return 0!==d.length&&(d.filter(a=>c.includes(a)).length>=2||[...new Set(a.match(/.{6,}/gu)||[])].some(a=>c.includes(a)))}(a,e)))).size<a.length&&(r=`${r}
33
33
 
34
- 【定向补充检索】以下大纲缺失事实已找到对应材料并追加在上方,请一并落位:${a.filter(a=>!u.has(a)).join("、")}`)}else u=new Set(a)}else u=new Set(a);w=o,x=u,t=["【事实大纲——由事实规划阶段生成,写作时必须逐条落位】","大纲事实全部来自绑定材料,落位不构成编造;数值、单位、标准编号必须与大纲完全一致。",...w.sections.map(a=>{let b=[...new Set([...a.facts||[],...a.quantifiedFacts||[]])].filter(Boolean),c=(a.missingFacts||[]).filter(a=>a&&x.has(a));return[`### ${a.title||"正文"}`,b.length?`必须写入的事实(数值必须原样):
35
- ${b.map(a=>`- ${a}`).join("\n")}`:"",c.length?`材料缺失(禁止编造具体值;可用公共专业知识补做法与要求):${c.join("、")}`:""].filter(Boolean).join("\n")})].join("\n\n")}let y=A(j),z=b.sections?.length?`本章小节由生成前规划得到,请完整包含并展开以下小节:
36
- ${b.sections.map(a=>`- ${a}`).join("\n")}`:"本章没有预设小节;请按用户提示词、模板章节、角色要求和绑定材料自然组织正文。",E=function(a,b){let c=D(a,b);return 0===c.length?"":["本章小节篇幅计划(首轮生成应尽量一次达成,避免后续补写):",...c.map(a=>`- ${a.title}:约 ${a.targetWords} 字,至少达到 ${Math.floor(.8*a.targetWords)} 字,并写入与该小节相关的材料事实、适用边界和必要说明。`)].join("\n")}(b,n.targetWords||n.minWords||0),F=(0,l.T4)(b),G=(0,m.Ls)(b),H=(0,m.db)(b),I=(0,v.vN)(b.title,b.sections||[]),J=n.compactProjectContext?n.scopedProjectContext?T(i):S(i):i,K=[(0,g.b_)(g.rd),n.forbidDrawingImages?"图片类材料只作为文本事实依据;禁止插入图片或 Markdown 图片语法。":""].filter(Boolean).join("\n\n"),L=[e?`配置写作主控提示词:
37
- ${e}`:"",`文档模板:${a.name}`,`章节标题:${b.title}`,`章节目的:${b.purpose}`,z,E,F,G,H,...I,j?`用户要求:${j}`:"",y,i?`上下文/历史记忆(仅作偏好、历史纠偏和连续性参考;如与知识库证据冲突,以知识库证据为准):
38
- ${J}`:"",k||"",n.factCoverageContext||"",d.length?`需要特别补足的信息:${d.join("、")}`:"",t,"请生成可直接导出的 Markdown 章节,要求:",`- 保留章节标题;内容不少于 ${n.minWords||1e3} 字${n.targetWords?`,目标约 ${n.targetWords} 字`:""}${n.maxWords?`,最多不超过 ${n.maxWords} 字`:""}。`,b.sections?.length?"- 必须完整包含已规划小节;不要新增未规划的二级小节。":"- 未预设小节时,不要为了凑结构强行新增小节。",b.tablePlans?.length?"- 本章存在结构化表格规划时,必须输出正式 Markdown 表格;表头必须严格使用规划字段,不得擅自改字段、删字段或增加后台溯源列。":b.tableSections?.length?`- 以下小节可使用表格辅助表达:${b.tableSections.join("、")}。`:"",b.tablePlans?.length?"- 表格字段值必须优先来自项目图谱、可信事实和绑定材料;projectFactOnly 字段不得编造,也不得写任何固定占位话术。":"","- 内容必须遵循用户提示词、模板章节、提示词角色、项目资料包和自动识别的资料类型;不得编造材料未提供的项目专属事实;法律法规名称、标准规范编号等公共知识可依据现行有效版本直接引用。","- 将材料要点自然融入正文;不要输出系统证据清单、中间分析过程或后台流程话术。",g.KX,"",q?"绑定材料:":"",q,n.userWriterRules?`
34
+ 【定向补充检索】以下大纲缺失事实已找到对应材料并追加在上方,请一并落位:${a.filter(a=>!w.has(a)).join("、")}`)}else w=new Set(a)}else w=new Set(a);x=o,y=w,u=["【事实大纲——由事实规划阶段生成,写作时必须逐条落位】","大纲事实全部来自绑定材料,落位不构成编造;数值、单位、标准编号必须与大纲完全一致。",...x.sections.map(a=>{let b=[...new Set([...a.facts||[],...a.quantifiedFacts||[]])].filter(Boolean),c=(a.missingFacts||[]).filter(a=>a&&y.has(a));return[`### ${a.title||"正文"}`,b.length?`必须写入的事实(数值必须原样):
35
+ ${b.map(a=>`- ${a}`).join("\n")}`:"",c.length?`材料缺失(禁止编造具体值;可用公共专业知识补做法与要求):${c.join("、")}`:""].filter(Boolean).join("\n")})].join("\n\n")}let z=A(j),E=b.sections?.length?`本章小节由生成前规划得到,请完整包含并展开以下小节:
36
+ ${b.sections.map(a=>`- ${a}`).join("\n")}`:"本章没有预设小节;请按用户提示词、模板章节、角色要求和绑定材料自然组织正文。",F=function(a,b){let c=D(a,b);return 0===c.length?"":["本章小节篇幅计划(首轮生成应尽量一次达成,避免后续补写):",...c.map(a=>`- ${a.title}:约 ${a.targetWords} 字,至少达到 ${Math.floor(.8*a.targetWords)} 字,并写入与该小节相关的材料事实、适用边界和必要说明。`)].join("\n")}(b,n.targetWords||n.minWords||0),G=(0,l.T4)(b),H=(0,m.Ls)(b),I=(0,m.db)(b),J=(0,v.vN)(b.title,b.sections||[]),K=n.compactProjectContext?n.scopedProjectContext?T(i):S(i):i,L=[(0,g.b_)(g.rd),n.forbidDrawingImages?"图片类材料只作为文本事实依据;禁止插入图片或 Markdown 图片语法。":""].filter(Boolean).join("\n\n"),M=[e?`配置写作主控提示词:
37
+ ${e}`:"",`文档模板:${a.name}`,`章节目的:${b.purpose}`,j?`用户要求:${j}`:"",z,i?`上下文/历史记忆(仅作偏好、历史纠偏和连续性参考;如与知识库证据冲突,以知识库证据为准):
38
+ ${K}`:"",n.sharedFactLayerText||"","请生成可直接导出的 Markdown 章节,要求:","- 内容必须遵循用户提示词、模板章节、提示词角色、项目资料包和自动识别的资料类型;不得编造材料未提供的项目专属事实;法律法规名称、标准规范编号等公共知识可依据现行有效版本直接引用。","- 将材料要点自然融入正文;不要输出系统证据清单、中间分析过程或后台流程话术。",g.KX,`章节标题:${b.title}`,`- 保留章节标题;内容不少于 ${n.minWords||1e3} 字${n.targetWords?`,目标约 ${n.targetWords} 字`:""}${n.maxWords?`,最多不超过 ${n.maxWords} 字`:""}。`,b.sections?.length?"- 必须完整包含已规划小节;不要新增未规划的二级小节。":"- 未预设小节时,不要为了凑结构强行新增小节。",b.tablePlans?.length?"- 本章存在结构化表格规划时,必须输出正式 Markdown 表格;表头必须严格使用规划字段,不得擅自改字段、删字段或增加后台溯源列。":b.tableSections?.length?`- 以下小节可使用表格辅助表达:${b.tableSections.join("、")}。`:"",b.tablePlans?.length?"- 表格字段值必须优先来自项目图谱、可信事实和绑定材料;projectFactOnly 字段不得编造,也不得写任何固定占位话术。":"",E,F,G,H,I,...J,k||"",n.factCoverageContext||"",d.length?`需要特别补足的信息:${d.join("、")}`:"",u,"",r?"绑定材料:":"",r,n.userWriterRules?`
39
39
  【用户写作指令——必须严格遵守】
40
- ${n.userWriterRules}`:""].filter(Boolean).join("\n"),M={l0:K.length,l1:(0,h.CX)([e?`配置写作主控提示词:
41
- ${e}`:"",j?`用户要求:${j}`:"",y,"请生成可直接导出的 Markdown 章节,要求:",`- 保留章节标题;内容不少于 ${n.minWords||1e3} 字${n.targetWords?`,目标约 ${n.targetWords} 字`:""}${n.maxWords?`,最多不超过 ${n.maxWords} 字`:""}。`,b.sections?.length?"- 必须完整包含已规划小节;不要新增未规划的二级小节。":"- 未预设小节时,不要为了凑结构强行新增小节。",b.tablePlans?.length?"- 本章存在结构化表格规划时,必须输出正式 Markdown 表格;表头必须严格使用规划字段,不得擅自改字段、删字段或增加后台溯源列。":b.tableSections?.length?`- 以下小节可使用表格辅助表达:${b.tableSections.join("、")}。`:"",b.tablePlans?.length?"- 表格字段值必须优先来自项目图谱、可信事实和绑定材料;projectFactOnly 字段不得编造,也不得写任何固定占位话术。":"","- 内容必须遵循用户提示词、模板章节、提示词角色、项目资料包和自动识别的资料类型;不得编造材料未提供的项目专属事实;法律法规名称、标准规范编号等公共知识可依据现行有效版本直接引用。","- 将材料要点自然融入正文;不要输出系统证据清单、中间分析过程或后台流程话术。",g.KX,n.userWriterRules?`
40
+ ${n.userWriterRules}`:""].filter(Boolean).join("\n"),N={l0:L.length,l1:(0,h.CX)([e?`配置写作主控提示词:
41
+ ${e}`:"",j?`用户要求:${j}`:"",z,"请生成可直接导出的 Markdown 章节,要求:","- 内容必须遵循用户提示词、模板章节、提示词角色、项目资料包和自动识别的资料类型;不得编造材料未提供的项目专属事实;法律法规名称、标准规范编号等公共知识可依据现行有效版本直接引用。","- 将材料要点自然融入正文;不要输出系统证据清单、中间分析过程或后台流程话术。",g.KX]),l2:(0,h.CX)([`文档模板:${a.name}`,`章节目的:${b.purpose}`,i?`上下文/历史记忆(仅作偏好、历史纠偏和连续性参考;如与知识库证据冲突,以知识库证据为准):
42
+ ${K}`:"",n.sharedFactLayerText||""]),l3:(0,h.CX)([`章节标题:${b.title}`,`- 保留章节标题;内容不少于 ${n.minWords||1e3} 字${n.targetWords?`,目标约 ${n.targetWords} 字`:""}${n.maxWords?`,最多不超过 ${n.maxWords} 字`:""}。`,b.sections?.length?"- 必须完整包含已规划小节;不要新增未规划的二级小节。":"- 未预设小节时,不要为了凑结构强行新增小节。",b.tablePlans?.length?"- 本章存在结构化表格规划时,必须输出正式 Markdown 表格;表头必须严格使用规划字段,不得擅自改字段、删字段或增加后台溯源列。":b.tableSections?.length?`- 以下小节可使用表格辅助表达:${b.tableSections.join("、")}。`:"",b.tablePlans?.length?"- 表格字段值必须优先来自项目图谱、可信事实和绑定材料;projectFactOnly 字段不得编造,也不得写任何固定占位话术。":"",E,F,G,H,I,...J,k||"",n.factCoverageContext||"",d.length?`需要特别补足的信息:${d.join("、")}`:"",u,r?"绑定材料:":"",r,n.userWriterRules?`
42
43
  【用户写作指令——必须严格遵守】
43
- ${n.userWriterRules}`:""]),l2:(0,h.CX)([`文档模板:${a.name}`,`章节标题:${b.title}`,`章节目的:${b.purpose}`,z,E,F,G,H,...I,i?`上下文/历史记忆(仅作偏好、历史纠偏和连续性参考;如与知识库证据冲突,以知识库证据为准):
44
- ${J}`:"",n.factCoverageContext||""]),l3:(0,h.CX)([k||"",d.length?`需要特别补足的信息:${d.join("、")}`:"",t,q?"绑定材料:":"",q])},N=await (0,h.rI)(K,L,!1,{maxTokens:n.maxTokens,signal:n.signal,diagnostics:n.diagnostics,disableThinkingBoost:n.disableThinkingBoost,contextLayers:M});if(N&&!(N.length<120))return(0,g.kT)((0,g.FD)(N.startsWith("## ")?N:`## ${b.title}
44
+ ${n.userWriterRules}`:""])},O=await (0,h.rI)(L,M,!1,{maxTokens:n.maxTokens,signal:n.signal,diagnostics:n.diagnostics,disableThinkingBoost:n.disableThinkingBoost,contextLayers:N});if(O&&!(O.length<120))return(0,g.kT)((0,g.FD)(O.startsWith("## ")?O:`## ${b.title}
45
45
 
46
- ${N}`,!!n.forbidDrawingImages))}function D(a,b){let c=(0,k.k2)(a.sections?.filter(Boolean)||[],a.title);if(0===c.length)return[];let d=Math.floor(b/c.length),e=Math.max(b>=900*c.length?900:Math.max(520,Math.floor(.9*d)),d);return c.map(a=>({title:a,targetWords:e}))}function E(a){return[...new Set((a.match(/[\p{Script=Han}]{2,}|[A-Za-z0-9_-]{3,}/gu)||[]).map(a=>a.toLowerCase()))]}function F(a,b,c){let d=E([a,b.title,...b.requiredFacts||[]].join(" ")),e=/项目概况|工程概况|总体|部署|施工方案|工期|进度|质量|安全|资源|材料|设备/u.test(a),f=c.map((b,c)=>{let f=`${b.filePath}
46
+ ${O}`,!!n.forbidDrawingImages))}function D(a,b){let c=(0,k.k2)(a.sections?.filter(Boolean)||[],a.title);if(0===c.length)return[];let d=Math.floor(b/c.length),e=Math.max(b>=900*c.length?900:Math.max(520,Math.floor(.9*d)),d);return c.map(a=>({title:a,targetWords:e}))}function E(a){return[...new Set((a.match(/[\p{Script=Han}]{2,}|[A-Za-z0-9_-]{3,}/gu)||[]).map(a=>a.toLowerCase()))]}function F(a,b,c){let d=E([a,b.title,...b.requiredFacts||[]].join(" ")),e=/项目概况|工程概况|总体|部署|施工方案|工期|进度|质量|安全|资源|材料|设备/u.test(a),f=c.map((b,c)=>{let f=`${b.filePath}
47
47
  ${b.sectionTitle||""}
48
48
  ${b.content}`.toLowerCase(),g=`${b.filePath}
49
49
  ${b.sectionTitle||""}
@@ -62,15 +62,15 @@ ${n(m,Math.max(400,b-l.length-20))}`:n(m,b)}async function U(a){var b;let c=F(a.
62
62
  - 工艺参数(参考):${a.params.join(";")}
63
63
  - 检测验收:${a.acceptance.join(";")}
64
64
  - 规范依据:${a.standards.join(";")}`})].join("\n")):"",u=[a.promptTexts?`配置写作主控提示词:
65
- ${a.promptTexts}`:"",`文档模板:${a.template.name}`,`章节标题:${a.chapter.title}`,`当前二级小节:${a.sectionTitle}`,a.requirement?`用户要求:${a.requirement}`:"",A(a.requirement),a.projectContext?`上下文:
66
- ${l}`:"",a.factCoverageContext||"",(0,k.av)(a.chapter.title,a.sectionTitle),a.tablePlanInstruction||"",d.prompt,a.roleContext,a.missingFacts.length?`需要特别补足的信息:${a.missingFacts.join("、")}`:"",a.qualityFeedback?`上轮小节未通过质量检查,必须修正:${a.qualityFeedback}`:"",...(0,v.zC)(a.sectionTitle),t,`请只生成当前节内容,使用“### ${a.sectionTitle}”作为节标题;正文必须下沉到若干“#### 三级小节标题”下面,不得在 ### 标题后直接写大段正文。目标约 ${a.targetWords} 字${a.maxWords?`,最多不超过 ${a.maxWords} 字`:""}。`,"本章节结构已由系统按模板和提示词锁定;不得删除、重命名、合并或重排当前节标题;每个节下必须自然展开三级小节,三级小节承载正文。",g.KX,i?`绑定材料:
65
+ ${a.promptTexts}`:"",`文档模板:${a.template.name}`,`章节标题:${a.chapter.title}`,a.requirement?`用户要求:${a.requirement}`:"",A(a.requirement),a.projectContext?`上下文:
66
+ ${l}`:"",a.factCoverageContext||"",a.roleContext,a.missingFacts.length?`需要特别补足的信息:${a.missingFacts.join("、")}`:"","本章节结构已由系统按模板和提示词锁定;不得删除、重命名、合并或重排当前节标题;每个节下必须自然展开三级小节,三级小节承载正文。",g.KX,`当前二级小节:${a.sectionTitle}`,(0,k.av)(a.chapter.title,a.sectionTitle),a.tablePlanInstruction||"",d.prompt,...(0,v.zC)(a.sectionTitle),t,`请只生成当前节内容,使用“### ${a.sectionTitle}”作为节标题;正文必须下沉到若干“#### 三级小节标题”下面,不得在 ### 标题后直接写大段正文。目标约 ${a.targetWords} 字${a.maxWords?`,最多不超过 ${a.maxWords} 字`:""}。`,a.qualityFeedback?`上轮小节未通过质量检查,必须修正:${a.qualityFeedback}`:"",i?`绑定材料:
67
67
  ${i}`:""].filter(Boolean).join("\n\n"),w=[(0,g.b_)("你是专业文档的小节生成专家。\n\n"+g.rd)].filter(Boolean).join("\n\n"),x={l0:w.length,l1:(0,h.CX)([a.promptTexts?`配置写作主控提示词:
68
- ${a.promptTexts}`:"",a.requirement?`用户要求:${a.requirement}`:"",A(a.requirement),`请只生成当前节内容,使用“### ${a.sectionTitle}”作为节标题;正文必须下沉到若干“#### 三级小节标题”下面,不得在 ### 标题后直接写大段正文。目标约 ${a.targetWords} 字${a.maxWords?`,最多不超过 ${a.maxWords} 字`:""}。`,"本章节结构已由系统按模板和提示词锁定;不得删除、重命名、合并或重排当前节标题;每个节下必须自然展开三级小节,三级小节承载正文。",g.KX]),l2:(0,h.CX)([`文档模板:${a.template.name}`,`章节标题:${a.chapter.title}`,a.projectContext?`上下文:
69
- ${l}`:"",a.factCoverageContext||"",(0,k.av)(a.chapter.title,a.sectionTitle),a.tablePlanInstruction||"",...(0,v.zC)(a.sectionTitle),t]),l3:(0,h.CX)([`当前二级小节:${a.sectionTitle}`,d.prompt,a.roleContext,a.missingFacts.length?`需要特别补足的信息:${a.missingFacts.join("、")}`:"",a.qualityFeedback?`上轮小节未通过质量检查,必须修正:${a.qualityFeedback}`:"",i?`绑定材料:
68
+ ${a.promptTexts}`:"",a.requirement?`用户要求:${a.requirement}`:"",A(a.requirement),"本章节结构已由系统按模板和提示词锁定;不得删除、重命名、合并或重排当前节标题;每个节下必须自然展开三级小节,三级小节承载正文。",g.KX]),l2:(0,h.CX)([`文档模板:${a.template.name}`,`章节标题:${a.chapter.title}`,a.projectContext?`上下文:
69
+ ${l}`:"",a.factCoverageContext||"",a.roleContext,a.missingFacts.length?`需要特别补足的信息:${a.missingFacts.join("、")}`:""]),l3:(0,h.CX)([`当前二级小节:${a.sectionTitle}`,(0,k.av)(a.chapter.title,a.sectionTitle),a.tablePlanInstruction||"",d.prompt,...(0,v.zC)(a.sectionTitle),t,`请只生成当前节内容,使用“### ${a.sectionTitle}”作为节标题;正文必须下沉到若干“#### 三级小节标题”下面,不得在 ### 标题后直接写大段正文。目标约 ${a.targetWords} 字${a.maxWords?`,最多不超过 ${a.maxWords} 字`:""}。`,a.qualityFeedback?`上轮小节未通过质量检查,必须修正:${a.qualityFeedback}`:"",i?`绑定材料:
70
70
  ${i}`:""])},y=()=>(0,h.rI)(w,u,!1,{maxTokens:Math.min((0,r.uV)(a.targetWords),Math.max(2800,Math.ceil(2.6*a.targetWords))),temperature:.25,signal:a.signal,diagnostics:a.diagnostics,contextLayers:x}),z=a.diagnostics?await (0,j.X6)(a.diagnostics,`section-draft:${a.chapter.id}:${a.sectionTitle}`,y):await y();if(!z||z.length<80)return;let B=(0,g.kT)((0,g.FD)(z.startsWith("### ")?z:`### ${a.sectionTitle}
71
71
 
72
- ${z}`,a.forbidDrawingImages)).replace(/^##\s+.*\n+/u,"").trim(),C=(0,r.ap)(a.sectionTitle),D=Math.min(Math.max(Math.floor(.7*a.targetWords),C),Math.max(500,a.targetWords)),E=(0,r.eK)(a.sectionTitle,B),G=B;if(E&&/项目主要施工内容/u.test(a.sectionTitle)){let b=(0,r.g6)(B);b===B||(0,r.eK)(a.sectionTitle,b)||(E="",G=b)}if(E&&a.allowLenientStructureGate&&/项目主要施工内容/u.test(a.sectionTitle)){let b=(0,r.sE)(a.sectionTitle,G),c=(b.match(/^####\s+/gmu)||[]).length,d=(0,r.y7)((0,r.DD)(b));c>=3&&!d&&(0,e.V7)(G)>=D&&(E="")}if(E){a.diagnostics&&(a.diagnostics.llm.lastError=`${E}:${a.chapter.title} / ${a.sectionTitle}`);return}if((0,r.zJ)(a.sectionTitle)&&(0,e.V7)(G)<D){a.diagnostics&&(a.diagnostics.llm.lastError=`section writer 正文不足:${a.chapter.title} / ${a.sectionTitle} / ${(0,e.V7)(G)}/${D}字`);return}let H=/项目主要施工内容/u.test(a.sectionTitle)?(0,r.h$)(G):G;return(0,r.ev)(a.sectionTitle,H)}async function V(a){let b=((0,r.hf)(a.sectionTitle)?[...F(a.sectionTitle,a.chapter,a.evidence),...a.evidence]:F(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),c=await Q(a.sectionTitle,b),d=b.map((a,b)=>`${b+1}. ${(0,f.T3)((0,f.eE)(a.content),900)}`).filter(Boolean).join("\n"),e=a.diagnostics?.llm.lastError,i=[(0,g.b_)("你是专业文档节内小节 Writer。只生成一个指定节,不生成整章。\n\n"+g.rd+"\n\n"+g.KX),"必须直接输出 Markdown:先输出指定 ### 节标题,再在其下生成若干 #### 三级小节承载正文;不得在 ### 后直接写大段正文;不得解释过程,不得输出资料不足、待确认、兜底等话术。"].join("\n\n"),j={l0:i.length,l1:(0,h.CX)([a.requirement?`用户要求:${a.requirement}`:"",(0,r.Uz)(a.sectionTitle),`目标正文约 ${a.targetWords} 字,最多 ${a.maxWords||Math.ceil(1.18*a.targetWords)} 字。正文必须分布在 #### 三级小节下,包含对象范围、执行措施、检查验收和资料闭环;没有精确数值时写正式过程控制,不编造数值。`,"禁止写“根据/依据招标文件、补疑澄清文件、工程量清单及设计图纸”等资料来源罗列话术;直接写项目事实、施工内容、控制措施和验收要求。",(0,r.hf)(a.sectionTitle)?"该小节属于施工组织设计通用管理小节:允许基于项目基础事实、招标范围、工期质量目标、现场组织要求和施工总承包管理逻辑形成正式措施,但不得编造具体姓名、品牌、型号、金额或不存在的日期。":""]),l2:(0,h.CX)([`章节标题:${a.chapter.title}`,(0,k.av)(a.chapter.title,a.sectionTitle),...(0,v.zC)(a.sectionTitle),a.tablePlanInstruction||""]),l3:(0,h.CX)([`指定节标题:### ${a.sectionTitle}`,c.prompt,a.qualityFeedback||"",d?`压缩证据:
73
- ${d}`:""])},l=await (0,h.rI)(i,[`章节标题:${a.chapter.title}`,`指定节标题:### ${a.sectionTitle}`,a.requirement?`用户要求:${a.requirement}`:"",(0,k.av)(a.chapter.title,a.sectionTitle),(0,r.Uz)(a.sectionTitle),...(0,v.zC)(a.sectionTitle),a.tablePlanInstruction||"",c.prompt,`目标正文约 ${a.targetWords} 字,最多 ${a.maxWords||Math.ceil(1.18*a.targetWords)} 字。正文必须分布在 #### 三级小节下,包含对象范围、执行措施、检查验收和资料闭环;没有精确数值时写正式过程控制,不编造数值。`,"禁止写“根据/依据招标文件、补疑澄清文件、工程量清单及设计图纸”等资料来源罗列话术;直接写项目事实、施工内容、控制措施和验收要求。",(0,r.hf)(a.sectionTitle)?"该小节属于施工组织设计通用管理小节:允许基于项目基础事实、招标范围、工期质量目标、现场组织要求和施工总承包管理逻辑形成正式措施,但不得编造具体姓名、品牌、型号、金额或不存在的日期。":"",a.qualityFeedback||"",d?`压缩证据:
72
+ ${z}`,a.forbidDrawingImages)).replace(/^##\s+.*\n+/u,"").trim(),C=(0,r.ap)(a.sectionTitle),D=Math.min(Math.max(Math.floor(.7*a.targetWords),C),Math.max(500,a.targetWords)),E=(0,r.eK)(a.sectionTitle,B),G=B;if(E&&/项目主要施工内容/u.test(a.sectionTitle)){let b=(0,r.g6)(B);b===B||(0,r.eK)(a.sectionTitle,b)||(E="",G=b)}if(E&&a.allowLenientStructureGate&&/项目主要施工内容/u.test(a.sectionTitle)){let b=(0,r.sE)(a.sectionTitle,G),c=(b.match(/^####\s+/gmu)||[]).length,d=(0,r.y7)((0,r.DD)(b));c>=3&&!d&&(0,e.V7)(G)>=D&&(E="")}if(E){a.diagnostics&&(a.diagnostics.llm.lastError=`${E}:${a.chapter.title} / ${a.sectionTitle}`);return}if((0,r.zJ)(a.sectionTitle)&&(0,e.V7)(G)<D){a.diagnostics&&(a.diagnostics.llm.lastError=`section writer 正文不足:${a.chapter.title} / ${a.sectionTitle} / ${(0,e.V7)(G)}/${D}字`);return}let H=/项目主要施工内容/u.test(a.sectionTitle)?(0,r.h$)(G):G;return(0,r.ev)(a.sectionTitle,H)}async function V(a){let b=((0,r.hf)(a.sectionTitle)?[...F(a.sectionTitle,a.chapter,a.evidence),...a.evidence]:F(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),c=await Q(a.sectionTitle,b),d=b.map((a,b)=>`${b+1}. ${(0,f.T3)((0,f.eE)(a.content),900)}`).filter(Boolean).join("\n"),e=a.diagnostics?.llm.lastError,i=[(0,g.b_)("你是专业文档节内小节 Writer。只生成一个指定节,不生成整章。\n\n"+g.rd+"\n\n"+g.KX),"必须直接输出 Markdown:先输出指定 ### 节标题,再在其下生成若干 #### 三级小节承载正文;不得在 ### 后直接写大段正文;不得解释过程,不得输出资料不足、待确认、兜底等话术。"].join("\n\n"),j={l0:i.length,l1:(0,h.CX)([a.requirement?`用户要求:${a.requirement}`:"","禁止写“根据/依据招标文件、补疑澄清文件、工程量清单及设计图纸”等资料来源罗列话术;直接写项目事实、施工内容、控制措施和验收要求。"]),l2:(0,h.CX)([`章节标题:${a.chapter.title}`]),l3:(0,h.CX)([`指定节标题:### ${a.sectionTitle}`,(0,r.Uz)(a.sectionTitle),(0,k.av)(a.chapter.title,a.sectionTitle),...(0,v.zC)(a.sectionTitle),a.tablePlanInstruction||"",c.prompt,`目标正文约 ${a.targetWords} 字,最多 ${a.maxWords||Math.ceil(1.18*a.targetWords)} 字。正文必须分布在 #### 三级小节下,包含对象范围、执行措施、检查验收和资料闭环;没有精确数值时写正式过程控制,不编造数值。`,(0,r.hf)(a.sectionTitle)?"该小节属于施工组织设计通用管理小节:允许基于项目基础事实、招标范围、工期质量目标、现场组织要求和施工总承包管理逻辑形成正式措施,但不得编造具体姓名、品牌、型号、金额或不存在的日期。":"",a.qualityFeedback||"",d?`压缩证据:
73
+ ${d}`:""])},l=await (0,h.rI)(i,[`章节标题:${a.chapter.title}`,a.requirement?`用户要求:${a.requirement}`:"","禁止写“根据/依据招标文件、补疑澄清文件、工程量清单及设计图纸”等资料来源罗列话术;直接写项目事实、施工内容、控制措施和验收要求。",`指定节标题:### ${a.sectionTitle}`,(0,r.Uz)(a.sectionTitle),(0,k.av)(a.chapter.title,a.sectionTitle),...(0,v.zC)(a.sectionTitle),a.tablePlanInstruction||"",c.prompt,`目标正文约 ${a.targetWords} 字,最多 ${a.maxWords||Math.ceil(1.18*a.targetWords)} 字。正文必须分布在 #### 三级小节下,包含对象范围、执行措施、检查验收和资料闭环;没有精确数值时写正式过程控制,不编造数值。`,(0,r.hf)(a.sectionTitle)?"该小节属于施工组织设计通用管理小节:允许基于项目基础事实、招标范围、工期质量目标、现场组织要求和施工总承包管理逻辑形成正式措施,但不得编造具体姓名、品牌、型号、金额或不存在的日期。":"",a.qualityFeedback||"",d?`压缩证据:
74
74
  ${d}`:""].filter(Boolean).join("\n\n"),!1,{maxTokens:Math.min(6e3,Math.max(3e3,Math.ceil(2.4*a.targetWords))),temperature:.2,signal:a.signal,diagnostics:a.diagnostics,contextLayers:j});if(!l||l.length<40){let b=a.diagnostics?.llm.lastError;a.diagnostics&&(a.diagnostics.llm.lastError=`focused writer 无正文:${a.chapter.title} / ${a.sectionTitle} / ${b&&b!==e?b:"空响应"}`);return}let m=(0,g.kT)((0,g.FD)(l.startsWith("### ")?l:`### ${a.sectionTitle}
75
75
 
76
76
  ${l}`,a.forbidDrawingImages)),n=(0,r.DD)(m);if(n.length<40){a.diagnostics&&(a.diagnostics.llm.lastError=`focused writer 正文过短:${a.chapter.title} / ${a.sectionTitle} / ${n.length}字`);return}let o=(0,r.eK)(a.sectionTitle,m);if(o){a.diagnostics&&(a.diagnostics.llm.lastError=`focused writer ${o}:${a.chapter.title} / ${a.sectionTitle}`);return}return(0,r.ev)(a.sectionTitle,m.replace(/^##\s+.*\n+/u,"").trim())}async function W(a){let b=(0,e.V7)(a.currentContent),c=(0,r.ap)(a.sectionTitle),d=Math.max(a.targetWords,c)-b,i=F(a.sectionTitle,a.chapter,a.evidence),j=await Q(a.sectionTitle,i);if(d<=Math.max(260,Math.floor(.12*a.targetWords)))return a.currentContent;let l=(0,f.ks)((0,f.QO)(a.chapter,i),{maxChars:(0,f.Pc)(Math.min(a.targetWords,2600),3500,9e3),requiredFacts:a.chapter.requiredFacts,diagnostics:a.diagnostics}),m=Math.max(500,d),n=[(0,g.b_)("你是专业文档小节补写专家。只做补写,不重写全文。\n\n"+g.rd+"\n\n"+g.KX),"必须保留已有正文中的事实、参数、编号和结构;只补充缺口段落,不删除、不压缩已有内容。"].filter(Boolean).join("\n\n"),o={l0:n.length,l1:(0,h.CX)([a.promptTexts?`配置写作主控提示词:
@@ -85,12 +85,11 @@ ${q}`:a.currentContent}async function X(a){if((0,r.hf)(a.sectionTitle)){let b=aw
85
85
 
86
86
  ${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 W({...a,currentContent:k,targetWords:a.targetWords}),(0,g.kT)((0,g.FD)(k,a.forbidDrawingImages))}async function Y(a){let b=D(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),j=0,k=b.map(a=>a.title),m=(0,l.nn)(a.chapter,k),n=b.length-1,o=async(c,d=!1)=>{a.onSectionProgress?.({completed:j,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,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===n?m:[])},g=c.targetWords>=1400?await X({...e,signal:a.signal}):await Z({...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 g&&(j+=1,f[c.index]=g,a.onSectionProgress?.({completed:j,total:b.length,sectionTitle:c.title,phase:"complete",partialSections:[...f]})),g}catch(b){console.warn(`[document-workflow] 小节生成失败:${a.chapter.title} / ${c.title}`,b);return}},p=b.length;for(let c=0;c<p;){(0,i.Te)(a.signal);let f=(0,h.bU)(a.diagnostics)>=5?1:d,g=b.slice(c,Math.min(p,c+f));(await Promise.all(g.map((a,b)=>o({...a,index:c+b})))).forEach((a,b)=>{e[c+b]=a}),c+=f}let q=e.map((a,b)=>a?-1:b).filter(a=>a>=0),r=q;if(r.length>0){for(let c=0;c<r.length;){(0,i.Te)(a.signal);let f=(0,h.bU)(a.diagnostics)>=5?1:d,g=r.slice(c,c+f);(await Promise.all(g.map(a=>o({...b[a],index:a},!0)))).forEach((a,b)=>{a&&(e[g[b]]=a)}),c+=f}q=e.map((a,b)=>a?-1:b).filter(a=>a>=0);for(let c=0;c<q.length;){(0,i.Te)(a.signal);let f=(0,h.bU)(a.diagnostics)>=5?1:d,g=q.slice(c,c+f);(await Promise.all(g.map(a=>o({...b[a],targetWords:Math.max(b[a].targetWords,900),index:a},!0)))).forEach((a,b)=>{a&&(e[g[b]]=a)}),c+=f}}(q=e.map((a,b)=>a?-1:b).filter(a=>a>=0)).length>0&&a.diagnostics&&(a.diagnostics.llm.lastError=`章级生成缺失小节:${a.chapter.title} / ${q.map(a=>b[a].title).join("、")}`);let s=e.map(a=>a||"");return(0,g.kT)((0,g.FD)(`## ${a.chapter.title}
87
87
 
88
- ${s.join("\n\n")}`,a.forbidDrawingImages))}async function Z(a,b){let c;for(let d=0;d<b;d+=1){let b=await U({...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)),f=(0,l.nn)(a.chapter,d),j=c.map((b,d)=>{let e=(a.chapter.tablePlans||[]).filter(a=>{if(f.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,...f]:e}),k=Number(process.env.DOCUMENT_PLANNED_BLOCK_CONCURRENCY||c.length),m=Math.max(1,Math.min(c.length,(0,h.Sq)(),Number.isFinite(k)?Math.floor(k):c.length)),n=Array(c.length).fill(void 0),o=async(b,c)=>{let d=b.subPoints.map(a=>a.title),f=E(`${b.title} ${d.join(" ")}`).filter(a=>a.length>=2),g=[...a.evidence.map(a=>({item:a,score:f.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(()=>[]):[]],h={...a.chapter,title:b.title,sections:d,tablePlans:j[c]||[]},k=b.facts.length?`【本主题块专属事实(只能在本节使用,不得重复出现在本章其他节)】${b.facts.map(a=>`- ${a}`).join("\n")}`:"",l=b.subPoints.map(a=>a.sources.length>1?`- #### ${a.title}(覆盖评分细目:${a.sources.join("、")})`:`- #### ${a.title}`).join("\n"),m=[a.roleContext||"",k,`本节是「${a.chapter.title}」章的一个主题小节,只写本节标题覆盖的内容,不得重复本章其他节内容;必须按以下 H4 要点逐点写出实施性正文,H4 标题必须与给定标题完全一致,不得改名、合并或遗漏;每个 H4 必须覆盖其标注的全部评分细目内容,但不得为这些细目单独开设小节标题:
89
- ${l}`].filter(Boolean).join("\n\n"),n=[],p=[];for(let c=0;c<2;c+=1){let f=0===c?"":["【上一轮未通过质检】",n.length?`缺失 H4 要点标题:${n.join("、")}。必须逐点补齐以上 H4 标题并展开正式正文,H4 标题与给定标题完全一致。`:"",p.length?`重复展开的 H4 要点标题:${p.join("、")}。同一小节内相同要点被重复展开多轮,必须只保留一轮完整展开,其余重复小节连同标题整体删除,不得以换编号方式重复同一内容。`:"",0===n.length&&0===p.length?"必须完整包含每个 H4 要点标题并展开正文,不得合并或遗漏要点。":"","总字数不少于目标字数。"].filter(Boolean).join("");try{let j=await C(a.template,h,g,a.missingFacts,a.promptTexts,a.projectContext,a.requirement,f?`${m}
88
+ ${s.join("\n\n")}`,a.forbidDrawingImages))}async function Z(a,b){let c;for(let d=0;d<b;d+=1){let b=await U({...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)),j=(0,l.nn)(a.chapter,d),k=c.map((b,d)=>{let e=(a.chapter.tablePlans||[]).filter(a=>{if(j.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,...j]:e}),m=Number(process.env.DOCUMENT_PLANNED_BLOCK_CONCURRENCY||c.length),n=Math.max(1,Math.min(c.length,(0,h.Sq)(),Number.isFinite(m)?Math.floor(m):c.length)),o=Array(c.length).fill(void 0),p=(0,f.qy)((0,f.QO)(a.chapter,a.evidence),(0,f.Pc)(a.targetWords),a.chapter.requiredFacts||[]).t0Text,q=async(b,c)=>{let d=b.subPoints.map(a=>a.title),f=E(`${b.title} ${d.join(" ")}`).filter(a=>a.length>=2),g=[...a.evidence.map(a=>({item:a,score:f.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(()=>[]):[]],h={...a.chapter,title:b.title,sections:d,tablePlans:k[c]||[]},j=b.facts.length?`【本主题块专属事实(只能在本节使用,不得重复出现在本章其他节)】${b.facts.map(a=>`- ${a}`).join("\n")}`:"",l=b.subPoints.map(a=>a.sources.length>1?`- #### ${a.title}(覆盖评分细目:${a.sources.join("、")})`:`- #### ${a.title}`).join("\n"),m=[a.roleContext||"",j,`本节是「${a.chapter.title}」章的一个主题小节,只写本节标题覆盖的内容,不得重复本章其他节内容;必须按以下 H4 要点逐点写出实施性正文,H4 标题必须与给定标题完全一致,不得改名、合并或遗漏;每个 H4 必须覆盖其标注的全部评分细目内容,但不得为这些细目单独开设小节标题:
89
+ ${l}`].filter(Boolean).join("\n\n"),n=[],o=[];for(let c=0;c<2;c+=1){let f=0===c?"":["【上一轮未通过质检】",n.length?`缺失 H4 要点标题:${n.join("、")}。必须逐点补齐以上 H4 标题并展开正式正文,H4 标题与给定标题完全一致。`:"",o.length?`重复展开的 H4 要点标题:${o.join("、")}。同一小节内相同要点被重复展开多轮,必须只保留一轮完整展开,其余重复小节连同标题整体删除,不得以换编号方式重复同一内容。`:"",0===n.length&&0===o.length?"必须完整包含每个 H4 要点标题并展开正文,不得合并或遗漏要点。":"","总字数不少于目标字数。"].filter(Boolean).join("");try{let j=await C(a.template,h,g,a.missingFacts,a.promptTexts,a.projectContext,a.requirement,f?`${m}
90
90
 
91
- ${f}`:m,{forbidDrawingImages:a.forbidDrawingImages,compactProjectContext:a.compactProjectContext,scopedProjectContext:a.scopedProjectContext,minWords:Math.floor(.6*b.targetWords),targetWords:b.targetWords,maxWords:Math.ceil(1.1*b.targetWords),maxTokens:Math.max(3200,Math.ceil(1.5*b.targetWords)),disableThinkingBoost:!0,factCoverageContext:`${a.factCoverageContext||""}${k?`
92
- ${k}`:""}`,twoStep:!1,signal:a.signal,diagnostics:a.diagnostics});if(!j)continue;let l=j.replace(/^##\s+.+$/mu,"").trim(),o=(0,r.KJ)(d,l),q=/^###\s+\S+/mu.test(o)?o:`### ${b.title}
91
+ ${f}`:m,{forbidDrawingImages:a.forbidDrawingImages,compactProjectContext:a.compactProjectContext,scopedProjectContext:a.scopedProjectContext,minWords:Math.floor(.6*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:p,factCoverageContext:a.factCoverageContext||"",twoStep:!1,signal:a.signal,diagnostics:a.diagnostics});if(!j)continue;let k=j.replace(/^##\s+.+$/mu,"").trim(),l=(0,r.KJ)(d,k),q=/^###\s+\S+/mu.test(l)?l:`### ${b.title}
93
92
 
94
- ${o}`,s=(0,e.V7)(q),t=d.filter(a=>!q.includes(a)),u=(0,i.W6)(q);if(s>=Math.max(400,Math.floor(.4*b.targetWords))&&0===t.length&&0===u.length)return q;if(n=t,p=u,1===c&&0===t.length&&u.length>0){let a=(0,i.wq)(q);if((0,e.V7)(a)>=Math.max(400,Math.floor(.4*b.targetWords)))return a}a.diagnostics&&1===c&&(a.diagnostics.llm.lastError=`规划块质检未达标:${b.title}(${s} 字,缺 ${t.join("、")||"无"}${u.length?`,重复 H4 ${u.join("、")}`:""})`)}catch(b){a.diagnostics&&1===c&&(a.diagnostics.llm.lastError=b instanceof Error?b.message:String(b))}}if(b.subPoints.length>=4){let d=Math.ceil(b.subPoints.length/2),e=Math.max(800,Math.floor(b.targetWords/2)),f=await Promise.all([o({...b,title:`${b.title}(一)`,subPoints:b.subPoints.slice(0,d),targetWords:e},c),o({...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}`)}},p=async(b,d)=>{n[d]=await o(b,d),n[d]&&a.onSectionProgress?.({completed:n.filter(Boolean).length,total:c.length,sectionTitle:b.title,phase:"complete",partialSections:[...n]})};for(let b=0;b<c.length;b+=m){(0,i.Te)(a.signal);let d=c.slice(b,b+m);await Promise.all(d.map((a,c)=>p(a,b+c)))}if(n.some(a=>!a))return;let q=n.join("\n\n");if(q.trim())return(0,g.kT)((0,g.FD)(`## ${a.chapter.title}
93
+ ${l}`,s=(0,e.V7)(q),t=d.filter(a=>!q.includes(a)),u=(0,i.W6)(q);if(s>=Math.max(400,Math.floor(.4*b.targetWords))&&0===t.length&&0===u.length)return q;if(n=t,o=u,1===c&&0===t.length&&u.length>0){let a=(0,i.wq)(q);if((0,e.V7)(a)>=Math.max(400,Math.floor(.4*b.targetWords)))return a}a.diagnostics&&1===c&&(a.diagnostics.llm.lastError=`规划块质检未达标:${b.title}(${s} 字,缺 ${t.join("、")||"无"}${u.length?`,重复 H4 ${u.join("、")}`:""})`)}catch(b){a.diagnostics&&1===c&&(a.diagnostics.llm.lastError=b instanceof Error?b.message:String(b))}}if(b.subPoints.length>=4){let d=Math.ceil(b.subPoints.length/2),e=Math.max(800,Math.floor(b.targetWords/2)),f=await Promise.all([q({...b,title:`${b.title}(一)`,subPoints:b.subPoints.slice(0,d),targetWords:e},c),q({...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}`)}},s=async(b,d)=>{o[d]=await q(b,d),o[d]&&a.onSectionProgress?.({completed:o.filter(Boolean).length,total:c.length,sectionTitle:b.title,phase:"complete",partialSections:[...o]})};for(let b=0;b<c.length;b+=n){(0,i.Te)(a.signal);let d=c.slice(b,b+n);await Promise.all(d.map((a,c)=>s(a,b+c)))}if(o.every(a=>!a))return;let t=c.map((a,b)=>({index:b,block:a})).filter(({index:a})=>!o[a]),u=(0,g.kT)((0,g.FD)(`## ${a.chapter.title}
95
94
 
96
- ${q}`,a.forbidDrawingImages))}}};
95
+ ${o.filter(Boolean).join("\n\n")}`,a.forbidDrawingImages));return 0===t.length?{sections:o,failedBlocks:t,allSucceeded:!0,markdown:u}:(a.diagnostics&&t.length>0&&(a.diagnostics.llm.lastError=`规划块部分失败:${t.map(({block:a})=>a.title).join("、")}`),{sections:o,failedBlocks:t,allSucceeded:!1,markdown:u})}}};
@@ -1,7 +1,7 @@
1
1
  "use strict";exports.id=5726,exports.ids=[5726],exports.modules={5726:(a,b,c)=>{c.d(b,{pR:()=>A,hK:()=>J,Hd:()=>B,H1:()=>t,Uv:()=>x,Ah:()=>D,Q3:()=>E,$v:()=>K,ze:()=>N,Al:()=>L,$g:()=>C});var d=c(73024),e=c(48161),f=c(76760),g=c(19898),h=c(28103),i=c(37047),j=c(95734);function k(a,b){if(a.length<=b)return a;let c=a.length/b,d=[];for(let e=0;d.length<b&&e<b;e+=1)d.push(a[Math.floor(e*c)]||a[0]);return d}async function l(a,b){let c=k(a,250);if(!(c.length<8))try{let a=b?null:(0,i.VN)(),d=b?await b(c):a?await a.embedDocuments(c):[];if(d.length!==c.length)return;let e=0,f=0;for(let a=0;a<c.length;a+=1)for(let b=a+1;b<c.length;b+=1)f+=1,function(a,b){let c=Math.min(a.length,b.length),d=0;for(let e=0;e<c;e+=1)d+=a[e]*b[e];return d}(d[a]||[],d[b]||[])>=.85&&(e+=1);return{semanticDuplicationRate:f>0?e/f:0,semanticSegmentCount:c.length}}catch{return}}async function m(a){let b=k(a,300);if(0===b.length)return;let c=[];for(let d=0;d<b.length;d+=60){let e=b.slice(d,d+60),f=e.map((a,b)=>`【块${b}】${a.slice(0,400)}`).join("\n"),g=await (0,j.bb)('你是施工组织设计质量标注专家。逐块判定(只依据该块文本,不联想上下文):\n1. fiveElementComplete:该块是否同时具备措施五要素——方案(制定/编制/建立/采用…制度、方案、措施)、流程(工序/步骤/顺序)、责任人(项目经理/技术负责人/施工员/质检员/安全员等具体岗位)、时间节点(每日/每周/每月/不少于X次/24小时等量化频次)、验收标准(验收/整改/复查/销项/闭环/合格)。五要素齐备才判 true,缺任一要素判 false。\n2. arrowChain:该块是否描述施工工序先后关系或流程推进顺序(含"先…再…后…"自然语言表述,不要求出现"→"符号)。\n只输出 JSON,格式:{"blocks":[{"fiveElementComplete":true,"arrowChain":false}]},与输入块顺序一一对应。',f,{maxTokens:4e3,temperature:0,disableThinkingBoost:!0});if(!g?.blocks||0===g.blocks.length)break;let h=[];for(let a=0;a<e.length;a+=1){let b=g.blocks[a];h.push({fiveElementComplete:!!b?.fiveElementComplete,arrowChain:!!b?.arrowChain})}c.push({batch:h,totalBlocks:a.length})}return c.length>0?c:void 0}async function n(a,b){try{let c=a.slice(0,12e3),d=await (0,j.bb)('你是施工组织设计评审专家。基于提供的参考施组样本(节选),输出质量点评 JSON:\n{"highlights":["值得对标的亮点,每条≤40字,最多5条"],"weaknesses":["明显短板,每条≤40字,最多5条"],"benchmarkable":"一段≤80字的最值得对标点总结"}。只输出 JSON。',`章节结构:${b.slice(0,12).join(" / ")}
2
2
 
3
3
  样本节选:
4
- ${c}`,{maxTokens:1200,temperature:0,disableThinkingBoost:!0});if(!d)return;return{highlights:Array.isArray(d.highlights)?d.highlights.slice(0,5):[],weaknesses:Array.isArray(d.weaknesses)?d.weaknesses.slice(0,5):[],benchmarkable:"string"==typeof d.benchmarkable?d.benchmarkable:""}}catch{return}}async function o(a,b,c){let d=a.split(/\n+/u).map(a=>a.replace(/\s+/gu," ").trim()).filter(a=>a.length>=16&&/[\u4e00-\u9fa5]/u.test(a)),e=a.split(/\n{2,}/u).map(a=>a.replace(/\s+/gu," ").trim()).filter(a=>a.length>=30);if(0===d.length&&0===e.length)return;let f={semanticDuplicationRate:0,semanticSegmentCount:0,enrichedAt:Date.now()},g=await l(d,c);g&&(f.semanticDuplicationRate=g.semanticDuplicationRate,f.semanticSegmentCount=g.semanticSegmentCount);let h=await m(e);if(h){let a=0,b=0,c=0;for(let d of h)a+=d.batch.filter(a=>a.fiveElementComplete).length,b+=d.batch.filter(a=>a.arrowChain).length,c+=d.batch.length;if(c>0){let d=h[0]?.totalBlocks||e.length;f.llmFiveElement={completeBlocks:Math.round(a/c*d),sampledBlocks:c,totalBlocks:d},f.llmArrowChain={chainSegments:b,sampledSegments:c,totalSegments:e.length}}}return f.qualityNotes=await n(a,b),g||h||f.qualityNotes?f:void 0}function p(){let a=f.join(e.homedir(),".customize-agent","template-references");return d.mkdirSync(f.join(a,"files"),{recursive:!0}),a}function q(){return f.join(p(),"references.json")}function r(){try{let a=q();if(!d.existsSync(a))return[];let b=JSON.parse(d.readFileSync(a,"utf-8"));return Array.isArray(b)?b:[]}catch{return[]}}function s(a){d.writeFileSync(q(),JSON.stringify(a,null,2),"utf-8")}function t(){return r().sort((a,b)=>b.uploadedAt-a.uploadedAt)}function u(a){return t().filter(b=>b.projectType===a)}async function v(a){let b=d.statSync(a),c=new g.FileClassifier().classify(a,f.basename(a),b),e=new g.ContentExtractor,h=((await e.extract(c)).text||"").trim();if(!h)throw Error("文件未能提取到有效文本(可能是扫描件或加密文件)");return h}let w=null;function x(){return w??=y().finally(()=>{w=null})}async function y(){let a=r(),b=a.filter(a=>"ready"===a.status&&4!==a.profileVersion);if(0===b.length)return;let c=!1;for(let a of b){let b=f.join(p(),a.filePath);if(d.existsSync(b))try{let d=await v(b);a.qualityProfile=await (0,h.WT)(d),a.profileVersion=4,c=!0}catch{}}for(let e of(c&&s(a),b)){let a=f.join(p(),e.filePath);"ready"===e.status&&d.existsSync(a)&&z(e,a)}}async function z(a,b){try{let c=await v(b),d=await o(c,a.qualityProfile?.headingStructure||[]);if(!d)return;let e=r(),f=e.find(b=>b.id===a.id);if(!f||!f.qualityProfile)return;f.qualityProfile={...f.qualityProfile,semantic:d},s(e)}catch{}}async function A(a){let b=p(),c=`ref-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`,e=f.extname(a.fileName)||".pdf",g=`${c}${e.toLowerCase()}`,i=f.join(b,"files",g);d.copyFileSync(a.tempFilePath,i);let j=d.statSync(i).size,k={id:c,fileName:a.fileName,projectType:a.projectType||"其他",typeSource:a.projectType?"manual":"auto",uploadedAt:Date.now(),fileSize:j,filePath:f.join("files",g),status:"parsing"},l=r();l.push(k),s(l);try{let a=await v(i);k.qualityProfile=await (0,h.WT)(a),k.profileVersion=4,k.textSlices=function(a,b=8){let c=a.split(/\n{2,}|\r\n\r\n/u).map(a=>a.replace(/\s+/gu," ").trim()).filter(a=>a.length>=20),d=Math.max(1,Math.floor(c.length/b)),e=[];for(let a=0;a<c.length&&e.length<b;a+=d)e.push(c[a].slice(0,300));return[...new Set(e)]}(a),k.status="ready","auto"===k.typeSource&&(k.projectType=(0,h.aF)(a)),s(l),z(k,i)}catch(a){k.status="failed",k.errorMessage=a instanceof Error?a.message:"解析失败",s(l)}return k}function B(a){let b=r(),c=b.find(b=>b.id===a);if(!c)return!1;s(b.filter(b=>b.id!==a));let e=f.join(p(),c.filePath);try{d.existsSync(e)&&d.unlinkSync(e)}catch{}return!0}function C(a,b){let c=r(),d=c.find(b=>b.id===a);if(d)return d.projectType=b,d.typeSource="manual",s(c),d}function D(a){let b=u(a).filter(a=>"ready"===a.status&&a.qualityProfile);if(0===b.length)return;let c=b.map(a=>a.qualityProfile),d=I(c),e=c[0];return{profile:{wordCount:F(c.map(a=>a.wordCount)),effectiveWordCount:F(c.map(a=>a.effectiveWordCount)),paramDensity:d.paramDensity.avg,paramCount:Math.round(F(c.map(a=>a.paramCount))),arrowChainCoverage:d.arrowChainCoverage.avg,duplicationRate:d.duplicationRate.avg,tableCount:Math.round(d.tableCount.avg),sectionCount:Math.round(d.sectionCount.avg),subsectionCount:Math.round(d.subsectionCount.avg),subitemCount:Math.round(d.subitemCount.avg),avgSectionWords:d.avgSectionWords.avg,headingStructure:e.headingStructure,tableTitles:e.tableTitles,paramTokens:e.paramTokens,segmentCount:Math.round(F(c.map(a=>a.segmentCount||0))),arrowChainSegmentCount:Math.round(F(c.map(a=>a.arrowChainSegmentCount||0))),duplicatedSegmentCount:Math.round(F(c.map(a=>a.duplicatedSegmentCount||0))),fiveElementCompleteBlocks:Math.max(0,...c.map(a=>a.fiveElementCompleteBlocks||0))},sourceCount:b.length}}function E(a){let b=u(a).filter(a=>"ready"===a.status&&a.qualityProfile?.headingStructure?.length);if(0!==b.length)return{text:H(b.map(a=>(a.qualityProfile.headingStructure||[]).map(a=>({value:a})))).slice(0,12).map(a=>a.value).map((a,b)=>`第${["一","二","三","四","五","六","七","八","九","十","十一","十二"][b]??b+1}章 ${a}`).join("\n"),sourceCount:b.length}}function F(a){return a.length>0?a.reduce((a,b)=>a+b,0)/a.length:0}function G(a){return{avg:F(a),min:a.length?Math.min(...a):0,max:a.length?Math.max(...a):0}}function H(a){let b=new Map;for(let c of a)for(let a of c)b.set(a.value,(b.get(a.value)||0)+(a.weight??1));return[...b.entries()].map(([a,b])=>({value:a,count:b})).sort((a,b)=>b.count-a.count)}function I(a){if(0===a.length){let a={avg:0,min:0,max:0};return{paramDensity:{...a},arrowChainCoverage:{...a},duplicationRate:{...a},tableCount:{...a},sectionCount:{...a},subsectionCount:{...a},subitemCount:{...a},avgSectionWords:{avg:0}}}let b=a.map(a=>a.paramDensity),c=a.map(a=>a.arrowChainCoverage),d=a.map(a=>a.duplicationRate),e=a.reduce((a,b)=>a+(b.effectiveWordCount||b.wordCount),0),f=a.reduce((a,b)=>a+b.paramCount,0),g=a.reduce((a,b)=>a+(b.segmentCount||0),0),h=a.reduce((a,b)=>a+(b.arrowChainSegmentCount||0),0),i=a.reduce((a,b)=>a+(b.duplicatedSegmentCount||0),0),j=a.reduce((a,b)=>a+b.sectionCount,0);return{paramDensity:{avg:e>0?1e3*f/e:0,min:Math.min(...b),max:Math.max(...b)},arrowChainCoverage:{avg:g>0?h/g:0,min:Math.min(...c),max:Math.max(...c)},duplicationRate:{avg:g>0?i/g:0,min:Math.min(...d),max:Math.max(...d)},tableCount:G(a.map(a=>a.tableCount)),sectionCount:G(a.map(a=>a.sectionCount)),subsectionCount:G(a.map(a=>a.subsectionCount||0)),subitemCount:G(a.map(a=>a.subitemCount||0)),avgSectionWords:{avg:j>0?Math.round(e/j):0}}}function J(){let a=t().filter(a=>"ready"===a.status&&a.qualityProfile),b=new Map;for(let c of a){let a=b.get(c.projectType)||[];a.push(c),b.set(c.projectType,a)}let c=[];for(let[a,d]of b){let b=d.map(a=>a.qualityProfile),e=H(b.map(a=>(a.headingStructure||[]).map(a=>({value:a})))),f=H(b.map(a=>(a.tableTitles||[]).map(a=>({value:a})))),g=H(b.map(a=>(a.paramTokens||[]).map(a=>({value:a.token,weight:a.count}))));c.push({projectType:a,sourceCount:d.length,totalWords:b.reduce((a,b)=>a+b.wordCount,0),updatedAt:Math.max(...d.map(a=>a.uploadedAt)),metrics:I(b),typicalHeadings:e.slice(0,16).map(a=>({title:a.value,count:a.count,ratio:d.length>0?Math.min(1,a.count/d.length):0})),commonTables:f.slice(0,10).map(a=>({title:a.value,count:a.count})),frequentParams:g.slice(0,12).map(a=>({token:a.value,count:a.count}))})}return c.sort((a,b)=>b.sourceCount-a.sourceCount)}function K(a){let b=(0,h.aF)([a.templateName,...a.chapterTitles,a.requirement].filter(Boolean).join(" ")),c=u(b).filter(a=>"ready"===a.status&&a.qualityProfile);if(0===c.length)return[];let d=c.map(a=>a.qualityProfile),e=c.length,f=F(d.map(a=>a.wordCount)),g=f>0?Math.max(.3,Math.min(2,a.targetWords/f)):1,i=H(d.map(a=>(a.headingStructure||[]).map(a=>({value:a})))).filter(a=>a.count>=Math.ceil(e/2)).slice(0,12),j=H(d.map(a=>(a.paramTokens||[]).map(a=>({value:a.token,weight:a.count})))),k=[`同类工程(${b})参考特征(来自 ${e} 份优秀入围文件画像,仅供软性参考;任何项目专属数字与参数仍必须以知识库证据为准,为对齐特征而编造参数、虚构表格或堆砌无意义内容严格禁止):`],l=I(d),m=l.paramDensity.avg,n=l.arrowChainCoverage.avg,o=l.sectionCount.avg>0?l.tableCount.avg/l.sectionCount.avg:0,p=l.avgSectionWords.avg;k.push(`- 工艺参数密度参考:约 ${(m*g).toFixed(1)} 个/千字(同类工程画像均值 ${m.toFixed(1)},已按本项目篇幅折减);参数应来自已确认事实与专业知识,不得编造。`);let q=Math.max(n,.08);return k.push(`- 工序顺序表达覆盖率参考:含工序顺序表达(顺序词叙述/编号步骤/有序无序列表/箭头链任一形式,形式由模型自然选择)的段落占比不低于 ${Math.round(100*q)}%(同类工程画像均值 ${Math.round(100*n)}%,已按生成侧门禁取下限);施工与流程小节宜用工序顺序表达串联工艺步骤。`),k.push(`- 表格参考:同类工程平均每章约 ${o.toFixed(1)} 张正式表格(在事实允许的前提下合理配置)。`),k.push(`- 章节体量参考:同类工程平均约 ${Math.round(l.sectionCount.avg)} 章、平均每章约 ${p} 字;实际以模板章节与篇幅目标为准。`),i.length>0&&k.push(`- 典型章节结构参考(出现于半数以上样本,仅供结构参考,不强制):${i.map(a=>a.value).join("、")}`),j.length>0&&k.push(`- 高频工艺参数种类参考:${j.slice(0,12).map(a=>a.value).join("、")}(同类型优秀样本中出现频次最高的工艺参数词条,施工方法小节可按专业实际与通用规范自然使用这些参数种类;项目专属数值必须来自知识库证据,不得为凑密度编造)。`),k}function L(a){let b=u((0,h.aF)([a.templateName,...a.chapterTitles,a.requirement].filter(Boolean).join(" "))).filter(a=>"ready"===a.status&&a.qualityProfile);if(0===b.length)return[];let c=b.map(a=>a.qualityProfile),d=Math.ceil(b.length/2),e=new Map,f=new Map;for(let a of c){let b=new Set;(a.headingStructure||[]).forEach((a,c)=>{if(f.set(a,(f.get(a)||0)+1),b.has(a))return;b.add(a);let d=e.get(a)||{sum:0,count:0};d.sum+=c,d.count+=1,e.set(a,d)})}let g=[...f.entries()].filter(([,a])=>a>=d).sort((a,b)=>{let c=e.get(a[0]),d=e.get(b[0]);return c.sum/c.count-d.sum/d.count}).map(([a])=>a).slice(0,10),i=c.reduce((a,b)=>a+b.sectionCount,0),j=c.reduce((a,b)=>a+(b.subsectionCount||0),0),k=c.reduce((a,b)=>a+(b.subitemCount||0),0),l=["- 写法骨架参考(同类优秀样本的展开模式,仅供结构参照;样本中的任何数值与原文句子都不得复制):"];g.length>=3&&l.push(`- 章节推进骨架:${g.join(" → ")}(出现于半数以上样本的一级章节按典型顺序排列,仅作结构参照,不强制)。`),i>0&&l.push(`- 分层展开深度:同类样本平均每章约 ${(j/i).toFixed(1)} 个二级小节、${(k/i).toFixed(1)} 个三级子目——范文把方案分层展开到具体措施条目,而不是整段综述概括。`);let m=g.filter(a=>/施工方案|施工方法|施工内容|施工部署|分部分项/u.test(a)).slice(0,4);return m.length>0&&l.push(`- 方案章节典型组织:同类样本中方案类章节以「${m.join("」「")}」等标题独立成章,逐分项展开,不并入项目概况章节。`),l.push("- 分部分项展开模式:同类样本按“施工概况(作业对象、部位、工程量)→工艺流程(工序顺序表达串联关键工序)→施工方法(工具机具、材料规格、工艺参数、验收标准)”三段逐分项展开;方法段正文以工序顺序表达(形式由模型自然选择:顺序词叙述、编号步骤、有序/无序列表或箭头链均可)串联连续工序,工艺参数落位在方法叙述中而非单独罗列清单。"),l}function M(a){return a.replace(/^第[一二三四五六七八九十百千\d]+[章节篇][、..]?\s*/u,"").replace(/^\d+(?:\.\d+)*[、..]?\s*/u,"").trim()}function N(a){let b=(0,h.aF)([a.templateName,...a.chapterTitles].join(" ")),c=u(b).filter(a=>"ready"===a.status&&a.qualityProfile);if(0===c.length)return;let d=H(c.map(a=>a.qualityProfile).map(a=>(a.headingStructure||[]).map(a=>({value:a})))),e=new Set(a.chapterTitles.map(M)),f=d.filter(a=>a.count>=Math.ceil(c.length/2)).filter(a=>!e.has(M(a.value))).slice(0,6).map(a=>({title:a.value,ratio:Math.min(1,a.count/c.length)}));return f.length>0?{projectType:b,sourceCount:c.length,missingHeadings:f}:void 0}},22157:(a,b,c)=>{c.d(b,{Kd:()=>t,TP:()=>s,Te:()=>r,V:()=>f,VX:()=>o,W6:()=>i,Xl:()=>k,Z1:()=>g,c6:()=>p,hh:()=>u,jf:()=>w,l$:()=>v,lG:()=>q,tU:()=>n,wq:()=>j});var d=c(77598),e=c(78217);let f=/项目主要施工内容|主要分部分项工程施工方案|主要施工方法/u;function g(a){return!!a&&!!(/→|->|=>/u.test(a)||/按.{0,12}顺序|依次|先后|先.{0,12}(?:后|再|然后|最后)|顺序施工|流水顺序/u.test(a)||(a.match(/(?:^|\n)\s*(?:\d+[.、]|[((]\d+[))]|[一二三四五六七八九十]+[、.]|第[一二三四五六七八九十]+步)/gmu)||[]).length>=2||(a.match(/(?:^|\n)\s*(?:[-*•]|\d+\.)\s+\S/gmu)||[]).length>=2||/[\u4e00-\u9fa5]+(?:-|—|~|~)[\u4e00-\u9fa5]+(?:-|—|~|~)[\u4e00-\u9fa5]+/u.test(a))}function h(a){return a.replace(/^\d+(?:\.\d+)*\s*/u,"").replace(/[((][^()()]*[))]/gu,"").replace(/[\s::、。,,;;/|—-]/gu,"")}function i(a){let b=a.split(/\r?\n/u),c="",d=new Map,e=[];for(let a of b){let b=/^(#{2,6})\s+(.+)$/u.exec(a.trim());if(!b)continue;let f=b[1].length;if(2===f){c="";continue}if(3===f){c=b[2].trim();continue}if(4!==f)continue;let g=`${c}::${h(b[2].trim())}`;if(!g)continue;let i=(d.get(g)||0)+1;d.set(g,i),i>=2&&e.push(b[2].trim())}return e}function j(a){let b=a.split(/\r?\n/u),c=[],d="",e=new Set,f=!1;for(let a of b){let b=/^(#{2,6})\s+(.+)$/u.exec(a.trim());if(b){let g=b[1].length;if(g<=3&&(d=3===g?b[2].trim():"",e.clear()),f=!1,4===g){let g=`${d}::${h(b[2].trim())}`;if(!g){c.push(a);continue}if(e.has(g)){f=!0;continue}e.add(g)}c.push(a);continue}f||c.push(a)}return c.join("\n")}function k(a,b,c={}){if(!c.fuzzy){let c=l(a,b,/^###\s+(?:\d+(?:\.\d+)*\s+)?/u);return c||l(a,b,/^#{3,4}\s+(?:\d+(?:\.\d+)*\s+)?/u)}return function(a,b){let c=a.split("\n"),d=m(b).replace(/\s+/gu,"").toLowerCase(),g=[],h=-1,i=0,j=!1,k=a=>{if(h<0)return;let b=c.slice(h,a).join("\n").trim();b&&g.push(b),h=-1,i=0,j=!1};for(let a=0;a<c.length;a+=1){if(!/^\s*#{2,4}\s+/u.test(c[a]))continue;let e=/^\s*(#{2,4})\s+/u.exec(c[a])?.[1].length||3;if(h>=0&&(j||3===i)&&4===e)continue;k(a);let g=m(c[a]).replace(/\s+/gu,"").toLowerCase();(g===d||g.includes(d)||o(c[a],b))&&(h=a+1,i=e,j=e<=4&&f.test(c[a]))}return k(c.length),g.sort((a,b)=>(0,e.V7)(b)-(0,e.V7)(a))[0]||""}(a,b)}function l(a,b,c){let d=a.split("\n"),e=d.findIndex(a=>c.test(a.trim())&&a.includes(b));if(e<0)return"";let g=/^(#{2,6})\s+/u.exec(d[e].trim())?.[1].length||3,h=4===g&&f.test(b),i=d.length;for(let a=e+1;a<d.length;a+=1){let b=/^(#{2,6})\s+/u.exec(d[a].trim());if(b&&b[1].length<=g&&!(h&&b[1].length===g)){i=a;break}}return d.slice(e,i).join("\n")}function m(a){return a.replace(/^\s*#{2,4}\s*/u,"").replace(/^\s*(?:\d+(?:\.\d+)*|[一二三四五六七八九十]+)(?:[、..]|\s+)\s*/u,"").trim()}function n(a){return m(a).replace(/\s+/gu,"").toLowerCase().replace(/施工(?=方案|流程|方法)/gu,"").replace(/专项(?=方案)/gu,"").replace(/项目|工程|主要|重点|技术/gu,"").replace(/[、,,;;·..//]+/gu,"").replace(/与|及|和|暨/gu,"")}function o(a,b){let c=n(a),d=n(b);return!!c&&!!d&&!(c.length<4)&&!(d.length<4)&&(c===d||c.includes(d)||d.includes(c))}function p(a){return(0,d.createHash)("sha1").update(JSON.stringify(a)).digest("hex")}function q(a){if(null==a)return"";if("string"==typeof a)return a;if("number"==typeof a||"boolean"==typeof a)return String(a);try{return JSON.stringify(a)}catch{return String(a)}}function r(a){if(a?.aborted)throw Error("用户中止")}function s(a){return`【系统约束——仅指导写作,禁止写入正文,禁止复述本句】${a}`}let t=["评标纪律","投标纪律","行贿","打招呼","递条子","廉洁承诺","廉洁自律","串标","围标","弄虚作假","干扰评标"];function u(a){return!!(t.some(b=>a.includes(b))||a.includes("廉洁从业"))||/纪律|廉洁/u.test(a)&&/投标|评标|行贿|串标|围标|弄虚作假/u.test(a)}async function v(a,b,c){if(0===a.length)return[];let d=Math.max(1,Math.min(a.length,c.concurrency||Math.max(1,{total:a.length,kind:c.kind,targetWords:c.targetWords,highRisk:c.highRisk}.total))),e=Array(a.length),f=0;return await Promise.all(Array.from({length:d},async()=>{for(;f<a.length;){let c=f;f+=1,e[c]=await b(a[c],c)}})),e}class w{constructor(a){this.queue=[],this.available=Math.max(1,Math.floor(a))}async acquire(){if(this.available>0){this.available-=1;return}await new Promise(a=>{this.queue.push(a)})}release(){let a=this.queue.shift();a?a():this.available+=1}async run(a){await this.acquire();try{return await a()}finally{this.release()}}}},28103:(a,b,c)=>{c.d(b,{WT:()=>x,aF:()=>w,cG:()=>e});var d=c(52922);let e=["房建","市政","公路","桥梁与隧道","水利水电","电力","机电安装","装饰装修","园林绿化","铁路","港口与航道","矿山冶金","其他"],f=/(?:\d+(?:\.\d+)?\s*(?:mm|cm|m|㎡|m²|m2|m3|m³|kg|t|MPa|kPa|kN|V|KV|kV|A|天|%)(?![a-zA-Z\u4e00-\u9fa5])|\d+(?:\.\d+)?\s*(?:米|厘米|毫米|吨|千克|公斤|平方米|立方米)(?!\d)|(?:养护|搭接长度|试验压力|间距|偏差|坡度|含水率|压实度|强度等级|标号|厚度|宽度|高度|深度|直径|桩长|桩径))/gu,g=/→|->|=>|按.{0,12}顺序|依次|先后|先.{0,10}后|顺序施工|流水顺序|[\u4e00-\u9fa5]+(?:-|—|~|~)[\u4e00-\u9fa5]+(?:-|—|~|~)[\u4e00-\u9fa5]+/u,h=/^(?:[一二三四五六七八九十\d]+[、..]?\s*)?[\u4e00-\u9fa5()()、,A-Za-z0-9+\-·\s]{2,28}(?:表|清单)(?:[::]|\s*$)/mu,i=/^第([一二三四五六七八九十百千\d]+)[章篇][、..]?\s*(.{2,60})$/mu,j=/^\d+[、..](?!\d)\s*(.{2,20})$/mu,k=/^[一二三四五六七八九十]+[、..]\s*(.{2,20})$/mu,l=/^第[一二三四五六七八九十\d]+[节条][、..]?\s*(.{2,30})$/mu,m=/^(?:[一二三四五六七八九十]+、\s*(.{2,20})|[((][一二三四五六七八九十\d]+[))]\s*(.{2,20})|\d+\.\d+(?:\.\d+)*[、..\s]\s*(.{2,20}))$/mu,n=/\.{4,}|\.{2,}\s*\d{1,3}\s*$|—\d+—|第\s*\d+\s*页|^\d{1,3}$/u,o=/[,、;:]/u,p=/[,。;:?!]/u;function q(a){return a.trim().replace(/^(?:#+\s*)+/u,"").trim()}function r(a){return a.replace(/[\s..·]+\d{1,3}$/u,"").replace(/\s+/gu,"").trim()}function s(a){return a.length>=2&&!o.test(a)&&!/[。,;]$/u.test(a)}function t(a){if(/^\d+$/u.test(a))return Number.parseInt(a,10);let b={零:0,一:1,二:2,三:3,四:4,五:5,六:6,七:7,八:8,九:9},c=0,d=0,e=!1;for(let f of a){if("十"===f){c+=10*(d||1),d=0,e=!0;continue}if("百"===f){c+=100*(d||1),d=0,e=!0;continue}if("千"===f){c+=1e3*(d||1),d=0,e=!0;continue}let a=b[f];if(void 0===a)return Number.MAX_SAFE_INTEGER;d=a,e=!0}return e?c+d:Number.MAX_SAFE_INTEGER}let u=/(?:养护|搭接长度|试验压力|间距|偏差|坡度|含水率|压实度|强度等级|标号|厚度|宽度|高度|深度|直径|桩长|桩径)/gu,v=/(?:\d+(?:\.\d+)?\s*(?:mm|cm|m|㎡|m²|m2|m3|m³|kg|t|MPa|kPa|kN|V|KV|kV|A|天|%)(?![a-zA-Z\u4e00-\u9fa5])|\d+(?:\.\d+)?\s*(?:米|厘米|毫米|吨|千克|公斤|平方米|立方米)(?!\d))/gu;function w(a){let b,c=[["市政",/市政|管网|排水|给水|雨污|污水|燃气/gu],["公路",/公路|路基|路面|沥青/gu],["桥梁与隧道",/桥梁|隧道/gu],["水利水电",/水利|河道|灌溉|防洪/gu],["电力",/电力|供配电|电压|电缆/gu],["机电安装",/机电|暖通|通风|空调|消防|给排水|智能化|电梯/gu],["装饰装修",/装饰|装修|幕墙/gu],["园林绿化",/园林|绿化|景观|苗木/gu],["铁路",/铁路|轨道/gu],["港口与航道",/港口|航道/gu],["矿山冶金",/矿山|冶金/gu],["房建",/房建|建筑|住宅|楼|结构|砌体|基坑|地下室|主体|层高|户型|公共建筑|产业园|厂房/gu]].map(([b,c])=>(c.lastIndex=0,{type:b,count:(a.match(c)||[]).length})).sort((a,b)=>b.count-a.count),d=c[0],e=0,f=0;for(let[c,d]of[["房建",/产业园|标准厂房|安置房|住宅小区|保障房|卫生院|门诊楼|办公楼/gu],["市政",/老旧小区|海绵城市|雨污分流|管网改造|管廊/gu],["桥梁与隧道",/桥梁|隧道|盾构|箱梁|斜拉|悬索|涵洞/gu],["公路",/公路|路基|路面|沥青|桩号|互通|匝道/gu],["水利水电",/堤防|水库|泵站|水闸|疏浚|节制闸|水电站|大坝|围堰/gu],["电力",/变电站|输电线路|配电|GIS设备|电缆|架空线路|铁塔|箱变/gu],["铁路",/铁路|轨道|道床|站台|信号机|接触网/gu],["港口与航道",/港口|码头|航道|护岸|堆场|泊位/gu],["矿山冶金",/矿山|矿井|选矿|冶炼|尾矿|轧钢/gu]]){d.lastIndex=0;let g=(a.match(d)||[]).length;g>=3&&g>e?(f=e,b=c,e=g):g>f&&(f=g)}if(b){if(f>0&&e<2*f&&d&&d.count>e)return d.type;let a=c.find(a=>a.type===b)?.count||0;return d&&d.type!==b&&d.count>2*a&&d.count>=2*e?d.type:b}return d&&d.count>0?d.type:"其他"}async function x(a){let b=a.replace(/\s/gu,"").length,c=a.split(/\n+/u).map(a=>a.replace(/\s+/gu," ").trim()).filter(a=>a.length>=16&&/[\u4e00-\u9fa5]/u.test(a)),e=c.reduce((a,b)=>a+b.replace(/\s/gu,"").length,0),o=(a.match(f)||[]).length,w=c.filter(a=>g.test(a)).length,x=function(a){let b=0,c=a.split(/\n+/u);for(let a=0;a<c.length;a+=1){let d=q(c[a]||"");if(d){if(h.test(d)||/^┌─/u.test(d)){b+=1;continue}if(/^\|.*\|.*\|$/u.test(d)){let d="";for(let b=a-1;b>=0&&b>=a-3;b-=1){let a=q(c[b]||"");if(a){d=a;break}}/^\|.*\|.*\|$/u.test(d)||h.test(d)||(b+=1)}}}return b}(a),{headings:y,useCnAsChapter:z}=function(a){let b,c=new Map,d=[],e=[],f=a.split(/\n+/u);for(let a=0;a<f.length;a+=1){let b=q(f[a]);if(!b||n.test(b))continue;let d=i.exec(b);if(d){let b=r(d[2]||"");b.length>=2&&!p.test(b)&&c.set(d[1],function(a,b,c){if(a.length<20)return a;let d=q(b[c+1]||"");if(d.length<2||d.length>15||!/[\u4e00-\u9fa5]/u.test(d)||n.test(d)||i.test(d)||l.test(d)||m.test(d)||j.test(d)||k.test(d))return a;let e=a+d;return e.length<=60?e:a}(b,f,a));continue}let g=k.exec(b);if(g){let a=r(g[1]||"");s(a)&&e.push(a)}}if(0===c.size)for(let a of f){let b=q(a);if(!b||n.test(b))continue;let c=j.exec(b);if(c){let a=r(c[1]||"");s(a)&&d.push(a)}}let g=!1;return c.size>0?b=[...c.entries()].sort((a,b)=>t(a[0])-t(b[0])).map(([,a])=>a):d.length>=2?b=d:(b=e,g=!0),{headings:[...new Set(b)],useCnAsChapter:g}}(a),A=y.length,{subsectionCount:B,subitemCount:C}=function(a,b){let c=0,d=0;for(let e of a.split(/\n+/u)){let a=q(e);if(!a||n.test(a))continue;let f=l.exec(a);if(f){s(r(f[1]||""))&&(c+=1);continue}let g=m.exec(a);if(g){if(!s(r(g[1]||g[2]||g[3]||""))||b&&void 0!==g[1])continue;d+=1}}return{subsectionCount:c,subitemCount:d}}(a,z),D=new Map;for(let a of c){let b=a.replace(/[\d\s,。、;:""''()()%…—\-·]/gu,"");b.length<8||D.set(b,(D.get(b)||0)+1)}let E=0;for(let a of D.values())a>1&&(E+=a);let F=await (0,d.Pm)(a);return{wordCount:b,effectiveWordCount:e,paramDensity:e>0?1e3*o/e:0,paramCount:o,arrowChainCoverage:c.length>0?w/c.length:0,duplicationRate:c.length>0?E/c.length:0,tableCount:x,sectionCount:A,subsectionCount:B,subitemCount:C,avgSectionWords:A>0?Math.round(e/A):0,headingStructure:y,tableTitles:function(a){let b=[];for(let c of a.split(/\n+/u)){let a=q(c);a&&!(a.length>40)&&!(a.length<3)&&h.test(a)&&b.push(a)}return[...new Set(b)]}(a),paramTokens:function(a){let b=new Map;for(let c of a.match(u)||[])b.set(c,(b.get(c)||0)+1);let c=(a.match(v)||[]).length;return c>0&&b.set("数值参数(数字+单位)",(b.get("数值参数(数字+单位)")||0)+c),[...b.entries()].map(([a,b])=>({token:a,count:b})).sort((a,b)=>b.count-a.count)}(a),segmentCount:c.length,arrowChainSegmentCount:w,duplicatedSegmentCount:E,fiveElementCompleteBlocks:F.completeBlocks}}},29281:(a,b,c)=>{c.d(b,{I:()=>f});var d=c(96770);let e=null;function f(){return e||(e=new d.ConfigStore),e}},37047:(a,b,c)=>{c.d(b,{Bd:()=>k,Eh:()=>g,Mv:()=>n,VN:()=>f});var d=c(19898);let e=null;function f(){return e||(e=new d.LocalTransformersEmbeddingProvider({})),e}let g=.6,h=new Map,i=0,j=0;function k(){return{embedCacheHits:i,embedCacheMisses:j}}async function l(a,b){let c=b?await b(a):await f().embedDocuments(a);if(c.length!==a.length)throw Error(`本地语义模型嵌入数量不一致:期望 ${a.length} 条,实际 ${c.length} 条`);return c}async function m(a,b){if("0"===process.env.DOCUMENT_EMBED_CACHE)return l(a,b);let c=Array(a.length),d=[],e=new Map;for(let b=0;b<a.length;b+=1){let f=a[b];if(f.length<=2e3){let a=h.get(f);if(a){c[b]=a,i+=1,h.delete(f),h.set(f,a);continue}}let g=e.get(f);g?g.push(b):(e.set(f,[b]),d.push(f))}if(0===d.length)return c;let f=await l(d,b),g=function(){let a=Number(process.env.DOCUMENT_EMBED_CACHE_SIZE||4e4);return Number.isFinite(a)&&a>0?a:4e4}();for(let a=0;a<d.length;a+=1){let b=d[a],i=f[a],k=e.get(b);for(let a of k)c[a]=i;if(b.length<=2e3&&(j+=k.length,h.set(b,i),h.size>g)){let a=h.keys().next().value;void 0!==a&&h.delete(a)}}return c}async function n(a,b,c){if(0===a.length||0===b.length)return()=>0;let d=[...a,...b],e=await m(d,c),f=new Map;for(let a=0;a<d.length;a++)f.has(d[a])||f.set(d[a],e[a]);return(a,b)=>{let c=f.get(a),d=f.get(b);if(!c||!d)return 0;let e=Math.min(c.length,d.length),g=0;for(let a=0;a<e;a++)g+=c[a]*d[a];return g}}},41991:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(37047);function e(a,b){let c=Math.min(a.length,b.length),d=0;for(let e=0;e<c;e++)d+=a[e]*b[e];return d}async function f(a){if(0===a.prototypes.length)return async a=>a.map(()=>!1);let b=a.threshold??d.Eh,c=a.negativePrototypes??[],f=[...a.prototypes,...c],g=a.prototypes.length,h=a.embedDocuments?null:(0,d.VN)(),i=a.embedDocuments?await a.embedDocuments(f):await h.embedDocuments(f);if(i.length!==f.length)throw Error(`本地语义模型嵌入数量不一致:期望 ${f.length} 条,实际 ${i.length} 条`);return async d=>{if(0===d.length)return[];let f=d.map(()=>!1),j=d.map((b,c)=>a.lexicalHints&&!a.lexicalHints.test(b)?-1:c).filter(a=>a>=0);if(0===j.length)return f;let k=j.map(a=>d[a]),l=a.embedDocuments?await a.embedDocuments(k):await h.embedDocuments(k);return j.forEach((a,d)=>{let h=l[d];if(!h)return;let j=Math.max(...i.slice(0,g).map(a=>e(h,a))),k=c.length?Math.max(...i.slice(g).map(a=>e(h,a))):0;j>=b&&(0===c.length||j>k)&&(f[a]=!0)}),f}}},52922:(a,b,c)=>{c.d(b,{Bt:()=>m,JD:()=>A,Pm:()=>o,T4:()=>w,Ye:()=>k,bH:()=>D,gE:()=>r,nY:()=>F});var d=c(37047),e=c(41991);let f=["基本满足","大致符合","力争","原则上","大概","左右","尽可能","尽量满足"],g=/基本|大致|力争|原则上|大概|左右|尽可能|尽量/u,h=["基本满足招标文件要求","大致符合相关规范标准","力争达到优良质量标准","原则上按照规范执行","尽可能保证工程质量","尽量满足工期要求"],i=["结构构件左右对称布置","平面布置左右对称合理","力争上游的企业精神"];async function j(a){return(0,e.A)({prototypes:[...h],negativePrototypes:[...i],lexicalHints:g,embedDocuments:a})}function k(a){return f.filter(b=>a.includes(b)).map(b=>({phrase:b,count:a.split(b).length-1}))}let l=["精心组织、科学管理,确保工程质量","严格执行相关规范和设计要求","根据实际情况适当调整施工安排","建立健全管理体系,加强过程管理","全力保障项目顺利推进"];async function m(a,b){let c=a.split(/\n+/u).filter(a=>a.trim()&&!/^\s*(#{1,6}\s+|\||[-*+]\s|>)/u.test(a)).flatMap(a=>a.split(/[。;;]/u)).map(a=>a.trim()).filter(a=>a.length>=12),e=await (0,d.Mv)(c,[...l],b),f=await j(b),h=await f(c),i=c.filter(a=>g.test(a)).length,k=h.filter(Boolean).length,m=c.filter((a,b)=>l.some(b=>e(a,b)>=d.Eh)||h[b]).length,n=c.length?m/c.length:0;return{totalSentences:c.length,fillerSentences:m,ratio:n,level:n>=.4?"heavy":n>=.2?"medium":"light",vagueCandidateSentences:i,vagueSemanticSentences:k}}let n={plan:"制定专项施工方案与管理制度,明确技术措施",process:"施工工序流程与工艺步骤顺序",role:"由项目经理、技术负责人等岗位人员分工负责",frequency:"每日、每周等检查频次与时间节点安排",acceptance:"经检查验收合格后整改销项闭环"};async function o(a,b){let c=a.split(/\n{2,}/u).filter(a=>a.trim().length>=30),e=Object.values(n),f=await (0,d.Mv)(c,e,b),g=/项目经理|技术负责人|施工员|质检员|安全员|材料员|资料员|测量员|劳资员|班组长|监理工程师|试验员/u,h=/每日|每天|每周|每月|每季度|每批|不少于\s*\d+\s*次|至少\s*\d+\s*次|每周\s*\d+\s*次|每日\s*\d+\s*次|每\s*\d+\s*日/u,i=/整改|复查|销项|复验|闭环|返工/u,j=(a,b)=>{let c=(b!==n.role||!!g.test(a))&&(!!(b===n.role&&g.test(a))||(b!==n.frequency||!!h.test(a))&&(!!(b===n.frequency&&h.test(a))||(b!==n.acceptance||!!i.test(a))&&(!!(b===n.acceptance&&i.test(a))||void 0)));return void 0!==c?c:f(a,b)>=d.Eh},k=0,l=0,m=0;for(let a of c)e.filter(b=>j(a,b)).length>=4?k+=1:j(a,n.role)&&j(a,n.frequency)||(l+=1),j(a,n.role)&&j(a,n.frequency)&&j(a,n.acceptance)&&(m+=1);return{blocks:c.length,completeBlocks:k,incompleteBlocks:l,closedLoopBlocks:m}}let p="分析该工程难点的成因与风险来源",q=/\d+(?:\.\d+)?\s*(?:mm|cm|m|米|℃|%|kN|MPa|次|天|小时|h|Hz|m³)/u;async function r(a,b){let c=(function(a){let b=a.match(/#{2,3}\s*[^\n]*(?:重难点|重点难点|工程难点|难点分析)[^\n]*\n/u);if(!b||void 0===b.index)return"";let c=b.index+b[0].length,d=a.slice(c),e=d.search(/^#{2,3}\s+/mu);return e>=0?d.slice(0,e):d})(a).split(/\n{2,}/u).filter(a=>a.trim().length>=20),e=await (0,d.Mv)(c,[p],b),f=0,g=0,h=0;for(let a of c){let b=e(a,p)>=d.Eh,c=q.test(a);b&&(f+=1),c&&(g+=1),b&&c&&(h+=1)}let i=c.length?h/c.length:0;return{countermeasures:c.length,attributed:f,quantified:g,bothCount:h,ratio:i,heavyTemplated:c.length>0&&i<.5}}let s=/建筑业10项新技术|10项新技术|安徽省住房城乡建设领域新技术推广目录|新技术推广目录|建设领域推广/u,t=/替代|取代|淘汰.{0,10}(?:工艺|技术|做法)|(?:较|比).{0,10}(?:传统|常规|普通)/u,u=/(?:提升|提高|节省|节约|降低|缩短|减少).{0,10}(?:效率|工期|成本|损耗|能耗|人工|周期)|升级价值|效益显著/u,v=["BIM","铝模","附着式升降脚手架","跳仓法","直螺纹","装配式","灌浆套筒","自动化监测","智慧工地","再生利用","非开挖","CCTV","碳纤维","薄贴法","干法施工","液压提升","预制","光伏一体化","BIPV","模块化"];function w(a){let b=v.filter(b=>a.includes(b)),c=s.test(a),d=t.test(a),e=u.test(a),f=[c,d,e].filter(Boolean).length;return{found:[...b],catalogCited:c,replaceClaimed:d,upgradeClaimed:e,effective:b.length>0&&f>=2}}let x=[/基坑|沟槽/u,/模板支撑|高支模/u,/脚手架|悬挑|附着式/u,/起重吊装|吊装/u,/幕墙/u,/人工挖孔桩/u,/装配式|钢结构安装/u,/拆除工程/u,/顶管|盾构|暗挖/u,/有限空间|水下作业/u,/吊篮/u,/塔吊|施工电梯|升降机/u,/沉井/u],y=/超危大|超规模|专家论证|一般危大/u,z=/(?:深度|高度|跨度|开挖).{0,8}\d+(?:\.\d+)?\s*(?:m|米)|(?:重量|吊装).{0,8}\d+(?:\.\d+)?\s*(?:kN|千牛)/u;function A(a){let b=x.filter(b=>b.test(a)).map(a=>a.source.replace(/\\u\w*|\\|\(|\||\)/gu,"")),c=y.test(a),d=z.test(a);return{categories:b,graded:c,paramMatched:d,twoStepComplete:b.length>0&&c&&d}}let B=[{name:"总则",pattern:/总则/u},{name:"组织机构及职责",pattern:/应急(?:组织|领导)|组织机构|应急指挥部|应急小组/u},{name:"风险分析与危险源辨识",pattern:/风险分析|危险源辨识|风险辨识/u},{name:"应急物资设备通讯保障",pattern:/应急物资|物资.{0,8}(?:保障|储备)|通讯保障|通信保障/u},{name:"专项应急预案",pattern:/专项应急预案|专项预案/u},{name:"应急响应流程",pattern:/应急响应|响应流程|响应程序/u},{name:"后期处置",pattern:/后期处置|善后|事故调查/u},{name:"培训演练",pattern:/(?:应急)?演练|培训.{0,6}演练/u}],C=["高处坠落","物体打击","坍塌","触电","火灾","起重","防汛","防台风","中暑","中毒窒息","管线破坏"];function D(a){let b=B.filter(b=>b.pattern.test(a)).map(a=>a.name),c=B.filter(b=>!b.pattern.test(a)).map(a=>a.name),d=C.filter(b=>a.includes(b));return{coveredParts:[...b],missingParts:[...c],coverage:b.length/B.length,planHits:[...d]}}let E=[/其他项目/u,/其他标段/u,/其他城市/u,/本公司(?:其他|承建)/u,/某(?:市|县|区|项目)(?:的)?/u,/他项目/u,/兄弟项目/u];function F(a){return E.filter(b=>b.test(a)).map(a=>a.source.replace(/\\u/gu,""))}},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,py:()=>i,q6:()=>f,tF:()=>k,ty:()=>m})},95734:(a,b,c)=>{c.d(b,{$y:()=>u,CX:()=>v,Qf:()=>m,Sq:()=>s,bU:()=>r,bb:()=>A,nz:()=>t,rI:()=>w,t5:()=>n});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)?0===j?1/0:j>0?Math.floor(j):void 0:void 0,l=k??1/0;function m(a){return l}function n(a){return l=k??1/0}let o=0,p=[];function q(){i=Math.max(0,i-1);let a=p.shift();a&&!a.settled&&(a.settled=!0,i+=1,a.resolve(q))}function r(a){return a?.llm?.failureStreak??o}function s(){return l}function t(a){let b=a instanceof Error?`${a.name} ${a.message}`:String(a);return/maximum context length|context ?length|context ?window|too many tokens|input.{0,24}too long|prompt.{0,24}too long|请求.{0,16}(超长|过长|超出)|上下文.{0,16}(超长|超出|过长|窗口)/iu.test(b)||/400/u.test(b)&&/context|too ?long|token|length|上下文/iu.test(b)||/JSON.{0,10}被截断|JSON.{0,10}未闭合/iu.test(b)}function u(){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}}function v(a){return a.filter(a=>!!a).reduce((a,b)=>a+b.length,0)}async function w(a,b,c=!1,f={}){var j;if(f.diagnostics&&(f.diagnostics.llm.calls+=1,f.diagnostics.llm.inputChars=(f.diagnostics.llm.inputChars||0)+a.length+b.length,f.contextLayers)){let a=f.diagnostics.llm.layerChars??(f.diagnostics.llm.layerChars={l0:0,l1:0,l2:0,l3:0});a.l0+=f.contextLayers.l0||0,a.l1+=f.contextLayers.l1||0,a.l2+=f.contextLayers.l2||0,a.l3+=f.contextLayers.l3||0}let k=await (j=f.signal,new Promise((a,b)=>{if(i<l){i+=1,a(q);return}let c={resolve:a,reject:b,settled:!1};p.push(c);let d=()=>{if(c.settled)return;c.settled=!0;let a=p.indexOf(c);a>=0&&p.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=u();if(!j)return;let{model:k,provider:l}=j,m=(0,g.c6)({provider:k.provider,model:k.name,baseUrl:l.baseUrl,directEndpoint:l.directEndpoint,protocol:l.protocol,apiKeyHash:l.apiKey?(0,g.c6)(l.apiKey):""}),n=h.get(m);n||(n=(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":/deepseek/iu.test(a)?"deepseek":"openai"}(k.provider,l),{baseUrl:l.baseUrl,apiKey:l.apiKey,modelName:k.name,directEndpoint:l.directEndpoint}),h.set(m,n));let p=k.name.toLowerCase(),q=function(a,b,c){let e=(0,d.thinkingCapabilityForModel)(b);return"disabled"===c?e&&"unsupported"!==e.disable?{disableThinking:!0,budgetMode:"compact"}:{disableThinking:!1,budgetMode:e?.budgetPolicy==="shared"?"relaxed":"compact",warning:`当前模型 ${b} 思考不可关闭(厂商限制),已忽略“强制关闭思考”配置;建议切换 deepseek 或 gpt 系列模型`}:"enabled"!==c&&"structuredGeneration"===a&&e?"unsupported"===e.disable?{disableThinking:!1,budgetMode:"shared"===e.budgetPolicy?"relaxed":"compact",warning:`当前模型 ${b} 思考不可关闭(厂商限制),生成耗时受限;建议切换 deepseek 或 gpt 系列模型`}:{disableThinking:!0,budgetMode:"compact"}:{disableThinking:!1,budgetMode:"compact"}}(f.taskKind??"structuredGeneration",p,k.thinking);q.warning&&f.diagnostics&&!f.diagnostics.llm.thinkingWarning&&(f.diagnostics.llm.thinkingWarning=q.warning);let r=n.capabilities?.maxOutputTokens||8192,s=/deepseek/iu.test(p)?Math.min(r,8192):r,t="relaxed"===q.budgetMode&&f.maxTokens?Math.min(Math.ceil(6*f.maxTokens),s):f.maxTokens,v=Symbol("empty-content"),w=async(d,e=!1)=>{if(f.signal?.aborted)throw Error("用户中止");let g=await n.chat([{role:"system",content:c?`${a}
4
+ ${c}`,{maxTokens:1200,temperature:0,disableThinkingBoost:!0});if(!d)return;return{highlights:Array.isArray(d.highlights)?d.highlights.slice(0,5):[],weaknesses:Array.isArray(d.weaknesses)?d.weaknesses.slice(0,5):[],benchmarkable:"string"==typeof d.benchmarkable?d.benchmarkable:""}}catch{return}}async function o(a,b,c){let d=a.split(/\n+/u).map(a=>a.replace(/\s+/gu," ").trim()).filter(a=>a.length>=16&&/[\u4e00-\u9fa5]/u.test(a)),e=a.split(/\n{2,}/u).map(a=>a.replace(/\s+/gu," ").trim()).filter(a=>a.length>=30);if(0===d.length&&0===e.length)return;let f={semanticDuplicationRate:0,semanticSegmentCount:0,enrichedAt:Date.now()},g=await l(d,c);g&&(f.semanticDuplicationRate=g.semanticDuplicationRate,f.semanticSegmentCount=g.semanticSegmentCount);let h=await m(e);if(h){let a=0,b=0,c=0;for(let d of h)a+=d.batch.filter(a=>a.fiveElementComplete).length,b+=d.batch.filter(a=>a.arrowChain).length,c+=d.batch.length;if(c>0){let d=h[0]?.totalBlocks||e.length;f.llmFiveElement={completeBlocks:Math.round(a/c*d),sampledBlocks:c,totalBlocks:d},f.llmArrowChain={chainSegments:b,sampledSegments:c,totalSegments:e.length}}}return f.qualityNotes=await n(a,b),g||h||f.qualityNotes?f:void 0}function p(){let a=f.join(e.homedir(),".customize-agent","template-references");return d.mkdirSync(f.join(a,"files"),{recursive:!0}),a}function q(){return f.join(p(),"references.json")}function r(){try{let a=q();if(!d.existsSync(a))return[];let b=JSON.parse(d.readFileSync(a,"utf-8"));return Array.isArray(b)?b:[]}catch{return[]}}function s(a){d.writeFileSync(q(),JSON.stringify(a,null,2),"utf-8")}function t(){return r().sort((a,b)=>b.uploadedAt-a.uploadedAt)}function u(a){return t().filter(b=>b.projectType===a)}async function v(a){let b=d.statSync(a),c=new g.FileClassifier().classify(a,f.basename(a),b),e=new g.ContentExtractor,h=((await e.extract(c)).text||"").trim();if(!h)throw Error("文件未能提取到有效文本(可能是扫描件或加密文件)");return h}let w=null;function x(){return w??=y().finally(()=>{w=null})}async function y(){let a=r(),b=a.filter(a=>"ready"===a.status&&4!==a.profileVersion);if(0===b.length)return;let c=!1;for(let a of b){let b=f.join(p(),a.filePath);if(d.existsSync(b))try{let d=await v(b);a.qualityProfile=await (0,h.WT)(d),a.profileVersion=4,c=!0}catch{}}for(let e of(c&&s(a),b)){let a=f.join(p(),e.filePath);"ready"===e.status&&d.existsSync(a)&&z(e,a)}}async function z(a,b){try{let c=await v(b),d=await o(c,a.qualityProfile?.headingStructure||[]);if(!d)return;let e=r(),f=e.find(b=>b.id===a.id);if(!f||!f.qualityProfile)return;f.qualityProfile={...f.qualityProfile,semantic:d},s(e)}catch{}}async function A(a){let b=p(),c=`ref-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`,e=f.extname(a.fileName)||".pdf",g=`${c}${e.toLowerCase()}`,i=f.join(b,"files",g);d.copyFileSync(a.tempFilePath,i);let j=d.statSync(i).size,k={id:c,fileName:a.fileName,projectType:a.projectType||"其他",typeSource:a.projectType?"manual":"auto",uploadedAt:Date.now(),fileSize:j,filePath:f.join("files",g),status:"parsing"},l=r();l.push(k),s(l);try{let a=await v(i);k.qualityProfile=await (0,h.WT)(a),k.profileVersion=4,k.textSlices=function(a,b=8){let c=a.split(/\n{2,}|\r\n\r\n/u).map(a=>a.replace(/\s+/gu," ").trim()).filter(a=>a.length>=20),d=Math.max(1,Math.floor(c.length/b)),e=[];for(let a=0;a<c.length&&e.length<b;a+=d)e.push(c[a].slice(0,300));return[...new Set(e)]}(a),k.status="ready","auto"===k.typeSource&&(k.projectType=(0,h.aF)(a)),s(l),z(k,i)}catch(a){k.status="failed",k.errorMessage=a instanceof Error?a.message:"解析失败",s(l)}return k}function B(a){let b=r(),c=b.find(b=>b.id===a);if(!c)return!1;s(b.filter(b=>b.id!==a));let e=f.join(p(),c.filePath);try{d.existsSync(e)&&d.unlinkSync(e)}catch{}return!0}function C(a,b){let c=r(),d=c.find(b=>b.id===a);if(d)return d.projectType=b,d.typeSource="manual",s(c),d}function D(a){let b=u(a).filter(a=>"ready"===a.status&&a.qualityProfile);if(0===b.length)return;let c=b.map(a=>a.qualityProfile),d=I(c),e=c[0];return{profile:{wordCount:F(c.map(a=>a.wordCount)),effectiveWordCount:F(c.map(a=>a.effectiveWordCount)),paramDensity:d.paramDensity.avg,paramCount:Math.round(F(c.map(a=>a.paramCount))),arrowChainCoverage:d.arrowChainCoverage.avg,duplicationRate:d.duplicationRate.avg,tableCount:Math.round(d.tableCount.avg),sectionCount:Math.round(d.sectionCount.avg),subsectionCount:Math.round(d.subsectionCount.avg),subitemCount:Math.round(d.subitemCount.avg),avgSectionWords:d.avgSectionWords.avg,headingStructure:e.headingStructure,tableTitles:e.tableTitles,paramTokens:e.paramTokens,segmentCount:Math.round(F(c.map(a=>a.segmentCount||0))),arrowChainSegmentCount:Math.round(F(c.map(a=>a.arrowChainSegmentCount||0))),duplicatedSegmentCount:Math.round(F(c.map(a=>a.duplicatedSegmentCount||0))),fiveElementCompleteBlocks:Math.max(0,...c.map(a=>a.fiveElementCompleteBlocks||0))},sourceCount:b.length}}function E(a){let b=u(a).filter(a=>"ready"===a.status&&a.qualityProfile?.headingStructure?.length);if(0!==b.length)return{text:H(b.map(a=>(a.qualityProfile.headingStructure||[]).map(a=>({value:a})))).slice(0,12).map(a=>a.value).map((a,b)=>`第${["一","二","三","四","五","六","七","八","九","十","十一","十二"][b]??b+1}章 ${a}`).join("\n"),sourceCount:b.length}}function F(a){return a.length>0?a.reduce((a,b)=>a+b,0)/a.length:0}function G(a){return{avg:F(a),min:a.length?Math.min(...a):0,max:a.length?Math.max(...a):0}}function H(a){let b=new Map;for(let c of a)for(let a of c)b.set(a.value,(b.get(a.value)||0)+(a.weight??1));return[...b.entries()].map(([a,b])=>({value:a,count:b})).sort((a,b)=>b.count-a.count)}function I(a){if(0===a.length){let a={avg:0,min:0,max:0};return{paramDensity:{...a},arrowChainCoverage:{...a},duplicationRate:{...a},tableCount:{...a},sectionCount:{...a},subsectionCount:{...a},subitemCount:{...a},avgSectionWords:{avg:0}}}let b=a.map(a=>a.paramDensity),c=a.map(a=>a.arrowChainCoverage),d=a.map(a=>a.duplicationRate),e=a.reduce((a,b)=>a+(b.effectiveWordCount||b.wordCount),0),f=a.reduce((a,b)=>a+b.paramCount,0),g=a.reduce((a,b)=>a+(b.segmentCount||0),0),h=a.reduce((a,b)=>a+(b.arrowChainSegmentCount||0),0),i=a.reduce((a,b)=>a+(b.duplicatedSegmentCount||0),0),j=a.reduce((a,b)=>a+b.sectionCount,0);return{paramDensity:{avg:e>0?1e3*f/e:0,min:Math.min(...b),max:Math.max(...b)},arrowChainCoverage:{avg:g>0?h/g:0,min:Math.min(...c),max:Math.max(...c)},duplicationRate:{avg:g>0?i/g:0,min:Math.min(...d),max:Math.max(...d)},tableCount:G(a.map(a=>a.tableCount)),sectionCount:G(a.map(a=>a.sectionCount)),subsectionCount:G(a.map(a=>a.subsectionCount||0)),subitemCount:G(a.map(a=>a.subitemCount||0)),avgSectionWords:{avg:j>0?Math.round(e/j):0}}}function J(){let a=t().filter(a=>"ready"===a.status&&a.qualityProfile),b=new Map;for(let c of a){let a=b.get(c.projectType)||[];a.push(c),b.set(c.projectType,a)}let c=[];for(let[a,d]of b){let b=d.map(a=>a.qualityProfile),e=H(b.map(a=>(a.headingStructure||[]).map(a=>({value:a})))),f=H(b.map(a=>(a.tableTitles||[]).map(a=>({value:a})))),g=H(b.map(a=>(a.paramTokens||[]).map(a=>({value:a.token,weight:a.count}))));c.push({projectType:a,sourceCount:d.length,totalWords:b.reduce((a,b)=>a+b.wordCount,0),updatedAt:Math.max(...d.map(a=>a.uploadedAt)),metrics:I(b),typicalHeadings:e.slice(0,16).map(a=>({title:a.value,count:a.count,ratio:d.length>0?Math.min(1,a.count/d.length):0})),commonTables:f.slice(0,10).map(a=>({title:a.value,count:a.count})),frequentParams:g.slice(0,12).map(a=>({token:a.value,count:a.count}))})}return c.sort((a,b)=>b.sourceCount-a.sourceCount)}function K(a){let b=(0,h.aF)([a.templateName,...a.chapterTitles,a.requirement].filter(Boolean).join(" ")),c=u(b).filter(a=>"ready"===a.status&&a.qualityProfile);if(0===c.length)return[];let d=c.map(a=>a.qualityProfile),e=c.length,f=F(d.map(a=>a.wordCount)),g=f>0?Math.max(.3,Math.min(2,a.targetWords/f)):1,i=H(d.map(a=>(a.headingStructure||[]).map(a=>({value:a})))).filter(a=>a.count>=Math.ceil(e/2)).slice(0,12),j=H(d.map(a=>(a.paramTokens||[]).map(a=>({value:a.token,weight:a.count})))),k=[`同类工程(${b})参考特征(来自 ${e} 份优秀入围文件画像,仅供软性参考;任何项目专属数字与参数仍必须以知识库证据为准,为对齐特征而编造参数、虚构表格或堆砌无意义内容严格禁止):`],l=I(d),m=l.paramDensity.avg,n=l.arrowChainCoverage.avg,o=l.sectionCount.avg>0?l.tableCount.avg/l.sectionCount.avg:0,p=l.avgSectionWords.avg;k.push(`- 工艺参数密度参考:约 ${(m*g).toFixed(1)} 个/千字(同类工程画像均值 ${m.toFixed(1)},已按本项目篇幅折减);参数应来自已确认事实与专业知识,不得编造。`);let q=Math.max(n,.08);return k.push(`- 工序顺序表达覆盖率参考:含工序顺序表达(顺序词叙述/编号步骤/有序无序列表/箭头链任一形式,形式由模型自然选择)的段落占比不低于 ${Math.round(100*q)}%(同类工程画像均值 ${Math.round(100*n)}%,已按生成侧门禁取下限);施工与流程小节宜用工序顺序表达串联工艺步骤。`),k.push(`- 表格参考:同类工程平均每章约 ${o.toFixed(1)} 张正式表格(在事实允许的前提下合理配置)。`),k.push(`- 章节体量参考:同类工程平均约 ${Math.round(l.sectionCount.avg)} 章、平均每章约 ${p} 字;实际以模板章节与篇幅目标为准。`),i.length>0&&k.push(`- 典型章节结构参考(出现于半数以上样本,仅供结构参考,不强制):${i.map(a=>a.value).join("、")}`),j.length>0&&k.push(`- 高频工艺参数种类参考:${j.slice(0,12).map(a=>a.value).join("、")}(同类型优秀样本中出现频次最高的工艺参数词条,施工方法小节可按专业实际与通用规范自然使用这些参数种类;项目专属数值必须来自知识库证据,不得为凑密度编造)。`),k}function L(a){let b=u((0,h.aF)([a.templateName,...a.chapterTitles,a.requirement].filter(Boolean).join(" "))).filter(a=>"ready"===a.status&&a.qualityProfile);if(0===b.length)return[];let c=b.map(a=>a.qualityProfile),d=Math.ceil(b.length/2),e=new Map,f=new Map;for(let a of c){let b=new Set;(a.headingStructure||[]).forEach((a,c)=>{if(f.set(a,(f.get(a)||0)+1),b.has(a))return;b.add(a);let d=e.get(a)||{sum:0,count:0};d.sum+=c,d.count+=1,e.set(a,d)})}let g=[...f.entries()].filter(([,a])=>a>=d).sort((a,b)=>{let c=e.get(a[0]),d=e.get(b[0]);return c.sum/c.count-d.sum/d.count}).map(([a])=>a).slice(0,10),i=c.reduce((a,b)=>a+b.sectionCount,0),j=c.reduce((a,b)=>a+(b.subsectionCount||0),0),k=c.reduce((a,b)=>a+(b.subitemCount||0),0),l=["- 写法骨架参考(同类优秀样本的展开模式,仅供结构参照;样本中的任何数值与原文句子都不得复制):"];g.length>=3&&l.push(`- 章节推进骨架:${g.join(" → ")}(出现于半数以上样本的一级章节按典型顺序排列,仅作结构参照,不强制)。`),i>0&&l.push(`- 分层展开深度:同类样本平均每章约 ${(j/i).toFixed(1)} 个二级小节、${(k/i).toFixed(1)} 个三级子目——范文把方案分层展开到具体措施条目,而不是整段综述概括。`);let m=g.filter(a=>/施工方案|施工方法|施工内容|施工部署|分部分项/u.test(a)).slice(0,4);return m.length>0&&l.push(`- 方案章节典型组织:同类样本中方案类章节以「${m.join("」「")}」等标题独立成章,逐分项展开,不并入项目概况章节。`),l.push("- 分部分项展开模式:同类样本按“施工概况(作业对象、部位、工程量)→工艺流程(工序顺序表达串联关键工序)→施工方法(工具机具、材料规格、工艺参数、验收标准)”三段逐分项展开;方法段正文以工序顺序表达(形式由模型自然选择:顺序词叙述、编号步骤、有序/无序列表或箭头链均可)串联连续工序,工艺参数落位在方法叙述中而非单独罗列清单。"),l}function M(a){return a.replace(/^第[一二三四五六七八九十百千\d]+[章节篇][、..]?\s*/u,"").replace(/^\d+(?:\.\d+)*[、..]?\s*/u,"").trim()}function N(a){let b=(0,h.aF)([a.templateName,...a.chapterTitles].join(" ")),c=u(b).filter(a=>"ready"===a.status&&a.qualityProfile);if(0===c.length)return;let d=H(c.map(a=>a.qualityProfile).map(a=>(a.headingStructure||[]).map(a=>({value:a})))),e=new Set(a.chapterTitles.map(M)),f=d.filter(a=>a.count>=Math.ceil(c.length/2)).filter(a=>!e.has(M(a.value))).slice(0,6).map(a=>({title:a.value,ratio:Math.min(1,a.count/c.length)}));return f.length>0?{projectType:b,sourceCount:c.length,missingHeadings:f}:void 0}},22157:(a,b,c)=>{c.d(b,{Kd:()=>u,TP:()=>t,Te:()=>s,V:()=>f,VX:()=>o,W6:()=>i,Ww:()=>p,Xl:()=>k,Z1:()=>g,c6:()=>q,hh:()=>v,jf:()=>x,l$:()=>w,lG:()=>r,tU:()=>n,wq:()=>j});var d=c(77598),e=c(78217);let f=/项目主要施工内容|主要分部分项工程施工方案|主要施工方法/u;function g(a){return!!a&&!!(/→|->|=>/u.test(a)||/按.{0,12}顺序|依次|先后|先.{0,12}(?:后|再|然后|最后)|顺序施工|流水顺序/u.test(a)||(a.match(/(?:^|\n)\s*(?:\d+[.、]|[((]\d+[))]|[一二三四五六七八九十]+[、.]|第[一二三四五六七八九十]+步)/gmu)||[]).length>=2||(a.match(/(?:^|\n)\s*(?:[-*•]|\d+\.)\s+\S/gmu)||[]).length>=2||/[\u4e00-\u9fa5]+(?:-|—|~|~)[\u4e00-\u9fa5]+(?:-|—|~|~)[\u4e00-\u9fa5]+/u.test(a))}function h(a){return a.replace(/^\d+(?:\.\d+)*\s*/u,"").replace(/[((][^()()]*[))]/gu,"").replace(/[\s::、。,,;;/|—-]/gu,"")}function i(a){let b=a.split(/\r?\n/u),c="",d=new Map,e=[];for(let a of b){let b=/^(#{2,6})\s+(.+)$/u.exec(a.trim());if(!b)continue;let f=b[1].length;if(2===f){c="";continue}if(3===f){c=b[2].trim();continue}if(4!==f)continue;let g=`${c}::${h(b[2].trim())}`;if(!g)continue;let i=(d.get(g)||0)+1;d.set(g,i),i>=2&&e.push(b[2].trim())}return e}function j(a){let b=a.split(/\r?\n/u),c=[],d="",e=new Set,f=!1;for(let a of b){let b=/^(#{2,6})\s+(.+)$/u.exec(a.trim());if(b){let g=b[1].length;if(g<=3&&(d=3===g?b[2].trim():"",e.clear()),f=!1,4===g){let g=`${d}::${h(b[2].trim())}`;if(!g){c.push(a);continue}if(e.has(g)){f=!0;continue}e.add(g)}c.push(a);continue}f||c.push(a)}return c.join("\n")}function k(a,b,c={}){if(!c.fuzzy){let c=l(a,b,/^###\s+(?:\d+(?:\.\d+)*\s+)?/u);return c||l(a,b,/^#{3,4}\s+(?:\d+(?:\.\d+)*\s+)?/u)}return function(a,b){let c=a.split("\n"),d=m(b).replace(/\s+/gu,"").toLowerCase(),g=[],h=-1,i=0,j=!1,k=a=>{if(h<0)return;let b=c.slice(h,a).join("\n").trim();b&&g.push(b),h=-1,i=0,j=!1};for(let a=0;a<c.length;a+=1){if(!/^\s*#{2,4}\s+/u.test(c[a]))continue;let e=/^\s*(#{2,4})\s+/u.exec(c[a])?.[1].length||3;if(h>=0&&(j||3===i)&&4===e)continue;k(a);let g=m(c[a]).replace(/\s+/gu,"").toLowerCase();(g===d||g.includes(d)||o(c[a],b))&&(h=a+1,i=e,j=e<=4&&f.test(c[a]))}return k(c.length),g.sort((a,b)=>(0,e.V7)(b)-(0,e.V7)(a))[0]||""}(a,b)}function l(a,b,c){let d=a.split("\n"),e=d.findIndex(a=>c.test(a.trim())&&a.includes(b));if(e<0)return"";let g=/^(#{2,6})\s+/u.exec(d[e].trim())?.[1].length||3,h=4===g&&f.test(b),i=d.length;for(let a=e+1;a<d.length;a+=1){let b=/^(#{2,6})\s+/u.exec(d[a].trim());if(b&&b[1].length<=g&&!(h&&b[1].length===g)){i=a;break}}return d.slice(e,i).join("\n")}function m(a){return a.replace(/^\s*#{2,4}\s*/u,"").replace(/^\s*(?:\d+(?:\.\d+)*|[一二三四五六七八九十]+)(?:[、..]|\s+)\s*/u,"").trim()}function n(a){return m(a).replace(/\s+/gu,"").toLowerCase().replace(/施工(?=方案|流程|方法)/gu,"").replace(/专项(?=方案)/gu,"").replace(/项目|工程|主要|重点|技术/gu,"").replace(/[、,,;;·..//]+/gu,"").replace(/与|及|和|暨/gu,"")}function o(a,b){let c=n(a),d=n(b);return!!c&&!!d&&!(c.length<4)&&!(d.length<4)&&(c===d||c.includes(d)||d.includes(c))}function p(a,b){let c=[...new Set(b.filter(Boolean))];if(0===c.length)return a;let d=new Set;return a.split("\n").map(a=>{if(!/^\s*#{3,4}\s+/u.test(a))return a;let b=m(a);if(!b)return a;let e=c.find(a=>!d.has(a)&&o(b,a));if(!e||e===b)return a;let f=/^(\s*#{3,4}\s+)/u.exec(a)?.[1];return f?(d.add(e),`${f}${e}`):a}).join("\n")}function q(a){return(0,d.createHash)("sha1").update(JSON.stringify(a)).digest("hex")}function r(a){if(null==a)return"";if("string"==typeof a)return a;if("number"==typeof a||"boolean"==typeof a)return String(a);try{return JSON.stringify(a)}catch{return String(a)}}function s(a){if(a?.aborted)throw Error("用户中止")}function t(a){return`【系统约束——仅指导写作,禁止写入正文,禁止复述本句】${a}`}let u=["评标纪律","投标纪律","行贿","打招呼","递条子","廉洁承诺","廉洁自律","串标","围标","弄虚作假","干扰评标"];function v(a){return!!(u.some(b=>a.includes(b))||a.includes("廉洁从业"))||/纪律|廉洁/u.test(a)&&/投标|评标|行贿|串标|围标|弄虚作假/u.test(a)}async function w(a,b,c){if(0===a.length)return[];let d=Math.max(1,Math.min(a.length,c.concurrency||Math.max(1,{total:a.length,kind:c.kind,targetWords:c.targetWords,highRisk:c.highRisk}.total))),e=Array(a.length),f=0;return await Promise.all(Array.from({length:d},async()=>{for(;f<a.length;){let c=f;f+=1,e[c]=await b(a[c],c)}})),e}class x{constructor(a){this.queue=[],this.available=Math.max(1,Math.floor(a))}async acquire(){if(this.available>0){this.available-=1;return}await new Promise(a=>{this.queue.push(a)})}release(){let a=this.queue.shift();a?a():this.available+=1}async run(a){await this.acquire();try{return await a()}finally{this.release()}}}},28103:(a,b,c)=>{c.d(b,{WT:()=>x,aF:()=>w,cG:()=>e});var d=c(52922);let e=["房建","市政","公路","桥梁与隧道","水利水电","电力","机电安装","装饰装修","园林绿化","铁路","港口与航道","矿山冶金","其他"],f=/(?:\d+(?:\.\d+)?\s*(?:mm|cm|m|㎡|m²|m2|m3|m³|kg|t|MPa|kPa|kN|V|KV|kV|A|天|%)(?![a-zA-Z\u4e00-\u9fa5])|\d+(?:\.\d+)?\s*(?:米|厘米|毫米|吨|千克|公斤|平方米|立方米)(?!\d)|(?:养护|搭接长度|试验压力|间距|偏差|坡度|含水率|压实度|强度等级|标号|厚度|宽度|高度|深度|直径|桩长|桩径))/gu,g=/→|->|=>|按.{0,12}顺序|依次|先后|先.{0,10}后|顺序施工|流水顺序|[\u4e00-\u9fa5]+(?:-|—|~|~)[\u4e00-\u9fa5]+(?:-|—|~|~)[\u4e00-\u9fa5]+/u,h=/^(?:[一二三四五六七八九十\d]+[、..]?\s*)?[\u4e00-\u9fa5()()、,A-Za-z0-9+\-·\s]{2,28}(?:表|清单)(?:[::]|\s*$)/mu,i=/^第([一二三四五六七八九十百千\d]+)[章篇][、..]?\s*(.{2,60})$/mu,j=/^\d+[、..](?!\d)\s*(.{2,20})$/mu,k=/^[一二三四五六七八九十]+[、..]\s*(.{2,20})$/mu,l=/^第[一二三四五六七八九十\d]+[节条][、..]?\s*(.{2,30})$/mu,m=/^(?:[一二三四五六七八九十]+、\s*(.{2,20})|[((][一二三四五六七八九十\d]+[))]\s*(.{2,20})|\d+\.\d+(?:\.\d+)*[、..\s]\s*(.{2,20}))$/mu,n=/\.{4,}|\.{2,}\s*\d{1,3}\s*$|—\d+—|第\s*\d+\s*页|^\d{1,3}$/u,o=/[,、;:]/u,p=/[,。;:?!]/u;function q(a){return a.trim().replace(/^(?:#+\s*)+/u,"").trim()}function r(a){return a.replace(/[\s..·]+\d{1,3}$/u,"").replace(/\s+/gu,"").trim()}function s(a){return a.length>=2&&!o.test(a)&&!/[。,;]$/u.test(a)}function t(a){if(/^\d+$/u.test(a))return Number.parseInt(a,10);let b={零:0,一:1,二:2,三:3,四:4,五:5,六:6,七:7,八:8,九:9},c=0,d=0,e=!1;for(let f of a){if("十"===f){c+=10*(d||1),d=0,e=!0;continue}if("百"===f){c+=100*(d||1),d=0,e=!0;continue}if("千"===f){c+=1e3*(d||1),d=0,e=!0;continue}let a=b[f];if(void 0===a)return Number.MAX_SAFE_INTEGER;d=a,e=!0}return e?c+d:Number.MAX_SAFE_INTEGER}let u=/(?:养护|搭接长度|试验压力|间距|偏差|坡度|含水率|压实度|强度等级|标号|厚度|宽度|高度|深度|直径|桩长|桩径)/gu,v=/(?:\d+(?:\.\d+)?\s*(?:mm|cm|m|㎡|m²|m2|m3|m³|kg|t|MPa|kPa|kN|V|KV|kV|A|天|%)(?![a-zA-Z\u4e00-\u9fa5])|\d+(?:\.\d+)?\s*(?:米|厘米|毫米|吨|千克|公斤|平方米|立方米)(?!\d))/gu;function w(a){let b,c=[["市政",/市政|管网|排水|给水|雨污|污水|燃气/gu],["公路",/公路|路基|路面|沥青/gu],["桥梁与隧道",/桥梁|隧道/gu],["水利水电",/水利|河道|灌溉|防洪/gu],["电力",/电力|供配电|电压|电缆/gu],["机电安装",/机电|暖通|通风|空调|消防|给排水|智能化|电梯/gu],["装饰装修",/装饰|装修|幕墙/gu],["园林绿化",/园林|绿化|景观|苗木/gu],["铁路",/铁路|轨道/gu],["港口与航道",/港口|航道/gu],["矿山冶金",/矿山|冶金/gu],["房建",/房建|建筑|住宅|楼|结构|砌体|基坑|地下室|主体|层高|户型|公共建筑|产业园|厂房/gu]].map(([b,c])=>(c.lastIndex=0,{type:b,count:(a.match(c)||[]).length})).sort((a,b)=>b.count-a.count),d=c[0],e=0,f=0;for(let[c,d]of[["房建",/产业园|标准厂房|安置房|住宅小区|保障房|卫生院|门诊楼|办公楼/gu],["市政",/老旧小区|海绵城市|雨污分流|管网改造|管廊/gu],["桥梁与隧道",/桥梁|隧道|盾构|箱梁|斜拉|悬索|涵洞/gu],["公路",/公路|路基|路面|沥青|桩号|互通|匝道/gu],["水利水电",/堤防|水库|泵站|水闸|疏浚|节制闸|水电站|大坝|围堰/gu],["电力",/变电站|输电线路|配电|GIS设备|电缆|架空线路|铁塔|箱变/gu],["铁路",/铁路|轨道|道床|站台|信号机|接触网/gu],["港口与航道",/港口|码头|航道|护岸|堆场|泊位/gu],["矿山冶金",/矿山|矿井|选矿|冶炼|尾矿|轧钢/gu]]){d.lastIndex=0;let g=(a.match(d)||[]).length;g>=3&&g>e?(f=e,b=c,e=g):g>f&&(f=g)}if(b){if(f>0&&e<2*f&&d&&d.count>e)return d.type;let a=c.find(a=>a.type===b)?.count||0;return d&&d.type!==b&&d.count>2*a&&d.count>=2*e?d.type:b}return d&&d.count>0?d.type:"其他"}async function x(a){let b=a.replace(/\s/gu,"").length,c=a.split(/\n+/u).map(a=>a.replace(/\s+/gu," ").trim()).filter(a=>a.length>=16&&/[\u4e00-\u9fa5]/u.test(a)),e=c.reduce((a,b)=>a+b.replace(/\s/gu,"").length,0),o=(a.match(f)||[]).length,w=c.filter(a=>g.test(a)).length,x=function(a){let b=0,c=a.split(/\n+/u);for(let a=0;a<c.length;a+=1){let d=q(c[a]||"");if(d){if(h.test(d)||/^┌─/u.test(d)){b+=1;continue}if(/^\|.*\|.*\|$/u.test(d)){let d="";for(let b=a-1;b>=0&&b>=a-3;b-=1){let a=q(c[b]||"");if(a){d=a;break}}/^\|.*\|.*\|$/u.test(d)||h.test(d)||(b+=1)}}}return b}(a),{headings:y,useCnAsChapter:z}=function(a){let b,c=new Map,d=[],e=[],f=a.split(/\n+/u);for(let a=0;a<f.length;a+=1){let b=q(f[a]);if(!b||n.test(b))continue;let d=i.exec(b);if(d){let b=r(d[2]||"");b.length>=2&&!p.test(b)&&c.set(d[1],function(a,b,c){if(a.length<20)return a;let d=q(b[c+1]||"");if(d.length<2||d.length>15||!/[\u4e00-\u9fa5]/u.test(d)||n.test(d)||i.test(d)||l.test(d)||m.test(d)||j.test(d)||k.test(d))return a;let e=a+d;return e.length<=60?e:a}(b,f,a));continue}let g=k.exec(b);if(g){let a=r(g[1]||"");s(a)&&e.push(a)}}if(0===c.size)for(let a of f){let b=q(a);if(!b||n.test(b))continue;let c=j.exec(b);if(c){let a=r(c[1]||"");s(a)&&d.push(a)}}let g=!1;return c.size>0?b=[...c.entries()].sort((a,b)=>t(a[0])-t(b[0])).map(([,a])=>a):d.length>=2?b=d:(b=e,g=!0),{headings:[...new Set(b)],useCnAsChapter:g}}(a),A=y.length,{subsectionCount:B,subitemCount:C}=function(a,b){let c=0,d=0;for(let e of a.split(/\n+/u)){let a=q(e);if(!a||n.test(a))continue;let f=l.exec(a);if(f){s(r(f[1]||""))&&(c+=1);continue}let g=m.exec(a);if(g){if(!s(r(g[1]||g[2]||g[3]||""))||b&&void 0!==g[1])continue;d+=1}}return{subsectionCount:c,subitemCount:d}}(a,z),D=new Map;for(let a of c){let b=a.replace(/[\d\s,。、;:""''()()%…—\-·]/gu,"");b.length<8||D.set(b,(D.get(b)||0)+1)}let E=0;for(let a of D.values())a>1&&(E+=a);let F=await (0,d.Pm)(a);return{wordCount:b,effectiveWordCount:e,paramDensity:e>0?1e3*o/e:0,paramCount:o,arrowChainCoverage:c.length>0?w/c.length:0,duplicationRate:c.length>0?E/c.length:0,tableCount:x,sectionCount:A,subsectionCount:B,subitemCount:C,avgSectionWords:A>0?Math.round(e/A):0,headingStructure:y,tableTitles:function(a){let b=[];for(let c of a.split(/\n+/u)){let a=q(c);a&&!(a.length>40)&&!(a.length<3)&&h.test(a)&&b.push(a)}return[...new Set(b)]}(a),paramTokens:function(a){let b=new Map;for(let c of a.match(u)||[])b.set(c,(b.get(c)||0)+1);let c=(a.match(v)||[]).length;return c>0&&b.set("数值参数(数字+单位)",(b.get("数值参数(数字+单位)")||0)+c),[...b.entries()].map(([a,b])=>({token:a,count:b})).sort((a,b)=>b.count-a.count)}(a),segmentCount:c.length,arrowChainSegmentCount:w,duplicatedSegmentCount:E,fiveElementCompleteBlocks:F.completeBlocks}}},29281:(a,b,c)=>{c.d(b,{I:()=>f});var d=c(96770);let e=null;function f(){return e||(e=new d.ConfigStore),e}},37047:(a,b,c)=>{c.d(b,{Bd:()=>k,Eh:()=>g,Mv:()=>n,VN:()=>f});var d=c(19898);let e=null;function f(){return e||(e=new d.LocalTransformersEmbeddingProvider({})),e}let g=.6,h=new Map,i=0,j=0;function k(){return{embedCacheHits:i,embedCacheMisses:j}}async function l(a,b){let c=b?await b(a):await f().embedDocuments(a);if(c.length!==a.length)throw Error(`本地语义模型嵌入数量不一致:期望 ${a.length} 条,实际 ${c.length} 条`);return c}async function m(a,b){if("0"===process.env.DOCUMENT_EMBED_CACHE)return l(a,b);let c=Array(a.length),d=[],e=new Map;for(let b=0;b<a.length;b+=1){let f=a[b];if(f.length<=2e3){let a=h.get(f);if(a){c[b]=a,i+=1,h.delete(f),h.set(f,a);continue}}let g=e.get(f);g?g.push(b):(e.set(f,[b]),d.push(f))}if(0===d.length)return c;let f=await l(d,b),g=function(){let a=Number(process.env.DOCUMENT_EMBED_CACHE_SIZE||4e4);return Number.isFinite(a)&&a>0?a:4e4}();for(let a=0;a<d.length;a+=1){let b=d[a],i=f[a],k=e.get(b);for(let a of k)c[a]=i;if(b.length<=2e3&&(j+=k.length,h.set(b,i),h.size>g)){let a=h.keys().next().value;void 0!==a&&h.delete(a)}}return c}async function n(a,b,c){if(0===a.length||0===b.length)return()=>0;let d=[...a,...b],e=await m(d,c),f=new Map;for(let a=0;a<d.length;a++)f.has(d[a])||f.set(d[a],e[a]);return(a,b)=>{let c=f.get(a),d=f.get(b);if(!c||!d)return 0;let e=Math.min(c.length,d.length),g=0;for(let a=0;a<e;a++)g+=c[a]*d[a];return g}}},41991:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(37047);function e(a,b){let c=Math.min(a.length,b.length),d=0;for(let e=0;e<c;e++)d+=a[e]*b[e];return d}async function f(a){if(0===a.prototypes.length)return async a=>a.map(()=>!1);let b=a.threshold??d.Eh,c=a.negativePrototypes??[],f=[...a.prototypes,...c],g=a.prototypes.length,h=a.embedDocuments?null:(0,d.VN)(),i=a.embedDocuments?await a.embedDocuments(f):await h.embedDocuments(f);if(i.length!==f.length)throw Error(`本地语义模型嵌入数量不一致:期望 ${f.length} 条,实际 ${i.length} 条`);return async d=>{if(0===d.length)return[];let f=d.map(()=>!1),j=d.map((b,c)=>a.lexicalHints&&!a.lexicalHints.test(b)?-1:c).filter(a=>a>=0);if(0===j.length)return f;let k=j.map(a=>d[a]),l=a.embedDocuments?await a.embedDocuments(k):await h.embedDocuments(k);return j.forEach((a,d)=>{let h=l[d];if(!h)return;let j=Math.max(...i.slice(0,g).map(a=>e(h,a))),k=c.length?Math.max(...i.slice(g).map(a=>e(h,a))):0;j>=b&&(0===c.length||j>k)&&(f[a]=!0)}),f}}},52922:(a,b,c)=>{c.d(b,{Bt:()=>m,JD:()=>A,Pm:()=>o,T4:()=>w,Ye:()=>k,bH:()=>D,gE:()=>r,nY:()=>F});var d=c(37047),e=c(41991);let f=["基本满足","大致符合","力争","原则上","大概","左右","尽可能","尽量满足"],g=/基本|大致|力争|原则上|大概|左右|尽可能|尽量/u,h=["基本满足招标文件要求","大致符合相关规范标准","力争达到优良质量标准","原则上按照规范执行","尽可能保证工程质量","尽量满足工期要求"],i=["结构构件左右对称布置","平面布置左右对称合理","力争上游的企业精神"];async function j(a){return(0,e.A)({prototypes:[...h],negativePrototypes:[...i],lexicalHints:g,embedDocuments:a})}function k(a){return f.filter(b=>a.includes(b)).map(b=>({phrase:b,count:a.split(b).length-1}))}let l=["精心组织、科学管理,确保工程质量","严格执行相关规范和设计要求","根据实际情况适当调整施工安排","建立健全管理体系,加强过程管理","全力保障项目顺利推进"];async function m(a,b){let c=a.split(/\n+/u).filter(a=>a.trim()&&!/^\s*(#{1,6}\s+|\||[-*+]\s|>)/u.test(a)).flatMap(a=>a.split(/[。;;]/u)).map(a=>a.trim()).filter(a=>a.length>=12),e=await (0,d.Mv)(c,[...l],b),f=await j(b),h=await f(c),i=c.filter(a=>g.test(a)).length,k=h.filter(Boolean).length,m=c.filter((a,b)=>l.some(b=>e(a,b)>=d.Eh)||h[b]).length,n=c.length?m/c.length:0;return{totalSentences:c.length,fillerSentences:m,ratio:n,level:n>=.4?"heavy":n>=.2?"medium":"light",vagueCandidateSentences:i,vagueSemanticSentences:k}}let n={plan:"制定专项施工方案与管理制度,明确技术措施",process:"施工工序流程与工艺步骤顺序",role:"由项目经理、技术负责人等岗位人员分工负责",frequency:"每日、每周等检查频次与时间节点安排",acceptance:"经检查验收合格后整改销项闭环"};async function o(a,b){let c=a.split(/\n{2,}/u).filter(a=>a.trim().length>=30),e=Object.values(n),f=await (0,d.Mv)(c,e,b),g=/项目经理|技术负责人|施工员|质检员|安全员|材料员|资料员|测量员|劳资员|班组长|监理工程师|试验员/u,h=/每日|每天|每周|每月|每季度|每批|不少于\s*\d+\s*次|至少\s*\d+\s*次|每周\s*\d+\s*次|每日\s*\d+\s*次|每\s*\d+\s*日/u,i=/整改|复查|销项|复验|闭环|返工/u,j=(a,b)=>{let c=(b!==n.role||!!g.test(a))&&(!!(b===n.role&&g.test(a))||(b!==n.frequency||!!h.test(a))&&(!!(b===n.frequency&&h.test(a))||(b!==n.acceptance||!!i.test(a))&&(!!(b===n.acceptance&&i.test(a))||void 0)));return void 0!==c?c:f(a,b)>=d.Eh},k=0,l=0,m=0;for(let a of c)e.filter(b=>j(a,b)).length>=4?k+=1:j(a,n.role)&&j(a,n.frequency)||(l+=1),j(a,n.role)&&j(a,n.frequency)&&j(a,n.acceptance)&&(m+=1);return{blocks:c.length,completeBlocks:k,incompleteBlocks:l,closedLoopBlocks:m}}let p="分析该工程难点的成因与风险来源",q=/\d+(?:\.\d+)?\s*(?:mm|cm|m|米|℃|%|kN|MPa|次|天|小时|h|Hz|m³)/u;async function r(a,b){let c=(function(a){let b=a.match(/#{2,3}\s*[^\n]*(?:重难点|重点难点|工程难点|难点分析)[^\n]*\n/u);if(!b||void 0===b.index)return"";let c=b.index+b[0].length,d=a.slice(c),e=d.search(/^#{2,3}\s+/mu);return e>=0?d.slice(0,e):d})(a).split(/\n{2,}/u).filter(a=>a.trim().length>=20),e=await (0,d.Mv)(c,[p],b),f=0,g=0,h=0;for(let a of c){let b=e(a,p)>=d.Eh,c=q.test(a);b&&(f+=1),c&&(g+=1),b&&c&&(h+=1)}let i=c.length?h/c.length:0;return{countermeasures:c.length,attributed:f,quantified:g,bothCount:h,ratio:i,heavyTemplated:c.length>0&&i<.5}}let s=/建筑业10项新技术|10项新技术|安徽省住房城乡建设领域新技术推广目录|新技术推广目录|建设领域推广/u,t=/替代|取代|淘汰.{0,10}(?:工艺|技术|做法)|(?:较|比).{0,10}(?:传统|常规|普通)/u,u=/(?:提升|提高|节省|节约|降低|缩短|减少).{0,10}(?:效率|工期|成本|损耗|能耗|人工|周期)|升级价值|效益显著/u,v=["BIM","铝模","附着式升降脚手架","跳仓法","直螺纹","装配式","灌浆套筒","自动化监测","智慧工地","再生利用","非开挖","CCTV","碳纤维","薄贴法","干法施工","液压提升","预制","光伏一体化","BIPV","模块化"];function w(a){let b=v.filter(b=>a.includes(b)),c=s.test(a),d=t.test(a),e=u.test(a),f=[c,d,e].filter(Boolean).length;return{found:[...b],catalogCited:c,replaceClaimed:d,upgradeClaimed:e,effective:b.length>0&&f>=2}}let x=[/基坑|沟槽/u,/模板支撑|高支模/u,/脚手架|悬挑|附着式/u,/起重吊装|吊装/u,/幕墙/u,/人工挖孔桩/u,/装配式|钢结构安装/u,/拆除工程/u,/顶管|盾构|暗挖/u,/有限空间|水下作业/u,/吊篮/u,/塔吊|施工电梯|升降机/u,/沉井/u],y=/超危大|超规模|专家论证|一般危大/u,z=/(?:深度|高度|跨度|开挖).{0,8}\d+(?:\.\d+)?\s*(?:m|米)|(?:重量|吊装).{0,8}\d+(?:\.\d+)?\s*(?:kN|千牛)/u;function A(a){let b=x.filter(b=>b.test(a)).map(a=>a.source.replace(/\\u\w*|\\|\(|\||\)/gu,"")),c=y.test(a),d=z.test(a);return{categories:b,graded:c,paramMatched:d,twoStepComplete:b.length>0&&c&&d}}let B=[{name:"总则",pattern:/总则/u},{name:"组织机构及职责",pattern:/应急(?:组织|领导)|组织机构|应急指挥部|应急小组/u},{name:"风险分析与危险源辨识",pattern:/风险分析|危险源辨识|风险辨识/u},{name:"应急物资设备通讯保障",pattern:/应急物资|物资.{0,8}(?:保障|储备)|通讯保障|通信保障/u},{name:"专项应急预案",pattern:/专项应急预案|专项预案/u},{name:"应急响应流程",pattern:/应急响应|响应流程|响应程序/u},{name:"后期处置",pattern:/后期处置|善后|事故调查/u},{name:"培训演练",pattern:/(?:应急)?演练|培训.{0,6}演练/u}],C=["高处坠落","物体打击","坍塌","触电","火灾","起重","防汛","防台风","中暑","中毒窒息","管线破坏"];function D(a){let b=B.filter(b=>b.pattern.test(a)).map(a=>a.name),c=B.filter(b=>!b.pattern.test(a)).map(a=>a.name),d=C.filter(b=>a.includes(b));return{coveredParts:[...b],missingParts:[...c],coverage:b.length/B.length,planHits:[...d]}}let E=[/其他项目/u,/其他标段/u,/其他城市/u,/本公司(?:其他|承建)/u,/某(?:市|县|区|项目)(?:的)?/u,/他项目/u,/兄弟项目/u];function F(a){return E.filter(b=>b.test(a)).map(a=>a.source.replace(/\\u/gu,""))}},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,py:()=>i,q6:()=>f,tF:()=>k,ty:()=>m})},95734:(a,b,c)=>{c.d(b,{$y:()=>u,CX:()=>v,Qf:()=>m,Sq:()=>s,bU:()=>r,bb:()=>A,nz:()=>t,rI:()=>w,t5:()=>n});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)?0===j?1/0:j>0?Math.floor(j):void 0:void 0,l=k??1/0;function m(a){return l}function n(a){return l=k??1/0}let o=0,p=[];function q(){i=Math.max(0,i-1);let a=p.shift();a&&!a.settled&&(a.settled=!0,i+=1,a.resolve(q))}function r(a){return a?.llm?.failureStreak??o}function s(){return l}function t(a){let b=a instanceof Error?`${a.name} ${a.message}`:String(a);return/maximum context length|context ?length|context ?window|too many tokens|input.{0,24}too long|prompt.{0,24}too long|请求.{0,16}(超长|过长|超出)|上下文.{0,16}(超长|超出|过长|窗口)/iu.test(b)||/400/u.test(b)&&/context|too ?long|token|length|上下文/iu.test(b)||/JSON.{0,10}被截断|JSON.{0,10}未闭合/iu.test(b)}function u(){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}}function v(a){return a.filter(a=>!!a).reduce((a,b)=>a+b.length,0)}async function w(a,b,c=!1,f={}){var j;if(f.diagnostics)if(f.diagnostics.llm.calls+=1,f.diagnostics.llm.inputChars=(f.diagnostics.llm.inputChars||0)+a.length+b.length,f.contextLayers){let a=f.diagnostics.llm.layerChars??(f.diagnostics.llm.layerChars={l0:0,l1:0,l2:0,l3:0});a.l0+=f.contextLayers.l0||0,a.l1+=f.contextLayers.l1||0,a.l2+=f.contextLayers.l2||0,a.l3+=f.contextLayers.l3||0}else f.diagnostics.llm.unlayeredChars=(f.diagnostics.llm.unlayeredChars||0)+a.length+b.length;let k=await (j=f.signal,new Promise((a,b)=>{if(i<l){i+=1,a(q);return}let c={resolve:a,reject:b,settled:!1};p.push(c);let d=()=>{if(c.settled)return;c.settled=!0;let a=p.indexOf(c);a>=0&&p.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=u();if(!j)return;let{model:k,provider:l}=j,m=(0,g.c6)({provider:k.provider,model:k.name,baseUrl:l.baseUrl,directEndpoint:l.directEndpoint,protocol:l.protocol,apiKeyHash:l.apiKey?(0,g.c6)(l.apiKey):""}),n=h.get(m);n||(n=(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":/deepseek/iu.test(a)?"deepseek":"openai"}(k.provider,l),{baseUrl:l.baseUrl,apiKey:l.apiKey,modelName:k.name,directEndpoint:l.directEndpoint}),h.set(m,n));let p=k.name.toLowerCase(),q=function(a,b,c){let e=(0,d.thinkingCapabilityForModel)(b);return"disabled"===c?e&&"unsupported"!==e.disable?{disableThinking:!0,budgetMode:"compact"}:{disableThinking:!1,budgetMode:e?.budgetPolicy==="shared"?"relaxed":"compact",warning:`当前模型 ${b} 思考不可关闭(厂商限制),已忽略“强制关闭思考”配置;建议切换 deepseek 或 gpt 系列模型`}:"enabled"!==c&&"structuredGeneration"===a&&e?"unsupported"===e.disable?{disableThinking:!1,budgetMode:"shared"===e.budgetPolicy?"relaxed":"compact",warning:`当前模型 ${b} 思考不可关闭(厂商限制),生成耗时受限;建议切换 deepseek 或 gpt 系列模型`}:{disableThinking:!0,budgetMode:"compact"}:{disableThinking:!1,budgetMode:"compact"}}(f.taskKind??"structuredGeneration",p,k.thinking);q.warning&&f.diagnostics&&!f.diagnostics.llm.thinkingWarning&&(f.diagnostics.llm.thinkingWarning=q.warning);let r=n.capabilities?.maxOutputTokens||8192,s=/deepseek/iu.test(p)?Math.min(r,8192):r,t="relaxed"===q.budgetMode&&f.maxTokens?Math.min(Math.ceil(6*f.maxTokens),s):f.maxTokens,v=Symbol("empty-content"),w=async(d,e=!1)=>{if(f.signal?.aborted)throw Error("用户中止");let g=await n.chat([{role:"system",content:c?`${a}
5
5
  只返回 JSON,不要返回 markdown。`:a},{role:"user",content:e?`${b}
6
6
 
7
7
  (重要:缩短思考过程,直接给出最终结论。)`:b}],{temperature:f.temperature??.3*!c,maxTokens:d,signal:f.signal,disableThinking:q.disableThinking}),h=g.content?.trim()??"";if(h){if(f.diagnostics&&g.usage){let a=f.diagnostics.llm;a.inputTokens=(a.inputTokens||0)+g.usage.promptTokens,a.outputTokens=(a.outputTokens||0)+g.usage.completionTokens,a.promptCacheHitTokens=(a.promptCacheHitTokens||0)+(g.usage.promptCacheHitTokens||0),a.promptCacheMissTokens=(a.promptCacheMissTokens||0)+(g.usage.promptCacheMissTokens||0)}return h}throw v};for(let a=0;a<=1;a+=1){if(f.signal?.aborted)throw Error("用户中止");try{let b=1===a&&i===v,c=await w(t,b);return o=0,f.diagnostics&&(f.diagnostics.llm.failureStreak=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|服务繁忙|连接失败|abort|timeout|timed ?out/iu.test(b)}(b)||a>=1)break;f.diagnostics&&(f.diagnostics.llm.retries+=1),await new Promise(a=>{setTimeout(a,1200+Math.floor(800*Math.random()))})}}o+=1,f.diagnostics&&(f.diagnostics.llm.failures+=1,f.diagnostics.llm.failureStreak=(f.diagnostics.llm.failureStreak||0)+1,f.diagnostics.llm.lastError=i instanceof Error?i.message:i===v?"空响应(思考阶段耗尽输出预算)":String(i));return}finally{k()}}function x(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}function y(a,b){a&&(a.llm.schemaFailures=(a.llm.schemaFailures||0)+1,a.llm.lastError=b)}async function z(a,b,c={},d){let e,f=c.maxTokens,g=d??((a,b)=>w(a,b,!0,{maxTokens:f,temperature:c.temperature,signal:c.signal,diagnostics:c.diagnostics,disableThinkingBoost:c.disableThinkingBoost,taskKind:c.taskKind,contextLayers:c.contextLayers}));for(let d=0;d<=2&&!c.signal?.aborted;d+=1){let h=0===d?b:`${b}