@customize-agent/server 4.21.0 → 4.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/build-manifest.json +2 -2
- package/.next/prerender-manifest.json +3 -3
- package/.next/server/chunks/1001.js +2 -2
- package/.next/server/chunks/208.js +20 -15
- package/.next/server/chunks/4931.js +122 -0
- package/.next/server/chunks/5284.js +8 -8
- package/.next/server/chunks/{6482.js → 8163.js} +16 -14
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/pages/api/assets/generated/preview.js +1 -1
- package/.next/server/pages/api/assets/generated/preview.js.nft.json +1 -1
- package/.next/server/pages/api/assets/generated.js +1 -1
- package/.next/server/pages/api/assets/generated.js.nft.json +1 -1
- package/.next/server/pages/api/documents/chapter/regenerate.js +1 -1
- package/.next/server/pages/api/documents/chapter/regenerate.js.nft.json +1 -1
- package/.next/server/pages/api/documents/export.js +1 -1
- package/.next/server/pages/api/documents/export.js.nft.json +1 -1
- package/.next/server/pages/api/documents/generate.js +2 -2
- package/.next/server/pages/api/documents/generate.js.nft.json +1 -1
- package/.next/server/pages/api/documents/generated/[id].js +1 -1
- package/.next/server/pages/api/documents/generated/[id].js.nft.json +1 -1
- package/.next/server/pages/api/documents/generated.js +1 -1
- package/.next/server/pages/api/documents/generated.js.nft.json +1 -1
- package/.next/server/pages/api/documents/refine.js +3 -3
- package/.next/server/pages/api/documents/templates.js +1 -1
- package/.next/server/pages/api/documents/templates.js.nft.json +1 -1
- package/.next/server/pages/api/kb/files/reindex.js +1 -1
- package/.next/server/pages/api/kb/files/reindex.js.nft.json +1 -1
- package/.next/server/pages/api/kb/intelligence.js +1 -1
- package/.next/server/pages/api/kb/intelligence.js.nft.json +1 -1
- package/.next/server/pages/api/kb/reindex.js +1 -1
- package/.next/server/pages/api/kb/reindex.js.nft.json +1 -1
- package/.next/server/pages/api/kb/upload/complete.js +1 -1
- package/.next/server/pages/api/kb/upload/complete.js.nft.json +1 -1
- package/.next/server/pages/api/kb/upload.js +1 -1
- package/.next/server/pages/api/kb/upload.js.nft.json +1 -1
- package/.next/server/pages/api/prompt.js.nft.json +1 -1
- package/.next/server/pages/api/template-references.js.nft.json +1 -1
- package/.next/server/pages/asset-library.html +1 -1
- package/.next/server/pages/document-roles.html +1 -1
- package/.next/server/pages/documents.html +1 -1
- package/.next/server/pages/guide.html +1 -1
- package/.next/server/pages/index.html +1 -1
- package/.next/server/pages/knowledge/file-detail.html +1 -1
- package/.next/server/pages/knowledge/files.html +1 -1
- package/.next/server/pages/knowledge/manage.html +1 -1
- package/.next/server/pages/knowledge.html +1 -1
- package/.next/server/pages/models.html +1 -1
- package/.next/server/pages/overview.html +1 -1
- package/.next/server/pages/prompt.html +1 -1
- package/.next/server/pages/settings.html +1 -1
- package/.next/server/pages/system/logs.html +1 -1
- package/.next/server/pages/template-references.html +1 -1
- package/.next/server/pages-manifest.json +23 -23
- package/package.json +1 -1
- package/.next/server/chunks/7637.js +0 -113
- /package/.next/static/{OUzISwRdzAOct4IAeSmGD → lJZK36GtouvfEzNXSjKJt}/_buildManifest.js +0 -0
- /package/.next/static/{OUzISwRdzAOct4IAeSmGD → lJZK36GtouvfEzNXSjKJt}/_ssgManifest.js +0 -0
package/.next/BUILD_ID
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
lJZK36GtouvfEzNXSjKJt
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
"devFiles": [],
|
|
6
6
|
"ampDevFiles": [],
|
|
7
7
|
"lowPriorityFiles": [
|
|
8
|
-
"static/
|
|
9
|
-
"static/
|
|
8
|
+
"static/lJZK36GtouvfEzNXSjKJt/_buildManifest.js",
|
|
9
|
+
"static/lJZK36GtouvfEzNXSjKJt/_ssgManifest.js"
|
|
10
10
|
],
|
|
11
11
|
"rootMainFiles": [],
|
|
12
12
|
"rootMainFilesTree": {},
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
"routes": {},
|
|
4
4
|
"dynamicRoutes": {},
|
|
5
5
|
"preview": {
|
|
6
|
-
"previewModeId": "
|
|
7
|
-
"previewModeSigningKey": "
|
|
8
|
-
"previewModeEncryptionKey": "
|
|
6
|
+
"previewModeId": "82d07f6160d8448065d96fe65be55a7b",
|
|
7
|
+
"previewModeSigningKey": "977a8868243b57daeda5423e2fc54a81b196d9b1766608ed92179fda35ac57bd",
|
|
8
|
+
"previewModeEncryptionKey": "c8e4330058598ab504aa9360e72972c469b8683145de3873127f6e2252bdd47e"
|
|
9
9
|
},
|
|
10
10
|
"notFoundRoutes": []
|
|
11
11
|
}
|
|
@@ -4,8 +4,8 @@ ${a.content}`).join("\n").slice(0,3e4).match(/\d+(?:\.\d+)?\s*(?:mm|cm|m|km|㎡|
|
|
|
4
4
|
${a.projectContext}`:"",a.projectGraphSummary?`本项目专业工程与资源图谱:
|
|
5
5
|
${a.projectGraphSummary}`:"",a.roleContext,a.promptTexts?`配置写作主控提示词:
|
|
6
6
|
${a.promptTexts}`:"",l.length?`系统已从提示词解析出本章强制二级小节,必须按此顺序置于本章小节最前,不得删除、改名或重排:${l.join("、")}`:"",h?`真实绑定资料:
|
|
7
|
-
${h}`:"",`请输出 ${p}-${q} 个适合直接成稿的二级小节标题。标题必须具体、业务相关、能承载真实资料;每个标题控制在 16 个汉字以内,避免多个小节表达同一内容。核心章节不得只输出"总体部署与责任分工、实施流程与关键控制"两个泛化小节。`,b,'JSON 格式:{"sections":["小节标题1","小节标题2"]}'].filter(Boolean).join("\n\n"),{maxTokens:1600,temperature
|
|
7
|
+
${h}`:"",`请输出 ${p}-${q} 个适合直接成稿的二级小节标题。标题必须具体、业务相关、能承载真实资料;每个标题控制在 16 个汉字以内,避免多个小节表达同一内容。核心章节不得只输出"总体部署与责任分工、实施流程与关键控制"两个泛化小节。`,b,'JSON 格式:{"sections":["小节标题1","小节标题2"]}'].filter(Boolean).join("\n\n"),{maxTokens:1600,temperature:0,signal:a.signal,diagnostics:a.diagnostics}),f=Array.from(new Set(function(a){let b=k(a),c=[],d=/体系|措施|管理|保障|方案|要求|计划|控制|配置/u,e=a=>{let b=/^(.*?)([^与和及、,,;;]+(?:[与和及][^与和及、,,;;]+)+)(的.+)$/u.exec(a);if(!b)return!1;let d=b[1]||"",e=b[3]||"";for(let a of b[2].split(/[与和及]/u))c.push(k(`${d}${a}${e}`));return!0},f=a=>{let b=a.split(/[、,,]/u).map(k).filter(Boolean);if(b.length>1&&b.every(a=>a.length>=4&&d.test(a))){for(let a of b)e(a)||c.push(a);return!0}let f=/^(.*?)([^、,,;;]+(?:[、,,][^、,,;;]+)+)(的.+)$/u.exec(a);if(!f)return!1;let g=f[1]||"",h=f[3]||"";for(let a of f[2].split(/[、,,]/u))c.push(k(`${g}${a}${h}`));return!0};for(let a of b.split(/[;;]/u)){if(f(a)||e(a))continue;let d=k(a);d&&d!==b&&c.push(d)}return Array.from(new Set(c)).filter(c=>c.length>=4&&c.length<=60&&c!==b&&!m(c,a))}(a.chapter.title)));for(let b of(d?.sections||[]).map(a=>i(k(a))).filter(b=>!m(b,a.chapter.title)))f.some(a=>a.includes(b)||b.includes(a))||f.push(b);for(let b of[...[a.chapter.title,...a.chapter.requiredFacts||[],...a.chapter.queries||[]].flatMap(a=>String(a||"").split(/[;;。\n]/u)).map(k).filter(b=>!m(b,a.chapter.title)),...(c=a.chapter.title,/编制说明|工程概况|项目概况/u.test(c)?["编制依据","工程概况","工程特点与重难点分析","施工部署与总体安排","施工准备与资源投入"]:/质量/u.test(c)?["质量目标与质量管理体系","关键工序质量控制措施","材料设备进场验收与检验","质量检查试验与验收程序","质量通病防治与整改闭环","成品保护与资料管理"]:/安全/u.test(c)?["安全生产管理体系","危险源辨识与分级管控","现场安全防护措施","临时用电与机械设备安全管理","应急处置与安全检查整改","安全教育培训与交底"]:/工期|进度/u.test(c)?["总工期目标与节点安排","施工进度计划编制原则","关键线路与工序穿插安排","资源投入与工期保障措施","进度偏差纠偏与动态调整","工期风险识别与应对措施"]:/物资|材料/u.test(c)?["主要材料设备需求分析","材料采购与进场计划","材料验收复试与保管","周转材料配置与使用管理","材料供应风险与保障措施"]:/机械|设备/u.test(c)?["主要机械设备配置原则","机械设备进退场计划","机械设备调度与运行管理","机械设备维护保养与安全检查","关键设备保障措施"]:/劳动力/u.test(c)?["劳动力配置原则","各阶段劳动力投入计划","专业工种与特种作业人员配置","劳动力动态调配措施","劳务管理与教育交底"]:/文明|环保/u.test(c)?["现场封闭与场容场貌管理","环境保护与污染防治措施","材料设备定置化管理","职业健康与消防文明管理","文明施工检查与整改"]:/总平面|平面布置/u.test(c)?["施工总平面布置原则","临时道路与材料堆场布置","临时用水用电及排水布置","办公生活与加工区域布置","总平面动态调整与管理"]:/危大|专项/u.test(c)?["危大工程识别与清单管理","专项施工方案编制与审批","专家论证与技术交底","现场实施监测与旁站管理","应急处置与验收销项"]:/施工方法|施工方案|主要/u.test(c)?["总体施工部署与流程安排","主要分部分项施工方法","关键工序技术控制要点","资源配置与穿插组织","质量安全与成品保护措施"]:["总体部署与责任分工","实施流程与关键控制","资源配置与资料依据","质量安全与风险控制","检查验收与闭环管理","资料记录与成果移交"]).filter(b=>!m(b,a.chapter.title))]){if(f.length>=p)break;f.some(a=>a.includes(b)||b.includes(a))||f.push(b)}return(function(a,b,c){let d=z(c.flatMap(a=>a.requiredSections).sort((a,b)=>(a.order||0)-(b.order||0)).map(a=>a.title),b);for(let c of z(a,b))d.some(a=>n(a,c))||d.push(c);return d})(o(f),a.chapter.title,j).slice(0,Math.max(q,l.length))},t=await s("");if(!r)return t;let u=t.findIndex(a=>/编制说明与工程概况|工程概况|项目概况/u.test(a));if(u<=0)return t;let v=await s(`上一轮规划位置错误:小节"${t[u]}"必须是本章小节清单的第一位(第一章首节),不得排在"${t.slice(0,u).join("、")}"等小节之后;请重新输出完整小节清单,将该项置于第一位,其余小节顺序可保持不变。`),w=v.findIndex(a=>/编制说明与工程概况|工程概况|项目概况/u.test(a));return w>0&&console.error(`[plan] 章节小节顺序核验未通过(重规划后"${v[w]}"仍不在首位):${a.chapter.title},保留 LLM 规划顺序交由下游审校处理`),v}async function B(a){let b=[...a.chapter.sections||[]];if(b.length>=a.maxTotalSections)return[];let c=(0,d.ks)((0,d.QO)(a.chapter,a.evidence),{maxChars:5e3,diagnostics:a.diagnostics});try{let d=await (0,e.bb)([(0,g.y4)("你是专业文档结构规划专家。"),"只根据用户提示词、章节标题、已有小节清单和真实绑定资料,补规划本章缺失的专业工作面小节;不得修改、删除或重命名已有小节。\n不得使用“目标与范围、资料依据、实施内容、质量控制”等通用占位小节凑数;不得把提示词条件句或短语碎片作为小节标题。\n每个新增小节必须在 basis 中说明其展开素材来源(来自绑定资料/工程图谱/通用施工工艺),basis 为空的小节会被丢弃。\n只返回 JSON。"].join("\n"),[`文档模板:${a.template.name}`,`章节标题:${a.chapter.title}`,a.chapter.purpose&&!m(a.chapter.purpose,a.chapter.title)?`章节目的:${a.chapter.purpose}`:"",a.requirement?`用户要求:${a.requirement}`:"",a.projectContext?`上下文:
|
|
8
8
|
${a.projectContext}`:"",a.projectGraphSummary?`本项目专业工程与资源图谱:
|
|
9
9
|
${a.projectGraphSummary}`:"",a.roleContext,a.promptTexts?`配置写作主控提示词:
|
|
10
10
|
${a.promptTexts}`:"",c?`真实绑定资料:
|
|
11
|
-
${c}`:"",`本章已有小节(结构锁定,不可修改):${b.join("、")}`,"请输出 0-3 个本章缺失的专业工作面小节标题;无缺失时返回空数组。",'JSON 格式:{"sections":[{"title":"小节标题","basis":"展开素材来源说明"}]}'].filter(Boolean).join("\n\n"),{maxTokens:1200,temperature
|
|
11
|
+
${c}`:"",`本章已有小节(结构锁定,不可修改):${b.join("、")}`,"请输出 0-3 个本章缺失的专业工作面小节标题;无缺失时返回空数组。",'JSON 格式:{"sections":[{"title":"小节标题","basis":"展开素材来源说明"}]}'].filter(Boolean).join("\n\n"),{maxTokens:1200,temperature:0,signal:a.signal,diagnostics:a.diagnostics}),f=[];for(let c of d?.sections||[]){let d=i(k(String(c?.title||""))),e=String(c?.basis||"").trim();!d||e.length<4||m(d,a.chapter.title)||b.some(a=>a.includes(d)||d.includes(a))||f.some(a=>a.includes(d)||d.includes(a))||o([...b,...f,d]).length===[...b,...f,d].length&&f.push(d)}return f.slice(0,Math.min(3,a.maxTotalSections-b.length))}catch(b){return console.error(`[plan] 专业小节补规划失败(回退模板锁定结构):${a.chapter.title},${b instanceof Error?b.message:String(b)}`),[]}}function C(a){let b=v({promptTexts:a});return{recognized:b.executionSummary.length>0,summary:b.executionSummary,requiredTables:b.requiredTables,requiredKeywords:b.requiredKeywords||[],forbiddenPatterns:b.forbiddenPatterns||[],exactHeadings:b.exactHeadings||[],minWords:b.minWords,coverPolicy:b.coverPolicy||"unspecified",tocPolicy:b.tocPolicy||"unspecified"}}function D(a){let b=[],c=a.map(a=>({prompt:a,rules:v({promptTexts:a.content})})).filter(a=>a.rules.executionSummary.length>0);if(c.length<2)return b;for(let a=0;a<c.length;a++)for(let d=a+1;d<c.length;d++){let e=c[a],f=c[d],g=`${e.prompt.name}(${e.prompt.roleId})`,h=`${f.prompt.name}(${f.prompt.roleId})`,i=[];for(let a of e.rules.requiredKeywords||[])for(let b of[...f.rules.forbiddenTerms||[],...f.rules.forbiddenPatterns||[]])(a.includes(b)||b.includes(a))&&i.push(`「${a}」被要求必含(${g})但被禁止(${h}:${b})`);for(let a of f.rules.requiredKeywords||[])for(let b of[...e.rules.forbiddenTerms||[],...e.rules.forbiddenPatterns||[]])(a.includes(b)||b.includes(a))&&i.push(`「${a}」被要求必含(${h})但被禁止(${g}:${b})`);for(let a of[...new Set(i)].slice(0,4))b.push({level:"warning",message:a});let j=e.rules.exactHeadings||[],k=f.rules.exactHeadings||[];if(j.length>0&&k.length>0){let a=new Set(k),c=new Set(j),d=[...new Set([...j.filter(b=>!a.has(b)),...k.filter(a=>!c.has(a))])];d.length>0&&b.push({level:"warning",message:`固定一级章节列表不一致:${g} 要求 ${j.length} 章,${h} 要求 ${k.length} 章(差异:${d.slice(0,3).join("、")})。生成时将合并去重。`})}for(let a of["coverPolicy","tocPolicy"]){let c=e.rules[a],d=f.rules[a];c&&d&&"unspecified"!==c&&"unspecified"!==d&&c!==d&&b.push({level:"warning",message:`${"coverPolicy"===a?"封面":"目录"}策略冲突:${g} 要求「${"required"===c?"生成":"禁止"}」,${h} 要求「${"required"===d?"生成":"禁止"}」。生成时以禁止优先。`})}e.rules.minWords&&f.rules.minWords&&e.rules.minWords!==f.rules.minWords&&b.push({level:"warning",message:`最低字数要求不一致:${g} ${e.rules.minWords} 字 vs ${h} ${f.rules.minWords} 字。生成时将取最大值 ${Math.max(e.rules.minWords,f.rules.minWords)} 字。`})}return b}}};
|
|
@@ -17,7 +17,7 @@ ${c}`,{maxTokens:1200,temperature:0,disableThinkingBoost:!0});if(!d)return;retur
|
|
|
17
17
|
章节内容建议:${a.chapterRules.map(a=>`${a.title}${a.generationHint?`:${a.generationHint.replace(/\s+/gu," ")}`:""}`).join(";")||"以当前模板章节为准"}
|
|
18
18
|
质量提醒:${a.gateRules.map(a=>a.name).join("、")}`}},14070:(a,b,c)=>{function d(a){let b=a.split(/[,。;:、\s\d()()《》<>【】"“”'‘’\-/\\|,.:;]+/u).filter(Boolean),c=new Set;for(let a of b){let b=a.trim();if(b.length>=2&&c.add(b),b.length>=3)for(let a=0;a<=b.length-2;a++){let d=b.slice(a,a+2);d.length>=2&&!/^[a-zA-Z0-9]+$/u.test(d)&&c.add(d)}}return[...c]}function e(a,b,c=.3){return function(a,b){let c=new Set(d(a)),e=new Set(d(b));if(0===c.size||0===e.size)return 0;let f=0;for(let a of c)if(e.has(a))f+=1;else if(a.length>=2){for(let b of e)if(b.length>=2&&(b.includes(a)||a.includes(b))){f+=.5;break}}return f/Math.max(c.size,1)}(a,b)>=c}c.d(b,{C1:()=>e})},18274:(a,b,c)=>{c.d(b,{AM:()=>e,LT:()=>i,_W:()=>d,aX:()=>h,s2:()=>j,sv:()=>f,yw:()=>g});let d=/(?:\b[A-Z]{1,8}[\w./-]*\d[\w./-]*\b|\b\d+(?:\.\d+)?\s*(?:mm|cm|m|km|㎡|m²|m3|m³|kg|g|t|L|ml|MPa|kPa|℃|%|台|套|个|项|批|次|份|人|小时|分钟|日历天|天|周|月|年|万元|元)\b|\b\d+\s*[×xX]\s*\d+(?:\s*[×xX]\s*\d+)?\b|\b(?:GB|GB\/T|ISO|IEC|IEEE|RFC|API|DB\d*|T\/[A-Z]+)\s*[\w.-]+\b)/giu,e=/\d+(?:\.\d+)?\s*(?:mm|cm|m|km|㎡|m²|m3|m³|kg|g|t|L|ml|MPa|kPa|℃|%|台|套|个|项|批|次|份|人|小时|分钟|日历天|天|周|月|年)|DN\s*\d+|φ\s*\d+|Φ\s*\d+|GB\s*\d+|JGJ\s*\d+/iu,f=/\d|DN|φ|Φ|mm|cm|m²|m3|m³|MPa|kPa|℃|%|GB|JGJ|ISO|IEC|台|套|个|项|批|次|份|人|㎡|日历天|万元|元|型号|规格|数量|单位/iu,g=/\d+(?:\.\d+)?\s*(?:mm|cm|m|km|㎡|m²|m3|m³|kg|g|t|L|ml|MPa|kPa|℃|%|台|套|个|项|批|次|份|人|小时|分钟|日历天|天|周|月|年)|DN\s*\d+|Φ\s*\d+|φ\s*\d+|C\d{2,}|HRB\d+|GB\/?T?\s*[\w.-]+|JGJ\s*[\w.-]+|\d+\s*[×xX]\s*\d+/iu,h=/\d+(?:\.\d+)?\s*(?:m³|m3|m²|㎡|mm|cm|m\/s|m|km|MPa|kN|kN\/m²|kPa|℃|%|d|h|min|MΩ|t|次\/天)|[MC]\d{1,3}(?:\.\d+)?|[<>≤≥]\s*\d+(?:\.\d+)?\s*(?:mm|MPa|%|d)|间距[≤<]?\s*\d+|偏差[≤<]?\s*\d+|坡度\s*\d+(?:\.\d+)?(?::\d+|%)|压实度\s*[≥>]?\s*\d+|坍落度|闭水试验|静载试验|拉拔试验|拉拔检测|探伤|试验压力|锚固长度|搭接长度|保护层厚度|养护时间|饱满度|垂直度|平整度|含水率|(?:防护挑网|安全网|防护网|围挡|警戒(?:区|线|距离)|防护栏杆).{0,12}(?:宽度|高度|距离|范围)[^,。;;]{0,8}\d+(?:\.\d+)?\s*m|(?:宽度|高度|距离|范围)[^,。;;]{0,8}\d+(?:\.\d+)?\s*m.{0,12}(?:防护挑网|安全网|防护网|围挡|警戒|防护栏杆)/giu,i=/\d[A-Z][A-Z0-9a-z]*\b|[A-Z]{1,2}\d{2,3}\b|\d+(?:\.\d+)?\s*(?:kW|kVA|KVA|KW)\b|IP\d{2}/gu,j=/\d+(?:\.\d+)?\s*(?:m²|㎡|m3|m³|mm|cm|m|km|kg|t|MPa|kPa|℃|%|日历天|天|层|台|套|个|项|次|份|人|小时)/giu},22157:(a,b,c)=>{c.d(b,{Jb:()=>i,Kd:()=>E,Sw:()=>k,TP:()=>D,Te:()=>C,V:()=>f,W6:()=>m,Ww:()=>z,Xl:()=>u,Z1:()=>g,_R:()=>j,c6:()=>A,dY:()=>p,hh:()=>F,jM:()=>t,jf:()=>I,l$:()=>H,lG:()=>B,lX:()=>G,se:()=>h,wq:()=>n,wx:()=>o});var d=c(77598),e=c(78217);let f=/项目主要施工内容|主要分部分项工程施工方案|主要施工方法/u;function g(a){return!!a&&!!(/→|->|=>/u.test(a)||/按.{0,12}顺序|依次|先后|先.{0,12}(?:后|再|然后|最后)|顺序施工|流水顺序/u.test(a)||(a.match(/(?:^|\n)\s*(?:\d+[.、]|[((]\d+[))]|[一二三四五六七八九十]+[、.]|第[一二三四五六七八九十]+步)/gmu)||[]).length>=2||(a.match(/(?:^|\n)\s*(?:[-*•]|\d+\.)\s+\S/gmu)||[]).length>=2||/[\u4e00-\u9fa5]+(?:-|—|~|~)[\u4e00-\u9fa5]+(?:-|—|~|~)[\u4e00-\u9fa5]+/u.test(a))}function h(a){let b=/(?:施工)?(?:概况|范围)[::]\s*\S|工程量|作业对象|部位/u.test(a);return{scope:b,process:/(?:施工)?(?:流程|工序|顺序)[::]\s*\S/u.test(a)||g(a),method:/(?:施工)?方法[::]\s*\S|工艺参数|验收标准|检测|试验|记录/u.test(a)}}function i(a){let b=h(a);return b.scope&&b.process&&b.method}function j(a){return i(a)}function k(a){return a.replace(/^\d+(?:\.\d+)*[..]?\s*/u,"").replace(/[((][^()()]*[))]/gu,"").replace(/[\s::、。,,;;/|—-]/gu,"").replace(/工程$/u,"")}function l(a,b){return a.replace(/工程/gu,"")===b.replace(/工程/gu,"")}function m(a){let b=a.split(/\r?\n/u),c="",d=new Map,e=[];for(let a of b){let b=/^(#{2,6})\s+(.+)$/u.exec(a.trim());if(!b)continue;let f=b[1].length;if(2===f){c="";continue}if(3===f){c=b[2].trim();continue}if(4!==f)continue;let g=`${c}::${k(b[2].trim())}`;if(!g)continue;let h=(d.get(g)||0)+1;d.set(g,h),h>=2&&e.push(b[2].trim())}return e}function n(a){let b=a.split(/\r?\n/u),c=[],d="",e=new Set,f=!1;for(let a of b){let b=/^(#{2,6})\s+(.+)$/u.exec(a.trim());if(b){let g=b[1].length;if(g<=3&&(d=3===g?b[2].trim():"",e.clear()),f=!1,4===g){let g=`${d}::${k(b[2].trim())}`;if(!g){c.push(a);continue}if(e.has(g)){f=!0;continue}e.add(g)}c.push(a);continue}f||c.push(a)}return c.join("\n")}function o(a,b,c,d,e=[]){let f=k(b),g=new Set(c.map(k).filter(Boolean)),h=new Set(d.map(k).filter(Boolean)),i=new Set(e.map(k).filter(Boolean)),j=[];for(let b of a.split(/\r?\n/u)){let a=/^(#{3,4})\s+(.+)$/u.exec(b.trim());if(!a)continue;let c=a[2].trim(),d=k(c);if(d){if(3===a[1].length){d===f||l(d,f)||j.push(c);continue}!h.has(d)&&(g.has(d)||i.has(d))||j.push(c)}}return j}function p(a,b,c,d=[]){let e=k(b),f=new Set(c.map(k).filter(Boolean)),g=new Set(d.map(k).filter(Boolean)),h=[];for(let b of a.split(/\r?\n/u)){let a=/^(#{3,4})\s+(.+)$/u.exec(b.trim());if(a){let c=k(a[2].trim());if(3===a[1].length){(c===e||l(c,e))&&h.push(b);continue}if(c&&!f.has(c)&&!g.has(c))continue}h.push(b)}let i=h.join("\n");return/^###\s+\S+/mu.test(i.trim())?i:`### ${b}
|
|
19
19
|
|
|
20
|
-
${i}`.trim()}let q=new Set(["施工准备","施工要点","质量控制","质量要求","质量保证措施","质量控制措施","质量通病防治","安全措施","安全要求","安全管理措施","安全技术交底","技术交底","注意事项","验收要求","验收标准","成品保护","环境保护","文明施工","进度控制","工期保障","材料管理","机械管理","人员管理","组织管理","应急预案","应急措施","劳动力配置","机械设备配置","施工概况","施工流程","施工方法"]),r=/^(?:\d+(?:\.\d+)*|[一二三四五六七八九十]+)[、..\s::-]/u,s=/主要分部分项工程施工方案|项目主要施工内容/u;function t(a){let b=a.split(/\r?\n/u),c=[];for(let a=0;a<b.length;a+=1)/^##\s+/u.test(b[a].trim())&&c.push(a);if(0===c.length)return a;let d=new Set;for(let a=0;a<c.length;a+=1){let e=c[a],f=c[a+1]??b.length,g=new Set,h=[],i="";for(let a=e;a<f;a+=1){let c=/^(#{3,4})\s+(.+)$/u.exec(b[a].trim());if(!c)continue;let d=c[2].trim(),e=k(d);e&&(3===c[1].length?(g.add(e),i=e):h.push({line:a,name:e,rawTitle:d,parentH3:i}))}let j=new Map;for(let a of h){let c=j.get(a.name);j.set(a.name,a.line);let e=r.test(a.rawTitle),h=s.test(a.parentH3),i=g.has(a.name)&&!e&&!h,k=q.has(a.name);if(!(i||!k&&void 0!==c))continue;let l=f;for(let c=a.line+1;c<f;c+=1)if(/^#{2,4}\s+/u.test(b[c].trim())){l=c;break}for(let b=a.line;b<l;b+=1)d.add(b)}}return 0===d.size?a:b.filter((a,b)=>!d.has(b)).join("\n")}function u(a,b,c={}){if(!c.fuzzy){let c=v(a,b,/^###\s+(?:\d+(?:\.\d+)*\s+)?/u);return c||v(a,b,/^#{3,4}\s+(?:\d+(?:\.\d+)*\s+)?/u)}return function(a,b){let c=a.split("\n"),d=w(b).replace(/\s+/gu,"").toLowerCase(),g=[],h=-1,i=0,j=!1,k=a=>{if(h<0)return;let b=c.slice(h,a).join("\n").trim();b&&g.push(b),h=-1,i=0,j=!1};for(let a=0;a<c.length;a+=1){if(!/^\s*#{2,4}\s+/u.test(c[a]))continue;let e=/^\s*(#{2,4})\s+/u.exec(c[a])?.[1].length||3;if(h>=0&&(j||3===i)&&4===e)continue;k(a);let g=w(c[a]).replace(/\s+/gu,"").toLowerCase();(g===d||g.includes(d)||y(c[a],b))&&(h=a+1,i=e,j=e<=4&&f.test(c[a]))}return k(c.length),g.sort((a,b)=>(0,e.V7)(b)-(0,e.V7)(a))[0]||""}(a,b)}function v(a,b,c){let d=a.split("\n"),e=d.findIndex(a=>c.test(a.trim())&&a.includes(b));if(e<0)return"";let g=/^(#{2,6})\s+/u.exec(d[e].trim())?.[1].length||3,h=4===g&&f.test(b),i=d.length;for(let a=e+1;a<d.length;a+=1){let b=/^(#{2,6})\s+/u.exec(d[a].trim());if(b&&b[1].length<=g&&!(h&&b[1].length===g)){i=a;break}}return d.slice(e,i).join("\n")}function w(a){return a.replace(/^\s*#{2,4}\s*/u,"").replace(/^\s*(?:\d+(?:\.\d+)*|[一二三四五六七八九十]+)(?:[、..]|\s+)\s*/u,"").trim()}function x(a){return w(a).replace(/\s+/gu,"").toLowerCase().replace(/施工(?=方案|流程|方法)/gu,"").replace(/专项(?=方案)/gu,"").replace(/项目|工程|主要|重点|技术/gu,"").replace(/[、,,;;·..//]+/gu,"").replace(/与|及|和|暨/gu,"")}function y(a,b){let c=x(a),d=x(b);return!!c&&!!d&&!(c.length<4)&&!(d.length<4)&&(c===d||c.includes(d)||d.includes(c))}function z(a,b,c){let d=[...new Set(b.filter(Boolean))];if(0===d.length)return a;let e=3===c?/^\s*###\s+/u:4===c?/^\s*####\s+/u:/^\s*#{3,4}\s+/u,f=new Set;return a.split("\n").map(a=>{if(!e.test(a))return a;let b=w(a);if(!b)return a;let c=d.find(a=>!f.has(a)&&y(b,a));if(!c||c===b)return a;let g=/^(\s*#{3,4}\s+)/u.exec(a)?.[1];return g?(f.add(c),`${g}${c}`):a}).join("\n")}function A(a){return(0,d.createHash)("sha1").update(JSON.stringify(a)).digest("hex")}function B(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 C(a){if(a?.aborted)throw Error("用户中止")}function D(a){return`【系统约束——仅指导写作,禁止写入正文,禁止复述本句】${a}`}let E=["评标纪律","投标纪律","行贿","打招呼","递条子","廉洁承诺","廉洁自律","串标","围标","弄虚作假","干扰评标","异常低价","评标基准价"];function F(a){return!!(E.some(b=>a.includes(b))||a.includes("廉洁从业"))||/纪律|廉洁/u.test(a)&&/投标|评标|行贿|串标|围标|弄虚作假/u.test(a)}function G(a){return a.filter(a=>!F(`${a.key||""} ${String(a.value)}`))}async function H(a,b,c){if(0===a.length)return[];let d=Math.max(1,Math.min(a.length,c.concurrency||Math.max(1,{total:a.length,kind:c.kind,targetWords:c.targetWords,highRisk:c.highRisk}.total))),e=Array(a.length),f=0;return await Promise.all(Array.from({length:d},async()=>{for(;f<a.length;){let c=f;f+=1,e[c]=await b(a[c],c)}})),e}class I{constructor(a){this.queue=[],this.available=Math.max(1,Math.floor(a))}async acquire(){if(this.available>0){this.available-=1;return}await new Promise(a=>{this.queue.push(a)})}release(){let a=this.queue.shift();a?a():this.available+=1}async run(a){await this.acquire();try{return await a()}finally{this.release()}}}},23500:(a,b,c)=>{c.d(b,{bj:()=>C,N6:()=>O,h0:()=>K,bV:()=>L,QJ:()=>E,jG:()=>D,dU:()=>B,Bh:()=>F,zY:()=>R,xm:()=>G,J5:()=>J,C1:()=>N});var d=c(73024),e=c(76760),f=c(48161),g=c(77598),h=c(44533),i=c(25840),j=c(8753),k=c(6444),l=c(85441),m=c(92808),n=c(56942),o=c(2773),p=c(78217),q=c(80572),r=c(5726);function s(){let a=e.join(f.homedir(),".customize-agent");return d.mkdirSync(a,{recursive:!0}),a}function t(){return e.join(s(),"document-templates.json")}function u(a){let{version:b,updatedAt:c,changeLog:d,...e}=a;return(0,g.createHash)("sha256").update(function a(b){return Array.isArray(b)?`[${b.map(a).join(",")}]`:b&&"object"==typeof b?`{${Object.keys(b).sort().map(c=>`${JSON.stringify(c)}:${a(b[c])}`).join(",")}}`:JSON.stringify(b)}(e)).digest("hex")}function v(a){return{...a,id:a.id.replace(/[^a-zA-Z0-9_-]/gu,"-").slice(0,80)||`template-${Date.now()}`,name:a.name||"未命名模板",description:a.description||"",category:a.category||"自定义",outputTitle:a.outputTitle||a.name||"文档",version:Number.isFinite(a.version)&&a.version>0?Math.floor(a.version):1,updatedAt:Number.isFinite(a.updatedAt)?a.updatedAt:Date.now(),changeLog:Array.isArray(a.changeLog)?a.changeLog.filter(a=>a&&"object"==typeof a&&Number.isFinite(a.version)&&"string"==typeof a.summary).slice(0,50):[],projectRoleConfigId:a.projectRoleConfigId||void 0,chapters:Array.isArray(a.chapters)&&a.chapters.length>0?a.chapters.map((a,b)=>({id:(a.id||`chapter-${b+1}`).replace(/[^a-zA-Z0-9_-]/gu,"-").slice(0,80),title:a.title||`第 ${b+1} 章`,purpose:a.purpose||"",queries:Array.isArray(a.queries)?a.queries.filter(Boolean):[],requiredFacts:Array.isArray(a.requiredFacts)?a.requiredFacts.filter(Boolean):[],sections:Array.isArray(a.sections)?a.sections.filter(Boolean):[],tableSections:Array.isArray(a.tableSections)?a.tableSections.filter(Boolean):[],tableRequirements:Array.isArray(a.tableRequirements)?a.tableRequirements.filter(Boolean):[],tablePlans:Array.isArray(a.tablePlans)?a.tablePlans:[],pinnedEvidenceFilePaths:Array.isArray(a.pinnedEvidenceFilePaths)?a.pinnedEvidenceFilePaths.filter(Boolean):[]})):[{id:"document",title:a.outputTitle||a.name||"文档",purpose:a.description||"",queries:[],requiredFacts:[]}],exportSettings:a.exportSettings,generationSettings:a.generationSettings,promptIds:Array.isArray(a.promptIds)?a.promptIds.filter(Boolean):[],projectBindings:Array.isArray(a.projectBindings)?a.projectBindings.filter(a=>a.materialRootPath).map(a=>({materialRootPath:a.materialRootPath.replace(/^\/+|\/+$/gu,"")})):(0,o.qp)(a),promptBindings:Array.isArray(a.promptBindings)?a.promptBindings.filter(a=>a.promptId&&a.roleId):Array.isArray(a.promptIds)?a.promptIds.filter(Boolean).map(a=>({promptId:a,roleId:"chapter_generation"})):[],builtIn:!1}}function w(){try{let a=t();if(!d.existsSync(a))return[];let b=JSON.parse(d.readFileSync(a,"utf-8"));if(!Array.isArray(b))return d.renameSync(a,`${a}.corrupt-${Date.now()}`),[];return b.map(v)}catch{try{let a=t();d.existsSync(a)&&d.renameSync(a,`${a}.corrupt-${Date.now()}`)}catch{}return[]}}function x(a){d.writeFileSync(t(),JSON.stringify(a.map(v),null,2),"utf-8")}function y(a){return(0,g.createHash)("sha256").update(a).digest("hex").slice(0,12)}function z(a){return a.replace(/\s+/gu," ").trim().slice(0,160)}function A(a){let b=function(){try{let a=JSON.parse(d.readFileSync(e.join(s(),"prompts.json"),"utf-8"));return Array.isArray(a.customPrompts)?a.customPrompts:[]}catch{return[]}}();if(a.startsWith("custom:")){let c=b.find(b=>b.id===a);return c?{id:a,name:c.name,content:c.content,source:"custom"}:void 0}if(a.startsWith("file:")){let b=a.slice(5);if(d.existsSync(b))return{id:a,name:e.basename(e.dirname(b))||b,content:d.readFileSync(b,"utf-8"),source:"file"}}}function B(a=[]){if(0===a.length)return[];let b=[];for(let c of a){let a=A(c.promptId);a&&b.push({...a,roleId:c.roleId,contentHash:y(a.content),contentPreview:z(a.content)})}return b}function C(a){let b=P(a),c=(0,i.XB)("prompt"),d=R(a),e=[],f=[];if(b)for(let a of b.promptRoles){let b=c.find(b=>b.id===a.roleId);if(!b){e.push(a.roleId);continue}0===(b.resourceIds?.length?b.resourceIds:b.resourceId?[b.resourceId]:[]).length&&f.push(a.roleId)}let g=Q(d),h=[];for(let a of g){let d=A(a.promptId);if(!d)continue;let e=c.find(b=>b.id===a.roleId),f=b?.promptRoles.find(b=>b.roleId===a.roleId),g=e?.executionType||function(a){var b;return b=a,/extract|extraction|抽取|清单|图纸|品牌/u.test(b)?"fact_extraction":/validation|校验|审查|审核/u.test(b)?"validation":/format|排版/u.test(b)?"formatting":/writer|method|schedule|quality|resource|safety|dangerous|施工|进度|质量|资源|安全|危大/u.test(b)?"chapter_generation":"reference"}(a.roleId),i=function(a,b,c=""){let d=`${a} ${b} ${c}`;return/extract|extraction|抽取|清单|图纸|品牌|识别/u.test(d)?"extraction":/format|排版/u.test(d)?"formatting":/总控|writer|施工组织设计总控|写作主控/u.test(d)?"writer":/chapter_generation|method|schedule|quality|resource|safety|dangerous|施工|进度|质量|资源|安全|危大/u.test(d)?"chapter":"reference"}(a.roleId,g,d.name),j=`projectRole:${b?.id||"unknown"}:${a.roleId}:order=${f?.order??0}`;h.push({...d,roleId:a.roleId,contentHash:y(d.content),contentPreview:z(d.content),executionType:g,category:i,bindingSource:j,roleConfigId:b?.id,roleName:e?.name,order:f?.order})}return{bindings:g,prompts:h,writerPrompts:h.filter(a=>"writer"===a.category),chapterPrompts:h.filter(a=>"chapter"===a.category),extractionPrompts:h.filter(a=>"extraction"===a.category),formattingPrompts:h.filter(a=>"formatting"===a.category),referencePrompts:h.filter(a=>"reference"===a.category),unresolvedRoles:[...new Set(e)],missingResourceRoles:[...new Set(f)]}}function D(){let a=(0,j.V)().templates,b=w().filter(b=>!a.some(a=>a.id===b.id));return[...a,...b]}function E(a){return D().find(b=>b.id===a)}function F(a){let b,c,d=v(a),e=w().find(a=>a.id===d.id),f=Date.now();if(e&&u(e)!==u(d)){b=(e.version||0)+1;let a=d.chapters.map(a=>a.title).join("、");c=[{version:b,timestamp:f,summary:a?`章节结构调整:${a.slice(0,80)}${a.length>80?"…":""}`:"模版内容已更新"},...e.changeLog||[]].slice(0,50)}else e?(b=e.version||1,c=e.changeLog||[]):(b=1,c=[{version:1,timestamp:f,summary:"创建模版"}]);let g={...d,version:b,updatedAt:f,changeLog:c},h=w().filter(a=>a.id!==d.id);return h.push(g),x(h),g}async function G(a,b=(0,h.aY)(),d={}){let f,g,j,s,t=E(a),u=[];if(!t)return{issues:[{level:"error",message:"文档模板不存在或已删除"}],fileDiagnostics:[],promptDiagnostics:[],roleDiagnostics:[],readiness:void 0,strategyPreview:void 0,config:void 0};let v=(0,i.XB)("prompt"),w=O(t),x=P(t);w||u.push({level:"error",message:"模板未绑定项目角色配置,且未匹配到自动专业角色配置"}),w&&!x&&u.push({level:"error",message:`项目角色配置不存在或已删除:${w}`}),t.promptIds?.length&&u.push({level:"warning",message:"模板存在旧 promptIds 字段残留,该字段已不参与生成,请清理模板历史数据。"}),t.promptBindings?.length&&u.push({level:"warning",message:"模板存在旧 promptBindings 字段残留,该字段已不参与生成,请清理模板历史数据。"});let y=R(t),z=(0,o.qp)(t);x&&0===x.promptRoles.length&&u.push({level:"error",message:"项目角色配置未配置提示词角色。"}),x&&x.promptRoles.length>0&&0===y.length&&u.push({level:"error",message:"项目角色配置中的提示词角色未绑定任何有效提示词资源。"});let A=e.resolve(b),C=(0,h.Yy)(A),D=function(a,b){if(0===a.length)return[];let c=new Set(b.map(a=>a.relativePath)),d=[],e=new Set;for(let f of a){let a=f.materialRootPath.replace(/^\/+|\/+$/gu,"");for(let f of c.has(a)?[a]:b.filter(b=>{var c;return b.relativePath.startsWith(`${a}/`)&&"disk"!==(c=b).status&&"error"!==c.status&&Number(c.indexedAt||0)>0&&Number(c.chunkCount||0)>0}).map(a=>a.relativePath))e.has(f)||(e.add(f),d.push(f))}return d}(z,C);if(0===z.length?u.push({level:"error",message:"模板未绑定项目资料包,请先选择需要参与生成的项目文件夹。"}):0===D.length&&u.push({level:"error",message:"模板绑定的项目资料包不存在或没有可用索引文件,请重新选择项目资料包。"}),t&&(f=(0,l.P)(A,{requirement:d.requirement,boundFilePaths:D}),0===z.length&&!f.source.ambiguous&&f.source.selectedFiles>0)){let a=u.findIndex(a=>"error"===a.level&&"模板未绑定项目资料包,请先选择需要参与生成的项目文件夹。"===a.message);a>=0&&u.splice(a,1)}let F=new Map(C.map(a=>[a.relativePath,a])),H=[],I=D.map(a=>{let b=F.get(a);return b||u.push({level:"error",message:`知识库文件不存在:${a}`}),b&&("disk"===b.status||0===b.indexedAt)&&H.push({level:"warning",message:`知识库文件存在但尚未完成索引:${a}`}),b?.status==="error"&&u.push({level:"warning",message:`知识库文件索引失败:${a}${b.errorMessage?`,${b.errorMessage}`:""}`}),b&&0===b.chunkCount&&u.push({level:"warning",message:`知识库文件暂无可检索内容切片:${a}`}),{filePath:a,roleId:"project_material",roleName:"项目资料包",exists:!!b,indexed:!!(b&&b.indexedAt>0&&"disk"!==b.status),chunkCount:b?.chunkCount??0,vectorReady:!!(b&&b.chunkCount>0)}}),J=I.filter(a=>a.exists).length,K=I.filter(a=>a.exists&&!a.indexed).length;J>0&&K===J?u.push({level:"error",message:`模板绑定的项目资料包(${J} 份文件)均尚未完成解析入库,请等待后台索引完成后再运行模板`}):u.push(...H);let L=B(y),M=new Set(x?.promptRoles.map(a=>a.roleId)||[]);for(let a of x?.promptRoles||[]){let b=v.find(b=>b.id===a.roleId);if(!b){u.push({level:"error",message:`提示词角色不存在:${a.roleId}`});continue}0===(b.resourceIds?.length?b.resourceIds:b.resourceId?[b.resourceId]:[]).length&&u.push({level:"error",message:`提示词角色未绑定资源:${b.name}`})}let N=y.map(a=>{let b=v.find(b=>b.id===a.roleId),c=L.find(b=>b.id===a.promptId);return b||u.push({level:"error",message:`提示词角色不存在:${a.roleId}`}),M.has(a.roleId)||u.push({level:"error",message:`提示词绑定不属于当前项目角色配置:${a.roleId}`}),c||u.push({level:"error",message:`提示词不存在:${a.promptId}`}),c&&!c.content.trim()&&u.push({level:"warning",message:`提示词为空:${c.name}`}),{...a,roleName:b?.name,promptTitle:c?.name,promptSource:c?.source,contentLength:c?.content.length??0,contentHash:c?.contentHash,contentPreview:c?.contentPreview,exists:!!c}}),Q=(x?.promptRoles||[]).map(a=>{let b=v.find(b=>b.id===a.roleId),c=b?b.resourceIds?.length?b.resourceIds:b.resourceId?[b.resourceId]:[]:[],d=y.filter(b=>b.roleId===a.roleId).map(a=>a.promptId),e=b?0===c.length?"missing_resource":0===d.length?"missing_prompt":"ok":"role_missing";return{roleId:a.roleId,roleName:b?.name,order:a.order,resourceIds:c,boundPromptIds:d,status:e}});if(L.length>1)try{let{detectPromptRuleConflicts:a}=await c.e(1001).then(c.bind(c,71001));for(let b of a(L.map(a=>({promptId:a.id,name:a.name,roleId:a.roleId,content:a.content}))))u.push({level:b.level,message:`提示词规则冲突:${b.message}`})}catch{}if(t){let a=f||(0,l.P)(A,{requirement:d.requirement,boundFilePaths:D}),b=function(a,b){let c=function(a,b){let c=[a.name,a.category,a.description,a.outputTitle,...a.chapters.flatMap(a=>[a.title,a.purpose])].join("\n"),d=new Set(["project_overview","scope_description"]);return/需求|规则|响应|方案|实施|专项|安全|质量|进度|合规|施工组织|技术标/iu.test(c)&&["requirement_document","structured_data"].forEach(a=>d.add(a)),(/安全|质量|进度|工期|文明|环保|验收/iu.test(c)||b.materialInventory.schedule_quality_safety.length>0)&&d.add("schedule_quality_safety"),(/设计|图纸|平面|立面|剖面|做法/iu.test(c)||b.materialInventory.design_specification.length>0)&&d.add("design_specification"),(/风险|重点|难点|约束|现场|危大/iu.test(c)||b.materialInventory.risk_constraints.length>0)&&d.add("risk_constraints"),d}(a,b);return[...new Set([...function(a){let b=[a.name,a.description,a.outputTitle,...a.chapters.flatMap(a=>[a.title,a.purpose,...a.requiredFacts||[],...a.queries||[]])].join("\n"),c=new Set((0,m.t0)(b,m.hW));return c.add("project_overview"),c.add("scope_description"),[...c]}(a),...c])].map(a=>{let d=b.materialInventory[a]||[],e=c.has(a),f=d.length>0,g=f&&d.length<(e?2:1);return{role:a,required:e,satisfied:f,weak:g,evidenceCount:d.length,filePaths:d.map(a=>a.filePath),reason:f?`已匹配 ${d.length} 个资料文件`:e?"必需资料角色缺失":"可选资料角色缺失"}})}(t,a);for(let c of(g=(0,n.$)({template:t,spec:(0,k.x)(t).spec,summary:a,resolvedRoles:b})).blockingIssues)u.push({level:"error",message:`生成准备度不足:${c}`});for(let a of g.warnings)u.push({level:"warning",message:a})}try{let a=(0,k.x)(t).spec,{effectiveTemplateChapters:b}=await Promise.resolve().then(c.bind(c,70208)),e=b(t,a),f=t.generationSettings||t.exportSettings,g=(0,p.q6)(t.exportSettings||t.generationSettings),h=(0,p.py)(d.requirement||""),i=f?.targetPages?.target||f?.targetPages?.min,l=h.targetChars||(h.targetPages?h.targetPages*g:void 0)||(i?i*g:void 0),m=e.reduce((b,c)=>b+Math.max(a.chapterRules.find(a=>a.id===c.id||a.title===c.title)?.minWords||0,a.dynamicChapterRule.minWordsPerChapter||0),0),n=Math.round(l||m||1200*e.length),o=D.reduce((a,b)=>a+(F.get(b)?.chunkCount??0),0),{previewGenerationBudgetForTemplate:r}=await Promise.all([c.e(1001),c.e(6482),c.e(9227)]).then(c.bind(c,79227));j=r({template:t,chapters:e,requirement:d.requirement,materialFileCount:D.length,evidenceCount:o,targetWords:n,hasVeryLargeExplicitChapter:e.some(a=>(a.sections||[]).filter(Boolean).length>=30),configuredChapterConcurrency:(0,q.z)().chapterConcurrency||0})}catch{}try{s=(0,r.ze)({templateName:t.name,chapterTitles:t.chapters.map(a=>a.title)})}catch{}return{templateId:a,projectRoleConfigId:w,configName:x?.name,fileDiagnostics:I,promptDiagnostics:N,roleDiagnostics:Q,readiness:g,issues:u,strategyPreview:j,referenceStructureSuggestion:s}}let H=new Map,I=Math.max(5e3,Number(process.env.DOCUMENT_TEMPLATE_VALIDATION_CACHE_TTL_MS??3e4));async function J(a,b=(0,h.aY)(),c={}){let d=e.resolve(b),f=E(a),g=(0,h.Yy)(d),i=JSON.stringify({templateId:a,templateVersion:f?.version??0,templateUpdatedAt:f?.updatedAt??0,projectRoot:d,requirement:c.requirement??"",fileCount:g.length,lastFileMtime:g.reduce((a,b)=>Math.max(a,b.mtime),0)}),j=H.get(i);if(j&&Date.now()-j.at<I)return j.result;let k=await G(a,d,c);return H.set(i,{at:Date.now(),result:k}),k}function K(a){if(new Set((0,j.V)().templates.map(a=>a.id)).has(a))throw Error("Configured template cannot be deleted");x(w().filter(b=>b.id!==a))}function L(a){let b=E(a);if(!b)throw Error("Document template not found");let c=Date.now(),d=v({...b,id:`${b.id}-copy-${c}`,name:`${b.name} Copy`,builtIn:!1,version:1,updatedAt:c,changeLog:[{version:1,timestamp:c,summary:`从 ${b.id} v${b.version||1} 复制`}]}),e=w();return e.push(d),x(e),d}function M(a,b){try{return RegExp(b,"iu").test(a)}catch{return a.includes(b)}}function N(a,b){return(function(a){let b=`${a.name} ${a.category} ${a.outputTitle} ${a.description}`;return(0,j.V)().chapterTitleFilters.filter(a=>a.templateMatchers.some(a=>M(b,a)))})(b).some(b=>!!b.minLength&&a.length<b.minLength||!!b.maxLength&&a.length>b.maxLength||b.forbiddenPatterns.some(b=>M(a,b)))}function O(a){return a.projectRoleConfigId||void 0}function P(a){let b=O(a);return b?(0,i.Mu)(b):void 0}function Q(a){let b=new Set,c=[];for(let d of a){let a=`${d.roleId}:${d.promptId}`;!d.promptId||!d.roleId||b.has(a)||(b.add(a),c.push(d))}return c}function R(a){let b=P(a);if(!b)return[];let c=(0,i.XB)("prompt"),d=[];for(let a of[...b.promptRoles].sort((a,b)=>a.order-b.order)){let b=c.find(b=>b.id===a.roleId),e=b?b.resourceIds?.length?b.resourceIds:b.resourceId?[b.resourceId]:[]:[];b&&0!==e.length&&d.push(...e.map(a=>({promptId:a,roleId:b.id})))}return Q(d)}},28103:(a,b,c)=>{c.d(b,{WT:()=>x,aF:()=>w,cG:()=>e});var d=c(52922);let e=["房建","市政","公路","桥梁与隧道","水利水电","电力","机电安装","装饰装修","园林绿化","铁路","港口与航道","矿山冶金","其他"],f=/(?:\d+(?:\.\d+)?\s*(?:mm|cm|m|㎡|m²|m2|m3|m³|kg|t|MPa|kPa|kN|V|KV|kV|A|天|%)(?![a-zA-Z\u4e00-\u9fa5])|\d+(?:\.\d+)?\s*(?:米|厘米|毫米|吨|千克|公斤|平方米|立方米)(?!\d)|(?:养护|搭接长度|试验压力|间距|偏差|坡度|含水率|压实度|强度等级|标号|厚度|宽度|高度|深度|直径|桩长|桩径))/gu,g=/→|->|=>|按.{0,12}顺序|依次|先后|先.{0,10}后|顺序施工|流水顺序|[\u4e00-\u9fa5]+(?:-|—|~|~)[\u4e00-\u9fa5]+(?:-|—|~|~)[\u4e00-\u9fa5]+/u,h=/^(?:[一二三四五六七八九十\d]+[、..]?\s*)?[\u4e00-\u9fa5()()、,A-Za-z0-9+\-·\s]{2,28}(?:表|清单)(?:[::]|\s*$)/mu,i=/^第([一二三四五六七八九十百千\d]+)[章篇][、..]?\s*(.{2,60})$/mu,j=/^\d+[、..](?!\d)\s*(.{2,20})$/mu,k=/^[一二三四五六七八九十]+[、..]\s*(.{2,20})$/mu,l=/^第[一二三四五六七八九十\d]+[节条][、..]?\s*(.{2,30})$/mu,m=/^(?:[一二三四五六七八九十]+、\s*(.{2,20})|[((][一二三四五六七八九十\d]+[))]\s*(.{2,20})|\d+\.\d+(?:\.\d+)*[、..\s]\s*(.{2,20}))$/mu,n=/\.{4,}|\.{2,}\s*\d{1,3}\s*$|—\d+—|第\s*\d+\s*页|^\d{1,3}$/u,o=/[,、;:]/u,p=/[,。;:?!]/u;function q(a){return a.trim().replace(/^(?:#+\s*)+/u,"").trim()}function r(a){return a.replace(/[\s..·]+\d{1,3}$/u,"").replace(/\s+/gu,"").trim()}function s(a){return a.length>=2&&!o.test(a)&&!/[。,;]$/u.test(a)}function t(a){if(/^\d+$/u.test(a))return Number.parseInt(a,10);let b={零:0,一:1,二:2,三:3,四:4,五:5,六:6,七:7,八:8,九:9},c=0,d=0,e=!1;for(let f of a){if("十"===f){c+=10*(d||1),d=0,e=!0;continue}if("百"===f){c+=100*(d||1),d=0,e=!0;continue}if("千"===f){c+=1e3*(d||1),d=0,e=!0;continue}let a=b[f];if(void 0===a)return Number.MAX_SAFE_INTEGER;d=a,e=!0}return e?c+d:Number.MAX_SAFE_INTEGER}let u=/(?:养护|搭接长度|试验压力|间距|偏差|坡度|含水率|压实度|强度等级|标号|厚度|宽度|高度|深度|直径|桩长|桩径)/gu,v=/(?:\d+(?:\.\d+)?\s*(?:mm|cm|m|㎡|m²|m2|m3|m³|kg|t|MPa|kPa|kN|V|KV|kV|A|天|%)(?![a-zA-Z\u4e00-\u9fa5])|\d+(?:\.\d+)?\s*(?:米|厘米|毫米|吨|千克|公斤|平方米|立方米)(?!\d))/gu;function w(a){let b,c=[["市政",/市政|管网|排水|给水|雨污|污水|燃气/gu],["公路",/公路|路基|路面|沥青/gu],["桥梁与隧道",/桥梁|隧道/gu],["水利水电",/水利|河道|灌溉|防洪/gu],["电力",/电力|供配电|电压|电缆/gu],["机电安装",/机电|暖通|通风|空调|消防|给排水|智能化|电梯/gu],["装饰装修",/装饰|装修|幕墙/gu],["园林绿化",/园林|绿化|景观|苗木/gu],["铁路",/铁路|轨道/gu],["港口与航道",/港口|航道/gu],["矿山冶金",/矿山|冶金/gu],["房建",/房建|建筑|住宅|楼|结构|砌体|基坑|地下室|主体|层高|户型|公共建筑|产业园|厂房/gu]].map(([b,c])=>(c.lastIndex=0,{type:b,count:(a.match(c)||[]).length})).sort((a,b)=>b.count-a.count),d=c[0],e=0,f=0;for(let[c,d]of[["房建",/产业园|标准厂房|安置房|住宅小区|保障房|卫生院|门诊楼|办公楼/gu],["市政",/老旧小区|海绵城市|雨污分流|管网改造|管廊/gu],["桥梁与隧道",/桥梁|隧道|盾构|箱梁|斜拉|悬索|涵洞/gu],["公路",/公路|路基|路面|沥青|桩号|互通|匝道/gu],["水利水电",/堤防|水库|泵站|水闸|疏浚|节制闸|水电站|大坝|围堰/gu],["电力",/变电站|输电线路|配电|GIS设备|电缆|架空线路|铁塔|箱变/gu],["铁路",/铁路|轨道|道床|站台|信号机|接触网/gu],["港口与航道",/港口|码头|航道|护岸|堆场|泊位/gu],["矿山冶金",/矿山|矿井|选矿|冶炼|尾矿|轧钢/gu]]){d.lastIndex=0;let g=(a.match(d)||[]).length;g>=3&&g>e?(f=e,b=c,e=g):g>f&&(f=g)}if(b){if(f>0&&e<2*f&&d&&d.count>e)return d.type;let a=c.find(a=>a.type===b)?.count||0;return d&&d.type!==b&&d.count>2*a&&d.count>=2*e?d.type:b}return d&&d.count>0?d.type:"其他"}async function x(a){let b=a.replace(/\s/gu,"").length,c=a.split(/\n+/u).map(a=>a.replace(/\s+/gu," ").trim()).filter(a=>a.length>=16&&/[\u4e00-\u9fa5]/u.test(a)),e=c.reduce((a,b)=>a+b.replace(/\s/gu,"").length,0),o=(a.match(f)||[]).length,w=c.filter(a=>g.test(a)).length,x=function(a){let b=0,c=a.split(/\n+/u);for(let a=0;a<c.length;a+=1){let d=q(c[a]||"");if(d){if(h.test(d)||/^┌─/u.test(d)){b+=1;continue}if(/^\|.*\|.*\|$/u.test(d)){let d="";for(let b=a-1;b>=0&&b>=a-3;b-=1){let a=q(c[b]||"");if(a){d=a;break}}/^\|.*\|.*\|$/u.test(d)||h.test(d)||(b+=1)}}}return b}(a),{headings:y,useCnAsChapter:z}=function(a){let b,c=new Map,d=[],e=[],f=a.split(/\n+/u);for(let a=0;a<f.length;a+=1){let b=q(f[a]);if(!b||n.test(b))continue;let d=i.exec(b);if(d){let b=r(d[2]||"");b.length>=2&&!p.test(b)&&c.set(d[1],function(a,b,c){if(a.length<20)return a;let d=q(b[c+1]||"");if(d.length<2||d.length>15||!/[\u4e00-\u9fa5]/u.test(d)||n.test(d)||i.test(d)||l.test(d)||m.test(d)||j.test(d)||k.test(d))return a;let e=a+d;return e.length<=60?e:a}(b,f,a));continue}let g=k.exec(b);if(g){let a=r(g[1]||"");s(a)&&e.push(a)}}if(0===c.size)for(let a of f){let b=q(a);if(!b||n.test(b))continue;let c=j.exec(b);if(c){let a=r(c[1]||"");s(a)&&d.push(a)}}let g=!1;return c.size>0?b=[...c.entries()].sort((a,b)=>t(a[0])-t(b[0])).map(([,a])=>a):d.length>=2?b=d:(b=e,g=!0),{headings:[...new Set(b)],useCnAsChapter:g}}(a),A=y.length,{subsectionCount:B,subitemCount:C}=function(a,b){let c=0,d=0;for(let e of a.split(/\n+/u)){let a=q(e);if(!a||n.test(a))continue;let f=l.exec(a);if(f){s(r(f[1]||""))&&(c+=1);continue}let g=m.exec(a);if(g){if(!s(r(g[1]||g[2]||g[3]||""))||b&&void 0!==g[1])continue;d+=1}}return{subsectionCount:c,subitemCount:d}}(a,z),D=new Map;for(let a of c){let b=a.replace(/[\d\s,。、;:""''()()%…—\-·]/gu,"");b.length<8||D.set(b,(D.get(b)||0)+1)}let E=0;for(let a of D.values())a>1&&(E+=a);let F=await (0,d.Pm)(a);return{wordCount:b,effectiveWordCount:e,paramDensity:e>0?1e3*o/e:0,paramCount:o,arrowChainCoverage:c.length>0?w/c.length:0,duplicationRate:c.length>0?E/c.length:0,tableCount:x,sectionCount:A,subsectionCount:B,subitemCount:C,avgSectionWords:A>0?Math.round(e/A):0,headingStructure:y,tableTitles:function(a){let b=[];for(let c of a.split(/\n+/u)){let a=q(c);a&&!(a.length>40)&&!(a.length<3)&&h.test(a)&&b.push(a)}return[...new Set(b)]}(a),paramTokens:function(a){let b=new Map;for(let c of a.match(u)||[])b.set(c,(b.get(c)||0)+1);let c=(a.match(v)||[]).length;return c>0&&b.set("数值参数(数字+单位)",(b.get("数值参数(数字+单位)")||0)+c),[...b.entries()].map(([a,b])=>({token:a,count:b})).sort((a,b)=>b.count-a.count)}(a),segmentCount:c.length,arrowChainSegmentCount:w,duplicatedSegmentCount:E,fiveElementCompleteBlocks:F.completeBlocks}}},29281:(a,b,c)=>{c.d(b,{I:()=>f});var d=c(96770);let e=null;function f(){return e||(e=new d.ConfigStore),e}},37047:(a,b,c)=>{c.d(b,{Bd:()=>k,Eh:()=>g,Mv:()=>n,VN:()=>f});var d=c(19898);let e=null;function f(){return e||(e=new d.LocalTransformersEmbeddingProvider({})),e}let g=.6,h=new Map,i=0,j=0;function k(){return{embedCacheHits:i,embedCacheMisses:j}}async function l(a,b){let c=b?await b(a):await f().embedDocuments(a);if(c.length!==a.length)throw Error(`本地语义模型嵌入数量不一致:期望 ${a.length} 条,实际 ${c.length} 条`);return c}async function m(a,b){if("0"===process.env.DOCUMENT_EMBED_CACHE)return l(a,b);let c=Array(a.length),d=[],e=new Map;for(let b=0;b<a.length;b+=1){let f=a[b];if(f.length<=2e3){let a=h.get(f);if(a){c[b]=a,i+=1,h.delete(f),h.set(f,a);continue}}let g=e.get(f);g?g.push(b):(e.set(f,[b]),d.push(f))}if(0===d.length)return c;let f=await l(d,b),g=function(){let a=Number(process.env.DOCUMENT_EMBED_CACHE_SIZE||4e4);return Number.isFinite(a)&&a>0?a:4e4}();for(let a=0;a<d.length;a+=1){let b=d[a],i=f[a],k=e.get(b);for(let a of k)c[a]=i;if(b.length<=2e3&&(j+=k.length,h.set(b,i),h.size>g)){let a=h.keys().next().value;void 0!==a&&h.delete(a)}}return c}async function n(a,b,c){if(0===a.length||0===b.length)return()=>0;let d=[...a,...b],e=await m(d,c),f=new Map;for(let a=0;a<d.length;a++)f.has(d[a])||f.set(d[a],e[a]);return(a,b)=>{let c=f.get(a),d=f.get(b);if(!c||!d)return 0;let e=Math.min(c.length,d.length),g=0;for(let a=0;a<e;a++)g+=c[a]*d[a];return g}}},41991:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(37047);function e(a,b){let c=Math.min(a.length,b.length),d=0;for(let e=0;e<c;e++)d+=a[e]*b[e];return d}async function f(a){if(0===a.prototypes.length)return async a=>a.map(()=>!1);let b=a.threshold??d.Eh,c=a.negativePrototypes??[],f=[...a.prototypes,...c],g=a.prototypes.length,h=a.embedDocuments?null:(0,d.VN)(),i=a.embedDocuments?await a.embedDocuments(f):await h.embedDocuments(f);if(i.length!==f.length)throw Error(`本地语义模型嵌入数量不一致:期望 ${f.length} 条,实际 ${i.length} 条`);return async d=>{if(0===d.length)return[];let f=d.map(()=>!1),j=d.map((b,c)=>a.lexicalHints&&!a.lexicalHints.test(b)?-1:c).filter(a=>a>=0);if(0===j.length)return f;let k=j.map(a=>d[a]),l=a.embedDocuments?await a.embedDocuments(k):await h.embedDocuments(k);return j.forEach((a,d)=>{let h=l[d];if(!h)return;let j=Math.max(...i.slice(0,g).map(a=>e(h,a))),k=c.length?Math.max(...i.slice(g).map(a=>e(h,a))):0;j>=b&&(0===c.length||j>k)&&(f[a]=!0)}),f}}},44533:(a,b,c)=>{c.d(b,{NW:()=>j,Qh:()=>k,VS:()=>o,Yy:()=>n,a2:()=>i,aY:()=>m,q1:()=>p});var d=c(19898),e=c(33873),f=c(21820),g=c(29021);let h=null;function i(){return e.join(f.homedir(),".customize-agent")}function j(a){return(0,d.getProjectKbPath)(e.resolve(a))}function k(){return h||(h=new d.MultiProjectManager(i())),h}function l(a){let b=e.resolve(a),c=e.resolve(e.join(f.homedir(),".customize-agent"));return!(g.existsSync(e.join(b,"pnpm-workspace.yaml"))&&g.existsSync(e.join(b,"apps","server")))&&(b===c||b.includes(`${e.sep}.customize-agent${e.sep}`)||b.endsWith(`${e.sep}apps${e.sep}server`)||b.endsWith(`${e.sep}apps${e.sep}cli`))}function m(){let a=process.env.CUSTOMIZE_PROJECT_ROOT??process.env.INIT_CWD;if(a&&g.existsSync(a)&&!l(a))return e.resolve(a);let b=function(){let a=e.join(i(),"projects","registry.db");if(!g.existsSync(a))return[];let b=new((0,d.loadBetterSqlite3)())(a,{readonly:!0});try{return b.prepare("SELECT project_root FROM project_registry ORDER BY last_opened_at DESC").all().map(a=>e.resolve(a.project_root)).filter(a=>!l(a))}finally{b.close()}}();return b.length>0?b[0]:process.env.INIT_CWD&&!l(process.env.INIT_CWD)?process.env.INIT_CWD:e.resolve(process.cwd(),"../..")}function n(a,b={}){let c=new Map;for(let b of function(a){let b=e.join(f.homedir(),".customize-agent","projects",(0,d.computeProjectId)(e.resolve(a)),"kb.db");if(!g.existsSync(b))return[];let c=new d.IndexStateStore(b);try{return c.listRecords().map(a=>({...a,matchedBy:"metadata"}))}finally{c.close()}}(a))c.set(b.relativePath,b);for(let b of function(a){let b=j(a);if(!g.existsSync(b))return[];let c=[],d=a=>{for(let f of g.readdirSync(a,{withFileTypes:!0})){let h=e.join(a,f.name);if(f.isDirectory()){d(h);continue}if(f.name.endsWith(".source.txt"))continue;let i=g.statSync(h),j=e.relative(b,h).split(e.sep).join("/");c.push({relativePath:j,category:j.includes("表格数据/")?"spreadsheet":j.includes("图片素材/")?"image":j.includes("图纸文件/")?"cad":j.includes("文档资料/")?"document":"other",format:e.extname(j).slice(1).toLowerCase()||"text",contentHash:"",fileSize:i.size,mtime:i.mtimeMs,chunkCount:0,collectionName:"",indexedAt:0,lastVerifiedAt:0,status:"disk",matchedBy:"disk"})}};return d(b),c}(a)){let a=c.get(b.relativePath);c.set(b.relativePath,a?{...a,fileSize:b.fileSize,mtime:b.mtime,matchedBy:"metadata"}:b)}return Array.from(c.values()).filter(a=>!b.category||a.category===b.category).sort((a,b)=>b.mtime-a.mtime||a.relativePath.localeCompare(b.relativePath,"zh-CN"))}async function o(a,b={}){let c=(b.query||"").trim(),d=Math.max(1,Math.min(500,b.limit??50)),e=new Map,f=n(a,{category:b.category});for(let a of f)(!c||`${a.relativePath}
|
|
20
|
+
${i}`.trim()}let q=new Set(["施工准备","施工要点","质量控制","质量要求","质量保证措施","质量控制措施","质量通病防治","安全措施","安全要求","安全管理措施","安全技术交底","技术交底","注意事项","验收要求","验收标准","成品保护","环境保护","文明施工","进度控制","工期保障","材料管理","机械管理","人员管理","组织管理","应急预案","应急措施","劳动力配置","机械设备配置","施工概况","施工流程","施工方法"]),r=/^(?:\d+(?:\.\d+)*|[一二三四五六七八九十]+)[、..\s::-]/u,s=/主要分部分项工程施工方案|项目主要施工内容/u;function t(a){let b=a.split(/\r?\n/u),c=[];for(let a=0;a<b.length;a+=1)/^##\s+/u.test(b[a].trim())&&c.push(a);if(0===c.length)return a;let d=new Set;for(let a=0;a<c.length;a+=1){let e=c[a],f=c[a+1]??b.length,g=new Set,h=[],i="";for(let a=e;a<f;a+=1){let c=/^(#{3,4})\s+(.+)$/u.exec(b[a].trim());if(!c)continue;let d=c[2].trim(),e=k(d);e&&(3===c[1].length?(g.add(e),i=e):h.push({line:a,name:e,rawTitle:d,parentH3:i}))}let j=new Map;for(let a of h){let c=j.get(a.name);j.set(a.name,a.line);let e=r.test(a.rawTitle),h=s.test(a.parentH3),i=g.has(a.name)&&!e&&!h,k=q.has(a.name);if(!(i||!k&&void 0!==c))continue;let l=f;for(let c=a.line+1;c<f;c+=1)if(/^#{2,4}\s+/u.test(b[c].trim())){l=c;break}for(let b=a.line;b<l;b+=1)d.add(b)}}return 0===d.size?a:b.filter((a,b)=>!d.has(b)).join("\n")}function u(a,b,c={}){if(!c.fuzzy){let c=v(a,b,/^###\s+(?:\d+(?:\.\d+)*\s+)?/u);return c||v(a,b,/^#{3,4}\s+(?:\d+(?:\.\d+)*\s+)?/u)}return function(a,b){let c=a.split("\n"),d=w(b).replace(/\s+/gu,"").toLowerCase(),g=[],h=-1,i=0,j=!1,k=a=>{if(h<0)return;let b=c.slice(h,a).join("\n").trim();b&&g.push(b),h=-1,i=0,j=!1};for(let a=0;a<c.length;a+=1){if(!/^\s*#{2,4}\s+/u.test(c[a]))continue;let e=/^\s*(#{2,4})\s+/u.exec(c[a])?.[1].length||3;if(h>=0&&(j||3===i)&&4===e)continue;k(a);let g=w(c[a]).replace(/\s+/gu,"").toLowerCase();(g===d||g.includes(d)||y(c[a],b))&&(h=a+1,i=e,j=e<=4&&f.test(c[a]))}return k(c.length),g.sort((a,b)=>(0,e.V7)(b)-(0,e.V7)(a))[0]||""}(a,b)}function v(a,b,c){let d=a.split("\n"),e=d.findIndex(a=>c.test(a.trim())&&a.includes(b));if(e<0)return"";let g=/^(#{2,6})\s+/u.exec(d[e].trim())?.[1].length||3,h=4===g&&f.test(b),i=d.length;for(let a=e+1;a<d.length;a+=1){let b=/^(#{2,6})\s+/u.exec(d[a].trim());if(b&&b[1].length<=g&&!(h&&b[1].length===g)){i=a;break}}return d.slice(e,i).join("\n")}function w(a){return a.replace(/^\s*#{2,4}\s*/u,"").replace(/^\s*(?:\d+(?:\.\d+)*|[一二三四五六七八九十]+)(?:[、..]|\s+)\s*/u,"").trim()}function x(a){return w(a).replace(/\s+/gu,"").toLowerCase().replace(/施工(?=方案|流程|方法)/gu,"").replace(/专项(?=方案)/gu,"").replace(/项目|工程|主要|重点|技术/gu,"").replace(/[、,,;;·..//]+/gu,"").replace(/与|及|和|暨/gu,"")}function y(a,b){let c=x(a),d=x(b);return!!c&&!!d&&!(c.length<4)&&!(d.length<4)&&(c===d||c.includes(d)||d.includes(c))}function z(a,b,c){let d=[...new Set(b.filter(Boolean))];if(0===d.length)return a;let e=3===c?/^\s*###\s+/u:4===c?/^\s*####\s+/u:/^\s*#{3,4}\s+/u,f=new Set;return a.split("\n").map(a=>{if(!e.test(a))return a;let b=w(a);if(!b)return a;let c=d.find(a=>!f.has(a)&&y(b,a));if(!c||c===b)return a;let g=/^(\s*#{3,4}\s+)/u.exec(a)?.[1];return g?(f.add(c),`${g}${c}`):a}).join("\n")}function A(a){return(0,d.createHash)("sha1").update(JSON.stringify(a)).digest("hex")}function B(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 C(a){if(a?.aborted)throw Error("用户中止")}function D(a){return`【系统约束——仅指导写作,禁止写入正文,禁止复述本句】${a}`}let E=["评标纪律","投标纪律","行贿","打招呼","递条子","廉洁承诺","廉洁自律","串标","围标","弄虚作假","干扰评标","异常低价","评标基准价"];function F(a){return!!(E.some(b=>a.includes(b))||a.includes("廉洁从业"))||/纪律|廉洁/u.test(a)&&/投标|评标|行贿|串标|围标|弄虚作假/u.test(a)}function G(a){return a.filter(a=>!F(`${a.key||""} ${String(a.value)}`))}async function H(a,b,c){if(0===a.length)return[];let d=Math.max(1,Math.min(a.length,c.concurrency||Math.max(1,{total:a.length,kind:c.kind,targetWords:c.targetWords,highRisk:c.highRisk}.total))),e=Array(a.length),f=0;return await Promise.all(Array.from({length:d},async()=>{for(;f<a.length;){let c=f;f+=1,e[c]=await b(a[c],c)}})),e}class I{constructor(a){this.queue=[],this.available=Math.max(1,Math.floor(a))}async acquire(){if(this.available>0){this.available-=1;return}await new Promise(a=>{this.queue.push(a)})}release(){let a=this.queue.shift();a?a():this.available+=1}async run(a){await this.acquire();try{return await a()}finally{this.release()}}}},23500:(a,b,c)=>{c.d(b,{bj:()=>C,N6:()=>O,h0:()=>K,bV:()=>L,QJ:()=>E,jG:()=>D,dU:()=>B,Bh:()=>F,zY:()=>R,xm:()=>G,J5:()=>J,C1:()=>N});var d=c(73024),e=c(76760),f=c(48161),g=c(77598),h=c(44533),i=c(25840),j=c(8753),k=c(6444),l=c(85441),m=c(92808),n=c(56942),o=c(2773),p=c(78217),q=c(80572),r=c(5726);function s(){let a=e.join(f.homedir(),".customize-agent");return d.mkdirSync(a,{recursive:!0}),a}function t(){return e.join(s(),"document-templates.json")}function u(a){let{version:b,updatedAt:c,changeLog:d,...e}=a;return(0,g.createHash)("sha256").update(function a(b){return Array.isArray(b)?`[${b.map(a).join(",")}]`:b&&"object"==typeof b?`{${Object.keys(b).sort().map(c=>`${JSON.stringify(c)}:${a(b[c])}`).join(",")}}`:JSON.stringify(b)}(e)).digest("hex")}function v(a){return{...a,id:a.id.replace(/[^a-zA-Z0-9_-]/gu,"-").slice(0,80)||`template-${Date.now()}`,name:a.name||"未命名模板",description:a.description||"",category:a.category||"自定义",outputTitle:a.outputTitle||a.name||"文档",version:Number.isFinite(a.version)&&a.version>0?Math.floor(a.version):1,updatedAt:Number.isFinite(a.updatedAt)?a.updatedAt:Date.now(),changeLog:Array.isArray(a.changeLog)?a.changeLog.filter(a=>a&&"object"==typeof a&&Number.isFinite(a.version)&&"string"==typeof a.summary).slice(0,50):[],projectRoleConfigId:a.projectRoleConfigId||void 0,chapters:Array.isArray(a.chapters)&&a.chapters.length>0?a.chapters.map((a,b)=>({id:(a.id||`chapter-${b+1}`).replace(/[^a-zA-Z0-9_-]/gu,"-").slice(0,80),title:a.title||`第 ${b+1} 章`,purpose:a.purpose||"",queries:Array.isArray(a.queries)?a.queries.filter(Boolean):[],requiredFacts:Array.isArray(a.requiredFacts)?a.requiredFacts.filter(Boolean):[],sections:Array.isArray(a.sections)?a.sections.filter(Boolean):[],tableSections:Array.isArray(a.tableSections)?a.tableSections.filter(Boolean):[],tableRequirements:Array.isArray(a.tableRequirements)?a.tableRequirements.filter(Boolean):[],tablePlans:Array.isArray(a.tablePlans)?a.tablePlans:[],pinnedEvidenceFilePaths:Array.isArray(a.pinnedEvidenceFilePaths)?a.pinnedEvidenceFilePaths.filter(Boolean):[]})):[{id:"document",title:a.outputTitle||a.name||"文档",purpose:a.description||"",queries:[],requiredFacts:[]}],exportSettings:a.exportSettings,generationSettings:a.generationSettings,promptIds:Array.isArray(a.promptIds)?a.promptIds.filter(Boolean):[],projectBindings:Array.isArray(a.projectBindings)?a.projectBindings.filter(a=>a.materialRootPath).map(a=>({materialRootPath:a.materialRootPath.replace(/^\/+|\/+$/gu,"")})):(0,o.qp)(a),promptBindings:Array.isArray(a.promptBindings)?a.promptBindings.filter(a=>a.promptId&&a.roleId):Array.isArray(a.promptIds)?a.promptIds.filter(Boolean).map(a=>({promptId:a,roleId:"chapter_generation"})):[],builtIn:!1}}function w(){try{let a=t();if(!d.existsSync(a))return[];let b=JSON.parse(d.readFileSync(a,"utf-8"));if(!Array.isArray(b))return d.renameSync(a,`${a}.corrupt-${Date.now()}`),[];return b.map(v)}catch{try{let a=t();d.existsSync(a)&&d.renameSync(a,`${a}.corrupt-${Date.now()}`)}catch{}return[]}}function x(a){d.writeFileSync(t(),JSON.stringify(a.map(v),null,2),"utf-8")}function y(a){return(0,g.createHash)("sha256").update(a).digest("hex").slice(0,12)}function z(a){return a.replace(/\s+/gu," ").trim().slice(0,160)}function A(a){let b=function(){try{let a=JSON.parse(d.readFileSync(e.join(s(),"prompts.json"),"utf-8"));return Array.isArray(a.customPrompts)?a.customPrompts:[]}catch{return[]}}();if(a.startsWith("custom:")){let c=b.find(b=>b.id===a);return c?{id:a,name:c.name,content:c.content,source:"custom"}:void 0}if(a.startsWith("file:")){let b=a.slice(5);if(d.existsSync(b))return{id:a,name:e.basename(e.dirname(b))||b,content:d.readFileSync(b,"utf-8"),source:"file"}}}function B(a=[]){if(0===a.length)return[];let b=[];for(let c of a){let a=A(c.promptId);a&&b.push({...a,roleId:c.roleId,contentHash:y(a.content),contentPreview:z(a.content)})}return b}function C(a){let b=P(a),c=(0,i.XB)("prompt"),d=R(a),e=[],f=[];if(b)for(let a of b.promptRoles){let b=c.find(b=>b.id===a.roleId);if(!b){e.push(a.roleId);continue}0===(b.resourceIds?.length?b.resourceIds:b.resourceId?[b.resourceId]:[]).length&&f.push(a.roleId)}let g=Q(d),h=[];for(let a of g){let d=A(a.promptId);if(!d)continue;let e=c.find(b=>b.id===a.roleId),f=b?.promptRoles.find(b=>b.roleId===a.roleId),g=e?.executionType||function(a){var b;return b=a,/extract|extraction|抽取|清单|图纸|品牌/u.test(b)?"fact_extraction":/validation|校验|审查|审核/u.test(b)?"validation":/format|排版/u.test(b)?"formatting":/writer|method|schedule|quality|resource|safety|dangerous|施工|进度|质量|资源|安全|危大/u.test(b)?"chapter_generation":"reference"}(a.roleId),i=function(a,b,c=""){let d=`${a} ${b} ${c}`;return/extract|extraction|抽取|清单|图纸|品牌|识别/u.test(d)?"extraction":/format|排版/u.test(d)?"formatting":/总控|writer|施工组织设计总控|写作主控/u.test(d)?"writer":/chapter_generation|method|schedule|quality|resource|safety|dangerous|施工|进度|质量|资源|安全|危大/u.test(d)?"chapter":"reference"}(a.roleId,g,d.name),j=`projectRole:${b?.id||"unknown"}:${a.roleId}:order=${f?.order??0}`;h.push({...d,roleId:a.roleId,contentHash:y(d.content),contentPreview:z(d.content),executionType:g,category:i,bindingSource:j,roleConfigId:b?.id,roleName:e?.name,order:f?.order})}return{bindings:g,prompts:h,writerPrompts:h.filter(a=>"writer"===a.category),chapterPrompts:h.filter(a=>"chapter"===a.category),extractionPrompts:h.filter(a=>"extraction"===a.category),formattingPrompts:h.filter(a=>"formatting"===a.category),referencePrompts:h.filter(a=>"reference"===a.category),unresolvedRoles:[...new Set(e)],missingResourceRoles:[...new Set(f)]}}function D(){let a=(0,j.V)().templates,b=w().filter(b=>!a.some(a=>a.id===b.id));return[...a,...b]}function E(a){return D().find(b=>b.id===a)}function F(a){let b,c,d=v(a),e=w().find(a=>a.id===d.id),f=Date.now();if(e&&u(e)!==u(d)){b=(e.version||0)+1;let a=d.chapters.map(a=>a.title).join("、");c=[{version:b,timestamp:f,summary:a?`章节结构调整:${a.slice(0,80)}${a.length>80?"…":""}`:"模版内容已更新"},...e.changeLog||[]].slice(0,50)}else e?(b=e.version||1,c=e.changeLog||[]):(b=1,c=[{version:1,timestamp:f,summary:"创建模版"}]);let g={...d,version:b,updatedAt:f,changeLog:c},h=w().filter(a=>a.id!==d.id);return h.push(g),x(h),g}async function G(a,b=(0,h.aY)(),d={}){let f,g,j,s,t=E(a),u=[];if(!t)return{issues:[{level:"error",message:"文档模板不存在或已删除"}],fileDiagnostics:[],promptDiagnostics:[],roleDiagnostics:[],readiness:void 0,strategyPreview:void 0,config:void 0};let v=(0,i.XB)("prompt"),w=O(t),x=P(t);w||u.push({level:"error",message:"模板未绑定项目角色配置,且未匹配到自动专业角色配置"}),w&&!x&&u.push({level:"error",message:`项目角色配置不存在或已删除:${w}`}),t.promptIds?.length&&u.push({level:"warning",message:"模板存在旧 promptIds 字段残留,该字段已不参与生成,请清理模板历史数据。"}),t.promptBindings?.length&&u.push({level:"warning",message:"模板存在旧 promptBindings 字段残留,该字段已不参与生成,请清理模板历史数据。"});let y=R(t),z=(0,o.qp)(t);x&&0===x.promptRoles.length&&u.push({level:"error",message:"项目角色配置未配置提示词角色。"}),x&&x.promptRoles.length>0&&0===y.length&&u.push({level:"error",message:"项目角色配置中的提示词角色未绑定任何有效提示词资源。"});let A=e.resolve(b),C=(0,h.Yy)(A),D=function(a,b){if(0===a.length)return[];let c=new Set(b.map(a=>a.relativePath)),d=[],e=new Set;for(let f of a){let a=f.materialRootPath.replace(/^\/+|\/+$/gu,"");for(let f of c.has(a)?[a]:b.filter(b=>{var c;return b.relativePath.startsWith(`${a}/`)&&"disk"!==(c=b).status&&"error"!==c.status&&Number(c.indexedAt||0)>0&&Number(c.chunkCount||0)>0}).map(a=>a.relativePath))e.has(f)||(e.add(f),d.push(f))}return d}(z,C);if(0===z.length?u.push({level:"error",message:"模板未绑定项目资料包,请先选择需要参与生成的项目文件夹。"}):0===D.length&&u.push({level:"error",message:"模板绑定的项目资料包不存在或没有可用索引文件,请重新选择项目资料包。"}),t&&(f=(0,l.P)(A,{requirement:d.requirement,boundFilePaths:D}),0===z.length&&!f.source.ambiguous&&f.source.selectedFiles>0)){let a=u.findIndex(a=>"error"===a.level&&"模板未绑定项目资料包,请先选择需要参与生成的项目文件夹。"===a.message);a>=0&&u.splice(a,1)}let F=new Map(C.map(a=>[a.relativePath,a])),H=[],I=D.map(a=>{let b=F.get(a);return b||u.push({level:"error",message:`知识库文件不存在:${a}`}),b&&("disk"===b.status||0===b.indexedAt)&&H.push({level:"warning",message:`知识库文件存在但尚未完成索引:${a}`}),b?.status==="error"&&u.push({level:"warning",message:`知识库文件索引失败:${a}${b.errorMessage?`,${b.errorMessage}`:""}`}),b&&0===b.chunkCount&&u.push({level:"warning",message:`知识库文件暂无可检索内容切片:${a}`}),{filePath:a,roleId:"project_material",roleName:"项目资料包",exists:!!b,indexed:!!(b&&b.indexedAt>0&&"disk"!==b.status),chunkCount:b?.chunkCount??0,vectorReady:!!(b&&b.chunkCount>0)}}),J=I.filter(a=>a.exists).length,K=I.filter(a=>a.exists&&!a.indexed).length;J>0&&K===J?u.push({level:"error",message:`模板绑定的项目资料包(${J} 份文件)均尚未完成解析入库,请等待后台索引完成后再运行模板`}):u.push(...H);let L=B(y),M=new Set(x?.promptRoles.map(a=>a.roleId)||[]);for(let a of x?.promptRoles||[]){let b=v.find(b=>b.id===a.roleId);if(!b){u.push({level:"error",message:`提示词角色不存在:${a.roleId}`});continue}0===(b.resourceIds?.length?b.resourceIds:b.resourceId?[b.resourceId]:[]).length&&u.push({level:"error",message:`提示词角色未绑定资源:${b.name}`})}let N=y.map(a=>{let b=v.find(b=>b.id===a.roleId),c=L.find(b=>b.id===a.promptId);return b||u.push({level:"error",message:`提示词角色不存在:${a.roleId}`}),M.has(a.roleId)||u.push({level:"error",message:`提示词绑定不属于当前项目角色配置:${a.roleId}`}),c||u.push({level:"error",message:`提示词不存在:${a.promptId}`}),c&&!c.content.trim()&&u.push({level:"warning",message:`提示词为空:${c.name}`}),{...a,roleName:b?.name,promptTitle:c?.name,promptSource:c?.source,contentLength:c?.content.length??0,contentHash:c?.contentHash,contentPreview:c?.contentPreview,exists:!!c}}),Q=(x?.promptRoles||[]).map(a=>{let b=v.find(b=>b.id===a.roleId),c=b?b.resourceIds?.length?b.resourceIds:b.resourceId?[b.resourceId]:[]:[],d=y.filter(b=>b.roleId===a.roleId).map(a=>a.promptId),e=b?0===c.length?"missing_resource":0===d.length?"missing_prompt":"ok":"role_missing";return{roleId:a.roleId,roleName:b?.name,order:a.order,resourceIds:c,boundPromptIds:d,status:e}});if(L.length>1)try{let{detectPromptRuleConflicts:a}=await c.e(1001).then(c.bind(c,71001));for(let b of a(L.map(a=>({promptId:a.id,name:a.name,roleId:a.roleId,content:a.content}))))u.push({level:b.level,message:`提示词规则冲突:${b.message}`})}catch{}if(t){let a=f||(0,l.P)(A,{requirement:d.requirement,boundFilePaths:D}),b=function(a,b){let c=function(a,b){let c=[a.name,a.category,a.description,a.outputTitle,...a.chapters.flatMap(a=>[a.title,a.purpose])].join("\n"),d=new Set(["project_overview","scope_description"]);return/需求|规则|响应|方案|实施|专项|安全|质量|进度|合规|施工组织|技术标/iu.test(c)&&["requirement_document","structured_data"].forEach(a=>d.add(a)),(/安全|质量|进度|工期|文明|环保|验收/iu.test(c)||b.materialInventory.schedule_quality_safety.length>0)&&d.add("schedule_quality_safety"),(/设计|图纸|平面|立面|剖面|做法/iu.test(c)||b.materialInventory.design_specification.length>0)&&d.add("design_specification"),(/风险|重点|难点|约束|现场|危大/iu.test(c)||b.materialInventory.risk_constraints.length>0)&&d.add("risk_constraints"),d}(a,b);return[...new Set([...function(a){let b=[a.name,a.description,a.outputTitle,...a.chapters.flatMap(a=>[a.title,a.purpose,...a.requiredFacts||[],...a.queries||[]])].join("\n"),c=new Set((0,m.t0)(b,m.hW));return c.add("project_overview"),c.add("scope_description"),[...c]}(a),...c])].map(a=>{let d=b.materialInventory[a]||[],e=c.has(a),f=d.length>0,g=f&&d.length<(e?2:1);return{role:a,required:e,satisfied:f,weak:g,evidenceCount:d.length,filePaths:d.map(a=>a.filePath),reason:f?`已匹配 ${d.length} 个资料文件`:e?"必需资料角色缺失":"可选资料角色缺失"}})}(t,a);for(let c of(g=(0,n.$)({template:t,spec:(0,k.x)(t).spec,summary:a,resolvedRoles:b})).blockingIssues)u.push({level:"error",message:`生成准备度不足:${c}`});for(let a of g.warnings)u.push({level:"warning",message:a})}try{let a=(0,k.x)(t).spec,{effectiveTemplateChapters:b}=await Promise.resolve().then(c.bind(c,70208)),e=b(t,a),f=t.generationSettings||t.exportSettings,g=(0,p.q6)(t.exportSettings||t.generationSettings),h=(0,p.py)(d.requirement||""),i=f?.targetPages?.target||f?.targetPages?.min,l=h.targetChars||(h.targetPages?h.targetPages*g:void 0)||(i?i*g:void 0),m=e.reduce((b,c)=>b+Math.max(a.chapterRules.find(a=>a.id===c.id||a.title===c.title)?.minWords||0,a.dynamicChapterRule.minWordsPerChapter||0),0),n=Math.round(l||m||1200*e.length),o=D.reduce((a,b)=>a+(F.get(b)?.chunkCount??0),0),{previewGenerationBudgetForTemplate:r}=await Promise.all([c.e(1001),c.e(8163),c.e(9227)]).then(c.bind(c,79227));j=r({template:t,chapters:e,requirement:d.requirement,materialFileCount:D.length,evidenceCount:o,targetWords:n,hasVeryLargeExplicitChapter:e.some(a=>(a.sections||[]).filter(Boolean).length>=30),configuredChapterConcurrency:(0,q.z)().chapterConcurrency||0})}catch{}try{s=(0,r.ze)({templateName:t.name,chapterTitles:t.chapters.map(a=>a.title)})}catch{}return{templateId:a,projectRoleConfigId:w,configName:x?.name,fileDiagnostics:I,promptDiagnostics:N,roleDiagnostics:Q,readiness:g,issues:u,strategyPreview:j,referenceStructureSuggestion:s}}let H=new Map,I=Math.max(5e3,Number(process.env.DOCUMENT_TEMPLATE_VALIDATION_CACHE_TTL_MS??3e4));async function J(a,b=(0,h.aY)(),c={}){let d=e.resolve(b),f=E(a),g=(0,h.Yy)(d),i=JSON.stringify({templateId:a,templateVersion:f?.version??0,templateUpdatedAt:f?.updatedAt??0,projectRoot:d,requirement:c.requirement??"",fileCount:g.length,lastFileMtime:g.reduce((a,b)=>Math.max(a,b.mtime),0)}),j=H.get(i);if(j&&Date.now()-j.at<I)return j.result;let k=await G(a,d,c);return H.set(i,{at:Date.now(),result:k}),k}function K(a){if(new Set((0,j.V)().templates.map(a=>a.id)).has(a))throw Error("Configured template cannot be deleted");x(w().filter(b=>b.id!==a))}function L(a){let b=E(a);if(!b)throw Error("Document template not found");let c=Date.now(),d=v({...b,id:`${b.id}-copy-${c}`,name:`${b.name} Copy`,builtIn:!1,version:1,updatedAt:c,changeLog:[{version:1,timestamp:c,summary:`从 ${b.id} v${b.version||1} 复制`}]}),e=w();return e.push(d),x(e),d}function M(a,b){try{return RegExp(b,"iu").test(a)}catch{return a.includes(b)}}function N(a,b){return(function(a){let b=`${a.name} ${a.category} ${a.outputTitle} ${a.description}`;return(0,j.V)().chapterTitleFilters.filter(a=>a.templateMatchers.some(a=>M(b,a)))})(b).some(b=>!!b.minLength&&a.length<b.minLength||!!b.maxLength&&a.length>b.maxLength||b.forbiddenPatterns.some(b=>M(a,b)))}function O(a){return a.projectRoleConfigId||void 0}function P(a){let b=O(a);return b?(0,i.Mu)(b):void 0}function Q(a){let b=new Set,c=[];for(let d of a){let a=`${d.roleId}:${d.promptId}`;!d.promptId||!d.roleId||b.has(a)||(b.add(a),c.push(d))}return c}function R(a){let b=P(a);if(!b)return[];let c=(0,i.XB)("prompt"),d=[];for(let a of[...b.promptRoles].sort((a,b)=>a.order-b.order)){let b=c.find(b=>b.id===a.roleId),e=b?b.resourceIds?.length?b.resourceIds:b.resourceId?[b.resourceId]:[]:[];b&&0!==e.length&&d.push(...e.map(a=>({promptId:a,roleId:b.id})))}return Q(d)}},28103:(a,b,c)=>{c.d(b,{WT:()=>x,aF:()=>w,cG:()=>e});var d=c(52922);let e=["房建","市政","公路","桥梁与隧道","水利水电","电力","机电安装","装饰装修","园林绿化","铁路","港口与航道","矿山冶金","其他"],f=/(?:\d+(?:\.\d+)?\s*(?:mm|cm|m|㎡|m²|m2|m3|m³|kg|t|MPa|kPa|kN|V|KV|kV|A|天|%)(?![a-zA-Z\u4e00-\u9fa5])|\d+(?:\.\d+)?\s*(?:米|厘米|毫米|吨|千克|公斤|平方米|立方米)(?!\d)|(?:养护|搭接长度|试验压力|间距|偏差|坡度|含水率|压实度|强度等级|标号|厚度|宽度|高度|深度|直径|桩长|桩径))/gu,g=/→|->|=>|按.{0,12}顺序|依次|先后|先.{0,10}后|顺序施工|流水顺序|[\u4e00-\u9fa5]+(?:-|—|~|~)[\u4e00-\u9fa5]+(?:-|—|~|~)[\u4e00-\u9fa5]+/u,h=/^(?:[一二三四五六七八九十\d]+[、..]?\s*)?[\u4e00-\u9fa5()()、,A-Za-z0-9+\-·\s]{2,28}(?:表|清单)(?:[::]|\s*$)/mu,i=/^第([一二三四五六七八九十百千\d]+)[章篇][、..]?\s*(.{2,60})$/mu,j=/^\d+[、..](?!\d)\s*(.{2,20})$/mu,k=/^[一二三四五六七八九十]+[、..]\s*(.{2,20})$/mu,l=/^第[一二三四五六七八九十\d]+[节条][、..]?\s*(.{2,30})$/mu,m=/^(?:[一二三四五六七八九十]+、\s*(.{2,20})|[((][一二三四五六七八九十\d]+[))]\s*(.{2,20})|\d+\.\d+(?:\.\d+)*[、..\s]\s*(.{2,20}))$/mu,n=/\.{4,}|\.{2,}\s*\d{1,3}\s*$|—\d+—|第\s*\d+\s*页|^\d{1,3}$/u,o=/[,、;:]/u,p=/[,。;:?!]/u;function q(a){return a.trim().replace(/^(?:#+\s*)+/u,"").trim()}function r(a){return a.replace(/[\s..·]+\d{1,3}$/u,"").replace(/\s+/gu,"").trim()}function s(a){return a.length>=2&&!o.test(a)&&!/[。,;]$/u.test(a)}function t(a){if(/^\d+$/u.test(a))return Number.parseInt(a,10);let b={零:0,一:1,二:2,三:3,四:4,五:5,六:6,七:7,八:8,九:9},c=0,d=0,e=!1;for(let f of a){if("十"===f){c+=10*(d||1),d=0,e=!0;continue}if("百"===f){c+=100*(d||1),d=0,e=!0;continue}if("千"===f){c+=1e3*(d||1),d=0,e=!0;continue}let a=b[f];if(void 0===a)return Number.MAX_SAFE_INTEGER;d=a,e=!0}return e?c+d:Number.MAX_SAFE_INTEGER}let u=/(?:养护|搭接长度|试验压力|间距|偏差|坡度|含水率|压实度|强度等级|标号|厚度|宽度|高度|深度|直径|桩长|桩径)/gu,v=/(?:\d+(?:\.\d+)?\s*(?:mm|cm|m|㎡|m²|m2|m3|m³|kg|t|MPa|kPa|kN|V|KV|kV|A|天|%)(?![a-zA-Z\u4e00-\u9fa5])|\d+(?:\.\d+)?\s*(?:米|厘米|毫米|吨|千克|公斤|平方米|立方米)(?!\d))/gu;function w(a){let b,c=[["市政",/市政|管网|排水|给水|雨污|污水|燃气/gu],["公路",/公路|路基|路面|沥青/gu],["桥梁与隧道",/桥梁|隧道/gu],["水利水电",/水利|河道|灌溉|防洪/gu],["电力",/电力|供配电|电压|电缆/gu],["机电安装",/机电|暖通|通风|空调|消防|给排水|智能化|电梯/gu],["装饰装修",/装饰|装修|幕墙/gu],["园林绿化",/园林|绿化|景观|苗木/gu],["铁路",/铁路|轨道/gu],["港口与航道",/港口|航道/gu],["矿山冶金",/矿山|冶金/gu],["房建",/房建|建筑|住宅|楼|结构|砌体|基坑|地下室|主体|层高|户型|公共建筑|产业园|厂房/gu]].map(([b,c])=>(c.lastIndex=0,{type:b,count:(a.match(c)||[]).length})).sort((a,b)=>b.count-a.count),d=c[0],e=0,f=0;for(let[c,d]of[["房建",/产业园|标准厂房|安置房|住宅小区|保障房|卫生院|门诊楼|办公楼/gu],["市政",/老旧小区|海绵城市|雨污分流|管网改造|管廊/gu],["桥梁与隧道",/桥梁|隧道|盾构|箱梁|斜拉|悬索|涵洞/gu],["公路",/公路|路基|路面|沥青|桩号|互通|匝道/gu],["水利水电",/堤防|水库|泵站|水闸|疏浚|节制闸|水电站|大坝|围堰/gu],["电力",/变电站|输电线路|配电|GIS设备|电缆|架空线路|铁塔|箱变/gu],["铁路",/铁路|轨道|道床|站台|信号机|接触网/gu],["港口与航道",/港口|码头|航道|护岸|堆场|泊位/gu],["矿山冶金",/矿山|矿井|选矿|冶炼|尾矿|轧钢/gu]]){d.lastIndex=0;let g=(a.match(d)||[]).length;g>=3&&g>e?(f=e,b=c,e=g):g>f&&(f=g)}if(b){if(f>0&&e<2*f&&d&&d.count>e)return d.type;let a=c.find(a=>a.type===b)?.count||0;return d&&d.type!==b&&d.count>2*a&&d.count>=2*e?d.type:b}return d&&d.count>0?d.type:"其他"}async function x(a){let b=a.replace(/\s/gu,"").length,c=a.split(/\n+/u).map(a=>a.replace(/\s+/gu," ").trim()).filter(a=>a.length>=16&&/[\u4e00-\u9fa5]/u.test(a)),e=c.reduce((a,b)=>a+b.replace(/\s/gu,"").length,0),o=(a.match(f)||[]).length,w=c.filter(a=>g.test(a)).length,x=function(a){let b=0,c=a.split(/\n+/u);for(let a=0;a<c.length;a+=1){let d=q(c[a]||"");if(d){if(h.test(d)||/^┌─/u.test(d)){b+=1;continue}if(/^\|.*\|.*\|$/u.test(d)){let d="";for(let b=a-1;b>=0&&b>=a-3;b-=1){let a=q(c[b]||"");if(a){d=a;break}}/^\|.*\|.*\|$/u.test(d)||h.test(d)||(b+=1)}}}return b}(a),{headings:y,useCnAsChapter:z}=function(a){let b,c=new Map,d=[],e=[],f=a.split(/\n+/u);for(let a=0;a<f.length;a+=1){let b=q(f[a]);if(!b||n.test(b))continue;let d=i.exec(b);if(d){let b=r(d[2]||"");b.length>=2&&!p.test(b)&&c.set(d[1],function(a,b,c){if(a.length<20)return a;let d=q(b[c+1]||"");if(d.length<2||d.length>15||!/[\u4e00-\u9fa5]/u.test(d)||n.test(d)||i.test(d)||l.test(d)||m.test(d)||j.test(d)||k.test(d))return a;let e=a+d;return e.length<=60?e:a}(b,f,a));continue}let g=k.exec(b);if(g){let a=r(g[1]||"");s(a)&&e.push(a)}}if(0===c.size)for(let a of f){let b=q(a);if(!b||n.test(b))continue;let c=j.exec(b);if(c){let a=r(c[1]||"");s(a)&&d.push(a)}}let g=!1;return c.size>0?b=[...c.entries()].sort((a,b)=>t(a[0])-t(b[0])).map(([,a])=>a):d.length>=2?b=d:(b=e,g=!0),{headings:[...new Set(b)],useCnAsChapter:g}}(a),A=y.length,{subsectionCount:B,subitemCount:C}=function(a,b){let c=0,d=0;for(let e of a.split(/\n+/u)){let a=q(e);if(!a||n.test(a))continue;let f=l.exec(a);if(f){s(r(f[1]||""))&&(c+=1);continue}let g=m.exec(a);if(g){if(!s(r(g[1]||g[2]||g[3]||""))||b&&void 0!==g[1])continue;d+=1}}return{subsectionCount:c,subitemCount:d}}(a,z),D=new Map;for(let a of c){let b=a.replace(/[\d\s,。、;:""''()()%…—\-·]/gu,"");b.length<8||D.set(b,(D.get(b)||0)+1)}let E=0;for(let a of D.values())a>1&&(E+=a);let F=await (0,d.Pm)(a);return{wordCount:b,effectiveWordCount:e,paramDensity:e>0?1e3*o/e:0,paramCount:o,arrowChainCoverage:c.length>0?w/c.length:0,duplicationRate:c.length>0?E/c.length:0,tableCount:x,sectionCount:A,subsectionCount:B,subitemCount:C,avgSectionWords:A>0?Math.round(e/A):0,headingStructure:y,tableTitles:function(a){let b=[];for(let c of a.split(/\n+/u)){let a=q(c);a&&!(a.length>40)&&!(a.length<3)&&h.test(a)&&b.push(a)}return[...new Set(b)]}(a),paramTokens:function(a){let b=new Map;for(let c of a.match(u)||[])b.set(c,(b.get(c)||0)+1);let c=(a.match(v)||[]).length;return c>0&&b.set("数值参数(数字+单位)",(b.get("数值参数(数字+单位)")||0)+c),[...b.entries()].map(([a,b])=>({token:a,count:b})).sort((a,b)=>b.count-a.count)}(a),segmentCount:c.length,arrowChainSegmentCount:w,duplicatedSegmentCount:E,fiveElementCompleteBlocks:F.completeBlocks}}},29281:(a,b,c)=>{c.d(b,{I:()=>f});var d=c(96770);let e=null;function f(){return e||(e=new d.ConfigStore),e}},37047:(a,b,c)=>{c.d(b,{Bd:()=>k,Eh:()=>g,Mv:()=>n,VN:()=>f});var d=c(19898);let e=null;function f(){return e||(e=new d.LocalTransformersEmbeddingProvider({})),e}let g=.6,h=new Map,i=0,j=0;function k(){return{embedCacheHits:i,embedCacheMisses:j}}async function l(a,b){let c=b?await b(a):await f().embedDocuments(a);if(c.length!==a.length)throw Error(`本地语义模型嵌入数量不一致:期望 ${a.length} 条,实际 ${c.length} 条`);return c}async function m(a,b){if("0"===process.env.DOCUMENT_EMBED_CACHE)return l(a,b);let c=Array(a.length),d=[],e=new Map;for(let b=0;b<a.length;b+=1){let f=a[b];if(f.length<=2e3){let a=h.get(f);if(a){c[b]=a,i+=1,h.delete(f),h.set(f,a);continue}}let g=e.get(f);g?g.push(b):(e.set(f,[b]),d.push(f))}if(0===d.length)return c;let f=await l(d,b),g=function(){let a=Number(process.env.DOCUMENT_EMBED_CACHE_SIZE||4e4);return Number.isFinite(a)&&a>0?a:4e4}();for(let a=0;a<d.length;a+=1){let b=d[a],i=f[a],k=e.get(b);for(let a of k)c[a]=i;if(b.length<=2e3&&(j+=k.length,h.set(b,i),h.size>g)){let a=h.keys().next().value;void 0!==a&&h.delete(a)}}return c}async function n(a,b,c){if(0===a.length||0===b.length)return()=>0;let d=[...a,...b],e=await m(d,c),f=new Map;for(let a=0;a<d.length;a++)f.has(d[a])||f.set(d[a],e[a]);return(a,b)=>{let c=f.get(a),d=f.get(b);if(!c||!d)return 0;let e=Math.min(c.length,d.length),g=0;for(let a=0;a<e;a++)g+=c[a]*d[a];return g}}},41991:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(37047);function e(a,b){let c=Math.min(a.length,b.length),d=0;for(let e=0;e<c;e++)d+=a[e]*b[e];return d}async function f(a){if(0===a.prototypes.length)return async a=>a.map(()=>!1);let b=a.threshold??d.Eh,c=a.negativePrototypes??[],f=[...a.prototypes,...c],g=a.prototypes.length,h=a.embedDocuments?null:(0,d.VN)(),i=a.embedDocuments?await a.embedDocuments(f):await h.embedDocuments(f);if(i.length!==f.length)throw Error(`本地语义模型嵌入数量不一致:期望 ${f.length} 条,实际 ${i.length} 条`);return async d=>{if(0===d.length)return[];let f=d.map(()=>!1),j=d.map((b,c)=>a.lexicalHints&&!a.lexicalHints.test(b)?-1:c).filter(a=>a>=0);if(0===j.length)return f;let k=j.map(a=>d[a]),l=a.embedDocuments?await a.embedDocuments(k):await h.embedDocuments(k);return j.forEach((a,d)=>{let h=l[d];if(!h)return;let j=Math.max(...i.slice(0,g).map(a=>e(h,a))),k=c.length?Math.max(...i.slice(g).map(a=>e(h,a))):0;j>=b&&(0===c.length||j>k)&&(f[a]=!0)}),f}}},44533:(a,b,c)=>{c.d(b,{NW:()=>j,Qh:()=>k,VS:()=>o,Yy:()=>n,a2:()=>i,aY:()=>m,q1:()=>p});var d=c(19898),e=c(33873),f=c(21820),g=c(29021);let h=null;function i(){return e.join(f.homedir(),".customize-agent")}function j(a){return(0,d.getProjectKbPath)(e.resolve(a))}function k(){return h||(h=new d.MultiProjectManager(i())),h}function l(a){let b=e.resolve(a),c=e.resolve(e.join(f.homedir(),".customize-agent"));return!(g.existsSync(e.join(b,"pnpm-workspace.yaml"))&&g.existsSync(e.join(b,"apps","server")))&&(b===c||b.includes(`${e.sep}.customize-agent${e.sep}`)||b.endsWith(`${e.sep}apps${e.sep}server`)||b.endsWith(`${e.sep}apps${e.sep}cli`))}function m(){let a=process.env.CUSTOMIZE_PROJECT_ROOT??process.env.INIT_CWD;if(a&&g.existsSync(a)&&!l(a))return e.resolve(a);let b=function(){let a=e.join(i(),"projects","registry.db");if(!g.existsSync(a))return[];let b=new((0,d.loadBetterSqlite3)())(a,{readonly:!0});try{return b.prepare("SELECT project_root FROM project_registry ORDER BY last_opened_at DESC").all().map(a=>e.resolve(a.project_root)).filter(a=>!l(a))}finally{b.close()}}();return b.length>0?b[0]:process.env.INIT_CWD&&!l(process.env.INIT_CWD)?process.env.INIT_CWD:e.resolve(process.cwd(),"../..")}function n(a,b={}){let c=new Map;for(let b of function(a){let b=e.join(f.homedir(),".customize-agent","projects",(0,d.computeProjectId)(e.resolve(a)),"kb.db");if(!g.existsSync(b))return[];let c=new d.IndexStateStore(b);try{return c.listRecords().map(a=>({...a,matchedBy:"metadata"}))}finally{c.close()}}(a))c.set(b.relativePath,b);for(let b of function(a){let b=j(a);if(!g.existsSync(b))return[];let c=[],d=a=>{for(let f of g.readdirSync(a,{withFileTypes:!0})){let h=e.join(a,f.name);if(f.isDirectory()){d(h);continue}if(f.name.endsWith(".source.txt"))continue;let i=g.statSync(h),j=e.relative(b,h).split(e.sep).join("/");c.push({relativePath:j,category:j.includes("表格数据/")?"spreadsheet":j.includes("图片素材/")?"image":j.includes("图纸文件/")?"cad":j.includes("文档资料/")?"document":"other",format:e.extname(j).slice(1).toLowerCase()||"text",contentHash:"",fileSize:i.size,mtime:i.mtimeMs,chunkCount:0,collectionName:"",indexedAt:0,lastVerifiedAt:0,status:"disk",matchedBy:"disk"})}};return d(b),c}(a)){let a=c.get(b.relativePath);c.set(b.relativePath,a?{...a,fileSize:b.fileSize,mtime:b.mtime,matchedBy:"metadata"}:b)}return Array.from(c.values()).filter(a=>!b.category||a.category===b.category).sort((a,b)=>b.mtime-a.mtime||a.relativePath.localeCompare(b.relativePath,"zh-CN"))}async function o(a,b={}){let c=(b.query||"").trim(),d=Math.max(1,Math.min(500,b.limit??50)),e=new Map,f=n(a,{category:b.category});for(let a of f)(!c||`${a.relativePath}
|
|
21
21
|
${a.category}
|
|
22
22
|
${a.format}
|
|
23
23
|
${a.status}`.toLowerCase().includes(c.toLowerCase()))&&e.set(a.relativePath,{...a,matchedBy:c?"path":a.matchedBy});if(c&&!1!==b.includeContent)try{for(let b of(await k().search(a,c,{limit:Math.max(20,d)})).results){let a=b.filePath,c=e.get(a)||f.find(b=>b.relativePath===a);e.set(a,{...c||{relativePath:a,category:"content",format:"knowledge",fileSize:0,mtime:0,chunkCount:0,indexedAt:0,lastVerifiedAt:0,status:"active"},matchedBy:"content",score:b.score})}}catch{}let g=Array.from(e.values()).sort((a,b)=>{let c=a=>"content"===a.matchedBy?3:"path"===a.matchedBy?2:+("metadata"===a.matchedBy);return c(b)-c(a)||(b.score??0)-(a.score??0)||b.mtime-a.mtime||a.relativePath.localeCompare(b.relativePath,"zh-CN")});return{files:g.slice(0,d),total:g.length}}async function p(a,b){let c=new Set;for(let a of b){let b=a.replace(/\\/gu,"/").split("/").filter(Boolean)[0];b&&c.add(b)}return 0===c.size?{deletedChunks:0,deletedFiles:0}:(await k().getProject(a)).syncIndexWithBoundGroups([...c])}},51144:(a,b,c)=>{function d(a,b,c,e="items"){let f=c.maxItems??Number.MAX_SAFE_INTEGER,g=c.maxChars??Number.MAX_SAFE_INTEGER,h=c.charFn??(a=>JSON.stringify(a).length),i=a.map(a=>({item:a,score:b(a)}));i.sort((a,b)=>b.score-a.score);let j=[],k=[],l=0;for(let{item:a}of i){let b=h(a);j.length<f&&l+b<=g?(j.push(a),l+=b):k.push(a)}let m=[];if(k.length>0){for(let a of(m.push(`[selection] ${e}: 预算 ${f}项/${g}字符 → 选中 ${j.length}项(${l}字符),丢弃 ${k.length}项`),k.slice(0,10))){let b="string"==typeof a?a.slice(0,80):JSON.stringify(a).slice(0,80);m.push(` - 丢弃: ${b}`)}k.length>10&&m.push(` ... 及其他 ${k.length-10} 项`)}return{selected:j,dropped:k,droppedLog:m}}function e(a){let b=0,c=a.length;return 0===c?0:(b+=3*(a.match(/\d+(?:\.\d+)?/gu)||[]).length,/m[23²³]?|mm|cm|km|t|kg|台|套|个|项|批|次|份|人|日历天|天|月|万元|元|%|MPa|kPa|kN|℃/iu.test(a)&&(b+=2),/GB|JGJ|ISO|CJJ|CECS|DL|YB|SH|HG|SY|NB/iu.test(a)&&(b+=3),/验收|质量|安全|工期|进度|成本|风险|危大|重点|难点|关键|控制|标准|规范|设计|施工|材料|设备/u.test(a)&&(b+=1),c<20&&(b-=1),/项目名称|工程名称|招标人|建设地点|计划工期|质量标准|合同估算/u.test(a)&&(b+=2),b)}c.d(b,{Cr:()=>d,Ox:()=>e})},52922:(a,b,c)=>{c.d(b,{Bt:()=>m,JD:()=>A,J_:()=>j,Pm:()=>o,T4:()=>w,Ye:()=>k,bH:()=>D,gE:()=>r,nY:()=>F,vm:()=>l});var d=c(37047),e=c(41991);let f=["基本满足","大致符合","力争","原则上","大概","左右","尽可能","尽量满足"],g=/基本|大致|力争|原则上|大概|左右|尽可能|尽量/u,h=["基本满足招标文件要求","大致符合相关规范标准","力争达到优良质量标准","原则上按照规范执行","尽可能保证工程质量","尽量满足工期要求"],i=["结构构件左右对称布置","平面布置左右对称合理","力争上游的企业精神"];async function j(a){return(0,e.A)({prototypes:[...h],negativePrototypes:[...i],lexicalHints:g,embedDocuments:a})}function k(a){return f.filter(b=>a.includes(b)).map(b=>({phrase:b,count:a.split(b).length-1}))}let l=["精心组织、科学管理,确保工程质量","严格执行相关规范和设计要求","根据实际情况适当调整施工安排","建立健全管理体系,加强过程管理","全力保障项目顺利推进"];async function m(a,b){let c=a.split(/\n+/u).filter(a=>a.trim()&&!/^\s*(#{1,6}\s+|\||[-*+]\s|>)/u.test(a)).flatMap(a=>a.split(/[。;;]/u)).map(a=>a.trim()).filter(a=>a.length>=12),e=await (0,d.Mv)(c,[...l],b),f=await j(b),h=await f(c),i=c.filter(a=>g.test(a)).length,k=h.filter(Boolean).length,m=c.map((a,b)=>l.some(b=>e(a,b)>=d.Eh)||h[b]),n=m.filter(Boolean).length,o=[...new Set(c.filter((a,b)=>m[b]))].slice(0,40),p=c.length?n/c.length:0;return{totalSentences:c.length,fillerSentences:n,ratio:p,level:p>=.4?"heavy":p>=.2?"medium":"light",vagueCandidateSentences:i,vagueSemanticSentences:k,fillerSentenceDetails:o}}let n={plan:"制定专项施工方案与管理制度,明确技术措施",process:"施工工序流程与工艺步骤顺序",role:"由项目经理、技术负责人等岗位人员分工负责",frequency:"每日、每周等检查频次与时间节点安排",acceptance:"经检查验收合格后整改销项闭环"};async function o(a,b){let c=a.split(/\n{2,}/u).filter(a=>a.trim().length>=30),e=Object.values(n),f=await (0,d.Mv)(c,e,b),g=/项目经理|技术负责人|施工员|质检员|安全员|材料员|资料员|测量员|劳资员|班组长|监理工程师|试验员/u,h=/每日|每天|每周|每月|每季度|每批|不少于\s*\d+\s*次|至少\s*\d+\s*次|每周\s*\d+\s*次|每日\s*\d+\s*次|每\s*\d+\s*日/u,i=/整改|复查|销项|复验|闭环|返工/u,j=/专项施工方案|专项方案|施工方案|施工组织设计|技术措施|管理制度|技术交底|作业指导书|操作规程/u,k=/施工工序|工艺流程|施工流程|作业流程|施工顺序|施工步骤|工艺步骤|流水段|流水作业|依次施工|工序/u,l=(a,b)=>{let c=(b!==n.plan||!!j.test(a))&&(!!(b===n.plan&&j.test(a))||(b!==n.process||!!k.test(a))&&(!!(b===n.process&&k.test(a))||(b!==n.role||!!g.test(a))&&(!!(b===n.role&&g.test(a))||(b!==n.frequency||!!h.test(a))&&(!!(b===n.frequency&&h.test(a))||(b!==n.acceptance||!!i.test(a))&&(!!(b===n.acceptance&&i.test(a))||void 0)))));return void 0!==c?c:f(a,b)>=d.Eh},m=0,o=0,p=0;for(let a of c)e.filter(b=>l(a,b)).length>=4?m+=1:l(a,n.role)&&l(a,n.frequency)||(o+=1),l(a,n.role)&&l(a,n.frequency)&&l(a,n.acceptance)&&(p+=1);return{blocks:c.length,completeBlocks:m,incompleteBlocks:o,closedLoopBlocks:p}}let p="分析该工程难点的成因与风险来源",q=/\d+(?:\.\d+)?\s*(?:mm|cm|m|米|℃|%|kN|MPa|次|天|日历天|小时|h|Hz|m³|㎡|m²|t|吨|座|套|个)/u;async function r(a,b){let c=function(a){let b=a.match(/#{2,3}\s*[^\n]*(?:重难点|重点难点|工程难点|难点分析)[^\n]*\n/u);if(b&&void 0!==b.index){let c=b.index+b[0].length,d=a.slice(c),e=d.search(/^#{2,3}\s+/mu);return e>=0?d.slice(0,e):d}let c=a.match(/^\|?\s*[^\n]*重难点[^\n]*\|\s*$/mu);if(!c||void 0===c.index)return"";let d=a.slice(c.index).split(/\n/u),e=[];for(let a of d){let b=a.trim();if(!b||!b.startsWith("|")){if(e.length>0)break;continue}e.push(a)}return e.join("\n")}(a),e=c.trim().startsWith("|")?c.split(/\n/u).filter(a=>{let b=a.trim();return b.startsWith("|")&&!/^\|\s*-+\s*\|/u.test(b)&&!/重难点/u.test(b.split("|")[1]||"")}).filter(a=>a.trim().length>=20):c.split(/\n{2,}/u).filter(a=>a.trim().length>=20),f=await (0,d.Mv)(e,[p],b),g=0,h=0,i=0,j=[];for(let a of e){let b=f(a,p)>=d.Eh,c=q.test(a);b&&(g+=1),c&&(h+=1),b&&c&&(i+=1),j.push({text:a,attributed:b,quantified:c})}let k=e.length?i/e.length:0;return{countermeasures:e.length,attributed:g,quantified:h,bothCount:i,ratio:k,heavyTemplated:e.length>0&&k<.5,entries:j.slice(0,24)}}let s=/建筑业10项新技术|10项新技术|安徽省住房城乡建设领域新技术推广目录|新技术推广目录|建设领域推广/u,t=/替代|取代|淘汰.{0,10}(?:工艺|技术|做法)|(?:较|比).{0,10}(?:传统|常规|普通)/u,u=/(?:提升|提高|节省|节约|降低|缩短|减少).{0,10}(?:效率|工期|成本|损耗|能耗|人工|周期)|升级价值|效益显著/u,v=["BIM","铝模","附着式升降脚手架","跳仓法","直螺纹","装配式","灌浆套筒","自动化监测","智慧工地","再生利用","非开挖","CCTV","碳纤维","薄贴法","干法施工","液压提升","预制","光伏一体化","BIPV","模块化"];function w(a){let b=v.filter(b=>a.includes(b)),c=s.test(a),d=t.test(a),e=u.test(a),f=[c,d,e].filter(Boolean).length;return{found:[...b],catalogCited:c,replaceClaimed:d,upgradeClaimed:e,effective:b.length>0&&f>=2}}let x=[/基坑|沟槽/u,/模板支撑|高支模/u,/脚手架|悬挑|附着式/u,/起重吊装|吊装/u,/幕墙/u,/人工挖孔桩/u,/装配式|钢结构安装/u,/拆除工程/u,/顶管|盾构|暗挖/u,/有限空间|水下作业/u,/吊篮/u,/塔吊|施工电梯|升降机/u,/沉井/u],y=/超危大|超规模|专家论证|一般危大/u,z=/(?:深度|高度|跨度|开挖).{0,8}\d+(?:\.\d+)?\s*(?:m|米)|(?:重量|吊装).{0,8}\d+(?:\.\d+)?\s*(?:kN|千牛)/u;function A(a){let b=x.filter(b=>b.test(a)).map(a=>a.source.replace(/\\u\w*|\\|\(|\||\)/gu,"")),c=y.test(a),d=z.test(a);return{categories:b,graded:c,paramMatched:d,twoStepComplete:b.length>0&&c&&d}}let B=[{name:"总则",pattern:/总则/u},{name:"组织机构及职责",pattern:/应急(?:组织|领导)|组织机构|应急指挥部|应急小组/u},{name:"风险分析与危险源辨识",pattern:/风险分析|危险源辨识|风险辨识/u},{name:"应急物资设备通讯保障",pattern:/应急物资|物资.{0,8}(?:保障|储备)|通讯保障|通信保障/u},{name:"专项应急预案",pattern:/专项应急预案|专项预案/u},{name:"应急响应流程",pattern:/应急响应|响应流程|响应程序/u},{name:"后期处置",pattern:/后期处置|善后|事故调查/u},{name:"培训演练",pattern:/(?:应急)?演练|培训.{0,6}演练/u}],C=["高处坠落","物体打击","坍塌","触电","火灾","起重","防汛","防台风","中暑","中毒窒息","管线破坏"];function D(a){let b=B.filter(b=>b.pattern.test(a)).map(a=>a.name),c=B.filter(b=>!b.pattern.test(a)).map(a=>a.name),d=C.filter(b=>a.includes(b));return{coveredParts:[...b],missingParts:[...c],coverage:b.length/B.length,planHits:[...d]}}let E=[/其他项目/u,/其他标段/u,/其他城市/u,/本公司(?:其他|承建)/u,/某(?:市|县|区|项目)(?:的)?/u,/他项目/u,/兄弟项目/u];function F(a){let b=a.replace(/及其他项目/gu,"及〔清单列举项〕");return E.filter(a=>a.test(b)).map(a=>a.source.replace(/\\u/gu,""))}},56942:(a,b,c)=>{c.d(b,{$:()=>g,R:()=>h});var d=c(92808);function e(a){return[...new Set(a.filter(Boolean))]}function f(a){let b=(0,d.t0)(a,d.hW);return b.length>0?b:["project_overview"]}function g(a){var b,c,d;let g=a.resolvedRoles.filter(a=>a.required&&!a.satisfied).map(a=>a.role),h=a.resolvedRoles.filter(a=>a.weak).map(a=>a.role),i=(b=a.template,c=a.spec,d=a.summary,b.chapters.map(a=>{let b=function(a,b){let c=b.chapterRules.find(b=>b.id===a.id||b.title===a.title),d=(c?.requiredFactIds||[]).map(a=>b.factFields.find(b=>b.id===a)?.name).filter(Boolean);return e([...a.requiredFacts||[],...d])}(a,c),g=e([...f([a.title,a.purpose,...a.queries||[],...a.sections||[]].join("\n")),...b.flatMap(a=>f(a))]),h=g.filter(a=>(d.materialInventory[a]||[]).length>0),i=h.reduce((a,b)=>a+(d.materialInventory[b]||[]).length,0),j=b.filter(a=>f(a).some(a=>h.includes(a))),k=b.filter(a=>!j.includes(a));return{chapterId:a.id,title:a.title,requiredFacts:b,coveredFacts:j,missingFacts:k,requiredRoles:g,satisfiedRoles:h,evidenceCount:i}})),j=[],k=[];0===a.template.chapters.length&&k.push("模板未配置章节,建议通过模板章节或显式 OUTLINE 提供文档结构"),a.template.chapters.some(a=>!a.purpose&&(!a.queries||0===a.queries.length)&&(!a.requiredFacts||0===a.requiredFacts.length))&&k.push("部分模板章节缺少 purpose、queries 或 requiredFacts,生成质量可能不稳定"),a.summary.source.ambiguous&&j.push(a.summary.source.selectionReason),a.summary.fingerprint.confidence<.34&&k.push("材料指纹置信度较低,建议绑定明确的材料文件"),0===a.summary.source.selectedFiles&&j.push("未绑定可用项目资料文件,无法支撑文档生成"),g.length>0&&0===a.summary.source.selectedFiles&&k.push("模板未绑定可用项目资料文件,请先绑定参与生成的资料"),h.length>0&&0===a.summary.source.selectedFiles&&k.push("绑定资料证据较弱,请确认资料已完成索引");let l=i.filter(a=>0===a.evidenceCount);l.length>0&&k.push(`章节级证据覆盖较弱:${l.slice(0,5).map(a=>a.title).join("、")}`);let m=a.summary.coverage.satisfiedRoles,n=a.resolvedRoles.filter(a=>!a.required&&!a.satisfied).map(a=>a.role),o=[`资料范围:${a.summary.source.selectionReason},可用文件 ${a.summary.source.selectedFiles}/${a.summary.source.totalFiles} 份`,`已识别资料类型:${m.join("、")||"无"}`,a.summary.coverage.missingRoles.length?`待补充必需资料类型:${a.summary.coverage.missingRoles.join("、")}`:"必需资料类型已满足",g.length?`模板强相关资料角色缺失:${g.join("、")}`:"模板强相关资料角色已满足",n.length?`可选资料角色未识别:${n.join("、")}`:"",h.length?`证据较弱资料角色:${h.join("、")}`:""].filter(Boolean);return{ready:0===j.length,missingRoles:g,weakRoles:h,diagnostics:o,chapterDiagnostics:i,blockingIssues:j,warnings:k}}function h(a,b={}){let c=a.chapterDiagnostics.filter(a=>0===a.evidenceCount||a.missingFacts.length>0).slice(0,8).map(a=>`${a.title}:证据 ${a.evidenceCount} 条${a.missingFacts.length?`,缺失 ${a.missingFacts.slice(0,6).join("、")}`:""}`);return b.publicSafe?["## 生成事实使用边界",c.length?`章节证据风险:
|
|
@@ -54,24 +54,29 @@ ${c.slice(a).trimStart()}`}return`${f}
|
|
|
54
54
|
|
|
55
55
|
${c}`}(e,i):ag(e,i)))),c.promptRules),chapters:i}}function ar(a,b={}){let c=a.chapters.map(a=>({...a,sections:ab(a.sections||[])})),d=c.map((a,b)=>(function(a,b){let c=`## ${(0,f.tb)(b,a.title)}`,d=M(a.content);var e=/^##\s+.+$/mu.test(d)?d.replace(/^##\s+.+$/mu,c):`${c}
|
|
56
56
|
|
|
57
|
-
${d}`,g=a.title;let h=e.split(/\r?\n/u),i=!1;return h.filter((a,b)=>{let d=a.trim(),e=/^##\s+(.+)$/u.exec(a.trim())?.[1]||"";if(e){if(U(e,c))return!i&&(i=!0,!0);if(b>0&&U(e,g))return!1}return!(d&&!/^#{1,6}\s+/u.test(d)&&U(d,g))}).join("\n").replace(/\n{3,}/gu,"\n\n").trim()})(a,b)),e=d.filter(Boolean).join("\n\n"),g=c.map((a,b)=>{if(a.sections?.length)return a;let c=ag(d[b]||"",[a]),e=Z(c);return e.length?{...a,sections:ab(e),content:c}:{...a,content:c}});return aq([function(a,b){let c=b||{},d=(...a)=>{let b=a.find(a=>!!c[a]);return b?String(c[b]).split("(来源")[0].trim():""},e=d("工程名称","项目名称","工程名"),f=d("建设单位","建设单位名称","发包人"),g=d("施工单位","承包单位","承包人"),h=d("建设地点","工程地点","项目地址"),i=d("建设规模","建筑面积","工程规模"),j=[["工程名称",e||a],["建设单位",f],["编制单位",g||f],["建设地点",h],["建设规模",i],["计划工期",d("计划工期","工期","总工期")],["质量标准",d("质量标准","质量目标","质量等级")]].filter(a=>!!a[1]);return['<div class="document-cover">',`# ${a}`,j.length>0?["","| 项目 | 内容 |","| --- | --- |",...j.map(a=>`| ${a[0]} | ${a[1].replace(/\|/gu,"/")} |`)].join("\n"):"","</div>"].filter(Boolean).join("\n")}(a.title,a.facts),'\n<div class="page-break"></div>\n',ac(g),'\n<div class="page-break"></div>\n',e].join("\n"),c,b).markdown}[P,"你是施工组织设计文档写作专家。",N,O].join("\n\n")},70208:(a,b,c)=>{c.d(b,{GQ:()=>p,Ui:()=>n,YZ:()=>q,bl:()=>m,cs:()=>o,effectiveTemplateChapters:()=>t,mq:()=>h,ob:()=>i,tb:()=>r});var d=c(58965),e=c(23500);function f(a){return a.replace(/[☑✓✔☐□☒○●◉◇◆]/gu,"")}function g(a){let b=f(a.trim()),c="";for(;b!==c;)c=b,b=b.replace(RegExp(`^\\s*第(?:\\d{1,3}|${d.$m})[章节]\\s*`,"u"),"").replace(RegExp(`^\\s*[((]?(?:\\d{1,3}|${d.$m})(?:[..]\\d{1,3})+(?:[..、))]\\s*|\\s+)`,"u"),"").replace(RegExp(`^\\s*[((]?(?:\\d{1,3}|${d.$m})[))、..]\\s*`,"u"),"").replace(RegExp("^\\s*[-*+]\\s+","u"),"").trim();return b.replace(/\s+/gu," ")}function h(a){let b=g(a).replace(/\s+/gu,"");if(!b||/^(?:如|若|如果|倘若|假如|当)[^,,。;]{0,24}[,,]/u.test(b)||/^(?:我(?:方|公司)|本(?:单位|公司|工程|项目)|投标人|承包人|中标人|发包人|供应商)[^,,。;]{0,14}(?:承诺|保证|响应|满足|确保|应|须|将|会)/u.test(b)||/(?:评标)?委员会[^,,。;]{0,10}(?:确定|认定|评审|判断|推荐)/u.test(b)||/^(?:不(?:得|应|宜|少于|超过|大于|小于|低于|高于)|超过|低于|高于|达到|不少于|不大于|不超过|偏差率|误差)\s*\d/u.test(b)||/^[^,,。;]{0,10}\d+(?:%|%)/u.test(b)||/^\d+\s*项/u.test(b)||/^\d+(?:[((]\d+[))])?\s*目/u.test(b)||/^\d+\s*对(?:与|于)/u.test(b)||/^\d{1,4}[a-zA-Z]{0,3}\d{0,4}\s*[::]/u.test(b)||/^\d{1,4}\s*(?:个)?(?:日历天|天|日|月|年)[,,、]/u.test(b)||/^\d{1,4}[^,,。;\s]{1,6}[,,、]/u.test(b)||/^\d{1,2}[一-龥]{2,10}$/u.test(b)&&!/^\d{1,2}(?:个|名|台|套|辆|份|种|类|层|栋|座|米|吨|年|月|天|日|周|次|项)/u.test(b)||/[((【[《]$/u.test(b)||/[((【[《][^))】]》]*$/u.test(b)||/以下简/u.test(b)||/^\d{1,4}\s*[a-zA-Z]/u.test(b)||/^(?:确定|计算|比较|推荐|审查|否决)(?:有效)?评标(?:基准)?价/u.test(b)||/^(?:其他要求|需要补充的其他内容|相当于或不低于|补充条款|建议编制要求|投标须知|评标办法)/u.test(b))return!0;let c=b.replace(/^\d{1,3}(?:[..]\d{1,3})*\s*/u,"");return!!(/^具备(?:有效|相应|满足)/u.test(c)||/^(?:须|应|需|得)?提供[^,,。;]{0,12}(?:证明|材料|文件|证件|证书|报告)/u.test(c)||/^(?:本(?:招标)?(?:项目|工程)|投标人|承包人|中标人|发包人|供应商|项目经理|技术负责人|施工单位)[^,,。;]{0,24}(?:不得|禁止|严禁|必须|应当)/u.test(c)||/(?:见|详见|参见|详见第)[^,,。;]{0,12}(?:招标公告|招标文件|投标人须知|补疑|澄清|工程量清单|图纸|合同条款|前附表)/u.test(c)||/^\d{1,3}\s*款/u.test(b)||/第\d+(?:\.\d+)?款[^,,。;]{0,20}(?:向(?:招标人|发包人|监理人?|承包人)|提出|告知|通知|送达|发出)/u.test(b))||function(a){let b=a.replace(/\s+/gu,"").replace(/^\*+|\*+$/gu,"");if(!b)return!1;if((b.match(/[爀椀猟礀氀漀挀渀捁扄潓瑲湥獴慔汢]/gu)||[]).length>=2||/[\u2046-\u205F\u2070-\u209F\u2100-\u2102\u2104-\u214F\u21B0-\u21FF\u2270-\u22FF\u2400-\u243F\u249C-\u24FF\u2640-\u26FF\u27C0-\u27EF\u2900-\u297F\u2A00-\u2AFF\u2B00-\u2BFF\u2E00-\u2FFF\u3200-\u33FF]/u.test(b)||/[\u00A0-\u00AF\u00B4\u00B6\u00B8\u00BA-\u00FF]/u.test(b)||/[\u4e00-\u9fa5][A-Za-z][\u4e00-\u9fa5]/u.test(b)&&!/[\u4e00-\u9fa5][A-Za-z](?:值|级|类|区|型|构|段|座|轴|向|楼|层|栋|点|位)/u.test(b))return!0;let c=[...b];return c.filter(a=>/[\u4e00-\u9fa5A-Za-z0-9()()【】《》、,。;;::,.\-/㎡%°·±×÷≤≥—–]/u.test(a)).length/c.length<.6}(b)}function i(a){let b=g(a).replace(/\s+/gu,"");return!!(!b||/^(?:目录|章节|大纲|要求|说明|注意|输出|格式|示例|例如|写法|占位|提示)$/u.test(b)||/^(?:判断|判定|识别|确认)?是否(?:涉及|涉|需要|适用)|^(?:如|若|如果)(?:涉及|不涉及|适用|不适用)|(?:根据|结合).{0,12}(?:实际情况|项目情况|资料情况).{0,8}(?:判断|确定|编写|生成)|按需(?:生成|编写)|视情况|判断后|生成要求|编写要求|说明要求|注意事项/u.test(b)||/[::]$|[,、;。]$/u.test(b))||h(b)}function j(a){return 0===a.trim().length||i(a)}let k="(?:OUTLINE|CHAPTERS?|章节(?:大纲)?|大纲|目录)",l=RegExp(`<\\s*${k}(?:\\s[^>]*)?>([\\s\\S]*?)<\\/\\s*${k}\\s*>`,"giu");function m(a){return RegExp(`^\\s*<\\s*${k}(?:\\s[^>]*)?>`,"iu").test(a)}function n(a){return RegExp(`^\\s*<\\/\\s*${k}\\s*>`,"iu").test(a)}function o(a){for(let b of a){let a=function(a,b,c){let e=[];for(let f of function(a,b){l.lastIndex=0;let c=[...a.matchAll(l)].map(a=>a[1]||"");if(c.length>0||b?.strict)return c;let d=/(?:<\s*)?(?:OUTLINE|CHAPTERS?|章节(?:大纲)?|大纲|目录)\s*>?\s*[::]?\s*([\s\S]*?)(?:<\/\s*(?:OUTLINE|CHAPTERS?|章节(?:大纲)?|大纲|目录)\s*>|END\s+(?:OUTLINE|CHAPTERS?)|$)/iu.exec(a);return d?.[1]?[d[1]]:[]}(a,c))for(let a of function(a){let b=`${d.$m}`,c=[`第(?:\\d{1,3}|${b})[章节]\\s*`,`(?:\\d{1,3})[、))]\\s*`,`(?:\\d{1,3})[..]\\s+(?!\\d)`,`(?:${b})[、..))]\\s*`,`[((](?:\\d{1,3}|${b})[))]\\s*`,"[-*+]\\s+"],e=a.replace(/\r?\n/gu,"\n");for(let a of c)e=(e=(e=e.replace(RegExp(`([;;。!?!?])\\s*(?=${a})`,"gu"),"$1\n")).replace(RegExp(`(?<=\\n)\\s+(?=${a})`,"gu"),"")).replace(RegExp(`(?<![\\d..])\\s+(?=${a})`,"gu"),"\n");return e.split(/\n|;|;/u).map(a=>g(a)).filter(a=>!j(a))}(f))e.push({id:`explicit-${b}-${e.length+1}`,title:a,purpose:`根据显式大纲章节生成正式正文:${a}`,requiredFacts:[],sections:[],queries:[a]});return e.filter(a=>!j(a.title))}(b.text||"",b.source,{strict:b.strict});if(a.length>=2)return a}return[]}function p(a){let b=f(a.replace(/^#+\s*/u,"").trim()),c="";for(;b&&b!==c;)c=b,b=b.replace(/^第[一二三四五六七八九十百千万\d]+[章节]\s*/u,"").replace(/^\d+(?:\.\d+)*[、..\s]+/u,"").replace(/^[((]?[一二三四五六七八九十]+[))、..\s]+/u,"").trim();return b}function q(a){return p(a.replace(/\s+/gu," ").trim()).replace(/^[,,、;;::。.!!??\-—\s]+/u,"").trim()}function r(a,b){let c=p(b);return`第${function(a){let b=["零","一","二","三","四","五","六","七","八","九"];if(a<=10)return 10===a?"十":b[a];if(a<20)return`十${b[a%10]}`;if(a<100){let c=Math.floor(a/10),d=a%10;return`${b[c]}十${d?b[d]:""}`}return String(a)}(a+1)}章 ${c}`}function s(a,b){let c=new Set;return a.filter(a=>{let d=q(a.title);if(!d)return!1;if(!b?.preserveExplicitOutline&&(c.has(d)||/见(?:公告|文件|资料|附件)|按(?:资料|文件|相关要求)|质量标准[::]|范围[::].*依据/u.test(d)||b?.template&&(0,e.C1)(d,b.template)))return!1;return c.add(d),a.title=d,!0})}function t(a,b,c){return!b||c?.preserveExplicitOutline?s([...a.chapters],{...c,template:a}):s([...a.chapters].map(a=>{let c=p(a.title),d=b.chapterRules.find(b=>b.id===a.id||p(b.title)===c);return{...a,title:c,purpose:a.purpose,requiredFacts:a.requiredFacts||[],queries:[...new Set([...a.queries||[],c,d?.generationHint||"",...a.sections||[]].filter(Boolean))]}}),{...c,template:a})}},70933:(a,b,c)=>{c.d(b,{A1:()=>x,OF:()=>s,Pc:()=>v,QO:()=>u,QR:()=>r,R7:()=>C,T3:()=>q,eE:()=>l,ks:()=>B});var d=c(76760),e=c(77598),f=c(58965),g=c(18274),h=c(91977),i=c(51144),j=c(80572);function k(a,b=0){let c="drawing"===a.processingType||a.roleId?.includes("drawing")?"视觉资料":"table"===a.processingType||a.roleId?.includes("bill")?"表格资料":"rule"===a.processingType||a.roleId?.includes("tender")?"规则资料":"文本资料";return`${c}片段${b+1}${a.sectionTitle?`(${a.sectionTitle.replace(f.tK,"")})`:""}`}function l(a){return[...a].filter(a=>{let b=a.charCodeAt(0);return 9===b||10===b||13===b||b>=32}).join("").replace(f.VX,"").replace(f.tK,"").replace(/\b(?:Model|Layout\d*|Entity|Handle|ObjectId|ByLayer|Continuous)\b/giu,"").replace(/[\t ]{2,}/gu," ").replace(/\n{3,}/gu,"\n\n").trim()}function m(a){let b=l(a),c=Math.max(1,b.length),d=(b.match(/[\u4e00-\u9fa5]/gu)||[]).length,e=(b.match(/\d/gu)||[]).length,f=(b.match(/项目|任务|质量|安全|周期|验收|材料|设备|表格|数据|参数|规范|标准|流程|资源|风险/gu)||[]).length,g=(b.match(/CAD|AcDb|Polyline|ByLayer|ObjectId|Handle|Model|Layout|图层|页码|第\s*\d+\s*页|打印|版权所有|^[\s\W\d_]+$/gimu)||[]).length,h=(b.match(/(?:序号|项目名称|事项|单位|数量|单价|金额|备注)/gu)||[]).length,i=Math.min(1,d/c*.7+Math.min(.3,(e+3*f)/120)),j=Math.min(1,.18*g+.04*Math.max(0,h-8)+.35*(d/c<.25));return{noiseScore:j,factDensity:i,shouldUse:b.length>=30&&j<.72&&i>.08}}function n(a){let b=[...new Set(l(a).split("\n").map(a=>a.trim()).filter(Boolean).filter(a=>{let b=/计划工期|合同工期|工期|合同估算价|合同估算价格|投资估算|估算价格|工程估算价|最高投标限价|招标控制价|建设地点|建设规模|质量标准/u.test(a);if(!b&&/综合单价|合价|报价明细|投标报价|税率|增值税|利润|预留金|暂列金额|结算/u.test(a))return!1;let c=g.yw.test(a),d=/(?:GB\s*\/?\s*T?|JGJ|CJJ|DB\s*\/?\s*T?|CECS|ISO|IEC)\s*[\w./-]*\d/u.test(a),e=/项目|工程|工期|合同|估算|价格|地点|规模|清单|图纸|设计|规格|型号|数量|单位|材料|设备|管|线|电缆|混凝土|钢筋|砌体|门窗|防水|标准|规范|验收|做法|参数|尺寸|标高|厚度|强度|等级|系统|安装/u.test(a);return b||c||d||e&&/\d/u.test(a)&&a.length<=260}))].map(a=>(function(a){if(a.length<=160)return a;let b=a.match(/\d+(?:\.\d+)?\s*(?:mm|cm|m|km|㎡|m²|m3|m³|kg|g|t|L|ml|MPa|kPa|℃|%|台|套|个|项|批|次|份|人|小时|分钟|日历天|天|周|月|年)|DN\s*\d+|Φ\s*\d+|φ\s*\d+|C\d{2,}|HRB\d+|(?:计划工期|合同工期|合同估算价|投资估算|最高投标限价|招标控制价|建设地点|建设规模|质量标准)[^。;;,,]{0,40}|(?:GB|JGJ|CJJ|DB|CECS|ISO|IEC)\s*\/?\s*T?\s*[\w./-]*\d/gu);return b&&b.length>0?[...new Set(b)].join(";"):a.slice(0,160)})(a)).filter(Boolean);return(0,i.Cr)([...new Set(b)],a=>(0,i.Ox)(a),{},"key-fact-lines").selected.join("\n")}let o=/项目名称|工程名称|项目编号|招标项目编号|标段编号|招标人|建设单位|发包人|建设地点|工程地点|建设规模|建筑面积|招标范围|计划工期|合同工期|总工期|周期要求|质量标准|质量目标|安全目标|安全生产|合同估算价|合同估算价格|投资估算|最高投标限价|招标控制价|工程估算价|结构形式|层数|建筑高度|基础形式|抗震设防|绿色建筑等级|装配率|支护形式|质保期|质量保修|投标有效期/u;function p(a){return a.length>200?`${a.slice(0,200)}…`:a}function q(a,b){let c=Math.max(400,Math.floor(b)),d=l(a);if(d.length<=c)return d;let e=d.split("\n"),f=[{re:/基坑底标高|换填底标高|整平标高|开挖深度|放坡系数|支护形式|坡率/u,value:20},{re:/标高/u,value:10},{re:/[±+]\s*0[.,]0{2,}/u,value:8},{re:/[±+-]\s*\d+\.\d{2,}/u,value:3}],g=e.map((a,b)=>{let c=0;for(let{re:b,value:d}of f)if(b.test(a)){c=d;break}return{line:a,index:b,value:c}}).filter(a=>a.value>0);if(!g.length)return d.slice(0,c);g.sort((a,b)=>b.value-a.value||a.index-b.index);let h=d.slice(0,Math.min(300,Math.max(80,Math.floor(.22*c)))).trimEnd(),i=`(超长证据参数窗口提取:${g.length} 行参数命中,尾部关键参数已前置展示)`,j=c-h.length-i.length-4,k=[],m=new Set,n=Math.max(50,Math.floor(.15*c));for(let{line:a,index:b}of g){if(j<=30)break;if(m.has(b))continue;let c=b>0&&/图纸节点:/u.test(e[b-1])?e[b-1].slice(0,n):"",d=[c,a].filter(Boolean).join("\n"),f=d.length>j?d.slice(0,j):d;k.push(f),j-=f.length+1,m.add(b),c&&m.add(b-1)}let o=k.length?k.join("\n"):d.slice(0,j+h.length),p=`${h}
|
|
57
|
+
${d}`,g=a.title;let h=e.split(/\r?\n/u),i=!1;return h.filter((a,b)=>{let d=a.trim(),e=/^##\s+(.+)$/u.exec(a.trim())?.[1]||"";if(e){if(U(e,c))return!i&&(i=!0,!0);if(b>0&&U(e,g))return!1}return!(d&&!/^#{1,6}\s+/u.test(d)&&U(d,g))}).join("\n").replace(/\n{3,}/gu,"\n\n").trim()})(a,b)),e=d.filter(Boolean).join("\n\n"),g=c.map((a,b)=>{if(a.sections?.length)return a;let c=ag(d[b]||"",[a]),e=Z(c);return e.length?{...a,sections:ab(e),content:c}:{...a,content:c}});return aq([function(a,b){let c=b||{},d=(...a)=>{let b=a.find(a=>!!c[a]);return b?String(c[b]).split("(来源")[0].trim():""},e=d("工程名称","项目名称","工程名"),f=d("建设单位","建设单位名称","发包人"),g=d("施工单位","承包单位","承包人"),h=d("建设地点","工程地点","项目地址"),i=d("建设规模","建筑面积","工程规模"),j=[["工程名称",e||a],["建设单位",f],["编制单位",g||f],["建设地点",h],["建设规模",i],["计划工期",d("计划工期","工期","总工期")],["质量标准",d("质量标准","质量目标","质量等级")]].filter(a=>!!a[1]);return['<div class="document-cover">',`# ${a}`,j.length>0?["","| 项目 | 内容 |","| --- | --- |",...j.map(a=>`| ${a[0]} | ${a[1].replace(/\|/gu,"/")} |`)].join("\n"):"","</div>"].filter(Boolean).join("\n")}(a.title,a.facts),'\n<div class="page-break"></div>\n',ac(g),'\n<div class="page-break"></div>\n',e].join("\n"),c,b).markdown}[P,"你是施工组织设计文档写作专家。",N,O].join("\n\n")},70208:(a,b,c)=>{c.d(b,{GQ:()=>p,Ui:()=>n,YZ:()=>q,bl:()=>m,cs:()=>o,effectiveTemplateChapters:()=>t,mq:()=>h,ob:()=>i,tb:()=>r});var d=c(58965),e=c(23500);function f(a){return a.replace(/[☑✓✔☐□☒○●◉◇◆]/gu,"")}function g(a){let b=f(a.trim()),c="";for(;b!==c;)c=b,b=b.replace(RegExp(`^\\s*第(?:\\d{1,3}|${d.$m})[章节]\\s*`,"u"),"").replace(RegExp(`^\\s*[((]?(?:\\d{1,3}|${d.$m})(?:[..]\\d{1,3})+(?:[..、))]\\s*|\\s+)`,"u"),"").replace(RegExp(`^\\s*[((]?(?:\\d{1,3}|${d.$m})[))、..]\\s*`,"u"),"").replace(RegExp("^\\s*[-*+]\\s+","u"),"").trim();return b.replace(/\s+/gu," ")}function h(a){let b=g(a).replace(/\s+/gu,"");if(!b||/^(?:如|若|如果|倘若|假如|当)[^,,。;]{0,24}[,,]/u.test(b)||/^(?:我(?:方|公司)|本(?:单位|公司|工程|项目)|投标人|承包人|中标人|发包人|供应商)[^,,。;]{0,14}(?:承诺|保证|响应|满足|确保|应|须|将|会)/u.test(b)||/(?:评标)?委员会[^,,。;]{0,10}(?:确定|认定|评审|判断|推荐)/u.test(b)||/^(?:不(?:得|应|宜|少于|超过|大于|小于|低于|高于)|超过|低于|高于|达到|不少于|不大于|不超过|偏差率|误差)\s*\d/u.test(b)||/^[^,,。;]{0,10}\d+(?:%|%)/u.test(b)||/^\d+\s*项/u.test(b)||/^\d+(?:[((]\d+[))])?\s*目/u.test(b)||/^\d+\s*对(?:与|于)/u.test(b)||/^\d{1,4}[a-zA-Z]{0,3}\d{0,4}\s*[::]/u.test(b)||/^\d{1,4}\s*(?:个)?(?:日历天|天|日|月|年)[,,、]/u.test(b)||/^\d{1,4}[^,,。;\s]{1,6}[,,、]/u.test(b)||/^\d{1,2}[一-龥]{2,10}$/u.test(b)&&!/^\d{1,2}(?:个|名|台|套|辆|份|种|类|层|栋|座|米|吨|年|月|天|日|周|次|项)/u.test(b)||/[((【[《]$/u.test(b)||/[((【[《][^))】]》]*$/u.test(b)||/以下简/u.test(b)||/^\d{1,4}\s*[a-zA-Z]/u.test(b)||/^(?:确定|计算|比较|推荐|审查|否决)(?:有效)?评标(?:基准)?价/u.test(b)||/^(?:其他要求|需要补充的其他内容|相当于或不低于|补充条款|建议编制要求|投标须知|评标办法)/u.test(b))return!0;let c=b.replace(/^\d{1,3}(?:[..]\d{1,3})*\s*/u,"");return!!(/^具备(?:有效|相应|满足)/u.test(c)||/^(?:须|应|需|得)?提供[^,,。;]{0,12}(?:证明|材料|文件|证件|证书|报告)/u.test(c)||/^(?:本(?:招标)?(?:项目|工程)|投标人|承包人|中标人|发包人|供应商|项目经理|技术负责人|施工单位)[^,,。;]{0,24}(?:不得|禁止|严禁|必须|应当)/u.test(c)||/(?:见|详见|参见|详见第)[^,,。;]{0,12}(?:招标公告|招标文件|投标人须知|补疑|澄清|工程量清单|图纸|合同条款|前附表)/u.test(c)||/^\d{1,3}\s*款/u.test(b)||/第\d+(?:\.\d+)?款[^,,。;]{0,20}(?:向(?:招标人|发包人|监理人?|承包人)|提出|告知|通知|送达|发出)/u.test(b))||function(a){let b=a.replace(/\s+/gu,"").replace(/^\*+|\*+$/gu,"");if(!b)return!1;if((b.match(/[爀椀猟礀氀漀挀渀捁扄潓瑲湥獴慔汢]/gu)||[]).length>=2||/[\u2046-\u205F\u2070-\u209F\u2100-\u2102\u2104-\u214F\u21B0-\u21FF\u2270-\u22FF\u2400-\u243F\u249C-\u24FF\u2640-\u26FF\u27C0-\u27EF\u2900-\u297F\u2A00-\u2AFF\u2B00-\u2BFF\u2E00-\u2FFF\u3200-\u33FF]/u.test(b)||/[\u00A0-\u00AF\u00B4\u00B6\u00B8\u00BA-\u00FF]/u.test(b)||/[\u4e00-\u9fa5][A-Za-z][\u4e00-\u9fa5]/u.test(b)&&!/[\u4e00-\u9fa5][A-Za-z](?:值|级|类|区|型|构|段|座|轴|向|楼|层|栋|点|位)/u.test(b))return!0;let c=[...b];return c.filter(a=>/[\u4e00-\u9fa5A-Za-z0-9()()【】《》、,。;;::,.\-/㎡%°·±×÷≤≥—–]/u.test(a)).length/c.length<.6}(b)}function i(a){let b=g(a).replace(/\s+/gu,"");return!!(!b||/^(?:目录|章节|大纲|要求|说明|注意|输出|格式|示例|例如|写法|占位|提示)$/u.test(b)||/^(?:判断|判定|识别|确认)?是否(?:涉及|涉|需要|适用)|^(?:如|若|如果)(?:涉及|不涉及|适用|不适用)|(?:根据|结合).{0,12}(?:实际情况|项目情况|资料情况).{0,8}(?:判断|确定|编写|生成)|按需(?:生成|编写)|视情况|判断后|生成要求|编写要求|说明要求|注意事项/u.test(b)||/[::]$|[,、;。]$/u.test(b))||h(b)}function j(a){return 0===a.trim().length||i(a)}let k="(?:OUTLINE|CHAPTERS?|章节(?:大纲)?|大纲|目录)",l=RegExp(`<\\s*${k}(?:\\s[^>]*)?>([\\s\\S]*?)<\\/\\s*${k}\\s*>`,"giu");function m(a){return RegExp(`^\\s*<\\s*${k}(?:\\s[^>]*)?>`,"iu").test(a)}function n(a){return RegExp(`^\\s*<\\/\\s*${k}\\s*>`,"iu").test(a)}function o(a){for(let b of a){let a=function(a,b,c){let e=[];for(let f of function(a,b){l.lastIndex=0;let c=[...a.matchAll(l)].map(a=>a[1]||"");if(c.length>0||b?.strict)return c;let d=/(?:<\s*)?(?:OUTLINE|CHAPTERS?|章节(?:大纲)?|大纲|目录)\s*>?\s*[::]?\s*([\s\S]*?)(?:<\/\s*(?:OUTLINE|CHAPTERS?|章节(?:大纲)?|大纲|目录)\s*>|END\s+(?:OUTLINE|CHAPTERS?)|$)/iu.exec(a);return d?.[1]?[d[1]]:[]}(a,c))for(let a of function(a){let b=`${d.$m}`,c=[`第(?:\\d{1,3}|${b})[章节]\\s*`,`(?:\\d{1,3})[、))]\\s*`,`(?:\\d{1,3})[..]\\s+(?!\\d)`,`(?:${b})[、..))]\\s*`,`[((](?:\\d{1,3}|${b})[))]\\s*`,"[-*+]\\s+"],e=a.replace(/\r?\n/gu,"\n");for(let a of c)e=(e=(e=e.replace(RegExp(`([;;。!?!?])\\s*(?=${a})`,"gu"),"$1\n")).replace(RegExp(`(?<=\\n)\\s+(?=${a})`,"gu"),"")).replace(RegExp(`(?<![\\d..])\\s+(?=${a})`,"gu"),"\n");return e.split(/\n|;|;/u).map(a=>g(a)).filter(a=>!j(a))}(f))e.push({id:`explicit-${b}-${e.length+1}`,title:a,purpose:`根据显式大纲章节生成正式正文:${a}`,requiredFacts:[],sections:[],queries:[a]});return e.filter(a=>!j(a.title))}(b.text||"",b.source,{strict:b.strict});if(a.length>=2)return a}return[]}function p(a){let b=f(a.replace(/^#+\s*/u,"").trim()),c="";for(;b&&b!==c;)c=b,b=b.replace(/^第[一二三四五六七八九十百千万\d]+[章节]\s*/u,"").replace(/^\d+(?:\.\d+)*[、..\s]+/u,"").replace(/^[((]?[一二三四五六七八九十]+[))、..\s]+/u,"").trim();return b}function q(a){return p(a.replace(/\s+/gu," ").trim()).replace(/^[,,、;;::。.!!??\-—\s]+/u,"").trim()}function r(a,b){let c=p(b);return`第${function(a){let b=["零","一","二","三","四","五","六","七","八","九"];if(a<=10)return 10===a?"十":b[a];if(a<20)return`十${b[a%10]}`;if(a<100){let c=Math.floor(a/10),d=a%10;return`${b[c]}十${d?b[d]:""}`}return String(a)}(a+1)}章 ${c}`}function s(a,b){let c=new Set;return a.filter(a=>{let d=q(a.title);if(!d)return!1;if(!b?.preserveExplicitOutline&&(c.has(d)||/见(?:公告|文件|资料|附件)|按(?:资料|文件|相关要求)|质量标准[::]|范围[::].*依据/u.test(d)||b?.template&&(0,e.C1)(d,b.template)))return!1;return c.add(d),a.title=d,!0})}function t(a,b,c){return!b||c?.preserveExplicitOutline?s([...a.chapters],{...c,template:a}):s([...a.chapters].map(a=>{let c=p(a.title),d=b.chapterRules.find(b=>b.id===a.id||p(b.title)===c);return{...a,title:c,purpose:a.purpose,requiredFacts:a.requiredFacts||[],queries:[...new Set([...a.queries||[],c,d?.generationHint||"",...a.sections||[]].filter(Boolean))]}}),{...c,template:a})}},70933:(a,b,c)=>{c.d(b,{A1:()=>y,OF:()=>t,Pc:()=>w,QO:()=>v,QR:()=>s,R7:()=>D,T3:()=>r,eE:()=>l,ks:()=>C});var d=c(76760),e=c(77598),f=c(58965),g=c(18274),h=c(91977),i=c(51144),j=c(80572);function k(a,b=0){let c="drawing"===a.processingType||a.roleId?.includes("drawing")?"视觉资料":"table"===a.processingType||a.roleId?.includes("bill")?"表格资料":"rule"===a.processingType||a.roleId?.includes("tender")?"规则资料":"文本资料";return`${c}片段${b+1}${a.sectionTitle?`(${a.sectionTitle.replace(f.tK,"")})`:""}`}function l(a){return[...a].filter(a=>{let b=a.charCodeAt(0);return 9===b||10===b||13===b||b>=32}).join("").replace(f.VX,"").replace(f.tK,"").replace(/\b(?:Model|Layout\d*|Entity|Handle|ObjectId|ByLayer|Continuous)\b/giu,"").replace(/[\t ]{2,}/gu," ").replace(/\n{3,}/gu,"\n\n").trim()}function m(a){let b=l(a),c=Math.max(1,b.length),d=(b.match(/[\u4e00-\u9fa5]/gu)||[]).length,e=(b.match(/\d/gu)||[]).length,f=(b.match(/项目|任务|质量|安全|周期|验收|材料|设备|表格|数据|参数|规范|标准|流程|资源|风险/gu)||[]).length,g=(b.match(/CAD|AcDb|Polyline|ByLayer|ObjectId|Handle|Model|Layout|图层|页码|第\s*\d+\s*页|打印|版权所有|^[\s\W\d_]+$/gimu)||[]).length,h=(b.match(/(?:序号|项目名称|事项|单位|数量|单价|金额|备注)/gu)||[]).length,i=Math.min(1,d/c*.7+Math.min(.3,(e+3*f)/120)),j=Math.min(1,.18*g+.04*Math.max(0,h-8)+.35*(d/c<.25));return{noiseScore:j,factDensity:i,shouldUse:b.length>=30&&j<.72&&i>.08}}function n(a){let b=[...new Set(l(a).split("\n").map(a=>a.trim()).filter(Boolean).filter(a=>{let b=/计划工期|合同工期|工期|合同估算价|合同估算价格|投资估算|估算价格|工程估算价|最高投标限价|招标控制价|建设地点|建设规模|质量标准/u.test(a);if(!b&&/综合单价|合价|报价明细|投标报价|税率|增值税|利润|预留金|暂列金额|结算/u.test(a))return!1;let c=g.yw.test(a),d=/(?:GB\s*\/?\s*T?|JGJ|CJJ|DB\s*\/?\s*T?|CECS|ISO|IEC)\s*[\w./-]*\d/u.test(a),e=/项目|工程|工期|合同|估算|价格|地点|规模|清单|图纸|设计|规格|型号|数量|单位|材料|设备|管|线|电缆|混凝土|钢筋|砌体|门窗|防水|标准|规范|验收|做法|参数|尺寸|标高|厚度|强度|等级|系统|安装/u.test(a);return b||c||d||e&&/\d/u.test(a)&&a.length<=260}))].map(a=>(function(a){if(a.length<=160)return a;let b=a.match(/\d+(?:\.\d+)?\s*(?:mm|cm|m|km|㎡|m²|m3|m³|kg|g|t|L|ml|MPa|kPa|℃|%|台|套|个|项|批|次|份|人|小时|分钟|日历天|天|周|月|年)|DN\s*\d+|Φ\s*\d+|φ\s*\d+|C\d{2,}|HRB\d+|(?:计划工期|合同工期|合同估算价|投资估算|最高投标限价|招标控制价|建设地点|建设规模|质量标准)[^。;;,,]{0,40}|(?:GB|JGJ|CJJ|DB|CECS|ISO|IEC)\s*\/?\s*T?\s*[\w./-]*\d/gu);return b&&b.length>0?[...new Set(b)].join(";"):a.slice(0,160)})(a)).filter(Boolean);return(0,i.Cr)([...new Set(b)],a=>(0,i.Ox)(a),{},"key-fact-lines").selected.join("\n")}let o=/项目名称|工程名称|项目编号|招标项目编号|标段编号|招标人|建设单位|发包人|建设地点|工程地点|建设规模|建筑面积|招标范围|计划工期|合同工期|总工期|周期要求|质量标准|质量目标|安全目标|安全生产|合同估算价|合同估算价格|投资估算|最高投标限价|招标控制价|工程估算价|结构形式|层数|建筑高度|基础形式|抗震设防|绿色建筑等级|装配率|支护形式|质保期|质量保修|投标有效期/u;function p(a){let b=a.processingType||"";return"table"===b||b.includes("bill")||"structured_data"===b||!!a.roleId?.includes("bill")}function q(a){return a.length>200?`${a.slice(0,200)}…`:a}function r(a,b){let c=Math.max(400,Math.floor(b)),d=l(a);if(d.length<=c)return d;let e=d.split("\n"),f=[{re:/基坑底标高|换填底标高|整平标高|开挖深度|放坡系数|支护形式|坡率/u,value:20},{re:/标高/u,value:10},{re:/[±+]\s*0[.,]0{2,}/u,value:8},{re:/[±+-]\s*\d+\.\d{2,}/u,value:3}],g=e.map((a,b)=>{let c=0;for(let{re:b,value:d}of f)if(b.test(a)){c=d;break}return{line:a,index:b,value:c}}).filter(a=>a.value>0);if(!g.length)return d.slice(0,c);g.sort((a,b)=>b.value-a.value||a.index-b.index);let h=d.slice(0,Math.min(300,Math.max(80,Math.floor(.22*c)))).trimEnd(),i=`(超长证据参数窗口提取:${g.length} 行参数命中,尾部关键参数已前置展示)`,j=c-h.length-i.length-4,k=[],m=new Set,n=Math.max(50,Math.floor(.15*c));for(let{line:a,index:b}of g){if(j<=30)break;if(m.has(b))continue;let c=b>0&&/图纸节点:/u.test(e[b-1])?e[b-1].slice(0,n):"",d=[c,a].filter(Boolean).join("\n"),f=d.length>j?d.slice(0,j):d;k.push(f),j-=f.length+1,m.add(b),c&&m.add(b-1)}let o=k.length?k.join("\n"):d.slice(0,j+h.length),p=`${h}
|
|
58
58
|
${i}
|
|
59
|
-
${o}`;return p.length>c?p.slice(0,c):p}function
|
|
60
|
-
${g}`:e.length>80&&f.noiseScore<.9?e:[".pdf",".doc",".docx",".xls",".xlsx",".png",".jpg",".jpeg",".webp",".dwg"].includes(c)?`该资料为${c.replace(".","").toUpperCase()}格式附件,仅作为内部事实提取依据;正式正文不得引用文件名。`:e}(a.filePath,a.content),c=m(b);return{item:{...a,content:b,score:a.score*(1+c.factDensity)*(1-.45*c.noiseScore)},quality:c}}),h=g.filter(a=>a.quality.shouldUse||/附件,仅作为内部事实提取依据/u.test(a.item.content)),i=Number.isFinite(b)&&b>0?Math.ceil(b):void 0,j=(h.length>=Math.min(3,a.length)?h:g).sort((a,b)=>b.item.score-a.item.score).filter(a=>{let b=function(a){let b=a.content.replace(/\s+/gu," ").trim();return`${a.filePath}:${a.sectionTitle||""}:${(0,e.createHash)("sha1").update(b).digest("hex")}`}(a.item);return!f.has(b)&&(f.add(b),!0)}),k=i?j.slice(0,i):j;if(c){let b=g.reduce((a,b)=>a+b.quality.noiseScore,0),d=g.reduce((a,b)=>a+b.quality.factDensity,0);c.evidence.raw+=a.length,c.evidence.used+=k.length,c.evidence.filteredNoise+=Math.max(0,g.length-h.length),c.evidence.avgNoiseScore=g.length?Number((b/g.length).toFixed(3)):0,c.evidence.avgFactDensity=g.length?Number((d/g.length).toFixed(3)):0}return k.map(a=>a.item)}(a,void 0,c),j=b.preservePinned?i.filter(a=>"pinned-evidence"===a.source||"bound-file"===a.source||"required-fact-evidence"===a.source):[],k=i.filter(a=>!j.includes(a)),o=[],p=new Map,
|
|
61
|
-
${a.content}`;return[...new Set([...b?.requiredFacts||[],"表格数据","规范要求","基础事实","附件资料","视觉资料","图片资料"].filter(b=>(0,h.Lk)(a,b)||c.includes(b)))]}(b,a)])],f.relatedChapters=[...new Set([...f.relatedChapters,a.title])];let g=b.content.replace(/\s+/gu," ");g&&!f.snippets.includes(g)&&f.snippets.push(g),e.set(b.filePath,f)}let f=[...e.values()].sort((a,b)=>b.score-a.score),g={map:[],image:[],table:[],document:[],spreadsheet:[],text:[],attachment:[]};for(let a of f)g[a.kind].push(a);let i=[`绑定材料包:文本片段 ${c.length} 条、结构化材料 ${f.length} 个。`,`材料类型分布:文本 ${g.text.length}、文档 ${g.document.length}、表格/数据 ${g.spreadsheet.length+g.table.length}、图片 ${g.image.length}、视觉/地图 ${g.map.length}、其他 ${g.attachment.length}。`,"正文必须只写材料中的事实、参数、数量、做法和要求,不得出现文件名、来源清单或后台证据描述。"].filter(Boolean).join("\n");return{chapterId:a.id,textEvidence:c,resources:f,byKind:g,summary:i}}function
|
|
62
|
-
${a.content}`,d=a.score;for(let e of(g.sv.test(c)&&(d+=8),/计划工期|合同工期|合同估算价|合同估算价格|投资估算|最高投标限价|招标控制价|建设地点|建设规模|质量标准|招标范围/u.test(c)&&(d+=10),b))e&&(c.includes(e)||(0,h.Lk)(a,e))&&(d+=6);return/GB\s*\/?\s*T?|JGJ|CJJ|DB\s*\/?\s*T?|CECS|ISO/iu.test(c)&&(d+=3),d}function
|
|
63
|
-
${
|
|
64
|
-
(事实行总量超出预算上限,已按重要性保留前 ${
|
|
59
|
+
${o}`;return p.length>c?p.slice(0,c):p}function s(a,b={},c){let f=Number.isFinite(b.maxItems)&&b.maxItems>0?Math.floor(b.maxItems):void 0,g=Number.isFinite(b.maxChars)&&b.maxChars>0?Math.floor(b.maxChars):void 0,h=Number.isFinite(b.maxItemsPerFile)&&b.maxItemsPerFile>0?Math.floor(b.maxItemsPerFile):void 0,i=function(a,b,c){let f=new Set,g=a.map(a=>{let b=function(a,b){let c=d.extname(a).toLowerCase(),e=l(b).split("\n").map(a=>a.trim()).filter(a=>a&&!/^第\s*\d+\s*页\s*(?:共\s*\d+\s*页)?$/u.test(a)).join("\n"),f=m(e);if(e.length>20&&f.shouldUse)return e;let g=n(e);return g.length>20?`资料参数行摘要:
|
|
60
|
+
${g}`:e.length>80&&f.noiseScore<.9?e:[".pdf",".doc",".docx",".xls",".xlsx",".png",".jpg",".jpeg",".webp",".dwg"].includes(c)?`该资料为${c.replace(".","").toUpperCase()}格式附件,仅作为内部事实提取依据;正式正文不得引用文件名。`:e}(a.filePath,a.content),c=m(b);return{item:{...a,content:b,score:a.score*(1+c.factDensity)*(1-.45*c.noiseScore)},quality:c}}),h=g.filter(a=>a.quality.shouldUse||/附件,仅作为内部事实提取依据/u.test(a.item.content)),i=Number.isFinite(b)&&b>0?Math.ceil(b):void 0,j=(h.length>=Math.min(3,a.length)?h:g).sort((a,b)=>b.item.score-a.item.score).filter(a=>{let b=function(a){let b=a.content.replace(/\s+/gu," ").trim();return`${a.filePath}:${a.sectionTitle||""}:${(0,e.createHash)("sha1").update(b).digest("hex")}`}(a.item);return!f.has(b)&&(f.add(b),!0)}),k=i?j.slice(0,i):j;if(c){let b=g.reduce((a,b)=>a+b.quality.noiseScore,0),d=g.reduce((a,b)=>a+b.quality.factDensity,0);c.evidence.raw+=a.length,c.evidence.used+=k.length,c.evidence.filteredNoise+=Math.max(0,g.length-h.length),c.evidence.avgNoiseScore=g.length?Number((b/g.length).toFixed(3)):0,c.evidence.avgFactDensity=g.length?Number((d/g.length).toFixed(3)):0}return k.map(a=>a.item)}(a,void 0,c),j=b.preservePinned?i.filter(a=>"pinned-evidence"===a.source||"bound-file"===a.source||"required-fact-evidence"===a.source):[],k=i.filter(a=>!j.includes(a)),o=[],p=new Map,q=0,t=(a,b=!1)=>{if(f&&o.length>=f)return;let c=p.get(a.filePath)||0;if(!b&&void 0!==h&&c>=h)return;let d=l(a.content);g&&d.length>4e3&&(d=r(d,Math.min(12e3,g)));let e=q+d.length;g&&o.length>0&&e>g||(o.push({...a,content:d}),p.set(a.filePath,c+1),q=e)};for(let a of j)t(a,!0);for(let a of k)t(a);return c&&(c.evidence.budgetDropped+=Math.max(0,i.length-o.length)),o}function t(a,b=0){return`- ${k(a,b)}:${l(a.content).replace(/\s+/gu," ").slice(0,260)}`}function u(a,b){if(a.filePath!==b.filePath)return a.filePath<b.filePath?-1:1;let c=a.sectionTitle||"",d=b.sectionTitle||"";return c!==d?c<d?-1:1:a.content.length!==b.content.length?a.content.length-b.content.length:a.content!==b.content?a.content<b.content?-1:1:0}function v(a,b){let c=[...b].sort(u),e=new Map;for(let b of c){let c=function(a,b){let c=d.extname(a).toLowerCase();return"drawing"===b||/地图|map|drawing|design/iu.test(a)?"map":[".png",".jpg",".jpeg",".webp"].includes(c)?"image":"table"===b?"table":[".xls",".xlsx",".csv"].includes(c)?"spreadsheet":[".pdf",".doc",".docx"].includes(c)?"document":c&&![".md",".txt"].includes(c)?"attachment":"text"}(b.filePath,b.processingType),f=e.get(b.filePath)||{filePath:b.filePath,kind:c,roleId:b.roleId,processingType:b.processingType,score:b.score,semanticTitle:function(a,b){let c=d.basename(a).replace(/\.[^.]+$/u,"");return"map"===b?c.replace(/^地图-/u,"").replace(/-完整地图$/u,"完整地图"):"image"===b?c.replace(/-/gu," "):"spreadsheet"===b?`${c}(结构化表格)`:"document"===b?`${c}(文档附件)`:c}(b.filePath,c),contentUse:"map"===c?"作为视觉/地图证据,用于说明空间关系、区域划分、点位、路线或布局。":"image"===c?"作为图片证据,用于视觉说明、参考图或章节配图。":"spreadsheet"===c||"table"===c?"作为表格/数据证据,用于字段对比、明细、数量和结构化结论。":"document"===c?"作为 PDF/Word 文档证据,用于提取规范、事实、说明、约束和附件来源。":"attachment"===c?"作为附件证据,用于提供补充来源、文件级约束或可追溯引用。":"作为文本证据,用于事实抽取、章节论据和来源引用。",relatedFacts:[],relatedChapters:[],snippets:[]};f.score=Math.max(f.score,b.score),f.relatedFacts=[...new Set([...f.relatedFacts,...function(a,b){let c=`${a.filePath}
|
|
61
|
+
${a.content}`;return[...new Set([...b?.requiredFacts||[],"表格数据","规范要求","基础事实","附件资料","视觉资料","图片资料"].filter(b=>(0,h.Lk)(a,b)||c.includes(b)))]}(b,a)])],f.relatedChapters=[...new Set([...f.relatedChapters,a.title])];let g=b.content.replace(/\s+/gu," ");g&&!f.snippets.includes(g)&&f.snippets.push(g),e.set(b.filePath,f)}let f=[...e.values()].sort((a,b)=>b.score-a.score),g={map:[],image:[],table:[],document:[],spreadsheet:[],text:[],attachment:[]};for(let a of f)g[a.kind].push(a);let i=[`绑定材料包:文本片段 ${c.length} 条、结构化材料 ${f.length} 个。`,`材料类型分布:文本 ${g.text.length}、文档 ${g.document.length}、表格/数据 ${g.spreadsheet.length+g.table.length}、图片 ${g.image.length}、视觉/地图 ${g.map.length}、其他 ${g.attachment.length}。`,"正文必须只写材料中的事实、参数、数量、做法和要求,不得出现文件名、来源清单或后台证据描述。"].filter(Boolean).join("\n");return{chapterId:a.id,textEvidence:c,resources:f,byKind:g,summary:i}}function w(a,b=8e3,c=24e3){let d=Number.isFinite(a)&&a>0?Math.ceil(a):1200,e=(0,j.z)().evidenceBudgetCeiling,f=Number.isFinite(e)&&e>0?Math.floor(e):c,g=(0,j.z)().evidenceBudgetRatio;return Math.min(Math.max(b,Math.min(f,Math.ceil(d*(Number.isFinite(g)&&g>0?g:8)))),Number.isFinite(e)&&e>0?1/0:12e3)}function x(a,b,c,d){let e=b.trim();if(!e)return;let f=Number.isFinite(d)&&0===d;if(null==d||!f&&c.chars+e.length<=d){a.push(e),c.chars+=e.length;return}c.omitted+=1}function y(a,b){let c=`${a.sectionTitle||""}
|
|
62
|
+
${a.content}`,d=a.score;for(let e of(g.sv.test(c)&&(d+=8),/计划工期|合同工期|合同估算价|合同估算价格|投资估算|最高投标限价|招标控制价|建设地点|建设规模|质量标准|招标范围/u.test(c)&&(d+=10),b))e&&(c.includes(e)||(0,h.Lk)(a,e))&&(d+=6);return/GB\s*\/?\s*T?|JGJ|CJJ|DB\s*\/?\s*T?|CECS|ISO/iu.test(c)&&(d+=3),d}function z(a,b,c,d,e=6){let f={chars:0,omitted:0},g=[],h=new Set,i=new Map,j=[...a].sort((a,b)=>d(b)-d(a));for(let a of j){if(i.has(a.filePath))continue;let d=g.length;x(g,c(a,g.length),f,b),g.length>d&&(i.set(a.filePath,1),h.add(a))}for(let a of j){if(h.has(a))continue;let d=i.get(a.filePath)||0;if(d>=e)continue;let j=g.length;x(g,c(a,g.length),f,b),g.length>j&&(i.set(a.filePath,d+1),h.add(a))}return{lines:g,omittedItems:j.filter(a=>!h.has(a)),omitted:f.omitted}}function A(a,b,c=300){let d,e=l("content"in a?a.content:a.snippets[0]||"").replace(/\s+/gu," ").trim();return d=e.length>c?e.length>4e3?r(e,c):(()=>{let a=Math.floor(.7*c),b=c-a-1;return`${e.slice(0,a)}…${e.slice(-b)}`})():e,`- [${b}] ${k(a)}${d?`|${d}`:""}`}function B(a,b,c,d=!1,e,g=!1,h=!1){let m=d?[]:[...new Set(a.textEvidence.flatMap(a=>n(a.content).split("\n").filter(Boolean)))],s=m.filter(a=>o.test(a)).map(q),t=m.filter(a=>!o.test(a)),u=b?Math.floor(.6*b):void 0,v=s,w=0;if(u&&v.join("\n").length>u){let a=(0,i.Cr)(v,a=>(0,i.Ox)(a),{maxChars:u},"t0-fact-lines");w=a.dropped.length,v=a.selected}let x=v.length?`【关键事实层——来自绑定材料的数值、参数与标准编号,正文必须原样落位,不得改写、不得编造层内没有的数值】
|
|
63
|
+
${v.map(a=>`- ${a}`).join("\n")}${w>0?`
|
|
64
|
+
(事实行总量超出预算上限,已按重要性保留前 ${v.length} 行)`:""}`:"",C=b?b-x.length:void 0;void 0!==C&&void 0!==b&&C<Math.min(2e3,b)&&(C=Math.min(2e3,b));let D=g&&e?a.resources.filter(b=>b.snippets.some(c=>e({chapterId:a.chapterId,filePath:b.filePath,score:b.score,content:c})>0)):a.resources,E=z(D.length>0?D:a.resources,C?Math.floor(.35*C):void 0,(a,b)=>[`- 资料:${k(a,b)}`,` 资料类型:${a.kind}`,` 正文用途:${a.contentUse}`,a.relatedFacts.length?` 可用事实方向:${a.relatedFacts.join("、")}`:"",a.snippets.length?` 可用内容:${a.snippets.map(l).filter(Boolean).join(" / ")}`:""].filter(Boolean).join("\n"),a=>a.score),F=g&&e?a.textEvidence.filter(a=>e(a)>0):a.textEvidence,G=g&&0===F.length?a.textEvidence:F,H=G.filter(a=>p(a)),I=G.filter(a=>!p(a)),J=C?Math.floor(.65*C):void 0,K="",L=J;if(t.length>0){let a=(0,i.Cr)(t,a=>(0,i.Ox)(a),{maxChars:J},"t0-demoted-fact-lines");a.selected.length>0&&(K=`工艺参数与规范事实行(按相关度排序):
|
|
65
65
|
${a.selected.map(a=>`- ${a}`).join("\n")}${a.dropped.length>0?`
|
|
66
|
-
(另有 ${a.dropped.length} 行因预算省略,完整事实仍参与检索与质量校验)`:""}`,void 0!==
|
|
66
|
+
(另有 ${a.dropped.length} 行因预算省略,完整事实仍参与检索与质量校验)`:""}`,void 0!==L&&(L=Math.max(0,L-K.length)))}let M="",N=[];if(H.length>0){let a=z(H,void 0!==L?Math.min(4e3,L):4e3,(a,b)=>{let c=l(a.content),d=c.length>3e3?r(c,3e3):c;return`${k(a,b)}
|
|
67
|
+
类型:${a.processingType||"table"}
|
|
68
|
+
章节/片段:${a.sectionTitle?.replace(f.tK,"")||"资料片段"}
|
|
69
|
+
内容(清单/表格行数据:条目名、特征、工程量与单位必须逐项照抄原值,不得改写、不得编造):
|
|
70
|
+
${d}`},a=>y(a,c)+(e?e(a):0),30);N=a.omittedItems,a.lines.length&&(M=`表格/清单原文:
|
|
71
|
+
${a.lines.join("\n\n---\n\n")}`,void 0!==L&&(L=Math.max(0,L-M.length)))}let O=z(I,L,(a,b)=>{let c=l(a.content),d=c.length>1200?r(c,1200):c;return`${k(a,b)}
|
|
67
72
|
类型:${a.processingType||"reference"}
|
|
68
73
|
章节/片段:${a.sectionTitle?.replace(f.tK,"")||"资料片段"}
|
|
69
74
|
内容:
|
|
70
|
-
${d}`},a=>
|
|
71
|
-
${
|
|
72
|
-
${
|
|
73
|
-
${
|
|
74
|
-
${g.lines.join("\n")}`:"",i=g.omittedItems.slice(0,40).map((a,b)=>
|
|
75
|
+
${d}`},a=>y(a,c)+(e?e(a):0)),P=[];E.lines.length&&P.push(`结构化资料:
|
|
76
|
+
${E.lines.join("\n")}`),K&&P.push(K),M&&P.push(M),O.lines.length&&P.push(`文本/附件片段:
|
|
77
|
+
${O.lines.join("\n\n---\n\n")}`);let Q=P.join("\n\n"),R=[...E.omittedItems,...N,...O.omittedItems],S=(0,j.z)().evidenceCatalogMaxLines||40,T=Number.isFinite(S)&&S>0?Math.floor(S):40,U=(h?[]:R).slice(0,T).map((a,b)=>A(a,b)),V=U.length?`【证据目录——未全文注入的片段压缩摘要(按重要性保留前 ${U.length} 条${R.length>U.length?`,另有 ${R.length-U.length} 条未注入`:""};正文可引用摘要内事实,不得编造摘要外的细节;完整片段仍参与后续检索与质量校验)】
|
|
78
|
+
${U.join("\n")}`:"",W=R.reduce((a,b)=>a+("content"in b?b.content.length:(b.snippets[0]||"").length),0),X={t0Chars:x.length,t1Chars:Q.length,t2Lines:U.length,t2Chars:V.length,omittedChars:W,omittedCount:R.length};return{t0Text:x,t1Text:Q,t2Text:V,omittedNote:X.omittedCount>0?`提示:完整证据池仍保留 ${a.textEvidence.length} 条文本片段、${a.resources.length} 个结构化材料;本次已注入关键事实层 ${X.t0Chars} 字(数值参数全量)与高相关片段 ${X.t1Chars} 字,另有 ${X.omittedCount} 条片段(${X.omittedChars} 字)仅以目录索引呈现,将在章节/小节相关检索和质量校验中继续参与。`:"",stats:X}}function C(a,b={}){let c=B(a,Number.isFinite(b.maxChars)&&b.maxChars>0?Math.ceil(b.maxChars):void 0,b.requiredFacts||[],!!b.skipT0,b.rankBoost,!!b.onlyRankBoosted,!!b.skipT2Catalog);if(b.diagnostics){let a=b.diagnostics.evidence;a.t0Chars+=c.stats.t0Chars,a.t1Chars+=c.stats.t1Chars,a.t2Lines+=c.stats.t2Lines,a.omittedChars+=c.stats.omittedChars}return[a.summary,c.t0Text,c.t1Text,c.t2Text,c.omittedNote].filter(Boolean).join("\n\n")}function D(a,b,c){let d=Number.isFinite(c)&&c>0?Math.floor(c):8e3,e=B(a,Math.floor(.5*d),b,!1),f=Math.max(1500,d-e.t0Text.length),g=z(a.textEvidence,f,(a,b)=>{let c=l(a.content),d=c.length>300?`${c.slice(0,300)}…`:c;return`- [${b}] ${k(a)}|${d}`},a=>y(a,b)),h=g.lines.length?`【章级证据摘要池——全章证据要点概览(正文事实必须以关键事实层与绑定材料为准,摘要仅供定位材料方向)】
|
|
79
|
+
${g.lines.join("\n")}`:"",i=g.omittedItems.slice(0,40).map((a,b)=>A(a,b,60)),j=i.length?`【证据目录——未进摘要池的片段索引(正文写作不使用目录内容;完整片段仍参与后续检索与质量校验)】
|
|
75
80
|
${i.join("\n")}`:"";return[e.t0Text,h,j].filter(Boolean).join("\n\n")}},70963:(a,b,c)=>{c.d(b,{C:()=>u,i:()=>t});var d=c(73024),e=c(76760),f=c(95734),g=c(22157),h=c(80439),i=c(61373),j=c(80572);function k(a){return a.map(a=>`${a.filePath}
|
|
76
81
|
${a.sectionTitle||""}
|
|
77
82
|
${a.content}`).join("\n")}let l={scope:{title:"项目基本信息、工程范围、主要工程内容",pattern:/项目名称|工程名称|招标范围|施工范围|建设内容|建设规模|建筑面积|工程概况|清单|图纸/u,guidance:"重点填充 works、requirements。必须识别项目名称、建设地点、建设规模、招标范围、工程内容;有来源才写。"},methods:{title:"关键施工方法与专业工序",pattern:/施工方法|施工工艺|工序|流程|专项|装饰|装修|加固|电气|给排水|消防|智能化|暖通|屋面|外墙/u,guidance:"重点填充 methods,并关联 applicableWorks。步骤必须来自资料或由资料中的专业工程内容直接归纳。"},resources:{title:"材料、设备、劳动力、工程量资源",pattern:/材料|设备|机械|劳动力|工程量|清单|规格|型号|数量|单位|暂估|主材/u,guidance:"重点填充 resources。材料设备和工程量能确认多少写多少,数量和单位不得编造。"},scheduleStandards:{title:"工期节点、质量目标、标准规范、验收要求",pattern:/工期|日历天|开工|竣工|节点|进度|质量|验收|标准|规范|合格|创优/u,guidance:"重点填充 schedule、standards。必须优先抽取总工期、质量标准、验收标准和关键节点。"},risksSite:{title:"现场条件、重难点、风险与约束",pattern:/现场|周边|交通|既有|营业|拆除|保护|安全|文明|扬尘|噪声|风险|难点|危大/u,guidance:"重点填充 risks、siteConditions。风险必须给出资料支撑的原因和控制方向。"},requirementsAddendum:{title:"招标管理要求、补疑澄清与修正",pattern:/招标|投标|合同|要求|承包|分包|保修|补疑|澄清|答疑|修正|变更|编制/u,guidance:"重点填充 requirements、addendumChanges。补疑澄清必须写 original、revised、sourceFile。评标办法、评分细则、分值构成、评审内容项属商务程序性内容,对施工组织设计编制无用,一律不抽取、不进图谱。无法确认原文时不要编造。"}};function m(a,b,c=8){return[...new Set(a.filter(a=>b.test(a.content)||b.test(a.sectionTitle||"")||b.test(a.filePath)).map(a=>a.filePath))].slice(0,c)}function n(a){return a.works.length+a.methods.length+a.resources.length+a.schedule.length+a.standards.length+a.risks.length+a.requirements.length+a.siteConditions.length+a.addendumChanges.length}function o(a){let b=e.join(process.env.HOME||process.cwd(),".customize-agent","cache","document-workflow",(0,g.c6)(a||"default"));return d.mkdirSync(b,{recursive:!0}),b}function p(a,b,c){let f=o(a);f&&c&&d.writeFileSync(e.join(f,`project-graph-${b}.json`),JSON.stringify(c,null,2))}function q(a,b){if(!a)return{ok:!1,reasons:["LLM 未返回可解析的 ProjectGraph JSON"]};let c=[],d=n(a),e=k(b);0===d&&c.push("ProjectGraph 全部节点为空"),/招标范围|施工范围|建设内容|工程名称|项目名称|工程量|清单|图纸/u.test(e)&&0===a.works.length&&c.push("缺少工程范围/主要工程内容 works"),/工期|日历天|进度/u.test(e)&&0===a.schedule.length&&c.push("资料包含工期信息但 schedule 为空"),/质量|验收|标准|规范/u.test(e)&&0===a.standards.length&&c.push("资料包含质量/验收/标准信息但 standards 为空"),/材料|设备|机械|劳动力|工程量|清单/u.test(e)&&0===a.resources.length&&c.push("资料包含资源或工程量信息但 resources 为空");let f=[...a.works,...a.methods,...a.resources,...a.schedule,...a.standards,...a.risks,...a.requirements,...a.siteConditions].filter(a=>(a.sourceFiles||[]).length>0).length+a.addendumChanges.filter(a=>a.sourceFile).length;return d>0&&0===f&&c.push("图谱节点缺少来源文件"),{ok:0===c.length,reasons:c}}function r(a,b=!1){let c=a.works.length+a.methods.length+a.resources.length+a.schedule.length+a.standards.length+a.risks.length+a.requirements.length+a.siteConditions.length+a.addendumChanges.length;return(0,h.X5)({type:"file_understanding",roleId:"project-graph",status:"success",message:`${b?"复用缓存:":""}${a.works.length}工程 ${a.methods.length}工法 ${a.resources.length}资源 ${a.schedule.length}节点 ${a.standards.length}标准 ${a.risks.length}风险 ${a.requirements.length}要求 ${a.siteConditions.length}条件 ${a.addendumChanges.length}修正${a.gaps.length?` ${a.gaps.length}缺口`:""}(${c}项)`,details:[...a.works.slice(0,3).map(a=>a.name),...a.resources.slice(0,3).map(a=>a.name),...a.gaps.slice(0,3)]},{subtitle:"项目图谱分析"})}function s(a){return(0,h.X5)({type:"file_understanding",roleId:"project-graph",status:"failed",message:`项目图谱分析失败:${a.slice(0,3).join(";")}`,details:a.slice(0,8)},{subtitle:"项目图谱分析"})}async function t(a){var b;if((0,g.Te)(a.signal),0===a.evidence.length)return{stage:s(["未检索到项目证据,无法生成可信 LLM 项目图谱"])};let c=(b={evidence:a.evidence,requirement:a.requirement,templateId:a.templateId,projectRoot:a.projectRoot},(0,g.c6)({version:"project-graph-v5-short-timeout-single-pass",requirement:b.requirement||"",templateId:b.templateId||"",evidence:b.evidence.map(a=>({filePath:a.filePath,fileSig:function(a,b){if(!a)return;let c=e.isAbsolute(b)?b:e.join(a,b);try{let a=d.statSync(c);return{mtimeMs:a.mtimeMs,size:a.size}}catch{return}}(b.projectRoot,a.filePath),sectionTitle:a.sectionTitle,contentHash:(0,g.c6)({length:a.content.length,head:a.content.slice(0,8e3),tail:a.content.slice(-8e3)})})).sort((a,b)=>`${a.filePath}${a.sectionTitle}`.localeCompare(`${b.filePath}${b.sectionTitle}`))})),h=function(a,b){let c=o(a);if(c)try{let a=JSON.parse(d.readFileSync(e.join(c,`project-graph-${b}.json`),"utf8"));return a&&Array.isArray(a.works)?a:void 0}catch{return}}(a.projectRoot,c),t=h?q(h,a.evidence):void 0;if(h&&t?.ok)return{graph:h,stage:r(h,!0)};let u=[...a.evidence].sort((a,b)=>b.score-a.score),v=function(a){let b=k(a),c=(a,c)=>{let d=function(a,b){let c=a.match(b);return c?.[1]?.replace(/\s+/gu," ").trim().slice(0,500)||""}(b,c);return d?`${a}:${d}`:""};return[c("项目名称",/(?:招标项目名称|项目名称|工程名称)[::\s]*([^。;\n]{3,120})/u),c("建设地点",/(?:建设地点|项目地点|实施地点)[::\s]*([^。;\n]{3,160})/u),c("建设规模",/(?:建设规模|建筑面积|总建筑面积)[::\s]*([^。;\n]{3,120})/u),c("计划工期",/(?:计划工期|总工期|工期要求|工期总日历天数)[::\s]*([^。;\n]{2,80})/u),c("质量标准",/(?:质量标准|质量要求|质量目标)[::\s]*([^。;\n]{2,120})/u),c("招标范围",/(?:招标范围|工程承包范围|施工范围|建设内容)[::\s]*([\s\S]{20,700}?)(?=\n#{1,4}\s|\n\d+[.、]\s|质量|工期|$)/u),m(a,/补疑|澄清|答疑|修正/u).length?`补疑澄清文件:${m(a,/补疑|澄清|答疑|修正/u).join("、")}`:""].filter(Boolean)}(u),w=[];async function x(b,c=[]){let d=function(a,b,c=52e3){let d=l[b],e=[...a].sort((a,b)=>{let c=+!!d.pattern.test(`${a.filePath}${a.sectionTitle||""}${a.content}`);return!!d.pattern.test(`${b.filePath}${b.sectionTitle||""}${b.content}`)-c||b.score-a.score}),f=[],g=0;for(let a of e){let b={...a,content:a.content.replace(/\s+/gu," ").trim().slice(0,5e3)};if((!(g+b.content.length>c)||!(f.length>=8))&&(f.push(b),(g+=b.content.length)>=c||f.length>=18))break}return f}(u,b,c.length?64e3:52e3),h=await (0,f.bb)(`${(0,i.y4)('通读以下项目资料(招标文件、工程量清单、图纸设计说明、补疑文件等),\n输出一个 JSON 对象,描述你对该项目的完整理解。\n\nJSON 字段(全部为数组,无相关信息时返回空数组):\n works: [{name, scope, sourceFiles, relatedItems}]\n methods: [{name, steps, applicableWorks, sourceFiles}]\n resources: [{name, type:"material"|"equipment"|"labor", spec, quantity, unit, sourceFiles}]\n schedule: [{milestone, duration, startDate, endDate, sourceFiles}]\n standards: [{code, description, sourceFiles}]\n risks: [{risk, level:"high|medium|low", mitigation, sourceFiles}]\n requirements: [{category, detail, sourceFiles}]\n siteConditions: [{condition, impact, sourceFiles}]\n addendumChanges: [{originalPath, original, revised, sourceFile}]\n gaps: [string] 仅记录资料中确实缺失且影响施工组织设计编制的事实;证据中已出现的内容不得声称「未提供/未找到」\n\n只基于资料内容,不编造。每个条目标注来源文件。只返回 JSON。')}
|
|
@@ -91,6 +96,6 @@ ${b.slice(0,2e3)}`),k=(()=>{let d=f.contextLayers?.l3||0;if(d<=0||d>=b.length)re
|
|
|
91
96
|
${i}`),warmup:()=>{let a=f.diagnostics?B(f.diagnostics,f.prefixKey):void 0;return a&&(a.calls+=1,a.inputChars+=e.length+i.length),o.chat([{role:"system",content:e},{role:"user",content:i}],{temperature:0,maxTokens:1,signal:h,disableThinking:r.disableThinking}).then(b=>{a&&b.usage&&(a.cacheHitTokens+=b.usage.promptCacheHitTokens||0,a.cacheMissTokens+=b.usage.promptCacheMissTokens||0)}).then(()=>void 0)}}})(),l=await new Promise((g,l)=>{!function(a,b,c,d){var e;let f=(e=j,void 0!==v?v:e>=16?500:120);if(f<=0)return b();s.push({fingerprint:a,launch:b,warmup:c,warmupKey:d}),t||(t=setTimeout(()=>{t=null;let a=s;s=[],function(a){let b=[...a].sort((a,b)=>a.fingerprint<b.fingerprint?-1:+(a.fingerprint>b.fingerprint)),c=[];for(let a of b){let b=c[c.length-1];b&&b[0].fingerprint===a.fingerprint?b.push(a):c.push([a])}for(let a of c){let b=a.find(a=>a.warmup&&a.warmupKey);if(!("0"!==process.env.DOCUMENT_PREFIX_WARMUP&&a.length>=2&&b?.warmup&&b.warmupKey&&!u.has(b.warmupKey))){for(let b of a)b.launch();continue}let c=b.warmupKey;u.add(c),b.warmup().catch(()=>{u.delete(c)}).then(()=>{for(let b of a)b.launch()})}}(a)},f))}(i,()=>{if(f.signal?.aborted)return void l(Error("用户中止"));o.chat([{role:"system",content:c?`${a}
|
|
92
97
|
只返回 JSON,不要返回 markdown。`:a},{role:"user",content:e?`${b}
|
|
93
98
|
|
|
94
|
-
(重要:缩短思考过程,直接给出最终结论。)`:b}],{temperature:f.temperature
|
|
99
|
+
(重要:缩短思考过程,直接给出最终结论。)`:b}],{temperature:f.temperature??0,maxTokens:d,signal:h,disableThinking:r.disableThinking}).then(g).catch(a=>{l(a instanceof Error?a:Error(String(a)))})},k?.warmup,k?.warmupKey)}),m=l.content?.trim()??"";if(m){if(f.diagnostics&&l.usage){let a=f.diagnostics.llm;a.inputTokens=(a.inputTokens||0)+l.usage.promptTokens,a.outputTokens=(a.outputTokens||0)+l.usage.completionTokens,a.promptCacheHitTokens=(a.promptCacheHitTokens||0)+(l.usage.promptCacheHitTokens||0),a.promptCacheMissTokens=(a.promptCacheMissTokens||0)+(l.usage.promptCacheMissTokens||0);let b=B(f.diagnostics,f.prefixKey);b.cacheHitTokens+=l.usage.promptCacheHitTokens||0,b.cacheMissTokens+=l.usage.promptCacheMissTokens||0,l.usage.reasoningTokens&&(a.reasoningTokens=(a.reasoningTokens||0)+l.usage.reasoningTokens)}return m}throw A};for(let a=0;a<=1;a+=1){if(f.signal?.aborted)throw Error("用户中止");try{let b=1===a&&h===A,c=await C(y,b);return p=0,f.diagnostics&&(f.diagnostics.llm.failureStreak=0),c}catch(b){if(h=b,f.signal?.aborted)throw Error("用户中止",{cause:b});if(b!==A&&!function(a){let b=a instanceof Error?`${a.name} ${a.message}`:String(a);return/connection error|econnrefused|econnreset|fetch failed|network|socket|eai_again|enotfound|etimedout|429|502|503|504|rate ?limit|too many requests|overloaded|服务繁忙|连接失败|abort|timeout|timed ?out|terminated/iu.test(b)}(b)||a>=1)break;f.diagnostics&&(f.diagnostics.llm.retries+=1),await new Promise(c=>{setTimeout(c,function(a,b=0){return"0"!==process.env.DOCUMENT_LLM_RETRY_BACKOFF&&a&&function(a){let b=a instanceof Error?`${a.name} ${a.message}`:String(a);return/503|overloaded|服务繁忙/iu.test(b)}(a)?Math.min(3e4,2e3*2**Math.max(0,b))+Math.floor(1e3*Math.random()):1200+Math.floor(800*Math.random())}(b,a))})}}p+=1,f.diagnostics&&(f.diagnostics.llm.failures+=1,f.diagnostics.llm.failureStreak=(f.diagnostics.llm.failureStreak||0)+1,f.diagnostics.llm.lastError=h instanceof Error?h.message:h===A?"空响应(思考阶段耗尽输出预算)":String(h));return}finally{k()}}function D(a){let b=a.trim(),c=b.match(/^```(?:json)?\s*([\s\S]*?)\s*```$/iu)?.[1]?.trim();if(c)return c;let d=b.indexOf("{"),e=b.lastIndexOf("}"),f=b.indexOf("["),g=b.lastIndexOf("]"),h=d>=0&&e>d?b.slice(d,e+1):"",i=f>=0&&g>f?b.slice(f,g+1):"";return h&&(!i||d<=f)?h:i||b}function E(a,b){if("object"!=typeof a||null===a||Array.isArray(a))return[`根节点类型错误(期望 object,得到 ${null===a?"null":Array.isArray(a)?"array":typeof a})`];let c=[];for(let d of b.required||[])d in a||c.push(`缺失字段 $.${d}`);for(let[d,e]of Object.entries(b.properties)){let b=a[d];if(void 0===b){e.required&&c.push(`缺失字段 $.${d}`);continue}c.push(...function a(b,c,d){let e=Array.isArray(b)?"array":null===b?"null":typeof b;if("number"===c.type&&"string"===e){let a=String(b).trim(),c=Number(a);""!==a&&Number.isFinite(c)&&(e="number")}if(e!==c.type)return[`字段 ${d} 类型错误(期望 ${c.type},得到 ${Array.isArray(b)?"array":null===b?"null":typeof b})`];let f=[];if("string"===c.type)void 0!==c.minLength&&b.length<c.minLength&&f.push(`字段 ${d} 长度不足(期望 ≥${c.minLength},得到 ${b.length})`),void 0!==c.maxLength&&b.length>c.maxLength&&f.push(`字段 ${d} 长度超限(期望 ≤${c.maxLength},得到 ${b.length})`);else if("array"===c.type)void 0!==c.minItems&&b.length<c.minItems&&f.push(`字段 ${d} 条数不足(期望 ≥${c.minItems},得到 ${b.length})`),void 0!==c.maxItems&&b.length>c.maxItems&&f.push(`字段 ${d} 条数超限(期望 ≤${c.maxItems},得到 ${b.length})`),c.items&&b.forEach((b,e)=>f.push(...a(b,c.items,`${d}[${e}]`)));else if("object"===c.type&&c.properties)for(let[e,g]of Object.entries(c.properties)){let c=b[e];if(void 0===c){g.required&&f.push(`缺失字段 ${d}.${e}`);continue}f.push(...a(c,g,`${d}.${e}`))}return f}(b,e,`$.${d}`))}return c.slice(0,6)}function F(a,b){a&&(a.llm.schemaFailures=(a.llm.schemaFailures||0)+1,a.llm.lastError=b)}function G(a){return Math.ceil(1.5*(a||2e3))}async function H(a,b,c={},d){let e,f=c.maxTokens,g=d??((a,b)=>C(a,b,!0,{maxTokens:f,temperature:c.temperature,signal:c.signal,diagnostics:c.diagnostics,disableThinkingBoost:c.disableThinkingBoost,taskKind:c.taskKind,contextLayers:c.contextLayers,prefixKey:c.prefixKey}));for(let d=0;d<=2&&!c.signal?.aborted;d+=1){let h=0===d?b:`${b}
|
|
95
100
|
|
|
96
101
|
(重试修正:上一次输出未通过——${e??"输出无效"}。请重新输出完整合法的 JSON,只返回 JSON。)`,i=await g(a,h);if(!i){c.outFailure&&c.diagnostics?.llm.lastError&&(c.outFailure.value=c.diagnostics.llm.lastError);break}let j=D(i);try{let a=JSON.parse(j);if(c.schema){let b=E(a,c.schema);if(b.length>0){let a=`JSON Schema 校验失败:${b.join(";")}`;if(e=a,F(c.diagnostics,a),a.includes("缺失字段")&&(f=G(f)),d>=2){c.outFailure&&(c.outFailure.value=a);return}continue}}return a}catch{let a=function(a){let b=a.trim(),c=b.match(/^```(?:json)?\s*([\s\S]*?)\s*```$/iu)?.[1]?.trim()??b,d=c.indexOf("{"),e=c.indexOf("["),f=d<0?e:e<0?d:Math.min(d,e);if(f<0)return;let g=c.slice(f),h=[],i=!1,j=!1,k=[];for(let a=0;a<g.length;a+=1){let b=g[a];if(i){j?j=!1:"\\"===b?j=!0:'"'===b&&(i=!1);continue}if('"'===b){i=!0;continue}if("{"===b||"["===b){h.push("{"===b?"object":"array");continue}if("}"===b||"]"===b){h.pop();continue}","===b&&(k[h.length-1]=a)}if(0===h.length)return;let l=-1;for(let a=h.length-1;a>=0;a-=1)if(void 0!==k[a]){l=a;break}if(l<0)return;let m=k[l],n=g.slice(0,m),o=[];for(let a=l;a>=0;a-=1)o.push("object"===h[a]?"}":"]");let p=`${n}${o.join("")}`;try{return JSON.parse(p),p}catch{return}}(i);if(a)try{let b=JSON.parse(a);if(c.schema){let a=E(b,c.schema);if(0===a.length)return b;let g=`JSON Schema 校验失败:${a.join(";")}`;if(e=g,F(c.diagnostics,g),g.includes("缺失字段")&&(f=G(f)),d>=2){c.outFailure&&(c.outFailure.value=g);return}continue}return b}catch{}let b=`JSON 解析失败:${function(a){let b=D(a),c=(b.match(/\{/gu)||[]).length-(b.match(/\}/gu)||[]).length,d=(b.match(/\[/gu)||[]).length-(b.match(/\]/gu)||[]).length,e=b.slice(-80).replace(/\s+/gu," ");return c>0||d>0?`JSON 被截断({ 未闭合 ${c} 个、[ 未闭合 ${d} 个),截断位置响应末段:${e}`:`JSON 语法错误,出错位置响应末段:${e}`}(j)}`;if(e=b,/JSON 被截断/u.test(b)&&(f=G(f)),F(c.diagnostics,b),d>=2){c.outFailure&&(c.outFailure.value=b);return}continue}}}async function I(a,b,c={}){return H(a,b,c)}}};
|