@customize-agent/server 4.1.44 → 4.1.46

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 (47) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +20 -20
  3. package/.next/package.json +1 -0
  4. package/.next/prerender-manifest.json +3 -3
  5. package/.next/server/chunks/1936.js +3 -3
  6. package/.next/server/chunks/1985.js +63 -52
  7. package/.next/server/chunks/5284.js +7 -5
  8. package/.next/server/chunks/8661.js +1 -1
  9. package/.next/server/chunks/9301.js +3 -3
  10. package/.next/server/middleware-build-manifest.js +1 -1
  11. package/.next/server/pages/404.html +1 -1
  12. package/.next/server/pages/500.html +1 -1
  13. package/.next/server/pages/_error.js +1 -1
  14. package/.next/server/pages/api/documents/export.js +2 -2
  15. package/.next/server/pages/asset-library.html +1 -1
  16. package/.next/server/pages/document-roles.html +1 -1
  17. package/.next/server/pages/documents.html +1 -1
  18. package/.next/server/pages/guide.html +1 -1
  19. package/.next/server/pages/index.html +1 -1
  20. package/.next/server/pages/knowledge/file-detail.html +1 -1
  21. package/.next/server/pages/knowledge/files.html +1 -1
  22. package/.next/server/pages/knowledge/manage.html +1 -1
  23. package/.next/server/pages/knowledge.html +1 -1
  24. package/.next/server/pages/models.html +1 -1
  25. package/.next/server/pages/overview.html +1 -1
  26. package/.next/server/pages/prompt.html +1 -1
  27. package/.next/server/pages/settings.html +1 -1
  28. package/.next/server/pages/system/logs.html +1 -1
  29. package/.next/server/pages-manifest.json +33 -33
  30. package/.next/static/chunks/{289-35ac595388bbd018.js → 289-12dfcb3abec1c4b4.js} +1 -1
  31. package/.next/static/chunks/563-2b116a2500a97dba.js +1 -0
  32. package/.next/static/chunks/788-961761f5858f9189.js +1 -0
  33. package/.next/static/chunks/pages/documents-4d295412f0371924.js +1 -0
  34. package/.next/static/chunks/pages/knowledge/files-dcc806117e92dc9d.js +1 -0
  35. package/.next/static/chunks/pages/knowledge/manage-ca9bafc8b0f4a76b.js +1 -0
  36. package/.next/static/chunks/pages/prompt-200241126dbfb31a.js +1 -0
  37. package/.next/static/chunks/pages/system/logs-c5a8920c6506a7e8.js +1 -0
  38. package/.next/static/{zKYOhppFaW7p-t2KdbhqQ → gytJu8Ak0zRczXw-zluNM}/_buildManifest.js +1 -1
  39. package/package.json +10 -9
  40. package/.next/static/chunks/563-b12f299d34bb9e44.js +0 -1
  41. package/.next/static/chunks/788-3afeb069ed706ac0.js +0 -1
  42. package/.next/static/chunks/pages/documents-fa7e8bb1b86f68b7.js +0 -1
  43. package/.next/static/chunks/pages/knowledge/files-8503246ce2bc07c6.js +0 -1
  44. package/.next/static/chunks/pages/knowledge/manage-a00bb7fc6a76f820.js +0 -1
  45. package/.next/static/chunks/pages/prompt-224af05519ef8304.js +0 -1
  46. package/.next/static/chunks/pages/system/logs-6f45ef8d862759a2.js +0 -1
  47. /package/.next/static/{zKYOhppFaW7p-t2KdbhqQ → gytJu8Ak0zRczXw-zluNM}/_ssgManifest.js +0 -0
@@ -12,11 +12,13 @@ ${d}`;return{chunk:a,index:b,score:.8*h.filter(a=>e.includes(a)).length+ +!!/\d+
12
12
  说明:以下内容仅用于事实覆盖、检索命中和质量检查,不得新增、删除、重排用户或模板章节。
13
13
  建议关注事实:${a.factFields.map(a=>a.name).join("、")}
14
14
  章节内容建议:${a.chapterRules.map(a=>`${a.title}${a.generationHint?`:${a.generationHint.replace(/\s+/gu," ")}`:""}`).join(";")||"以当前模板章节为准"}
15
- 质量提醒:${a.gateRules.map(a=>a.name).join("、")}`}},14070:(a,b,c)=>{function d(a){let b=a.split(/[,。;:、\s\d()()《》<>【】"“”'‘’\-/\\|,.:;]+/u).filter(Boolean),c=new Set;for(let a of b){let b=a.trim();if(b.length>=2&&c.add(b),b.length>=3)for(let a=0;a<=b.length-2;a++){let d=b.slice(a,a+2);d.length>=2&&!/^[a-zA-Z0-9]+$/u.test(d)&&c.add(d)}}return[...c]}function e(a,b,c=.3){return function(a,b){let c=new Set(d(a)),e=new Set(d(b));if(0===c.size||0===e.size)return 0;let f=0;for(let a of c)if(e.has(a))f+=1;else if(a.length>=2){for(let b of e)if(b.length>=2&&(b.includes(a)||a.includes(b))){f+=.5;break}}return f/Math.max(c.size,1)}(a,b)>=c}c.d(b,{C1:()=>e})},22157:(a,b,c)=>{c.d(b,{Te:()=>g,c6:()=>e,l$:()=>h,lG:()=>f});var d=c(77598);function e(a){return(0,d.createHash)("sha1").update(JSON.stringify(a)).digest("hex")}function f(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 g(a){if(a?.aborted)throw Error("用户中止")}async function h(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}},25284:(a,b,c)=>{c.d(b,{Tt:()=>u,Xc:()=>v,b3:()=>x,hp:()=>w});var d=c(73024),e=c(76760),f=c(19898),g=c(44533),h=c(37095),i=c(32434),j=c(70963),k=c(22157);let l="project-intelligence-v5",m="material-scope-v1";function n(a){let b=e.join((0,g.a2)(),"projects",(0,f.computeProjectId)(a),"project-intelligence");return d.mkdirSync(b,{recursive:!0}),d.mkdirSync(e.join(b,"scopes"),{recursive:!0}),b}function o(a){return e.join(n(a),"project-intelligence.json")}function p(a,b){return e.join(n(a),"scopes",`${b}.json`)}function q(a){return a.replace(/\s+/gu," ").replace(/资料参数行摘要[::]/gu,"").trim()}function r(a){let b=[],c=(c,d,e=.72)=>{d&&b.push({key:c,value:d,sourceFile:a.relativePath,roleId:a.roles[0]||"project_overview",processingType:"project_intelligence",confidence:e})};for(let b of(c("资料文件",a.fileName,.6),a.root&&c("资料组",a.root,.65),a.roles))c("资料角色",b,.58);for(let b of a.contentFacts)c("资料内容事实",b,.76);for(let b of a.chapterHints)c("章节意图候选",b,.68);let d=a.relativePath.match(/([^/\\]*项目[^/\\]*)/u)?.[1]||a.root;return d&&c("项目名称候选",d,.62),b}function s(a){return(0,k.c6)(a.map(a=>({path:a.relativePath,hash:a.contentHash,chunkCount:a.chunkCount,indexedAt:a.indexedAt,status:a.status})).sort((a,b)=>a.path.localeCompare(b.path)))}function t(a,b){let c=new Map((0,g.Yy)(a).map(a=>[a.relativePath,a]));return b.every(a=>{let b=c.get(a.relativePath);return b&&"error"!==b.status&&"disk"!==b.status&&Number(b.indexedAt||0)===a.indexedAt&&Number(b.chunkCount||0)===a.chunkCount&&(b.contentHash||"")===(a.contentHash||"")})}function u(a){let b=o(a);if(d.existsSync(b))try{let a=JSON.parse(d.readFileSync(b,"utf8"));return a.version===l&&a.projectGraph?a:void 0}catch{return}}async function v(a){let b=await (0,g.Qh)().getProject(a),c=(0,g.Yy)(a).filter(a=>"disk"!==a.status&&"error"!==a.status&&Number(a.indexedAt||0)>0&&Number(a.chunkCount||0)>0).map(a=>{var c;let d=a.relativePath.split(/[\\/]/u).filter(Boolean)[0],f=function(a){let b=new Set(["project_overview"]);return/招标|发包人要求|答疑|补疑|澄清/u.test(a)&&b.add("tender_requirement"),/图纸|设计说明|施工图|道路|桥梁|园林|交通|结构/u.test(a)&&b.add("drawing"),/清单|工程量|xls|xlsx/u.test(a)&&b.add("boq"),/质量|验收|规范|标准/u.test(a)&&b.add("quality_standard"),/安全|危大|风险|文明|环保/u.test(a)&&b.add("safety_requirement"),/施工|方案|组织|进度|工期|材料|机械|劳动力/u.test(a)&&b.add("construction_method"),[...b]}(a.relativePath),g=b.listChunks({relativePath:a.relativePath,limit:16}).map(a=>q(String(a.content||""))).filter(Boolean).slice(0,12),h=(c=a.relativePath,/投标函|我方已仔细研究/u.test(c)?"投标函/承诺格式,不进入施工正文":/保证金|账户|协议书|资金托管/u.test(c)?"资金账户/保证金资料,不进入施工正文":/开标|评标|交易系统|示范文本/u.test(c)?"招投标流程/示范文本,不进入施工正文":/报价|税率|利润/u.test(c)?"商务报价资料,不进入施工正文":void 0),i=h?[]:function(a){let b=new Set;for(let c of a){for(let a of c.split(/[。;;\n]/u)){let c=q(a);if(!(c.length<12)&&!(c.length>180)&&!/投标函|保证金|开标|评标|交易系统|账户|协议书|示范文本|报价|税率|利润|我方已仔细研究|中标通知书|签订合同|专用账户监管/u.test(c)&&(/(项目|工程|道路|桥梁|园林|交通|结构|排水|照明|绿化|工期|质量|安全|危大|材料|机械|劳动力|验收|规范|清单|工程量|施工)/u.test(c)&&b.add(c),b.size>=18))break}if(b.size>=18)break}return[...b]}(g),j=function(a,b){let c=`${a}
16
- ${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]}(a.relativePath,i),k=function(a,b){let c=`${a}
17
- ${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,i);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:!h,excludeReason:h,summarySignals:g,contentFacts:i,intentTags:j,chapterHints:k}}),h=c.flatMap(r),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]})))),m={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:s(c)},n=(0,i.hw)(a,m),p=(0,i.rj)({facts:h,materialSnapshot:n}),t=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(!t.graph)throw Error(`项目图谱预计算失败:${t.stage.message||t.stage.status}`);let u=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()}}(p,t.graph),v=t.stage.message||"项目图谱已预计算",w={version:l,projectRoot:a,projectId:(0,f.computeProjectId)(a),createdAt:Date.now(),sourceHash:s(c),fileCount:c.length,files:c,facts:h,chapterIntentIndex:k,projectGraph:u,projectGraphMessage:v,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(o(a),JSON.stringify(w,null,2)),w}function w(a){let b=u(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,k.c6)({version:m,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=p(a,b);if(d.existsSync(c))try{let b=JSON.parse(d.readFileSync(c,"utf8"));if(b.version!==m||!t(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||!t(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){let b={};for(let c of a.template.chapters){let d=function(a,b=[]){let c=`${a}
18
- ${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}),h={version:m,projectRoot:a.projectRoot,createdAt:Date.now(),scopeHash:a.scopeHash,selectedRoots:a.selectedRoots,selectedFiles:a.selectedFiles,sourceHash:(0,k.c6)(c.map(a=>({path:a.relativePath,hash:a.contentHash,indexedAt:a.indexedAt,chunkCount:a.chunkCount})).sort((a,b)=>a.path.localeCompare(b.path))),files:c,facts:e,projectGraph:f,evidenceByChapterId:g,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(p(a.projectRoot,a.scopeHash),JSON.stringify(h,null,2)),h}({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,blueprint:f.blueprint}}function x(a){let b=`project-intelligence-${Date.now()}`;(0,h.Qf)(a,{id:b,type:"reindex",title:"项目理解缓存",stage:"generating",status:"processing",percent:5,message:"正在构建项目级蓝图、图谱、事实索引和章节意图索引"}),v(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)})}},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}},32434:(a,b,c)=>{c.d(b,{IA:()=>u,Qu:()=>s,SU:()=>t,ZR:()=>n,hw:()=>o,rj:()=>r});var d=c(76760),e=c(44533),f=c(40299),g=c(80439),h=c(22157);let i=/知识库|系统暂未|项目资料暂未|资料未明确|暂未明确|待确认|待资料复核|待系统|通用兜底(?:段落|模板)?|兜底(?:占位|模板|内容)|未检索到|资料不足|无法确认|建议补充|不适用|COL\d+|围绕[^,。;\n]{2,40}编制|可核验信息|以本项目招标文件明确内容为准/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()}function r(a){let b=a.facts.filter(a=>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 s(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||r({facts:a.facts,materialSnapshot:c,requirement:a.requirement}),e=a.projectGraph?"project-graph":"base-project-graph",f=a.projectGraph?"project_graph":"base_project_graph",g=a.projectGraph?"预处理项目图谱":"基础项目图谱",i=Date.now();return{runId:`run-${i}-${(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:i,completedAt:i,outputSummary:b.reason,metrics:{selectedFiles:b.selectedFiles.length,rejectedRoots:b.rejectedRoots.length}},{id:"material-snapshot",type:"material_snapshot",status:"completed",startedAt:i,completedAt:i,outputSummary:`${c.totalFiles} 份资料,${c.totalChunks} 个切片`,metrics:{totalFiles:c.totalFiles,totalChunks:c.totalChunks}},{id:e,type:f,status:"completed",startedAt:i,completedAt:i,outputSummary:`${g}:${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:i}}function t(a){let b=a.nodes.find(a=>"project_graph"===a.type||"base_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-base-project-graph",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}`]:[`基础图谱来自确定性事实层,不依赖 LLM`,`事实数:${a.facts.length}`]},{subtitle:c?"Agent 项目图谱缓存":"Agent 基础图谱"})]}function u(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)}},37095:(a,b,c)=>{c.d(b,{CU:()=>q,H7:()=>p,JB:()=>m,Qf:()=>k,kW:()=>n,oy:()=>l,sn:()=>o});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){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[]}}):[]}function j(a,b){let c=h(a);d.mkdirSync(f.dirname(c),{recursive:!0}),d.writeFileSync(c,`${b.slice(-200).map(a=>JSON.stringify(a)).join("\n")}
19
- `,"utf8")}function k(a,b){let c=Date.now(),d=i(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),j(a,d),g}function l(a,b=50){return i(a).sort((a,b)=>b.updatedAt-a.updatedAt).slice(0,b)}function m(a,b){return i(a).find(a=>a.id===b)}function n(a,b){return i(a).filter(a=>!b||a.type===b).sort((a,b)=>b.updatedAt-a.updatedAt)[0]}function o(a){return i(a).filter(a=>"processing"===a.status).sort((a,b)=>b.updatedAt-a.updatedAt)}function p(a){let b=i(a),c=h(a);return d.existsSync(c)&&d.unlinkSync(c),b.length}function q(a,b){let c=i(a),d=c.filter(a=>a.id!==b);return d.length!==c.length&&(j(a,d),!0)}},40299:(a,b,c)=>{c.d(b,{CK:()=>R,Ed:()=>S,FD:()=>f,K7:()=>v,KX:()=>z,Re:()=>p,UG:()=>T,V3:()=>W,bR:()=>D,bx:()=>w,dh:()=>E,kT:()=>x,r4:()=>C,rd:()=>y,rs:()=>V,wi:()=>m,z1:()=>t});var d=c(58965),e=c(70208);function f(a,b){return b?a.replace(/^!\[[^\]]*(?:图纸|drawing|cad|地图|平面|剖面|立面)[^\]]*\]\([^)]*\)\s*$/gimu,"").replace(/\n{3,}/gu,"\n\n"):a}let g=/^.*(?:知识库证据|知识库已确认事实|资料类型|提示词角色|后台自动规范|规范包|事实字段|资料未提供|未检索到|待确认事项|证据来源|来源清单|校验结果|修复任务包|修复类型|修复对象|输出要求|当前项目绑定资料|已召回证据|证据边界|可审查草稿|Reviewer|Repairer).*$(?:\n)?|^.*本节围绕.+确保各项措施与本工程实施条件相匹配。?\s*$(?:\n)?|^.*建立施工准备、过程控制、检查验收和资料归档要求.*$(?:\n)?|^.*形成责任明确、过程可控、资料完整的管理闭环。?\s*$(?:\n)?|^.*确保现场管理要求与施工进度、资源组织和验收节点同步推进。?\s*$(?:\n)?|^\s*(?:管理闭环|责任明确、过程可控、资料完整|与本工程实施条件相匹配)[。;;]?\s*$(?:\n)?/gmu,h=/^\s*(?:#{1,6}\s*)?(?:PDF\s*第\s*\d+\s*页|rule\b|文件[::]|片段[::]|来源[::]).*$/gimu,i=/^\s*(?:[│┃┆┊┌┐└┘├┤┬┴┼─━╭╮╰╯]|[↓↑→←⇒⇨➡])+\s*$/gmu,j=/^#{2,6}\s+(?:\d+(?:\.\d+)*\s*)?(?:[-—–]\s*)?(?:判断|判定|识别|确认)?是否(?:涉及|涉|需要|适用)|^#{2,6}\s+(?:\d+(?:\.\d+)*\s*)?(?:[-—–]\s*)?(?:如|若|如果)(?:涉及|不涉及|适用|不适用)|^#{2,6}\s+.*(?:根据|结合).{0,12}(?:实际情况|项目情况|资料情况).{0,8}(?:判断|确定|编写|生成)|^#{2,6}\s+.*(?:按需(?:生成|编写)|视情况|判断后|生成要求|编写要求|说明要求|注意事项)\s*$/gmu,k=/^(?:\d+(?:\.\d+)*\s*)?(?:[-—–]\s*)?(?:(?:判断|判定|识别|确认)?是否(?:涉及|涉|需要|适用).*|(?:如|若|如果)(?:涉及|不涉及|适用|不适用).*|.*(?:根据|结合).{0,12}(?:实际情况|项目情况|资料情况).{0,8}(?:判断|确定|编写|生成).*|.*(?:按需(?:生成|编写)|视情况|判断后|生成要求|编写要求|说明要求|注意事项))\s*$/u;function l(a){let b=a.replace(/^#{1,6}\s+/u,"").replace(/^\s*\d+(?:\.\d+)*(?:[..、]|\s)+/u,"").replace(/^第[一二三四五六七八九十百千万\d]+[章节篇部分]\s*/u,"").trim(),c=(0,e.GQ)(b);return k.test(b)||k.test(c)}function m(a){return a.replace(/PDF\s*第\s*\d+\s*页/giu,"相关资料").replace(/第\s*\d+\s*页\s*(?:\/|共)\s*\d+\s*页/gu,"").replace(/第\s*\d+\s*(?:[-—至到~~]\s*\d+)?\s*页/gu,"相关资料").replace(/(装饰工程|土建工程|加固工程|给排水工程|电气工程|智能化工程|消防工程|弱电智能化工程|室外道排工程|建筑结构加固工程)\s*(?:(?:施工)?图纸|资料|文件)?\s*[((]?\s*(?:(?:共|多达|约|合计)\s*)?\d+\s*页\s*[))]?/gu,"$1施工图纸").replace(/\d+\s*页\s*(装饰|土建|加固|给排水|电气|智能化|消防|弱电智能化|室外道排|建筑结构加固)\s*(?:专业)?\s*(?:(?:施工)?图纸)?/gu,"$1专业图纸").replace(/(装饰|土建|加固|给排水|电气|智能化|消防|弱电智能化|室外道排|建筑结构加固)\s*(?:专业)?\s*(?:[((]\s*)?\d+\s*页\s*(?:(?:施工)?图纸)?\s*[))]?/gu,"$1专业图纸").replace(/([\u4e00-\u9fa5A-Za-z0-9、及与和]{2,24})\s*(?:共|多达|约|合计)\s*\d+\s*页/gu,"$1相关专业图纸").replace(/([\u4e00-\u9fa5A-Za-z0-9()()、·-]{2,24}工程)\s*(?:图纸|资料|文件)?\s*[((]?\s*(?:(?:共|多达|约|合计)\s*)?\d+\s*页\s*[))]?/gu,"$1施工图纸").replace(/([\u4e00-\u9fa5A-Za-z0-9()()、·-]{2,24})(?<!施工)\s*(?:施工)?图纸\s*[((]?\s*(?:(?:共|多达|约|合计)\s*)?\d+\s*页\s*[))]?/gu,"$1施工图纸").replace(/(给排水|电气|智能化|消防|暖通|人防)\s*[((]\s*\d+\s*页\s*[))]/gu,"$1专业图纸").replace(/(?:依据|按照|结合)?\s*图纸\s*[((]\s*\d+\s*页\s*[))]/gu,"依据相关专业图纸").replace(/(?:依据|按照|结合)?\s*清单\s*[((]?\s*\d+\s*页\s*[))]?/gu,"依据工程量清单").replace(/资料\s*[((]?\s*\d+\s*页\s*[))]?/gu,"项目资料").replace(/[((]?[\u4e00-\u9fa5A-Za-z0-9、及与和]*(?:图纸|清单|资料|文件|工程)?[\u4e00-\u9fa5A-Za-z0-9、及与和]*(?:(?:共|多达|约|合计)\s*)?\d+\s*页[\u4e00-\u9fa5A-Za-z0-9、及与和]*(?:图纸|清单|资料|文件)?[))]?/gu,a=>/图纸|工程|装饰|土建|加固|给排水|电气|智能化|消防/u.test(a)?"相关专业图纸":/清单/u.test(a)?"工程量清单":"相关资料").replace(/(?:位于|详见|见|参见|依据|按照|结合)?\s*相关资料(?:\s*相关资料)+/gu,"相关资料")}let n=String.raw`(?:\d+[.、](?=\s|\*\*)\s*|[((]\d+[))]\s*|[-*+]\s+)`;function o(a){return/^\s*\|/u.test(a)||/^\s*\|?\s*:?-{3,}:?/u.test(a)?a:a.replace(/([。;;])\s*(?=(?:\d+[.、](?=\s|\*\*)\s*|[((]\d+[))]\s*|[-*+]\s+)\S)/gu,"$1\n").replace(/([^\n])\s+(?=(?:\d+[.、](?=\s|\*\*)\s*|[((]\d+[))]\s*|[-*+]\s+)\*\*)/gu,"$1\n")}function p(a){return a.split(/\r?\n/u).map(o).join("\n").replace(/\n{3,}/gu,"\n\n")}function q(a){return/^\s*\|?\s*:?-{3,}:?\s*(\|\s*:?-{3,}:?\s*)+\|?\s*$/u.test(a)}function r(a){let b=a.trim();return/^\|.*\|$/u.test(b)&&b.split("|").length>=3}function s(a){return`| ${Array.from({length:Math.max(2,a)},()=>"---").join(" | ")} |`}function t(a){let b=a.split(/\r?\n/u),c=[],d=0;for(let a=0;a<b.length;a+=1){let e=b[a];if(!r(e)||q(e)){q(e)||(d=0),c.push(e);continue}let f=b[a+1]||"",g=d||e.trim().replace(/^\|/u,"").replace(/\|$/u,"").split(/(?<!\\)\|/u).length;if(c.push(function(a,b){let c=a.trim().replace(/^\|/u,"").replace(/\|$/u,"").split(/(?<!\\)\|/u).map(a=>a.trim());for(;c.length<b;)c.push("");return`| ${c.slice(0,b).join(" | ")} |`}(e,g)),q(f)){c.push(s(g)),d=g,a+=1;continue}!d&&r(f)&&function(a){let b=a.trim().replace(/^\|/u,"").replace(/\|$/u,"").split(/(?<!\\)\|/u).map(a=>a.replace(/\*\*/gu,"").trim());return!(b.length<2)&&b.filter(a=>/^(?:序号|信息项|内容|控制项目|控制内容|执行要求|责任主体|检查(?:与验收)?|验收标准|备注|名称|规格(?:型号)?|单位|数量|阶段|措施|风险|应急物资名称|资源类别|投入计划|管理要求)$/u.test(a)).length>=Math.min(2,b.length)}(e)&&(c.push(s(g)),d=g)}return c.join("\n").replace(/\n{3,}/gu,"\n\n")}RegExp(String.raw`\S.+(?:\s|[。;;])${n}\S.+(?:\s|[。;;])${n}\S`,"u");let u=/(?:项目部|本项目|本工程)?(?:根据|依据|结合|按照|以)?(?:本项目|项目|[^。;;\n]{0,30}?)?(?:招标文件|补疑澄清文件|补遗澄清文件|补疑补遗|答疑(?:回复)?文件|答疑修正口径|补充答疑修正口径|澄清文件|工程量清单|设计图纸|施工图纸|图纸资料|设计修改通知单)(?:[、,,及和与\s]*(?:招标文件|补疑澄清文件|补遗澄清文件|补疑补遗|答疑(?:回复)?文件|答疑修正口径|补充答疑修正口径|澄清文件|工程量清单|设计图纸|施工图纸|图纸资料|设计修改通知单|现行规范|规范)){1,}(?:[^。;;\n]{0,80})?[,,]/u;function v(a){return a.split(/\r?\n/u).map(a=>/^\s*\|/u.test(a.trim())?a:a.replace(u,"").replace(/(?:施工图设计说明|工程量清单项目特征|补充答疑修正口径|答疑修正口径)(?:[、,,及和与\s]*(?:施工图设计说明|工程量清单项目特征|补充答疑修正口径|答疑修正口径)){1,}/gu,"项目技术文件").replace(/(?:根据|依据|以)(?:[^。;;\n]{0,30})?(?:招标文件|补疑澄清文件|补遗澄清文件|补疑补遗|答疑(?:回复)?文件|答疑修正口径|补充答疑修正口径|澄清文件|工程量清单|设计图纸|施工图纸)(?:[^。;;\n]{0,40})(?:编制|确定|要求|为编制基础)[。;;]?/gu,"").replace(/\s{2,}/gu," ").trimEnd()).filter(a=>!/^(?:本节|本小节|本章)?(?:内容|措施)?(?:根据|依据)(?:招标文件|补疑澄清文件|补遗澄清文件|答疑(?:回复)?文件|澄清文件|工程量清单|设计图纸|施工图纸)[^。;;\n]*[。;;]?$/u.test(a.trim())).join("\n").replace(/\n{3,}/gu,"\n\n")}function w(a){let b=[];return a.split(/\r?\n/u).forEach((a,c)=>{u.test(a)&&b.push({level:"error",severity:"blocker",category:"style",owner:"system",message:`正式正文不得出现资料来源罗列话术:第 ${c+1} 行`,suggestion:"删除“根据/依据招标文件、清单、图纸”等来源罗列,直接保留项目事实、施工内容和控制措施。"}),/^\s*\*\*[^*]{2,40}表\*\*\s*$/u.test(a)&&b.push({level:"error",severity:"blocker",category:"format",owner:"system",message:`正式正文不得用粗体段落充当表名:第 ${c+1} 行`,suggestion:"表名必须转换为 #### 四级标题,避免导出后混入正文段落。"})}),b.slice(0,20)}function x(a){return(function(a){let b=a.split(/\r?\n/u),c=[];for(let a=0;a<b.length;a+=1){if(!r(b[a])||!q(b[a+1]||"")){c.push(b[a]);continue}let d=[];for(;a<b.length&&r(b[a]);)d.push(b[a]),a+=1;a-=1;let e=d.map(a=>a.trim().replace(/^\|/u,"").replace(/\|$/u,"").split(/(?<!\\)\|/u).map(a=>a.trim())),f=Array.from({length:Math.max(...e.map(a=>a.length))},(a,b)=>e.some((a,c)=>1!==c&&!!a[b]?.trim())),g=e.map((a,b)=>{let c=f.map((b,c)=>b?a[c]||"":null).filter(a=>null!==a);return 1===b?s(c.length):`| ${c.join(" | ")} |`});c.push(...g)}return c.join("\n")})(t(p(m(v(function(a){let b=a.trim(),c=/^```(?:markdown|md)?\s*\n([\s\S]*?)\n```\s*$/iu.exec(b);return c?c[1].trim():a}(a)).replace(/\b(m|㎡)\s*2\b/giu,"平方米").replace(/\bm\s*[²2]\b/giu,"平方米").replace(/\b(m|㎥)\s*3\b/giu,"立方米").replace(/\bm\s*[³3]\b/giu,"立方米").replace(/\bmm2\b/giu,"平方毫米").replace(/\bcm2\b/giu,"平方厘米").replace(/\bkm2\b/giu,"平方千米").replace(/\s*×\s*/gu,"\xd7").replace(/\s*≤\s*/gu,"≤").replace(/\s*≥\s*/gu,"≥").replace(/\s*±\s*/gu,"\xb1"))))).split(/\r?\n/u).map(a=>/^\s*\|/u.test(a)?a.replace(/\s*不适用\s*(?=\|)/gu," "):a).join("\n").replace(/承包人案/gu,"方案").replace(/承包人法/gu,"方法").replace(g,"").replace(h,"").replace(i,"").replace(j,"").replace(d.tK,"").replace(/^#\s+/gmu,"").replace(d.VX,"").split(/\r?\n/u).filter((a,b,c)=>{let d=b>0?(0,e.GQ)((c[b-1]||"").trim().replace(/^#{1,6}\s+/u,"")):"",f=(0,e.GQ)(a.trim().replace(/^#{1,6}\s+/u,""));if(d&&l(d)&&f.length>0&&f.length<=12&&!/^#{1,6}\s/u.test(a.trim()))return!1;let g=a.trim();if(!g)return!0;if(/该小节围绕.+进行补充说明/u.test(g)||/仅作为内部事实提取依据|正式正文不得引用文件名|后台事实|内部事实/u.test(g))return!1;if(/^\s*\|/u.test(g)||/^\s*\|?\s*:?-{3,}:?/u.test(g))return!0;let h=(0,e.GQ)(g.replace(/^#{1,6}\s+/u,""));return!(/^(?:雨季|冬季|高温|台风|大风等特殊气候|雨季、冬季、高温、台风、大风等特殊气候)$/u.test(h)||h.length<=1||l(h))&&!(/[,、;:和与在为对将]$/u.test(h)||/(通过|包括|如下|主要包括)$/u.test(h))}).join("\n").replace(/\n{3,}/gu,"\n\n").trim()}let y="以下规则仅用于保障导出格式正确和事实安全,不得覆盖用户在提示词中已明确的要求。\n不得把”知识库、检索、资料类型、提示词角色、规范包、事实字段、缺失项、校验结果、资料未提供、未检索到”等后台流程话术写入正文。\n严禁使用“根据/依据招标文件、补疑澄清文件、工程量清单及设计图纸”等资料来源罗列开头;正文必须直接写项目事实、施工内容、控制措施、验收节点。\n【导出格式】章标题用 ## ,节标题用 ### 加数字编号(如 1.1),小节标题用 #### 加数字编号(如 1.1.1)。禁止用数字编号或粗体代替 ###/#### 标题。\nMarkdown 表格格式硬约束:凡是输出 Markdown 表格,必须使用标准 GFM 表格格式。\n表格必须包含表头行、分隔线和数据行;表头下一行必须是分隔线,例如 |---|---|。\n禁止只输出连续的“| 字段 | 值 |”裸表格行;两列键值信息表默认使用表头 | 信息项 | 内容 |。\n表头、分隔线和数据行必须连续,中间不得插入正文、说明、空行或补充段落。\n正文表格不得展示后台溯源列或系统过程列,如“资料来源/说明”“资料来源/证明”“知识库来源”等。\n项目名称、项目编号、招标人/业主/建设单位、建设地点、建设规模、计划工期、质量标准、合同估算价等项目基础信息,只能在项目基本信息表中集中输出一次;后续章节如需引用,应写入正文或专业表格的业务字段,不得重复生成项目基础信息键值表。\n【段落格式】段落之间必须空行(双换行)分隔,不得用单换行连续写大段文字。列表项逐行独占。步骤描述之间加空行。\n正文事实必须来自绑定材料;信息不足时保持审慎,不得编造精确数量。",z="只生成当前小节正文,不生成其他二级小节,不重复章节一级标题。\n优先使用当前模板、用户要求、绑定提示词和绑定材料中的事实;缺少依据时不得编造具体数值、名称、时间、规格或责任。\n小节应有实质正文;除非用户或模板明确要求纯表格,否则表格只能作为辅助表达,不能整节只有表格。\n不得用通用兜底段落、空泛管理话术或后台缺料说明冒充正文;信息不足时只写已有事实、适用边界和待复核口径。";function A(a){return(0,e.GQ)(a.replace(/^#+\s*/u,"")).replace(/^(?:第)?[一二三四五六七八九十百千万\d]+章\s*/u,"").trim().replace(/\s+/gu,"")}function B(a,b){let c=A(a),d=A(b);return!!(c&&d&&c===d)}function C(a){return[...new Set([...a.matchAll(/^###\s+(.+)$/gmu)].map(a=>(0,e.GQ)(a[1]||"")).filter(a=>a.length>=2&&a.length<=80).filter(a=>!l(a)).filter(a=>!/^\d+(?:\.\d+){2,}\s+/u.test(a)))]}function D(a){let b=a.split(/\r?\n/u),c="",d=0;return b.map(a=>{let b=/^\*\*([^*]{2,40}表)\*\*\s*$/u.exec(a.trim());if(b&&c)return d+=1,`#### ${c}.${d} ${(0,e.GQ)(b[1]||"")}`;let f=/^###\s+(\d+\.\d+)\s+.+$/u.exec(a.trim());if(f)return c=f[1],d=0,a;if(/^##\s+/u.test(a.trim()))return c="",d=0,a;let g=/^(#{4,5})\s+(.+)$/u.exec(a.trim());if(g){if(!c)return"#####"===g[1]?a.replace(/^\s*#####/u,"####"):a;let b=(g[2]||"").trim(),f=(0,e.GQ)(b.replace(/^\d+\.\d+\.\d+\s+/u,""));return f?(d+=1,`#### ${c}.${d} ${f}`):a}return a}).join("\n").replace(/\n{3,}/gu,"\n\n").trim()}function E(a){let b=[],c="";for(let d of a.split(/\r?\n/u)){let a=d.trim(),f=/^###\s+(\d+\.\d+)\s+.+$/u.exec(a);if(f){c=f[1];continue}if(/^##\s+/u.test(a)&&(c=""),!c)continue;let g=/^####\s+(.+)$/u.exec(a);if(g){let a=(g[1]||"").trim();RegExp(`^${O(c)}\\.\\d+\\s+\\S`,"u").test(a)||b.push({level:"warning",message:`三级小节缺少 ${c}.x 编号:${(0,e.GQ)(a)}`,suggestion:"三级小节必须使用“#### 章号.节号.序号 标题”,且不纳入目录。"})}}return b}function F(a){let b=a.replace(/\*+/gu,"").trim();if(l(b))return"";let c=(0,e.GQ)(b).replace(/^[-—–]\s*/u,"").trim();return l(c)||/^(?:雨季|冬季|高温|台风|大风等特殊气候)$/u.test(c)?"":c}function G(a=[]){return[...new Set(a.map(F).filter(a=>a.length>=2))]}function H(a){return["## 目录","",...a.flatMap((a,b)=>{let c=G(a.sections||[]);return[`- ${(0,e.tb)(b,a.title)}`,...c.map((a,c)=>` - ${function(a,b,c){let d=(0,e.GQ)(c);return!function(a){let b=/^\s*(\d+)\.(\d+)[..、]?\s+(.+)$/u.exec(a);return!!b&&(0,e.GQ)(b[3]||"").trim()===(0,e.GQ)(a).trim()}(c)?`${a+1}.${b+1} ${d}`:d}(b,c,a)}`)]})].join("\n")}function I(a){return a.replace(/<div class="document-cover">[\s\S]*?<\/div>\s*(?:<div class="page-break"><\/div>\s*)?/giu,"").replace(/^#\s+.+\n{1,2}/u,"")}function J(a){return a.replace(/^##\s+目录\s*$[\s\S]*?(?=\n<div class="page-break"><\/div>|\n##\s+第[一二三四五六七八九十百千万\d]+章|\n##\s+)/gmu,"").replace(/^<div class="page-break"><\/div>\s*(?=##\s+第[一二三四五六七八九十百千万\d]+章)/gmu,"")}function K(a){let b=!1;return a.replace(/^##\s+目录\s*$[\s\S]*?(?=\n<div class="page-break"><\/div>|\n##\s+)/gmu,a=>b?"":(b=!0,a)).replace(/\n{3,}/gu,"\n\n").trim()}function L(a,b){let c=K(a);b.forEach((a,b)=>{let d=(0,e.GQ)(a.title),f=RegExp(`^##\\s+(?:第[一二三四五六七八九十百千万\\d]+章\\s*)?${O(d)}\\s*$`,"mu");c=f.test(c)?c.replace(f,`## ${(0,e.tb)(b,a.title)}`):c});let d=c.split(/\r?\n/u),f=-1,g=0,h=0,i="",j=new Set,k=a=>{let c=b[f]?.sections||[],d=Q(a);return c.findIndex(a=>Q(a)===d)},m=(a,c)=>{let d=F(a);if(!d||l(a)||l(d))return"";let m=k(d),n=b[f]?.sections||[],o=m>=0?m+1:g+1,p=m>=0?Q(n[m]):Q(d);return j.has(p)?(g=o,i=c||`${f+1}.${g}`,h+=1,`#### ${f+1}.${g}.${h} ${d}`):(g=o,h=0,i=c||`${f+1}.${g}`,j.add(p),`### ${f+1}.${g} ${m>=0?(0,e.GQ)(n[m]):d}`)},n=!1;return d.map(a=>{let c=a.trim();if(/^##\s+目录\s*$/u.test(c))return n=!0,a;if(n&&/^<div class="page-break"><\/div>$/u.test(c))return n=!1,a;if(n)return a;if(/^##\s+第[一二三四五六七八九十百千万\d]+章\s+/u.test(c))return f+=1,g=0,h=0,i="",j=new Set,a;let d=/^##\s+第[一二三四五六七八九十百千万\d]+节\s+(.+)$/u.exec(c);if(f>=0&&d)return m(d[1]||"");let l=/^##\s+\d+[..、]\s+(.+)$/u.exec(c);if(f>=0&&l)return m(l[1]||"");let o=/^##\s+(\d+)\.(\d+)\s+(.+)$/u.exec(c);if(f>=0&&o)return m(o[3]||"",`${o[1]}.${o[2]}`);let p=/^##\s+(.+)$/u.exec(c);if(f>=0&&p){let a=(0,e.GQ)(p[1]||"");return/^本章目录$/u.test(a)?"":m(a)}let q=/^###\s+(?:(\d+)\.(\d+)\s+)?(.+)$/u.exec(c);if(f>=0&&q)return m(q[3]||"",q[1]&&q[2]?`${q[1]}.${q[2]}`:void 0);let r=/^####\s+(\d+)\.(\d+)(?!\.)\s+(.+)$/u.exec(c);if(f>=0&&r)return m(r[3]||"",`${r[1]}.${r[2]}`);let s=/^####\s+(?:(\d+)\.(\d+)\.(\d+)\s+)?(.+)$/u.exec(c);if(f>=0&&s){let a=s[1]&&s[2]?`${s[1]}.${s[2]}`:i,c=(0,e.GQ)(s[4]||""),d=Q(c),l=k(c)>=0&&!j.has(d);return!g||a&&a!==i&&(0===(b[f]?.sections||[]).length||l)?m(c,a):(h+=1)<=4?`#### ${f+1}.${g}.${h} ${c}`:`**${c}**`}return a}).filter(a=>""!==a).join("\n")}function M(a,b){let c=a.replace(/承包人案/gu,"方案").replace(/承包人法/gu,"方法").replace(/(?:本|我)施工方/gu,"我公司").replace(/(?:本|我)投标人/gu,"我公司").replace(/高度重视/gu,"严格落实").replace(/重中之重/gu,"关键控制事项");for(let a of b?.forbiddenTerms||[])a&&/^(?:报价明细表|最高投标限价|招标控制价)$/u.test(a)&&(c=c.split(/\r?\n/u).filter(b=>!RegExp(O(a),"u").test(b)).join("\n"));return c}function N(a,b){if(!b)return M(a);let c=function(a,b){let c=a;for(let a of b?.requiredTables||[])c=function(a,b){if(/项目基本信息/u.test(b)&&(/项目基本信息/u.test(a)||/\|\s*信息项\s*\|\s*内容\s*\|/u.test(a)||/\|\s*项目名称\s*\|[^\n]*(?:徽光阁|项目施工|工程)/u.test(a))||RegExp(O(b),"u").test(a))return a;let c=/项目基本信息/u.test(b)?"":`**${b}**
15
+ 质量提醒:${a.gateRules.map(a=>a.name).join("、")}`}},14070:(a,b,c)=>{function d(a){let b=a.split(/[,。;:、\s\d()()《》<>【】"“”'‘’\-/\\|,.:;]+/u).filter(Boolean),c=new Set;for(let a of b){let b=a.trim();if(b.length>=2&&c.add(b),b.length>=3)for(let a=0;a<=b.length-2;a++){let d=b.slice(a,a+2);d.length>=2&&!/^[a-zA-Z0-9]+$/u.test(d)&&c.add(d)}}return[...c]}function e(a,b,c=.3){return function(a,b){let c=new Set(d(a)),e=new Set(d(b));if(0===c.size||0===e.size)return 0;let f=0;for(let a of c)if(e.has(a))f+=1;else if(a.length>=2){for(let b of e)if(b.length>=2&&(b.includes(a)||a.includes(b))){f+=.5;break}}return f/Math.max(c.size,1)}(a,b)>=c}c.d(b,{C1:()=>e})},22157:(a,b,c)=>{c.d(b,{Te:()=>g,c6:()=>e,l$:()=>h,lG:()=>f});var d=c(77598);function e(a){return(0,d.createHash)("sha1").update(JSON.stringify(a)).digest("hex")}function f(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 g(a){if(a?.aborted)throw Error("用户中止")}async function h(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}},25284:(a,b,c)=>{c.d(b,{TD:()=>y,Tt:()=>v,Xc:()=>z,b3:()=>B,hp:()=>A});var d=c(73024),e=c(76760),f=c(19898),g=c(44533),h=c(37095),i=c(32434),j=c(70963),k=c(22157);let l="project-intelligence-v7",m="material-scope-v3";function n(a){let b=e.join((0,g.a2)(),"projects",(0,f.computeProjectId)(a),"project-intelligence");return d.mkdirSync(b,{recursive:!0}),d.mkdirSync(e.join(b,"scopes"),{recursive:!0}),b}function o(a){return e.join(n(a),"project-intelligence.json")}function p(a,b){return e.join(n(a),"scopes",`${b}.json`)}function q(a){return a.replace(/资料参数行摘要\s*[::]?/gu,"").replace(/#{1,6}\s*/gu," ").replace(/(?:PDF\s*)?第\s*\d+\s*页(?:\s*共\s*\d+\s*页)?/giu," ").replace(/资料类型\s*[::]\s*[^\s;;]+/giu," ").replace(/MIME\s*[::]\s*[^\s;;]+/giu," ").replace(/文件大小\s*[::]\s*[^\s;;]+/giu," ").replace(/\s+/gu," ").trim()}function r(a){return/投标函|保证金|开标|评标|交易系统|账户|协议书|示范文本|报价|税率|利润|我方已仔细研究|中标|签订合同|专用账户监管|联合体投标|注册建造师|安全生产考核合格证书|安全生产许可证|营业执照|资质要求|投标人资格|资格审查|资格后审|资格预审|业绩要求|信誉要求|财务要求|投标有效期|投标截止|递交投标文件|递交电子投标文件|获取招标文件|获取方式|获取时间|踏勘现场|投标预备会|备选投标方案|分包内容|电子交易系统|电子服务系统|联系方式|联系人|邮编|技术支持|全流程电子化交易|异议|投诉|评标委员会|评标办法|公告发布|媒介|咨询电话|拨打电话|招标工程量清单|最高投标限价|不可竞争费|招标总说明|招标需求|招标范围|招标控制价|编制补疑|计价依据|计价定额|措施项目费|暂列金额|投标总价|综合单价|计价格式|取费标准|清单编制说明|招标文件正文|招标图纸目录|投标人/u.test(a)}function s(a){let b=[],c=(c,d,e=.72)=>{d&&b.push({key:c,value:d,sourceFile:a.relativePath,roleId:a.roles[0]||"project_overview",processingType:"project_intelligence",confidence:e})};for(let b of(c("资料文件",a.fileName,.6),a.root&&c("资料组",a.root,.65),a.roles))c("资料角色",b,.58);for(let b of a.contentFacts)c("资料内容事实",b,.76);for(let b of a.chapterHints)c("章节意图候选",b,.68);let d=a.relativePath.match(/([^/\\]*项目[^/\\]*)/u)?.[1]||a.root;return d&&c("项目名称候选",d,.62),b}function t(a){return(0,k.c6)(a.map(a=>({path:a.relativePath,hash:a.contentHash,chunkCount:a.chunkCount,status:a.status})).sort((a,b)=>a.path.localeCompare(b.path)))}function u(a,b){let c=new Map((0,g.Yy)(a).map(a=>[a.relativePath,a]));return b.every(a=>{let b=c.get(a.relativePath);return b&&"error"!==b.status&&"disk"!==b.status&&Number(b.chunkCount||0)===a.chunkCount&&(b.contentHash||"")===(a.contentHash||"")})}function v(a){let b=o(a);if(d.existsSync(b))try{return function(a,b){if(b.version!==l||!b.projectGraph||!Array.isArray(b.files)||0===b.files.length)return;let c=t(b.files);if(c!==t((0,g.Yy)(a).filter(a=>"disk"!==a.status&&"error"!==a.status&&Number(a.chunkCount||0)>0).map(a=>({relativePath:a.relativePath,contentHash:a.contentHash,chunkCount:a.chunkCount,status:a.status,indexedAt:a.indexedAt}))))return;let e=b.constructionOrganizationGraph||x(b.projectGraph,b.files),h={...b,version:l,projectRoot:a,projectId:b.projectId||(0,f.computeProjectId)(a),sourceHash:c,constructionOrganizationGraph:e};return b.version===l&&b.constructionOrganizationGraph&&b.sourceHash===c||d.writeFileSync(o(a),JSON.stringify(h,null,2)),h}(a,JSON.parse(d.readFileSync(b,"utf8")))}catch{return}}function w(a,b){return[...new Set(a.map(a=>a.replace(/\s+/gu," ").trim()).filter(Boolean))].slice(0,b)}function x(a,b){let c=new Map(b.map(a=>[a.relativePath,a.contentFacts])),d=new Set(b.map(a=>a.root).filter(Boolean)),e=new Set(b.map(a=>a.fileName).filter(Boolean)),f=a=>/资料文件|资料组|资料角色|资料内容事实|章节意图候选|项目名称候选/u.test(a),g=(a,b)=>w(a,b).filter(a=>!(r(a)||f(a))),h=new Map;for(let a of b){if(!/工程量清单EXCEL/iu.test(a.relativePath)||!/\.xls$/iu.test(a.relativePath))continue;let b=a.relativePath.split("/"),c=b[b.length-1]||"",d=(b[b.length-2]||"").replace(/^\d+\s*/,"").trim()||c.replace(/\.xls$/iu,"").trim();!d||/徽光阁项目施工|清单编制说明|图纸目录|可调整价差|汇总|一览表/u.test(d)||(h.has(d)||h.set(d,[]),h.get(d).push(a.relativePath))}let i=new Map;for(let b of a.works)for(let a of b.sourceFiles||[])i.has(a)||i.set(a,b.scope||"");let j=[],k=new Set,l=(b,h,i)=>{if(!b||k.has(b)||d.has(b)||e.has(b)||/投标|报价|保证金|合同协议|账户|开标|评标|资质要求|资格审查|资料目录|招标范围|招标需求|招标总说明|最高投标限价|不可竞争费|补疑|清单编制说明|图纸目录/u.test(`${b}${i||""}`)||/项目施工$/u.test(b.trim()))return;let l=g((h||[]).flatMap(a=>c.get(a)||[]),16),m=`${b}
16
+ ${i||""}
17
+ ${l.join("\n")}`,n=a.methods.filter(a=>(a.applicableWorks||[]).some(a=>a.includes(b)||b.includes(a))||a.name.includes(b)).slice(0,4),o=a.resources.filter(a=>!f(a.name)&&(m.includes(a.name)||(a.sourceFiles||[]).some(a=>h.includes(a)))).slice(0,8),p=g([...n.flatMap(a=>a.steps||[]),...l.map(a=>a.split(/[::]/u)[0]||"").filter(Boolean)],10),q=g([...n.map(a=>a.name),...l],10),r=(i||"").trim()||l.slice(0,2).join(";")||b;(0!==l.length||r||0!==p.length||0!==q.length)&&(k.add(b),j.push({name:b,scope:r,quantities:g([...o.map(a=>`${a.name}${a.quantity?`:${a.quantity}${a.unit||""}`:""}`),...l.filter(a=>/\d|㎡|m2|m²|米|m³|立方|吨|台|套|项/u.test(a))],8),materials:g(o.map(a=>[a.name,a.spec].filter(Boolean).join("")),8),process:p,methods:q,acceptance:g([...a.standards.filter(a=>(a.sourceFiles||[]).some(a=>h.includes(a))).map(a=>a.description||a.code),...l.filter(a=>/验收|复试|检测|见证|检验|质量/u.test(a))],8),sourceFiles:h}))};for(let[a,b]of h){let c=b.map(a=>i.get(a)).find(Boolean)||"";l(a,b,c)}for(let b of a.works)l((b.name||"").trim(),b.sourceFiles||[],b.scope);let m=j.map(a=>a.name);return{workPackages:j,controlMatrix:a.risks.slice(0,10).map(b=>({feature:b.risk,difficulty:b.mitigation||b.risk,relatedWorkPackages:m.filter(a=>b.mitigation.includes(a)||b.risk.includes(a)).slice(0,4),methods:a.methods.filter(a=>b.mitigation.includes(a.name)||b.risk.includes(a.name)).map(a=>a.name).slice(0,4),qualityControls:w(a.standards.map(a=>a.description||a.code).filter(Boolean),4),safetyControls:w([b.mitigation,...a.requirements.filter(a=>/安全|风险|危大|消防|应急/u.test(a.category+a.detail)).map(a=>a.detail)],4)})),qualityControls:w([...a.standards.map(a=>a.description||a.code),...a.requirements.filter(a=>/质量|验收|复试|检测/u.test(a.category+a.detail)).map(a=>a.detail)],18),safetyControls:w([...a.risks.map(a=>`${a.risk}:${a.mitigation}`),...a.requirements.filter(a=>/安全|危大|消防|应急|文明/u.test(a.category+a.detail)).map(a=>a.detail)],18),resourcePlans:w(a.resources.map(a=>`${a.name}${a.spec?`|${a.spec}`:""}${a.quantity?`|${a.quantity}${a.unit||""}`:""}`),24),acceptanceRecords:w([...a.standards.map(a=>a.description||a.code),...a.requirements.filter(a=>/资料|验收|记录|检验批|隐蔽/u.test(a.category+a.detail)).map(a=>a.detail)],18),evidenceRankingHints:["优先使用工程量清单、图纸设计说明、技术规范、发包人要求、补疑澄清中的施工范围、工程量、材料规格、工艺流程、验收标准;降低投标须知、保证金、付款、违约金、电子交易系统等商务合同条款权重。"]}}function y(a){if(!a||0===a.workPackages.length)return"";let b=a.workPackages.slice(0,12).map(a=>({name:a.name,scope:a.scope,quantities:a.quantities,materials:a.materials,process:a.process,methods:a.methods,acceptance:a.acceptance}));return["## 施工组织设计专项图谱","主要施工工作包:",...a.workPackages.slice(0,12).map((a,b)=>`${b+1}. ${a.name}|范围:${a.scope}|工程量/材料:${[...a.quantities,...a.materials].slice(0,5).join(";")||"按证据展开"}|流程:${a.process.slice(0,8).join("→")||"按施工准备→实施→检查→验收组织"}|验收:${a.acceptance.slice(0,4).join("")||"按规范和资料闭环"}`),"施工工作包结构化数据:",JSON.stringify(b),a.controlMatrix.length?"重点难点—施工内容—措施矩阵:":"",...a.controlMatrix.slice(0,8).map(a=>`- ${a.feature} → ${a.relatedWorkPackages.join("、")||"相关工作包"} → ${[...a.methods,...a.qualityControls,...a.safetyControls].slice(0,6).join(";")}`),a.evidenceRankingHints.join("\n")].filter(Boolean).join("\n")}async function z(a){let b=await (0,g.Qh)().getProject(a),c=(0,g.Yy)(a).filter(a=>"disk"!==a.status&&"error"!==a.status&&Number(a.indexedAt||0)>0&&Number(a.chunkCount||0)>0).map(a=>{var c;let d=a.relativePath.split(/[\\/]/u).filter(Boolean)[0],f=function(a){let b=new Set(["project_overview"]);return/招标|发包人要求|答疑|补疑|澄清/u.test(a)&&b.add("tender_requirement"),/图纸|设计说明|施工图|道路|桥梁|园林|交通|结构/u.test(a)&&b.add("drawing"),/清单|工程量|xls|xlsx/u.test(a)&&b.add("boq"),/质量|验收|规范|标准/u.test(a)&&b.add("quality_standard"),/安全|危大|风险|文明|环保/u.test(a)&&b.add("safety_requirement"),/施工|方案|组织|进度|工期|材料|机械|劳动力/u.test(a)&&b.add("construction_method"),[...b]}(a.relativePath),g=b.listChunks({relativePath:a.relativePath,limit:16}),h=g.map(a=>q(String(a.content||""))).filter(Boolean).slice(0,12),i=(c=a.relativePath,/投标函|我方已仔细研究/u.test(c)?"投标函/承诺格式,不进入施工正文":/保证金|账户|协议书|资金托管/u.test(c)?"资金账户/保证金资料,不进入施工正文":/开标|评标|交易系统|示范文本/u.test(c)?"招投标流程/示范文本,不进入施工正文":/报价|税率|利润|最高投标限价|招标控制价|计价依据|计价定额/u.test(c)?"商务报价资料,不进入施工正文":/招标文件正文|清单编制说明|招标总说明|招标需求/u.test(c)?"招标说明/清单编制说明,不进入施工正文":void 0),j=/\.(?:xlsx?|csv|tsv)$/iu.test(a.relativePath),k=i?[]:j?function(a){let b=new Set,c=/工程名称|序号|项目编码|项目名称|项目特征|计量\s*单位|工程量|金额|综合单价|合价|人工费|机械费|暂估价|分部小计|本页|续表|合计|汇总/u;for(let d of a)for(let a of String(d.content||"").split(/\r?\n/u)){let d=a.trim();if(!d.startsWith("|"))continue;let e=d.split("|").map(a=>a.trim());if(e.length<7)continue;let f=e.slice(1,-1),g=f[0]||"",h=f[2]||"",i=f[3]||"",j=f[4]||"",k=f[5]||"";if(!/^\d+$/.test(g)||!h||!i||c.test(`${h}${i}`))continue;let l=i.replace(/\s+/gu," ").replace(/[,,;;]?\s*(?:\d+[、..]\s*)?(?:未尽事宜|具体详见|详见)[^,,;;]*?,?满足验收要求/gu,"").replace(/[,,;;]?\s*(?:\d+[、..]\s*)?含拆除、垃圾打堆、外弃[^,,;;]*/gu,"").replace(/[,,;;]?\s*投标人(?:结合设计图纸、地勘报告)?(?:自行)?踏勘现场后综合考虑/gu,"").replace(/[||]+/gu," ").replace(/\s*\d+[..]\s*$/gu,"").replace(/[。.]\s*$/gu,"").replace(/\s+/gu," ").trim();if(l.length<2)continue;let m=k&&j?`${k}${j}`:k||j,n=`${h}:${l.slice(0,80)}${m?`|${m}`:""}`;if(!(n.replace(/[^0-9a-zA-Z\u4e00-\u9fa5]/gu,"").length<4)&&(b.add(n),b.size>=40))return[...b]}return[...b]}(g):function(a){let b=new Set;for(let c of a){for(let a of c.split(/[。;;\n]/u)){let c=q(a);if(!(c.length<12)&&!(c.length>180)&&!r(c)&&(/(项目|工程|道路|桥梁|园林|交通|结构|排水|照明|绿化|工期|质量|安全|危大|材料|机械|劳动力|验收|规范|清单|工程量|施工)/u.test(c)&&b.add(c),b.size>=18))break}if(b.size>=18)break}return[...b]}(h),l=function(a,b){let c=`${a}
18
+ ${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]}(a.relativePath,k),m=function(a,b){let c=`${a}
19
+ ${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(s),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]})))),m={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:t(c)},n=(0,i.hw)(a,m),p=(0,i.rj)({facts:h,materialSnapshot:n}),u=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(!u.graph)throw Error(`项目图谱预计算失败:${u.stage.message||u.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()}}(p,u.graph),w=u.stage.message||"项目图谱已预计算",y=x(v,c),z={version:l,projectRoot:a,projectId:(0,f.computeProjectId)(a),createdAt:Date.now(),sourceHash:t(c),fileCount:c.length,files:c,facts:h,chapterIntentIndex:k,projectGraph:v,projectGraphMessage:w,constructionOrganizationGraph:y,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(o(a),JSON.stringify(z,null,2)),z}function A(a){let b=v(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,k.c6)({version:m,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=p(a,b);if(d.existsSync(c))try{let b=JSON.parse(d.readFileSync(c,"utf8"));if(b.version!==m||!u(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||!u(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}
20
+ ${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:m,projectRoot:a.projectRoot,createdAt:Date.now(),scopeHash:a.scopeHash,selectedRoots:a.selectedRoots,selectedFiles:a.selectedFiles,sourceHash:(0,k.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(p(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:y(f.constructionOrganizationGraph),blueprint:f.blueprint}}function B(a){let b=`project-intelligence-${Date.now()}`;(0,h.Qf)(a,{id:b,type:"reindex",title:"项目理解缓存",stage:"generating",status:"processing",percent:5,message:"正在构建项目级蓝图、图谱、事实索引和章节意图索引"}),z(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)})}},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}},32434:(a,b,c)=>{c.d(b,{IA:()=>v,Qu:()=>t,SU:()=>u,ZR:()=>n,hw:()=>o,rj:()=>s});var d=c(76760),e=c(44533),f=c(40299),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){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 v(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)}},37095:(a,b,c)=>{c.d(b,{CU:()=>q,H7:()=>p,JB:()=>m,Qf:()=>k,kW:()=>n,oy:()=>l,sn:()=>o});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){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[]}}):[]}function j(a,b){let c=h(a);d.mkdirSync(f.dirname(c),{recursive:!0}),d.writeFileSync(c,`${b.slice(-200).map(a=>JSON.stringify(a)).join("\n")}
21
+ `,"utf8")}function k(a,b){let c=Date.now(),d=i(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),j(a,d),g}function l(a,b=50){return i(a).sort((a,b)=>b.updatedAt-a.updatedAt).slice(0,b)}function m(a,b){return i(a).find(a=>a.id===b)}function n(a,b){return i(a).filter(a=>!b||a.type===b).sort((a,b)=>b.updatedAt-a.updatedAt)[0]}function o(a){return i(a).filter(a=>"processing"===a.status).sort((a,b)=>b.updatedAt-a.updatedAt)}function p(a){let b=i(a),c=h(a);return d.existsSync(c)&&d.unlinkSync(c),b.length}function q(a,b){let c=i(a),d=c.filter(a=>a.id!==b);return d.length!==c.length&&(j(a,d),!0)}},40299:(a,b,c)=>{c.d(b,{CK:()=>R,Ed:()=>S,FD:()=>f,K7:()=>v,KX:()=>z,Re:()=>p,UG:()=>T,V3:()=>W,bR:()=>D,bx:()=>w,dh:()=>E,kT:()=>x,r4:()=>C,rd:()=>y,rs:()=>V,wi:()=>m,z1:()=>t});var d=c(58965),e=c(70208);function f(a,b){return b?a.replace(/^!\[[^\]]*(?:图纸|drawing|cad|地图|平面|剖面|立面)[^\]]*\]\([^)]*\)\s*$/gimu,"").replace(/\n{3,}/gu,"\n\n"):a}let g=/^.*(?:知识库证据|知识库已确认事实|资料类型|提示词角色|后台自动规范|规范包|事实字段|资料未提供|未检索到|待确认事项|证据来源|来源清单|校验结果|修复任务包|修复类型|修复对象|输出要求|当前项目绑定资料|已召回证据|证据边界|可审查草稿|Reviewer|Repairer).*$(?:\n)?|^.*本节围绕.+确保各项措施与本工程实施条件相匹配。?\s*$(?:\n)?|^.*建立施工准备、过程控制、检查验收和资料归档要求.*$(?:\n)?|^.*形成责任明确、过程可控、资料完整的管理闭环。?\s*$(?:\n)?|^.*确保现场管理要求与施工进度、资源组织和验收节点同步推进。?\s*$(?:\n)?|^\s*(?:管理闭环|责任明确、过程可控、资料完整|与本工程实施条件相匹配)[。;;]?\s*$(?:\n)?/gmu,h=/^\s*(?:#{1,6}\s*)?(?:PDF\s*第\s*\d+\s*页|rule\b|文件[::]|片段[::]|来源[::]).*$/gimu,i=/^\s*(?:[│┃┆┊┌┐└┘├┤┬┴┼─━╭╮╰╯]|[↓↑→←⇒⇨➡])+\s*$/gmu,j=/^#{2,6}\s+(?:\d+(?:\.\d+)*\s*)?(?:[-—–]\s*)?(?:判断|判定|识别|确认)?是否(?:涉及|涉|需要|适用)|^#{2,6}\s+(?:\d+(?:\.\d+)*\s*)?(?:[-—–]\s*)?(?:如|若|如果)(?:涉及|不涉及|适用|不适用)|^#{2,6}\s+.*(?:根据|结合).{0,12}(?:实际情况|项目情况|资料情况).{0,8}(?:判断|确定|编写|生成)|^#{2,6}\s+.*(?:按需(?:生成|编写)|视情况|判断后|生成要求|编写要求|说明要求|注意事项)\s*$/gmu,k=/^(?:\d+(?:\.\d+)*\s*)?(?:[-—–]\s*)?(?:(?:判断|判定|识别|确认)?是否(?:涉及|涉|需要|适用).*|(?:如|若|如果)(?:涉及|不涉及|适用|不适用).*|.*(?:根据|结合).{0,12}(?:实际情况|项目情况|资料情况).{0,8}(?:判断|确定|编写|生成).*|.*(?:按需(?:生成|编写)|视情况|判断后|生成要求|编写要求|说明要求|注意事项))\s*$/u;function l(a){let b=a.replace(/^#{1,6}\s+/u,"").replace(/^\s*\d+(?:\.\d+)*(?:[..、]|\s)+/u,"").replace(/^第[一二三四五六七八九十百千万\d]+[章节篇部分]\s*/u,"").trim(),c=(0,e.GQ)(b);return k.test(b)||k.test(c)}function m(a){return a.replace(/PDF\s*第\s*\d+\s*页/giu,"相关资料").replace(/第\s*\d+\s*页\s*(?:\/|共)\s*\d+\s*页/gu,"").replace(/第\s*\d+\s*(?:[-—至到~~]\s*\d+)?\s*页/gu,"相关资料").replace(/(装饰工程|土建工程|加固工程|给排水工程|电气工程|智能化工程|消防工程|弱电智能化工程|室外道排工程|建筑结构加固工程)\s*(?:(?:施工)?图纸|资料|文件)?\s*[((]?\s*(?:(?:共|多达|约|合计)\s*)?\d+\s*页\s*[))]?/gu,"$1施工图纸").replace(/\d+\s*页\s*(装饰|土建|加固|给排水|电气|智能化|消防|弱电智能化|室外道排|建筑结构加固)\s*(?:专业)?\s*(?:(?:施工)?图纸)?/gu,"$1专业图纸").replace(/(装饰|土建|加固|给排水|电气|智能化|消防|弱电智能化|室外道排|建筑结构加固)\s*(?:专业)?\s*(?:[((]\s*)?\d+\s*页\s*(?:(?:施工)?图纸)?\s*[))]?/gu,"$1专业图纸").replace(/([\u4e00-\u9fa5A-Za-z0-9、及与和]{2,24})\s*(?:共|多达|约|合计)\s*\d+\s*页/gu,"$1相关专业图纸").replace(/([\u4e00-\u9fa5A-Za-z0-9()()、·-]{2,24}工程)\s*(?:图纸|资料|文件)?\s*[((]?\s*(?:(?:共|多达|约|合计)\s*)?\d+\s*页\s*[))]?/gu,"$1施工图纸").replace(/([\u4e00-\u9fa5A-Za-z0-9()()、·-]{2,24})(?<!施工)\s*(?:施工)?图纸\s*[((]?\s*(?:(?:共|多达|约|合计)\s*)?\d+\s*页\s*[))]?/gu,"$1施工图纸").replace(/(给排水|电气|智能化|消防|暖通|人防)\s*[((]\s*\d+\s*页\s*[))]/gu,"$1专业图纸").replace(/(?:依据|按照|结合)?\s*图纸\s*[((]\s*\d+\s*页\s*[))]/gu,"依据相关专业图纸").replace(/(?:依据|按照|结合)?\s*清单\s*[((]?\s*\d+\s*页\s*[))]?/gu,"依据工程量清单").replace(/资料\s*[((]?\s*\d+\s*页\s*[))]?/gu,"项目资料").replace(/[((]?[\u4e00-\u9fa5A-Za-z0-9、及与和]*(?:图纸|清单|资料|文件|工程)?[\u4e00-\u9fa5A-Za-z0-9、及与和]*(?:(?:共|多达|约|合计)\s*)?\d+\s*页[\u4e00-\u9fa5A-Za-z0-9、及与和]*(?:图纸|清单|资料|文件)?[))]?/gu,a=>/图纸|工程|装饰|土建|加固|给排水|电气|智能化|消防/u.test(a)?"相关专业图纸":/清单/u.test(a)?"工程量清单":"相关资料").replace(/(?:位于|详见|见|参见|依据|按照|结合)?\s*相关资料(?:\s*相关资料)+/gu,"相关资料")}let n=String.raw`(?:\d+[.、](?=\s|\*\*)\s*|[((]\d+[))]\s*|[-*+]\s+)`;function o(a){return/^\s*\|/u.test(a)||/^\s*\|?\s*:?-{3,}:?/u.test(a)?a:a.replace(/([。;;])\s*(?=(?:\d+[.、](?=\s|\*\*)\s*|[((]\d+[))]\s*|[-*+]\s+)\S)/gu,"$1\n").replace(/([^\n])\s+(?=(?:\d+[.、](?=\s|\*\*)\s*|[((]\d+[))]\s*|[-*+]\s+)\*\*)/gu,"$1\n")}function p(a){return a.split(/\r?\n/u).map(o).join("\n").replace(/\n{3,}/gu,"\n\n")}function q(a){return/^\s*\|?\s*:?-{3,}:?\s*(\|\s*:?-{3,}:?\s*)+\|?\s*$/u.test(a)}function r(a){let b=a.trim();return/^\|.*\|$/u.test(b)&&b.split("|").length>=3}function s(a){return`| ${Array.from({length:Math.max(2,a)},()=>"---").join(" | ")} |`}function t(a){let b=a.split(/\r?\n/u),c=[],d=0;for(let a=0;a<b.length;a+=1){let e=b[a];if(q(e)){c.push(e);continue}if(!(r(e)||d>0&&function(a){let b=a.trim();return b.startsWith("|")&&b.length>1}(e))){d=0,c.push(e);continue}let f=b[a+1]||"",g=d||e.trim().replace(/^\|/u,"").replace(/\|$/u,"").split(/(?<!\\)\|/u).length;if(c.push(function(a,b){let c=a.trim().replace(/^\|/u,"").replace(/\|$/u,"").split(/(?<!\\)\|/u).map(a=>a.trim());for(;c.length<b;)c.push("");return`| ${c.slice(0,b).join(" | ")} |`}(e,g)),q(f)){c.push(s(g)),d=g,a+=1;continue}!d&&r(f)&&function(a){let b=a.trim().replace(/^\|/u,"").replace(/\|$/u,"").split(/(?<!\\)\|/u).map(a=>a.replace(/\*\*/gu,"").trim());return!(b.length<2)&&b.filter(a=>/^(?:序号|信息项|内容|控制项目|控制内容|执行要求|责任主体|检查(?:与验收)?|验收标准|备注|名称|规格(?:型号)?|单位|数量|阶段|措施|风险|应急物资名称|资源类别|投入计划|管理要求)$/u.test(a)).length>=Math.min(2,b.length)}(e)&&(c.push(s(g)),d=g)}return c.join("\n").replace(/\n{3,}/gu,"\n\n")}RegExp(String.raw`\S.+(?:\s|[。;;])${n}\S.+(?:\s|[。;;])${n}\S`,"u");let u=/(?:项目部|本项目|本工程)?(?:根据|依据|结合|按照|以)?(?:本项目|项目|[^。;;\n]{0,30}?)?(?:招标文件|补疑澄清文件|补遗澄清文件|补疑补遗|答疑(?:回复)?文件|答疑修正口径|补充答疑修正口径|澄清文件|工程量清单|设计图纸|施工图纸|图纸资料|设计修改通知单)(?:[、,,及和与\s]*(?:招标文件|补疑澄清文件|补遗澄清文件|补疑补遗|答疑(?:回复)?文件|答疑修正口径|补充答疑修正口径|澄清文件|工程量清单|设计图纸|施工图纸|图纸资料|设计修改通知单|现行规范|规范)){1,}(?:[^。;;\n]{0,80})?[,,]/u;function v(a){return a.split(/\r?\n/u).map(a=>/^\s*\|/u.test(a.trim())?a:a.replace(u,"").replace(/(?:施工图设计说明|工程量清单项目特征|补充答疑修正口径|答疑修正口径)(?:[、,,及和与\s]*(?:施工图设计说明|工程量清单项目特征|补充答疑修正口径|答疑修正口径)){1,}/gu,"项目技术文件").replace(/(?:根据|依据|以)(?:[^。;;\n]{0,30})?(?:招标文件|补疑澄清文件|补遗澄清文件|补疑补遗|答疑(?:回复)?文件|答疑修正口径|补充答疑修正口径|澄清文件|工程量清单|设计图纸|施工图纸)(?:[^。;;\n]{0,40})(?:编制|确定|要求|为编制基础)[。;;]?/gu,"").replace(/\s{2,}/gu," ").trimEnd()).filter(a=>!/^(?:本节|本小节|本章)?(?:内容|措施)?(?:根据|依据)(?:招标文件|补疑澄清文件|补遗澄清文件|答疑(?:回复)?文件|澄清文件|工程量清单|设计图纸|施工图纸)[^。;;\n]*[。;;]?$/u.test(a.trim())).join("\n").replace(/\n{3,}/gu,"\n\n")}function w(a){let b=[];return a.split(/\r?\n/u).forEach((a,c)=>{u.test(a)&&b.push({level:"error",severity:"blocker",category:"style",owner:"system",message:`正式正文不得出现资料来源罗列话术:第 ${c+1} 行`,suggestion:"删除“根据/依据招标文件、清单、图纸”等来源罗列,直接保留项目事实、施工内容和控制措施。"}),/^\s*\*\*[^*]{2,40}表\*\*\s*$/u.test(a)&&b.push({level:"error",severity:"blocker",category:"format",owner:"system",message:`正式正文不得用粗体段落充当表名:第 ${c+1} 行`,suggestion:"表名必须转换为 #### 四级标题,避免导出后混入正文段落。"})}),b.slice(0,20)}function x(a){return(function(a){let b=a.split(/\r?\n/u),c=[];for(let a=0;a<b.length;a+=1){if(!r(b[a])||!q(b[a+1]||"")){c.push(b[a]);continue}let d=[];for(;a<b.length&&r(b[a]);)d.push(b[a]),a+=1;a-=1;let e=d.map(a=>a.trim().replace(/^\|/u,"").replace(/\|$/u,"").split(/(?<!\\)\|/u).map(a=>a.trim())),f=Array.from({length:Math.max(...e.map(a=>a.length))},(a,b)=>e.some((a,c)=>1!==c&&!!a[b]?.trim())),g=e.map((a,b)=>{let c=f.map((b,c)=>b?a[c]||"":null).filter(a=>null!==a);return 1===b?s(c.length):`| ${c.join(" | ")} |`});c.push(...g)}return c.join("\n")})(t(p(m(v(function(a){let b=a.trim(),c=/^```(?:markdown|md)?\s*\n([\s\S]*?)\n```\s*$/iu.exec(b);return c?c[1].trim():a}(a)).replace(/\b(m|㎡)\s*2\b/giu,"平方米").replace(/\bm\s*[²2]\b/giu,"平方米").replace(/\b(m|㎥)\s*3\b/giu,"立方米").replace(/\bm\s*[³3]\b/giu,"立方米").replace(/\bmm2\b/giu,"平方毫米").replace(/\bcm2\b/giu,"平方厘米").replace(/\bkm2\b/giu,"平方千米").replace(/\s*×\s*/gu,"\xd7").replace(/\s*≤\s*/gu,"≤").replace(/\s*≥\s*/gu,"≥").replace(/\s*±\s*/gu,"\xb1"))))).split(/\r?\n/u).map(a=>/^\s*\|/u.test(a)?a.replace(/\s*不适用\s*(?=\|)/gu," "):a).join("\n").replace(/^\*\*([^*\n]{2,40}(?:改造|工作包|工程|施工))\*\*\s*$/gmu,"#### $1").replace(/承包人案/gu,"方案").replace(/承包人法(?=[::])/gu,"施工方法").replace(/承包人法/gu,"方法").replace(g,"").replace(h,"").replace(i,"").replace(j,"").replace(d.tK,"").replace(/^#\s+/gmu,"").replace(d.VX,"").split(/\r?\n/u).filter((a,b,c)=>{let d=b>0?(0,e.GQ)((c[b-1]||"").trim().replace(/^#{1,6}\s+/u,"")):"",f=(0,e.GQ)(a.trim().replace(/^#{1,6}\s+/u,""));if(d&&l(d)&&f.length>0&&f.length<=12&&!/^#{1,6}\s/u.test(a.trim()))return!1;let g=a.trim();if(!g)return!0;if(/该小节围绕.+进行补充说明/u.test(g)||/仅作为内部事实提取依据|正式正文不得引用文件名|后台事实|内部事实/u.test(g))return!1;if(/^\s*\|/u.test(g)||/^\s*\|?\s*:?-{3,}:?/u.test(g))return!0;let h=(0,e.GQ)(g.replace(/^#{1,6}\s+/u,""));return!(/^(?:雨季|冬季|高温|台风|大风等特殊气候|雨季、冬季、高温、台风、大风等特殊气候)$/u.test(h)||h.length<=1||l(h))&&!(/[,、;:和与在为对将]$/u.test(h)||/(通过|包括|如下|主要包括)$/u.test(h))}).join("\n").replace(/\n{3,}/gu,"\n\n").trim()}let y="以下规则仅用于保障导出格式正确和事实安全,不得覆盖用户在提示词中已明确的要求。\n不得把”知识库、检索、资料类型、提示词角色、规范包、事实字段、缺失项、校验结果、资料未提供、未检索到”等后台流程话术写入正文。\n严禁使用“根据/依据招标文件、补疑澄清文件、工程量清单及设计图纸”等资料来源罗列开头;正文必须直接写项目事实、施工内容、控制措施、验收节点。\n【导出格式】章标题用 ## ,节标题用 ### 加数字编号(如 1.1),小节标题用 #### 加数字编号(如 1.1.1)。禁止用数字编号或粗体代替 ###/#### 标题。\nMarkdown 表格格式硬约束:凡是输出 Markdown 表格,必须使用标准 GFM 表格格式。\n表格必须包含表头行、分隔线和数据行;表头下一行必须是分隔线,例如 |---|---|。\n禁止只输出连续的“| 字段 | 值 |”裸表格行;两列键值信息表默认使用表头 | 信息项 | 内容 |。\n表头、分隔线和数据行必须连续,中间不得插入正文、说明、空行或补充段落。\n正文表格不得展示后台溯源列或系统过程列,如“资料来源/说明”“资料来源/证明”“知识库来源”等。\n项目名称、项目编号、招标人/业主/建设单位、建设地点、建设规模、计划工期、质量标准、合同估算价等项目基础信息,只能在项目基本信息表中集中输出一次;后续章节如需引用,应写入正文或专业表格的业务字段,不得重复生成项目基础信息键值表。\n【段落格式】段落之间必须空行(双换行)分隔,不得用单换行连续写大段文字。列表项逐行独占。步骤描述之间加空行。\n正文事实必须来自绑定材料;信息不足时保持审慎,不得编造精确数量。",z="只生成当前节及其节内三级小节正文,不生成其他同级节,不重复章节一级标题。\n优先使用当前模板、用户要求、绑定提示词和绑定材料中的事实;缺少依据时不得编造具体数值、名称、时间、规格或责任。\n小节应有实质正文;除非用户或模板明确要求纯表格,否则表格只能作为辅助表达,不能整节只有表格。\n不得用通用兜底段落、空泛管理话术或后台缺料说明冒充正文;信息不足时只写已有事实、适用边界和待复核口径。";function A(a){return(0,e.GQ)(a.replace(/^#+\s*/u,"")).replace(/^(?:第)?[一二三四五六七八九十百千万\d]+章\s*/u,"").trim().replace(/\s+/gu,"")}function B(a,b){let c=A(a),d=A(b);return!!(c&&d&&c===d)}function C(a){return[...new Set([...a.matchAll(/^###\s+(.+)$/gmu)].map(a=>(0,e.GQ)(a[1]||"")).filter(a=>a.length>=2&&a.length<=80).filter(a=>!l(a)).filter(a=>!/^\d+(?:\.\d+){2,}\s+/u.test(a)))]}function D(a){let b=a.split(/\r?\n/u),c="",d=0;return b.map(a=>{let b=/^\*\*([^*]{2,40}表)\*\*\s*$/u.exec(a.trim());if(b&&c)return d+=1,`#### ${c}.${d} ${(0,e.GQ)(b[1]||"")}`;let f=/^###\s+(\d+\.\d+)\s+.+$/u.exec(a.trim());if(f)return c=f[1],d=0,a;if(/^##\s+/u.test(a.trim()))return c="",d=0,a;let g=/^(#{4,5})\s+(.+)$/u.exec(a.trim());if(g){if(!c)return"#####"===g[1]?a.replace(/^\s*#####/u,"####"):a;let b=(g[2]||"").trim(),f=(0,e.GQ)(b.replace(/^\d+\.\d+\.\d+\s+/u,""));return f?(d+=1,`#### ${c}.${d} ${f}`):a}return a}).join("\n").replace(/\n{3,}/gu,"\n\n").trim()}function E(a){let b=[],c="";for(let d of a.split(/\r?\n/u)){let a=d.trim(),f=/^###\s+(\d+\.\d+)\s+.+$/u.exec(a);if(f){c=f[1];continue}if(/^##\s+/u.test(a)&&(c=""),!c)continue;let g=/^####\s+(.+)$/u.exec(a);if(g){let a=(g[1]||"").trim();RegExp(`^${O(c)}\\.\\d+\\s+\\S`,"u").test(a)||b.push({level:"warning",message:`三级小节缺少 ${c}.x 编号:${(0,e.GQ)(a)}`,suggestion:"三级小节必须使用“#### 章号.节号.序号 标题”,且不纳入目录。"})}}return b}function F(a){let b=a.replace(/\*+/gu,"").trim();if(l(b))return"";let c=(0,e.GQ)(b).replace(/^[-—–]\s*/u,"").trim();return l(c)||/^(?:雨季|冬季|高温|台风|大风等特殊气候)$/u.test(c)?"":c}function G(a=[]){return[...new Set(a.map(F).filter(a=>a.length>=2))]}function H(a){return["## 目录","",...a.flatMap((a,b)=>{let c=G(a.sections||[]);return[`- ${(0,e.tb)(b,a.title)}`,...c.map((a,c)=>` - ${function(a,b,c){let d=(0,e.GQ)(c);return!function(a){let b=/^\s*(\d+)\.(\d+)[..、]?\s+(.+)$/u.exec(a);return!!b&&(0,e.GQ)(b[3]||"").trim()===(0,e.GQ)(a).trim()}(c)?`${a+1}.${b+1} ${d}`:d}(b,c,a)}`)]})].join("\n")}function I(a){return a.replace(/<div class="document-cover">[\s\S]*?<\/div>\s*(?:<div class="page-break"><\/div>\s*)?/giu,"").replace(/^#\s+.+\n{1,2}/u,"")}function J(a){return a.replace(/^##\s+目录\s*$[\s\S]*?(?=\n<div class="page-break"><\/div>|\n##\s+第[一二三四五六七八九十百千万\d]+章|\n##\s+)/gmu,"").replace(/^<div class="page-break"><\/div>\s*(?=##\s+第[一二三四五六七八九十百千万\d]+章)/gmu,"")}function K(a){let b=!1;return a.replace(/^##\s+目录\s*$[\s\S]*?(?=\n<div class="page-break"><\/div>|\n##\s+)/gmu,a=>b?"":(b=!0,a)).replace(/\n{3,}/gu,"\n\n").trim()}function L(a,b){let c=K(a);b.forEach((a,b)=>{let d=(0,e.GQ)(a.title),f=RegExp(`^##\\s+(?:第[一二三四五六七八九十百千万\\d]+章\\s*)?${O(d)}\\s*$`,"mu");c=f.test(c)?c.replace(f,`## ${(0,e.tb)(b,a.title)}`):c});let d=c.split(/\r?\n/u),f=-1,g=0,h=0,i="",j=new Set,k=a=>{let c=b[f]?.sections||[],d=Q(a);return c.findIndex(a=>Q(a)===d)},m=(a,c)=>{let d=F(a);if(!d||l(a)||l(d))return"";let m=k(d),n=b[f]?.sections||[],o=m>=0?m+1:g+1,p=m>=0?Q(n[m]):Q(d);return j.has(p)?(g=o,i=c||`${f+1}.${g}`,h+=1,`#### ${f+1}.${g}.${h} ${d}`):(g=o,h=0,i=c||`${f+1}.${g}`,j.add(p),`### ${f+1}.${g} ${m>=0?(0,e.GQ)(n[m]):d}`)},n=!1;return d.map(a=>{let c=a.trim();if(/^##\s+目录\s*$/u.test(c))return n=!0,a;if(n&&/^<div class="page-break"><\/div>$/u.test(c))return n=!1,a;if(n)return a;if(/^##\s+第[一二三四五六七八九十百千万\d]+章\s+/u.test(c))return f+=1,g=0,h=0,i="",j=new Set,a;let d=/^##\s+第[一二三四五六七八九十百千万\d]+节\s+(.+)$/u.exec(c);if(f>=0&&d)return m(d[1]||"");let l=/^##\s+\d+[..、]\s+(.+)$/u.exec(c);if(f>=0&&l)return m(l[1]||"");let o=/^##\s+(\d+)\.(\d+)\s+(.+)$/u.exec(c);if(f>=0&&o)return m(o[3]||"",`${o[1]}.${o[2]}`);let p=/^##\s+(.+)$/u.exec(c);if(f>=0&&p){let a=(0,e.GQ)(p[1]||"");return/^本章目录$/u.test(a)?"":m(a)}let q=/^###\s+(?:(\d+)\.(\d+)\s+)?(.+)$/u.exec(c);if(f>=0&&q)return m(q[3]||"",q[1]&&q[2]?`${q[1]}.${q[2]}`:void 0);let r=/^####\s+(\d+)\.(\d+)(?!\.)\s+(.+)$/u.exec(c);if(f>=0&&r)return m(r[3]||"",`${r[1]}.${r[2]}`);let s=/^####\s+(?:(\d+)\.(\d+)\.(\d+)\s+)?(.+)$/u.exec(c);if(f>=0&&s){let a=s[1]&&s[2]?`${s[1]}.${s[2]}`:i,c=(0,e.GQ)(s[4]||""),d=Q(c),l=k(c)>=0&&!j.has(d);return!g||a&&a!==i&&(0===(b[f]?.sections||[]).length||l)?m(c,a):(h+=1)<=4?`#### ${f+1}.${g}.${h} ${c}`:`**${c}**`}return a}).filter(a=>""!==a).join("\n")}function M(a,b){let c=a.replace(/^\*\*([^*\n]{2,40}(?:改造|工作包|工程|施工))\*\*\s*$/gmu,"#### $1").replace(/承包人案/gu,"方案").replace(/承包人法(?=[::])/gu,"施工方法").replace(/承包人法/gu,"方法").replace(/(?:本|我)施工方/gu,"我公司").replace(/(?:本|我)投标人/gu,"我公司").replace(/高度重视/gu,"严格落实").replace(/重中之重/gu,"关键控制事项");for(let a of b?.forbiddenTerms||[])a&&/^(?:报价明细表|最高投标限价|招标控制价)$/u.test(a)&&(c=c.split(/\r?\n/u).filter(b=>!RegExp(O(a),"u").test(b)).join("\n"));return c}function N(a,b){if(!b)return M(a);let c=function(a,b){let c=a;for(let a of b?.requiredTables||[])c=function(a,b){if(/项目基本信息/u.test(b)&&(/项目基本信息/u.test(a)||/\|\s*信息项\s*\|\s*内容\s*\|/u.test(a)||/\|\s*项目名称\s*\|[^\n]*(?:徽光阁|项目施工|工程)/u.test(a))||RegExp(O(b),"u").test(a))return a;let c=/项目基本信息/u.test(b)?"":`**${b}**
20
22
 
21
23
  | 控制项目 | 控制内容 | 执行要求 | 复核要求 |
22
24
  |---|---|---|---|
@@ -1,4 +1,4 @@
1
- "use strict";exports.id=8661,exports.ids=[8661],exports.modules={48661:(a,b,c)=>{c.d(b,{BH:()=>J,Gl:()=>u,JU:()=>N,Jz:()=>O,M$:()=>D,QG:()=>I,SE:()=>y,YL:()=>U,a6:()=>G,r:()=>H,v7:()=>E,yE:()=>M});var d=c(77598),e=c(73024),f=c(48161),g=c(76760),h=c(91985),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.content.trim().length>0?"completed":"failed",updatedAt:Date.now(),timedOut:a.timedOut,elapsedMs:a.elapsedMs}))}let s=new Map,t=Math.max(36e5,Number(process.env.DOCUMENT_ABANDONED_RECORD_STALE_MS??864e5));function u(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 v(a=(0,l.aY)()){return g.join(u(a),"index.json")}function w(a=(0,l.aY)()){return g.join(u(a),"assets.json")}function x(a,b=(0,l.aY)()){return g.join(u(b),"drafts",`${a}.json`)}function y(a,b=(0,l.aY)()){return a.path?g.isAbsolute(a.path)?a.path:a.path.startsWith("generatedDocuments/assets/")?g.join(u(b),a.path.replace(/^generatedDocuments\/assets\//u,"assets/")):g.join(b,"knowledgeBase",a.path):null}function z(a,b){try{return JSON.parse(e.readFileSync(a,"utf8"))}catch{return b}}function A(a,b){e.mkdirSync(g.dirname(a),{recursive:!0}),e.writeFileSync(a,JSON.stringify(b,null,2))}function B(a){for(let b of s.values())if(b.documentId===a)return b;return null}function C(a,b=(0,l.aY)()){if("generating"!==a.status||B(a.id)||Date.now()-a.updatedAt<t)return a;let c="生成任务已中断,请点击继续生成或重新生成",d=a.checkpointChapters?.length?"warning":"failed",e={...a,title:p(a),status:d,error:a.error||c,executionStages:o(a.executionStages,c),completedAt:Date.now(),warningIssues:a.checkpointChapters?.length?[...a.warningIssues||[],c]:a.warningIssues};return a.taskId&&T(b,{taskId:a.taskId,title:`生成 ${e.title}`,status:"warning"===d?"warning":"error",percent:100,message:c,stages:e.executionStages,error:c}),e}function D(a=(0,l.aY)()){return z(v(a),[]).map(b=>{if("generating"!==b.status)return b;let c=z(x(b.id,a),null);if(!c)return b;let d=C(c,a);return d!==c?Q(F(d,a,{preserveUpdatedAt:!0})):Q(c)}).sort((a,b)=>(b.createdAt||b.updatedAt)-(a.createdAt||a.updatedAt))}function E(a,b=(0,l.aY)()){let c=z(x(a,b),null);if(!c)return null;let d=C(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=L(a,b);return d?F({...a,assets:[d,...(a.assets||[]).filter(a=>a.id!==d.id)]},b):a}(d!==c?F(d,b,{preserveUpdatedAt:!0}):d,b)}function F(a,b=(0,l.aY)(),c){let d=Date.now(),e=R({...a,updatedAt:c?.preserveUpdatedAt?a.updatedAt:d});A(x(e.id,b),e);let f=z(v(b),[]).filter(a=>a.id!==e.id);return f.unshift(Q(e)),A(v(b),f),e}function G(a,b,c=(0,l.aY)()){let d=E(a,c);return d?F({...d,...b,id:a},c):null}function H(a,b=(0,l.aY)()){let c=E(a,b);if(!c)return null;if("generating"!==c.status)return c;for(let[b,c]of s)c.documentId===a&&(c.status="aborted",c.controller.abort(),s.delete(b));let d="用户中止",e=o(c.executionStages,d),f=F({...c,status:"aborted",error:d,executionStages:e,completedAt:Date.now()},b);return f.taskId&&T(b,{taskId:f.taskId,title:`生成 ${f.title}`,status:"warning",percent:100,message:d,stages:e,error:d}),f}function I(a,b=(0,l.aY)()){try{e.rmSync(x(a,b),{force:!0})}catch{console.warn("[generated-documents] 删除文档记录失败或文件不存在",a)}let c=z(v(b),[]).filter(b=>b.id!==a);A(v(b),c)}function J(a=(0,l.aY)()){return z(w(a),[]).sort((a,b)=>b.updatedAt-a.updatedAt)}function K(a,b,c=(0,l.aY)()){let d=Date.now(),e=[...J(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 A(w(c),e),e}function L(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(u(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 K([h],a.id,b).find(a=>a.id===h.id)||null}function M(a,b=(0,l.aY)()){return J(b).find(b=>b.id===a)||null}function N(a,b=(0,l.aY)()){let c=M(a,b);if(!c)return!1;let d=y(c,b);if(d&&d.startsWith(u(b)))try{e.rmSync(d,{force:!0})}catch{console.warn("[generated-documents] 删除生成资源文件失败或文件不存在",d)}return A(w(b),J(b).filter(b=>b.id!==a)),!0}function O(a,b,c=(0,l.aY)()){let d=M(a,c);if(!d)return null;let f=y(d,c);return f&&e.existsSync(f)?"directory"===b?g.dirname(f):f:null}function P(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 Q(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?.blockingIssues?.length||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 R(a){let b=a.draft?{...a.draft,chapters:a.draft.chapters?.map(P),checkpointChapters:a.draft.checkpointChapters?.map(P)}:a.draft;return{...a,draft:b,checkpointChapters:a.checkpointChapters?.map(P)}}function S(a,b){let c=E(a.documentId,b);return c&&"generating"===c.status?{taskId:a.id,documentId:a.documentId,record:c}:null}function T(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 U(a,b=(0,l.aY)()){let c=g.resolve(b),e=(0,k.computeProjectId)(c),f=Date.now(),n=a.resumeDocumentId?E(a.resumeDocumentId,c):null;if(n){let a=B(n.id),b=a?S(a,c):null;if(b)return b}if(!n)for(let b of s.values()){let d=S(b,c);if(d&&d.record.templateId===a.templateId&&d.record.projectRoot===c)return d}let t=n?.id||`doc-${f}-${d.randomBytes(4).toString("hex")}`,u=`task-${f}-${d.randomBytes(4).toString("hex")}`,v=n?{...n,taskId:u,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:t,taskId:u,templateId:a.templateId,templateVersion:(0,h.QJx)(a.templateId)?.version,title:"生成中",requirement:a.requirement||"",maxEvidencePerChapter:a.maxEvidencePerChapter,projectRoot:c,projectId:e,knowledgeBasePath:g.join(c,"knowledgeBase"),markdown:"",status:"generating",assets:[],createdAt:f,updatedAt:f};F(v,c),T(c,{taskId:u,title:`生成 ${v.title}`,status:"processing",percent:1,message:"文档生成任务已进入后台队列",stages:v.executionStages});let w=new AbortController,x={},y=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),z=0,A="",C=Math.max(1e3,Math.min(15e3,Number(process.env.DOCUMENT_PROGRESS_SAVE_INTERVAL_MS??5e3))),D=(0,h.OXS)({...a,projectRoot:c,resumeChapters:y,signal:w.signal,onProgress:(a,b)=>{try{x.current&&(x.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===A&&d-z<C)return;let f=E(t,c);if(f&&"generating"===f.status){let g=b?.chapters?q(f.checkpointChapters,b.chapters).map(P):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:()=>J,Gl:()=>u,JU:()=>N,Jz:()=>O,M$:()=>D,QG:()=>I,SE:()=>y,YL:()=>U,a6:()=>G,r:()=>H,v7:()=>E,yE:()=>M});var d=c(77598),e=c(73024),f=c(48161),g=c(76760),h=c(91985),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.content.trim().length>0?"completed":"failed",updatedAt:Date.now(),timedOut:a.timedOut,elapsedMs:a.elapsedMs}))}let s=new Map,t=Math.max(36e5,Number(process.env.DOCUMENT_ABANDONED_RECORD_STALE_MS??864e5));function u(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 v(a=(0,l.aY)()){return g.join(u(a),"index.json")}function w(a=(0,l.aY)()){return g.join(u(a),"assets.json")}function x(a,b=(0,l.aY)()){return g.join(u(b),"drafts",`${a}.json`)}function y(a,b=(0,l.aY)()){return a.path?g.isAbsolute(a.path)?a.path:a.path.startsWith("generatedDocuments/assets/")?g.join(u(b),a.path.replace(/^generatedDocuments\/assets\//u,"assets/")):g.join(b,"knowledgeBase",a.path):null}function z(a,b){try{return JSON.parse(e.readFileSync(a,"utf8"))}catch{return b}}function A(a,b){e.mkdirSync(g.dirname(a),{recursive:!0}),e.writeFileSync(a,JSON.stringify(b,null,2))}function B(a){for(let b of s.values())if(b.documentId===a)return b;return null}function C(a,b=(0,l.aY)()){if("generating"!==a.status||B(a.id)||Date.now()-a.updatedAt<t)return a;let c="生成任务已中断,请点击继续生成或重新生成",d=a.checkpointChapters?.length?"warning":"failed",e={...a,title:p(a),status:d,error:a.error||c,executionStages:o(a.executionStages,c),completedAt:Date.now(),warningIssues:a.checkpointChapters?.length?[...a.warningIssues||[],c]:a.warningIssues};return a.taskId&&T(b,{taskId:a.taskId,title:`生成 ${e.title}`,status:"warning"===d?"warning":"error",percent:100,message:c,stages:e.executionStages,error:c}),e}function D(a=(0,l.aY)()){return z(v(a),[]).map(b=>{if("generating"!==b.status)return b;let c=z(x(b.id,a),null);if(!c)return b;let d=C(c,a);return d!==c?Q(F(d,a,{preserveUpdatedAt:!0})):Q(c)}).sort((a,b)=>(b.createdAt||b.updatedAt)-(a.createdAt||a.updatedAt))}function E(a,b=(0,l.aY)()){let c=z(x(a,b),null);if(!c)return null;let d=C(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=L(a,b);return d?F({...a,assets:[d,...(a.assets||[]).filter(a=>a.id!==d.id)]},b):a}(d!==c?F(d,b,{preserveUpdatedAt:!0}):d,b)}function F(a,b=(0,l.aY)(),c){let d=Date.now(),e=R({...a,updatedAt:c?.preserveUpdatedAt?a.updatedAt:d});A(x(e.id,b),e);let f=z(v(b),[]).filter(a=>a.id!==e.id);return f.unshift(Q(e)),A(v(b),f),e}function G(a,b,c=(0,l.aY)()){let d=E(a,c);return d?F({...d,...b,id:a},c):null}function H(a,b=(0,l.aY)()){let c=E(a,b);if(!c)return null;if("generating"!==c.status)return c;for(let[b,c]of s)c.documentId===a&&(c.status="aborted",c.controller.abort(),s.delete(b));let d="用户中止",e=o(c.executionStages,d),f=F({...c,status:"aborted",error:d,executionStages:e,completedAt:Date.now()},b);return f.taskId&&T(b,{taskId:f.taskId,title:`生成 ${f.title}`,status:"warning",percent:100,message:d,stages:e,error:d}),f}function I(a,b=(0,l.aY)()){try{e.rmSync(x(a,b),{force:!0})}catch{console.warn("[generated-documents] 删除文档记录失败或文件不存在",a)}let c=z(v(b),[]).filter(b=>b.id!==a);A(v(b),c)}function J(a=(0,l.aY)()){return z(w(a),[]).sort((a,b)=>b.updatedAt-a.updatedAt)}function K(a,b,c=(0,l.aY)()){let d=Date.now(),e=[...J(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 A(w(c),e),e}function L(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(u(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 K([h],a.id,b).find(a=>a.id===h.id)||null}function M(a,b=(0,l.aY)()){return J(b).find(b=>b.id===a)||null}function N(a,b=(0,l.aY)()){let c=M(a,b);if(!c)return!1;let d=y(c,b);if(d&&d.startsWith(u(b)))try{e.rmSync(d,{force:!0})}catch{console.warn("[generated-documents] 删除生成资源文件失败或文件不存在",d)}return A(w(b),J(b).filter(b=>b.id!==a)),!0}function O(a,b,c=(0,l.aY)()){let d=M(a,c);if(!d)return null;let f=y(d,c);return f&&e.existsSync(f)?"directory"===b?g.dirname(f):f:null}function P(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 Q(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 R(a){let b=a.draft?{...a.draft,chapters:a.draft.chapters?.map(P),checkpointChapters:a.draft.checkpointChapters?.map(P)}:a.draft;return{...a,draft:b,checkpointChapters:a.checkpointChapters?.map(P)}}function S(a,b){let c=E(a.documentId,b);return c&&"generating"===c.status?{taskId:a.id,documentId:a.documentId,record:c}:null}function T(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 U(a,b=(0,l.aY)()){let c=g.resolve(b),e=(0,k.computeProjectId)(c),f=Date.now(),n=a.resumeDocumentId?E(a.resumeDocumentId,c):null;if(n){let a=B(n.id),b=a?S(a,c):null;if(b)return b}if(!n)for(let b of s.values()){let d=S(b,c);if(d&&d.record.templateId===a.templateId&&d.record.projectRoot===c)return d}let t=n?.id||`doc-${f}-${d.randomBytes(4).toString("hex")}`,u=`task-${f}-${d.randomBytes(4).toString("hex")}`,v=n?{...n,taskId:u,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:t,taskId:u,templateId:a.templateId,templateVersion:(0,h.QJx)(a.templateId)?.version,title:"生成中",requirement:a.requirement||"",maxEvidencePerChapter:a.maxEvidencePerChapter,projectRoot:c,projectId:e,knowledgeBasePath:g.join(c,"knowledgeBase"),markdown:"",status:"generating",assets:[],createdAt:f,updatedAt:f};F(v,c),T(c,{taskId:u,title:`生成 ${v.title}`,status:"processing",percent:1,message:"文档生成任务已进入后台队列",stages:v.executionStages});let w=new AbortController,x={},y=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),z=0,A="",C=Math.max(1e3,Math.min(15e3,Number(process.env.DOCUMENT_PROGRESS_SAVE_INTERVAL_MS??5e3))),D=(0,h.OXS)({...a,projectRoot:c,resumeChapters:y,signal:w.signal,onProgress:(a,b)=>{try{x.current&&(x.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===A&&d-z<C)return;let f=E(t,c);if(f&&"generating"===f.status){let g=b?.chapters?q(f.checkpointChapters,b.chapters).map(P):f.checkpointChapters,h=g?.length?g.map(a=>`# ${a.title}
2
2
 
3
3
  ${a.content}`).join("\n\n"):f.markdown,i=F(R({...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];T(c,{taskId:u,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}),z=d,A=e,console.log(`[gen] progress saved: ${a.length} stages, checkpoint=${g?.length||0}, doc=${t}`)}}catch(a){console.error("[gen] progress save error:",a)}}}).then(async a=>{x.current&&(x.current.lastProgressAt=Date.now());let b=E(t,c);if(!b||"generating"!==b.status)return b??v;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=R({...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=L(l,c),n=F({...l,assets:m?[m,...(l.assets||[]).filter(a=>a.id!==m.id)]:l.assets},c);return K(a.assets||[],t,c),T(c,{taskId:u,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=E(t,c);if(!b||"generating"!==b.status)return b??v;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