@customize-agent/server 4.14.0 → 4.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +2 -2
  3. package/.next/prerender-manifest.json +3 -3
  4. package/.next/server/chunks/208.js +15 -13
  5. package/.next/server/chunks/5284.js +19 -19
  6. package/.next/server/chunks/6482.js +2 -2
  7. package/.next/server/chunks/{2886.js → 7790.js} +62 -45
  8. package/.next/server/chunks/8661.js +1 -1
  9. package/.next/server/pages/404.html +1 -1
  10. package/.next/server/pages/500.html +1 -1
  11. package/.next/server/pages/api/assets/generated/preview.js +1 -1
  12. package/.next/server/pages/api/assets/generated/preview.js.nft.json +1 -1
  13. package/.next/server/pages/api/assets/generated.js +1 -1
  14. package/.next/server/pages/api/assets/generated.js.nft.json +1 -1
  15. package/.next/server/pages/api/documents/chapter/regenerate.js +1 -1
  16. package/.next/server/pages/api/documents/chapter/regenerate.js.nft.json +1 -1
  17. package/.next/server/pages/api/documents/export.js +1 -1
  18. package/.next/server/pages/api/documents/export.js.nft.json +1 -1
  19. package/.next/server/pages/api/documents/generate.js +2 -2
  20. package/.next/server/pages/api/documents/generate.js.nft.json +1 -1
  21. package/.next/server/pages/api/documents/generated/[id].js +1 -1
  22. package/.next/server/pages/api/documents/generated/[id].js.nft.json +1 -1
  23. package/.next/server/pages/api/documents/generated.js +1 -1
  24. package/.next/server/pages/api/documents/generated.js.nft.json +1 -1
  25. package/.next/server/pages/api/documents/templates.js +1 -1
  26. package/.next/server/pages/api/documents/templates.js.nft.json +1 -1
  27. package/.next/server/pages/asset-library.html +1 -1
  28. package/.next/server/pages/document-roles.html +1 -1
  29. package/.next/server/pages/documents.html +1 -1
  30. package/.next/server/pages/guide.html +1 -1
  31. package/.next/server/pages/index.html +1 -1
  32. package/.next/server/pages/knowledge/file-detail.html +1 -1
  33. package/.next/server/pages/knowledge/files.html +1 -1
  34. package/.next/server/pages/knowledge/manage.html +1 -1
  35. package/.next/server/pages/knowledge.html +1 -1
  36. package/.next/server/pages/models.html +1 -1
  37. package/.next/server/pages/overview.html +1 -1
  38. package/.next/server/pages/prompt.html +1 -1
  39. package/.next/server/pages/settings.html +1 -1
  40. package/.next/server/pages/system/logs.html +1 -1
  41. package/.next/server/pages/template-references.html +1 -1
  42. package/.next/server/pages-manifest.json +28 -28
  43. package/package.json +1 -1
  44. /package/.next/static/{-eOxudpLDomlK_hyLr6b5 → m8zEEWbtaoe4CdvOveKGK}/_buildManifest.js +0 -0
  45. /package/.next/static/{-eOxudpLDomlK_hyLr6b5 → m8zEEWbtaoe4CdvOveKGK}/_ssgManifest.js +0 -0
@@ -32,22 +32,22 @@ ${b}`,`绑定材料:
32
32
  ${a.evidenceText}`].filter(Boolean).join("\n\n"),e={l0:c.length,l1:(0,h.CX)([a.promptTexts?`配置写作主控提示词:
33
33
  ${a.promptTexts}`:""]),l2:(0,h.CX)([`文档模板:${a.template.name}`,`章节目的:${a.chapter.purpose}`,a.requiredFacts.length?`模板要求覆盖的事实:${a.requiredFacts.join("、")}`:"",a.missingFacts.length?`当前检索未充分命中的事实(如材料中确实没有,写入对应小节的 missingFacts):${a.missingFacts.join("、")}`:"",'返回 JSON:{"sections":[{"title":"小节名","facts":["可写事实(必须来自材料)"],"quantifiedFacts":["含数值/单位/编号的事实(必须原样)"],"missingFacts":["该小节需要但材料缺失的事实"]}]}']),l3:(0,h.CX)([`章节标题:${a.chapter.title}`,`预设小节:
34
34
  ${b}`,`绑定材料:
35
- ${a.evidenceText}`])};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,contextLayers:e});if(b&&Array.isArray(b.sections)&&b.sections.length>0)return b}}async function D(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,x=c;if(t&&(o=await C({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 y,z;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];x=e,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||""}
35
+ ${a.evidenceText}`])};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,contextLayers:e,prefixKey:`outline:${a.chapter.id}`});if(b&&Array.isArray(b.sections)&&b.sections.length>0)return b}}async function D(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,rankBoost:n.evidenceRankBoost,onlyRankBoosted:n.onlyRankBoosted,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,x=c;if(t&&(o=await C({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 y,z;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];x=e,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,rankBoost:n.evidenceRankBoost,diagnostics:n.diagnostics}),(w=new Set(a.filter(a=>!function(a,b){let c=b.map(a=>`${a.sectionTitle||""}
36
36
  ${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}
37
37
 
38
38
  【定向补充检索】以下大纲缺失事实已找到对应材料并追加在上方,请一并落位:${a.filter(a=>!w.has(a)).join("、")}`)}else w=new Set(a)}else w=new Set(a);if(y=o,z=w,u=["【事实大纲——由事实规划阶段生成,写作时必须逐条落位】","大纲事实全部来自绑定材料,落位不构成编造;数值、单位、标准编号必须与大纲完全一致。",...y.sections.map(a=>{let b=[...new Set([...a.facts||[],...a.quantifiedFacts||[]])].filter(Boolean),c=(a.missingFacts||[]).filter(a=>a&&z.has(a));return[`### ${a.title||"正文"}`,b.length?`必须写入的事实(数值必须原样):
39
- ${b.map(a=>`- ${a}`).join("\n")}`:"",c.length?`材料缺失(禁止编造具体值;可用公共专业知识补做法与要求):${c.join("、")}`:""].filter(Boolean).join("\n")})].join("\n\n"),"0"!==process.env.DOCUMENT_TWO_STEP_SLIM){let a=Math.floor(.6*(0,f.Pc)(n.targetWords||n.minWords,n.evidenceFloorChars,n.evidenceCeilingChars)),c=r.split("\n\n【定向补充检索】")[1];r=(0,f.ks)((0,f.QO)(b,x),{maxChars:a,requiredFacts:b.requiredFacts,skipT0:q,diagnostics:n.diagnostics})+(c?`
39
+ ${b.map(a=>`- ${a}`).join("\n")}`:"",c.length?`材料缺失(禁止编造具体值;可用公共专业知识补做法与要求):${c.join("、")}`:""].filter(Boolean).join("\n")})].join("\n\n"),"0"!==process.env.DOCUMENT_TWO_STEP_SLIM){let a=Math.floor(.6*(0,f.Pc)(n.targetWords||n.minWords,n.evidenceFloorChars,n.evidenceCeilingChars)),c=r.split("\n\n【定向补充检索】")[1];r=(0,f.ks)((0,f.QO)(b,x),{maxChars:a,requiredFacts:b.requiredFacts,skipT0:q,rankBoost:n.evidenceRankBoost,diagnostics:n.diagnostics})+(c?`
40
40
 
41
41
  【定向补充检索】${c}`:"")}}let B=A(j),F=b.sections?.length?`本章小节由生成前规划得到,请完整包含并展开以下小节:
42
42
  ${b.sections.map(a=>`- ${a}`).join("\n")}`:"本章没有预设小节;请按用户提示词、模板章节、角色要求和绑定材料自然组织正文。",G=function(a,b){let c=E(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),H=(0,l.T4)(b),I=(0,m.Ls)(b),J=(0,m.db)(b),K=(0,v.vN)(b.title,b.sections||[]),L=n.compactProjectContext?n.scopedProjectContext?U(i):T(i):i,M=[(0,g.b_)(g.rd),n.forbidDrawingImages?"图片类材料只作为文本事实依据;禁止插入图片或 Markdown 图片语法。":""].filter(Boolean).join("\n\n"),N=[e?`配置写作主控提示词:
43
- ${e}`:"",`文档模板:${a.name}`,`章节目的:${b.purpose}`,j?`用户要求:${j}`:"",B,i?`上下文/历史记忆(仅作偏好、历史纠偏和连续性参考;如与知识库证据冲突,以知识库证据为准):
44
- ${L}`:"",n.sharedFactLayerText||"",n.factCoverageContext||"",d.length?`需要特别补足的信息:${d.join("、")}`:"","请生成可直接导出的 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 字段不得编造,也不得写任何固定占位话术。":"",F,G,H,I,J,...K,k||"",u,"",r?"绑定材料:":"",r,n.userWriterRules?`
43
+ ${e}`:"",`文档模板:${a.name}`,`章节目的:${b.purpose}`,j?`用户要求:${j}`:"",B,n.planDataMasterText||"",i?`上下文/历史记忆(仅作偏好、历史纠偏和连续性参考;如与知识库证据冲突,以知识库证据为准):
44
+ ${L}`:"",n.sharedFactLayerText||"",n.factCoverageContext||"",d.length?`需要特别补足的信息:${d.join("、")}`:"",n.chapterLevelContext||"",u,"请生成可直接导出的 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 字段不得编造,也不得写任何固定占位话术。":"",F,G,H,I,J,...K,k||"","",r?"绑定材料:":"",r,n.userWriterRules?`
45
45
  【用户写作指令——必须严格遵守】
46
46
  ${n.userWriterRules}`:""].filter(Boolean).join("\n"),O={l0:M.length,l1:(0,h.CX)([e?`配置写作主控提示词:
47
- ${e}`:"",j?`用户要求:${j}`:"",B,"请生成可直接导出的 Markdown 章节,要求:","- 内容必须遵循用户提示词、模板章节、提示词角色、项目资料包和自动识别的资料类型;不得编造材料未提供的项目专属事实;法律法规名称、标准规范编号等公共知识可依据现行有效版本直接引用。","- 将材料要点自然融入正文;不要输出系统证据清单、中间分析过程或后台流程话术。",g.KX]),l2:(0,h.CX)([`文档模板:${a.name}`,`章节目的:${b.purpose}`,i?`上下文/历史记忆(仅作偏好、历史纠偏和连续性参考;如与知识库证据冲突,以知识库证据为准):
48
- ${L}`:"",n.sharedFactLayerText||"",n.factCoverageContext||"",d.length?`需要特别补足的信息:${d.join("、")}`:""]),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 字段不得编造,也不得写任何固定占位话术。":"",F,G,H,I,J,...K,k||"",u,r?"绑定材料:":"",r,n.userWriterRules?`
47
+ ${e}`:"",j?`用户要求:${j}`:"",B,n.planDataMasterText||"","请生成可直接导出的 Markdown 章节,要求:","- 内容必须遵循用户提示词、模板章节、提示词角色、项目资料包和自动识别的资料类型;不得编造材料未提供的项目专属事实;法律法规名称、标准规范编号等公共知识可依据现行有效版本直接引用。","- 将材料要点自然融入正文;不要输出系统证据清单、中间分析过程或后台流程话术。",g.KX]),l2:(0,h.CX)([`文档模板:${a.name}`,`章节目的:${b.purpose}`,i?`上下文/历史记忆(仅作偏好、历史纠偏和连续性参考;如与知识库证据冲突,以知识库证据为准):
48
+ ${L}`:"",n.sharedFactLayerText||"",n.factCoverageContext||"",d.length?`需要特别补足的信息:${d.join("、")}`:"",n.chapterLevelContext||"",u]),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 字段不得编造,也不得写任何固定占位话术。":"",F,G,H,I,J,...K,k||"",r?"绑定材料:":"",r,n.userWriterRules?`
49
49
  【用户写作指令——必须严格遵守】
50
- ${n.userWriterRules}`:""])},P=await (0,h.rI)(M,N,!1,{maxTokens:n.maxTokens,signal:n.signal,diagnostics:n.diagnostics,disableThinkingBoost:n.disableThinkingBoost,contextLayers:O});if(P&&!(P.length<120))return(0,g.kT)((0,g.FD)(P.startsWith("## ")?P:`## ${b.title}
50
+ ${n.userWriterRules}`:""])},P=await (0,h.rI)(M,N,!1,{maxTokens:n.maxTokens,signal:n.signal,diagnostics:n.diagnostics,disableThinkingBoost:n.disableThinkingBoost,contextLayers:O,prefixKey:`writer-block:${b.id}`});if(P&&!(P.length<120))return(0,g.kT)((0,g.FD)(P.startsWith("## ")?P:`## ${b.title}
51
51
 
52
52
  ${P}`,!!n.forbidDrawingImages))}function E(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 F(a){return[...new Set((a.match(/[\p{Script=Han}]{2,}|[A-Za-z0-9_-]{3,}/gu)||[]).map(a=>a.toLowerCase()))]}function G(a,b,c){let d=F([a,b.title,...b.requiredFacts||[]].join(" ")),e=/项目概况|工程概况|总体|部署|施工方案|工期|进度|质量|安全|资源|材料|设备/u.test(a),f=c.map((b,c)=>{let f=`${b.filePath}
53
53
  ${b.sectionTitle||""}
@@ -68,34 +68,34 @@ ${n(m,Math.max(400,b-l.length-20))}`:n(m,b)}async function V(a){var b;let c=G(a.
68
68
  - 工艺参数(参考):${a.params.join(";")}
69
69
  - 检测验收:${a.acceptance.join(";")}
70
70
  - 规范依据:${a.standards.join(";")}`})].join("\n")):"",u=[a.promptTexts?`配置写作主控提示词:
71
- ${a.promptTexts}`:"",`文档模板:${a.template.name}`,`章节标题:${a.chapter.title}`,a.requirement?`用户要求:${a.requirement}`:"",A(a.requirement),a.projectContext?`上下文:
71
+ ${a.promptTexts}`:"",`文档模板:${a.template.name}`,`章节标题:${a.chapter.title}`,a.requirement?`用户要求:${a.requirement}`:"",A(a.requirement),a.planDataMasterText||"",a.projectContext?`上下文:
72
72
  ${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?`绑定材料:
73
73
  ${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?`配置写作主控提示词:
74
- ${a.promptTexts}`:"",a.requirement?`用户要求:${a.requirement}`:"",A(a.requirement),"本章节结构已由系统按模板和提示词锁定;不得删除、重命名、合并或重排当前节标题;每个节下必须自然展开三级小节,三级小节承载正文。",g.KX]),l2:(0,h.CX)([`文档模板:${a.template.name}`,`章节标题:${a.chapter.title}`,a.projectContext?`上下文:
74
+ ${a.promptTexts}`:"",a.requirement?`用户要求:${a.requirement}`:"",A(a.requirement),a.planDataMasterText||"","本章节结构已由系统按模板和提示词锁定;不得删除、重命名、合并或重排当前节标题;每个节下必须自然展开三级小节,三级小节承载正文。",g.KX]),l2:(0,h.CX)([`文档模板:${a.template.name}`,`章节标题:${a.chapter.title}`,a.projectContext?`上下文:
75
75
  ${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?`绑定材料:
76
- ${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}
76
+ ${i}`:""])},y=()=>(0,h.rI)(w,u,!1,{maxTokens:Math.min(8192,Math.max(2800,Math.ceil(2.6*a.targetWords))),temperature:.25,signal:a.signal,diagnostics:a.diagnostics,contextLayers:x,prefixKey:`writer-section:${a.chapter.id}`}),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}
77
77
 
78
78
  ${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),F=B;if(E&&/项目主要施工内容/u.test(a.sectionTitle)){let b=(0,r.g6)(B);b===B||(0,r.eK)(a.sectionTitle,b)||(E="",F=b)}if(E&&a.allowLenientStructureGate&&/项目主要施工内容/u.test(a.sectionTitle)){let b=(0,r.sE)(a.sectionTitle,F),c=(b.match(/^####\s+/gmu)||[]).length,d=(0,r.y7)((0,r.DD)(b));c>=3&&!d&&(0,e.V7)(F)>=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)(F)<D){a.diagnostics&&(a.diagnostics.llm.lastError=`section writer 正文不足:${a.chapter.title} / ${a.sectionTitle} / ${(0,e.V7)(F)}/${D}字`);return}let H=/项目主要施工内容/u.test(a.sectionTitle)?(0,r.h$)(F):F;return(0,r.ev)(a.sectionTitle,H)}async function W(a){let b=((0,r.hf)(a.sectionTitle)?[...G(a.sectionTitle,a.chapter,a.evidence),...a.evidence]:G(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 R(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?`压缩证据:
79
- ${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?`压缩证据:
80
- ${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}
79
+ ${d}`:""])},l=await (0,h.rI)(i,[`章节标题:${a.chapter.title}`,a.requirement?`用户要求:${a.requirement}`:"",a.planDataMasterText||"","禁止写“根据/依据招标文件、补疑澄清文件、工程量清单及设计图纸”等资料来源罗列话术;直接写项目事实、施工内容、控制措施和验收要求。",`指定节标题:### ${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?`压缩证据:
80
+ ${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,prefixKey:`writer-focused:${a.chapter.id}`});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}
81
81
 
82
82
  ${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 X(a){let b=(0,e.V7)(a.currentContent),c=(0,r.ap)(a.sectionTitle),d=Math.max(a.targetWords,c)-b,i=G(a.sectionTitle,a.chapter,a.evidence),j=await R(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?`配置写作主控提示词:
83
83
  ${a.promptTexts}`:"",a.requirement?`用户要求:${a.requirement}`:"",`当前小节约 ${b} 字,目标约 ${a.targetWords} 字,本轮补充约 ${m} 字。`,"请输出可直接追加或插入到本小节的补充段落;不要重复小节标题,不要解释生成过程;优先使用绑定资料中的事实和量化参数,不得输出“该小节围绕”等模板化占位句。"]),l2:(0,h.CX)([`章节标题:${a.chapter.title}`,a.factCoverageContext||"",(0,k.av)(a.chapter.title,a.sectionTitle)]),l3:(0,h.CX)([`当前小节:${a.sectionTitle}`,j.prompt,l?`绑定材料:
84
84
  ${l}`:"",`已有小节正文:
85
85
  ${(0,r.DD)(a.currentContent).slice(0,12e3)}`])},p=await (0,h.rI)(n,[a.promptTexts?`配置写作主控提示词:
86
- ${a.promptTexts}`:"",`章节标题:${a.chapter.title}`,`当前小节:${a.sectionTitle}`,a.requirement?`用户要求:${a.requirement}`:"",a.factCoverageContext||"",(0,k.av)(a.chapter.title,a.sectionTitle),j.prompt,`当前小节约 ${b} 字,目标约 ${a.targetWords} 字,本轮补充约 ${m} 字。`,"请输出可直接追加或插入到本小节的补充段落;不要重复小节标题,不要解释生成过程;优先使用绑定资料中的事实和量化参数,不得输出“该小节围绕”等模板化占位句。",l?`绑定材料:
86
+ ${a.promptTexts}`:"",`章节标题:${a.chapter.title}`,`当前小节:${a.sectionTitle}`,a.requirement?`用户要求:${a.requirement}`:"",a.planDataMasterText||"",a.factCoverageContext||"",(0,k.av)(a.chapter.title,a.sectionTitle),j.prompt,`当前小节约 ${b} 字,目标约 ${a.targetWords} 字,本轮补充约 ${m} 字。`,"请输出可直接追加或插入到本小节的补充段落;不要重复小节标题,不要解释生成过程;优先使用绑定资料中的事实和量化参数,不得输出“该小节围绕”等模板化占位句。",l?`绑定材料:
87
87
  ${l}`:"",`已有小节正文:
88
- ${(0,r.DD)(a.currentContent).slice(0,12e3)}`].filter(Boolean).join("\n\n"),!1,{maxTokens:(0,r.uV)(m),temperature:.25,signal:a.signal,diagnostics:a.diagnostics,contextLayers:o}),q=(0,g.kT)((0,g.FD)(p||"",a.forbidDrawingImages)).replace(/^#{3,4}\s+.*\n+/u,"").trim();return q?`${a.currentContent.trim()}
88
+ ${(0,r.DD)(a.currentContent).slice(0,12e3)}`].filter(Boolean).join("\n\n"),!1,{maxTokens:Math.min(8192,Math.max(2800,Math.ceil(2.6*m))),temperature:.25,signal:a.signal,diagnostics:a.diagnostics,contextLayers:o,prefixKey:`writer-supplement:${a.chapter.id}`}),q=(0,g.kT)((0,g.FD)(p||"",a.forbidDrawingImages)).replace(/^#{3,4}\s+.*\n+/u,"").trim();return q?`${a.currentContent.trim()}
89
89
 
90
90
  ${q}`:a.currentContent}async function Y(a){if((0,r.hf)(a.sectionTitle)){let b=await W({...a,targetWords:Math.max(620,Math.floor(.75*a.targetWords)),maxWords:Math.ceil(1.22*Math.max(620,Math.floor(.75*a.targetWords))),qualityFeedback:`本小节使用 focused writer 优先成稿。必须直接输出“### ${a.sectionTitle}”及正式正文。`}).catch(b=>{a.diagnostics&&(a.diagnostics.llm.lastError=`focused writer 异常:${a.chapter.title} / ${a.sectionTitle} / ${b instanceof Error?b.message:String(b)}`)});if(b)return(0,g.kT)((0,g.FD)(b,a.forbidDrawingImages))}let b=function(a,b){if(/项目主要施工内容/u.test(a))return[{sectionTitle:a,taskTitle:a,targetWords:Math.max(b,2200),index:1,total:1}];let c=(0,r.zJ)(a)?760:Math.max(1400,Math.floor(Number(process.env.DOCUMENT_WRITING_TASK_MAX_WORDS??2800))),d=(0,r.zJ)(a)?Math.max(3,Math.ceil(b/c)):b>1.5*c?Math.ceil(b/c):1,e=Math.max(800,Math.ceil(b/d));return d<=1?[{sectionTitle:a,taskTitle:a,targetWords:b,index:1,total:1}]:Array.from({length:d},(b,c)=>({sectionTitle:a,taskTitle:function(a,b,c){if(/项目特点.*重点.*难点|重点.*难点.*分析/u.test(a))return["项目特点与基础事实","施工重点识别","施工难点成因与影响","应对措施与责任闭环","重点难点与施工内容对应关系"][b%5];if(/项目主要施工内容/u.test(a))return["专业工程识别与施工概况","专业工程施工流程","专业工程施工方法","工程量参数与资源穿插","验收检测与资料闭环"][b%5];if(/主要分部分项工程施工方案|主要施工方法/u.test(a))return["当前项目分部分项对象","主要工艺流程与施工顺序","材料设备与参数控制","质量安全控制点","验收移交与资料闭环"][b%5];let d=a.toLowerCase(),e=/资源|材料|设备|人材机/u.test(a)?["资源配置依据","材料设备规格与数量","进场组织与保管要求","使用调配与过程核验","验收记录与动态调整"]:/施工|工艺|技术|安装|土建|结构|给排水|电气/u.test(a)||/method|technical/u.test(d)?["施工准备与技术依据","主要工艺流程","材料设备与参数控制","质量验收要点","成品保护与问题处置"]:/安全|文明|危大|风险/u.test(a)?["风险识别与控制边界","防护设施与作业条件","人员设备安全管理","检查频次与整改闭环","应急响应与资料留存"]:/质量|验收|标准/u.test(a)?["质量目标与验收依据","过程控制点","材料设备复核","检验批与验收资料","问题整改与成品保护"]:["资料依据与适用范围","对象范围与关键参数","实施方法与组织安排","质量安全控制要求","检查验收与闭环管理"];return c<=1?a:`${a}:${e[b%e.length]}`}(a,c,d),targetWords:e,index:c+1,total:d}))}(a.sectionTitle,a.targetWords),c=Array(b.length),d=async b=>{let c,d;(0,i.Te)(a.signal);let e=b.total>1?2:3;for(let f=0;f<e&&!c;f+=1){let g=0===f?b.targetWords:Math.max(560,Math.floor(b.targetWords*(1===f?.85:.7)));try{c=await V({...a,sectionTitle:b.sectionTitle,targetWords:g,maxWords:Math.ceil(1.18*g),qualityFeedback:[b.total>1?`这是首轮生成的主题任务 ${b.index}/${b.total},只聚焦“${b.taskTitle}”。不得重复同小节其他主题的通用表述;优先写入与本主题相关的资料事实、规格、数量、标准、检查要求和执行动作。`:a.qualityFeedback,f>0?`上一轮未生成有效正文${d?`(被拒原因:${d})`:""}。本轮必须直接输出“### ${a.sectionTitle}”及正式正文,逐条修正被拒原因,优先完成可审查、可落位事实的核心内容。`:""].filter(Boolean).join("\n")})}catch{c=void 0}if(c||(d=a.diagnostics?.llm.lastError),!c&&f===e-1)try{c=await W({...a,sectionTitle:b.sectionTitle,targetWords:Math.max(520,Math.floor(.85*g)),maxWords:Math.ceil(1.18*Math.max(520,Math.floor(.85*g))),qualityFeedback:`前序 Writer 未完成${d?`(被拒原因:${d})`:""}。本轮使用轻量定向 Writer,只完成“${a.sectionTitle}”正式正文,逐条修正被拒原因。`})}catch(d){a.diagnostics&&(a.diagnostics.llm.lastError=`focused writer 后置异常:${a.chapter.title} / ${b.sectionTitle} / ${d instanceof Error?d.message:String(d)}`),c=void 0}}return c?(0,r.DD)(c):void 0},f=Number(process.env.DOCUMENT_WRITING_TASK_CONCURRENCY||2),h=Math.max(1,Math.min(b.length,2,Number.isFinite(f)?Math.floor(f):2));for(let e=0;e<b.length;e+=h){(0,i.Te)(a.signal);let f=b.slice(e,e+h);(await Promise.all(f.map(a=>d(a)))).forEach((a,b)=>{c[e+b]=a})}let j=c.filter(a=>!!a);if(0===j.length){a.diagnostics&&!a.diagnostics.llm.lastError&&(a.diagnostics.llm.lastError=`task writer 未产出有效正文:${a.chapter.title} / ${a.sectionTitle}`);return}let k=`### ${a.sectionTitle}
91
91
 
92
92
  ${j.join("\n\n")}`;if(200>(0,e.V7)((0,r.DD)(k))){a.diagnostics&&(a.diagnostics.llm.lastError=`task writer 正文空壳:${a.chapter.title} / ${a.sectionTitle} / ${(0,e.V7)((0,r.DD)(k))}字`);return}let l=(0,r.eK)(a.sectionTitle,k);if(l){a.diagnostics&&(a.diagnostics.llm.lastError=`task writer ${l}:${a.chapter.title} / ${a.sectionTitle}`);return}return k=await X({...a,currentContent:k,targetWords:a.targetWords}),(0,g.kT)((0,g.FD)(k,a.forbidDrawingImages))}async function Z(a){let b=E(a.chapter,a.targetWords);if(b.length<2)return;let c=Number(process.env.DOCUMENT_SECTION_CONCURRENCY||b.length||1),d=Math.max(1,Math.min(b.length,Number.isFinite(c)?Math.floor(c):b.length||1)),e=Array(b.length),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 Y({...e,signal:a.signal}):await $({...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;if(p>0){(0,i.Te)(a.signal);let c=await o({...b[0],index:0});e[0]=c}for(let c=1;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}
93
93
 
94
- ${s.join("\n\n")}`,a.forbidDrawingImages))}async function $(a,b){let c;for(let d=0;d<b;d+=1){let b=await V({...a,qualityFeedback:c});if(!b){c=`上一轮未生成有效正文${a.diagnostics?.llm.lastError?`(被拒原因:${a.diagnostics.llm.lastError})`:""},请针对被拒原因重新生成完整小节正文。`;continue}let d=function(a,b){let c=b.replace(/^#{3,4}\s+.*\n+/u,"").split(/\r?\n/u).filter(a=>!/^\s*\|/u.test(a)).filter(a=>!/^\s*\|?\s*:?-{3,}:?/u.test(a)).join("\n"),d=(0,e.V7)(c);return d<360?`正文有效内容不足:${a} 当前约 ${d} 字`:/资料未提供|信息有限|无法确定|待补充|建议扩大本地知识库检索|以下是|本文档|本小节围绕/u.test(c)?`存在空泛或说明性话术:${a}`:void 0}(a.sectionTitle,b);if(!d)return b;c=d}}async function _(a,b){let c=b.blocks;if(0===c.length)return;let d=c.flatMap(a=>a.subPoints.flatMap(a=>a.sources)),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=F(`${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 必须覆盖其标注的全部评分细目内容,但不得为这些细目单独开设小节标题:
95
- ${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 D(a.template,h,g,a.missingFacts,a.promptTexts,a.projectContext,a.requirement,f?`${m}
94
+ ${s.join("\n\n")}`,a.forbidDrawingImages))}async function $(a,b){let c;for(let d=0;d<b;d+=1){let b=await V({...a,qualityFeedback:c});if(!b){c=`上一轮未生成有效正文${a.diagnostics?.llm.lastError?`(被拒原因:${a.diagnostics.llm.lastError})`:""},请针对被拒原因重新生成完整小节正文。`;continue}let d=function(a,b){let c=b.replace(/^#{3,4}\s+.*\n+/u,"").split(/\r?\n/u).filter(a=>!/^\s*\|/u.test(a)).filter(a=>!/^\s*\|?\s*:?-{3,}:?/u.test(a)).join("\n"),d=(0,e.V7)(c);return d<360?`正文有效内容不足:${a} 当前约 ${d} 字`:/资料未提供|信息有限|无法确定|待补充|建议扩大本地知识库检索|以下是|本文档|本小节围绕/u.test(c)?`存在空泛或说明性话术:${a}`:void 0}(a.sectionTitle,b);if(!d)return b;c=d}}async function _(a,b){let c=b.blocks;if(0===c.length)return;let d=c.flatMap(a=>a.subPoints.flatMap(a=>a.sources)),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=Number(process.env.DOCUMENT_CHAPTER_POOL_CHARS||8e3),q=(0,f.R7)((0,f.QO)(a.chapter,a.evidence),a.chapter.requiredFacts||[],Number.isFinite(p)?Math.floor(p):8e3),s=Number(process.env.DOCUMENT_BLOCK_EVIDENCE_CHARS||3e3),t=Number.isFinite(s)&&s>0?Math.floor(s):3e3,u=async(b,c)=>{let d=b.subPoints.map(a=>a.title),f=F(`${b.title} ${d.join(" ")}`).filter(a=>a.length>=2),g=a=>Math.min(24,f.reduce((b,c)=>b+6*!!a.content.includes(c),0)),h=[...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(()=>[]):[]],j={...a.chapter,title:b.title,sections:d,tablePlans:k[c]||[]},l=b.facts.length?`【本主题块专属事实(只能在本节使用,不得重复出现在本章其他节)】${b.facts.map(a=>`- ${a}`).join("\n")}`:"",m=b.subPoints.map(a=>a.sources.length>1?`- #### ${a.title}(覆盖评分细目:${a.sources.join("、")})`:`- #### ${a.title}`).join("\n"),n=[l,`本节是「${a.chapter.title}」章的一个主题小节,只写本节标题覆盖的内容,不得重复本章其他节内容;必须按以下 H4 要点逐点写出实施性正文,H4 标题必须与给定标题完全一致,不得改名、合并或遗漏;每个 H4 必须覆盖其标注的全部评分细目内容,但不得为这些细目单独开设小节标题:
95
+ ${m}`].filter(Boolean).join("\n\n"),o=[],p=[];for(let c=0;c<2;c+=1){let f=0===c?"":["【上一轮未通过质检】",o.length?`缺失 H4 要点标题:${o.join("、")}。必须逐点补齐以上 H4 标题并展开正式正文,H4 标题与给定标题完全一致。`:"",p.length?`重复展开的 H4 要点标题:${p.join("、")}。同一小节内相同要点被重复展开多轮,必须只保留一轮完整展开,其余重复小节连同标题整体删除,不得以换编号方式重复同一内容。`:"",0===o.length&&0===p.length?"必须完整包含每个 H4 要点标题并展开正文,不得合并或遗漏要点。":"","总字数不少于目标字数。"].filter(Boolean).join("");try{let k=await D(a.template,j,h,a.missingFacts,a.promptTexts,a.projectContext,a.requirement,f?`${n}
96
96
 
97
- ${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}
97
+ ${f}`:n,{forbidDrawingImages:a.forbidDrawingImages,compactProjectContext:a.compactProjectContext,scopedProjectContext:a.scopedProjectContext,chapterLevelContext:a.roleContext||"",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:q,evidenceRankBoost:g,onlyRankBoosted:!0,evidenceFloorChars:1e3,evidenceCeilingChars:t,factCoverageContext:a.factCoverageContext||"",planDataMasterText:a.planDataMasterText,twoStep:!1,signal:a.signal,diagnostics:a.diagnostics});if(!k)continue;let l=k.replace(/^##\s+.+$/mu,"").trim(),m=(0,r.KJ)(d,l),s=/^###\s+\S+/mu.test(m)?m:`### ${b.title}
98
98
 
99
- ${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]})};c.length>0&&((0,i.Te)(a.signal),await s(c[0],0));for(let b=1;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}
99
+ ${m}`,u=(0,e.V7)(s),v=d.filter(a=>!s.includes(a)),w=(0,i.W6)(s);if(u>=Math.max(400,Math.floor(.4*b.targetWords))&&0===v.length&&0===w.length)return s;if(o=v,p=w,1===c&&0===v.length&&w.length>0){let a=(0,i.wq)(s);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}(${u} 字,缺 ${v.join("、")||"无"}${w.length?`,重复 H4 ${w.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([u({...b,title:`${b.title}(一)`,subPoints:b.subPoints.slice(0,d),targetWords:e},c),u({...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}`)}},v=async(b,d)=>{o[d]=await u(b,d),o[d]&&a.onSectionProgress?.({completed:o.filter(Boolean).length,total:c.length,sectionTitle:b.title,phase:"complete",partialSections:[...o]})};c.length>0&&((0,i.Te)(a.signal),await v(c[0],0));for(let b=1;b<c.length;b+=n){(0,i.Te)(a.signal);let d=c.slice(b,b+n);await Promise.all(d.map((a,c)=>v(a,b+c)))}if(o.every(a=>!a))return;let w=c.map((a,b)=>({index:b,block:a})).filter(({index:a})=>!o[a]),x=(0,g.kT)((0,g.FD)(`## ${a.chapter.title}
100
100
 
101
- ${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})}}};
101
+ ${o.filter(Boolean).join("\n\n")}`,a.forbidDrawingImages));return 0===w.length?{sections:o,failedBlocks:w,allSucceeded:!0,markdown:x}:(a.diagnostics&&w.length>0&&(a.diagnostics.llm.lastError=`规划块部分失败:${w.map(({block:a})=>a.title).join("、")}`),{sections:o,failedBlocks:w,allSucceeded:!1,markdown:x})}}};
@@ -28,8 +28,8 @@ ${a.issues.map(a=>`- ${a}`).join("\n")}`].filter(Boolean).join("\n\n"),m=e?(0,g.
28
28
  ${a.promptTexts}`:"",d?`系统提供的目标原文(改写对象,按序号对应):
29
29
  ${a.anchorTexts.map((a,b)=>`${b}. “${a}”`).join("\n")}`:"",`需要局部修复的问题:
30
30
  ${a.issues.map(a=>`- ${a}`).join("\n")}`]),l2:(0,p.CX)([`模板:${a.template.name}`,`章节:${a.chapter.title}`,"当前章节 Markdown:",a.chapter.content,c]),l3:(0,p.CX)([b])}),s=e&&m?`本章证据摘要:
31
- ${(0,g.ks)(e,{maxChars:m,diagnostics:a.diagnostics})}`:"",v=await (0,p.bb)(h,k(s),{maxTokens:a.maxTokens??8e3,temperature:0,signal:a.signal,diagnostics:a.diagnostics,outFailure:q,contextLayers:r(s)});if(!v&&e&&(0,p.nz)(q.value)){let b=`本章证据摘要:
32
- ${(0,g.ks)(e,{maxChars:3e3,diagnostics:a.diagnostics})}`;v=await (0,p.bb)(h,k(b),{maxTokens:a.maxTokens??8e3,temperature:0,signal:a.signal,diagnostics:a.diagnostics,contextLayers:r(b)})}(0,n.Te)(a.signal);let w=a.chapter.content,x=0,y=Array.isArray(v?.patches)?v.patches:[];for(let b of y){if(a.patchGuard&&b.replacement?.trim()&&function(a){let b=[];i.kt.test(a)&&b.push("资料来源罗列句");let c=o.filter(b=>a.includes(b));for(let d of(c.length>0&&b.push(`内部术语“${c.join("”“")}”`),a.matchAll(l.eS)))b.push(`具体日历日期“${d[1]}年${d[2]}月${d[3]}日”`);let d=[...new Set(a.match(l.Ih)||[])];return d.length>0&&b.push(`叠词“${d.join("”“")}”`),b}(b.replacement).length>0){let b=a.patchGuard.diagnostics;if(a.patchGuard.observeOnly)b&&(b.llm.patchGuardHits=(b.llm.patchGuardHits??0)+1);else{b&&(b.llm.patchGuardRejects=(b.llm.patchGuardRejects??0)+1);continue}}if(d&&"number"==typeof b.anchorIndex){let c=a.anchorTexts?.[b.anchorIndex];if(c){let d=function(a){let b=a.replacement?.trim(),c=t(a.content);if(!b||b.length>c||a.forbidDrawingImages&&/!\[[^\]]*\]\([^)]*\)/iu.test(b))return{content:a.content,applied:!1};let d=a.anchor.replace(/\s+/gu,"");if(d.length<4||!a.content.replace(/\s+/gu,"").includes(d))return{content:a.content,applied:!1};let e=function(a,b,c){let d=[],e="";for(let b=0;b<a.length;b+=1){let c=a[b];/\s/u.test(c)||(e+=c,d.push(b))}let f=[],g=0;for(;;){let a=e.indexOf(b,g);if(a<0)break;f.push({start:d[a],end:d[a+b.length-1]+1}),g=a+b.length}let h=a;for(let{start:a,end:b}of f.reverse())h=h.slice(0,a)+c+h.slice(b);return h}(a.content,d,b);return!u(e,a.title)||(0,j.V7)(e)<Math.floor(.65*(0,j.V7)(a.content))?{content:a.content,applied:!1}:{content:(0,i.kT)((0,i.FD)(e,a.forbidDrawingImages)),applied:e!==a.content}}({content:w,anchor:c,replacement:b.replacement,title:a.chapter.title,forbidDrawingImages:a.forbidDrawingImages});w=d.content,d.applied&&(x+=1);continue}}let c=function(a){let b=a.patch.replacement?.trim(),c=t(a.content);if(!b||b.length>c||a.forbidDrawingImages&&/!\[[^\]]*\]\([^)]*\)/iu.test(b))return{content:a.content,applied:!1};let d=function(a,b){let c=b.originalText?.trim();if(c&&a.includes(c)&&a.indexOf(c)===a.lastIndexOf(c))return c;if(c&&c.length>=8&&c.length<=500){let b=function(a,b){let c,d=b.split(/\s+/u).filter(a=>a.length>0);if(d.length<2)return;let e=RegExp(d.map(a=>a.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&")).join("\\s+"),"gu");for(let b of a.matchAll(e)){if(void 0!==c)return;c=b[0]}return c}(a,c);if(b)return b}let d=b.targetStart?.trim(),e=b.targetEnd?.trim();if(!d||!e)return;let f=a.indexOf(d);if(f<0)return;let g=a.indexOf(e,f+d.length);if(g<0)return;let h=g+e.length,i=a.slice(f,h);return a.indexOf(i)===a.lastIndexOf(i)?i:void 0}(a.content,a.patch);if(!d||d.length>c)return{content:a.content,applied:!1};let e=(0,i.kT)((0,i.FD)(a.content.replace(d,b),a.forbidDrawingImages));return!u(e,a.title)||(0,j.V7)(e)<Math.floor(.65*(0,j.V7)(a.content))?{content:a.content,applied:!1}:{content:e,applied:e!==a.content}}({content:w,patch:b,title:a.chapter.title,forbidDrawingImages:a.forbidDrawingImages});w=c.content,c.applied&&(x+=1)}return{content:w,appliedCount:x,producedCount:y.length,repairType:b}}function w(a,b,c){return function(a,b){let c=e.resolve(a),f=function(a,b){let c=e.resolve(a);if(e.isAbsolute(b))return e.resolve(b);let f=e.resolve(c,"knowledgeBase",b);return d.existsSync(f)?f:e.resolve(c,b)}(c,b);return f===c||f.startsWith(`${c}${e.sep}`)}(a,b)&&c.size>0&&(function(a,b){let c=e.isAbsolute(b)?b:e.join(a,b),d=e.isAbsolute(b)?e.relative(a,b):b;return[b,c,d,e.join(a,d)]})(a,b).some(a=>c.has(a))}function x(a){return a.map(a=>`## [${a.roleId}/${a.category}] ${a.name}
31
+ ${(0,g.ks)(e,{maxChars:m,diagnostics:a.diagnostics})}`:"",v=await (0,p.bb)(h,k(s),{maxTokens:a.maxTokens??8e3,temperature:0,signal:a.signal,diagnostics:a.diagnostics,outFailure:q,contextLayers:r(s),prefixKey:`repair:${a.chapter.id}`});if(!v&&e&&(0,p.nz)(q.value)){let b=`本章证据摘要:
32
+ ${(0,g.ks)(e,{maxChars:3e3,diagnostics:a.diagnostics})}`;v=await (0,p.bb)(h,k(b),{maxTokens:a.maxTokens??8e3,temperature:0,signal:a.signal,diagnostics:a.diagnostics,contextLayers:r(b),prefixKey:`repair:${a.chapter.id}`})}(0,n.Te)(a.signal);let w=a.chapter.content,x=0,y=Array.isArray(v?.patches)?v.patches:[];for(let b of y){if(a.patchGuard&&b.replacement?.trim()&&function(a){let b=[];i.kt.test(a)&&b.push("资料来源罗列句");let c=o.filter(b=>a.includes(b));for(let d of(c.length>0&&b.push(`内部术语“${c.join("”“")}”`),a.matchAll(l.eS)))b.push(`具体日历日期“${d[1]}年${d[2]}月${d[3]}日”`);let d=[...new Set(a.match(l.Ih)||[])];return d.length>0&&b.push(`叠词“${d.join("”“")}”`),b}(b.replacement).length>0){let b=a.patchGuard.diagnostics;if(a.patchGuard.observeOnly)b&&(b.llm.patchGuardHits=(b.llm.patchGuardHits??0)+1);else{b&&(b.llm.patchGuardRejects=(b.llm.patchGuardRejects??0)+1);continue}}if(d&&"number"==typeof b.anchorIndex){let c=a.anchorTexts?.[b.anchorIndex];if(c){let d=function(a){let b=a.replacement?.trim(),c=t(a.content);if(!b||b.length>c||a.forbidDrawingImages&&/!\[[^\]]*\]\([^)]*\)/iu.test(b))return{content:a.content,applied:!1};let d=a.anchor.replace(/\s+/gu,"");if(d.length<4||!a.content.replace(/\s+/gu,"").includes(d))return{content:a.content,applied:!1};let e=function(a,b,c){let d=[],e="";for(let b=0;b<a.length;b+=1){let c=a[b];/\s/u.test(c)||(e+=c,d.push(b))}let f=[],g=0;for(;;){let a=e.indexOf(b,g);if(a<0)break;f.push({start:d[a],end:d[a+b.length-1]+1}),g=a+b.length}let h=a;for(let{start:a,end:b}of f.reverse())h=h.slice(0,a)+c+h.slice(b);return h}(a.content,d,b);return!u(e,a.title)||(0,j.V7)(e)<Math.floor(.65*(0,j.V7)(a.content))?{content:a.content,applied:!1}:{content:(0,i.kT)((0,i.FD)(e,a.forbidDrawingImages)),applied:e!==a.content}}({content:w,anchor:c,replacement:b.replacement,title:a.chapter.title,forbidDrawingImages:a.forbidDrawingImages});w=d.content,d.applied&&(x+=1);continue}}let c=function(a){let b=a.patch.replacement?.trim(),c=t(a.content);if(!b||b.length>c||a.forbidDrawingImages&&/!\[[^\]]*\]\([^)]*\)/iu.test(b))return{content:a.content,applied:!1};let d=function(a,b){let c=b.originalText?.trim();if(c&&a.includes(c)&&a.indexOf(c)===a.lastIndexOf(c))return c;if(c&&c.length>=8&&c.length<=500){let b=function(a,b){let c,d=b.split(/\s+/u).filter(a=>a.length>0);if(d.length<2)return;let e=RegExp(d.map(a=>a.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&")).join("\\s+"),"gu");for(let b of a.matchAll(e)){if(void 0!==c)return;c=b[0]}return c}(a,c);if(b)return b}let d=b.targetStart?.trim(),e=b.targetEnd?.trim();if(!d||!e)return;let f=a.indexOf(d);if(f<0)return;let g=a.indexOf(e,f+d.length);if(g<0)return;let h=g+e.length,i=a.slice(f,h);return a.indexOf(i)===a.lastIndexOf(i)?i:void 0}(a.content,a.patch);if(!d||d.length>c)return{content:a.content,applied:!1};let e=(0,i.kT)((0,i.FD)(a.content.replace(d,b),a.forbidDrawingImages));return!u(e,a.title)||(0,j.V7)(e)<Math.floor(.65*(0,j.V7)(a.content))?{content:a.content,applied:!1}:{content:e,applied:e!==a.content}}({content:w,patch:b,title:a.chapter.title,forbidDrawingImages:a.forbidDrawingImages});w=c.content,c.applied&&(x+=1)}return{content:w,appliedCount:x,producedCount:y.length,repairType:b}}function w(a,b,c){return function(a,b){let c=e.resolve(a),f=function(a,b){let c=e.resolve(a);if(e.isAbsolute(b))return e.resolve(b);let f=e.resolve(c,"knowledgeBase",b);return d.existsSync(f)?f:e.resolve(c,b)}(c,b);return f===c||f.startsWith(`${c}${e.sep}`)}(a,b)&&c.size>0&&(function(a,b){let c=e.isAbsolute(b)?b:e.join(a,b),d=e.isAbsolute(b)?e.relative(a,b):b;return[b,c,d,e.join(a,d)]})(a,b).some(a=>c.has(a))}function x(a){return a.map(a=>`## [${a.roleId}/${a.category}] ${a.name}
33
33
  ${function(a){let b=a.replace(/```([\s\S]*?)```/gu,(a,b)=>/<OUTLINE>|\|\s*[^\n]+\s*\||#{1,6}\s+|必须|禁止|不得|应当|要求|规则|格式|输出|表格|章节|小节|正文/u.test(b)?`
34
34
  ${b.trim()}
35
35
  `:"\n【示例代码块已省略:仅作为格式参考,不作为当前文档事实】\n").split(/\r?\n/u),c=[],d=!1,e=!1;for(let a of b){let b=a.trim();if((0,h.bl)(b)&&(e=!0),e){c.push(a),(0,h.Ui)(b)&&(e=!1);continue}let f=/^(?:#+\s*)?(?:示例|样例|范例|例如|参考示例|示例数据|示例正文|示例目录|example|sample)\s*[::]?/iu.test(b),g=/(?:不得|禁止|必须|应当|要求|规则|格式|输出|保留|只返回|不要|表格|章节|小节|正文|目录|封面)/u.test(b);if(f&&!g){c.at(-1)?.includes("示例内容已省略")||c.push("【示例内容已省略:仅作为格式参考,不作为当前文档事实】"),d=!0;continue}if(d){if(!b){d=!1;continue}if(!(/^(?:#+\s*)?(?:规则|要求|输出|格式|禁止|注意|正文|章节|小节|表格|风格|校验)/u.test(b)||/\|\s*[^\n]+\s*\|/u.test(b)))continue;d=!1}c.push(a)}return c.join("\n").replace(/\n{3,}/gu,"\n\n").trim()}(a.content)}`).join("\n\n")}},85016:(a,b,c)=>{c.d(b,{D$:()=>f,NR:()=>k,WT:()=>j});var d=c(37047);let e=[{anchor:"按工作包逐项说明施工内容",required:/工作包|逐项说明/u},{anchor:"本项目已确认资料",required:/已确认|确认资料|本项目资料/u},{anchor:"已确认的项目资料显示",required:/已确认|项目资料/u},{anchor:"根据已确认资料",required:/已确认/u},{anchor:"生成后事实反查未通过",required:/事实反查|反查/u},{anchor:"资料事实主表",required:/事实主表/u},{anchor:"事实卡",required:/事实卡/u},{anchor:"后台数据库记录",required:/后台数据库|后台记录/u},{anchor:"证据摘要中未包含",required:/证据摘要/u},{anchor:"本专业工程主要清单项落位如下",required:/清单项落位|落位如下/u},{anchor:"针对招标文件及补疑文件的技术要求进行专项落位",required:/专项落位/u},{anchor:"全文数据口径必须唯一",required:/数据口径|峰值口径|控制口径|口径必须唯一/u}],f=/工作包|事实卡|事实主表|后台数据库|落位|峰值口径|控制口径|数据口径/gu,g=/工作包|事实卡|事实主表|后台数据库|落位|峰值口径|控制口径|数据口径/u,h=/^\d+(?:\.\d+)*\s+\S+/u;function i(a,b){let c=Math.min(a.length,b.length),d=0;for(let e=0;e<c;e+=1)d+=a[e]*b[e];return d}async function j(a){let b=[],c=[...new Set(a.match(f)||[])];c.length>0&&b.push({level:"error",severity:"blocker",category:"format",owner:"system",repairability:"llm_repairable",message:`正式正文仍包含后台内部术语“${c.join("”“")}”,需要按上下文语义改写为正式术语`,suggestion:"请结合语境改写:“拆除工程工作包”→“拆除工程”,“按工作包逐项说明”→“按专业工程逐项说明”;禁止出现生成系统后台概念。"});let g=a.split(/\r?\n/u).map(a=>a.trim()).filter(a=>!/^#{1,6}\s/u.test(a)&&!/^\s*\|/u.test(a)&&!(h.test(a)&&a.length<=40&&!/[。!?!?;;,,::]/.test(a))).flatMap(a=>a.split(/(?<=[。!?!?;;])/u).map(a=>a.trim())).filter(a=>a.length>=8&&a.length<=80).slice(0,200);if(0===g.length)return b;let j=(0,d.VN)(),[k,l]=await Promise.all([j.embedDocuments(g),j.embedDocuments(e.map(a=>a.anchor))]),m=[];for(let a=0;a<g.length;a+=1){let b=k[a];if(!b||0===b.length)continue;let c=g[a];if(e.some(a=>a.required.test(c))&&(Math.max(...l.map(a=>i(b,a)))>=.62&&m.push(c.slice(0,24)),m.length>=6))break}return m.length>0&&b.push({level:"error",severity:"blocker",category:"format",owner:"system",repairability:"llm_repairable",message:`正式正文疑似包含后台内部话术(语义锚点命中 ${m.length} 处):${m.map(a=>`“${a}…”`).join("、")}`,suggestion:"将内部话术(已确认资料/事实卡/工作包等生成系统概念)改写为面向评标人的正式表述,仅陈述项目事实与施工内容。"}),b}async function k(a){let b=a.split(/\r?\n/u),c=a=>{let b=a.trim();return!!(/^#{1,6}\s/u.test(b)||/^\s*\|/u.test(b))||h.test(b)&&b.length<=40&&!/[。!?!?;;,,::]/.test(b)},f=[];b.forEach((a,b)=>{if(c(a))return;let d=a.split(/(?<=[。!?!?;;])/u).map(a=>a.trim()).filter(a=>a.length>=8&&a.length<=80&&(e.some(b=>b.required.test(a))||g.test(a)));d.length>0&&f.push({index:b,sentences:d})});let j=f.flatMap(a=>a.sentences).slice(0,200);if(0===j.length)return a;let k=(0,d.VN)(),[l,m]=await Promise.all([k.embedDocuments(j),k.embedDocuments(e.map(a=>a.anchor))]),n=new Set;return(j.forEach((a,b)=>{let c=l[b];if(c&&0!==c.length){if(g.test(a))return void n.add(a);Math.max(...m.map(a=>i(c,a)))>=.62&&n.add(a)}}),0===n.size)?a:b.map((a,b)=>{if(c(a))return a;let d=a;for(let a of n)d.includes(a)&&(d=d.split(a).join(""));return d}).join("\n")}}};