@customize-agent/server 4.1.31 → 4.1.32

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.
@@ -55,7 +55,7 @@ ${b}
55
55
  返回 JSON。`}(a)].filter(Boolean).join("\n\n")}(d,b,s),{temperature:.1*!c.length,signal:a.signal,timeoutMs:a.timeoutMs||9e4});(0,g.Te)(a.signal);if(!h)return;let i=new Set(d.map(a=>a.filePath)),k=a=>"string"==typeof a&&(i.has(a)||d.some(b=>e.basename(b.filePath)===e.basename(a))),l=(a,b)=>"string"==typeof a?a.slice(0,b):"number"==typeof a?String(a).slice(0,b):"",m=(a,b)=>(Array.isArray(a)?a.filter(a=>"string"==typeof a&&a.length>0):[]).slice(0,b);return{works:(h.works||[]).filter(a=>"string"==typeof a.name&&"string"==typeof a.scope).map(a=>({name:l(a.name,200),scope:l(a.scope,500),sourceFiles:m(a.sourceFiles,10).filter(k),relatedItems:m(a.relatedItems,20)})),methods:(h.methods||[]).filter(a=>"string"==typeof a.name).map(a=>({name:l(a.name,200),steps:m(a.steps,12),applicableWorks:m(a.applicableWorks,10),sourceFiles:m(a.sourceFiles,10).filter(k)})),resources:(h.resources||[]).filter(a=>"string"==typeof a.name).map(a=>({name:l(a.name,200),type:"material"===a.type||"equipment"===a.type||"labor"===a.type?a.type:"material",spec:l(a.spec,200),quantity:l(a.quantity,50),unit:l(a.unit,20),sourceFiles:m(a.sourceFiles,5).filter(k)})),schedule:(h.schedule||[]).filter(a=>"string"==typeof a.milestone).map(a=>({milestone:l(a.milestone,200),duration:l(a.duration,100),startDate:l(a.startDate,50),endDate:l(a.endDate,50),sourceFiles:m(a.sourceFiles,5).filter(k)})),standards:(h.standards||[]).filter(a=>"string"==typeof a.code||"string"==typeof a.description).map(a=>({code:l(a.code,100),description:l(a.description,300),sourceFiles:m(a.sourceFiles,5).filter(k)})),risks:(h.risks||[]).filter(a=>"string"==typeof a.risk).map(a=>({risk:l(a.risk,300),level:"high"===a.level||"medium"===a.level||"low"===a.level?a.level:"medium",mitigation:l(a.mitigation,500),sourceFiles:m(a.sourceFiles,5).filter(k)})),requirements:(h.requirements||[]).filter(a=>"string"==typeof a.category&&"string"==typeof a.detail).map(a=>({category:l(a.category,100),detail:l(a.detail,500),sourceFiles:m(a.sourceFiles,5).filter(k)})),siteConditions:(h.siteConditions||[]).filter(a=>"string"==typeof a.condition).map(a=>({condition:l(a.condition,300),impact:l(a.impact,500),sourceFiles:m(a.sourceFiles,5).filter(k)})),addendumChanges:(h.addendumChanges||[]).filter(a=>"string"==typeof a.original&&"string"==typeof a.revised).map(a=>({originalPath:l(a.originalPath,300),original:l(a.original,300),revised:l(a.revised,500),sourceFile:l(a.sourceFile,200)})),gaps:m(h.gaps,20),generatedAt:Date.now()}}async function v(b=[]){let c=Object.keys(j),d=(await (0,g.l$)(c,async c=>{try{let a=await u(c,b);if(a&&l(a)>0)return a;t.push(`${j[c].title} 未抽取到有效节点`)}catch(b){if(a.signal?.aborted)throw b;t.push(`${j[c].title} LLM 调用失败:${b instanceof Error?b.message:String(b)}`)}},{kind:"llmRepair",targetWords:4e3,concurrency:Number(process.env.DOCUMENT_PROJECT_GRAPH_DOMAIN_CONCURRENCY||2)})).filter(a=>!!a);return d.length?function(a){let b={w:new Set,m:new Set,r:new Set,sc:new Set,st:new Set,ri:new Set,rq:new Set,si:new Set,a:new Set};return{works:a.flatMap(a=>a.works).filter(a=>{let c=a.name+a.scope;return!b.w.has(c)&&(b.w.add(c),!0)}),methods:a.flatMap(a=>a.methods).filter(a=>{let c=a.name;return!b.m.has(c)&&(b.m.add(c),!0)}),resources:a.flatMap(a=>a.resources).filter(a=>{let c=a.name+a.spec+a.type;return!b.r.has(c)&&(b.r.add(c),!0)}),schedule:a.flatMap(a=>a.schedule).filter(a=>{let c=a.milestone;return!b.sc.has(c)&&(b.sc.add(c),!0)}),standards:a.flatMap(a=>a.standards).filter(a=>{let c=a.code+a.description;return!b.st.has(c)&&(b.st.add(c),!0)}),risks:a.flatMap(a=>a.risks).filter(a=>{let c=a.risk;return!b.ri.has(c)&&(b.ri.add(c),!0)}),requirements:a.flatMap(a=>a.requirements).filter(a=>{let c=a.category+a.detail;return!b.rq.has(c)&&(b.rq.add(c),!0)}),siteConditions:a.flatMap(a=>a.siteConditions).filter(a=>{let c=a.condition;return!b.si.has(c)&&(b.si.add(c),!0)}),addendumChanges:a.flatMap(a=>a.addendumChanges).filter(a=>{let c=a.original+a.revised;return!b.a.has(c)&&(b.a.add(c),!0)}),gaps:[...new Set(a.flatMap(a=>a.gaps))],generatedAt:Date.now()}}(d):void 0}try{let b=await v(),f=n(b,r);if(f.ok&&b||b&&l(b)>0)return function(a,b,c){let f=m(a);f&&c&&d.writeFileSync(e.join(f,`project-graph-${b}.json`),JSON.stringify(c,null,2))}(a.projectRoot,c,b),{graph:b,stage:o(b)};return{stage:p([...f.reasons,...t])}}catch(b){if(a.signal?.aborted)throw b;return console.error("[project-graph] failed:",b),{stage:p([b instanceof Error?b.message:String(b),...t])}}}function r(a){let b=["## 项目资料图谱分析结果",""];for(let c of a.works)2===b.length&&b.push("### 主要工程内容"),b.push(`- **${c.name}**:${c.scope}`);for(let c of(a.works.length&&b.push(""),a.methods))b.includes("### 关键施工方法与工艺")||b.push("### 关键施工方法与工艺"),b.push(`- **${c.name}**:${c.steps.filter(Boolean).join(" → ")}`);for(let c of(a.methods.length&&b.push(""),a.resources)){b.includes("### 资源需求")||b.push("### 资源需求");let a={material:"材料",equipment:"设备",labor:"劳动力"}[c.type]||"资源";b.push(`- [${a}] ${c.name}${c.spec?`(${c.spec})`:""}${c.quantity?` ${c.quantity}${c.unit}`:""}`)}for(let c of(a.resources.length&&b.push(""),a.schedule))b.includes("### 工期与关键节点")||b.push("### 工期与关键节点"),b.push(`- ${c.milestone}:${c.duration}(${c.startDate} ~ ${c.endDate})`);for(let c of(a.schedule.length&&b.push(""),a.standards))b.includes("### 技术标准与验收要求")||b.push("### 技术标准与验收要求"),b.push(`- **${c.code}**:${c.description}`);for(let c of(a.standards.length&&b.push(""),a.risks))b.includes("### 重点难点与风险")||b.push("### 重点难点与风险"),b.push(`- **[${c.level}] ${c.risk}**:${c.mitigation}`);for(let c of(a.risks.length&&b.push(""),a.requirements))b.includes("### 特定要求")||b.push("### 特定要求"),b.push(`- [${c.category}] ${c.detail}`);for(let c of(a.requirements.length&&b.push(""),a.siteConditions))b.includes("### 现场条件与约束")||b.push("### 现场条件与约束"),b.push(`- ${c.condition}:${c.impact}`);for(let c of(a.siteConditions.length&&b.push(""),a.addendumChanges))b.includes("### 补疑修正")||b.push("### 补疑修正"),b.push(`- "${c.original}" → "${c.revised}"`);for(let c of(a.addendumChanges.length&&b.push(""),a.gaps))b.includes("### 资料缺口")||b.push("### 资料缺口"),b.push(`- ${c}`);return a.gaps.length&&b.push(""),b.join("\n")}},78217:(a,b,c)=>{function d(a,b){return Math.ceil(e(a)/f(b))}function e(a){return a.replace(/<[^>]+>/gu,"").replace(/\s+/gu,"").length}function f(a){let b=Number(String(a&&"typography"in a&&a.typography?.bodySize||"").replace(/[^\d.]/gu,""))||14,c=Number(String(a&&"typography"in a&&a.typography?.lineHeight||"").replace(/[^\d.]/gu,""))||22;return b>=14&&c>=22?900:1050}function g(a){let b=a.trim();if(/^\d+(?:\.\d+)?$/u.test(b))return Number(b);let c={零:0,一:1,二:2,两:2,三:3,四:4,五:5,六:6,七:7,八:8,九:9};if("十"===b)return 10;let d=/^([一二两三四五六七八九])?十([一二三四五六七八九])?$/u.exec(b);if(d)return(d[1]?c[d[1]]:1)*10+(d[2]?c[d[2]]:0)}function h(a="",b=""){let c=`${a}${b}`;return/不少于|至少|不低于|以上|起码/u.test(c)?"minimum":/约|大概|左右|大约|约为|附近/u.test(c)?"approximate":"exact"}function i(a){let b=a.replace(/\s+/gu," "),c=[...b.matchAll(/(不少于|至少|不低于|约为|约|大概|大约|左右|生成|输出|达到|共)?\s*(\d+(?:\.\d+)?|[一二两三四五六七八九十]{1,3})\s*(?:页|頁)\s*(以上|左右|以内|以下)?/gu)],d=[...b.matchAll(/(不少于|至少|不低于|约为|约|大概|大约|左右|生成|输出|达到|共)?\s*(\d+(?:\.\d+)?|[一二两三四五六七八九十]{1,3})\s*(万)?\s*(?:字|字符)\s*(以上|左右|以内|以下)?/gu)],e=c.map(a=>{let b=g(a[2]||"");return Number.isFinite(b)?{value:b,mode:h(a[1],a[3])}:void 0}).filter(a=>!!a).at(-1),f=d.map(a=>{let b=g(a[2]||"");return b?{value:Math.round(b*(a[3]?1e4:1)),mode:h(a[1],a[4])}:void 0}).filter(a=>!!a).at(-1);return{targetPages:e?.value,pageMode:e?.mode,targetChars:f?.value,charMode:f?.mode}}function j(a){let b=a.title+a.purpose;return/方法|技术|质量|安全|进度|资源|保障|措施|部署|方案|流程|执行/u.test(b)?1.3:/概况|结语|附录/u.test(b)?.75:1}function k(a){let b=a.template.generationSettings||a.template.exportSettings,c=f(a.template.exportSettings||a.template.generationSettings),d=i(a.requirement||""),e=i(a.promptTexts||""),g=d.targetChars||d.targetPages?d:e,h=!!(g.targetChars||g.targetPages),k=h?void 0:b?.targetPages?.target||b?.targetPages?.min,l=g.targetPages?g.targetPages*c:void 0,m=g.targetPages||k,n=h?"explicit":k?"template":a.spec?.chapterRules.some(a=>a.minWords)||a.spec?.dynamicChapterRule.minWordsPerChapter?"spec":"default",o=h?Math.max(g.targetChars||0,l||0)||void 0:Math.max((k?k*c:void 0)||0)||void 0,p=g.pageMode||"exact",q=g.charMode||p,r=h&&"approximate"===q,s=h&&"minimum"===q,t=h?m?Math.floor(m*(s?1:.9)):void 0:b?.targetPages?.min||(m?Math.floor(.95*m):void 0),u=h&&m&&!s?Math.ceil(m*(r?1.15:1.08)):b?.targetPages?.max,v=o?Math.floor(o*(s?1:.9)):t?t*c:void 0,w=o&&!s?Math.ceil(o*(r?1.15:1.08)):u?u*c:void 0,x=a.chapters.length>0?a.chapters:a.template.chapters,y=x.reduce((a,b)=>a+j(b),0)||1,z=new Map,A=x.map(a=>({chapter:a,target:o?Math.round(o*j(a)/y):0})),B=x.reduce((b,c)=>b+Math.max(a.spec?.chapterRules.find(a=>a.id===c.id||a.title===c.title)?.minWords||0,a.spec?.dynamicChapterRule.minWordsPerChapter||0,o?Math.min(900,Math.max(450,Math.floor(o/Math.max(1,x.length)*.35))):1200),0),C=o&&B>.92*o?Math.max(.45,.92*o/B):1;for(let{chapter:b,target:c}of A){let d=Math.floor(Math.max(Math.max(a.spec?.chapterRules.find(a=>a.id===b.id||a.title===b.title)?.minWords||0,a.spec?.dynamicChapterRule.minWordsPerChapter||0),o?Math.min(900,Math.max(450,Math.floor(o/Math.max(1,x.length)*.35))):1200)*C);z.set(b.id,Math.max(d,c))}let D=!!(h&&(s||"exact"===q)&&(o||v||0)>=4e4);return{targetPages:m,minPages:t,maxPages:u,targetChars:o,minChars:v,maxChars:w,charsPerPage:c,chapterTargets:z,source:n,mode:q,longformStrict:D}}function l(a,b){let c=a?.targetPages;if(!c?.min&&!c?.target&&!c?.max)return[];let e=d(b,a),f=c.min||c.target,g=c.max||c.target,h=[];return f&&e<f&&h.push({level:"warning",message:`正文篇幅低于目标页数:预计约 ${e} 页,目标不少于 ${f} 页`,suggestion:"建议增加章节正文深度,或根据实际需求调整目标页数。"}),g&&e>g+4&&h.push({level:"warning",message:`正文篇幅可能超过目标页数:预计约 ${e} 页,目标不超过 ${g} 页`,suggestion:"建议检查是否存在重复段落或过度展开。"}),h}function m(a,b){let{currentChars:c,estimatedPages:d}=function(a,b){let c=e(b),d=Math.ceil(c/a.charsPerPage);return{currentChars:c,estimatedPages:d}}(a,b),f=[];return a.minChars&&c<a.minChars&&f.push({level:"warning",message:`正文篇幅低于目标字数:当前 ${c} 字,目标不少于 ${a.minChars} 字`,suggestion:"建议继续扩写缺口章节,或根据实际需求调整目标字数/页数。"}),a.maxChars&&c>Math.ceil(1.12*a.maxChars)?f.push({level:"error",message:`正文篇幅超过目标字数区间:当前 ${c} 字,建议不超过 ${a.maxChars} 字`,suggestion:"请压缩重复段落、过细小节或过度展开内容后再导出。"}):a.maxChars&&c>a.maxChars&&f.push({level:"warning",message:`正文篇幅超过目标字数区间:当前 ${c} 字,建议不超过 ${a.maxChars} 字`,suggestion:"建议减少重复段落、过细小节或过度展开内容。"}),a.minPages&&d<a.minPages&&f.push({level:"warning",message:`正文篇幅低于目标页数:预计约 ${d} 页,目标不少于 ${a.minPages} 页`,suggestion:"建议继续扩写正文,或根据实际导出版式调整目标页数。"}),a.maxPages&&d>a.maxPages&&f.push({level:"warning",message:`正文篇幅超过目标页数区间:预计约 ${d} 页,建议不超过 ${a.maxPages} 页`,suggestion:"建议压缩过度展开内容或调整目标页数。"}),f}c.d(b,{Cv:()=>d,PE:()=>l,V7:()=>e,tF:()=>k,ty:()=>m})},80439:(a,b,c)=>{function d(a){return a?({"knowledge-base":"知识库","document-readiness":"生成准备度检查","quality-repair":"质量补写","export-gate":"导出门禁","final-format":"正式排版","multimodal-files":"多模态文件理解","llm-json":"LLM 事实抽取","llm-review":"LLM 审查","document-workflow":"最终规范校验"})[a]:void 0}function e(a,b={}){let c={executionVersion:2,title:{role_binding:"项目角色配置绑定",knowledge_retrieval:"知识库证据检索",file_understanding:"项目资料理解",fact_extraction:"事实抽取",chapter_generation:"章节正文生成",asset_generation:"生成资源处理",llm_review:"LLM 审查优化",validation:"内容优化与质量校验",formatting:"正式排版整理",export_ready:"导出就绪检查",reference:"资料增强"}[a.type],group:a.type,...a,...b};return{...c,roleName:c.roleName||d(c.roleId),subtitle:c.subtitle||c.roleName||d(c.roleId)}}function f(a,b){let c=a=>"chapter_generation"===a.type||/^agent-(?:reviewer|repairer|chapter-task|final-gate-repair)-/u.test(a.roleId||"")?[a.type,a.roleId||"",a.promptId||"",a.subtitle||"",a.order??""].join("::"):[a.type,a.roleId||"",a.promptId||""].join("::"),d=c(b),e=a.findIndex(a=>c(a)===d);return e>=0?(a[e]={...b,order:a[e]?.order??b.order},e):(a.push(b),a.length-1)}function g(a,b){return`${a},耗时 ${Math.round((Date.now()-b)/1e3)} 秒`}c.d(b,{AQ:()=>g,X5:()=>e,fx:()=>f})},81125:(a,b,c)=>{c.d(b,{h:()=>e,o:()=>f});var d=c(92808);function e(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,d.t0)(b,d.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?"必需资料角色缺失":"可选资料角色缺失"}})}function f(a){if(0===a.length)return 1;let b=a.filter(a=>a.required),c=a.filter(a=>!a.required),d=b.length?b.filter(a=>a.satisfied).length/b.length:1;return Math.max(0,Math.min(1,.75*d+.2*(c.length?c.filter(a=>a.satisfied).length/c.length:1)+.05-.05*!!b.some(a=>a.weak)))}},85441:(a,b,c)=>{c.d(b,{F:()=>u,P:()=>s});var d=c(76760),e=c(44533),f=c(92808);let g=["project_overview","requirement_document","structured_data","scope_description"],h=["project_overview","requirement_document","addendum","structured_data","budget_cost","design_specification","resource_recommendation","schedule_quality_safety","scope_description","technical_specification","risk_constraints"];function i(a){let b=[];for(let c of a)for(let a of c.relativePath.split(/[\\/]/gu))a&&b.push(a);return b}function j(a){return/--|延期到|资料|附件|扫描|目录|汇总|打包|备份|\d{1,2}\.\d{1,2}/u.test(a)}function k(a){return m(a).replace(/^\d+(?:\.\d+)?[-_\s]*/u,"").replace(/^(?:延期到\d+(?:\.\d+)?[-_—–\s]*)+/u,"").trim()}function l(a){let b=new Set,c=[];for(let d of a)!d||b.has(d)||(b.add(d),c.push(d));return c}function m(a){return a.replace(/\.(?:pdf|docx?|xlsx?|xls|dwg)$/iu,"").trim()}function n(a){let b=new Set,c=[];for(let d of i(a)){let a=k(d);!(!/项目|任务|文档|合同|计划|方案|工程/iu.test(a)||a.length<6||b.has(a))&&(!j(a)||/\.\w+$/u.test(d))&&(b.add(a),c.push(a))}return c}function o(a,b){return 0===a.length?b:a.map(a=>m(a.fileName)).join("、")}function p(a,b,c){b.lastIndex=0;let d=new Set,e=[];for(let f of a.matchAll(b)){let a=(f[c]||"").trim();!a||d.has(a)||(d.add(a),e.push(a))}return b.lastIndex=0,e}function q(a){return a.replace(/\\/gu,"/").replace(/^\/+|\/+$/gu,"")}function r(a){let b=q(a).split("/").filter(Boolean);return b.length>1?b[0]:void 0}function s(a,b){let c=(0,e.Yy)(a),m=function(a,b){let c=a.filter(a=>"error"!==a.status),d=new Set((b?.boundFilePaths||[]).map(q)),e=c.filter(a=>d.has(q(a.relativePath)));if(e.length>0){let a=[...new Set(e.map(a=>r(a.relativePath)).filter(Boolean))],b=1===a.length?a[0]:void 0;return{files:e,reason:b?`模板绑定文件定位到资料组:${b}`:"使用模板显式绑定文件作为资料范围",ambiguous:!1}}let f=(b?.requirement||"").trim();if(f){let a=new Map;for(let b of c){let c=r(b.relativePath);if(!c)continue;let d=function(a,b){let c=0;for(let d of a.split(/(?:\s|_|-|—|(|)|\(|\)|【|】|\[|\]|、|,|,)+/u)){let a=d.trim();a.length>=2&&b.includes(a)&&(c+=1)}return c}(c,f);d>0&&a.set(c,(a.get(c)||0)+d)}let b=[...a.entries()].sort((a,b)=>b[1]-a[1])[0];if(b)return{files:c.filter(a=>r(a.relativePath)===b[0]),reason:`需求描述定位到资料组:${b[0]}`,ambiguous:!1}}let g=[...new Set(c.map(a=>r(a.relativePath)).filter(Boolean))];return 1===g.length?{files:c.filter(a=>r(a.relativePath)===g[0]),reason:`知识库单一资料组:${g[0]}`,ambiguous:!1}:{files:c,reason:g.length>1?`未指定资料组,检测到 ${g.length} 个资料组,已阻断生成避免跨项目污染`:"未检测到资料组,使用全部资料",ambiguous:g.length>1}}(c,b),s=m.files,t=function(){let a={};for(let b of h)a[b]=[];return a}(),u=new Map((b?.boundFileRoles||[]).map(a=>[q(a.filePath),a.roles]));for(let a of s){let b=q(a.relativePath),c=[...u.entries()].filter(([a])=>b.endsWith(a)||a.endsWith(b)).flatMap(([,a])=>a);for(let b of[...new Set([...function(a){let b=new Set((0,f.t0)(a,f.hW));return b.add("project_overview"),[...b]}(a.relativePath),...c])])t[b].push({filePath:a.relativePath,fileName:d.basename(a.relativePath),role:b,chunkCount:a.chunkCount})}let v=function(a){let b,c;for(let d of i(a)){let a=k(d);if(/项目|工程/iu.test(a)&&!(a.length<6)){if(/\.\w+$/u.test(d)){b||=a;continue}if(j(a)){c||=a.split(/--/u).filter(a=>/项目|工程/u.test(a)).sort((a,b)=>a.length-b.length)[0]||a;continue}return a}}return b||c||"当前知识库项目"}(s),w=function(a){for(let b of a){let a=b.relativePath.match(/\b\d{4}[A-Z]{2,}\d{4,}\b/u)?.[0];if(a)return a}}(s),x=function(a,b){let c=n(a),d=n(b),e=l(a.map(a=>a.relativePath).join("\n").match(/\b\d{4}[A-Z]{2,}\d{4,}\b/gu)||[]),f=l(a.map(a=>r(a.relativePath)).filter(Boolean)),g=[c.length>0,e.length>0,1===f.length];return{fingerprint:{projectNames:c,documentNos:e,fileGroups:f,confidence:g.filter(Boolean).length/g.length},contaminationCandidates:d.filter(a=>!c.includes(a))}}(s,c),y=function(a){let b=function(a){let b="";for(let c of a)b+=`${c.relativePath}
56
56
  `;return b}(a);return{ownerNames:p(b,/(?:责任主体|委托人|客户|甲方|乙方|需求方|服务方|执行方|负责人)[::]?([^\\/\n,,。;;]{2,40})/gu,1),locationNames:p(b,/(?:项目地点|实施地点|服务地点|交付地点|项目地址|执行地点)[::]?([^\\/\n,,。;;]{2,50})/gu,1),scheduleValues:p(b,/(\d+\s*(?:天|周|个月|月|年|小时)|(?:周期|期限|交付|完成)[^\\/\n,,。;;]{0,30})/gu,1),qualityTargets:p(b,/(?:质量(?:标准|目标|要求)?[::]?[^\\/\n,,。;;]{2,40}|合格|优良)/gu,0)}}(s),z=function(a){let b=new Set(g);for(let c of["design_specification","schedule_quality_safety","risk_constraints","resource_recommendation","technical_specification","budget_cost","addendum"])a[c].length>0&&b.add(c);return[...b]}(t),A=z.filter(a=>t[a].length>0),B=z.filter(a=>0===t[a].length);return{projectId:v.replace(/[^a-zA-Z0-9\u4e00-\u9fa5_-]/gu,"-").slice(0,80)||"current-project",projectName:v,generatedAt:Date.now(),fingerprint:x.fingerprint,contaminationCandidates:x.contaminationCandidates,source:{totalFiles:c.length,selectedFiles:s.length,selectionReason:m.reason,ambiguous:m.ambiguous},facts:{projectName:v,documentNo:w,scopeDescriptions:t.scope_description.map(a=>a.fileName.replace(/\.(?:pdf|docx?|xlsx?|xls|dwg)$/iu,"")),professionalScopes:[...new Set(t.scope_description.concat(t.design_specification,t.structured_data).map(a=>a.fileName.replace(/\.(?:pdf|docx?|xlsx?|xls|dwg)$/iu,"")))],scheduleRequirement:t.schedule_quality_safety.length?"已识别周期、质量、安全或合规相关资料,生成时应以需求文件、变更说明和技术要求为准。":void 0,qualityRequirement:t.schedule_quality_safety.length?"已识别质量或评价相关资料。":void 0,safetyRequirement:t.schedule_quality_safety.length?"已识别安全或合规相关资料。":void 0,materialBrandRequirement:t.resource_recommendation.length?"已识别资源、材料、设备或品牌相关资料。":void 0,ownerNames:y.ownerNames,locationNames:y.locationNames,scheduleValues:y.scheduleValues,qualityTargets:y.qualityTargets},materialInventory:t,extractedSections:{projectOverview:`绑定材料组:${v}${w?`,文档/任务编号:${w}`:""}。`,scopeSummary:`范围资料:${o(t.scope_description,"未识别到明确范围资料")}。`,designSummary:`设计/方案/说明资料:${o(t.design_specification,"未识别到设计、方案或说明资料")}。`,structuredDataSummary:`结构化数据资料:${o(t.structured_data,"未识别到表格、列表或明细资料")}。`,scheduleQualitySafetySummary:`周期质量安全资料:${o(t.schedule_quality_safety,"未识别到周期、质量或安全专项资料")}。`,constraintsAndRisks:`约束和风险资料:${o(t.risk_constraints,"未识别到重点难点或约束资料")}。`},coverage:{requiredRoles:z,satisfiedRoles:A,missingRoles:B,materialCompletenessRate:z.length?A.length/z.length:1}}}function t(a){return a.replace(/OCR|识别错误|乱码/giu,"资料文字不清").replace(/知识库|提示词|后台|绑定片段|兜底/gu,"项目资料").replace(/PDF|DWG|Excel|XLSX?|DOCX?/giu,"资料文件")}function u(a,b={}){return b.publicSafe?["## 项目资料事实边界",t(a.extractedSections.projectOverview),`明确事实:责任主体 ${a.facts.ownerNames?.join("、")||"资料未明确"};地点 ${a.facts.locationNames?.join("、")||"资料未明确"};周期 ${a.facts.scheduleValues?.join("、")||"资料未明确"};质量 ${a.facts.qualityTargets?.join("、")||"资料未明确"}。`,t(a.extractedSections.scopeSummary),t(a.extractedSections.structuredDataSummary),t(a.extractedSections.designSummary),t(a.extractedSections.scheduleQualitySafetySummary),t(a.extractedSections.constraintsAndRisks),"仅使用资料中明确、可信的事实;资料未明确的工程实体事实不得推导,允许推导的计划配置类数据须明确标注为计划配置值。"].filter(Boolean).join("\n"):["## 后台绑定材料摘要",a.extractedSections.projectOverview,`材料指纹:对象名候选 ${a.fingerprint.projectNames.join("、")||"无"};编号 ${a.fingerprint.documentNos.join("、")||"无"};资料组 ${a.fingerprint.fileGroups.join("、")||"无"};置信度 ${Math.round(100*a.fingerprint.confidence)}%。`,`内容级事实候选:责任主体 ${a.facts.ownerNames?.join("、")||"无"};地点 ${a.facts.locationNames?.join("、")||"无"};周期 ${a.facts.scheduleValues?.join("、")||"无"};质量 ${a.facts.qualityTargets?.join("、")||"无"}。`,a.extractedSections.scopeSummary,a.extractedSections.structuredDataSummary,a.extractedSections.designSummary,a.extractedSections.scheduleQualitySafetySummary,a.extractedSections.constraintsAndRisks,`资料满足率:${Math.round(100*a.coverage.materialCompletenessRate)}%`].join("\n")}},87942:(a,b,c)=>{c.d(b,{x:()=>d});let d={version:"professional-document-workflow-v3",rules:["complete-local-knowledge-assumption","knowledge-coverage-recovery","fact-trace-placement","chapter-coverage-gate","structured-quality-report","post-repair-verification"]}},91977:(a,b,c)=>{c.d(b,{I2:()=>g,Lk:()=>e,Uy:()=>f});var d=c(70208);function e(a,b){let c=`${a.filePath}
57
57
  ${a.content}`;return(function(a){let b=a.replace(/要求|计划|目标|标准|内容|信息|事实|依据|参数|范围|要点/gu,"");return[a,b].filter(Boolean)})(b).some(a=>c.includes(a))}function f(a,b){let c=(0,d._9)(a,b).flatMap(a=>a.requiredFacts).map(a=>({id:a,name:a,required:!0,sourceRoleIds:[],extractionHint:""})),e=b?.factFields.map(a=>({id:a.id,name:a.name,required:a.required,sourceRoleIds:a.sourceRoleIds||[],extractionHint:a.extractionHint||""}))||[],f=new Map;for(let a of[...c,...e])f.set(a.id,{...f.get(a.id)||a,...a,required:a.required||f.get(a.id)?.required||!1});return[...f.values()]}function g(a,b){return(!b.sourceRoleIds?.length||!!(a.roleId&&b.sourceRoleIds.includes(a.roleId)))&&e(a,b.name)}},92808:(a,b,c)=>{c.d(b,{NT:()=>e,Ny:()=>f,hW:()=>g,nt:()=>d,rs:()=>i,t0:()=>h});let d=[{id:"report",label:"报告",patterns:[/报告|调研|分析|评估|研究|复盘|总结/iu],output:["报告"]},{id:"plan",label:"实施方案",patterns:[/方案|规划|计划|预案|路径|路线图/iu],output:["实施方案"]},{id:"standard",label:"规范说明",patterns:[/规范|标准|制度|规则|指南|手册/iu],output:["规范说明"]},{id:"proposal",label:"建议方案",patterns:[/建议|提案|需求|响应|说明书/iu],output:["建议方案"]}],e=[{id:"requirement",label:"需求规则资料",patterns:[/需求|要求|规则|条款|约束|响应|澄清|变更/iu],output:["需求约束","规则要求","变更说明"]},{id:"scope",label:"范围资料",patterns:[/范围|内容|任务|目标|边界|对象|工作内容/iu],output:["实施范围","对象范围"]},{id:"structured-data",label:"结构化数据资料",patterns:[/表格|列表|明细|数量|数据|字段|参数|规格|sheet|table|data/iu],output:["结构化数据范围","参数规格范围"]},{id:"quality",label:"质量评价资料",patterns:[/质量|验收|审核|评审|评价|标准|规范|指标/iu],output:["质量要求","评价标准"]},{id:"schedule",label:"时间进度资料",patterns:[/周期|期限|进度|计划|节点|里程碑|时间|日期/iu],output:["周期要求","进度节点要求"]},{id:"safety",label:"安全合规资料",patterns:[/安全|合规|风险|应急|环保|隐私|审计|控制/iu],output:["安全合规要求","风险控制要求"]},{id:"resource",label:"资源配置资料",patterns:[/资源|人员|设备|材料|品牌|采购|供应|配置/iu],output:["资源配置要求"]},{id:"analysis",label:"分析结论",patterns:[/报告|调研|分析|评估|研究|建议|结论/iu],output:["背景依据","分析结论","风险建议"]}],f=[{id:"overview",label:"概况章节",patterns:[/概况|背景|理解|说明|总则|摘要/iu],output:["对象名称","材料范围","实施范围"]},{id:"implementation",label:"实施章节",patterns:[/方法|部署|实施|范围|组织|流程|步骤/iu],output:["实施范围","对象范围","结构化数据范围"]},{id:"controls",label:"控制章节",patterns:[/质量|周期|进度|安全|合规|验收|审核|评价/iu],output:["质量要求","周期要求","安全合规要求"]},{id:"resources",label:"资源章节",patterns:[/资源|人员|设备|材料|品牌|采购|供应|配置/iu],output:["资源配置要求"]},{id:"risk",label:"风险章节",patterns:[/风险|重点|难点|约束|应急|合规/iu],output:["风险控制要求","风险建议"]}],g=[{id:"requirement",label:"需求规则资料",patterns:[/需求|要求|规则|条款|响应|requirement|rule/iu],output:["requirement_document"]},{id:"change",label:"变更澄清资料",patterns:[/补充|澄清|变更|修订|addendum|change/iu],output:["addendum"]},{id:"structured-data",label:"结构化数据资料",patterns:[/表格|列表|明细|数量|数据|字段|参数|规格|sheet|table|data/iu],output:["structured_data"]},{id:"budget",label:"预算费用资料",patterns:[/预算|费用|金额|报价|限价|成本|price|cost|budget/iu],output:["budget_cost"]},{id:"design",label:"设计方案资料",patterns:[/设计|方案|说明|图像|地图|附件|drawing|image|map|design/iu],output:["design_specification"]},{id:"resource",label:"资源配置资料",patterns:[/资源|人员|设备|材料|品牌|采购|供应|配置/iu],output:["resource_recommendation"]},{id:"schedule-quality-safety",label:"进度质量合规资料",patterns:[/质量|周期|进度|安全|合规|验收|审核|评价|环保|应急/iu],output:["schedule_quality_safety"]},{id:"scope",label:"范围任务资料",patterns:[/范围|内容|任务|目标|边界|对象|工作内容/iu],output:["scope_description"]},{id:"technical",label:"技术标准资料",patterns:[/技术|规范|标准|规程|指南|手册|参数|spec|standard/iu],output:["technical_specification"]},{id:"risk",label:"风险约束资料",patterns:[/风险|重点|难点|约束|限制|现场|条件|应急/iu],output:["risk_constraints"]}];function h(a,b){let c=new Set;for(let d of b)for(let b of d.patterns)if(b.lastIndex=0,b.test(a)){for(let a of d.output)c.add(a);break}return[...c]}function i(a,b){for(let c of b)for(let b of c.patterns)if(b.lastIndex=0,b.test(a))return c.output[0]}},95734:(a,b,c)=>{c.d(b,{$y:()=>j,bb:()=>m,od:()=>l,rI:()=>k});var d=c(95393),e=c(96770),f=c(29281),g=c(22157);let h=new Map,i=0;function j(){let a=(0,f.I)().load(),b=a.models.reasoning.active||a.models.action.active||a.models.reader.active,c=[...a.models.reasoning.list,...a.models.action.list,...a.models.reader.list].find(a=>a.name===b);if(!c)return;let d=a.providers[c.provider];if(d)return{model:c,provider:d}}async function k(a,b,c=!1,f={}){f.diagnostics&&(f.diagnostics.llm.calls+=1),i+=1,f.diagnostics&&(f.diagnostics.llm.maxActive=Math.max(f.diagnostics.llm.maxActive,i));try{let i,k=j();if(!k)return;let{model:l,provider:m}=k,n=(0,g.c6)({provider:l.provider,model:l.name,baseUrl:m.baseUrl,directEndpoint:m.directEndpoint,protocol:m.protocol,apiKeyHash:m.apiKey?(0,g.c6)(m.apiKey):""}),o=h.get(n);o||(o=(0,d.createProvider)(function(a,b){let c=(0,e.resolveProtocol)(a,b);return"anthropic"===c?"anthropic":"google"===c?"google":"ollama"===c?"ollama":"openrouter"===c?"openrouter":"openai"}(l.provider,m),{baseUrl:m.baseUrl,apiKey:m.apiKey,modelName:l.name,directEndpoint:m.directEndpoint}),h.set(n,o));let p=async()=>{let d,e,g=Math.max(3e4,Number(f.timeoutMs??process.env.DOCUMENT_LLM_CALL_TIMEOUT_MS??3e5)),h=new AbortController;if(f.signal?.aborted)throw Error("用户中止");let i=new Promise((a,b)=>{d=setTimeout(()=>{h.abort(),b(Error("LLM 调用超时"))},g)}),j=f.signal?new Promise((a,b)=>{e=()=>{h.abort(),b(Error("用户中止"))},f.signal?.addEventListener("abort",e,{once:!0})}):void 0,k=o.chat([{role:"system",content:c?`${a}
58
- 只返回 JSON,不要返回 markdown。`:a},{role:"user",content:b}],{temperature:f.temperature??.3*!c,maxTokens:f.maxTokens,signal:h.signal});return(await Promise.race(j?[k,i,j]:[k,i]).finally(()=>{d&&clearTimeout(d),e&&f.signal?.removeEventListener("abort",e)})).content.trim()};for(let a=0;a<=1;a+=1){if(f.signal?.aborted)throw Error("用户中止");try{return await p()}catch(b){if(i=b,f.signal?.aborted)throw Error("用户中止",{cause:b});if(!function(a){let b=a instanceof Error?`${a.name} ${a.message}`:String(a);return/connection error|econnrefused|econnreset|fetch failed|network|socket|eai_again|enotfound|etimedout|429|502|503|504|rate ?limit|too many requests|overloaded|服务繁忙|连接失败/iu.test(b)}(b)||a>=1)break;f.diagnostics&&(f.diagnostics.llm.retries+=1),await new Promise(a=>{setTimeout(a,1200)})}}f.diagnostics&&(f.diagnostics.llm.failures+=1,f.diagnostics.llm.lastError=i instanceof Error?i.message:String(i));return}finally{i=Math.max(0,i-1)}}async function l(a,b,c){let d,e=new AbortController;if(c?.aborted)throw Error("用户中止");let f=()=>e.abort();c?.addEventListener("abort",f,{once:!0});let g=new Promise(a=>{d=setTimeout(()=>{e.abort(),a(null)},b)}),h=[Promise.resolve().then(()=>a(e.signal)),g];c&&h.push(new Promise((a,b)=>{e.signal.addEventListener("abort",()=>{c.aborted&&b(Error("用户中止"))},{once:!0})}));try{let a=await Promise.race(h);if(c?.aborted)throw Error("用户中止");return a}finally{d&&clearTimeout(d),c?.removeEventListener("abort",f)}}async function m(a,b,c={}){let d=await k(a,b,!0,{maxTokens:c.maxTokens,temperature:c.temperature,signal:c.signal,diagnostics:c.diagnostics,timeoutMs:c.timeoutMs});if(d)try{return JSON.parse(function(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}(d))}catch{return}}},98210:(a,b,c)=>{c.d(b,{h0x:()=>d.h0,bVF:()=>d.bV,OXS:()=>dH,QJx:()=>d.QJ,jGg:()=>d.jG,R1O:()=>dI,Bhi:()=>d.Bh,xmB:()=>d.xm});var d=c(52511),e=c(76760),f=c(19898),g=c(44533),h=c(29281),i=c(25840),j=c(6444),k=c(85441);let l={id:"default_general_document",name:"通用文档",factFields:[{id:"document_identity",name:"对象名称",aliases:["项目名称","工程名称","文档名称","任务名称","招标项目名称","建设项目名称"],category:"identity",cardinality:"single",derivationPolicy:"source_only",usagePolicy:"must_use",confidencePolicy:{minForGeneration:.75,minForValidation:.85,allowPathOnly:!1},conflictPolicy:"strict"},{id:"schedule_requirement",name:"周期要求",aliases:["计划工期","工期","周期要求","进度节点要求","开工日期","竣工日期"],category:"schedule",cardinality:"single",derivationPolicy:"source_only",usagePolicy:"must_use",confidencePolicy:{minForGeneration:.7,minForValidation:.8,allowPathOnly:!1},conflictPolicy:"strict"},{id:"quality_requirement",name:"质量要求",aliases:["质量要求","质量标准","验收要求","评价标准"],category:"quality",cardinality:"multiple",derivationPolicy:"source_only",usagePolicy:"use_if_relevant",confidencePolicy:{minForGeneration:.65,minForValidation:.75,allowPathOnly:!1},conflictPolicy:"allow_multiple"},{id:"safety_requirement",name:"安全合规要求",aliases:["安全要求","安全合规要求","风险控制要求","合规要求"],category:"safety",cardinality:"multiple",derivationPolicy:"source_only",usagePolicy:"use_if_relevant",confidencePolicy:{minForGeneration:.65,minForValidation:.75,allowPathOnly:!1},conflictPolicy:"allow_multiple"},{id:"technical_parameter",name:"技术参数",aliases:["技术参数","参数规格范围","规格","型号","尺寸","标准编号","材料设备"],category:"technical",cardinality:"multiple",derivationPolicy:"source_only",usagePolicy:"must_use",confidencePolicy:{minForGeneration:.7,minForValidation:.8,allowPathOnly:!1},conflictPolicy:"allow_multiple"},{id:"resource_plan",name:"资源配置",aliases:["劳动力","机械","检测设备","应急物资","资源配置","人员配置"],category:"resource",cardinality:"multiple",derivationPolicy:"plan_inferable",usagePolicy:"use_if_relevant",confidencePolicy:{minForGeneration:.45,minForValidation:.55,allowPathOnly:!1},conflictPolicy:"allow_multiple"},{id:"commercial_data",name:"商务数据",aliases:["报价","单价","合价","综合单价","预留金","税率","金额","利润"],category:"commercial",cardinality:"multiple",derivationPolicy:"forbidden",usagePolicy:"do_not_use",confidencePolicy:{minForGeneration:1,minForValidation:1,allowPathOnly:!1},conflictPolicy:"ignore"},{id:"rule_requirement",name:"规则要求",aliases:["规则要求","变更说明","实施范围","对象范围","结构化数据范围"],category:"compliance",cardinality:"multiple",derivationPolicy:"source_only",usagePolicy:"use_if_relevant",confidencePolicy:{minForGeneration:.6,minForValidation:.7,allowPathOnly:!1},conflictPolicy:"allow_multiple"}],forbiddenValuePatterns:[/投标报价|报价明细|单价|合价|综合单价|预留金|暂列金额|税率|增值税|利润|结算/u],diagnosticValuePatterns:[/OCR|识别错误|乱码|无法确认|疑似|不确定|绑定片段|兜底|知识库|提示词|后台|文件路径|PDF|DWG|Excel/u],lowConfidenceValuePatterns:[/无法确认|疑似|不确定|需复核|文字模糊|语义断裂|识别错误|乱码/u]},m={...l,id:"construction_organization_design",name:"施工组织设计"};function n(a,b){return a.factFields.find(a=>a.name===b||a.aliases.some(a=>b.includes(a)||a.includes(b)))}function o(a,b){return a.forbiddenValuePatterns.some(a=>a.test(b))}function p(a,b){return a.diagnosticValuePatterns.some(a=>a.test(b))}function q(a,b){return a.lowConfidenceValuePatterns.some(a=>a.test(b))}var r=c(56942),s=c(70933),t=c(70208),u=c(91977),v=c(58965);function w(a,b){return b?a.replace(/^!\[[^\]]*(?:图纸|drawing|cad|地图|平面|剖面|立面)[^\]]*\]\([^)]*\)\s*$/gimu,"").replace(/\n{3,}/gu,"\n\n"):a}let x=/.*(?:知识库证据|知识库已确认事实|资料类型|提示词角色|后台自动规范|规范包|事实字段|资料未提供|未检索到|待确认事项|证据来源|来源清单|校验结果|修复任务包|修复类型|修复对象|输出要求).*(?:\n|$)/gu,y=/^\s*(?:#{1,6}\s*)?(?:PDF\s*第\s*\d+\s*页|rule\b|文件[::]|片段[::]|来源[::]).*$/gimu,z=/^\s*(?:[│┃┆┊┌┐└┘├┤┬┴┼─━╭╮╰╯]|[↓↑→←⇒⇨➡])+\s*$/gmu,A=/^#{2,6}\s+(?:\d+(?:\.\d+)*\s*)?(?:[-—–]\s*)?(?:判断|判定|识别|确认)?是否(?:涉及|涉|需要|适用)|^#{2,6}\s+(?:\d+(?:\.\d+)*\s*)?(?:[-—–]\s*)?(?:如|若|如果)(?:涉及|不涉及|适用|不适用)|^#{2,6}\s+.*(?:根据|结合).{0,12}(?:实际情况|项目情况|资料情况).{0,8}(?:判断|确定|编写|生成)|^#{2,6}\s+.*(?:按需(?:生成|编写)|视情况|判断后|生成要求|编写要求|说明要求|注意事项)\s*$/gmu,B=/^(?:\d+(?:\.\d+)*\s*)?(?:[-—–]\s*)?(?:(?:判断|判定|识别|确认)?是否(?:涉及|涉|需要|适用).*|(?:如|若|如果)(?:涉及|不涉及|适用|不适用).*|.*(?:根据|结合).{0,12}(?:实际情况|项目情况|资料情况).{0,8}(?:判断|确定|编写|生成).*|.*(?:按需(?:生成|编写)|视情况|判断后|生成要求|编写要求|说明要求|注意事项))\s*$/u;function C(a){let b=a.replace(/^#{1,6}\s+/u,"").replace(/^\s*\d+(?:\.\d+)*(?:[..、]|\s)+/u,"").replace(/^第[一二三四五六七八九十百千万\d]+[章节篇部分]\s*/u,"").trim(),c=(0,t.GQ)(b);return B.test(b)||B.test(c)}function D(a){return a.replace(/PDF\s*第\s*\d+\s*页/giu,"相关资料").replace(/第\s*\d+\s*页\s*(?:\/|共)\s*\d+\s*页/gu,"").replace(/第\s*\d+\s*(?:[-—至到~~]\s*\d+)?\s*页/gu,"相关资料").replace(/(装饰工程|土建工程|加固工程|给排水工程|电气工程|智能化工程|消防工程|弱电智能化工程|室外道排工程|建筑结构加固工程)\s*(?:(?:施工)?图纸|资料|文件)?\s*[((]?\s*(?:(?:共|多达|约|合计)\s*)?\d+\s*页\s*[))]?/gu,"$1施工图纸").replace(/\d+\s*页\s*(装饰|土建|加固|给排水|电气|智能化|消防|弱电智能化|室外道排|建筑结构加固)\s*(?:专业)?\s*(?:(?:施工)?图纸)?/gu,"$1专业图纸").replace(/(装饰|土建|加固|给排水|电气|智能化|消防|弱电智能化|室外道排|建筑结构加固)\s*(?:专业)?\s*(?:[((]\s*)?\d+\s*页\s*(?:(?:施工)?图纸)?\s*[))]?/gu,"$1专业图纸").replace(/([\u4e00-\u9fa5A-Za-z0-9、及与和]{2,24})\s*(?:共|多达|约|合计)\s*\d+\s*页/gu,"$1相关专业图纸").replace(/([\u4e00-\u9fa5A-Za-z0-9()()、·-]{2,24}工程)\s*(?:图纸|资料|文件)?\s*[((]?\s*(?:(?:共|多达|约|合计)\s*)?\d+\s*页\s*[))]?/gu,"$1施工图纸").replace(/([\u4e00-\u9fa5A-Za-z0-9()()、·-]{2,24})(?<!施工)\s*(?:施工)?图纸\s*[((]?\s*(?:(?:共|多达|约|合计)\s*)?\d+\s*页\s*[))]?/gu,"$1施工图纸").replace(/(给排水|电气|智能化|消防|暖通|人防)\s*[((]\s*\d+\s*页\s*[))]/gu,"$1专业图纸").replace(/(?:依据|按照|结合)?\s*图纸\s*[((]\s*\d+\s*页\s*[))]/gu,"依据相关专业图纸").replace(/(?:依据|按照|结合)?\s*清单\s*[((]?\s*\d+\s*页\s*[))]?/gu,"依据工程量清单").replace(/资料\s*[((]?\s*\d+\s*页\s*[))]?/gu,"项目资料").replace(/[((]?[\u4e00-\u9fa5A-Za-z0-9、及与和]*(?:图纸|清单|资料|文件|工程)?[\u4e00-\u9fa5A-Za-z0-9、及与和]*(?:(?:共|多达|约|合计)\s*)?\d+\s*页[\u4e00-\u9fa5A-Za-z0-9、及与和]*(?:图纸|清单|资料|文件)?[))]?/gu,a=>/图纸|工程|装饰|土建|加固|给排水|电气|智能化|消防/u.test(a)?"相关专业图纸":/清单/u.test(a)?"工程量清单":"相关资料").replace(/(?:位于|详见|见|参见|依据|按照|结合)?\s*相关资料(?:\s*相关资料)+/gu,"相关资料")}let E=String.raw`(?:\d+[.、](?=\s|\*\*)\s*|[((]\d+[))]\s*|[-*+]\s+)`;function F(a){return/^\s*\|/u.test(a)||/^\s*\|?\s*:?-{3,}:?/u.test(a)?a:a.replace(/([。;;])\s*(?=(?:\d+[.、](?=\s|\*\*)\s*|[((]\d+[))]\s*|[-*+]\s+)\S)/gu,"$1\n").replace(/([^\n])\s+(?=(?:\d+[.、](?=\s|\*\*)\s*|[((]\d+[))]\s*|[-*+]\s+)\*\*)/gu,"$1\n")}function G(a){return a.split(/\r?\n/u).map(F).join("\n").replace(/\n{3,}/gu,"\n\n")}function H(a){return/^\s*\|?\s*:?-{3,}:?\s*(\|\s*:?-{3,}:?\s*)+\|?\s*$/u.test(a)}function I(a){let b=a.trim();return/^\|.*\|$/u.test(b)&&b.split("|").length>=3}function J(a){return`| ${Array.from({length:Math.max(2,a)},()=>"---").join(" | ")} |`}function K(a){let b=a.split(/\r?\n/u),c=[],d=0;for(let a=0;a<b.length;a+=1){let e=b[a];if(!I(e)||H(e)){H(e)||(d=0),c.push(e);continue}let f=b[a+1]||"",g=d||e.trim().replace(/^\|/u,"").replace(/\|$/u,"").split(/(?<!\\)\|/u).length;if(c.push(function(a,b){let c=a.trim().replace(/^\|/u,"").replace(/\|$/u,"").split(/(?<!\\)\|/u).map(a=>a.trim());for(;c.length<b;)c.push("");return`| ${c.slice(0,b).join(" | ")} |`}(e,g)),H(f)){c.push(J(g)),d=g,a+=1;continue}!d&&I(f)&&function(a){let b=a.trim().replace(/^\|/u,"").replace(/\|$/u,"").split(/(?<!\\)\|/u).map(a=>a.replace(/\*\*/gu,"").trim());return!(b.length<2)&&b.filter(a=>/^(?:序号|信息项|内容|控制项目|控制内容|执行要求|责任主体|检查(?:与验收)?|验收标准|备注|名称|规格(?:型号)?|单位|数量|阶段|措施|风险|应急物资名称|资源类别|投入计划|管理要求)$/u.test(a)).length>=Math.min(2,b.length)}(e)&&(c.push(J(g)),d=g)}return c.join("\n").replace(/\n{3,}/gu,"\n\n")}RegExp(String.raw`\S.+(?:\s|[。;;])${E}\S.+(?:\s|[。;;])${E}\S`,"u");let L=/(?:项目部|本项目|本工程)?(?:根据|依据|结合|按照|以)?(?:本项目|项目|[^。;;\n]{0,30}?)?(?:招标文件|补疑澄清文件|补遗澄清文件|补疑补遗|答疑(?:回复)?文件|答疑修正口径|补充答疑修正口径|澄清文件|工程量清单|设计图纸|施工图纸|图纸资料|设计修改通知单)(?:[、,,及和与\s]*(?:招标文件|补疑澄清文件|补遗澄清文件|补疑补遗|答疑(?:回复)?文件|答疑修正口径|补充答疑修正口径|澄清文件|工程量清单|设计图纸|施工图纸|图纸资料|设计修改通知单|现行规范|规范)){1,}(?:[^。;;\n]{0,80})?[,,]/u;function M(a){return a.split(/\r?\n/u).map(a=>/^\s*\|/u.test(a.trim())?a:a.replace(L,"").replace(/(?:施工图设计说明|工程量清单项目特征|补充答疑修正口径|答疑修正口径)(?:[、,,及和与\s]*(?:施工图设计说明|工程量清单项目特征|补充答疑修正口径|答疑修正口径)){1,}/gu,"项目技术文件").replace(/(?:根据|依据|以)(?:[^。;;\n]{0,30})?(?:招标文件|补疑澄清文件|补遗澄清文件|补疑补遗|答疑(?:回复)?文件|答疑修正口径|补充答疑修正口径|澄清文件|工程量清单|设计图纸|施工图纸)(?:[^。;;\n]{0,40})(?:编制|确定|要求|为编制基础)[。;;]?/gu,"").replace(/\s{2,}/gu," ").trimEnd()).filter(a=>!/^(?:本节|本小节|本章)?(?:内容|措施)?(?:根据|依据)(?:招标文件|补疑澄清文件|补遗澄清文件|答疑(?:回复)?文件|澄清文件|工程量清单|设计图纸|施工图纸)[^。;;\n]*[。;;]?$/u.test(a.trim())).join("\n").replace(/\n{3,}/gu,"\n\n")}function N(a){return(function(a){let b=a.split(/\r?\n/u),c=[];for(let a=0;a<b.length;a+=1){if(!I(b[a])||!H(b[a+1]||"")){c.push(b[a]);continue}let d=[];for(;a<b.length&&I(b[a]);)d.push(b[a]),a+=1;a-=1;let e=d.map(a=>a.trim().replace(/^\|/u,"").replace(/\|$/u,"").split(/(?<!\\)\|/u).map(a=>a.trim())),f=Array.from({length:Math.max(...e.map(a=>a.length))},(a,b)=>e.some((a,c)=>1!==c&&!!a[b]?.trim())),g=e.map((a,b)=>{let c=f.map((b,c)=>b?a[c]||"":null).filter(a=>null!==a);return 1===b?J(c.length):`| ${c.join(" | ")} |`});c.push(...g)}return c.join("\n")})(K(G(D(M(function(a){let b=a.trim(),c=/^```(?:markdown|md)?\s*\n([\s\S]*?)\n```\s*$/iu.exec(b);return c?c[1].trim():a}(a)).replace(/\b(m|㎡)\s*2\b/giu,"平方米").replace(/\bm\s*[²2]\b/giu,"平方米").replace(/\b(m|㎥)\s*3\b/giu,"立方米").replace(/\bm\s*[³3]\b/giu,"立方米").replace(/\bmm2\b/giu,"平方毫米").replace(/\bcm2\b/giu,"平方厘米").replace(/\bkm2\b/giu,"平方千米").replace(/\s*×\s*/gu,"\xd7").replace(/\s*≤\s*/gu,"≤").replace(/\s*≥\s*/gu,"≥").replace(/\s*±\s*/gu,"\xb1"))))).split(/\r?\n/u).map(a=>/^\s*\|/u.test(a)?a.replace(/\s*不适用\s*(?=\|)/gu," "):a).join("\n").replace(/承包人案/gu,"方案").replace(/承包人法/gu,"方法").replace(x,"").replace(y,"").replace(z,"").replace(A,"").replace(v.tK,"").replace(/^#\s+/gmu,"").replace(v.VX,"").split(/\r?\n/u).filter((a,b,c)=>{let d=b>0?(0,t.GQ)((c[b-1]||"").trim().replace(/^#{1,6}\s+/u,"")):"",e=(0,t.GQ)(a.trim().replace(/^#{1,6}\s+/u,""));if(d&&C(d)&&e.length>0&&e.length<=12&&!/^#{1,6}\s/u.test(a.trim()))return!1;let f=a.trim();if(!f)return!0;if(/该小节围绕.+进行补充说明/u.test(f)||/仅作为内部事实提取依据|正式正文不得引用文件名|后台事实|内部事实/u.test(f))return!1;if(/^\s*\|/u.test(f)||/^\s*\|?\s*:?-{3,}:?/u.test(f))return!0;let g=(0,t.GQ)(f.replace(/^#{1,6}\s+/u,""));return!(/^(?:雨季|冬季|高温|台风|大风等特殊气候|雨季、冬季、高温、台风、大风等特殊气候)$/u.test(g)||g.length<=1||C(g))&&!(/[,、;:和与在为对将]$/u.test(g)||/(通过|包括|如下|主要包括)$/u.test(g))}).join("\n").replace(/\n{3,}/gu,"\n\n").trim()}let O="以下规则仅用于保障导出格式正确和事实安全,不得覆盖用户在提示词中已明确的要求。\n不得把”知识库、检索、资料类型、提示词角色、规范包、事实字段、缺失项、校验结果、资料未提供、未检索到”等后台流程话术写入正文。\n严禁使用“根据/依据招标文件、补疑澄清文件、工程量清单及设计图纸”等资料来源罗列开头;正文必须直接写项目事实、施工内容、控制措施、验收节点。\n【导出格式】章标题用 ## ,节标题用 ### 加数字编号(如 1.1),小节标题用 #### 加数字编号(如 1.1.1)。禁止用数字编号或粗体代替 ###/#### 标题。\nMarkdown 表格格式硬约束:凡是输出 Markdown 表格,必须使用标准 GFM 表格格式。\n表格必须包含表头行、分隔线和数据行;表头下一行必须是分隔线,例如 |---|---|。\n禁止只输出连续的“| 字段 | 值 |”裸表格行;两列键值信息表默认使用表头 | 信息项 | 内容 |。\n表头、分隔线和数据行必须连续,中间不得插入正文、说明、空行或补充段落。\n正文表格不得展示后台溯源列或系统过程列,如“资料来源/说明”“资料来源/证明”“知识库来源”等。\n项目名称、项目编号、招标人/业主/建设单位、建设地点、建设规模、计划工期、质量标准、合同估算价等项目基础信息,只能在项目基本信息表中集中输出一次;后续章节如需引用,应写入正文或专业表格的业务字段,不得重复生成项目基础信息键值表。\n【段落格式】段落之间必须空行(双换行)分隔,不得用单换行连续写大段文字。列表项逐行独占。步骤描述之间加空行。\n正文事实必须来自绑定材料;信息不足时保持审慎,不得编造精确数量。",P="只生成当前小节正文,不生成其他二级小节,不重复章节一级标题。\n优先使用当前模板、用户要求、绑定提示词和绑定材料中的事实;缺少依据时不得编造具体数值、名称、时间、规格或责任。\n小节应有实质正文;除非用户或模板明确要求纯表格,否则表格只能作为辅助表达,不能整节只有表格。\n不得用通用兜底段落、空泛管理话术或后台缺料说明冒充正文;信息不足时只写已有事实、适用边界和待复核口径。";function Q(a){return(0,t.GQ)(a.replace(/^#+\s*/u,"")).replace(/^(?:第)?[一二三四五六七八九十百千万\d]+章\s*/u,"").trim().replace(/\s+/gu,"")}function R(a,b){let c=Q(a),d=Q(b);return!!(c&&d&&c===d)}function S(a){return[...new Set([...a.matchAll(/^###\s+(.+)$/gmu)].map(a=>(0,t.GQ)(a[1]||"")).filter(a=>a.length>=2&&a.length<=80).filter(a=>!C(a)).filter(a=>!/^\d+(?:\.\d+){2,}\s+/u.test(a)))]}function T(a){let b=a.split(/\r?\n/u),c="",d=0;return b.map(a=>{let b=/^\*\*([^*]{2,40}表)\*\*\s*$/u.exec(a.trim());if(b&&c)return d+=1,`#### ${c}.${d} ${(0,t.GQ)(b[1]||"")}`;let e=/^###\s+(\d+\.\d+)\s+.+$/u.exec(a.trim());if(e)return c=e[1],d=0,a;if(/^##\s+/u.test(a.trim()))return c="",d=0,a;let f=/^(#{4,5})\s+(.+)$/u.exec(a.trim());if(f){if(!c)return"#####"===f[1]?a.replace(/^\s*#####/u,"####"):a;let b=(f[2]||"").trim(),e=(0,t.GQ)(b.replace(/^\d+\.\d+\.\d+\s+/u,""));return e?(d+=1,`#### ${c}.${d} ${e}`):a}return a}).join("\n").replace(/\n{3,}/gu,"\n\n").trim()}function U(a){let b=a.replace(/\*+/gu,"").trim();if(C(b))return"";let c=(0,t.GQ)(b).replace(/^[-—–]\s*/u,"").trim();return C(c)||/^(?:雨季|冬季|高温|台风|大风等特殊气候)$/u.test(c)?"":c}function V(a=[]){return[...new Set(a.map(U).filter(a=>a.length>=2))]}function W(a){return["## 目录","",...a.flatMap((a,b)=>{let c=V(a.sections||[]);return[`- ${(0,t.tb)(b,a.title)}`,...c.map((a,c)=>` - ${function(a,b,c){let d=(0,t.GQ)(c);return!function(a){let b=/^\s*(\d+)\.(\d+)[..、]?\s+(.+)$/u.exec(a);return!!b&&(0,t.GQ)(b[3]||"").trim()===(0,t.GQ)(a).trim()}(c)?`${a+1}.${b+1} ${d}`:d}(b,c,a)}`)]})].join("\n")}function X(a){return a.replace(/<div class="document-cover">[\s\S]*?<\/div>\s*(?:<div class="page-break"><\/div>\s*)?/giu,"").replace(/^#\s+.+\n{1,2}/u,"")}function Y(a){return a.replace(/^##\s+目录\s*$[\s\S]*?(?=\n<div class="page-break"><\/div>|\n##\s+第[一二三四五六七八九十百千万\d]+章|\n##\s+)/gmu,"").replace(/^<div class="page-break"><\/div>\s*(?=##\s+第[一二三四五六七八九十百千万\d]+章)/gmu,"")}function Z(a){let b=!1;return a.replace(/^##\s+目录\s*$[\s\S]*?(?=\n<div class="page-break"><\/div>|\n##\s+)/gmu,a=>b?"":(b=!0,a)).replace(/\n{3,}/gu,"\n\n").trim()}function $(a,b){let c=Z(a);b.forEach((a,b)=>{let d=(0,t.GQ)(a.title),e=RegExp(`^##\\s+(?:第[一二三四五六七八九十百千万\\d]+章\\s*)?${ab(d)}\\s*$`,"mu");c=e.test(c)?c.replace(e,`## ${(0,t.tb)(b,a.title)}`):c});let d=c.split(/\r?\n/u),e=-1,f=0,g=0,h="",i=new Set,j=a=>{let c=b[e]?.sections||[],d=ad(a);return c.findIndex(a=>ad(a)===d)},k=(a,c)=>{let d=U(a);if(!d||C(a)||C(d))return"";let k=j(d),l=b[e]?.sections||[],m=k>=0?k+1:f+1,n=k>=0?ad(l[k]):ad(d);return i.has(n)?(f=m,h=c||`${e+1}.${f}`,g+=1,`#### ${e+1}.${f}.${g} ${d}`):(f=m,g=0,h=c||`${e+1}.${f}`,i.add(n),`### ${e+1}.${f} ${k>=0?(0,t.GQ)(l[k]):d}`)},l=!1;return d.map(a=>{let c=a.trim();if(/^##\s+目录\s*$/u.test(c))return l=!0,a;if(l&&/^<div class="page-break"><\/div>$/u.test(c))return l=!1,a;if(l)return a;if(/^##\s+第[一二三四五六七八九十百千万\d]+章\s+/u.test(c))return e+=1,f=0,g=0,h="",i=new Set,a;let d=/^##\s+第[一二三四五六七八九十百千万\d]+节\s+(.+)$/u.exec(c);if(e>=0&&d)return k(d[1]||"");let m=/^##\s+\d+[..、]\s+(.+)$/u.exec(c);if(e>=0&&m)return k(m[1]||"");let n=/^##\s+(\d+)\.(\d+)\s+(.+)$/u.exec(c);if(e>=0&&n)return k(n[3]||"",`${n[1]}.${n[2]}`);let o=/^##\s+(.+)$/u.exec(c);if(e>=0&&o){let a=(0,t.GQ)(o[1]||"");return/^本章目录$/u.test(a)?"":k(a)}let p=/^###\s+(?:(\d+)\.(\d+)\s+)?(.+)$/u.exec(c);if(e>=0&&p)return k(p[3]||"",p[1]&&p[2]?`${p[1]}.${p[2]}`:void 0);let q=/^####\s+(\d+)\.(\d+)(?!\.)\s+(.+)$/u.exec(c);if(e>=0&&q)return k(q[3]||"",`${q[1]}.${q[2]}`);let r=/^####\s+(?:(\d+)\.(\d+)\.(\d+)\s+)?(.+)$/u.exec(c);if(e>=0&&r){let a=r[1]&&r[2]?`${r[1]}.${r[2]}`:h,c=(0,t.GQ)(r[4]||""),d=ad(c),l=j(c)>=0&&!i.has(d);return!f||a&&a!==h&&(0===(b[e]?.sections||[]).length||l)?k(c,a):(g+=1)<=4?`#### ${e+1}.${f}.${g} ${c}`:`**${c}**`}return a}).filter(a=>""!==a).join("\n")}function _(a,b){let c=a.replace(/承包人案/gu,"方案").replace(/承包人法/gu,"方法").replace(/(?:本|我)施工方/gu,"我公司").replace(/(?:本|我)投标人/gu,"我公司").replace(/高度重视/gu,"严格落实").replace(/重中之重/gu,"关键控制事项");for(let a of b?.forbiddenTerms||[])a&&/^(?:报价明细表|最高投标限价|招标控制价)$/u.test(a)&&(c=c.split(/\r?\n/u).filter(b=>!RegExp(ab(a),"u").test(b)).join("\n"));return c}function aa(a,b){if(!b)return _(a);let c=function(a,b){let c=a;for(let a of b?.requiredTables||[])c=function(a,b){if(/项目基本信息/u.test(b)&&(/项目基本信息/u.test(a)||/\|\s*信息项\s*\|\s*内容\s*\|/u.test(a)||/\|\s*项目名称\s*\|[^\n]*(?:徽光阁|项目施工|工程)/u.test(a))||RegExp(ab(b),"u").test(a))return a;let c=/项目基本信息/u.test(b)?"":`**${b}**
58
+ 只返回 JSON,不要返回 markdown。`:a},{role:"user",content:b}],{temperature:f.temperature??.3*!c,maxTokens:f.maxTokens,signal:h.signal});return(await Promise.race(j?[k,i,j]:[k,i]).finally(()=>{d&&clearTimeout(d),e&&f.signal?.removeEventListener("abort",e)})).content.trim()};for(let a=0;a<=1;a+=1){if(f.signal?.aborted)throw Error("用户中止");try{return await p()}catch(b){if(i=b,f.signal?.aborted)throw Error("用户中止",{cause:b});if(!function(a){let b=a instanceof Error?`${a.name} ${a.message}`:String(a);return/connection error|econnrefused|econnreset|fetch failed|network|socket|eai_again|enotfound|etimedout|429|502|503|504|rate ?limit|too many requests|overloaded|服务繁忙|连接失败/iu.test(b)}(b)||a>=1)break;f.diagnostics&&(f.diagnostics.llm.retries+=1),await new Promise(a=>{setTimeout(a,1200)})}}f.diagnostics&&(f.diagnostics.llm.failures+=1,f.diagnostics.llm.lastError=i instanceof Error?i.message:String(i));return}finally{i=Math.max(0,i-1)}}async function l(a,b,c){let d,e=new AbortController;if(c?.aborted)throw Error("用户中止");let f=()=>e.abort();c?.addEventListener("abort",f,{once:!0});let g=new Promise(a=>{d=setTimeout(()=>{e.abort(),a(null)},b)}),h=[Promise.resolve().then(()=>a(e.signal)),g];c&&h.push(new Promise((a,b)=>{e.signal.addEventListener("abort",()=>{c.aborted&&b(Error("用户中止"))},{once:!0})}));try{let a=await Promise.race(h);if(c?.aborted)throw Error("用户中止");return a}finally{d&&clearTimeout(d),c?.removeEventListener("abort",f)}}async function m(a,b,c={}){let d=await k(a,b,!0,{maxTokens:c.maxTokens,temperature:c.temperature,signal:c.signal,diagnostics:c.diagnostics,timeoutMs:c.timeoutMs});if(d)try{return JSON.parse(function(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}(d))}catch{return}}},98210:(a,b,c)=>{c.d(b,{h0x:()=>d.h0,bVF:()=>d.bV,OXS:()=>dH,QJx:()=>d.QJ,jGg:()=>d.jG,R1O:()=>dI,Bhi:()=>d.Bh,xmB:()=>d.xm});var d=c(52511),e=c(76760),f=c(19898),g=c(44533),h=c(29281),i=c(25840),j=c(6444),k=c(85441);let l={id:"default_general_document",name:"通用文档",factFields:[{id:"document_identity",name:"对象名称",aliases:["项目名称","工程名称","文档名称","任务名称","招标项目名称","建设项目名称"],category:"identity",cardinality:"single",derivationPolicy:"source_only",usagePolicy:"must_use",confidencePolicy:{minForGeneration:.75,minForValidation:.85,allowPathOnly:!1},conflictPolicy:"strict"},{id:"schedule_requirement",name:"周期要求",aliases:["计划工期","工期","周期要求","进度节点要求","开工日期","竣工日期"],category:"schedule",cardinality:"single",derivationPolicy:"source_only",usagePolicy:"must_use",confidencePolicy:{minForGeneration:.7,minForValidation:.8,allowPathOnly:!1},conflictPolicy:"strict"},{id:"quality_requirement",name:"质量要求",aliases:["质量要求","质量标准","验收要求","评价标准"],category:"quality",cardinality:"multiple",derivationPolicy:"source_only",usagePolicy:"use_if_relevant",confidencePolicy:{minForGeneration:.65,minForValidation:.75,allowPathOnly:!1},conflictPolicy:"allow_multiple"},{id:"safety_requirement",name:"安全合规要求",aliases:["安全要求","安全合规要求","风险控制要求","合规要求"],category:"safety",cardinality:"multiple",derivationPolicy:"source_only",usagePolicy:"use_if_relevant",confidencePolicy:{minForGeneration:.65,minForValidation:.75,allowPathOnly:!1},conflictPolicy:"allow_multiple"},{id:"technical_parameter",name:"技术参数",aliases:["技术参数","参数规格范围","规格","型号","尺寸","标准编号","材料设备"],category:"technical",cardinality:"multiple",derivationPolicy:"source_only",usagePolicy:"must_use",confidencePolicy:{minForGeneration:.7,minForValidation:.8,allowPathOnly:!1},conflictPolicy:"allow_multiple"},{id:"resource_plan",name:"资源配置",aliases:["劳动力","机械","检测设备","应急物资","资源配置","人员配置"],category:"resource",cardinality:"multiple",derivationPolicy:"plan_inferable",usagePolicy:"use_if_relevant",confidencePolicy:{minForGeneration:.45,minForValidation:.55,allowPathOnly:!1},conflictPolicy:"allow_multiple"},{id:"commercial_data",name:"商务数据",aliases:["报价","单价","合价","综合单价","预留金","税率","金额","利润"],category:"commercial",cardinality:"multiple",derivationPolicy:"forbidden",usagePolicy:"do_not_use",confidencePolicy:{minForGeneration:1,minForValidation:1,allowPathOnly:!1},conflictPolicy:"ignore"},{id:"rule_requirement",name:"规则要求",aliases:["规则要求","变更说明","实施范围","对象范围","结构化数据范围"],category:"compliance",cardinality:"multiple",derivationPolicy:"source_only",usagePolicy:"use_if_relevant",confidencePolicy:{minForGeneration:.6,minForValidation:.7,allowPathOnly:!1},conflictPolicy:"allow_multiple"}],forbiddenValuePatterns:[/投标报价|报价明细|单价|合价|综合单价|预留金|暂列金额|税率|增值税|利润|结算/u],diagnosticValuePatterns:[/OCR|识别错误|乱码|无法确认|疑似|不确定|绑定片段|兜底|知识库|提示词|后台|文件路径|PDF|DWG|Excel/u],lowConfidenceValuePatterns:[/无法确认|疑似|不确定|需复核|文字模糊|语义断裂|识别错误|乱码/u]},m={...l,id:"construction_organization_design",name:"施工组织设计"};function n(a,b){return a.factFields.find(a=>a.name===b||a.aliases.some(a=>b.includes(a)||a.includes(b)))}function o(a,b){return a.forbiddenValuePatterns.some(a=>a.test(b))}function p(a,b){return a.diagnosticValuePatterns.some(a=>a.test(b))}function q(a,b){return a.lowConfidenceValuePatterns.some(a=>a.test(b))}var r=c(56942),s=c(70933),t=c(70208),u=c(91977),v=c(58965);function w(a,b){return b?a.replace(/^!\[[^\]]*(?:图纸|drawing|cad|地图|平面|剖面|立面)[^\]]*\]\([^)]*\)\s*$/gimu,"").replace(/\n{3,}/gu,"\n\n"):a}let x=/.*(?:知识库证据|知识库已确认事实|资料类型|提示词角色|后台自动规范|规范包|事实字段|资料未提供|未检索到|待确认事项|证据来源|来源清单|校验结果|修复任务包|修复类型|修复对象|输出要求|当前项目绑定资料|已召回证据|证据边界|可审查草稿|Reviewer|Repairer).*(?:\n|$)/gu,y=/^\s*(?:#{1,6}\s*)?(?:PDF\s*第\s*\d+\s*页|rule\b|文件[::]|片段[::]|来源[::]).*$/gimu,z=/^\s*(?:[│┃┆┊┌┐└┘├┤┬┴┼─━╭╮╰╯]|[↓↑→←⇒⇨➡])+\s*$/gmu,A=/^#{2,6}\s+(?:\d+(?:\.\d+)*\s*)?(?:[-—–]\s*)?(?:判断|判定|识别|确认)?是否(?:涉及|涉|需要|适用)|^#{2,6}\s+(?:\d+(?:\.\d+)*\s*)?(?:[-—–]\s*)?(?:如|若|如果)(?:涉及|不涉及|适用|不适用)|^#{2,6}\s+.*(?:根据|结合).{0,12}(?:实际情况|项目情况|资料情况).{0,8}(?:判断|确定|编写|生成)|^#{2,6}\s+.*(?:按需(?:生成|编写)|视情况|判断后|生成要求|编写要求|说明要求|注意事项)\s*$/gmu,B=/^(?:\d+(?:\.\d+)*\s*)?(?:[-—–]\s*)?(?:(?:判断|判定|识别|确认)?是否(?:涉及|涉|需要|适用).*|(?:如|若|如果)(?:涉及|不涉及|适用|不适用).*|.*(?:根据|结合).{0,12}(?:实际情况|项目情况|资料情况).{0,8}(?:判断|确定|编写|生成).*|.*(?:按需(?:生成|编写)|视情况|判断后|生成要求|编写要求|说明要求|注意事项))\s*$/u;function C(a){let b=a.replace(/^#{1,6}\s+/u,"").replace(/^\s*\d+(?:\.\d+)*(?:[..、]|\s)+/u,"").replace(/^第[一二三四五六七八九十百千万\d]+[章节篇部分]\s*/u,"").trim(),c=(0,t.GQ)(b);return B.test(b)||B.test(c)}function D(a){return a.replace(/PDF\s*第\s*\d+\s*页/giu,"相关资料").replace(/第\s*\d+\s*页\s*(?:\/|共)\s*\d+\s*页/gu,"").replace(/第\s*\d+\s*(?:[-—至到~~]\s*\d+)?\s*页/gu,"相关资料").replace(/(装饰工程|土建工程|加固工程|给排水工程|电气工程|智能化工程|消防工程|弱电智能化工程|室外道排工程|建筑结构加固工程)\s*(?:(?:施工)?图纸|资料|文件)?\s*[((]?\s*(?:(?:共|多达|约|合计)\s*)?\d+\s*页\s*[))]?/gu,"$1施工图纸").replace(/\d+\s*页\s*(装饰|土建|加固|给排水|电气|智能化|消防|弱电智能化|室外道排|建筑结构加固)\s*(?:专业)?\s*(?:(?:施工)?图纸)?/gu,"$1专业图纸").replace(/(装饰|土建|加固|给排水|电气|智能化|消防|弱电智能化|室外道排|建筑结构加固)\s*(?:专业)?\s*(?:[((]\s*)?\d+\s*页\s*(?:(?:施工)?图纸)?\s*[))]?/gu,"$1专业图纸").replace(/([\u4e00-\u9fa5A-Za-z0-9、及与和]{2,24})\s*(?:共|多达|约|合计)\s*\d+\s*页/gu,"$1相关专业图纸").replace(/([\u4e00-\u9fa5A-Za-z0-9()()、·-]{2,24}工程)\s*(?:图纸|资料|文件)?\s*[((]?\s*(?:(?:共|多达|约|合计)\s*)?\d+\s*页\s*[))]?/gu,"$1施工图纸").replace(/([\u4e00-\u9fa5A-Za-z0-9()()、·-]{2,24})(?<!施工)\s*(?:施工)?图纸\s*[((]?\s*(?:(?:共|多达|约|合计)\s*)?\d+\s*页\s*[))]?/gu,"$1施工图纸").replace(/(给排水|电气|智能化|消防|暖通|人防)\s*[((]\s*\d+\s*页\s*[))]/gu,"$1专业图纸").replace(/(?:依据|按照|结合)?\s*图纸\s*[((]\s*\d+\s*页\s*[))]/gu,"依据相关专业图纸").replace(/(?:依据|按照|结合)?\s*清单\s*[((]?\s*\d+\s*页\s*[))]?/gu,"依据工程量清单").replace(/资料\s*[((]?\s*\d+\s*页\s*[))]?/gu,"项目资料").replace(/[((]?[\u4e00-\u9fa5A-Za-z0-9、及与和]*(?:图纸|清单|资料|文件|工程)?[\u4e00-\u9fa5A-Za-z0-9、及与和]*(?:(?:共|多达|约|合计)\s*)?\d+\s*页[\u4e00-\u9fa5A-Za-z0-9、及与和]*(?:图纸|清单|资料|文件)?[))]?/gu,a=>/图纸|工程|装饰|土建|加固|给排水|电气|智能化|消防/u.test(a)?"相关专业图纸":/清单/u.test(a)?"工程量清单":"相关资料").replace(/(?:位于|详见|见|参见|依据|按照|结合)?\s*相关资料(?:\s*相关资料)+/gu,"相关资料")}let E=String.raw`(?:\d+[.、](?=\s|\*\*)\s*|[((]\d+[))]\s*|[-*+]\s+)`;function F(a){return/^\s*\|/u.test(a)||/^\s*\|?\s*:?-{3,}:?/u.test(a)?a:a.replace(/([。;;])\s*(?=(?:\d+[.、](?=\s|\*\*)\s*|[((]\d+[))]\s*|[-*+]\s+)\S)/gu,"$1\n").replace(/([^\n])\s+(?=(?:\d+[.、](?=\s|\*\*)\s*|[((]\d+[))]\s*|[-*+]\s+)\*\*)/gu,"$1\n")}function G(a){return a.split(/\r?\n/u).map(F).join("\n").replace(/\n{3,}/gu,"\n\n")}function H(a){return/^\s*\|?\s*:?-{3,}:?\s*(\|\s*:?-{3,}:?\s*)+\|?\s*$/u.test(a)}function I(a){let b=a.trim();return/^\|.*\|$/u.test(b)&&b.split("|").length>=3}function J(a){return`| ${Array.from({length:Math.max(2,a)},()=>"---").join(" | ")} |`}function K(a){let b=a.split(/\r?\n/u),c=[],d=0;for(let a=0;a<b.length;a+=1){let e=b[a];if(!I(e)||H(e)){H(e)||(d=0),c.push(e);continue}let f=b[a+1]||"",g=d||e.trim().replace(/^\|/u,"").replace(/\|$/u,"").split(/(?<!\\)\|/u).length;if(c.push(function(a,b){let c=a.trim().replace(/^\|/u,"").replace(/\|$/u,"").split(/(?<!\\)\|/u).map(a=>a.trim());for(;c.length<b;)c.push("");return`| ${c.slice(0,b).join(" | ")} |`}(e,g)),H(f)){c.push(J(g)),d=g,a+=1;continue}!d&&I(f)&&function(a){let b=a.trim().replace(/^\|/u,"").replace(/\|$/u,"").split(/(?<!\\)\|/u).map(a=>a.replace(/\*\*/gu,"").trim());return!(b.length<2)&&b.filter(a=>/^(?:序号|信息项|内容|控制项目|控制内容|执行要求|责任主体|检查(?:与验收)?|验收标准|备注|名称|规格(?:型号)?|单位|数量|阶段|措施|风险|应急物资名称|资源类别|投入计划|管理要求)$/u.test(a)).length>=Math.min(2,b.length)}(e)&&(c.push(J(g)),d=g)}return c.join("\n").replace(/\n{3,}/gu,"\n\n")}RegExp(String.raw`\S.+(?:\s|[。;;])${E}\S.+(?:\s|[。;;])${E}\S`,"u");let L=/(?:项目部|本项目|本工程)?(?:根据|依据|结合|按照|以)?(?:本项目|项目|[^。;;\n]{0,30}?)?(?:招标文件|补疑澄清文件|补遗澄清文件|补疑补遗|答疑(?:回复)?文件|答疑修正口径|补充答疑修正口径|澄清文件|工程量清单|设计图纸|施工图纸|图纸资料|设计修改通知单)(?:[、,,及和与\s]*(?:招标文件|补疑澄清文件|补遗澄清文件|补疑补遗|答疑(?:回复)?文件|答疑修正口径|补充答疑修正口径|澄清文件|工程量清单|设计图纸|施工图纸|图纸资料|设计修改通知单|现行规范|规范)){1,}(?:[^。;;\n]{0,80})?[,,]/u;function M(a){return a.split(/\r?\n/u).map(a=>/^\s*\|/u.test(a.trim())?a:a.replace(L,"").replace(/(?:施工图设计说明|工程量清单项目特征|补充答疑修正口径|答疑修正口径)(?:[、,,及和与\s]*(?:施工图设计说明|工程量清单项目特征|补充答疑修正口径|答疑修正口径)){1,}/gu,"项目技术文件").replace(/(?:根据|依据|以)(?:[^。;;\n]{0,30})?(?:招标文件|补疑澄清文件|补遗澄清文件|补疑补遗|答疑(?:回复)?文件|答疑修正口径|补充答疑修正口径|澄清文件|工程量清单|设计图纸|施工图纸)(?:[^。;;\n]{0,40})(?:编制|确定|要求|为编制基础)[。;;]?/gu,"").replace(/\s{2,}/gu," ").trimEnd()).filter(a=>!/^(?:本节|本小节|本章)?(?:内容|措施)?(?:根据|依据)(?:招标文件|补疑澄清文件|补遗澄清文件|答疑(?:回复)?文件|澄清文件|工程量清单|设计图纸|施工图纸)[^。;;\n]*[。;;]?$/u.test(a.trim())).join("\n").replace(/\n{3,}/gu,"\n\n")}function N(a){return(function(a){let b=a.split(/\r?\n/u),c=[];for(let a=0;a<b.length;a+=1){if(!I(b[a])||!H(b[a+1]||"")){c.push(b[a]);continue}let d=[];for(;a<b.length&&I(b[a]);)d.push(b[a]),a+=1;a-=1;let e=d.map(a=>a.trim().replace(/^\|/u,"").replace(/\|$/u,"").split(/(?<!\\)\|/u).map(a=>a.trim())),f=Array.from({length:Math.max(...e.map(a=>a.length))},(a,b)=>e.some((a,c)=>1!==c&&!!a[b]?.trim())),g=e.map((a,b)=>{let c=f.map((b,c)=>b?a[c]||"":null).filter(a=>null!==a);return 1===b?J(c.length):`| ${c.join(" | ")} |`});c.push(...g)}return c.join("\n")})(K(G(D(M(function(a){let b=a.trim(),c=/^```(?:markdown|md)?\s*\n([\s\S]*?)\n```\s*$/iu.exec(b);return c?c[1].trim():a}(a)).replace(/\b(m|㎡)\s*2\b/giu,"平方米").replace(/\bm\s*[²2]\b/giu,"平方米").replace(/\b(m|㎥)\s*3\b/giu,"立方米").replace(/\bm\s*[³3]\b/giu,"立方米").replace(/\bmm2\b/giu,"平方毫米").replace(/\bcm2\b/giu,"平方厘米").replace(/\bkm2\b/giu,"平方千米").replace(/\s*×\s*/gu,"\xd7").replace(/\s*≤\s*/gu,"≤").replace(/\s*≥\s*/gu,"≥").replace(/\s*±\s*/gu,"\xb1"))))).split(/\r?\n/u).map(a=>/^\s*\|/u.test(a)?a.replace(/\s*不适用\s*(?=\|)/gu," "):a).join("\n").replace(/承包人案/gu,"方案").replace(/承包人法/gu,"方法").replace(x,"").replace(y,"").replace(z,"").replace(A,"").replace(v.tK,"").replace(/^#\s+/gmu,"").replace(v.VX,"").split(/\r?\n/u).filter((a,b,c)=>{let d=b>0?(0,t.GQ)((c[b-1]||"").trim().replace(/^#{1,6}\s+/u,"")):"",e=(0,t.GQ)(a.trim().replace(/^#{1,6}\s+/u,""));if(d&&C(d)&&e.length>0&&e.length<=12&&!/^#{1,6}\s/u.test(a.trim()))return!1;let f=a.trim();if(!f)return!0;if(/该小节围绕.+进行补充说明/u.test(f)||/仅作为内部事实提取依据|正式正文不得引用文件名|后台事实|内部事实/u.test(f))return!1;if(/^\s*\|/u.test(f)||/^\s*\|?\s*:?-{3,}:?/u.test(f))return!0;let g=(0,t.GQ)(f.replace(/^#{1,6}\s+/u,""));return!(/^(?:雨季|冬季|高温|台风|大风等特殊气候|雨季、冬季、高温、台风、大风等特殊气候)$/u.test(g)||g.length<=1||C(g))&&!(/[,、;:和与在为对将]$/u.test(g)||/(通过|包括|如下|主要包括)$/u.test(g))}).join("\n").replace(/\n{3,}/gu,"\n\n").trim()}let O="以下规则仅用于保障导出格式正确和事实安全,不得覆盖用户在提示词中已明确的要求。\n不得把”知识库、检索、资料类型、提示词角色、规范包、事实字段、缺失项、校验结果、资料未提供、未检索到”等后台流程话术写入正文。\n严禁使用“根据/依据招标文件、补疑澄清文件、工程量清单及设计图纸”等资料来源罗列开头;正文必须直接写项目事实、施工内容、控制措施、验收节点。\n【导出格式】章标题用 ## ,节标题用 ### 加数字编号(如 1.1),小节标题用 #### 加数字编号(如 1.1.1)。禁止用数字编号或粗体代替 ###/#### 标题。\nMarkdown 表格格式硬约束:凡是输出 Markdown 表格,必须使用标准 GFM 表格格式。\n表格必须包含表头行、分隔线和数据行;表头下一行必须是分隔线,例如 |---|---|。\n禁止只输出连续的“| 字段 | 值 |”裸表格行;两列键值信息表默认使用表头 | 信息项 | 内容 |。\n表头、分隔线和数据行必须连续,中间不得插入正文、说明、空行或补充段落。\n正文表格不得展示后台溯源列或系统过程列,如“资料来源/说明”“资料来源/证明”“知识库来源”等。\n项目名称、项目编号、招标人/业主/建设单位、建设地点、建设规模、计划工期、质量标准、合同估算价等项目基础信息,只能在项目基本信息表中集中输出一次;后续章节如需引用,应写入正文或专业表格的业务字段,不得重复生成项目基础信息键值表。\n【段落格式】段落之间必须空行(双换行)分隔,不得用单换行连续写大段文字。列表项逐行独占。步骤描述之间加空行。\n正文事实必须来自绑定材料;信息不足时保持审慎,不得编造精确数量。",P="只生成当前小节正文,不生成其他二级小节,不重复章节一级标题。\n优先使用当前模板、用户要求、绑定提示词和绑定材料中的事实;缺少依据时不得编造具体数值、名称、时间、规格或责任。\n小节应有实质正文;除非用户或模板明确要求纯表格,否则表格只能作为辅助表达,不能整节只有表格。\n不得用通用兜底段落、空泛管理话术或后台缺料说明冒充正文;信息不足时只写已有事实、适用边界和待复核口径。";function Q(a){return(0,t.GQ)(a.replace(/^#+\s*/u,"")).replace(/^(?:第)?[一二三四五六七八九十百千万\d]+章\s*/u,"").trim().replace(/\s+/gu,"")}function R(a,b){let c=Q(a),d=Q(b);return!!(c&&d&&c===d)}function S(a){return[...new Set([...a.matchAll(/^###\s+(.+)$/gmu)].map(a=>(0,t.GQ)(a[1]||"")).filter(a=>a.length>=2&&a.length<=80).filter(a=>!C(a)).filter(a=>!/^\d+(?:\.\d+){2,}\s+/u.test(a)))]}function T(a){let b=a.split(/\r?\n/u),c="",d=0;return b.map(a=>{let b=/^\*\*([^*]{2,40}表)\*\*\s*$/u.exec(a.trim());if(b&&c)return d+=1,`#### ${c}.${d} ${(0,t.GQ)(b[1]||"")}`;let e=/^###\s+(\d+\.\d+)\s+.+$/u.exec(a.trim());if(e)return c=e[1],d=0,a;if(/^##\s+/u.test(a.trim()))return c="",d=0,a;let f=/^(#{4,5})\s+(.+)$/u.exec(a.trim());if(f){if(!c)return"#####"===f[1]?a.replace(/^\s*#####/u,"####"):a;let b=(f[2]||"").trim(),e=(0,t.GQ)(b.replace(/^\d+\.\d+\.\d+\s+/u,""));return e?(d+=1,`#### ${c}.${d} ${e}`):a}return a}).join("\n").replace(/\n{3,}/gu,"\n\n").trim()}function U(a){let b=a.replace(/\*+/gu,"").trim();if(C(b))return"";let c=(0,t.GQ)(b).replace(/^[-—–]\s*/u,"").trim();return C(c)||/^(?:雨季|冬季|高温|台风|大风等特殊气候)$/u.test(c)?"":c}function V(a=[]){return[...new Set(a.map(U).filter(a=>a.length>=2))]}function W(a){return["## 目录","",...a.flatMap((a,b)=>{let c=V(a.sections||[]);return[`- ${(0,t.tb)(b,a.title)}`,...c.map((a,c)=>` - ${function(a,b,c){let d=(0,t.GQ)(c);return!function(a){let b=/^\s*(\d+)\.(\d+)[..、]?\s+(.+)$/u.exec(a);return!!b&&(0,t.GQ)(b[3]||"").trim()===(0,t.GQ)(a).trim()}(c)?`${a+1}.${b+1} ${d}`:d}(b,c,a)}`)]})].join("\n")}function X(a){return a.replace(/<div class="document-cover">[\s\S]*?<\/div>\s*(?:<div class="page-break"><\/div>\s*)?/giu,"").replace(/^#\s+.+\n{1,2}/u,"")}function Y(a){return a.replace(/^##\s+目录\s*$[\s\S]*?(?=\n<div class="page-break"><\/div>|\n##\s+第[一二三四五六七八九十百千万\d]+章|\n##\s+)/gmu,"").replace(/^<div class="page-break"><\/div>\s*(?=##\s+第[一二三四五六七八九十百千万\d]+章)/gmu,"")}function Z(a){let b=!1;return a.replace(/^##\s+目录\s*$[\s\S]*?(?=\n<div class="page-break"><\/div>|\n##\s+)/gmu,a=>b?"":(b=!0,a)).replace(/\n{3,}/gu,"\n\n").trim()}function $(a,b){let c=Z(a);b.forEach((a,b)=>{let d=(0,t.GQ)(a.title),e=RegExp(`^##\\s+(?:第[一二三四五六七八九十百千万\\d]+章\\s*)?${ab(d)}\\s*$`,"mu");c=e.test(c)?c.replace(e,`## ${(0,t.tb)(b,a.title)}`):c});let d=c.split(/\r?\n/u),e=-1,f=0,g=0,h="",i=new Set,j=a=>{let c=b[e]?.sections||[],d=ad(a);return c.findIndex(a=>ad(a)===d)},k=(a,c)=>{let d=U(a);if(!d||C(a)||C(d))return"";let k=j(d),l=b[e]?.sections||[],m=k>=0?k+1:f+1,n=k>=0?ad(l[k]):ad(d);return i.has(n)?(f=m,h=c||`${e+1}.${f}`,g+=1,`#### ${e+1}.${f}.${g} ${d}`):(f=m,g=0,h=c||`${e+1}.${f}`,i.add(n),`### ${e+1}.${f} ${k>=0?(0,t.GQ)(l[k]):d}`)},l=!1;return d.map(a=>{let c=a.trim();if(/^##\s+目录\s*$/u.test(c))return l=!0,a;if(l&&/^<div class="page-break"><\/div>$/u.test(c))return l=!1,a;if(l)return a;if(/^##\s+第[一二三四五六七八九十百千万\d]+章\s+/u.test(c))return e+=1,f=0,g=0,h="",i=new Set,a;let d=/^##\s+第[一二三四五六七八九十百千万\d]+节\s+(.+)$/u.exec(c);if(e>=0&&d)return k(d[1]||"");let m=/^##\s+\d+[..、]\s+(.+)$/u.exec(c);if(e>=0&&m)return k(m[1]||"");let n=/^##\s+(\d+)\.(\d+)\s+(.+)$/u.exec(c);if(e>=0&&n)return k(n[3]||"",`${n[1]}.${n[2]}`);let o=/^##\s+(.+)$/u.exec(c);if(e>=0&&o){let a=(0,t.GQ)(o[1]||"");return/^本章目录$/u.test(a)?"":k(a)}let p=/^###\s+(?:(\d+)\.(\d+)\s+)?(.+)$/u.exec(c);if(e>=0&&p)return k(p[3]||"",p[1]&&p[2]?`${p[1]}.${p[2]}`:void 0);let q=/^####\s+(\d+)\.(\d+)(?!\.)\s+(.+)$/u.exec(c);if(e>=0&&q)return k(q[3]||"",`${q[1]}.${q[2]}`);let r=/^####\s+(?:(\d+)\.(\d+)\.(\d+)\s+)?(.+)$/u.exec(c);if(e>=0&&r){let a=r[1]&&r[2]?`${r[1]}.${r[2]}`:h,c=(0,t.GQ)(r[4]||""),d=ad(c),l=j(c)>=0&&!i.has(d);return!f||a&&a!==h&&(0===(b[e]?.sections||[]).length||l)?k(c,a):(g+=1)<=4?`#### ${e+1}.${f}.${g} ${c}`:`**${c}**`}return a}).filter(a=>""!==a).join("\n")}function _(a,b){let c=a.replace(/承包人案/gu,"方案").replace(/承包人法/gu,"方法").replace(/(?:本|我)施工方/gu,"我公司").replace(/(?:本|我)投标人/gu,"我公司").replace(/高度重视/gu,"严格落实").replace(/重中之重/gu,"关键控制事项");for(let a of b?.forbiddenTerms||[])a&&/^(?:报价明细表|最高投标限价|招标控制价)$/u.test(a)&&(c=c.split(/\r?\n/u).filter(b=>!RegExp(ab(a),"u").test(b)).join("\n"));return c}function aa(a,b){if(!b)return _(a);let c=function(a,b){let c=a;for(let a of b?.requiredTables||[])c=function(a,b){if(/项目基本信息/u.test(b)&&(/项目基本信息/u.test(a)||/\|\s*信息项\s*\|\s*内容\s*\|/u.test(a)||/\|\s*项目名称\s*\|[^\n]*(?:徽光阁|项目施工|工程)/u.test(a))||RegExp(ab(b),"u").test(a))return a;let c=/项目基本信息/u.test(b)?"":`**${b}**
59
59
 
60
60
  | 控制项目 | 控制内容 | 执行要求 | 复核要求 |
61
61
  |---|---|---|---|
@@ -192,7 +192,7 @@ ${e.join("\n")}`:"",k.length?`项目基础事实卡片(资料已明确,项
192
192
  ${k.map(a=>`- ${a.key||a.fieldName}:${(0,s.eE)((0,az.lG)(a.value)).slice(0,220)}${a.sourceFile?`(来源:${a.sourceFile.split("/").pop()})`:""}`).join("\n")}
193
193
  项目基本信息表必须使用固定表头:| 信息项 | 内容 |,不得使用“序号|项目名称|内容参数”表头,不得输出后台溯源列。`:"",a.factNeedsPrompt||"",i.length?`全局资料事实索引匹配到的本章可写事实:
194
194
  ${i.join("\n")}`:"",n.length?`本章资料中可直接使用的可靠精确参数/编号:${n.join("、")}。这些参数来自绑定资料,不属于编造;涉及对应对象、部位、工序、材料、设备、项目概况、质量验收或安全控制时必须自然写入正文,并保持原样或等价专业表达。项目基础事实中的合同估算价、计划工期可用于项目概况;不得写入报价明细、单价、税率、预留金。`:"",p.length?`当前事实需求仍未充分确认:${p.join("、")}。未确认项不得编造;但已满足事实需求中的资料事实必须写入对应小节。`:"",a.missingFacts.length?`模板显式要求中当前检索未充分命中的项:${a.missingFacts.join("、")}。未命中项不得编造,但不得因此省略上方已经明确的可靠参数。`:"",`本章可用材料来源约 ${o} 个文件,正文必须按事实需求把可用事实内化到对应小节,不得单列后台资料清单。`,...j].filter(Boolean).join("\n")}({chapter:c,plan:void 0,spec:T,roleFacts:V,evidence:ad,missingFacts:ae,indexedFacts:[...aW,...aU],resolvedFactNeeds:aK,factNeedsPrompt:function(a){let b=a.map(a=>{let b=a.facts.slice(0,5).map(b=>`${b.key||b.fieldName||a.need.label}=${a9(b.value)}${b.sourceFile?`(${e.basename(b.sourceFile)})`:""}`),c=a.facts.length?[]:(a.evidence||[]).slice(0,2).map(a=>`证据片段:${a9(a.content).slice(0,160)}${a.filePath?`(${e.basename(a.filePath)})`:""}`);return`- ${a.need.required?"必须":"相关"}|${a.need.label}|${a.status}${b.length||c.length?`:${[...b,...c].join(";")}`:":未在已解析资料中确认"}`});return b.length?`事实需求覆盖卡片:
195
- ${b.join("\n")}`:""}(aK)}),aZ=function(a){let b=Date.now(),c=a.plan.chapters.find(b=>b.chapterId===a.chapter.id)||a.plan.chapters.find(b=>b.title===a.chapter.title);if(!c)throw Error(`缺少章节计划:${a.chapter.title}`);let d=a.context.facts.filter(a=>c.evidenceQueries.some(b=>dx(a,b))||c.requiredFacts.some(b=>dx(a,b))),e=c.sections.map(b=>{let c=a.context.facts.filter(a=>b.evidenceQueries.some(b=>dx(a,b))||b.requiredFacts.some(b=>dx(a,b))).slice(0,24),d=a.evidence.filter(a=>b.evidenceQueries.some(b=>(function(a,b){let c=dv(`${a.sectionTitle||""} ${a.content||""} ${a.filePath||""}`);return b.split(/[\s、,,;;::()()【】[-]+/u).filter(a=>a.length>=2).some(a=>c.includes(dv(a)))})(a,b))).slice(0,24),e=b.requiredGraphNodes.flatMap(b=>dy(a.context.baseProjectGraph,b)).slice(0,12),f=[];return 0===d.length&&0===c.length&&0===e.length&&f.push({level:"error",severity:"blocker",category:"evidence_coverage",owner:"system",message:`${b.title} 缺少事实、图谱或证据支撑`,suggestion:"应先定向检索和抽取事实,不能生成占位正文。"}),{...b,factIds:c.map(a=>(0,az.c6)({key:a.key,value:(0,az.lG)(a.value),sourceFile:a.sourceFile}).slice(0,12)),evidenceIds:d.map(a=>(0,az.c6)({filePath:a.filePath,content:a.content.slice(0,160),score:a.score}).slice(0,12)),graphNodeIds:e.map(a=>(0,az.c6)(a).slice(0,12)),ready:0===f.length,issues:f}}),f=e.flatMap(a=>a.issues),g={taskId:`chapter-task-${(0,az.c6)({plan:a.plan.planId,chapter:a.chapter.id,evidence:a.evidence.map(a=>(0,az.c6)({filePath:a.filePath,content:a.content.slice(0,120),score:a.score}))}).slice(0,10)}`,chapterId:a.chapter.id,title:a.chapter.title,facts:d.slice(0,48),evidence:a.evidence.slice(0,48),graphContext:dy(a.context.baseProjectGraph,a.chapter.title).slice(0,20).join("\n"),sections:e,ready:0===f.length,issues:f};return{task:g,node:{id:`chapter-task-${a.chapter.id}`,type:"chapter_task_planner",status:g.ready?"completed":"failed",startedAt:b,completedAt:Date.now(),outputSummary:`${g.sections.filter(a=>a.ready).length}/${g.sections.length} 个小节任务就绪`,metrics:{facts:g.facts.length,evidence:g.evidence.length,issues:f.length},issues:f}}}({plan:bH.plan,chapter:c,context:a2,evidence:ad});if(a2.chapterTasks=[...(a2.chapterTasks||[]).filter(a=>a.chapterId!==c.id),aZ.task],a2.nodes.push(aZ.node),(0,bb.fx)(E,(0,bb.X5)({type:"validation",roleId:`agent-chapter-task-${c.id}`,status:aZ.task.ready||m?"success":"failed",message:aZ.task.ready?aZ.node.outputSummary||`${(0,t.GQ)(c.title)} 章节任务规划完成`:m?`${(0,t.GQ)(c.title)} 章节任务未完全就绪,已复用已有正文并交由 Reviewer/Repairer 处理`:aZ.node.outputSummary||`${(0,t.GQ)(c.title)} 章节任务规划完成`,details:aZ.task.issues.map(a=>a.message)},{subtitle:"Agent Chapter Task Planner",order:E.length})),z(x),!aZ.task.ready&&!m)throw Error(`${(0,t.GQ)(c.title)} 章节任务未就绪:${aZ.task.issues.map(a=>a.message).join(";")}`);let a$=[aw,dB(aZ.task)].filter(Boolean).join("\n\n"),a_={total:aK.length,satisfied:aK.filter(a=>"satisfied"===a.status).length,missing:aK.filter(a=>"missing"===a.status).length,lowConfidence:aK.filter(a=>"low_confidence"===a.status).length};for(let a of aL)aD.push(`${c.title}:事实需求未确认 ${a}`);let a0=T?.chapterRules.find(a=>a.id===c.id||a.title===c.title),ba=bG.chapterTargets.get(c.id)||1200,bg=c.sections?.filter(Boolean).length||0,bi=/[、,,;;]/u.test(c.title),bj=function(a){let{budgetTarget:b,sectionCount:c,title:d,longformStrict:e}=a,f=/[、,,;;]/u.test(d),g=/工期|进度|质量|安全|危大|资源|人材机|保障|措施|重难点/u.test(d),h=/概况|结语|附录|说明/u.test(d),i=c>0?c*(f?720:g?900:780):g?5200:3600,j=e?h?2600:g?5200:3600:Math.min(1200,b),k=e?Math.min(Math.max(4200,b),c>=30?9800:f?8800:g?9200:7200):b,l=Math.max(j,Math.min(b,i,k));return{budgetTarget:b,roundTarget:l,structureTarget:i,maxWords:Math.ceil(l*(a.longformStrict?1.12:1.18)),label:`章节预算约 ${b} 字,本轮生成约 ${l} 字,结构目标约 ${i} 字`}}({budgetTarget:ba,sectionCount:bg,title:c.title,longformStrict:bG.longformStrict}),bk=Math.ceil(bj.maxWords*(bG.maxChars?1.05:1)),bl=bG.targetChars?Math.min(1800,Math.max(600,Math.floor(.45*bj.roundTarget))):1200,bn=bj.roundTarget,bo=Math.max(Math.min(a0?.minWords||0,bn),Math.min(T?.dynamicChapterRule.minWordsPerChapter||0,bn),Math.floor(.68*bn),bl),bp=bT(bo,bn),br=bg>0?Math.min(bn,Math.max(1800,bj.structureTarget)):bn,bs=Math.max(4,Number(process.env.DOCUMENT_SECTION_FIRST_MAX_SECTIONS||8)),bt=process.env.DOCUMENT_SECTION_FIRST_GENERATION,bu=void 0!==bt&&0===Number(bt),bv=void 0!==bt&&0!==Number(bt),bw=bn>=6e3&&bg>=4&&bg<=bs&&!bi,by=!bu&&bg>=2&&(bg>bs||bi||bG.longformStrict&&bg>=6),bA=!bu&&!by&&bg>=2&&bg<=bs&&(bv||bw||bG.longformStrict);if(m)b=c9(m,c),f=(0,bb.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:as.primaryPromptId,status:"success",message:`${(0,t.GQ)(c.title)} 已复用已有章节正文:当前 ${(0,aj.V7)(b)} 字,跳过 Writer,直接进入 Reviewer/Repairer/Final Gate`,details:[`有效证据:${ad.length} 条`,`事实需求:${a_.satisfied}/${a_.total} 已满足,缺失 ${a_.missing},低置信 ${a_.lowConfidence}`,"来源:resumeChapters/checkpointChapters"],progress:{current:g+1,total:bq.length,label:"复用章节"}},{subtitle:(0,t.GQ)(c.title),order:g}),E[i]=f,z(x);else{E[i]=(0,bb.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:as.primaryPromptId,status:"running",message:by?`${(0,t.GQ)(c.title)} 正在按语义小节组并发成稿`:bA?`${(0,t.GQ)(c.title)} 正在按小节并发成稿`:`${(0,t.GQ)(c.title)} 正在整章一次成稿`,details:by||bA?[...aF,`有效证据:${ad.length} 条`,`事实需求:${a_.satisfied}/${a_.total} 已满足,缺失 ${a_.missing},低置信 ${a_.lowConfidence}`,bj.label,`生成上限约 ${bk} 字`,`规划小节:${c.sections?.length||0} 个`,by?"小节较多,按工期/质量/安全/资源等语义组并发生成,避免整章长调用低产":"按章节结构拆分小节自然并发生成,章节聚合后再审查修复"]:[...aF,`有效证据:${ad.length} 条`,`事实需求:${a_.satisfied}/${a_.total} 已满足,缺失 ${a_.missing},低置信 ${a_.lowConfidence}`,bj.label,`生成上限约 ${bk} 字`,`规划小节:${bg} 个`,"首次生成必须覆盖章节结构、小节和事实,篇幅目标仅作为规划参考"],progress:{current:g+1,total:bq.length,label:by?"小节分组":bA?"小节并发":"整章成稿"}},{subtitle:(0,t.GQ)(c.title),order:g}),z();let d=by?Math.min(bU(bn)+12e4,36e4):bA?Math.min(bU(bn)+18e4,6e5):Math.min(bU(bn),18e4),e=by?await B(()=>bd(bK,`chapter-section-group-draft:${c.id}`,()=>(0,aS.od)(b=>bR({template:q,chapter:c,evidence:ad,missingFacts:ae,promptTexts:a$,projectContext:bz,requirement:a.requirement,roleContext:ar,targetWords:br,maxWords:bk,forbidDrawingImages:!1,factCoverageContext:aX,sectionEvidenceProvider:a=>dk({manager:v,projectRoot:o,chapter:c,sectionTitle:a,scopedFilePaths:M,fileRoleByPath:ag,fileProcessingByPath:ah,signal:b}),diagnostics:bK,signal:b}),d,a.signal))):bA?await B(()=>bd(bK,`chapter-section-draft:${c.id}`,()=>(0,aS.od)(b=>bS({template:q,chapter:c,evidence:ad,missingFacts:ae,promptTexts:a$,projectContext:bz,requirement:a.requirement,roleContext:ar,targetWords:br,maxWords:bk,forbidDrawingImages:!1,factCoverageContext:aX,projectRoot:o,modelName:(0,aS.$y)()?.model.name,materialContextHash:(0,az.c6)({materialFilePaths:H,promptTexts:aw}),allowPartialResult:!1,sectionEvidenceProvider:a=>dk({manager:v,projectRoot:o,chapter:c,sectionTitle:a,scopedFilePaths:M,fileRoleByPath:ag,fileProcessingByPath:ah,signal:b}),diagnostics:bK,signal:b}),d,a.signal))):await B(()=>bd(bK,`chapter-draft:${c.id}`,()=>(0,aS.od)(b=>bx(q,c,ad,ae,a$,bz,a.requirement,ar,{forbidDrawingImages:!1,minWords:bo,targetWords:bn,maxWords:bk,maxTokens:bp,factCoverageContext:aX,signal:b}),bU(bn),a.signal)));if(!e&&by&&(E[i]=(0,bb.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:as.primaryPromptId,status:"running",message:`${(0,t.GQ)(c.title)} 小节组未返回有效正文,正在切换为逐小节备用成稿`,details:[`LLM 最近错误:${bK.llm.lastError||"小节组空响应或超时"}`,`有效证据:${ad.length} 条`],progress:{current:g+1,total:bq.length,label:"备用成稿"}},{subtitle:(0,t.GQ)(c.title),order:g}),z(x),e=await B(()=>bd(bK,`chapter-section-fallback:${c.id}`,()=>(0,aS.od)(b=>bS({template:q,chapter:c,evidence:ad,missingFacts:ae,promptTexts:a$,projectContext:bz,requirement:a.requirement,roleContext:ar,targetWords:br,maxWords:bk,forbidDrawingImages:!1,factCoverageContext:aX,projectRoot:o,modelName:(0,aS.$y)()?.model.name,materialContextHash:(0,az.c6)({materialFilePaths:H,promptTexts:aw,fallback:"section-parallel"}),allowPartialResult:!1,sectionEvidenceProvider:a=>dk({manager:v,projectRoot:o,chapter:c,sectionTitle:a,scopedFilePaths:M,fileRoleByPath:ag,fileProcessingByPath:ah,signal:b}),diagnostics:bK,signal:b}),Math.min(bU(bn)+18e4,6e5),a.signal).catch(a=>(bK.llm.lastError=a instanceof Error?a.message:String(a),null))))),!e&&(by||bA)&&(E[i]=(0,bb.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:as.primaryPromptId,status:"running",message:`${(0,t.GQ)(c.title)} 小节成稿未完成,正在切换为整章紧凑备用成稿`,details:[`LLM 最近错误:${bK.llm.lastError||"小节成稿空响应或超时"}`,`有效证据:${ad.length} 条`],progress:{current:g+1,total:bq.length,label:"整章备用"}},{subtitle:(0,t.GQ)(c.title),order:g}),z(x),e=await B(()=>bd(bK,`chapter-compact-fallback:${c.id}`,()=>(0,aS.od)(b=>bx(q,c,ad,ae,a$,bz,a.requirement,ar,{forbidDrawingImages:!1,minWords:Math.floor(.65*bo),targetWords:Math.floor(.75*br),maxWords:bk,maxTokens:bp,factCoverageContext:aX,signal:b}),bU(Math.floor(.75*bn)),a.signal).catch(a=>(bK.llm.lastError=a instanceof Error?a.message:String(a),null))))),!e&&ad.length>0&&(E[i]=(0,bb.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:as.primaryPromptId,status:"running",message:`${(0,t.GQ)(c.title)} LLM 多路径未返回有效正文,正在用当前项目证据生成可审查草稿`,details:[`LLM 最近错误:${bK.llm.lastError||"空响应或超时"}`,`证据条数:${ad.length}`],progress:{current:g+1,total:bq.length,label:"证据草稿"}},{subtitle:(0,t.GQ)(c.title),order:g}),z(x),e=function(a){let b=a.chapter.sections?.length?a.chapter.sections:["资料依据与施工对象","主要控制措施","检查验收与闭环管理"],c=Math.max(260,Math.floor(a.targetWords/Math.max(1,b.length)*.55)),d=b.map(b=>{let d=function(a,b,c){let d=[a,b.title,...a.split(/[、,,;;\s]+/u)].filter(a=>a.length>=2),e=c.map(a=>{let b=(0,s.eE)(a.content||"").replace(/\s+/gu," ").trim(),c=d.reduce((c,d)=>c+(b.includes(d)||(a.sectionTitle||"").includes(d)?1:0),0)+a.score;return{content:b,score:c}}).filter(a=>a.content.length>=30).sort((a,b)=>b.score-a.score),f=[];for(let a of e.slice(0,8)){for(let b of a.content.split(/[。;;\n]/u).map(a=>a.trim()).filter(Boolean))if(!(b.length<18)&&!(b.length>180)&&!/报价|单价|税率|利润|后台|知识库|提示词|OCR|文件路径/u.test(b)&&(f.some(a=>a.includes(b)||b.includes(a))||f.push(b),f.length>=10))break;if(f.length>=10)break}return f}(b,a.chapter,a.evidence),e=[`### ${b}`,""];if(d.length>0){for(let a of(e.push(`本小节依据当前项目绑定资料中与“${b}”相关的内容进行组织,施工对象、控制措施和验收闭环均以已召回证据为边界。`),d.slice(0,6)))e.push(`- ${a}。`);e.push("实施过程中应将上述资料要求分解到技术交底、过程检查、整改复核和验收记录中,形成可追溯的管理闭环。")}else e.push(`当前绑定资料未形成“${b}”的充分结构化表述,本节仅保留章节结构和证据边界,后续由 Reviewer/Repairer 基于同一项目资料继续补强。`);for(;(0,aj.V7)(e.join("\n"))<c&&d.length>0&&(e.push("项目实施时应按施工准备、过程控制、质量安全复核、资料归档的顺序落实责任,避免脱离当前项目资料扩展无来源内容。"),!(e.length>14)););return e.join("\n")});return N(w(`## ${a.chapter.title}
195
+ ${b.join("\n")}`:""}(aK)}),aZ=function(a){let b=Date.now(),c=a.plan.chapters.find(b=>b.chapterId===a.chapter.id)||a.plan.chapters.find(b=>b.title===a.chapter.title);if(!c)throw Error(`缺少章节计划:${a.chapter.title}`);let d=a.context.facts.filter(a=>c.evidenceQueries.some(b=>dx(a,b))||c.requiredFacts.some(b=>dx(a,b))),e=c.sections.map(b=>{let c=a.context.facts.filter(a=>b.evidenceQueries.some(b=>dx(a,b))||b.requiredFacts.some(b=>dx(a,b))).slice(0,24),d=a.evidence.filter(a=>b.evidenceQueries.some(b=>(function(a,b){let c=dv(`${a.sectionTitle||""} ${a.content||""} ${a.filePath||""}`);return b.split(/[\s、,,;;::()()【】[-]+/u).filter(a=>a.length>=2).some(a=>c.includes(dv(a)))})(a,b))).slice(0,24),e=b.requiredGraphNodes.flatMap(b=>dy(a.context.baseProjectGraph,b)).slice(0,12),f=[];return 0===d.length&&0===c.length&&0===e.length&&f.push({level:"error",severity:"blocker",category:"evidence_coverage",owner:"system",message:`${b.title} 缺少事实、图谱或证据支撑`,suggestion:"应先定向检索和抽取事实,不能生成占位正文。"}),{...b,factIds:c.map(a=>(0,az.c6)({key:a.key,value:(0,az.lG)(a.value),sourceFile:a.sourceFile}).slice(0,12)),evidenceIds:d.map(a=>(0,az.c6)({filePath:a.filePath,content:a.content.slice(0,160),score:a.score}).slice(0,12)),graphNodeIds:e.map(a=>(0,az.c6)(a).slice(0,12)),ready:0===f.length,issues:f}}),f=e.flatMap(a=>a.issues),g={taskId:`chapter-task-${(0,az.c6)({plan:a.plan.planId,chapter:a.chapter.id,evidence:a.evidence.map(a=>(0,az.c6)({filePath:a.filePath,content:a.content.slice(0,120),score:a.score}))}).slice(0,10)}`,chapterId:a.chapter.id,title:a.chapter.title,facts:d.slice(0,48),evidence:a.evidence.slice(0,48),graphContext:dy(a.context.baseProjectGraph,a.chapter.title).slice(0,20).join("\n"),sections:e,ready:0===f.length,issues:f};return{task:g,node:{id:`chapter-task-${a.chapter.id}`,type:"chapter_task_planner",status:g.ready?"completed":"failed",startedAt:b,completedAt:Date.now(),outputSummary:`${g.sections.filter(a=>a.ready).length}/${g.sections.length} 个小节任务就绪`,metrics:{facts:g.facts.length,evidence:g.evidence.length,issues:f.length},issues:f}}}({plan:bH.plan,chapter:c,context:a2,evidence:ad});if(a2.chapterTasks=[...(a2.chapterTasks||[]).filter(a=>a.chapterId!==c.id),aZ.task],a2.nodes.push(aZ.node),(0,bb.fx)(E,(0,bb.X5)({type:"validation",roleId:`agent-chapter-task-${c.id}`,status:aZ.task.ready||m?"success":"failed",message:aZ.task.ready?aZ.node.outputSummary||`${(0,t.GQ)(c.title)} 章节任务规划完成`:m?`${(0,t.GQ)(c.title)} 章节任务未完全就绪,已复用已有正文并交由 Reviewer/Repairer 处理`:aZ.node.outputSummary||`${(0,t.GQ)(c.title)} 章节任务规划完成`,details:aZ.task.issues.map(a=>a.message)},{subtitle:"Agent Chapter Task Planner",order:E.length})),z(x),!aZ.task.ready&&!m)throw Error(`${(0,t.GQ)(c.title)} 章节任务未就绪:${aZ.task.issues.map(a=>a.message).join(";")}`);let a$=[aw,dB(aZ.task)].filter(Boolean).join("\n\n"),a_={total:aK.length,satisfied:aK.filter(a=>"satisfied"===a.status).length,missing:aK.filter(a=>"missing"===a.status).length,lowConfidence:aK.filter(a=>"low_confidence"===a.status).length};for(let a of aL)aD.push(`${c.title}:事实需求未确认 ${a}`);let a0=T?.chapterRules.find(a=>a.id===c.id||a.title===c.title),ba=bG.chapterTargets.get(c.id)||1200,bg=c.sections?.filter(Boolean).length||0,bi=/[、,,;;]/u.test(c.title),bj=function(a){let{budgetTarget:b,sectionCount:c,title:d,longformStrict:e}=a,f=/[、,,;;]/u.test(d),g=/工期|进度|质量|安全|危大|资源|人材机|保障|措施|重难点/u.test(d),h=/概况|结语|附录|说明/u.test(d),i=c>0?c*(f?720:g?900:780):g?5200:3600,j=e?h?2600:g?5200:3600:Math.min(1200,b),k=e?Math.min(Math.max(4200,b),c>=30?9800:f?8800:g?9200:7200):b,l=Math.max(j,Math.min(b,i,k));return{budgetTarget:b,roundTarget:l,structureTarget:i,maxWords:Math.ceil(l*(a.longformStrict?1.12:1.18)),label:`章节预算约 ${b} 字,本轮生成约 ${l} 字,结构目标约 ${i} 字`}}({budgetTarget:ba,sectionCount:bg,title:c.title,longformStrict:bG.longformStrict}),bk=Math.ceil(bj.maxWords*(bG.maxChars?1.05:1)),bl=bG.targetChars?Math.min(1800,Math.max(600,Math.floor(.45*bj.roundTarget))):1200,bn=bj.roundTarget,bo=Math.max(Math.min(a0?.minWords||0,bn),Math.min(T?.dynamicChapterRule.minWordsPerChapter||0,bn),Math.floor(.68*bn),bl),bp=bT(bo,bn),br=bg>0?Math.min(bn,Math.max(1800,bj.structureTarget)):bn,bs=Math.max(4,Number(process.env.DOCUMENT_SECTION_FIRST_MAX_SECTIONS||8)),bt=process.env.DOCUMENT_SECTION_FIRST_GENERATION,bu=void 0!==bt&&0===Number(bt),bv=void 0!==bt&&0!==Number(bt),bw=bn>=6e3&&bg>=4&&bg<=bs&&!bi,by=!bu&&bg>=2&&(bg>bs||bi||bG.longformStrict&&bg>=6),bA=!bu&&!by&&bg>=2&&bg<=bs&&(bv||bw||bG.longformStrict);if(m)b=c9(m,c),f=(0,bb.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:as.primaryPromptId,status:"success",message:`${(0,t.GQ)(c.title)} 已复用已有章节正文:当前 ${(0,aj.V7)(b)} 字,跳过 Writer,直接进入 Reviewer/Repairer/Final Gate`,details:[`有效证据:${ad.length} 条`,`事实需求:${a_.satisfied}/${a_.total} 已满足,缺失 ${a_.missing},低置信 ${a_.lowConfidence}`,"来源:resumeChapters/checkpointChapters"],progress:{current:g+1,total:bq.length,label:"复用章节"}},{subtitle:(0,t.GQ)(c.title),order:g}),E[i]=f,z(x);else{E[i]=(0,bb.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:as.primaryPromptId,status:"running",message:by?`${(0,t.GQ)(c.title)} 正在按语义小节组并发成稿`:bA?`${(0,t.GQ)(c.title)} 正在按小节并发成稿`:`${(0,t.GQ)(c.title)} 正在整章一次成稿`,details:by||bA?[...aF,`有效证据:${ad.length} 条`,`事实需求:${a_.satisfied}/${a_.total} 已满足,缺失 ${a_.missing},低置信 ${a_.lowConfidence}`,bj.label,`生成上限约 ${bk} 字`,`规划小节:${c.sections?.length||0} 个`,by?"小节较多,按工期/质量/安全/资源等语义组并发生成,避免整章长调用低产":"按章节结构拆分小节自然并发生成,章节聚合后再审查修复"]:[...aF,`有效证据:${ad.length} 条`,`事实需求:${a_.satisfied}/${a_.total} 已满足,缺失 ${a_.missing},低置信 ${a_.lowConfidence}`,bj.label,`生成上限约 ${bk} 字`,`规划小节:${bg} 个`,"首次生成必须覆盖章节结构、小节和事实,篇幅目标仅作为规划参考"],progress:{current:g+1,total:bq.length,label:by?"小节分组":bA?"小节并发":"整章成稿"}},{subtitle:(0,t.GQ)(c.title),order:g}),z();let d=by?Math.min(bU(bn)+12e4,36e4):bA?Math.min(bU(bn)+18e4,6e5):Math.min(bU(bn),18e4),e=by?await B(()=>bd(bK,`chapter-section-group-draft:${c.id}`,()=>(0,aS.od)(b=>bR({template:q,chapter:c,evidence:ad,missingFacts:ae,promptTexts:a$,projectContext:bz,requirement:a.requirement,roleContext:ar,targetWords:br,maxWords:bk,forbidDrawingImages:!1,factCoverageContext:aX,sectionEvidenceProvider:a=>dk({manager:v,projectRoot:o,chapter:c,sectionTitle:a,scopedFilePaths:M,fileRoleByPath:ag,fileProcessingByPath:ah,signal:b}),diagnostics:bK,signal:b}),d,a.signal))):bA?await B(()=>bd(bK,`chapter-section-draft:${c.id}`,()=>(0,aS.od)(b=>bS({template:q,chapter:c,evidence:ad,missingFacts:ae,promptTexts:a$,projectContext:bz,requirement:a.requirement,roleContext:ar,targetWords:br,maxWords:bk,forbidDrawingImages:!1,factCoverageContext:aX,projectRoot:o,modelName:(0,aS.$y)()?.model.name,materialContextHash:(0,az.c6)({materialFilePaths:H,promptTexts:aw}),allowPartialResult:!1,sectionEvidenceProvider:a=>dk({manager:v,projectRoot:o,chapter:c,sectionTitle:a,scopedFilePaths:M,fileRoleByPath:ag,fileProcessingByPath:ah,signal:b}),diagnostics:bK,signal:b}),d,a.signal))):await B(()=>bd(bK,`chapter-draft:${c.id}`,()=>(0,aS.od)(b=>bx(q,c,ad,ae,a$,bz,a.requirement,ar,{forbidDrawingImages:!1,minWords:bo,targetWords:bn,maxWords:bk,maxTokens:bp,factCoverageContext:aX,signal:b}),bU(bn),a.signal)));if(!e&&by&&(E[i]=(0,bb.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:as.primaryPromptId,status:"running",message:`${(0,t.GQ)(c.title)} 小节组未返回有效正文,正在切换为逐小节备用成稿`,details:[`LLM 最近错误:${bK.llm.lastError||"小节组空响应或超时"}`,`有效证据:${ad.length} 条`],progress:{current:g+1,total:bq.length,label:"备用成稿"}},{subtitle:(0,t.GQ)(c.title),order:g}),z(x),e=await B(()=>bd(bK,`chapter-section-fallback:${c.id}`,()=>(0,aS.od)(b=>bS({template:q,chapter:c,evidence:ad,missingFacts:ae,promptTexts:a$,projectContext:bz,requirement:a.requirement,roleContext:ar,targetWords:br,maxWords:bk,forbidDrawingImages:!1,factCoverageContext:aX,projectRoot:o,modelName:(0,aS.$y)()?.model.name,materialContextHash:(0,az.c6)({materialFilePaths:H,promptTexts:aw,fallback:"section-parallel"}),allowPartialResult:!1,sectionEvidenceProvider:a=>dk({manager:v,projectRoot:o,chapter:c,sectionTitle:a,scopedFilePaths:M,fileRoleByPath:ag,fileProcessingByPath:ah,signal:b}),diagnostics:bK,signal:b}),Math.min(bU(bn)+18e4,6e5),a.signal).catch(a=>(bK.llm.lastError=a instanceof Error?a.message:String(a),null))))),!e&&(by||bA)&&(E[i]=(0,bb.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:as.primaryPromptId,status:"running",message:`${(0,t.GQ)(c.title)} 小节成稿未完成,正在切换为整章紧凑备用成稿`,details:[`LLM 最近错误:${bK.llm.lastError||"小节成稿空响应或超时"}`,`有效证据:${ad.length} 条`],progress:{current:g+1,total:bq.length,label:"整章备用"}},{subtitle:(0,t.GQ)(c.title),order:g}),z(x),e=await B(()=>bd(bK,`chapter-compact-fallback:${c.id}`,()=>(0,aS.od)(b=>bx(q,c,ad,ae,a$,bz,a.requirement,ar,{forbidDrawingImages:!1,minWords:Math.floor(.65*bo),targetWords:Math.floor(.75*br),maxWords:bk,maxTokens:bp,factCoverageContext:aX,signal:b}),bU(Math.floor(.75*bn)),a.signal).catch(a=>(bK.llm.lastError=a instanceof Error?a.message:String(a),null))))),!e&&ad.length>0&&(E[i]=(0,bb.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:as.primaryPromptId,status:"running",message:`${(0,t.GQ)(c.title)} LLM 多路径未返回有效正文,正在用当前项目证据生成可审查草稿`,details:[`LLM 最近错误:${bK.llm.lastError||"空响应或超时"}`,`证据条数:${ad.length}`],progress:{current:g+1,total:bq.length,label:"证据草稿"}},{subtitle:(0,t.GQ)(c.title),order:g}),z(x),e=function(a){let b=a.chapter.sections?.length?a.chapter.sections:["资料依据与施工对象","主要控制措施","检查验收与闭环管理"],c=Math.max(260,Math.floor(a.targetWords/Math.max(1,b.length)*.55)),d=b.map(b=>{let d=function(a,b,c){let d=[a,b.title,...a.split(/[、,,;;\s]+/u)].filter(a=>a.length>=2),e=c.map(a=>{let b=(0,s.eE)(a.content||"").replace(/\s+/gu," ").trim(),c=d.reduce((c,d)=>c+(b.includes(d)||(a.sectionTitle||"").includes(d)?1:0),0)+a.score;return{content:b,score:c}}).filter(a=>a.content.length>=30).sort((a,b)=>b.score-a.score),f=[];for(let a of e.slice(0,8)){for(let b of a.content.split(/[。;;\n]/u).map(a=>a.trim()).filter(Boolean))if(!(b.length<18)&&!(b.length>180)&&!/报价|单价|税率|利润|后台|知识库|提示词|OCR|文件路径/u.test(b)&&(f.some(a=>a.includes(b)||b.includes(a))||f.push(b),f.length>=10))break;if(f.length>=10)break}return f}(b,a.chapter,a.evidence),e=[`### ${b}`,""];if(d.length>0){for(let a of(e.push(`本节围绕“${b}”明确施工组织、资源配置、过程控制和验收管理要求,确保各项措施与本工程实施条件相匹配。`),d.slice(0,6)))e.push(`- ${a}。`);e.push("实施过程中应将相关要求落实到技术交底、过程检查、整改复核和验收记录中,形成责任明确、过程可控、资料完整的管理闭环。")}else e.push(`本节围绕“${b}”建立施工准备、过程控制、检查验收和资料归档要求,重点控制资源投入、工序衔接、质量安全和现场协调。`);for(;(0,aj.V7)(e.join("\n"))<c&&d.length>0&&(e.push("项目实施时应按施工准备、过程控制、质量安全复核、资料归档的顺序落实责任,确保现场管理要求与施工进度、资源组织和验收节点同步推进。"),!(e.length>14)););return e.join("\n")});return N(w(`## ${a.chapter.title}
196
196
 
197
197
  ${d.join("\n\n")}`,a.forbidDrawingImages))}({chapter:c,evidence:ad,targetWords:br,forbidDrawingImages:!1})),(0,az.Te)(a.signal),!e){let a=`${(0,t.GQ)(c.title)} 大模型未返回有效正文,已阻断生成`;throw E[i]=(0,bb.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:as.primaryPromptId,status:"failed",message:a,details:[`LLM 最近错误:${bK.llm.lastError||"空响应或超时"}`,`证据条数:${ad.length}`],progress:{current:g+1,total:bq.length,label:"章节阻断"}},{subtitle:(0,t.GQ)(c.title),order:g}),z(x),Error(a)}let f=e;if(!f.trim())throw Error(`${(0,t.GQ)(c.title)} 首次生成失败,未获得可用于定稿的正文`);b=c9(f,c)}let bB=bP({chapter:c,content:b,evidence:ad}),bC=(0,aj.V7)(b),bD=S(b),bE=bD.length>0?bD:c.sections||[],bF=(0,ak.qK)(b,[{title:c.title,content:b,sections:bE}]).map(a=>a.message),bI=bB.slice(0,6).map(a=>`小节事实密度需优化:${a}`),bL=[...bF,...bI],bM=function(a,b,c=[]){return a<=0||c.some(a=>/未返回有效章节正文|生成失败/u.test(a))?"failed":"success"}(bC,0,bL);f=(0,bb.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:as.primaryPromptId,status:bM,message:(0,bb.AQ)(`${(0,t.GQ)(c.title)} 已由大模型成稿:当前 ${bC} 字;章节预算约 ${bj.budgetTarget} 字,本轮目标约 ${bj.roundTarget} 字${bL.length?`;待优化:${bL.slice(0,8).join("、")}`:""}`,h),details:[`本轮完成率:${Math.round(bC/Math.max(1,bj.roundTarget)*100)}%`,`结构目标约 ${bj.structureTarget} 字`,...aF,`二级小节:${bE.length} 个`,`扩写轮次:0`],progress:{current:g+1,total:bq.length,label:bL.length?"章节已生成":"章节达标"}},{subtitle:(0,t.GQ)(c.title),order:g}),aI[g]=f;let bN={id:c.id,title:c.title,content:b,evidence:ad,missingFacts:ae,sections:bE,tablePlans:c.tablePlans||[]},bO=dE({task:aZ.task,draft:bN,context:a2});a2.reviewResults={...a2.reviewResults||{},[c.id]:bO};let bQ=bO.issues.length>0&&(bO.repairable||bO.issues.some(a=>/Writer 未完成/u.test(a.message)));a2.nodes.push({id:`chapter-reviewer-${c.id}`,type:"chapter_reviewer",status:bO.issues.length?bQ?"running":"failed":"completed",startedAt:Date.now(),completedAt:Date.now(),outputSummary:bO.issues.length?`${bO.issues.length} 个 Reviewer 问题`:"Reviewer 通过",metrics:{supportedFacts:bO.supportedFacts},issues:bO.issues}),(0,bb.fx)(E,(0,bb.X5)({type:"llm_review",roleId:`agent-reviewer-${c.id}`,status:bO.issues.length?bQ?"running":"failed":"success",message:bO.issues.length?`${(0,t.GQ)(c.title)} Reviewer 发现 ${bO.issues.length} 个问题,等待 Repairer 修复`:`${(0,t.GQ)(c.title)} Reviewer 通过`,details:bO.issues.map(a=>a.message)},{subtitle:"Agent Reviewer",order:E.length})),z(x);let bV=bO.issues.some(a=>/Writer 未完成/u.test(a.message));if(bO.issues.length>0&&(bO.repairable||bV)){let b=bO.repairable?(k={task:aZ.task,review:bO}).review.repairable?["【Agent 定向修复任务】",`章节:${k.task.title}`,"只修复下列问题,不重写无关内容;如果问题是小节正文不足,必须按原小节标题完整补足该小节正式正文,每个小节不得少于任务最小深度:",...k.review.issues.map(a=>`- ${a.message};${a.suggestion||""}`),dB(k.task)].join("\n"):"":["【Agent 定向修复任务】",`章节:${aZ.task.title}`,"Reviewer 发现 Writer 未完成小节。必须基于对应小节事实卡和证据生成正式正文,替换并删除 WRITER_MISSING_SECTION 标记;不得跳过这些小节,不得保留占位说明。",...bO.issues.map(a=>`- ${a.message};${a.suggestion||""}`)].join("\n"),d=E.length,e=bO.issues.filter(a=>/Writer 未完成/u.test(a.message)),f=bO.issues.filter(a=>/正文不足,未达到任务最小深度/u.test(a.message)),g=[...e,...f.filter(a=>!e.some(b=>b.message===a.message))],h=[];for(let[e,f]of((0,bb.fx)(E,(0,bb.X5)({type:"llm_review",roleId:`agent-repairer-${c.id}`,status:"running",message:`${(0,t.GQ)(c.title)} Reviewer 发现 ${bO.issues.length} 个问题,正在定向修复`,details:bO.issues.map(a=>a.message)},{subtitle:"Agent Repairer",order:d})),z(x),g.entries())){let i=f.message.replace(/\s*Writer 未完成.*$/u,"").replace(/\s*正文不足,未达到任务最小深度.*$/u,"").trim(),j=/Writer 未完成/u.test(f.message)?"缺失小节":"深度不足小节";(0,bb.fx)(E,(0,bb.X5)({type:"llm_review",roleId:`agent-repairer-${c.id}`,status:"running",message:`${(0,t.GQ)(c.title)} 正在补写${j} ${e+1}/${g.length}:${i}`,details:[...h,`当前:${i}`]},{subtitle:"Agent Repairer",order:d})),z(x);let k=aZ.task.sections.find(a=>a.title===i),l=(a,b,c)=>{let d=a=>a.replace(/[\u00a0\u3000]/gu," ").replace(/^\d+(?:\.\d+)*\s+/u,"").trim(),e=a=>d(a).replace(/施工(?=方案|流程|方法)/gu,"").replace(/专项(?=方案)/gu,"").replace(/\s/gu,""),f=a=>a.trim().replace(/^#{2,6}\s+(?:\d+(?:\.\d+)*\s+)?[^\n]+\n+/u,"").trim(),g=a.split("\n"),h=0;for(let i=0;i<g.length;i+=1){let j=g[i],k=h;h+=j.length+1;let l=/^(#{3,4})\s+(.+)$/u.exec(j.trim());if(!l)continue;let m=d(l[2]),n=e(m),o=e(b);if(m!==b&&!m.includes(b)&&!b.includes(m)&&n!==o&&!n.includes(o)&&!o.includes(n))continue;let p=g.length;for(let a=i+1;a<g.length;a+=1)if(/^#{2,4}\s+/u.test(g[a].trim())){p=a;break}let q=p<g.length?g.slice(0,p).join("\n").length:a.length,r=f(c);return`${a.slice(0,k)}${j.trim()}
198
198