@customize-agent/server 4.13.0 → 4.13.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/build-manifest.json +2 -2
- package/.next/prerender-manifest.json +3 -3
- package/.next/server/chunks/2886.js +1 -1
- package/.next/server/chunks/5284.js +4 -4
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +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 +30 -30
- package/package.json +1 -1
- /package/.next/static/{F5fyA7_2G382sUuoc2fIT → K3qeuStkYoXwj5RmTd9MD}/_buildManifest.js +0 -0
- /package/.next/static/{F5fyA7_2G382sUuoc2fIT → K3qeuStkYoXwj5RmTd9MD}/_ssgManifest.js +0 -0
package/.next/BUILD_ID
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
K3qeuStkYoXwj5RmTd9MD
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
"devFiles": [],
|
|
6
6
|
"ampDevFiles": [],
|
|
7
7
|
"lowPriorityFiles": [
|
|
8
|
-
"static/
|
|
9
|
-
"static/
|
|
8
|
+
"static/K3qeuStkYoXwj5RmTd9MD/_buildManifest.js",
|
|
9
|
+
"static/K3qeuStkYoXwj5RmTd9MD/_ssgManifest.js"
|
|
10
10
|
],
|
|
11
11
|
"rootMainFiles": [],
|
|
12
12
|
"rootMainFilesTree": {},
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
"routes": {},
|
|
4
4
|
"dynamicRoutes": {},
|
|
5
5
|
"preview": {
|
|
6
|
-
"previewModeId": "
|
|
7
|
-
"previewModeSigningKey": "
|
|
8
|
-
"previewModeEncryptionKey": "
|
|
6
|
+
"previewModeId": "b481ac4cce440d21b0f99315f6cc49a3",
|
|
7
|
+
"previewModeSigningKey": "84d3b9f5a846383292209e7ff1e7e2da398f5de89f11117bd00d5fff7ae706f0",
|
|
8
|
+
"previewModeEncryptionKey": "00dd871c2a9ce79ce74741caa092acb605957e4f8c5590e7ec3892594f40bb14"
|
|
9
9
|
},
|
|
10
10
|
"notFoundRoutes": []
|
|
11
11
|
}
|
|
@@ -113,7 +113,7 @@ ${e.join("\n")}`)}let e=(a.evaluationCriteriaItems||[]).filter(Boolean);e.length
|
|
|
113
113
|
${e.map(a=>`- ${a}`).join("\n")}`);let f=a.tenderRequirements;if(f&&f.extracted){let a=[],c=(b,c)=>{for(let d of c||[])a.push(`${b}:${d.text}`)};c("创优目标",f.awardObjectives),c("特殊质量标准",f.specialQualityStandards),c("奖项条款",f.awardClauses),f.greenBuildingGrade&&a.push(`绿色建筑等级:${f.greenBuildingGrade.text}`),f.smartSiteGrade&&a.push(`智慧工地等级:${f.smartSiteGrade.text}`),f.assemblyRate&&a.push(`装配率要求:${f.assemblyRate.text}`),c("体系基准",f.systematicBenchmarks),c("禁止性约束",f.prohibitionNotes),f.dateFabricationProhibited&&a.push("禁编日期条款:正文不得自设具体开工/竣工日期"),a.length&&b.push(`招标文件评分项要求:
|
|
114
114
|
${a.map(a=>`- ${a}`).join("\n")}`)}let g=(a.factsModel?.bills||[]).slice(0,10).map(a=>`${a.fieldName||a.key} ${a.value}`.replace(/\s+/gu," ").trim()).filter(Boolean);return g.length&&b.push(`工程量清单特征摘要:
|
|
115
115
|
${g.map(a=>`- ${a}`).join("\n")}`),b.join("\n\n")}({factsModel:an,evaluationCriteriaItems:Q,tenderRequirements:R}),resolvedBlockerSignatures:be,diagnostics:q,signal:Y,heartbeat:X,onStage:a=>{let b=(0,bj.X5)({type:"llm_review",roleId:"agent-qingtian-review",status:a.status,message:a.message,details:a.details},{subtitle:"全维度评审"});(0,bj.fx)(k,b),(0,bj.fx)(aY,b),W(aB,k)}});a$=bl.reviewed?bl.remainingIssues.map(a=>{let b="否决级"===a.riskLevel||"高风险"===a.riskLevel;return{level:b?"error":"warning",severity:b?"blocker":"warning",repairability:b?"llm_repairable":"not_repair_needed",category:"qingtian_review",owner:"llm",message:`[全维度评审\xb7${a.dimension}\xb7${a.riskLevel}]${a.location?`${a.location}:`:""}${a.description}${a.quote?`(原文:“${a.quote.slice(0,40)}”)`:""}`,suggestion:a.basis}}):[],bl.fixedCount>0?(aC=bd(),await a_()):a$.length>0&&await a_();let bm=await (async()=>{let a=aB.find(a=>/工程概况|项目概况|基本信息/u.test(a.title))?.content;if(!a)return;let b=(0,y.t1)(aC);if(0===b.sentences.length)return;let c=await (0,S.Mv)(b.sentences,[a]);return{overviewBody:a,similarity:c}})(),bo=[...await (0,y.sn)(aC),...await (0,y.cJ)(aC,an),...bm?(0,y.l4)(aC,{semanticSimilarity:bm.similarity}):[],...await (0,b$.WT)(aC),...(0,y.cf)(aC,an),...(0,y.a8)(aC,an),...(0,y.u2)(aC),...(0,y.rA)(aC),...(await aM(aC)).map(a=>cq(a)),...await (0,y.r8)(aC),...(0,y.vH)(aC),...await (0,y.mC)(aC),...(0,y.Xc)(aC)].filter(a=>"error"===a.level),bp=bo.filter(a=>"data-consistency"===ba(a.message)).map(a=>a.message);if(bo.length>0){let a=0,b=[{code:"six-hundred-percent",detect:async a=>(await (0,y.sn)(a)).map(a=>a.message)},{code:"local-award",detect:async a=>(await (0,y.cJ)(a,an)).filter(a=>/本地创优目标缺失/u.test(a.message)).map(a=>a.message)},{code:"green-quant",detect:async a=>(await (0,y.cJ)(a,an)).filter(a=>/四节一环保量化指标缺失/u.test(a.message)).map(a=>a.message)},{code:"work-injury",detect:async a=>(await (0,y.cJ)(a,an)).filter(a=>/工伤保险表述缺失/u.test(a.message)).map(a=>a.message)},{code:"overview-recap",detect:a=>bm?(0,y.l4)(a,{semanticSimilarity:bm.similarity}).map(a=>a.message):[]},{code:"internal-term",detect:async a=>(await (0,b$.WT)(a)).map(a=>a.message),delete:async a=>{let b=await (0,b$.NR)(a);return{content:b,removed:+(b!==a)}}},{code:"fabricated-date",detect:a=>(0,y.cf)(a,an).map(a=>a.message)},{code:"field-value-mismatch",detect:a=>(0,y.a8)(a,an).map(a=>a.message)},{code:"area-arithmetic",detect:a=>(0,y.u2)(a).map(a=>a.message)},{code:"labor-contradiction",detect:a=>(0,y.rA)(a).map(a=>a.message)},{code:"data-consistency",detect:async a=>(await aM(a)).map(a=>cq(a).message)},{code:"support-conflict",detect:async a=>(await (0,y.r8)(a)).map(a=>a.message)},{code:"dangerous-list-inconsistent",detect:a=>(0,y.vH)(a).map(a=>a.message)},{code:"commercial-data",detect:async a=>(await (0,y.mC)(a)).map(a=>a.message),delete:async a=>{let b=(0,y.T)(a);return{content:b,removed:+(b!==a)}}},{code:"repeated-word",detect:a=>(0,y.Xc)(a).map(a=>a.message),delete:async a=>{let b=(0,y.Vw)(a);return{content:b,removed:+(b!==a)}}}],c=[],d=new Map;for(let a of bo){let b=bc(a);if(b<0)continue;let e=d.get(b);void 0===e?(d.set(b,c.length),c.push({chapterIndex:b,issues:[a]})):c[e].issues.push(a)}let e=Math.max(1,Math.min(6,Number(process.env.DOCUMENT_PREDELIVERY_FIX_CONCURRENCY||3)));for(let d=0;d<c.length;d+=e){let f=c.slice(d,d+e);await Promise.all(f.map(async({chapterIndex:c,issues:d})=>{let e=aB[c],f=g.find(a=>a.id===e.id||a.title===e.title);for(let g of d){let d,i=ba(g.message),j=b.find(a=>a.code===i);if("labor-contradiction"===i){let b=(0,y.fE)(aB[c].content);if(b.fixedCount>0){aB[c]={...aB[c],content:b.markdown},a+=b.fixedCount,aC=bd();let d=j?(await j.detect(aC)).filter(a=>a===g.message):[],f=(0,bj.X5)({type:"llm_review",roleId:`agent-predelivery-fix-${e.id}-${i}`,status:0===d.length?"success":"failed",message:0===d.length?`交付前定向修复完成:${e.title}(确定性定点替换 ${b.fixedCount} 处,跳过 LLM 轮次)`:`交付前确定性修复后仍残留:${e.title}(定点替换 ${b.fixedCount} 处,复检仍有 ${d.length} 处)`,details:[g.message,...b.details.slice(0,4)]},{subtitle:"交付前修复"});(0,bj.fx)(k,f),(0,bj.fx)(aY,f),W(aB,k);continue}}let l=[...g.message.matchAll(/“([^”]{6,80})”/gu)].map(a=>a[1]),m=(0,bj.X5)({type:"llm_review",roleId:`agent-predelivery-fix-${e.id}-${i||"unclassified"}`,status:"running",message:`交付前定向修复:${e.title}(${i||"未分类"})`,details:[g.message]},{subtitle:"交付前修复"});(0,bj.fx)(k,m),(0,bj.fx)(aY,m),W(aB,k);let n=[g.message],o="";for(d=0;d<2&&n.length>0;d+=1){let b=0===d?bb(g.message):["【修复未生效升级重试】",`上一轮修复后复检仍存在 ${n.length} 处同类缺陷(复检证据:${n.slice(0,2).join(";")}),说明上一轮修复方式与缺陷特征不匹配或 patch 未落位。`,"本轮必须更换修复方式:先精确定位问题句,再整体替换该句(不得只改个别词),替换后的文本必须完全符合下列要求:",bb(g.message)].join("\n"),k=await X(()=>(0,bk.l8)({template:h,chapter:{id:e.id,title:e.title,content:aB[c].content,evidence:e.evidence,missingFacts:e.missingFacts,sections:e.sections},issues:[g.message,g.suggestion||""],promptTexts:b,requirement:Z,forbidDrawingImages:!1,diagnostics:q,signal:Y,anchorTexts:l.length>0?l.slice(0,4):void 0}));if(k.content&&k.content!==aB[c].content){if(aB[c]={...aB[c],content:f?dz(k.content,f):k.content},a+=k.appliedCount,aC=bd(),j)if(aO&&"data-consistency"===i){let a=[...new Set([...g.message.matchAll(/[\d,]+(?:\.\d+)?/gu)].map(a=>a[0].replace(/[,,]/gu,"")).filter(a=>a.length>=2))],b=aC.replace(/\s+/gu,"");n=a.length>=2&&a.every(a=>b.includes(a))?[g.message]:[]}else n=(await j.detect(aC)).filter(a=>a===g.message);else k.appliedCount>0&&(n=[]);if(0===n.length)break}else{if(0===d)continue;o=k.producedCount>0?`patch 已产出 ${k.producedCount} 条但均未应用(锚点失配或结构校验拒绝)`:"定位失败或输出无效(未产出 patch)";break}}if(n.length>0&&j?.delete){let b=await j.delete(aB[c].content,g.message);b.removed>0&&(aB[c]={...aB[c],content:b.content},a+=b.removed,aC=bd(),n=(await j.detect(aC)).filter(a=>a===g.message))}let p=0===n.length;p||o||(o="patch 已应用但未消除缺陷(修复方式不匹配)");let r=(0,bj.X5)({type:"llm_review",roleId:`agent-predelivery-fix-${e.id}-${i||"unclassified"}`,status:p?"success":"failed",message:p?`交付前定向修复完成:${e.title}(${d} 轮 LLM 修复后复检通过)`:`交付前定向修复未生效:${e.title}(${d} 轮 LLM 修复${j?.delete?"+确定性删除":""}后复检仍有 ${n.length} 处;失败原因:${o})`,details:[g.message,...p?[]:[`复检残留:${n.slice(0,3).join(";")}`]]},{subtitle:"交付前修复"});(0,bj.fx)(k,r),(0,bj.fx)(aY,r),W(aB,k)}}))}if(bm){let b=(0,y.U$)(aC,bm.similarity);b!==aC&&(aC=b,a+=1)}let f=await (0,b$.NR)(aC);f!==aC&&(aC=f,a+=1);let i=(0,y.fE)(aC);if(i.fixedCount>0&&(aC=i.markdown,a+=i.fixedCount),aO&&bp.length>0){let a=await cs(aC,bp,{signal:Y,diagnostics:q});if(a.length>0){let b=(0,bj.X5)({type:"llm_review",roleId:"agent-predelivery-data-consistency-batch-recheck",status:"failed",message:`交付前数据一致性轮末统一重审:${bp.length-a.length}/${bp.length} 处矛盾已消除,${a.length} 处仍残留`,details:a.slice(0,5)},{subtitle:"交付前修复"});(0,bj.fx)(k,b),(0,bj.fx)(aY,b),W(aB,k)}}a>0&&await a_()}let bq=(0,y.qj)(aC);bq!==aC&&(aC=bq,await a_());let br=function(a){let b=a.split(/\r?\n/u),c=[],d=0,e=0;for(;e<b.length;){if(!/^\s*\|/u.test(b[e])){c.push(b[e]),e+=1;continue}let a=e;for(;a+1<b.length&&/^\s*\|/u.test(b[a+1]);)a+=1;let f=el(b.slice(e,a+1));f.removed>0&&(d+=1),c.push(...f.lines),e=a+1}return{markdown:c.join("\n"),removed:d}}(aC);br.markdown!==aC&&(aC=br.markdown,await a_());let bs=[{key:"export-gate",label:"导出门禁",passed:(aI={exportGate:aX,qualityReport:aT,repairStrategies:aU}).exportGate.passed,message:aI.exportGate.passed?"导出门禁通过":`仍有 ${aI.exportGate.blockingIssues.length} 个阻断问题`},{key:"delivery-probability",label:"交付置信度",passed:aI.qualityReport.passed,message:`${aI.qualityReport.deliveryProbability}% / ${aI.qualityReport.target}%`},{key:"completeness",label:"资料完整性",passed:aI.qualityReport.scores.completeness>=85,message:`${aI.qualityReport.scores.completeness}/100`},{key:"specificity",label:"方案针对性",passed:aI.qualityReport.scores.specificity>=85,message:`${aI.qualityReport.scores.specificity}/100`},{key:"compliance",label:"合规性",passed:aI.qualityReport.scores.compliance>=80,message:`${aI.qualityReport.scores.compliance}/100`},{key:"repair-strategies",label:"修复策略",passed:0===aI.repairStrategies.filter(a=>"high"===a.priority).length,message:aI.repairStrategies.map(a=>a.title).join("、")||"无高优先级修复策略"}],bt=(0,x.Ff)(au);q.quality.blockingCount+=bt.blocking,q.quality.importantCount+=bt.important,q.quality.minorCount+=bt.minor;let bu=function(a){let b=[...a.diagnostics.metrics].sort((a,b)=>b.durationMs-a.durationMs).slice(0,5).map(a=>({name:a.name,durationMs:a.durationMs}));return{llmCalls:a.diagnostics.llm.calls,llmFailures:a.diagnostics.llm.failures,maxParallelLlm:a.diagnostics.llm.maxActive,searchQueries:a.diagnostics.evidence.searchQueries,evidenceContextChars:a.diagnostics.evidence.contextChars,qualityIssues:{...a.diagnostics.quality},slowMetrics:b,elapsedMs:a.startedAt&&a.endedAt?a.endedAt-a.startedAt:void 0}}({diagnostics:q}),bv=aX.blockingIssues.length;bu.qualityIssues.blockingCount=bv;let bw=await d4(aB,aC,{templating:aT.templating}),bx=aT.templating?await X(()=>d5({templating:aT.templating,markdown:aC,diagnostics:q,signal:Y})):{issues:[],reviewed:!1},by=[...aA,...aY].map(a=>"validation"===a.type&&"document-workflow"===a.roleId?{...a,status:bv>0?"failed":"success",message:`阻断 ${bv},问题 ${au.length}`}:"export_ready"===a.type?{...a,status:aX.passed?"success":"failed",message:aX.passed?"已准备好导出 Markdown/HTML/DOCX/PDF":"导出门禁未通过,请完成阻断问题修复后再导出"}:aX.passed&&"failed"===a.status&&/^agent-(?:reviewer|repairer)-/u.test(a.roleId)?{...a,status:"skipped",message:`${a.message||"章节中间审查失败"};最终门禁已通过,历史中间态已归档`}:a);by.push((0,bj.X5)({type:"validation",roleId:"agent-final-gate",status:aX.passed?"success":"failed",message:aX.passed?"Agent 最终门禁通过":`Agent 最终门禁阻断 ${bv} 个问题`,details:aX.blockingIssues.slice(0,12).map(a=>a.message)},{subtitle:"Agent 最终门禁"}));let bz=aT.deliveryProbability<70;by.push((0,bj.X5)({type:"validation",roleId:"document-delivery-score",status:aT.passed?"success":aX.passed?"skipped":"failed",message:aX.passed&&!aT.passed?`${aT.summary}${bz?";置信度低于 70%,建议完成续修后再交付归档":"(导出门禁已通过,作为后续优化建议归档)"}`:aT.summary,details:bz&&aX.passed?[...aT.actions,"续修建议:交付置信度低于 70% 门槛,建议按交付复核清单补齐短板维度后重新生成或续修。"]:aT.actions},{subtitle:"交付评分"})),by.push((0,bj.X5)({type:"validation",roleId:"document-professional-score",status:"专业"===bw.grade||"良好"===bw.grade?"success":"skipped",message:bw.summary,details:[...bw.dimensions.map(a=>`${a.label}:${a.score} 分(${a.detail})`),...bw.topIssues.map(a=>`待修复:${a}`)]},{subtitle:"专业度评分"})),aT.templating&&"light"!==aT.templating.level&&by.push((0,bj.X5)({type:"validation",roleId:"document-templating-report",status:"skipped",message:`模板化检测:${"heavy"===aT.templating.level?"重度":"中度"}模板化(套话句占比 ${(100*aT.templating.fillerRatio).toFixed(1)}%,重难点归因+量化双达标占比 ${(100*aT.templating.difficultyCountermeasureRatio).toFixed(0)}%,模糊应答词 ${aT.templating.vagueHitCount} 处)`,details:bx.issues},{subtitle:"模板化检测"})),P&&by.push((0,bj.X5)({type:"reference",roleId:"document-writing-task-brief",status:"success",message:`写作任务书:${P.documentType},${P.chapters.length} 章任务卡,全局写作焦点 ${P.globalWritingFocus.length} 条`,details:[...P.globalWritingFocus,...P.chapters.slice(0,10).map(a=>`${a.chapterTitle}:覆盖 ${a.mustCover.length} 项`)],subtitle:"写作任务书"})),by.push((0,bj.X5)({type:"reference",roleId:"knowledge-coverage",status:aQ.score>=85?"success":"failed",message:`资料确认覆盖率:${aQ.score}%(证据 ${aQ.evidenceCount} 条,文件 ${aQ.confirmedFiles} 份)`,details:[aQ.remediation]},{subtitle:"资料覆盖"})),by.push((0,bj.X5)({type:"validation",roleId:"document-review-checklist",status:bs.every(a=>a.passed)?"success":aX.passed?"skipped":"failed",message:`交付复核清单:通过 ${bs.filter(a=>a.passed).length}/${bs.length}${aX.passed&&!bs.every(a=>a.passed)?"(导出门禁已通过,其余项作为优化建议归档)":""}`,details:bs.map(a=>`${a.passed?"通过":"待修复"}:${a.label}${a.message?`(${a.message})`:""}`)},{subtitle:"交付复核"}));let bA=[...q.metrics].sort((a,b)=>b.durationMs-a.durationMs).slice(0,5).map(a=>`${a.name} ${Math.round(a.durationMs/1e3)}秒`).join(",");by.push((0,bj.X5)({type:"validation",roleId:"document-diagnostics",status:"success",message:`性能统计:LLM ${q.llm.calls} 次,失败 ${q.llm.failures} 次,瞬态重试 ${q.llm.retries} 次,schema 校验失败 ${q.llm.schemaFailures} 次,峰值并行 ${q.llm.maxActive},检索 ${q.evidence.searchQueries} 次/${Math.round(q.evidence.searchMs/1e3)} 秒,证据上下文 ${q.evidence.contextChars} 字,噪声过滤 ${q.evidence.filteredNoise} 条,预算裁剪 ${q.evidence.budgetDropped} 条,质量问题 阻断${q.quality.blockingCount}/重要${q.quality.importantCount}/轻微${q.quality.minorCount}${bA?`,Top耗时:${bA}`:""}`},{subtitle:"后台诊断"}));let bC=aB.map(a=>({...a,evidence:(0,s.QR)(a.evidence||[],{preservePinned:!0})}));return aB=bC,{templateId:h.id,templateName:h.name,title:h.outputTitle,requirement:Z||"",projectRoot:C,projectId:D,exportSettings:h.exportSettings,generationSettings:h.generationSettings,facts:ac,structuredFacts:ak,factsModel:an,chapters:bC,sources:aq,missingItems:[...new Set(H)],validation:ap,validationIssues:au,exportGate:aX,executionStages:by,assets:ay,partialChapters:aB.map(a=>({id:a.id,title:a.title,chars:(0,w.V7)(a.content),status:c5(a,o.chapterTargets.get(a.id)),updatedAt:Date.now()})),checkpointChapters:bC,promptRules:B,agentWorkflow:M,reviewMetadata:{chapterSummaries:[],globalIssues:[],diagnostics:q,profile:function(a){let b=`${a.template.name} ${a.template.outputTitle||""} ${a.requirement||""} ${a.chapters.map(a=>a.title).join(" ")}`,c=[{pattern:/专项施工|危大|专项方案/u,type:"专项施工方案",dimensions:["专项对象边界","工艺参数","风险控制","验收要求","应急措施"]},{pattern:/投标|技术标|响应|招标/u,type:"投标技术方案",dimensions:["招标响应","技术优势","工期质量安全承诺","资源保障","履约可实施性"]},{pattern:/监理|旁站|巡视|平行检验/u,type:"监理规划/细则",dimensions:["监理目标","旁站巡视","平行检验","验收程序","资料签认"]},{pattern:/可研|可行性|项目建议书|投资估算/u,type:"可研/项目建议类文档",dimensions:["建设必要性","方案比选","投资估算","风险分析","实施效益"]},{pattern:/运维|维护|保养|巡检/u,type:"运维维护方案",dimensions:["巡检频次","维护流程","故障响应","备品备件","记录闭环"]}].find(a=>a.pattern.test(b));return{type:c?.type||"施工组织设计/施工技术方案",dimensions:c?.dimensions||["工程概况","施工部署","进度质量安全","资源配置","施工工艺和验收闭环"],requiredEvidencePolicy:"本地知识库为完整事实源;系统暂未确认的事实必须通过扩大检索、事实补抽或落位修复解决,不得归因为用户资料缺失。"}}({template:h,chapters:g,requirement:Z}),knowledgeCoverage:aQ,factTraces:aR,chapterCoverage:aS,retrievalCoverage:I,qualityReport:aT,repairStrategies:aU,reviewChecklist:bs,professionalScore:bw,templatingReviewIssues:bx.issues,writingTaskBrief:P,workflowVersion:cN.x,telemetry:bu,qualityBenchmark:await cL(aC)},generatedAt:Date.now(),markdown:aC}}var er=c(70963),es=c(25284),et=c(30355);function eu(a){return a.replace(/\s+/gu,"").toLowerCase()}var ev=c(14070);async function ew(a){let b=(0,d.QJ)(a.templateId);if(!b)throw Error("Document template not found");let c=b.chapters.find(b=>b.id===a.chapterId);if(!c)throw Error("Document chapter not found");let f=e.resolve(a.projectRoot||(0,g.aY)());if(!f)throw Error("No knowledge base project found");let h=(0,g.Qh)(),i=(0,bm.Hh)(f,b,{requirement:a.requirement}),j=(0,bm.W9)(f,b,{requirement:a.requirement}),{kindByPath:k,processingByPath:l}=(0,bm.Hz)(j),m=new Set(i),n=bP(f,i),o=new Map([...k.entries()].map(([a,b])=>[a,(0,bm._W)(b)])),p=new Map([...l.entries()].map(([a,b])=>[a,b])),q=dP(await h.getProject(f),[...m],a.maxEvidencePerChapter),r=[],v=[...m].filter(Boolean).sort(),w=dM(c,c.queries,[]),x=function(a,b){let c=Number(process.env.DOCUMENT_MAX_QUERIES_PER_CHAPTER);return Math.max(2,Math.min(9,Math.floor(Number.isFinite(c)&&c>0?c:4)+ +((a.sections||[]).length>=6||a.requiredFacts.length>=8)+Math.min(2,b.length)))}(c,[]);for(let a of w.slice(0,x)){let b=await h.search(f,a,{scope:"project",filters:{filePaths:v},limit:Math.min(q,12),weights:{keyword:.4,vector:.45,rewrite:.75,hybridBonus:.15},generationMode:!0});r.push(...b.results.filter(a=>(0,bk.Tz)(f,a.filePath,m)).map(a=>({chapterId:c.id,filePath:a.filePath,score:a.score,content:a.content,roleId:o.get(a.filePath),processingType:p.get(a.filePath),sectionTitle:a.sectionTitle,source:a.source})))}let y=dL(c,bS(r.filter(a=>(0,bk.Tz)(f,a.filePath,m)),n),{maxItems:function(a,b,c=!1){return Math.max(12,Math.min(c?58:26,a+10+4*((b.sections||[]).length>=6||b.requiredFacts.length>=8)+18*!!c))}(q,c),maxChars:16e3,preservePinned:!0});bU(y,n,`regenerate:${c.id}`);let z=a.currentMarkdown||"",A=new Set(a.existingFacts??[]),B=c.requiredFacts.filter(a=>!A.has(a)&&!y.some(b=>(0,u.Lk)(b,a)));if(0===y.length)throw Error(`${(0,t.GQ)(c.title)} 缺少可支撑正文的项目资料证据`);let C=[`## ${c.title}`,"",a.requirement?`> 生成要求:${a.requirement}`:"",z?`> 当前文档上下文摘要:${z.replace(/\s+/gu," ")}`:"",`本章依据已锁定项目资料围绕“${c.purpose}”重新整理,并与当前文档上下文保持一致。`,"","### 资料依据",...y.map(s.OF)].filter(Boolean).join("\n");return{id:c.id,title:c.title,content:C,evidence:y,missingFacts:B}}async function ex(a){(0,A.Te)(a.signal);let b=(0,d.QJ)(a.templateId);if(!b)throw Error("Document template not found");let c=e.resolve(a.projectRoot||(0,g.aY)());if(!c)throw Error("No knowledge base project found");let o=(0,f.computeProjectId)(c),p=b,q=(0,g.Qh)(),B=[],H=[],T=(b,c=_)=>{let d=b?[...b].sort((a,b)=>{let c=H.indexOf(a.id),d=H.indexOf(b.id);return(c<0?Number.MAX_SAFE_INTEGER:c)-(d<0?Number.MAX_SAFE_INTEGER:d)}):void 0;a.onProgress?.([...c],d?{chapters:d}:void 0)},U=Math.max(15e3,Math.min(6e4,Number(process.env.DOCUMENT_GENERATION_HEARTBEAT_MS??3e4))),V=async(b,c=_)=>{let d=setInterval(()=>{a.signal?.aborted||T(B,c)},U);try{return await b()}finally{clearInterval(d)}},W=(0,d.N6)(p)||"none",X=(0,i.Mu)(W)?.name||W,_=[(0,bj.X5)({type:"role_binding",roleId:W,status:"running",message:`生成任务已创建,正在读取模板与角色配置:${p.name}`,details:[`当前项目:${o}`,`资料目录:${(0,g.NW)(c)}`,"正在读取项目资料包和提示词配置"],progress:{current:1,total:4,label:"初始化配置"}},{subtitle:X,roleName:X,order:0})];T();let aa=(0,d.bj)(p),ae=aa.bindings;(0,bj.fx)(_,(0,bj.X5)({type:"validation",roleId:"document-preparation",status:"running",message:"正在分析模板规范、用户要求与项目资料包",details:["解析 OUTLINE 与模板章节","读取项目资料包","自动识别资料类型并构建项目理解"],progress:{current:1,total:3,label:"准备分析"}},{subtitle:"生成准备",order:_.length})),T();let af=(0,c2.Qu)({template:p,requirement:a.requirement,projectRoot:c,facts:[]}).materialScope.selectedFiles;if(0===af.length)throw Error("模板未绑定可用项目资料包,请先在模板中绑定需要参与生成的项目文件夹。");let aj=(0,bm.W9)(c,p,{requirement:a.requirement}),ak=(0,bm._n)(p,aj),{kindByPath:al,processingByPath:am}=(0,bm.Hz)(aj),ap=(0,bk.fC)([...aa.writerPrompts,...aa.chapterPrompts]),aq=(0,t.cs)([{text:a.requirement,source:"用户需求",strict:!0},{text:ap,source:"提示词角色",strict:!0}]),at=aq.length>=2;at&&(p={...b,chapters:aq});let au=await V(()=>Promise.resolve((0,k.P)(c,{requirement:a.requirement,boundFilePaths:af})));(0,bj.fx)(_,(0,bj.X5)({type:"validation",roleId:"document-preparation",status:"running",message:"正在生成自动文档规格并评估生成准备度",details:[`项目资料:${af.length} 份`,`资料类型:${Object.values(aj.groups).filter(a=>a.length>0).length} 类`,"生成事实字段与章节约束"],progress:{current:2,total:3,label:"规格评估"}},{subtitle:"生成准备",order:_.length})),T();let av=await V(()=>Promise.resolve((0,j.x)(p,a.requirement||""))),aF=av.spec,aG=function(a,b=""){let c=`${a?.id||""} ${a?.name||""} ${a?.category||""} ${a?.description||""} ${a?.outputTitle||""} ${b}`;return/施工组织设计|施工方案|危大工程|人、材、机|安全文明施工/u.test(c)?m:l}(p,a.requirement||""),aH=(0,r.$)({template:p,spec:aF,summary:au,resolvedRoles:[]});if(!aH.ready)throw Error(`生成准备度不足:${aH.blockingIssues.join(";")}`);let aJ=['【全文写作硬约束(每一章生成时必须遵守,违反即评审失分)】\n1. 禁止编造时间事实:开工日期、竣工日期、工期起止等未在项目资料中确认的日期一律不得写入正文;进度表述改用“开工后第 N 天”“第 N 周”等相对口径,或引用资料中已确认的日期。\n2. 禁止商务数据:暂列金额、暂估价、综合单价、清单合价、税率、投标报价等商务条款数据不得写入施工组织设计正文,商务口径只允许出现在项目信息表中。\n3. 禁止资料来源罗列话术:不得出现“根据/依据招标文件、工程量清单、图纸及答疑”式来源罗列句,直接陈述项目事实与施工安排;编制依据小节可集中列出依据文件。\n4. 禁止跨章复述概况:除“工程概况/项目概况”章节外,其余章节不得以“本项目为/本工程为”开头整段复述项目总体概况,应直接展开本章主题内容。\n5. 禁止后台内部话术:不得出现“工作包”“WRITER_MISSING_SECTION”“已确认资料”等系统内部术语与兜底话术,一律改写为正式施工组织设计表述。\n6. 合规数值红线(安全、职业健康、危大工程章节必须逐条对照,违反即合规失分):\n a. 高温停工按《防暑降温措施管理办法》(安监总安健〔2012〕89号):日最高气温达到40℃以上应停止当日室外露天作业;37℃~40℃时室外露天作业时间累计不得超过6小时且气温最高时段3小时内不得安排室外露天作业;35℃~37℃时应换班轮休缩短连续作业时间。不得写成42℃等其他阈值。\n b. 危大工程判定线按住建部令第37号及建办质〔2018〕31号:基坑(槽)土方开挖、支护、降水,开挖深度超过3m(含3m)属危大工程,超过5m(含5m)属超过一定规模(需专家论证);模板支撑搭设高度8m及以上或搭设跨度18m及以上属超过一定规模;落地式钢管脚手架搭设高度24m及以上属危大工程、50m及以上属超过一定规模,悬挑式脚手架分段架体搭设高度20m及以上属超过一定规模;采用非常规起重设备方法且单件起吊重量10kN及以上属危大工程、100kN及以上属超过一定规模。判定必须给出本项目对应参数(开挖深度/支撑高度/搭设高度/起吊重量),参数未在资料中确认的不得自行判定为危大或超危大。证据中含基坑底标高、\xb10.000对应绝对标高、垫层底标高等数值的,必须直接引用并据此给出开挖深度具体数值(开挖深度=地面标高-坑底标高),不得仅写“开挖深度超过3m”而不给数值;标高、坡率(如1:1.5)等设计参数应写入基坑支护与土方开挖相关小节。\n c. 专家论证程序按住建部令第37号:超过一定规模的危大工程专项方案应组织不少于5名符合专业要求的专家(从地方住建主管部门专家库选取)论证;修改后的方案由施工单位技术负责人审核签字、加盖单位公章,并由总监理工程师审查签字、加盖执业印章后方可实施。\n d. 监测预警值单一口径:同一监测指标(基坑位移速率、沉降预警值等)全文只能出现一个数值口径,不得前后矛盾;预警值优先引用设计文件明确值,无设计要求时按现行监测技术标准选取并注明依据。\n e. 自设数值自洽:自设的防护尺寸、频次、时间节点等数值必须与同章及跨章表述一致,且尽量引用现行规范依据;无规范依据的自设值不得写成硬性规定。\n7. 禁止数据自查话术:不得把表格口径推算、数据一致性自查过程写入正文(如"上表合计行…与…不一致,故…修正为…"),表格与正文数值必须直接自洽;不得把招标条款编号碎片(如"3项规定""1委员会确定中""56m15:…")作为小节标题。\n8. 禁止商务投标函内容:投标/评标纪律承诺、廉洁承诺、廉洁自律、行贿、串标、围标、弄虚作假、干扰评标等商务投标函条款与承诺一律不得写入施工组织设计正文(招标文件中的此类条款属商务文件应响应内容,不是技术标内容);本节只写技术方案与管理措施,不得以承诺句形式响应此类条款。',ak.prompt,(0,k.F)(au,{publicSafe:!0}),(0,j.N)(aF,av.sourceHash,{publicSafe:!0}),(0,r.R)(aH,{publicSafe:!0})].filter(Boolean).join("\n\n"),aK=[ak.prompt,(0,k.F)(au),(0,j.N)(aF,av.sourceHash),(0,r.R)(aH)].filter(Boolean).join("\n\n"),aL=(0,bk.fC)([...aa.writerPrompts,...aa.formattingPrompts]),aM=(0,bk.fC)([...aa.writerPrompts,...aa.chapterPrompts,...aa.formattingPrompts]),aN=(0,bk.fC)(aa.prompts),aR=(0,h.I)().load().webAccess||{enabled:!1,allowProjectFacts:!1,maxQueriesPerChapter:2,maxResultsPerQuery:3,trustedDomains:[]},aX=(0,a4.c_)({promptTexts:[aJ,aN].filter(Boolean).join("\n\n"),requirement:a.requirement,template:p,rolePrompts:aa.prompts}),aY=[(0,a4.el)(aX),!aR.enabled?"":"公开资料补充使用规则:\n1. 公开资料只可用于补充通用规范、政策、工艺和措施。\n2. 不得使用公开资料新增或修改项目名称、建设地点、建设规模、工期、质量标准、工程量、材料规格、图纸参数、商务数据。\n3. 本地项目资料与公开资料冲突时,必须以本地项目资料为准。\n4. 不得在正文中出现任何检索过程、外部页面、工具调用或系统内部过程性表述。\n5. 不得把公开资料中的其他项目案例参数写入本项目正文。"].filter(Boolean).join("\n\n"),aZ=[aJ,aY,`生成前规划章节结构:
|
|
116
|
-
${(0,v.CK)(p)}`,aL||aM].filter(Boolean).join("\n\n"),a$=[aK,aY,(0,bk.fC)([...aa.extractionPrompts,...aa.referencePrompts])].filter(Boolean).join("\n\n"),a_=[aJ,aY,(0,bk.fC)([...aa.writerPrompts,...aa.chapterPrompts,...aa.formattingPrompts])].filter(Boolean).join("\n\n"),a0=[aJ,aY,(0,bk.fC)(aa.formattingPrompts)].filter(Boolean).join("\n\n");(0,bj.fx)(_,(0,bj.X5)({type:"validation",roleId:"document-preparation",status:"success",message:`模板规范与项目资料理解完成,识别 ${af.length} 份项目资料`,details:[`提示词绑定:${ae.length} 个`,`项目资料包:${aj.materialRoots.join("、")||"当前知识库"}`,at?`识别 OUTLINE 章节:${aq.length} 个`:"未识别显式 OUTLINE,使用模板章节"],progress:{current:3,total:3,label:"准备完成"}},{subtitle:"生成准备",order:_.length})),T();let a6=new Set(af),a7=new Map([...al.entries()].map(([a,b])=>[a,(0,bm._W)(b)])),a8=new Map([...am.entries()].map(([a,b])=>[a,b]));(0,bj.fx)(_,(0,bj.X5)({type:"knowledge_retrieval",roleId:"knowledge-index",status:"running",message:"正在读取项目资料包索引",details:["使用上传阶段已完成的解析、切片和索引结果","不在生成流程中重新解析或入库","准备按资料类型召回章节证据"],progress:{current:1,total:3,label:"读取索引"}},{subtitle:"知识库检索",order:_.length})),T();let ba=await V(()=>q.getProject(c)),bb=function(a,b){let c=new Set(b.filter(Boolean)),d=(a.listFiles?.()||[]).filter(a=>0===c.size||c.has(a.relativePath)),e=new Set(d.map(a=>a.relativePath)),f=[...c].filter(a=>!e.has(a)),g=d.filter(a=>0===Math.max(0,Math.ceil(Number(a.chunkCount)||0))).map(a=>a.relativePath),h=d.filter(a=>"error"===a.status).map(a=>a.relativePath),i="function"==typeof a.countPendingIndexJobs?a.countPendingIndexJobs():0,j="function"==typeof a.getVectorStatus?a.getVectorStatus():void 0,k=d.filter(a=>"error"!==a.status&&Math.max(0,Math.ceil(Number(a.chunkCount)||0))>0),l=k.map(a=>a.relativePath),m=k.reduce((a,b)=>a+Math.max(0,Math.ceil(Number(b.chunkCount)||0)),0),n=[...dO("部分绑定文件未完成索引,已自动跳过",f),...dO("部分绑定文件没有可用切片,已自动跳过",g),...dO("部分绑定文件索引失败,已自动跳过",h)],o=c.size>0&&0===m?["所有绑定文件均无可用切片"]:[],p=[...n,...i>0?[`仍有 ${i} 个待索引任务,建议等待索引完成后生成`]:[],...j&&"ready"!==j.status?[`向量索引状态为 ${j.status},当前召回质量可能下降`]:[]];return{scopedRecords:d,usablePaths:l,missingFiles:f,emptyFiles:g,errorFiles:h,pendingJobs:i,vectorStatus:j,usableChunkCount:m,blockingIssues:o,warnings:p}}(ba,[...a6]);if(bb.blockingIssues.length>0)throw Error(`生成前知识索引不可用:${bb.blockingIssues.join(";")}`);let bc=new Set(bb.usablePaths),bd=bP(o,[...bc]),be=dP(ba,[...bc],a.maxEvidencePerChapter),bo=bb.pendingJobs>0||0===bb.usableChunkCount,bp=function(a){let b=Math.max(0,Math.ceil(a.totalChunks||0)),c=Math.max(0,Math.ceil(a.loadedChunks||0)),d=Math.max(0,b-c),e=b>0?c/b:1,f=[...b>=1e3&&e<.35?["切片未完全预加载"]:[],...!1===a.vectorReady?["向量索引未就绪"]:[]];return{totalChunks:b,loadedChunks:c,omittedChunks:d,loadedRatio:e,highRisk:f.length>0,riskReason:f.join("、")||void 0}}({totalChunks:Math.min(bb.usableChunkCount,20*af.length),loadedChunks:Math.min(bb.usableChunkCount,20*af.length),vectorReady:bb.vectorStatus?"ready"===bb.vectorStatus.status:void 0});(0,bj.fx)(_,(0,bj.X5)({type:"knowledge_retrieval",roleId:"knowledge-index",status:bo?"failed":"success",message:`已读取知识索引:项目资料 ${bb.scopedRecords.length} 份,可用切片 ${bb.usableChunkCount} 条`,details:[`项目资料:${a6.size} 份`,`可用证据文件:${bc.size} 份`,`向量状态:${bb.vectorStatus?.status||"unknown"}`,...bb.warnings,"后续将按招标正文/清单/图纸/补疑等资料类型召回"],progress:{current:3,total:3,label:"索引已就绪"}},{subtitle:"知识库检索",order:_.length})),T(),(0,A.Te)(a.signal);let bq=[],br=[],bs={enabled:aR.enabled,queries:[],evidenceCount:0,filteredCount:0,chapters:[]},bt=[],bw=[],bx=[],by=[],bz=[],bC=-1,bD=new Map,bE=new Map,bG=a=>{let b=`${a}::full`;if(!bE.has(b))try{bE.set(b,ba.getFileDetail?.(a))}catch{bE.set(b,void 0)}return bE.get(b)},bH=async(a,b,d,e)=>{let f=dH(e),g=(0,A.c6)({query:a,scopedFilePaths:b,limit:d,weights:f,generationMode:!0}),h=bD.get(g);if(h)return h;let i=await q.search(c,a,{scope:"project",filters:{filePaths:b},limit:d,weights:f,generationMode:!0,disableReranker:!0}).catch(()=>null),j=i?.results||[];return bD.set(g,j),j},bI={stage:(0,bj.X5)({type:"file_understanding",roleId:"project-understanding",status:"success",message:`已完成项目资料理解:${aj.files.length} 份资料,${Object.values(aj.groups).filter(a=>a.length>0).length} 类资料类型`,details:ak.prompt.split("\n").slice(0,16)},{subtitle:"项目资料理解",order:_.length})};(0,bj.fx)(_,bI.stage),T();let bJ=bS(await c8({manager:q,project:ba,projectRoot:c,scopedFilePaths:[...a6].filter(Boolean).sort(),fileRoleByPath:a7,fileProcessingByPath:a8,signal:a.signal}),bd);bU(bJ,bd,"project-basic-evidence"),bJ.length>0&&(bq.push(...bJ),(0,bj.fx)(_,(0,bj.X5)({type:"knowledge_retrieval",roleId:"project-basic-evidence",status:"success",message:`已锁定项目基础事实证据 ${bJ.length} 条`,details:bJ.slice(0,8).map(a=>`${e.basename(a.filePath)}|${a.sectionTitle||"正文片段"}|score=${a.score.toFixed(2)}`)},{subtitle:"基础事实召回",order:_.length})),T());let{safe:bK,excluded:bL}=await Z(bq),bM=await $();bL.length>0&&((0,bj.fx)(_,(0,bj.X5)({type:"knowledge_retrieval",roleId:"evidence-content-safety",status:"success",message:`证据内容安全过滤:${bL.length} 条投标程序/评标纪律类证据已从写作链断开(系统侧提取通道不受影响)`,details:bL.slice(0,6).map(a=>`${e.basename(a.filePath)}|${a.sectionTitle||"正文片段"}`)},{subtitle:"证据内容安全",order:_.length})),T());let bO=bJ.filter(a=>!bL.includes(a)),bQ=new Set(bL.map(Y)),bR=bT(ai(bK,p,aF),bd),bV=bT(ar(bK),bd),bW=[...bR,...bV,...bT(as(bK,aG),bd)],bX=(0,es.hp)({projectRoot:c,template:p,requirement:a.requirement}),bY=[...bX?.facts||[],...bW],bZ=await aD(bY,bT(ah(bK),bd),bt,aF,aG),b$=(0,c2.Qu)({template:p,requirement:a.requirement,projectRoot:c,facts:bY,projectGraph:bX?.projectGraph,projectGraphSource:bX?"project-intelligence":void 0});for(let a of(0,c2.SU)(b$))(0,bj.fx)(_,a);bX&&(0,bj.fx)(_,(0,bj.X5)({type:"file_understanding",roleId:"project-intelligence-cache",status:"success",message:`已复用入库后项目理解资产与绑定 scope 快照:${bX.files.length} 份绑定资料`,details:[`项目级缓存时间:${new Date(bX.cache.createdAt).toLocaleString()}`,`scope 快照:${bX.scopeSnapshot.scopeHash.slice(0,12)}`,`复用预计算事实:${bX.facts.length} 条`,`复用预计算项目图谱:${bX.projectGraph.works.length}工程/${bX.projectGraph.methods.length}工法/${bX.projectGraph.resources.length}资源`,`复用施工组织设计专项图谱:${bX.constructionOrganizationGraph.workPackages.length} 个工作包/${bX.constructionOrganizationGraph.controlMatrix.length} 条控制矩阵`,`图谱来源:${bX.cache.projectGraphMessage}`,`章节意图证据覆盖:${Object.keys(bX.evidenceByChapterId||{}).length}/${p.chapters.length} 章`,`排除正文不适用资料:${bX.files.filter(a=>!a.usableForBody).length} 份`]},{subtitle:"项目理解缓存 / Scope 快照"})),T();let b_=b$.baseProjectGraph;if(!bX){(0,bj.fx)(_,(0,bj.X5)({type:"file_understanding",roleId:"project-graph",status:"running",message:`正在临时构建完整项目图谱:${bq.length} 条证据 → LLM 结构化提取`,details:["缓存缺失或版本过期,建议重新构建项目理解缓存;本次生成将临时构建完整项目图谱。","提取:工程内容、施工方法、材料设备、技术标准、重点难点"],progress:{current:2,total:3,label:"项目图谱"}},{subtitle:"项目资料图谱分析",order:_.length})),T();let b=await V(()=>(0,er.i)({evidence:bK,signal:a.signal,projectRoot:c,requirement:a.requirement,templateId:p.id}),_);if(!b.graph)throw Error(`完整项目图谱构建失败:${b.stage.message||b.stage.status}`);b_=b.graph,(0,bj.fx)(_,b.stage),T()}b_&&(ak=(0,bm._n)(p,aj,b_));let b0=function(a){var b;let c=(0,A.c6)({version:"canonical-facts-v7",rulesHash:(0,cQ.TG)(a.projectRoot),requirement:a.requirement||"",templateId:a.templateId||"",requiredKeys:a.requiredKeys||[],facts:a.facts.map(a=>({key:a.key,fieldId:a.fieldId,fieldName:a.fieldName,value:a.value,sourceFile:a.sourceFile,roleId:a.roleId,confidence:a.confidence})).sort((a,b)=>`${a.sourceFile}${a.key}${a.value}`.localeCompare(`${b.sourceFile}${b.key}${b.value}`)),graphHash:a.projectGraph?(0,A.c6)(a.projectGraph):"",markdownHash:a.markdown?(0,A.c6)(a.markdown.slice(0,2e4)):""}),d=function(a,b){let c=cX(a);if(c)try{let a=JSON.parse(ac.readFileSync(e.join(c,`canonical-facts-${b}.json`),"utf8"));return a&&a.byKey&&Array.isArray(a.scopeConflicts)?a:void 0}catch{return}}(a.projectRoot,c);if(d)return d;let f=a.facts||[],g=c$(f,(0,cQ.bC)(a.projectRoot));for(let a of g.map(a=>({caseType:"scope_conflict_arbitration",recordedAt:Date.now(),kind:a.kind,scope:a.scope,values:a.values.map(a=>({value:a.value,unit:a.unit,sourceFile:a.sourceFile,priority:a.priority})),winner:a.resolution,confidence:a.confidence,manualReviewRequired:!a.resolution})))cP("arbitration-cases.jsonl",a);let h=c1(f,g),i=cV({facts:h,markdown:a.markdown}),j={};for(let[a,b]of i.entries())j[a]=function(a){let b=a.source.includes("generated_markdown")?"generated_markdown":a.source.includes("evidence")?"evidence":"structured_fact";return{key:a.fieldKey,label:a.label,value:a.value,normalizedValue:ao(a.value),sourceType:b,sourceFile:a.source,confidence:a.confidence,priority:cW(b),locked:cW(b)>=80,selectedReason:a.selectedReason}}(b);if(j.project_scale){let a=j.project_scale;if(/占地|用地/u.test(a.value)&&/建筑面积/u.test(a.value)){let b=a.value.search(/(?:单体)?总?建筑面积/u);if(b>0){let c=an(a.value.slice(b)).trim();j.project_scale={...a,value:c,normalizedValue:ao(c),selectedReason:`${a.selectedReason};混合口径已净化,scale 只取建筑面积段`}}}}let k=[];for(let a of[{key:"project_name",label:"项目名称",pattern:/项目名称|工程名称|招标项目名称|project_name/u,bucket:"projectIdentity",valueType:"text"},{key:"project_code",label:"项目编号",pattern:/项目编号|招标项目编号|project_code/u,bucket:"projectIdentity",valueType:"identifier"},{key:"owner",label:"招标人",pattern:/招标人|建设单位|发包人|owner/u,bucket:"projectIdentity",valueType:"organization"},{key:"project_location",label:"建设地点",pattern:/建设地点|实施地点|project_location/u,bucket:"projectIdentity",valueType:"location"},{key:"project_scale",label:"建设规模",pattern:/建设规模|工程规模|project_scale/u,bucket:"projectScope",valueType:"scale"},{key:"construction_scope",label:"施工范围",pattern:/施工范围|招标范围|工程范围/u,bucket:"projectScope",valueType:"text"},{key:"duration",label:"计划工期",pattern:/计划工期|合同工期|总工期|schedule_requirement|duration/u,bucket:"schedule",valueType:"duration"},{key:"quality_target",label:"质量目标",pattern:/质量标准|质量目标|quality_standard/u,bucket:"quality",valueType:"standard"}]){let b=function(a,b,c,d,e){let f=cR.find(a=>a.key===b);return a.filter(a=>d.test(`${a.fieldId||""}${a.key||""}${a.fieldName||""}`)).map(a=>(function(a,b,c){let d=(0,A.lG)(a.value),e=function(a){let b=`${a.sourceFile||""} ${a.sourceRef?.sectionTitle||""} ${a.roleId||""}`;return/补疑|答疑|澄清|补充|更正|修改/u.test(b)?"addendum":/合同/u.test(b)?"contract":/招标|公告|前附表|需求书/u.test(b)?"tender":/清单|工程量|BOQ|报价/u.test(b)?"boq":/图纸|设计|CAD|DWG/u.test(b)?"drawing":/规范|标准/u.test(b)?"standard":"structured_fact"}(a);return{key:b,label:c,value:d,normalizedValue:ao(d),sourceType:e,sourceFile:a.sourceFile,sourceRef:a.sourceRef?.sectionTitle,confidence:Math.round(100*(a.confidence||.5)),priority:cW(e),locked:cW(e)>=80,selectedReason:"按资料来源优先级和字段置信度决策"}})(a,b,c)).filter(a=>a.value&&!/资料未明确|系统暂未确认/u.test(a.value)).filter(a=>{let d=e??f?.valueType;return!d||"text"===d||!cT(a.value,{key:b,label:c,aliases:[],valueType:d}).rejected}).sort((a,b)=>b.priority-a.priority||b.confidence-a.confidence||a.value.length-b.value.length)}(h,a.key,a.label,a.pattern,a.valueType);!j[a.key]&&b.length>0&&(j[a.key]=b[0]);let c=function(a,b,c){let d=[...new Map(c.map(a=>[a.normalizedValue,a])).values()];if(d.length<=1)return;let e=Math.max(...d.map(a=>a.priority)),f=d.filter(a=>a.priority===e);return{key:a,label:b,values:d.map(a=>({value:a.value,sourceFile:a.sourceFile,priority:a.priority,confidence:a.confidence})),decision:1===f.length?"highest_priority_selected":"manual_review_required"}}(a.key,a.label,b);c&&k.push(c)}let l=(b=a.projectGraph)?[...(b.resources||[]).map(a=>({key:`resource_${a.type}_${a.name}`,label:"equipment"===a.type?"机械设备":"labor"===a.type?"劳动力":"材料资源",value:[a.name,a.spec,a.quantity,a.unit].filter(Boolean).join(" "),normalizedValue:ao([a.name,a.spec,a.quantity,a.unit].filter(Boolean).join(" ")),sourceType:"projectGraph",sourceFile:a.sourceFiles?.[0],confidence:55,priority:cW("projectGraph"),locked:!1,selectedReason:"来自项目图谱资源节点"})).filter(a=>a.value),...(b.risks||[]).map(a=>({key:`risk_${a.risk}`,label:"风险源",value:[a.risk,a.level,a.mitigation].filter(Boolean).join(" "),normalizedValue:ao([a.risk,a.level,a.mitigation].filter(Boolean).join(" ")),sourceType:"projectGraph",sourceFile:a.sourceFiles?.[0],confidence:55,priority:cW("projectGraph"),locked:!1,selectedReason:"来自项目图谱风险节点"})).filter(a=>a.value)]:[],m=l.filter(a=>/resource_/u.test(a.key)),n=l.filter(a=>/risk_/u.test(a.key));for(let a of l)j[a.key]||(j[a.key]=a);let o=(a.requiredKeys||[]).filter(a=>!j[a]).map(a=>({key:a,label:cR.find(b=>b.key===a)?.label||a,reason:"未从用户输入、招标资料、清单、图纸或项目图谱中确认该事实"})),p={projectIdentity:{projectName:j.project_name,projectCode:j.project_code,owner:j.owner,location:j.project_location},projectScope:{scale:j.project_scale,constructionScope:j.construction_scope},schedule:{duration:j.duration||j.schedule_requirement},quality:{target:j.quality_target||j.quality_standard},safety:{risks:n},resources:{resources:m},environment:{},constraints:{},byKey:j,conflicts:k,gaps:o,scopeConflicts:g},q=cX(a.projectRoot);return q&&ac.writeFileSync(e.join(q,`canonical-facts-${c}.json`),JSON.stringify(p,null,2)),p}({facts:bY,projectGraph:b_,requiredKeys:cR.map(a=>a.key),projectRoot:c,requirement:a.requirement,templateId:p.id});bZ.canonical=b0;let b1=(0,t.effectiveTemplateChapters)(p,aF,{preserveExplicitOutline:at}),b2=(0,Q.dK)({template:p,chapters:b1,requirement:a.requirement}).chapters,b3=bq.filter(a=>/评审|评分标准|评分办法|详细评审/u.test(`${a.sectionTitle||""}${a.content}`)).map(a=>a.content),b4=(0,R.tL)(b3);b3.length>0&&0===b4.length&&(0,bj.fx)(_,(0,bj.X5)({type:"validation",roleId:"bid-structure-audit",status:"skipped",message:"评审章节证据存在但未提取到评分条目标题:评分标准编号条目提取为空,承接审计将静默通过",details:["请检查招标文件评标办法章节编号格式;评分项要求(创优目标/绿色等级/禁编日期)由评分项要求提取通道覆盖"]},{subtitle:"评标结构校验",order:_.length}));let b5=await (0,S.Mv)(b4.map(a=>a.title),b2.map(R.Yx)),b6=(0,R.KX)({template:p,chapters:b2,requirement:a.requirement,evaluationItems:b4,semanticSimilarity:b5}),b7=(async()=>{try{var b;let d,f=[];for(let a of[...a6].sort()){if(!/招标|补疑|答疑|评标/u.test(a))continue;let b=bG(a);if(b?.chunks?.length)for(let c of b.chunks)f.push({chapterId:"tender-requirements",filePath:b.file?.relativePath||a,score:1,content:c.content||"",roleId:a7.get(a),processingType:a8.get(a),sectionTitle:c.sectionTitle,source:"pinned-evidence"})}let g=f.length>0?await aO(f):(0,s.QR)([...bq.filter(a=>/招标|评标|投标须知|专用合同|合同条款|技术标准|技术要求/u.test(`${a.filePath||""}${a.sectionTitle||""}`)),...bq.filter(a=>!/招标|评标|投标须知|专用合同|合同条款|技术标准|技术要求/u.test(`${a.filePath||""}${a.sectionTitle||""}`))],{preservePinned:!0});if(f.length>0){let a=f.reduce((a,b)=>a+(b.content?.length||0),0),b=g.reduce((a,b)=>a+(b.content?.length||0),0);(0,bj.fx)(_,(0,bj.X5)({type:"validation",roleId:"tender-requirement-preselect",status:"success",message:`评分项要求有用数据预筛:${f.length} → ${g.length} 条切片(${Math.round(b/Math.max(1,a)*100)}% 字符量)`,details:["投标程序/清单/目录/格式类切片已从主提取输入剔除(义务词形+语义命中双通道保留)","全量切片仍作必提条款窄通道召回池,兜底不失效"]},{subtitle:"评分项要求提取",order:_.length})),T()}let h="0"!==process.env.DOCUMENT_EXTRACTION_CACHE?(b={collectionEvidence:f,preselectEvidence:g},(0,A.c6)({version:"tender-requirements-extraction-v1",collection:aU(b.collectionEvidence),preselectInput:aU(b.preselectEvidence)})):void 0,i=h?function(a,b){try{let c=e.join(aT(a),`tender-requirements-${b}.json`),d=JSON.parse(ac.readFileSync(c,"utf8"));if(!aS(d)||aQ(d))return;return d}catch{return}}(c,h):void 0;if(i)d=i,(0,bj.fx)(_,(0,bj.X5)({type:"validation",roleId:"tender-requirements-cache",status:"success",message:"复用上次提取结果(招标文件与预筛输入哈希命中,跳过主提取/窄通道 LLM)",details:a3(d)},{subtitle:"评分项要求提取",order:_.length})),T();else{d=await V(()=>aI(g,{signal:a.signal})),!aS(d)&&g.length>0&&(d=await V(()=>aI(g,{signal:a.signal})));let b=await aP(f);if(b.length>0&&aQ(d)){let c=await V(()=>aI(b,{signal:a.signal}));aS(c)?(d=function(a,b){let c=(a,b)=>a.length>0?a:b;return{...a,awardObjectives:c(a.awardObjectives,b.awardObjectives),specialQualityStandards:c(a.specialQualityStandards,b.specialQualityStandards),awardClauses:c(a.awardClauses,b.awardClauses),greenBuildingGrade:a.greenBuildingGrade||b.greenBuildingGrade,smartSiteGrade:a.smartSiteGrade||b.smartSiteGrade,assemblyRate:a.assemblyRate||b.assemblyRate,systematicBenchmarks:c(a.systematicBenchmarks,b.systematicBenchmarks),frontScheduleClauses:c(a.frontScheduleClauses,b.frontScheduleClauses),prohibitionNotes:c(a.prohibitionNotes,b.prohibitionNotes),pageLimit:a.pageLimit||b.pageLimit,evaluationScheme:a.evaluationScheme||b.evaluationScheme,dateFabricationProhibited:a.dateFabricationProhibited||b.dateFabricationProhibited,extracted:a.extracted||b.extracted}}(d,c),(0,bj.fx)(_,(0,bj.X5)({type:"validation",roleId:"tender-mandatory-extraction",status:"success",message:"必提条款窄通道补提完成(主提取漏提字段已补齐)",details:a3(c)},{subtitle:"评分项要求提取",order:_.length})),T(),aQ(d)&&((0,bj.fx)(_,(0,bj.X5)({type:"validation",roleId:"tender-mandatory-extraction",status:"skipped",message:"必提条款窄通道补提后仍有必提字段缺失(奖项/绿色等级/智慧工地/装配率等至少一项未提取到)",details:["请检查招标文件相关条款的切片完整性与提取输入;正文将无法显性响应该必提要求"]},{subtitle:"评分项要求提取",order:_.length})),T())):((0,bj.fx)(_,(0,bj.X5)({type:"validation",roleId:"tender-mandatory-extraction",status:"skipped",message:"必提条款窄通道提取未获得有效结果(召回证据存在但 LLM 提取失败)",details:["请检查 LLM 可用性与提取输入质量;必提字段缺失将影响正文显性响应"]},{subtitle:"评分项要求提取",order:_.length})),T())}h&&function(a,b,c){if(!(!c||!aS(c)||aQ(c)))try{ac.writeFileSync(e.join(aT(a),`tender-requirements-${b}.json`),JSON.stringify(c,null,2))}catch{}}(c,h,d)}return aS(d)?((0,bj.fx)(_,(0,bj.X5)({type:"validation",roleId:"tender-requirements-extraction",status:"success",message:"招标文件评分项要求结构化提取完成",details:a3(d)},{subtitle:"评分项要求提取",order:_.length})),T()):g.length>0&&((0,bj.fx)(_,(0,bj.X5)({type:"validation",roleId:"tender-requirements-extraction",status:"skipped",message:"评分项要求提取未获得有效结果(模型不可用或资料中无要求),零响应检测自动跳过",details:[]},{subtitle:"评分项要求提取",order:_.length})),T()),d}catch(a){return(0,bj.fx)(_,(0,bj.X5)({type:"validation",roleId:"tender-requirements-extraction",status:"skipped",message:"评分项要求提取链异常,已降级为空模型(零响应检测自动跳过)",details:[`异常信息:${a instanceof Error?a.message:String(a)}`,"请检查 LLM 可用性与本地语义模型状态"]},{subtitle:"评分项要求提取",order:_.length})),T(),aE(!1)}})(),b8=(0,bh.w9)({chapters:b6.enrichedChapters,projectGraph:b_,canonicalFacts:b0});p={...p,chapters:b8};let b9=(0,et.NP)({template:p,context:b$,title:p.name});b9.catch(()=>void 0);let ca=new Map;if(b_){let a=new Set;for(let b of[...b_.works,...b_.methods,...b_.resources,...b_.schedule,...b_.standards,...b_.risks,...b_.requirements,...b_.siteConditions])(b.sourceFiles||[]).forEach(b=>a.add(b));for(let b of b8){let c=[b.title,b.purpose,...b.sections||[],...b.requiredFacts||[],...b.queries||[]].join(" "),d=a=>a&&((0,ev.C1)(a,c,.18)||(0,ev.C1)(a,b.title,.12)),e=/概况|总体|部署|施工|进度|工期|质量|安全|资源|人材机|材料|机械|劳动力|风险|危大|绿色|环保/u.test(c),f=b_.works.filter(a=>a.name&&(d(a.name)||e)),g=b_.methods.filter(a=>a.name&&(d(a.name)||(a.applicableWorks||[]).some(d)||e)),h=b_.resources.filter(a=>a.name&&(d(a.name)||/资源|人材机|材料|机械|劳动力/u.test(c)&&/material|equipment|labor/u.test(a.type))),i=b_.gaps.filter(a=>d(a)||e),j=new Set;for(let a of f)(a.sourceFiles||[]).forEach(a=>j.add(a));for(let a of g)(a.sourceFiles||[]).forEach(a=>j.add(a));for(let a of h)(a.sourceFiles||[]).forEach(a=>j.add(a));0===j.size&&e&&[...a].forEach(a=>j.add(a)),ca.set(b.id,{graphFiles:j,graphBoqItems:h.map(a=>({name:a.name,quantity:a.quantity,unit:a.unit,sourceFiles:a.sourceFiles||[]})),graphWorks:f.map(a=>a.name),graphMethods:g.map(a=>a.name),gaps:i})}bX||((0,bj.fx)(_,(0,bj.X5)({type:"file_understanding",roleId:"project-graph-match",status:"success",message:`图谱→章节映射完成:${b_.works.length}工程 ${b_.methods.length}工法 ${b_.resources.length}资源 → ${b8.length}章`,details:b8.map(a=>{let b=ca.get(a.id);return`${(0,t.GQ)(a.title)}:匹配文件${b?.graphFiles.size||0}个,BOQ项${b?.graphBoqItems.length||0}个`})},{subtitle:"图谱章节映射"})),T())}let cb=b8,cc=(0,es.TD)(bX?.constructionOrganizationGraph)||bX?.constructionOrganizationContext,cd=[ak.prompt,cc].filter(Boolean).join("\n\n"),ce=[cd,P({template:{...p,chapters:cb},chapters:cb,factsModel:bZ,requirement:a.requirement,scopeConflicts:b0.scopeConflicts})].filter(Boolean).join("\n\n"),cf={...p,chapters:cb},cg=(0,a4.My)([aZ,a.requirement||""].filter(Boolean).join("\n\n"),cb),ch=(0,w.tF)({requirement:a.requirement,promptTexts:aZ,template:cf,chapters:cb,spec:aF}),ci=0,cj=0,ck=[],cl=await (0,A.l$)(cb.map((a,b)=>({chapter:a,chapterIndex:b})),async({chapter:b,chapterIndex:c})=>{if(b.sections?.length){ci+=1;let a=cg.filter(a=>a.chapterIndex===c||a.chapterTitle&&(0,t.GQ)(a.chapterTitle)===(0,t.GQ)(b.title)).flatMap(a=>a.requiredSections.sort((a,b)=>(a.order||0)-(b.order||0)).map(a=>a.title));for(let c of[...a,...b.sections]){let a=(0,a4.EN)(String(c).trim());a&&a!==String(c).trim()&&ck.push(`${(0,t.GQ)(b.title)}:${c} → ${a}`)}let d=(0,a4.k2)([...a,...b.sections],b.title);return{...b,sections:d.length?d:(0,a4.k2)(b.sections,b.title)}}cj+=1;let d=(0,s.QR)(bK.filter(a=>a.chapterId===b.id||(0,u.Lk)(a,b.title)),{preservePinned:!0}),e=ak.chapterPlans.find(a=>a.chapterId===b.id)?.writingGoal||"",f=dB(aa,b),g=await (0,a4.SP)({template:cf,chapter:b,chapterIndex:c,evidence:d,promptTexts:f.promptTexts,projectContext:ce,requirement:a.requirement,roleContext:e,targetWords:ch.chapterTargets.get(b.id)||1200,structuralRules:cg,signal:a.signal}),h=cg.filter(a=>a.chapterIndex===c||a.chapterTitle&&(0,t.GQ)(a.chapterTitle)===(0,t.GQ)(b.title)).flatMap(a=>a.requiredSections.map(a=>`强制小节:${a.title}`));if((0,bj.fx)(_,(0,bj.X5)({type:"validation",roleId:"section-planning",promptId:f.primaryPromptId,status:g.length?"success":"failed",message:`${(0,t.GQ)(b.title)} 小节规划${g.length?`生成 ${g.length} 个小节`:"未生成可用小节"}`,details:[...f.promptDetails,...h,...g.length?g.map(a=>`规划小节:${a}`):["规划结果为空或被污染过滤"]]},{subtitle:"小节规划"})),!g.length)throw Error(`${(0,t.GQ)(b.title)} 小节规划未生成可用小节`);return{...b,sections:g}},{kind:"llmRepair",targetWords:ch.targetChars||4e3}),cm=await b7,cn=(0,Q.dK)({template:p,chapters:cl,requirement:a.requirement}),co="0"!==process.env.DOCUMENT_REQUIREMENT_CALIBRATION,cp=cn.chapters;if(co&&aS(cm)){let b=await V(()=>a5({chapters:cn.chapters,requirementSummary:a3(cm),templateName:p.name,signal:a.signal}));if(b.length>0){let a=function(a,b){if(!b.length)return{chapters:a,applied:[]};let c=[],d=a.map(a=>({...a,sections:[...a.sections||[]]}));for(let a of b){let b=d.findIndex(b=>(0,t.GQ)(b.title)===(0,t.GQ)(a.chapterTitle)||(0,a4.nz)(b.title)===(0,a4.nz)(a.chapterTitle));if(b<0)continue;let e=d[b],f=a.sections.filter(a=>!(e.sections||[]).some(b=>(0,a4.kw)(b,a)));0!==f.length&&(e.sections.push(...f),c.push({chapterTitle:a.chapterTitle,sections:f}))}return a.every((a,b)=>{let c=d[b];return!!c&&(a.sections||[]).every(a=>(c.sections||[]).some(b=>(0,a4.kw)(b,a)))})?{chapters:d,applied:c}:{chapters:a,applied:[]}}(cn.chapters,b);a.applied.length>0?(cp=a.chapters,(0,bj.fx)(_,(0,bj.X5)({type:"validation",roleId:"outline-requirement-calibration",status:"success",message:`大纲要求校准:新增 ${a.applied.reduce((a,b)=>a+b.sections.length,0)} 个评分项承接小节(结构守恒校验通过)`,details:a.applied.map(a=>`${(0,t.GQ)(a.chapterTitle)}:${a.sections.join("、")}`)},{subtitle:"大纲要求校准",order:_.length}))):(0,bj.fx)(_,(0,bj.X5)({type:"validation",roleId:"outline-requirement-calibration",status:"skipped",message:"大纲要求校准未通过结构守恒校验,回退原规划",details:["校准新增小节未通过章名匹配/标题清洗校验,全部丢弃"]},{subtitle:"大纲要求校准",order:_.length})),T()}else(0,bj.fx)(_,(0,bj.X5)({type:"validation",roleId:"outline-requirement-calibration",status:"skipped",message:"大纲要求校准未产出有效增量(章节结构已覆盖评分项要求或校准调用失败),回退原规划",details:[]},{subtitle:"大纲要求校准",order:_.length})),T()}let cq=await ab(cp),cr=cp.reduce((a,b,c)=>a+Math.max(0,(b.sections||[]).length-(cq[c]?.sections||[]).length),0);{let a=cn.report;a.unattached.length>0?(0,bj.fx)(_,(0,bj.X5)({type:"validation",roleId:"construction-org-outline-unattached",status:"success",message:`标准模块挂靠:${a.totals.attachedModules} 个模块、${a.totals.sectionCount} 个小节;${a.unattached.length} 个可选模块未挂靠(无语义匹配章节,已记录)`,details:a.unattached.map(a=>`未挂靠:${a.moduleTitle}(${a.sections.length} 小节,${a.level})`)},{subtitle:"标准模块挂靠"})):(0,bj.fx)(_,(0,bj.X5)({type:"validation",roleId:"construction-org-outline-attached",status:"success",message:`标准模块挂靠:${a.totals.attachedModules} 个模块、${a.totals.sectionCount} 个小节全部挂靠`,details:a.attached.map(a=>`${"fallback"===a.kind?"兜底挂靠":"挂靠"}:${a.moduleTitle} → ${a.chapterTitle}`)},{subtitle:"标准模块挂靠"}))}let cs=await (0,S.Mv)(b4.map(a=>a.title),cq.map(R.Yx)),ct=(0,R.KX)({template:p,chapters:cq,requirement:a.requirement,evaluationItems:b4,semanticSimilarity:cs});cb=(0,bh.w9)({chapters:ct.enrichedChapters,projectGraph:b_,canonicalFacts:b0}),cb=(0,R.ji)(cb);let cu=await ab(cb),cv=cb.reduce((a,b,c)=>a+Math.max(0,(b.sections||[]).length-(cu[c]?.sections||[]).length),0);cb=cu;let cw=cr+cv;cw>0&&((0,bj.fx)(_,(0,bj.X5)({type:"validation",roleId:"outline-topic-filter",status:"success",message:`大纲小节主题过滤:剔除 ${cw} 个评标纪律/商务报价类离题小节`,details:["被剔除小节不进入写作、目录与预算计划",...cv>0?[`评标结构校验补挂回路二次剔除:${cv} 个条款碎片/纪律小节`]:[]]},{subtitle:"大纲主题约束",order:_.length})),T()),(ct.issues.length>0||b6.issues.length>0)&&(0,bj.fx)(_,(0,bj.X5)({type:"validation",roleId:"bid-structure-audit",status:ct.issues.some(a=>"blocker"===a.severity)?"failed":"success",message:`评标结构符合性校验:${ct.diagnostics.length} 个结构组,${ct.diagnostics.filter(a=>"satisfied"===a.status).length} 个已满足,${ct.diagnostics.filter(a=>"missing"===a.status&&"required"===a.level).length} 个必查缺失(已自动补挂),${ct.diagnostics.filter(a=>"fragmented"===a.status).length} 个分散`,details:[...ct.diagnostics.map(a=>`${"satisfied"===a.status?"满足":"fragmented"===a.status?"分散":"补挂"}:${a.groupTitle}${"missing"===a.status?`(补挂小节:${a.missingSections.join("、")})`:""}`),...ct.issues.map(a=>`提示:${a.message}`).slice(0,8)]},{subtitle:"评标结构校验"})),p={...p,chapters:cb};let cx=await (0,S.Mv)(aW(cm).map(({item:a})=>aV(a)),cb.map(a=>a1(a.title))),cy=await a2(cm,cb,cx);cy.length>0&&((0,bj.fx)(_,(0,bj.X5)({type:"validation",roleId:"tender-requirement-routing",status:"success",message:`评分项要求章节级路由:${cy.length} 条要求已路由到责任章节(生成时显性响应)`,details:cy.map(a=>`${a.kind}“${a.item.text}” → ${a.chapterTitle}(相似度 ${a.score.toFixed(2)})`)},{subtitle:"要求响应路由",order:_.length})),T());let cz=await a9(),cA=await bf(),cB=function(a){let b=(0,Q.yt)({template:{id:"runtime",name:a.templateName||"",outputTitle:"",description:"",category:"",chapters:a.chapters},chapters:a.chapters,requirement:a.requirement}),c=/施工组织设计|施工组织|施组|技术标/u.test(`${a.templateName||""} ${a.requirement||""} ${a.chapters.map(a=>a.title).join(" ")}`)||b.length>0,d=Object.values(a.factsModel?.canonical?.byKey||{}).map(a=>`${a.label}=${a.value}`),e=d.filter(a=>/建设规模|建筑面积|占地|用地面积|装配|层数|高度/u.test(a)).slice(0,8),f=(a.tenderRequirements?.frontScheduleClauses||[]).map(a=>a.text).filter(Boolean).slice(0,12),g=["正文必须落到本项目资料已确认的事实,不得使用模板化空话或跨小节复制段落","措施类内容写成“责任岗位+执行动作+量化标准+检查频次+整改时限+复查销项”闭环句式:同一自然段内三要素(责任岗位+检查频次+整改闭环)须同时出现,全文每 1500 字至少 1 段闭环句式","正文每 1000 字至少落位 6 处带单位量化工艺参数(mm/MPa/养护天数/间距/压实度等),施工流程与施工方法须有明确的工序顺序表达(形式由模型自然选择、不做统一要求:顺序词叙述、编号步骤、有序/无序列表或箭头链均可),每个分部分项方案至少 1 处 3 环节以上工序顺序表达",'专业工程类小节按"施工概况/施工流程/施工方法"三段式展开,小节标题用专业工程正式名称(如"拆除工程"),禁止使用"工作包"等后台概念命名','质量目标与创优目标必须使用招标文件原文的奖项名称逐字落位,禁止替换、降级或省略为其他奖项名称(如把招标文件指定奖项写成其他奖项);招标文件"确保/达到"类等级要求不得弱化为"争创/争取"',...f.length?[`投标人须知前附表响应条款(正文必须逐条落位或遵守,零响应即评标失分):${f.map((a,b)=>`${b+1}.${a}`).join(";")}`]:[]],h=a.chapters.map(b=>{var c;let d=(c=b.title,bg.find(a=>a.pattern.test(c))),e=(a.projectGraph?.works||[]).filter(a=>a.name&&(b.title.includes(a.name.slice(0,2))||/概况|总体|施工内容|方案|施工/u.test(b.title))).slice(0,10),f=(a.projectGraph?.resources||[]).filter(a=>a.quantity&&/概况|资源|总体|施工内容|方案/u.test(b.title)).slice(0,12).map(a=>({itemCode:"",itemName:a.name,quantity:a.quantity,unit:a.unit}));return{chapterId:b.id,chapterTitle:b.title,writingGoal:d?.goal||"结合本章标题与项目资料事实展开专业内容,避免泛化叙述",mustCover:[...d?.mustCover||[],...(b.requiredFacts||[]).slice(0,6)],factDomains:[...b.requiredFacts||[],...e.map(a=>a.name)].slice(0,10),evidenceRefs:b.queries.slice(0,6).map(a=>({filePath:a,kind:"query",priority:"should"})),boqTargets:f,drawingTargets:[],gaps:[]}});return{documentType:c?"施工组织设计":"专业文档",globalWritingFocus:c?[...g,"招标硬性要求必须逐项明确响应:质量标准、计划工期、缺陷责任期与保修、安全文明目标、项目经理及组织机构;工期/质量/保修类承诺可在概况与质量章节落位,不得遗漏",...e.length?[`项目规模事实卡(口径裁决值,正文引用规模数据必须与之一致,不得混淆总占地与建筑总量口径):${e.join(";")}`]:[],...d.length?[`项目可信基础事实(写作时必须优先落位):${d.slice(0,10).join(";")}`]:[]]:g.slice(0,2),chapters:h}}({chapters:cb,factsModel:bZ,projectGraph:b_||void 0,requirement:a.requirement,templateName:p.name,tenderRequirements:cm}),cC=[...(0,cJ.$v)({templateName:p.name,chapterTitles:cb.map(a=>a.title),requirement:a.requirement,targetWords:ch.targetChars||0}),...(0,cJ.Al)({templateName:p.name,chapterTitles:cb.map(a=>a.title),requirement:a.requirement})];cC.length>0&&(0,bj.fx)(_,(0,bj.X5)({type:"validation",roleId:"reference-benchmark",status:"success",message:"已读取模板参考库同类工程画像,作为质量软性参考注入文档蓝图",details:cC},{subtitle:"参考画像注入",order:_.length}));let cD=P({template:p,chapters:cb,factsModel:bZ,requirement:a.requirement,referenceLines:cC,scopeConflicts:b0.scopeConflicts}),cE=function(a){if(!a||!aS(a))return"";let b=[],c=(a,c)=>{for(let d of c)b.push(`${a}:${d.text}${d.source?`(来源:${d.source})`:""}。`)};return(c("本项目创优目标(必须全文显性响应,质量目标章节必须逐条承接并配套创优保证措施;奖项名称必须与招标文件原文逐字一致,禁止替换、降级或省略为其他奖项名称,“确保/达到”不得弱化为“争创”)",a.awardObjectives),c("特殊质量标准(实质性要求,质量目标必须显性写明)",a.specialQualityStandards),c("奖项条款(与创优目标关联,创优保证措施须覆盖申报与兑现条件)",a.awardClauses),a.greenBuildingGrade&&b.push(`绿色建筑等级要求:${a.greenBuildingGrade.text}。必须编制系统性绿色施工保证方案(节能/节地/节水/节材/室内环境指标控制与验收),不得仅以单一指标替代整体响应。`),a.smartSiteGrade&&b.push(`智慧工地等级要求:${a.smartSiteGrade.text},智慧工地建设方案须达到该等级。`),a.assemblyRate&&b.push(`装配率要求:${a.assemblyRate.text},装配式施工方案须覆盖水平构件与相关部品。`),c("体系基准要求(必须逐项覆盖表述,不得零散遗漏)",a.systematicBenchmarks),c("投标人须知前附表响应条款(施组必须逐条响应或遵守,零响应即评标失分)",a.frontScheduleClauses),a.dateFabricationProhibited&&b.push("禁止编造开工日期:招标文件以开工令时间为准,正文不得自行设定具体日历开工日期,一律表述为“以开工令时间为准”。"),c("禁止性/约束性要求(正文不得违反)",a.prohibitionNotes),a.pageLimit&&b.push(`篇幅建议:${a.pageLimit.text},注意控制篇幅与语言精练度。`),a.evaluationScheme&&b.push(`评标办法已由系统消费为章节结构(六章),正文不得复述评标办法原文、分值构成与评审程序;各评审项内容要对应到具体章节并做到针对性强、可落地。`),0===b.length)?"":`【招标文件评分项要求(系统从绑定资料提取,必须逐条响应,零响应即评标失分)】
|
|
116
|
+
${(0,v.CK)(p)}`,aL||aM].filter(Boolean).join("\n\n"),a$=[aK,aY,(0,bk.fC)([...aa.extractionPrompts,...aa.referencePrompts])].filter(Boolean).join("\n\n"),a_=[aJ,aY,(0,bk.fC)([...aa.writerPrompts,...aa.chapterPrompts,...aa.formattingPrompts])].filter(Boolean).join("\n\n"),a0=[aJ,aY,(0,bk.fC)(aa.formattingPrompts)].filter(Boolean).join("\n\n");(0,bj.fx)(_,(0,bj.X5)({type:"validation",roleId:"document-preparation",status:"success",message:`模板规范与项目资料理解完成,识别 ${af.length} 份项目资料`,details:[`提示词绑定:${ae.length} 个`,`项目资料包:${aj.materialRoots.join("、")||"当前知识库"}`,at?`识别 OUTLINE 章节:${aq.length} 个`:"未识别显式 OUTLINE,使用模板章节"],progress:{current:3,total:3,label:"准备完成"}},{subtitle:"生成准备",order:_.length})),T();let a6=new Set(af),a7=new Map([...al.entries()].map(([a,b])=>[a,(0,bm._W)(b)])),a8=new Map([...am.entries()].map(([a,b])=>[a,b]));(0,bj.fx)(_,(0,bj.X5)({type:"knowledge_retrieval",roleId:"knowledge-index",status:"running",message:"正在读取项目资料包索引",details:["使用上传阶段已完成的解析、切片和索引结果","不在生成流程中重新解析或入库","准备按资料类型召回章节证据"],progress:{current:1,total:3,label:"读取索引"}},{subtitle:"知识库检索",order:_.length})),T();let ba=await V(()=>q.getProject(c)),bb=function(a,b){let c=new Set(b.filter(Boolean)),d=(a.listFiles?.()||[]).filter(a=>0===c.size||c.has(a.relativePath)),e=new Set(d.map(a=>a.relativePath)),f=[...c].filter(a=>!e.has(a)),g=d.filter(a=>0===Math.max(0,Math.ceil(Number(a.chunkCount)||0))).map(a=>a.relativePath),h=d.filter(a=>"error"===a.status).map(a=>a.relativePath),i="function"==typeof a.countPendingIndexJobs?a.countPendingIndexJobs():0,j="function"==typeof a.getVectorStatus?a.getVectorStatus():void 0,k=d.filter(a=>"error"!==a.status&&Math.max(0,Math.ceil(Number(a.chunkCount)||0))>0),l=k.map(a=>a.relativePath),m=k.reduce((a,b)=>a+Math.max(0,Math.ceil(Number(b.chunkCount)||0)),0),n=[...dO("部分绑定文件未完成索引,已自动跳过",f),...dO("部分绑定文件没有可用切片,已自动跳过",g),...dO("部分绑定文件索引失败,已自动跳过",h)],o=c.size>0&&0===m?["所有绑定文件均无可用切片"]:[],p=[...n,...i>0?[`仍有 ${i} 个待索引任务,建议等待索引完成后生成`]:[],...j&&"ready"!==j.status?[`向量索引状态为 ${j.status},当前召回质量可能下降`]:[]];return{scopedRecords:d,usablePaths:l,missingFiles:f,emptyFiles:g,errorFiles:h,pendingJobs:i,vectorStatus:j,usableChunkCount:m,blockingIssues:o,warnings:p}}(ba,[...a6]);if(bb.blockingIssues.length>0)throw Error(`生成前知识索引不可用:${bb.blockingIssues.join(";")}`);let bc=new Set(bb.usablePaths),bd=bP(o,[...bc]),be=dP(ba,[...bc],a.maxEvidencePerChapter),bo=bb.pendingJobs>0||0===bb.usableChunkCount,bp=function(a){let b=Math.max(0,Math.ceil(a.totalChunks||0)),c=Math.max(0,Math.ceil(a.loadedChunks||0)),d=Math.max(0,b-c),e=b>0?c/b:1,f=[...b>=1e3&&e<.35?["切片未完全预加载"]:[],...!1===a.vectorReady?["向量索引未就绪"]:[]];return{totalChunks:b,loadedChunks:c,omittedChunks:d,loadedRatio:e,highRisk:f.length>0,riskReason:f.join("、")||void 0}}({totalChunks:Math.min(bb.usableChunkCount,20*af.length),loadedChunks:Math.min(bb.usableChunkCount,20*af.length),vectorReady:bb.vectorStatus?"ready"===bb.vectorStatus.status:void 0});(0,bj.fx)(_,(0,bj.X5)({type:"knowledge_retrieval",roleId:"knowledge-index",status:bo?"failed":"success",message:`已读取知识索引:项目资料 ${bb.scopedRecords.length} 份,可用切片 ${bb.usableChunkCount} 条`,details:[`项目资料:${a6.size} 份`,`可用证据文件:${bc.size} 份`,`向量状态:${bb.vectorStatus?.status||"unknown"}`,...bb.warnings,"后续将按招标正文/清单/图纸/补疑等资料类型召回"],progress:{current:3,total:3,label:"索引已就绪"}},{subtitle:"知识库检索",order:_.length})),T(),(0,A.Te)(a.signal);let bq=[],br=[],bs={enabled:aR.enabled,queries:[],evidenceCount:0,filteredCount:0,chapters:[]},bt=[],bw=[],bx=[],by=[],bz=[],bC=-1,bD=new Map,bE=new Map,bG=a=>{let b=`${a}::full`;if(!bE.has(b))try{bE.set(b,ba.getFileDetail?.(a))}catch{bE.set(b,void 0)}return bE.get(b)},bH=async(a,b,d,e)=>{let f=dH(e),g=(0,A.c6)({query:a,scopedFilePaths:b,limit:d,weights:f,generationMode:!0}),h=bD.get(g);if(h)return h;let i=await q.search(c,a,{scope:"project",filters:{filePaths:b},limit:d,weights:f,generationMode:!0,disableReranker:!0}).catch(()=>null),j=i?.results||[];return bD.set(g,j),j},bI={stage:(0,bj.X5)({type:"file_understanding",roleId:"project-understanding",status:"success",message:`已完成项目资料理解:${aj.files.length} 份资料,${Object.values(aj.groups).filter(a=>a.length>0).length} 类资料类型`,details:ak.prompt.split("\n").slice(0,16)},{subtitle:"项目资料理解",order:_.length})};(0,bj.fx)(_,bI.stage),T();let bJ=bS(await c8({manager:q,project:ba,projectRoot:c,scopedFilePaths:[...a6].filter(Boolean).sort(),fileRoleByPath:a7,fileProcessingByPath:a8,signal:a.signal}),bd);bU(bJ,bd,"project-basic-evidence"),bJ.length>0&&(bq.push(...bJ),(0,bj.fx)(_,(0,bj.X5)({type:"knowledge_retrieval",roleId:"project-basic-evidence",status:"success",message:`已锁定项目基础事实证据 ${bJ.length} 条`,details:bJ.slice(0,8).map(a=>`${e.basename(a.filePath)}|${a.sectionTitle||"正文片段"}|score=${a.score.toFixed(2)}`)},{subtitle:"基础事实召回",order:_.length})),T());let{safe:bK,excluded:bL}=await Z(bq),bM=await $();bL.length>0&&((0,bj.fx)(_,(0,bj.X5)({type:"knowledge_retrieval",roleId:"evidence-content-safety",status:"success",message:`证据内容安全过滤:${bL.length} 条投标程序/评标纪律类证据已从写作链断开(系统侧提取通道不受影响)`,details:bL.slice(0,6).map(a=>`${e.basename(a.filePath)}|${a.sectionTitle||"正文片段"}`)},{subtitle:"证据内容安全",order:_.length})),T());let bO=bJ.filter(a=>!bL.includes(a)),bQ=new Set(bL.map(Y)),bR=bT(ai(bK,p,aF),bd),bV=bT(ar(bK),bd),bW=[...bR,...bV,...bT(as(bK,aG),bd)],bX=(0,es.hp)({projectRoot:c,template:p,requirement:a.requirement}),bY=[...bX?.facts||[],...bW],bZ=await aD(bY,bT(ah(bK),bd),bt,aF,aG),b$=(0,c2.Qu)({template:p,requirement:a.requirement,projectRoot:c,facts:bY,projectGraph:bX?.projectGraph,projectGraphSource:bX?"project-intelligence":void 0});for(let a of(0,c2.SU)(b$))(0,bj.fx)(_,a);bX&&(0,bj.fx)(_,(0,bj.X5)({type:"file_understanding",roleId:"project-intelligence-cache",status:"success",message:`已复用入库后项目理解资产与绑定 scope 快照:${bX.files.length} 份绑定资料`,details:[`项目级缓存时间:${new Date(bX.cache.createdAt).toLocaleString()}`,`scope 快照:${bX.scopeSnapshot.scopeHash.slice(0,12)}`,`复用预计算事实:${bX.facts.length} 条`,`复用预计算项目图谱:${bX.projectGraph.works.length}工程/${bX.projectGraph.methods.length}工法/${bX.projectGraph.resources.length}资源`,`复用施工组织设计专项图谱:${bX.constructionOrganizationGraph.workPackages.length} 个工作包/${bX.constructionOrganizationGraph.controlMatrix.length} 条控制矩阵`,`图谱来源:${bX.cache.projectGraphMessage}`,`章节意图证据覆盖:${Object.keys(bX.evidenceByChapterId||{}).length}/${p.chapters.length} 章`,`排除正文不适用资料:${bX.files.filter(a=>!a.usableForBody).length} 份`]},{subtitle:"项目理解缓存 / Scope 快照"})),T();let b_=b$.baseProjectGraph;if(!bX){(0,bj.fx)(_,(0,bj.X5)({type:"file_understanding",roleId:"project-graph",status:"running",message:`正在临时构建完整项目图谱:${bq.length} 条证据 → LLM 结构化提取`,details:["缓存缺失或版本过期,建议重新构建项目理解缓存;本次生成将临时构建完整项目图谱。","提取:工程内容、施工方法、材料设备、技术标准、重点难点"],progress:{current:2,total:3,label:"项目图谱"}},{subtitle:"项目资料图谱分析",order:_.length})),T();let b=await V(()=>(0,er.i)({evidence:bK,signal:a.signal,projectRoot:c,requirement:a.requirement,templateId:p.id}),_);if(!b.graph)throw Error(`完整项目图谱构建失败:${b.stage.message||b.stage.status}`);b_=b.graph,(0,bj.fx)(_,b.stage),T()}b_&&(ak=(0,bm._n)(p,aj,b_));let b0=function(a){var b;let c=(0,A.c6)({version:"canonical-facts-v7",rulesHash:(0,cQ.TG)(a.projectRoot),requirement:a.requirement||"",templateId:a.templateId||"",requiredKeys:a.requiredKeys||[],facts:a.facts.map(a=>({key:a.key,fieldId:a.fieldId,fieldName:a.fieldName,value:a.value,sourceFile:a.sourceFile,roleId:a.roleId,confidence:a.confidence})).sort((a,b)=>`${a.sourceFile}${a.key}${a.value}`.localeCompare(`${b.sourceFile}${b.key}${b.value}`)),graphHash:a.projectGraph?(0,A.c6)(a.projectGraph):"",markdownHash:a.markdown?(0,A.c6)(a.markdown.slice(0,2e4)):""}),d=function(a,b){let c=cX(a);if(c)try{let a=JSON.parse(ac.readFileSync(e.join(c,`canonical-facts-${b}.json`),"utf8"));return a&&a.byKey&&Array.isArray(a.scopeConflicts)?a:void 0}catch{return}}(a.projectRoot,c);if(d)return d;let f=a.facts||[],g=c$(f,(0,cQ.bC)(a.projectRoot));for(let a of g.map(a=>({caseType:"scope_conflict_arbitration",recordedAt:Date.now(),kind:a.kind,scope:a.scope,values:a.values.map(a=>({value:a.value,unit:a.unit,sourceFile:a.sourceFile,priority:a.priority})),winner:a.resolution,confidence:a.confidence,manualReviewRequired:!a.resolution})))cP("arbitration-cases.jsonl",a);let h=c1(f,g),i=cV({facts:h,markdown:a.markdown}),j={};for(let[a,b]of i.entries())j[a]=function(a){let b=a.source.includes("generated_markdown")?"generated_markdown":a.source.includes("evidence")?"evidence":"structured_fact";return{key:a.fieldKey,label:a.label,value:a.value,normalizedValue:ao(a.value),sourceType:b,sourceFile:a.source,confidence:a.confidence,priority:cW(b),locked:cW(b)>=80,selectedReason:a.selectedReason}}(b);if(j.project_scale){let a=j.project_scale;if(/占地|用地/u.test(a.value)&&/建筑面积/u.test(a.value)){let b=a.value.search(/(?:单体)?总?建筑面积/u);if(b>0){let c=an(a.value.slice(b)).trim();j.project_scale={...a,value:c,normalizedValue:ao(c),selectedReason:`${a.selectedReason};混合口径已净化,scale 只取建筑面积段`}}}}let k=[];for(let a of[{key:"project_name",label:"项目名称",pattern:/项目名称|工程名称|招标项目名称|project_name/u,bucket:"projectIdentity",valueType:"text"},{key:"project_code",label:"项目编号",pattern:/项目编号|招标项目编号|project_code/u,bucket:"projectIdentity",valueType:"identifier"},{key:"owner",label:"招标人",pattern:/招标人|建设单位|发包人|owner/u,bucket:"projectIdentity",valueType:"organization"},{key:"project_location",label:"建设地点",pattern:/建设地点|实施地点|project_location/u,bucket:"projectIdentity",valueType:"location"},{key:"project_scale",label:"建设规模",pattern:/建设规模|工程规模|project_scale/u,bucket:"projectScope",valueType:"scale"},{key:"construction_scope",label:"施工范围",pattern:/施工范围|招标范围|工程范围/u,bucket:"projectScope",valueType:"text"},{key:"duration",label:"计划工期",pattern:/计划工期|合同工期|总工期|schedule_requirement|duration/u,bucket:"schedule",valueType:"duration"},{key:"quality_target",label:"质量目标",pattern:/质量标准|质量目标|quality_standard/u,bucket:"quality",valueType:"standard"}]){let b=function(a,b,c,d,e){let f=cR.find(a=>a.key===b);return a.filter(a=>d.test(`${a.fieldId||""}${a.key||""}${a.fieldName||""}`)).map(a=>(function(a,b,c){let d=(0,A.lG)(a.value),e=function(a){let b=`${a.sourceFile||""} ${a.sourceRef?.sectionTitle||""} ${a.roleId||""}`;return/补疑|答疑|澄清|补充|更正|修改/u.test(b)?"addendum":/合同/u.test(b)?"contract":/招标|公告|前附表|需求书/u.test(b)?"tender":/清单|工程量|BOQ|报价/u.test(b)?"boq":/图纸|设计|CAD|DWG/u.test(b)?"drawing":/规范|标准/u.test(b)?"standard":"structured_fact"}(a);return{key:b,label:c,value:d,normalizedValue:ao(d),sourceType:e,sourceFile:a.sourceFile,sourceRef:a.sourceRef?.sectionTitle,confidence:Math.round(100*(a.confidence||.5)),priority:cW(e),locked:cW(e)>=80,selectedReason:"按资料来源优先级和字段置信度决策"}})(a,b,c)).filter(a=>a.value&&!/资料未明确|系统暂未确认/u.test(a.value)).filter(a=>{let d=e??f?.valueType;return!d||"text"===d||!cT(a.value,{key:b,label:c,aliases:[],valueType:d}).rejected}).sort((a,b)=>b.priority-a.priority||b.confidence-a.confidence||a.value.length-b.value.length)}(h,a.key,a.label,a.pattern,a.valueType);!j[a.key]&&b.length>0&&(j[a.key]=b[0]);let c=function(a,b,c){let d=[...new Map(c.map(a=>[a.normalizedValue,a])).values()];if(d.length<=1)return;let e=Math.max(...d.map(a=>a.priority)),f=d.filter(a=>a.priority===e);return{key:a,label:b,values:d.map(a=>({value:a.value,sourceFile:a.sourceFile,priority:a.priority,confidence:a.confidence})),decision:1===f.length?"highest_priority_selected":"manual_review_required"}}(a.key,a.label,b);c&&k.push(c)}let l=(b=a.projectGraph)?[...(b.resources||[]).map(a=>({key:`resource_${a.type}_${a.name}`,label:"equipment"===a.type?"机械设备":"labor"===a.type?"劳动力":"材料资源",value:[a.name,a.spec,a.quantity,a.unit].filter(Boolean).join(" "),normalizedValue:ao([a.name,a.spec,a.quantity,a.unit].filter(Boolean).join(" ")),sourceType:"projectGraph",sourceFile:a.sourceFiles?.[0],confidence:55,priority:cW("projectGraph"),locked:!1,selectedReason:"来自项目图谱资源节点"})).filter(a=>a.value),...(b.risks||[]).map(a=>({key:`risk_${a.risk}`,label:"风险源",value:[a.risk,a.level,a.mitigation].filter(Boolean).join(" "),normalizedValue:ao([a.risk,a.level,a.mitigation].filter(Boolean).join(" ")),sourceType:"projectGraph",sourceFile:a.sourceFiles?.[0],confidence:55,priority:cW("projectGraph"),locked:!1,selectedReason:"来自项目图谱风险节点"})).filter(a=>a.value)]:[],m=l.filter(a=>/resource_/u.test(a.key)),n=l.filter(a=>/risk_/u.test(a.key));for(let a of l)j[a.key]||(j[a.key]=a);let o=(a.requiredKeys||[]).filter(a=>!j[a]).map(a=>({key:a,label:cR.find(b=>b.key===a)?.label||a,reason:"未从用户输入、招标资料、清单、图纸或项目图谱中确认该事实"})),p={projectIdentity:{projectName:j.project_name,projectCode:j.project_code,owner:j.owner,location:j.project_location},projectScope:{scale:j.project_scale,constructionScope:j.construction_scope},schedule:{duration:j.duration||j.schedule_requirement},quality:{target:j.quality_target||j.quality_standard},safety:{risks:n},resources:{resources:m},environment:{},constraints:{},byKey:j,conflicts:k,gaps:o,scopeConflicts:g},q=cX(a.projectRoot);return q&&ac.writeFileSync(e.join(q,`canonical-facts-${c}.json`),JSON.stringify(p,null,2)),p}({facts:bY,projectGraph:b_,requiredKeys:cR.map(a=>a.key),projectRoot:c,requirement:a.requirement,templateId:p.id});bZ.canonical=b0;let b1=(0,t.effectiveTemplateChapters)(p,aF,{preserveExplicitOutline:at}),b2=(0,Q.dK)({template:p,chapters:b1,requirement:a.requirement}).chapters,b3=bq.filter(a=>/评审|评分标准|评分办法|详细评审/u.test(`${a.sectionTitle||""}${a.content}`)).map(a=>a.content),b4=(0,R.tL)(b3);b3.length>0&&0===b4.length&&(0,bj.fx)(_,(0,bj.X5)({type:"validation",roleId:"bid-structure-audit",status:"skipped",message:"评审章节证据存在但未提取到评分条目标题:评分标准编号条目提取为空,承接审计将静默通过",details:["请检查招标文件评标办法章节编号格式;评分项要求(创优目标/绿色等级/禁编日期)由评分项要求提取通道覆盖"]},{subtitle:"评标结构校验",order:_.length}));let b5=await (0,S.Mv)(b4.map(a=>a.title),b2.map(R.Yx)),b6=(0,R.KX)({template:p,chapters:b2,requirement:a.requirement,evaluationItems:b4,semanticSimilarity:b5}),b7=(async()=>{try{var b;let d,f=[];for(let a of[...a6].sort()){if(!/招标|补疑|答疑|评标/u.test(a))continue;let b=bG(a);if(b?.chunks?.length)for(let c of b.chunks)f.push({chapterId:"tender-requirements",filePath:b.file?.relativePath||a,score:1,content:c.content||"",roleId:a7.get(a),processingType:a8.get(a),sectionTitle:c.sectionTitle,source:"pinned-evidence"})}let g=f.length>0?await aO(f):(0,s.QR)([...bq.filter(a=>/招标|评标|投标须知|专用合同|合同条款|技术标准|技术要求/u.test(`${a.filePath||""}${a.sectionTitle||""}`)),...bq.filter(a=>!/招标|评标|投标须知|专用合同|合同条款|技术标准|技术要求/u.test(`${a.filePath||""}${a.sectionTitle||""}`))],{preservePinned:!0});if(f.length>0){let a=f.reduce((a,b)=>a+(b.content?.length||0),0),b=g.reduce((a,b)=>a+(b.content?.length||0),0);(0,bj.fx)(_,(0,bj.X5)({type:"validation",roleId:"tender-requirement-preselect",status:"success",message:`评分项要求有用数据预筛:${f.length} → ${g.length} 条切片(${Math.round(b/Math.max(1,a)*100)}% 字符量)`,details:["投标程序/清单/目录/格式类切片已从主提取输入剔除(义务词形+语义命中双通道保留)","全量切片仍作必提条款窄通道召回池,兜底不失效"]},{subtitle:"评分项要求提取",order:_.length})),T()}let h="0"!==process.env.DOCUMENT_EXTRACTION_CACHE?(b={collectionEvidence:f,preselectEvidence:g},(0,A.c6)({version:"tender-requirements-extraction-v1",collection:aU(b.collectionEvidence),preselectInput:aU(b.preselectEvidence)})):void 0,i=h?function(a,b){try{let c=e.join(aT(a),`tender-requirements-${b}.json`),d=JSON.parse(ac.readFileSync(c,"utf8"));if(!aS(d)||aQ(d))return;return d}catch{return}}(c,h):void 0;if(i)d=i,(0,bj.fx)(_,(0,bj.X5)({type:"validation",roleId:"tender-requirements-cache",status:"success",message:"复用上次提取结果(招标文件与预筛输入哈希命中,跳过主提取/窄通道 LLM)",details:a3(d)},{subtitle:"评分项要求提取",order:_.length})),T();else{d=await V(()=>aI(g,{signal:a.signal})),!aS(d)&&g.length>0&&(d=await V(()=>aI(g,{signal:a.signal})));let b=await aP(f);if(b.length>0&&aQ(d)){let c=await V(()=>aI(b,{signal:a.signal}));aS(c)?(d=function(a,b){let c=(a,b)=>a.length>0?a:b;return{...a,awardObjectives:c(a.awardObjectives,b.awardObjectives),specialQualityStandards:c(a.specialQualityStandards,b.specialQualityStandards),awardClauses:c(a.awardClauses,b.awardClauses),greenBuildingGrade:a.greenBuildingGrade||b.greenBuildingGrade,smartSiteGrade:a.smartSiteGrade||b.smartSiteGrade,assemblyRate:a.assemblyRate||b.assemblyRate,systematicBenchmarks:c(a.systematicBenchmarks,b.systematicBenchmarks),frontScheduleClauses:c(a.frontScheduleClauses,b.frontScheduleClauses),prohibitionNotes:c(a.prohibitionNotes,b.prohibitionNotes),pageLimit:a.pageLimit||b.pageLimit,evaluationScheme:a.evaluationScheme||b.evaluationScheme,dateFabricationProhibited:a.dateFabricationProhibited||b.dateFabricationProhibited,extracted:a.extracted||b.extracted}}(d,c),(0,bj.fx)(_,(0,bj.X5)({type:"validation",roleId:"tender-mandatory-extraction",status:"success",message:"必提条款窄通道补提完成(主提取漏提字段已补齐)",details:a3(c)},{subtitle:"评分项要求提取",order:_.length})),T(),aQ(d)&&((0,bj.fx)(_,(0,bj.X5)({type:"validation",roleId:"tender-mandatory-extraction",status:"skipped",message:"必提条款窄通道补提后仍有必提字段缺失(奖项/绿色等级/智慧工地/装配率等至少一项未提取到)",details:["请检查招标文件相关条款的切片完整性与提取输入;正文将无法显性响应该必提要求"]},{subtitle:"评分项要求提取",order:_.length})),T())):((0,bj.fx)(_,(0,bj.X5)({type:"validation",roleId:"tender-mandatory-extraction",status:"skipped",message:"必提条款窄通道提取未获得有效结果(召回证据存在但 LLM 提取失败)",details:["请检查 LLM 可用性与提取输入质量;必提字段缺失将影响正文显性响应"]},{subtitle:"评分项要求提取",order:_.length})),T())}h&&function(a,b,c){if(!(!c||!aS(c)||aQ(c)))try{ac.writeFileSync(e.join(aT(a),`tender-requirements-${b}.json`),JSON.stringify(c,null,2))}catch{}}(c,h,d)}return aS(d)?((0,bj.fx)(_,(0,bj.X5)({type:"validation",roleId:"tender-requirements-extraction",status:"success",message:"招标文件评分项要求结构化提取完成",details:a3(d)},{subtitle:"评分项要求提取",order:_.length})),T()):g.length>0&&((0,bj.fx)(_,(0,bj.X5)({type:"validation",roleId:"tender-requirements-extraction",status:"skipped",message:"评分项要求提取未获得有效结果(模型不可用或资料中无要求),零响应检测自动跳过",details:[]},{subtitle:"评分项要求提取",order:_.length})),T()),d}catch(a){return(0,bj.fx)(_,(0,bj.X5)({type:"validation",roleId:"tender-requirements-extraction",status:"skipped",message:"评分项要求提取链异常,已降级为空模型(零响应检测自动跳过)",details:[`异常信息:${a instanceof Error?a.message:String(a)}`,"请检查 LLM 可用性与本地语义模型状态"]},{subtitle:"评分项要求提取",order:_.length})),T(),aE(!1)}})(),b8=(0,bh.w9)({chapters:b6.enrichedChapters,projectGraph:b_,canonicalFacts:b0});p={...p,chapters:b8};let b9=(0,et.NP)({template:p,context:b$,title:p.name});b9.catch(()=>void 0);let ca=new Map;if(b_){let a=new Set;for(let b of[...b_.works,...b_.methods,...b_.resources,...b_.schedule,...b_.standards,...b_.risks,...b_.requirements,...b_.siteConditions])(b.sourceFiles||[]).forEach(b=>a.add(b));for(let b of b8){let c=[b.title,b.purpose,...b.sections||[],...b.requiredFacts||[],...b.queries||[]].join(" "),d=a=>a&&((0,ev.C1)(a,c,.18)||(0,ev.C1)(a,b.title,.12)),e=/概况|总体|部署|施工|进度|工期|质量|安全|资源|人材机|材料|机械|劳动力|风险|危大|绿色|环保/u.test(c),f=b_.works.filter(a=>a.name&&(d(a.name)||e)),g=b_.methods.filter(a=>a.name&&(d(a.name)||(a.applicableWorks||[]).some(d)||e)),h=b_.resources.filter(a=>a.name&&(d(a.name)||/资源|人材机|材料|机械|劳动力/u.test(c)&&/material|equipment|labor/u.test(a.type))),i=b_.gaps.filter(a=>!(0,es.Ut)(a)&&(d(a)||e)),j=new Set;for(let a of f)(a.sourceFiles||[]).forEach(a=>j.add(a));for(let a of g)(a.sourceFiles||[]).forEach(a=>j.add(a));for(let a of h)(a.sourceFiles||[]).forEach(a=>j.add(a));0===j.size&&e&&[...a].forEach(a=>j.add(a)),ca.set(b.id,{graphFiles:j,graphBoqItems:h.map(a=>({name:a.name,quantity:a.quantity,unit:a.unit,sourceFiles:a.sourceFiles||[]})),graphWorks:f.map(a=>a.name),graphMethods:g.map(a=>a.name),gaps:i})}bX||((0,bj.fx)(_,(0,bj.X5)({type:"file_understanding",roleId:"project-graph-match",status:"success",message:`图谱→章节映射完成:${b_.works.length}工程 ${b_.methods.length}工法 ${b_.resources.length}资源 → ${b8.length}章`,details:b8.map(a=>{let b=ca.get(a.id);return`${(0,t.GQ)(a.title)}:匹配文件${b?.graphFiles.size||0}个,BOQ项${b?.graphBoqItems.length||0}个`})},{subtitle:"图谱章节映射"})),T())}let cb=b8,cc=(0,es.TD)(bX?.constructionOrganizationGraph)||bX?.constructionOrganizationContext,cd=[ak.prompt,cc].filter(Boolean).join("\n\n"),ce=[cd,P({template:{...p,chapters:cb},chapters:cb,factsModel:bZ,requirement:a.requirement,scopeConflicts:b0.scopeConflicts})].filter(Boolean).join("\n\n"),cf={...p,chapters:cb},cg=(0,a4.My)([aZ,a.requirement||""].filter(Boolean).join("\n\n"),cb),ch=(0,w.tF)({requirement:a.requirement,promptTexts:aZ,template:cf,chapters:cb,spec:aF}),ci=0,cj=0,ck=[],cl=await (0,A.l$)(cb.map((a,b)=>({chapter:a,chapterIndex:b})),async({chapter:b,chapterIndex:c})=>{if(b.sections?.length){ci+=1;let a=cg.filter(a=>a.chapterIndex===c||a.chapterTitle&&(0,t.GQ)(a.chapterTitle)===(0,t.GQ)(b.title)).flatMap(a=>a.requiredSections.sort((a,b)=>(a.order||0)-(b.order||0)).map(a=>a.title));for(let c of[...a,...b.sections]){let a=(0,a4.EN)(String(c).trim());a&&a!==String(c).trim()&&ck.push(`${(0,t.GQ)(b.title)}:${c} → ${a}`)}let d=(0,a4.k2)([...a,...b.sections],b.title);return{...b,sections:d.length?d:(0,a4.k2)(b.sections,b.title)}}cj+=1;let d=(0,s.QR)(bK.filter(a=>a.chapterId===b.id||(0,u.Lk)(a,b.title)),{preservePinned:!0}),e=ak.chapterPlans.find(a=>a.chapterId===b.id)?.writingGoal||"",f=dB(aa,b),g=await (0,a4.SP)({template:cf,chapter:b,chapterIndex:c,evidence:d,promptTexts:f.promptTexts,projectContext:ce,requirement:a.requirement,roleContext:e,targetWords:ch.chapterTargets.get(b.id)||1200,structuralRules:cg,signal:a.signal}),h=cg.filter(a=>a.chapterIndex===c||a.chapterTitle&&(0,t.GQ)(a.chapterTitle)===(0,t.GQ)(b.title)).flatMap(a=>a.requiredSections.map(a=>`强制小节:${a.title}`));if((0,bj.fx)(_,(0,bj.X5)({type:"validation",roleId:"section-planning",promptId:f.primaryPromptId,status:g.length?"success":"failed",message:`${(0,t.GQ)(b.title)} 小节规划${g.length?`生成 ${g.length} 个小节`:"未生成可用小节"}`,details:[...f.promptDetails,...h,...g.length?g.map(a=>`规划小节:${a}`):["规划结果为空或被污染过滤"]]},{subtitle:"小节规划"})),!g.length)throw Error(`${(0,t.GQ)(b.title)} 小节规划未生成可用小节`);return{...b,sections:g}},{kind:"llmRepair",targetWords:ch.targetChars||4e3}),cm=await b7,cn=(0,Q.dK)({template:p,chapters:cl,requirement:a.requirement}),co="0"!==process.env.DOCUMENT_REQUIREMENT_CALIBRATION,cp=cn.chapters;if(co&&aS(cm)){let b=await V(()=>a5({chapters:cn.chapters,requirementSummary:a3(cm),templateName:p.name,signal:a.signal}));if(b.length>0){let a=function(a,b){if(!b.length)return{chapters:a,applied:[]};let c=[],d=a.map(a=>({...a,sections:[...a.sections||[]]}));for(let a of b){let b=d.findIndex(b=>(0,t.GQ)(b.title)===(0,t.GQ)(a.chapterTitle)||(0,a4.nz)(b.title)===(0,a4.nz)(a.chapterTitle));if(b<0)continue;let e=d[b],f=a.sections.filter(a=>!(e.sections||[]).some(b=>(0,a4.kw)(b,a)));0!==f.length&&(e.sections.push(...f),c.push({chapterTitle:a.chapterTitle,sections:f}))}return a.every((a,b)=>{let c=d[b];return!!c&&(a.sections||[]).every(a=>(c.sections||[]).some(b=>(0,a4.kw)(b,a)))})?{chapters:d,applied:c}:{chapters:a,applied:[]}}(cn.chapters,b);a.applied.length>0?(cp=a.chapters,(0,bj.fx)(_,(0,bj.X5)({type:"validation",roleId:"outline-requirement-calibration",status:"success",message:`大纲要求校准:新增 ${a.applied.reduce((a,b)=>a+b.sections.length,0)} 个评分项承接小节(结构守恒校验通过)`,details:a.applied.map(a=>`${(0,t.GQ)(a.chapterTitle)}:${a.sections.join("、")}`)},{subtitle:"大纲要求校准",order:_.length}))):(0,bj.fx)(_,(0,bj.X5)({type:"validation",roleId:"outline-requirement-calibration",status:"skipped",message:"大纲要求校准未通过结构守恒校验,回退原规划",details:["校准新增小节未通过章名匹配/标题清洗校验,全部丢弃"]},{subtitle:"大纲要求校准",order:_.length})),T()}else(0,bj.fx)(_,(0,bj.X5)({type:"validation",roleId:"outline-requirement-calibration",status:"skipped",message:"大纲要求校准未产出有效增量(章节结构已覆盖评分项要求或校准调用失败),回退原规划",details:[]},{subtitle:"大纲要求校准",order:_.length})),T()}let cq=await ab(cp),cr=cp.reduce((a,b,c)=>a+Math.max(0,(b.sections||[]).length-(cq[c]?.sections||[]).length),0);{let a=cn.report;a.unattached.length>0?(0,bj.fx)(_,(0,bj.X5)({type:"validation",roleId:"construction-org-outline-unattached",status:"success",message:`标准模块挂靠:${a.totals.attachedModules} 个模块、${a.totals.sectionCount} 个小节;${a.unattached.length} 个可选模块未挂靠(无语义匹配章节,已记录)`,details:a.unattached.map(a=>`未挂靠:${a.moduleTitle}(${a.sections.length} 小节,${a.level})`)},{subtitle:"标准模块挂靠"})):(0,bj.fx)(_,(0,bj.X5)({type:"validation",roleId:"construction-org-outline-attached",status:"success",message:`标准模块挂靠:${a.totals.attachedModules} 个模块、${a.totals.sectionCount} 个小节全部挂靠`,details:a.attached.map(a=>`${"fallback"===a.kind?"兜底挂靠":"挂靠"}:${a.moduleTitle} → ${a.chapterTitle}`)},{subtitle:"标准模块挂靠"}))}let cs=await (0,S.Mv)(b4.map(a=>a.title),cq.map(R.Yx)),ct=(0,R.KX)({template:p,chapters:cq,requirement:a.requirement,evaluationItems:b4,semanticSimilarity:cs});cb=(0,bh.w9)({chapters:ct.enrichedChapters,projectGraph:b_,canonicalFacts:b0}),cb=(0,R.ji)(cb);let cu=await ab(cb),cv=cb.reduce((a,b,c)=>a+Math.max(0,(b.sections||[]).length-(cu[c]?.sections||[]).length),0);cb=cu;let cw=cr+cv;cw>0&&((0,bj.fx)(_,(0,bj.X5)({type:"validation",roleId:"outline-topic-filter",status:"success",message:`大纲小节主题过滤:剔除 ${cw} 个评标纪律/商务报价类离题小节`,details:["被剔除小节不进入写作、目录与预算计划",...cv>0?[`评标结构校验补挂回路二次剔除:${cv} 个条款碎片/纪律小节`]:[]]},{subtitle:"大纲主题约束",order:_.length})),T()),(ct.issues.length>0||b6.issues.length>0)&&(0,bj.fx)(_,(0,bj.X5)({type:"validation",roleId:"bid-structure-audit",status:ct.issues.some(a=>"blocker"===a.severity)?"failed":"success",message:`评标结构符合性校验:${ct.diagnostics.length} 个结构组,${ct.diagnostics.filter(a=>"satisfied"===a.status).length} 个已满足,${ct.diagnostics.filter(a=>"missing"===a.status&&"required"===a.level).length} 个必查缺失(已自动补挂),${ct.diagnostics.filter(a=>"fragmented"===a.status).length} 个分散`,details:[...ct.diagnostics.map(a=>`${"satisfied"===a.status?"满足":"fragmented"===a.status?"分散":"补挂"}:${a.groupTitle}${"missing"===a.status?`(补挂小节:${a.missingSections.join("、")})`:""}`),...ct.issues.map(a=>`提示:${a.message}`).slice(0,8)]},{subtitle:"评标结构校验"})),p={...p,chapters:cb};let cx=await (0,S.Mv)(aW(cm).map(({item:a})=>aV(a)),cb.map(a=>a1(a.title))),cy=await a2(cm,cb,cx);cy.length>0&&((0,bj.fx)(_,(0,bj.X5)({type:"validation",roleId:"tender-requirement-routing",status:"success",message:`评分项要求章节级路由:${cy.length} 条要求已路由到责任章节(生成时显性响应)`,details:cy.map(a=>`${a.kind}“${a.item.text}” → ${a.chapterTitle}(相似度 ${a.score.toFixed(2)})`)},{subtitle:"要求响应路由",order:_.length})),T());let cz=await a9(),cA=await bf(),cB=function(a){let b=(0,Q.yt)({template:{id:"runtime",name:a.templateName||"",outputTitle:"",description:"",category:"",chapters:a.chapters},chapters:a.chapters,requirement:a.requirement}),c=/施工组织设计|施工组织|施组|技术标/u.test(`${a.templateName||""} ${a.requirement||""} ${a.chapters.map(a=>a.title).join(" ")}`)||b.length>0,d=Object.values(a.factsModel?.canonical?.byKey||{}).map(a=>`${a.label}=${a.value}`),e=d.filter(a=>/建设规模|建筑面积|占地|用地面积|装配|层数|高度/u.test(a)).slice(0,8),f=(a.tenderRequirements?.frontScheduleClauses||[]).map(a=>a.text).filter(Boolean).slice(0,12),g=["正文必须落到本项目资料已确认的事实,不得使用模板化空话或跨小节复制段落","措施类内容写成“责任岗位+执行动作+量化标准+检查频次+整改时限+复查销项”闭环句式:同一自然段内三要素(责任岗位+检查频次+整改闭环)须同时出现,全文每 1500 字至少 1 段闭环句式","正文每 1000 字至少落位 6 处带单位量化工艺参数(mm/MPa/养护天数/间距/压实度等),施工流程与施工方法须有明确的工序顺序表达(形式由模型自然选择、不做统一要求:顺序词叙述、编号步骤、有序/无序列表或箭头链均可),每个分部分项方案至少 1 处 3 环节以上工序顺序表达",'专业工程类小节按"施工概况/施工流程/施工方法"三段式展开,小节标题用专业工程正式名称(如"拆除工程"),禁止使用"工作包"等后台概念命名','质量目标与创优目标必须使用招标文件原文的奖项名称逐字落位,禁止替换、降级或省略为其他奖项名称(如把招标文件指定奖项写成其他奖项);招标文件"确保/达到"类等级要求不得弱化为"争创/争取"',...f.length?[`投标人须知前附表响应条款(正文必须逐条落位或遵守,零响应即评标失分):${f.map((a,b)=>`${b+1}.${a}`).join(";")}`]:[]],h=a.chapters.map(b=>{var c;let d=(c=b.title,bg.find(a=>a.pattern.test(c))),e=(a.projectGraph?.works||[]).filter(a=>a.name&&(b.title.includes(a.name.slice(0,2))||/概况|总体|施工内容|方案|施工/u.test(b.title))).slice(0,10),f=(a.projectGraph?.resources||[]).filter(a=>a.quantity&&/概况|资源|总体|施工内容|方案/u.test(b.title)).slice(0,12).map(a=>({itemCode:"",itemName:a.name,quantity:a.quantity,unit:a.unit}));return{chapterId:b.id,chapterTitle:b.title,writingGoal:d?.goal||"结合本章标题与项目资料事实展开专业内容,避免泛化叙述",mustCover:[...d?.mustCover||[],...(b.requiredFacts||[]).slice(0,6)],factDomains:[...b.requiredFacts||[],...e.map(a=>a.name)].slice(0,10),evidenceRefs:b.queries.slice(0,6).map(a=>({filePath:a,kind:"query",priority:"should"})),boqTargets:f,drawingTargets:[],gaps:[]}});return{documentType:c?"施工组织设计":"专业文档",globalWritingFocus:c?[...g,"招标硬性要求必须逐项明确响应:质量标准、计划工期、缺陷责任期与保修、安全文明目标、项目经理及组织机构;工期/质量/保修类承诺可在概况与质量章节落位,不得遗漏",...e.length?[`项目规模事实卡(口径裁决值,正文引用规模数据必须与之一致,不得混淆总占地与建筑总量口径):${e.join(";")}`]:[],...d.length?[`项目可信基础事实(写作时必须优先落位):${d.slice(0,10).join(";")}`]:[]]:g.slice(0,2),chapters:h}}({chapters:cb,factsModel:bZ,projectGraph:b_||void 0,requirement:a.requirement,templateName:p.name,tenderRequirements:cm}),cC=[...(0,cJ.$v)({templateName:p.name,chapterTitles:cb.map(a=>a.title),requirement:a.requirement,targetWords:ch.targetChars||0}),...(0,cJ.Al)({templateName:p.name,chapterTitles:cb.map(a=>a.title),requirement:a.requirement})];cC.length>0&&(0,bj.fx)(_,(0,bj.X5)({type:"validation",roleId:"reference-benchmark",status:"success",message:"已读取模板参考库同类工程画像,作为质量软性参考注入文档蓝图",details:cC},{subtitle:"参考画像注入",order:_.length}));let cD=P({template:p,chapters:cb,factsModel:bZ,requirement:a.requirement,referenceLines:cC,scopeConflicts:b0.scopeConflicts}),cE=function(a){if(!a||!aS(a))return"";let b=[],c=(a,c)=>{for(let d of c)b.push(`${a}:${d.text}${d.source?`(来源:${d.source})`:""}。`)};return(c("本项目创优目标(必须全文显性响应,质量目标章节必须逐条承接并配套创优保证措施;奖项名称必须与招标文件原文逐字一致,禁止替换、降级或省略为其他奖项名称,“确保/达到”不得弱化为“争创”)",a.awardObjectives),c("特殊质量标准(实质性要求,质量目标必须显性写明)",a.specialQualityStandards),c("奖项条款(与创优目标关联,创优保证措施须覆盖申报与兑现条件)",a.awardClauses),a.greenBuildingGrade&&b.push(`绿色建筑等级要求:${a.greenBuildingGrade.text}。必须编制系统性绿色施工保证方案(节能/节地/节水/节材/室内环境指标控制与验收),不得仅以单一指标替代整体响应。`),a.smartSiteGrade&&b.push(`智慧工地等级要求:${a.smartSiteGrade.text},智慧工地建设方案须达到该等级。`),a.assemblyRate&&b.push(`装配率要求:${a.assemblyRate.text},装配式施工方案须覆盖水平构件与相关部品。`),c("体系基准要求(必须逐项覆盖表述,不得零散遗漏)",a.systematicBenchmarks),c("投标人须知前附表响应条款(施组必须逐条响应或遵守,零响应即评标失分)",a.frontScheduleClauses),a.dateFabricationProhibited&&b.push("禁止编造开工日期:招标文件以开工令时间为准,正文不得自行设定具体日历开工日期,一律表述为“以开工令时间为准”。"),c("禁止性/约束性要求(正文不得违反)",a.prohibitionNotes),a.pageLimit&&b.push(`篇幅建议:${a.pageLimit.text},注意控制篇幅与语言精练度。`),a.evaluationScheme&&b.push(`评标办法已由系统消费为章节结构(六章),正文不得复述评标办法原文、分值构成与评审程序;各评审项内容要对应到具体章节并做到针对性强、可落地。`),0===b.length)?"":`【招标文件评分项要求(系统从绑定资料提取,必须逐条响应,零响应即评标失分)】
|
|
117
117
|
${b.map((a,b)=>`${b+1}. ${a}`).join("\n")}
|
|
118
118
|
${(0,A.TP)("以上为系统提取的评分项要求内容:实质要求(奖项名称、数字参数、等级指标等)必须显性响应进正文;本段提示词文字本身(编号、括号说明等元话语)禁止复述进正文")}`}(cm);ce=[cd,cD,cE].filter(Boolean).join("\n\n");let cF=function(a){let b=N(a.factsModel),c=b.selected,d=b.dropped.length>0?[`⚠️ 因 LLM 上下文预算限制,${b.dropped.length} 个低优先级事实未纳入蓝图;完整事实主表可在生成后的事实覆盖报告查看。`]:[],e=D(a),f={};for(let b of M)f[b]=new Set(a.factsModel[b]);let g=a.chapters.map((b,d)=>{let e=c.filter(a=>!!f.preciseFacts.has(a)||E(b.title).some(b=>(L[b]||[]).some(b=>f[b]?.has(a))));return{chapterIndex:d,title:b.title,facts:e,traceLines:e.map((a,b)=>O(a,b)),taskCard:J(b),executionPlan:I(b,a.factsModel)}});return{globalLines:["【全局文档蓝图与一致性约束】",`文档类型画像:${e.type};评分重点:${e.focus.join("、")}`,`文档目标:${a.template.outputTitle||a.template.name}`,a.requirement?`用户目标:${a.requirement}`:"",(0,z.FI)({templateName:a.template.name,outputTitle:a.template.outputTitle,requirement:a.requirement,chapters:a.chapters}),(0,A.TP)("证据引用约束:工期、质量目标、招标范围、金额、工程量、验收要求等项目专属事实必须来自可信基础事实主表或绑定材料,系统暂未确认的数字和参数不得编造;标准规范编号、法律法规名称属于公共专业知识,可依据现行有效版本直接引用,不要求材料提供,但不得虚构编号或引用已废止版本。"),(0,A.TP)("跨章一致性要求:所有章节必须共用同一套工期、质量、范围、资源和验收口径;不得在不同章节写出相互矛盾的项目基础信息。"),(0,A.TP)('总述数据使用约束:可信基础事实主表中的工程地点、建设规模(总建筑面积)、计划工期、改造范围等总述数据,只在项目概况/工程概况类章节集中交代;其他章节不得以"本项目为……"开头复述完整概况段,确需数据支撑时只引用所需的具体数字。'),...a.scopeConflicts?.length?[`【源级口径冲突裁决(最高优先级约束)】资料文件中存在同口径数值冲突,必须按下述裁决执行:
|
|
119
119
|
${K(a.scopeConflicts).join("\n")}`]:[],...a.referenceLines?.length?[`同类工程质量参考(软性参考,事实仍以知识库证据为准):
|
|
@@ -9,12 +9,12 @@ ${c}`:b}function x(a,b){let c=b;for(let b of a){if(/项目主要施工内容/u.t
|
|
|
9
9
|
#### ${b}
|
|
10
10
|
|
|
11
11
|
${d.trim()}
|
|
12
|
-
`)}return c}function y(a){return(0,f.lg)(a)}function z(a){return/项目管理组织|组织架构|岗位职责|施工部署|施工流水|交通组织|人车分流/u.test(a)}function A(a){return/项目特点.*重点.*难点|重点.*难点.*分析/u.test(a)?"关键小节结构要求:必须分为“项目特点分析、施工重点识别、施工难点及应对措施、重点难点与施工内容对应关系”。\n必须落位项目具体数据:项目名称、建设地点、建筑面积、层数、结构形式、装配式范围、计划工期、质量标准、施工专业范围、现场场地约束、既有管网接驳等已确认事实。\n必须用正式表格或分项清单表达:重点/难点、形成原因、影响范围、对应施工内容、控制措施、责任岗位、验收节点。":/项目主要施工内容/u.test(a)?"关键小节结构要求:必须参照优秀施工组织设计的“主要施工内容”写法,按当前项目资料识别专业工程/分部分项工作包,不得只写综合概述。\n每个工作包固定采用段落式三段:施工概况、施工流程、施工方法;不得使用 Markdown 表格,避免导出时产生表格分隔线残留。\n施工概况必须写清对象范围、工程量或规模、材料设备规格、施工部位;施工流程必须有明确的工序顺序表达(形式由模型自然选择:顺序词叙述、编号步骤、有序/无序列表或箭头链均可);施工方法必须写工艺做法、穿插组织、质量验收、检测复试、资料闭环。\n工作包类别必须从资料事实中识别,可覆盖但不限于结构加固、消防、装饰、水电、通风空调、弱电智能化、室外道排、屋面、立面、附属工程。":/主要分部分项工程施工方案|主要施工方法/u.test(a)?"关键小节结构要求:必须按专业工程和关键工序展开,不得只写概述流程。\n必须覆盖资料明确的专业工程范围。\n必须逐项响应“项目特点、重点、难点分析”中的控制对象,写明施工范围、施工方法、工艺流程、关键控制点、检查验收和资料闭环。":""}function B(a){return(0,f.ap)(a)}function C(a,b){return Math.min(24e3,Math.max(5e3,Math.ceil(1.45*(b||a))))}},25284:(a,b,c)=>{c.d(b,{TD:()=>
|
|
12
|
+
`)}return c}function y(a){return(0,f.lg)(a)}function z(a){return/项目管理组织|组织架构|岗位职责|施工部署|施工流水|交通组织|人车分流/u.test(a)}function A(a){return/项目特点.*重点.*难点|重点.*难点.*分析/u.test(a)?"关键小节结构要求:必须分为“项目特点分析、施工重点识别、施工难点及应对措施、重点难点与施工内容对应关系”。\n必须落位项目具体数据:项目名称、建设地点、建筑面积、层数、结构形式、装配式范围、计划工期、质量标准、施工专业范围、现场场地约束、既有管网接驳等已确认事实。\n必须用正式表格或分项清单表达:重点/难点、形成原因、影响范围、对应施工内容、控制措施、责任岗位、验收节点。":/项目主要施工内容/u.test(a)?"关键小节结构要求:必须参照优秀施工组织设计的“主要施工内容”写法,按当前项目资料识别专业工程/分部分项工作包,不得只写综合概述。\n每个工作包固定采用段落式三段:施工概况、施工流程、施工方法;不得使用 Markdown 表格,避免导出时产生表格分隔线残留。\n施工概况必须写清对象范围、工程量或规模、材料设备规格、施工部位;施工流程必须有明确的工序顺序表达(形式由模型自然选择:顺序词叙述、编号步骤、有序/无序列表或箭头链均可);施工方法必须写工艺做法、穿插组织、质量验收、检测复试、资料闭环。\n工作包类别必须从资料事实中识别,可覆盖但不限于结构加固、消防、装饰、水电、通风空调、弱电智能化、室外道排、屋面、立面、附属工程。":/主要分部分项工程施工方案|主要施工方法/u.test(a)?"关键小节结构要求:必须按专业工程和关键工序展开,不得只写概述流程。\n必须覆盖资料明确的专业工程范围。\n必须逐项响应“项目特点、重点、难点分析”中的控制对象,写明施工范围、施工方法、工艺流程、关键控制点、检查验收和资料闭环。":""}function B(a){return(0,f.ap)(a)}function C(a,b){return Math.min(24e3,Math.max(5e3,Math.ceil(1.45*(b||a))))}},25284:(a,b,c)=>{c.d(b,{TD:()=>B,Tt:()=>w,Ut:()=>y,Xc:()=>C,b3:()=>E,hp:()=>D});var d=c(73024),e=c(76760),f=c(19898),g=c(44533),h=c(37095),i=c(32434),j=c(70963),k=c(92817),l=c(22157);let m="project-intelligence-v10",n="material-scope-v5";function o(a){let b=e.join((0,g.a2)(),"projects",(0,f.computeProjectId)(a),"project-intelligence");return d.mkdirSync(b,{recursive:!0}),d.mkdirSync(e.join(b,"scopes"),{recursive:!0}),b}function p(a){return e.join(o(a),"project-intelligence.json")}function q(a,b){return e.join(o(a),"scopes",`${b}.json`)}function r(a){return a.replace(/资料参数行摘要\s*[::]?/gu,"").replace(/#{1,6}\s*/gu," ").replace(/[##]{1,6}(?=[\u4e00-\u9fa5])/gu," ").replace(/(?:PDF\s*)?第\s*\d+\s*页(?:\s*共\s*\d+\s*页)?/giu," ").replace(/资料类型\s*[::]\s*[^\s;;]+/giu," ").replace(/MIME\s*[::]\s*[^\s;;]+/giu," ").replace(/文件大小\s*[::]\s*[^\s;;]+/giu," ").replace(/(?:项目编号|招标编号|备案编号|工程编号)\s*[::]\s*[^\s;;,。]+/giu," ").replace(/\s+/gu," ").trim()}function s(a){return/投标函|保证金|开标|评标|交易系统|账户|协议书|示范文本|报价|税率|利润|我方已仔细研究|中标|签订合同|专用账户监管|联合体投标|注册建造师|安全生产考核合格证书|安全生产许可证|营业执照|资质要求|投标人资格|资格审查|资格后审|资格预审|业绩要求|信誉要求|财务要求|投标有效期|投标截止|递交投标文件|递交电子投标文件|获取招标文件|获取方式|获取时间|踏勘现场|投标预备会|备选投标方案|分包内容|电子交易系统|电子服务系统|联系方式|联系人|邮编|技术支持|全流程电子化交易|异议|投诉|评标委员会|评标办法|公告发布|媒介|咨询电话|拨打电话|招标工程量清单|最高投标限价|不可竞争费|招标总说明|招标需求|招标范围|招标控制价|编制补疑|计价依据|计价定额|措施项目费|暂列金额|投标总价|综合单价|计价格式|取费标准|清单编制说明|招标文件正文|招标图纸目录|投标人/u.test(a)}function t(a){let b=[],c=(c,d,e=.72)=>{d&&b.push({key:c,value:d,sourceFile:a.relativePath,roleId:a.roles[0]||"project_overview",processingType:"project_intelligence",confidence:e})};for(let b of(c("资料文件",a.fileName,.6),a.root&&c("资料组",a.root,.65),a.roles))c("资料角色",b,.58);for(let b of a.contentFacts)c("资料内容事实",b,.76);for(let b of a.chapterHints)c("章节意图候选",b,.68);let d=a.relativePath.match(/([^/\\]*项目[^/\\]*)/u)?.[1]||a.root;return d&&c("项目名称候选",d,.62),b}function u(a){return(0,l.c6)(a.map(a=>({path:a.relativePath,hash:a.contentHash,chunkCount:a.chunkCount,status:a.status})).sort((a,b)=>a.path.localeCompare(b.path)))}function v(a,b){let c=new Map((0,g.Yy)(a).map(a=>[a.relativePath,a]));return b.every(a=>{let b=c.get(a.relativePath);return b&&"error"!==b.status&&"disk"!==b.status&&Number(b.chunkCount||0)===a.chunkCount&&(b.contentHash||"")===(a.contentHash||"")})}function w(a){let b=p(a);if(d.existsSync(b))try{return function(a,b){if(b.version!==m||!b.projectGraph||!Array.isArray(b.files)||0===b.files.length)return;let c=u(b.files);if(c!==u((0,g.Yy)(a).filter(a=>"disk"!==a.status&&"error"!==a.status&&Number(a.chunkCount||0)>0).map(a=>({relativePath:a.relativePath,contentHash:a.contentHash,chunkCount:a.chunkCount,status:a.status,indexedAt:a.indexedAt}))))return;let e=b.constructionOrganizationGraph||A(b.projectGraph,b.files),h={...b,version:m,projectRoot:a,projectId:b.projectId||(0,f.computeProjectId)(a),sourceHash:c,constructionOrganizationGraph:e};return b.version===m&&b.constructionOrganizationGraph&&b.sourceHash===c||d.writeFileSync(p(a),JSON.stringify(h,null,2)),h}(a,JSON.parse(d.readFileSync(b,"utf8")))}catch{return}}let x=/评标办法|评标(?:委员会|细则)|评分档位|分值构成|地质勘察|地勘|土壤氡/u;function y(a){return x.test(a.replace(/\s+/gu," "))}function z(a,b){return[...new Set(a.map(a=>a.replace(/\s+/gu," ").trim()).filter(Boolean))].slice(0,b)}function A(a,b){let c=new Map(b.map(a=>[a.relativePath,a.contentFacts])),d=new Set(b.map(a=>a.root).filter(Boolean)),e=new Set(b.map(a=>a.fileName).filter(Boolean)),f=a=>/资料文件|资料组|资料角色|资料内容事实|章节意图候选|项目名称候选/u.test(a),g=(a,b)=>z(a,b).filter(a=>!(s(a)||f(a))&&!/\d+\s*[.、]/u.test(a.split(/[::]/u).slice(1).join(":"))),h=new Map;for(let a of b){if(!/工程量清单EXCEL/iu.test(a.relativePath)||!/\.xls$/iu.test(a.relativePath))continue;let b=a.relativePath.split("/"),c=b[b.length-1]||"",d=(b[b.length-2]||"").replace(/^\d+\s*/,"").trim()||c.replace(/\.xls$/iu,"").trim();!d||/项目施工$|清单编制说明|图纸目录|可调整价差|汇总|一览表/u.test(d)||(h.has(d)||h.set(d,[]),h.get(d).push(a.relativePath))}let i=new Map;for(let b of a.works)for(let a of b.sourceFiles||[])i.has(a)||i.set(a,b.scope||"");let j=[],k=new Set,l=(b,h,i,l=[])=>{if(!b||k.has(b)||d.has(b)||e.has(b)||/投标|报价|保证金|合同协议|账户|开标|评标|资质要求|资格审查|资料目录|招标范围|招标需求|招标总说明|最高投标限价|不可竞争费|补疑|清单编制说明|图纸目录/u.test(`${b}${i||""}`)||/项目施工$/u.test(b.trim()))return;let m=g([...l,...(h||[]).flatMap(a=>c.get(a)||[])],16),n=`${b}
|
|
13
13
|
${i||""}
|
|
14
|
-
${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:
|
|
14
|
+
${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:z(a.standards.map(a=>a.description||a.code).filter(Boolean),4),safetyControls:z([b.mitigation,...a.requirements.filter(a=>/安全|风险|危大|消防|应急/u.test(a.category+a.detail)).map(a=>a.detail)],4)})),qualityControls:z([...a.standards.map(a=>a.description||a.code),...a.requirements.filter(a=>/质量|验收|复试|检测/u.test(a.category+a.detail)).map(a=>a.detail)],18),safetyControls:z([...a.risks.map(a=>`${a.risk}:${a.mitigation}`),...a.requirements.filter(a=>/安全|危大|消防|应急|文明/u.test(a.category+a.detail)).map(a=>a.detail)],18),resourcePlans:z(a.resources.map(a=>`${a.name}${a.spec?`|${a.spec}`:""}${a.quantity?`|${a.quantity}${a.unit||""}`:""}`),24),acceptanceRecords:z([...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 B(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 C(a){let b=await (0,g.Qh)().getProject(a),c=(0,g.Yy)(a).filter(a=>"disk"!==a.status&&"error"!==a.status&&Number(a.indexedAt||0)>0&&Number(a.chunkCount||0)>0).map(a=>{var c;let d=a.relativePath.split(/[\\/]/u).filter(Boolean)[0],f=function(a){let b=new Set(["project_overview"]);return/招标|发包人要求|答疑|补疑|澄清/u.test(a)&&b.add("tender_requirement"),/图纸|设计说明|施工图|道路|桥梁|园林|交通|结构/u.test(a)&&b.add("drawing"),/清单|工程量|xls|xlsx/u.test(a)&&b.add("boq"),/质量|验收|规范|标准/u.test(a)&&b.add("quality_standard"),/安全|危大|风险|文明|环保/u.test(a)&&b.add("safety_requirement"),/施工|方案|组织|进度|工期|材料|机械|劳动力/u.test(a)&&b.add("construction_method"),[...b]}(a.relativePath),g=b.listChunksSampled({relativePath:a.relativePath,sampleSize:64}),h=g.map(a=>r(String(a.content||""))).filter(Boolean).slice(0,48),i=(c=a.relativePath,/投标函|我方已仔细研究/u.test(c)?"投标函/承诺格式,不进入施工正文":/保证金|账户|协议书|资金托管/u.test(c)?"资金账户/保证金资料,不进入施工正文":/开标|评标|交易系统|示范文本/u.test(c)?"招投标流程/示范文本,不进入施工正文":/报价|税率|利润|最高投标限价|招标控制价|计价依据|计价定额/u.test(c)?"商务报价资料,不进入施工正文":/招标文件正文|清单编制说明|招标总说明|招标需求/u.test(c)?"招标说明/清单编制说明,不进入施工正文":void 0),j=/\.(?:xlsx?|csv|tsv)$/iu.test(a.relativePath),k=i?[]:j?function(a){let b=new Set,c=/工程名称|序号|项目编码|项目名称|项目特征|计量\s*单位|工程量|金额|综合单价|合价|人工费|机械费|暂估价|分部小计|本页|续表|合计|汇总/u;for(let d of a)for(let a of String(d.content||"").split(/\r?\n/u)){let d=a.trim();if(!d.startsWith("|"))continue;let e=d.split("|").map(a=>a.trim());if(e.length<7)continue;let f=e.slice(1,-1),g=f[0]||"",h=f[2]||"",i=f[3]||"",j=f[4]||"",k=f[5]||"";if(!/^\d+$/.test(g)||!h||!i||c.test(`${h}${i}`))continue;let l=i.replace(/\s+/gu," ").replace(/[,,;;]?\s*(?:\d+[、..]\s*)?(?:未尽事宜|具体详见|详见)[^,,;;]*?,?满足验收要求/gu,"").replace(/[,,;;]?\s*(?:\d+[、..]\s*)?含拆除、垃圾打堆、外弃[^,,;;]*/gu,"").replace(/[,,;;]?\s*投标人(?:结合设计图纸、地勘报告)?(?:自行)?踏勘现场后综合考虑/gu,"").replace(/[||]+/gu," ").replace(/\s*\d+[..]\s*$/gu,"").replace(/[。.]\s*$/gu,"").replace(/\s+/gu," ").trim();if(l.length<2)continue;let m=k&&j?`${k}${j}`:k||j,n=`${h}:${l.slice(0,80)}${m?`|${m}`:""}`;if(!(n.replace(/[^0-9a-zA-Z\u4e00-\u9fa5]/gu,"").length<4)&&(b.add(n),b.size>=40))return[...b]}return[...b]}(g):function(a){let b=new Set;for(let c of a){for(let a of c.split(/[。;;\n]/u)){let c=r(a);if(!(c.length<12||c.length>180||s(c))&&!(/^(?:项目编号|招标编号|备案编号|工程编号|资料名称|文档名称|文件名称|文档类型|文件类型|创建时间|修改时间|编制单位|编制日期)\s*[::]/u.test(c)||/^[##]{1,6}/u.test(c))&&(/(项目|工程|道路|桥梁|园林|交通|结构|排水|照明|绿化|工期|质量|安全|危大|材料|机械|劳动力|验收|规范|清单|工程量|施工)/u.test(c)&&b.add(c),b.size>=18))break}if(b.size>=18)break}return[...b]}(h),l=function(a,b){let c=`${a}
|
|
15
15
|
${b.join("\n")}`,d=new Set,e=(a,b)=>{b.test(c)&&d.add(a)};return e("工期进度",/工期|进度|节点|计划|流水|穿插/u),e("质量验收",/质量|验收|检验|试验|复试|见证取样|规范|标准/u),e("安全危大",/安全|危大|风险|脚手架|深基坑|吊装|临电|消防/u),e("施工部署",/部署|总平面|临设|场地|组织|施工顺序/u),e("施工方法",/施工方法|施工工艺|道路|桥梁|排水|照明|园林|绿化|交通|结构/u),e("人材机",/劳动力|材料|机械|设备|周转|进场|资源/u),e("环境文明",/环保|扬尘|文明|噪声|水土保持|绿色施工/u),e("工程概况",/项目|工程|建设地点|建设规模|招标范围|发包人要求/u),[...d]}(a.relativePath,k),m=function(a,b){let c=`${a}
|
|
16
|
-
${b.join("\n")}`,d=new Set;return/工期|进度|节点|计划/u.test(c)&&d.add("确保工期的保障体系与措施"),/质量|验收|复试|见证取样|规范|标准/u.test(c)&&d.add("确保质量的保障体系与措施"),/安全|危大|风险|应急|临电|消防/u.test(c)&&d.add("确保安全生产的管理体系与措施"),/劳动力|材料|机械|设备|周转|资源/u.test(c)&&d.add("确保人、材、机的保障体系与措施"),/施工方法|施工工艺|道路|桥梁|排水|照明|园林|绿化/u.test(c)&&d.add("主要分部分项工程施工方案"),/环保|扬尘|文明|绿色/u.test(c)&&d.add("环境保护与文明施工措施"),/项目|工程|建设地点|建设规模|招标范围/u.test(c)&&d.add("工程概况与施工部署"),[...d]}(a.relativePath,k);return{relativePath:a.relativePath,root:d,fileName:e.basename(a.relativePath),category:a.category,format:a.format,chunkCount:a.chunkCount,indexedAt:a.indexedAt,contentHash:a.contentHash,status:a.status,roles:f,usableForBody:!i,excludeReason:i,summarySignals:h,contentFacts:k,intentTags:l,chapterHints:m}}),h=c.flatMap(t),k=c.flatMap(a=>a.intentTags.flatMap(b=>a.contentFacts.slice(0,10).map((c,d)=>({intent:b,filePath:a.relativePath,title:a.fileName,content:c,score:.82-.025*d,roleId:a.roles[0]})))),l={selectedRoots:[...new Set(c.map(a=>a.root).filter(Boolean))],selectedFiles:c.map(a=>a.relativePath),totalAvailableFiles:c.length,ambiguous:!1,locked:!0,reason:"项目入库完成后预计算的项目级资料范围",rejectedRoots:[],scopeHash:u(c)},n=(0,i.hw)(a,l),o=(0,i.rj)({facts:h,materialSnapshot:n}),q=await (0,j.i)({evidence:c.flatMap(a=>a.contentFacts.slice(0,10).map((b,c)=>({chapterId:"project-intelligence",filePath:a.relativePath,content:b,score:.82-.02*c,roleId:a.roles[0],processingType:"project_intelligence",source:"project-intelligence"}))),projectRoot:a,requirement:"项目入库后预计算项目图谱",templateId:"project-intelligence"});if(!q.graph)throw Error(`项目图谱预计算失败:${q.stage.message||q.stage.status}`);let v=function(a,b){let c=(a,b)=>{let c=new Map;for(let d of[...a,...b]){let a=JSON.stringify(d);c.has(a)||c.set(a,d)}return[...c.values()]},d=c(a.schedule,b.schedule),e=c(a.standards,b.standards),f=c(a.siteConditions,b.siteConditions),g=[...d.flatMap(a=>[a.duration,a.milestone].filter(Boolean)),...e.flatMap(a=>[a.code,a.description].filter(Boolean)),...f.flatMap(a=>[a.condition,a.impact].filter(Boolean))].map(a=>a.replace(/\s+/gu,"")),h=[...new Set([...a.gaps||[],...b.gaps||[]])].filter(a=>{let b=a.replace(/\s+/gu," ");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);return!(a.length>0&&a.every(a=>g.some(b=>b.includes(a))))}return!(/计划工期/u.test(b)&&d.length>0||/质量标准/u.test(b)&&e.length>0||/建设地点/u.test(b)&&f.length>0)});return{works:c(a.works,b.works),methods:c(a.methods,b.methods),resources:c(a.resources,b.resources),schedule:d,standards:e,siteConditions:f,risks:c(a.risks,b.risks),requirements:c(a.requirements,b.requirements),addendumChanges:c(a.addendumChanges,b.addendumChanges),gaps:h,generatedAt:b.generatedAt||Date.now()}}(o,q.graph),w=q.stage.message||"项目图谱已预计算",x=
|
|
17
|
-
${b.join("\n")}`,d=new Set,e=(a,b)=>{b.test(c)&&d.add(a)};return e("工期进度",/工期|进度|计划|节点/u),e("质量验收",/质量|验收|复试|见证|控制点/u),e("安全危大",/安全|危大|风险|应急/u),e("施工部署",/部署|总平面|施工组织|现场/u),e("施工方法",/施工方案|施工方法|分部分项|工艺|新技术|新工艺/u),e("人材机",/人材机|劳动力|材料|机械|周转|人、材、机|人员设备/u),e("环境文明",/环保|文明|扬尘|绿色/u),e("工程概况",/概况|工程特点|重点|难点|整体理解|项目理解|工程理解|项目概况/u),[...d]}(c.title,c.sections||[]);if(0===d.length)continue;let e=new Set(d),f=a.entries.filter(b=>a.selected.has(b.filePath)&&e.has(b.intent)).sort((a,b)=>b.score-a.score).slice(0,24).map(a=>({chapterId:c.id,filePath:a.filePath,score:a.score,content:a.content,roleId:a.roleId,processingType:"project_intelligence",sectionTitle:a.intent,source:"project-intelligence"}));f.length&&(b[c.id]=f)}return b}({template:a.template,entries:a.cache.chapterIntentIndex||[],selected:b}),i={version:n,projectRoot:a.projectRoot,createdAt:Date.now(),scopeHash:a.scopeHash,selectedRoots:a.selectedRoots,selectedFiles:a.selectedFiles,sourceHash:(0,l.c6)(c.map(a=>({path:a.relativePath,hash:a.contentHash,chunkCount:a.chunkCount})).sort((a,b)=>a.path.localeCompare(b.path))),files:c,facts:e,projectGraph:f,constructionOrganizationGraph:g,evidenceByChapterId:h,blueprint:{projectNames:[...new Set(e.filter(a=>/项目名称/u.test(a.key)).map(a=>a.value))].slice(0,8),roots:[...new Set(c.map(a=>a.root).filter(Boolean))],usableFiles:c.filter(a=>a.usableForBody).length,excludedFiles:c.filter(a=>!a.usableForBody).length,intentTags:[...new Set(c.flatMap(a=>a.intentTags))],signals:c.flatMap(a=>a.contentFacts.slice(0,2)).slice(0,24)}};return d.writeFileSync(q(a.projectRoot,a.scopeHash),JSON.stringify(i,null,2)),i}({projectRoot:a.projectRoot,template:a.template,cache:b,selectedFiles:c.selectedFiles,selectedRoots:c.selectedRoots,scopeHash:e});if(f)return{cache:b,scope:c,scopeSnapshot:f,files:f.files,facts:f.facts,evidenceByChapterId:f.evidenceByChapterId,projectGraph:f.projectGraph,constructionOrganizationGraph:f.constructionOrganizationGraph,constructionOrganizationContext:z(f.constructionOrganizationGraph),blueprint:f.blueprint}}function C(a){let b=`project-intelligence-${Date.now()}`;(0,h.Qf)(a,{id:b,type:"reindex",title:"项目理解缓存",stage:"generating",status:"processing",percent:5,message:"正在构建项目级蓝图、图谱、事实索引和章节意图索引"}),A(a).then(c=>{(0,h.Qf)(a,{id:b,type:"reindex",title:"项目理解缓存",stage:"done",status:"success",percent:100,message:`项目理解缓存完成:${c.fileCount} 份资料,${c.facts.length} 条事实,${c.chapterIntentIndex.length} 条章节意图证据`})}).catch(c=>{let d=c instanceof Error?c.message:String(c);(0,h.Qf)(a,{id:b,type:"reindex",title:"项目理解缓存",stage:"error",status:"error",percent:100,message:d,error:d}),console.warn("[project-intelligence] build failed",d)})}},28366:(a,b,c)=>{c.d(b,{TG:()=>j,bC:()=>i,ip:()=>g});var d=c(73024),e=c(76760),f=c(22157);let g={factGovernance:{thresholdComparison:"不低于|不少于|不高于|不超过|不得少于|不得高于|不得小于|不小于|不大于|大于等于|小于等于|≥|≤|≧|≦|以上|及以上|以内|之内",amendmentContext:"修正|调整|变更|更改|更正|改为|澄清|更新|修订",aspirationalPrefix:"拟|规划|目标|力争|预计|期望|远期|未来|设想|建议|预期|争取|拟建|规划建设",addendumSource:"补疑|答疑|澄清|补充|更正|修改",weakAnchorGapThreshold:9},writingSpec:{criticalSectionAnchors:["主要施工内容","工程概况","项目概况","重点难点","危大工程","应急预案","施工部署","总平面","主要分部分项工程施工方案","主要施工方法"],majorContentSection:"项目主要施工内容",divisionSection:"主要分部分项工程施工方案|主要施工方法",divisionProcessLabel:"工艺流程|施工流程",criticalDeepSections:["项目特点.*重点.*难点|重点.*难点.*分析","项目主要施工内容","主要分部分项工程施工方案|主要施工方法","危大工程专项施工方案审批流程","原材料进场复试|见证取样"],blockerMinChars:{emergency:650,majorContent:1800,division:1200,focus:1500},divisionQuality:{blockerMinPackages:3,minPackages:5,minParamsPerPackage:4,minArrowChainLength:4,minPackageChars:150,balanceRatio:1/3},writeRules:{majorContent:"【项目主要施工内容专项结构】只能根据绑定材料中的当前项目事实识别施工对象和工作包;不得套用固定行业模板,不得复述完整工程概况,不得写“以图纸清单为准”式空话;不得使用 Markdown 表格。必须按专业工程/分部分项工程逐项展开,每项使用“#### 工作包名称”作为三级小节标题,并固定包含“施工概况:”“施工流程:”“施工方法:”三段。工作包小节必须与上下文“主要施工工作包”列表一一对应,每个工作包只允许展开一次;严禁把同一个工作包以“X工程”“X工作包”两种口径重复写成两个小节,也不得新增图谱之外的工作包小节。施工概况必须写该工作包对应的本项目作业对象、部位、规模/工程量、材料设备或系统边界,写成连贯叙述段落,不得出现“1.xxx 2.xxx”编号清单或“xxx|工程量”式清单原文罗列;施工流程必须使用“→”串联关键工序;施工方法必须写成连贯叙述,落到具体工具机具、测量/检测方法、工艺参数、材料规格、穿插关系、质量验收、复试检测和资料闭环,方法叙述中的连续工序序列同样用“→”串联(如“基层清理→放线定位→分层摊铺→碾压→压实度检测→验收”),每个工作包的方法段正文至少 1 条不少于 4 个环节的箭头工序链,不得只把箭头局限在施工流程行;每个工作包施工方法必须落位至少 3 个具体工艺参数(厚度、间距、偏差、含水率、饱满度、坡度、压实度等),参数来自绑定材料或行业通用规范值,禁止“按规范施工”“结合实际执行”式空话,严禁把工程量清单条目原样罗列成“xxx:2台;xxx:1台;”式参数堆砌。施工方法写法样例(句式参照,内容按本项目事实替换):“配电箱采用挂墙方式安装,箱体中心距地1.5m,盘面垂直度偏差不超过1.5/1000;柜内元器件按系统图接线,导线分色标识,接线紧固力矩按规格控制;安装完成后进行绝缘电阻测试并形成通电试运行记录。”至少形成 5 个施工工作包,工作包必须来自绑定材料证据。",division:"【主要分部分项工程施工方案专项要求】每个“#### 分项工程方案”三级小节必须包含施工概况(本项目作业对象、部位、工程量)、工艺流程(用“→”串联关键工序)和施工方法(工具机具、材料规格、验收标准)。严禁用“**分项名**”粗体行代替“#### 分项名”小节标题,也不得把多个分项合并写在一个段落里。施工方法叙述中的连续工序序列同样用“→”串联(如“基层清理→放线定位→分层摊铺→碾压→压实度检测→验收”),每个分项方案的方法段正文至少 1 条不少于 4 个环节的箭头工序链,不得只把箭头局限在工艺流程行;每个分项方案正文必须落位至少 4 个工艺参数(mm、MPa、间距、偏差、坡度、养护天数、试验压力、搭接长度等),参数来自绑定材料或行业通用规范值,不得编造;纯设备配置型小节必须写型号、规格、容量、数量参数;不得写“按规范施工”“结合实际执行”式空话。分项间深度必须均衡:门窗维修、立面修补、设备安装等小分项同样要写足施工概况、工艺流程、施工方法三段(每个分项不少于 150 字),不得一句话带过;严禁写“其他专业工序引用相应章节内容”“详见相关章节”等自我消解语,工艺流程只能在本分项方案内展开,不得另行拆节复述。"}}},h=new Map;function i(a){let b=h.get(a);if(b)return b;let c=g,f=function(a){if(a)return e.join(a,".customize-agent","workflow-rules.json")}(a);if(f&&d.existsSync(f))try{let a=JSON.parse(d.readFileSync(f,"utf8"));c=function(a,b){if(!b)return a;let c={...a.factGovernance,...b.factGovernance||{}},d={...a.writingSpec.blockerMinChars,...b.writingSpec?.blockerMinChars||{}},e={...a.writingSpec.divisionQuality,...b.writingSpec?.divisionQuality||{}},f={...a.writingSpec.writeRules,...b.writingSpec?.writeRules||{}};return{factGovernance:c,writingSpec:{...a.writingSpec,...b.writingSpec||{},blockerMinChars:d,divisionQuality:e,writeRules:f}}}(g,a)}catch{}return h.set(a,c),c}function j(a){return(0,f.c6)(i(a))}},32434:(a,b,c)=>{c.d(b,{IA:()=>w,Qu:()=>t,SU:()=>v,ZR:()=>n,cN:()=>u,hw:()=>o,rj:()=>s});var d=c(76760),e=c(44533),f=c(61373),g=c(80439),h=c(22157);let i=/知识库|系统暂未|项目资料暂未|资料未明确|暂未明确|待确认|待资料复核|待系统|通用兜底(?:段落|模板)?|兜底(?:占位|模板|内容)|未检索到|资料不足|无法确认|建议补充|不适用|COL\d+|可核验信息|以本项目招标文件明确内容为准/u;function j(a){return a.replace(/\\/gu,"/").replace(/^\/+|\/+$/gu,"")}function k(a){let b=j(a).split("/").filter(Boolean);return b.length>1?b[0]:d.basename(b[0]||"当前项目")}function l(a){return a.replace(/[\s_\-—()()【】、,,.。·]/gu,"").replaceAll("[","").replaceAll("]","").toLowerCase()}function m(a){return"disk"!==a.status&&"error"!==a.status&&Number(a.indexedAt||0)>0&&Number(a.chunkCount||0)>0}function n(a,b,c=""){let d=(0,e.Yy)(a).filter(m),f=(b.projectBindings||[]).filter(a=>a.materialRootPath).map(a=>({materialRootPath:j(a.materialRootPath)})).map(a=>a.materialRootPath).filter(Boolean),g=f.length?d.filter(a=>f.some(b=>j(a.relativePath)===b||j(a.relativePath).startsWith(`${b}/`))):d,i=function(a){let b=new Map;for(let c of a){let a=k(c.relativePath);b.set(a,[...b.get(a)||[],c])}return b}(g),o=c.trim(),p=[...i.keys()];if(o){let a=[...i.entries()].map(([a,b])=>({root:a,files:b,score:function(a,b){let c=l(a),d=l(b);if(c.length>=4&&d.includes(c.slice(0,Math.min(16,c.length))))return 100;let e=new Set(["项目","工程","施工","总承包","资料","招标","图纸","清单"]);return a.split(/(?:\s|_|-|—|(|)|\(|\)|【|】|\[|\]|、|,|,|\.)+/u).filter(a=>a.length>=2&&!e.has(a)).reduce((a,c)=>a+(b.includes(c)?Math.min(20,c.length):0),0)}(a,o)})).filter(a=>a.score>0).sort((a,b)=>b.score-a.score);if(1===a.length||a.length>1&&a[0].score>a[1].score){let b=[a[0].root],c=a[0].files.map(a=>a.relativePath);return{selectedRoots:b,selectedFiles:c,totalAvailableFiles:d.length,ambiguous:!1,locked:!0,reason:`用户需求唯一匹配资料组:${a[0].root}`,rejectedRoots:p.filter(a=>!b.includes(a)),scopeHash:(0,h.c6)({selectedRoots:b,selectedFiles:c})}}if(a.length>1){let b=a.filter(b=>b.score===a[0].score).map(a=>a.root);return{selectedRoots:[],selectedFiles:[],totalAvailableFiles:d.length,ambiguous:!0,locked:!1,reason:`用户需求同时匹配多个资料组:${b.join("、")}`,rejectedRoots:p,scopeHash:(0,h.c6)({ambiguous:!0,selectedRoots:b})}}}if(1===f.length){let a=g.map(a=>a.relativePath);return{selectedRoots:f,selectedFiles:a,totalAvailableFiles:d.length,ambiguous:!1,locked:!0,reason:`模板绑定唯一资料组:${f[0]}`,rejectedRoots:p.filter(a=>!f.includes(a)),scopeHash:(0,h.c6)({selectedRoots:f,selectedFiles:a})}}return{selectedRoots:[],selectedFiles:[],totalAvailableFiles:d.length,ambiguous:!0,locked:!1,reason:f.length>1?`模板绑定多个资料组但需求未唯一指定:${f.join("、")}`:"未绑定资料组且需求未唯一指定资料范围,禁止回退全量资料",rejectedRoots:p,scopeHash:(0,h.c6)({ambiguous:!0,boundRoots:f,requirement:c})}}function o(a,b){let c=new Map((0,e.Yy)(a).map(a=>[a.relativePath,a])),f=b.selectedFiles.map(a=>{let b=c.get(a),e=Number(b?.chunkCount||0);return{path:a,root:k(a),fileName:d.basename(a),chunkCount:e,indexedAt:b?.indexedAt,status:b?.status,hash:(0,h.c6)({filePath:a,chunkCount:e,indexedAt:b?.indexedAt,status:b?.status})}});return{files:f,totalFiles:f.length,totalChunks:f.reduce((a,b)=>a+b.chunkCount,0),roots:[...new Set(f.map(a=>a.root))],createdAt:Date.now(),snapshotHash:(0,h.c6)(f.map(a=>({path:a.path,hash:a.hash})))}}function p(a,b){return a.filter(a=>b.test(`${a.fieldId||""} ${a.fieldName||""} ${a.key} ${(0,h.lG)(a.value)}`))}function q(a){return(0,h.lG)(a.value).replace(/\s+/gu," ").trim()}let r=new Set(["资料文件","资料组","资料角色","资料内容事实","章节意图候选","项目名称候选"]);function s(a){let b=a.facts.filter(a=>!r.has(a.key)&&q(a)),c=p(b,/项目名称|工程名称|招标项目名称|建设地点|建设规模|招标范围|施工范围|建设内容/u),d=p(b,/工期|日历天|进度|开工|竣工/u),e=p(b,/质量|验收|合格|标准|规范/u),f=p(b,/清单|工程量|材料|设备|机械|劳动力|资源/u),g=p(b,/安全|文明|环保|危大|风险/u),h=c.slice(0,8).map(a=>`${a.key}:${q(a)}`).join(";");return{works:h?[{name:a.materialSnapshot.roots[0]||"当前项目",scope:h,sourceFiles:[...new Set(c.map(a=>a.sourceFile).filter(Boolean))],relatedItems:f.slice(0,8).map(a=>q(a))}]:[],methods:[],resources:f.slice(0,30).map(a=>({name:a.key,type:"material",spec:q(a),quantity:"",unit:"",sourceFiles:a.sourceFile?[a.sourceFile]:[]})),schedule:d.slice(0,10).map(a=>({milestone:a.key,duration:q(a),startDate:"",endDate:"",sourceFiles:a.sourceFile?[a.sourceFile]:[]})),standards:e.slice(0,16).map(a=>({code:a.key,description:q(a),sourceFiles:a.sourceFile?[a.sourceFile]:[]})),risks:g.slice(0,16).map(a=>({risk:q(a),level:"medium",mitigation:"",sourceFiles:a.sourceFile?[a.sourceFile]:[]})),requirements:p(b,/招标|投标|合同|承包|响应|要求|补疑|澄清|答疑/u).slice(0,20).map(a=>({category:a.key,detail:q(a),sourceFiles:a.sourceFile?[a.sourceFile]:[]})),siteConditions:p(b,/现场|周边|交通|既有|保护|场地/u).slice(0,12).map(a=>({condition:q(a),impact:"",sourceFiles:a.sourceFile?[a.sourceFile]:[]})),addendumChanges:[],gaps:[],generatedAt:Date.now()}}function t(a){let b=n(a.projectRoot,a.template,a.requirement||"");if(b.ambiguous||!b.locked||0===b.selectedFiles.length)throw Error(`资料范围未锁定:${b.reason}`);let c=o(a.projectRoot,b),d=a.projectGraph||s({facts:a.facts,materialSnapshot:c,requirement:a.requirement}),e=a.projectGraph?"project-graph":"project-graph-runtime",f=a.projectGraph?"预处理完整项目图谱":"运行期项目图谱草案",g=Date.now();return{runId:`run-${g}-${(0,h.c6)({templateId:a.template.id,requirement:a.requirement||"",scopeHash:b.scopeHash}).slice(0,8)}`,templateId:a.template.id,requirement:a.requirement||"",projectRoot:a.projectRoot,materialScope:b,materialSnapshot:c,nodes:[{id:"material-scope",type:"material_scope",status:"completed",startedAt:g,completedAt:g,outputSummary:b.reason,metrics:{selectedFiles:b.selectedFiles.length,rejectedRoots:b.rejectedRoots.length}},{id:"material-snapshot",type:"material_snapshot",status:"completed",startedAt:g,completedAt:g,outputSummary:`${c.totalFiles} 份资料,${c.totalChunks} 个切片`,metrics:{totalFiles:c.totalFiles,totalChunks:c.totalChunks}},{id:e,type:"project_graph",status:"completed",startedAt:g,completedAt:g,outputSummary:`${f}:${d.works.length}工程 ${d.resources.length}资源 ${d.schedule.length}工期 ${d.standards.length}标准`,metrics:{facts:a.facts.length,precomputed:!!a.projectGraph,source:a.projectGraphSource||"runtime"}}],facts:a.facts,baseProjectGraph:d,issues:[],createdAt:g}}function u(a,b=200,c=50){if(a.nodes.length<=b)return;let d=a.nodes.slice(-c),e=a.nodes.slice(0,a.nodes.length-c),f=e.filter(a=>"project_graph"!==a.type&&("completed"===a.status||"failed"===a.status||"skipped"===a.status)),g=e.filter(a=>!f.includes(a));if(0===f.length)return;let h={id:`nodes-archive-${Date.now()}`,type:"summary",status:"completed",startedAt:f[0].startedAt,completedAt:f[f.length-1].completedAt||Date.now(),outputSummary:`已归档 ${f.length} 个历史节点(${[...new Set(f.map(a=>a.type))].join("、")})`,metrics:{archivedNodes:f.length}};a.nodes.splice(0,a.nodes.length,...g,h,...d)}function v(a){let b=a.nodes.find(a=>"project_graph"===a.type),c=!!b?.metrics?.precomputed;return[(0,g.X5)({type:"validation",roleId:"agent-material-scope",status:"success",message:`资料范围已锁定:${a.materialScope.selectedRoots.join("、")}`,details:[`${a.materialScope.reason}`,`入选资料:${a.materialScope.selectedFiles.length}/${a.materialScope.totalAvailableFiles}`,`已排除资料组:${a.materialScope.rejectedRoots.slice(0,8).join("、")||"无"}`]},{subtitle:"Agent 资料范围锁定"}),(0,g.X5)({type:"knowledge_retrieval",roleId:"agent-material-snapshot",status:"success",message:`资料快照已固定:${a.materialSnapshot.totalFiles} 份资料、${a.materialSnapshot.totalChunks} 个切片`,details:a.materialSnapshot.files.slice(0,10).map(a=>`${a.root}|${a.fileName}|${a.chunkCount}切片`)},{subtitle:"Agent 资料快照"}),(0,g.X5)({type:"file_understanding",roleId:c?"agent-project-graph-cache":"agent-project-graph-runtime",status:"success",message:c?`已复用预处理完整项目图谱:${a.baseProjectGraph.works.length}工程 ${a.baseProjectGraph.resources.length}资源 ${a.baseProjectGraph.schedule.length}工期 ${a.baseProjectGraph.standards.length}标准`:`运行期项目图谱草案已建立:${a.baseProjectGraph.works.length}工程 ${a.baseProjectGraph.resources.length}资源 ${a.baseProjectGraph.schedule.length}工期 ${a.baseProjectGraph.standards.length}标准`,details:c?[`完整图谱来自入库后 project-intelligence 预处理`,`事实数:${a.facts.length}`]:[`缓存缺失时用于资料范围和 Planner 预备分析;正式完整项目图谱会随后由 LLM 构建`,`事实数:${a.facts.length}`]},{subtitle:c?"Agent 完整项目图谱缓存":"Agent 项目图谱预备分析"})]}function w(a){let b=a.split(/\r?\n/u),c=[];return b.forEach((a,b)=>{i.test(a)&&c.push({level:"error",severity:"blocker",category:"style",owner:"system",message:`正式正文不得出现后台或兜底话术:第 ${b+1} 行`,suggestion:"必须改为有事实依据的正式表达;非必填缺失字段应删除,必填事实缺失应阻断生成。"})}),[...c,...(0,f.bx)(a),...(0,f.uv)(a),...(0,f.nP)(a)].slice(0,20)}},37095:(a,b,c)=>{c.d(b,{CU:()=>s,H7:()=>r,JB:()=>o,Qf:()=>m,kW:()=>p,oy:()=>n,sn:()=>q});var d=c(29021),e=c(21820),f=c(33873),g=c(19898);function h(a){return f.join(e.homedir(),".customize-agent","projects",(0,g.computeProjectId)(a),"kb-operations.jsonl")}function i(a,b){let c=h(a);d.mkdirSync(f.dirname(c),{recursive:!0});let e=`${c}.${process.pid}.${Date.now()}.tmp`;d.writeFileSync(e,`${b.slice(-200).map(a=>JSON.stringify(a)).join("\n")}
|
|
16
|
+
${b.join("\n")}`,d=new Set;return/工期|进度|节点|计划/u.test(c)&&d.add("确保工期的保障体系与措施"),/质量|验收|复试|见证取样|规范|标准/u.test(c)&&d.add("确保质量的保障体系与措施"),/安全|危大|风险|应急|临电|消防/u.test(c)&&d.add("确保安全生产的管理体系与措施"),/劳动力|材料|机械|设备|周转|资源/u.test(c)&&d.add("确保人、材、机的保障体系与措施"),/施工方法|施工工艺|道路|桥梁|排水|照明|园林|绿化/u.test(c)&&d.add("主要分部分项工程施工方案"),/环保|扬尘|文明|绿色/u.test(c)&&d.add("环境保护与文明施工措施"),/项目|工程|建设地点|建设规模|招标范围/u.test(c)&&d.add("工程概况与施工部署"),[...d]}(a.relativePath,k);return{relativePath:a.relativePath,root:d,fileName:e.basename(a.relativePath),category:a.category,format:a.format,chunkCount:a.chunkCount,indexedAt:a.indexedAt,contentHash:a.contentHash,status:a.status,roles:f,usableForBody:!i,excludeReason:i,summarySignals:h,contentFacts:k,intentTags:l,chapterHints:m}}),h=c.flatMap(t),k=c.flatMap(a=>a.intentTags.flatMap(b=>a.contentFacts.slice(0,10).map((c,d)=>({intent:b,filePath:a.relativePath,title:a.fileName,content:c,score:.82-.025*d,roleId:a.roles[0]})))),l={selectedRoots:[...new Set(c.map(a=>a.root).filter(Boolean))],selectedFiles:c.map(a=>a.relativePath),totalAvailableFiles:c.length,ambiguous:!1,locked:!0,reason:"项目入库完成后预计算的项目级资料范围",rejectedRoots:[],scopeHash:u(c)},n=(0,i.hw)(a,l),o=(0,i.rj)({facts:h,materialSnapshot:n}),q=await (0,j.i)({evidence:c.flatMap(a=>a.contentFacts.slice(0,10).map((b,c)=>({chapterId:"project-intelligence",filePath:a.relativePath,content:b,score:.82-.02*c,roleId:a.roles[0],processingType:"project_intelligence",source:"project-intelligence"}))),projectRoot:a,requirement:"项目入库后预计算项目图谱",templateId:"project-intelligence"});if(!q.graph)throw Error(`项目图谱预计算失败:${q.stage.message||q.stage.status}`);let v=function(a,b){let c=(a,b)=>{let c=new Map;for(let d of[...a,...b]){let a=JSON.stringify(d);c.has(a)||c.set(a,d)}return[...c.values()]},d=c(a.schedule,b.schedule),e=c(a.standards,b.standards),f=c(a.siteConditions,b.siteConditions),g=[...d.flatMap(a=>[a.duration,a.milestone].filter(Boolean)),...e.flatMap(a=>[a.code,a.description].filter(Boolean)),...f.flatMap(a=>[a.condition,a.impact].filter(Boolean))].map(a=>a.replace(/\s+/gu,"")),h=[...new Set([...a.gaps||[],...b.gaps||[]])].filter(a=>{let b=a.replace(/\s+/gu," ");if(y(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);return!(a.length>0&&a.every(a=>g.some(b=>b.includes(a))))}return!(/计划工期/u.test(b)&&d.length>0||/质量标准/u.test(b)&&e.length>0||/建设地点/u.test(b)&&f.length>0)});return{works:c(a.works,b.works),methods:c(a.methods,b.methods),resources:c(a.resources,b.resources),schedule:d,standards:e,siteConditions:f,risks:c(a.risks,b.risks),requirements:c(a.requirements,b.requirements),addendumChanges:c(a.addendumChanges,b.addendumChanges),gaps:h,generatedAt:b.generatedAt||Date.now()}}(o,q.graph),w=q.stage.message||"项目图谱已预计算",x=A(v,c),z={version:m,projectRoot:a,projectId:(0,f.computeProjectId)(a),createdAt:Date.now(),sourceHash:u(c),fileCount:c.length,files:c,facts:h,chapterIntentIndex:k,projectGraph:v,projectGraphMessage:w,constructionOrganizationGraph:x,blueprint:{projectNames:[...new Set(h.filter(a=>/项目名称/u.test(a.key)).map(a=>a.value))].slice(0,8),roots:[...new Set(c.map(a=>a.root).filter(Boolean))],usableFiles:c.filter(a=>a.usableForBody).length,excludedFiles:c.filter(a=>!a.usableForBody).length,intentTags:[...new Set(c.flatMap(a=>a.intentTags))],signals:c.flatMap(a=>a.contentFacts.slice(0,2)).slice(0,24)}};return d.writeFileSync(p(a),JSON.stringify(z,null,2)),z}function D(a){let b=w(a.projectRoot);if(!b)return;let c=(0,i.ZR)(a.projectRoot,a.template,a.requirement||"");if(c.ambiguous||!c.locked||0===c.selectedFiles.length)return;let e=(0,l.c6)({version:n,selectedFiles:c.selectedFiles.slice().sort(),templateId:a.template.id,chapters:a.template.chapters.map(a=>({id:a.id,title:a.title,sections:a.sections||[]}))}),f=function(a,b){let c=q(a,b);if(d.existsSync(c))try{let b=JSON.parse(d.readFileSync(c,"utf8"));if(b.version!==n||!v(a,b.files))return;return b}catch{return}}(a.projectRoot,e)||function(a){let b=new Set(a.selectedFiles),c=a.cache.files.filter(a=>b.has(a.relativePath));if(0===c.length||!v(a.projectRoot,c))return;let e=a.cache.facts.filter(a=>b.has(a.sourceFile)),f=function(a,b){let c=a=>!a?.length||a.some(a=>b.has(a));return{...a,works:a.works.filter(a=>c(a.sourceFiles)),methods:a.methods.filter(a=>c(a.sourceFiles)),resources:a.resources.filter(a=>c(a.sourceFiles)),schedule:a.schedule.filter(a=>c(a.sourceFiles)),standards:a.standards.filter(a=>c(a.sourceFiles)),risks:a.risks.filter(a=>c(a.sourceFiles)),requirements:a.requirements.filter(a=>c(a.sourceFiles)),siteConditions:a.siteConditions.filter(a=>c(a.sourceFiles)),addendumChanges:a.addendumChanges.filter(a=>b.has(a.sourceFile))}}(a.cache.projectGraph,b),g=function(a,b){let c=a.workPackages.filter(a=>{let c;return!(c=a.sourceFiles).length||c.some(a=>b.has(a))}),d=new Set(c.map(a=>a.name));return{...a,workPackages:c,controlMatrix:a.controlMatrix.filter(a=>0===a.relatedWorkPackages.length||a.relatedWorkPackages.some(a=>d.has(a)))}}(a.cache.constructionOrganizationGraph,b),h=function(a){let b={};for(let c of a.template.chapters){let d=function(a,b=[]){let c=`${a}
|
|
17
|
+
${b.join("\n")}`,d=new Set,e=(a,b)=>{b.test(c)&&d.add(a)};return e("工期进度",/工期|进度|计划|节点/u),e("质量验收",/质量|验收|复试|见证|控制点/u),e("安全危大",/安全|危大|风险|应急/u),e("施工部署",/部署|总平面|施工组织|现场/u),e("施工方法",/施工方案|施工方法|分部分项|工艺|新技术|新工艺/u),e("人材机",/人材机|劳动力|材料|机械|周转|人、材、机|人员设备/u),e("环境文明",/环保|文明|扬尘|绿色/u),e("工程概况",/概况|工程特点|重点|难点|整体理解|项目理解|工程理解|项目概况/u),[...d]}(c.title,c.sections||[]);if(0===d.length)continue;let e=new Set(d),f=a.entries.filter(b=>a.selected.has(b.filePath)&&e.has(b.intent)).sort((a,b)=>b.score-a.score).slice(0,24).map(a=>({chapterId:c.id,filePath:a.filePath,score:a.score,content:a.content,roleId:a.roleId,processingType:"project_intelligence",sectionTitle:a.intent,source:"project-intelligence"}));f.length&&(b[c.id]=f)}return b}({template:a.template,entries:a.cache.chapterIntentIndex||[],selected:b}),i={version:n,projectRoot:a.projectRoot,createdAt:Date.now(),scopeHash:a.scopeHash,selectedRoots:a.selectedRoots,selectedFiles:a.selectedFiles,sourceHash:(0,l.c6)(c.map(a=>({path:a.relativePath,hash:a.contentHash,chunkCount:a.chunkCount})).sort((a,b)=>a.path.localeCompare(b.path))),files:c,facts:e,projectGraph:f,constructionOrganizationGraph:g,evidenceByChapterId:h,blueprint:{projectNames:[...new Set(e.filter(a=>/项目名称/u.test(a.key)).map(a=>a.value))].slice(0,8),roots:[...new Set(c.map(a=>a.root).filter(Boolean))],usableFiles:c.filter(a=>a.usableForBody).length,excludedFiles:c.filter(a=>!a.usableForBody).length,intentTags:[...new Set(c.flatMap(a=>a.intentTags))],signals:c.flatMap(a=>a.contentFacts.slice(0,2)).slice(0,24)}};return d.writeFileSync(q(a.projectRoot,a.scopeHash),JSON.stringify(i,null,2)),i}({projectRoot:a.projectRoot,template:a.template,cache:b,selectedFiles:c.selectedFiles,selectedRoots:c.selectedRoots,scopeHash:e});if(f)return{cache:b,scope:c,scopeSnapshot:f,files:f.files,facts:f.facts,evidenceByChapterId:f.evidenceByChapterId,projectGraph:f.projectGraph,constructionOrganizationGraph:f.constructionOrganizationGraph,constructionOrganizationContext:B(f.constructionOrganizationGraph),blueprint:f.blueprint}}function E(a){let b=`project-intelligence-${Date.now()}`;(0,h.Qf)(a,{id:b,type:"reindex",title:"项目理解缓存",stage:"generating",status:"processing",percent:5,message:"正在构建项目级蓝图、图谱、事实索引和章节意图索引"}),C(a).then(c=>{(0,h.Qf)(a,{id:b,type:"reindex",title:"项目理解缓存",stage:"done",status:"success",percent:100,message:`项目理解缓存完成:${c.fileCount} 份资料,${c.facts.length} 条事实,${c.chapterIntentIndex.length} 条章节意图证据`})}).catch(c=>{let d=c instanceof Error?c.message:String(c);(0,h.Qf)(a,{id:b,type:"reindex",title:"项目理解缓存",stage:"error",status:"error",percent:100,message:d,error:d}),console.warn("[project-intelligence] build failed",d)})}},28366:(a,b,c)=>{c.d(b,{TG:()=>j,bC:()=>i,ip:()=>g});var d=c(73024),e=c(76760),f=c(22157);let g={factGovernance:{thresholdComparison:"不低于|不少于|不高于|不超过|不得少于|不得高于|不得小于|不小于|不大于|大于等于|小于等于|≥|≤|≧|≦|以上|及以上|以内|之内",amendmentContext:"修正|调整|变更|更改|更正|改为|澄清|更新|修订",aspirationalPrefix:"拟|规划|目标|力争|预计|期望|远期|未来|设想|建议|预期|争取|拟建|规划建设",addendumSource:"补疑|答疑|澄清|补充|更正|修改",weakAnchorGapThreshold:9},writingSpec:{criticalSectionAnchors:["主要施工内容","工程概况","项目概况","重点难点","危大工程","应急预案","施工部署","总平面","主要分部分项工程施工方案","主要施工方法"],majorContentSection:"项目主要施工内容",divisionSection:"主要分部分项工程施工方案|主要施工方法",divisionProcessLabel:"工艺流程|施工流程",criticalDeepSections:["项目特点.*重点.*难点|重点.*难点.*分析","项目主要施工内容","主要分部分项工程施工方案|主要施工方法","危大工程专项施工方案审批流程","原材料进场复试|见证取样"],blockerMinChars:{emergency:650,majorContent:1800,division:1200,focus:1500},divisionQuality:{blockerMinPackages:3,minPackages:5,minParamsPerPackage:4,minArrowChainLength:4,minPackageChars:150,balanceRatio:1/3},writeRules:{majorContent:"【项目主要施工内容专项结构】只能根据绑定材料中的当前项目事实识别施工对象和工作包;不得套用固定行业模板,不得复述完整工程概况,不得写“以图纸清单为准”式空话;不得使用 Markdown 表格。必须按专业工程/分部分项工程逐项展开,每项使用“#### 工作包名称”作为三级小节标题,并固定包含“施工概况:”“施工流程:”“施工方法:”三段。工作包小节必须与上下文“主要施工工作包”列表一一对应,每个工作包只允许展开一次;严禁把同一个工作包以“X工程”“X工作包”两种口径重复写成两个小节,也不得新增图谱之外的工作包小节。施工概况必须写该工作包对应的本项目作业对象、部位、规模/工程量、材料设备或系统边界,写成连贯叙述段落,不得出现“1.xxx 2.xxx”编号清单或“xxx|工程量”式清单原文罗列;施工流程必须使用“→”串联关键工序;施工方法必须写成连贯叙述,落到具体工具机具、测量/检测方法、工艺参数、材料规格、穿插关系、质量验收、复试检测和资料闭环,方法叙述中的连续工序序列同样用“→”串联(如“基层清理→放线定位→分层摊铺→碾压→压实度检测→验收”),每个工作包的方法段正文至少 1 条不少于 4 个环节的箭头工序链,不得只把箭头局限在施工流程行;每个工作包施工方法必须落位至少 3 个具体工艺参数(厚度、间距、偏差、含水率、饱满度、坡度、压实度等),参数来自绑定材料或行业通用规范值,禁止“按规范施工”“结合实际执行”式空话,严禁把工程量清单条目原样罗列成“xxx:2台;xxx:1台;”式参数堆砌。施工方法写法样例(句式参照,内容按本项目事实替换):“配电箱采用挂墙方式安装,箱体中心距地1.5m,盘面垂直度偏差不超过1.5/1000;柜内元器件按系统图接线,导线分色标识,接线紧固力矩按规格控制;安装完成后进行绝缘电阻测试并形成通电试运行记录。”至少形成 5 个施工工作包,工作包必须来自绑定材料证据。",division:"【主要分部分项工程施工方案专项要求】每个“#### 分项工程方案”三级小节必须包含施工概况(本项目作业对象、部位、工程量)、工艺流程(用“→”串联关键工序)和施工方法(工具机具、材料规格、验收标准)。严禁用“**分项名**”粗体行代替“#### 分项名”小节标题,也不得把多个分项合并写在一个段落里。施工方法叙述中的连续工序序列同样用“→”串联(如“基层清理→放线定位→分层摊铺→碾压→压实度检测→验收”),每个分项方案的方法段正文至少 1 条不少于 4 个环节的箭头工序链,不得只把箭头局限在工艺流程行;每个分项方案正文必须落位至少 4 个工艺参数(mm、MPa、间距、偏差、坡度、养护天数、试验压力、搭接长度等),参数来自绑定材料或行业通用规范值,不得编造;纯设备配置型小节必须写型号、规格、容量、数量参数;不得写“按规范施工”“结合实际执行”式空话。分项间深度必须均衡:门窗维修、立面修补、设备安装等小分项同样要写足施工概况、工艺流程、施工方法三段(每个分项不少于 150 字),不得一句话带过;严禁写“其他专业工序引用相应章节内容”“详见相关章节”等自我消解语,工艺流程只能在本分项方案内展开,不得另行拆节复述。"}}},h=new Map;function i(a){let b=h.get(a);if(b)return b;let c=g,f=function(a){if(a)return e.join(a,".customize-agent","workflow-rules.json")}(a);if(f&&d.existsSync(f))try{let a=JSON.parse(d.readFileSync(f,"utf8"));c=function(a,b){if(!b)return a;let c={...a.factGovernance,...b.factGovernance||{}},d={...a.writingSpec.blockerMinChars,...b.writingSpec?.blockerMinChars||{}},e={...a.writingSpec.divisionQuality,...b.writingSpec?.divisionQuality||{}},f={...a.writingSpec.writeRules,...b.writingSpec?.writeRules||{}};return{factGovernance:c,writingSpec:{...a.writingSpec,...b.writingSpec||{},blockerMinChars:d,divisionQuality:e,writeRules:f}}}(g,a)}catch{}return h.set(a,c),c}function j(a){return(0,f.c6)(i(a))}},32434:(a,b,c)=>{c.d(b,{IA:()=>w,Qu:()=>t,SU:()=>v,ZR:()=>n,cN:()=>u,hw:()=>o,rj:()=>s});var d=c(76760),e=c(44533),f=c(61373),g=c(80439),h=c(22157);let i=/知识库|系统暂未|项目资料暂未|资料未明确|暂未明确|待确认|待资料复核|待系统|通用兜底(?:段落|模板)?|兜底(?:占位|模板|内容)|未检索到|资料不足|无法确认|建议补充|不适用|COL\d+|可核验信息|以本项目招标文件明确内容为准/u;function j(a){return a.replace(/\\/gu,"/").replace(/^\/+|\/+$/gu,"")}function k(a){let b=j(a).split("/").filter(Boolean);return b.length>1?b[0]:d.basename(b[0]||"当前项目")}function l(a){return a.replace(/[\s_\-—()()【】、,,.。·]/gu,"").replaceAll("[","").replaceAll("]","").toLowerCase()}function m(a){return"disk"!==a.status&&"error"!==a.status&&Number(a.indexedAt||0)>0&&Number(a.chunkCount||0)>0}function n(a,b,c=""){let d=(0,e.Yy)(a).filter(m),f=(b.projectBindings||[]).filter(a=>a.materialRootPath).map(a=>({materialRootPath:j(a.materialRootPath)})).map(a=>a.materialRootPath).filter(Boolean),g=f.length?d.filter(a=>f.some(b=>j(a.relativePath)===b||j(a.relativePath).startsWith(`${b}/`))):d,i=function(a){let b=new Map;for(let c of a){let a=k(c.relativePath);b.set(a,[...b.get(a)||[],c])}return b}(g),o=c.trim(),p=[...i.keys()];if(o){let a=[...i.entries()].map(([a,b])=>({root:a,files:b,score:function(a,b){let c=l(a),d=l(b);if(c.length>=4&&d.includes(c.slice(0,Math.min(16,c.length))))return 100;let e=new Set(["项目","工程","施工","总承包","资料","招标","图纸","清单"]);return a.split(/(?:\s|_|-|—|(|)|\(|\)|【|】|\[|\]|、|,|,|\.)+/u).filter(a=>a.length>=2&&!e.has(a)).reduce((a,c)=>a+(b.includes(c)?Math.min(20,c.length):0),0)}(a,o)})).filter(a=>a.score>0).sort((a,b)=>b.score-a.score);if(1===a.length||a.length>1&&a[0].score>a[1].score){let b=[a[0].root],c=a[0].files.map(a=>a.relativePath);return{selectedRoots:b,selectedFiles:c,totalAvailableFiles:d.length,ambiguous:!1,locked:!0,reason:`用户需求唯一匹配资料组:${a[0].root}`,rejectedRoots:p.filter(a=>!b.includes(a)),scopeHash:(0,h.c6)({selectedRoots:b,selectedFiles:c})}}if(a.length>1){let b=a.filter(b=>b.score===a[0].score).map(a=>a.root);return{selectedRoots:[],selectedFiles:[],totalAvailableFiles:d.length,ambiguous:!0,locked:!1,reason:`用户需求同时匹配多个资料组:${b.join("、")}`,rejectedRoots:p,scopeHash:(0,h.c6)({ambiguous:!0,selectedRoots:b})}}}if(1===f.length){let a=g.map(a=>a.relativePath);return{selectedRoots:f,selectedFiles:a,totalAvailableFiles:d.length,ambiguous:!1,locked:!0,reason:`模板绑定唯一资料组:${f[0]}`,rejectedRoots:p.filter(a=>!f.includes(a)),scopeHash:(0,h.c6)({selectedRoots:f,selectedFiles:a})}}return{selectedRoots:[],selectedFiles:[],totalAvailableFiles:d.length,ambiguous:!0,locked:!1,reason:f.length>1?`模板绑定多个资料组但需求未唯一指定:${f.join("、")}`:"未绑定资料组且需求未唯一指定资料范围,禁止回退全量资料",rejectedRoots:p,scopeHash:(0,h.c6)({ambiguous:!0,boundRoots:f,requirement:c})}}function o(a,b){let c=new Map((0,e.Yy)(a).map(a=>[a.relativePath,a])),f=b.selectedFiles.map(a=>{let b=c.get(a),e=Number(b?.chunkCount||0);return{path:a,root:k(a),fileName:d.basename(a),chunkCount:e,indexedAt:b?.indexedAt,status:b?.status,hash:(0,h.c6)({filePath:a,chunkCount:e,indexedAt:b?.indexedAt,status:b?.status})}});return{files:f,totalFiles:f.length,totalChunks:f.reduce((a,b)=>a+b.chunkCount,0),roots:[...new Set(f.map(a=>a.root))],createdAt:Date.now(),snapshotHash:(0,h.c6)(f.map(a=>({path:a.path,hash:a.hash})))}}function p(a,b){return a.filter(a=>b.test(`${a.fieldId||""} ${a.fieldName||""} ${a.key} ${(0,h.lG)(a.value)}`))}function q(a){return(0,h.lG)(a.value).replace(/\s+/gu," ").trim()}let r=new Set(["资料文件","资料组","资料角色","资料内容事实","章节意图候选","项目名称候选"]);function s(a){let b=a.facts.filter(a=>!r.has(a.key)&&q(a)),c=p(b,/项目名称|工程名称|招标项目名称|建设地点|建设规模|招标范围|施工范围|建设内容/u),d=p(b,/工期|日历天|进度|开工|竣工/u),e=p(b,/质量|验收|合格|标准|规范/u),f=p(b,/清单|工程量|材料|设备|机械|劳动力|资源/u),g=p(b,/安全|文明|环保|危大|风险/u),h=c.slice(0,8).map(a=>`${a.key}:${q(a)}`).join(";");return{works:h?[{name:a.materialSnapshot.roots[0]||"当前项目",scope:h,sourceFiles:[...new Set(c.map(a=>a.sourceFile).filter(Boolean))],relatedItems:f.slice(0,8).map(a=>q(a))}]:[],methods:[],resources:f.slice(0,30).map(a=>({name:a.key,type:"material",spec:q(a),quantity:"",unit:"",sourceFiles:a.sourceFile?[a.sourceFile]:[]})),schedule:d.slice(0,10).map(a=>({milestone:a.key,duration:q(a),startDate:"",endDate:"",sourceFiles:a.sourceFile?[a.sourceFile]:[]})),standards:e.slice(0,16).map(a=>({code:a.key,description:q(a),sourceFiles:a.sourceFile?[a.sourceFile]:[]})),risks:g.slice(0,16).map(a=>({risk:q(a),level:"medium",mitigation:"",sourceFiles:a.sourceFile?[a.sourceFile]:[]})),requirements:p(b,/招标|投标|合同|承包|响应|要求|补疑|澄清|答疑/u).slice(0,20).map(a=>({category:a.key,detail:q(a),sourceFiles:a.sourceFile?[a.sourceFile]:[]})),siteConditions:p(b,/现场|周边|交通|既有|保护|场地/u).slice(0,12).map(a=>({condition:q(a),impact:"",sourceFiles:a.sourceFile?[a.sourceFile]:[]})),addendumChanges:[],gaps:[],generatedAt:Date.now()}}function t(a){let b=n(a.projectRoot,a.template,a.requirement||"");if(b.ambiguous||!b.locked||0===b.selectedFiles.length)throw Error(`资料范围未锁定:${b.reason}`);let c=o(a.projectRoot,b),d=a.projectGraph||s({facts:a.facts,materialSnapshot:c,requirement:a.requirement}),e=a.projectGraph?"project-graph":"project-graph-runtime",f=a.projectGraph?"预处理完整项目图谱":"运行期项目图谱草案",g=Date.now();return{runId:`run-${g}-${(0,h.c6)({templateId:a.template.id,requirement:a.requirement||"",scopeHash:b.scopeHash}).slice(0,8)}`,templateId:a.template.id,requirement:a.requirement||"",projectRoot:a.projectRoot,materialScope:b,materialSnapshot:c,nodes:[{id:"material-scope",type:"material_scope",status:"completed",startedAt:g,completedAt:g,outputSummary:b.reason,metrics:{selectedFiles:b.selectedFiles.length,rejectedRoots:b.rejectedRoots.length}},{id:"material-snapshot",type:"material_snapshot",status:"completed",startedAt:g,completedAt:g,outputSummary:`${c.totalFiles} 份资料,${c.totalChunks} 个切片`,metrics:{totalFiles:c.totalFiles,totalChunks:c.totalChunks}},{id:e,type:"project_graph",status:"completed",startedAt:g,completedAt:g,outputSummary:`${f}:${d.works.length}工程 ${d.resources.length}资源 ${d.schedule.length}工期 ${d.standards.length}标准`,metrics:{facts:a.facts.length,precomputed:!!a.projectGraph,source:a.projectGraphSource||"runtime"}}],facts:a.facts,baseProjectGraph:d,issues:[],createdAt:g}}function u(a,b=200,c=50){if(a.nodes.length<=b)return;let d=a.nodes.slice(-c),e=a.nodes.slice(0,a.nodes.length-c),f=e.filter(a=>"project_graph"!==a.type&&("completed"===a.status||"failed"===a.status||"skipped"===a.status)),g=e.filter(a=>!f.includes(a));if(0===f.length)return;let h={id:`nodes-archive-${Date.now()}`,type:"summary",status:"completed",startedAt:f[0].startedAt,completedAt:f[f.length-1].completedAt||Date.now(),outputSummary:`已归档 ${f.length} 个历史节点(${[...new Set(f.map(a=>a.type))].join("、")})`,metrics:{archivedNodes:f.length}};a.nodes.splice(0,a.nodes.length,...g,h,...d)}function v(a){let b=a.nodes.find(a=>"project_graph"===a.type),c=!!b?.metrics?.precomputed;return[(0,g.X5)({type:"validation",roleId:"agent-material-scope",status:"success",message:`资料范围已锁定:${a.materialScope.selectedRoots.join("、")}`,details:[`${a.materialScope.reason}`,`入选资料:${a.materialScope.selectedFiles.length}/${a.materialScope.totalAvailableFiles}`,`已排除资料组:${a.materialScope.rejectedRoots.slice(0,8).join("、")||"无"}`]},{subtitle:"Agent 资料范围锁定"}),(0,g.X5)({type:"knowledge_retrieval",roleId:"agent-material-snapshot",status:"success",message:`资料快照已固定:${a.materialSnapshot.totalFiles} 份资料、${a.materialSnapshot.totalChunks} 个切片`,details:a.materialSnapshot.files.slice(0,10).map(a=>`${a.root}|${a.fileName}|${a.chunkCount}切片`)},{subtitle:"Agent 资料快照"}),(0,g.X5)({type:"file_understanding",roleId:c?"agent-project-graph-cache":"agent-project-graph-runtime",status:"success",message:c?`已复用预处理完整项目图谱:${a.baseProjectGraph.works.length}工程 ${a.baseProjectGraph.resources.length}资源 ${a.baseProjectGraph.schedule.length}工期 ${a.baseProjectGraph.standards.length}标准`:`运行期项目图谱草案已建立:${a.baseProjectGraph.works.length}工程 ${a.baseProjectGraph.resources.length}资源 ${a.baseProjectGraph.schedule.length}工期 ${a.baseProjectGraph.standards.length}标准`,details:c?[`完整图谱来自入库后 project-intelligence 预处理`,`事实数:${a.facts.length}`]:[`缓存缺失时用于资料范围和 Planner 预备分析;正式完整项目图谱会随后由 LLM 构建`,`事实数:${a.facts.length}`]},{subtitle:c?"Agent 完整项目图谱缓存":"Agent 项目图谱预备分析"})]}function w(a){let b=a.split(/\r?\n/u),c=[];return b.forEach((a,b)=>{i.test(a)&&c.push({level:"error",severity:"blocker",category:"style",owner:"system",message:`正式正文不得出现后台或兜底话术:第 ${b+1} 行`,suggestion:"必须改为有事实依据的正式表达;非必填缺失字段应删除,必填事实缺失应阻断生成。"})}),[...c,...(0,f.bx)(a),...(0,f.uv)(a),...(0,f.nP)(a)].slice(0,20)}},37095:(a,b,c)=>{c.d(b,{CU:()=>s,H7:()=>r,JB:()=>o,Qf:()=>m,kW:()=>p,oy:()=>n,sn:()=>q});var d=c(29021),e=c(21820),f=c(33873),g=c(19898);function h(a){return f.join(e.homedir(),".customize-agent","projects",(0,g.computeProjectId)(a),"kb-operations.jsonl")}function i(a,b){let c=h(a);d.mkdirSync(f.dirname(c),{recursive:!0});let e=`${c}.${process.pid}.${Date.now()}.tmp`;d.writeFileSync(e,`${b.slice(-200).map(a=>JSON.stringify(a)).join("\n")}
|
|
18
18
|
`,"utf8"),d.renameSync(e,c)}let j=new Set,k=new Map;function l(a){let b=k.get(a);return b||(b=function(a){let b=function(a){let b=h(a);return d.existsSync(b)?d.readFileSync(b,"utf8").split("\n").filter(Boolean).flatMap(a=>{try{return[JSON.parse(a)]}catch{return[]}}):[]}(a);if(j.has(a))return b;let c=b.filter(a=>"processing"===a.status);if(c.length>0){let d=Date.now();for(let a of c)a.status="error",a.stage="error",a.error="服务重启导致任务中断,未完成",a.message=a.error,a.updatedAt=d;i(a,b)}return j.add(a),b}(a),k.set(a,b)),b}function m(a,b){let c=Date.now(),d=l(a),e=d.findIndex(a=>a.id===b.id),f=e>=0?d[e]:void 0,g={id:b.id,type:b.type,title:b.title,stage:b.stage??f?.stage??"uploading",status:b.status??f?.status??"processing",message:b.message??f?.message??"",percent:b.percent??f?.percent??0,fileName:b.fileName??f?.fileName,filePath:b.filePath??f?.filePath,chunkCount:b.chunkCount??f?.chunkCount,textLength:b.textLength??f?.textLength,extractionMode:b.extractionMode??f?.extractionMode,error:b.error??f?.error,details:b.details??f?.details,createdAt:f?.createdAt??c,updatedAt:c};return e>=0?d[e]=g:d.push(g),i(a,d),g}function n(a,b=50){return l(a).sort((a,b)=>b.updatedAt-a.updatedAt).slice(0,b)}function o(a,b){return l(a).find(a=>a.id===b)}function p(a,b){return l(a).filter(a=>!b||a.type===b).sort((a,b)=>b.updatedAt-a.updatedAt)[0]}function q(a){return l(a).filter(a=>"processing"===a.status).sort((a,b)=>b.updatedAt-a.updatedAt)}function r(a){let b=l(a),c=h(a);return d.existsSync(c)&&d.unlinkSync(c),k.delete(a),b.length}function s(a,b){let c=l(a),d=c.findIndex(a=>a.id===b);return!(d<0)&&(c.splice(d,1),i(a,c),!0)}},40693:(a,b,c)=>{c.d(b,{Av:()=>y,CS:()=>B,FI:()=>s,Fw:()=>t,Hl:()=>u,Ls:()=>q,b7:()=>z,c8:()=>r,db:()=>w,iX:()=>v});var d=c(35882),e=c(3063),f=c(22157),g=c(41991);let h=["精心组织","科学管理","精益求精","全力保障","高效推进","力争一流","最大限度","显著提升","大力落实","充分确保","严格把控"],i=RegExp(h.join("|"),"u"),j=["精心组织科学管理确保工程质量","严格把控质量安全进度各项指标","最大限度提升项目管理水平","全力保障项目顺利推进","大力落实各项管理措施"],k=["精心组织劳动力分批进场并登记交底","每道工序完成后实测实量并记录数据","混凝土浇筑后每天洒水养护不少于两次"];async function l(a){return(0,g.A)({prototypes:[...j],negativePrototypes:[...k],lexicalHints:i,embedDocuments:a})}let m=[{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:"应急类内容必须形成“发现险情—警戒疏散—初期处置—救援上报—复盘整改”闭环。"}],n={building:{label:"房建工程",chain:["施工准备","土方/基础","主体结构","二次结构","防水","机电安装","装饰装修","室外工程","竣工验收"],forbidden:["管道闭水试验","沥青摊铺","水稳层","交通导改"],prompt:"房建类章节应按“施工准备—基础—主体—二次结构—防水—机电—装饰—室外—验收”组织,不得混入市政道路工序。"},municipal:{label:"市政工程",chain:["测量放线","管线探测","围挡导行","沟槽/路基","管道/结构","回填","水稳/沥青/铺装","标线设施","验收移交"],forbidden:["主体结构","二次结构","塔吊","外脚手架","屋面防水"],prompt:"市政类章节应按“测量放线—管线探测—围挡导行—沟槽/路基—管道/结构—回填—路面恢复—验收移交”组织,不得写成房建主体结构逻辑。"},renovation:{label:"老旧小区改造",chain:["居民沟通","分区施工","既有保护","外墙/屋面/管网改造","扰民控制","竣工恢复"],forbidden:["大面积深基坑","高支模","大体量主体结构","长距离交通导改"],prompt:"老旧小区改造类章节必须体现“居民沟通—分区施工—既有保护—改造作业—扰民控制—竣工恢复”,不得忽略居民通行和既有设施保护。"},decoration:{label:"装饰装修工程",chain:["基层处理","防水闭水","吊顶龙骨","墙地面铺装","细部收口","成品保护","空气质量验收"],forbidden:["深基坑","路基压实","水稳层","沥青摊铺","大体量土方"],prompt:"装饰装修类章节应按“基层处理—防水闭水—吊顶墙面—地面铺装—细部收口—成品保护—空气质量验收”组织,不得混入基坑、路基等无关内容。"}},o=[{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 p(a){return a.replace(/\s+/gu,"").toLowerCase()}function q(a){let b=`${a.title} ${(a.sections||[]).join(" ")}`;return/施工组织设计|施工组织|施组|技术标|施工方案|质量|安全|文明施工/u.test(b)?["【施工组织设计专项写作规则】","- 禁止空话套话:不要只写“加强管理、严格控制、确保质量、精心组织、科学管理”,必须写成“责任岗位+执行动作+量化标准+检查频次+整改时限+复查销项”。","- 每项措施至少包含责任主体、执行标准、检查频次、整改闭环;项目特有数据必须来自资料或图谱。",...m.filter(a=>a.pattern.test(b)).map(a=>`- ${a.prompt}`),...o.filter(a=>a.pattern.test(b)).map(a=>`- 高分补充:${a.prompt}`)].join("\n"):""}function r(a){let b=q(a);return b?b.split("\n").map(a=>` - ${a}`):[]}function s(a){let b=(0,d.yt)({template:{id:"runtime",name:a.templateName,outputTitle:a.outputTitle||"",description:"",category:"",chapters:a.chapters},chapters:a.chapters,requirement:a.requirement}).filter(a=>"general"!==a).map(a=>n[a].prompt);return b.length?`【专业工序链约束】
|
|
19
19
|
${b.map(a=>`- ${a}`).join("\n")}`:""}async function t(a,b){let c=[],d=await l(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 h)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 u(a){let b=[];for(let c of a){let a=`${c.title} ${(c.sections||[]).join(" ")}`;for(let d of m){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 v(a){let b=p(`${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(n)){let e=d.chain.filter(a=>b.includes(p(a)));if(!(RegExp(d.label,"u").test(a.markdown)||e.length>=3))continue;let f=d.forbidden.filter(a=>b.includes(p(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 w(a){let b=`${a.title} ${(a.sections||[]).join(" ")} ${(a.queries||[]).join(" ")}`,c=o.filter(a=>a.pattern.test(b));return 0===c.length?"":["【隐藏高分模块触发】",...c.map(a=>`- ${a.title}:${a.prompt}`)].join("\n")}function x(a){let b=a.split("\n"),c=b.findIndex(a=>/^#{3,4}\s+(?:\d+(?:\.\d+)*\s+)?(?:项目主要施工\s*内容|主要施工\s*内容)\s*$/u.test(a.trim()));if(c<0){let a=b.findIndex(a=>/^###\s+(?:\d+(?:\.\d+)*\s+)?[^\n]*主要施工\s*内容[^\n]*$/u.test(a.trim()));if(a>=0){let d=b.length;for(let c=a+1;c<b.length;c+=1)if(/^#{2,3}\s+/u.test(b[c].trim())){d=c;break}let e=b.slice(a,d).join("\n").split(/^####\s+/gmu).slice(1).map(a=>a.trim()).filter(Boolean);e.length>=5&&e.every(a=>a.includes("施工概况")&&a.includes("施工流程")&&a.includes("施工方法"))&&(c=a)}if(c<0)return""}let d=b.length;for(let a=c+1;a<b.length;a+=1)if(/^#{2,3}\s+/u.test(b[a].trim())){d=a;break}return b.slice(c,d).join("\n").replace(/^\*\*([^*\n]{2,50})\*\*\s*$/gmu,"#### $1").replace(/承包人法(?=[::])/gu,"施工方法")}function y(a,b=""){let c=[],d=b||a.map(a=>`${a.title}
|
|
20
20
|
${(a.sections||[]).join("\n")}
|