@customize-agent/server 4.18.10 → 4.18.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/.next/BUILD_ID CHANGED
@@ -1 +1 @@
1
- vnqtnrxmp_-TRG6xA3g9e
1
+ W18xDGAGk5Y6mximnIZLt
@@ -5,8 +5,8 @@
5
5
  "devFiles": [],
6
6
  "ampDevFiles": [],
7
7
  "lowPriorityFiles": [
8
- "static/vnqtnrxmp_-TRG6xA3g9e/_buildManifest.js",
9
- "static/vnqtnrxmp_-TRG6xA3g9e/_ssgManifest.js"
8
+ "static/W18xDGAGk5Y6mximnIZLt/_buildManifest.js",
9
+ "static/W18xDGAGk5Y6mximnIZLt/_ssgManifest.js"
10
10
  ],
11
11
  "rootMainFiles": [],
12
12
  "rootMainFilesTree": {},
@@ -3,9 +3,9 @@
3
3
  "routes": {},
4
4
  "dynamicRoutes": {},
5
5
  "preview": {
6
- "previewModeId": "bc807b7328cb1b4eec69b33c6066a767",
7
- "previewModeSigningKey": "7f0f30cf45e3075735d57780590c5f8b2bb1ddd702556067feb2ab0251b13bef",
8
- "previewModeEncryptionKey": "c02c30b5241fa6097cfa01b285227c45e2d1f74ba61626b95adc0f0b97cf87fd"
6
+ "previewModeId": "357c26ae6021a52a9d3b8928b6e66f18",
7
+ "previewModeSigningKey": "5b51da33d8266831094dae715f21e4b572ae1792299e073358f2533c90e28869",
8
+ "previewModeEncryptionKey": "3c8ae1bb641eebfc5f373fc17b541239a6d446020d4bc80a8f7c3680b5960aca"
9
9
  },
10
10
  "notFoundRoutes": []
11
11
  }
@@ -104,13 +104,14 @@ ${q}`:a.currentContent}async function Y(a){if((0,r.hf)(a.sectionTitle)){let b=aw
104
104
 
105
105
  ${j.join("\n\n")}`;if(200>(0,e.V7)((0,r.DD)(k))){a.diagnostics&&(a.diagnostics.llm.lastError=`task writer 正文空壳:${a.chapter.title} / ${a.sectionTitle} / ${(0,e.V7)((0,r.DD)(k))}字`);return}let l=(0,r.eK)(a.sectionTitle,k);if(l){a.diagnostics&&(a.diagnostics.llm.lastError=`task writer ${l}:${a.chapter.title} / ${a.sectionTitle}`);return}return k=await X({...a,currentContent:k,targetWords:a.targetWords}),(0,g.kT)((0,g.FD)(k,a.forbidDrawingImages))}async function Z(a){let b=E(a.chapter,a.targetWords);if(b.length<2)return;let c=Number(process.env.DOCUMENT_SECTION_CONCURRENCY||b.length||1),d=Math.max(1,Math.min(b.length,Number.isFinite(c)?Math.floor(c):b.length||1)),e=Array(b.length),j=Array(b.length),k=0,m=Number(process.env.DOCUMENT_CHAPTER_POOL_CHARS||8e3),n=(0,f.R7)((0,f.QO)(a.chapter,a.evidence),a.chapter.requiredFacts||[],Number.isFinite(m)?Math.floor(m):8e3),o=b.map(a=>a.title),p=(0,l.nn)(a.chapter,o),q=b.length-1,r=async(c,d=!1)=>{a.onSectionProgress?.({completed:k,total:b.length,sectionTitle:c.title,phase:d?"retry":"start",partialSections:[...j]});try{let d=a.sectionEvidenceProvider?await a.sectionEvidenceProvider(c.title).catch(()=>[]):[],e=F(c.title).filter(a=>a.length>=2),f={...a,evidence:d.length?[...a.evidence,...d]:a.evidence,projectContext:a.projectContext,roleContext:a.roleContext||"",factCoverageContext:a.factCoverageContext,compactProjectContext:a.compactProjectContext,scopedProjectContext:a.scopedProjectContext,sectionTitle:c.title,targetWords:c.targetWords,maxWords:a.maxWords?Math.max(c.targetWords,Math.ceil(a.maxWords/b.length)):Math.ceil(1.12*c.targetWords),tablePlanInstruction:function(a,b,c=[]){let d=(0,l.El)(a,b),e=[...d,...c.filter(a=>!d.some(b=>b.id===a.id))];return(0,l.Gl)(e,b)}(a.chapter,c.title,c.index===q?p:[]),sharedFactLayerText:n,sectionRankBoost:a=>Math.min(24,e.reduce((b,c)=>b+6*!!a.content.includes(c),0))},g=c.targetWords>=1400?await Y({...f,signal:a.signal}):await _({...f,signal:a.signal},$(b.length));return g&&(k+=1,j[c.index]=g,a.onSectionProgress?.({completed:k,total:b.length,sectionTitle:c.title,phase:"complete",partialSections:[...j]})),g}catch(b){console.warn(`[document-workflow] 小节生成失败:${a.chapter.title} / ${c.title}`,b);return}},s=b.length;if(s>0){(0,i.Te)(a.signal);let c=await r({...b[0],index:0});e[0]=c}for(let c=1;c<s;){(0,i.Te)(a.signal);let f=(0,h.bU)(a.diagnostics)>=5?1:d,g=b.slice(c,Math.min(s,c+f));(await Promise.all(g.map((a,b)=>r({...a,index:c+b})))).forEach((a,b)=>{e[c+b]=a}),c+=f}let t=e.map((a,b)=>a?-1:b).filter(a=>a>=0),u=t;if(u.length>0){for(let c=0;c<u.length;){(0,i.Te)(a.signal);let f=(0,h.bU)(a.diagnostics)>=5?1:d,g=u.slice(c,c+f);(await Promise.all(g.map(a=>r({...b[a],index:a},!0)))).forEach((a,b)=>{a&&(e[g[b]]=a)}),c+=f}t=e.map((a,b)=>a?-1:b).filter(a=>a>=0);for(let c=0;c<t.length;){(0,i.Te)(a.signal);let f=(0,h.bU)(a.diagnostics)>=5?1:d,g=t.slice(c,c+f);(await Promise.all(g.map(a=>r({...b[a],targetWords:Math.max(b[a].targetWords,900),index:a},!0)))).forEach((a,b)=>{a&&(e[g[b]]=a)}),c+=f}}(t=e.map((a,b)=>a?-1:b).filter(a=>a>=0)).length>0&&a.diagnostics&&(a.diagnostics.llm.lastError=`章级生成缺失小节:${a.chapter.title} / ${t.map(a=>b[a].title).join("、")}`);let v=e.map(a=>a||"");return(0,g.kT)((0,g.FD)(`## ${a.chapter.title}
106
106
 
107
- ${v.join("\n\n")}`,a.forbidDrawingImages))}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))}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 aa(a,b){let c=b.blocks;if(0===c.length)return;let d=c.flatMap(a=>a.subPoints.flatMap(a=>a.sources)),k=(0,l.nn)(a.chapter,d),m=c.map((b,d)=>{let e=(a.chapter.tablePlans||[]).filter(a=>{if(k.includes(a))return!1;let c=a.title||"";return b.subPoints.some(a=>a.sources.some(a=>c.includes(a)||a.includes(c))||c.includes(a.title)||a.title.includes(c))});return d===c.length-1?[...e,...k]:e}),n=Number(process.env.DOCUMENT_PLANNED_BLOCK_CONCURRENCY||c.length),o=Math.max(1,Math.min(c.length,(0,h.Sq)(),Number.isFinite(n)?Math.floor(n):c.length)),p=Array(c.length).fill(void 0),q=Number(process.env.DOCUMENT_CHAPTER_POOL_CHARS||8e3),s=(0,f.R7)((0,f.QO)(a.chapter,a.evidence),a.chapter.requiredFacts||[],Number.isFinite(q)?Math.floor(q):8e3),t=Number(process.env.DOCUMENT_BLOCK_EVIDENCE_CHARS||1e3),u=Number.isFinite(t)&&t>0?Math.floor(t):1e3,w=async(b,d)=>{let f=(0,i.Sw)(b.title),g=b.subPoints.filter(a=>(0,i.Sw)(a.title)!==f).map(a=>a.title),h=new Set([b.title,...b.subPoints.map(a=>a.title)].map(i.Sw).filter(Boolean)),k=new Set(c.flatMap(a=>[a.title,...a.subPoints.map(a=>a.title)]).filter(a=>!h.has((0,i.Sw)(a))).map(i.Sw).filter(Boolean)),l=F(`${b.title} ${g.join(" ")}`).filter(a=>a.length>=2),n=a=>Math.min(24,l.reduce((b,c)=>b+6*!!a.content.includes(c),0)),o=[...a.evidence.map(a=>({item:a,score:l.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(()=>[]):[]],p=v.Yp.test(b.title)?"major":v.gG.test(b.title)?"division":"",q=p?(0,r.sh)(a.projectContext,o):[],t=p?(0,r.Bk)(a.projectContext,o):"",x={...a.chapter,title:b.title,sections:g,tablePlans:m[d]||[]},y=b.facts.length?`【本主题块专属事实(只能在本节使用,不得重复出现在本章其他节)】${b.facts.map(a=>`- ${a}`).join("\n")}`:"",z=b.subPoints.map(a=>(0,i.Sw)(a.title)===f?`- ### ${b.title}(本节标题,覆盖评分细目:${a.sources.join("、")};正文直接展开,无需四级标题;如按细目分节,仅可使用上述细目标题作为四级标题)`:a.sources.length>1?`- #### ${a.title}(覆盖评分细目:${a.sources.join("、")})`:`- #### ${a.title}`).join("\n"),A=k.size>0?`严禁将以下属于本章其他小节的标题作为本节任何标题输出(H3 仅允许「${b.title}」,H4 仅允许上面清单中的标题):${[...k].join("、")}。`:"",B=[y,t,`本节是「${a.chapter.title}」章的一个主题小节,只写本节标题覆盖的内容,不得重复本章其他节内容;必须按以下清单逐点写出实施性正文,标题必须与给定标题完全一致,不得改名、合并或遗漏;每个要点必须覆盖其标注的全部评分细目内容,但不得为这些细目单独开设小节标题:
107
+ ${v.join("\n\n")}`,a.forbidDrawingImages))}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))}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 aa(a,b){let c=b.blocks;if(0===c.length)return;let d=c.flatMap(a=>a.subPoints.flatMap(a=>a.sources)),k=(0,l.nn)(a.chapter,d),m=c.map((b,d)=>{let e=(a.chapter.tablePlans||[]).filter(a=>{if(k.includes(a))return!1;let c=a.title||"";return b.subPoints.some(a=>a.sources.some(a=>c.includes(a)||a.includes(c))||c.includes(a.title)||a.title.includes(c))});return d===c.length-1?[...e,...k]:e}),n=Number(process.env.DOCUMENT_PLANNED_BLOCK_CONCURRENCY||c.length),o=Math.max(1,Math.min(c.length,(0,h.Sq)(),Number.isFinite(n)?Math.floor(n):c.length)),p=Array(c.length).fill(void 0),q=Number(process.env.DOCUMENT_CHAPTER_POOL_CHARS||8e3),s=(0,f.R7)((0,f.QO)(a.chapter,a.evidence),a.chapter.requiredFacts||[],Number.isFinite(q)?Math.floor(q):8e3),t=Number(process.env.DOCUMENT_BLOCK_EVIDENCE_CHARS||1e3),u=Number.isFinite(t)&&t>0?Math.floor(t):1e3,w=async(b,d)=>{let f=(0,i.Sw)(b.title),g=b.subPoints.filter(a=>(0,i.Sw)(a.title)!==f).map(a=>a.title),h=new Set([b.title,...b.subPoints.map(a=>a.title)].map(i.Sw).filter(Boolean)),k=new Set(c.flatMap(a=>[a.title,...a.subPoints.map(a=>a.title)]).filter(a=>!h.has((0,i.Sw)(a))).map(i.Sw).filter(Boolean)),l=F(`${b.title} ${g.join(" ")}`).filter(a=>a.length>=2),n=a=>Math.min(24,l.reduce((b,c)=>b+6*!!a.content.includes(c),0)),o=[...a.evidence.map(a=>({item:a,score:l.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(()=>[]):[]],p=v.Yp.test(b.title)?"major":v.gG.test(b.title)?"division":"",q=p?(0,r.sh)(a.projectContext,o):[],t=p?(0,r.Bk)(a.projectContext,o):"",x={...a.chapter,title:b.title,sections:g,tablePlans:m[d]||[]},y=b.facts.length?`【本主题块专属事实(只能在本节使用,不得重复出现在本章其他节)】${b.facts.map(a=>`- ${a}`).join("\n")}`:"",z=b.subPoints.map(a=>(0,i.Sw)(a.title)===f?`- ### ${b.title}(本节标题,覆盖评分细目:${a.sources.join("、")};正文直接展开,无需四级标题;如按细目分节,仅可使用上述细目标题作为四级标题)`:a.sources.length>1?`- #### ${a.title}(覆盖评分细目:${a.sources.join("、")})`:`- #### ${a.title}`).join("\n"),A=k.size>0?`严禁将以下属于本章其他小节的标题作为本节任何标题输出(H3 仅允许「${b.title}」,H4 仅允许上面清单中的标题):${[...k].join("、")}。`:"",B=b.halfFocus?`
108
+ ${b.halfFocus}`:"",C=[y,t,`本节是「${a.chapter.title}」章的一个主题小节,只写本节标题覆盖的内容,不得重复本章其他节内容;必须按以下清单逐点写出实施性正文,标题必须与给定标题完全一致,不得改名、合并或遗漏;每个要点必须覆盖其标注的全部评分细目内容,但不得为这些细目单独开设小节标题:
108
109
  ${z}${A?`
109
- ${A}`:""}`].filter(Boolean).join("\n\n"),C=[],E=[],G=[],H=(()=>{let a=Number(process.env.DOCUMENT_BLOCK_MAX_ATTEMPTS??2);return 0===a?2:Number.isFinite(a)&&a>0?Math.floor(a):2})();for(let c=0;c<H;c+=1){let f=0===c?"":["【上一轮未通过质检】",C.length?`缺失 H4 要点标题:${C.join("、")}。必须逐点补齐以上 H4 标题并展开正式正文,H4 标题与给定标题完全一致。`:"",E.length?`重复展开的 H4 要点标题:${E.join("、")}。同一小节内相同要点被重复展开多轮,必须只保留一轮完整展开,其余重复小节连同标题整体删除,不得以换编号方式重复同一内容。`:"",G.length?`清单外标题(属于本章其他小节或不在本节要点清单内):${G.join("、")}。这些标题连同其正文整块删除,本节只允许输出上面清单中的 H4 标题与「${b.title}」H3 标题。`:"",0===C.length&&0===E.length&&0===G.length?"必须完整包含每个 H4 要点标题并展开正文,不得合并或遗漏要点。":"","总字数不少于目标字数。"].filter(Boolean).join("");try{let h=()=>D(a.template,x,o,a.missingFacts,a.promptTexts,a.projectContext,a.requirement,f?`${B}
110
+ ${A}`:""}${B}`].filter(Boolean).join("\n\n"),E=[],G=[],H=[],I=0,J=(()=>{let a=Number(process.env.DOCUMENT_BLOCK_MAX_ATTEMPTS??2);return 0===a?2:Number.isFinite(a)&&a>0?Math.floor(a):2})();for(let c=0;c<J;c+=1){let f=0===c?"":["【上一轮未通过质检】",E.length?`缺失 H4 要点标题:${E.join("、")}。必须逐点补齐以上 H4 标题并展开正式正文,H4 标题与给定标题完全一致。`:"",G.length?`重复展开的 H4 要点标题:${G.join("、")}。同一小节内相同要点被重复展开多轮,必须只保留一轮完整展开,其余重复小节连同标题整体删除,不得以换编号方式重复同一内容。`:"",H.length?`清单外标题(属于本章其他小节或不在本节要点清单内):${H.join("、")}。这些标题连同其正文整块删除,本节只允许输出上面清单中的 H4 标题与「${b.title}」H3 标题。`:"",0===E.length&&0===G.length&&0===H.length?"必须完整包含每个 H4 要点标题并展开正文,不得合并或遗漏要点。":"",I>0?`当前输出仅 ${I} 字,距目标 ${b.targetWords} 字还缺 ${Math.max(0,b.targetWords-I)} 字,必须逐点展开到不少于 ${Math.floor(.9*b.targetWords)} 字。`:"总字数不少于目标字数。"].filter(Boolean).join("");try{let h=()=>D(a.template,x,o,a.missingFacts,a.promptTexts,a.projectContext,a.requirement,f?`${C}
110
111
 
111
- ${f}`:B,{forbidDrawingImages:a.forbidDrawingImages,compactProjectContext:a.compactProjectContext,scopedProjectContext:a.scopedProjectContext,chapterLevelContext:a.roleContext||"",minWords:b.targetWords,targetWords:b.targetWords,maxWords:Math.ceil(1.1*b.targetWords),maxTokens:Math.max(3200,Math.ceil(1.5*b.targetWords)),disableThinkingBoost:!0,sharedFactLayerText:s,evidenceRankBoost:n,onlyRankBoosted:!0,skipT2Catalog:!0,evidenceFloorChars:1e3,evidenceCeilingChars:u,factCoverageContext:a.factCoverageContext||"",planDataMasterText:a.planDataMasterText,decisionLockText:a.decisionLockText,twoStep:!1,signal:a.signal,diagnostics:a.diagnostics}),l=a.diagnostics?await (0,j.X6)(a.diagnostics,`block-draft:${a.chapter.id}:${d}:a${c}`,h):await h();if(!l){console.error(`[gen][block-qc] 块写作返回空内容 attempt=${c}: ${b.title}(目标 ${b.targetWords} 字)`);continue}let m=l.replace(/^##\s+.+$/mu,"").trim(),t=(0,r.KJ)(g,m),v=/^###\s+\S+/mu.test(t)?t:`### ${b.title}
112
+ ${f}`:C,{forbidDrawingImages:a.forbidDrawingImages,compactProjectContext:a.compactProjectContext,scopedProjectContext:a.scopedProjectContext,chapterLevelContext:a.roleContext||"",minWords:b.targetWords,targetWords:b.targetWords,maxWords:Math.ceil(1.1*b.targetWords),maxTokens:Math.max(3200,Math.ceil(1.5*b.targetWords)),disableThinkingBoost:!0,sharedFactLayerText:s,evidenceRankBoost:n,onlyRankBoosted:!0,skipT2Catalog:!0,evidenceFloorChars:1e3,evidenceCeilingChars:u,factCoverageContext:a.factCoverageContext||"",planDataMasterText:a.planDataMasterText,decisionLockText:a.decisionLockText,twoStep:!1,signal:a.signal,diagnostics:a.diagnostics}),l=a.diagnostics?await (0,j.X6)(a.diagnostics,`block-draft:${a.chapter.id}:${d}:a${c}`,h):await h();if(!l){console.error(`[gen][block-qc] 块写作返回空内容 attempt=${c}: ${b.title}(目标 ${b.targetWords} 字)`);continue}let m=l.replace(/^##\s+.+$/mu,"").trim(),t=(0,r.KJ)(g,m),v=/^###\s+\S+/mu.test(t)?t:`### ${b.title}
112
113
 
113
- ${t}`,w=[];if(p){let a=(0,r.I6)(v);a!==v&&(v=a);let b=(v.match(/^#{3,4}\s+(.+)$/gmu)||[]).map(a=>a.replace(/^#{3,4}\s+/u,""));w=q.filter(a=>!b.some(b=>(0,i.Sw)(b).includes((0,i.Sw)(a))))}let y=(0,e.V7)(v);w.length>0&&w.length<=2&&console.error(`[gen][block-qc] 骨架小缺口豁免(交修复链兑底 ${w.length} 个): ${b.title}: ${w.join("、")}`);let z=w.length<=2?[]:w,A=v.split("\n").map(a=>(0,i.Sw)(a)).filter(Boolean),F=[...g.filter(a=>{let b=(0,i.Sw)(a);return!!b&&!A.some(a=>a.includes(b))}),...z.map(a=>`工作包小节:${a}`)],H=(0,i.W6)(v),I=(0,i.wx)(v,b.title,g,[...k],[...b.subPoints.flatMap(a=>a.sources),...q]);if(y>=Math.floor(.9*b.targetWords)&&0===F.length&&0===H.length&&0===I.length)return v;if(C=F,E=H,G=I,0===F.length){let c=(0,i.dY)((0,i.wq)(v),b.title,g,b.subPoints.flatMap(a=>a.sources)),d=(0,e.V7)(c);if(d>=Math.floor(.9*b.targetWords))return a.diagnostics&&(I.length>0||H.length>0)&&(a.diagnostics.llm.lastInfo=`块标题层已确定性修复:${b.title}(清单外 ${I.length} 个、重复 H4 ${H.length} 个;${y}→${d} 字)`),c}a.diagnostics&&(a.diagnostics.llm.lastError=`规划块质检未达标:${b.title}(${y} 字,缺 ${F.join("、")||"无"}${H.length?`,重复 H4 ${H.join("、")}`:""}${I.length?`,清单外 ${I.slice(0,5).join("、")}${I.length>5?" 等":""}`:""})`),console.error(`[gen][block-qc] 块质检不达标 attempt=${c}: ${b.title}(目标 ${b.targetWords} 字,实际 ${y} 字,缺 ${F.join("、")||"无"},重复 ${H.join("、")||"无"},清单外 ${I.join("、")||"无"},keySection=${p||"none"})`)}catch(b){a.diagnostics&&(a.diagnostics.llm.lastError=b instanceof Error?b.message:String(b))}}if(b.subPoints.length>=4||b.subPoints.length>=2&&b.targetWords>2400){let c=Math.ceil(b.subPoints.length/2),e=Math.max(800,Math.floor(b.targetWords/2)),f=[{...b,title:`${b.title}(一)`,subPoints:b.subPoints.slice(0,c),targetWords:e},{...b,title:`${b.title}(二)`,subPoints:b.subPoints.slice(c),targetWords:e}],g=await Promise.all(f.map(a=>w(a,d)));if(g.every(a=>!!a))return g.join("\n\n");let h=async(b,c)=>{if(g[c])return g[c];let d=Math.max(600,Math.floor(b.targetWords/Math.max(1,b.subPoints.length))),e=Math.max(1,$(b.subPoints.length)),f=await Promise.all(b.subPoints.map(b=>_({template:a.template,chapter:a.chapter,sectionTitle:b.title,evidence:a.evidence,missingFacts:a.missingFacts,promptTexts:a.promptTexts,projectContext:a.projectContext,requirement:a.requirement,roleContext:a.roleContext||"",targetWords:d,forbidDrawingImages:a.forbidDrawingImages,factCoverageContext:a.factCoverageContext,compactProjectContext:a.compactProjectContext,scopedProjectContext:a.scopedProjectContext,planDataMasterText:a.planDataMasterText,decisionLockText:a.decisionLockText,signal:a.signal,diagnostics:a.diagnostics},e)));if(!f.every(Boolean))return;let h=f.map((a,c)=>{let d=(a||"").replace(/^###\s+.+$/mu,"").trim();return`#### ${b.subPoints[c].title}
114
+ ${t}`,w=[];if(p){let a=(0,r.I6)(v);a!==v&&(v=a);let b=(v.match(/^#{3,4}\s+(.+)$/gmu)||[]).map(a=>a.replace(/^#{3,4}\s+/u,""));w=q.filter(a=>!b.some(b=>(0,i.Sw)(b).includes((0,i.Sw)(a))))}let y=(0,e.V7)(v);I=y,w.length>0&&w.length<=2&&console.error(`[gen][block-qc] 骨架小缺口豁免(交修复链兑底 ${w.length} 个): ${b.title}: ${w.join("、")}`);let z=w.length<=2?[]:w,A=v.split("\n").map(a=>(0,i.Sw)(a)).filter(Boolean),B=[...g.filter(a=>{let b=(0,i.Sw)(a);return!!b&&!A.some(a=>a.includes(b))}),...z.map(a=>`工作包小节:${a}`)],F=(0,i.W6)(v),J=(0,i.wx)(v,b.title,g,[...k],[...b.subPoints.flatMap(a=>a.sources),...q]);if(y>=Math.floor(.9*b.targetWords)&&0===B.length&&0===F.length&&0===J.length)return v;if(E=B,G=F,H=J,0===B.length){let c=(0,i.dY)((0,i.wq)(v),b.title,g,b.subPoints.flatMap(a=>a.sources)),d=(0,e.V7)(c);if(d>=Math.floor(.9*b.targetWords))return a.diagnostics&&(J.length>0||F.length>0)&&(a.diagnostics.llm.lastInfo=`块标题层已确定性修复:${b.title}(清单外 ${J.length} 个、重复 H4 ${F.length} 个;${y}→${d} 字)`),c}a.diagnostics&&(a.diagnostics.llm.lastError=`规划块质检未达标:${b.title}(${y} 字,缺 ${B.join("、")||"无"}${F.length?`,重复 H4 ${F.join("、")}`:""}${J.length?`,清单外 ${J.slice(0,5).join("、")}${J.length>5?" 等":""}`:""})`),console.error(`[gen][block-qc] 块质检不达标 attempt=${c}: ${b.title}(目标 ${b.targetWords} 字,实际 ${y} 字,缺 ${B.join("、")||"无"},重复 ${F.join("、")||"无"},清单外 ${J.join("、")||"无"},keySection=${p||"none"})`)}catch(b){a.diagnostics&&(a.diagnostics.llm.lastError=b instanceof Error?b.message:String(b))}}if(b.subPoints.length>=4||b.subPoints.length>=2&&b.targetWords>2400){let c=Math.ceil(b.subPoints.length/2),e=Math.max(800,Math.floor(b.targetWords/2)),f=[{...b,title:`${b.title}(一)`,subPoints:b.subPoints.slice(0,c),targetWords:e},{...b,title:`${b.title}(二)`,subPoints:b.subPoints.slice(c),targetWords:e}],g=await Promise.all(f.map(a=>w(a,d)));if(g.every(a=>!!a))return g.join("\n\n");let h=async(b,c)=>{if(g[c])return g[c];let d=Math.max(600,Math.floor(b.targetWords/Math.max(1,b.subPoints.length))),e=Math.max(1,$(b.subPoints.length)),f=await Promise.all(b.subPoints.map(b=>_({template:a.template,chapter:a.chapter,sectionTitle:b.title,evidence:a.evidence,missingFacts:a.missingFacts,promptTexts:a.promptTexts,projectContext:a.projectContext,requirement:a.requirement,roleContext:a.roleContext||"",targetWords:d,forbidDrawingImages:a.forbidDrawingImages,factCoverageContext:a.factCoverageContext,compactProjectContext:a.compactProjectContext,scopedProjectContext:a.scopedProjectContext,planDataMasterText:a.planDataMasterText,decisionLockText:a.decisionLockText,signal:a.signal,diagnostics:a.diagnostics},e)));if(!f.every(Boolean))return;let h=f.map((a,c)=>{let d=(a||"").replace(/^###\s+.+$/mu,"").trim();return`#### ${b.subPoints[c].title}
114
115
 
115
116
  ${d}`});return`### ${b.title}
116
117