@customize-agent/server 4.23.10 → 4.23.11
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 +21 -21
- package/.next/prerender-manifest.json +3 -3
- package/.next/server/chunks/208.js +13 -13
- package/.next/server/chunks/5284.js +11 -11
- package/.next/server/chunks/8163.js +9 -9
- package/.next/server/chunks/{6718.js → 9533.js} +49 -50
- package/.next/server/middleware-build-manifest.js +1 -1
- 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/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/templates.js +1 -1
- package/.next/server/pages/api/documents/templates.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 +25 -25
- package/.next/static/{Uk8gerC9KKyci0tr575va → SLIi22ZOSDgelJ9HVYYtr}/_buildManifest.js +1 -1
- package/.next/static/chunks/{224-0415408fff1d1c8b.js → 224-790cf01fcf6820ee.js} +1 -1
- package/.next/static/chunks/260-244c94eacd903620.js +1 -0
- package/.next/static/chunks/{289-fc1b25371e004552.js → 289-42781fb699646699.js} +1 -1
- package/.next/static/chunks/788-e98701da4d6ca319.js +1 -0
- package/.next/static/chunks/pages/documents-3bb23fdb7ce7994b.js +1 -0
- package/.next/static/chunks/pages/knowledge/files-7958e04d63d5122e.js +1 -0
- package/.next/static/chunks/pages/knowledge/manage-4785d6910c838b90.js +1 -0
- package/.next/static/chunks/pages/prompt-bb1b9236e1cc712c.js +1 -0
- package/.next/static/chunks/pages/system/logs-2e849bcdf371d791.js +1 -0
- package/.next/static/css/9648d0deb11f2236.css +1 -0
- package/package.json +1 -1
- package/.next/static/chunks/260-580088826d643423.js +0 -1
- package/.next/static/chunks/788-dca0d550ad6bd8b2.js +0 -1
- package/.next/static/chunks/pages/documents-489eb42fe7fa85b1.js +0 -1
- package/.next/static/chunks/pages/knowledge/files-540ef329ffa92174.js +0 -1
- package/.next/static/chunks/pages/knowledge/manage-70718ded7ea5840a.js +0 -1
- package/.next/static/chunks/pages/prompt-8bd884495c67ce6f.js +0 -1
- package/.next/static/chunks/pages/system/logs-ee67e2c93147dfc3.js +0 -1
- package/.next/static/css/5652f24cec9ea7a3.css +0 -1
- /package/.next/static/{Uk8gerC9KKyci0tr575va → SLIi22ZOSDgelJ9HVYYtr}/_ssgManifest.js +0 -0
|
@@ -29,7 +29,7 @@ ${i||""}
|
|
|
29
29
|
${m.join("\n")}`,o=a.methods.filter(a=>(a.applicableWorks||[]).some(a=>a.includes(b)||b.includes(a))||a.name.includes(b)).slice(0,4),p=a.resources.filter(a=>!f(a.name)&&(n.includes(a.name)||(a.sourceFiles||[]).some(a=>h.includes(a)))).slice(0,8),q=g([...o.flatMap(a=>a.steps||[])],10),r=p.map(a=>a.name).filter(Boolean),s=g([...o.map(a=>a.name),...m.filter(a=>!r.some(b=>b.length>=4&&a.includes(b)))],10),t=(i||"").trim()||m.slice(0,2).join(";")||b;(0!==m.length||t||0!==q.length||0!==s.length)&&(k.add(b),j.push({name:b,scope:t,quantities:g([...p.map(a=>`${a.name}${a.quantity?`:${a.quantity}${a.unit||""}`:""}`),...m.filter(a=>/\d|㎡|m2|m²|米|m³|立方|吨|台|套|项/u.test(a)&&!r.some(b=>b.length>=4&&a.includes(b)))],8),materials:g(p.map(a=>[a.name,a.spec].filter(Boolean).join("|")),8),process:q,methods:s,acceptance:g([...a.standards.filter(a=>(a.sourceFiles||[]).some(a=>h.includes(a))).map(a=>a.description||a.code),...m.filter(a=>/验收|复试|检测|见证|检验|质量/u.test(a))],8).filter(a=>/验收|检测|试验|复试|实测|试块|测试|检查|记录|报告|见证|取样|拉拔|探伤|闭水|通电|绝缘|接地|电阻|偏差|压实度|密实度|强度|合格|规范/u.test(a)),sourceFiles:h}))},m=[...h.keys()],n=a=>{if(m.includes(a))return a;for(let b of m)if(a.startsWith(`${b}-`)||a.startsWith(`${b}-`))return b},o=new Map;for(let b of a.works){let a=(b.name||"").trim();if(!a)continue;let c=n(a);if(!c)continue;let d=o.get(c)||{scope:"",files:[],items:[]};a===c&&b.scope?d.scope=b.scope:d.scope||(d.scope=b.scope||""),d.files.push(...b.sourceFiles||[]),d.items.push(...b.relatedItems||[]),o.set(c,d)}for(let[a,b]of h){let c=o.get(a),d=c?.scope||b.map(a=>i.get(a)).find(Boolean)||"";l(a,[...new Set([...b,...c?.files||[]])],d,c?.items||[])}for(let b of a.works){let a=(b.name||"").trim();!a||n(a)||l(a,b.sourceFiles||[],b.scope,b.relatedItems||[])}let p=j.map(a=>a.name);return{workPackages:j,controlMatrix:a.risks.slice(0,10).map(b=>({feature:b.risk,difficulty:b.mitigation||b.risk,relatedWorkPackages:p.filter(a=>b.mitigation.includes(a)||b.risk.includes(a)).slice(0,4),methods:a.methods.filter(a=>b.mitigation.includes(a.name)||b.risk.includes(a.name)).map(a=>a.name).slice(0,4),qualityControls:D(a.standards.map(a=>a.description||a.code).filter(Boolean),4),safetyControls:D([b.mitigation,...a.requirements.filter(a=>/安全|风险|危大|消防|应急/u.test(a.category+a.detail)).map(a=>a.detail)],4)})),qualityControls:D([...a.standards.map(a=>a.description||a.code),...a.requirements.filter(a=>/质量|验收|复试|检测/u.test(a.category+a.detail)).map(a=>a.detail)],18),safetyControls:D([...a.risks.map(a=>`${a.risk}:${a.mitigation}`),...a.requirements.filter(a=>/安全|危大|消防|应急|文明/u.test(a.category+a.detail)).map(a=>a.detail)],18),resourcePlans:D(a.resources.map(a=>`${a.name}${a.spec?`|${a.spec}`:""}${a.quantity?`|${a.quantity}${a.unit||""}`:""}`),24),acceptanceRecords:D([...a.standards.map(a=>a.description||a.code),...a.requirements.filter(a=>/资料|验收|记录|检验批|隐蔽/u.test(a.category+a.detail)).map(a=>a.detail)],18),evidenceRankingHints:["优先使用工程量清单、图纸设计说明、技术规范、发包人要求、补疑澄清中的施工范围、工程量、材料规格、工艺流程、验收标准;降低投标须知、保证金、付款、违约金、电子交易系统等商务合同条款权重。"]}}function F(a){if(!a||0===a.workPackages.length)return"";let b=a.workPackages.slice(0,12).map(a=>{let b=(0,k.eL)([...a.quantities,...a.materials,...a.methods].map(a=>a.replace(/\s+/gu," ").trim()).filter(a=>a.length>=4&&a.length<=120)),c=(0,k.xu)(a.process.map(a=>a.replace(/\s+/gu," ").trim()).filter(a=>a.length>=2&&a.length<=40),b);return{name:a.name,scope:a.scope,quantities:b,process:c,acceptance:a.acceptance}}),c=b.map(a=>({name:a.name,scope:a.scope,quantities:a.quantities,materials:[],process:a.process,methods:[],acceptance:a.acceptance}));return["## 施工组织设计专项图谱","主要施工工作包:",...b.map((a,b)=>`${b+1}. ${a.name}|范围:${a.scope}|工程量/材料:${a.quantities.slice(0,5).join(";")||"按证据展开"}|流程:${a.process.slice(0,8).join("→")||"按施工准备→实施→检查→验收组织"}|验收:${a.acceptance.slice(0,4).join(";")||"按规范和资料闭环"}`),"施工工作包结构化数据:",JSON.stringify(c),a.controlMatrix.length?"重点难点—施工内容—措施矩阵:":"",...a.controlMatrix.slice(0,8).map(a=>`- ${a.feature} → ${a.relatedWorkPackages.join("、")||"相关工作包"} → ${[...a.methods,...a.qualityControls,...a.safetyControls].slice(0,6).join(";")}`),a.evidenceRankingHints.join("\n")].filter(Boolean).join("\n")}async function G(a,b){let c,d;b?.("files",15,"正在扫描已入库文件并抽样提取内容事实");let h=await (0,g.Qh)().getProject(a),k=(0,g.Yy)(a).filter(a=>"disk"!==a.status&&"error"!==a.status&&Number(a.indexedAt||0)>0&&Number(a.chunkCount||0)>0).map(a=>{var b;let c=a.relativePath.split(/[\\/]/u).filter(Boolean)[0],d=function(a){let b=new Set(["project_overview"]);return/招标|发包人要求|答疑|补疑|澄清/u.test(a)&&b.add("tender_requirement"),/图纸|设计说明|施工图|道路|桥梁|园林|交通|结构/u.test(a)&&b.add("drawing"),/清单|工程量|xls|xlsx/u.test(a)&&b.add("boq"),/质量|验收|规范|标准/u.test(a)&&b.add("quality_standard"),/安全|危大|风险|文明|环保/u.test(a)&&b.add("safety_requirement"),/施工|方案|组织|进度|工期|材料|机械|劳动力/u.test(a)&&b.add("construction_method"),[...b]}(a.relativePath),g=h.listChunksSampled({relativePath:a.relativePath,sampleSize:64}),i=function(a,b=48){let c=a.map(a=>s(String(a.content||""))).filter(Boolean);return c.length<=b?c:[...c.slice(0,b-4),...c.slice(-4)]}(g),j=(b=a.relativePath,/投标函|我方已仔细研究/u.test(b)?"投标函/承诺格式,不进入施工正文":/保证金|账户|协议书|资金托管/u.test(b)?"资金账户/保证金资料,不进入施工正文":/开标|评标|交易系统|示范文本/u.test(b)?"招投标流程/示范文本,不进入施工正文":/报价|税率|利润|最高投标限价|招标控制价|计价依据|计价定额/u.test(b)?"商务报价资料,不进入施工正文":/招标文件正文|清单编制说明|招标总说明|招标需求/u.test(b)?"招标说明/清单编制说明,不进入施工正文":void 0),k=/\.(?:xlsx?|csv|tsv)$/iu.test(a.relativePath),l=j?[]:k?function(a){let b=new Set,c=/工程名称|序号|项目编码|项目名称|项目特征|计量\s*单位|工程量|金额|综合单价|合价|人工费|机械费|暂估价|分部小计|本页|续表|合计|汇总/u,d={seq:0,name:2,feature:3,unit:4,quantity:5},e=null;for(let g of a)for(let a of String(g.content||"").split(/\r?\n/u)){let g=a.trim();if(!g.startsWith("|"))continue;let h=g.split("|").map(a=>a.trim());if(h.length<7)continue;let i=h.slice(1,-1);if((0,f.scoreTableHeaderRow)(i)>=4&&!/^\d+$/.test(i[0]||"")){e=(0,f.locateTableColumns)(i);continue}let j=e??d,k=(j.seq??0)>=0?i[j.seq??0]||"":i[0]||"",l=(j.name??2)>=0?i[j.name??2]||"":i[2]||"",m=(j.feature??3)>=0?i[j.feature??3]||"":i[3]||"",n=(j.unit??4)>=0?i[j.unit??4]||"":i[4]||"",o=(j.quantity??5)>=0?i[j.quantity??5]||"":i[5]||"";if(!/^\d+$/.test(k)||!l||!m||c.test(`${l}${m}`))continue;let p=m.replace(/\s+/gu," ").replace(/[,,;;]?\s*(?:\d+[、..]\s*)?(?:未尽事宜|具体详见|详见)[^,,;;]*?,?满足验收要求/gu,"").replace(/[,,;;]?\s*(?:\d+[、..]\s*)?含拆除、垃圾打堆、外弃[^,,;;]*/gu,"").replace(/[,,;;]?\s*投标人(?:结合设计图纸、地勘报告)?(?:自行)?踏勘现场后综合考虑/gu,"").replace(/[||]+/gu," ").replace(/\s*\d+[..]\s*$/gu,"").replace(/[。.]\s*$/gu,"").replace(/\s+/gu," ").trim();if(p.length<2)continue;let q=o&&n?`${o}${n}`:o||n,r=`${l}:${p.slice(0,80)}${q?`|${q}`:""}`;if(!(r.replace(/[^0-9a-zA-Z\u4e00-\u9fa5]/gu,"").length<4)&&(b.add(r),b.size>=60))return[...b]}return[...b]}(g):function(a){let b=new Set;for(let c of a){for(let a of c.split(/[。;;\n]/u)){let c=s(a);if(!(c.length<12||c.length>180||t(c))&&!(/^(?:项目编号|招标编号|备案编号|工程编号|资料名称|文档名称|文件名称|文档类型|文件类型|创建时间|修改时间|编制单位|编制日期)\s*[::]/u.test(c)||/^[##]{1,6}/u.test(c))&&(/(项目|工程|道路|桥梁|园林|交通|结构|排水|照明|绿化|工期|质量|安全|危大|材料|机械|劳动力|验收|规范|清单|工程量|施工)/u.test(c)&&b.add(c),b.size>=24))break}if(b.size>=24)break}return[...b]}(i),m=function(a,b){let c=`${a}
|
|
30
30
|
${b.join("\n")}`,d=new Set;for(let[a,b]of Object.entries(u))b.some(a=>c.includes(a))&&d.add(a);return[...d]}(a.relativePath,l),n=function(a,b){let c=`${a}
|
|
31
31
|
${b.join("\n")}`,d=new Set;return/工期|进度|节点|计划/u.test(c)&&d.add("确保工期的保障体系与措施"),/质量|验收|复试|见证取样|规范|标准/u.test(c)&&d.add("确保质量的保障体系与措施"),/安全|危大|风险|应急|临电|消防/u.test(c)&&d.add("确保安全生产的管理体系与措施"),/劳动力|材料|机械|设备|周转|资源/u.test(c)&&d.add("确保人、材、机的保障体系与措施"),/施工方法|施工工艺|道路|桥梁|排水|照明|园林|绿化/u.test(c)&&d.add("主要分部分项工程施工方案"),/环保|扬尘|文明|绿色/u.test(c)&&d.add("环境保护与文明施工措施"),/项目|工程|建设地点|建设规模|招标范围/u.test(c)&&d.add("工程概况与施工部署"),[...d]}(a.relativePath,l);return{relativePath:a.relativePath,root:c,fileName:e.basename(a.relativePath),category:a.category,format:a.format,chunkCount:a.chunkCount,indexedAt:a.indexedAt,contentHash:a.contentHash,status:a.status,roles:d,usableForBody:!j,excludeReason:j,summarySignals:i,contentFacts:l,intentTags:m,chapterHints:n}}),n=(0,l.lX)(k.flatMap(v)),o=k.flatMap(a=>a.intentTags.flatMap(b=>a.contentFacts.map(a=>({fact:a,relevance:function(a,b){let c=u[a];if(!c)return 0;let d=0;for(let a of c)b.includes(a)&&(d+=a.length>=4?2:1);return d>0&&/\d/u.test(b)&&(d+=1),d}(b,a)})).filter(a=>a.relevance>0).sort((a,b)=>b.relevance-a.relevance).slice(0,12).map((c,d)=>({intent:b,filePath:a.relativePath,title:a.fileName,content:c.fact,score:Math.min(.96,.6+.08*c.relevance)-.005*d,roleId:a.roles[0]}))));b?.("facts",45,`内容事实与章节意图索引已提取:${n.length} 条事实、${o.length} 条章节意图证据`);let q={selectedRoots:[...new Set(k.map(a=>a.root).filter(Boolean))],selectedFiles:k.map(a=>a.relativePath),totalAvailableFiles:k.length,ambiguous:!1,locked:!0,reason:"项目入库完成后预计算的项目级资料范围",rejectedRoots:[],scopeHash:w(k)},x=(0,i.hw)(a,q),y=(0,i.rj)({facts:n,materialSnapshot:x});b?.("graph",65,"正在构建项目图谱(LLM 分域结构化提取,确定性 base 图谱兑底)");let z=!1;try{let b=await (0,j.i)({evidence:k.flatMap(a=>a.contentFacts.slice(0,a.roles.includes("tender_requirement")?15:a.roles.includes("boq")?12:8).map((b,c)=>({chapterId:"project-intelligence",filePath:a.relativePath,content:b,score:.82-.02*c,roleId:a.roles[0],processingType:"project_intelligence",source:"project-intelligence"}))),projectRoot:a,requirement:"项目入库后预计算项目图谱",templateId:"project-intelligence"});if(!b.graph)throw Error(`项目图谱预计算失败:${b.stage.message||b.stage.status}`);c=function(a,b){let c=(a,b)=>{let c=new Map;for(let d of[...a,...b]){let a=JSON.stringify(d);c.has(a)||c.set(a,d)}return[...c.values()]},d=c(a.works,b.works),e=c(a.methods,b.methods),f=c(a.resources,b.resources),g=c(a.schedule,b.schedule),h=c(a.standards,b.standards),i=c(a.siteConditions,b.siteConditions),j=c(a.risks,b.risks),k=c(a.requirements,b.requirements).filter(a=>!a.category.includes("评标")),l=c(a.addendumChanges,b.addendumChanges),m=[...g.flatMap(a=>[a.duration,a.milestone].filter(Boolean)),...h.flatMap(a=>[a.code,a.description].filter(Boolean)),...i.flatMap(a=>[a.condition,a.impact].filter(Boolean))].map(a=>a.replace(/\s+/gu,"")),n=[...new Set([...a.gaps||[],...b.gaps||[]])].filter(a=>{let b=a.replace(/\s+/gu," ");if(C(b))return!1;if(!/未找到|未直接出现|未提供|未在资料|未体现|未明确/u.test(b))return!0;let c=b.match(/[((]([^(())]{2,60})[))]/u)?.[1]||"";if(c){let a=c.split(/[、,,]/u).map(a=>a.replace(/\s+/gu,"")).filter(a=>a.length>=4);if(a.length>0&&a.every(a=>m.some(b=>b.includes(a))))return!1;if(!/^(?:如|例如|比如|诸如|仅提及|仅有|只有|含|包括)/u.test(c))return!0}return!(/计划工期/u.test(b)&&g.length>0||/质量标准/u.test(b)&&h.length>0||/建设地点/u.test(b)&&i.length>0)&&![[/建设规模|建筑面积|投资额|层数|建设内容/u,d.length],[/招标范围|施工范围/u,d.length],[/工程量/u,f.length],[/设备表|设备名称|设备参数|规格型号/u,f.length],[/进度计划|工期安排|开工日期|竣工日期|开工令/u,g.length],[/施工方法|工艺流程|施工方案/u,e.length],[/验收标准|验收要求|验收清单/u,h.length],[/补疑|澄清|答疑|变更信息/u,k.length+l.length],[/项目风险|安全风险|风险提示/u,j.length]].some(([a,c])=>a.test(b)&&c>0)});return{works:d,methods:e,resources:f,schedule:g,standards:h,siteConditions:i,risks:j,requirements:k,addendumChanges:l,gaps:n,generatedAt:b.generatedAt||Date.now()}}(y,b.graph),d=b.stage.message||"项目图谱已预计算"}catch(b){let a=b instanceof Error?b.message:String(b);c=y,d=`项目图谱降级为确定性基础图谱(LLM 增强失败:${a}),将在下次构建时自动重试增强`,z=!0,console.warn("[project-intelligence] graph enhancement failed, degraded to base graph",a)}b?.("assembly",85,"正在汇总蓝图、施工组织图谱与缓存落盘");let A=E(c,k),B={version:m,projectRoot:a,projectId:(0,f.computeProjectId)(a),createdAt:Date.now(),sourceHash:w(k),fileCount:k.length,files:k,facts:n,chapterIntentIndex:o,projectGraph:c,projectGraphMessage:d,graphDegraded:z||void 0,constructionOrganizationGraph:A};return r(p(a),B),B}function H(a){let b=A(a.projectRoot);if(!b)return;let c=a.materialScope||(0,i.ZR)(a.projectRoot,a.template,a.requirement||"");if(c.ambiguous||!c.locked||0===c.selectedFiles.length)return;let e=(0,l.c6)({version:n,selectedFiles:c.selectedFiles.slice().sort(),templateId:a.template.id,chapters:a.template.chapters.map(a=>({id:a.id,title:a.title,sections:a.sections||[]}))}),f=function(a,b){let c=q(a,b);if(d.existsSync(c))try{let b=JSON.parse(d.readFileSync(c,"utf8"));if(b.version!==n||!x(a,b.files))return;return b}catch{return}}(a.projectRoot,e)||function(a){let b=new Set(a.selectedFiles),c=a.cache.files.filter(a=>b.has(a.relativePath));if(0===c.length||!x(a.projectRoot,c))return;let d=a.cache.facts.filter(a=>b.has(a.sourceFile)),e=function(a,b){let c=a=>!a?.length||a.some(a=>b.has(a));return{...a,works:a.works.filter(a=>c(a.sourceFiles)),methods:a.methods.filter(a=>c(a.sourceFiles)),resources:a.resources.filter(a=>c(a.sourceFiles)),schedule:a.schedule.filter(a=>c(a.sourceFiles)),standards:a.standards.filter(a=>c(a.sourceFiles)),risks:a.risks.filter(a=>c(a.sourceFiles)),requirements:a.requirements.filter(a=>c(a.sourceFiles)),siteConditions:a.siteConditions.filter(a=>c(a.sourceFiles)),addendumChanges:a.addendumChanges.filter(a=>b.has(a.sourceFile))}}(a.cache.projectGraph,b),f=function(a,b){let c=a.workPackages.filter(a=>{let c;return!(c=a.sourceFiles).length||c.some(a=>b.has(a))}),d=new Set(c.map(a=>a.name));return{...a,workPackages:c,controlMatrix:a.controlMatrix.filter(a=>0===a.relatedWorkPackages.length||a.relatedWorkPackages.some(a=>d.has(a)))}}(a.cache.constructionOrganizationGraph,b),g=function(a){let b={};for(let c of a.template.chapters){let d=function(a,b=[]){let c=`${a}
|
|
32
|
-
${b.join("\n")}`,d=new Set,e=(a,b)=>{b.test(c)&&d.add(a)};return e("工期进度",/工期|进度|计划|节点/u),e("质量验收",/质量|验收|复试|见证|控制点/u),e("安全危大",/安全|危大|风险|应急/u),e("施工部署",/部署|总平面|施工组织|现场/u),e("施工方法",/施工方案|施工方法|分部分项|工艺|新技术|新工艺/u),e("人材机",/人材机|劳动力|材料|机械|周转|人、材、机|人员设备/u),e("环境文明",/环保|文明|扬尘|绿色/u),e("工程概况",/概况|工程特点|重点|难点|整体理解|项目理解|工程理解|项目概况/u),[...d]}(c.title,c.sections||[]);if(0===d.length)continue;let e=new Set(d),f=a.entries.filter(b=>a.selected.has(b.filePath)&&e.has(b.intent)).sort((a,b)=>b.score-a.score).slice(0,24).map(a=>({chapterId:c.id,filePath:a.filePath,score:a.score,content:a.content,roleId:a.roleId,processingType:"project_intelligence",sectionTitle:a.intent,source:"project-intelligence"}));f.length&&(b[c.id]=f)}return b}({template:a.template,entries:a.cache.chapterIntentIndex||[],selected:b}),h={version:n,projectRoot:a.projectRoot,createdAt:Date.now(),scopeHash:a.scopeHash,selectedRoots:a.selectedRoots,selectedFiles:a.selectedFiles,sourceHash:(0,l.c6)(c.map(a=>({path:a.relativePath,hash:a.contentHash,chunkCount:a.chunkCount})).sort((a,b)=>a.path.localeCompare(b.path))),files:c,facts:d,projectGraph:e,constructionOrganizationGraph:f,evidenceByChapterId:g};return r(q(a.projectRoot,a.scopeHash),h),h}({projectRoot:a.projectRoot,template:a.template,cache:b,selectedFiles:c.selectedFiles,selectedRoots:c.selectedRoots,scopeHash:e});if(f)return{cache:b,scope:c,scopeSnapshot:f,files:f.files,facts:f.facts,evidenceByChapterId:f.evidenceByChapterId,projectGraph:f.projectGraph,constructionOrganizationGraph:f.constructionOrganizationGraph,constructionOrganizationContext:F(f.constructionOrganizationGraph)}}let I=new Map,J=new Set;function K(a,b,c){(0,h.Qf)(a,{id:b,type:"reindex",title:"项目理解缓存",...c})}function L(a){if(I.has(a))return void J.add(a);let b=`project-intelligence-${Date.now()}`;K(a,b,{stage:"generating",status:"processing",percent:5,message:"正在构建项目级蓝图、图谱、事实索引和章节意图索引"});let c=G(a,(c,d,e)=>{K(a,b,{stage:"generating",status:"processing",percent:d,message:e})});I.set(a,c),c.then(c=>{K(a,b,{stage:"done",status:"success",percent:100,message:`项目理解缓存完成:${c.fileCount} 份资料,${c.facts.length} 条事实,${c.chapterIntentIndex.length} 条章节意图证据`})}).catch(c=>{let d=c instanceof Error?c.message:String(c);K(a,b,{stage:"error",status:"error",percent:100,message:d,error:d}),console.warn("[project-intelligence] build failed",d)}).finally(()=>{I.delete(a),J.delete(a)&&L(a)})}async function M(a){let b=I.get(a);if(b)return b;let c=`project-intelligence-${Date.now()}`;K(a,c,{stage:"generating",status:"processing",percent:5,message:"正在构建项目级蓝图、图谱、事实索引和章节意图索引"});let d=G(a,(b,d,e)=>{K(a,c,{stage:"generating",status:"processing",percent:d,message:e})});I.set(a,d);try{let b=await d;return K(a,c,{stage:"done",status:"success",percent:100,message:`项目理解缓存完成:${b.fileCount} 份资料,${b.facts.length} 条事实,${b.chapterIntentIndex.length} 条章节意图证据`}),b}catch(d){let b=d instanceof Error?d.message:String(d);throw K(a,c,{stage:"error",status:"error",percent:100,message:b,error:b}),d}finally{I.delete(a),J.delete(a)&&L(a)}}},29055:(a,b,c)=>{c.d(b,{y:()=>e});var d=c(70208);function e(a){var b;let c=(b=`${a.template.name} ${a.template.outputTitle||""} ${a.requirement||""} ${a.chapters.map(a=>a.title).join(" ")}`,(0,d.GQ)(b).replace(/\s+/gu,"").toLowerCase()),e=[];return/市政|道路|管网|雨污|污水|给水|沟槽|交通导|沥青|水稳|检查井/u.test(c)&&e.push("municipal"),/老旧小区|小区改造|改造|修缮|飞线|居民|雨污分流/u.test(c)&&e.push("renovation"),/装饰|装修|精装|吊顶|墙地面|乳胶漆|瓷砖|石材|室内/u.test(c)&&e.push("decoration"),/房建|住宅|办公楼|厂房|主体结构|基础|屋面|二次结构|塔吊|建筑/u.test(c)&&e.push("building"),e.length?[...new Set(e)]:["general"]}},32434:(a,b,c)=>{c.d(b,{IA:()=>x,Qu:()=>u,SU:()=>w,ZR:()=>o,cN:()=>v,hw:()=>p,rj:()=>t});var d=c(76760),e=c(44533),f=c(61373),g=c(80439),h=c(22157);let i=/知识库|系统暂未|项目资料暂未|资料未明确|暂未明确|待确认|待资料复核|待系统|通用兜底(?:段落|模板)?|兜底(?:占位|模板|内容)|未检索到|资料不足|无法确认|建议补充|不适用|COL\d+|可核验信息|以本项目招标文件明确内容为准/u;function j(a){return a.replace(/\\/gu,"/").replace(/^\/+|\/+$/gu,"")}function k(a){let b=j(a).split("/").filter(Boolean);return b.length>1?b[0]:d.basename(b[0]||"当前项目")}function l(a){return a.replace(/[\s_\-—()()【】、,,.。·]/gu,"").replaceAll("[","").replaceAll("]","").toLowerCase()}function m(a){return"disk"!==a.status&&"error"!==a.status&&Number(a.indexedAt||0)>0&&Number(a.chunkCount||0)>0}function n(a){let b=new Set;for(let c of a)for(let a of c.relativePath.match(/\b\d{4}[A-Z]{2,}\d{4,}\b/gu)||[])b.add(a);return[...b]}function o(a,b,c=""){let d=(0,e.Yy)(a).filter(m),f=(b.projectBindings||[]).filter(a=>a.materialRootPath).map(a=>({materialRootPath:j(a.materialRootPath)})).map(a=>a.materialRootPath).filter(Boolean),g=f.length?d.filter(a=>f.some(b=>j(a.relativePath)===b||j(a.relativePath).startsWith(`${b}/`))):d,i=function(a){let b=new Map;for(let c of a){let a=k(c.relativePath);b.set(a,[...b.get(a)||[],c])}return b}(g),p=c.trim(),q=[...i.keys()];if(p){let a=[...i.entries()].map(([a,b])=>({root:a,files:b,score:function(a,b){let c=l(a),d=l(b);if(c.length>=4&&d.includes(c.slice(0,Math.min(16,c.length))))return 100;let e=new Set(["项目","工程","施工","总承包","资料","招标","图纸","清单"]);return a.split(/(?:\s|_|-|—|(|)|\(|\)|【|】|\[|\]|、|,|,|\.)+/u).filter(a=>a.length>=2&&!e.has(a)).reduce((a,c)=>a+(b.includes(c)?Math.min(20,c.length):0),0)}(a,p)})).filter(a=>a.score>0).sort((a,b)=>b.score-a.score);if(1===a.length||a.length>1&&a[0].score>a[1].score){let b=[a[0].root],c=a[0].files.map(a=>a.relativePath),e=n(a[0].files);return e.length>=2?{selectedRoots:[],selectedFiles:[],totalAvailableFiles:d.length,ambiguous:!0,locked:!1,reason:`资料组「${a[0].root}」内检测到 ${e.length} 个不同项目编号(${e.join("、")}),疑似多份项目资料混放,已阻断生成避免跨项目污染`,rejectedRoots:q,scopeHash:(0,h.c6)({ambiguous:!0,mixedProjectNos:e})}:{selectedRoots:b,selectedFiles:c,totalAvailableFiles:d.length,ambiguous:!1,locked:!0,reason:`用户需求唯一匹配资料组:${a[0].root}`,rejectedRoots:q.filter(a=>!b.includes(a)),scopeHash:(0,h.c6)({selectedRoots:b,selectedFiles:c})}}if(a.length>1){let b=a.filter(b=>b.score===a[0].score).map(a=>a.root);return{selectedRoots:[],selectedFiles:[],totalAvailableFiles:d.length,ambiguous:!0,locked:!1,reason:`用户需求同时匹配多个资料组:${b.join("、")}`,rejectedRoots:q,scopeHash:(0,h.c6)({ambiguous:!0,selectedRoots:b})}}}if(1===f.length){let a=g.map(a=>a.relativePath),b=n(g);return b.length>=2?{selectedRoots:[],selectedFiles:[],totalAvailableFiles:d.length,ambiguous:!0,locked:!1,reason:`模板绑定资料组「${f[0]}」内检测到 ${b.length} 个不同项目编号(${b.join("、")}),疑似多份项目资料混放,已阻断生成避免跨项目污染`,rejectedRoots:q,scopeHash:(0,h.c6)({ambiguous:!0,mixedProjectNos:b})}:{selectedRoots:f,selectedFiles:a,totalAvailableFiles:d.length,ambiguous:!1,locked:!0,reason:`模板绑定唯一资料组:${f[0]}`,rejectedRoots:q.filter(a=>!f.includes(a)),scopeHash:(0,h.c6)({selectedRoots:f,selectedFiles:a})}}return{selectedRoots:[],selectedFiles:[],totalAvailableFiles:d.length,ambiguous:!0,locked:!1,reason:f.length>1?`模板绑定多个资料组但需求未唯一指定:${f.join("、")}`:"未绑定资料组且需求未唯一指定资料范围,禁止回退全量资料",rejectedRoots:q,scopeHash:(0,h.c6)({ambiguous:!0,boundRoots:f,requirement:c})}}function p(a,b){let c=new Map((0,e.Yy)(a).map(a=>[a.relativePath,a])),f=b.selectedFiles.map(a=>{let b=c.get(a),e=Number(b?.chunkCount||0);return{path:a,root:k(a),fileName:d.basename(a),chunkCount:e,indexedAt:b?.indexedAt,status:b?.status,hash:(0,h.c6)({filePath:a,chunkCount:e,indexedAt:b?.indexedAt,status:b?.status})}});return{files:f,totalFiles:f.length,totalChunks:f.reduce((a,b)=>a+b.chunkCount,0),roots:[...new Set(f.map(a=>a.root))],createdAt:Date.now(),snapshotHash:(0,h.c6)(f.map(a=>({path:a.path,hash:a.hash})))}}function q(a,b){return a.filter(a=>b.test(`${a.fieldId||""} ${a.fieldName||""} ${a.key} ${(0,h.lG)(a.value)}`))}function r(a){return(0,h.lG)(a.value).replace(/\s+/gu," ").trim()}let s=new Set(["资料文件","资料组","资料角色","章节意图候选","项目名称候选"]);function t(a){let b=a.facts.filter(a=>!s.has(a.key)&&r(a)),c=q(b,/项目名称|工程名称|招标项目名称|建设地点|建设规模|招标范围|施工范围|建设内容/u),d=q(b,/工期|日历天|进度|开工|竣工/u),e=q(b,/质量|验收|合格|标准|规范/u),f=q(b,/清单|工程量|材料|设备|机械|劳动力|资源/u),g=q(b,/安全|文明|环保|危大|风险/u),h=c.slice(0,8).map(a=>`${a.key}:${r(a)}`).join(";");return{works:h?[{name:a.materialSnapshot.roots[0]||"当前项目",scope:h,sourceFiles:[...new Set(c.map(a=>a.sourceFile).filter(Boolean))],relatedItems:f.slice(0,8).map(a=>r(a))}]:[],methods:[],resources:f.slice(0,30).map(a=>({name:a.key,type:"material",spec:r(a),quantity:"",unit:"",sourceFiles:a.sourceFile?[a.sourceFile]:[]})),schedule:d.slice(0,10).map(a=>({milestone:a.key,duration:r(a),startDate:"",endDate:"",sourceFiles:a.sourceFile?[a.sourceFile]:[]})),standards:e.slice(0,16).map(a=>({code:a.key,description:r(a),sourceFiles:a.sourceFile?[a.sourceFile]:[]})),risks:g.slice(0,16).map(a=>({risk:r(a),level:"medium",mitigation:"",sourceFiles:a.sourceFile?[a.sourceFile]:[]})),requirements:q(b,/招标|投标|合同|承包|响应|要求|补疑|澄清|答疑/u).slice(0,20).map(a=>({category:a.key,detail:r(a),sourceFiles:a.sourceFile?[a.sourceFile]:[]})),siteConditions:q(b,/现场|周边|交通|既有|保护|场地/u).slice(0,12).map(a=>({condition:r(a),impact:"",sourceFiles:a.sourceFile?[a.sourceFile]:[]})),addendumChanges:[],gaps:[],generatedAt:Date.now()}}function u(a){let b=a.materialScope||o(a.projectRoot,a.template,a.requirement||"");if(b.ambiguous||!b.locked||0===b.selectedFiles.length)throw Error(`资料范围未锁定:${b.reason}`);let c=p(a.projectRoot,b),d=a.projectGraph||t({facts:a.facts,materialSnapshot:c,requirement:a.requirement}),e=a.projectGraph?"project-graph":"project-graph-runtime",f=a.projectGraph?"预处理完整项目图谱":"运行期项目图谱草案",g=Date.now();return{runId:`run-${g}-${(0,h.c6)({templateId:a.template.id,requirement:a.requirement||"",scopeHash:b.scopeHash}).slice(0,8)}`,templateId:a.template.id,requirement:a.requirement||"",projectRoot:a.projectRoot,materialScope:b,materialSnapshot:c,nodes:[{id:"material-scope",type:"material_scope",status:"completed",startedAt:g,completedAt:g,outputSummary:b.reason,metrics:{selectedFiles:b.selectedFiles.length,rejectedRoots:b.rejectedRoots.length}},{id:"material-snapshot",type:"material_snapshot",status:"completed",startedAt:g,completedAt:g,outputSummary:`${c.totalFiles} 份资料,${c.totalChunks} 个切片`,metrics:{totalFiles:c.totalFiles,totalChunks:c.totalChunks}},{id:e,type:"project_graph",status:"completed",startedAt:g,completedAt:g,outputSummary:`${f}:${d.works.length}工程 ${d.resources.length}资源 ${d.schedule.length}工期 ${d.standards.length}标准`,metrics:{facts:a.facts.length,precomputed:!!a.projectGraph,source:a.projectGraphSource||"runtime"}}],facts:a.facts,baseProjectGraph:d,issues:[],createdAt:g}}function v(a,b=200,c=50){if(a.nodes.length<=b)return;let d=a.nodes.slice(-c),e=a.nodes.slice(0,a.nodes.length-c),f=e.filter(a=>"project_graph"!==a.type&&("completed"===a.status||"failed"===a.status||"skipped"===a.status)),g=e.filter(a=>!f.includes(a));if(0===f.length)return;let h={id:`nodes-archive-${Date.now()}`,type:"summary",status:"completed",startedAt:f[0].startedAt,completedAt:f[f.length-1].completedAt||Date.now(),outputSummary:`已归档 ${f.length} 个历史节点(${[...new Set(f.map(a=>a.type))].join("、")})`,metrics:{archivedNodes:f.length}};a.nodes.splice(0,a.nodes.length,...g,h,...d)}function w(a){let b=a.nodes.find(a=>"project_graph"===a.type),c=!!b?.metrics?.precomputed,d=[(0,g.X5)({type:"validation",roleId:"agent-material-scope",status:"success",message:`资料范围已锁定:${a.materialScope.selectedRoots.join("、")}`,details:[`${a.materialScope.reason}`,`入选资料:${a.materialScope.selectedFiles.length}/${a.materialScope.totalAvailableFiles}`,`已排除资料组:${a.materialScope.rejectedRoots.slice(0,8).join("、")||"无"}`]},{subtitle:"Agent 资料范围锁定"}),(0,g.X5)({type:"knowledge_retrieval",roleId:"agent-material-snapshot",status:"success",message:`资料快照已固定:${a.materialSnapshot.totalFiles} 份资料、${a.materialSnapshot.totalChunks} 个切片`,details:a.materialSnapshot.files.slice(0,10).map(a=>`${a.root}|${a.fileName}|${a.chunkCount}切片`)},{subtitle:"Agent 资料快照"})];return c||d.push((0,g.X5)({type:"file_understanding",roleId:"agent-project-graph-runtime",status:"success",message:`运行期项目图谱草案已建立:${a.baseProjectGraph.works.length}工程 ${a.baseProjectGraph.resources.length}资源 ${a.baseProjectGraph.schedule.length}工期 ${a.baseProjectGraph.standards.length}标准`,details:["缓存缺失时用于资料范围和 Planner 预备分析;正式完整项目图谱会随后由 LLM 构建",`事实数:${a.facts.length}`]},{subtitle:"Agent 项目图谱预备分析"})),d}function x(a){let b=a.split(/\r?\n/u),c=[];return b.forEach((a,b)=>{i.test(a)&&c.push({level:"error",severity:"blocker",category:"style",owner:"system",message:`正式正文不得出现后台或兜底话术:第 ${b+1} 行`,suggestion:"必须改为有事实依据的正式表达;非必填缺失字段应删除,必填事实缺失应阻断生成。"})}),[...c,...(0,f.bx)(a),...(0,f.uv)(a),...(0,f.nP)(a)].slice(0,20)}},36003:(a,b,c)=>{c.d(b,{AI:()=>Q,Ym:()=>F,eL:()=>p.eL,hZ:()=>z,nl:()=>W,qX:()=>B,uQ:()=>R,w9:()=>w,xu:()=>p.xu});var d=c(76760),e=c(78217),f=c(70933),g=c(30836),h=c(61373),i=c(95734),j=c(22157),k=c(46482),l=c(71001),m=c(43378),n=c(40693),o=c(22496),p=c(22213),q=c(18274),r=c(41991),s=c(1358),t=c(3063),u=c(54185),v=c(80572);function w(a,b,c){let d=[...a.errors.map(a=>({level:"error",message:a,suggestion:"请补充配置或资料后重新生成。"})),...a.warnings.map(a=>({level:"warning",message:a,suggestion:"建议人工确认或补充对应资料。"}))];return c.some(a=>/资料未提供|系统暂未从知识库确认/u.test(a.content))&&d.push({level:"warning",message:"存在系统暂未从知识库确认的章节内容",suggestion:"请检查项目角色配置、文件绑定顺序和事实抽取落位结果。"}),b.conflicts.length>0&&d.push(...b.conflicts.map(a=>({level:"warning",message:a,suggestion:"请根据当前模板绑定的角色、文件证据和用户要求复核取值口径。"}))),d}let x=/\b\d+(?:\.\d+)?\s*(?:日历天|小时|分钟|天|周|月|年|万元|元|台|套|个|项|批|次|份|人)(?=[。,,;;::、\s]|$)/gu;function y(a){let b=new Set;for(let c of a){let a=(0,j.lG)(c.content).replace(/\s+/gu," ");if((!/报价明细|投标报价|单价|合价|综合单价|预留金|税率|增值税|利润|结算/u.test(a)||/合同估算价|合同估算价格|投资估算|最高投标限价|招标控制价/u.test(a))&&!/OCR|识别错误|乱码|无法确认|疑似|不确定|语义断裂/u.test(a)){for(let c of a.matchAll(q._W))b.add(c[0].trim());for(let c of a.matchAll(x))b.add(c[0].trim());if(b.size>=40)break}}return[...b].slice(0,40)}function z(a){let b=a.spec?.chapterRules.find(b=>b.id===a.chapter.id||b.title===a.chapter.title),c=(b?.requiredFactIds||[]).map(b=>a.spec?.factFields.find(a=>a.id===b)?.name).filter(Boolean),d=[...new Set([...a.chapter.requiredFacts,...c,...a.plan?.requiredContents||[],...a.plan?.evidenceNeeds||[],...(a.resolvedFactNeeds||[]).filter(a=>a.need.required).map(a=>a.need.label)].filter(Boolean))],e=a.roleFacts.map(({fact:a})=>`- ${a.key}:${(0,f.eE)((0,j.lG)(a.value))}`),g=(a.resolvedFactNeeds||[]).flatMap(a=>a.facts),h=a.indexedFacts||[],i=g.length>0?[]:h.map(a=>`- ${a.key||a.fieldName||"资料事实"}:${(0,f.eE)((0,j.lG)(a.value))}${a.sourceFile?`(来源:${a.sourceFile.split("/").pop()})`:""}`),k=[...g,...h].filter(a=>/建设地点|建设规模|招标范围|计划工期|合同工期|周期要求|质量标准|合同估算|投资估算|最高投标限价|招标控制价/u.test(`${a.key||""}${a.fieldName||""}${a.fieldId||""}`)).filter((a,b,c)=>c.findIndex(b=>`${b.key||b.fieldName}:${(0,j.lG)(b.value)}`==`${a.key||a.fieldName}:${(0,j.lG)(a.value)}`)===b),l=[...new Set([...y(a.evidence),...g.map(a=>(0,j.lG)(a.value)).filter(a=>q.sv.test(a)),...h.map(a=>(0,j.lG)(a.value)).filter(a=>q.sv.test(a))])],m=new Set([...a.evidence.map(a=>a.filePath),...g.map(a=>a.sourceFile),...(a.indexedFacts||[]).map(a=>a.sourceFile)]).size,n=(a.resolvedFactNeeds||[]).filter(a=>"satisfied"!==a.status&&a.need.required).map(a=>a.need.label),o=function(a){if(!a)return[];let b=[];for(let[c,d]of Object.entries(a)){if(d.length<2)continue;let a=d.filter((a,b,c)=>c.findIndex(b=>b.location===a.location&&b.spec===a.spec)===b);a.length<2||b.push(`- ${c}:${a.slice(0,8).map(a=>`${a.location}:${a.spec}`).join("|")}`)}return b.slice(0,12)}(a.specAuthorityMap);return["【本章事实覆盖与参数落位要求】",d.length?`必须优先覆盖的事实/要求:
|
|
32
|
+
${b.join("\n")}`,d=new Set,e=(a,b)=>{b.test(c)&&d.add(a)};return e("工期进度",/工期|进度|计划|节点/u),e("质量验收",/质量|验收|复试|见证|控制点/u),e("安全危大",/安全|危大|风险|应急/u),e("施工部署",/部署|总平面|施工组织|现场/u),e("施工方法",/施工方案|施工方法|分部分项|工艺|新技术|新工艺/u),e("人材机",/人材机|劳动力|材料|机械|周转|人、材、机|人员设备/u),e("环境文明",/环保|文明|扬尘|绿色/u),e("工程概况",/概况|工程特点|重点|难点|整体理解|项目理解|工程理解|项目概况/u),[...d]}(c.title,c.sections||[]);if(0===d.length)continue;let e=new Set(d),f=a.entries.filter(b=>a.selected.has(b.filePath)&&e.has(b.intent)).sort((a,b)=>b.score-a.score).slice(0,24).map(a=>({chapterId:c.id,filePath:a.filePath,score:a.score,content:a.content,roleId:a.roleId,processingType:"project_intelligence",sectionTitle:a.intent,source:"project-intelligence"}));f.length&&(b[c.id]=f)}return b}({template:a.template,entries:a.cache.chapterIntentIndex||[],selected:b}),h={version:n,projectRoot:a.projectRoot,createdAt:Date.now(),scopeHash:a.scopeHash,selectedRoots:a.selectedRoots,selectedFiles:a.selectedFiles,sourceHash:(0,l.c6)(c.map(a=>({path:a.relativePath,hash:a.contentHash,chunkCount:a.chunkCount})).sort((a,b)=>a.path.localeCompare(b.path))),files:c,facts:d,projectGraph:e,constructionOrganizationGraph:f,evidenceByChapterId:g};return r(q(a.projectRoot,a.scopeHash),h),h}({projectRoot:a.projectRoot,template:a.template,cache:b,selectedFiles:c.selectedFiles,selectedRoots:c.selectedRoots,scopeHash:e});if(f)return{cache:b,scope:c,scopeSnapshot:f,files:f.files,facts:f.facts,evidenceByChapterId:f.evidenceByChapterId,projectGraph:f.projectGraph,constructionOrganizationGraph:f.constructionOrganizationGraph,constructionOrganizationContext:F(f.constructionOrganizationGraph)}}let I=new Map,J=new Set;function K(a,b,c){(0,h.Qf)(a,{id:b,type:"reindex",title:"项目理解缓存",...c})}function L(a){if(I.has(a))return void J.add(a);let b=`project-intelligence-${Date.now()}`;K(a,b,{stage:"generating",status:"processing",percent:5,message:"正在构建项目级蓝图、图谱、事实索引和章节意图索引"});let c=G(a,(c,d,e)=>{K(a,b,{stage:"generating",status:"processing",percent:d,message:e})});I.set(a,c),c.then(c=>{K(a,b,{stage:"done",status:"success",percent:100,message:`项目理解缓存完成:${c.fileCount} 份资料,${c.facts.length} 条事实,${c.chapterIntentIndex.length} 条章节意图证据`})}).catch(c=>{let d=c instanceof Error?c.message:String(c);K(a,b,{stage:"error",status:"error",percent:100,message:d,error:d}),console.warn("[project-intelligence] build failed",d)}).finally(()=>{I.delete(a),J.delete(a)&&L(a)})}async function M(a){let b=I.get(a);if(b)return b;let c=`project-intelligence-${Date.now()}`;K(a,c,{stage:"generating",status:"processing",percent:5,message:"正在构建项目级蓝图、图谱、事实索引和章节意图索引"});let d=G(a,(b,d,e)=>{K(a,c,{stage:"generating",status:"processing",percent:d,message:e})});I.set(a,d);try{let b=await d;return K(a,c,{stage:"done",status:"success",percent:100,message:`项目理解缓存完成:${b.fileCount} 份资料,${b.facts.length} 条事实,${b.chapterIntentIndex.length} 条章节意图证据`}),b}catch(d){let b=d instanceof Error?d.message:String(d);throw K(a,c,{stage:"error",status:"error",percent:100,message:b,error:b}),d}finally{I.delete(a),J.delete(a)&&L(a)}}},29055:(a,b,c)=>{c.d(b,{y:()=>e});var d=c(70208);function e(a){var b;let c=(b=`${a.template.name} ${a.template.outputTitle||""} ${a.requirement||""} ${a.chapters.map(a=>a.title).join(" ")}`,(0,d.GQ)(b).replace(/\s+/gu,"").toLowerCase()),e=[];return/市政|道路|管网|雨污|污水|给水|沟槽|交通导|沥青|水稳|检查井/u.test(c)&&e.push("municipal"),/老旧小区|小区改造|改造|修缮|飞线|居民|雨污分流/u.test(c)&&e.push("renovation"),/装饰|装修|精装|吊顶|墙地面|乳胶漆|瓷砖|石材|室内/u.test(c)&&e.push("decoration"),/房建|住宅|办公楼|厂房|主体结构|基础|屋面|二次结构|塔吊|建筑/u.test(c)&&e.push("building"),e.length?[...new Set(e)]:["general"]}},32434:(a,b,c)=>{c.d(b,{IA:()=>x,Qu:()=>u,SU:()=>w,ZR:()=>o,cN:()=>v,hw:()=>p,rj:()=>t});var d=c(76760),e=c(44533),f=c(61373),g=c(80439),h=c(22157);let i=/知识库|系统暂未|项目资料暂未|资料未明确|暂未明确|待确认|待资料复核|待系统|通用兜底(?:段落|模板)?|兜底(?:占位|模板|内容)|未检索到|资料不足|无法确认|建议补充|不适用|COL\d+|可核验信息|以本项目招标文件明确内容为准/u;function j(a){return a.replace(/\\/gu,"/").replace(/^\/+|\/+$/gu,"")}function k(a){let b=j(a).split("/").filter(Boolean);return b.length>1?b[0]:d.basename(b[0]||"当前项目")}function l(a){return a.replace(/[\s_\-—()()【】、,,.。·]/gu,"").replaceAll("[","").replaceAll("]","").toLowerCase()}function m(a){return"disk"!==a.status&&"error"!==a.status&&Number(a.indexedAt||0)>0&&Number(a.chunkCount||0)>0}function n(a){let b=new Set;for(let c of a)for(let a of c.relativePath.match(/\b\d{4}[A-Z]{2,}\d{4,}\b/gu)||[])b.add(a);return[...b]}function o(a,b,c=""){let d=(0,e.Yy)(a).filter(m),f=(b.projectBindings||[]).filter(a=>a.materialRootPath).map(a=>({materialRootPath:j(a.materialRootPath)})).map(a=>a.materialRootPath).filter(Boolean),g=f.length?d.filter(a=>f.some(b=>j(a.relativePath)===b||j(a.relativePath).startsWith(`${b}/`))):d,i=function(a){let b=new Map;for(let c of a){let a=k(c.relativePath);b.set(a,[...b.get(a)||[],c])}return b}(g),p=c.trim(),q=[...i.keys()];if(p){let a=[...i.entries()].map(([a,b])=>({root:a,files:b,score:function(a,b){let c=l(a),d=l(b);if(c.length>=4&&d.includes(c.slice(0,Math.min(16,c.length))))return 100;let e=new Set(["项目","工程","施工","总承包","资料","招标","图纸","清单"]);return a.split(/(?:\s|_|-|—|(|)|\(|\)|【|】|\[|\]|、|,|,|\.)+/u).filter(a=>a.length>=2&&!e.has(a)).reduce((a,c)=>a+(b.includes(c)?Math.min(20,c.length):0),0)}(a,p)})).filter(a=>a.score>0).sort((a,b)=>b.score-a.score);if(1===a.length||a.length>1&&a[0].score>a[1].score){let b=[a[0].root],c=a[0].files.map(a=>a.relativePath),e=n(a[0].files);return e.length>=2?{selectedRoots:[],selectedFiles:[],totalAvailableFiles:d.length,ambiguous:!0,locked:!1,reason:`资料组「${a[0].root}」内检测到 ${e.length} 个不同项目编号(${e.join("、")}),疑似多份项目资料混放,已阻断生成避免跨项目污染`,rejectedRoots:q,scopeHash:(0,h.c6)({ambiguous:!0,mixedProjectNos:e})}:{selectedRoots:b,selectedFiles:c,totalAvailableFiles:d.length,ambiguous:!1,locked:!0,reason:`用户需求唯一匹配资料组:${a[0].root}`,rejectedRoots:q.filter(a=>!b.includes(a)),scopeHash:(0,h.c6)({selectedRoots:b,selectedFiles:c})}}if(a.length>1){let b=a.filter(b=>b.score===a[0].score).map(a=>a.root);return{selectedRoots:[],selectedFiles:[],totalAvailableFiles:d.length,ambiguous:!0,locked:!1,reason:`用户需求同时匹配多个资料组:${b.join("、")}`,rejectedRoots:q,scopeHash:(0,h.c6)({ambiguous:!0,selectedRoots:b})}}}if(1===f.length){let a=g.map(a=>a.relativePath),b=n(g);return b.length>=2?{selectedRoots:[],selectedFiles:[],totalAvailableFiles:d.length,ambiguous:!0,locked:!1,reason:`模板绑定资料组「${f[0]}」内检测到 ${b.length} 个不同项目编号(${b.join("、")}),疑似多份项目资料混放,已阻断生成避免跨项目污染`,rejectedRoots:q,scopeHash:(0,h.c6)({ambiguous:!0,mixedProjectNos:b})}:{selectedRoots:f,selectedFiles:a,totalAvailableFiles:d.length,ambiguous:!1,locked:!0,reason:`模板绑定唯一资料组:${f[0]}`,rejectedRoots:q.filter(a=>!f.includes(a)),scopeHash:(0,h.c6)({selectedRoots:f,selectedFiles:a})}}return{selectedRoots:[],selectedFiles:[],totalAvailableFiles:d.length,ambiguous:!0,locked:!1,reason:f.length>1?`模板绑定多个资料组但需求未唯一指定:${f.join("、")}`:"未绑定资料组且需求未唯一指定资料范围,禁止回退全量资料",rejectedRoots:q,scopeHash:(0,h.c6)({ambiguous:!0,boundRoots:f,requirement:c})}}function p(a,b){let c=new Map((0,e.Yy)(a).map(a=>[a.relativePath,a])),f=b.selectedFiles.map(a=>{let b=c.get(a),e=Number(b?.chunkCount||0);return{path:a,root:k(a),fileName:d.basename(a),chunkCount:e,indexedAt:b?.indexedAt,status:b?.status,hash:(0,h.c6)({filePath:a,chunkCount:e,indexedAt:b?.indexedAt,status:b?.status})}});return{files:f,totalFiles:f.length,totalChunks:f.reduce((a,b)=>a+b.chunkCount,0),roots:[...new Set(f.map(a=>a.root))],createdAt:Date.now(),snapshotHash:(0,h.c6)(f.map(a=>({path:a.path,hash:a.hash})))}}function q(a,b){return a.filter(a=>b.test(`${a.fieldId||""} ${a.fieldName||""} ${a.key} ${(0,h.lG)(a.value)}`))}function r(a){return(0,h.lG)(a.value).replace(/\s+/gu," ").trim()}let s=new Set(["资料文件","资料组","资料角色","章节意图候选","项目名称候选"]);function t(a){let b=a.facts.filter(a=>!s.has(a.key)&&r(a)),c=q(b,/项目名称|工程名称|招标项目名称|建设地点|建设规模|招标范围|施工范围|建设内容/u),d=q(b,/工期|日历天|进度|开工|竣工/u),e=q(b,/质量|验收|合格|标准|规范/u),f=q(b,/清单|工程量|材料|设备|机械|劳动力|资源/u),g=q(b,/安全|文明|环保|危大|风险/u),h=c.slice(0,8).map(a=>`${a.key}:${r(a)}`).join(";");return{works:h?[{name:a.materialSnapshot.roots[0]||"当前项目",scope:h,sourceFiles:[...new Set(c.map(a=>a.sourceFile).filter(Boolean))],relatedItems:f.slice(0,8).map(a=>r(a))}]:[],methods:[],resources:f.slice(0,30).map(a=>({name:a.key,type:"material",spec:r(a),quantity:"",unit:"",sourceFiles:a.sourceFile?[a.sourceFile]:[]})),schedule:d.slice(0,10).map(a=>({milestone:a.key,duration:r(a),startDate:"",endDate:"",sourceFiles:a.sourceFile?[a.sourceFile]:[]})),standards:e.slice(0,16).map(a=>({code:a.key,description:r(a),sourceFiles:a.sourceFile?[a.sourceFile]:[]})),risks:g.slice(0,16).map(a=>({risk:r(a),level:"medium",mitigation:"",sourceFiles:a.sourceFile?[a.sourceFile]:[]})),requirements:q(b,/招标|投标|合同|承包|响应|要求|补疑|澄清|答疑/u).slice(0,20).map(a=>({category:a.key,detail:r(a),sourceFiles:a.sourceFile?[a.sourceFile]:[]})),siteConditions:q(b,/现场|周边|交通|既有|保护|场地/u).slice(0,12).map(a=>({condition:r(a),impact:"",sourceFiles:a.sourceFile?[a.sourceFile]:[]})),addendumChanges:[],gaps:[],generatedAt:Date.now()}}function u(a){let b=a.materialScope||o(a.projectRoot,a.template,a.requirement||"");if(b.ambiguous||!b.locked||0===b.selectedFiles.length)throw Error(`资料范围未锁定:${b.reason}`);let c=p(a.projectRoot,b),d=a.projectGraph||t({facts:a.facts,materialSnapshot:c,requirement:a.requirement}),e=a.projectGraph?"project-graph":"project-graph-runtime",f=a.projectGraph?"预处理完整项目图谱":"运行期项目图谱草案",g=Date.now();return{runId:`run-${g}-${(0,h.c6)({templateId:a.template.id,requirement:a.requirement||"",scopeHash:b.scopeHash}).slice(0,8)}`,templateId:a.template.id,requirement:a.requirement||"",projectRoot:a.projectRoot,materialScope:b,materialSnapshot:c,nodes:[{id:"material-scope",type:"material_scope",status:"completed",startedAt:g,completedAt:g,outputSummary:b.reason,metrics:{selectedFiles:b.selectedFiles.length,rejectedRoots:b.rejectedRoots.length}},{id:"material-snapshot",type:"material_snapshot",status:"completed",startedAt:g,completedAt:g,outputSummary:`${c.totalFiles} 份资料,${c.totalChunks} 个切片`,metrics:{totalFiles:c.totalFiles,totalChunks:c.totalChunks}},{id:e,type:"project_graph",status:"completed",startedAt:g,completedAt:g,outputSummary:`${f}:${d.works.length}工程 ${d.resources.length}资源 ${d.schedule.length}工期 ${d.standards.length}标准`,metrics:{facts:a.facts.length,precomputed:!!a.projectGraph,source:a.projectGraphSource||"runtime"}}],facts:a.facts,baseProjectGraph:d,issues:[],createdAt:g}}function v(a,b=200,c=50){if(a.nodes.length<=b)return;let d=a.nodes.slice(-c),e=a.nodes.slice(0,a.nodes.length-c),f=e.filter(a=>"project_graph"!==a.type&&("completed"===a.status||"failed"===a.status||"skipped"===a.status)),g=e.filter(a=>!f.includes(a));if(0===f.length)return;let h={id:`nodes-archive-${Date.now()}`,type:"summary",status:"completed",startedAt:f[0].startedAt,completedAt:f[f.length-1].completedAt||Date.now(),outputSummary:`已归档 ${f.length} 个历史节点(${[...new Set(f.map(a=>a.type))].join("、")})`,metrics:{archivedNodes:f.length}};a.nodes.splice(0,a.nodes.length,...g,h,...d)}function w(a){let b=a.nodes.find(a=>"project_graph"===a.type),c=!!b?.metrics?.precomputed,d=[(0,g.X5)({type:"validation",roleId:"agent-material-scope",status:"success",message:`资料范围已锁定:${a.materialScope.selectedRoots.join("、")}`,details:[`${a.materialScope.reason}`,`入选资料:${a.materialScope.selectedFiles.length}/${a.materialScope.totalAvailableFiles}`,`已排除资料组:${a.materialScope.rejectedRoots.slice(0,8).join("、")||"无"}`]},{subtitle:"Agent 资料范围锁定"}),(0,g.X5)({type:"knowledge_retrieval",roleId:"agent-material-snapshot",status:"success",message:`资料快照已固定:${a.materialSnapshot.totalFiles} 份资料、${a.materialSnapshot.totalChunks} 个切片`,details:a.materialSnapshot.files.slice(0,10).map(a=>`${a.root}|${a.fileName}|${a.chunkCount}切片`)},{subtitle:"Agent 资料快照"})];return c||d.push((0,g.X5)({type:"file_understanding",roleId:"agent-project-graph-runtime",status:"success",message:`运行期项目图谱草案已建立:${a.baseProjectGraph.works.length}工程 ${a.baseProjectGraph.resources.length}资源 ${a.baseProjectGraph.schedule.length}工期 ${a.baseProjectGraph.standards.length}标准`,details:["缓存缺失时用于资料范围和 Planner 预备分析;正式完整项目图谱会随后由 LLM 构建",`事实数:${a.facts.length}`]},{subtitle:"Agent 项目图谱预备分析"})),d}function x(a){let b=a.split(/\r?\n/u),c=[];return b.forEach((a,b)=>{i.test(a)&&c.push({level:"error",severity:"blocker",category:"style",owner:"system",message:`正式正文不得出现后台或兜底话术:第 ${b+1} 行`,suggestion:"必须改为有事实依据的正式表达;非必填缺失字段应删除,必填事实缺失应阻断生成。"})}),[...c,...(0,f.bx)(a),...(0,f.uv)(a),...(0,f.nP)(a)].slice(0,20)}},36003:(a,b,c)=>{c.d(b,{AI:()=>Q,Ym:()=>F,eL:()=>p.eL,hZ:()=>z,nl:()=>Z,qX:()=>B,uQ:()=>R,w9:()=>w,xu:()=>p.xu});var d=c(76760),e=c(78217),f=c(70933),g=c(30836),h=c(61373),i=c(95734),j=c(22157),k=c(46482),l=c(71001),m=c(43378),n=c(40693),o=c(22496),p=c(22213),q=c(18274),r=c(41991),s=c(1358),t=c(3063),u=c(54185),v=c(80572);function w(a,b,c){let d=[...a.errors.map(a=>({level:"error",message:a,suggestion:"请补充配置或资料后重新生成。"})),...a.warnings.map(a=>({level:"warning",message:a,suggestion:"建议人工确认或补充对应资料。"}))];return c.some(a=>/资料未提供|系统暂未从知识库确认/u.test(a.content))&&d.push({level:"warning",message:"存在系统暂未从知识库确认的章节内容",suggestion:"请检查项目角色配置、文件绑定顺序和事实抽取落位结果。"}),b.conflicts.length>0&&d.push(...b.conflicts.map(a=>({level:"warning",message:a,suggestion:"请根据当前模板绑定的角色、文件证据和用户要求复核取值口径。"}))),d}let x=/\b\d+(?:\.\d+)?\s*(?:日历天|小时|分钟|天|周|月|年|万元|元|台|套|个|项|批|次|份|人)(?=[。,,;;::、\s]|$)/gu;function y(a){let b=new Set;for(let c of a){let a=(0,j.lG)(c.content).replace(/\s+/gu," ");if((!/报价明细|投标报价|单价|合价|综合单价|预留金|税率|增值税|利润|结算/u.test(a)||/合同估算价|合同估算价格|投资估算|最高投标限价|招标控制价/u.test(a))&&!/OCR|识别错误|乱码|无法确认|疑似|不确定|语义断裂/u.test(a)){for(let c of a.matchAll(q._W))b.add(c[0].trim());for(let c of a.matchAll(x))b.add(c[0].trim());if(b.size>=40)break}}return[...b].slice(0,40)}function z(a){let b=a.spec?.chapterRules.find(b=>b.id===a.chapter.id||b.title===a.chapter.title),c=(b?.requiredFactIds||[]).map(b=>a.spec?.factFields.find(a=>a.id===b)?.name).filter(Boolean),d=[...new Set([...a.chapter.requiredFacts,...c,...a.plan?.requiredContents||[],...a.plan?.evidenceNeeds||[],...(a.resolvedFactNeeds||[]).filter(a=>a.need.required).map(a=>a.need.label)].filter(Boolean))],e=a.roleFacts.map(({fact:a})=>`- ${a.key}:${(0,f.eE)((0,j.lG)(a.value))}`),g=(a.resolvedFactNeeds||[]).flatMap(a=>a.facts),h=a.indexedFacts||[],i=g.length>0?[]:h.map(a=>`- ${a.key||a.fieldName||"资料事实"}:${(0,f.eE)((0,j.lG)(a.value))}${a.sourceFile?`(来源:${a.sourceFile.split("/").pop()})`:""}`),k=[...g,...h].filter(a=>/建设地点|建设规模|招标范围|计划工期|合同工期|周期要求|质量标准|合同估算|投资估算|最高投标限价|招标控制价/u.test(`${a.key||""}${a.fieldName||""}${a.fieldId||""}`)).filter((a,b,c)=>c.findIndex(b=>`${b.key||b.fieldName}:${(0,j.lG)(b.value)}`==`${a.key||a.fieldName}:${(0,j.lG)(a.value)}`)===b),l=[...new Set([...y(a.evidence),...g.map(a=>(0,j.lG)(a.value)).filter(a=>q.sv.test(a)),...h.map(a=>(0,j.lG)(a.value)).filter(a=>q.sv.test(a))])],m=new Set([...a.evidence.map(a=>a.filePath),...g.map(a=>a.sourceFile),...(a.indexedFacts||[]).map(a=>a.sourceFile)]).size,n=(a.resolvedFactNeeds||[]).filter(a=>"satisfied"!==a.status&&a.need.required).map(a=>a.need.label),o=function(a){if(!a)return[];let b=[];for(let[c,d]of Object.entries(a)){if(d.length<2)continue;let a=d.filter((a,b,c)=>c.findIndex(b=>b.location===a.location&&b.spec===a.spec)===b);a.length<2||b.push(`- ${c}:${a.slice(0,8).map(a=>`${a.location}:${a.spec}`).join("|")}`)}return b.slice(0,12)}(a.specAuthorityMap);return["【本章事实覆盖与参数落位要求】",d.length?`必须优先覆盖的事实/要求:
|
|
33
33
|
${d.map(a=>`- ${a}`).join("\n")}`:"",e.length?`角色节点已抽取事实:
|
|
34
34
|
${e.join("\n")}`:"",k.length?`项目基础事实卡片(资料已明确,必须优先使用,不得输出任何占位话术;其中工程地点、建设规模、计划工期等总述数据只在项目概况/工程概况类章节集中交代,其他章节仅可引用所需的具体数字,不得复述完整概况段):
|
|
35
35
|
${k.map(a=>`- ${a.key||a.fieldName}:${(0,f.eE)((0,j.lG)(a.value))}${a.sourceFile?`(来源:${a.sourceFile.split("/").pop()})`:""}`).join("\n")}
|
|
@@ -82,9 +82,9 @@ ${q}`:"",a.factCoverageContext||"",a.sharedFactLayerText||"",a.roleContext,a.mis
|
|
|
82
82
|
${c||""}`.matchAll(/(?:开挖深度|基坑深度|坡底线|坑底标高)[^。;;\n\d]{0,16}?-?(\d+(?:\.\d+)?)/gu)].map(a=>Math.abs(Number(a[1]))).filter(a=>Number.isFinite(a)&&a>=1&&a<50),e=d.length>0?Math.max(...d):void 0;return["【危大工程判定规则卡】依据住建部《危险性较大的分部分项工程安全管理规定》(住建部令第37号):开挖深度≥3m 的基坑工程属危大工程,必须编制专项施工方案并组织专家论证以外的审核流程;开挖深度≥5m 的基坑工程属超过一定规模的危大工程,专项施工方案必须经专家论证。",void 0!==e?`本工程资料基坑开挖深度为 ${e}m${e>=5?"(属超过一定规模的危大工程,专项方案必须专家论证)":e>=3?"(属危大工程,必须编制专项施工方案)":"(未达危大工程判定阈值,仍须按一般土方工程管控)"}`:"资料中暂未锁定本工程基坑开挖深度数值:不得编造深度数值,必须从绑定证据(基坑支护设计图/地质勘察报告)锁定实际深度后落位危大分级结论。","本节基坑内容必须同时写明:①本工程实际开挖深度数值,②对应的危大分级判定结论(危大工程/超过一定规模的危大工程+专家论证)与管控要求,不得只写判定规则不落地本项目深度与分级。\n本节若涉及基坑支护形式与做法,必须写明具体支护参数并与资料支护形式一致:土钉墙写明土钉规格(钢管Φ及壁厚)、长度、竖向/水平间距、喷射混凝土面层厚度与钢筋网规格;放坡开挖写明放坡坡率(如1:0.75)与坡面防护做法;禁止「按设计坡率」「放坡或支护」类参数留白或两可表述。\n若本节输出危大工程(辨识)清单表格或排除性声明,两者必须同口径:清单只列资料参数确认达到判定阈值的类别;正文声明「本工程无/未涉及某类危大工程」的类别不得再列入危大清单表格(反之亦然),参数阈值表述不得两处不一致。"].join("\n")}(a.sectionTitle,a.projectContext,c.prompt),...(0,t.zC)(a.sectionTitle),w,x,`请只生成当前节内容,使用“### ${a.sectionTitle}”作为节标题;正文必须下沉到若干“#### 三级小节标题”下面,不得在 ### 标题后直接写大段正文。目标约 ${a.targetWords} 字${a.maxWords?`,最多不超过 ${a.maxWords} 字`:""}。`,a.qualityFeedback?`上轮小节未通过质量检查,必须修正:${a.qualityFeedback}`:"",n?`绑定材料:
|
|
83
83
|
${n}`:""])},C=()=>(0,i.rI)(z,y,!1,{maxTokens:Math.min(8192,Math.max(2800,Math.ceil(2.6*a.targetWords))),temperature:0,signal:a.signal,diagnostics:a.diagnostics,contextLayers:B,prefixKey:`writer-section:${a.chapter.id}`}),D=a.diagnostics?await (0,k.X6)(a.diagnostics,`section-draft:${a.chapter.id}:${a.sectionTitle}`,C):await C();if(!D||D.length<80)return;let E=(0,h.kT)((0,h.FD)(D.startsWith("### ")?D:`### ${a.sectionTitle}
|
|
84
84
|
|
|
85
|
-
${D}`,a.forbidDrawingImages)).replace(/^##\s+.*\n+/u,"").trim(),G=(0,p.ap)(a.sectionTitle),H=Math.min(Math.max(Math.floor(.7*a.targetWords),G),Math.max(500,a.targetWords)),I=(0,p.eK)(a.sectionTitle,E),J=E,K=t.Yp.test(a.sectionTitle)||t.gG.test(a.sectionTitle);if(K){let b=(0,p.YK)((0,p.DD)(J));b&&(I||=b);let c=(0,p.I6)(J);c!==J&&(J=c,I=(0,p.eK)(a.sectionTitle,J))}if(I&&a.allowLenientStructureGate&&K){let b=(0,p.sE)(a.sectionTitle,J),c=(b.match(/^####\s+/gmu)||[]).length,d=b.split(/^####\s+/gmu).slice(1).map(a=>a.trim()).filter(Boolean),f=d.length>0&&d.every(a=>(0,j._R)(a)),g=(0,p.y7)((0,p.DD)(b));c>=3&&f&&!g&&(0,e.V7)(J)>=H&&(I="")}if(I){a.diagnostics&&(a.diagnostics.llm.lastError=`${I}:${a.chapter.title} / ${a.sectionTitle}`);return}if((0,p.zJ)(a.sectionTitle)&&(0,e.V7)(J)<H){a.diagnostics&&(a.diagnostics.llm.lastError=`section writer 正文不足:${a.chapter.title} / ${a.sectionTitle} / ${(0,e.V7)(J)}/${H}字`);return}let L=/项目主要施工内容/u.test(a.sectionTitle)?(0,p.h$)(J):J;return(0,p.ev)(a.sectionTitle,L)}async function V(a,b){let c;for(let d=0;d<b;d+=1){let b,f=await U({...a,qualityFeedback:c});if(!f){c=`上一轮未生成有效正文${a.diagnostics?.llm.lastError?`(被拒原因:${a.diagnostics.llm.lastError})`:""}。请定向修正:保留上一轮已通过检查的内容不变,只补写缺失的要素段(作业对象与工程量/工序顺序/施工方法,缺哪项补哪项),不得整体重写已正确的部分。`;continue}let h=function(a,b){let c=b.replace(/^#{3,4}\s+.*\n+/u,"").split(/\r?\n/u).filter(a=>!/^\s*\|/u.test(a)).filter(a=>!/^\s*\|?\s*:?-{3,}:?/u.test(a)).join("\n"),d=(0,e.V7)(c);return d<360?`正文有效内容不足:${a} 当前约 ${d} 字`:/资料未提供|信息有限|无法确定|待补充|建议扩大本地知识库检索|以下是|本文档|本小节围绕/u.test(c)?`存在空泛或说明性话术:${a}`:void 0}(a.sectionTitle,f);if(0===d&&!h){let c=(0,g.I)(f,a.evidence.map(a=>a.content).join("\n"));c.mismatched.length>0&&(a.diagnostics&&(a.diagnostics.llm.lastInfo=`数值核验:${a.sectionTitle} 发现 ${c.mismatched.length} 处疑似错误数值(${c.mismatched.map(a=>`${a.found}→${a.expected}`).join("、")})`),b=(0,g.n8)(c))}if(!h&&!b)return f;c=h||b}}
|
|
85
|
+
${D}`,a.forbidDrawingImages)).replace(/^##\s+.*\n+/u,"").trim(),G=(0,p.ap)(a.sectionTitle),H=Math.min(Math.max(Math.floor(.7*a.targetWords),G),Math.max(500,a.targetWords)),I=(0,p.eK)(a.sectionTitle,E),J=E,K=t.Yp.test(a.sectionTitle)||t.gG.test(a.sectionTitle);if(K){let b=(0,p.YK)((0,p.DD)(J));b&&(I||=b);let c=(0,p.I6)(J);c!==J&&(J=c,I=(0,p.eK)(a.sectionTitle,J))}if(I&&a.allowLenientStructureGate&&K){let b=(0,p.sE)(a.sectionTitle,J),c=(b.match(/^####\s+/gmu)||[]).length,d=b.split(/^####\s+/gmu).slice(1).map(a=>a.trim()).filter(Boolean),f=d.length>0&&d.every(a=>(0,j._R)(a)),g=(0,p.y7)((0,p.DD)(b));c>=3&&f&&!g&&(0,e.V7)(J)>=H&&(I="")}if(I){a.diagnostics&&(a.diagnostics.llm.lastError=`${I}:${a.chapter.title} / ${a.sectionTitle}`);return}if((0,p.zJ)(a.sectionTitle)&&(0,e.V7)(J)<H){a.diagnostics&&(a.diagnostics.llm.lastError=`section writer 正文不足:${a.chapter.title} / ${a.sectionTitle} / ${(0,e.V7)(J)}/${H}字`);return}let L=/项目主要施工内容/u.test(a.sectionTitle)?(0,p.h$)(J):J;return(0,p.ev)(a.sectionTitle,L)}async function V(a,b){let c;for(let d=0;d<b;d+=1){let b,f=await U({...a,qualityFeedback:c});if(!f){c=`上一轮未生成有效正文${a.diagnostics?.llm.lastError?`(被拒原因:${a.diagnostics.llm.lastError})`:""}。请定向修正:保留上一轮已通过检查的内容不变,只补写缺失的要素段(作业对象与工程量/工序顺序/施工方法,缺哪项补哪项),不得整体重写已正确的部分。`;continue}let h=function(a,b){let c=b.replace(/^#{3,4}\s+.*\n+/u,"").split(/\r?\n/u).filter(a=>!/^\s*\|/u.test(a)).filter(a=>!/^\s*\|?\s*:?-{3,}:?/u.test(a)).join("\n"),d=(0,e.V7)(c);return d<360?`正文有效内容不足:${a} 当前约 ${d} 字`:/资料未提供|信息有限|无法确定|待补充|建议扩大本地知识库检索|以下是|本文档|本小节围绕/u.test(c)?`存在空泛或说明性话术:${a}`:void 0}(a.sectionTitle,f);if(0===d&&!h){let c=(0,g.I)(f,a.evidence.map(a=>a.content).join("\n"));c.mismatched.length>0&&(a.diagnostics&&(a.diagnostics.llm.lastInfo=`数值核验:${a.sectionTitle} 发现 ${c.mismatched.length} 处疑似错误数值(${c.mismatched.map(a=>`${a.found}→${a.expected}`).join("、")})`),b=(0,g.n8)(c))}if(!h&&!b)return f;c=h||b}}let W=["农村","村村","全村","本村","各村","每村","乡村","跨村","入村","出村","邻村","沿村","自然村","所有村","多村"],X=["村","社区","小区","家园","片区","工区","标段"].map(a=>RegExp(`[\\u4e00-\\u9fa5A-Za-z0-9]{1,6}${a}`,"gu"));function Y(a){let b=new Set;for(let c of X)for(let d of a.matchAll(c))W.some(a=>d[0].includes(a))||b.add(d[0]);return b}async function Z(a,b){let c,d=b.blocks;if(0===d.length)return;let l=(a,b)=>a.replace(/^###\s+[^\n]*\n+/u,a=>{let c=a.replace(/^###\s+/u,"").trim();return(0,j.Sw)(c)===b?"":a}),n=(a,b,c)=>`${a}
|
|
86
86
|
|
|
87
|
-
${l(b,(0,j.Sw)(c))}`,o=d.flatMap(a=>a.subPoints.flatMap(a=>a.sources)),q=(0,m.nn)(a.chapter,o),r=d.map((b,c)=>{let e=(a.chapter.tablePlans||[]).filter(a=>{if(q.includes(a))return!1;let c=a.title||"";return b.subPoints.some(a=>a.sources.some(a=>c.includes(a)||a.includes(c))||c.includes(a.title)||a.title.includes(c))});return c===d.length-1?[...e,...q]:e}),s=(0,v.z)().plannedBlockConcurrency||d.length,w=Math.max(1,Math.min(d.length,(0,i.Sq)(),Number.isFinite(s)?Math.floor(s):d.length)),x=Array(d.length).fill(void 0),y=
|
|
87
|
+
${l(b,(0,j.Sw)(c))}`,o=d.flatMap(a=>a.subPoints.flatMap(a=>a.sources)),q=(0,m.nn)(a.chapter,o),r=d.map((b,c)=>{let e=(a.chapter.tablePlans||[]).filter(a=>{if(q.includes(a))return!1;let c=a.title||"";return b.subPoints.some(a=>a.sources.some(a=>c.includes(a)||a.includes(c))||c.includes(a.title)||a.title.includes(c))});return c===d.length-1?[...e,...q]:e}),s=(0,v.z)().plannedBlockConcurrency||d.length,w=Math.max(1,Math.min(d.length,(0,i.Sq)(),Number.isFinite(s)?Math.floor(s):d.length)),x=Array(d.length).fill(void 0),y=function(a,b){let c=a.map(a=>`${a.title} ${a.subPoints.map(a=>a.title).join(" ")}`),d=c.map(a=>new Set(E(a).filter(a=>a.length>=2))),e=c.map(a=>Y(a)),f=a.map(()=>[]);if(0===b.length)return f;for(let a of b){let b=E(a).filter(a=>a.length>=2),c=Y(a),g=-1,h=0;d.forEach((a,d)=>{let f=e[d],i=0;if(f.size>0&&c.size>0){if(![...c].some(a=>[...f].some(b=>a.includes(b)||b.includes(a))))return;i=100}let j=b.reduce((b,c)=>b+ +!!a.has(c),0)+i;j>h&&(h=j,g=d)}),g>=0&&h>0&&f[g].push(a)}return f}(d,[...new Set(a.evidence.flatMap(a=>(0,f.oW)(a.content).split("\n").filter(Boolean)))]),z=(0,v.z)().chapterPoolChars||8e3,A=(0,f.R7)((0,f.QO)(a.chapter,a.evidence),a.chapter.requiredFacts||[],Number.isFinite(z)?Math.floor(z):8e3),B=(0,v.z)().blockEvidenceChars||1e3,C=Number.isFinite(B)&&B>0?Math.floor(B):1e3,F=async(b,c)=>{var f;let h=(0,j.Sw)(b.title),i=b.subPoints.filter(a=>(0,j.Sw)(a.title)!==h).map(a=>a.title),l=new Set([b.title,...b.subPoints.map(a=>a.title)].map(j.Sw).filter(Boolean)),m=new Set(d.flatMap(a=>[a.title,...a.subPoints.map(a=>a.title)]).filter(a=>!l.has((0,j.Sw)(a))).map(j.Sw).filter(Boolean)),o=E(`${b.title} ${i.join(" ")}`).filter(a=>a.length>=2),q=a=>Math.min(24,o.reduce((b,c)=>b+6*!!a.content.includes(c),0)),s=[...a.evidence.map(a=>({item:a,score:o.reduce((b,c)=>b+ +!!a.content.includes(c),0)})).sort((a,b)=>b.score-a.score).map(a=>a.item),...a.sectionEvidenceProvider?await a.sectionEvidenceProvider(b.title).catch(()=>[]):[]],v=t.Yp.test(b.title)?"major":t.gG.test(b.title)||t.gG.test(a.chapter.title)?"division":"",w=t.gG.test(a.chapter.title)&&t.gG.test(b.title),x=a.skeletonProjectContext??a.projectContext,z=v&&!w?(0,p.sh)(x,s):[],B=b.subPoints.map(a=>a.title).filter(Boolean),G=w?[]:(0,p.iA)(z,B),H=w?[]:G.length>0?G:B.length>=3?B:[],I=v?(0,p.Bk)(x,s,3,H):"",J="division"!==v||0!==H.length||w?"":`【分部工程施工方案要素要求】本节为一个分部分项工程的施工方案,写成连贯散文叙述(禁止 Markdown 表格;禁止以“施工概况/施工流程/施工方法”等结构标签充当小节标题或段落开头):
|
|
88
88
|
要素自然融入叙述:作业对象与部位、工程量或规模、材料设备规格型号(数量类数值优先取工程量清单数据);工序先后顺序清晰;工艺做法与工艺参数(数值+单位);验收检测与记录闭环。
|
|
89
89
|
数值来源优先级:工程量、材料规格、设备型号等数量类数值优先取工程量清单数据;清单未覆盖的参数(标高、坡率、构造做法等)才取图纸数据;禁止“按设计图纸执行”“详见设计图纸”“按设计文件确定”式概括话术——必须落到具体数值或具体规范条文。${i.length>0?`
|
|
90
90
|
本节覆盖以下分部分项工作内容,正文必须逐项落实、不得遗漏任何一项:${i.join("、")}。`:""}`,K=w?(f=b.targetWords,`【分部分项工程施工方案总述】本节为本章各分部分项工程施工方案的总体概述小节:各分部工程的具体施工方案已在本章其他小节逐项展开,本节不得复写任何单个分部工程的施工方案,也不得把本章其他小节(各分部工程方案)标题作为本节任何标题。正文直接展开、无需四级标题,禁止 Markdown 表格,按以下四部分组织:
|
|
@@ -92,26 +92,26 @@ ${l(b,(0,j.Sw)(c))}`,o=d.flatMap(a=>a.subPoints.flatMap(a=>a.sources)),q=(0,m.nn
|
|
|
92
92
|
二、施工总体部署:施工分区与流水段划分、总体施工顺序安排、关键线路与节点控制、各专业施工穿插衔接原则;
|
|
93
93
|
三、施工组织与资源配置:按专业划分的施工队伍与作业面安排、总体资源投入与调配原则、多专业协调管理机制;
|
|
94
94
|
四、质量、安全与进度接口:各分部工程间的成品保护与工序交接安排、总体质量控制与检测验收安排、安全文明施工总体要求。
|
|
95
|
-
每部分不少于 ${Math.floor(f/4)} 字,全文合计不少于 ${f} 字;结合本项目资料中的具体工程内容(单体、部位、专业、工程量)展开,禁止空泛原则表述。`):"",L={...a.chapter,title:b.title,sections:i,tablePlans:r[c]||[]},M=[...b.facts||[],...
|
|
95
|
+
每部分不少于 ${Math.floor(f/4)} 字,全文合计不少于 ${f} 字;结合本项目资料中的具体工程内容(单体、部位、专业、工程量)展开,禁止空泛原则表述。`):"",L={...a.chapter,title:b.title,sections:i,tablePlans:r[c]||[]},M=[...b.facts||[],...y[c]].slice(0,8),N=M.length?`【本主题块专属事实(只能在本节使用,不得重复出现在本章其他节;本章其他节已认领各自专属事实,本节不得重复展开其他节专属事实)】${M.map(a=>`- ${a}`).join("\n")}`:"",O=b.subPoints.map(a=>(0,j.Sw)(a.title)===h?`- ### ${b.title}(本节标题,覆盖评分细目:${a.sources.join("、")};正文直接展开,无需四级标题;如按细目分节,仅可使用上述细目标题作为四级标题)`:a.sources.length>1?`- #### ${a.title}(覆盖评分细目:${a.sources.join("、")})`:`- #### ${a.title}`).join("\n"),P=m.size>0?`严禁将以下属于本章其他小节的标题作为本节任何标题输出(H3 仅允许「${b.title}」,H4 仅允许上面清单中的标题):${[...m].join("、")}。`:"",Q=b.halfFocus?`
|
|
96
96
|
${b.halfFocus}`:"",R=[N,I,K,J,v&&!w?(0,u.gn)(c):"",b.subPoints.length>0?`本节是「${a.chapter.title}」章的一个主题小节,只写本节标题覆盖的内容,不得重复本章其他节内容;必须按以下清单逐点写出实施性正文,标题必须与给定标题完全一致,不得改名、合并或遗漏;每个要点必须覆盖其标注的全部评分细目内容,但不得为这些细目单独开设小节标题:
|
|
97
97
|
${O}${P?`
|
|
98
98
|
${P}`:""}${Q}`:`本节是「${a.chapter.title}」章的唯一小节(本章无细分小节规划):正文在 H3 标题下直接展开为连贯的正式叙述,不使用四级标题;覆盖本节标题对应的全部实质内容,不得重复章外内容。${Q}`,"【防复读硬约束】本节内同一句话只允许出现一次:同一段落内不得复读任何已写出的句子,不同段落之间不得整句复制,同一工艺/措施只在一处完整表述、其余位置引用结论不重述原文;段落结尾不得复读段内前句(禁止“为此/综上/因此”后接照抄句)。"].filter(Boolean).join("\n\n"),S=[],T=[],U=[],W=0,X="",Y="";for(let d=0;d<2;d+=1){let f=0===d?"":["【上一轮未通过质检】",S.length?`缺失 H4 要点标题:${S.join("、")}。必须逐点补齐以上 H4 标题并展开正式正文,H4 标题与给定标题完全一致。`:"",T.length?`重复展开的 H4 要点标题:${T.join("、")}。同一小节内相同要点被重复展开多轮,必须只保留一轮完整展开,其余重复小节连同标题整体删除,不得以换编号方式重复同一内容。`:"",U.length?`清单外标题(属于本章其他小节或不在本节要点清单内):${U.join("、")}。这些标题连同其正文整块删除,本节只允许输出上面清单中的 H4 标题与「${b.title}」H3 标题。`:"",0===S.length&&0===T.length&&0===U.length?"必须完整包含每个 H4 要点标题并展开正文,不得合并或遗漏要点。":"",X,Y,a.blueprintMustCiteHint?`【蓝图锁定数值检查】正文必须逐条出现以下蓝图锁定数值且与给定值完全一致:${a.blueprintMustCiteHint}。`:"",W>0?`当前输出仅 ${W} 字,距目标 ${b.targetWords} 字还缺 ${Math.max(0,b.targetWords-W)} 字,必须逐点展开到不少于 ${Math.floor(.9*b.targetWords)} 字。`:"总字数不少于目标字数。"].filter(Boolean).join("");try{let h=()=>D(a.template,L,s,a.missingFacts,a.promptTexts,a.projectContext,a.requirement,f?`${R}
|
|
99
99
|
|
|
100
|
-
${f}`:R,{forbidDrawingImages:a.forbidDrawingImages,compactProjectContext:a.compactProjectContext,scopedProjectContext:a.scopedProjectContext,chapterLevelContext:a.roleContext||"",minWords:b.targetWords,targetWords:b.targetWords,maxWords:Math.ceil(1.1*b.targetWords),maxTokens:Math.max(3200,Math.ceil(1.5*b.targetWords)),sharedFactLayerText:
|
|
100
|
+
${f}`:R,{forbidDrawingImages:a.forbidDrawingImages,compactProjectContext:a.compactProjectContext,scopedProjectContext:a.scopedProjectContext,chapterLevelContext:a.roleContext||"",minWords:b.targetWords,targetWords:b.targetWords,maxWords:Math.ceil(1.1*b.targetWords),maxTokens:Math.max(3200,Math.ceil(1.5*b.targetWords)),sharedFactLayerText:A,evidenceRankBoost:q,onlyRankBoosted:!0,skipT2Catalog:!0,evidenceFloorChars:1e3,evidenceCeilingChars:C,factCoverageContext:a.factCoverageContext||"",blueprintDataText:a.blueprintDataText,blueprintSliceText:a.blueprintSliceText,twoStep:!1,signal:a.signal,diagnostics:a.diagnostics}),l=a.diagnostics?await (0,k.X6)(a.diagnostics,`block-draft:${a.chapter.id}:${c}:a${d}`,h):await h();if(!l){console.error(`[gen][block-qc] 块写作返回空内容 attempt=${d}: ${b.title}(目标 ${b.targetWords} 字)`);continue}let n=l.replace(/^##\s+.+$/mu,"").trim(),o=(0,p.KJ)(i,n),r=/^###\s+\S+/mu.test(o)?o:`### ${b.title}
|
|
101
101
|
|
|
102
|
-
${o}`,t=[];if(v){let a=(0,p.I6)(r);a!==r&&(r=a);let b=(r.match(/^#{3,4}\s+(.+)$/gmu)||[]).map(a=>a.replace(/^#{3,4}\s+/u,""));t=
|
|
103
|
-
${s.map(a=>a.content).join("\n")}`,z=a.evidence.map(a=>a.content).join("\n"),
|
|
102
|
+
${o}`,t=[];if(v){let a=(0,p.I6)(r);a!==r&&(r=a);let b=(r.match(/^#{3,4}\s+(.+)$/gmu)||[]).map(a=>a.replace(/^#{3,4}\s+/u,""));t=H.filter(a=>!b.some(b=>(0,j.Sw)(b).includes((0,j.Sw)(a))))}let x=(0,e.V7)(r);W=x;let y=`${A}
|
|
103
|
+
${s.map(a=>a.content).join("\n")}`,z=a.evidence.map(a=>a.content).join("\n"),B=(0,g.I)(r,y,z);B.mismatched.length>0&&a.diagnostics&&(a.diagnostics.llm.lastInfo=`数值核验:${b.title} 发现 ${B.mismatched.length} 处疑似错误数值(${B.mismatched.map(a=>`${a.found}→${a.expected}`).join("、")})`),t.length>0&&t.length<=2&&console.error(`[gen][block-qc] 骨架小缺口豁免(交修复链兑底 ${t.length} 个): ${b.title}: ${t.join("、")}`);let E=t.length<=2?[]:t,F=r.split("\n").map(a=>(0,j.Sw)(a)).filter(Boolean),G=[...i.filter(a=>{let b=(0,j.Sw)(a);return!!b&&!F.some(a=>a.includes(b))}),...E.map(a=>`工作包小节:${a}`)],I=(0,j.W6)(r),J=(0,j.wx)(r,b.title,i,[...m],[...b.subPoints.flatMap(a=>a.sources),...H]),K=0===d&&B.mismatched.length>0,M=v&&!w?(0,u.V0)(c):void 0,N=M?(0,u.v_)(r):void 0,O=0===d&&void 0!==M&&void 0!==N&&N!==M;if(x>=Math.floor(.9*b.targetWords)&&0===G.length&&0===I.length&&0===J.length&&!K&&!O)return r;if(S=G,T=I,U=J,X=(0,g.n8)(B),Y=void 0!==M&&N!==M?`【上一轮工序表达形式不符】本块指定的工序顺序表达形式为「${M}」,上一轮正文${N?`使用了「${N}」形式`:"未见明确的工序顺序表达"}。必须改用「${M}」形式重写工序顺序表达,内容与数值保持不变。`:"",0===G.length){let c=(0,j.dY)((0,j.wq)(r),b.title,i,[...b.subPoints.flatMap(a=>a.sources)]),d=(0,e.V7)(c);if(d>=Math.floor(.9*b.targetWords))return a.diagnostics&&(J.length>0||I.length>0)&&(a.diagnostics.llm.lastInfo=`块标题层已确定性修复:${b.title}(清单外 ${J.length} 个、重复 H4 ${I.length} 个;${x}→${d} 字)`),c}a.diagnostics&&(a.diagnostics.llm.lastError=`规划块质检未达标:${b.title}(${x} 字,缺 ${G.join("、")||"无"}${I.length?`,重复 H4 ${I.join("、")}`:""}${J.length?`,清单外 ${J.slice(0,5).join("、")}${J.length>5?" 等":""}`:""})`),console.error(`[gen][block-qc] 块质检不达标 attempt=${d}: ${b.title}(目标 ${b.targetWords} 字,实际 ${x} 字,缺 ${G.join("、")||"无"},重复 ${I.join("、")||"无"},清单外 ${J.join("、")||"无"},keySection=${v||"none"})`)}catch(b){a.diagnostics&&(a.diagnostics.llm.lastError=b instanceof Error?b.message:String(b))}}if(b.subPoints.length>=4||b.subPoints.length>=2&&b.targetWords>2400){let d=Math.ceil(b.subPoints.length/2),e=Math.max(800,Math.floor(b.targetWords/2)),f=[{...b,subPoints:b.subPoints.slice(0,d),targetWords:e},{...b,subPoints:b.subPoints.slice(d),targetWords:e}],g=await Promise.all(f.map(a=>F(a,c)));if(g.every(a=>!!a))return n(g[0],g[1],b.title);let h=async(b,c)=>{if(g[c])return g[c];let d=Math.max(600,Math.floor(b.targetWords/Math.max(1,b.subPoints.length))),e=Math.max(1,Math.max(1,Math.min(3,2,b.subPoints.length))),f=await Promise.all(b.subPoints.map(b=>V({template:a.template,chapter:a.chapter,sectionTitle:b.title,evidence:a.evidence,missingFacts:a.missingFacts,promptTexts:a.promptTexts,projectContext:a.projectContext,requirement:a.requirement,roleContext:a.roleContext||"",targetWords:d,forbidDrawingImages:a.forbidDrawingImages,factCoverageContext:a.factCoverageContext,compactProjectContext:a.compactProjectContext,scopedProjectContext:a.scopedProjectContext,blueprintDataText:a.blueprintDataText,blueprintSliceText:a.blueprintSliceText,signal:a.signal,diagnostics:a.diagnostics},e)));if(!f.every(Boolean))return;let h=f.map((a,c)=>{let d=(a||"").replace(/^###\s+.+$/mu,"").trim();return`#### ${b.subPoints[c].title}
|
|
104
104
|
|
|
105
105
|
${d}`});return`### ${b.title}
|
|
106
106
|
|
|
107
|
-
${h.join("\n\n")}`},i=[await h(f[0],0),await h(f[1],1)];if(i.every(a=>!!a))return n(i[0],i[1],b.title);a.diagnostics&&(a.diagnostics.llm.lastError=`规划块拆半后仍未成稿:${b.title}`),console.error(`[gen][block-qc] 拆半后仍未成稿: ${b.title}(一半=${i[0]?"成稿":"失败"},二半=${i[1]?"成稿":"失败"},目标 ${b.targetWords} 字,要点 ${b.subPoints.length} 个)`)}},
|
|
107
|
+
${h.join("\n\n")}`},i=[await h(f[0],0),await h(f[1],1)];if(i.every(a=>!!a))return n(i[0],i[1],b.title);a.diagnostics&&(a.diagnostics.llm.lastError=`规划块拆半后仍未成稿:${b.title}`),console.error(`[gen][block-qc] 拆半后仍未成稿: ${b.title}(一半=${i[0]?"成稿":"失败"},二半=${i[1]?"成稿":"失败"},目标 ${b.targetWords} 字,要点 ${b.subPoints.length} 个)`)}},G=async(b,c)=>{x[c]=await F(b,c),x[c]&&a.onSectionProgress?.({completed:x.filter(Boolean).length,total:d.length,sectionTitle:b.title,phase:"complete",partialSections:[...x]})};d.length>0&&((0,j.Te)(a.signal),await G(d[0],0));for(let b=1;b<d.length;b+=w){(0,j.Te)(a.signal);let c=d.slice(b,b+w);await Promise.all(c.map((a,c)=>G(a,b+c)))}if(x.every(a=>!a))return;let H=d.map((a,b)=>({index:b,block:a})).filter(({index:a})=>!x[a]),I=[];for(let a=0;a<d.length;a+=1){let b=x[a];if(!b){c=void 0;continue}let e=(0,j.Sw)(d[a].title);c===e&&I.length>0?I[I.length-1]=`${I[I.length-1]}
|
|
108
108
|
|
|
109
|
-
${l(b,e)}`:
|
|
109
|
+
${l(b,e)}`:I.push(b),c=e}let J=(0,h.kT)((0,h.FD)(`## ${a.chapter.title}
|
|
110
110
|
|
|
111
|
-
${
|
|
111
|
+
${I.join("\n\n")}`,a.forbidDrawingImages));return 0===H.length?{sections:x,failedBlocks:H,allSucceeded:!0,markdown:J}:(a.diagnostics&&H.length>0&&(a.diagnostics.llm.lastError=`规划块部分失败:${H.map(({block:a})=>a.title).join("、")}`),{sections:x,failedBlocks:H,allSucceeded:!1,markdown:J})}},37095:(a,b,c)=>{c.d(b,{CU:()=>t,H7:()=>s,JB:()=>p,Qf:()=>n,kW:()=>q,oy:()=>o,sn:()=>r});var d=c(29021),e=c(21820),f=c(33873),g=c(19898);function h(a){return f.join(e.homedir(),".customize-agent","projects",(0,g.computeProjectId)(a),"kb-operations.jsonl")}function i(a,b){let c=h(a);d.mkdirSync(f.dirname(c),{recursive:!0});let e=`${c}.${process.pid}.${Date.now()}.tmp`;d.writeFileSync(e,`${b.slice(-200).map(a=>JSON.stringify(a)).join("\n")}
|
|
112
112
|
`,"utf8"),d.renameSync(e,c);let g=k.get(a);g&&(g.mtimeMs=l(c))}let j=Math.round(Date.now()-1e3*process.uptime()),k=new Map;function l(a){try{return d.statSync(a).mtimeMs}catch{return 0}}function m(a){let b=h(a),c=l(b),e=k.get(a);if(e&&e.mtimeMs===c)return e.records;let f=function(a){let b=function(a){let b=h(a);return d.existsSync(b)?d.readFileSync(b,"utf8").split("\n").filter(Boolean).flatMap(a=>{try{return[JSON.parse(a)]}catch{return[]}}):[]}(a),c=b.filter(a=>"processing"===a.status&&a.updatedAt<j);if(c.length>0){let d=Date.now();for(let a of c)a.status="error",a.stage="error",a.error="服务重启导致任务中断,未完成",a.message=a.error,a.updatedAt=d;i(a,b)}return b}(a);return k.set(a,{mtimeMs:l(b),records:f}),f}function n(a,b){let c=Date.now(),d=m(a),e=d.findIndex(a=>a.id===b.id),f=e>=0?d[e]:void 0,g={id:b.id,type:b.type,title:b.title,stage:b.stage??f?.stage??"uploading",status:b.status??f?.status??"processing",message:b.message??f?.message??"",percent:b.percent??f?.percent??0,fileName:b.fileName??f?.fileName,filePath:b.filePath??f?.filePath,chunkCount:b.chunkCount??f?.chunkCount,textLength:b.textLength??f?.textLength,extractionMode:b.extractionMode??f?.extractionMode,error:b.status&&"error"!==b.status?void 0:b.error??f?.error,details:b.details??f?.details,createdAt:f?.createdAt??c,updatedAt:c};return e>=0?d[e]=g:d.push(g),i(a,d),g}function o(a,b=50){return m(a).sort((a,b)=>b.updatedAt-a.updatedAt).slice(0,b)}function p(a,b){return m(a).find(a=>a.id===b)}function q(a,b){return m(a).filter(a=>!b||a.type===b).sort((a,b)=>b.updatedAt-a.updatedAt)[0]}function r(a){return m(a).filter(a=>"processing"===a.status).sort((a,b)=>b.updatedAt-a.updatedAt)}function s(a){let b=m(a),c=h(a);return d.existsSync(c)&&d.unlinkSync(c),k.delete(a),b.length}function t(a,b){let c=m(a),d=c.findIndex(a=>a.id===b);return!(d<0)&&(c.splice(d,1),i(a,c),!0)}},40693:(a,b,c)=>{c.d(b,{Av:()=>v,CS:()=>y,Fw:()=>q,Hl:()=>r,Ls:()=>p,b7:()=>w,db:()=>t,iX:()=>s,jW:()=>C,l5:()=>D}),c(29055);var d=c(3063),e=c(22157),f=c(41991);let g=["精心组织","科学管理","精益求精","全力保障","高效推进","力争一流","最大限度","显著提升","大力落实","充分确保","严格把控"],h=RegExp(g.join("|"),"u"),i=["精心组织科学管理确保工程质量","严格把控质量安全进度各项指标","最大限度提升项目管理水平","全力保障项目顺利推进","大力落实各项管理措施"],j=["精心组织劳动力分批进场并登记交底","每道工序完成后实测实量并记录数据","混凝土浇筑后每天洒水养护不少于两次"];async function k(a){return(0,f.A)({prototypes:[...i],negativePrototypes:[...j],lexicalHints:h,embedDocuments:a})}let l=[{pattern:/质量|验收|隐蔽|样板|通病/u,label:"质量闭环",required:["自检","互检","交接检","整改","复查","归档"],prompt:"质量类内容必须形成“自检—互检—交接检—整改—复查—资料归档”闭环。"},{pattern:/安全|风险|危大|临电|消防|吊装|高处/u,label:"安全闭环",required:["辨识","交底","检查","整改","复查","销项"],prompt:"安全类内容必须形成“风险辨识—专项交底—现场检查—隐患整改—复查销项”闭环。"},{pattern:/进度|工期|节点|计划/u,label:"进度闭环",required:["计划","检查","偏差","纠偏","复核"],prompt:"进度类内容必须形成“计划分解—日/周检查—偏差识别—资源纠偏—节点复核”闭环。"},{pattern:/文明|扬尘|噪声|绿色|环保|垃圾/u,label:"环保闭环",required:["监测","预警","处置","台账"],prompt:"文明环保类内容必须形成“监测—预警—联动处置—台账记录”闭环。"},{pattern:/工资|劳务|实名/u,label:"工资闭环",required:["实名","考勤","核算","公示","代发","归档"],prompt:"工资保障类内容必须形成“实名登记—考勤—核算—公示—银行代发—归档”闭环。"},{pattern:/应急|预案|救援|事故/u,label:"应急闭环",required:["发现","警戒","疏散","处置","上报","复盘"],prompt:"应急类内容必须形成“发现险情—警戒疏散—初期处置—救援上报—复盘整改”闭环。"}],m={building:{label:"房建工程",chain:["施工准备","土方/基础","主体结构","二次结构","防水","机电安装","装饰装修","室外工程","竣工验收"],forbidden:["管道闭水试验","沥青摊铺","水稳层","交通导改"],prompt:"房建类章节应按“施工准备—基础—主体—二次结构—防水—机电—装饰—室外—验收”组织,不得混入市政道路工序。"},municipal:{label:"市政工程",chain:["测量放线","管线探测","围挡导行","沟槽/路基","管道/结构","回填","水稳/沥青/铺装","标线设施","验收移交"],forbidden:["主体结构","二次结构","塔吊","外脚手架","屋面防水"],prompt:"市政类章节应按“测量放线—管线探测—围挡导行—沟槽/路基—管道/结构—回填—路面恢复—验收移交”组织,不得写成房建主体结构逻辑。"},renovation:{label:"老旧小区改造",chain:["居民沟通","分区施工","既有保护","外墙/屋面/管网改造","扰民控制","竣工恢复"],forbidden:["大面积深基坑","高支模","大体量主体结构","长距离交通导改"],prompt:"老旧小区改造类章节必须体现“居民沟通—分区施工—既有保护—改造作业—扰民控制—竣工恢复”,不得忽略居民通行和既有设施保护。"},decoration:{label:"装饰装修工程",chain:["基层处理","防水闭水","吊顶龙骨","墙地面铺装","细部收口","成品保护","空气质量验收"],forbidden:["深基坑","路基压实","水稳层","沥青摊铺","大体量土方"],prompt:"装饰装修类章节应按“基层处理—防水闭水—吊顶墙面—地面铺装—细部收口—成品保护—空气质量验收”组织,不得混入基坑、路基等无关内容。"}},n=[{title:"招标评分项响应索引",pattern:/技术标|施工组织设计|评分|响应/u,prompt:"设置招标评分项响应索引,逐项对应章节、响应内容和位置。"},{title:"主要工程量一览表",pattern:/工程量|清单|土方|钢筋|混凝土|管道|路面/u,prompt:"将主要工程量表格化,关联资源配置和进度节点。"},{title:"影像资料留存",pattern:/隐蔽|危大|整改|验收|样板/u,prompt:"隐蔽、危大、材料验收、样板和整改前后对比必须留存影像资料。"},{title:"变更签证管理",pattern:/改造|市政|工期紧|变更|签证/u,prompt:"改造、市政或工期紧项目应补充变更识别、技术核定、签证资料和影响跟踪。"},{title:"危险品专项管理",pattern:/装修|装饰|动火|油漆|稀释剂|氧气|乙炔/u,prompt:"涉及动火、油漆、稀释剂、氧气乙炔时应补充危险品分区存放与动火审批。"},{title:"材料损耗与周转控制",pattern:/钢筋|模板|周转|材料|大体量/u,prompt:"体量大或材料占比高时应补充钢筋翻样、模板周转、余料回收和限额领料。"},{title:"分户验收",pattern:/住宅|住户|交付|分户/u,prompt:"住宅项目应补充分户实测、问题清单、整改销项和交付资料。"}];function o(a){return a.replace(/\s+/gu,"").toLowerCase()}function p(a){let b=`${a.title} ${(a.sections||[]).join(" ")}`;return/施工组织设计|施工组织|施组|技术标|施工方案|质量|安全|文明施工/u.test(b)?["【施工组织设计专项写作规则】","- 禁止空话套话:不要只写“加强管理、严格控制、确保质量、精心组织、科学管理”,必须写成“责任岗位+执行动作+量化标准+检查频次+整改时限+复查销项”。","- 每项措施至少包含责任主体、执行标准、检查频次、整改闭环;项目特有数据必须来自资料或图谱。",...l.filter(a=>a.pattern.test(b)).map(a=>`- ${a.prompt}`),...n.filter(a=>a.pattern.test(b)).map(a=>`- 高分补充:${a.prompt}`)].join("\n"):""}async function q(a,b){let c=[],d=await k(b);for(let b of a){let a=b.content.split(/[。;;\n]/u).map(a=>a.trim()).filter(a=>a.length>=8);if(0===a.length)continue;let e=await d(a),f=new Set;a.forEach((a,b)=>{if(e[b])for(let b of g)a.includes(b)&&f.add(b)}),f.size>0&&c.push({level:"warning",message:`${b.title} 存在施工组织设计空泛套话:${[...f].slice(0,8).join("、")}`,suggestion:"请按“责任岗位+执行动作+量化标准+检查频次+整改时限+复查销项”重写相关措施。"})}return c}function r(a){let b=[];for(let c of a){let a=`${c.title} ${(c.sections||[]).join(" ")}`;for(let d of l){if(!d.pattern.test(a))continue;let e=d.required.filter(a=>!c.content.includes(a));e.length>=Math.ceil(d.required.length/2)&&b.push({level:"warning",message:`${c.title} 缺少${d.label}关键链条:${e.join("、")}`,suggestion:d.prompt})}}return b}function s(a){let b=o(`${a.markdown} ${a.factsModel.project.map(a=>a.value).join(" ")} ${a.factsModel.preciseFacts.map(a=>a.value).join(" ")}`),c=[];for(let d of Object.values(m)){let e=d.chain.filter(a=>b.includes(o(a)));if(!(RegExp(d.label,"u").test(a.markdown)||e.length>=3))continue;let f=d.forbidden.filter(a=>b.includes(o(a)));f.length>=2&&c.push({level:"warning",message:`疑似${d.label}内容混入不匹配工序:${f.join("、")}`,suggestion:d.prompt}),e.length<Math.min(3,d.chain.length)&&c.push({level:"warning",message:`${d.label}工序链覆盖不足:仅识别到 ${e.join("、")||"未识别到关键工序"}`,suggestion:d.prompt})}return c}function t(a){let b=`${a.title} ${(a.sections||[]).join(" ")} ${(a.queries||[]).join(" ")}`,c=n.filter(a=>a.pattern.test(b));return 0===c.length?"":["【隐藏高分模块触发】",...c.map(a=>`- ${a.title}:${a.prompt}`)].join("\n")}function u(a){let b=a.split("\n"),c=b.findIndex(a=>/^#{3,4}\s+(?:\d+(?:\.\d+)*\s+)?(?:项目主要施工\s*内容|主要施工\s*内容)\s*$/u.test(a.trim()));if(c<0){let a=b.findIndex(a=>/^###\s+(?:\d+(?:\.\d+)*\s+)?[^\n]*主要施工\s*内容[^\n]*$/u.test(a.trim()));if(a>=0){let d=b.length;for(let c=a+1;c<b.length;c+=1)if(/^#{2,3}\s+/u.test(b[c].trim())){d=c;break}let f=b.slice(a,d).join("\n").split(/^####\s+/gmu).slice(1).map(a=>a.trim()).filter(Boolean);f.length>=5&&f.every(e.Jb)&&(c=a)}if(c<0)return""}let d=b.length;for(let a=c+1;a<b.length;a+=1)if(/^#{2,3}\s+/u.test(b[a].trim())){d=a;break}return b.slice(c,d).join("\n").replace(/^\*\*([^*\n]{2,50})\*\*\s*$/gmu,"#### $1").replace(/承包人法(?=[::])/gu,"施工方法")}function v(a,b=""){let c=[],d=b||a.map(a=>`${a.title}
|
|
113
113
|
${(a.sections||[]).join("\n")}
|
|
114
114
|
${a.content}`).join("\n\n"),f=a.filter(a=>/项目主要施工内容|主要施工内容/u.test(`${a.title} ${(a.sections||[]).join(" ")}`)),g=/施工组织设计|施工组织|计划工期|质量标准|项目经理|工程概况/u.test(d)&&/施工/u.test(d),h=(a,b)=>{let d=b.replace(/^####\s+(?:\d+(?:\.\d+)*\s+)?(?:项目主要施工\s*内容|主要施工\s*内容)\s*\n+/mu,""),f=(d.match(/^####\s+(?:\d+(?:\.\d+)*\s+)?[一二三四五六七八九十\d]*[、..]?\s*\S+/gmu)||[]).length||(d.match(/^[一二三四五六七八九十]+、\S+/gmu)||[]).length,g=d.split(/^####\s+/gmu).slice(1).map(a=>a.trim()).filter(Boolean),h=g.filter(a=>!(0,e.Jb)(a)),i=g.filter(a=>/资料内容事实|#{2,6}\s+|\*\*[^*]+\*\*|未尽事宜|专业施工内容统筹|招标范围还包含|具备有效的.*资质/u.test(a)),j=g.filter(a=>{if(!/施工方法[::]/u.test(a))return!1;let b=a.match(/施工方法[::]([\s\S]*?)(?=\n施工|$)/u)?.[1]||"";return b.length<30||(b.match(/工程|维修|改造|安装|设备/gu)||[]).length>=4&&!/\d|㎡|m2|m²|mm|厚|验收|检测|调试|试验|复试|记录|报告/u.test(b)}),k=g.filter(a=>{let b=a.match(/施工流程[::]([\s\S]*?)(?=\n施工方法|$)/u)?.[1]||"";return/未尽事宜|本项目为|总建筑面积|保留现状|专业施工内容统筹|招标文件列明|招标范围/u.test(b)}),l=g.map(a=>(a.split("\n")[0]||"").replace(/^\d+(?:\.\d+)*\s+/u,"").replace(/工程$/u,"").replace(/[、..]/gu,"").trim()),m=[...new Set(l.filter((a,b)=>a&&l.indexOf(a)!==b))];m.length>0&&c.push({level:"error",severity:"blocker",message:`${a} 主要施工内容存在 ${m.length} 组重复专业工程小节:${m.slice(0,5).join("、")}`,suggestion:"同一专业工程只保留一个小节,将重复小节的独有内容合并后删除冗余小节,避免专业工程重复铺陈。"}),f<5&&c.push({level:"error",severity:"blocker",message:`${a} 主要施工内容专业工程不足:当前 ${f} 个,要求不少于 5 个`,suggestion:"按资料识别专业工程/分部分项工程逐项展开,每项覆盖作业对象与工程量、工序顺序、施工方法三方面要素(融入连贯叙述,不得以结构标签充当小节标题或段落开头引导)。"}),h.length>0&&c.push({level:"error",severity:"blocker",message:`${a} 主要施工内容存在 ${h.length} 个专业工程内容要素不全(作业对象与工程量/工序顺序/施工方法至少缺一)`,suggestion:"每个专业工程需覆盖作业对象与工程量、工序安排、施工方法三方面要素,融入连贯段落叙述(禁止以“施工概况/施工流程/施工方法”等结构标签充当标题或段落开头引导)。"});let n=g.filter(a=>/按设计图纸执行|按设计文件执行|详见设计图纸|按.{0,10}设计总说明执行|详见图纸|以设计图纸为准|按设计确定/u.test(a));n.length>0&&c.push({level:"error",severity:"blocker",message:`${a} 主要施工内容存在 ${n.length} 个工作包正文含“按设计图纸执行”式概括话术`,suggestion:"工作包正文必须落到具体数值与参数:工程量、材料规格、设备型号等数量类数值优先取工程量清单数据,清单未覆盖的参数(标高、坡率、构造做法)取图纸具体数值;禁止“按设计图纸执行/详见设计图纸/按设计文件确定”式留白。"}),i.length>0&&c.push({level:"error",severity:"blocker",message:`${a} 主要施工内容存在脏事实或标题污染`,suggestion:"清理“资料内容事实”、嵌入的 ### 标题、粗体伪标题、未尽事宜、招标范围罗列等污染内容,只保留可交付正文。"}),j.length>0&&c.push({level:"error",severity:"blocker",message:`${a} 主要施工内容存在 ${j.length} 个专业工程施工方法过弱`,suggestion:"施工方法不能只是专业工程名称或专业范围罗列,必须写资料已确认的工程量、材料、检测、调试、验收或记录要求。"}),k.length>0&&c.push({level:"error",severity:"blocker",message:`${a} 主要施工内容存在 ${k.length} 个专业工程流程污染`,suggestion:"施工流程只能写工序链条,不能混入项目概况、总建筑面积、招标范围、未尽事宜等说明性事实。"}),(0,e.Z1)(b)||c.push({level:"error",severity:"blocker",message:`${a} 主要施工内容缺少工序顺序表达`,suggestion:"施工流程须有明确的工序顺序表达,形式按专业工程序号轮换使用(顺序词叙述(先测量放线,再基层处理,随后工序实施,然后检查验收,最后资料归档)、编号步骤、有序列表、箭头链),禁止相邻专业工程同一形式、禁止通篇同一形式。"});let o=(b.match(/\d+(?:\.\d+)?\s*(?:㎡|m²|mm|cm|m|MPa|kPa|%|日历天|层|台|套|个|项|批|次|小时|年)/giu)||[]).length,p=(b.match(/工程量|材料|设备|范围|流程|验收|检测|复试|调试|隐蔽|检验批|资料|记录|系统|部位|接口|规格|标准/gu)||[]).length;(o<2||p<12)&&c.push({level:"error",severity:"blocker",message:`${a} 主要施工内容事实细度不足:参数 ${o} 项、事实细节 ${p} 项`,suggestion:"主要施工内容必须落到资料已确认的范围、工程量/材料、流程、验收和记录要求;资料未明确的工具、型号、参数不得编造。"});let q=b.split(/\r?\n/u).filter(a=>/^\s*\|.+\|\s*$/u.test(a.trim())),r=b.split(/\r?\n/u).filter(a=>!/^\s*\|.+\|\s*$/u.test(a.trim())).join("").replace(/[\s#*_`>-]/gu,"").length;q.length>=3&&r<50&&c.push({level:"error",severity:"blocker",message:`${a} 主要施工内容不应使用 Markdown 表格替代专业工程正文`,suggestion:"主要施工内容应采用三级小节和段落式专业工程写法,不使用表格承载主体内容。"})};if(0===f.length&&g){let a=u(d);return a?(h("全文",a),c):[{level:"error",severity:"blocker",message:"施工组织设计缺少“项目主要施工内容”小节",suggestion:"必须生成“### 项目主要施工内容”,并在该小节内部使用“#### 专业工程名称”逐项展开。"}]}for(let a of f){let b=u(a.content)||u(d);if(!b){c.push({level:"error",severity:"blocker",message:`${a.title} 主要施工内容小节缺失或标题结构异常`,suggestion:"必须生成“### 项目主要施工内容”,并在该小节内部使用“#### 专业工程名称”逐项展开。"});continue}h(a.title,b)}return c}function w(a){let b=[];for(let c of a){let a=`${c.title} ${(c.sections||[]).join(" ")} ${c.content}`;for(let d of n)d.pattern.test(a)&&!c.content.includes(d.title)&&b.push({level:"info",message:`${c.title} 可补充隐藏高分模块:${d.title}`,suggestion:d.prompt})}return b}function x(a){let b=a.split("\n"),c=b.findIndex(a=>/^#{3,4}\s+(?:\d+(?:\.\d+)*\s+)?[^\n]*?(?:主要分部分项(?:工程)?施工方案|主要施工方法)[^\n]*$/u.test(a.trim()));if(c>=0){let a=b.length;for(let d=c+1;d<b.length;d+=1)if(/^#{2,3}\s+/u.test(b[d].trim())){a=d;break}return b.slice(c+1,a).join("\n")}let d=b.findIndex(a=>{let b=a.trim();return!(!/^##\s+/u.test(b)||/主要分部分项(?:工程)?施工方案/u.test(b))&&/^##\s+(?:\d+(?:\.\d+)*\s+)?[^\n]*?主要施工方法[^\n]*$/u.test(b)});if(d>=0){let a=b.length;for(let c=d+1;c<b.length;c+=1)if(/^##\s+/u.test(b[c].trim())){a=c;break}let c=b.slice(d+1,a).join("\n");return/^#{3,4}\s+/mu.test(c)?c:""}return/^#{3,4}\s+/mu.test(a)?a.trim():""}function y(a,b=""){let c=[],f=b||a.map(a=>`${a.title}
|
|
115
115
|
${(a.sections||[]).join("\n")}
|
|
116
116
|
${a.content}`).join("\n\n"),g=a.filter(a=>d.gG.test(`${a.title} ${(a.sections||[]).join(" ")}`)),h=(a,b)=>{let f=b.split(/^####\s+/gmu).slice(1).map(a=>a.trim()).filter(Boolean);0===f.length&&(f=[...b.matchAll(/^\*\*[^*]+\*\*[\s\S]*?(?=^\*\*[^*]+\*\*|\s*$)/gmu)].map(a=>a[0].trim()).filter(Boolean)),0===f.length&&(f=b.split(/^###\s+/gmu).slice(1).map(a=>a.trim()).filter(Boolean));let g=f.length,h=f.filter(a=>{let b=/(?:施工)?(?:概况|范围)[::]\s*\S|工程量|作业对象|部位/u.test(a),c=d.fM.test(a)||(0,e.Z1)(a),f=/(?:施工)?方法[::]\s*\S|工艺参数|验收标准|检测|试验|记录/u.test(a);return!b||!c||!f}),i=f.filter(a=>/资料内容事实|#{2,6}\s+|\*\*[^*]+\*\*|未尽事宜|按规范施工|结合实际执行|招标范围还包含/u.test(a)),j=f.filter(a=>{let b=a.match(/(?:\*\*)?施工方法(?:\*\*)?[::]([\s\S]*?)(?=\n施工|$)/u)?.[1]||"";if(b.trim()&&(0,e.Z1)(b))return!1;let c=a.match(/(?:\*\*)?(?:施工流程|工艺流程)(?:\*\*)?[::]([\s\S]*?)(?=\n(?:施工|工艺)|$)/u)?.[1]||"";return!(0,e.Z1)(c)}),k=/\d+(?:\.\d+)?\s*(?:㎡|m²|m2|m3|m³|mm|cm|m|MPa|kPa|%|日历天|天|小时|层|台|套|个|次|kN|t|N|颗|樘|扇)/giu,l=/(?:间距|偏差|坡度|养护|搭接|试验压力|含水率|饱满度|压实度|厚度|饱满)[^\n]{0,10}\d/giu,m=f.filter(a=>(a.match(k)||[]).length+(a.match(l)||[]).length<d.Ck.minParamsPerPackage);g<d.Ck.blockerMinPackages?c.push({level:"error",severity:"blocker",message:`${a} 分部分项工程施工方案分项不足:当前 ${g} 个,要求不少于 ${d.Ck.blockerMinPackages} 个`,suggestion:"按资料识别的专业工程/分部分项工程逐项展开,每项覆盖作业对象与工程量、工序顺序、施工方法三方面要素(融入连贯叙述,不得以结构标签充当标题或段落开头引导)。"}):g<d.Ck.minPackages&&c.push({level:"warning",message:`${a} 分部分项工程施工方案建议扩充:当前 ${g} 个分项方案,建议不少于 ${d.Ck.minPackages} 个`,suggestion:"优先覆盖资料明确的专业工程范围(土方、基础、主体、装饰、安装、室外等)。"}),h.length>0&&c.push({level:"error",severity:"blocker",message:`${a} 分部分项工程施工方案存在 ${h.length} 个分项方案内容要素不全(作业对象与工程量/工序顺序/施工方法至少缺一)`,suggestion:"每个分项方案需覆盖作业对象与工程量、工序安排、施工方法三方面要素,融入连贯段落叙述(禁止以“施工概况/工艺流程/施工方法”等结构标签充当标题或段落开头引导)。"});let n=f.filter(a=>/按设计图纸执行|按设计文件执行|详见设计图纸|按.{0,10}设计总说明执行|详见图纸|以设计图纸为准|按设计确定/u.test(a));n.length>0&&c.push({level:"error",severity:"blocker",message:`${a} 分部分项工程施工方案存在 ${n.length} 个分项方案正文含“按设计图纸执行”式概括话术`,suggestion:"分项方案正文必须落到具体数值与参数:工程量、材料规格、设备型号等数量类数值优先取工程量清单数据,清单未覆盖的参数取图纸具体数值;禁止“按设计图纸执行/详见设计图纸/按设计文件确定”式留白。"}),i.length>0&&c.push({level:"error",severity:"blocker",message:`${a} 分部分项工程施工方案存在脏事实或空话污染`,suggestion:"清理“资料内容事实”、嵌入的 ### 标题、粗体伪标题、未尽事宜、“按规范施工/结合实际执行”式空话,只保留可交付正文。"}),j.length>0&&c.push({level:"error",severity:"blocker",message:`${a} 分部分项工程施工方案存在 ${j.length} 个分项方案施工方法缺少工序顺序表达`,suggestion:"每个分项方案的施工方法段/施工流程段必须有明确的工序顺序表达,形式按分项序号轮换使用(顺序词叙述、编号步骤、有序列表、箭头链,如“先进行基层清理,再放线定位,随后分层摊铺,然后碾压,最后做压实度检测并验收”),禁止相邻分项同一形式,保证工序先后顺序清晰。"}),m.length>0&&c.push({level:"error",severity:"blocker",message:`${a} 分部分项工程施工方案存在 ${m.length} 个分项方案工艺参数不足(少于 ${d.Ck.minParamsPerPackage} 个)`,suggestion:"每个分项方案必须落位至少 4 个具体工艺参数(mm、MPa、间距、偏差、坡度、养护天数、试验压力、搭接长度等),参数来自绑定材料或行业通用规范值,不得编造。"});let o=f.filter(a=>a.replace(/\s/gu,"").length<d.Ck.minPackageChars);o.length>0&&c.push({level:"error",severity:"blocker",message:`${a} 分部分项工程施工方案存在 ${o.length} 个分项方案正文过短(少于 ${d.Ck.minPackageChars} 字)`,suggestion:"每个分项方案都要写足作业对象与工程量、工序安排、施工方法三方面要素,门窗维修、立面修补等小分项同样需要展开,不得一句话带过。"});let p=f.map(a=>a.replace(/\s/gu,"").length);p.length>1&&Math.min(...p)>0&&Math.min(...p)<Math.max(...p)*d.Ck.balanceRatio&&c.push({level:"warning",message:`${a} 分部分项工程施工方案分项深度失衡:最短分项不足最长分项三分之一`,suggestion:"参照最长分项(如拆除、结构加固)的展开深度,为偏短分项补足机具、材料规格、工艺参数与验收标准。"})};if(0===g.length){let a=x(f);return a&&h("全文",a),c}for(let a of g){let b=x(/^##\s+/mu.test(a.content)?a.content:`## ${a.title}
|
|
117
|
-
${a.content}`);if(!b){c.push({level:"error",severity:"blocker",message:`${a.title} 分部分项工程施工方案小节缺失或标题结构异常`,suggestion:"主要施工方法章下必须逐项展开分项工程方案:既可用「### 主要分部分项工程施工方案」包装后在内部使用「#### 分项工程方案」,也可章下 H3 小节直接承载各分项方案。"});continue}h(a.title,b)}return c}let z=/^####\s+(?:\d+(?:\.\d+)*\s+)?(?:施工概况|施工流程|施工方法|工艺流程)(?:[::]|\s*$)/u;function A(a){let b=[];return a.scope||b.push("作业对象与工程量"),a.process||b.push("工序顺序"),a.method||b.push("施工方法"),b.join("、")}function B(a){let b=a.split(/\r?\n/u),c=[],e=(a,c)=>{for(let d=a;d<b.length;d+=1){let a=/^(#{1,6})\s+/u.exec(b[d].trim());if(a&&a[1].length<=c)return d}return b.length};for(let a=0;a<b.length;a+=1){let f=/^##\s+(.+)$/u.exec(b[a].trim());if(f){let g=f[1].trim();if(!d.Yp.test(g)&&!d.gG.test(g))continue;let h=e(a+1,2),i=b.slice(a+1,h),j=i.map((a,b)=>({line:a.trim(),offset:b})).filter(a=>/^###\s+/u.test(a.line));if(0===j.length){c.push({title:g,bodyLines:i});continue}for(let a=0;a<j.length;a+=1){let b=j[a].offset,d=a+1<j.length?j[a+1].offset:i.length;c.push({title:j[a].line.replace(/^###\s+/u,""),bodyLines:i.slice(b+1,d)})}continue}let g=/^###\s+(.+)$/u.exec(b[a].trim());if(g){let f=g[1].trim();if(!d.Yp.test(f)&&!d.gG.test(f))continue;let h=e(a+1,3);c.push({title:f,bodyLines:b.slice(a+1,h)})}}return c}function C(a){let b=[],c=(a,c,d)=>{let e=d.includes("作业对象")?"作业对象与工程量(本项目部位、规模/工程量、系统边界,工程量取工程量清单汇总值)":"",f=d.includes("工序")?"工序顺序(先后清晰,至少 1 处不少于 4 个环节的工序顺序表达)":"",g=d.includes("施工方法")?"施工方法(工具机具、工艺参数、验收闭环)":"";b.push({level:"error",severity:"blocker",message:c?`「${a}」${c}专业工程块缺少三要素:${d}`:`「${a}」小节缺少三要素:${d}`,suggestion:`请在「${c||a}」补写缺失要素:${[e,f,g].filter(Boolean).join(";")}。要素融入连贯段落叙述,禁止以“施工概况/施工流程/施工方法”等结构标签充当标题或段落开头引导。`})};for(let b of B(a)){let a=b.bodyLines.map((a,b)=>({line:a.trim(),offset:b})).filter(a=>/^####\s+/u.test(a.line));if(0===a.length||a.every(a=>z.test(a.line))){let a=A((0,e.se)(b.bodyLines.join("\n")));a&&c(b.title,"",a);continue}for(let d=0;d<a.length;d+=1){let f=a[d].offset,g=d+1<a.length?a[d+1].offset:b.bodyLines.length;if(z.test(a[d].line))continue;let h=a[d].line.replace(/^####\s+(?:\d+(?:\.\d+)*\s+)?/u,"").replace(/[::]\s*$/u,""),i=b.bodyLines.slice(f,g).join("\n"),j=A((0,e.se)(i));j&&c(b.title,h,j)}}return b}function D(a){let b=[];for(let c of B(a)){let a=c.bodyLines.join("\n");if(!a.trim())continue;let d=a.split(/\r?\n/u).filter(a=>/^\s*\|.+\|\s*$/u.test(a.trim())),e=a.split(/\r?\n/u).filter(a=>!/^\s*\|.+\|\s*$/u.test(a.trim())).join("").replace(/[\s#*_`>-]/gu,"").length;d.length>=3&&e<50&&b.push({level:"error",severity:"blocker",message:`「${c.title}」小节不应使用 Markdown 表格承载专业工程正文`,suggestion:"主要施工内容/主要施工方法应采用三级小节与段落式专业工程写法:每个专业工程一个 #### 小节,覆盖作业对象与工程量、工序顺序、施工方法三方面要素;表格数据改写成连贯叙述。"});let f=[...new Set((a.match(/[^\n]{0,18}(?:分部小计|本页小计|按实|暂估|综合单价|规费|税金)[^\n]{0,18}/gu)||[]).map(a=>a.trim()))],g=[...new Set([...f,...new Set((a.match(/[^\n]{0,18}(?:措施项目费|措施项目[^\n]{0,8}(?:清单|计价|费率))[^\n]{0,18}/gu)||[]).map(a=>a.trim())),...new Set((a.match(/[^\n]{0,10}(?:合计|小计)[^\n]{0,16}(?:㎡|m²|m2|m³|m3|吨|t|项|处|座|樘)/gu)||[]).map(a=>a.trim()))])];g.length>0&&b.push({level:"error",severity:"blocker",message:`「${c.title}」小节正文含工程量清单内部口径词:${g.slice(0,6).join(";")}`,suggestion:"“分部小计/本页小计/合计/按实/暂估/综合单价/措施项目费/规费/税金”等清单计价表专用口径不得进入正式正文:工程量只写清单汇总的项目总量(数值与工程量清单一致),删除全部清单内部口径行。"})}return b}},43378:(a,b,c)=>{function d(a){return a.replace(/\s+/gu,"").toLowerCase()}function e(a){return[...new Set(a)]}function f(a,b){let c=a=>{let b=new Set;for(let c=0;c<a.length-1;c+=1)b.add(a.slice(c,c+2));return b},e=c(d(b)),f=[...c(d(a))];return 0===f.length?0:f.filter(a=>e.has(a)).length/f.length}function g(a){let b=new Map,c=(a,c)=>{let d=c.title.trim();if(!d)return;let e=b.get(a)||[];e.some(a=>a.title===d||a.title.includes(d)||d.includes(a.title))||(e.push({id:`planned-table-${a}-${e.length+1}`,title:d,chapterTitle:"",section:c.section||"",required:c.required,reason:c.reason,fields:c.fields.filter(Boolean).map(a=>({name:a})).slice(0,12)}),b.set(a,e))};for(let b of a.chapters)for(let d of a.plannedTables.get(b.id)||[])c(b.id,{title:d.title,fields:d.fields,required:!1,reason:"本章小节规划产出的表格需求(按章按节规划)。"});let g=[];for(let b of a.requiredTables||[]){let e,h=b.trim();if(!h)continue;let i=0;for(let b of a.chapters){let a=function(a,b){let c=d(a).replace(/表$/u,"");if(!c)return 0;let e=0;for(let a of[b.title,...b.sections||[]]){let b=d(a);if(b){if(b.includes(c)||c.includes(b)){e=Math.max(e,1);continue}e=Math.max(e,f(c,b))}}return e}(h,b);a>i&&(i=a,e=b)}if(!e||i<.3){g.push(h);continue}c(e.id,{title:h,fields:[],required:!0,reason:"用户提示词声明的必需表格。"})}return{chapters:a.chapters.map(a=>{let c=b.get(a.id);return c?.length?{...a,tableSections:e([...a.tableSections||[],...c.map(a=>a.title)]),tableRequirements:e([...a.tableRequirements||[],...c.filter(a=>a.required).map(a=>`${a.title}:用户提示词声明的必需表格,必须真实输出为 markdown 表格,表头与行数据必须与本章内容一致。`)]),tablePlans:c.map(b=>({...b,chapterTitle:a.title}))}:a}),unattachedRequiredTables:g}}function h(a,b){let c=a.tablePlans||[];return 0===c.length?[]:c.filter(c=>!b.some(b=>(function(a,b){let c=a.tablePlans||[];if(0===c.length)return[];let e=d(b||"");return e?c.filter(a=>{let b=d(a.section||"");if(b&&(e.includes(b)||b.includes(e)))return!0;let c=d(a.title);if(c&&(e.includes(c)||c.includes(e)))return!0;let g=c.replace(/表$/u,"");return!!(g&&(e.includes(g)||g.includes(e))||g&&f(e,g)>=.6)}):c})(a,b).some(a=>a.id===c.id)))}function i(a,b){let c=[];for(let d of a){let a=d.tablePlans||[];if(0===a.length)continue;let e=b.find(a=>a.title===d.title)||b.find(a=>d.title.includes(a.title)||a.title.includes(d.title));if(!e)continue;let f=function(a){let b=0;for(let c of a.split(/\r?\n/u))/^\s*\|?\s*:?-{3,}:?/u.test(c)&&c.includes("|")&&(b+=1);return b}(e.content);f>=.6*a.length||a.length-f<2||c.push({chapterTitle:d.title,planned:a.length,actual:f,plans:a})}return c}c.d(b,{T4:()=>k,Xi:()=>i,lR:()=>g,nn:()=>h});let j=["【表格排版硬约束】每个 markdown 表格必须独立成行:表头行必须以“|”开头单独占一行,下一行紧跟“|---|”分隔行,数据行逐行以“|”开头;严禁把表头接在正文段落同一行(如“正文……。| 表头1 | 表头2 |”),输出表格前必须先换行。","每个表格前必须写 1~2 句引导叙述(说明该表的作用、数据口径与关键结论),表格不能替代所在小节全部正文;表格输出后还应围绕表中关键节点、责任分工与纠偏措施展开至少一段实施性正文。","只输出表格/清单本体和用户提示词明确要求的文字;不得输出系统来源说明、后台溯源列、固定表前后说明或占位话术。","【字段填写约束】项目特有数字、日期、工程量、规格必须来自项目资料或项目图谱,不得编造;人数、台班、进度时间等投标人计划编制类字段必须基于项目工程量、总工期与工序流水推导具体数值,不得留空、不得写“按需配置”“根据进度灵活调配”等空话。"];function k(a){let b=a.tablePlans||[];return 0===b.length?"":["【本章表格/清单结构化生成要求(硬性验收项)】","以下表格来自用户提示词声明与本章小节规划,不得按数量机械增减;每个应输出的表格都必须真实输出为 markdown 表格;输出后按本清单逐表自检,缺失即视为正文不足。",...j,...b.map((a,b)=>[`${b+1}. ${a.required?"必写":"应写"}:${a.title}`,a.fields.length?` - 表头必须为:${a.fields.map(a=>a.name).join(" | ")}(不得擅自改字段、删字段或增加后台溯源列)`:"",a.section?` - 归属小节:${a.section}`:"",` - 来源:${a.reason}`].filter(Boolean).join("\n"))].filter(Boolean).join("\n")}},73186:(a,b,c)=>{c.d(b,{Su:()=>i,U2:()=>k,Zq:()=>f,am:()=>j});var d=c(76760);function e(a){return d.resolve(a).replace(/\\/gu,"/").toLowerCase()}function f(a,b=[]){return{projectId:a,allowedFilePaths:[...new Set(b.filter(Boolean).map(e))]}}function g(a){return!!a?.allowedFilePaths.length}function h(a,b){if(!g(b))return!0;if(!a)return!1;let c=e(a);return b.allowedFilePaths.includes(c)}function i(a,b){return a.filter(a=>h(a.filePath,b))}function j(a,b){return a.filter(a=>h(a.sourceFile,b))}function k(a,b,c){if(!g(b))return;let d=a.filter(a=>!h(a.filePath,b));if(d.length>0){let a=d.slice(0,5).map(a=>a.filePath).join(";");throw Error(`EVIDENCE_SCOPE_VIOLATION:${c}:${a}`)}}},73859:(a,b,c)=>{c.d(b,{$i:()=>f,E1:()=>j,d2:()=>i,oC:()=>g,p4:()=>d,rF:()=>h});let d={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,/^#+\s*/u,/^见(?:招标|投标人|前附|补疑|图纸|清单|文件|资料|公告|须知)/u],lowConfidenceValuePatterns:[/无法确认|疑似|不确定|需复核|文字模糊|语义断裂|识别错误|乱码/u]},e={...d,id:"construction_organization_design",name:"施工组织设计"};function f(a,b=""){let c=`${a?.id||""} ${a?.name||""} ${a?.category||""} ${a?.description||""} ${a?.outputTitle||""} ${b}`;return/施工组织设计|施工方案|危大工程|人、材、机|安全文明施工/u.test(c)?e:d}function g(a,b){if(b)return a.factFields.find(a=>a.name===b||a.aliases.some(a=>b.includes(a)||a.includes(b)))}function h(a,b){return a.forbiddenValuePatterns.some(a=>a.test(b))}function i(a,b){return a.diagnosticValuePatterns.some(a=>a.test(b))}function j(a,b){return a.lowConfidenceValuePatterns.some(a=>a.test(b))}}};
|
|
117
|
+
${a.content}`);if(!b){c.push({level:"error",severity:"blocker",message:`${a.title} 分部分项工程施工方案小节缺失或标题结构异常`,suggestion:"主要施工方法章下必须逐项展开分项工程方案:既可用「### 主要分部分项工程施工方案」包装后在内部使用「#### 分项工程方案」,也可章下 H3 小节直接承载各分项方案。"});continue}h(a.title,b)}return c}let z=/^####\s+(?:\d+(?:\.\d+)*\s+)?(?:施工概况|施工流程|施工方法|工艺流程)(?:[::]|\s*$)/u;function A(a){let b=[];return a.scope||b.push("作业对象与工程量"),a.process||b.push("工序顺序"),a.method||b.push("施工方法"),b.join("、")}function B(a){let b=a.split(/\r?\n/u),c=[],e=(a,c)=>{for(let d=a;d<b.length;d+=1){let a=/^(#{1,6})\s+/u.exec(b[d].trim());if(a&&a[1].length<=c)return d}return b.length};for(let a=0;a<b.length;a+=1){let f=/^##\s+(.+)$/u.exec(b[a].trim());if(f){let g=f[1].trim();if(!d.Yp.test(g)&&!d.gG.test(g))continue;let h=e(a+1,2),i=b.slice(a+1,h),j=i.map((a,b)=>({line:a.trim(),offset:b})).filter(a=>/^###\s+/u.test(a.line));if(0===j.length){c.push({title:g,bodyLines:i});continue}for(let a=0;a<j.length;a+=1){let b=j[a].offset,d=a+1<j.length?j[a+1].offset:i.length;c.push({title:j[a].line.replace(/^###\s+/u,""),bodyLines:i.slice(b+1,d)})}continue}let g=/^###\s+(.+)$/u.exec(b[a].trim());if(g){let f=g[1].trim();if(!d.Yp.test(f)&&!d.gG.test(f))continue;let h=e(a+1,3);c.push({title:f,bodyLines:b.slice(a+1,h)})}}return c}function C(a){let b=[],c=(a,c,d)=>{let e=d.includes("作业对象")?"作业对象与工程量(本项目部位、规模/工程量、系统边界,工程量取工程量清单汇总值)":"",f=d.includes("工序")?"工序顺序(先后清晰,至少 1 处不少于 4 个环节的工序顺序表达)":"",g=d.includes("施工方法")?"施工方法(工具机具、工艺参数、验收闭环)":"";b.push({level:"error",severity:"blocker",message:c?`「${a}」${c}专业工程块缺少三要素:${d}`:`「${a}」小节缺少三要素:${d}`,suggestion:`请在「${c||a}」补写缺失要素:${[e,f,g].filter(Boolean).join(";")}。要素融入连贯段落叙述,禁止以“施工概况/施工流程/施工方法”等结构标签充当标题或段落开头引导。`})};for(let b of B(a)){let a=b.bodyLines.map((a,b)=>({line:a.trim(),offset:b})).filter(a=>/^####\s+/u.test(a.line));if(0===a.length||a.every(a=>z.test(a.line))){let a=A((0,e.se)(b.bodyLines.join("\n")));a&&c(b.title,"",a);continue}for(let d=0;d<a.length;d+=1){let f=a[d].offset,g=d+1<a.length?a[d+1].offset:b.bodyLines.length;if(z.test(a[d].line))continue;let h=a[d].line.replace(/^####\s+(?:\d+(?:\.\d+)*\s+)?/u,"").replace(/[::]\s*$/u,""),i=b.bodyLines.slice(f,g).join("\n"),j=A((0,e.se)(i));j&&c(b.title,h,j)}}return b}function D(a){let b=[];for(let c of B(a)){let a=c.bodyLines.join("\n");if(!a.trim())continue;let d=a.split(/\r?\n/u).filter(a=>/^\s*\|.+\|\s*$/u.test(a.trim())),e=a.split(/\r?\n/u).filter(a=>!/^\s*\|.+\|\s*$/u.test(a.trim())).join("").replace(/[\s#*_`>-]/gu,"").length;d.length>=3&&e<50&&b.push({level:"error",severity:"blocker",message:`「${c.title}」小节不应使用 Markdown 表格承载专业工程正文`,suggestion:"主要施工内容/主要施工方法应采用三级小节与段落式专业工程写法:每个专业工程一个 #### 小节,覆盖作业对象与工程量、工序顺序、施工方法三方面要素;表格数据改写成连贯叙述。"});let f=[...new Set((a.match(/[^\n]{0,18}(?:分部小计|本页小计|按实|暂估|综合单价|规费|税金)[^\n]{0,18}/gu)||[]).map(a=>a.trim()))],g=[...new Set([...f,...new Set((a.match(/[^\n]{0,18}(?:措施项目费|措施项目[^\n]{0,8}(?:清单|计价|费率))[^\n]{0,18}/gu)||[]).map(a=>a.trim())),...new Set((a.match(/[^\n]{0,10}(?:合计|小计)[^\n]{0,16}(?:㎡|m²|m2|m³|m3|吨|t|项|处|座|樘)/gu)||[]).map(a=>a.trim()))])];g.length>0&&b.push({level:"error",severity:"blocker",message:`「${c.title}」小节正文含工程量清单内部口径词:${g.slice(0,6).join(";")}`,suggestion:"“分部小计/本页小计/合计/按实/暂估/综合单价/措施项目费/规费/税金”等清单计价表专用口径不得进入正式正文:工程量只写清单汇总的项目总量(数值与工程量清单一致),删除全部清单内部口径行。"})}return b}},43378:(a,b,c)=>{function d(a){return a.replace(/\s+/gu,"").toLowerCase()}function e(a){return[...new Set(a)]}function f(a,b){let c=a=>{let b=new Set;for(let c=0;c<a.length-1;c+=1)b.add(a.slice(c,c+2));return b},e=c(d(b)),f=[...c(d(a))];return 0===f.length?0:f.filter(a=>e.has(a)).length/f.length}function g(a){let b=new Map,c=(a,c)=>{let d=c.title.trim();if(!d)return;let e=b.get(a)||[];e.some(a=>a.title===d||a.title.includes(d)||d.includes(a.title))||(e.push({id:`planned-table-${a}-${e.length+1}`,title:d,chapterTitle:"",section:c.section||"",required:c.required,reason:c.reason,fields:c.fields.filter(Boolean).map(a=>({name:a})).slice(0,12)}),b.set(a,e))};for(let b of a.chapters)for(let d of a.plannedTables.get(b.id)||[])c(b.id,{title:d.title,fields:d.fields,required:!1,reason:"本章小节规划产出的表格需求(按章按节规划)。"});let g=[];for(let b of a.requiredTables||[]){let e,h=b.trim();if(!h)continue;let i=0;for(let b of a.chapters){let a=function(a,b){let c=d(a).replace(/表$/u,"");if(!c)return 0;let e=0;for(let a of[b.title,...b.sections||[]]){let b=d(a);if(b){if(b.includes(c)||c.includes(b)){e=Math.max(e,1);continue}e=Math.max(e,f(c,b))}}return e}(h,b);a>i&&(i=a,e=b)}if(!e||i<.3){g.push(h);continue}c(e.id,{title:h,fields:[],required:!0,reason:"用户提示词声明的必需表格。"})}return{chapters:a.chapters.map(a=>{let c=b.get(a.id);return c?.length?{...a,tableSections:e([...a.tableSections||[],...c.map(a=>a.title)]),tableRequirements:e([...a.tableRequirements||[],...c.filter(a=>a.required).map(a=>`${a.title}:用户提示词声明的必需表格,必须真实输出为 markdown 表格,表头与行数据必须与本章内容一致。`)]),tablePlans:c.map(b=>({...b,chapterTitle:a.title}))}:a}),unattachedRequiredTables:g}}function h(a,b){let c=a.tablePlans||[];return 0===c.length?[]:c.filter(c=>!b.some(b=>(function(a,b){let c=a.tablePlans||[];if(0===c.length)return[];let e=d(b||"");return e?c.filter(a=>{let b=d(a.section||"");if(b&&(e.includes(b)||b.includes(e)))return!0;let c=d(a.title);if(c&&(e.includes(c)||c.includes(e)))return!0;let g=c.replace(/表$/u,"");return!!(g&&(e.includes(g)||g.includes(e))||g&&f(e,g)>=.6)}):c})(a,b).some(a=>a.id===c.id)))}function i(a,b){let c=[];for(let d of a){let a=d.tablePlans||[];if(0===a.length)continue;let e=b.find(a=>a.title===d.title)||b.find(a=>d.title.includes(a.title)||a.title.includes(d.title));if(!e)continue;let f=function(a){let b=0;for(let c of a.split(/\r?\n/u))/^\s*\|?\s*:?-{3,}:?/u.test(c)&&c.includes("|")&&(b+=1);return b}(e.content);f>=.6*a.length||a.length-f<2||c.push({chapterTitle:d.title,planned:a.length,actual:f,plans:a})}return c}c.d(b,{T4:()=>k,Xi:()=>i,lR:()=>g,nn:()=>h});let j=["【表格排版硬约束】每个 markdown 表格必须独立成行:表头行必须以“|”开头单独占一行,下一行紧跟“|---|”分隔行,数据行逐行以“|”开头;严禁把表头接在正文段落同一行(如“正文……。| 表头1 | 表头2 |”),输出表格前必须先换行。","每个表格前必须写 1~2 句引导叙述(说明该表的作用、数据口径与关键结论),表格不能替代所在小节全部正文;表格输出后还应围绕表中关键节点、责任分工与纠偏措施展开至少一段实施性正文。","只输出表格/清单本体和用户提示词明确要求的文字;不得输出系统来源说明、后台溯源列、固定表前后说明或占位话术。","【字段填写约束】项目特有数字、日期、工程量、规格必须来自项目资料或项目图谱,不得编造;人数、台班、进度时间等计划类数值必须原样引用蓝图权威锚点(劳动力峰值、工种构成、分阶段投入、机械台数、总工期节点),不得基于工程量或定额自行推算另设,不得留空、不得写“按需配置”“根据进度灵活调配”等空话。"];function k(a){let b=a.tablePlans||[];return 0===b.length?"":["【本章表格/清单结构化生成要求(硬性验收项)】","以下表格来自用户提示词声明与本章小节规划,不得按数量机械增减;每个应输出的表格都必须真实输出为 markdown 表格;输出后按本清单逐表自检,缺失即视为正文不足。",...j,...b.map((a,b)=>[`${b+1}. ${a.required?"必写":"应写"}:${a.title}`,a.fields.length?` - 表头必须为:${a.fields.map(a=>a.name).join(" | ")}(不得擅自改字段、删字段或增加后台溯源列)`:"",a.section?` - 归属小节:${a.section}`:"",` - 来源:${a.reason}`].filter(Boolean).join("\n"))].filter(Boolean).join("\n")}},73186:(a,b,c)=>{c.d(b,{Su:()=>i,U2:()=>k,Zq:()=>f,am:()=>j});var d=c(76760);function e(a){return d.resolve(a).replace(/\\/gu,"/").toLowerCase()}function f(a,b=[]){return{projectId:a,allowedFilePaths:[...new Set(b.filter(Boolean).map(e))]}}function g(a){return!!a?.allowedFilePaths.length}function h(a,b){if(!g(b))return!0;if(!a)return!1;let c=e(a);return b.allowedFilePaths.includes(c)}function i(a,b){return a.filter(a=>h(a.filePath,b))}function j(a,b){return a.filter(a=>h(a.sourceFile,b))}function k(a,b,c){if(!g(b))return;let d=a.filter(a=>!h(a.filePath,b));if(d.length>0){let a=d.slice(0,5).map(a=>a.filePath).join(";");throw Error(`EVIDENCE_SCOPE_VIOLATION:${c}:${a}`)}}},73859:(a,b,c)=>{c.d(b,{$i:()=>f,E1:()=>j,d2:()=>i,oC:()=>g,p4:()=>d,rF:()=>h});let d={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,/^#+\s*/u,/^见(?:招标|投标人|前附|补疑|图纸|清单|文件|资料|公告|须知)/u],lowConfidenceValuePatterns:[/无法确认|疑似|不确定|需复核|文字模糊|语义断裂|识别错误|乱码/u]},e={...d,id:"construction_organization_design",name:"施工组织设计"};function f(a,b=""){let c=`${a?.id||""} ${a?.name||""} ${a?.category||""} ${a?.description||""} ${a?.outputTitle||""} ${b}`;return/施工组织设计|施工方案|危大工程|人、材、机|安全文明施工/u.test(c)?e:d}function g(a,b){if(b)return a.factFields.find(a=>a.name===b||a.aliases.some(a=>b.includes(a)||a.includes(b)))}function h(a,b){return a.forbiddenValuePatterns.some(a=>a.test(b))}function i(a,b){return a.diagnosticValuePatterns.some(a=>a.test(b))}function j(a,b){return a.lowConfidenceValuePatterns.some(a=>a.test(b))}}};
|