@customize-agent/server 4.17.3 → 4.17.4

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 (31) 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/1001.js +1 -1
  5. package/.next/server/chunks/208.js +14 -16
  6. package/.next/server/chunks/3541.js +34 -40
  7. package/.next/server/chunks/5284.js +19 -19
  8. package/.next/server/chunks/6482.js +10 -8
  9. package/.next/server/pages/404.html +1 -1
  10. package/.next/server/pages/500.html +1 -1
  11. package/.next/server/pages/api/kb/files/export.js +1 -1
  12. package/.next/server/pages/api/kb/upload.js +1 -1
  13. package/.next/server/pages/asset-library.html +1 -1
  14. package/.next/server/pages/document-roles.html +1 -1
  15. package/.next/server/pages/documents.html +1 -1
  16. package/.next/server/pages/guide.html +1 -1
  17. package/.next/server/pages/index.html +1 -1
  18. package/.next/server/pages/knowledge/file-detail.html +1 -1
  19. package/.next/server/pages/knowledge/files.html +1 -1
  20. package/.next/server/pages/knowledge/manage.html +1 -1
  21. package/.next/server/pages/knowledge.html +1 -1
  22. package/.next/server/pages/models.html +1 -1
  23. package/.next/server/pages/overview.html +1 -1
  24. package/.next/server/pages/prompt.html +1 -1
  25. package/.next/server/pages/settings.html +1 -1
  26. package/.next/server/pages/system/logs.html +1 -1
  27. package/.next/server/pages/template-references.html +1 -1
  28. package/.next/server/pages-manifest.json +25 -25
  29. package/package.json +2 -2
  30. /package/.next/static/{nYmsVv7POGxMRO372dK_1 → BbLSLUBGgDtsR8mcMAuk9}/_buildManifest.js +0 -0
  31. /package/.next/static/{nYmsVv7POGxMRO372dK_1 → BbLSLUBGgDtsR8mcMAuk9}/_ssgManifest.js +0 -0
@@ -6,7 +6,7 @@
6
6
  ${d}`;return{chunk:a,index:b,score:.8*e.filter(a=>f.includes(a)).length+ +!!/\d+(?:\.\d+)?\s*(?:日历天|天|月|年|万元|元|㎡|m²|m³|米|mm|台|套|人|项|%|MPa|kPa)/u.test(d)+.4*(0===b)+c.priority/120}}).filter(a=>a.score>0).sort((a,b)=>b.score-a.score))b.push({chapterId:a.chapter.id,filePath:d.file.relativePath,score:1.8+f.score,content:f.chunk.content,roleId:y(c.kind),processingType:z(c.kind),sectionTitle:f.chunk.sectionTitle,source:"project-material-sample"})}return(0,g.QR)(b,{preservePinned:!0})}},5726:(a,b,c)=>{c.d(b,{pR:()=>B,hK:()=>K,Hd:()=>C,H1:()=>u,Uv:()=>y,Ah:()=>E,Q3:()=>F,$v:()=>L,ze:()=>O,Al:()=>M,$g:()=>D});var d=c(73024),e=c(48161),f=c(76760),g=c(19898),h=c(28103),i=c(37047),j=c(95734),k=c(61373);function l(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 m(a,b){let c=l(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 n(a){let b=l(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)((0,k.y4)('你是施工组织设计质量标注专家。逐块判定(只依据该块文本,不联想上下文):\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 o(a,b){try{let c=a.slice(0,12e3),d=await (0,j.bb)((0,k.y4)('你是施工组织设计评审专家。基于提供的参考施组样本(节选),输出质量点评 JSON:\n{"highlights":["值得对标的亮点,每条≤40字,最多5条"],"weaknesses":["明显短板,每条≤40字,最多5条"],"benchmarkable":"一段≤80字的最值得对标点总结"}。只输出 JSON。'),`章节结构:${b.slice(0,12).join(" / ")}
7
7
 
8
8
  样本节选:
9
- ${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 p(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 m(d,c);g&&(f.semanticDuplicationRate=g.semanticDuplicationRate,f.semanticSegmentCount=g.semanticSegmentCount);let h=await n(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 o(a,b),g||h||f.qualityNotes?f:void 0}function q(){let a=f.join(e.homedir(),".customize-agent","template-references");return d.mkdirSync(f.join(a,"files"),{recursive:!0}),a}function r(){return f.join(q(),"references.json")}function s(){try{let a=r();if(!d.existsSync(a))return[];let b=JSON.parse(d.readFileSync(a,"utf-8"));return Array.isArray(b)?b:[]}catch{return[]}}function t(a){d.writeFileSync(r(),JSON.stringify(a,null,2),"utf-8")}function u(){return s().sort((a,b)=>b.uploadedAt-a.uploadedAt)}function v(a){return u().filter(b=>b.projectType===a)}async function w(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 x=null;function y(){return x??=z().finally(()=>{x=null})}async function z(){let a=s(),b=a.filter(a=>"ready"===a.status&&4!==a.profileVersion);if(0===b.length)return;let c=!1,e=[];for(let a of b){let b=f.join(q(),a.filePath);if(d.existsSync(b))try{let d=await w(b);a.qualityProfile=await (0,h.WT)(d),a.profileVersion=4,c=!0,e.push({record:a,text:d})}catch{}}for(let{record:b,text:d}of(c&&t(a),e))A(b,d)}async function A(a,b){try{let c=await p(b,a.qualityProfile?.headingStructure||[]);if(!c)return;let d=s(),e=d.find(b=>b.id===a.id);if(!e||!e.qualityProfile)return;e.qualityProfile={...e.qualityProfile,semantic:c},t(d)}catch{}}async function B(a){let b=q(),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=s();l.push(k),t(l);try{let a=await w(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)),t(l),A(k,a)}catch(a){k.status="failed",k.errorMessage=a instanceof Error?a.message:"解析失败",t(l)}return k}function C(a){let b=s(),c=b.find(b=>b.id===a);if(!c)return!1;t(b.filter(b=>b.id!==a));let e=f.join(q(),c.filePath);try{d.existsSync(e)&&d.unlinkSync(e)}catch{}return!0}function D(a,b){let c=s(),d=c.find(b=>b.id===a);if(d)return d.projectType=b,d.typeSource="manual",t(c),d}function E(a){let b=v(a).filter(a=>"ready"===a.status&&a.qualityProfile);if(0===b.length)return;let c=b.map(a=>a.qualityProfile),d=J(c),e=c[0];return{profile:{wordCount:G(c.map(a=>a.wordCount)),effectiveWordCount:G(c.map(a=>a.effectiveWordCount)),paramDensity:d.paramDensity.avg,paramCount:Math.round(G(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(G(c.map(a=>a.segmentCount||0))),arrowChainSegmentCount:Math.round(G(c.map(a=>a.arrowChainSegmentCount||0))),duplicatedSegmentCount:Math.round(G(c.map(a=>a.duplicatedSegmentCount||0))),fiveElementCompleteBlocks:Math.max(0,...c.map(a=>a.fiveElementCompleteBlocks||0))},sourceCount:b.length}}function F(a){let b=v(a).filter(a=>"ready"===a.status&&a.qualityProfile?.headingStructure?.length);if(0!==b.length)return{text:I(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 G(a){return a.length>0?a.reduce((a,b)=>a+b,0)/a.length:0}function H(a){return{avg:G(a),min:a.length?Math.min(...a):0,max:a.length?Math.max(...a):0}}function I(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 J(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:H(a.map(a=>a.tableCount)),sectionCount:H(a.map(a=>a.sectionCount)),subsectionCount:H(a.map(a=>a.subsectionCount||0)),subitemCount:H(a.map(a=>a.subitemCount||0)),avgSectionWords:{avg:j>0?Math.round(e/j):0}}}function K(){let a=u().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=I(b.map(a=>(a.headingStructure||[]).map(a=>({value:a})))),f=I(b.map(a=>(a.tableTitles||[]).map(a=>({value:a})))),g=I(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:J(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 L(a){let b=(0,h.aF)([a.templateName,...a.chapterTitles,a.requirement].filter(Boolean).join(" ")),c=v(b).filter(a=>"ready"===a.status&&a.qualityProfile);if(0===c.length)return[];let d=c.map(a=>a.qualityProfile),e=c.length,f=G(d.map(a=>a.wordCount)),g=f>0?Math.max(.3,Math.min(2,a.targetWords/f)):1,i=I(d.map(a=>(a.headingStructure||[]).map(a=>({value:a})))).filter(a=>a.count>=Math.ceil(e/2)).slice(0,12),j=I(d.map(a=>(a.paramTokens||[]).map(a=>({value:a.token,weight:a.count})))),k=[`同类工程(${b})参考特征(来自 ${e} 份优秀入围文件画像,仅供软性参考;任何项目专属数字与参数仍必须以知识库证据为准,为对齐特征而编造参数、虚构表格或堆砌无意义内容严格禁止):`],l=J(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 M(a){let b=v((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 N(a){return a.replace(/^第[一二三四五六七八九十百千\d]+[章节篇][、..]?\s*/u,"").replace(/^\d+(?:\.\d+)*[、..]?\s*/u,"").trim()}function O(a){let b=(0,h.aF)([a.templateName,...a.chapterTitles].join(" ")),c=v(b).filter(a=>"ready"===a.status&&a.qualityProfile);if(0===c.length)return;let d=I(c.map(a=>a.qualityProfile).map(a=>(a.headingStructure||[]).map(a=>({value:a})))),e=new Set(a.chapterTitles.map(N)),f=d.filter(a=>a.count>=Math.ceil(c.length/2)).filter(a=>!e.has(N(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}},6444:(a,b,c)=>{c.d(b,{N:()=>l,x:()=>k});var d=c(77598),e=c(8753),f=c(92808);function g(a){return a.replace(/[^a-zA-Z0-9\u4e00-\u9fa5_-]/gu,"-").slice(0,60)||`fact-${Date.now()}`}function h(a){let b=RegExp("[“”\"'‘’「」『』《》](.{2,80}?)[“”\"'‘’「」『』《》]","gu");return[...a.matchAll(b)].map(a=>a[1].trim()).filter(Boolean)}function i(a){return a.split(/[\n;;。]/u).map(a=>a.trim()).filter(a=>a.length>=2)}function j(a,b=""){let c=function(a,b=""){return`${b} ${a.name} ${a.category} ${a.outputTitle} ${a.description}`}(a,b);return(0,e.V)().autoSpecGates.filter(a=>a.templateMatchers.some(a=>(function(a,b){try{return RegExp(b,"iu").test(a)}catch{return a.includes(b)}})(c,a)))}function k(a,b=""){let c=function(a,b=""){return d.createHash("sha1").update(JSON.stringify({id:a.id,name:a.name,description:a.description,outputTitle:a.outputTitle,chapters:a.chapters,promptBindings:a.promptBindings,projectBindings:a.projectBindings,projectRoleConfigId:a.projectRoleConfigId,requirement:b})).digest("hex").slice(0,12)}(a,b),e=function(a){let b=`${a.name} ${a.category} ${a.outputTitle} ${a.description}`;return(0,f.rs)(b,f.nt)||a.category||"文档"}(a),l=function(a,b){let c=[a.name,a.category,a.outputTitle,a.description],d=[];for(let b of a.chapters)for(let a of(c.push(b.title,b.purpose,...b.sections||[],...b.requiredFacts||[],...b.queries||[]),b.requiredFacts||[]))d.push(a);let e=c.filter(Boolean).join("\n"),g=new Set(d);for(let a of(0,f.t0)(e,f.NT))g.add(a);for(let c of j(a,b))for(let a of c.requiredFacts)g.add(a);return[...g].filter(Boolean)}(a,e),m=function(a=""){let b=new Set;for(let c of[/(?:必须|需要|要求|增加|包含|包括|补充|设置|新增).{0,12}?(?:章节|章|节|小节)[::为是]?\s*([^。;;\n]{2,80})/giu,/(?:章节|目录).{0,8}?(?:包括|包含|为|是)[::]?\s*([^。;;\n]{2,120})/giu])for(let d of a.matchAll(c))for(let a of d[1].split(/[、,,/]/u).map(a=>a.trim()).filter(Boolean))!/不要|禁止|不得|不能/iu.test(a)&&a.length<=40&&b.add(a.replace(/[。;;::]+$/u,""));return[...b]}(b),n=function(a=""){let b=new Set;for(let c of i(a).filter(a=>/必须|一定要|务必|输出|写明/iu.test(a)&&!/章节|章|节|小节/iu.test(a))){for(let a of h(c))b.add(a);let a=c.match(/(?:输出|写明)\s*([^。;;\n]{2,30})/iu);a&&b.add(a[1].trim())}return[...b].filter(a=>a&&a.length<=30&&!/不要|禁止|不得|不能|生成|要求内容|专业|结构完整|直接用于/u.test(a))}(b),o=function(a=""){let b=new Set;for(let c of i(a).filter(a=>/不要|禁止|不得|不能|不允许|严禁/iu.test(a))){for(let a of h(c))b.add(a);let a=c.match(/(?:不要|禁止|不得|不能|不允许|严禁)(?:出现|输出|写|包含)?\s*([^。;;\n]{2,40})/iu);a&&b.add(a[1].replace(/^(这些|以下|内容|词语|文字)[::]?/u,"").trim())}return[...b].filter(a=>a&&!/章节|页|表格/u.test(a))}(b),p=function(a=""){let b=a.match(/(?:大概|约|左右|不少于|至少|控制在|不超过|最多)?\s*(\d{1,3})\s*(?:页|page)/iu);if(!b)return;let c=Number(b[1]);if(Number.isFinite(c)&&!(c<=0))return/不少于|至少/iu.test(a)?{min:c}:/不超过|最多|以内|控制在/iu.test(a)?{max:c}:{target:c,min:Math.max(1,Math.floor(.85*c)),max:Math.ceil(1.15*c)}}(b),q=j(a,e),r=Math.max(0,...q.map(a=>a.minTables||0)),s=Math.max(function(a=""){let b=a.match(/(?:至少|不少于)?\s*(\d{1,2})\s*(?:个|张)?\s*表格/iu);return b?Number(b[1]):/表格化|用表格|表格形式|表格表达/iu.test(a)?1:void 0}(b)||0,r)||void 0,t=a.chapters.map((a,b)=>{let c=[a.title,a.purpose,...a.sections||[],...a.requiredFacts||[],...a.queries||[]].join("\n"),d=new Set(a.requiredFacts||[]);for(let a of l)(c.includes(a)||RegExp(a.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&"),"iu").test(c))&&d.add(a);for(let a of(0,f.t0)(c,f.Ny))d.add(a);return{id:a.id,title:a.title,required:!0,order:b,minWords:900,requiredFactIds:[...d].filter(a=>l.includes(a)).map(g),requiredFileRoleIds:[],requiredPromptRoleIds:[],generationHint:[a.purpose,a.sections?.length?`必须包含小节:${a.sections.join("、")}`:"",d.size?`重点覆盖事实:${[...d].join("、")}`:""].filter(Boolean).join("\n")}}),u=m.filter(a=>!t.some(b=>b.title.includes(a)||a.includes(b.title))).map((a,b)=>({id:`user-chapter-${g(a)}`,title:a,required:!0,order:t.length+b,minWords:600,requiredFactIds:[],requiredFileRoleIds:[],requiredPromptRoleIds:[],generationHint:`用户明确要求包含该章节:${a}`})),v=[{id:"auto-source-required",name:"事实必须有来源",type:"source_required",level:"warning",evaluator:{subject:"source",operator:"all_have_source"}},{id:"auto-min-source",name:"至少使用绑定材料来源",type:"source_required",level:"warning",evaluator:{subject:"source",operator:"min_count",min:2}},{id:"auto-no-debug-text",name:"不得输出后台流程话术",type:"forbidden_text",level:"error",value:"知识库证据",evaluator:{subject:"document",operator:"not_contains",value:"知识库证据"}},...q.flatMap(a=>a.requiredTexts.map(a=>({id:`configured-required-${g(a)}`,name:`配置建议包含:${a}`,type:"configured_required_text",level:"warning",value:a,evaluator:{subject:"document",operator:"contains",value:a}}))),...q.flatMap(a=>a.forbiddenTexts.map(a=>({id:`configured-forbidden-${g(a)}`,name:`配置建议避免:${a}`,type:"configured_forbidden_text",level:"warning",value:a,evaluator:{subject:"document",operator:"not_contains",value:a}}))),...r?[{id:"configured-min-table-count",name:`配置建议正式表格不少于 ${r} 个`,type:"configured_table_density",level:"warning",evaluator:{subject:"table",operator:"min_count",min:r}}]:[],...m.map(a=>({id:`user-required-chapter-${g(a)}`,name:`用户提到章节:${a}`,type:"user_required_chapter",level:"warning",target:a,evaluator:{subject:"chapter",operator:"exists",target:a}})),...n.map(a=>({id:`user-required-text-${g(a)}`,name:`用户提到应包含:${a}`,type:"user_required_text",level:"warning",value:a,evaluator:{subject:"document",operator:"contains",value:a}})),...o.map(a=>({id:`user-forbidden-text-${g(a)}`,name:`用户要求不得包含:${a}`,type:"user_forbidden_text",level:"error",value:a,evaluator:{subject:"document",operator:"not_contains",value:a}})),...s?[{id:"user-min-table-count",name:`用户提到表格数量不少于 ${s}`,type:"user_format_table",level:"warning",evaluator:{subject:"table",operator:"min_count",min:s}}]:[],...p?.min?[{id:"user-min-page-count",name:`用户提到页数不少于 ${p.min}`,type:"user_page_target",level:"warning",evaluator:{subject:"page",operator:"min_count",min:p.min}}]:[],...p?.max?[{id:"user-max-page-count",name:`用户要求页数不超过 ${p.max}`,type:"user_page_target",level:"warning",evaluator:{subject:"page",operator:"max_count",min:p.max}}]:[]],w=[...t,...u];return{sourceHash:c,managedBy:"system",spec:{id:`auto-${a.id}-${c}`.replace(/[^a-zA-Z0-9_-]/gu,"-").slice(0,80),name:`后台优化建议 - ${a.name}`,description:`${e}后台优化建议,由模板、提示词、角色绑定和用户临时要求静默生成,仅用于提升内容完整性,不接管章节结构。`,factFields:l.map(a=>({id:g(a),name:a,type:"auto",required:q.some(b=>b.requiredFacts.includes(a))||!/资源|品牌|重点|难点|约束/iu.test(a),extractionHint:`从绑定材料摘要、角色绑定证据和知识库证据中抽取“${a}”。`,validationHint:`生成内容涉及“${a}”时必须与绑定材料一致,不得引入无关事实。`})),chapterMode:"fixed",chapterRules:w,dynamicChapterRule:{source:"ai_plan",minChapters:0,maxChapters:0,titleStrategy:"template",minWordsPerChapter:0,generationHint:`不自动规划或补充章节;仅按${e}正式文件要求提供内容完整性建议。`},gateRules:v,builtIn:!0}}}function l(a,b,c={}){return c.publicSafe?`## 文档事实与质量要求
9
+ ${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 p(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 m(d,c);g&&(f.semanticDuplicationRate=g.semanticDuplicationRate,f.semanticSegmentCount=g.semanticSegmentCount);let h=await n(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 o(a,b),g||h||f.qualityNotes?f:void 0}function q(){let a=f.join(e.homedir(),".customize-agent","template-references");return d.mkdirSync(f.join(a,"files"),{recursive:!0}),a}function r(){return f.join(q(),"references.json")}function s(){try{let a=r();if(!d.existsSync(a))return[];let b=JSON.parse(d.readFileSync(a,"utf-8"));return Array.isArray(b)?b:[]}catch{return[]}}function t(a){d.writeFileSync(r(),JSON.stringify(a,null,2),"utf-8")}function u(){return s().sort((a,b)=>b.uploadedAt-a.uploadedAt)}function v(a){return u().filter(b=>b.projectType===a)}async function w(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 x=null;function y(){return x??=z().finally(()=>{x=null})}async function z(){let a=s(),b=a.filter(a=>"ready"===a.status&&4!==a.profileVersion);if(0===b.length)return;let c=!1,e=[];for(let a of b){let b=f.join(q(),a.filePath);if(d.existsSync(b))try{let d=await w(b);a.qualityProfile=await (0,h.WT)(d),a.profileVersion=4,c=!0,e.push({record:a,text:d})}catch{}}for(let{record:b,text:d}of(c&&t(a),e))A(b,d)}async function A(a,b){try{let c=await p(b,a.qualityProfile?.headingStructure||[]);if(!c)return;let d=s(),e=d.find(b=>b.id===a.id);if(!e||!e.qualityProfile)return;e.qualityProfile={...e.qualityProfile,semantic:c},t(d)}catch{}}async function B(a){let b=q(),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=s();l.push(k),t(l);try{let a=await w(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)),t(l),A(k,a)}catch(a){k.status="failed",k.errorMessage=a instanceof Error?a.message:"解析失败",t(l)}return k}function C(a){let b=s(),c=b.find(b=>b.id===a);if(!c)return!1;t(b.filter(b=>b.id!==a));let e=f.join(q(),c.filePath);try{d.existsSync(e)&&d.unlinkSync(e)}catch{}return!0}function D(a,b){let c=s(),d=c.find(b=>b.id===a);if(d)return d.projectType=b,d.typeSource="manual",t(c),d}function E(a){let b=v(a).filter(a=>"ready"===a.status&&a.qualityProfile);if(0===b.length)return;let c=b.map(a=>a.qualityProfile),d=J(c),e=c[0];return{profile:{wordCount:G(c.map(a=>a.wordCount)),effectiveWordCount:G(c.map(a=>a.effectiveWordCount)),paramDensity:d.paramDensity.avg,paramCount:Math.round(G(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(G(c.map(a=>a.segmentCount||0))),arrowChainSegmentCount:Math.round(G(c.map(a=>a.arrowChainSegmentCount||0))),duplicatedSegmentCount:Math.round(G(c.map(a=>a.duplicatedSegmentCount||0))),fiveElementCompleteBlocks:Math.max(0,...c.map(a=>a.fiveElementCompleteBlocks||0))},sourceCount:b.length}}function F(a){let b=v(a).filter(a=>"ready"===a.status&&a.qualityProfile?.headingStructure?.length);if(0!==b.length)return{text:I(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 G(a){return a.length>0?a.reduce((a,b)=>a+b,0)/a.length:0}function H(a){return{avg:G(a),min:a.length?Math.min(...a):0,max:a.length?Math.max(...a):0}}function I(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 J(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:H(a.map(a=>a.tableCount)),sectionCount:H(a.map(a=>a.sectionCount)),subsectionCount:H(a.map(a=>a.subsectionCount||0)),subitemCount:H(a.map(a=>a.subitemCount||0)),avgSectionWords:{avg:j>0?Math.round(e/j):0}}}function K(){let a=u().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=I(b.map(a=>(a.headingStructure||[]).map(a=>({value:a})))),f=I(b.map(a=>(a.tableTitles||[]).map(a=>({value:a})))),g=I(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:J(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 L(a){let b=(0,h.aF)([a.templateName,...a.chapterTitles,a.requirement].filter(Boolean).join(" ")),c=v(b).filter(a=>"ready"===a.status&&a.qualityProfile);if(0===c.length)return[];let d=c.map(a=>a.qualityProfile),e=c.length,f=G(d.map(a=>a.wordCount)),g=f>0?Math.max(.3,Math.min(2,a.targetWords/f)):1,i=I(d.map(a=>(a.headingStructure||[]).map(a=>({value:a})))).filter(a=>a.count>=Math.ceil(e/2)).slice(0,12),j=I(d.map(a=>(a.paramTokens||[]).map(a=>({value:a.token,weight:a.count})))),k=[`同类工程(${b})参考特征(来自 ${e} 份优秀入围文件画像,仅供软性参考;任何项目专属数字与参数仍必须以知识库证据为准,为对齐特征而编造参数、虚构表格或堆砌无意义内容严格禁止):`],l=J(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 M(a){let b=v((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 N(a){return a.replace(/^第[一二三四五六七八九十百千\d]+[章节篇][、..]?\s*/u,"").replace(/^\d+(?:\.\d+)*[、..]?\s*/u,"").trim()}function O(a){let b=(0,h.aF)([a.templateName,...a.chapterTitles].join(" ")),c=v(b).filter(a=>"ready"===a.status&&a.qualityProfile);if(0===c.length)return;let d=I(c.map(a=>a.qualityProfile).map(a=>(a.headingStructure||[]).map(a=>({value:a})))),e=new Set(a.chapterTitles.map(N)),f=d.filter(a=>a.count>=Math.ceil(c.length/2)).filter(a=>!e.has(N(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}},6444:(a,b,c)=>{c.d(b,{N:()=>l,x:()=>k});var d=c(77598),e=c(8753),f=c(92808);function g(a){return a.replace(/[^a-zA-Z0-9\u4e00-\u9fa5_-]/gu,"-").slice(0,60)||`fact-${Date.now()}`}function h(a){let b=RegExp("[“”\"'‘’「」『』《》](.{2,80}?)[“”\"'‘’「」『』《》]","gu");return[...a.matchAll(b)].map(a=>a[1].trim()).filter(Boolean)}function i(a){return a.split(/[\n;;。]/u).map(a=>a.trim()).filter(a=>a.length>=2)}function j(a,b=""){let c=function(a,b=""){return`${b} ${a.name} ${a.category} ${a.outputTitle} ${a.description}`}(a,b);return(0,e.V)().autoSpecGates.filter(a=>a.templateMatchers.some(a=>(function(a,b){try{return RegExp(b,"iu").test(a)}catch{return a.includes(b)}})(c,a)))}function k(a,b=""){let c=function(a,b=""){return d.createHash("sha1").update(JSON.stringify({id:a.id,name:a.name,description:a.description,outputTitle:a.outputTitle,chapters:a.chapters,promptBindings:a.promptBindings,projectBindings:a.projectBindings,projectRoleConfigId:a.projectRoleConfigId,requirement:b})).digest("hex").slice(0,12)}(a,b),e=function(a){let b=`${a.name} ${a.category} ${a.outputTitle} ${a.description}`;return(0,f.rs)(b,f.nt)||a.category||"文档"}(a),l=function(a,b){let c=[a.name,a.category,a.outputTitle,a.description],d=[];for(let b of a.chapters)for(let a of(c.push(b.title,b.purpose,...b.sections||[],...b.requiredFacts||[],...b.queries||[]),b.requiredFacts||[]))d.push(a);let e=c.filter(Boolean).join("\n"),g=new Set(d);for(let a of(0,f.t0)(e,f.NT))g.add(a);for(let c of j(a,b))for(let a of c.requiredFacts)g.add(a);return[...g].filter(Boolean)}(a,e),m=function(a=""){let b=new Set;for(let c of[/(?:必须|需要|要求|增加|包含|包括|补充|设置|新增).{0,12}?(?:章节|章|节|小节)[::为是]?\s*([^。;;\n]{2,80})/giu,/(?:章节|目录).{0,8}?(?:包括|包含|为|是)[::]?\s*([^。;;\n]{2,120})/giu])for(let d of a.matchAll(c))for(let a of d[1].split(/[、,,/]/u).map(a=>a.trim()).filter(Boolean))!/不要|禁止|不得|不能/iu.test(a)&&a.length<=40&&b.add(a.replace(/[。;;::]+$/u,""));return[...b]}(b),n=function(a=""){let b=new Set;for(let c of i(a).filter(a=>/必须|一定要|务必|输出|写明/iu.test(a)&&!/章节|章|节|小节/iu.test(a))){for(let a of h(c))b.add(a);let a=c.match(/(?:输出|写明)\s*([^。;;\n]{2,30})/iu);a&&b.add(a[1].trim())}return[...b].filter(a=>a&&a.length<=30&&!/不要|禁止|不得|不能|生成|要求内容|专业|结构完整|直接用于/u.test(a))}(b),o=function(a=""){let b=new Set;for(let c of i(a).filter(a=>/不要|禁止|不得|不能|不允许|严禁/iu.test(a))){for(let a of h(c))b.add(a);let a=c.match(/(?:不要|禁止|不得|不能|不允许|严禁)(?:出现|输出|写|包含)?\s*([^。;;\n]{2,40})/iu);a&&b.add(a[1].replace(/^(这些|以下|内容|词语|文字)[::]?/u,"").trim())}return[...b].filter(a=>a&&!/章节|页|表格/u.test(a))}(b),p=function(a=""){let b=a.match(/(?:大概|约|左右|不少于|至少|控制在|不超过|最多)?\s*(\d{1,3})\s*(?:页|page)/iu);if(!b)return;let c=Number(b[1]);if(Number.isFinite(c)&&!(c<=0))return/不少于|至少/iu.test(a)?{min:c}:/不超过|最多|以内|控制在/iu.test(a)?{max:c}:{target:c,min:Math.max(1,Math.floor(.85*c)),max:Math.ceil(1.15*c)}}(b),q=j(a,e),r=Math.max(0,...q.map(a=>a.minTables||0)),s=Math.max(function(a=""){let b=a.match(/(?:至少|不少于)?\s*(\d{1,2})\s*(?:个|张)?\s*表格/iu);return b?Number(b[1]):/表格化|用表格|表格形式|表格表达/iu.test(a)?1:void 0}(b)||0,r)||void 0,t=a.chapters.map((a,b)=>{let c=[a.title,a.purpose,...a.sections||[],...a.requiredFacts||[],...a.queries||[]].join("\n"),d=new Set(a.requiredFacts||[]);for(let a of l)(c.includes(a)||RegExp(a.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&"),"iu").test(c))&&d.add(a);for(let a of(0,f.t0)(c,f.Ny))d.add(a);return{id:a.id,title:a.title,required:!0,order:b,minWords:900,requiredFactIds:[...d].filter(a=>l.includes(a)).map(g),requiredFileRoleIds:[],requiredPromptRoleIds:[],generationHint:[a.purpose,a.sections?.length?`必须包含小节:${a.sections.join("、")}`:"",d.size?`重点覆盖事实:${[...d].join("、")}`:""].filter(Boolean).join("\n")}}),u=m.filter(a=>!t.some(b=>b.title.includes(a)||a.includes(b.title))).map((a,b)=>({id:`user-chapter-${g(a)}`,title:a,required:!0,order:t.length+b,minWords:600,requiredFactIds:[],requiredFileRoleIds:[],requiredPromptRoleIds:[],generationHint:`用户明确要求包含该章节:${a}`})),v=[{id:"auto-source-required",name:"事实必须有来源",type:"source_required",level:"warning",evaluator:{subject:"source",operator:"all_have_source"}},{id:"auto-min-source",name:"至少使用绑定材料来源",type:"source_required",level:"warning",evaluator:{subject:"source",operator:"min_count",min:2}},{id:"auto-no-debug-text",name:"不得输出后台流程话术",type:"forbidden_text",level:"error",value:"知识库证据",evaluator:{subject:"document",operator:"not_contains",value:"知识库证据"}},...q.flatMap(a=>a.requiredTexts.map(a=>({id:`configured-required-${g(a)}`,name:`配置建议包含:${a}`,type:"configured_required_text",level:"warning",value:a,evaluator:{subject:"document",operator:"contains",value:a}}))),...q.flatMap(a=>a.forbiddenTexts.map(a=>({id:`configured-forbidden-${g(a)}`,name:`配置建议避免:${a}`,type:"configured_forbidden_text",level:"warning",value:a,evaluator:{subject:"document",operator:"not_contains",value:a}}))),...r?[{id:"configured-min-table-count",name:`配置建议正式表格不少于 ${r} 个`,type:"configured_table_density",level:"warning",evaluator:{subject:"table",operator:"min_count",min:r}}]:[],...m.map(a=>({id:`user-required-chapter-${g(a)}`,name:`用户提到章节:${a}`,type:"user_required_chapter",level:"warning",target:a,evaluator:{subject:"chapter",operator:"exists",target:a}})),...n.map(a=>({id:`user-required-text-${g(a)}`,name:`用户提到应包含:${a}`,type:"user_required_text",level:"warning",value:a,evaluator:{subject:"document",operator:"contains",value:a}})),...o.map(a=>({id:`user-forbidden-text-${g(a)}`,name:`用户要求不得包含:${a}`,type:"user_forbidden_text",level:"error",value:a,evaluator:{subject:"document",operator:"not_contains",value:a}})),...s?[{id:"user-min-table-count",name:`用户提到表格数量不少于 ${s}`,type:"user_format_table",level:"warning",evaluator:{subject:"table",operator:"min_count",min:s}}]:[],...p?.min?[{id:"user-min-page-count",name:`用户提到页数不少于 ${p.min}`,type:"user_page_target",level:"warning",evaluator:{subject:"page",operator:"min_count",min:p.min}}]:[],...p?.max?[{id:"user-max-page-count",name:`用户要求页数不超过 ${p.max}`,type:"user_page_target",level:"warning",evaluator:{subject:"page",operator:"max_count",min:p.max}}]:[]],w=[...t,...u];return{sourceHash:c,managedBy:"system",spec:{id:`auto-${a.id}-${c}`.replace(/[^a-zA-Z0-9_-]/gu,"-").slice(0,80),name:`后台优化建议 - ${a.name}`,description:`${e}后台优化建议,由模板、提示词、角色绑定和用户临时要求静默生成,仅用于提升内容完整性,不接管章节结构。`,factFields:l.map(a=>({id:g(a),name:a,type:"auto",required:q.some(b=>b.requiredFacts.includes(a))||!/资源|品牌|重点|难点|约束/iu.test(a),extractionHint:`从绑定材料摘要、角色绑定证据和知识库证据中抽取“${a}”。`,validationHint:`生成内容涉及“${a}”时必须与绑定材料一致,不得引入无关事实。`})),chapterMode:"fixed",chapterRules:w,dynamicChapterRule:{source:"ai_plan",minChapters:0,maxChapters:0,titleStrategy:"template",minWordsPerChapter:0,generationHint:`不自动规划或补充章节;仅按${e}正式文件要求提供内容完整性建议。`},gateRules:v,builtIn:!0}}}function l(a,b,c={}){return c.publicSafe?`## 文档事实与质量要求
10
10
  建议关注事实:${a.factFields.map(a=>a.name).join("、")}
11
11
  章节内容要求:${a.chapterRules.map(a=>`${a.title}${a.generationHint?`:${a.generationHint.replace(/\s+/gu," ")}`:""}`).join(";")||"以当前模板章节为准"}
12
12
  质量控制点:${a.gateRules.map(a=>a.name).join("、")}`:`## 结构化检查摘要
@@ -15,7 +15,7 @@ ${c}`,{maxTokens:1200,temperature:0,disableThinkingBoost:!0});if(!d)return;retur
15
15
  说明:以下内容仅用于事实覆盖、检索命中和质量检查,不得新增、删除、重排用户或模板章节。
16
16
  建议关注事实:${a.factFields.map(a=>a.name).join("、")}
17
17
  章节内容建议:${a.chapterRules.map(a=>`${a.title}${a.generationHint?`:${a.generationHint.replace(/\s+/gu," ")}`:""}`).join(";")||"以当前模板章节为准"}
18
- 质量提醒:${a.gateRules.map(a=>a.name).join("、")}`}},14070:(a,b,c)=>{function d(a){let b=a.split(/[,。;:、\s\d()()《》<>【】"“”'‘’\-/\\|,.:;]+/u).filter(Boolean),c=new Set;for(let a of b){let b=a.trim();if(b.length>=2&&c.add(b),b.length>=3)for(let a=0;a<=b.length-2;a++){let d=b.slice(a,a+2);d.length>=2&&!/^[a-zA-Z0-9]+$/u.test(d)&&c.add(d)}}return[...c]}function e(a,b,c=.3){return function(a,b){let c=new Set(d(a)),e=new Set(d(b));if(0===c.size||0===e.size)return 0;let f=0;for(let a of c)if(e.has(a))f+=1;else if(a.length>=2){for(let b of e)if(b.length>=2&&(b.includes(a)||a.includes(b))){f+=.5;break}}return f/Math.max(c.size,1)}(a,b)>=c}c.d(b,{C1:()=>e})},18274:(a,b,c)=>{c.d(b,{AM:()=>e,LT:()=>i,_W:()=>d,aX:()=>h,s2:()=>j,sv:()=>f,yw:()=>g});let d=/(?:\b[A-Z]{1,8}[\w./-]*\d[\w./-]*\b|\b\d+(?:\.\d+)?\s*(?:mm|cm|m|km|㎡|m²|m3|m³|kg|g|t|L|ml|MPa|kPa|℃|%|台|套|个|项|批|次|份|人|小时|分钟|日历天|天|周|月|年|万元|元)\b|\b\d+\s*[×xX]\s*\d+(?:\s*[×xX]\s*\d+)?\b|\b(?:GB|GB\/T|ISO|IEC|IEEE|RFC|API|DB\d*|T\/[A-Z]+)\s*[\w.-]+\b)/giu,e=/\d+(?:\.\d+)?\s*(?:mm|cm|m|km|㎡|m²|m3|m³|kg|g|t|L|ml|MPa|kPa|℃|%|台|套|个|项|批|次|份|人|小时|分钟|日历天|天|周|月|年)|DN\s*\d+|φ\s*\d+|Φ\s*\d+|GB\s*\d+|JGJ\s*\d+/iu,f=/\d|DN|φ|Φ|mm|cm|m²|m3|m³|MPa|kPa|℃|%|GB|JGJ|ISO|IEC|台|套|个|项|批|次|份|人|㎡|日历天|万元|元|型号|规格|数量|单位/iu,g=/\d+(?:\.\d+)?\s*(?:mm|cm|m|km|㎡|m²|m3|m³|kg|g|t|L|ml|MPa|kPa|℃|%|台|套|个|项|批|次|份|人|小时|分钟|日历天|天|周|月|年)|DN\s*\d+|Φ\s*\d+|φ\s*\d+|C\d{2,}|HRB\d+|GB\/?T?\s*[\w.-]+|JGJ\s*[\w.-]+|\d+\s*[×xX]\s*\d+/iu,h=/\d+(?:\.\d+)?\s*(?:m³|m3|m²|㎡|mm|cm|m\/s|m|km|MPa|kN|kN\/m²|kPa|℃|%|d|h|min|MΩ|t|次\/天)|[MC]\d{1,3}(?:\.\d+)?|[<>≤≥]\s*\d+(?:\.\d+)?\s*(?:mm|MPa|%|d)|间距[≤<]?\s*\d+|偏差[≤<]?\s*\d+|坡度\s*\d+(?:\.\d+)?(?::\d+|%)|压实度\s*[≥>]?\s*\d+|坍落度|闭水试验|静载试验|拉拔试验|拉拔检测|探伤|试验压力|锚固长度|搭接长度|保护层厚度|养护时间|饱满度|垂直度|平整度|含水率|(?:防护挑网|安全网|防护网|围挡|警戒(?:区|线|距离)|防护栏杆).{0,12}(?:宽度|高度|距离|范围)[^,。;;]{0,8}\d+(?:\.\d+)?\s*m|(?:宽度|高度|距离|范围)[^,。;;]{0,8}\d+(?:\.\d+)?\s*m.{0,12}(?:防护挑网|安全网|防护网|围挡|警戒|防护栏杆)/giu,i=/\d[A-Z][A-Z0-9a-z]*\b|[A-Z]{1,2}\d{2,3}\b|\d+(?:\.\d+)?\s*(?:kW|kVA|KVA|KW)\b|IP\d{2}/gu,j=/\d+(?:\.\d+)?\s*(?:m²|㎡|m3|m³|mm|cm|m|km|kg|t|MPa|kPa|℃|%|日历天|天|层|台|套|个|项|次|份|人|小时)/giu},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,c){let d=[...new Set(b.filter(Boolean))];if(0===d.length)return a;let e=3===c?/^\s*###\s+/u:4===c?/^\s*####\s+/u:/^\s*#{3,4}\s+/u,f=new Set;return a.split("\n").map(a=>{if(!e.test(a))return a;let b=m(a);if(!b)return a;let c=d.find(a=>!f.has(a)&&o(b,a));if(!c||c===b)return a;let g=/^(\s*#{3,4}\s+)/u.exec(a)?.[1];return g?(f.add(c),`${g}${c}`):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()}}}},23500:(a,b,c)=>{c.d(b,{bj:()=>B,N6:()=>N,h0:()=>J,bV:()=>K,QJ:()=>D,jG:()=>C,dU:()=>A,Bh:()=>E,zY:()=>Q,xm:()=>F,J5:()=>I,C1:()=>M});var d=c(73024),e=c(76760),f=c(48161),g=c(77598),h=c(44533),i=c(25840),j=c(8753),k=c(6444),l=c(85441),m=c(92808),n=c(56942),o=c(2773),p=c(78217),q=c(5726);function r(){let a=e.join(f.homedir(),".customize-agent");return d.mkdirSync(a,{recursive:!0}),a}function s(){return e.join(r(),"document-templates.json")}function t(a){let{version:b,updatedAt:c,changeLog:d,...e}=a;return(0,g.createHash)("sha256").update(function a(b){return Array.isArray(b)?`[${b.map(a).join(",")}]`:b&&"object"==typeof b?`{${Object.keys(b).sort().map(c=>`${JSON.stringify(c)}:${a(b[c])}`).join(",")}}`:JSON.stringify(b)}(e)).digest("hex")}function u(a){return{...a,id:a.id.replace(/[^a-zA-Z0-9_-]/gu,"-").slice(0,80)||`template-${Date.now()}`,name:a.name||"未命名模板",description:a.description||"",category:a.category||"自定义",outputTitle:a.outputTitle||a.name||"文档",version:Number.isFinite(a.version)&&a.version>0?Math.floor(a.version):1,updatedAt:Number.isFinite(a.updatedAt)?a.updatedAt:Date.now(),changeLog:Array.isArray(a.changeLog)?a.changeLog.filter(a=>a&&"object"==typeof a&&Number.isFinite(a.version)&&"string"==typeof a.summary).slice(0,50):[],projectRoleConfigId:a.projectRoleConfigId||void 0,chapters:Array.isArray(a.chapters)&&a.chapters.length>0?a.chapters.map((a,b)=>({id:(a.id||`chapter-${b+1}`).replace(/[^a-zA-Z0-9_-]/gu,"-").slice(0,80),title:a.title||`第 ${b+1} 章`,purpose:a.purpose||"",queries:Array.isArray(a.queries)?a.queries.filter(Boolean):[],requiredFacts:Array.isArray(a.requiredFacts)?a.requiredFacts.filter(Boolean):[],sections:Array.isArray(a.sections)?a.sections.filter(Boolean):[],tableSections:Array.isArray(a.tableSections)?a.tableSections.filter(Boolean):[],tableRequirements:Array.isArray(a.tableRequirements)?a.tableRequirements.filter(Boolean):[],tablePlans:Array.isArray(a.tablePlans)?a.tablePlans:[],pinnedEvidenceFilePaths:Array.isArray(a.pinnedEvidenceFilePaths)?a.pinnedEvidenceFilePaths.filter(Boolean):[]})):[{id:"document",title:a.outputTitle||a.name||"文档",purpose:a.description||"",queries:[],requiredFacts:[]}],exportSettings:a.exportSettings,generationSettings:a.generationSettings,promptIds:Array.isArray(a.promptIds)?a.promptIds.filter(Boolean):[],projectBindings:Array.isArray(a.projectBindings)?a.projectBindings.filter(a=>a.materialRootPath).map(a=>({materialRootPath:a.materialRootPath.replace(/^\/+|\/+$/gu,"")})):(0,o.qp)(a),promptBindings:Array.isArray(a.promptBindings)?a.promptBindings.filter(a=>a.promptId&&a.roleId):Array.isArray(a.promptIds)?a.promptIds.filter(Boolean).map(a=>({promptId:a,roleId:"chapter_generation"})):[],builtIn:!1}}function v(){try{let a=s();if(!d.existsSync(a))return[];let b=JSON.parse(d.readFileSync(a,"utf-8"));if(!Array.isArray(b))return d.renameSync(a,`${a}.corrupt-${Date.now()}`),[];return b.map(u)}catch{try{let a=s();d.existsSync(a)&&d.renameSync(a,`${a}.corrupt-${Date.now()}`)}catch{}return[]}}function w(a){d.writeFileSync(s(),JSON.stringify(a.map(u),null,2),"utf-8")}function x(a){return(0,g.createHash)("sha256").update(a).digest("hex").slice(0,12)}function y(a){return a.replace(/\s+/gu," ").trim().slice(0,160)}function z(a){let b=function(){try{let a=JSON.parse(d.readFileSync(e.join(r(),"prompts.json"),"utf-8"));return Array.isArray(a.customPrompts)?a.customPrompts:[]}catch{return[]}}();if(a.startsWith("custom:")){let c=b.find(b=>b.id===a);return c?{id:a,name:c.name,content:c.content,source:"custom"}:void 0}if(a.startsWith("file:")){let b=a.slice(5);if(d.existsSync(b))return{id:a,name:e.basename(e.dirname(b))||b,content:d.readFileSync(b,"utf-8"),source:"file"}}}function A(a=[]){if(0===a.length)return[];let b=[];for(let c of a){let a=z(c.promptId);a&&b.push({...a,roleId:c.roleId,contentHash:x(a.content),contentPreview:y(a.content)})}return b}function B(a){let b=O(a),c=(0,i.XB)("prompt"),d=Q(a),e=[],f=[];if(b)for(let a of b.promptRoles){let b=c.find(b=>b.id===a.roleId);if(!b){e.push(a.roleId);continue}0===(b.resourceIds?.length?b.resourceIds:b.resourceId?[b.resourceId]:[]).length&&f.push(a.roleId)}let g=P(d),h=[];for(let a of g){let d=z(a.promptId);if(!d)continue;let e=c.find(b=>b.id===a.roleId),f=b?.promptRoles.find(b=>b.roleId===a.roleId),g=e?.executionType||function(a){var b;return b=a,/extract|extraction|抽取|清单|图纸|品牌/u.test(b)?"fact_extraction":/validation|校验|审查|审核/u.test(b)?"validation":/format|排版/u.test(b)?"formatting":/writer|method|schedule|quality|resource|safety|dangerous|施工|进度|质量|资源|安全|危大/u.test(b)?"chapter_generation":"reference"}(a.roleId),i=function(a,b,c=""){let d=`${a} ${b} ${c}`;return/extract|extraction|抽取|清单|图纸|品牌|识别/u.test(d)?"extraction":/format|排版/u.test(d)?"formatting":/总控|writer|施工组织设计总控|写作主控/u.test(d)?"writer":/chapter_generation|method|schedule|quality|resource|safety|dangerous|施工|进度|质量|资源|安全|危大/u.test(d)?"chapter":"reference"}(a.roleId,g,d.name),j=`projectRole:${b?.id||"unknown"}:${a.roleId}:order=${f?.order??0}`;h.push({...d,roleId:a.roleId,contentHash:x(d.content),contentPreview:y(d.content),executionType:g,category:i,bindingSource:j,roleConfigId:b?.id,roleName:e?.name,order:f?.order})}return{bindings:g,prompts:h,writerPrompts:h.filter(a=>"writer"===a.category),chapterPrompts:h.filter(a=>"chapter"===a.category),extractionPrompts:h.filter(a=>"extraction"===a.category),formattingPrompts:h.filter(a=>"formatting"===a.category),referencePrompts:h.filter(a=>"reference"===a.category),unresolvedRoles:[...new Set(e)],missingResourceRoles:[...new Set(f)]}}function C(){let a=(0,j.V)().templates,b=v().filter(b=>!a.some(a=>a.id===b.id));return[...a,...b]}function D(a){return C().find(b=>b.id===a)}function E(a){let b,c,d=u(a),e=v().find(a=>a.id===d.id),f=Date.now();if(e&&t(e)!==t(d)){b=(e.version||0)+1;let a=d.chapters.map(a=>a.title).join("、");c=[{version:b,timestamp:f,summary:a?`章节结构调整:${a.slice(0,80)}${a.length>80?"…":""}`:"模版内容已更新"},...e.changeLog||[]].slice(0,50)}else e?(b=e.version||1,c=e.changeLog||[]):(b=1,c=[{version:1,timestamp:f,summary:"创建模版"}]);let g={...d,version:b,updatedAt:f,changeLog:c},h=v().filter(a=>a.id!==d.id);return h.push(g),w(h),g}async function F(a,b=(0,h.aY)(),d={}){let f,g,j,r,s=D(a),t=[];if(!s)return{issues:[{level:"error",message:"文档模板不存在或已删除"}],fileDiagnostics:[],promptDiagnostics:[],roleDiagnostics:[],readiness:void 0,strategyPreview:void 0,config:void 0};let u=(0,i.XB)("prompt"),v=N(s),w=O(s);v||t.push({level:"error",message:"模板未绑定项目角色配置,且未匹配到自动专业角色配置"}),v&&!w&&t.push({level:"error",message:`项目角色配置不存在或已删除:${v}`}),s.promptIds?.length&&t.push({level:"warning",message:"模板存在旧 promptIds 字段残留,该字段已不参与生成,请清理模板历史数据。"}),s.promptBindings?.length&&t.push({level:"warning",message:"模板存在旧 promptBindings 字段残留,该字段已不参与生成,请清理模板历史数据。"});let x=Q(s),y=(0,o.qp)(s);w&&0===w.promptRoles.length&&t.push({level:"error",message:"项目角色配置未配置提示词角色。"}),w&&w.promptRoles.length>0&&0===x.length&&t.push({level:"error",message:"项目角色配置中的提示词角色未绑定任何有效提示词资源。"});let z=e.resolve(b),B=(0,h.Yy)(z),C=function(a,b){if(0===a.length)return[];let c=new Set(b.map(a=>a.relativePath)),d=[],e=new Set;for(let f of a){let a=f.materialRootPath.replace(/^\/+|\/+$/gu,"");for(let f of c.has(a)?[a]:b.filter(b=>{var c;return b.relativePath.startsWith(`${a}/`)&&"disk"!==(c=b).status&&"error"!==c.status&&Number(c.indexedAt||0)>0&&Number(c.chunkCount||0)>0}).map(a=>a.relativePath))e.has(f)||(e.add(f),d.push(f))}return d}(y,B);if(0===y.length?t.push({level:"error",message:"模板未绑定项目资料包,请先选择需要参与生成的项目文件夹。"}):0===C.length&&t.push({level:"error",message:"模板绑定的项目资料包不存在或没有可用索引文件,请重新选择项目资料包。"}),s&&(f=(0,l.P)(z,{requirement:d.requirement,boundFilePaths:C}),0===y.length&&!f.source.ambiguous&&f.source.selectedFiles>0)){let a=t.findIndex(a=>"error"===a.level&&"模板未绑定项目资料包,请先选择需要参与生成的项目文件夹。"===a.message);a>=0&&t.splice(a,1)}let E=new Map(B.map(a=>[a.relativePath,a])),G=[],H=C.map(a=>{let b=E.get(a);return b||t.push({level:"error",message:`知识库文件不存在:${a}`}),b&&("disk"===b.status||0===b.indexedAt)&&G.push({level:"warning",message:`知识库文件存在但尚未完成索引:${a}`}),b?.status==="error"&&t.push({level:"warning",message:`知识库文件索引失败:${a}${b.errorMessage?`,${b.errorMessage}`:""}`}),b&&0===b.chunkCount&&t.push({level:"warning",message:`知识库文件暂无可检索内容切片:${a}`}),{filePath:a,roleId:"project_material",roleName:"项目资料包",exists:!!b,indexed:!!(b&&b.indexedAt>0&&"disk"!==b.status),chunkCount:b?.chunkCount??0,vectorReady:!!(b&&b.chunkCount>0)}}),I=H.filter(a=>a.exists).length,J=H.filter(a=>a.exists&&!a.indexed).length;I>0&&J===I?t.push({level:"error",message:`模板绑定的项目资料包(${I} 份文件)均尚未完成解析入库,请等待后台索引完成后再运行模板`}):t.push(...G);let K=A(x),L=new Set(w?.promptRoles.map(a=>a.roleId)||[]);for(let a of w?.promptRoles||[]){let b=u.find(b=>b.id===a.roleId);if(!b){t.push({level:"error",message:`提示词角色不存在:${a.roleId}`});continue}0===(b.resourceIds?.length?b.resourceIds:b.resourceId?[b.resourceId]:[]).length&&t.push({level:"error",message:`提示词角色未绑定资源:${b.name}`})}let M=x.map(a=>{let b=u.find(b=>b.id===a.roleId),c=K.find(b=>b.id===a.promptId);return b||t.push({level:"error",message:`提示词角色不存在:${a.roleId}`}),L.has(a.roleId)||t.push({level:"error",message:`提示词绑定不属于当前项目角色配置:${a.roleId}`}),c||t.push({level:"error",message:`提示词不存在:${a.promptId}`}),c&&!c.content.trim()&&t.push({level:"warning",message:`提示词为空:${c.name}`}),{...a,roleName:b?.name,promptTitle:c?.name,promptSource:c?.source,contentLength:c?.content.length??0,contentHash:c?.contentHash,contentPreview:c?.contentPreview,exists:!!c}}),P=(w?.promptRoles||[]).map(a=>{let b=u.find(b=>b.id===a.roleId),c=b?b.resourceIds?.length?b.resourceIds:b.resourceId?[b.resourceId]:[]:[],d=x.filter(b=>b.roleId===a.roleId).map(a=>a.promptId),e=b?0===c.length?"missing_resource":0===d.length?"missing_prompt":"ok":"role_missing";return{roleId:a.roleId,roleName:b?.name,order:a.order,resourceIds:c,boundPromptIds:d,status:e}});if(K.length>1)try{let{detectPromptRuleConflicts:a}=await c.e(1001).then(c.bind(c,71001));for(let b of a(K.map(a=>({promptId:a.id,name:a.name,roleId:a.roleId,content:a.content}))))t.push({level:b.level,message:`提示词规则冲突:${b.message}`})}catch{}if(s){let a=f||(0,l.P)(z,{requirement:d.requirement,boundFilePaths:C}),b=function(a,b){let c=function(a,b){let c=[a.name,a.category,a.description,a.outputTitle,...a.chapters.flatMap(a=>[a.title,a.purpose])].join("\n"),d=new Set(["project_overview","scope_description"]);return/需求|规则|响应|方案|实施|专项|安全|质量|进度|合规|施工组织|技术标/iu.test(c)&&["requirement_document","structured_data"].forEach(a=>d.add(a)),(/安全|质量|进度|工期|文明|环保|验收/iu.test(c)||b.materialInventory.schedule_quality_safety.length>0)&&d.add("schedule_quality_safety"),(/设计|图纸|平面|立面|剖面|做法/iu.test(c)||b.materialInventory.design_specification.length>0)&&d.add("design_specification"),(/风险|重点|难点|约束|现场|危大/iu.test(c)||b.materialInventory.risk_constraints.length>0)&&d.add("risk_constraints"),d}(a,b);return[...new Set([...function(a){let b=[a.name,a.description,a.outputTitle,...a.chapters.flatMap(a=>[a.title,a.purpose,...a.requiredFacts||[],...a.queries||[]])].join("\n"),c=new Set((0,m.t0)(b,m.hW));return c.add("project_overview"),c.add("scope_description"),[...c]}(a),...c])].map(a=>{let d=b.materialInventory[a]||[],e=c.has(a),f=d.length>0,g=f&&d.length<(e?2:1);return{role:a,required:e,satisfied:f,weak:g,evidenceCount:d.length,filePaths:d.map(a=>a.filePath),reason:f?`已匹配 ${d.length} 个资料文件`:e?"必需资料角色缺失":"可选资料角色缺失"}})}(s,a);for(let c of(g=(0,n.$)({template:s,spec:(0,k.x)(s).spec,summary:a,resolvedRoles:b})).blockingIssues)t.push({level:"error",message:`生成准备度不足:${c}`});for(let a of g.warnings)t.push({level:"warning",message:a})}try{let a=(0,k.x)(s).spec,{effectiveTemplateChapters:b}=await Promise.resolve().then(c.bind(c,70208)),e=b(s,a),f=s.generationSettings||s.exportSettings,g=(0,p.q6)(s.exportSettings||s.generationSettings),h=(0,p.py)(d.requirement||""),i=f?.targetPages?.target||f?.targetPages?.min,l=h.targetChars||(h.targetPages?h.targetPages*g:void 0)||(i?i*g:void 0),m=e.reduce((b,c)=>b+Math.max(a.chapterRules.find(a=>a.id===c.id||a.title===c.title)?.minWords||0,a.dynamicChapterRule.minWordsPerChapter||0),0),n=Math.round(l||m||1200*e.length),o=C.reduce((a,b)=>a+(E.get(b)?.chunkCount??0),0),{previewGenerationBudgetForTemplate:q}=await Promise.all([c.e(1001),c.e(6482),c.e(9227)]).then(c.bind(c,79227));j=q({template:s,chapters:e,requirement:d.requirement,materialFileCount:C.length,evidenceCount:o,targetWords:n,hasVeryLargeExplicitChapter:e.some(a=>(a.sections||[]).filter(Boolean).length>=30),configuredChapterConcurrency:Number(process.env.DOCUMENT_CHAPTER_CONCURRENCY||0)})}catch{}try{r=(0,q.ze)({templateName:s.name,chapterTitles:s.chapters.map(a=>a.title)})}catch{}return{templateId:a,projectRoleConfigId:v,configName:w?.name,fileDiagnostics:H,promptDiagnostics:M,roleDiagnostics:P,readiness:g,issues:t,strategyPreview:j,referenceStructureSuggestion:r}}let G=new Map,H=Math.max(5e3,Number(process.env.DOCUMENT_TEMPLATE_VALIDATION_CACHE_TTL_MS??3e4));async function I(a,b=(0,h.aY)(),c={}){let d=e.resolve(b),f=D(a),g=(0,h.Yy)(d),i=JSON.stringify({templateId:a,templateVersion:f?.version??0,templateUpdatedAt:f?.updatedAt??0,projectRoot:d,requirement:c.requirement??"",fileCount:g.length,lastFileMtime:g.reduce((a,b)=>Math.max(a,b.mtime),0)}),j=G.get(i);if(j&&Date.now()-j.at<H)return j.result;let k=await F(a,d,c);return G.set(i,{at:Date.now(),result:k}),k}function J(a){if(new Set((0,j.V)().templates.map(a=>a.id)).has(a))throw Error("Configured template cannot be deleted");w(v().filter(b=>b.id!==a))}function K(a){let b=D(a);if(!b)throw Error("Document template not found");let c=Date.now(),d=u({...b,id:`${b.id}-copy-${c}`,name:`${b.name} Copy`,builtIn:!1,version:1,updatedAt:c,changeLog:[{version:1,timestamp:c,summary:`从 ${b.id} v${b.version||1} 复制`}]}),e=v();return e.push(d),w(e),d}function L(a,b){try{return RegExp(b,"iu").test(a)}catch{return a.includes(b)}}function M(a,b){return(function(a){let b=`${a.name} ${a.category} ${a.outputTitle} ${a.description}`;return(0,j.V)().chapterTitleFilters.filter(a=>a.templateMatchers.some(a=>L(b,a)))})(b).some(b=>!!b.minLength&&a.length<b.minLength||!!b.maxLength&&a.length>b.maxLength||b.forbiddenPatterns.some(b=>L(a,b)))}function N(a){return a.projectRoleConfigId||void 0}function O(a){let b=N(a);return b?(0,i.Mu)(b):void 0}function P(a){let b=new Set,c=[];for(let d of a){let a=`${d.roleId}:${d.promptId}`;!d.promptId||!d.roleId||b.has(a)||(b.add(a),c.push(d))}return c}function Q(a){let b=O(a);if(!b)return[];let c=(0,i.XB)("prompt"),d=[];for(let a of[...b.promptRoles].sort((a,b)=>a.order-b.order)){let b=c.find(b=>b.id===a.roleId),e=b?b.resourceIds?.length?b.resourceIds:b.resourceId?[b.resourceId]:[]:[];b&&0!==e.length&&d.push(...e.map(a=>({promptId:a,roleId:b.id})))}return P(d)}},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}}},44533:(a,b,c)=>{c.d(b,{NW:()=>l,Qh:()=>m,VS:()=>q,Yy:()=>p,a2:()=>k,aY:()=>o});var d=c(19898),e=c(87550),f=c.n(e),g=c(33873),h=c(21820),i=c(29021);let j=null;function k(){return g.join(h.homedir(),".customize-agent")}function l(a){return(0,d.getProjectKbPath)(g.resolve(a))}function m(){return j||(j=new d.MultiProjectManager(k())),j}function n(a){let b=g.resolve(a),c=g.resolve(g.join(h.homedir(),".customize-agent"));return!(i.existsSync(g.join(b,"pnpm-workspace.yaml"))&&i.existsSync(g.join(b,"apps","server")))&&(b===c||b.includes(`${g.sep}.customize-agent${g.sep}`)||b.endsWith(`${g.sep}apps${g.sep}server`)||b.endsWith(`${g.sep}apps${g.sep}cli`))}function o(){let a=process.env.CUSTOMIZE_PROJECT_ROOT??process.env.INIT_CWD;if(a&&i.existsSync(a)&&!n(a))return g.resolve(a);let b=function(){let a=g.join(k(),"projects","registry.db");if(!i.existsSync(a))return[];let b=new(f())(a,{readonly:!0});try{return b.prepare("SELECT project_root FROM project_registry ORDER BY last_opened_at DESC").all().map(a=>g.resolve(a.project_root)).filter(a=>!n(a))}finally{b.close()}}();return b.length>0?b[0]:process.env.INIT_CWD&&!n(process.env.INIT_CWD)?process.env.INIT_CWD:g.resolve(process.cwd(),"../..")}function p(a,b={}){let c=new Map;for(let b of function(a){let b=g.join(h.homedir(),".customize-agent","projects",(0,d.computeProjectId)(g.resolve(a)),"kb.db");if(!i.existsSync(b))return[];let c=new d.IndexStateStore(b);try{return c.listRecords().map(a=>({...a,matchedBy:"metadata"}))}finally{c.close()}}(a))c.set(b.relativePath,b);for(let b of function(a){let b=l(a);if(!i.existsSync(b))return[];let c=[],d=a=>{for(let e of i.readdirSync(a,{withFileTypes:!0})){let f=g.join(a,e.name);if(e.isDirectory()){d(f);continue}if(e.name.endsWith(".source.txt"))continue;let h=i.statSync(f),j=g.relative(b,f).split(g.sep).join("/");c.push({relativePath:j,category:j.includes("表格数据/")?"spreadsheet":j.includes("图片素材/")?"image":j.includes("图纸文件/")?"cad":j.includes("文档资料/")?"document":"other",format:g.extname(j).slice(1).toLowerCase()||"text",contentHash:"",fileSize:h.size,mtime:h.mtimeMs,chunkCount:0,collectionName:"",indexedAt:0,lastVerifiedAt:0,status:"disk",matchedBy:"disk"})}};return d(b),c}(a)){let a=c.get(b.relativePath);c.set(b.relativePath,a?{...a,fileSize:b.fileSize,mtime:b.mtime,matchedBy:"metadata"}:b)}return Array.from(c.values()).filter(a=>!b.category||a.category===b.category).sort((a,b)=>b.mtime-a.mtime||a.relativePath.localeCompare(b.relativePath,"zh-CN"))}async function q(a,b={}){let c=(b.query||"").trim(),d=Math.max(1,Math.min(500,b.limit??50)),e=new Map,f=p(a,{category:b.category});for(let a of f)(!c||`${a.relativePath}
18
+ 质量提醒:${a.gateRules.map(a=>a.name).join("、")}`}},14070:(a,b,c)=>{function d(a){let b=a.split(/[,。;:、\s\d()()《》<>【】"“”'‘’\-/\\|,.:;]+/u).filter(Boolean),c=new Set;for(let a of b){let b=a.trim();if(b.length>=2&&c.add(b),b.length>=3)for(let a=0;a<=b.length-2;a++){let d=b.slice(a,a+2);d.length>=2&&!/^[a-zA-Z0-9]+$/u.test(d)&&c.add(d)}}return[...c]}function e(a,b,c=.3){return function(a,b){let c=new Set(d(a)),e=new Set(d(b));if(0===c.size||0===e.size)return 0;let f=0;for(let a of c)if(e.has(a))f+=1;else if(a.length>=2){for(let b of e)if(b.length>=2&&(b.includes(a)||a.includes(b))){f+=.5;break}}return f/Math.max(c.size,1)}(a,b)>=c}c.d(b,{C1:()=>e})},18274:(a,b,c)=>{c.d(b,{AM:()=>e,LT:()=>i,_W:()=>d,aX:()=>h,s2:()=>j,sv:()=>f,yw:()=>g});let d=/(?:\b[A-Z]{1,8}[\w./-]*\d[\w./-]*\b|\b\d+(?:\.\d+)?\s*(?:mm|cm|m|km|㎡|m²|m3|m³|kg|g|t|L|ml|MPa|kPa|℃|%|台|套|个|项|批|次|份|人|小时|分钟|日历天|天|周|月|年|万元|元)\b|\b\d+\s*[×xX]\s*\d+(?:\s*[×xX]\s*\d+)?\b|\b(?:GB|GB\/T|ISO|IEC|IEEE|RFC|API|DB\d*|T\/[A-Z]+)\s*[\w.-]+\b)/giu,e=/\d+(?:\.\d+)?\s*(?:mm|cm|m|km|㎡|m²|m3|m³|kg|g|t|L|ml|MPa|kPa|℃|%|台|套|个|项|批|次|份|人|小时|分钟|日历天|天|周|月|年)|DN\s*\d+|φ\s*\d+|Φ\s*\d+|GB\s*\d+|JGJ\s*\d+/iu,f=/\d|DN|φ|Φ|mm|cm|m²|m3|m³|MPa|kPa|℃|%|GB|JGJ|ISO|IEC|台|套|个|项|批|次|份|人|㎡|日历天|万元|元|型号|规格|数量|单位/iu,g=/\d+(?:\.\d+)?\s*(?:mm|cm|m|km|㎡|m²|m3|m³|kg|g|t|L|ml|MPa|kPa|℃|%|台|套|个|项|批|次|份|人|小时|分钟|日历天|天|周|月|年)|DN\s*\d+|Φ\s*\d+|φ\s*\d+|C\d{2,}|HRB\d+|GB\/?T?\s*[\w.-]+|JGJ\s*[\w.-]+|\d+\s*[×xX]\s*\d+/iu,h=/\d+(?:\.\d+)?\s*(?:m³|m3|m²|㎡|mm|cm|m\/s|m|km|MPa|kN|kN\/m²|kPa|℃|%|d|h|min|MΩ|t|次\/天)|[MC]\d{1,3}(?:\.\d+)?|[<>≤≥]\s*\d+(?:\.\d+)?\s*(?:mm|MPa|%|d)|间距[≤<]?\s*\d+|偏差[≤<]?\s*\d+|坡度\s*\d+(?:\.\d+)?(?::\d+|%)|压实度\s*[≥>]?\s*\d+|坍落度|闭水试验|静载试验|拉拔试验|拉拔检测|探伤|试验压力|锚固长度|搭接长度|保护层厚度|养护时间|饱满度|垂直度|平整度|含水率|(?:防护挑网|安全网|防护网|围挡|警戒(?:区|线|距离)|防护栏杆).{0,12}(?:宽度|高度|距离|范围)[^,。;;]{0,8}\d+(?:\.\d+)?\s*m|(?:宽度|高度|距离|范围)[^,。;;]{0,8}\d+(?:\.\d+)?\s*m.{0,12}(?:防护挑网|安全网|防护网|围挡|警戒|防护栏杆)/giu,i=/\d[A-Z][A-Z0-9a-z]*\b|[A-Z]{1,2}\d{2,3}\b|\d+(?:\.\d+)?\s*(?:kW|kVA|KVA|KW)\b|IP\d{2}/gu,j=/\d+(?:\.\d+)?\s*(?:m²|㎡|m3|m³|mm|cm|m|km|kg|t|MPa|kPa|℃|%|日历天|天|层|台|套|个|项|次|份|人|小时)/giu},22157:(a,b,c)=>{c.d(b,{Jb:()=>h,Kd:()=>v,TP:()=>u,Te:()=>t,V:()=>f,VX:()=>p,W6:()=>j,Ww:()=>q,Xl:()=>l,Z1:()=>g,c6:()=>r,hh:()=>w,jf:()=>y,l$:()=>x,lG:()=>s,tU:()=>o,wq:()=>k});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){let b=/(?:施工)?(?:概况|范围)[::]\s*\S|工程量|作业对象|部位/u.test(a),c=/(?:施工)?(?:流程|工序|顺序)[::]\s*\S/u.test(a)||g(a),d=/(?:施工)?方法[::]\s*\S|工艺参数|验收标准|检测|试验|记录/u.test(a);return b&&c&&d}function i(a){return a.replace(/^\d+(?:\.\d+)*\s*/u,"").replace(/[((][^()()]*[))]/gu,"").replace(/[\s::、。,,;;/|—-]/gu,"")}function j(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}::${i(b[2].trim())}`;if(!g)continue;let h=(d.get(g)||0)+1;d.set(g,h),h>=2&&e.push(b[2].trim())}return e}function k(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}::${i(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 l(a,b,c={}){if(!c.fuzzy){let c=m(a,b,/^###\s+(?:\d+(?:\.\d+)*\s+)?/u);return c||m(a,b,/^#{3,4}\s+(?:\d+(?:\.\d+)*\s+)?/u)}return function(a,b){let c=a.split("\n"),d=n(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=n(c[a]).replace(/\s+/gu,"").toLowerCase();(g===d||g.includes(d)||p(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 m(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 n(a){return a.replace(/^\s*#{2,4}\s*/u,"").replace(/^\s*(?:\d+(?:\.\d+)*|[一二三四五六七八九十]+)(?:[、..]|\s+)\s*/u,"").trim()}function o(a){return n(a).replace(/\s+/gu,"").toLowerCase().replace(/施工(?=方案|流程|方法)/gu,"").replace(/专项(?=方案)/gu,"").replace(/项目|工程|主要|重点|技术/gu,"").replace(/[、,,;;·..//]+/gu,"").replace(/与|及|和|暨/gu,"")}function p(a,b){let c=o(a),d=o(b);return!!c&&!!d&&!(c.length<4)&&!(d.length<4)&&(c===d||c.includes(d)||d.includes(c))}function q(a,b,c){let d=[...new Set(b.filter(Boolean))];if(0===d.length)return a;let e=3===c?/^\s*###\s+/u:4===c?/^\s*####\s+/u:/^\s*#{3,4}\s+/u,f=new Set;return a.split("\n").map(a=>{if(!e.test(a))return a;let b=n(a);if(!b)return a;let c=d.find(a=>!f.has(a)&&p(b,a));if(!c||c===b)return a;let g=/^(\s*#{3,4}\s+)/u.exec(a)?.[1];return g?(f.add(c),`${g}${c}`):a}).join("\n")}function r(a){return(0,d.createHash)("sha1").update(JSON.stringify(a)).digest("hex")}function s(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 t(a){if(a?.aborted)throw Error("用户中止")}function u(a){return`【系统约束——仅指导写作,禁止写入正文,禁止复述本句】${a}`}let v=["评标纪律","投标纪律","行贿","打招呼","递条子","廉洁承诺","廉洁自律","串标","围标","弄虚作假","干扰评标"];function w(a){return!!(v.some(b=>a.includes(b))||a.includes("廉洁从业"))||/纪律|廉洁/u.test(a)&&/投标|评标|行贿|串标|围标|弄虚作假/u.test(a)}async function x(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 y{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()}}}},23500:(a,b,c)=>{c.d(b,{bj:()=>B,N6:()=>N,h0:()=>J,bV:()=>K,QJ:()=>D,jG:()=>C,dU:()=>A,Bh:()=>E,zY:()=>Q,xm:()=>F,J5:()=>I,C1:()=>M});var d=c(73024),e=c(76760),f=c(48161),g=c(77598),h=c(44533),i=c(25840),j=c(8753),k=c(6444),l=c(85441),m=c(92808),n=c(56942),o=c(2773),p=c(78217),q=c(5726);function r(){let a=e.join(f.homedir(),".customize-agent");return d.mkdirSync(a,{recursive:!0}),a}function s(){return e.join(r(),"document-templates.json")}function t(a){let{version:b,updatedAt:c,changeLog:d,...e}=a;return(0,g.createHash)("sha256").update(function a(b){return Array.isArray(b)?`[${b.map(a).join(",")}]`:b&&"object"==typeof b?`{${Object.keys(b).sort().map(c=>`${JSON.stringify(c)}:${a(b[c])}`).join(",")}}`:JSON.stringify(b)}(e)).digest("hex")}function u(a){return{...a,id:a.id.replace(/[^a-zA-Z0-9_-]/gu,"-").slice(0,80)||`template-${Date.now()}`,name:a.name||"未命名模板",description:a.description||"",category:a.category||"自定义",outputTitle:a.outputTitle||a.name||"文档",version:Number.isFinite(a.version)&&a.version>0?Math.floor(a.version):1,updatedAt:Number.isFinite(a.updatedAt)?a.updatedAt:Date.now(),changeLog:Array.isArray(a.changeLog)?a.changeLog.filter(a=>a&&"object"==typeof a&&Number.isFinite(a.version)&&"string"==typeof a.summary).slice(0,50):[],projectRoleConfigId:a.projectRoleConfigId||void 0,chapters:Array.isArray(a.chapters)&&a.chapters.length>0?a.chapters.map((a,b)=>({id:(a.id||`chapter-${b+1}`).replace(/[^a-zA-Z0-9_-]/gu,"-").slice(0,80),title:a.title||`第 ${b+1} 章`,purpose:a.purpose||"",queries:Array.isArray(a.queries)?a.queries.filter(Boolean):[],requiredFacts:Array.isArray(a.requiredFacts)?a.requiredFacts.filter(Boolean):[],sections:Array.isArray(a.sections)?a.sections.filter(Boolean):[],tableSections:Array.isArray(a.tableSections)?a.tableSections.filter(Boolean):[],tableRequirements:Array.isArray(a.tableRequirements)?a.tableRequirements.filter(Boolean):[],tablePlans:Array.isArray(a.tablePlans)?a.tablePlans:[],pinnedEvidenceFilePaths:Array.isArray(a.pinnedEvidenceFilePaths)?a.pinnedEvidenceFilePaths.filter(Boolean):[]})):[{id:"document",title:a.outputTitle||a.name||"文档",purpose:a.description||"",queries:[],requiredFacts:[]}],exportSettings:a.exportSettings,generationSettings:a.generationSettings,promptIds:Array.isArray(a.promptIds)?a.promptIds.filter(Boolean):[],projectBindings:Array.isArray(a.projectBindings)?a.projectBindings.filter(a=>a.materialRootPath).map(a=>({materialRootPath:a.materialRootPath.replace(/^\/+|\/+$/gu,"")})):(0,o.qp)(a),promptBindings:Array.isArray(a.promptBindings)?a.promptBindings.filter(a=>a.promptId&&a.roleId):Array.isArray(a.promptIds)?a.promptIds.filter(Boolean).map(a=>({promptId:a,roleId:"chapter_generation"})):[],builtIn:!1}}function v(){try{let a=s();if(!d.existsSync(a))return[];let b=JSON.parse(d.readFileSync(a,"utf-8"));if(!Array.isArray(b))return d.renameSync(a,`${a}.corrupt-${Date.now()}`),[];return b.map(u)}catch{try{let a=s();d.existsSync(a)&&d.renameSync(a,`${a}.corrupt-${Date.now()}`)}catch{}return[]}}function w(a){d.writeFileSync(s(),JSON.stringify(a.map(u),null,2),"utf-8")}function x(a){return(0,g.createHash)("sha256").update(a).digest("hex").slice(0,12)}function y(a){return a.replace(/\s+/gu," ").trim().slice(0,160)}function z(a){let b=function(){try{let a=JSON.parse(d.readFileSync(e.join(r(),"prompts.json"),"utf-8"));return Array.isArray(a.customPrompts)?a.customPrompts:[]}catch{return[]}}();if(a.startsWith("custom:")){let c=b.find(b=>b.id===a);return c?{id:a,name:c.name,content:c.content,source:"custom"}:void 0}if(a.startsWith("file:")){let b=a.slice(5);if(d.existsSync(b))return{id:a,name:e.basename(e.dirname(b))||b,content:d.readFileSync(b,"utf-8"),source:"file"}}}function A(a=[]){if(0===a.length)return[];let b=[];for(let c of a){let a=z(c.promptId);a&&b.push({...a,roleId:c.roleId,contentHash:x(a.content),contentPreview:y(a.content)})}return b}function B(a){let b=O(a),c=(0,i.XB)("prompt"),d=Q(a),e=[],f=[];if(b)for(let a of b.promptRoles){let b=c.find(b=>b.id===a.roleId);if(!b){e.push(a.roleId);continue}0===(b.resourceIds?.length?b.resourceIds:b.resourceId?[b.resourceId]:[]).length&&f.push(a.roleId)}let g=P(d),h=[];for(let a of g){let d=z(a.promptId);if(!d)continue;let e=c.find(b=>b.id===a.roleId),f=b?.promptRoles.find(b=>b.roleId===a.roleId),g=e?.executionType||function(a){var b;return b=a,/extract|extraction|抽取|清单|图纸|品牌/u.test(b)?"fact_extraction":/validation|校验|审查|审核/u.test(b)?"validation":/format|排版/u.test(b)?"formatting":/writer|method|schedule|quality|resource|safety|dangerous|施工|进度|质量|资源|安全|危大/u.test(b)?"chapter_generation":"reference"}(a.roleId),i=function(a,b,c=""){let d=`${a} ${b} ${c}`;return/extract|extraction|抽取|清单|图纸|品牌|识别/u.test(d)?"extraction":/format|排版/u.test(d)?"formatting":/总控|writer|施工组织设计总控|写作主控/u.test(d)?"writer":/chapter_generation|method|schedule|quality|resource|safety|dangerous|施工|进度|质量|资源|安全|危大/u.test(d)?"chapter":"reference"}(a.roleId,g,d.name),j=`projectRole:${b?.id||"unknown"}:${a.roleId}:order=${f?.order??0}`;h.push({...d,roleId:a.roleId,contentHash:x(d.content),contentPreview:y(d.content),executionType:g,category:i,bindingSource:j,roleConfigId:b?.id,roleName:e?.name,order:f?.order})}return{bindings:g,prompts:h,writerPrompts:h.filter(a=>"writer"===a.category),chapterPrompts:h.filter(a=>"chapter"===a.category),extractionPrompts:h.filter(a=>"extraction"===a.category),formattingPrompts:h.filter(a=>"formatting"===a.category),referencePrompts:h.filter(a=>"reference"===a.category),unresolvedRoles:[...new Set(e)],missingResourceRoles:[...new Set(f)]}}function C(){let a=(0,j.V)().templates,b=v().filter(b=>!a.some(a=>a.id===b.id));return[...a,...b]}function D(a){return C().find(b=>b.id===a)}function E(a){let b,c,d=u(a),e=v().find(a=>a.id===d.id),f=Date.now();if(e&&t(e)!==t(d)){b=(e.version||0)+1;let a=d.chapters.map(a=>a.title).join("、");c=[{version:b,timestamp:f,summary:a?`章节结构调整:${a.slice(0,80)}${a.length>80?"…":""}`:"模版内容已更新"},...e.changeLog||[]].slice(0,50)}else e?(b=e.version||1,c=e.changeLog||[]):(b=1,c=[{version:1,timestamp:f,summary:"创建模版"}]);let g={...d,version:b,updatedAt:f,changeLog:c},h=v().filter(a=>a.id!==d.id);return h.push(g),w(h),g}async function F(a,b=(0,h.aY)(),d={}){let f,g,j,r,s=D(a),t=[];if(!s)return{issues:[{level:"error",message:"文档模板不存在或已删除"}],fileDiagnostics:[],promptDiagnostics:[],roleDiagnostics:[],readiness:void 0,strategyPreview:void 0,config:void 0};let u=(0,i.XB)("prompt"),v=N(s),w=O(s);v||t.push({level:"error",message:"模板未绑定项目角色配置,且未匹配到自动专业角色配置"}),v&&!w&&t.push({level:"error",message:`项目角色配置不存在或已删除:${v}`}),s.promptIds?.length&&t.push({level:"warning",message:"模板存在旧 promptIds 字段残留,该字段已不参与生成,请清理模板历史数据。"}),s.promptBindings?.length&&t.push({level:"warning",message:"模板存在旧 promptBindings 字段残留,该字段已不参与生成,请清理模板历史数据。"});let x=Q(s),y=(0,o.qp)(s);w&&0===w.promptRoles.length&&t.push({level:"error",message:"项目角色配置未配置提示词角色。"}),w&&w.promptRoles.length>0&&0===x.length&&t.push({level:"error",message:"项目角色配置中的提示词角色未绑定任何有效提示词资源。"});let z=e.resolve(b),B=(0,h.Yy)(z),C=function(a,b){if(0===a.length)return[];let c=new Set(b.map(a=>a.relativePath)),d=[],e=new Set;for(let f of a){let a=f.materialRootPath.replace(/^\/+|\/+$/gu,"");for(let f of c.has(a)?[a]:b.filter(b=>{var c;return b.relativePath.startsWith(`${a}/`)&&"disk"!==(c=b).status&&"error"!==c.status&&Number(c.indexedAt||0)>0&&Number(c.chunkCount||0)>0}).map(a=>a.relativePath))e.has(f)||(e.add(f),d.push(f))}return d}(y,B);if(0===y.length?t.push({level:"error",message:"模板未绑定项目资料包,请先选择需要参与生成的项目文件夹。"}):0===C.length&&t.push({level:"error",message:"模板绑定的项目资料包不存在或没有可用索引文件,请重新选择项目资料包。"}),s&&(f=(0,l.P)(z,{requirement:d.requirement,boundFilePaths:C}),0===y.length&&!f.source.ambiguous&&f.source.selectedFiles>0)){let a=t.findIndex(a=>"error"===a.level&&"模板未绑定项目资料包,请先选择需要参与生成的项目文件夹。"===a.message);a>=0&&t.splice(a,1)}let E=new Map(B.map(a=>[a.relativePath,a])),G=[],H=C.map(a=>{let b=E.get(a);return b||t.push({level:"error",message:`知识库文件不存在:${a}`}),b&&("disk"===b.status||0===b.indexedAt)&&G.push({level:"warning",message:`知识库文件存在但尚未完成索引:${a}`}),b?.status==="error"&&t.push({level:"warning",message:`知识库文件索引失败:${a}${b.errorMessage?`,${b.errorMessage}`:""}`}),b&&0===b.chunkCount&&t.push({level:"warning",message:`知识库文件暂无可检索内容切片:${a}`}),{filePath:a,roleId:"project_material",roleName:"项目资料包",exists:!!b,indexed:!!(b&&b.indexedAt>0&&"disk"!==b.status),chunkCount:b?.chunkCount??0,vectorReady:!!(b&&b.chunkCount>0)}}),I=H.filter(a=>a.exists).length,J=H.filter(a=>a.exists&&!a.indexed).length;I>0&&J===I?t.push({level:"error",message:`模板绑定的项目资料包(${I} 份文件)均尚未完成解析入库,请等待后台索引完成后再运行模板`}):t.push(...G);let K=A(x),L=new Set(w?.promptRoles.map(a=>a.roleId)||[]);for(let a of w?.promptRoles||[]){let b=u.find(b=>b.id===a.roleId);if(!b){t.push({level:"error",message:`提示词角色不存在:${a.roleId}`});continue}0===(b.resourceIds?.length?b.resourceIds:b.resourceId?[b.resourceId]:[]).length&&t.push({level:"error",message:`提示词角色未绑定资源:${b.name}`})}let M=x.map(a=>{let b=u.find(b=>b.id===a.roleId),c=K.find(b=>b.id===a.promptId);return b||t.push({level:"error",message:`提示词角色不存在:${a.roleId}`}),L.has(a.roleId)||t.push({level:"error",message:`提示词绑定不属于当前项目角色配置:${a.roleId}`}),c||t.push({level:"error",message:`提示词不存在:${a.promptId}`}),c&&!c.content.trim()&&t.push({level:"warning",message:`提示词为空:${c.name}`}),{...a,roleName:b?.name,promptTitle:c?.name,promptSource:c?.source,contentLength:c?.content.length??0,contentHash:c?.contentHash,contentPreview:c?.contentPreview,exists:!!c}}),P=(w?.promptRoles||[]).map(a=>{let b=u.find(b=>b.id===a.roleId),c=b?b.resourceIds?.length?b.resourceIds:b.resourceId?[b.resourceId]:[]:[],d=x.filter(b=>b.roleId===a.roleId).map(a=>a.promptId),e=b?0===c.length?"missing_resource":0===d.length?"missing_prompt":"ok":"role_missing";return{roleId:a.roleId,roleName:b?.name,order:a.order,resourceIds:c,boundPromptIds:d,status:e}});if(K.length>1)try{let{detectPromptRuleConflicts:a}=await c.e(1001).then(c.bind(c,71001));for(let b of a(K.map(a=>({promptId:a.id,name:a.name,roleId:a.roleId,content:a.content}))))t.push({level:b.level,message:`提示词规则冲突:${b.message}`})}catch{}if(s){let a=f||(0,l.P)(z,{requirement:d.requirement,boundFilePaths:C}),b=function(a,b){let c=function(a,b){let c=[a.name,a.category,a.description,a.outputTitle,...a.chapters.flatMap(a=>[a.title,a.purpose])].join("\n"),d=new Set(["project_overview","scope_description"]);return/需求|规则|响应|方案|实施|专项|安全|质量|进度|合规|施工组织|技术标/iu.test(c)&&["requirement_document","structured_data"].forEach(a=>d.add(a)),(/安全|质量|进度|工期|文明|环保|验收/iu.test(c)||b.materialInventory.schedule_quality_safety.length>0)&&d.add("schedule_quality_safety"),(/设计|图纸|平面|立面|剖面|做法/iu.test(c)||b.materialInventory.design_specification.length>0)&&d.add("design_specification"),(/风险|重点|难点|约束|现场|危大/iu.test(c)||b.materialInventory.risk_constraints.length>0)&&d.add("risk_constraints"),d}(a,b);return[...new Set([...function(a){let b=[a.name,a.description,a.outputTitle,...a.chapters.flatMap(a=>[a.title,a.purpose,...a.requiredFacts||[],...a.queries||[]])].join("\n"),c=new Set((0,m.t0)(b,m.hW));return c.add("project_overview"),c.add("scope_description"),[...c]}(a),...c])].map(a=>{let d=b.materialInventory[a]||[],e=c.has(a),f=d.length>0,g=f&&d.length<(e?2:1);return{role:a,required:e,satisfied:f,weak:g,evidenceCount:d.length,filePaths:d.map(a=>a.filePath),reason:f?`已匹配 ${d.length} 个资料文件`:e?"必需资料角色缺失":"可选资料角色缺失"}})}(s,a);for(let c of(g=(0,n.$)({template:s,spec:(0,k.x)(s).spec,summary:a,resolvedRoles:b})).blockingIssues)t.push({level:"error",message:`生成准备度不足:${c}`});for(let a of g.warnings)t.push({level:"warning",message:a})}try{let a=(0,k.x)(s).spec,{effectiveTemplateChapters:b}=await Promise.resolve().then(c.bind(c,70208)),e=b(s,a),f=s.generationSettings||s.exportSettings,g=(0,p.q6)(s.exportSettings||s.generationSettings),h=(0,p.py)(d.requirement||""),i=f?.targetPages?.target||f?.targetPages?.min,l=h.targetChars||(h.targetPages?h.targetPages*g:void 0)||(i?i*g:void 0),m=e.reduce((b,c)=>b+Math.max(a.chapterRules.find(a=>a.id===c.id||a.title===c.title)?.minWords||0,a.dynamicChapterRule.minWordsPerChapter||0),0),n=Math.round(l||m||1200*e.length),o=C.reduce((a,b)=>a+(E.get(b)?.chunkCount??0),0),{previewGenerationBudgetForTemplate:q}=await Promise.all([c.e(1001),c.e(6482),c.e(9227)]).then(c.bind(c,79227));j=q({template:s,chapters:e,requirement:d.requirement,materialFileCount:C.length,evidenceCount:o,targetWords:n,hasVeryLargeExplicitChapter:e.some(a=>(a.sections||[]).filter(Boolean).length>=30),configuredChapterConcurrency:Number(process.env.DOCUMENT_CHAPTER_CONCURRENCY||0)})}catch{}try{r=(0,q.ze)({templateName:s.name,chapterTitles:s.chapters.map(a=>a.title)})}catch{}return{templateId:a,projectRoleConfigId:v,configName:w?.name,fileDiagnostics:H,promptDiagnostics:M,roleDiagnostics:P,readiness:g,issues:t,strategyPreview:j,referenceStructureSuggestion:r}}let G=new Map,H=Math.max(5e3,Number(process.env.DOCUMENT_TEMPLATE_VALIDATION_CACHE_TTL_MS??3e4));async function I(a,b=(0,h.aY)(),c={}){let d=e.resolve(b),f=D(a),g=(0,h.Yy)(d),i=JSON.stringify({templateId:a,templateVersion:f?.version??0,templateUpdatedAt:f?.updatedAt??0,projectRoot:d,requirement:c.requirement??"",fileCount:g.length,lastFileMtime:g.reduce((a,b)=>Math.max(a,b.mtime),0)}),j=G.get(i);if(j&&Date.now()-j.at<H)return j.result;let k=await F(a,d,c);return G.set(i,{at:Date.now(),result:k}),k}function J(a){if(new Set((0,j.V)().templates.map(a=>a.id)).has(a))throw Error("Configured template cannot be deleted");w(v().filter(b=>b.id!==a))}function K(a){let b=D(a);if(!b)throw Error("Document template not found");let c=Date.now(),d=u({...b,id:`${b.id}-copy-${c}`,name:`${b.name} Copy`,builtIn:!1,version:1,updatedAt:c,changeLog:[{version:1,timestamp:c,summary:`从 ${b.id} v${b.version||1} 复制`}]}),e=v();return e.push(d),w(e),d}function L(a,b){try{return RegExp(b,"iu").test(a)}catch{return a.includes(b)}}function M(a,b){return(function(a){let b=`${a.name} ${a.category} ${a.outputTitle} ${a.description}`;return(0,j.V)().chapterTitleFilters.filter(a=>a.templateMatchers.some(a=>L(b,a)))})(b).some(b=>!!b.minLength&&a.length<b.minLength||!!b.maxLength&&a.length>b.maxLength||b.forbiddenPatterns.some(b=>L(a,b)))}function N(a){return a.projectRoleConfigId||void 0}function O(a){let b=N(a);return b?(0,i.Mu)(b):void 0}function P(a){let b=new Set,c=[];for(let d of a){let a=`${d.roleId}:${d.promptId}`;!d.promptId||!d.roleId||b.has(a)||(b.add(a),c.push(d))}return c}function Q(a){let b=O(a);if(!b)return[];let c=(0,i.XB)("prompt"),d=[];for(let a of[...b.promptRoles].sort((a,b)=>a.order-b.order)){let b=c.find(b=>b.id===a.roleId),e=b?b.resourceIds?.length?b.resourceIds:b.resourceId?[b.resourceId]:[]:[];b&&0!==e.length&&d.push(...e.map(a=>({promptId:a,roleId:b.id})))}return P(d)}},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}}},44533:(a,b,c)=>{c.d(b,{NW:()=>l,Qh:()=>m,VS:()=>q,Yy:()=>p,a2:()=>k,aY:()=>o});var d=c(19898),e=c(87550),f=c.n(e),g=c(33873),h=c(21820),i=c(29021);let j=null;function k(){return g.join(h.homedir(),".customize-agent")}function l(a){return(0,d.getProjectKbPath)(g.resolve(a))}function m(){return j||(j=new d.MultiProjectManager(k())),j}function n(a){let b=g.resolve(a),c=g.resolve(g.join(h.homedir(),".customize-agent"));return!(i.existsSync(g.join(b,"pnpm-workspace.yaml"))&&i.existsSync(g.join(b,"apps","server")))&&(b===c||b.includes(`${g.sep}.customize-agent${g.sep}`)||b.endsWith(`${g.sep}apps${g.sep}server`)||b.endsWith(`${g.sep}apps${g.sep}cli`))}function o(){let a=process.env.CUSTOMIZE_PROJECT_ROOT??process.env.INIT_CWD;if(a&&i.existsSync(a)&&!n(a))return g.resolve(a);let b=function(){let a=g.join(k(),"projects","registry.db");if(!i.existsSync(a))return[];let b=new(f())(a,{readonly:!0});try{return b.prepare("SELECT project_root FROM project_registry ORDER BY last_opened_at DESC").all().map(a=>g.resolve(a.project_root)).filter(a=>!n(a))}finally{b.close()}}();return b.length>0?b[0]:process.env.INIT_CWD&&!n(process.env.INIT_CWD)?process.env.INIT_CWD:g.resolve(process.cwd(),"../..")}function p(a,b={}){let c=new Map;for(let b of function(a){let b=g.join(h.homedir(),".customize-agent","projects",(0,d.computeProjectId)(g.resolve(a)),"kb.db");if(!i.existsSync(b))return[];let c=new d.IndexStateStore(b);try{return c.listRecords().map(a=>({...a,matchedBy:"metadata"}))}finally{c.close()}}(a))c.set(b.relativePath,b);for(let b of function(a){let b=l(a);if(!i.existsSync(b))return[];let c=[],d=a=>{for(let e of i.readdirSync(a,{withFileTypes:!0})){let f=g.join(a,e.name);if(e.isDirectory()){d(f);continue}if(e.name.endsWith(".source.txt"))continue;let h=i.statSync(f),j=g.relative(b,f).split(g.sep).join("/");c.push({relativePath:j,category:j.includes("表格数据/")?"spreadsheet":j.includes("图片素材/")?"image":j.includes("图纸文件/")?"cad":j.includes("文档资料/")?"document":"other",format:g.extname(j).slice(1).toLowerCase()||"text",contentHash:"",fileSize:h.size,mtime:h.mtimeMs,chunkCount:0,collectionName:"",indexedAt:0,lastVerifiedAt:0,status:"disk",matchedBy:"disk"})}};return d(b),c}(a)){let a=c.get(b.relativePath);c.set(b.relativePath,a?{...a,fileSize:b.fileSize,mtime:b.mtime,matchedBy:"metadata"}:b)}return Array.from(c.values()).filter(a=>!b.category||a.category===b.category).sort((a,b)=>b.mtime-a.mtime||a.relativePath.localeCompare(b.relativePath,"zh-CN"))}async function q(a,b={}){let c=(b.query||"").trim(),d=Math.max(1,Math.min(500,b.limit??50)),e=new Map,f=p(a,{category:b.category});for(let a of f)(!c||`${a.relativePath}
19
19
  ${a.category}
20
20
  ${a.format}
21
21
  ${a.status}`.toLowerCase().includes(c.toLowerCase()))&&e.set(a.relativePath,{...a,matchedBy:c?"path":a.matchedBy});if(c&&!1!==b.includeContent)try{for(let b of(await m().search(a,c,{limit:Math.max(20,d)})).results){let a=b.filePath,c=e.get(a)||f.find(b=>b.relativePath===a);e.set(a,{...c||{relativePath:a,category:"content",format:"knowledge",fileSize:0,mtime:0,chunkCount:0,indexedAt:0,lastVerifiedAt:0,status:"active"},matchedBy:"content",score:b.score})}}catch{}let g=Array.from(e.values()).sort((a,b)=>{let c=a=>"content"===a.matchedBy?3:"path"===a.matchedBy?2:+("metadata"===a.matchedBy);return c(b)-c(a)||(b.score??0)-(a.score??0)||b.mtime-a.mtime||a.relativePath.localeCompare(b.relativePath,"zh-CN")});return{files:g.slice(0,d),total:g.length}}},51144:(a,b,c)=>{function d(a,b,c,e="items"){let f=c.maxItems??Number.MAX_SAFE_INTEGER,g=c.maxChars??Number.MAX_SAFE_INTEGER,h=c.charFn??(a=>JSON.stringify(a).length),i=a.map(a=>({item:a,score:b(a)}));i.sort((a,b)=>b.score-a.score);let j=[],k=[],l=0;for(let{item:a}of i){let b=h(a);j.length<f&&l+b<=g?(j.push(a),l+=b):k.push(a)}let m=[];if(k.length>0){for(let a of(m.push(`[selection] ${e}: 预算 ${f}项/${g}字符 → 选中 ${j.length}项(${l}字符),丢弃 ${k.length}项`),k.slice(0,10))){let b="string"==typeof a?a.slice(0,80):JSON.stringify(a).slice(0,80);m.push(` - 丢弃: ${b}`)}k.length>10&&m.push(` ... 及其他 ${k.length-10} 项`)}return{selected:j,dropped:k,droppedLog:m}}function e(a){let b=0,c=a.length;return 0===c?0:(b+=3*(a.match(/\d+(?:\.\d+)?/gu)||[]).length,/m[23²³]?|mm|cm|km|t|kg|台|套|个|项|批|次|份|人|日历天|天|月|万元|元|%|MPa|kPa|kN|℃/iu.test(a)&&(b+=2),/GB|JGJ|ISO|CJJ|CECS|DL|YB|SH|HG|SY|NB/iu.test(a)&&(b+=3),/验收|质量|安全|工期|进度|成本|风险|危大|重点|难点|关键|控制|标准|规范|设计|施工|材料|设备/u.test(a)&&(b+=1),c<20&&(b-=1),/项目名称|工程名称|招标人|建设地点|计划工期|质量标准|合同估算/u.test(a)&&(b+=2),b)}function f(a){let b=0,c=`${a.key||""}${a.fieldName||""}${a.fieldId||""}`,d="string"==typeof a.value?a.value:"number"==typeof a.value?String(a.value):"";return a.required&&(b+=10),/\d/u.test(d)&&(b+=5),/项目名称|工程名称|项目编号|招标人|建设单位|发包人|建设地点|建设规模|招标范围|施工范围|计划工期|合同工期|质量标准|合同估算|投资估算|最高投标限价/u.test(c)&&(b+=4),/m[23²³]?|mm|cm|km|t|kg|台|套|个|万元|元|%|MPa|日历天/u.test(d)&&(b+=3),/招标文件|招标公告|投标人须知|前附表/u.test(a.fieldId||"")&&(b+=2),b}c.d(b,{Cr:()=>d,Ox:()=>e,rF:()=>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,""))}},56942:(a,b,c)=>{c.d(b,{$:()=>g,R:()=>h});var d=c(92808);function e(a){return[...new Set(a.filter(Boolean))]}function f(a){let b=(0,d.t0)(a,d.hW);return b.length>0?b:["project_overview"]}function g(a){var b,c,d;let g=a.resolvedRoles.filter(a=>a.required&&!a.satisfied).map(a=>a.role),h=a.resolvedRoles.filter(a=>a.weak).map(a=>a.role),i=(b=a.template,c=a.spec,d=a.summary,b.chapters.map(a=>{let b=function(a,b){let c=b.chapterRules.find(b=>b.id===a.id||b.title===a.title),d=(c?.requiredFactIds||[]).map(a=>b.factFields.find(b=>b.id===a)?.name).filter(Boolean);return e([...a.requiredFacts||[],...d])}(a,c),g=e([...f([a.title,a.purpose,...a.queries||[],...a.sections||[]].join("\n")),...b.flatMap(a=>f(a))]),h=g.filter(a=>(d.materialInventory[a]||[]).length>0),i=h.reduce((a,b)=>a+(d.materialInventory[b]||[]).length,0),j=b.filter(a=>f(a).some(a=>h.includes(a))),k=b.filter(a=>!j.includes(a));return{chapterId:a.id,title:a.title,requiredFacts:b,coveredFacts:j,missingFacts:k,requiredRoles:g,satisfiedRoles:h,evidenceCount:i}})),j=[],k=[];0===a.template.chapters.length&&k.push("模板未配置章节,建议通过模板章节或显式 OUTLINE 提供文档结构"),a.template.chapters.some(a=>!a.purpose&&(!a.queries||0===a.queries.length)&&(!a.requiredFacts||0===a.requiredFacts.length))&&k.push("部分模板章节缺少 purpose、queries 或 requiredFacts,生成质量可能不稳定"),a.summary.source.ambiguous&&j.push(a.summary.source.selectionReason),a.summary.fingerprint.confidence<.34&&k.push("材料指纹置信度较低,建议绑定明确的材料文件"),0===a.summary.source.selectedFiles&&j.push("未绑定可用项目资料文件,无法支撑文档生成"),g.length>0&&0===a.summary.source.selectedFiles&&k.push("模板未绑定可用项目资料文件,请先绑定参与生成的资料"),h.length>0&&0===a.summary.source.selectedFiles&&k.push("绑定资料证据较弱,请确认资料已完成索引");let l=i.filter(a=>0===a.evidenceCount);l.length>0&&k.push(`章节级证据覆盖较弱:${l.slice(0,5).map(a=>a.title).join("、")}`);let m=a.summary.coverage.satisfiedRoles,n=a.resolvedRoles.filter(a=>!a.required&&!a.satisfied).map(a=>a.role),o=[`资料范围:${a.summary.source.selectionReason},可用文件 ${a.summary.source.selectedFiles}/${a.summary.source.totalFiles} 份`,`已识别资料类型:${m.join("、")||"无"}`,a.summary.coverage.missingRoles.length?`待补充必需资料类型:${a.summary.coverage.missingRoles.join("、")}`:"必需资料类型已满足",g.length?`模板强相关资料角色缺失:${g.join("、")}`:"模板强相关资料角色已满足",n.length?`可选资料角色未识别:${n.join("、")}`:"",h.length?`证据较弱资料角色:${h.join("、")}`:""].filter(Boolean);return{ready:0===j.length,missingRoles:g,weakRoles:h,diagnostics:o,chapterDiagnostics:i,blockingIssues:j,warnings:k}}function h(a,b={}){let c=a.chapterDiagnostics.filter(a=>0===a.evidenceCount||a.missingFacts.length>0).slice(0,8).map(a=>`${a.title}:证据 ${a.evidenceCount} 条${a.missingFacts.length?`,缺失 ${a.missingFacts.slice(0,6).join("、")}`:""}`);return b.publicSafe?["## 生成事实使用边界",c.length?`章节证据风险:
@@ -23,10 +23,8 @@ ${c.join("\n")}`:"","资料不足的事实不得编造;仅施工组织、计
23
23
  ${c.join("\n")}`:""].filter(Boolean).join("\n")}},58965:(a,b,c)=>{c.d(b,{$m:()=>f,VX:()=>d,tK:()=>e});let d=/\b(?:TDbPipe|TDbPipeValve|TDbPipeFitting|TDbWellh|AcDb\w+|Dwg\w+|Polyline|Hatch|Layer|BlockReference)\b/giu,e=/[\w\u4e00-\u9fa5()()\-—_+\s]+\.(?:pdf|dwg|docx?|xlsx?|xls|csv|png|jpe?g|webp)\b/giu,f="[零〇一二三四五六七八九十百千万两]+"},61373:(a,b,c)=>{c.d(b,{rd:()=>N,KX:()=>O,kt:()=>D,K7:()=>F,V3:()=>ar,cf:()=>X,p8:()=>Y,y4:()=>S,r4:()=>Z,rs:()=>aq,BJ:()=>L,Re:()=>y,z1:()=>C,wi:()=>t,bR:()=>$,UG:()=>ao,CK:()=>am,Ed:()=>an,Bl:()=>V,FD:()=>i,kT:()=>M,nP:()=>K,uv:()=>J,bx:()=>G,dh:()=>_,b_:()=>R});var d=c(58965),e=c(22157),f=c(70208),g=c(98632),h=c(41991);function i(a,b){return b?a.replace(/^!\[[^\]]*(?:图纸|drawing|cad|地图|平面|剖面|立面)[^\]]*\]\([^)]*\)\s*$/gimu,"").replace(/\n{3,}/gu,"\n\n"):a}let j=/^.*(?:知识库证据|知识库已确认事实|资料类型|提示词角色|后台自动规范|规范包|事实字段|资料未提供|未检索到|待确认事项|证据来源|来源清单|校验结果|修复任务包|修复类型|修复对象|输出要求|当前项目绑定资料|已召回证据|证据边界|可审查草稿|Reviewer|Repairer).*$(?:\s)?|^.*本节围绕.+确保各项措施与本工程实施条件相匹配。?\s*$(?:\s)?|^.*建立施工准备、过程控制、检查验收和资料归档要求.*$(?:\s)?|^.*形成责任明确、过程可控、资料完整的管理闭环。?\s*$(?:\s)?|^.*确保现场管理要求与施工进度、资源组织和验收节点同步推进。?\s*$(?:\s)?|^\s*(?:管理闭环|责任明确、过程可控、资料完整|与本工程实施条件相匹配)[。;;]?\s*$(?:\s)?/gmu,k=/^\s*(?:#{1,6}\s*)?(?:PDF\s*第\s*\d+\s*页|rule\b|文件[::]|片段[::]|来源[::]).*$/gimu,l=/^\s*(?:[│┃┆┊┌┐└┘├┤┬┴┼─━╭╮╰╯]|[↓↑→←⇒⇨➡])+\s*$/gmu,m=/^#{2,6}\s+(?:\d+(?:\.\d+)*\s*)?(?:[-—–]\s*)?(?:判断|判定|识别|确认)?是否(?:涉及|涉|需要|适用)|^#{2,6}\s+(?:\d+(?:\.\d+)*\s*)?(?:[-—–]\s*)?(?:如|若|如果)(?:涉及|不涉及|适用|不适用)|^#{2,6}\s+.*(?:根据|结合).{0,12}(?:实际情况|项目情况|资料情况).{0,8}(?:判断|确定|编写|生成)|^#{2,6}\s+.*(?:按需(?:生成|编写)|视情况|判断后|生成要求|编写要求|说明要求|注意事项)\s*$/gmu,n=/^(?:\d+(?:\.\d+)*\s*)?(?:[-—–]\s*)?(?:(?:判断|判定|识别|确认)?是否(?:涉及|涉|需要|适用).*|(?:如|若|如果)(?:涉及|不涉及|适用|不适用).*|.*(?:根据|结合).{0,12}(?:实际情况|项目情况|资料情况).{0,8}(?:判断|确定|编写|生成).*|.*(?:按需(?:生成|编写)|视情况|判断后|生成要求|编写要求|说明要求|注意事项))\s*$/u,o=/注意事项|如何|怎么写|按需|视情况|是否/u,p=["如何编写施工方案的写作说明标题","根据项目情况判断的注意事项标题","按需生成的编写要求与说明标题"],q=["危大工程专项施工方案与安全措施","质量验收标准与检测要求","成品保护与移交管理措施"];async function r(a){return(0,h.A)({prototypes:[...p],negativePrototypes:[...q],embedDocuments:a})}function s(a){let b=a.replace(/^#{1,6}\s+/u,"").replace(/^\s*\d+(?:\.\d+)*(?:[..、]|\s)+/u,"").replace(/^第[一二三四五六七八九十百千万\d]+[章节篇部分]\s*/u,"").trim(),c=(0,f.GQ)(b);return n.test(b)||n.test(c)||(0,f.mq)(b)||(0,f.mq)(c)}function t(a){return a.replace(/PDF\s*第\s*\d+(?:\s*[-—至到~~]\s*\d+)?\s*页/giu,"相关资料").replace(/PDF\s*第(?![ \t]*[0-90-9])/giu,"").replace(/第\s*\d+\s*页\s*(?:\/|共)\s*\d+\s*页/gu,"").replace(/第\s*\d+\s*(?:[-—至到~~]\s*\d+)?\s*页/gu,"相关资料").replace(/(装饰工程|土建工程|加固工程|给排水工程|电气工程|智能化工程|消防工程|弱电智能化工程|室外道排工程|建筑结构加固工程)\s*(?:(?:施工)?图纸|资料|文件)?\s*[((]?\s*(?:(?:共|多达|约|合计)\s*)?\d+\s*页\s*[))]?/gu,"$1施工图纸").replace(/\d+\s*页\s*(装饰|土建|加固|给排水|电气|智能化|消防|弱电智能化|室外道排|建筑结构加固)\s*(?:专业)?\s*(?:(?:施工)?图纸)?/gu,"$1专业图纸").replace(/(装饰|土建|加固|给排水|电气|智能化|消防|弱电智能化|室外道排|建筑结构加固)\s*(?:专业)?\s*(?:[((]\s*)?\d+\s*页\s*(?:(?:施工)?图纸)?\s*[))]?/gu,"$1专业图纸").replace(/([\u4e00-\u9fa5A-Za-z0-9、及与和]{2,24})\s*(?:共|多达|约|合计)\s*\d+\s*页/gu,"$1相关专业图纸").replace(/([\u4e00-\u9fa5A-Za-z0-9()()、·-]{2,24}工程)\s*(?:图纸|资料|文件)?\s*[((]?\s*(?:(?:共|多达|约|合计)\s*)?\d+\s*页\s*[))]?/gu,"$1施工图纸").replace(/([\u4e00-\u9fa5A-Za-z0-9()()、·-]{2,24})(?<!施工)\s*(?:施工)?图纸\s*[((]?\s*(?:(?:共|多达|约|合计)\s*)?\d+\s*页\s*[))]?/gu,"$1施工图纸").replace(/(给排水|电气|智能化|消防|暖通|人防)\s*[((]\s*\d+\s*页\s*[))]/gu,"$1专业图纸").replace(/(?:依据|按照|结合)?\s*图纸\s*[((]\s*\d+\s*页\s*[))]/gu,"依据相关专业图纸").replace(/(?:依据|按照|结合)?\s*清单\s*[((]?\s*\d+\s*页\s*[))]?/gu,"依据工程量清单").replace(/资料\s*[((]?\s*\d+\s*页\s*[))]?/gu,"项目资料").replace(/[((]?[\u4e00-\u9fa5A-Za-z0-9、及与和]*(?:图纸|清单|资料|文件|工程)?[\u4e00-\u9fa5A-Za-z0-9、及与和]*(?:(?:共|多达|约|合计)\s*)?\d+\s*页[\u4e00-\u9fa5A-Za-z0-9、及与和]*(?:图纸|清单|资料|文件)?[))]?/gu,a=>/图纸|工程|装饰|土建|加固|给排水|电气|智能化|消防/u.test(a)?"相关专业图纸":/清单/u.test(a)?"工程量清单":"相关资料").replace(/(?:位于|详见|见|参见|依据|按照|结合)?\s*相关资料(?:\s*相关资料)+/gu,"相关资料")}let u=String.raw`(?:\d+[.、](?=\s|\*\*)\s*|[((]\d+[))]\s*|[-*+]\s+)`;function v(a){return/^\s*\|/u.test(a)||/^\s*\|?\s*:?-{3,}:?/u.test(a)?a:a.replace(/([。;;])\s*(?=(?:\d+[.、](?=\s|\*\*)\s*|[((]\d+[))]\s*|[-*+]\s+)\S)/gu,"$1\n").replace(/([^\n])\s+(?=(?:\d+[.、](?=\s|\*\*)\s*|[((]\d+[))]\s*|[-*+]\s+)\*\*)/gu,"$1\n")}RegExp(String.raw`\S.+(?:\s|[。;;])${u}\S.+(?:\s|[。;;])${u}\S`,"u");let w=RegExp(`\r?
24
24
  `,"u"),x=RegExp(`
25
25
  {3,}`,"gu");function y(a){return a.split(w).map(v).join("\n").replace(x,"\n\n")}function z(a){return/^\s*\|?\s*:?-{3,}:?\s*(\|\s*:?-{3,}:?\s*)+\|?\s*$/u.test(a)}function A(a){let b=a.trim();return/^\|.*\|$/u.test(b)&&b.split("|").length>=3}function B(a){return`| ${Array.from({length:Math.max(2,a)},()=>"---").join(" | ")} |`}function C(a){let b=a.split(/\r?\n/u),c=[],d=0;for(let a=0;a<b.length;a+=1){let e=b[a];if(z(e)){c.push(e);continue}if(!(A(e)||d>0&&function(a){let b=a.trim();return b.startsWith("|")&&b.length>1}(e))){d=0,c.push(e);continue}let f=b[a+1]||"",g=d||e.trim().replace(/^\|/u,"").replace(/\|$/u,"").split(/(?<!\\)\|/u).length;if(c.push(function(a,b){let c=a.trim().replace(/^\|/u,"").replace(/\|$/u,"").split(/(?<!\\)\|/u).map(a=>a.trim());for(;c.length<b;)c.push("");return`| ${c.slice(0,b).join(" | ")} |`}(e,g)),z(f)){c.push(B(g)),d=g,a+=1;continue}!d&&A(f)&&function(a){let b=a.trim().replace(/^\|/u,"").replace(/\|$/u,"").split(/(?<!\\)\|/u).map(a=>a.replace(/\*\*/gu,"").trim());return!(b.length<2)&&b.filter(a=>/^(?:序号|信息项|内容|控制项目|控制内容|执行要求|责任主体|检查(?:与验收)?|验收标准|备注|名称|规格(?:型号)?|单位|数量|阶段|措施|风险|应急物资名称|资源类别|投入计划|管理要求)$/u.test(a)).length>=Math.min(2,b.length)}(e)&&(c.push(B(g)),d=g)}return c.join("\n").replace(/\n{3,}/gu,"\n\n")}let D=/(?:项目部|本项目|本工程)?(?:根据|依据|结合|按照|以)?(?:本项目|项目|[^。;;\n]{0,30}?)?(?:招标文件|补疑澄清文件|补遗澄清文件|补疑补遗|答疑(?:回复)?文件|答疑修正口径|补充答疑修正口径|澄清文件|工程量清单|设计图纸|施工图纸|图纸资料|设计修改通知单)(?:[、,,及和与\s]*(?:招标文件|补疑澄清文件|补遗澄清文件|补疑补遗|答疑(?:回复)?文件|答疑修正口径|补充答疑修正口径|澄清文件|工程量清单|设计图纸|施工图纸|图纸资料|设计修改通知单|现行规范|规范)){1,}(?:[^。;;\n]{0,80})?[,,]/u,E=/编制依据|编制说明|法律法规|规范标准|标准依据/u;function F(a){let b=a.split(/\r?\n/u),c=[],d=!1;for(let a of b){let b=a.trim();if(/^#{2,4}\s+/u.test(b)){d=E.test(b.replace(/^#{2,4}\s+/u,"")),c.push(a);continue}if(/^\s*\|/u.test(b)||d){c.push(a.trimEnd());continue}let e=a.replace(D,"").replace(/(?:施工图设计说明|工程量清单项目特征|补充答疑修正口径|答疑修正口径)(?:[、,,及和与\s]*(?:施工图设计说明|工程量清单项目特征|补充答疑修正口径|答疑修正口径)){1,}/gu,"项目技术文件").replace(/(?:根据|依据|以)(?:[^。;;\n]{0,30})?(?:招标文件|补疑澄清文件|补遗澄清文件|补疑补遗|答疑(?:回复)?文件|答疑修正口径|补充答疑修正口径|澄清文件|工程量清单|设计图纸|施工图纸)(?:[^。;;\n]{0,40})(?:编制|确定|要求|为编制基础)[。;;]?/gu,"").replace(/(?<=\S)\s{2,}(?=\S)/gu," ").trimEnd();/^(?:本节|本小节|本章)?(?:内容|措施)?(?:根据|依据)(?:招标文件|补疑澄清文件|补遗澄清文件|答疑(?:回复)?文件|澄清文件|工程量清单|设计图纸|施工图纸)[^。;;\n]*[。;;]?$/u.test(e.trim())||c.push(e)}return c.join("\n").replace(/\n{3,}/gu,"\n\n")}function G(a){let b=[],c=!1;return a.split(/\r?\n/u).forEach((a,d)=>{let e=a.trim();if(/^#{2,4}\s+/u.test(e)){c=E.test(e.replace(/^#{2,4}\s+/u,""));return}!/^\s*\|/u.test(e)&&(D.test(a)&&!c&&b.push({level:"error",severity:"blocker",category:"style",owner:"system",message:`正式正文不得出现资料来源罗列话术:第 ${d+1} 行`,suggestion:"删除“根据/依据招标文件、清单、图纸”等来源罗列,直接保留项目事实、施工内容和控制措施;编制依据类小节可集中罗列依据文件。"}),/^\s*\*\*[^*]{2,40}表\*\*\s*$/u.test(a)&&b.push({level:"error",severity:"blocker",category:"format",owner:"system",message:`正式正文不得用粗体段落充当表名:第 ${d+1} 行`,suggestion:"表名必须转换为 #### 四级标题,避免导出后混入正文段落。"}))}),b.slice(0,20)}let H=/(?:安全|管理|施工|质量|工期|进度|保障|体系|措施|控制|工程|项目|技术|方案|计划|组织|标准|规范|验收|方法|工艺|文明|绿色)/u,I=/(?:工程施工方案|安装工程施工方案|专业工程施工方案|专项施工方案)$/u;function J(a){let b=a.split(/\r?\n/u),c=[],d=new Set;for(let a of b){let b=/^###\s+(.+)$/u.exec(a.trim());b&&d.add(b[1].trim().replace(/^\d+(?:\.\d+)*\s*/u,""))}return b.forEach((a,b)=>{let e=/^####\s+(.+)$/u.exec(a.trim());if(!e)return;let f=e[1].trim(),g=f.replace(/^\d+(?:\.\d+)*\s*/u,"").trim();if(!g)return;if(d.has(g)||d.has(f))return void c.push({level:"warning",severity:"warning",category:"structure",owner:"system",repairability:"llm_repairable",message:`H4 标题与本章三级小节同名:${f}(第 ${b+1} 行)`,suggestion:`删除该 H4 块或改为三级小节「${g}」下的独立子主题标题,禁止与三级小节同名造成结构重复。`});let h=new Map;for(let a=0;a<g.length-1;a+=1){let b=g.slice(a,a+2);H.test(b)||h.set(b,(h.get(b)||0)+1)}let i=[...h.entries()].filter(([,a])=>a>=2).map(([a])=>a);if(i.length>0)return void c.push({level:"warning",severity:"warning",category:"structure",owner:"system",repairability:"llm_repairable",message:`H4 标题疑似词尾粘连或多主题拼接:${f}(重复词:${i.join("、")},第 ${b+1} 行)`,suggestion:"重写为单一主题的短标题,去掉粘连重复的尾部词语。"});g.length>14&&!I.test(g)&&c.push({level:"warning",severity:"warning",category:"structure",owner:"system",repairability:"llm_repairable",message:`H4 标题过长疑似多主题拼接:${f}(${g.length} 字,第 ${b+1} 行)`,suggestion:"拆分为多个独立 H4 或压缩为单一主题短标题。"})}),c.slice(0,20)}function K(a){let b=a.split(/\r?\n/u),c=[],d=[],e=null,f=null,g=a=>{if(f)for(let b of a.replace(/^#{1,6}\s+/u,"").replace(/^\|.*\|$/u,"").trim().split(/[。;;]/u)){let a=b.trim();a.length>=24&&f.sentences.push(a.replace(/[\s\p{P}]+/gu,"").toLowerCase())}};for(let a of b){let b=/^##\s+(.+)$/u.exec(a.trim());if(b){e&&d.push(e),e={title:b[1].trim(),sections:[]},f=null;continue}let c=/^###\s+(.+)$/u.exec(a.trim());if(c&&e){f={title:c[1].trim(),sentences:[]},e.sections.push(f);continue}/^####\s+/u.test(a.trim())||g(a)}for(let a of(e&&d.push(e),d))for(let b=0;b<a.sections.length;b+=1)for(let d=b+1;d<a.sections.length;d+=1){let e=new Set(a.sections[b].sentences),f=new Set(a.sections[d].sentences);if(0===e.size||0===f.size)continue;let g=0;for(let a of e)f.has(a)&&(g+=1);let h=g/Math.min(e.size,f.size);h>=.3&&g>=3&&c.push({level:"warning",severity:"warning",category:"structure",owner:"system",repairability:"llm_repairable",message:`${a.title} 内「${a.sections[b].title}」与「${a.sections[d].title}」正文重复(${g} 句重合,占 ${Math.round(100*h)}%)`,suggestion:"两个小节正文出现大量重复句子:后写的小节必须围绕本小节主题差异化重写,删除复制自另一小节的内容,只保留本小节专属做法与参数。"})}return c.slice(0,20)}function L(a){let b=a.split(w),c=[];for(let a=0;a<b.length;a+=1){let d=b[a]||"",e=d.trim();if(!(e&&!/^\|/u.test(e)&&(e.match(/\|/gu)||[]).length>=2&&!/^#{1,6}\s/u.test(e)&&!z(e)&&c.length>0&&A(c[c.length-1]||""))){c.push(d);continue}let f=e.split("|").map(a=>a.trim()).filter(Boolean);if(f.length<2){c.push(d);continue}if(z(c[c.length-1]||"")){c.push(`| ${f.join(" | ")} |`);continue}let g=c[c.length-1]||"",h=`${g.replace(/\s*\|\s*$/u,"")}${f[0]}`,i=f.slice(1).join(";");c[c.length-1]=`${h}${i?`;${i}`:""} |`}return c.join("\n")}function M(a){return(function(a){let b=a.split(/\r?\n/u),c=[];for(let a=0;a<b.length;a+=1){if(!A(b[a])||!z(b[a+1]||"")){c.push(b[a]);continue}let d=[];for(;a<b.length&&A(b[a]);)d.push(b[a]),a+=1;a-=1;let e=d.map(a=>a.trim().replace(/^\|/u,"").replace(/\|$/u,"").split(/(?<!\\)\|/u).map(a=>a.trim())),f=Array.from({length:Math.max(...e.map(a=>a.length))},(a,b)=>e.some((a,c)=>1!==c&&!!a[b]?.trim())),g=e.map((a,b)=>{let c=f.map((b,c)=>b?a[c]||"":null).filter(a=>null!==a);return 1===b?B(c.length):`| ${c.join(" | ")} |`});c.push(...g)}return c.join("\n")})(C(L(y(t(F(function(a){let b=a.trim(),c=/^```(?:markdown|md)?\s*\n([\s\S]*?)\n```\s*$/iu.exec(b);return c?c[1].trim():a}(a)).replace(/\b(m|㎡)\s*2\b/giu,"平方米").replace(/\bm\s*[²2]\b/giu,"平方米").replace(/\b(m|㎥)\s*3\b/giu,"立方米").replace(/\bm\s*[³3]\b/giu,"立方米").replace(/\bmm2\b/giu,"平方毫米").replace(/\bcm2\b/giu,"平方厘米").replace(/\bkm2\b/giu,"平方千米").replace(/(\d+(?:\.\d+)?)平方(?:\d+(?:\.\d+)?)?(?=\d|[,,;;))]|\s|$)/gu,"$1平方米").replace(/原则上/gu,"").replace(/\s*×\s*/gu,"\xd7").replace(/\s*≤\s*/gu,"≤").replace(/\s*≥\s*/gu,"≥").replace(/\s*±\s*/gu,"\xb1")))))).replace(/^####\s+(.*?)(.{2,4})\2\s*$/gmu,"#### $1$2").split(/\r?\n/u).map(a=>a=(a=a.replace(/(?<=[。;;])(?=#{3,4}\s+\S)/gu,"\n\n")).replace(/^([^|]*[。;;])\s*(\|[^|\n]+\|\s*)$/u,"$1\n$2")).join("\n").replace(/^\*\*([^*\n]{4,40})\*\*\s*$/gmu,(a,b)=>{let c=b.trim();return/[::。!!??,,、]$/u.test(c)||/^(?:注意|提示|备注|警告|说明)/u.test(c)?a:`#### ${c}`}).replace(/承包人案/gu,"方案").replace(/承包人法(?=[::])/gu,"施工方法").replace(/承包人法/gu,"方法").replace(j,"").replace(/(^|\n)---\s*\n+(?=以上内容已依据)/gu,"$1").replace(/^以上内容已依据[\s\S]*?(?=\n\s*\n)/gmu,"").replace(k,"").replace(l,"").replace(m,"").replace(d.tK,"").replace(/^#\s+/gmu,"").replace(d.VX,"").split(/\r?\n/u).filter((a,b,c)=>{let d=b>0?(0,f.GQ)((c[b-1]||"").trim().replace(/^#{1,6}\s+/u,"")):"",e=(0,f.GQ)(a.trim().replace(/^#{1,6}\s+/u,""));if(d&&s(d)&&e.length>0&&e.length<=12&&!/^#{1,6}\s/u.test(a.trim()))return!1;let g=a.trim();if(!g)return!0;if(/^####\s+.*(?:补充条款|评标办法|投标须知)/u.test(g)||/该小节围绕.+进行补充说明/u.test(g)||/仅作为内部事实提取依据|正式正文不得引用文件名|后台事实|内部事实/u.test(g))return!1;if(/^\s*\|/u.test(g)||/^\s*\|?\s*:?-{3,}:?/u.test(g))return!0;let h=(0,f.GQ)(g.replace(/^#{1,6}\s+/u,""));return!(/^(?:雨季|冬季|高温|台风|大风等特殊气候|雨季、冬季、高温、台风、大风等特殊气候)$/u.test(h)||h.length<=1||s(h))&&!(/[,、;:和与在为对将]$/u.test(h)||/(通过|包括|如下|主要包括)$/u.test(h))}).join("\n").replace(/\n{3,}/gu,"\n\n").trim()}let N=`以下规则仅用于保障导出格式正确和事实安全,不得覆盖用户在提示词中已明确的要求。
26
- 不得把”知识库、检索、资料类型、提示词角色、规范包、事实字段、缺失项、校验结果、资料未提供、未检索到”等后台流程话术写入正文。
27
26
  严禁使用“根据/依据招标文件、补疑澄清文件、工程量清单及设计图纸”等资料来源罗列开头;正文必须直接写项目事实、施工内容、控制措施、验收节点。编制依据类小节除外:该小节可集中罗列编制依据文件清单。
28
27
  禁止模板化空话与流程套话:不同小节必须写各自专属的专业内容,逐节落位本项目工程量、设备规格、工艺参数与验收标准,不得复制相同段落,不得用泛化的流程描述代替专业内容;正文末尾不得输出自我总结或合规声明段落。
29
- 项目概况只交代一次:工程地点、建设规模(总建筑面积)、计划工期、改造范围、保留商铺等总述信息,只在项目概况/工程概况类章节集中交代。其他章节不得以“本项目为……”开头整段复述项目概况;正文直接写本专业内容,确需数据支撑时只引用所需的具体数字(如“按计划工期倒排”“针对改造范围面积”),不复述面积、商铺、工期的完整概况段。
30
28
  【内容落地五要素】每项管控措施必须写全五要素:方案 + 流程 + 责任人 + 时间节点 + 验收标准;责任人落到具体岗位(项目经理/技术负责人/施工员/质检员/安全员/材料员等),检查频次量化到每日/每周/每月/不少于X次,整改落到“整改→复查→销项”闭环。禁止只写“加强、落实、确保”式无责任、无标准、无频次的空话。
31
29
  【闭环句式密度硬约束】全文每 1500 字至少 1 段完整闭环句式:同一自然段内必须同时出现责任岗位(项目经理/技术负责人/施工员/质检员/安全员/材料员/试验员等)+ 检查频次(每日/每周/每月/不少于X次/定期)+ 整改闭环(整改/复查/销项/复验)三要素,缺一不可;禁止措施段落只有频次数字而无责任岗位,或只有岗位口号而无量化频次。
32
30
  【空话禁用词】以下词语直接禁写,一律替换为“责任岗位 + 执行动作 + 量化标准 + 检查频次 + 整改闭环”句式:${g.QX.join("、")};并避免“合理、充分、完善、切实、尽量、适时”等单字虚词作为措施句核心动词。
@@ -38,6 +36,7 @@ ${c.join("\n")}`:""].filter(Boolean).join("\n")}},58965:(a,b,c)=>{c.d(b,{$m:()=>
38
36
  【工艺黄金公式】工艺描述按“工艺名称 + 来源依据 + 适用范围 + 核心工序(按施工顺序 3~5 步)+ 质量控制要点(1~2 个量化指标)”展开;提及规范标准必须带编号(如 GB 50204-2015)并采用现行有效版本,不得虚构或引用已废止版本。
39
37
  【重难点公式】重难点 = 项目具体条件 + 难度分析 + 影响后果;工程重点 3~5 条、工程难点 3~4 条,每个重难点必须在后续对应章节给出解决措施形成跨章闭环。
40
38
  【低雷同】不同章节不得复制相同段落;同类措施必须通过句式重构、数据替换、流程细化差异化表达;项目概况叙述(位置+规模+建设内容+工期+质量目标的连写段)全文只允许在项目基本信息表引导段出现一次,特点分析、重难点分析等小节直接切入特点与对策,禁止再次粘贴项目概况段;不写“本工程严格执行国家有关标准规范”式通用万能句。
39
+ 项目概况只交代一次:工程地点、建设规模(总建筑面积)、计划工期、改造范围、保留商铺等总述信息,只在项目概况/工程概况类章节集中交代。其他章节不得以“本项目为……”开头整段复述项目概况;正文直接写本专业内容,确需数据支撑时只引用所需的具体数字(如“按计划工期倒排”“针对改造范围面积”),不复述面积、商铺、工期的完整概况段。
41
40
  【导出格式】章标题用 ## ,节标题用 ### 加数字编号(如 1.1),小节标题用 #### 加数字编号(如 1.1.1)。禁止用数字编号或粗体代替 ###/#### 标题。
42
41
  Markdown 表格格式硬约束:凡是输出 Markdown 表格,必须使用标准 GFM 表格格式。
43
42
  表格必须包含表头行、分隔线和数据行;表头下一行必须是分隔线,例如 |---|---|。
@@ -48,8 +47,7 @@ Markdown 表格格式硬约束:凡是输出 Markdown 表格,必须使用标
48
47
  正文表格不得展示后台溯源列或系统过程列,如“资料来源/说明”“资料来源/证明”“知识库来源”等。
49
48
  项目名称、项目编号、招标人/业主/建设单位、建设地点、建设规模、计划工期、质量标准、合同估算价等项目基础信息,只能在项目基本信息表中集中输出一次;后续章节如需引用,应写入正文或专业表格的业务字段,不得重复生成项目基础信息键值表。
50
49
  【段落格式】段落之间必须空行(双换行)分隔,不得用单换行连续写大段文字。列表项逐行独占。步骤描述之间加空行。
51
- 事实来源分级:项目专属事实(工期、金额、工程量、建设规模、人名、公司、品牌、供应商、材料规格、日期节点)必须来自绑定材料,不得编造;公共专业知识(法律法规名称、标准规范编号 GB/JGJ/CJJ/DB 系列、通用施工工艺与行业惯例)可依据现行有效版本和专业经验直接撰写,不要求材料提供,但不得虚构编号或引用已废止版本。
52
- 计划编制类字段边界:劳动力计划人数、机械设备台班、进度时间安排、材料进场时间、检验批划分等属于投标人计划编制成果,资料中不会直接给出,必须基于项目工程量、总工期、工序流水与定额工效推导出具体数值并写入正文,不得因资料未提供而留空或用“另行确定”等话术回避。`,O='只生成当前节及其节内三级小节正文,不生成其他同级节,不重复章节一级标题。\n优先使用当前模板、用户要求、绑定提示词和绑定材料中的事实;项目专属事实(具体数值、时间、规格、人名、品牌、责任主体)缺少依据时不得编造;法律法规名称、标准规范编号等公共专业知识可依据现行有效版本直接引用,无需材料提供。\n禁止编造具体日期:开工日期、竣工日期、具体某月某日只有在绑定材料明确提供时才可写入;材料未提供具体日期时,进度安排一律用相对工期表达(如"开工令下发后第7日""第1日~第7日"),不得写"2026年8月8日"等绝对日期。\n小节应有实质正文;除非用户或模板明确要求纯表格,否则表格只能作为辅助表达,不能整节只有表格。\n不得用通用兜底段落、空泛管理话术或后台缺料说明冒充正文;信息不足时只写已有事实、适用边界和待复核口径。\n不得以“本项目为……”开头复述项目概况段(工程地点、面积、工期、保留商铺等总述信息只在项目概况/工程概况类章节出现);本小节直接写专业内容,需要数据时只引用所需数字。',P="你是专业施工组织设计文档生成智能体,承担文档结构规划、正文写作、质量评审与局部修复任务。\n通用硬约束:\n1. 项目专属事实(工期、金额、工程量、建设规模、人名、公司、品牌、供应商、材料规格、日期节点)必须来自绑定材料,不得编造;公共专业知识(法律法规名称、标准规范编号、通用施工工艺与行业惯例)可依据现行有效版本直接引用,但不得虚构编号或引用已废止版本。\n2. 输出中不得出现后台流程话术(知识库、检索、资料类型、提示词角色、规范包、事实字段、缺失项、校验结果、资料未提供、未检索到等)。\n3. 严格遵守调用点给出的输出契约:JSON 调用只返回 JSON,正文调用遵循 Markdown 结构要求。";function Q(){return"0"===process.env.DOCUMENT_UNIFIED_SYSTEM_PREFIX?P:[P,N].join("\n\n")}function R(a){return"0"===process.env.DOCUMENT_L0_SYSTEM_PREFIX?a:[Q(),"你是施工组织设计文档写作专家。",O].join("\n\n")}function S(a,b){return"0"===process.env.DOCUMENT_L0_SYSTEM_PREFIX?b??a:[Q(),a].join("\n\n")}function T(a){return(0,f.GQ)(a.replace(/^#+\s*/u,"")).replace(/^(?:第)?[一二三四五六七八九十百千万\d]+章\s*/u,"").trim().replace(/\s+/gu,"")}function U(a,b){let c=T(a),d=T(b);return!!(c&&d&&c===d)}function V(a){let b=a.split(/\r?\n/u),c=[],d="";for(let a of b){let b=a.trim(),e=/^##\s+(#{2,5})\s+(.+)$/u.exec(b);if(e){let a=e[1]||"",b=(e[2]||"").trim();b&&!U(b,d)&&(c.push(`${a} ${(0,f.GQ)(b)}`),d=b);continue}let g=/^(#{1,6})\s+(.+)$/u.exec(b);if(g){let b=(g[2]||"").trim();if(b){if(U(b,d))continue;d=b}c.push(a);continue}b&&(d=""),c.push(a)}return c.join("\n").replace(/\n{3,}/gu,"\n\n")}function W(a,b,c){let d=new Set;for(let e=b;e<c;e+=1){let b=a[e].trim();if(!(/^#{1,6}\s/u.test(b)||/^\|.*\|$/u.test(b)))for(let a of b.split(/[。;;]/u)){let b=a.trim();b.length>=16&&d.add(b.replace(/[\s\p{P}]+/gu,""))}}return d}function X(a){let b=a.split(/\r?\n/u),c=[];for(let a=0;a<b.length;a+=1){let d=/^(#{2,3})\s+(.+)$/u.exec(b[a].trim());d&&(c.length>0&&(c[c.length-1].end=a),c.push({level:d[1].length,title:d[2].trim(),normalized:d[2].trim().replace(/^\d+(?:\.\d+)*\s*/u,"").replace(/[\s::、。,,;;/|—-]/gu,""),start:a,end:b.length}))}if(0===c.length)return a;let d=[];for(let a=0;a<c.length;a+=1){let e=c[a];if(2!==e.level)continue;let f=c.findIndex((b,c)=>c>a&&2===b.level),g=f>=0?c[f].start:b.length,h=c.find(a=>a!==e&&3===a.level&&a.normalized===e.normalized&&a.start>e.start&&a.start<g);if(!h)continue;let i=W(b,e.start+1,e.end),j=W(b,h.start+1,h.end),k=[...i].filter(a=>j.has(a)).length,l=Math.min(i.size,j.size);if((l>0?k/l:0)>=.5){let a=b.slice(e.start+1,e.end).join("\n").length>=b.slice(h.start+1,h.end).join("\n").length?h:e;d.push({start:a.start,end:a.end,downgrade:!1})}else d.push({start:e.start,end:e.start,downgrade:!0})}if(0===d.length)return a;let e=[];for(let a=0;a<b.length;a+=1){if(d.some(b=>!b.downgrade&&a>=b.start&&a<b.end))continue;let c=d.find(b=>b.downgrade&&b.start===a);e.push(c?b[a].replace(/^##\s+/,"### "):b[a])}return e.join("\n").replace(/\n{3,}/gu,"\n\n")}function Y(a){let b=a.split(/\r?\n/u),c=[],d=[],e=[],f=()=>{if(0===e.length)return;let a=e.join("\n").trim();if(e=[],!a)return;let b=a.replace(/[\s\p{P}]+/gu,"");if(!(b.length>=24&&d.includes(b)))for(let e of(d=[...d,b].slice(-3),a.split(/\n/u)))c.push(e)};for(let a of b){let b=a.trim();if(/^#{1,6}\s/u.test(b)){f(),c.push(a),d=[];continue}if(""===b){f(),c.push(a);continue}e.push(a)}return f(),c.join("\n")}function Z(a){return[...new Set([...a.matchAll(/^###\s+(.+)$/gmu)].map(a=>(0,f.GQ)(a[1]||"")).filter(a=>a.length>=2&&a.length<=80).filter(a=>!s(a)).filter(a=>!/^\d+(?:\.\d+){2,}\s+/u.test(a)))]}function $(a){let b=a.split(/\r?\n/u),c="",d=0;return b.map(a=>{let b=/^\*\*([^*]{2,40}表)\*\*\s*$/u.exec(a.trim());if(b&&c)return d+=1,`#### ${c}.${d} ${(0,f.GQ)(b[1]||"")}`;let e=/^###\s+(\d+\.\d+)\s+.+$/u.exec(a.trim());if(e)return c=e[1],d=0,a;if(/^##\s+/u.test(a.trim()))return c="",d=0,a;let g=/^(#{4,5})\s+(.+)$/u.exec(a.trim());if(g){if(!c)return"#####"===g[1]?a.replace(/^\s*#####/u,"####"):a;let b=(g[2]||"").trim(),e=(0,f.GQ)(b.replace(/^\d+\.\d+\.\d+\s+/u,""));return e?(d+=1,`#### ${c}.${d} ${e}`):a}return a}).join("\n").replace(/\n{3,}/gu,"\n\n").trim()}function _(a){let b=[],c="";for(let d of a.split(/\r?\n/u)){let a=d.trim(),e=/^###\s+(\d+\.\d+)\s+.+$/u.exec(a);if(e){c=e[1];continue}if(/^##\s+/u.test(a)&&(c=""),!c)continue;let g=/^####\s+(.+)$/u.exec(a);if(g){let a=(g[1]||"").trim();RegExp(`^${aj(c)}\\.\\d+\\s+\\S`,"u").test(a)||b.push({level:"warning",message:`三级小节缺少 ${c}.x 编号:${(0,f.GQ)(a)}`,suggestion:"三级小节必须使用“#### 章号.节号.序号 标题”。"})}}return b}function aa(a){let b=a.replace(/\*+/gu,"").trim();if(s(b))return"";let c=(0,f.GQ)(b).replace(/^[-—–]\s*/u,"").trim();return s(c)||/^(?:雨季|冬季|高温|台风|大风)(?:[、,](?:雨季|冬季|高温|台风|大风))*等特殊气候$/u.test(c)||/^(?:雨季|冬季|高温|台风|大风)$/u.test(c)?"":c}function ab(a=[]){return[...new Set(a.map(aa).filter(a=>a.length>=2))]}function ac(a){return["## 目录","",...a.flatMap((a,b)=>{let c=ab(a.sections||[]);return[`${(0,f.tb)(b,a.title)}`,...c.map((a,c)=>` ${function(a,b,c){let d=(0,f.GQ)(c);return!function(a){let b=/^\s*(\d+)\.(\d+)[..、]?\s+(.+)$/u.exec(a);return!!b&&(0,f.GQ)(b[3]||"").trim()===(0,f.GQ)(a).trim()}(c)?`${a+1}.${b+1} ${d}`:d}(b,c,a)}`)]})].join("\n")}function ad(a){return a.replace(/<div class="document-cover">[\s\S]*?<\/div>\s*(?:<div class="page-break"><\/div>\s*)?/giu,"").replace(/^#\s+.+\n{1,2}/u,"")}function ae(a){return a.replace(/^##\s+目录\s*$[\s\S]*?(?=\n<div class="page-break"><\/div>|\n##\s+第[一二三四五六七八九十百千万\d]+章|\n##\s+)/gmu,"").replace(/^<div class="page-break"><\/div>\s*(?=##\s+第[一二三四五六七八九十百千万\d]+章)/gmu,"")}function af(a){let b=!1;return a.replace(/^##\s+目录\s*$[\s\S]*?(?=\n<div class="page-break"><\/div>|\n##\s+)/gmu,a=>b?"":(b=!0,a)).replace(/\n{3,}/gu,"\n\n").trim()}function ag(a,b){let c=af(a);b.forEach((a,b)=>{let d=(0,f.GQ)(a.title),e=RegExp(`^##\\s+(?:第[一二三四五六七八九十百千万\\d]+章\\s*)?${aj(d)}\\s*$`,"mu");c=e.test(c)?c.replace(e,`## ${(0,f.tb)(b,a.title)}`):c});let d=c.split(/\r?\n/u),g=-1,h=0,i=0,j="",k="",l=!1,m=new Set,n=a=>{let c=b[g]?.sections||[],d=al(a);return c.findIndex(a=>al(a)===d)},o=(a,c)=>{let d=aa(a);if(!d||s(a)||s(d))return"";let e=n(d),l=b[g]?.sections||[],o=e>=0?e+1:h+1,p=e>=0?al(l[e]):al(d);return m.has(p)?(h=o,j=c||`${g+1}.${h}`,i+=1,`#### ${g+1}.${h}.${i} ${d}`):(h=o,i=0,j=c||`${g+1}.${h}`,k=e>=0?(0,f.GQ)(l[e]):d,m.add(p),`### ${g+1}.${h} ${e>=0?(0,f.GQ)(l[e]):d}`)},p=(a,c)=>{let d=al(a),e=n(a)>=0&&!m.has(d);return!h||c&&c!==j&&(0===(b[g]?.sections||[]).length||e)?o(a,c):(i+=1)<=4?`#### ${g+1}.${h}.${i} ${a}`:`**${a}**`},q=!1;return d.map(a=>{let c=a.trim();if(/^##\s+目录\s*$/u.test(c))return q=!0,a;if(q&&/^<div class="page-break"><\/div>$/u.test(c))return q=!1,a;if(q)return a;if(/^##\s+第[一二三四五六七八九十百千万\d]+章\s+/u.test(c))return g+=1,h=0,i=0,j="",k="",l=!1,m=new Set,a;let d=/^##\s+第[一二三四五六七八九十百千万\d]+节\s+(.+)$/u.exec(c);if(g>=0&&d)return l=!0,o(d[1]||"");let r=/^##\s+\d+[..、]\s+(.+)$/u.exec(c);if(g>=0&&r)return l=!0,o(r[1]||"");let s=/^##\s+(\d+)\.(\d+)\s+(.+)$/u.exec(c);if(g>=0&&s)return l=!0,o(s[3]||"",`${s[1]}.${s[2]}`);let t=/^##\s+(.+)$/u.exec(c);if(g>=0&&t){let b=(0,f.GQ)(t[1]||"");return/^本章目录$/u.test(b)?"":/^附录/u.test(b)?a:(l=!0,o(b))}let u=/^###\s+(?:(\d+)\.(\d+)\s+)?(.+)$/u.exec(c);if(g>=0&&u)return l=!0,o(u[3]||"",u[1]&&u[2]?`${u[1]}.${u[2]}`:void 0);let v=/^####\s+(\d+)\.(\d+)(?!\.)\s+(.+)$/u.exec(c);if(g>=0&&v){let a=(0,f.GQ)(v[3]||""),c=e.V.test(k),d=0===(b[g]?.sections||[]).length,h=n(a)>=0;return!l&&!c&&(h||d)?o(v[3]||"",`${v[1]}.${v[2]}`):p(a,j)}let w=/^####\s+(?:(\d+)\.(\d+)\.(\d+)\s+)?(.+)$/u.exec(c);if(g>=0&&w){let a=w[1]&&w[2]?`${w[1]}.${w[2]}`:j;return p((0,f.GQ)(w[4]||""),a)}return a}).filter(a=>""!==a).join("\n")}function ah(a,b){let c=a.replace(/^\*\*([^*\n]{4,40})\*\*\s*$/gmu,(a,b)=>{let c=b.trim();return/[::。!!??,,、]$/u.test(c)||/^(?:注意|提示|备注|警告|说明)/u.test(c)?a:`#### ${c}`}).replace(/承包人案/gu,"方案").replace(/承包人法(?=[::])/gu,"施工方法").replace(/承包人法/gu,"方法").replace(/(?:本|我)施工方/gu,"我公司").replace(/(?:本|我)投标人/gu,"我公司").replace(/高度重视/gu,"严格落实").replace(/重中之重/gu,"关键控制事项");for(let a of b?.forbiddenTerms||[])a&&/^(?:报价明细表|最高投标限价|招标控制价)$/u.test(a)&&(c=c.split(/\r?\n/u).filter(b=>!RegExp(aj(a),"u").test(b)).join("\n"));return c}function ai(a,b){if(!b)return ah(a);let c=function(a,b){let c=a;for(let a of b?.requiredTables||[])c=function(a,b){if(/项目基本信息/u.test(b)&&(/项目基本信息/u.test(a)||/\|\s*信息项\s*\|\s*内容\s*\|/u.test(a)||/\|\s*项目名称\s*\|[^\n|]+\|/u.test(a))||RegExp(aj(b),"u").test(a))return a;let c=/项目基本信息/u.test(b)?"":`**${b}**
50
+ 计划编制类字段边界:劳动力计划人数、机械设备台班、进度时间安排、材料进场时间、检验批划分等属于投标人计划编制成果,资料中不会直接给出,必须基于项目工程量、总工期、工序流水与定额工效推导出具体数值并写入正文,不得因资料未提供而留空或用“另行确定”等话术回避。`,O='只生成当前节及其节内三级小节正文,不生成其他同级节,不重复章节一级标题。\n优先使用当前模板、用户要求、绑定提示词和绑定材料中的事实;项目专属事实(具体数值、时间、规格、人名、品牌、责任主体)缺少依据时不得编造。\n禁止编造具体日期:开工日期、竣工日期、具体某月某日只有在绑定材料明确提供时才可写入;材料未提供具体日期时,进度安排一律用相对工期表达(如"开工令下发后第7日""第1日~第7日"),不得写"2026年8月8日"等绝对日期。\n小节应有实质正文;除非用户或模板明确要求纯表格,否则表格只能作为辅助表达,不能整节只有表格。\n不得用通用兜底段落、空泛管理话术或后台缺料说明冒充正文;信息不足时只写已有事实、适用边界和待复核口径。',P="你是专业施工组织设计文档生成智能体,承担文档结构规划、正文写作、质量评审与局部修复任务。\n通用硬约束:\n1. 事实分级:项目专属事实(工期、金额、工程量、建设规模、人名、公司、品牌、供应商、材料规格、日期节点)必须来自绑定材料,不得编造;公共专业知识(法律法规名称、标准规范编号 GB/JGJ/CJJ/DB 系列、通用施工工艺与行业惯例)可依据现行有效版本直接引用,不得虚构编号或引用已废止版本。\n2. 输出中不得出现后台流程话术(知识库、检索、资料类型、提示词角色、规范包、事实字段、缺失项、校验结果、资料未提供、未检索到等)。\n3. 严格遵守调用点给出的输出契约:JSON 调用只返回 JSON,正文调用遵循 Markdown 结构要求。";function Q(){return"0"===process.env.DOCUMENT_UNIFIED_SYSTEM_PREFIX?P:[P,N].join("\n\n")}function R(a){return"0"===process.env.DOCUMENT_L0_SYSTEM_PREFIX?a:[Q(),"你是施工组织设计文档写作专家。",O].join("\n\n")}function S(a,b){return"0"===process.env.DOCUMENT_L0_SYSTEM_PREFIX?b??a:[Q(),a].join("\n\n")}function T(a){return(0,f.GQ)(a.replace(/^#+\s*/u,"")).replace(/^(?:第)?[一二三四五六七八九十百千万\d]+章\s*/u,"").trim().replace(/\s+/gu,"")}function U(a,b){let c=T(a),d=T(b);return!!(c&&d&&c===d)}function V(a){let b=a.split(/\r?\n/u),c=[],d="";for(let a of b){let b=a.trim(),e=/^##\s+(#{2,5})\s+(.+)$/u.exec(b);if(e){let a=e[1]||"",b=(e[2]||"").trim();b&&!U(b,d)&&(c.push(`${a} ${(0,f.GQ)(b)}`),d=b);continue}let g=/^(#{1,6})\s+(.+)$/u.exec(b);if(g){let b=(g[2]||"").trim();if(b){if(U(b,d))continue;d=b}c.push(a);continue}b&&(d=""),c.push(a)}return c.join("\n").replace(/\n{3,}/gu,"\n\n")}function W(a,b,c){let d=new Set;for(let e=b;e<c;e+=1){let b=a[e].trim();if(!(/^#{1,6}\s/u.test(b)||/^\|.*\|$/u.test(b)))for(let a of b.split(/[。;;]/u)){let b=a.trim();b.length>=16&&d.add(b.replace(/[\s\p{P}]+/gu,""))}}return d}function X(a){let b=a.split(/\r?\n/u),c=[];for(let a=0;a<b.length;a+=1){let d=/^(#{2,3})\s+(.+)$/u.exec(b[a].trim());d&&(c.length>0&&(c[c.length-1].end=a),c.push({level:d[1].length,title:d[2].trim(),normalized:d[2].trim().replace(/^\d+(?:\.\d+)*\s*/u,"").replace(/[\s::、。,,;;/|—-]/gu,""),start:a,end:b.length}))}if(0===c.length)return a;let d=[];for(let a=0;a<c.length;a+=1){let e=c[a];if(2!==e.level)continue;let f=c.findIndex((b,c)=>c>a&&2===b.level),g=f>=0?c[f].start:b.length,h=c.find(a=>a!==e&&3===a.level&&a.normalized===e.normalized&&a.start>e.start&&a.start<g);if(!h)continue;let i=W(b,e.start+1,e.end),j=W(b,h.start+1,h.end),k=[...i].filter(a=>j.has(a)).length,l=Math.min(i.size,j.size);if((l>0?k/l:0)>=.5){let a=b.slice(e.start+1,e.end).join("\n").length>=b.slice(h.start+1,h.end).join("\n").length?h:e;d.push({start:a.start,end:a.end,downgrade:!1})}else d.push({start:e.start,end:e.start,downgrade:!0})}if(0===d.length)return a;let e=[];for(let a=0;a<b.length;a+=1){if(d.some(b=>!b.downgrade&&a>=b.start&&a<b.end))continue;let c=d.find(b=>b.downgrade&&b.start===a);e.push(c?b[a].replace(/^##\s+/,"### "):b[a])}return e.join("\n").replace(/\n{3,}/gu,"\n\n")}function Y(a){let b=a.split(/\r?\n/u),c=[],d=[],e=[],f=()=>{if(0===e.length)return;let a=e.join("\n").trim();if(e=[],!a)return;let b=a.replace(/[\s\p{P}]+/gu,"");if(!(b.length>=24&&d.includes(b)))for(let e of(d=[...d,b].slice(-3),a.split(/\n/u)))c.push(e)};for(let a of b){let b=a.trim();if(/^#{1,6}\s/u.test(b)){f(),c.push(a),d=[];continue}if(""===b){f(),c.push(a);continue}e.push(a)}return f(),c.join("\n")}function Z(a){return[...new Set([...a.matchAll(/^###\s+(.+)$/gmu)].map(a=>(0,f.GQ)(a[1]||"")).filter(a=>a.length>=2&&a.length<=80).filter(a=>!s(a)).filter(a=>!/^\d+(?:\.\d+){2,}\s+/u.test(a)))]}function $(a){let b=a.split(/\r?\n/u),c="",d=0;return b.map(a=>{let b=/^\*\*([^*]{2,40}表)\*\*\s*$/u.exec(a.trim());if(b&&c)return d+=1,`#### ${c}.${d} ${(0,f.GQ)(b[1]||"")}`;let e=/^###\s+(\d+\.\d+)\s+.+$/u.exec(a.trim());if(e)return c=e[1],d=0,a;if(/^##\s+/u.test(a.trim()))return c="",d=0,a;let g=/^(#{4,5})\s+(.+)$/u.exec(a.trim());if(g){if(!c)return"#####"===g[1]?a.replace(/^\s*#####/u,"####"):a;let b=(g[2]||"").trim(),e=(0,f.GQ)(b.replace(/^\d+\.\d+\.\d+\s+/u,""));return e?(d+=1,`#### ${c}.${d} ${e}`):a}return a}).join("\n").replace(/\n{3,}/gu,"\n\n").trim()}function _(a){let b=[],c="";for(let d of a.split(/\r?\n/u)){let a=d.trim(),e=/^###\s+(\d+\.\d+)\s+.+$/u.exec(a);if(e){c=e[1];continue}if(/^##\s+/u.test(a)&&(c=""),!c)continue;let g=/^####\s+(.+)$/u.exec(a);if(g){let a=(g[1]||"").trim();RegExp(`^${aj(c)}\\.\\d+\\s+\\S`,"u").test(a)||b.push({level:"warning",message:`三级小节缺少 ${c}.x 编号:${(0,f.GQ)(a)}`,suggestion:"三级小节必须使用“#### 章号.节号.序号 标题”。"})}}return b}function aa(a){let b=a.replace(/\*+/gu,"").trim();if(s(b))return"";let c=(0,f.GQ)(b).replace(/^[-—–]\s*/u,"").trim();return s(c)||/^(?:雨季|冬季|高温|台风|大风)(?:[、,](?:雨季|冬季|高温|台风|大风))*等特殊气候$/u.test(c)||/^(?:雨季|冬季|高温|台风|大风)$/u.test(c)?"":c}function ab(a=[]){return[...new Set(a.map(aa).filter(a=>a.length>=2))]}function ac(a){return["## 目录","",...a.flatMap((a,b)=>{let c=ab(a.sections||[]);return[`${(0,f.tb)(b,a.title)}`,...c.map((a,c)=>` ${function(a,b,c){let d=(0,f.GQ)(c);return!function(a){let b=/^\s*(\d+)\.(\d+)[..、]?\s+(.+)$/u.exec(a);return!!b&&(0,f.GQ)(b[3]||"").trim()===(0,f.GQ)(a).trim()}(c)?`${a+1}.${b+1} ${d}`:d}(b,c,a)}`)]})].join("\n")}function ad(a){return a.replace(/<div class="document-cover">[\s\S]*?<\/div>\s*(?:<div class="page-break"><\/div>\s*)?/giu,"").replace(/^#\s+.+\n{1,2}/u,"")}function ae(a){return a.replace(/^##\s+目录\s*$[\s\S]*?(?=\n<div class="page-break"><\/div>|\n##\s+第[一二三四五六七八九十百千万\d]+章|\n##\s+)/gmu,"").replace(/^<div class="page-break"><\/div>\s*(?=##\s+第[一二三四五六七八九十百千万\d]+章)/gmu,"")}function af(a){let b=!1;return a.replace(/^##\s+目录\s*$[\s\S]*?(?=\n<div class="page-break"><\/div>|\n##\s+)/gmu,a=>b?"":(b=!0,a)).replace(/\n{3,}/gu,"\n\n").trim()}function ag(a,b){let c=af(a);b.forEach((a,b)=>{let d=(0,f.GQ)(a.title),e=RegExp(`^##\\s+(?:第[一二三四五六七八九十百千万\\d]+章\\s*)?${aj(d)}\\s*$`,"mu");c=e.test(c)?c.replace(e,`## ${(0,f.tb)(b,a.title)}`):c});let d=c.split(/\r?\n/u),g=-1,h=0,i=0,j="",k="",l=!1,m=new Set,n=a=>{let c=b[g]?.sections||[],d=al(a);return c.findIndex(a=>al(a)===d)},o=(a,c)=>{let d=aa(a);if(!d||s(a)||s(d))return"";let e=n(d),l=b[g]?.sections||[],o=e>=0?e+1:h+1,p=e>=0?al(l[e]):al(d);return m.has(p)?(h=o,j=c||`${g+1}.${h}`,i+=1,`#### ${g+1}.${h}.${i} ${d}`):(h=o,i=0,j=c||`${g+1}.${h}`,k=e>=0?(0,f.GQ)(l[e]):d,m.add(p),`### ${g+1}.${h} ${e>=0?(0,f.GQ)(l[e]):d}`)},p=(a,c)=>{let d=al(a),e=n(a)>=0&&!m.has(d);return!h||c&&c!==j&&(0===(b[g]?.sections||[]).length||e)?o(a,c):(i+=1)<=4?`#### ${g+1}.${h}.${i} ${a}`:`**${a}**`},q=!1;return d.map(a=>{let c=a.trim();if(/^##\s+目录\s*$/u.test(c))return q=!0,a;if(q&&/^<div class="page-break"><\/div>$/u.test(c))return q=!1,a;if(q)return a;if(/^##\s+第[一二三四五六七八九十百千万\d]+章\s+/u.test(c))return g+=1,h=0,i=0,j="",k="",l=!1,m=new Set,a;let d=/^##\s+第[一二三四五六七八九十百千万\d]+节\s+(.+)$/u.exec(c);if(g>=0&&d)return l=!0,o(d[1]||"");let r=/^##\s+\d+[..、]\s+(.+)$/u.exec(c);if(g>=0&&r)return l=!0,o(r[1]||"");let s=/^##\s+(\d+)\.(\d+)\s+(.+)$/u.exec(c);if(g>=0&&s)return l=!0,o(s[3]||"",`${s[1]}.${s[2]}`);let t=/^##\s+(.+)$/u.exec(c);if(g>=0&&t){let b=(0,f.GQ)(t[1]||"");return/^本章目录$/u.test(b)?"":/^附录/u.test(b)?a:(l=!0,o(b))}let u=/^###\s+(?:(\d+)\.(\d+)\s+)?(.+)$/u.exec(c);if(g>=0&&u)return l=!0,o(u[3]||"",u[1]&&u[2]?`${u[1]}.${u[2]}`:void 0);let v=/^####\s+(\d+)\.(\d+)(?!\.)\s+(.+)$/u.exec(c);if(g>=0&&v){let a=(0,f.GQ)(v[3]||""),c=e.V.test(k),d=0===(b[g]?.sections||[]).length,h=n(a)>=0;return!l&&!c&&(h||d)?o(v[3]||"",`${v[1]}.${v[2]}`):p(a,j)}let w=/^####\s+(?:(\d+)\.(\d+)\.(\d+)\s+)?(.+)$/u.exec(c);if(g>=0&&w){let a=w[1]&&w[2]?`${w[1]}.${w[2]}`:j;return p((0,f.GQ)(w[4]||""),a)}return a}).filter(a=>""!==a).join("\n")}function ah(a,b){let c=a.replace(/^\*\*([^*\n]{4,40})\*\*\s*$/gmu,(a,b)=>{let c=b.trim();return/[::。!!??,,、]$/u.test(c)||/^(?:注意|提示|备注|警告|说明)/u.test(c)?a:`#### ${c}`}).replace(/承包人案/gu,"方案").replace(/承包人法(?=[::])/gu,"施工方法").replace(/承包人法/gu,"方法").replace(/(?:本|我)施工方/gu,"我公司").replace(/(?:本|我)投标人/gu,"我公司").replace(/高度重视/gu,"严格落实").replace(/重中之重/gu,"关键控制事项");for(let a of b?.forbiddenTerms||[])a&&/^(?:报价明细表|最高投标限价|招标控制价)$/u.test(a)&&(c=c.split(/\r?\n/u).filter(b=>!RegExp(aj(a),"u").test(b)).join("\n"));return c}function ai(a,b){if(!b)return ah(a);let c=function(a,b){let c=a;for(let a of b?.requiredTables||[])c=function(a,b){if(/项目基本信息/u.test(b)&&(/项目基本信息/u.test(a)||/\|\s*信息项\s*\|\s*内容\s*\|/u.test(a)||/\|\s*项目名称\s*\|[^\n|]+\|/u.test(a))||RegExp(aj(b),"u").test(a))return a;let c=/项目基本信息/u.test(b)?"":`**${b}**
53
51
 
54
52
  | 控制项目 | 控制内容 | 执行要求 | 复核要求 |
55
53
  |---|---|---|---|
@@ -83,20 +81,20 @@ ${d}`,g=a.title;let h=e.split(/\r?\n/u),i=!1;return h.filter((a,b)=>{let d=a.tri
83
81
  ${i}
84
82
  ${o}`;return p.length>c?p.slice(0,c):p}function r(a,b={},c){let f=Number.isFinite(b.maxItems)&&b.maxItems>0?Math.floor(b.maxItems):void 0,g=Number.isFinite(b.maxChars)&&b.maxChars>0?Math.floor(b.maxChars):void 0,h=Number.isFinite(b.maxItemsPerFile)&&b.maxItemsPerFile>0?Math.floor(b.maxItemsPerFile):void 0,i=function(a,b,c){let f=new Set,g=a.map(a=>{let b=function(a,b){let c=d.extname(a).toLowerCase(),e=k(b).split("\n").map(a=>a.trim()).filter(a=>a&&!/^第\s*\d+\s*页\s*(?:共\s*\d+\s*页)?$/u.test(a)).join("\n"),f=l(e);if(e.length>20&&f.shouldUse)return e;let g=m(e);return g.length>20?`资料参数行摘要:
85
83
  ${g}`:e.length>80&&f.noiseScore<.9?e:[".pdf",".doc",".docx",".xls",".xlsx",".png",".jpg",".jpeg",".webp",".dwg"].includes(c)?`该资料为${c.replace(".","").toUpperCase()}格式附件,仅作为内部事实提取依据;正式正文不得引用文件名。`:e}(a.filePath,a.content),c=l(b);return{item:{...a,content:b,score:a.score*(1+c.factDensity)*(1-.45*c.noiseScore)},quality:c}}),h=g.filter(a=>a.quality.shouldUse||/附件,仅作为内部事实提取依据/u.test(a.item.content)),i=Number.isFinite(b)&&b>0?Math.ceil(b):void 0,j=(h.length>=Math.min(3,a.length)?h:g).sort((a,b)=>b.item.score-a.item.score).filter(a=>{let b=function(a){let b=a.content.replace(/\s+/gu," ").trim();return`${a.filePath}:${a.sectionTitle||""}:${(0,e.createHash)("sha1").update(b).digest("hex")}`}(a.item);return!f.has(b)&&(f.add(b),!0)}),n=i?j.slice(0,i):j;if(c){let b=g.reduce((a,b)=>a+b.quality.noiseScore,0),d=g.reduce((a,b)=>a+b.quality.factDensity,0);c.evidence.raw+=a.length,c.evidence.used+=n.length,c.evidence.filteredNoise+=Math.max(0,g.length-h.length),c.evidence.avgNoiseScore=g.length?Number((b/g.length).toFixed(3)):0,c.evidence.avgFactDensity=g.length?Number((d/g.length).toFixed(3)):0}return n.map(a=>a.item)}(a,void 0,c),j=b.preservePinned?i.filter(a=>"pinned-evidence"===a.source||"bound-file"===a.source||"required-fact-evidence"===a.source):[],n=i.filter(a=>!j.includes(a)),o=[],p=new Map,s=0,t=(a,b=!1)=>{if(f&&o.length>=f)return;let c=p.get(a.filePath)||0;if(!b&&void 0!==h&&c>=h)return;let d=k(a.content);g&&d.length>4e3&&(d=q(d,Math.min(12e3,g)));let e=s+d.length;g&&o.length>0&&e>g||(o.push({...a,content:d}),p.set(a.filePath,c+1),s=e)};for(let a of j)t(a,!0);for(let a of n)t(a);return c&&(c.evidence.budgetDropped+=Math.max(0,i.length-o.length)),o}function s(a,b=0){return`- ${j(a,b)}:${k(a.content).replace(/\s+/gu," ").slice(0,260)}`}function t(a,b){if(a.filePath!==b.filePath)return a.filePath<b.filePath?-1:1;let c=a.sectionTitle||"",d=b.sectionTitle||"";return c!==d?c<d?-1:1:a.content.length!==b.content.length?a.content.length-b.content.length:a.content!==b.content?a.content<b.content?-1:1:0}function u(a,b){let c=[...b].sort(t),e=new Map;for(let b of c){let c=function(a,b){let c=d.extname(a).toLowerCase();return"drawing"===b||/地图|map|drawing|design/iu.test(a)?"map":[".png",".jpg",".jpeg",".webp"].includes(c)?"image":"table"===b?"table":[".xls",".xlsx",".csv"].includes(c)?"spreadsheet":[".pdf",".doc",".docx"].includes(c)?"document":c&&![".md",".txt"].includes(c)?"attachment":"text"}(b.filePath,b.processingType),f=e.get(b.filePath)||{filePath:b.filePath,kind:c,roleId:b.roleId,processingType:b.processingType,score:b.score,semanticTitle:function(a,b){let c=d.basename(a).replace(/\.[^.]+$/u,"");return"map"===b?c.replace(/^地图-/u,"").replace(/-完整地图$/u,"完整地图"):"image"===b?c.replace(/-/gu," "):"spreadsheet"===b?`${c}(结构化表格)`:"document"===b?`${c}(文档附件)`:c}(b.filePath,c),contentUse:"map"===c?"作为视觉/地图证据,用于说明空间关系、区域划分、点位、路线或布局。":"image"===c?"作为图片证据,用于视觉说明、参考图或章节配图。":"spreadsheet"===c||"table"===c?"作为表格/数据证据,用于字段对比、明细、数量和结构化结论。":"document"===c?"作为 PDF/Word 文档证据,用于提取规范、事实、说明、约束和附件来源。":"attachment"===c?"作为附件证据,用于提供补充来源、文件级约束或可追溯引用。":"作为文本证据,用于事实抽取、章节论据和来源引用。",relatedFacts:[],relatedChapters:[],snippets:[]};f.score=Math.max(f.score,b.score),f.relatedFacts=[...new Set([...f.relatedFacts,...function(a,b){let c=`${a.filePath}
86
- ${a.content}`;return[...new Set([...b?.requiredFacts||[],"表格数据","规范要求","基础事实","附件资料","视觉资料","图片资料"].filter(b=>(0,h.Lk)(a,b)||c.includes(b)))]}(b,a)])],f.relatedChapters=[...new Set([...f.relatedChapters,a.title])];let g=b.content.replace(/\s+/gu," ");g&&!f.snippets.includes(g)&&f.snippets.push(g),e.set(b.filePath,f)}let f=[...e.values()].sort((a,b)=>b.score-a.score),g={map:[],image:[],table:[],document:[],spreadsheet:[],text:[],attachment:[]};for(let a of f)g[a.kind].push(a);let i=[`绑定材料包:文本片段 ${c.length} 条、结构化材料 ${f.length} 个。`,`材料类型分布:文本 ${g.text.length}、文档 ${g.document.length}、表格/数据 ${g.spreadsheet.length+g.table.length}、图片 ${g.image.length}、视觉/地图 ${g.map.length}、其他 ${g.attachment.length}。`,"正文必须只写材料中的事实、参数、数量、做法和要求,不得出现文件名、来源清单或后台证据描述。"].filter(Boolean).join("\n");return{chapterId:a.id,textEvidence:c,resources:f,byKind:g,summary:i}}function v(a,b=8e3,c=24e3){let d=Number.isFinite(a)&&a>0?Math.ceil(a):1200,e=Number(process.env.DOCUMENT_EVIDENCE_BUDGET_CEILING),f=Number.isFinite(e)&&e>0?Math.floor(e):c,g=Number(process.env.DOCUMENT_EVIDENCE_BUDGET_RATIO);return Math.min(Math.max(b,Math.min(f,Math.ceil(d*(Number.isFinite(g)&&g>0?g:8)))),Number.isFinite(e)&&e>0||!o()?1/0:8e3)}function w(a,b,c,d){let e=b.trim();if(e){if(!Number.isFinite(d)||!d||c.chars+e.length<=d){a.push(e),c.chars+=e.length;return}c.omitted+=1}}function x(a,b){let c=`${a.sectionTitle||""}
87
- ${a.content}`,d=a.score;for(let e of(g.sv.test(c)&&(d+=8),/计划工期|合同工期|合同估算价|合同估算价格|投资估算|最高投标限价|招标控制价|建设地点|建设规模|质量标准|招标范围/u.test(c)&&(d+=10),b))e&&(c.includes(e)||(0,h.Lk)(a,e))&&(d+=6);return/GB\s*\/?\s*T?|JGJ|CJJ|DB\s*\/?\s*T?|CECS|ISO/iu.test(c)&&(d+=3),d}function y(a,b,c,d){let e={chars:0,omitted:0},f=[],g=new Set,h=new Map,i=[...a].sort((a,b)=>d(b)-d(a));for(let a of i){if(h.has(a.filePath))continue;let d=f.length;w(f,c(a,f.length),e,b),f.length>d&&(h.set(a.filePath,1),g.add(a))}for(let a of i){if(g.has(a))continue;let d=h.get(a.filePath)||0;if(d>=6)continue;let i=f.length;w(f,c(a,f.length),e,b),f.length>i&&(h.set(a.filePath,d+1),g.add(a))}return{lines:f,omittedItems:i.filter(a=>!g.has(a)),omitted:e.omitted}}function z(a,b){let c=k("content"in a?a.content:a.snippets[0]||"").split("\n").map(a=>a.trim()).filter(Boolean)[0]||"",d=c.length>60?`${c.slice(0,60)}…`:c;return`- [${b}] ${j(a)}${d?`|${d}`:""}`}function A(a,b,c,d=!1,e,g=!1){let h=o(),l=d?[]:[...new Set(a.textEvidence.flatMap(a=>m(a.content).split("\n").filter(Boolean)))],r=h?l.filter(a=>n.test(a)).map(p):l,s=h?l.filter(a=>!n.test(a)):[],t=b?Math.floor(.6*b):void 0,u=r,v=0;if(t&&u.join("\n").length>t){let a=(0,i.Cr)(u,a=>(0,i.Ox)(a),{maxChars:t},"t0-fact-lines");v=a.dropped.length,u=a.selected}let w=u.length?`【关键事实层——来自绑定材料的数值、参数与标准编号,正文必须原样落位,不得改写、不得编造层内没有的数值】
88
- ${u.map(a=>`- ${a}`).join("\n")}${v>0?`
89
- (事实行总量超出预算上限,已按重要性保留前 ${u.length} 行)`:""}`:"",B=b?b-w.length:void 0;void 0!==B&&void 0!==b&&B<Math.min(2e3,b)&&(B=Math.min(2e3,b));let C=g&&e?a.resources.filter(b=>b.snippets.some(c=>e({chapterId:a.chapterId,filePath:b.filePath,score:b.score,content:c})>0)):a.resources,D=y(C.length>0?C:a.resources,B?Math.floor(.35*B):void 0,(a,b)=>[`- 资料:${j(a,b)}`,` 资料类型:${a.kind}`,` 正文用途:${a.contentUse}`,a.relatedFacts.length?` 可用事实方向:${a.relatedFacts.join("、")}`:"",a.snippets.length?` 可用内容:${a.snippets.map(k).filter(Boolean).join(" / ")}`:""].filter(Boolean).join("\n"),a=>a.score),E=g&&e?a.textEvidence.filter(a=>e(a)>0):a.textEvidence,F=g&&0===E.length?a.textEvidence:E,G=B?Math.floor(.65*B):void 0,H="",I=G;if(s.length>0){let a=(0,i.Cr)(s,a=>(0,i.Ox)(a),{maxChars:G},"t0-demoted-fact-lines");a.selected.length>0&&(H=`工艺参数与规范事实行(按相关度排序):
84
+ ${a.content}`;return[...new Set([...b?.requiredFacts||[],"表格数据","规范要求","基础事实","附件资料","视觉资料","图片资料"].filter(b=>(0,h.Lk)(a,b)||c.includes(b)))]}(b,a)])],f.relatedChapters=[...new Set([...f.relatedChapters,a.title])];let g=b.content.replace(/\s+/gu," ");g&&!f.snippets.includes(g)&&f.snippets.push(g),e.set(b.filePath,f)}let f=[...e.values()].sort((a,b)=>b.score-a.score),g={map:[],image:[],table:[],document:[],spreadsheet:[],text:[],attachment:[]};for(let a of f)g[a.kind].push(a);let i=[`绑定材料包:文本片段 ${c.length} 条、结构化材料 ${f.length} 个。`,`材料类型分布:文本 ${g.text.length}、文档 ${g.document.length}、表格/数据 ${g.spreadsheet.length+g.table.length}、图片 ${g.image.length}、视觉/地图 ${g.map.length}、其他 ${g.attachment.length}。`,"正文必须只写材料中的事实、参数、数量、做法和要求,不得出现文件名、来源清单或后台证据描述。"].filter(Boolean).join("\n");return{chapterId:a.id,textEvidence:c,resources:f,byKind:g,summary:i}}function v(a,b=8e3,c=24e3){let d=Number.isFinite(a)&&a>0?Math.ceil(a):1200,e=Number(process.env.DOCUMENT_EVIDENCE_BUDGET_CEILING),f=Number.isFinite(e)&&e>0?Math.floor(e):c,g=Number(process.env.DOCUMENT_EVIDENCE_BUDGET_RATIO);return Math.min(Math.max(b,Math.min(f,Math.ceil(d*(Number.isFinite(g)&&g>0?g:8)))),Number.isFinite(e)&&e>0||!o()?1/0:8e3)}function w(a,b,c,d){let e=b.trim();if(!e)return;let f=Number.isFinite(d)&&0===d;if(null==d||!f&&c.chars+e.length<=d){a.push(e),c.chars+=e.length;return}c.omitted+=1}function x(a,b){let c=`${a.sectionTitle||""}
85
+ ${a.content}`,d=a.score;for(let e of(g.sv.test(c)&&(d+=8),/计划工期|合同工期|合同估算价|合同估算价格|投资估算|最高投标限价|招标控制价|建设地点|建设规模|质量标准|招标范围/u.test(c)&&(d+=10),b))e&&(c.includes(e)||(0,h.Lk)(a,e))&&(d+=6);return/GB\s*\/?\s*T?|JGJ|CJJ|DB\s*\/?\s*T?|CECS|ISO/iu.test(c)&&(d+=3),d}function y(a,b,c,d){let e={chars:0,omitted:0},f=[],g=new Set,h=new Map,i=[...a].sort((a,b)=>d(b)-d(a));for(let a of i){if(h.has(a.filePath))continue;let d=f.length;w(f,c(a,f.length),e,b),f.length>d&&(h.set(a.filePath,1),g.add(a))}for(let a of i){if(g.has(a))continue;let d=h.get(a.filePath)||0;if(d>=6)continue;let i=f.length;w(f,c(a,f.length),e,b),f.length>i&&(h.set(a.filePath,d+1),g.add(a))}return{lines:f,omittedItems:i.filter(a=>!g.has(a)),omitted:e.omitted}}function z(a,b,c=300){let d,e=k("content"in a?a.content:a.snippets[0]||"").replace(/\s+/gu," ").trim();return d=e.length>c?e.length>4e3?q(e,c):(()=>{let a=Math.floor(.7*c),b=c-a-1;return`${e.slice(0,a)}…${e.slice(-b)}`})():e,`- [${b}] ${j(a)}${d?`|${d}`:""}`}function A(a,b,c,d=!1,e,g=!1,h=!1){let l=o(),r=d?[]:[...new Set(a.textEvidence.flatMap(a=>m(a.content).split("\n").filter(Boolean)))],s=l?r.filter(a=>n.test(a)).map(p):r,t=l?r.filter(a=>!n.test(a)):[],u=b?Math.floor(.6*b):void 0,v=s,w=0;if(u&&v.join("\n").length>u){let a=(0,i.Cr)(v,a=>(0,i.Ox)(a),{maxChars:u},"t0-fact-lines");w=a.dropped.length,v=a.selected}let B=v.length?`【关键事实层——来自绑定材料的数值、参数与标准编号,正文必须原样落位,不得改写、不得编造层内没有的数值】
86
+ ${v.map(a=>`- ${a}`).join("\n")}${w>0?`
87
+ (事实行总量超出预算上限,已按重要性保留前 ${v.length} 行)`:""}`:"",C=b?b-B.length:void 0;void 0!==C&&void 0!==b&&C<Math.min(2e3,b)&&(C=Math.min(2e3,b));let D=g&&e?a.resources.filter(b=>b.snippets.some(c=>e({chapterId:a.chapterId,filePath:b.filePath,score:b.score,content:c})>0)):a.resources,E=y(D.length>0?D:a.resources,C?Math.floor(.35*C):void 0,(a,b)=>[`- 资料:${j(a,b)}`,` 资料类型:${a.kind}`,` 正文用途:${a.contentUse}`,a.relatedFacts.length?` 可用事实方向:${a.relatedFacts.join("、")}`:"",a.snippets.length?` 可用内容:${a.snippets.map(k).filter(Boolean).join(" / ")}`:""].filter(Boolean).join("\n"),a=>a.score),F=g&&e?a.textEvidence.filter(a=>e(a)>0):a.textEvidence,G=g&&0===F.length?a.textEvidence:F,H=C?Math.floor(.65*C):void 0,I="",J=H;if(t.length>0){let a=(0,i.Cr)(t,a=>(0,i.Ox)(a),{maxChars:H},"t0-demoted-fact-lines");a.selected.length>0&&(I=`工艺参数与规范事实行(按相关度排序):
90
88
  ${a.selected.map(a=>`- ${a}`).join("\n")}${a.dropped.length>0?`
91
- (另有 ${a.dropped.length} 行因预算省略,完整事实仍参与检索与质量校验)`:""}`,void 0!==I&&(I=Math.max(0,I-H.length)))}let J=y(F,I,(a,b)=>{let c=k(a.content),d=c.length>1200?q(c,1200):c;return`${j(a,b)}
89
+ (另有 ${a.dropped.length} 行因预算省略,完整事实仍参与检索与质量校验)`:""}`,void 0!==J&&(J=Math.max(0,J-I.length)))}let K=y(G,J,(a,b)=>{let c=k(a.content),d=c.length>1200?q(c,1200):c;return`${j(a,b)}
92
90
  类型:${a.processingType||"reference"}
93
91
  章节/片段:${a.sectionTitle?.replace(f.tK,"")||"资料片段"}
94
92
  内容:
95
- ${d}`},a=>x(a,c)+(e?e(a):0)),K=[];D.lines.length&&K.push(`结构化资料:
96
- ${D.lines.join("\n")}`),H&&K.push(H),J.lines.length&&K.push(`文本/附件片段:
97
- ${J.lines.join("\n\n---\n\n")}`);let L=K.join("\n\n"),M=[...D.omittedItems,...J.omittedItems],N=M.map((a,b)=>z(a,b)),O=N.length?`【证据目录——未全文注入的片段索引(正文写作不使用目录内容;目录供覆盖检索与修复追溯,完整片段仍参与后续检索与质量校验)】
98
- ${N.join("\n")}`:"",P=M.reduce((a,b)=>a+("content"in b?b.content.length:(b.snippets[0]||"").length),0),Q={t0Chars:w.length,t1Chars:L.length,t2Lines:N.length,t2Chars:O.length,omittedChars:P,omittedCount:M.length};return{t0Text:w,t1Text:L,t2Text:O,omittedNote:Q.omittedCount>0?`提示:完整证据池仍保留 ${a.textEvidence.length} 条文本片段、${a.resources.length} 个结构化材料;本次已注入关键事实层 ${Q.t0Chars} 字(数值参数全量)与高相关片段 ${Q.t1Chars} 字,另有 ${Q.omittedCount} 条片段(${Q.omittedChars} 字)仅以目录索引呈现,将在章节/小节相关检索和质量校验中继续参与。`:"",stats:Q}}function B(a,b={}){let c=A(a,Number.isFinite(b.maxChars)&&b.maxChars>0?Math.ceil(b.maxChars):void 0,b.requiredFacts||[],!!b.skipT0,b.rankBoost,!!b.onlyRankBoosted);if(b.diagnostics){let a=b.diagnostics.evidence;a.t0Chars+=c.stats.t0Chars,a.t1Chars+=c.stats.t1Chars,a.t2Lines+=c.stats.t2Lines,a.omittedChars+=c.stats.omittedChars}return[a.summary,c.t0Text,c.t1Text,c.t2Text,c.omittedNote].filter(Boolean).join("\n\n")}function C(a,b,c){let d=Number.isFinite(c)&&c>0?Math.floor(c):8e3,e=A(a,Math.floor(.5*d),b,!1),f=Math.max(1500,d-e.t0Text.length),g=y(a.textEvidence,f,(a,b)=>{let c=k(a.content),d=c.length>300?`${c.slice(0,300)}…`:c;return`- [${b}] ${j(a)}|${d}`},a=>x(a,b)),h=g.lines.length?`【章级证据摘要池——全章证据要点概览(正文事实必须以关键事实层与绑定材料为准,摘要仅供定位材料方向)】
99
- ${g.lines.join("\n")}`:"",i=g.omittedItems.slice(0,40).map((a,b)=>z(a,b)),l=i.length?`【证据目录——未进摘要池的片段索引(正文写作不使用目录内容;完整片段仍参与后续检索与质量校验)】
93
+ ${d}`},a=>x(a,c)+(e?e(a):0)),L=[];E.lines.length&&L.push(`结构化资料:
94
+ ${E.lines.join("\n")}`),I&&L.push(I),K.lines.length&&L.push(`文本/附件片段:
95
+ ${K.lines.join("\n\n---\n\n")}`);let M=L.join("\n\n"),N=[...E.omittedItems,...K.omittedItems],O=Number(process.env.DOCUMENT_EVIDENCE_CATALOG_MAX_LINES||40),P=Number.isFinite(O)&&O>0?Math.floor(O):40,Q=(h?[]:N).slice(0,P).map((a,b)=>z(a,b)),R=Q.length?`【证据目录——未全文注入的片段压缩摘要(按重要性保留前 ${Q.length} 条${N.length>Q.length?`,另有 ${N.length-Q.length} 条未注入`:""};正文可引用摘要内事实,不得编造摘要外的细节;完整片段仍参与后续检索与质量校验)】
96
+ ${Q.join("\n")}`:"",S=N.reduce((a,b)=>a+("content"in b?b.content.length:(b.snippets[0]||"").length),0),T={t0Chars:B.length,t1Chars:M.length,t2Lines:Q.length,t2Chars:R.length,omittedChars:S,omittedCount:N.length};return{t0Text:B,t1Text:M,t2Text:R,omittedNote:T.omittedCount>0?`提示:完整证据池仍保留 ${a.textEvidence.length} 条文本片段、${a.resources.length} 个结构化材料;本次已注入关键事实层 ${T.t0Chars} 字(数值参数全量)与高相关片段 ${T.t1Chars} 字,另有 ${T.omittedCount} 条片段(${T.omittedChars} 字)仅以目录索引呈现,将在章节/小节相关检索和质量校验中继续参与。`:"",stats:T}}function B(a,b={}){let c=A(a,Number.isFinite(b.maxChars)&&b.maxChars>0?Math.ceil(b.maxChars):void 0,b.requiredFacts||[],!!b.skipT0,b.rankBoost,!!b.onlyRankBoosted,!!b.skipT2Catalog);if(b.diagnostics){let a=b.diagnostics.evidence;a.t0Chars+=c.stats.t0Chars,a.t1Chars+=c.stats.t1Chars,a.t2Lines+=c.stats.t2Lines,a.omittedChars+=c.stats.omittedChars}return[a.summary,c.t0Text,c.t1Text,c.t2Text,c.omittedNote].filter(Boolean).join("\n\n")}function C(a,b,c){let d=Number.isFinite(c)&&c>0?Math.floor(c):8e3,e=A(a,Math.floor(.5*d),b,!1),f=Math.max(1500,d-e.t0Text.length),g=y(a.textEvidence,f,(a,b)=>{let c=k(a.content),d=c.length>300?`${c.slice(0,300)}…`:c;return`- [${b}] ${j(a)}|${d}`},a=>x(a,b)),h=g.lines.length?`【章级证据摘要池——全章证据要点概览(正文事实必须以关键事实层与绑定材料为准,摘要仅供定位材料方向)】
97
+ ${g.lines.join("\n")}`:"",i=g.omittedItems.slice(0,40).map((a,b)=>z(a,b,60)),l=i.length?`【证据目录——未进摘要池的片段索引(正文写作不使用目录内容;完整片段仍参与后续检索与质量校验)】
100
98
  ${i.join("\n")}`:"";return[e.t0Text,h,l].filter(Boolean).join("\n\n")}},70963:(a,b,c)=>{c.d(b,{C:()=>t,i:()=>s});var d=c(73024),e=c(76760),f=c(95734),g=c(22157),h=c(80439),i=c(61373);function j(a){return a.map(a=>`${a.filePath}
101
99
  ${a.sectionTitle||""}
102
100
  ${a.content}`).join("\n")}let k={scope:{title:"项目基本信息、工程范围、主要工程内容",pattern:/项目名称|工程名称|招标范围|施工范围|建设内容|建设规模|建筑面积|工程概况|清单|图纸/u,guidance:"重点填充 works、requirements。必须识别项目名称、建设地点、建设规模、招标范围、工程内容;有来源才写。"},methods:{title:"关键施工方法与专业工序",pattern:/施工方法|施工工艺|工序|流程|专项|装饰|装修|加固|电气|给排水|消防|智能化|暖通|屋面|外墙/u,guidance:"重点填充 methods,并关联 applicableWorks。步骤必须来自资料或由资料中的专业工程内容直接归纳。"},resources:{title:"材料、设备、劳动力、工程量资源",pattern:/材料|设备|机械|劳动力|工程量|清单|规格|型号|数量|单位|暂估|主材/u,guidance:"重点填充 resources。材料设备和工程量能确认多少写多少,数量和单位不得编造。"},scheduleStandards:{title:"工期节点、质量目标、标准规范、验收要求",pattern:/工期|日历天|开工|竣工|节点|进度|质量|验收|标准|规范|合格|创优/u,guidance:"重点填充 schedule、standards。必须优先抽取总工期、质量标准、验收标准和关键节点。"},risksSite:{title:"现场条件、重难点、风险与约束",pattern:/现场|周边|交通|既有|营业|拆除|保护|安全|文明|扬尘|噪声|风险|难点|危大/u,guidance:"重点填充 risks、siteConditions。风险必须给出资料支撑的原因和控制方向。"},requirementsAddendum:{title:"招标管理要求、补疑澄清与修正",pattern:/招标|投标|合同|要求|承包|分包|保修|补疑|澄清|答疑|修正|变更|编制/u,guidance:"重点填充 requirements、addendumChanges。补疑澄清必须写 original、revised、sourceFile。评标办法、评分细则、分值构成、评审内容项属商务程序性内容,对施工组织设计编制无用,一律不抽取、不进图谱。无法确认原文时不要编造。"}};function l(a,b,c=8){return[...new Set(a.filter(a=>b.test(a.content)||b.test(a.sectionTitle||"")||b.test(a.filePath)).map(a=>a.filePath))].slice(0,c)}function m(a){return a.works.length+a.methods.length+a.resources.length+a.schedule.length+a.standards.length+a.risks.length+a.requirements.length+a.siteConditions.length+a.addendumChanges.length}function n(a){let b=e.join(process.env.HOME||process.cwd(),".customize-agent","cache","document-workflow",(0,g.c6)(a||"default"));return d.mkdirSync(b,{recursive:!0}),b}function o(a,b,c){let f=n(a);f&&c&&d.writeFileSync(e.join(f,`project-graph-${b}.json`),JSON.stringify(c,null,2))}function p(a,b){if(!a)return{ok:!1,reasons:["LLM 未返回可解析的 ProjectGraph JSON"]};let c=[],d=m(a),e=j(b);0===d&&c.push("ProjectGraph 全部节点为空"),/招标范围|施工范围|建设内容|工程名称|项目名称|工程量|清单|图纸/u.test(e)&&0===a.works.length&&c.push("缺少工程范围/主要工程内容 works"),/工期|日历天|进度/u.test(e)&&0===a.schedule.length&&c.push("资料包含工期信息但 schedule 为空"),/质量|验收|标准|规范/u.test(e)&&0===a.standards.length&&c.push("资料包含质量/验收/标准信息但 standards 为空"),/材料|设备|机械|劳动力|工程量|清单/u.test(e)&&0===a.resources.length&&c.push("资料包含资源或工程量信息但 resources 为空");let f=[...a.works,...a.methods,...a.resources,...a.schedule,...a.standards,...a.risks,...a.requirements,...a.siteConditions].filter(a=>(a.sourceFiles||[]).length>0).length+a.addendumChanges.filter(a=>a.sourceFile).length;return d>0&&0===f&&c.push("图谱节点缺少来源文件"),{ok:0===c.length,reasons:c}}function q(a,b=!1){let c=a.works.length+a.methods.length+a.resources.length+a.schedule.length+a.standards.length+a.risks.length+a.requirements.length+a.siteConditions.length+a.addendumChanges.length;return(0,h.X5)({type:"file_understanding",roleId:"project-graph",status:"success",message:`${b?"复用缓存:":""}${a.works.length}工程 ${a.methods.length}工法 ${a.resources.length}资源 ${a.schedule.length}节点 ${a.standards.length}标准 ${a.risks.length}风险 ${a.requirements.length}要求 ${a.siteConditions.length}条件 ${a.addendumChanges.length}修正${a.gaps.length?` ${a.gaps.length}缺口`:""}(${c}项)`,details:[...a.works.slice(0,3).map(a=>a.name),...a.resources.slice(0,3).map(a=>a.name),...a.gaps.slice(0,3)]},{subtitle:"项目图谱分析"})}function r(a){return(0,h.X5)({type:"file_understanding",roleId:"project-graph",status:"failed",message:`项目图谱分析失败:${a.slice(0,3).join(";")}`,details:a.slice(0,8)},{subtitle:"项目图谱分析"})}async function s(a){var b;if((0,g.Te)(a.signal),0===a.evidence.length)return{stage:r(["未检索到项目证据,无法生成可信 LLM 项目图谱"])};let c=(b={evidence:a.evidence,requirement:a.requirement,templateId:a.templateId,projectRoot:a.projectRoot},(0,g.c6)({version:"project-graph-v5-short-timeout-single-pass",requirement:b.requirement||"",templateId:b.templateId||"",evidence:b.evidence.map(a=>({filePath:a.filePath,fileSig:function(a,b){if(!a)return;let c=e.isAbsolute(b)?b:e.join(a,b);try{let a=d.statSync(c);return{mtimeMs:a.mtimeMs,size:a.size}}catch{return}}(b.projectRoot,a.filePath),sectionTitle:a.sectionTitle,contentHash:(0,g.c6)({length:a.content.length,head:a.content.slice(0,8e3),tail:a.content.slice(-8e3)})})).sort((a,b)=>`${a.filePath}${a.sectionTitle}`.localeCompare(`${b.filePath}${b.sectionTitle}`))})),h=function(a,b){let c=n(a);if(c)try{let a=JSON.parse(d.readFileSync(e.join(c,`project-graph-${b}.json`),"utf8"));return a&&Array.isArray(a.works)?a:void 0}catch{return}}(a.projectRoot,c),s=h?p(h,a.evidence):void 0;if(h&&s?.ok)return{graph:h,stage:q(h,!0)};let t=[...a.evidence].sort((a,b)=>b.score-a.score),u=function(a){let b=j(a),c=(a,c)=>{let d=function(a,b){let c=a.match(b);return c?.[1]?.replace(/\s+/gu," ").trim().slice(0,500)||""}(b,c);return d?`${a}:${d}`:""};return[c("项目名称",/(?:招标项目名称|项目名称|工程名称)[::\s]*([^。;\n]{3,120})/u),c("建设地点",/(?:建设地点|项目地点|实施地点)[::\s]*([^。;\n]{3,160})/u),c("建设规模",/(?:建设规模|建筑面积|总建筑面积)[::\s]*([^。;\n]{3,120})/u),c("计划工期",/(?:计划工期|总工期|工期要求|工期总日历天数)[::\s]*([^。;\n]{2,80})/u),c("质量标准",/(?:质量标准|质量要求|质量目标)[::\s]*([^。;\n]{2,120})/u),c("招标范围",/(?:招标范围|工程承包范围|施工范围|建设内容)[::\s]*([\s\S]{20,700}?)(?=\n#{1,4}\s|\n\d+[.、]\s|质量|工期|$)/u),l(a,/补疑|澄清|答疑|修正/u).length?`补疑澄清文件:${l(a,/补疑|澄清|答疑|修正/u).join("、")}`:""].filter(Boolean)}(t),v=[];async function w(b,c=[]){let d=function(a,b,c=52e3){let d=k[b],e=[...a].sort((a,b)=>{let c=+!!d.pattern.test(`${a.filePath}${a.sectionTitle||""}${a.content}`);return!!d.pattern.test(`${b.filePath}${b.sectionTitle||""}${b.content}`)-c||b.score-a.score}),f=[],g=0;for(let a of e){let b={...a,content:a.content.replace(/\s+/gu," ").trim().slice(0,5e3)};if((!(g+b.content.length>c)||!(f.length>=8))&&(f.push(b),(g+=b.content.length)>=c||f.length>=18))break}return f}(t,b,c.length?64e3:52e3),h=await (0,f.bb)(`${(0,i.y4)('通读以下项目资料(招标文件、工程量清单、图纸设计说明、补疑文件等),\n输出一个 JSON 对象,描述你对该项目的完整理解。\n\nJSON 字段(全部为数组,无相关信息时返回空数组):\n works: [{name, scope, sourceFiles, relatedItems}]\n methods: [{name, steps, applicableWorks, sourceFiles}]\n resources: [{name, type:"material"|"equipment"|"labor", spec, quantity, unit, sourceFiles}]\n schedule: [{milestone, duration, startDate, endDate, sourceFiles}]\n standards: [{code, description, sourceFiles}]\n risks: [{risk, level:"high|medium|low", mitigation, sourceFiles}]\n requirements: [{category, detail, sourceFiles}]\n siteConditions: [{condition, impact, sourceFiles}]\n addendumChanges: [{originalPath, original, revised, sourceFile}]\n gaps: [string] 仅记录资料中确实缺失且影响施工组织设计编制的事实;证据中已出现的内容不得声称「未提供/未找到」\n\n只基于资料内容,不编造。每个条目标注来源文件。只返回 JSON。')}