@customize-agent/server 4.8.4 → 4.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +2 -2
  3. package/.next/prerender-manifest.json +3 -3
  4. package/.next/server/chunks/208.js +3 -6
  5. package/.next/server/chunks/4680.js +7 -5
  6. package/.next/server/chunks/4771.js +101 -0
  7. package/.next/server/chunks/5284.js +2 -2
  8. package/.next/server/chunks/5726.js +7 -0
  9. package/.next/server/chunks/8661.js +1 -1
  10. package/.next/server/pages/404.html +1 -1
  11. package/.next/server/pages/500.html +1 -1
  12. package/.next/server/pages/api/assets/generated/preview.js +1 -1
  13. package/.next/server/pages/api/assets/generated/preview.js.nft.json +1 -1
  14. package/.next/server/pages/api/assets/generated.js +1 -1
  15. package/.next/server/pages/api/assets/generated.js.nft.json +1 -1
  16. package/.next/server/pages/api/documents/chapter/regenerate.js +1 -1
  17. package/.next/server/pages/api/documents/chapter/regenerate.js.nft.json +1 -1
  18. package/.next/server/pages/api/documents/export.js +1 -1
  19. package/.next/server/pages/api/documents/export.js.nft.json +1 -1
  20. package/.next/server/pages/api/documents/generate.js +2 -2
  21. package/.next/server/pages/api/documents/generate.js.nft.json +1 -1
  22. package/.next/server/pages/api/documents/generated/[id].js +1 -1
  23. package/.next/server/pages/api/documents/generated/[id].js.nft.json +1 -1
  24. package/.next/server/pages/api/documents/generated.js +1 -1
  25. package/.next/server/pages/api/documents/generated.js.nft.json +1 -1
  26. package/.next/server/pages/api/documents/templates.js +1 -1
  27. package/.next/server/pages/api/documents/templates.js.nft.json +1 -1
  28. package/.next/server/pages/api/kb/files/reindex.js +1 -1
  29. package/.next/server/pages/api/kb/files/reindex.js.nft.json +1 -1
  30. package/.next/server/pages/api/kb/intelligence.js +1 -1
  31. package/.next/server/pages/api/kb/intelligence.js.nft.json +1 -1
  32. package/.next/server/pages/api/kb/reindex.js +1 -1
  33. package/.next/server/pages/api/kb/reindex.js.nft.json +1 -1
  34. package/.next/server/pages/api/kb/upload/complete.js +1 -1
  35. package/.next/server/pages/api/kb/upload/complete.js.nft.json +1 -1
  36. package/.next/server/pages/api/kb/upload.js +1 -1
  37. package/.next/server/pages/api/kb/upload.js.nft.json +1 -1
  38. package/.next/server/pages/api/prompt.js +1 -1
  39. package/.next/server/pages/api/prompt.js.nft.json +1 -1
  40. package/.next/server/pages/api/template-references.js +1 -1
  41. package/.next/server/pages/api/template-references.js.nft.json +1 -1
  42. package/.next/server/pages/asset-library.html +1 -1
  43. package/.next/server/pages/document-roles.html +1 -1
  44. package/.next/server/pages/documents.html +1 -1
  45. package/.next/server/pages/guide.html +1 -1
  46. package/.next/server/pages/index.html +1 -1
  47. package/.next/server/pages/knowledge/file-detail.html +1 -1
  48. package/.next/server/pages/knowledge/files.html +1 -1
  49. package/.next/server/pages/knowledge/manage.html +1 -1
  50. package/.next/server/pages/knowledge.html +1 -1
  51. package/.next/server/pages/models.html +1 -1
  52. package/.next/server/pages/overview.html +1 -1
  53. package/.next/server/pages/prompt.html +1 -1
  54. package/.next/server/pages/settings.html +1 -1
  55. package/.next/server/pages/system/logs.html +1 -1
  56. package/.next/server/pages/template-references.html +1 -1
  57. package/.next/server/pages-manifest.json +30 -30
  58. package/package.json +1 -1
  59. package/.next/server/chunks/1404.js +0 -99
  60. package/.next/server/chunks/2484.js +0 -1
  61. /package/.next/static/{UIqiA9CZtvGl5Z-xG_tmf → FT0lgaPHm6tsjBp2QoJ4H}/_buildManifest.js +0 -0
  62. /package/.next/static/{UIqiA9CZtvGl5Z-xG_tmf → FT0lgaPHm6tsjBp2QoJ4H}/_ssgManifest.js +0 -0
@@ -16,9 +16,9 @@ ${b.join("\n")}`,d=new Set,e=(a,b)=>{b.test(c)&&d.add(a)};return e("工期进度
16
16
  ${b.join("\n")}`,d=new Set;return/工期|进度|节点|计划/u.test(c)&&d.add("确保工期的保障体系与措施"),/质量|验收|复试|见证取样|规范|标准/u.test(c)&&d.add("确保质量的保障体系与措施"),/安全|危大|风险|应急|临电|消防/u.test(c)&&d.add("确保安全生产的管理体系与措施"),/劳动力|材料|机械|设备|周转|资源/u.test(c)&&d.add("确保人、材、机的保障体系与措施"),/施工方法|施工工艺|道路|桥梁|排水|照明|园林|绿化/u.test(c)&&d.add("主要分部分项工程施工方案"),/环保|扬尘|文明|绿色/u.test(c)&&d.add("环境保护与文明施工措施"),/项目|工程|建设地点|建设规模|招标范围/u.test(c)&&d.add("工程概况与施工部署"),[...d]}(a.relativePath,k);return{relativePath:a.relativePath,root:d,fileName:e.basename(a.relativePath),category:a.category,format:a.format,chunkCount:a.chunkCount,indexedAt:a.indexedAt,contentHash:a.contentHash,status:a.status,roles:f,usableForBody:!i,excludeReason:i,summarySignals:h,contentFacts:k,intentTags:l,chapterHints:m}}),h=c.flatMap(t),k=c.flatMap(a=>a.intentTags.flatMap(b=>a.contentFacts.slice(0,10).map((c,d)=>({intent:b,filePath:a.relativePath,title:a.fileName,content:c,score:.82-.025*d,roleId:a.roles[0]})))),l={selectedRoots:[...new Set(c.map(a=>a.root).filter(Boolean))],selectedFiles:c.map(a=>a.relativePath),totalAvailableFiles:c.length,ambiguous:!1,locked:!0,reason:"项目入库完成后预计算的项目级资料范围",rejectedRoots:[],scopeHash:u(c)},n=(0,i.hw)(a,l),o=(0,i.rj)({facts:h,materialSnapshot:n}),q=await (0,j.i)({evidence:c.flatMap(a=>a.contentFacts.slice(0,10).map((b,c)=>({chapterId:"project-intelligence",filePath:a.relativePath,content:b,score:.82-.02*c,roleId:a.roles[0],processingType:"project_intelligence",source:"project-intelligence"}))),projectRoot:a,requirement:"项目入库后预计算项目图谱",templateId:"project-intelligence"});if(!q.graph)throw Error(`项目图谱预计算失败:${q.stage.message||q.stage.status}`);let v=function(a,b){let c=(a,b)=>{let c=new Map;for(let d of[...a,...b]){let a=JSON.stringify(d);c.has(a)||c.set(a,d)}return[...c.values()]};return{works:c(a.works,b.works),methods:c(a.methods,b.methods),resources:c(a.resources,b.resources),schedule:c(a.schedule,b.schedule),standards:c(a.standards,b.standards),risks:c(a.risks,b.risks),requirements:c(a.requirements,b.requirements),siteConditions:c(a.siteConditions,b.siteConditions),addendumChanges:c(a.addendumChanges,b.addendumChanges),gaps:[...new Set([...a.gaps||[],...b.gaps||[]])],generatedAt:b.generatedAt||Date.now()}}(o,q.graph),w=q.stage.message||"项目图谱已预计算",x=y(v,c),z={version:m,projectRoot:a,projectId:(0,f.computeProjectId)(a),createdAt:Date.now(),sourceHash:u(c),fileCount:c.length,files:c,facts:h,chapterIntentIndex:k,projectGraph:v,projectGraphMessage:w,constructionOrganizationGraph:x,blueprint:{projectNames:[...new Set(h.filter(a=>/项目名称/u.test(a.key)).map(a=>a.value))].slice(0,8),roots:[...new Set(c.map(a=>a.root).filter(Boolean))],usableFiles:c.filter(a=>a.usableForBody).length,excludedFiles:c.filter(a=>!a.usableForBody).length,intentTags:[...new Set(c.flatMap(a=>a.intentTags))],signals:c.flatMap(a=>a.contentFacts.slice(0,2)).slice(0,24)}};return d.writeFileSync(p(a),JSON.stringify(z,null,2)),z}function B(a){let b=w(a.projectRoot);if(!b)return;let c=(0,i.ZR)(a.projectRoot,a.template,a.requirement||"");if(c.ambiguous||!c.locked||0===c.selectedFiles.length)return;let e=(0,l.c6)({version:n,selectedFiles:c.selectedFiles.slice().sort(),templateId:a.template.id,chapters:a.template.chapters.map(a=>({id:a.id,title:a.title,sections:a.sections||[]}))}),f=function(a,b){let c=q(a,b);if(d.existsSync(c))try{let b=JSON.parse(d.readFileSync(c,"utf8"));if(b.version!==n||!v(a,b.files))return;return b}catch{return}}(a.projectRoot,e)||function(a){let b=new Set(a.selectedFiles),c=a.cache.files.filter(a=>b.has(a.relativePath));if(0===c.length||!v(a.projectRoot,c))return;let e=a.cache.facts.filter(a=>b.has(a.sourceFile)),f=function(a,b){let c=a=>!a?.length||a.some(a=>b.has(a));return{...a,works:a.works.filter(a=>c(a.sourceFiles)),methods:a.methods.filter(a=>c(a.sourceFiles)),resources:a.resources.filter(a=>c(a.sourceFiles)),schedule:a.schedule.filter(a=>c(a.sourceFiles)),standards:a.standards.filter(a=>c(a.sourceFiles)),risks:a.risks.filter(a=>c(a.sourceFiles)),requirements:a.requirements.filter(a=>c(a.sourceFiles)),siteConditions:a.siteConditions.filter(a=>c(a.sourceFiles)),addendumChanges:a.addendumChanges.filter(a=>b.has(a.sourceFile))}}(a.cache.projectGraph,b),g=function(a,b){let c=a.workPackages.filter(a=>{let c;return!(c=a.sourceFiles).length||c.some(a=>b.has(a))}),d=new Set(c.map(a=>a.name));return{...a,workPackages:c,controlMatrix:a.controlMatrix.filter(a=>0===a.relatedWorkPackages.length||a.relatedWorkPackages.some(a=>d.has(a)))}}(a.cache.constructionOrganizationGraph,b),h=function(a){let b={};for(let c of a.template.chapters){let d=function(a,b=[]){let c=`${a}
17
17
  ${b.join("\n")}`,d=new Set,e=(a,b)=>{b.test(c)&&d.add(a)};return e("工期进度",/工期|进度|计划|节点/u),e("质量验收",/质量|验收|复试|见证|控制点/u),e("安全危大",/安全|危大|风险|应急/u),e("施工部署",/部署|总平面|施工组织|现场/u),e("施工方法",/施工方案|施工方法|分部分项|工艺/u),e("人材机",/人材机|劳动力|材料|机械|周转/u),e("环境文明",/环保|文明|扬尘|绿色/u),e("工程概况",/概况|工程特点|重点|难点/u),[...d]}(c.title,c.sections||[]);if(0===d.length)continue;let e=new Set(d),f=a.entries.filter(b=>a.selected.has(b.filePath)&&e.has(b.intent)).sort((a,b)=>b.score-a.score).slice(0,24).map(a=>({chapterId:c.id,filePath:a.filePath,score:a.score,content:a.content,roleId:a.roleId,processingType:"project_intelligence",sectionTitle:a.intent,source:"project-intelligence"}));f.length&&(b[c.id]=f)}return b}({template:a.template,entries:a.cache.chapterIntentIndex||[],selected:b}),i={version:n,projectRoot:a.projectRoot,createdAt:Date.now(),scopeHash:a.scopeHash,selectedRoots:a.selectedRoots,selectedFiles:a.selectedFiles,sourceHash:(0,l.c6)(c.map(a=>({path:a.relativePath,hash:a.contentHash,chunkCount:a.chunkCount})).sort((a,b)=>a.path.localeCompare(b.path))),files:c,facts:e,projectGraph:f,constructionOrganizationGraph:g,evidenceByChapterId:h,blueprint:{projectNames:[...new Set(e.filter(a=>/项目名称/u.test(a.key)).map(a=>a.value))].slice(0,8),roots:[...new Set(c.map(a=>a.root).filter(Boolean))],usableFiles:c.filter(a=>a.usableForBody).length,excludedFiles:c.filter(a=>!a.usableForBody).length,intentTags:[...new Set(c.flatMap(a=>a.intentTags))],signals:c.flatMap(a=>a.contentFacts.slice(0,2)).slice(0,24)}};return d.writeFileSync(q(a.projectRoot,a.scopeHash),JSON.stringify(i,null,2)),i}({projectRoot:a.projectRoot,template:a.template,cache:b,selectedFiles:c.selectedFiles,selectedRoots:c.selectedRoots,scopeHash:e});if(f)return{cache:b,scope:c,scopeSnapshot:f,files:f.files,facts:f.facts,evidenceByChapterId:f.evidenceByChapterId,projectGraph:f.projectGraph,constructionOrganizationGraph:f.constructionOrganizationGraph,constructionOrganizationContext:z(f.constructionOrganizationGraph),blueprint:f.blueprint}}function C(a){let b=`project-intelligence-${Date.now()}`;(0,h.Qf)(a,{id:b,type:"reindex",title:"项目理解缓存",stage:"generating",status:"processing",percent:5,message:"正在构建项目级蓝图、图谱、事实索引和章节意图索引"}),A(a).then(c=>{(0,h.Qf)(a,{id:b,type:"reindex",title:"项目理解缓存",stage:"done",status:"success",percent:100,message:`项目理解缓存完成:${c.fileCount} 份资料,${c.facts.length} 条事实,${c.chapterIntentIndex.length} 条章节意图证据`})}).catch(c=>{let d=c instanceof Error?c.message:String(c);(0,h.Qf)(a,{id:b,type:"reindex",title:"项目理解缓存",stage:"error",status:"error",percent:100,message:d,error:d}),console.warn("[project-intelligence] build failed",d)})}},28366:(a,b,c)=>{c.d(b,{TG:()=>j,bC:()=>i,ip:()=>g});var d=c(73024),e=c(76760),f=c(22157);let g={factGovernance:{thresholdComparison:"不低于|不少于|不高于|不超过|不得少于|不得高于|不得小于|不小于|不大于|大于等于|小于等于|≥|≤|≧|≦|以上|及以上|以内|之内",amendmentContext:"修正|调整|变更|更改|更正|改为|澄清|更新|修订",aspirationalPrefix:"拟|规划|目标|力争|预计|期望|远期|未来|设想|建议|预期|争取|拟建|规划建设",addendumSource:"补疑|答疑|澄清|补充|更正|修改",weakAnchorGapThreshold:9},writingSpec:{criticalSectionAnchors:["主要施工内容","工程概况","项目概况","重点难点","危大工程","应急预案","施工部署","总平面","主要分部分项工程施工方案","主要施工方法"],majorContentSection:"项目主要施工内容",divisionSection:"主要分部分项工程施工方案|主要施工方法",divisionProcessLabel:"工艺流程|施工流程",criticalDeepSections:["项目特点.*重点.*难点|重点.*难点.*分析","项目主要施工内容","主要分部分项工程施工方案|主要施工方法","危大工程专项施工方案审批流程","原材料进场复试|见证取样"],blockerMinChars:{emergency:650,majorContent:1800,division:1200,focus:1500},divisionQuality:{blockerMinPackages:3,minPackages:5,minParamsPerPackage:4,minArrowChainLength:4,minPackageChars:150,balanceRatio:1/3},writeRules:{majorContent:"【项目主要施工内容专项结构】只能根据绑定材料中的当前项目事实识别施工对象和工作包;不得套用固定行业模板,不得复述完整工程概况,不得写“以图纸清单为准”式空话;不得使用 Markdown 表格。必须按专业工程/分部分项工程逐项展开,每项使用“#### 工作包名称”作为三级小节标题,并固定包含“施工概况:”“施工流程:”“施工方法:”三段。工作包小节必须与上下文“主要施工工作包”列表一一对应,每个工作包只允许展开一次;严禁把同一个工作包以“X工程”“X工作包”两种口径重复写成两个小节,也不得新增图谱之外的工作包小节。施工概况必须写该工作包对应的本项目作业对象、部位、规模/工程量、材料设备或系统边界,写成连贯叙述段落,不得出现“1.xxx 2.xxx”编号清单或“xxx|工程量”式清单原文罗列;施工流程必须使用“→”串联关键工序;施工方法必须写成连贯叙述,落到具体工具机具、测量/检测方法、工艺参数、材料规格、穿插关系、质量验收、复试检测和资料闭环,方法叙述中的连续工序序列同样用“→”串联(如“基层清理→放线定位→分层摊铺→碾压→压实度检测→验收”),每个工作包的方法段正文至少 1 条不少于 4 个环节的箭头工序链,不得只把箭头局限在施工流程行;每个工作包施工方法必须落位至少 3 个具体工艺参数(厚度、间距、偏差、含水率、饱满度、坡度、压实度等),参数来自绑定材料或行业通用规范值,禁止“按规范施工”“结合实际执行”式空话,严禁把工程量清单条目原样罗列成“xxx:2台;xxx:1台;”式参数堆砌。施工方法写法样例(句式参照,内容按本项目事实替换):“配电箱采用挂墙方式安装,箱体中心距地1.5m,盘面垂直度偏差不超过1.5/1000;柜内元器件按系统图接线,导线分色标识,接线紧固力矩按规格控制;安装完成后进行绝缘电阻测试并形成通电试运行记录。”至少形成 5 个施工工作包,工作包必须来自绑定材料证据。",division:"【主要分部分项工程施工方案专项要求】每个“#### 分项工程方案”三级小节必须包含施工概况(本项目作业对象、部位、工程量)、工艺流程(用“→”串联关键工序)和施工方法(工具机具、材料规格、验收标准)。严禁用“**分项名**”粗体行代替“#### 分项名”小节标题,也不得把多个分项合并写在一个段落里。施工方法叙述中的连续工序序列同样用“→”串联(如“基层清理→放线定位→分层摊铺→碾压→压实度检测→验收”),每个分项方案的方法段正文至少 1 条不少于 4 个环节的箭头工序链,不得只把箭头局限在工艺流程行;每个分项方案正文必须落位至少 4 个工艺参数(mm、MPa、间距、偏差、坡度、养护天数、试验压力、搭接长度等),参数来自绑定材料或行业通用规范值,不得编造;纯设备配置型小节必须写型号、规格、容量、数量参数;不得写“按规范施工”“结合实际执行”式空话。分项间深度必须均衡:门窗维修、立面修补、设备安装等小分项同样要写足施工概况、工艺流程、施工方法三段(每个分项不少于 150 字),不得一句话带过;严禁写“其他专业工序引用相应章节内容”“详见相关章节”等自我消解语,工艺流程只能在本分项方案内展开,不得另行拆节复述。"}}},h=new Map;function i(a){let b=h.get(a);if(b)return b;let c=g,f=function(a){if(a)return e.join(a,".customize-agent","workflow-rules.json")}(a);if(f&&d.existsSync(f))try{let a=JSON.parse(d.readFileSync(f,"utf8"));c=function(a,b){if(!b)return a;let c={...a.factGovernance,...b.factGovernance||{}},d={...a.writingSpec.blockerMinChars,...b.writingSpec?.blockerMinChars||{}},e={...a.writingSpec.divisionQuality,...b.writingSpec?.divisionQuality||{}},f={...a.writingSpec.writeRules,...b.writingSpec?.writeRules||{}};return{factGovernance:c,writingSpec:{...a.writingSpec,...b.writingSpec||{},blockerMinChars:d,divisionQuality:e,writeRules:f}}}(g,a)}catch{}return h.set(a,c),c}function j(a){return(0,f.c6)(i(a))}},32434:(a,b,c)=>{c.d(b,{IA:()=>w,Qu:()=>t,SU:()=>v,ZR:()=>n,cN:()=>u,hw:()=>o,rj:()=>s});var d=c(76760),e=c(44533),f=c(61373),g=c(80439),h=c(22157);let i=/知识库|系统暂未|项目资料暂未|资料未明确|暂未明确|待确认|待资料复核|待系统|通用兜底(?:段落|模板)?|兜底(?:占位|模板|内容)|未检索到|资料不足|无法确认|建议补充|不适用|COL\d+|可核验信息|以本项目招标文件明确内容为准/u;function j(a){return a.replace(/\\/gu,"/").replace(/^\/+|\/+$/gu,"")}function k(a){let b=j(a).split("/").filter(Boolean);return b.length>1?b[0]:d.basename(b[0]||"当前项目")}function l(a){return a.replace(/[\s_\-—()()【】、,,.。·]/gu,"").replaceAll("[","").replaceAll("]","").toLowerCase()}function m(a){return"disk"!==a.status&&"error"!==a.status&&Number(a.indexedAt||0)>0&&Number(a.chunkCount||0)>0}function n(a,b,c=""){let d=(0,e.Yy)(a).filter(m),f=(b.projectBindings||[]).filter(a=>a.materialRootPath).map(a=>({materialRootPath:j(a.materialRootPath)})).map(a=>a.materialRootPath).filter(Boolean),g=f.length?d.filter(a=>f.some(b=>j(a.relativePath)===b||j(a.relativePath).startsWith(`${b}/`))):d,i=function(a){let b=new Map;for(let c of a){let a=k(c.relativePath);b.set(a,[...b.get(a)||[],c])}return b}(g),o=c.trim(),p=[...i.keys()];if(o){let a=[...i.entries()].map(([a,b])=>({root:a,files:b,score:function(a,b){let c=l(a),d=l(b);if(c.length>=4&&d.includes(c.slice(0,Math.min(16,c.length))))return 100;let e=new Set(["项目","工程","施工","总承包","资料","招标","图纸","清单"]);return a.split(/(?:\s|_|-|—|(|)|\(|\)|【|】|\[|\]|、|,|,|\.)+/u).filter(a=>a.length>=2&&!e.has(a)).reduce((a,c)=>a+(b.includes(c)?Math.min(20,c.length):0),0)}(a,o)})).filter(a=>a.score>0).sort((a,b)=>b.score-a.score);if(1===a.length||a.length>1&&a[0].score>a[1].score){let b=[a[0].root],c=a[0].files.map(a=>a.relativePath);return{selectedRoots:b,selectedFiles:c,totalAvailableFiles:d.length,ambiguous:!1,locked:!0,reason:`用户需求唯一匹配资料组:${a[0].root}`,rejectedRoots:p.filter(a=>!b.includes(a)),scopeHash:(0,h.c6)({selectedRoots:b,selectedFiles:c})}}if(a.length>1){let b=a.filter(b=>b.score===a[0].score).map(a=>a.root);return{selectedRoots:[],selectedFiles:[],totalAvailableFiles:d.length,ambiguous:!0,locked:!1,reason:`用户需求同时匹配多个资料组:${b.join("、")}`,rejectedRoots:p,scopeHash:(0,h.c6)({ambiguous:!0,selectedRoots:b})}}}if(1===f.length){let a=g.map(a=>a.relativePath);return{selectedRoots:f,selectedFiles:a,totalAvailableFiles:d.length,ambiguous:!1,locked:!0,reason:`模板绑定唯一资料组:${f[0]}`,rejectedRoots:p.filter(a=>!f.includes(a)),scopeHash:(0,h.c6)({selectedRoots:f,selectedFiles:a})}}return{selectedRoots:[],selectedFiles:[],totalAvailableFiles:d.length,ambiguous:!0,locked:!1,reason:f.length>1?`模板绑定多个资料组但需求未唯一指定:${f.join("、")}`:"未绑定资料组且需求未唯一指定资料范围,禁止回退全量资料",rejectedRoots:p,scopeHash:(0,h.c6)({ambiguous:!0,boundRoots:f,requirement:c})}}function o(a,b){let c=new Map((0,e.Yy)(a).map(a=>[a.relativePath,a])),f=b.selectedFiles.map(a=>{let b=c.get(a),e=Number(b?.chunkCount||0);return{path:a,root:k(a),fileName:d.basename(a),chunkCount:e,indexedAt:b?.indexedAt,status:b?.status,hash:(0,h.c6)({filePath:a,chunkCount:e,indexedAt:b?.indexedAt,status:b?.status})}});return{files:f,totalFiles:f.length,totalChunks:f.reduce((a,b)=>a+b.chunkCount,0),roots:[...new Set(f.map(a=>a.root))],createdAt:Date.now(),snapshotHash:(0,h.c6)(f.map(a=>({path:a.path,hash:a.hash})))}}function p(a,b){return a.filter(a=>b.test(`${a.fieldId||""} ${a.fieldName||""} ${a.key} ${(0,h.lG)(a.value)}`))}function q(a){return(0,h.lG)(a.value).replace(/\s+/gu," ").trim()}let r=new Set(["资料文件","资料组","资料角色","资料内容事实","章节意图候选","项目名称候选"]);function s(a){let b=a.facts.filter(a=>!r.has(a.key)&&q(a)),c=p(b,/项目名称|工程名称|招标项目名称|建设地点|建设规模|招标范围|施工范围|建设内容/u),d=p(b,/工期|日历天|进度|开工|竣工/u),e=p(b,/质量|验收|合格|标准|规范/u),f=p(b,/清单|工程量|材料|设备|机械|劳动力|资源/u),g=p(b,/安全|文明|环保|危大|风险/u),h=c.slice(0,8).map(a=>`${a.key}:${q(a)}`).join(";");return{works:h?[{name:a.materialSnapshot.roots[0]||"当前项目",scope:h,sourceFiles:[...new Set(c.map(a=>a.sourceFile).filter(Boolean))],relatedItems:f.slice(0,8).map(a=>q(a))}]:[],methods:[],resources:f.slice(0,30).map(a=>({name:a.key,type:"material",spec:q(a),quantity:"",unit:"",sourceFiles:a.sourceFile?[a.sourceFile]:[]})),schedule:d.slice(0,10).map(a=>({milestone:a.key,duration:q(a),startDate:"",endDate:"",sourceFiles:a.sourceFile?[a.sourceFile]:[]})),standards:e.slice(0,16).map(a=>({code:a.key,description:q(a),sourceFiles:a.sourceFile?[a.sourceFile]:[]})),risks:g.slice(0,16).map(a=>({risk:q(a),level:"medium",mitigation:"",sourceFiles:a.sourceFile?[a.sourceFile]:[]})),requirements:p(b,/招标|投标|合同|承包|响应|要求|补疑|澄清|答疑/u).slice(0,20).map(a=>({category:a.key,detail:q(a),sourceFiles:a.sourceFile?[a.sourceFile]:[]})),siteConditions:p(b,/现场|周边|交通|既有|保护|场地/u).slice(0,12).map(a=>({condition:q(a),impact:"",sourceFiles:a.sourceFile?[a.sourceFile]:[]})),addendumChanges:[],gaps:[],generatedAt:Date.now()}}function t(a){let b=n(a.projectRoot,a.template,a.requirement||"");if(b.ambiguous||!b.locked||0===b.selectedFiles.length)throw Error(`资料范围未锁定:${b.reason}`);let c=o(a.projectRoot,b),d=a.projectGraph||s({facts:a.facts,materialSnapshot:c,requirement:a.requirement}),e=a.projectGraph?"project-graph":"project-graph-runtime",f=a.projectGraph?"预处理完整项目图谱":"运行期项目图谱草案",g=Date.now();return{runId:`run-${g}-${(0,h.c6)({templateId:a.template.id,requirement:a.requirement||"",scopeHash:b.scopeHash}).slice(0,8)}`,templateId:a.template.id,requirement:a.requirement||"",projectRoot:a.projectRoot,materialScope:b,materialSnapshot:c,nodes:[{id:"material-scope",type:"material_scope",status:"completed",startedAt:g,completedAt:g,outputSummary:b.reason,metrics:{selectedFiles:b.selectedFiles.length,rejectedRoots:b.rejectedRoots.length}},{id:"material-snapshot",type:"material_snapshot",status:"completed",startedAt:g,completedAt:g,outputSummary:`${c.totalFiles} 份资料,${c.totalChunks} 个切片`,metrics:{totalFiles:c.totalFiles,totalChunks:c.totalChunks}},{id:e,type:"project_graph",status:"completed",startedAt:g,completedAt:g,outputSummary:`${f}:${d.works.length}工程 ${d.resources.length}资源 ${d.schedule.length}工期 ${d.standards.length}标准`,metrics:{facts:a.facts.length,precomputed:!!a.projectGraph,source:a.projectGraphSource||"runtime"}}],facts:a.facts,baseProjectGraph:d,issues:[],createdAt:g}}function u(a,b=200,c=50){if(a.nodes.length<=b)return;let d=a.nodes.slice(-c),e=a.nodes.slice(0,a.nodes.length-c),f=e.filter(a=>"project_graph"!==a.type&&("completed"===a.status||"failed"===a.status||"skipped"===a.status)),g=e.filter(a=>!f.includes(a));if(0===f.length)return;let h={id:`nodes-archive-${Date.now()}`,type:"summary",status:"completed",startedAt:f[0].startedAt,completedAt:f[f.length-1].completedAt||Date.now(),outputSummary:`已归档 ${f.length} 个历史节点(${[...new Set(f.map(a=>a.type))].join("、")})`,metrics:{archivedNodes:f.length}};a.nodes.splice(0,a.nodes.length,...g,h,...d)}function v(a){let b=a.nodes.find(a=>"project_graph"===a.type),c=!!b?.metrics?.precomputed;return[(0,g.X5)({type:"validation",roleId:"agent-material-scope",status:"success",message:`资料范围已锁定:${a.materialScope.selectedRoots.join("、")}`,details:[`${a.materialScope.reason}`,`入选资料:${a.materialScope.selectedFiles.length}/${a.materialScope.totalAvailableFiles}`,`已排除资料组:${a.materialScope.rejectedRoots.slice(0,8).join("、")||"无"}`]},{subtitle:"Agent 资料范围锁定"}),(0,g.X5)({type:"knowledge_retrieval",roleId:"agent-material-snapshot",status:"success",message:`资料快照已固定:${a.materialSnapshot.totalFiles} 份资料、${a.materialSnapshot.totalChunks} 个切片`,details:a.materialSnapshot.files.slice(0,10).map(a=>`${a.root}|${a.fileName}|${a.chunkCount}切片`)},{subtitle:"Agent 资料快照"}),(0,g.X5)({type:"file_understanding",roleId:c?"agent-project-graph-cache":"agent-project-graph-runtime",status:"success",message:c?`已复用预处理完整项目图谱:${a.baseProjectGraph.works.length}工程 ${a.baseProjectGraph.resources.length}资源 ${a.baseProjectGraph.schedule.length}工期 ${a.baseProjectGraph.standards.length}标准`:`运行期项目图谱草案已建立:${a.baseProjectGraph.works.length}工程 ${a.baseProjectGraph.resources.length}资源 ${a.baseProjectGraph.schedule.length}工期 ${a.baseProjectGraph.standards.length}标准`,details:c?[`完整图谱来自入库后 project-intelligence 预处理`,`事实数:${a.facts.length}`]:[`缓存缺失时用于资料范围和 Planner 预备分析;正式完整项目图谱会随后由 LLM 构建`,`事实数:${a.facts.length}`]},{subtitle:c?"Agent 完整项目图谱缓存":"Agent 项目图谱预备分析"})]}function w(a){let b=a.split(/\r?\n/u),c=[];return b.forEach((a,b)=>{i.test(a)&&c.push({level:"error",severity:"blocker",category:"style",owner:"system",message:`正式正文不得出现后台或兜底话术:第 ${b+1} 行`,suggestion:"必须改为有事实依据的正式表达;非必填缺失字段应删除,必填事实缺失应阻断生成。"})}),[...c,...(0,f.bx)(a)].slice(0,20)}},35882:(a,b,c)=>{c.d(b,{dK:()=>p,yt:()=>j});var d=c(70208);let e=[{id:"basis-overview",title:"编制说明与工程概况",aliases:["编制说明","工程概况","项目概况","项目基本情况","工程基本信息"],category:"setup",level:"core",sectionItems:["编制依据","项目主要施工内容","项目特点、重点、难点分析"],queries:["工程概况","编制依据","招标范围","建设地点","建设规模","工期质量目标"],facts:["工程名称","建设地点","建设规模","招标范围","计划工期","质量目标"],tableSections:["项目重难点识别表"],attachHints:["概况","项目","工程","说明","总纲","部署"]},{id:"organization",title:"项目管理组织机构与职责",aliases:["组织机构","项目管理","岗位职责","管理机构","管理人员"],category:"setup",level:"core",sectionItems:["项目管理组织架构","管理人员岗位职责","内外部协调机制","劳务实名制与人员管理"],queries:["项目管理组织机构","岗位职责","项目经理","技术负责人","劳资员"],facts:["项目管理人员","岗位职责","持证人员","管理组织"],tableSections:["项目管理人员岗位职责配置表","内外协调沟通计划表"],attachHints:["组织","管理","部署","概况","保障"]},{id:"deployment",title:"施工部署与施工流水组织",aliases:["施工部署","总体部署","流水组织","施工组织","流水段"],category:"setup",level:"core",sectionItems:["施工总体部署","施工区段与流水段划分","各阶段施工顺序","多工序穿插与交叉作业管理","资源动态调配机制"],queries:["施工部署","流水段划分","施工顺序","工序穿插","资源调配"],facts:["施工范围","施工阶段","流水段","工期节点","资源配置"],tableSections:["施工流水段划分一览表","交叉作业安全管控清单"],attachHints:["部署","组织","总体","概况","方案"]},{id:"site-layout",title:"施工现场平面布置与临设管理",aliases:["总平面布置","现场平面","平面布置","临设","临水临电","人车分流"],category:"setup",level:"core",sectionItems:["施工现场总平面布置","办公区生活区加工区材料堆放区布置","现场交通组织与人车分流","临时用水布置","临时用电三级配电两级保护","材料场内转运路线"],queries:["施工总平面","临时用电","临时用水","材料堆放","场内交通"],facts:["施工现场条件","临设布置","临水临电","材料堆场","交通组织"],tableSections:["现场总平面分区布置表","场内交通导改组织计划表","临时用电负荷统计表","临时用水布置统计表","材料场内转运路线规划表"],attachHints:["部署","平面","现场","临设","组织"]},{id:"progress",title:"进度计划与工期保障",aliases:["进度计划","工期保障","工期计划","节点控制","进度控制"],category:"setup",level:"core",sectionItems:["总进度计划","关键节点控制计划","周计划日计划分解机制","进度偏差分析与纠偏措施","工期风险预警机制"],queries:["总工期","进度计划","关键节点","工期保障","进度纠偏"],facts:["计划工期","开竣工时间","关键节点","资源保障"],tableSections:["关键施工节点控制计划表"],attachHints:["进度","工期","部署","资源","保障"]},{id:"resources",title:"资源配置计划",aliases:["资源配置","机械设备","劳动力","材料计划","人材机"],category:"setup",level:"core",sectionItems:["主要施工机械设备投入计划","分阶段劳动力投入计划","主要材料进场计划","周转材料配置计划","资源动态调配机制"],queries:["机械设备投入","劳动力计划","材料进场计划","周转材料","资源配置"],facts:["机械设备","劳动力","材料","工程量","施工阶段"],tableSections:["主要施工机械设备投入计划表","分阶段劳动力动态投入计划表","主要材料进场验收管控表"],attachHints:["资源","部署","进度","保障","组织"]},{id:"main-methods",title:"主要分部分项工程施工方案",aliases:["主要施工方案","施工方案","施工方法","分部分项","工艺方案","技术措施"],category:"technical",level:"core",sectionItems:["主要分部分项工程施工流程","关键工序施工工艺","质量控制点与验收要求","施工重难点专项措施"],queries:["分部分项工程","施工工艺","施工方法","验收要求","技术措施"],facts:["施工内容","工程量","图纸做法","技术标准","验收规范"],tableSections:["分项工程施工控制要点表","主要工程量一览表"],attachHints:["方案","施工","技术","工艺","措施"]},{id:"quality",title:"质量管理体系与质量保证措施",aliases:["质量管理","质量保证","质量控制","质量措施","验收管理"],category:"assurance",level:"core",sectionItems:["质量管理目标","三检制度","样板引路制度","隐蔽工程验收","原材料进场复试与见证取样","实测实量与质量通病治理","成品保护专项措施","质量问题闭环整改机制"],queries:["质量保证措施","三检制度","样板引路","隐蔽验收","质量通病","成品保护"],facts:["质量目标","验收标准","材料复试","质量控制点"],tableSections:["隐蔽工程验收清单表","分项工程质量控制要点表","质量通病防治清单表","样板引路实施计划表","成品保护管控清单表"],attachHints:["质量","保障","保证","措施","管理","验收"]},{id:"safety-risk",title:"安全管理、风险分级与危大工程管控",aliases:["安全管理","安全措施","风险分级","危大工程","安全生产","隐患排查"],category:"assurance",level:"core",sectionItems:["安全管理目标","危险源辨识与风险分级管控","危大工程辨识清单","危大工程专项施工方案审批流程","安全技术逐级交底","临边洞口高处作业起重吊装消防临电管理","安全隐患排查与闭环整改","应急救援组织与应急演练"],queries:["安全管理","风险分级管控","危大工程","安全技术交底","临时用电","消防安全"],facts:["安全目标","危大工程","风险源","安全标准","应急要求"],tableSections:["危险源辨识与风险分级管控清单","危大工程全流程闭环管控表","安全防护设施验收计划表","交叉作业安全管控清单","消防设施布置表"],attachHints:["安全","风险","危大","保障","措施","管理"]},{id:"environment-green",title:"文明施工、扬尘、噪声与绿色施工",aliases:["文明施工","扬尘治理","噪声管控","绿色施工","环保措施","四节一环保","建筑垃圾"],category:"environment",level:"core",sectionItems:["文明施工目标","扬尘污染专项管控","噪声分时段管控","施工废水沉淀处理","建筑垃圾分类回收","四节一环保措施","智慧工地与在线监测"],queries:["文明施工","扬尘治理","噪声管控","绿色施工","建筑垃圾分类","四节一环保"],facts:["文明施工目标","扬尘要求","噪声要求","环保标准","垃圾处置"],tableSections:["环境污染物管控指标一览表","建筑垃圾分类管理表","噪声分级管控表"],attachHints:["文明","环保","绿色","扬尘","噪声","保障","措施"]},{id:"labor-wage",title:"农民工工资保障与劳务管理",aliases:["农民工工资","工资保障","劳务管理","实名制","银行代发","工资专户"],category:"labor",level:"mandatory",sectionItems:["劳务实名制管理","农民工工资专用账户","银行代发制度","工资按月足额发放","考勤台账与工资支付台账","工资保证金与劳资纠纷处置"],queries:["农民工工资保障","劳务实名制","工资专用账户","银行代发","工资支付台账"],facts:["劳务管理要求","工资支付要求","实名制要求"],tableSections:["农民工工资管控台账表","劳务实名制管理台账表"],attachHints:["工资","劳务","实名","保障","措施","管理"]},{id:"external-protection",title:"周边环境、管线与既有建构筑物保护",aliases:["周边环境","管线保护","地下管线","既有建筑","交通导行","居民沟通"],category:"external",level:"conditional",sectionItems:["周边道路居民区学校医院商业区识别","既有地下管线探测与保护","临近建构筑物沉降监测","交通导行与公众安全保障","居民沟通与投诉响应机制"],queries:["地下管线保护","周边环境保护","交通导行","居民沟通","临近建筑沉降监测"],facts:["周边环境","地下管线","交通条件","居民区","既有建筑"],tableSections:["临近建筑地下管线保护清单表","交通导改组织计划表"],attachHints:["周边","管线","交通","居民","市政","改造","保护","环境","方案"]},{id:"seasonal",title:"季节性施工保障",aliases:["季节性施工","雨季施工","夏季高温","冬季施工","防汛","大风天气"],category:"seasonal",level:"core",sectionItems:["雨季施工措施","夏季高温施工措施","冬季施工措施","防汛防雷大风天气应急措施"],queries:["季节性施工","雨季施工","高温施工","冬季施工","防汛措施"],facts:["施工季节","当地气候","工期节点","防汛要求"],tableSections:["季节性施工资源配置表"],attachHints:["季节","雨季","高温","冬季","防汛","保障","措施"]},{id:"emergency",title:"应急管理体系",aliases:["应急管理","应急预案","应急救援","事故处置","演练计划"],category:"emergency",level:"core",sectionItems:["应急组织架构","应急物资储备","高处坠落物体打击坍塌触电火灾暴雨大风高温中暑专项预案","应急响应流程","应急演练计划","事故上报与复盘整改"],queries:["应急预案","应急组织","应急物资","应急演练","事故上报"],facts:["应急要求","安全风险","应急物资","演练计划"],tableSections:["应急物资储备清单表","应急演练计划表"],attachHints:["应急","预案","救援","安全","保障","措施"]},{id:"innovation-tech",title:"新技术、新工艺、新材料、新设备的应用",aliases:["新技术","新工艺","新材料","新设备","四新技术","科技创新","四新"],category:"digital",level:"conditional",sectionItems:["新技术新工艺应用计划","新材料应用与性能保障","新设备投入与功效提升","创新技术应用效果与实施保障"],queries:["新技术应用","新工艺","新材料","新设备","四新"],facts:["新技术要求","新工艺要求","新材料要求","新设备要求"],tableSections:["新技术新工艺应用计划表"],attachHints:["技术","创新","保障","措施","质量","工期"]},{id:"digital-bim",title:"BIM、智慧工地与创新加分模块",aliases:["BIM","智慧工地","数字化","智能监测","创新加分","AI视频识别"],category:"digital",level:"optional",sectionItems:["BIM场地布置优化","BIM管线综合深化","4D进度模拟","智慧工地视频监控","扬尘噪声实名制塔机黑匣子监测","AI视频识别与风险预警"],queries:["BIM应用","智慧工地","数字化管控","扬尘在线监测","实名制管理"],facts:["智慧工地要求","BIM要求","监测设备","信息化管理"],tableSections:["BIM智慧工地应用点表","智慧工地监测点位清单"],attachHints:["BIM","智慧","数字","创新","加分","保障","措施"]},{id:"delivery",title:"竣工清理、验收移交与保修",aliases:["竣工验收","竣工清理","验收移交","资料归档","保修","分户验收"],category:"delivery",level:"conditional",sectionItems:["竣工清理与垃圾外运","缺陷修补与复查销项","竣工资料归档","验收移交与保修响应"],queries:["竣工验收","资料归档","验收移交","保修响应","竣工清理"],facts:["竣工要求","验收标准","移交要求","保修要求"],tableSections:["竣工清理与移交计划表"],attachHints:["竣工","验收","移交","保修","收尾"]}],f={building:[{id:"building-methods",title:"房建工程专项施工工艺",aliases:["房建","基础主体","主体结构","二次结构","屋面防水","多塔吊"],category:"technical",level:"conditional",projectTypes:["building"],sectionItems:["基坑开挖及支护","基坑降水及沉降监测","钢筋模板混凝土施工","砌体及二次结构施工","屋面与厨卫防水闭水试验","机电预留预埋","多塔吊作业防碰撞"],queries:["房建工程施工","主体结构","二次结构","屋面防水","多塔防碰撞"],facts:["建筑结构","层数高度","基础形式","主体结构","防水做法"],tableSections:["多塔防碰撞管控表","隐蔽工程验收清单表"],attachHints:["方案","施工","技术","工艺","房建","主体"]}],municipal:[{id:"municipal-methods",title:"市政工程专项施工工艺",aliases:["市政","道路","管网","沟槽","交通导改","雨污水"],category:"technical",level:"conditional",projectTypes:["municipal"],sectionItems:["全线现场踏勘与地下管线探测","交通导改与占道施工","沟槽开挖支护与降排水","雨污水管道铺设与闭水试验","路基分层碾压与压实度检测","水稳基层与沥青面层施工","新旧管网道路接驳与竣工移交"],queries:["市政工程","交通导改","地下管线","沟槽开挖","管道闭水","沥青摊铺"],facts:["道路长度","管线类型","交通条件","沟槽深度","路面结构"],tableSections:["既有管线保护管控表","交通导改组织计划表"],attachHints:["方案","施工","技术","工艺","市政","道路","管网"]}],renovation:[{id:"renovation-methods",title:"老旧小区改造专项施工组织",aliases:["老旧小区","小区改造","改造工程","飞线整治","雨污分流"],category:"technical",level:"conditional",projectTypes:["renovation"],sectionItems:["居民沟通协调机制","楼栋单元分区分段施工","原有建构筑物与既有设施保护","外墙空鼓铲除加固与屋面翻新防水","雨污管网分流与飞线整治","降噪防尘与不中断通行保障"],queries:["老旧小区改造","居民沟通","分区施工","既有保护","飞线整治","雨污分流"],facts:["小区现状","居民通行","改造范围","既有设施","外墙屋面"],tableSections:["居民沟通协调计划表","既有成品保护清单表"],attachHints:["方案","施工","技术","工艺","改造","小区","居民"]}],decoration:[{id:"decoration-methods",title:"装饰装修工程专项施工工艺",aliases:["装饰装修","装修","精装修","吊顶","墙地面","成品保护"],category:"technical",level:"conditional",projectTypes:["decoration"],sectionItems:["墙地面基层处理与挂网防开裂","厨卫阳台分层防水与48小时闭水试验","吊顶龙骨加固与木构件防火防腐","墙地面铺装空鼓防控与阴阳角收口","交叉施工工序优化","室内空气质量管控与成品保护"],queries:["装饰装修","基层处理","闭水试验","吊顶龙骨","成品保护","室内空气质量"],facts:["装修范围","材料做法","防水部位","吊顶做法","环保要求"],tableSections:["成品保护管控清单表","交叉施工工序优化表"],attachHints:["方案","施工","技术","工艺","装饰","装修"]}]},g=[...e,...f.building,...f.municipal,...f.renovation,...f.decoration];function h(a){return(0,d.GQ)(a).replace(/\s+/gu,"").toLowerCase()}function i(a,b,c){let d=new Set,e=[...a||[],...b].map(a=>a.trim()).filter(a=>a&&!d.has(a)&&(d.add(a),!0));return"number"==typeof c?e.slice(0,c):e}function j(a){let b=h(`${a.template.name} ${a.template.outputTitle||""} ${a.requirement||""} ${a.chapters.map(a=>a.title).join(" ")}`),c=[];return/市政|道路|管网|雨污|污水|给水|沟槽|交通导|沥青|水稳|检查井/u.test(b)&&c.push("municipal"),/老旧小区|小区改造|改造|修缮|飞线|居民|雨污分流/u.test(b)&&c.push("renovation"),/装饰|装修|精装|吊顶|墙地面|乳胶漆|瓷砖|石材|室内/u.test(b)&&c.push("decoration"),/房建|住宅|办公楼|厂房|主体结构|基础|屋面|二次结构|塔吊|建筑/u.test(b)&&c.push("building"),c.length?[...new Set(c)]:["general"]}function k(a,b,c){return!!(!a.projectTypes?.length||a.projectTypes.some(a=>b.includes(a)))||a.aliases.some(a=>c.includes(h(a)))||a.sectionItems.some(a=>c.includes(h(a)))}function l(a,b,c=!1){let d=h(a),e=0;if(!c){for(let a of b.attachHints)d.includes(h(a))&&(e+=5);/概况|部署|组织|平面|资源|进度/u.test(d)&&"setup"===b.category&&(e+=6),/方案|施工|技术|工艺|分部分项|方法/u.test(d)&&"technical"===b.category&&(e+=8),/保障|保证|措施|管理/u.test(d)&&["assurance","environment","labor","seasonal","emergency","digital"].includes(b.category)&&(e+=6)}for(let a of b.aliases){let b=h(a);(d.includes(b)||b.includes(d))&&(e+=12)}return/质量/u.test(d)&&"quality"===b.id&&(e+=15),/安全|危大|风险/u.test(d)&&"safety-risk"===b.id&&(e+=15),/工期|进度/u.test(d)&&"progress"===b.id&&(e+=15),/文明|环保|扬尘|噪声|绿色/u.test(d)&&"environment-green"===b.id&&(e+=15),/工资|劳务|实名/u.test(d)&&"labor-wage"===b.id&&(e+=15),/应急|预案/u.test(d)&&"emergency"===b.id&&(e+=15),/季节|雨季|冬季|高温|防汛/u.test(d)&&"seasonal"===b.id&&(e+=15),/周边|管线|交通|居民|保护/u.test(d)&&"external-protection"===b.id&&(e+=12),/BIM|智慧|数字|创新/iu.test(a)&&"digital-bim"===b.id&&(e+=15),/竣工|验收|移交|保修/u.test(d)&&"delivery"===b.id&&(e+=15),e}function m(a,b){let c={index:0,score:-1};if(b.forEach((b,d)=>{let e=l(b.title,a);e>c.score&&(c={index:d,score:e})}),c.score>0)return c.index;let d={setup:/概况|部署|组织|资源|进度|总体/u,technical:/方案|施工|技术|工艺|措施/u,assurance:/保障|保证|措施|管理|质量|安全/u,environment:/保障|措施|文明|环保|绿色/u,labor:/保障|措施|劳务|工资/u,external:/方案|施工|周边|保护|交通/u,seasonal:/保障|措施|季节|雨季/u,emergency:/保障|措施|应急|安全/u,digital:/保障|措施|智慧|BIM|创新/u,delivery:/竣工|验收|移交|收尾/u},e=b.findIndex(b=>d[a.category].test(b.title));return e>=0?e:Math.max(0,b.length-1)}function n(a){return/雨季|冬季|高温|防汛|扬尘|噪声|工资|劳务|实名|应急|BIM|智慧|管线|交通导改|垃圾分类|多塔|成品保护/u.test(a)}function o(a){return/保障|保证|措施|管理/u.test(a)&&!n(a)}function p(a){if(!function(a){let b=h(`${a.template.name} ${a.template.outputTitle||""} ${a.requirement||""} ${a.chapters.map(a=>a.title).join(" ")}`);return!!/施工组织设计|施工组织|施组|技术标|投标技术|施工方案/u.test(b)||["施工","工程","质量","安全","进度","文明","部署","方案"].filter(a=>b.includes(a)).length>=3&&!/监理|可研|运维|维护|保养/u.test(b)}(a))return{chapters:a.chapters,report:{attached:[],unattached:[],totals:{attachedModules:0,sectionCount:0}}};let b=j(a),c=h(`${a.template.name} ${a.template.outputTitle||""} ${a.requirement||""} ${a.chapters.map(a=>`${a.title} ${(a.sections||[]).join(" ")}`).join(" ")}`),d=a.chapters.some(a=>/概况|部署|总体|组织|主要施工方案|保障|保证|综合措施|管理体系/u.test(a.title)&&!/雨季|冬季|高温|防汛|扬尘|噪声|工资|劳务|应急|BIM|智慧|管线|交通导改/u.test(a.title)),f=g.filter(a=>k(a,b,c)),p=new Set,q={attached:[],unattached:[],totals:{attachedModules:0,sectionCount:0}},r=a.chapters.map(a=>({...a,sections:[...a.sections||[]],queries:[...a.queries||[]],requiredFacts:[...a.requiredFacts||[]],tableSections:[...a.tableSections||[]]}));for(let a of f){let e=r.map((b,c)=>({index:c,score:l(b.title,a,o(b.title)),chapter:b})).filter(d=>(function(a,b,c,d){if(!k(a,c,d))return!1;let e=h(b.title);if(a.aliases.some(a=>e.includes(h(a)))||a.sectionItems.some(a=>e.includes(h(a))))return!0;if(n(b.title))return!1;if(o(b.title))return"conditional"!==a.level&&"optional"!==a.level&&l(b.title,a,!0)>=10;let f=l(b.title,a);return f>=10||("optional"===a.level?f>=12||/BIM|智慧|数字|创新/iu.test(d):"conditional"===a.level?f>=8||a.projectTypes?.some(a=>c.includes(a))===!0||a.aliases.some(a=>d.includes(h(a))):f>=6)})(a,d.chapter,b,c)).sort((a,b)=>b.score-a.score),f=e[0]?.index,g=f??(d&&("core"===a.level||"mandatory"===a.level)?m(a,r):-1);if(g<0&&"conditional"===a.level&&(g=m(a,r)),g<0)continue;let j=r[g],s=function(a,b){let c=h(b.title);return a.aliases.some(a=>c.includes(h(a)))||c.includes(h(a.title)),a.title}(a,j);j.sections=i(j.sections,[s,...a.sectionItems]),j.queries=i(j.queries,[a.title,...a.queries]),j.requiredFacts=i(j.requiredFacts,a.facts),j.tableSections=i(j.tableSections,a.tableSections||[]),j.purpose=`${j.purpose};系统已按施工组织设计标准模块库自动挂靠“${a.title}”,仅在本章范围内展开与章节语义、项目类型和资料事实合理相关的内容,禁止机械塞入无关内容。`,p.add(a.id),q.attached.push({chapterId:j.id,chapterTitle:j.title,moduleId:a.id,moduleTitle:a.title,kind:void 0!==f?"matched":"fallback"})}for(let a of d?f.filter(a=>("mandatory"===a.level||"core"===a.level)&&!p.has(a.id)):[]){let b=m(a,r),c=r[b];c.sections=i(c.sections,[a.title,...a.sectionItems]),c.queries=i(c.queries,[a.title,...a.queries]),c.requiredFacts=i(c.requiredFacts,a.facts),c.tableSections=i(c.tableSections,a.tableSections||[]),c.purpose=`${c.purpose};系统已补足施工组织设计必备模块“${a.title}”,需以合理挂靠方式呈现,不改变用户一级章节。`,p.add(a.id),q.attached.push({chapterId:c.id,chapterTitle:c.title,moduleId:a.id,moduleTitle:a.title,kind:"fallback"})}if(!r.some(a=>/项目主要施工内容|主要施工内容/u.test(`${a.title} ${(a.sections||[]).join(" ")}`))){let a=e.find(a=>"basis-overview"===a.id),b=r.findIndex(a=>/概况|重点|难点|部署|总体|施工|保障/u.test(a.title)),c=r[b>=0?b:0];c.sections=function(a,b,c){let d=new Set;return[...b,...a||[]].map(a=>a.trim()).filter(a=>a&&!d.has(a)&&(d.add(a),!0))}(c.sections,["项目主要施工内容"]),c.queries=i(c.queries,["项目主要施工内容",...a?.queries||[]]),c.requiredFacts=i(c.requiredFacts,a?.facts||["施工内容","工程量","施工范围"]),c.purpose=`${c.purpose};系统已补足施工组织设计必备小节“项目主要施工内容”,必须按工作包展开施工概况、施工流程、施工方法。`}for(let a of f)p.has(a.id)||q.unattached.push({moduleId:a.id,moduleTitle:a.title,level:a.level,sections:a.sectionItems,reason:"no-semantic-chapter"});return q.totals.attachedModules=p.size,q.totals.sectionCount=r.reduce((a,b)=>a+(b.sections||[]).length,0),{chapters:r,report:q}}},37095:(a,b,c)=>{c.d(b,{CU:()=>s,H7:()=>r,JB:()=>o,Qf:()=>m,kW:()=>p,oy:()=>n,sn:()=>q});var d=c(29021),e=c(21820),f=c(33873),g=c(19898);function h(a){return f.join(e.homedir(),".customize-agent","projects",(0,g.computeProjectId)(a),"kb-operations.jsonl")}function i(a,b){let c=h(a);d.mkdirSync(f.dirname(c),{recursive:!0});let e=`${c}.${process.pid}.${Date.now()}.tmp`;d.writeFileSync(e,`${b.slice(-200).map(a=>JSON.stringify(a)).join("\n")}
18
18
  `,"utf8"),d.renameSync(e,c)}let j=new Set,k=new Map;function l(a){let b=k.get(a);return b||(b=function(a){let b=function(a){let b=h(a);return d.existsSync(b)?d.readFileSync(b,"utf8").split("\n").filter(Boolean).flatMap(a=>{try{return[JSON.parse(a)]}catch{return[]}}):[]}(a);if(j.has(a))return b;let c=b.filter(a=>"processing"===a.status);if(c.length>0){let d=Date.now();for(let a of c)a.status="error",a.stage="error",a.error="服务重启导致任务中断,未完成",a.message=a.error,a.updatedAt=d;i(a,b)}return j.add(a),b}(a),k.set(a,b)),b}function m(a,b){let c=Date.now(),d=l(a),e=d.findIndex(a=>a.id===b.id),f=e>=0?d[e]:void 0,g={id:b.id,type:b.type,title:b.title,stage:b.stage??f?.stage??"uploading",status:b.status??f?.status??"processing",message:b.message??f?.message??"",percent:b.percent??f?.percent??0,fileName:b.fileName??f?.fileName,filePath:b.filePath??f?.filePath,chunkCount:b.chunkCount??f?.chunkCount,textLength:b.textLength??f?.textLength,extractionMode:b.extractionMode??f?.extractionMode,error:b.error??f?.error,details:b.details??f?.details,createdAt:f?.createdAt??c,updatedAt:c};return e>=0?d[e]=g:d.push(g),i(a,d),g}function n(a,b=50){return l(a).sort((a,b)=>b.updatedAt-a.updatedAt).slice(0,b)}function o(a,b){return l(a).find(a=>a.id===b)}function p(a,b){return l(a).filter(a=>!b||a.type===b).sort((a,b)=>b.updatedAt-a.updatedAt)[0]}function q(a){return l(a).filter(a=>"processing"===a.status).sort((a,b)=>b.updatedAt-a.updatedAt)}function r(a){let b=l(a),c=h(a);return d.existsSync(c)&&d.unlinkSync(c),k.delete(a),b.length}function s(a,b){let c=l(a),d=c.findIndex(a=>a.id===b);return!(d<0)&&(c.splice(d,1),i(a,c),!0)}},40693:(a,b,c)=>{c.d(b,{Av:()=>s,CS:()=>v,FI:()=>m,Fw:()=>n,Hl:()=>o,Ls:()=>k,b7:()=>t,c8:()=>l,db:()=>q,iX:()=>p});var d=c(35882),e=c(3063);let f=["精心组织","科学管理","精益求精","全力保障","高效推进","力争一流","最大限度","显著提升","大力落实","充分确保","严格把控"],g=[{pattern:/质量|验收|隐蔽|样板|通病/u,label:"质量闭环",required:["自检","互检","交接检","整改","复查","归档"],prompt:"质量类内容必须形成“自检—互检—交接检—整改—复查—资料归档”闭环。"},{pattern:/安全|风险|危大|临电|消防|吊装|高处/u,label:"安全闭环",required:["辨识","交底","检查","整改","复查","销项"],prompt:"安全类内容必须形成“风险辨识—专项交底—现场检查—隐患整改—复查销项”闭环。"},{pattern:/进度|工期|节点|计划/u,label:"进度闭环",required:["计划","检查","偏差","纠偏","复核"],prompt:"进度类内容必须形成“计划分解—日/周检查—偏差识别—资源纠偏—节点复核”闭环。"},{pattern:/文明|扬尘|噪声|绿色|环保|垃圾/u,label:"环保闭环",required:["监测","预警","处置","台账"],prompt:"文明环保类内容必须形成“监测—预警—联动处置—台账记录”闭环。"},{pattern:/工资|劳务|实名/u,label:"工资闭环",required:["实名","考勤","核算","公示","代发","归档"],prompt:"工资保障类内容必须形成“实名登记—考勤—核算—公示—银行代发—归档”闭环。"},{pattern:/应急|预案|救援|事故/u,label:"应急闭环",required:["发现","警戒","疏散","处置","上报","复盘"],prompt:"应急类内容必须形成“发现险情—警戒疏散—初期处置—救援上报—复盘整改”闭环。"}],h={building:{label:"房建工程",chain:["施工准备","土方/基础","主体结构","二次结构","防水","机电安装","装饰装修","室外工程","竣工验收"],forbidden:["管道闭水试验","沥青摊铺","水稳层","交通导改"],prompt:"房建类章节应按“施工准备—基础—主体—二次结构—防水—机电—装饰—室外—验收”组织,不得混入市政道路工序。"},municipal:{label:"市政工程",chain:["测量放线","管线探测","围挡导行","沟槽/路基","管道/结构","回填","水稳/沥青/铺装","标线设施","验收移交"],forbidden:["主体结构","二次结构","塔吊","外脚手架","屋面防水"],prompt:"市政类章节应按“测量放线—管线探测—围挡导行—沟槽/路基—管道/结构—回填—路面恢复—验收移交”组织,不得写成房建主体结构逻辑。"},renovation:{label:"老旧小区改造",chain:["居民沟通","分区施工","既有保护","外墙/屋面/管网改造","扰民控制","竣工恢复"],forbidden:["大面积深基坑","高支模","大体量主体结构","长距离交通导改"],prompt:"老旧小区改造类章节必须体现“居民沟通—分区施工—既有保护—改造作业—扰民控制—竣工恢复”,不得忽略居民通行和既有设施保护。"},decoration:{label:"装饰装修工程",chain:["基层处理","防水闭水","吊顶龙骨","墙地面铺装","细部收口","成品保护","空气质量验收"],forbidden:["深基坑","路基压实","水稳层","沥青摊铺","大体量土方"],prompt:"装饰装修类章节应按“基层处理—防水闭水—吊顶墙面—地面铺装—细部收口—成品保护—空气质量验收”组织,不得混入基坑、路基等无关内容。"}},i=[{title:"招标评分项响应索引",pattern:/技术标|施工组织设计|评分|响应/u,prompt:"设置招标评分项响应索引,逐项对应章节、响应内容和位置。"},{title:"主要工程量一览表",pattern:/工程量|清单|土方|钢筋|混凝土|管道|路面/u,prompt:"将主要工程量表格化,关联资源配置和进度节点。"},{title:"影像资料留存",pattern:/隐蔽|危大|整改|验收|样板/u,prompt:"隐蔽、危大、材料验收、样板和整改前后对比必须留存影像资料。"},{title:"变更签证管理",pattern:/改造|市政|工期紧|变更|签证/u,prompt:"改造、市政或工期紧项目应补充变更识别、技术核定、签证资料和影响跟踪。"},{title:"危险品专项管理",pattern:/装修|装饰|动火|油漆|稀释剂|氧气|乙炔/u,prompt:"涉及动火、油漆、稀释剂、氧气乙炔时应补充危险品分区存放与动火审批。"},{title:"材料损耗与周转控制",pattern:/钢筋|模板|周转|材料|大体量/u,prompt:"体量大或材料占比高时应补充钢筋翻样、模板周转、余料回收和限额领料。"},{title:"分户验收",pattern:/住宅|住户|交付|分户/u,prompt:"住宅项目应补充分户实测、问题清单、整改销项和交付资料。"}];function j(a){return a.replace(/\s+/gu,"").toLowerCase()}function k(a){let b=`${a.title} ${(a.sections||[]).join(" ")}`;return/施工组织设计|施工组织|施组|技术标|施工方案|质量|安全|文明施工/u.test(b)?["【施工组织设计专项写作规则】","- 禁止空话套话:不要只写“加强管理、严格控制、确保质量、精心组织、科学管理”,必须写成“责任岗位+执行动作+量化标准+检查频次+整改时限+复查销项”。","- 每项措施至少包含责任主体、执行标准、检查频次、整改闭环;项目特有数据必须来自资料或图谱。",...g.filter(a=>a.pattern.test(b)).map(a=>`- ${a.prompt}`),...i.filter(a=>a.pattern.test(b)).map(a=>`- 高分补充:${a.prompt}`)].join("\n"):""}function l(a){let b=k(a);return b?b.split("\n").map(a=>` - ${a}`):[]}function m(a){let b=(0,d.yt)({template:{id:"runtime",name:a.templateName,outputTitle:a.outputTitle||"",description:"",category:"",chapters:a.chapters},chapters:a.chapters,requirement:a.requirement}).filter(a=>"general"!==a).map(a=>h[a].prompt);return b.length?`【专业工序链约束】
19
- ${b.map(a=>`- ${a}`).join("\n")}`:""}function n(a){let b=[];for(let c of a){let a=f.filter(a=>c.content.includes(a));a.length>0&&b.push({level:"warning",message:`${c.title} 存在施工组织设计空泛套话:${[...new Set(a)].slice(0,8).join("、")}`,suggestion:"请按“责任岗位+执行动作+量化标准+检查频次+整改时限+复查销项”重写相关措施。"})}return b}function o(a){let b=[];for(let c of a){let a=`${c.title} ${(c.sections||[]).join(" ")}`;for(let d of g){if(!d.pattern.test(a))continue;let e=d.required.filter(a=>!c.content.includes(a));e.length>=Math.ceil(d.required.length/2)&&b.push({level:"warning",message:`${c.title} 缺少${d.label}关键链条:${e.join("、")}`,suggestion:d.prompt})}}return b}function p(a){let b=j(`${a.markdown} ${a.factsModel.project.map(a=>a.value).join(" ")} ${a.factsModel.preciseFacts.map(a=>a.value).join(" ")}`),c=[];for(let d of Object.values(h)){let e=d.chain.filter(a=>b.includes(j(a)));if(!(RegExp(d.label,"u").test(a.markdown)||e.length>=3))continue;let f=d.forbidden.filter(a=>b.includes(j(a)));f.length>=2&&c.push({level:"warning",message:`疑似${d.label}内容混入不匹配工序:${f.join("、")}`,suggestion:d.prompt}),e.length<Math.min(3,d.chain.length)&&c.push({level:"warning",message:`${d.label}工序链覆盖不足:仅识别到 ${e.join("、")||"未识别到关键工序"}`,suggestion:d.prompt})}return c}function q(a){let b=`${a.title} ${(a.sections||[]).join(" ")} ${(a.queries||[]).join(" ")}`,c=i.filter(a=>a.pattern.test(b));return 0===c.length?"":["【隐藏高分模块触发】",...c.map(a=>`- ${a.title}:${a.prompt}`)].join("\n")}function r(a){let b=a.split("\n"),c=b.findIndex(a=>/^###\s+(?:\d+(?:\.\d+)*\s+)?(?:项目主要施工内容|主要施工内容)\s*$/u.test(a.trim()));if(c<0){let a=b.findIndex(a=>/^###\s+(?:\d+(?:\.\d+)*\s+)?[^\n]*主要施工内容[^\n]*$/u.test(a.trim()));if(a>=0){let d=b.length;for(let c=a+1;c<b.length;c+=1)if(/^#{2,3}\s+/u.test(b[c].trim())){d=c;break}let e=b.slice(a,d).join("\n").split(/^####\s+/gmu).slice(1).map(a=>a.trim()).filter(Boolean);e.length>=5&&e.every(a=>a.includes("施工概况")&&a.includes("施工流程")&&a.includes("施工方法"))&&(c=a)}if(c<0)return""}let d=b.length;for(let a=c+1;a<b.length;a+=1)if(/^#{2,3}\s+/u.test(b[a].trim())){d=a;break}return b.slice(c,d).join("\n").replace(/^\*\*([^*\n]{2,50})\*\*\s*$/gmu,"#### $1").replace(/承包人法(?=[::])/gu,"施工方法")}function s(a,b=""){let c=[],d=b||a.map(a=>`${a.title}
19
+ ${b.map(a=>`- ${a}`).join("\n")}`:""}function n(a){let b=[];for(let c of a){let a=f.filter(a=>c.content.includes(a));a.length>0&&b.push({level:"warning",message:`${c.title} 存在施工组织设计空泛套话:${[...new Set(a)].slice(0,8).join("、")}`,suggestion:"请按“责任岗位+执行动作+量化标准+检查频次+整改时限+复查销项”重写相关措施。"})}return b}function o(a){let b=[];for(let c of a){let a=`${c.title} ${(c.sections||[]).join(" ")}`;for(let d of g){if(!d.pattern.test(a))continue;let e=d.required.filter(a=>!c.content.includes(a));e.length>=Math.ceil(d.required.length/2)&&b.push({level:"warning",message:`${c.title} 缺少${d.label}关键链条:${e.join("、")}`,suggestion:d.prompt})}}return b}function p(a){let b=j(`${a.markdown} ${a.factsModel.project.map(a=>a.value).join(" ")} ${a.factsModel.preciseFacts.map(a=>a.value).join(" ")}`),c=[];for(let d of Object.values(h)){let e=d.chain.filter(a=>b.includes(j(a)));if(!(RegExp(d.label,"u").test(a.markdown)||e.length>=3))continue;let f=d.forbidden.filter(a=>b.includes(j(a)));f.length>=2&&c.push({level:"warning",message:`疑似${d.label}内容混入不匹配工序:${f.join("、")}`,suggestion:d.prompt}),e.length<Math.min(3,d.chain.length)&&c.push({level:"warning",message:`${d.label}工序链覆盖不足:仅识别到 ${e.join("、")||"未识别到关键工序"}`,suggestion:d.prompt})}return c}function q(a){let b=`${a.title} ${(a.sections||[]).join(" ")} ${(a.queries||[]).join(" ")}`,c=i.filter(a=>a.pattern.test(b));return 0===c.length?"":["【隐藏高分模块触发】",...c.map(a=>`- ${a.title}:${a.prompt}`)].join("\n")}function r(a){let b=a.split("\n"),c=b.findIndex(a=>/^#{3,4}\s+(?:\d+(?:\.\d+)*\s+)?(?:项目主要施工\s*内容|主要施工\s*内容)\s*$/u.test(a.trim()));if(c<0){let a=b.findIndex(a=>/^###\s+(?:\d+(?:\.\d+)*\s+)?[^\n]*主要施工\s*内容[^\n]*$/u.test(a.trim()));if(a>=0){let d=b.length;for(let c=a+1;c<b.length;c+=1)if(/^#{2,3}\s+/u.test(b[c].trim())){d=c;break}let e=b.slice(a,d).join("\n").split(/^####\s+/gmu).slice(1).map(a=>a.trim()).filter(Boolean);e.length>=5&&e.every(a=>a.includes("施工概况")&&a.includes("施工流程")&&a.includes("施工方法"))&&(c=a)}if(c<0)return""}let d=b.length;for(let a=c+1;a<b.length;a+=1)if(/^#{2,3}\s+/u.test(b[a].trim())){d=a;break}return b.slice(c,d).join("\n").replace(/^\*\*([^*\n]{2,50})\*\*\s*$/gmu,"#### $1").replace(/承包人法(?=[::])/gu,"施工方法")}function s(a,b=""){let c=[],d=b||a.map(a=>`${a.title}
20
20
  ${(a.sections||[]).join("\n")}
21
- ${a.content}`).join("\n\n"),e=a.filter(a=>/项目主要施工内容|主要施工内容/u.test(`${a.title} ${(a.sections||[]).join(" ")}`)),f=/施工组织设计|施工组织|计划工期|质量标准|项目经理|工程概况/u.test(d)&&/施工/u.test(d),g=(a,b)=>{let d=(b.match(/^####\s+(?:\d+(?:\.\d+)*\s+)?[一二三四五六七八九十\d]*[、..]?\s*\S+/gmu)||[]).length||(b.match(/^[一二三四五六七八九十]+、\S+/gmu)||[]).length,e=b.split(/^####\s+/gmu).slice(1).map(a=>a.trim()).filter(Boolean),f=e.filter(a=>!a.includes("施工概况")||!a.includes("施工流程")||!a.includes("施工方法")),g=e.filter(a=>/资料内容事实|#{2,6}\s+|\*\*[^*]+\*\*|未尽事宜|专业施工内容统筹|招标范围还包含|具备有效的.*资质/u.test(a)),h=e.filter(a=>{let b=a.match(/施工方法[::]([\s\S]*?)(?=\n施工|$)/u)?.[1]||"";return b.length<30||(b.match(/工程|维修|改造|安装|设备/gu)||[]).length>=4&&!/\d|㎡|m2|m²|mm|厚|验收|检测|调试|试验|复试|记录|报告/u.test(b)}),i=e.filter(a=>{let b=a.match(/施工流程[::]([\s\S]*?)(?=\n施工方法|$)/u)?.[1]||"";return/未尽事宜|本项目为|总建筑面积|保留现状|专业施工内容统筹|招标文件列明|招标范围/u.test(b)});d<5&&c.push({level:"error",severity:"blocker",message:`${a} 主要施工内容工作包不足:当前 ${d} 个,要求不少于 5 个`,suggestion:"按资料识别专业工程/分部分项工作包,逐项写施工概况、施工流程、施工方法。"}),f.length>0&&c.push({level:"error",severity:"blocker",message:`${a} 主要施工内容存在 ${f.length} 个工作包缺少施工概况/施工流程/施工方法`,suggestion:"每个工作包必须分别包含“施工概况、施工流程、施工方法”,不能只在整节中出现一次。"}),g.length>0&&c.push({level:"error",severity:"blocker",message:`${a} 主要施工内容存在脏事实或标题污染`,suggestion:"清理“资料内容事实”、嵌入的 ### 标题、粗体伪标题、未尽事宜、招标范围罗列等污染内容,只保留可交付正文。"}),h.length>0&&c.push({level:"error",severity:"blocker",message:`${a} 主要施工内容存在 ${h.length} 个工作包施工方法过弱`,suggestion:"施工方法不能只是工作包名称或专业范围罗列,必须写资料已确认的工程量、材料、检测、调试、验收或记录要求。"}),i.length>0&&c.push({level:"error",severity:"blocker",message:`${a} 主要施工内容存在 ${i.length} 个工作包流程污染`,suggestion:"施工流程只能写工序链条,不能混入项目概况、总建筑面积、招标范围、未尽事宜等说明性事实。"}),/→|->/u.test(b)||c.push({level:"error",severity:"blocker",message:`${a} 主要施工内容缺少箭头式施工流程`,suggestion:"施工流程应写成“测量放线→基层处理→工序实施→检查验收→资料归档”等链条。"});let j=(b.match(/\d+(?:\.\d+)?\s*(?:㎡|m²|mm|cm|m|MPa|kPa|%|日历天|层|台|套|个|项|批|次|小时|年)/giu)||[]).length,k=(b.match(/工程量|材料|设备|范围|流程|验收|检测|复试|调试|隐蔽|检验批|资料|记录|系统|部位|接口|规格|标准/gu)||[]).length;(j<2||k<12)&&c.push({level:"error",severity:"blocker",message:`${a} 主要施工内容事实细度不足:参数 ${j} 项、事实细节 ${k} 项`,suggestion:"主要施工内容必须落到资料已确认的范围、工程量/材料、流程、验收和记录要求;资料未明确的工具、型号、参数不得编造。"}),/^\s*\|.+\|\s*$/mu.test(b)&&c.push({level:"error",severity:"blocker",message:`${a} 主要施工内容不应使用 Markdown 表格替代工作包正文`,suggestion:"主要施工内容应采用三级小节和段落式工作包写法,不使用表格承载主体内容。"})};if(0===e.length&&f){let a=r(d);return a?(g("全文",a),c):[{level:"error",severity:"blocker",message:"施工组织设计缺少“项目主要施工内容”小节",suggestion:"必须生成“### 项目主要施工内容”,并在该小节内部使用“#### 工作包名称”逐项展开。"}]}for(let a of e){let b=r(a.content)||r(d);if(!b){c.push({level:"error",severity:"blocker",message:`${a.title} 主要施工内容小节缺失或标题结构异常`,suggestion:"必须生成“### 项目主要施工内容”,并在该小节内部使用“#### 工作包名称”逐项展开。"});continue}g(a.title,b)}return c}function t(a){let b=[];for(let c of a){let a=`${c.title} ${(c.sections||[]).join(" ")} ${c.content}`;for(let d of i)d.pattern.test(a)&&!c.content.includes(d.title)&&b.push({level:"info",message:`${c.title} 可补充隐藏高分模块:${d.title}`,suggestion:d.prompt})}return b}function u(a){let b=a.split("\n"),c=b.findIndex(a=>/^###\s+(?:\d+(?:\.\d+)*\s+)?[^\n]*?(?:主要分部分项工程施工方案|主要施工方法)[^\n]*$/u.test(a.trim()));if(c<0)return"";let d=b.length;for(let a=c+1;a<b.length;a+=1)if(/^#{2,3}\s+/u.test(b[a].trim())){d=a;break}return b.slice(c,d).join("\n")}function v(a,b=""){let c=[],d=b||a.map(a=>`${a.title}
21
+ ${a.content}`).join("\n\n"),e=a.filter(a=>/项目主要施工内容|主要施工内容/u.test(`${a.title} ${(a.sections||[]).join(" ")}`)),f=/施工组织设计|施工组织|计划工期|质量标准|项目经理|工程概况/u.test(d)&&/施工/u.test(d),g=(a,b)=>{let d=b.replace(/^####\s+(?:\d+(?:\.\d+)*\s+)?(?:项目主要施工\s*内容|主要施工\s*内容)\s*\n+/mu,""),e=(d.match(/^####\s+(?:\d+(?:\.\d+)*\s+)?[一二三四五六七八九十\d]*[、..]?\s*\S+/gmu)||[]).length||(d.match(/^[一二三四五六七八九十]+、\S+/gmu)||[]).length,f=d.split(/^####\s+/gmu).slice(1).map(a=>a.trim()).filter(Boolean),g=f.filter(a=>!a.includes("施工概况")||!a.includes("施工流程")||!a.includes("施工方法")),h=f.filter(a=>/资料内容事实|#{2,6}\s+|\*\*[^*]+\*\*|未尽事宜|专业施工内容统筹|招标范围还包含|具备有效的.*资质/u.test(a)),i=f.filter(a=>{let b=a.match(/施工方法[::]([\s\S]*?)(?=\n施工|$)/u)?.[1]||"";return b.length<30||(b.match(/工程|维修|改造|安装|设备/gu)||[]).length>=4&&!/\d|㎡|m2|m²|mm|厚|验收|检测|调试|试验|复试|记录|报告/u.test(b)}),j=f.filter(a=>{let b=a.match(/施工流程[::]([\s\S]*?)(?=\n施工方法|$)/u)?.[1]||"";return/未尽事宜|本项目为|总建筑面积|保留现状|专业施工内容统筹|招标文件列明|招标范围/u.test(b)}),k=f.map(a=>(a.split("\n")[0]||"").replace(/^\d+(?:\.\d+)*\s+/u,"").replace(/工程$/u,"").replace(/[、..]/gu,"").trim()),l=[...new Set(k.filter((a,b)=>a&&k.indexOf(a)!==b))];l.length>0&&c.push({level:"error",severity:"blocker",message:`${a} 主要施工内容存在 ${l.length} 组重复专业工程小节:${l.slice(0,5).join("、")}`,suggestion:"同一专业工程只保留一个小节,将重复小节的独有内容合并后删除冗余小节,避免专业工程重复铺陈。"}),e<5&&c.push({level:"error",severity:"blocker",message:`${a} 主要施工内容专业工程不足:当前 ${e} 个,要求不少于 5 个`,suggestion:"按资料识别专业工程/分部分项工程,逐项写施工概况、施工流程、施工方法。"}),g.length>0&&c.push({level:"error",severity:"blocker",message:`${a} 主要施工内容存在 ${g.length} 个专业工程缺少施工概况/施工流程/施工方法`,suggestion:"每个专业工程必须分别包含“施工概况、施工流程、施工方法”,不能只在整节中出现一次。"}),h.length>0&&c.push({level:"error",severity:"blocker",message:`${a} 主要施工内容存在脏事实或标题污染`,suggestion:"清理“资料内容事实”、嵌入的 ### 标题、粗体伪标题、未尽事宜、招标范围罗列等污染内容,只保留可交付正文。"}),i.length>0&&c.push({level:"error",severity:"blocker",message:`${a} 主要施工内容存在 ${i.length} 个专业工程施工方法过弱`,suggestion:"施工方法不能只是专业工程名称或专业范围罗列,必须写资料已确认的工程量、材料、检测、调试、验收或记录要求。"}),j.length>0&&c.push({level:"error",severity:"blocker",message:`${a} 主要施工内容存在 ${j.length} 个专业工程流程污染`,suggestion:"施工流程只能写工序链条,不能混入项目概况、总建筑面积、招标范围、未尽事宜等说明性事实。"}),/→|->/u.test(b)||c.push({level:"error",severity:"blocker",message:`${a} 主要施工内容缺少箭头式施工流程`,suggestion:"施工流程应写成“测量放线→基层处理→工序实施→检查验收→资料归档”等链条。"});let m=(b.match(/\d+(?:\.\d+)?\s*(?:㎡|m²|mm|cm|m|MPa|kPa|%|日历天|层|台|套|个|项|批|次|小时|年)/giu)||[]).length,n=(b.match(/工程量|材料|设备|范围|流程|验收|检测|复试|调试|隐蔽|检验批|资料|记录|系统|部位|接口|规格|标准/gu)||[]).length;(m<2||n<12)&&c.push({level:"error",severity:"blocker",message:`${a} 主要施工内容事实细度不足:参数 ${m} 项、事实细节 ${n} 项`,suggestion:"主要施工内容必须落到资料已确认的范围、工程量/材料、流程、验收和记录要求;资料未明确的工具、型号、参数不得编造。"}),/^\s*\|.+\|\s*$/mu.test(b)&&c.push({level:"error",severity:"blocker",message:`${a} 主要施工内容不应使用 Markdown 表格替代专业工程正文`,suggestion:"主要施工内容应采用三级小节和段落式专业工程写法,不使用表格承载主体内容。"})};if(0===e.length&&f){let a=r(d);return a?(g("全文",a),c):[{level:"error",severity:"blocker",message:"施工组织设计缺少“项目主要施工内容”小节",suggestion:"必须生成“### 项目主要施工内容”,并在该小节内部使用“#### 专业工程名称”逐项展开。"}]}for(let a of e){let b=r(a.content)||r(d);if(!b){c.push({level:"error",severity:"blocker",message:`${a.title} 主要施工内容小节缺失或标题结构异常`,suggestion:"必须生成“### 项目主要施工内容”,并在该小节内部使用“#### 专业工程名称”逐项展开。"});continue}g(a.title,b)}return c}function t(a){let b=[];for(let c of a){let a=`${c.title} ${(c.sections||[]).join(" ")} ${c.content}`;for(let d of i)d.pattern.test(a)&&!c.content.includes(d.title)&&b.push({level:"info",message:`${c.title} 可补充隐藏高分模块:${d.title}`,suggestion:d.prompt})}return b}function u(a){let b=a.split("\n"),c=b.findIndex(a=>/^###\s+(?:\d+(?:\.\d+)*\s+)?[^\n]*?(?:主要分部分项工程施工方案|主要施工方法)[^\n]*$/u.test(a.trim()));if(c<0)return"";let d=b.length;for(let a=c+1;a<b.length;a+=1)if(/^#{2,3}\s+/u.test(b[a].trim())){d=a;break}return b.slice(c,d).join("\n")}function v(a,b=""){let c=[],d=b||a.map(a=>`${a.title}
22
22
  ${(a.sections||[]).join("\n")}
23
23
  ${a.content}`).join("\n\n"),f=a.filter(a=>e.gG.test(`${a.title} ${(a.sections||[]).join(" ")}`));if(0===f.length)return c;let g=(a,b)=>{let d=b.split(/^####\s+/gmu).slice(1).map(a=>a.trim()).filter(Boolean);0===d.length&&(d=[...b.matchAll(/^\*\*[^*]+\*\*[\s\S]*?(?=^\*\*[^*]+\*\*|\s*$)/gmu)].map(a=>a[0].trim()).filter(Boolean));let f=d.length,g=d.filter(a=>!a.includes("施工概况")||!e.fM.test(a)||!a.includes("施工方法")),h=d.filter(a=>/资料内容事实|#{2,6}\s+|\*\*[^*]+\*\*|未尽事宜|按规范施工|结合实际执行|招标范围还包含/u.test(a)),i=d.filter(a=>!(((a.match(/(?:\*\*)?施工方法(?:\*\*)?[::]([\s\S]*?)(?=\n施工|$)/u)?.[1]||"").match(/[^\s→]{2,}(?:→[^\s→]{2,}){3,}/gu)||[]).length>0)&&0===((a.match(/(?:\*\*)?(?:施工流程|工艺流程)(?:\*\*)?[::]([\s\S]*?)(?=\n(?:施工|工艺)|$)/u)?.[1]||"").match(/[^\s→]{2,}(?:→[^\s→]{2,}){3,}/gu)||[]).length),j=/\d+(?:\.\d+)?\s*(?:㎡|m²|m2|m3|m³|mm|cm|m|MPa|kPa|%|日历天|天|小时|层|台|套|个|次|kN|t|N|颗|樘|扇)/giu,k=/(?:间距|偏差|坡度|养护|搭接|试验压力|含水率|饱满度|压实度|厚度|饱满)[^\n]{0,10}\d/giu,l=d.filter(a=>(a.match(j)||[]).length+(a.match(k)||[]).length<e.Ck.minParamsPerPackage);f<e.Ck.blockerMinPackages?c.push({level:"error",severity:"blocker",message:`${a} 分部分项工程施工方案分项不足:当前 ${f} 个,要求不少于 ${e.Ck.blockerMinPackages} 个`,suggestion:"按资料识别的专业工程/分部分项工程逐项展开,每项写施工概况、工艺流程、施工方法。"}):f<e.Ck.minPackages&&c.push({level:"warning",message:`${a} 分部分项工程施工方案建议扩充:当前 ${f} 个分项方案,建议不少于 ${e.Ck.minPackages} 个`,suggestion:"优先覆盖资料明确的专业工程范围(土方、基础、主体、装饰、安装、室外等)。"}),g.length>0&&c.push({level:"error",severity:"blocker",message:`${a} 分部分项工程施工方案存在 ${g.length} 个分项方案缺少施工概况/工艺流程/施工方法`,suggestion:"每个分项方案必须分别包含“施工概况、工艺流程、施工方法”,不能只在整节中出现一次。"}),h.length>0&&c.push({level:"error",severity:"blocker",message:`${a} 分部分项工程施工方案存在脏事实或空话污染`,suggestion:"清理“资料内容事实”、嵌入的 ### 标题、粗体伪标题、未尽事宜、“按规范施工/结合实际执行”式空话,只保留可交付正文。"}),i.length>0&&c.push({level:"error",severity:"blocker",message:`${a} 分部分项工程施工方案存在 ${i.length} 个分项方案施工方法缺少箭头工序链`,suggestion:`每个分项方案的施工方法段至少 1 条不少于 ${e.Ck.minArrowChainLength} 个环节的“→”工序链(如“基层清理→放线定位→分层摊铺→碾压→压实度检测→验收”)。`}),l.length>0&&c.push({level:"error",severity:"blocker",message:`${a} 分部分项工程施工方案存在 ${l.length} 个分项方案工艺参数不足(少于 ${e.Ck.minParamsPerPackage} 个)`,suggestion:"每个分项方案必须落位至少 4 个具体工艺参数(mm、MPa、间距、偏差、坡度、养护天数、试验压力、搭接长度等),参数来自绑定材料或行业通用规范值,不得编造。"});let m=d.filter(a=>a.replace(/\s/gu,"").length<e.Ck.minPackageChars);m.length>0&&c.push({level:"error",severity:"blocker",message:`${a} 分部分项工程施工方案存在 ${m.length} 个分项方案正文过短(少于 ${e.Ck.minPackageChars} 字)`,suggestion:"每个分项方案都要写足“施工概况+工艺流程+施工方法”三段式,门窗维修、立面修补等小分项同样需要逐段展开,不得一句话带过。"});let n=d.map(a=>a.replace(/\s/gu,"").length);n.length>1&&Math.min(...n)>0&&Math.min(...n)<Math.max(...n)*e.Ck.balanceRatio&&c.push({level:"warning",message:`${a} 分部分项工程施工方案分项深度失衡:最短分项不足最长分项三分之一`,suggestion:"参照最长分项(如拆除、结构加固)的展开深度,为偏短分项补足机具、材料规格、工艺参数与验收标准。"})};for(let a of f){let b=u(a.content)||u(d);if(!b){c.push({level:"error",severity:"blocker",message:`${a.title} 分部分项工程施工方案小节缺失或标题结构异常`,suggestion:"必须生成“### 主要分部分项工程施工方案”,并在该小节内部使用“#### 分项工程方案”逐项展开。"});continue}g(a.title,b)}return c}},92817:(a,b,c)=>{c.d(b,{hZ:()=>x,eu:()=>A,mF:()=>N,nl:()=>T,AI:()=>K,N1:()=>R,w9:()=>w,ap:()=>s.ap,eL:()=>s.eL,Ym:()=>D,xu:()=>s.xu,uV:()=>s.uV,uQ:()=>L});var d=c(76760),e=c(78217),f=c(70933),g=c(61373),h=c(95734),i=c(22157),j=c(51144),k=c(34680),l=c(71001),m=c(8667),n=c(40693);let o=[{id:"earthwork-excavation",name:"土方开挖",aliases:["土方","基坑开挖","土方开挖","挖土"],process:["测量放线","标高复核","分层开挖","边坡修整","基底验槽"],params:["分层开挖厚度≤2m","基底标高偏差0~-50mm","边坡坡度按土质取1:0.5~1:1","预留200~300mm人工清底"],acceptance:["基底验槽","钎探记录","标高与轴线复核","隐蔽验收记录"],standards:["GB 50202-2018 建筑地基基础工程施工质量验收标准"]},{id:"earthwork-backfill",name:"土方回填",aliases:["素土回填","填土碾压","回填","余方弃置","人工清底"],process:["基底隐蔽验收","分层摊铺","分层碾压","压实度检测","边角补夯","表面整平"],params:["每层虚铺厚度≤300mm","填土含水率控制在最优含水率\xb12%","压实系数≥0.94","边角部位采用小型夯实机补夯","压实度每层每100m\xb2不少于1组检测"],acceptance:["压实度检测报告","回填土施工记录","隐蔽验收记录"],standards:["GB 50202-2018 建筑地基基础工程施工质量验收标准","GB 50268-2008 给水排水管道工程施工及验收规范"]},{id:"foundation-pit-support",name:"基坑支护",aliases:["基坑支护","钢板桩","土钉墙","支护桩","冠梁"],process:["测量定位","支护桩成孔","钢筋笼制安","混凝土浇筑","冠梁施工","分层开挖","位移监测"],params:["桩位偏差≤50mm","垂直度≤1%","冠梁顶标高偏差\xb110mm","监测频率:开挖期每天1次","报警值按设计位移速率3mm/d"],acceptance:["桩身完整性检测","锚杆拉拔试验","基坑监测日报","专项方案审批记录"],standards:["JGJ 120-2012 建筑基坑支护技术规程","GB 50497-2019 建筑基坑工程监测技术标准"]},{id:"pile-foundation",name:"桩基工程",aliases:["桩基","钻孔灌注桩","预制桩","静压桩","PHC管桩"],process:["测量定位","成孔(压桩)","清孔验收","钢筋笼制安","混凝土灌注","桩身检测"],params:["桩径偏差\xb15mm","沉渣厚度≤50mm(端承桩)","充盈系数≥1.0","桩顶标高偏差\xb110mm","静载试验不少于总桩数1%且≥3根"],acceptance:["桩基静载试验","低应变/声波透射检测","成孔记录","钢筋隐蔽验收"],standards:["JGJ 94-2008 建筑桩基技术规范","GB 50202-2018"]},{id:"rebar-works",name:"钢筋工程",aliases:["钢筋","钢筋绑扎","钢筋加工","钢筋连接"],process:["翻样下料","加工成型","运输堆放","绑扎安装","隐蔽验收"],params:["直螺纹接头拧紧力矩值按规格控制","接头错开≥35d且≥500mm","保护层垫块间距≤1m","绑扎搭接长度按图集16G101"],acceptance:["钢筋原材复试","接头工艺检验","隐蔽工程验收记录","保护层实测"],standards:["GB 50204-2015 混凝土结构工程施工质量验收规范","JGJ 18-2012 钢筋焊接及验收规程"]},{id:"formwork-works",name:"模板工程",aliases:["模板","模板支撑","高支模","脚手架模板"],process:["方案编制","立杆搭设","主次龙骨铺设","面板安装","验收挂牌","拆模申请"],params:["立杆间距≤900\xd7900mm(危大)","扫地杆距地≤200mm","水平杆步距≤1500mm","剪刀撑连续设置","拆模强度:板≥75%设计强度"],acceptance:["高支模专项方案论证","架体验收挂牌","沉降变形监测","拆模令"],standards:["JGJ 162-2008 建筑施工模板安全技术规范","JGJ 130-2011 建筑施工扣件式钢管脚手架安全技术规范"]},{id:"concrete-works",name:"混凝土工程",aliases:["混凝土","砼浇筑","混凝土浇筑","振捣"],process:["浇筑申请","坍落度检测","分层浇筑","振捣密实","收面养护","试块留置"],params:["坍落度按配比\xb130mm","分层浇筑厚度≤500mm","振动棒快插慢拔","养护≥7d(掺外加剂≥14d)","标养试块每100m\xb3≥1组"],acceptance:["坍落度检测记录","试块标养与同条件报告","混凝土外观检查","强度评定"],standards:["GB 50204-2015","GB/T 50107-2010 混凝土强度检验评定标准"]},{id:"steel-structure",name:"钢结构工程",aliases:["钢结构","钢构件","焊接","高强螺栓"],process:["深化设计","构件加工","进场验收","吊装就位","校正固定","焊接/螺栓连接","涂装"],params:["高强螺栓初拧终拧扭矩比1.1","焊缝等级按设计一级/二级","挠度允许值L/400","防火涂料厚度按耐火极限"],acceptance:["焊缝探伤检测","高强螺栓扭矩检查","构件尺寸偏差实测","防火涂料厚度检测"],standards:["GB 50205-2020 钢结构工程施工质量验收标准","JGJ 82-2011 钢结构高强度螺栓连接技术规程"]},{id:"masonry-works",name:"砌体工程",aliases:["砌体","砌筑","加气块","二次结构"],process:["弹线定位","排砖撂底","砌筑","构造柱植筋","圈梁浇筑","顶砖处理"],params:["灰缝厚度8~12mm","垂直度偏差≤5mm(每层)","拉结筋间距≤500mm","顶砖间隔7d斜砌"],acceptance:["砌筑砂浆试块","构造柱钢筋隐蔽验收","垂直度平整度实测","拉结筋检测"],standards:["GB 50203-2011 砌体结构工程施工质量验收规范"]},{id:"waterproofing",name:"防水工程",aliases:["防水","屋面防水","卫生间防水","地下防水","卷材"],process:["基层处理","阴阳角附加层","防水层铺贴","搭接密封","闭水/淋水试验","保护层"],params:["卷材搭接宽度≥100mm","附加层宽度≥500mm","卫生间闭水试验48h","屋面蓄水试验24h","涂膜厚度按设计≥1.5mm"],acceptance:["闭水/蓄水试验记录","隐蔽验收记录","防水材料复试","淋水试验"],standards:["GB 50207-2012 屋面工程质量验收规范","GB 50208-2011 地下防水工程质量验收规范"]},{id:"plastering",name:"抹灰工程",aliases:["抹灰","粉刷","墙面抹灰","挂网"],process:["基层处理","浇水湿润","打点冲筋","分层抹灰","压光","养护"],params:["不同基体交接处挂网宽≥200mm","每遍抹灰厚度≤7mm","平整度偏差≤4mm","空鼓面积≤400cm\xb2且不连续"],acceptance:["空鼓敲击检查","平整度垂直度实测","养护记录"],standards:["GB 50210-2018 建筑装饰装修工程质量验收标准"]},{id:"tile-paving",name:"墙地砖铺贴",aliases:["墙地砖","瓷砖","铺贴","石材"],process:["基层检查","排砖放线","选砖泡水","铺贴","勾缝","成品保护"],params:["粘结层厚度≤10mm","接缝宽度按设计要求","空鼓率单块≤15%且整面≤5%","平整度偏差≤2mm"],acceptance:["空鼓锤击检查","平整度实测","坡度泼水检查","成品保护验收"],standards:["GB 50210-2018"]},{id:"ceil-partition",name:"吊顶与轻质隔墙",aliases:["吊顶","轻钢龙骨","隔墙","石膏板"],process:["弹线定位","龙骨安装","面板安装","接缝处理","面层施工"],params:["主龙骨间距≤1200mm","吊杆间距≤1000mm","罩面板接缝错开","石膏板接缝处粘贴网格布"],acceptance:["龙骨隐蔽验收","面板平整度实测","吊顶起拱检查"],standards:["GB 50210-2018"]},{id:"painting",name:"涂饰工程",aliases:["涂料","油漆","乳胶漆","腻子"],process:["基层清理","刮腻子","打磨","底漆","面漆","修整"],params:["腻子每遍厚度≤2mm","底漆1遍面漆2遍","施工温度5~35℃","平整度偏差≤2mm"],acceptance:["涂层色泽均匀检查","无流坠起皮检查","平整度实测"],standards:["GB 50210-2018"]},{id:"door-window",name:"门窗工程",aliases:["门窗","铝合金窗","幕墙","玻璃"],process:["洞口复核","安装固定","缝隙填塞","打胶密封","开启调试","淋水试验"],params:["框与墙间隙≤5mm","密封胶连续饱满","窗扇开关力≤50N","气密水密性能按设计等级"],acceptance:["淋水试验","开启灵活检查","垂直度偏差实测","性能检测报告"],standards:["GB 50210-2018","GB/T 7106-2019 建筑外门窗气密水密抗风压性能检测方法"]},{id:"plumbing",name:"给排水工程",aliases:["给排水","给水管道","排水管道","管道安装"],process:["预留预埋","支架安装","管道安装","压力试验","冲洗消毒","通水试验"],params:["给水管试验压力为工作压力1.5倍且≥0.6MPa","排水管坡度按管径DN50~DN200取2.5%~0.8%","支架间距按管径设置","PPR热熔温度260℃"],acceptance:["管道水压试验","通球试验","灌水试验","冲洗消毒记录"],standards:["GB 50242-2002 建筑给水排水及采暖工程施工质量验收规范"]},{id:"electrical",name:"电气工程",aliases:["电气","配管","穿线","桥架","配电箱","防雷接地"],process:["预留预埋","配管桥架","穿线放缆","设备安装","绝缘测试","通电调试"],params:["管路弯曲半径≥6D(埋地≥10D)","导线绝缘电阻≥0.5MΩ","桥架支架间距≤1.5m","防雷接地电阻≤1Ω"],acceptance:["绝缘电阻测试","接地电阻测试","通电试运行","隐蔽验收记录"],standards:["GB 50303-2015 建筑电气工程施工质量验收规范"]},{id:"hvac",name:"通风空调工程",aliases:["通风空调","风管","空调","新风","保温"],process:["风管制作","吊架安装","风管安装","设备安装","严密性试验","系统调试"],params:["风管支吊架间距≤3m","中压风管漏光法检测","保温层厚度按设计","风口风速按设计值\xb110%"],acceptance:["风管严密性试验","风量平衡调试","设备单机试运行","系统联动调试"],standards:["GB 50243-2016 通风与空调工程施工质量验收规范"]},{id:"fire-protection",name:"消防工程",aliases:["消防","消火栓","喷淋","火灾报警","防排烟"],process:["预留预埋","管道安装","喷头/探测器安装","系统试压","联动调试","检测验收"],params:["喷淋试验压力≥1.4MPa","消火栓充实水柱≥10m","探测器保护半径按类别","防排烟风管严密性"],acceptance:["消防水压试验","联动调试记录","消防检测报告","竣工验收备案"],standards:["GB 50261-2017 自动喷水灭火系统施工及验收规范","GB 50166-2019 火灾自动报警系统施工及验收标准"]},{id:"weak-current",name:"弱电智能化工程",aliases:["弱电","智能化","综合布线","监控","门禁"],process:["管线预埋","桥架敷设","线缆敷设","设备安装","单机调试","系统联调"],params:["双绞线弯曲半径≥4D","光缆弯曲半径≥15D","面板安装高度距地300mm","链路测试按TIA-568"],acceptance:["链路测试报告","单机调试记录","系统联调记录","隐蔽验收"],standards:["GB 50311-2016 综合布线系统工程设计规范","GB 50339-2013 智能建筑工程质量验收规范"]},{id:"municipal-road",name:"道路工程",aliases:["道路","路基","路面","水稳","沥青"],process:["测量放线","路基处理","分层碾压","水稳摊铺","沥青摊铺","标线设施"],params:["路基压实度≥93%(路床)","水稳层7d无侧限抗压强度按设计","沥青压实度≥96%","面层平整度≤5mm(3m直尺)"],acceptance:["压实度检测","弯沉检测","取芯厚度检测","平整度实测"],standards:["CJJ 1-2008 城镇道路工程施工与质量验收规范"]},{id:"municipal-pipe",name:"市政管道工程",aliases:["管道","雨污水","沟槽","检查井","承插管"],process:["测量放线","沟槽开挖支护","基础垫层","管道安装","接口处理","闭水试验","回填"],params:["沟槽开挖放坡按土质1:0.33~1:0.5","垫层厚度按设计≥100mm","管道安装轴线偏差≤15mm","闭水试验渗水量按GB 50268","回填分层厚度≤250mm"],acceptance:["闭水试验记录","管内底高程检测","管道CCTV检测","回填压实度检测"],standards:["GB 50268-2008 给水排水管道工程施工及验收规范"]},{id:"demolition",name:"拆除工程",aliases:["拆除","墙体拆除","结构拆除","垃圾外运"],process:["方案编制","围挡隔离","管线切断","分层拆除","垃圾清运","验收交接"],params:["拆除顺序自上而下","垃圾清运日产日清","湿法作业降尘","既有保留部位防护到位"],acceptance:["拆除专项方案","既有设施保护检查","垃圾清运记录"],standards:["JGJ 147-2016 建筑拆除工程安全技术规范"]},{id:"structural-strengthen",name:"结构加固",aliases:["结构加固","粘钢","碳纤维","植筋","加大截面"],process:["设计交底","基层处理","植筋","粘贴加固","养护","检测验收"],params:["植筋锚固深度按设计≥15d","碳纤维布粘结强度≥2.5MPa","胶粘剂固化时间按产品说明","加大截面混凝土强度等级≥C25"],acceptance:["拉拔试验","粘结密实度检测","隐蔽验收记录"],standards:["GB 50367-2013 混凝土结构加固设计规范","GB 50550-2010 建筑结构加固工程施工质量验收规范"]},{id:"facade-renovation",name:"外立面整治",aliases:["外立面","立面修补","真石漆","外保温"],process:["脚手架搭设","空鼓铲除","界面处理","保温层施工","面层施工","验收落架"],params:["保温板粘贴面积≥40%","锚栓数量每平米≥6个","抗裂砂浆厚度3~5mm","面层垂直度偏差≤4mm"],acceptance:["粘结强度现场拉拔","锚栓拉拔试验","平整度实测"],standards:["GB 50411-2019 建筑节能工程施工质量验收标准","JGJ 144-2019 外墙外保温工程技术标准"]},{id:"scaffold",name:"脚手架工程",aliases:["脚手架","外架","落地架","悬挑架"],process:["方案编制","基础处理","立杆搭设","连墙件设置","安全网封闭","验收挂牌","拆除"],params:["立杆纵距≤1.5m","连墙件两步三跨","剪刀撑与地面夹角45\xb0~60\xb0","悬挑架工字钢锚固长度≥1.25倍悬挑长度","架体高于作业层1.5m"],acceptance:["架体分段验收","连墙件检查","安全网封闭检查"],standards:["JGJ 130-2011 建筑施工扣件式钢管脚手架安全技术规范"]},{id:"tower-crane",name:"起重吊装",aliases:["起重吊装","塔吊","吊装","汽车吊"],process:["方案编制","设备报验","基础验收","安装调试","检测备案","日常检查","拆除"],params:["吊装作业半径内警戒","吊索具安全系数≥6","塔吊垂直度≤4‰","风速≥6级停止吊装"],acceptance:["特种设备检测","安装验收记录","司机指挥持证检查"],standards:["JGJ 196-2010 建筑施工塔式起重机安装使用拆卸安全技术规程"]},{id:"electrical-hookup",name:"临时用电",aliases:["临电","临时用电","三级配电"],process:["方案编制","线路敷设","配电箱设置","接地保护","验收送电","日常巡检"],params:["三级配电两级漏保","漏电动作电流≤30mA/0.1s","PE线截面按相线1/2","电缆埋深≥0.7m","配电箱距地1.4~1.6m"],acceptance:["绝缘电阻测试","接地电阻测试","验收送电记录"],standards:["JGJ 46-2005 施工现场临时用电安全技术规范"]}],p=new Map,q=new Map;for(let a of o)for(let b of(q.set(a.id,a),p.set(a.name,a),a.aliases))p.set(b,a);let r=[{pattern:/安装工程|机电安装/u,cardIds:["electrical","plumbing","hvac","fire-protection","weak-current"]},{pattern:/结构加固|加固改造/u,cardIds:["structural-strengthen","concrete-works","rebar-works","formwork-works"]},{pattern:/装饰工程|装饰装修/u,cardIds:["plastering","tile-paving","ceil-partition","painting","door-window"]},{pattern:/外墙|屋面|立面/u,cardIds:["facade-renovation","waterproofing","scaffold"]},{pattern:/室外道排|道排|室外管网|雨污水/u,cardIds:["municipal-pipe","municipal-road","earthwork-excavation"]},{pattern:/智能化/u,cardIds:["weak-current"]},{pattern:/消防/u,cardIds:["fire-protection"]},{pattern:/拆除/u,cardIds:["demolition"]},{pattern:/水电改造/u,cardIds:["plumbing","electrical"]}];var s=c(22213),t=c(18274),u=c(1358),v=c(3063);function w(a,b,c){let d=[...a.errors.map(a=>({level:"error",message:a,suggestion:"请补充配置或资料后重新生成。"})),...a.warnings.map(a=>({level:"warning",message:a,suggestion:"建议人工确认或补充对应资料。"}))];return c.some(a=>/资料未提供|系统暂未从知识库确认/u.test(a.content))&&d.push({level:"warning",message:"存在系统暂未从知识库确认的章节内容",suggestion:"请检查项目角色配置、文件绑定顺序和事实抽取落位结果。"}),b.conflicts.length>0&&d.push(...b.conflicts.map(a=>({level:"warning",message:a,suggestion:"请根据当前模板绑定的角色、文件证据和用户要求复核取值口径。"}))),d}function x(a){let b=a.spec?.chapterRules.find(b=>b.id===a.chapter.id||b.title===a.chapter.title),c=(b?.requiredFactIds||[]).map(b=>a.spec?.factFields.find(a=>a.id===b)?.name).filter(Boolean),d=[...new Set([...a.chapter.requiredFacts,...c,...a.plan?.requiredContents||[],...a.plan?.evidenceNeeds||[],...(a.resolvedFactNeeds||[]).filter(a=>a.need.required).map(a=>a.need.label)].filter(Boolean))],e=a.roleFacts.map(({fact:a})=>`- ${a.key}:${(0,f.eE)((0,i.lG)(a.value))}`),g=(a.resolvedFactNeeds||[]).flatMap(a=>a.facts),h=a.indexedFacts||[],k=(0,j.Cr)(h,a=>(0,j.rF)(a),{maxItems:48,maxChars:12e3},"indexedFacts"),l=g.length>0?[]:k.selected.map(a=>`- ${a.key||a.fieldName||"资料事实"}:${(0,f.eE)((0,i.lG)(a.value)).slice(0,180)}${a.sourceFile?`(来源:${a.sourceFile.split("/").pop()})`:""}`),m=k.dropped.length>0?[`⚠️ ${k.dropped.length} 个低优先级事实未列出(完整列表见事实主表)`]:[],n=[...g,...h].filter(a=>/建设地点|建设规模|招标范围|计划工期|合同工期|周期要求|质量标准|合同估算|投资估算|最高投标限价|招标控制价/u.test(`${a.key||""}${a.fieldName||""}${a.fieldId||""}`)).filter((a,b,c)=>c.findIndex(b=>`${b.key||b.fieldName}:${(0,i.lG)(b.value)}`==`${a.key||a.fieldName}:${(0,i.lG)(a.value)}`)===b),o=[...new Set([...function(a){let b=new Set;for(let c of a){let a=(0,i.lG)(c.content).replace(/\s+/gu," ");if((!/报价明细|投标报价|单价|合价|综合单价|预留金|税率|增值税|利润|结算/u.test(a)||/合同估算价|合同估算价格|投资估算|最高投标限价|招标控制价/u.test(a))&&!/OCR|识别错误|乱码|无法确认|疑似|不确定|语义断裂/u.test(a)){for(let c of a.matchAll(t._W))b.add(c[0].trim());if(b.size>=40)break}}return[...b].slice(0,40)}(a.evidence),...g.map(a=>(0,i.lG)(a.value)).filter(a=>t.sv.test(a)),...h.map(a=>(0,i.lG)(a.value)).filter(a=>t.sv.test(a))])],p=0,q=[];for(let a of o){if(p+a.length>6e3&&q.length>=10)break;q.push(a),p+=a.length+1}let r=new Set([...a.evidence.map(a=>a.filePath),...g.map(a=>a.sourceFile),...(a.indexedFacts||[]).map(a=>a.sourceFile)]).size,s=(a.resolvedFactNeeds||[]).filter(a=>"satisfied"!==a.status&&a.need.required).map(a=>a.need.label);return["【本章事实覆盖与参数落位要求】",d.length?`必须优先覆盖的事实/要求:
24
24
  ${d.map(a=>`- ${a}`).join("\n")}`:"",e.length?`角色节点已抽取事实:
@@ -0,0 +1,7 @@
1
+ "use strict";exports.id=5726,exports.ids=[5726],exports.modules={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,fz:()=>r,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);function k(a,b){if(a.length<=b)return a;let c=a.length/b,d=[];for(let e=0;d.length<b&&e<b;e+=1)d.push(a[Math.floor(e*c)]||a[0]);return d}async function l(a,b){let c=k(a,250);if(!(c.length<8))try{let a=b?null:(0,i.VN)(),d=b?await b(c):a?await a.embedDocuments(c):[];if(d.length!==c.length)return;let e=0,f=0;for(let a=0;a<c.length;a+=1)for(let b=a+1;b<c.length;b+=1)f+=1,function(a,b){let c=Math.min(a.length,b.length),d=0;for(let e=0;e<c;e+=1)d+=a[e]*b[e];return d}(d[a]||[],d[b]||[])>=.85&&(e+=1);return{semanticDuplicationRate:f>0?e/f:0,semanticSegmentCount:c.length}}catch{return}}async function m(a){let b=k(a,300);if(0===b.length)return;let c=[];for(let d=0;d<b.length;d+=60){let e=b.slice(d,d+60),f=e.map((a,b)=>`【块${b}】${a.slice(0,400)}`).join("\n"),g=await (0,j.bb)('你是施工组织设计质量标注专家。逐块判定(只依据该块文本,不联想上下文):\n1. fiveElementComplete:该块是否同时具备措施五要素——方案(制定/编制/建立/采用…制度、方案、措施)、流程(工序/步骤/顺序)、责任人(项目经理/技术负责人/施工员/质检员/安全员等具体岗位)、时间节点(每日/每周/每月/不少于X次/24小时等量化频次)、验收标准(验收/整改/复查/销项/闭环/合格)。五要素齐备才判 true,缺任一要素判 false。\n2. arrowChain:该块是否描述施工工序先后关系或流程推进顺序(含"先…再…后…"自然语言表述,不要求出现"→"符号)。\n只输出 JSON,格式:{"blocks":[{"fiveElementComplete":true,"arrowChain":false}]},与输入块顺序一一对应。',f,{maxTokens:4e3,temperature:0,disableThinkingBoost:!0});if(!g?.blocks||0===g.blocks.length)break;let h=[];for(let a=0;a<e.length;a+=1){let b=g.blocks[a];h.push({fiveElementComplete:!!b?.fiveElementComplete,arrowChain:!!b?.arrowChain})}c.push({batch:h,totalBlocks:a.length})}return c.length>0?c:void 0}async function n(a,b){let c=a.slice(0,12e3),d=await (0,j.bb)('你是施工组织设计评审专家。基于提供的参考施组样本(节选),输出质量点评 JSON:\n{"highlights":["值得对标的亮点,每条≤40字,最多5条"],"weaknesses":["明显短板,每条≤40字,最多5条"],"benchmarkable":"一段≤80字的最值得对标点总结"}。只输出 JSON。',`章节结构:${b.slice(0,12).join(" / ")}
2
+
3
+ 样本节选:
4
+ ${c}`,{maxTokens:1200,temperature:0,disableThinkingBoost:!0});if(d)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:""}}async function o(a,b,c){let d=a.split(/\n+/u).map(a=>a.replace(/\s+/gu," ").trim()).filter(a=>a.length>=16&&/[\u4e00-\u9fa5]/u.test(a)),e=a.split(/\n{2,}/u).map(a=>a.replace(/\s+/gu," ").trim()).filter(a=>a.length>=30);if(0===d.length&&0===e.length)return;let f={semanticDuplicationRate:0,semanticSegmentCount:0,enrichedAt:Date.now()},g=await l(d,c);g&&(f.semanticDuplicationRate=g.semanticDuplicationRate,f.semanticSegmentCount=g.semanticSegmentCount);let h=await m(e);if(h){let a=0,b=0,c=0;for(let d of h)a+=d.batch.filter(a=>a.fiveElementComplete).length,b+=d.batch.filter(a=>a.arrowChain).length,c+=d.batch.length;if(c>0){let d=h[0]?.totalBlocks||e.length;f.llmFiveElement={completeBlocks:Math.round(a/c*d),sampledBlocks:c,totalBlocks:d},f.llmArrowChain={chainSegments:b,sampledSegments:c,totalSegments:e.length}}}return f.qualityNotes=await n(a,b),g||h||f.qualityNotes?f:void 0}function p(){let a=f.join(e.homedir(),".customize-agent","template-references");return d.mkdirSync(f.join(a,"files"),{recursive:!0}),a}function q(){return f.join(p(),"references.json")}function r(a){return v(a).flatMap(a=>a.textSlices||[])}function s(){try{let a=q();if(!d.existsSync(a))return[];let b=JSON.parse(d.readFileSync(a,"utf-8"));return Array.isArray(b)?b:[]}catch{return[]}}function t(a){d.writeFileSync(q(),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;for(let a of b){let b=f.join(p(),a.filePath);if(d.existsSync(b))try{let d=await w(b);a.qualityProfile=(0,h.WT)(d),a.profileVersion=4,c=!0}catch{}}for(let e of(c&&t(a),b)){let a=f.join(p(),e.filePath);"ready"===e.status&&d.existsSync(a)&&A(e,a)}}async function A(a,b){try{let c=await w(b),d=await o(c,a.qualityProfile?.headingStructure||[]);if(!d)return;let e=s(),f=e.find(b=>b.id===a.id);if(!f||!f.qualityProfile)return;f.qualityProfile={...f.qualityProfile,semantic:d},t(e)}catch{}}async function B(a){let b=p(),c=`ref-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`,e=f.extname(a.fileName)||".pdf",g=`${c}${e.toLowerCase()}`,i=f.join(b,"files",g);d.copyFileSync(a.tempFilePath,i);let j=d.statSync(i).size,k={id:c,fileName:a.fileName,projectType:a.projectType||"其他",typeSource:a.projectType?"manual":"auto",uploadedAt:Date.now(),fileSize:j,filePath:f.join("files",g),status:"parsing"},l=s();l.push(k),t(l);try{let a=await w(i);k.qualityProfile=(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,i)}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(p(),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}},22157:(a,b,c)=>{c.d(b,{Te:()=>q,V:()=>f,VX:()=>n,W6:()=>h,Xl:()=>j,c6:()=>o,jf:()=>s,l$:()=>r,lG:()=>p,tU:()=>m,wq:()=>i});var d=c(77598),e=c(78217);let f=/项目主要施工内容|主要分部分项工程施工方案|主要施工方法/u;function g(a){return a.replace(/^\d+(?:\.\d+)*\s*/u,"").replace(/[((][^()()]*[))]/gu,"").replace(/[\s::、。,,;;/|—-]/gu,"")}function h(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 h=`${c}::${g(b[2].trim())}`;if(!h)continue;let i=(d.get(h)||0)+1;d.set(h,i),i>=2&&e.push(b[2].trim())}return e}function i(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 h=b[1].length;if(h<=3&&(d=3===h?b[2].trim():"",e.clear()),f=!1,4===h){let h=`${d}::${g(b[2].trim())}`;if(!h){c.push(a);continue}if(e.has(h)){f=!0;continue}e.add(h)}c.push(a);continue}f||c.push(a)}return c.join("\n")}function j(a,b,c={}){if(!c.fuzzy){let c=k(a,b,/^###\s+(?:\d+(?:\.\d+)*\s+)?/u);return c||k(a,b,/^#{3,4}\s+(?:\d+(?:\.\d+)*\s+)?/u)}return function(a,b){let c=a.split("\n"),d=l(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=l(c[a]).replace(/\s+/gu,"").toLowerCase();(g===d||g.includes(d)||n(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 k(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 l(a){return a.replace(/^\s*#{2,4}\s*/u,"").replace(/^\s*(?:\d+(?:\.\d+)*|[一二三四五六七八九十]+)(?:[、..]|\s+)\s*/u,"").trim()}function m(a){return l(a).replace(/\s+/gu,"").toLowerCase().replace(/施工(?=方案|流程|方法)/gu,"").replace(/专项(?=方案)/gu,"").replace(/项目|工程|主要|重点|技术/gu,"").replace(/[、,,;;·..//]+/gu,"").replace(/与|及|和|暨/gu,"")}function n(a,b){let c=m(a),d=m(b);return!!c&&!!d&&!(c.length<4)&&!(d.length<4)&&(c===d||c.includes(d)||d.includes(c))}function o(a){return(0,d.createHash)("sha1").update(JSON.stringify(a)).digest("hex")}function p(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 q(a){if(a?.aborted)throw Error("用户中止")}async function r(a,b,c){if(0===a.length)return[];let d=Math.max(1,Math.min(a.length,c.concurrency||function(a){let b=Math.max(1,a.total);return"chapter"===a.kind?b<=3?b:b<=6?Math.min(b,4):b<=10?Math.min(b,6):Math.min(b,8):"search"===a.kind?b<=6?b:Math.min(b,8):"deepRetrieval"===a.kind?Math.min(b,a.highRisk?6:4):"sectionRepair"===a.kind?b<=3?b:b<=8?4:Math.min(b,6):Math.min(b,4)}({total:a.length,kind:c.kind,targetWords:c.targetWords,highRisk:c.highRisk}))),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 s{constructor(a){this.queue=[],this.available=Math.max(1,Math.floor(a))}async acquire(){if(this.available>0){this.available-=1;return}await new Promise(a=>{this.queue.push(a)})}release(){let a=this.queue.shift();a?a():this.available+=1}async run(a){await this.acquire();try{return await a()}finally{this.release()}}}},28103:(a,b,c)=>{c.d(b,{WT:()=>x,aF:()=>w,cG:()=>e});var d=c(52922);let e=["房建","市政","公路","桥梁与隧道","水利水电","电力","机电安装","装饰装修","园林绿化","铁路","港口与航道","矿山冶金","其他"],f=/(?:\d+(?:\.\d+)?\s*(?:mm|cm|m|㎡|m²|m2|m3|m³|kg|t|MPa|kPa|kN|V|KV|kV|A|天|%)(?![a-zA-Z\u4e00-\u9fa5])|\d+(?:\.\d+)?\s*(?:米|厘米|毫米|吨|千克|公斤|平方米|立方米)(?!\d)|(?:养护|搭接长度|试验压力|间距|偏差|坡度|含水率|压实度|强度等级|标号|厚度|宽度|高度|深度|直径|桩长|桩径))/gu,g=/→|->/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:"其他"}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);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:(0,d.Pm)(a).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,{Mv:()=>g,VN:()=>f});var d=c(19898);let e=null;function f(){try{return e||(e=new d.LocalTransformersEmbeddingProvider({})),e}catch{return null}}async function g(a,b,c){if(0!==a.length&&0!==b.length)try{let d=[...a,...b],e=c?null:f(),g=c?await c(d):e?await e.embedDocuments(d):[];if(g.length!==d.length)return;let h=new Map;for(let a=0;a<d.length;a++)h.has(d[a])||h.set(d[a],g[a]);return(a,b)=>{let c=h.get(a),d=h.get(b);if(!c||!d)return 0;let e=Math.min(c.length,d.length),f=0;for(let a=0;a<e;a++)f+=c[a]*d[a];return f}}catch{return}}},52922:(a,b,c)=>{c.d(b,{Bt:()=>h,JD:()=>z,Pm:()=>n,T4:()=>v,Ye:()=>e,bH:()=>C,gE:()=>q,nY:()=>E});let d=["基本满足","大致符合","力争","原则上","大概","左右","尽可能","尽量满足"];function e(a){return d.filter(b=>a.includes(b)).map(b=>({phrase:b,count:a.split(b).length-1}))}let f=[/一般来说/u,/通常情况下/u,/常规施工/u,/按照规范施工/u,/严格按规范/u,/视情况而定/u,/适当(?:调整|安排)/u,/满足设计要求/u,/确保工程质量/u],g=["精心组织","科学统筹","精益求精","全力保障","高效推进","一流水平","完善体系","最大限度","显著提升","大力落实","严格把控","充分确保","现代化管理","加强管理","提高意识","强化监督","持续完善","提质增效"];function h(a){let b=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),c=b.filter(a=>g.some(b=>a.includes(b))||f.some(b=>b.test(a))||d.some(b=>a.includes(b))).length,e=b.length?c/b.length:0;return{totalSentences:b.length,fillerSentences:c,ratio:e,level:e>=.4?"heavy":e>=.2?"medium":"light"}}let i=/(?:制定|编制|建立|明确|采用|执行).{0,15}(?:方案|制度|措施|预案)/u,j=/工序|流程|步骤|顺序|工艺/u,k=/项目经理|技术负责人|总工程师|项目负责人|施工员|质检员|质量员|安全员|专职安全员|材料员|资料员|测量员|试验员|电工|文明施工管理员|专业工长|班组长|监理工程师/u,l=/每日|每天|每周|每月|每季度|每旬|每\s*\d+\s*天|不少于\s*\d+\s*次|24\s*小时|随时/u,m=/验收|整改|复查|销项|闭环|复验|复核|检查合格|合格后/u;function n(a){let b=a.split(/\n{2,}/u).filter(a=>a.trim().length>=30),c=0,d=0;for(let a of b)[i,j,k,l,m].filter(b=>b.test(a)).length>=4?c+=1:k.test(a)&&l.test(a)||(d+=1);return{blocks:b.length,completeBlocks:c,incompleteBlocks:d}}let o=/因为|由于|成因|风险来源|主要风险|难点在于|系.*(?:导致|造成)|因.{0,20}(?:深厚|水位|地质|临近|邻近|狭小|交叉)/u,p=/\d+(?:\.\d+)?\s*(?:mm|cm|m|米|℃|%|kN|MPa|次|天|小时|h|Hz|m³)/u;function q(a){let b=(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),c=0,d=0,e=0;for(let a of b){let b=o.test(a),f=p.test(a);b&&(c+=1),f&&(d+=1),b&&f&&(e+=1)}let f=b.length?e/b.length:0;return{countermeasures:b.length,attributed:c,quantified:d,bothCount:e,ratio:f,heavyTemplated:b.length>0&&f<.5}}let r=/建筑业10项新技术|10项新技术|安徽省住房城乡建设领域新技术推广目录|新技术推广目录|建设领域推广/u,s=/替代|取代|淘汰.{0,10}(?:工艺|技术|做法)|(?:较|比).{0,10}(?:传统|常规|普通)/u,t=/(?:提升|提高|节省|节约|降低|缩短|减少).{0,10}(?:效率|工期|成本|损耗|能耗|人工|周期)|升级价值|效益显著/u,u=["BIM","铝模","附着式升降脚手架","跳仓法","直螺纹","装配式","灌浆套筒","自动化监测","智慧工地","再生利用","非开挖","CCTV","碳纤维","薄贴法","干法施工","液压提升","预制","光伏一体化","BIPV","模块化"];function v(a){let b=u.filter(b=>a.includes(b)),c=r.test(a),d=s.test(a),e=t.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 w=[/基坑|沟槽/u,/模板支撑|高支模/u,/脚手架|悬挑|附着式/u,/起重吊装|吊装/u,/幕墙/u,/人工挖孔桩/u,/装配式|钢结构安装/u,/拆除工程/u,/顶管|盾构|暗挖/u,/有限空间|水下作业/u,/吊篮/u,/塔吊|施工电梯|升降机/u,/沉井/u],x=/超危大|超规模|专家论证|一般危大/u,y=/(?:深度|高度|跨度|开挖).{0,8}\d+(?:\.\d+)?\s*(?:m|米)|(?:重量|吊装).{0,8}\d+(?:\.\d+)?\s*(?:kN|千牛)/u;function z(a){let b=w.filter(b=>b.test(a)).map(a=>a.source.replace(/\\u\w*|\\|\(|\||\)/gu,"")),c=x.test(a),d=y.test(a);return{categories:b,graded:c,paramMatched:d,twoStepComplete:b.length>0&&c&&d}}let A=[{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}],B=["高处坠落","物体打击","坍塌","触电","火灾","起重","防汛","防台风","中暑","中毒窒息","管线破坏"];function C(a){let b=A.filter(b=>b.pattern.test(a)).map(a=>a.name),c=A.filter(b=>!b.pattern.test(a)).map(a=>a.name),d=B.filter(b=>a.includes(b));return{coveredParts:[...b],missingParts:[...c],coverage:b.length/A.length,planHits:[...d]}}let D=[/其他项目/u,/其他标段/u,/其他城市/u,/本公司(?:其他|承建)/u,/某(?:市|县|区|项目)(?:的)?/u,/他项目/u,/兄弟项目/u];function E(a){return D.filter(b=>b.test(a)).map(a=>a.source.replace(/\\u/gu,""))}},78217:(a,b,c)=>{function d(a,b){return Math.ceil(e(a)/f(b))}function e(a){return a.replace(/<[^>]+>/gu,"").replace(/\s+/gu,"").length}function f(a){let b=Number(String(a&&"typography"in a&&a.typography?.bodySize||"").replace(/[^\d.]/gu,""))||14,c=Number(String(a&&"typography"in a&&a.typography?.lineHeight||"").replace(/[^\d.]/gu,""))||22;return b>=14&&c>=22?900:1050}function g(a){let b=a.trim();if(/^\d+(?:\.\d+)?$/u.test(b))return Number(b);let c={零:0,一:1,二:2,两:2,三:3,四:4,五:5,六:6,七:7,八:8,九:9};if("十"===b)return 10;let d=/^([一二两三四五六七八九])?十([一二三四五六七八九])?$/u.exec(b);if(d)return(d[1]?c[d[1]]:1)*10+(d[2]?c[d[2]]:0)}function h(a="",b=""){let c=`${a}${b}`;return/不少于|至少|不低于|以上|起码/u.test(c)?"minimum":/约|大概|左右|大约|约为|附近/u.test(c)?"approximate":"exact"}function i(a){let b=a.replace(/\s+/gu," "),c=[...b.matchAll(/(不少于|至少|不低于|约为|约|大概|大约|左右|生成|输出|达到|共)?\s*(\d+(?:\.\d+)?|[一二两三四五六七八九十]{1,3})\s*(?:页|頁)\s*(以上|左右|以内|以下)?/gu)],d=[...b.matchAll(/(不少于|至少|不低于|约为|约|大概|大约|左右|生成|输出|达到|共)?\s*(\d+(?:\.\d+)?|[一二两三四五六七八九十]{1,3})\s*(万)?\s*(?:字|字符)\s*(以上|左右|以内|以下)?/gu)],e=c.map(a=>{let b=g(a[2]||"");return Number.isFinite(b)?{value:b,mode:h(a[1],a[3])}:void 0}).filter(a=>!!a).at(-1),f=d.map(a=>{let b=g(a[2]||"");return b?{value:Math.round(b*(a[3]?1e4:1)),mode:h(a[1],a[4])}:void 0}).filter(a=>!!a).at(-1);return{targetPages:e?.value,pageMode:e?.mode,targetChars:f?.value,charMode:f?.mode}}function j(a){let b=a.title+a.purpose;return/方法|技术|质量|安全|进度|资源|保障|措施|部署|方案|流程|执行/u.test(b)?1.3:/概况|结语|附录/u.test(b)?.75:1}function k(a){let b=a.template.generationSettings||a.template.exportSettings,c=f(a.template.exportSettings||a.template.generationSettings),d=i(a.requirement||""),e=i(a.promptTexts||""),g=d.targetChars||d.targetPages?d:e,h=!!(g.targetChars||g.targetPages),k=h?void 0:b?.targetPages?.target||b?.targetPages?.min,l=g.targetPages?g.targetPages*c:void 0,m=g.targetPages||k,n=h?"explicit":k?"template":a.spec?.chapterRules.some(a=>a.minWords)||a.spec?.dynamicChapterRule.minWordsPerChapter?"spec":"default",o=h?Math.max(g.targetChars||0,l||0)||void 0:Math.max((k?k*c:void 0)||0)||void 0,p=g.pageMode||"exact",q=g.charMode||p,r=h&&"approximate"===q,s=h&&"minimum"===q,t=h?m?Math.floor(m*(s?1:.9)):void 0:b?.targetPages?.min||(m?Math.floor(.95*m):void 0),u=h&&m&&!s?Math.ceil(m*(r?1.15:1.08)):b?.targetPages?.max,v=o?Math.floor(o*(s?1:.9)):t?t*c:void 0,w=o&&!s?Math.ceil(o*(r?1.15:1.08)):u?u*c:void 0,x=a.chapters.length>0?a.chapters:a.template.chapters,y=x.reduce((a,b)=>a+j(b),0)||1,z=new Map,A=x.map(a=>({chapter:a,target:o?Math.round(o*j(a)/y):0})),B=x.reduce((b,c)=>b+Math.max(a.spec?.chapterRules.find(a=>a.id===c.id||a.title===c.title)?.minWords||0,a.spec?.dynamicChapterRule.minWordsPerChapter||0,o?Math.min(900,Math.max(450,Math.floor(o/Math.max(1,x.length)*.35))):1200),0),C=o&&B>.92*o?Math.max(.45,.92*o/B):1;for(let{chapter:b,target:c}of A){let d=Math.floor(Math.max(Math.max(a.spec?.chapterRules.find(a=>a.id===b.id||a.title===b.title)?.minWords||0,a.spec?.dynamicChapterRule.minWordsPerChapter||0),o?Math.min(900,Math.max(450,Math.floor(o/Math.max(1,x.length)*.35))):1200)*C);z.set(b.id,Math.max(d,c))}let D=!!(h&&(s||"exact"===q)&&(o||v||0)>=4e4);return{targetPages:m,minPages:t,maxPages:u,targetChars:o,minChars:v,maxChars:w,charsPerPage:c,chapterTargets:z,source:n,mode:q,longformStrict:D}}function l(a,b){let c=a?.targetPages;if(!c?.min&&!c?.target&&!c?.max)return[];let e=d(b,a),f=c.min||c.target,g=c.max||c.target,h=[];return f&&e<f&&h.push({level:"warning",message:`正文篇幅低于目标页数:预计约 ${e} 页,目标不少于 ${f} 页`,suggestion:"建议增加章节正文深度,或根据实际需求调整目标页数。"}),g&&e>g+4&&h.push({level:"warning",message:`正文篇幅可能超过目标页数:预计约 ${e} 页,目标不超过 ${g} 页`,suggestion:"建议检查是否存在重复段落或过度展开。"}),h}function m(a,b){let{currentChars:c,estimatedPages:d}=function(a,b){let c=e(b),d=Math.ceil(c/a.charsPerPage);return{currentChars:c,estimatedPages:d}}(a,b),f=[];return a.minChars&&c<a.minChars&&f.push({level:"warning",message:`正文篇幅低于目标字数:当前 ${c} 字,目标不少于 ${a.minChars} 字`,suggestion:"建议继续扩写缺口章节,或根据实际需求调整目标字数/页数。"}),a.maxChars&&c>Math.ceil(1.12*a.maxChars)?f.push({level:"error",message:`正文篇幅超过目标字数区间:当前 ${c} 字,建议不超过 ${a.maxChars} 字`,suggestion:"请压缩重复段落、过细小节或过度展开内容后再导出。"}):a.maxChars&&c>a.maxChars&&f.push({level:"warning",message:`正文篇幅超过目标字数区间:当前 ${c} 字,建议不超过 ${a.maxChars} 字`,suggestion:"建议减少重复段落、过细小节或过度展开内容。"}),a.minPages&&d<a.minPages&&f.push({level:"warning",message:`正文篇幅低于目标页数:预计约 ${d} 页,目标不少于 ${a.minPages} 页`,suggestion:"建议继续扩写正文,或根据实际导出版式调整目标页数。"}),a.maxPages&&d>a.maxPages&&f.push({level:"warning",message:`正文篇幅超过目标页数区间:预计约 ${d} 页,建议不超过 ${a.maxPages} 页`,suggestion:"建议压缩过度展开内容或调整目标页数。"}),f}c.d(b,{Cv:()=>d,PE:()=>l,V7:()=>e,py:()=>i,q6:()=>f,tF:()=>k,ty:()=>m})},95734:(a,b,c)=>{c.d(b,{$y:()=>t,Qf:()=>m,Sq:()=>s,bU:()=>r,bb:()=>x,rI:()=>u,t5:()=>n});var d=c(95393),e=c(96770),f=c(29281),g=c(22157);let h=new Map,i=0,j=Number(process.env.DOCUMENT_LLM_MAX_CONCURRENCY),k=Number.isFinite(j)?0===j?1/0:j>0?Math.floor(j):void 0:void 0,l=k??64;function m(a){return l}function n(a){return l=k??64}let o=0,p=[];function q(){i=Math.max(0,i-1);let a=p.shift();a&&!a.settled&&(a.settled=!0,i+=1,a.resolve(q))}function r(a){return a?.llm?.failureStreak??o}function s(){return l}function t(){let a=(0,f.I)().load(),b=a.models.reasoning.active||a.models.action.active||a.models.reader.active,c=[...a.models.reasoning.list,...a.models.action.list,...a.models.reader.list].find(a=>a.name===b);if(!c)return;let d=a.providers[c.provider];if(d)return{model:c,provider:d}}async function u(a,b,c=!1,f={}){var j;f.diagnostics&&(f.diagnostics.llm.calls+=1);let k=await (j=f.signal,new Promise((a,b)=>{if(i<l){i+=1,a(q);return}let c={resolve:a,reject:b,settled:!1};p.push(c);let d=()=>{if(c.settled)return;c.settled=!0;let a=p.indexOf(c);a>=0&&p.splice(a,1),b(Error("用户中止"))};if(j){if(j.aborted)return void d();j.addEventListener("abort",d,{once:!0})}}));f.diagnostics&&(f.diagnostics.llm.maxActive=Math.max(f.diagnostics.llm.maxActive,i));try{let i,j=t();if(!j)return;let{model:k,provider:l}=j,m=(0,g.c6)({provider:k.provider,model:k.name,baseUrl:l.baseUrl,directEndpoint:l.directEndpoint,protocol:l.protocol,apiKeyHash:l.apiKey?(0,g.c6)(l.apiKey):""}),n=h.get(m);n||(n=(0,d.createProvider)(function(a,b){let c=(0,e.resolveProtocol)(a,b);return"anthropic"===c?"anthropic":"google"===c?"google":"ollama"===c?"ollama":"openrouter"===c?"openrouter":/deepseek/iu.test(a)?"deepseek":"openai"}(k.provider,l),{baseUrl:l.baseUrl,apiKey:l.apiKey,modelName:k.name,directEndpoint:l.directEndpoint}),h.set(m,n));let p=k.name.toLowerCase(),q=function(a,b,c){let e=(0,d.thinkingCapabilityForModel)(b);return"disabled"===c?e&&"unsupported"!==e.disable?{disableThinking:!0,budgetMode:"compact"}:{disableThinking:!1,budgetMode:e?.budgetPolicy==="shared"?"relaxed":"compact",warning:`当前模型 ${b} 思考不可关闭(厂商限制),已忽略“强制关闭思考”配置;建议切换 deepseek 或 gpt 系列模型`}:"enabled"!==c&&"structuredGeneration"===a&&e?"unsupported"===e.disable?{disableThinking:!1,budgetMode:"shared"===e.budgetPolicy?"relaxed":"compact",warning:`当前模型 ${b} 思考不可关闭(厂商限制),生成耗时受限;建议切换 deepseek 或 gpt 系列模型`}:{disableThinking:!0,budgetMode:"compact"}:{disableThinking:!1,budgetMode:"compact"}}(f.taskKind??"structuredGeneration",p,k.thinking);q.warning&&f.diagnostics&&!f.diagnostics.llm.thinkingWarning&&(f.diagnostics.llm.thinkingWarning=q.warning);let r=n.capabilities?.maxOutputTokens||8192,s=/deepseek/iu.test(p)?Math.min(r,8192):r,u="relaxed"===q.budgetMode&&f.maxTokens?Math.min(Math.ceil(6*f.maxTokens),s):f.maxTokens,v=Symbol("empty-content"),w=async(d,e=!1)=>{if(f.signal?.aborted)throw Error("用户中止");let g=await n.chat([{role:"system",content:c?`${a}
5
+ 只返回 JSON,不要返回 markdown。`:a},{role:"user",content:e?`${b}
6
+
7
+ (重要:缩短思考过程,直接给出最终结论。)`:b}],{temperature:f.temperature??.3*!c,maxTokens:d,signal:f.signal,disableThinking:q.disableThinking}),h=g.content?.trim()??"";if(h)return h;throw v};for(let a=0;a<=1;a+=1){if(f.signal?.aborted)throw Error("用户中止");try{let b=1===a&&i===v,c=await w(u,b);return o=0,f.diagnostics&&(f.diagnostics.llm.failureStreak=0),c}catch(b){if(i=b,f.signal?.aborted)throw Error("用户中止",{cause:b});if(b!==v&&!function(a){let b=a instanceof Error?`${a.name} ${a.message}`:String(a);return/connection error|econnrefused|econnreset|fetch failed|network|socket|eai_again|enotfound|etimedout|429|502|503|504|rate ?limit|too many requests|overloaded|服务繁忙|连接失败/iu.test(b)}(b)||a>=1)break;f.diagnostics&&(f.diagnostics.llm.retries+=1),await new Promise(a=>{setTimeout(a,1200)})}}o+=1,f.diagnostics&&(f.diagnostics.llm.failures+=1,f.diagnostics.llm.failureStreak=(f.diagnostics.llm.failureStreak||0)+1,f.diagnostics.llm.lastError=i instanceof Error?i.message:i===v?"空响应(思考阶段耗尽输出预算)":String(i));return}finally{k()}}function v(a){let b=a.trim(),c=b.match(/^```(?:json)?\s*([\s\S]*?)\s*```$/iu)?.[1]?.trim();if(c)return c;let d=b.indexOf("{"),e=b.lastIndexOf("}"),f=b.indexOf("["),g=b.lastIndexOf("]"),h=d>=0&&e>d?b.slice(d,e+1):"",i=f>=0&&g>f?b.slice(f,g+1):"";return h&&(!i||d<=f)?h:i||b}function w(a,b){a&&(a.llm.schemaFailures=(a.llm.schemaFailures||0)+1,a.llm.lastError=b)}async function x(a,b,c={}){let d=await u(a,b,!0,{maxTokens:c.maxTokens,temperature:c.temperature,signal:c.signal,diagnostics:c.diagnostics,disableThinkingBoost:c.disableThinkingBoost,taskKind:c.taskKind});if(!d){c.outFailure&&c.diagnostics?.llm.lastError&&(c.outFailure.value=c.diagnostics.llm.lastError);return}let e=v(d);try{let a=JSON.parse(e);if(c.schema){let b=function(a,b){if("object"!=typeof a||null===a||Array.isArray(a))return[`根节点类型错误(期望 object,得到 ${null===a?"null":Array.isArray(a)?"array":typeof a})`];let c=[];for(let d of b.required||[])d in a||c.push(`缺失字段 $.${d}`);for(let[d,e]of Object.entries(b.properties)){let b=a[d];if(void 0===b){e.required&&c.push(`缺失字段 $.${d}`);continue}c.push(...function a(b,c,d){let e=Array.isArray(b)?"array":null===b?"null":typeof b;if(e!==c.type)return[`字段 ${d} 类型错误(期望 ${c.type},得到 ${e})`];let f=[];if("string"===c.type)void 0!==c.minLength&&b.length<c.minLength&&f.push(`字段 ${d} 长度不足(期望 ≥${c.minLength},得到 ${b.length})`),void 0!==c.maxLength&&b.length>c.maxLength&&f.push(`字段 ${d} 长度超限(期望 ≤${c.maxLength},得到 ${b.length})`);else if("array"===c.type)void 0!==c.minItems&&b.length<c.minItems&&f.push(`字段 ${d} 条数不足(期望 ≥${c.minItems},得到 ${b.length})`),void 0!==c.maxItems&&b.length>c.maxItems&&f.push(`字段 ${d} 条数超限(期望 ≤${c.maxItems},得到 ${b.length})`),c.items&&b.forEach((b,e)=>f.push(...a(b,c.items,`${d}[${e}]`)));else if("object"===c.type&&c.properties)for(let[e,g]of Object.entries(c.properties)){let c=b[e];if(void 0===c){g.required&&f.push(`缺失字段 ${d}.${e}`);continue}f.push(...a(c,g,`${d}.${e}`))}return f}(b,e,`$.${d}`))}return c.slice(0,6)}(a,c.schema);if(b.length>0){let a=`JSON Schema 校验失败:${b.join(";")}`;w(c.diagnostics,a),c.outFailure&&(c.outFailure.value=a);return}}return a}catch{let a=`JSON 解析失败:${function(a){let b=v(a),c=(b.match(/\{/gu)||[]).length-(b.match(/\}/gu)||[]).length,d=(b.match(/\[/gu)||[]).length-(b.match(/\]/gu)||[]).length,e=b.slice(-80).replace(/\s+/gu," ");return c>0||d>0?`JSON 被截断({ 未闭合 ${c} 个、[ 未闭合 ${d} 个),截断位置响应末段:${e}`:`JSON 语法错误,出错位置响应末段:${e}`}(e)}`;w(c.diagnostics,a),c.outFailure&&(c.outFailure.value=a);return}}}};
@@ -1,4 +1,4 @@
1
- "use strict";exports.id=8661,exports.ids=[8661],exports.modules={48661:(a,b,c)=>{c.d(b,{BH:()=>P,Gl:()=>x,JU:()=>T,Jz:()=>U,M$:()=>J,Oy:()=>D,QG:()=>O,QH:()=>C,SE:()=>E,YL:()=>$,a6:()=>M,r:()=>N,v7:()=>K,yE:()=>S});var d=c(77598),e=c(73024),f=c(48161),g=c(76760),h=c(19023),i=c(23760),j=c(87942),k=c(19898),l=c(44533),m=c(78217),n=c(37095);function o(a,b){return a?.map(a=>"running"===a.status?{...a,status:"failed",message:b}:a)}function p(a){return a.title&&"生成中"!==a.title?a.title:`${a.templateName||"文档"}生成失败`}function q(...a){let b=new Map;for(let c of a)for(let a of c||[])a.id&&a.content?.trim()&&b.set(a.id,a);return[...b.values()]}function r(a){return(a||[]).map(a=>({id:a.id,title:a.title,chars:(0,m.V7)(a.content),status:a.inProgress?"in_progress":a.content.trim().length>0?"completed":"failed",updatedAt:Date.now(),timedOut:a.timedOut,elapsedMs:a.elapsedMs}))}let s=globalThis,t=s.__generatedDocumentTasks??=new Map,u=Math.max(36e5,Number(process.env.DOCUMENT_ABANDONED_RECORD_STALE_MS??864e5)),v=s.__generatedDocumentProcessStartedAt??=Date.now(),w=Math.max(3e4,Number(process.env.DOCUMENT_RECENT_UPDATE_GRACE_MS??6e4));function x(a=(0,l.aY)()){let b=g.join(f.homedir(),".customize-agent","projects",function(a=(0,l.aY)()){return(0,k.computeProjectId)(g.resolve(a))}(a),"generatedDocuments");return e.mkdirSync(g.join(b,"drafts"),{recursive:!0}),e.mkdirSync(g.join(b,"assets"),{recursive:!0}),b}function y(a=(0,l.aY)()){return g.join(x(a),"index.json")}function z(a=(0,l.aY)()){return g.join(x(a),"assets.json")}function A(a,b=(0,l.aY)()){return g.join(x(b),"drafts",`${a}.json`)}function B(a,b=(0,l.aY)()){return g.join(x(b),"drafts",`${a}.meta.json`)}function C(a,b=(0,l.aY)()){let c=F(B(a,b),null);return c&&Number.isFinite(c.updatedAt)?c:null}function D(a){return!(!a||"generating"!==a.status||Date.now()-a.updatedAt<w)&&(a.updatedAt<v||Date.now()-a.updatedAt>=u)}function E(a,b=(0,l.aY)()){return a.path?g.isAbsolute(a.path)?a.path:a.path.startsWith("generatedDocuments/assets/")?g.join(x(b),a.path.replace(/^generatedDocuments\/assets\//u,"assets/")):g.join((0,l.NW)(b),a.path):null}function F(a,b){try{return JSON.parse(e.readFileSync(a,"utf8"))}catch{return b}}function G(a,b){e.mkdirSync(g.dirname(a),{recursive:!0});let c=`${a}.${process.pid}.${Date.now()}.tmp`;e.writeFileSync(c,JSON.stringify(b,null,2)),e.renameSync(c,a)}function H(a){for(let b of t.values())if(b.documentId===a)return b;return null}function I(a,b=(0,l.aY)()){if("generating"!==a.status||H(a.id)||Date.now()-a.updatedAt<w)return a;let c=a.updatedAt<v?0:u;if(Date.now()-a.updatedAt<c)return a;let d="生成任务已中断,请点击继续生成或重新生成",e=a.checkpointChapters?.length?"warning":"failed",f={...a,title:p(a),status:e,error:a.error||d,executionStages:o(a.executionStages,d),completedAt:Date.now(),warningIssues:a.checkpointChapters?.length?[...a.warningIssues||[],d]:a.warningIssues};return a.taskId&&Z(b,{taskId:a.taskId,title:`生成 ${f.title}`,status:"warning"===e?"warning":"error",percent:100,message:d,stages:f.executionStages,error:d}),f}function J(a=(0,l.aY)()){return F(y(a),[]).map(b=>{if("generating"!==b.status)return b;let c=F(A(b.id,a),null);if(!c)return b;let d=I(c,a);return d!==c?W(L(d,a,{preserveUpdatedAt:!0})):W(c)}).sort((a,b)=>(b.createdAt||b.updatedAt)-(a.createdAt||a.updatedAt))}function K(a,b=(0,l.aY)()){let c=F(A(a,b),null);if(!c)return null;let d=I(c,b);return function(a,b=(0,l.aY)()){if("generating"===a.status||!(a.editedMarkdown||a.markdown)?.trim())return a;let c=`document-${a.id}`;if(a.assets?.some(a=>a.id===c&&a.path))return a;let d=R(a,b);return d?L({...a,assets:[d,...(a.assets||[]).filter(a=>a.id!==d.id)]},b):a}(d!==c?L(d,b,{preserveUpdatedAt:!0}):d,b)}function L(a,b=(0,l.aY)(),c){let d=Date.now(),e=X({...a,updatedAt:c?.preserveUpdatedAt?a.updatedAt:d});G(A(e.id,b),e),G(B(e.id,b),{updatedAt:e.updatedAt,status:e.status,completedAt:e.completedAt});let f=F(y(b),[]).filter(a=>a.id!==e.id);return f.unshift(W(e)),G(y(b),f),e}function M(a,b,c=(0,l.aY)()){let d=K(a,c);return d?L({...d,...b,id:a},c):null}function N(a,b=(0,l.aY)()){let c=K(a,b);if(!c)return null;if("generating"!==c.status)return c;for(let[b,c]of t)c.documentId===a&&(c.status="aborted",c.controller.abort(),t.delete(b));let d="用户中止",e=o(c.executionStages,d),f=L({...c,status:"aborted",error:d,executionStages:e,completedAt:Date.now()},b);return f.taskId&&Z(b,{taskId:f.taskId,title:`生成 ${f.title}`,status:"warning",percent:100,message:d,stages:e,error:d}),f}function O(a,b=(0,l.aY)()){try{e.rmSync(A(a,b),{force:!0})}catch{console.warn("[generated-documents] 删除文档记录失败或文件不存在",a)}let c=F(y(b),[]).filter(b=>b.id!==a);G(y(b),c)}function P(a=(0,l.aY)()){return F(z(a),[]).sort((a,b)=>b.updatedAt-a.updatedAt)}function Q(a,b,c=(0,l.aY)()){let d=Date.now(),e=[...P(c)];for(let c of a){let a=e.findIndex(a=>a.id===c.id),f=c.path?.startsWith("generatedDocuments/assets/")||"generated"===c.status||"prompt_ready"===c.status?"generated":"knowledge_base",h={...c,name:g.basename(c.path||c.url||c.id),source:f,indexed:a>=0&&e[a].indexed,usedByDocumentIds:a>=0?[...new Set([...e[a].usedByDocumentIds,b])]:[b],createdAt:a>=0?e[a].createdAt:d,updatedAt:d};a>=0?e[a]={...e[a],...h}:e.push(h)}return G(z(c),e),e}function R(a,b=(0,l.aY)()){let c=a.editedMarkdown||a.markdown;if(!c?.trim())return null;let d=`generatedDocuments/assets/${a.title.replace(/[\\/:*?"<>|]/gu,"_").slice(0,120)||"generated-document"}-${a.id}.md`,f=g.join(x(b),d.replace(/^generatedDocuments\//u,""));e.mkdirSync(g.dirname(f),{recursive:!0}),e.writeFileSync(f,c,"utf8");let h={id:`document-${a.id}`,type:"file",role:"generated",path:d,status:"generated",message:"模板运行生成的 Markdown 文档,仅登记到生成资源,不进入知识库"};return Q([h],a.id,b).find(a=>a.id===h.id)||null}function S(a,b=(0,l.aY)()){return P(b).find(b=>b.id===a)||null}function T(a,b=(0,l.aY)()){let c=S(a,b);if(!c)return!1;let d=E(c,b);if(d&&d.startsWith(x(b)))try{e.rmSync(d,{force:!0})}catch{console.warn("[generated-documents] 删除生成资源文件失败或文件不存在",d)}return G(z(b),P(b).filter(b=>b.id!==a)),!0}function U(a,b,c=(0,l.aY)()){let d=S(a,c);if(!d)return null;let f=E(d,c);return f&&e.existsSync(f)?"directory"===b?g.dirname(f):f:null}function V(a){let b=Math.max(4,Math.floor(Number(process.env.DOCUMENT_PERSIST_EVIDENCE_MAX_ITEMS??10))),c=Math.max(300,Math.floor(Number(process.env.DOCUMENT_PERSIST_EVIDENCE_ITEM_CHARS??900)));return{...a,evidence:(a.evidence||[]).slice(0,b).map(a=>({...a,content:"string"==typeof a.content?a.content.replace(/\s+/gu," ").slice(0,c):""}))}}function W(a){let b=[...a.executionStages||a.draft?.executionStages||[]].reverse().find(a=>a.message||a.subtitle||a.roleId),c=a.partialChapters||r(a.checkpointChapters||a.draft?.checkpointChapters||a.draft?.chapters),d=a.draft?.validationIssues||[],e=a.draft?.exportGate?a.draft.exportGate.blockingIssues?.length??0:d.filter(a=>"blocker"===a.severity||"error"===a.level).length,f=d.filter(a=>"warning"===a.severity||"warning"===a.level).length||a.warningIssues?.length||0,g=d.filter(a=>"suggestion"===a.severity||"info"===a.level).length;return{id:a.id,taskId:a.taskId,templateId:a.templateId,templateName:a.templateName,templateVersion:a.templateVersion,title:a.title,requirement:a.requirement,projectRoot:a.projectRoot,projectId:a.projectId,knowledgeBasePath:a.knowledgeBasePath,status:a.status,createdAt:a.createdAt,updatedAt:a.updatedAt,completedAt:a.completedAt,elapsedMs:a.completedAt?a.completedAt-a.createdAt:a.updatedAt-a.createdAt,error:a.error,warningIssues:(a.warningIssues||[]).slice(0,12),warningCount:f,blockerCount:e,suggestionCount:g,wordCount:(0,m.V7)(a.editedMarkdown||a.markdown||a.draft?.markdown||""),chapterCount:c?.length||a.draft?.chapters?.length||0,completedChapterCount:(c||[]).filter(a=>"completed"===a.status).length,latestStage:b?.subtitle||b?.roleName||b?.roleId,latestMessage:b?.message,assets:(a.assets||[]).slice(0,8),partialChapters:c}}function X(a){let b=a.draft?{...a.draft,chapters:a.draft.chapters?.map(V),checkpointChapters:a.draft.checkpointChapters?.map(V)}:a.draft;return{...a,draft:b,checkpointChapters:a.checkpointChapters?.map(V)}}function Y(a,b){let c=K(a.documentId,b);return c&&"generating"===c.status?{taskId:a.id,documentId:a.documentId,record:c}:null}function Z(a,b){(0,n.Qf)(a,{id:b.taskId,type:"document",title:b.title,stage:"processing"===b.status?"generating":"error"===b.status?"error":"done",status:b.status,percent:b.percent,message:b.message,error:b.error,details:(b.stages||[]).filter(a=>"role_binding"===a.type||"runtime-prompt-rules"===a.roleId||"document-readiness"===a.roleId||"export_ready"===a.type||"failed"===a.status).flatMap(a=>[`${a.subtitle||a.roleName||a.roleId}:${a.message||a.status}`,...(a.details||[]).slice(0,8).map(a=>` - ${a}`)]).slice(0,80)})}function $(a,b=(0,l.aY)()){let c=g.resolve(b),e=(0,k.computeProjectId)(c),f=Date.now(),n=a.resumeDocumentId?K(a.resumeDocumentId,c):null;if(n){let a=H(n.id),b=a?Y(a,c):null;if(b)return b}if(!n)for(let b of t.values()){let d=Y(b,c);if(d&&d.record.templateId===a.templateId&&d.record.projectRoot===c)return d}let s=Math.max(1,Number(process.env.DOCUMENT_MAX_CONCURRENT_GENERATIONS??2));if(t.size>=s)throw Error(`当前已有 ${t.size} 个文档生成任务在运行(上限 ${s}),请等待完成或中止后再运行`);let u=n?.id||`doc-${f}-${d.randomBytes(4).toString("hex")}`,v=`task-${f}-${d.randomBytes(4).toString("hex")}`,w=n?{...n,taskId:v,status:"generating",error:void 0,completedAt:void 0,executionStages:[{type:"validation",roleId:"resume-generation",status:"running",message:"已重新进入生成流程;仅复用通过当前工作流版本、项目、模板、需求和导出门禁校验的章节,其余章节重新生成"}],partialChapters:void 0,checkpointChapters:void 0,draft:void 0,warningIssues:void 0,updatedAt:f}:{id:u,taskId:v,templateId:a.templateId,templateVersion:(0,h.QJx)(a.templateId)?.version,title:"生成中",requirement:a.requirement||"",maxEvidencePerChapter:a.maxEvidencePerChapter,projectRoot:c,projectId:e,knowledgeBasePath:(0,l.NW)(c),markdown:"",status:"generating",assets:[],createdAt:f,updatedAt:f};L(w,c),Z(c,{taskId:v,title:`生成 ${w.title}`,status:"processing",percent:1,message:"文档生成任务已进入后台队列",stages:w.executionStages});let x=new AbortController,y={},z=function(a,b,c){if(!a)return[];let d=(0,h.QJx)(b.templateId),e=a.reviewMetadata?.workflowVersion?.version||a.draft?.reviewMetadata?.workflowVersion?.version,f=a.draft?.exportGate?.passed===!0,g=a.templateId===b.templateId&&(!d||!a.templateVersion||a.templateVersion===d.version),i=a.projectRoot===c&&a.projectId===(0,k.computeProjectId)(c),l=(a.requirement||"")===(b.requirement||"");if(!g||!i||!l||e!==j.x.version||!f)return[];let m=new Set((a.draft?.partialChapters||a.partialChapters||[]).filter(a=>"completed"===a.status).map(a=>a.id));return q(a.draft?.chapters,a.checkpointChapters).filter(a=>m.has(a.id)&&!!a.content?.trim()&&!/WRITER_MISSING_SECTION|Writer 未完成/u.test(a.content))}(n,a,c),A=0,B="",C=Math.max(1e3,Math.min(15e3,Number(process.env.DOCUMENT_PROGRESS_SAVE_INTERVAL_MS??5e3))),D=Math.max(3e4,Math.min(3e5,Number(process.env.DOCUMENT_PROGRESS_HEARTBEAT_SAVE_INTERVAL_MS??6e4))),E=(0,h.OXS)({...a,projectRoot:c,resumeChapters:z,signal:x.signal,onProgress:(a,b)=>{try{y.current&&(y.current.lastProgressAt=Date.now());let d=Date.now(),e=JSON.stringify({stages:a.map(a=>({type:a.type,roleId:a.roleId,status:a.status,message:a.message,progress:a.progress})),checkpoint:b?.chapters?.map(a=>[a.id,a.content.length,a.sections?.length||0])||[]});if(!b?.chapters&&e===B&&d-A<Math.max(C,D))return;let f=K(u,c);if(f&&"generating"===f.status){let g=b?.chapters?q(f.checkpointChapters,b.chapters).map(V):f.checkpointChapters,h=g?.length?g.map(a=>`# ${a.title}
1
+ "use strict";exports.id=8661,exports.ids=[8661],exports.modules={48661:(a,b,c)=>{c.d(b,{BH:()=>P,Gl:()=>x,JU:()=>T,Jz:()=>U,M$:()=>J,Oy:()=>D,QG:()=>O,QH:()=>C,SE:()=>E,YL:()=>$,a6:()=>M,r:()=>N,v7:()=>K,yE:()=>S});var d=c(77598),e=c(73024),f=c(48161),g=c(76760),h=c(7152),i=c(23760),j=c(87942),k=c(19898),l=c(44533),m=c(78217),n=c(37095);function o(a,b){return a?.map(a=>"running"===a.status?{...a,status:"failed",message:b}:a)}function p(a){return a.title&&"生成中"!==a.title?a.title:`${a.templateName||"文档"}生成失败`}function q(...a){let b=new Map;for(let c of a)for(let a of c||[])a.id&&a.content?.trim()&&b.set(a.id,a);return[...b.values()]}function r(a){return(a||[]).map(a=>({id:a.id,title:a.title,chars:(0,m.V7)(a.content),status:a.inProgress?"in_progress":a.content.trim().length>0?"completed":"failed",updatedAt:Date.now(),timedOut:a.timedOut,elapsedMs:a.elapsedMs}))}let s=globalThis,t=s.__generatedDocumentTasks??=new Map,u=Math.max(36e5,Number(process.env.DOCUMENT_ABANDONED_RECORD_STALE_MS??864e5)),v=s.__generatedDocumentProcessStartedAt??=Date.now(),w=Math.max(3e4,Number(process.env.DOCUMENT_RECENT_UPDATE_GRACE_MS??6e4));function x(a=(0,l.aY)()){let b=g.join(f.homedir(),".customize-agent","projects",function(a=(0,l.aY)()){return(0,k.computeProjectId)(g.resolve(a))}(a),"generatedDocuments");return e.mkdirSync(g.join(b,"drafts"),{recursive:!0}),e.mkdirSync(g.join(b,"assets"),{recursive:!0}),b}function y(a=(0,l.aY)()){return g.join(x(a),"index.json")}function z(a=(0,l.aY)()){return g.join(x(a),"assets.json")}function A(a,b=(0,l.aY)()){return g.join(x(b),"drafts",`${a}.json`)}function B(a,b=(0,l.aY)()){return g.join(x(b),"drafts",`${a}.meta.json`)}function C(a,b=(0,l.aY)()){let c=F(B(a,b),null);return c&&Number.isFinite(c.updatedAt)?c:null}function D(a){return!(!a||"generating"!==a.status||Date.now()-a.updatedAt<w)&&(a.updatedAt<v||Date.now()-a.updatedAt>=u)}function E(a,b=(0,l.aY)()){return a.path?g.isAbsolute(a.path)?a.path:a.path.startsWith("generatedDocuments/assets/")?g.join(x(b),a.path.replace(/^generatedDocuments\/assets\//u,"assets/")):g.join((0,l.NW)(b),a.path):null}function F(a,b){try{return JSON.parse(e.readFileSync(a,"utf8"))}catch{return b}}function G(a,b){e.mkdirSync(g.dirname(a),{recursive:!0});let c=`${a}.${process.pid}.${Date.now()}.tmp`;e.writeFileSync(c,JSON.stringify(b,null,2)),e.renameSync(c,a)}function H(a){for(let b of t.values())if(b.documentId===a)return b;return null}function I(a,b=(0,l.aY)()){if("generating"!==a.status||H(a.id)||Date.now()-a.updatedAt<w)return a;let c=a.updatedAt<v?0:u;if(Date.now()-a.updatedAt<c)return a;let d="生成任务已中断,请点击继续生成或重新生成",e=a.checkpointChapters?.length?"warning":"failed",f={...a,title:p(a),status:e,error:a.error||d,executionStages:o(a.executionStages,d),completedAt:Date.now(),warningIssues:a.checkpointChapters?.length?[...a.warningIssues||[],d]:a.warningIssues};return a.taskId&&Z(b,{taskId:a.taskId,title:`生成 ${f.title}`,status:"warning"===e?"warning":"error",percent:100,message:d,stages:f.executionStages,error:d}),f}function J(a=(0,l.aY)()){return F(y(a),[]).map(b=>{if("generating"!==b.status)return b;let c=F(A(b.id,a),null);if(!c)return b;let d=I(c,a);return d!==c?W(L(d,a,{preserveUpdatedAt:!0})):W(c)}).sort((a,b)=>(b.createdAt||b.updatedAt)-(a.createdAt||a.updatedAt))}function K(a,b=(0,l.aY)()){let c=F(A(a,b),null);if(!c)return null;let d=I(c,b);return function(a,b=(0,l.aY)()){if("generating"===a.status||!(a.editedMarkdown||a.markdown)?.trim())return a;let c=`document-${a.id}`;if(a.assets?.some(a=>a.id===c&&a.path))return a;let d=R(a,b);return d?L({...a,assets:[d,...(a.assets||[]).filter(a=>a.id!==d.id)]},b):a}(d!==c?L(d,b,{preserveUpdatedAt:!0}):d,b)}function L(a,b=(0,l.aY)(),c){let d=Date.now(),e=X({...a,updatedAt:c?.preserveUpdatedAt?a.updatedAt:d});G(A(e.id,b),e),G(B(e.id,b),{updatedAt:e.updatedAt,status:e.status,completedAt:e.completedAt});let f=F(y(b),[]).filter(a=>a.id!==e.id);return f.unshift(W(e)),G(y(b),f),e}function M(a,b,c=(0,l.aY)()){let d=K(a,c);return d?L({...d,...b,id:a},c):null}function N(a,b=(0,l.aY)()){let c=K(a,b);if(!c)return null;if("generating"!==c.status)return c;for(let[b,c]of t)c.documentId===a&&(c.status="aborted",c.controller.abort(),t.delete(b));let d="用户中止",e=o(c.executionStages,d),f=L({...c,status:"aborted",error:d,executionStages:e,completedAt:Date.now()},b);return f.taskId&&Z(b,{taskId:f.taskId,title:`生成 ${f.title}`,status:"warning",percent:100,message:d,stages:e,error:d}),f}function O(a,b=(0,l.aY)()){try{e.rmSync(A(a,b),{force:!0})}catch{console.warn("[generated-documents] 删除文档记录失败或文件不存在",a)}let c=F(y(b),[]).filter(b=>b.id!==a);G(y(b),c)}function P(a=(0,l.aY)()){return F(z(a),[]).sort((a,b)=>b.updatedAt-a.updatedAt)}function Q(a,b,c=(0,l.aY)()){let d=Date.now(),e=[...P(c)];for(let c of a){let a=e.findIndex(a=>a.id===c.id),f=c.path?.startsWith("generatedDocuments/assets/")||"generated"===c.status||"prompt_ready"===c.status?"generated":"knowledge_base",h={...c,name:g.basename(c.path||c.url||c.id),source:f,indexed:a>=0&&e[a].indexed,usedByDocumentIds:a>=0?[...new Set([...e[a].usedByDocumentIds,b])]:[b],createdAt:a>=0?e[a].createdAt:d,updatedAt:d};a>=0?e[a]={...e[a],...h}:e.push(h)}return G(z(c),e),e}function R(a,b=(0,l.aY)()){let c=a.editedMarkdown||a.markdown;if(!c?.trim())return null;let d=`generatedDocuments/assets/${a.title.replace(/[\\/:*?"<>|]/gu,"_").slice(0,120)||"generated-document"}-${a.id}.md`,f=g.join(x(b),d.replace(/^generatedDocuments\//u,""));e.mkdirSync(g.dirname(f),{recursive:!0}),e.writeFileSync(f,c,"utf8");let h={id:`document-${a.id}`,type:"file",role:"generated",path:d,status:"generated",message:"模板运行生成的 Markdown 文档,仅登记到生成资源,不进入知识库"};return Q([h],a.id,b).find(a=>a.id===h.id)||null}function S(a,b=(0,l.aY)()){return P(b).find(b=>b.id===a)||null}function T(a,b=(0,l.aY)()){let c=S(a,b);if(!c)return!1;let d=E(c,b);if(d&&d.startsWith(x(b)))try{e.rmSync(d,{force:!0})}catch{console.warn("[generated-documents] 删除生成资源文件失败或文件不存在",d)}return G(z(b),P(b).filter(b=>b.id!==a)),!0}function U(a,b,c=(0,l.aY)()){let d=S(a,c);if(!d)return null;let f=E(d,c);return f&&e.existsSync(f)?"directory"===b?g.dirname(f):f:null}function V(a){let b=Math.max(4,Math.floor(Number(process.env.DOCUMENT_PERSIST_EVIDENCE_MAX_ITEMS??10))),c=Math.max(300,Math.floor(Number(process.env.DOCUMENT_PERSIST_EVIDENCE_ITEM_CHARS??900)));return{...a,evidence:(a.evidence||[]).slice(0,b).map(a=>({...a,content:"string"==typeof a.content?a.content.replace(/\s+/gu," ").slice(0,c):""}))}}function W(a){let b=[...a.executionStages||a.draft?.executionStages||[]].reverse().find(a=>a.message||a.subtitle||a.roleId),c=a.partialChapters||r(a.checkpointChapters||a.draft?.checkpointChapters||a.draft?.chapters),d=a.draft?.validationIssues||[],e=a.draft?.exportGate?a.draft.exportGate.blockingIssues?.length??0:d.filter(a=>"blocker"===a.severity||"error"===a.level).length,f=d.filter(a=>"warning"===a.severity||"warning"===a.level).length||a.warningIssues?.length||0,g=d.filter(a=>"suggestion"===a.severity||"info"===a.level).length;return{id:a.id,taskId:a.taskId,templateId:a.templateId,templateName:a.templateName,templateVersion:a.templateVersion,title:a.title,requirement:a.requirement,projectRoot:a.projectRoot,projectId:a.projectId,knowledgeBasePath:a.knowledgeBasePath,status:a.status,createdAt:a.createdAt,updatedAt:a.updatedAt,completedAt:a.completedAt,elapsedMs:a.completedAt?a.completedAt-a.createdAt:a.updatedAt-a.createdAt,error:a.error,warningIssues:(a.warningIssues||[]).slice(0,12),warningCount:f,blockerCount:e,suggestionCount:g,wordCount:(0,m.V7)(a.editedMarkdown||a.markdown||a.draft?.markdown||""),chapterCount:c?.length||a.draft?.chapters?.length||0,completedChapterCount:(c||[]).filter(a=>"completed"===a.status).length,latestStage:b?.subtitle||b?.roleName||b?.roleId,latestMessage:b?.message,assets:(a.assets||[]).slice(0,8),partialChapters:c}}function X(a){let b=a.draft?{...a.draft,chapters:a.draft.chapters?.map(V),checkpointChapters:a.draft.checkpointChapters?.map(V)}:a.draft;return{...a,draft:b,checkpointChapters:a.checkpointChapters?.map(V)}}function Y(a,b){let c=K(a.documentId,b);return c&&"generating"===c.status?{taskId:a.id,documentId:a.documentId,record:c}:null}function Z(a,b){(0,n.Qf)(a,{id:b.taskId,type:"document",title:b.title,stage:"processing"===b.status?"generating":"error"===b.status?"error":"done",status:b.status,percent:b.percent,message:b.message,error:b.error,details:(b.stages||[]).filter(a=>"role_binding"===a.type||"runtime-prompt-rules"===a.roleId||"document-readiness"===a.roleId||"export_ready"===a.type||"failed"===a.status).flatMap(a=>[`${a.subtitle||a.roleName||a.roleId}:${a.message||a.status}`,...(a.details||[]).slice(0,8).map(a=>` - ${a}`)]).slice(0,80)})}function $(a,b=(0,l.aY)()){let c=g.resolve(b),e=(0,k.computeProjectId)(c),f=Date.now(),n=a.resumeDocumentId?K(a.resumeDocumentId,c):null;if(n){let a=H(n.id),b=a?Y(a,c):null;if(b)return b}if(!n)for(let b of t.values()){let d=Y(b,c);if(d&&d.record.templateId===a.templateId&&d.record.projectRoot===c)return d}let s=Math.max(1,Number(process.env.DOCUMENT_MAX_CONCURRENT_GENERATIONS??2));if(t.size>=s)throw Error(`当前已有 ${t.size} 个文档生成任务在运行(上限 ${s}),请等待完成或中止后再运行`);let u=n?.id||`doc-${f}-${d.randomBytes(4).toString("hex")}`,v=`task-${f}-${d.randomBytes(4).toString("hex")}`,w=n?{...n,taskId:v,status:"generating",error:void 0,completedAt:void 0,executionStages:[{type:"validation",roleId:"resume-generation",status:"running",message:"已重新进入生成流程;仅复用通过当前工作流版本、项目、模板、需求和导出门禁校验的章节,其余章节重新生成"}],partialChapters:void 0,checkpointChapters:void 0,draft:void 0,warningIssues:void 0,updatedAt:f}:{id:u,taskId:v,templateId:a.templateId,templateVersion:(0,h.QJx)(a.templateId)?.version,title:"生成中",requirement:a.requirement||"",maxEvidencePerChapter:a.maxEvidencePerChapter,projectRoot:c,projectId:e,knowledgeBasePath:(0,l.NW)(c),markdown:"",status:"generating",assets:[],createdAt:f,updatedAt:f};L(w,c),Z(c,{taskId:v,title:`生成 ${w.title}`,status:"processing",percent:1,message:"文档生成任务已进入后台队列",stages:w.executionStages});let x=new AbortController,y={},z=function(a,b,c){if(!a)return[];let d=(0,h.QJx)(b.templateId),e=a.reviewMetadata?.workflowVersion?.version||a.draft?.reviewMetadata?.workflowVersion?.version,f=a.draft?.exportGate?.passed===!0,g=a.templateId===b.templateId&&(!d||!a.templateVersion||a.templateVersion===d.version),i=a.projectRoot===c&&a.projectId===(0,k.computeProjectId)(c),l=(a.requirement||"")===(b.requirement||"");if(!g||!i||!l||e!==j.x.version||!f)return[];let m=new Set((a.draft?.partialChapters||a.partialChapters||[]).filter(a=>"completed"===a.status).map(a=>a.id));return q(a.draft?.chapters,a.checkpointChapters).filter(a=>m.has(a.id)&&!!a.content?.trim()&&!/WRITER_MISSING_SECTION|Writer 未完成/u.test(a.content))}(n,a,c),A=0,B="",C=Math.max(1e3,Math.min(15e3,Number(process.env.DOCUMENT_PROGRESS_SAVE_INTERVAL_MS??5e3))),D=Math.max(3e4,Math.min(3e5,Number(process.env.DOCUMENT_PROGRESS_HEARTBEAT_SAVE_INTERVAL_MS??6e4))),E=(0,h.OXS)({...a,projectRoot:c,resumeChapters:z,signal:x.signal,onProgress:(a,b)=>{try{y.current&&(y.current.lastProgressAt=Date.now());let d=Date.now(),e=JSON.stringify({stages:a.map(a=>({type:a.type,roleId:a.roleId,status:a.status,message:a.message,progress:a.progress})),checkpoint:b?.chapters?.map(a=>[a.id,a.content.length,a.sections?.length||0])||[]});if(!b?.chapters&&e===B&&d-A<Math.max(C,D))return;let f=K(u,c);if(f&&"generating"===f.status){let g=b?.chapters?q(f.checkpointChapters,b.chapters).map(V):f.checkpointChapters,h=g?.length?g.map(a=>`# ${a.title}
2
2
 
3
3
  ${a.content}`).join("\n\n"):f.markdown,i=L(X({...f,executionStages:a,checkpointChapters:g,partialChapters:b?.chapters?r(g):f.partialChapters,markdown:h,wordCount:h?(0,m.V7)(h):f.wordCount}),c),j=[...a].reverse().find(a=>"running"===a.status)||a[a.length-1];Z(c,{taskId:v,title:`生成 ${i.templateName||i.title}`,status:"processing",percent:Math.max(1,Math.min(99,j?.progress?Math.round(j.progress.current/Math.max(1,j.progress.total)*90):30)),message:j?.message||"文档生成中",stages:a}),A=d,B=e,console.log(`[gen] progress saved: ${a.length} stages, checkpoint=${g?.length||0}, doc=${u}`)}}catch(a){console.error("[gen] progress save error:",a)}}}).then(async a=>{y.current&&(y.current.lastProgressAt=Date.now());let b=K(u,c);if(!b||"generating"!==b.status)return b??w;let d=/结构化事实读取不足|正文可能未显式覆盖|仅包含文件类型和占位符|不在本次招标范围内|知识库文件索引失败|暂无可检索内容切片|未抽取到结构化事实|兜底片段|资料抽取诊断|无法直接读取文本内容|占位符|缺乏详细的.*具体尺寸|需结合原文件进一步深化|章节生成存在兜底/u,e=a.markdown||"",f=/^##\s+(?!目录$)(?!附录)(?!第[一二三四五六七八九十百千万\d]+章\s+)/gmu.test(e),g=/(?:第?\d+页|P\.?\s*\d+)/iu.test(e),h=/施工方/u.test(e),j=a.validationIssues.filter(a=>"error"===a.level||"warning"===a.level).map(a=>a.suggestion?`${a.message}:${a.suggestion}`:a.message).filter(a=>!/^\s*[[{]/u.test(a)&&!/"status"\s*:/u.test(a)&&!d.test(a)).filter(a=>!/正文存在非正式章二级标题/u.test(a)||f).filter(a=>!/资料页码|文件页码|页码引用/u.test(a)||g).filter(a=>!/禁止内容|施工方/u.test(a)||h).filter(b=>!a.exportGate.passed||!/目录与正文不一致|表格分隔线位置不规范/u.test(b)),k=(0,i.yw)(a.markdown,a.chapters).filter(a=>"empty"===a.reason);k.length>0&&j.unshift(`小节内容补写未完成:仍有 ${k.length} 个空洞小节,请继续生成或补充资料后重试`),a.exportGate.passed||0!==j.length||j.push("导出门禁未通过:存在未完成的硬阻断检查项");let l=X({...b,templateName:a.templateName,templateVersion:a.templateVersion??b.templateVersion,title:a.title,markdown:a.markdown,status:a.exportGate.passed?"completed":"failed",draft:a,executionStages:a.executionStages,partialChapters:a.partialChapters,checkpointChapters:a.chapters,reviewMetadata:a.reviewMetadata,promptProvenance:a.promptProvenance??b.promptProvenance,agentWorkflow:a.agentWorkflow,assets:a.assets||[],completedAt:Date.now(),warningIssues:j}),m=R(l,c),n=L({...l,assets:m?[m,...(l.assets||[]).filter(a=>a.id!==m.id)]:l.assets},c);return Q(a.assets||[],u,c),Z(c,{taskId:v,title:`生成 ${n.title}`,status:"completed"===n.status?"success":"error",percent:100,message:"completed"===n.status?"文档生成完成,已通过导出门禁":`文档生成未通过导出门禁,存在 ${j.length||1} 个阻断问题`,stages:a.executionStages,error:"completed"===n.status?void 0:j.join(";")}),n}).catch(a=>{let b=K(u,c);if(!b||"generating"!==b.status)return b??w;let d=a instanceof Error?a.message:String(a),e=a instanceof Error&&/用户中止|aborted|abort/i.test(a.message)?"aborted":b.checkpointChapters?.length?"warning":"failed",f=b.markdown||b.checkpointChapters?.map(a=>`# ${a.title}
4
4
 
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charSet="utf-8" data-next-head=""/><meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" data-next-head=""/><title data-next-head="">404: This page could not be found</title><link rel="preload" href="/_next/static/css/db2515737185f431.css" as="style"/><link rel="stylesheet" href="/_next/static/css/db2515737185f431.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" noModule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-4224e970a97a4a86.js" defer=""></script><script src="/_next/static/chunks/framework-161be364fd69a7ce.js" defer=""></script><script src="/_next/static/chunks/main-91fb767ebd74c9c1.js" defer=""></script><script src="/_next/static/chunks/pages/_app-3e8b35112a00821a.js" defer=""></script><script src="/_next/static/chunks/pages/_error-282257fbdcc167b4.js" defer=""></script><script src="/_next/static/UIqiA9CZtvGl5Z-xG_tmf/_buildManifest.js" defer=""></script><script src="/_next/static/UIqiA9CZtvGl5Z-xG_tmf/_ssgManifest.js" defer=""></script></head><body><div id="__next"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}if(u)p(u);else try{let n=localStorage.getItem(i)||s,y=l&&n==="system"?c():n;p(y)}catch(n){}})("class","theme","system",null,["light","dark"],null,true,true)</script><div class="css-1pi45l5 ant-app css-var-_R_16_"><aside class="sidebar"><a href="/overview"><div class="sidebarLogo"><div class="w-8 h-8 rounded-lg bg-black dark:bg-white flex items-center justify-center shrink-0"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-moon text-white dark:text-black"><path d="M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z"></path></svg></div><div class="sidebarLogoTitle"><span class="logoGradient">Customize Agent</span></div></div></a><nav class="sidebarNav mt-2"><a href="/overview"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-layout-dashboard"><rect width="7" height="9" x="3" y="3" rx="1"></rect><rect width="7" height="5" x="14" y="3" rx="1"></rect><rect width="7" height="9" x="14" y="12" rx="1"></rect><rect width="7" height="5" x="3" y="16" rx="1"></rect></svg><span class="sidebarLabel">总览</span></div></a><div><div class="sidebarItem sidebarParent"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-database"><ellipse cx="12" cy="5" rx="9" ry="3"></ellipse><path d="M3 5V19A9 3 0 0 0 21 19V5"></path><path d="M3 12A9 3 0 0 0 21 12"></path></svg><span class="sidebarLabel">知识库</span><span class="sidebarChevron"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-right"><path d="m9 18 6-6-6-6"></path></svg></span></div></div><a href="/models"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-cpu"><rect width="16" height="16" x="4" y="4" rx="2"></rect><rect width="6" height="6" x="9" y="9" rx="1"></rect><path d="M15 2v2"></path><path d="M15 20v2"></path><path d="M2 15h2"></path><path d="M2 9h2"></path><path d="M20 15h2"></path><path d="M20 9h2"></path><path d="M9 2v2"></path><path d="M9 20v2"></path></svg><span class="sidebarLabel">模型配置</span></div></a><a href="/prompt"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-message-square"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"></path></svg><span class="sidebarLabel">提示词管理</span></div></a><a href="/document-roles"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-settings"><path d="M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z"></path><circle cx="12" cy="12" r="3"></circle></svg><span class="sidebarLabel">角色配置</span></div></a><a href="/documents"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-files"><path d="M20 7h-3a2 2 0 0 1-2-2V2"></path><path d="M9 18a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h7l4 4v10a2 2 0 0 1-2 2Z"></path><path d="M3 7.6v12.8A1.6 1.6 0 0 0 4.6 22h9.8"></path></svg><span class="sidebarLabel">工作流模版库</span></div></a><a href="/template-references"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-library-big"><rect width="8" height="18" x="3" y="3" rx="1"></rect><path d="M7 3v18"></path><path d="M20.4 18.9c.2.5-.1 1.1-.6 1.3l-1.9.7c-.5.2-1.1-.1-1.3-.6L11.1 5.1c-.2-.5.1-1.1.6-1.3l1.9-.7c.5-.2 1.1.1 1.3.6Z"></path></svg><span class="sidebarLabel">模板参考</span></div></a><a href="/asset-library"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-folder-open"><path d="m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2"></path></svg><span class="sidebarLabel">生成资源</span></div></a><a href="/system/logs"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-bug"><path d="m8 2 1.88 1.88"></path><path d="M14.12 3.88 16 2"></path><path d="M9 7.13v-1a3.003 3.003 0 1 1 6 0v1"></path><path d="M12 20c-3.3 0-6-2.7-6-6v-3a4 4 0 0 1 4-4h4a4 4 0 0 1 4 4v3c0 3.3-2.7 6-6 6"></path><path d="M12 20v-9"></path><path d="M6.53 9C4.6 8.8 3 7.1 3 5"></path><path d="M6 13H2"></path><path d="M3 21c0-2.1 1.7-3.9 3.8-4"></path><path d="M20.97 5c0 2.1-1.6 3.8-3.5 4"></path><path d="M22 13h-4"></path><path d="M17.2 17c2.1.1 3.8 1.9 3.8 4"></path></svg><span class="sidebarLabel">系统日志</span></div></a><a href="/guide"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-book-open"><path d="M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z"></path><path d="M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z"></path></svg><span class="sidebarLabel">指引</span></div></a><a href="/settings"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-settings"><path d="M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z"></path><circle cx="12" cy="12" r="3"></circle></svg><span class="sidebarLabel">设置</span></div></a></nav><div class="sidebarCollapseWrapper"><button class="sidebarCollapseBtn" aria-label="收起侧边栏"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-panel-left-close"><rect width="18" height="18" x="3" y="3" rx="2"></rect><path d="M9 3v18"></path><path d="m16 15-3-3 3-3"></path></svg></button></div></aside><div class="mainContent"><header class="topbar"><div class="flex-1"></div><span class="ant-badge css-1pi45l5 css-var-_R_16_"><button type="button" class="ant-btn css-1pi45l5 css-var-_R_16_ ant-btn-default ant-btn-color-default ant-btn-variant-outlined topbarBtn"><span class="ant-btn-icon"><span role="img" aria-label="clock-circle" class="anticon anticon-clock-circle"><svg viewBox="64 64 896 896" focusable="false" data-icon="clock-circle" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"></path><path d="M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z"></path></svg></span></span><span>后台任务</span></button></span><button class="topbarBtn"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-moon"><path d="M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z"></path></svg><span>深色</span></button><button class="topbarBtn"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-languages"><path d="m5 8 6 6"></path><path d="m4 14 6-6 2-3"></path><path d="M2 5h12"></path><path d="M7 2h1"></path><path d="m22 22-5-10-5 10"></path><path d="M14 18h6"></path></svg><span>English</span></button></header><main class="mainInner"><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">This page could not be found<!-- -->.</h2></div></div></div></main></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":404}},"page":"/_error","query":{},"buildId":"UIqiA9CZtvGl5Z-xG_tmf","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charSet="utf-8" data-next-head=""/><meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" data-next-head=""/><title data-next-head="">404: This page could not be found</title><link rel="preload" href="/_next/static/css/db2515737185f431.css" as="style"/><link rel="stylesheet" href="/_next/static/css/db2515737185f431.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" noModule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-4224e970a97a4a86.js" defer=""></script><script src="/_next/static/chunks/framework-161be364fd69a7ce.js" defer=""></script><script src="/_next/static/chunks/main-91fb767ebd74c9c1.js" defer=""></script><script src="/_next/static/chunks/pages/_app-3e8b35112a00821a.js" defer=""></script><script src="/_next/static/chunks/pages/_error-282257fbdcc167b4.js" defer=""></script><script src="/_next/static/FT0lgaPHm6tsjBp2QoJ4H/_buildManifest.js" defer=""></script><script src="/_next/static/FT0lgaPHm6tsjBp2QoJ4H/_ssgManifest.js" defer=""></script></head><body><div id="__next"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}if(u)p(u);else try{let n=localStorage.getItem(i)||s,y=l&&n==="system"?c():n;p(y)}catch(n){}})("class","theme","system",null,["light","dark"],null,true,true)</script><div class="css-1pi45l5 ant-app css-var-_R_16_"><aside class="sidebar"><a href="/overview"><div class="sidebarLogo"><div class="w-8 h-8 rounded-lg bg-black dark:bg-white flex items-center justify-center shrink-0"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-moon text-white dark:text-black"><path d="M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z"></path></svg></div><div class="sidebarLogoTitle"><span class="logoGradient">Customize Agent</span></div></div></a><nav class="sidebarNav mt-2"><a href="/overview"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-layout-dashboard"><rect width="7" height="9" x="3" y="3" rx="1"></rect><rect width="7" height="5" x="14" y="3" rx="1"></rect><rect width="7" height="9" x="14" y="12" rx="1"></rect><rect width="7" height="5" x="3" y="16" rx="1"></rect></svg><span class="sidebarLabel">总览</span></div></a><div><div class="sidebarItem sidebarParent"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-database"><ellipse cx="12" cy="5" rx="9" ry="3"></ellipse><path d="M3 5V19A9 3 0 0 0 21 19V5"></path><path d="M3 12A9 3 0 0 0 21 12"></path></svg><span class="sidebarLabel">知识库</span><span class="sidebarChevron"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-right"><path d="m9 18 6-6-6-6"></path></svg></span></div></div><a href="/models"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-cpu"><rect width="16" height="16" x="4" y="4" rx="2"></rect><rect width="6" height="6" x="9" y="9" rx="1"></rect><path d="M15 2v2"></path><path d="M15 20v2"></path><path d="M2 15h2"></path><path d="M2 9h2"></path><path d="M20 15h2"></path><path d="M20 9h2"></path><path d="M9 2v2"></path><path d="M9 20v2"></path></svg><span class="sidebarLabel">模型配置</span></div></a><a href="/prompt"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-message-square"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"></path></svg><span class="sidebarLabel">提示词管理</span></div></a><a href="/document-roles"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-settings"><path d="M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z"></path><circle cx="12" cy="12" r="3"></circle></svg><span class="sidebarLabel">角色配置</span></div></a><a href="/documents"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-files"><path d="M20 7h-3a2 2 0 0 1-2-2V2"></path><path d="M9 18a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h7l4 4v10a2 2 0 0 1-2 2Z"></path><path d="M3 7.6v12.8A1.6 1.6 0 0 0 4.6 22h9.8"></path></svg><span class="sidebarLabel">工作流模版库</span></div></a><a href="/template-references"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-library-big"><rect width="8" height="18" x="3" y="3" rx="1"></rect><path d="M7 3v18"></path><path d="M20.4 18.9c.2.5-.1 1.1-.6 1.3l-1.9.7c-.5.2-1.1-.1-1.3-.6L11.1 5.1c-.2-.5.1-1.1.6-1.3l1.9-.7c.5-.2 1.1.1 1.3.6Z"></path></svg><span class="sidebarLabel">模板参考</span></div></a><a href="/asset-library"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-folder-open"><path d="m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2"></path></svg><span class="sidebarLabel">生成资源</span></div></a><a href="/system/logs"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-bug"><path d="m8 2 1.88 1.88"></path><path d="M14.12 3.88 16 2"></path><path d="M9 7.13v-1a3.003 3.003 0 1 1 6 0v1"></path><path d="M12 20c-3.3 0-6-2.7-6-6v-3a4 4 0 0 1 4-4h4a4 4 0 0 1 4 4v3c0 3.3-2.7 6-6 6"></path><path d="M12 20v-9"></path><path d="M6.53 9C4.6 8.8 3 7.1 3 5"></path><path d="M6 13H2"></path><path d="M3 21c0-2.1 1.7-3.9 3.8-4"></path><path d="M20.97 5c0 2.1-1.6 3.8-3.5 4"></path><path d="M22 13h-4"></path><path d="M17.2 17c2.1.1 3.8 1.9 3.8 4"></path></svg><span class="sidebarLabel">系统日志</span></div></a><a href="/guide"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-book-open"><path d="M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z"></path><path d="M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z"></path></svg><span class="sidebarLabel">指引</span></div></a><a href="/settings"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-settings"><path d="M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z"></path><circle cx="12" cy="12" r="3"></circle></svg><span class="sidebarLabel">设置</span></div></a></nav><div class="sidebarCollapseWrapper"><button class="sidebarCollapseBtn" aria-label="收起侧边栏"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-panel-left-close"><rect width="18" height="18" x="3" y="3" rx="2"></rect><path d="M9 3v18"></path><path d="m16 15-3-3 3-3"></path></svg></button></div></aside><div class="mainContent"><header class="topbar"><div class="flex-1"></div><span class="ant-badge css-1pi45l5 css-var-_R_16_"><button type="button" class="ant-btn css-1pi45l5 css-var-_R_16_ ant-btn-default ant-btn-color-default ant-btn-variant-outlined topbarBtn"><span class="ant-btn-icon"><span role="img" aria-label="clock-circle" class="anticon anticon-clock-circle"><svg viewBox="64 64 896 896" focusable="false" data-icon="clock-circle" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"></path><path d="M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z"></path></svg></span></span><span>后台任务</span></button></span><button class="topbarBtn"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-moon"><path d="M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z"></path></svg><span>深色</span></button><button class="topbarBtn"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-languages"><path d="m5 8 6 6"></path><path d="m4 14 6-6 2-3"></path><path d="M2 5h12"></path><path d="M7 2h1"></path><path d="m22 22-5-10-5 10"></path><path d="M14 18h6"></path></svg><span>English</span></button></header><main class="mainInner"><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">This page could not be found<!-- -->.</h2></div></div></div></main></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":404}},"page":"/_error","query":{},"buildId":"FT0lgaPHm6tsjBp2QoJ4H","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>