@customize-agent/server 4.55.7 → 4.55.9
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/208.js +1 -1
- package/.next/server/chunks/{5784.js → 5547.js} +4 -4
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/pages/api/assets/generated/preview.js +1 -1
- package/.next/server/pages/api/assets/generated/preview.js.nft.json +1 -1
- package/.next/server/pages/api/assets/generated.js +1 -1
- package/.next/server/pages/api/assets/generated.js.nft.json +1 -1
- package/.next/server/pages/api/documents/export.js +1 -1
- package/.next/server/pages/api/documents/export.js.nft.json +1 -1
- package/.next/server/pages/api/documents/generate.js +1 -1
- package/.next/server/pages/api/documents/generate.js.nft.json +1 -1
- package/.next/server/pages/api/documents/generated/[id].js +1 -1
- package/.next/server/pages/api/documents/generated/[id].js.nft.json +1 -1
- package/.next/server/pages/api/documents/generated.js +1 -1
- package/.next/server/pages/api/documents/generated.js.nft.json +1 -1
- package/.next/server/pages/api/documents/templates.js +1 -1
- package/.next/server/pages/api/documents/templates.js.nft.json +1 -1
- package/.next/server/pages/api/kb/files/reindex.js +1 -1
- package/.next/server/pages/api/kb/files/reindex.js.nft.json +1 -1
- package/.next/server/pages/api/kb/intelligence.js +1 -1
- package/.next/server/pages/api/kb/intelligence.js.nft.json +1 -1
- package/.next/server/pages/api/kb/reindex.js +1 -1
- package/.next/server/pages/api/kb/reindex.js.nft.json +1 -1
- package/.next/server/pages/api/kb/upload/complete.js +1 -1
- package/.next/server/pages/api/kb/upload/complete.js.nft.json +1 -1
- package/.next/server/pages/api/kb/upload.js +1 -1
- package/.next/server/pages/api/kb/upload.js.nft.json +1 -1
- package/.next/server/pages/api/prompt.js.nft.json +1 -1
- package/.next/server/pages/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-manifest.json +28 -28
- package/.next/static/{0vMkER-eyFxsgR8GtJY7s → -K7m8MKsQhnwUbpk06bbv}/_buildManifest.js +1 -1
- package/package.json +1 -1
- /package/.next/static/{0vMkER-eyFxsgR8GtJY7s → -K7m8MKsQhnwUbpk06bbv}/_ssgManifest.js +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";exports.id=
|
|
1
|
+
"use strict";exports.id=5547,exports.ids=[5547],exports.modules={1218:(a,b,c)=>{c.d(b,{B2:()=>r,De:()=>I,GK:()=>ac,N2:()=>y,OQ:()=>z,PP:()=>ah,R7:()=>L,ZR:()=>V,d6:()=>S,d7:()=>aj,de:()=>H,hn:()=>u,iG:()=>J,ir:()=>ag,ji:()=>aa,n9:()=>ab,qG:()=>t,rC:()=>$,wj:()=>G});var d=c(73024),e=c(76760),f=c(15751),g=c(44533),h=c(73859),i=c(19898),j=c(91977),k=c(11248),l=c(95734),m=c(18274),n=c(22157),o=c(37047),p=c(71678),q=c(80572);function r(a,b,c){let d={};for(let e of(0,j.Uy)(a,c)){let a=b.find(a=>(0,j.I2)(a,e));a&&(d[e.name]=`${a.content.replace(/\s+/gu," ")}(来源:${a.filePath},角色:${a.roleId||"未标注"})`)}return d}let s=new Map;function t(a){let b=[],c=[],h=new Set;for(let j of a.filter(a=>"table"===a.processingType||"structured_data"===a.processingType||"bill_of_quantities"===a.processingType)){if(h.has(j.filePath))continue;h.add(j.filePath);let a=(0,g.aY)(),k=(0,g.NW)(a),l=e.isAbsolute(j.filePath)?j.filePath:d.existsSync(e.join(k,j.filePath))?e.join(k,j.filePath):e.join(a,j.filePath),m=e.extname(j.filePath).toLowerCase();if(d.existsSync(l)&&[".xlsx",".xls",".csv"].includes(m))try{c.push(...function(a,b){let c=d.statSync(a),e=`${a}:${b.roleId||"table"}`,g=s.get(e);if(g&&g.mtimeMs===c.mtimeMs&&g.size===c.size)return g.tables;let h=function(a,b){let c=f.readFile(a,{cellDates:!0,sheetStubs:!1}),d=[];for(let a of c.SheetNames){let e=c.Sheets[a],g=f.utils.sheet_to_json(e,{header:1,raw:!1,defval:""}).map(a=>a.map(a=>String(a).trim())).filter(a=>a.some(Boolean));if(g.length<2)continue;let h=(0,i.detectSmartTableHeader)(g),j=h.headers,k=g.slice(h.headerIndex+1).map(a=>a.slice(0,j.length)).filter(a=>a.some(Boolean));0!==k.length&&d.push({tableType:b.roleId||"table",sheet:a,headers:j,rows:k,sourceFile:b.filePath,sourceRange:e["!ref"]})}return d}(a,b);return s.size>500&&s.clear(),s.set(e,{mtimeMs:c.mtimeMs,size:c.size,tables:h}),h}(l,j));continue}catch(a){b.push(`${j.filePath}:${a instanceof Error?a.message:String(a)}`)}let n=j.content.split("\n").map(a=>a.trim()).filter(Boolean).filter(a=>a.includes("|")||a.includes(" ")||a.includes(","));if(n.length<2)continue;let o=n[0].includes("|")?"|":n[0].includes(" ")?" ":",",p=n.map(a=>a.split(o).map(a=>a.trim()).filter(Boolean)).filter(a=>a.length>1);p.length<2||c.push({tableType:j.roleId||"table",headers:p[0],rows:p.slice(1),sourceFile:j.filePath,sourceRange:j.sectionTitle})}return b.length>0&&console.warn(`[facts] 工作簿解析失败 ${b.length} 份,已回退文本猜表(保真度下降):${b.slice(0,5).join(";")}`),c}function u(a){let b=[],c=/工程名称|序号|项目编码|项目名称|项目特征|计量\s*单位|工程量|金额|综合单价|合价|人工费|机械费|暂估价|分部小计|本页|续表|合计|汇总/u;for(let d of a){let a=(0,i.locateTableColumns)(d.headers);if((a.name??-1)<0&&(a.feature??-1)<0)continue;let e=(a.seq??-1)>=0;for(let f of d.rows){let g=e?(f[a.seq??0]||"").trim():"",h=(a.name??-1)>=0?(f[a.name??0]||"").trim():"",i=(a.feature??-1)>=0?(f[a.feature??0]||"").trim():"",j=(a.unit??-1)>=0?(f[a.unit??0]||"").trim():"",k=(a.quantity??-1)>=0?(f[a.quantity??0]||"").trim():"";if(e&&!/^\d+$/.test(g)||!h||!i||c.test(`${h}${i}`))continue;let l=k&&j?`${k}${j}`:k||j;b.push({key:`清单条目:${h}`,fieldName:"清单条目",fieldId:"bill_item",value:`${i.slice(0,160)}${l?`|工程量:${l}`:""}`,sourceFile:d.sourceFile,roleId:"bill_of_quantities",processingType:"bill_of_quantities",confidence:.92,sourceRef:{filePath:d.sourceFile,roleId:"bill_of_quantities",processingType:"bill_of_quantities",sectionTitle:d.sheet}})}}return b}let v=["混凝土强度等级","砂浆强度等级","抗渗等级","钢筋牌号","钢筋级别","砖规格","砌块强度等级","混凝土种类","砂浆种类","垫层材料种类","找平层厚度","保护层厚度","防水层厚度","卷材厚度","镀锌层厚度","保温层厚度","垫层厚度","找坡层厚度","防水等级","抗裂等级","耐火等级","强度等级"],w=/C\d{2,3}|M\d+(?:\.\d+)?|P\d{1,2}|HRB\d{3,4}|HPB\d{3}|Q\d{3}|MU\d+|A\d+(?:\.\d+)?|B\d+(?:\.\d+)?|\d+(?:\.\d+)?\s*mm/u;function x(a){return/^C\d{2,3}$/.test(a)?"混凝土强度等级":/^M\d/.test(a)?"砂浆强度等级":/^P\d/.test(a)?"抗渗等级":/mm$/.test(a)?"厚度规格":/^HRB/.test(a)||/^HPB/.test(a)?"钢筋牌号":/^MU/.test(a)?"砌块强度等级":"规格"}function y(a,b,c){let d=(0,j.Uy)(b,c).filter(a=>a.required);return 0===d.length?a.filter(a=>a.confidence>=.75&&(0,n.lG)(a.value).trim().length>=2).length<12:d.filter(b=>a.some(a=>(function(a,b){let c=(0,n.lG)(a.value).trim();if(!c||c.length<2||c.length>220&&a.confidence<.8)return!1;let d=`${a.fieldId||""} ${a.fieldName||""} ${a.key}`.toLowerCase();return!!(d.includes(b.id.toLowerCase())||d.includes(b.name.toLowerCase()))&&("project_basic_fact"===a.roleId||a.roleId?.startsWith("role-")||a.sourceRef?.filePath?a.confidence>=.55:a.confidence>=.75)})(a,b))).length/d.length<.9}async function z(a,b,c,d,e,f){let g=[{type:"fact_extraction",roleId:"llm-json",status:"skipped",message:"LLM JSON 抽取未启用或无可用模型"}],h=Math.max(12e3,Math.floor((0,q.z)().factExtractionMaxChars??45e3)),i=Math.max(800,Math.floor(h/Math.max(8,Math.floor((0,q.z)().factExtractionMaxItems??48)))),k=[...a].sort((a,b)=>b.score-a.score),m=(0,j.Uy)(c,d),o=m.map(a=>`- id=${a.id} name=${a.name} type=auto required=${a.required} sourceRoleIds=${a.sourceRoleIds.join(",")||"不限"} hint=${a.extractionHint||"无"}`).join("\n"),p=b||"你是文档事实抽取器。",r=[],s=new Map;if(0===k.length)return{facts:[],stages:g};let t=[],u=[],v=0;for(let a of k){let b=G((0,n.lG)(a.content)).replace(/\s+/gu," ").slice(0,i),c=b.length+a.filePath.length+64;u.length>0&&v+c>h&&(t.push(u),u=[],v=0),u.push({item:a,content:b}),v+=c}u.length>0&&t.push(u);let w=0;for(let a of t){(0,n.Te)(e);let b=a.map(({item:a,content:b})=>{w+=1;let c=`E${w}`;return s.set(c,a),`[${c}] 文件:${a.filePath}
|
|
2
2
|
角色:${a.roleId||""}
|
|
3
3
|
处理:${a.processingType||""}
|
|
4
4
|
内容:${b}`}).join("\n\n---\n\n");if(!b.trim())continue;let c=await (0,l.bb)(p,`请严格按下面的动态事实 schema 从资料中抽取事实。只抽取资料明确支持的内容;如果字段限定 sourceRoleIds,必须优先来自对应文件角色;事实取舍和冲突处理遵循规范包字段说明、文件角色和提示词角色配置。
|
|
@@ -14,7 +14,7 @@ ${b.join("\n")}`:""}function ad(a){return(0,n.lG)(a).replace(/\s+/gu," ").trim()
|
|
|
14
14
|
${f}`,{markdown:m.join("\n"),appended:c.map(a=>a.itemName)}}let H=RegExp(`(?:GB|JGJ|CJJ|CECS|ISO|SL|DL|JTS|JTG|JT|TB|DB\\d{2}|DB)\\s*\\/?\\s*T?\\s*(\\d{3,5})(?:\\s*[-—–]\\s*(\\d{2,4}))?`,"giu"),I=/检查|巡查|例会|培训|交底|演练|复核|记录|台账|考核|整改|保养|维护|监测|检测|排查|验收|清扫/u,J=/作业面|班组|工区|标段|片区|地块|单元|分部|队伍|小组|机构|部门|岗位|区域|社区|村庄|村|路段|楼栋|站区|库区|厂区/u,K=/分组|平行|流水|包保|分区|分片|分块|划分|组建|成立|配备|配置|设置|设立|建立|指定|安排|派驻/u,L=/违约金|延期竣工|解除合同|缺陷责任期|质量保证金|质保金|履约保证金|保修期|合理期限|工期顺延|误期赔偿|响应|抢修|回访/u,M=/\d+(?:\.\d+)?(?:\s*(?:mm|cm|km|m2|㎡|m²|m3|m³|hm2|亩|kg|g|t|吨|ml|l|升|mpa|kpa|kn|kw|mw|kv|v|hz|℃|%|万元|亿元|元|天|工作日|工作天|月|年|h|min|次|遍|轮|班|趟|周|季|点|人|名|组|支|队|台|套|件|个|根|只|项|处|座|栋|幢|层|间|批|盏|樘|孔|株|户|盘|块|片|条|道|节|段|张|袋|桶|罐|车|d|米|m))?/giu,N=/^\d+(?:\.\d+)?$/u,O=/^(?:m2|㎡|m²|平方米|平方|平米|m3|m³|立方米|立方|hm2|公顷|亩|mm|cm|km|m|米|kg|g|t|吨|个|台|套|项|处|座|株|组|批|次|人|天|月|年|万元|元|l|ml|樘|盏|根|只|块|片|条|道|层|间|栋|幢|户|袋|桶|罐|车|盘|孔|节|段|张|面|棵|丛)$/u,P={kind:"unsourced",basis:""};function Q(a){return a.replace(/(\d+\.\d*?)0+(?![\d])/gu,"$1").replace(/(\d+)\.(?![\d])/gu,"$1")}function R(a){let b=a.token.replace(/\s+/gu,""),c=(0,e.K3)(a.token),d=a.context||"";if(!c)return P;for(let a of d.matchAll(H)){if(c===a[1])return{kind:"regulatory",basis:"标准编号"};if(a[2]&&c===a[2])return{kind:"regulatory",basis:"标准编号年份"}}return/^(?:19|20)\d{2}年度?$/u.test(c)?{kind:"regulatory",basis:"年份表述"}:/^(?:3|7|10|14|21|28)(?:d|天)$/u.test(c)&&/养护|龄期|标养|同条件|强度|试验/u.test(d)?{kind:"regulatory",basis:"养护龄期"}:/^(?:50|100|150|200|250|400|500)m3$/u.test(c)&&/试块|留置|检验批|砂浆|混凝土|浇筑|砌筑/u.test(d)?{kind:"regulatory",basis:"试块留置/检验批"}:/^(?:50|100)盘$/u.test(c)||/^[1-9]组$/u.test(c)&&/试块|留置|砂浆|混凝土|抗压|强度|钢筋/u.test(d)?{kind:"regulatory",basis:"试块留置"}:/^(?:100|200|400|1000)m2$/u.test(c)&&/每层|压实度|检测|检验|测点|不少于|至少/u.test(d)||/^\d+点$/u.test(c)&&/检测|检验|测量|观测|测点|抽检|不少于|至少/u.test(d)?{kind:"regulatory",basis:"检测频次"}:/℃$/u.test(c)&&/温度|养护|浇筑|入模|气温|环境|温差|加热/u.test(d)?{kind:"regulatory",basis:"温度阈值"}:/^\d+(?:\.\d+)?%$/u.test(c)&&/压实度|饱满度|含泥量|密实度|压实系数|保证率|灰剂量|油石比/u.test(d)?{kind:"regulatory",basis:"质量指标"}:/^\d+(?:\.\d+)?mm$/u.test(c)&&/偏差|公差|误差/u.test(d)?{kind:"regulatory",basis:"工艺公差"}:/^\d+(?:\.\d+)?mpa$/u.test(c)&&/试压|水压|气压|压力试验|试验压力|工作压力|注浆|强度试验|严密性|稳压|压降/u.test(d)?{kind:"regulatory",basis:"工艺压力参数"}:/^m\d+(?:\.\d+)?$/u.test(c)&&/砂浆|砌筑|抹灰|强度|等级/u.test(d)?{kind:"regulatory",basis:"砂浆强度等级"}:(/^\d+(?:\.\d+)?mω$/u.test(c)||/^\d+(?:\.\d+)?m$/u.test(c)&&/[ωΩ]/u.test(d))&&/绝缘|接地|电阻|兆欧/u.test(d)?{kind:"regulatory",basis:"绝缘电阻"}:/^s\d+(?:\.\d+)?$/u.test(c)&&/ppr|pb|pvc|pe|管|系列|冷热|给水/iu.test(d)?{kind:"regulatory",basis:"管系列代号"}:/^(?!(?:dn|de|sc|jdg|hrb|hpb)\d)[a-z]{1,4}\d[\w./-]*$/u.test(c)&&/材质|牌号|型号|配置|开关|断路器|配电|电缆|配电箱|控制箱|规格型号/u.test(d)&&!/混凝土|钢筋|砂浆/u.test(d)?{kind:"regulatory",basis:"材料/设备规格型号"}:/^[md]\d{3,5}$/u.test(c)&&/门窗|洞口|管段|管节|桩号|里程|井位|大样|详图|图集|编号|图纸/u.test(d)&&!/直径|壁厚|管径|外径|内径|砂浆|砌筑/u.test(d)?{kind:"regulatory",basis:"图纸编号"}:/(?:大于|不小于|超过|不大于|不超过|小于)/u.test(d)&&/(?:规范|规定|要求|标准|条文|验收)/u.test(d)&&/^\d+(?:\.\d+)?(?:mm|cm|m|m2|m3|℃|%)$/u.test(c)?{kind:"regulatory",basis:"规范阈值"}:/^\d+(?:次|遍|轮|班|趟)$/u.test(c)&&/每|逐|定期|不少于|至少/u.test(d)&&I.test(d)?{kind:"management",basis:"管理频次"}:/^\d+个$/u.test(c)&&J.test(d)&&K.test(d)?{kind:"management",basis:"施工组织编排"}:/^\d+(?:人|名|组|支|队)$/u.test(c)&&/配备|配置|设置|组建|成立|设立|建立|派驻|指定|安排/u.test(d)&&/专职|兼职|管理|岗位|人员|班组|队伍|小组|安全|质量|技术|施工|材料|资料|机械|劳务|作业/u.test(d)?{kind:"management",basis:"组织配置"}:/(?:天|月|年|d|万元|元|%)$/u.test(c)&&L.test(d)?{kind:"management",basis:"合同程序条款"}:/^\d+(?:\.\d+)?%$/u.test(c)&&/完成|进度|利用率|得分|负荷|覆盖|达到|控制|以上|以下|不低于|合格率|优良率|成活率|出勤率|到岗率|出工率|一次验收/u.test(d)?{kind:"management",basis:"过程指标"}:/^\d+(?:\.\d+)?月$/u.test(b)&&/开工|竣工|计划|日期|旬|上旬|中旬|下旬|季度|汛期|雨季|冬季|夏季|月初|月底|年底|年中/u.test(d)?{kind:"management",basis:"日期表述"}:/^\d+(?:\.\d+)?小时$/u.test(c)&&/保修|响应|抢修|到场|时限|服务|承诺|维修|热线|回访/u.test(d)?{kind:"management",basis:"服务时限承诺"}:/^\d+天$/u.test(c)&&/合计|共计|总计|累计|总和|总共/u.test(d)&&/工期|工序|节点|进度|衔接|机动|预留|缓冲/u.test(d)?{kind:"management",basis:"工期合计编排"}:/(?:万元|亿元|元)$/u.test(c)&&/暂列金额|暂估价|报价|单价|合价|综合单价|税率|增值税|预留金|招标控制价|限价|造价/u.test(d)?{kind:"management",basis:"商务金额"}:P}function S(a,b){let c=function(a,b){let c=function(a){let b=[];for(let c of j(a)){let a=(0,d.lG)(c.value);a&&b.push(a)}for(let c of a.tables||[])for(let a of c.rows||[]){if(!Array.isArray(a)||0===a.length)continue;let c=a.map(a=>String(a??"").trim());b.push(c.join(" "));let d=[...new Set(c.filter(a=>N.test(a)).map(a=>Q(a)))];if(0===d.length)continue;let e=[...new Set(c.filter(a=>O.test(a)))];for(let a of d)for(let c of e)b.push(`${a}${c}`)}return b.map(a=>(0,e.K3)(a).replace(/(\d+\.\d*?)0+(?![\d])/gu,"$1").replace(/(\d+)\.(?![\d])/gu,"$1")).join("\n")}(b);if(c.length<40)return[];let f=[];for(let b of function(a){let b=[];for(let c of a.matchAll(M)){let d=c[0],f=c.index??0,g=(0,e.K3)(d);if(!g||/^\d+\.\d+$/u.test(g)||/^\d{9,}$/u.test(g))continue;let h=a.lastIndexOf("\n",f-1)+1,i=a.indexOf("\n",f),j=a.slice(h,i<0?a.length:i);if(/^\s*\|/u.test(j.trim()))continue;let k=/^\d+(?:\.\d+)?/u.exec(g)?.[0]??"",l=g.slice(k.length);if(!l&&!/^(?:19|20)\d{2}$/u.test(g)&&!/^\d{3,5}$/u.test(g))continue;let m=function(a,b,c){let d=b;for(;d>0&&!/[。;;!!??\n]/u.test(a[d-1]);)d-=1;let e=b+c;for(;e<a.length&&!/[。;;!!???\n]/u.test(a[e]);)e+=1;return a.slice(d,Math.min(e+1,a.length)).trim()}(a,f,d.length),n=R({token:d,context:m});(l||"unsourced"!==n.kind)&&b.push({token:d,normalizedToken:g,index:f,sentence:m,kind:n.kind,basis:n.basis})}return b}(a))"unsourced"===b.kind&&!function(a,b){let c=[b],d=Q(b);return d!==b&&c.push(d),c.some(b=>RegExp(`(?<![\\d.])${b.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&")}(?![\\d.])`,"u").test(a))}(c,b.normalizedToken)&&f.push({token:b.token,normalizedToken:b.normalizedToken,sentence:b.sentence,index:b.index});return f}(a,b);if(0===c.length)return[];let f=[...new Set(c.map(a=>a.token.replace(/\s+/gu,"")))];return[{level:"error",severity:"blocker",category:"evidence_coverage",owner:"llm",repairability:"llm_repairable",message:`生成后事实反查失败:正文出现 ${f.length} 处未溯源数值 ${f.slice(0,8).join("、")}${f.length>8?" 等":""}`,suggestion:"未溯源数值必须改为定性表述或显式标注来源:来自清单/图纸的保留并明确来源(清单条目/图纸编号);规范常数(试块留置/养护龄期/检测频次等)保留时显性标注规范名称与编号;其余改为不带具体数值的过程控制表述。"}]}},3543:(a,b,c)=>{c.d(b,{Hpz:()=>eT.Hp,h0x:()=>d.h0,bVF:()=>d.bV,bsz:()=>eT.bs,OXS:()=>fG,QJx:()=>d.QJ,jGg:()=>d.jG,Bhi:()=>d.Bh,xmB:()=>d.xm,J5_:()=>d.J5});var d=c(23500),e=c(22157),f=c(46482),g=c(70933),h=c(78217),i=c(30055),j=c(87942),k=c(55807),l=c(76193),m=c(1218),n=c(51190),o=c(44505),p=c(77088),q=c(80439);async function r(a){let b=a.chapterDrafts.flatMap(a=>a.evidence||[]);b.length>0&&(a.allEvidence.push(...b),a.allEvidence.splice(0,a.allEvidence.length,...(0,g.QR)(a.allEvidence,{preservePinned:!0}))),(0,e.Te)(a.signal);let c=(0,g.QR)(a.allEvidence,{preservePinned:!0});a.allEvidence.splice(0,a.allEvidence.length,...c),a.facts=(0,m.B2)(a.template,a.allEvidence,a.documentSpec);let{localFacts:d,projectBasicFacts:f,preciseFacts:h,structuredTables:i}=(0,m.d6)({evidence:a.allEvidence,template:a.template,spec:a.documentSpec,profile:a.domainProfile,diagnostics:a.generationDiagnostics}),j=[...d,...f,...h],k={facts:[],stages:[{type:"fact_extraction",roleId:"llm-json",status:"skipped",message:"已有本地/资料事实覆盖主要必需字段,跳过 LLM 全量事实抽取"}]};if((0,m.N2)(j,a.template,a.documentSpec)){let b=(0,g.QR)(a.allEvidence,{preservePinned:!0});try{k=await (0,m.OQ)(b,a.factExtractionPromptTexts,a.template,a.documentSpec,a.signal,a.generationDiagnostics)}catch(b){if(a.signal?.aborted)throw b;console.error("[gen] fact extraction failed:",b)}}for(let b of k.stages)(0,q.fx)(a.progressStages,b);let l=(0,n.UT)(a.allEvidence);for(let b of(a.structuredFacts=[...d,...f,...h,...k.facts,...l],a.governedStructuredFacts=(0,n.A)(a.structuredFacts,a.scopeConflicts??(0,n.KX)(a.structuredFacts)),a.governedStructuredFacts))a.facts[b.key]=`${(0,e.lG)(b.value)}(来源:${b.sourceFile},角色:${b.roleId})`;a.factsModel=await (0,m.d7)(a.governedStructuredFacts,i,a.missingItems,a.documentSpec,a.domainProfile);let r=(0,n.qD)({facts:a.governedStructuredFacts,projectRoot:a.projectRoot,requirement:a.requirement||"",templateId:a.template.id});a.factsModel.canonical=r,a.scheduleAuthority=(0,o.GG)(a.factsModel),a.assemblyRateAuthority=(0,o.hI)(a.factsModel),a.scaleSummary=(0,o.Pt)(a.factsModel),a.supportAuthority=(0,o.P3)(a.factsModel),a.decisionLockEntries=(0,p.Pd)({facts:[...d,...f,...h],evidence:a.allEvidence})}var s=c(31846),t=c(11248),u=c(95294);let v=/OCR|乱码|识别错误|无法确认|语义断裂|页码/u,w=/暂列金额|暂估价|预留金/u;function x(a){return`${a.key||""} ${a.fieldName||""} ${a.value||""}`.trim()}function y(a){if(!a)return{usable:[],noiseExcluded:[]};let b=a.factIndex?.parameterFacts?.length?a.factIndex.parameterFacts:a.preciseFacts||[],c=new Set,d=[],e=[];for(let a of b){if(!a)continue;let b=String(a.value||"").trim();if(!b||v.test(x(a))||(0,m.ZR)(a)||w.test(x(a)))continue;let f=(0,u.MO)(b);if(f){e.push({fact:a,category:f});continue}let g=`${a.key}|${b}`;c.has(g)||(c.add(g),d.push(a))}return{usable:d,noiseExcluded:e}}function z(a,b=[]){let c=new Set;for(let d of(0,s.TC)(a,b))for(let a of(0,s.XF)(d))c.add(a);return[...c]}function A(a,b){let c=x(a),d=0;for(let a of b)c.includes(a)&&(d+=1);return d}function B(a,b,c=[]){let{usable:d,noiseExcluded:e}=y(b),f=(0,t.K3)(a||""),g=c.map(a=>z(a.title,a.sections||[])),h=[],i=[],j=[];for(let a of d){if(function(a,b){let c=(0,t.K3)(b);return!!c&&(!!a.includes(c)||b.split(/[、,,;;/|]+/u).map(a=>(0,t.K3)(a)).filter(a=>a.length>=5).some(b=>a.includes(b)))}(f,String(a.value))){h.push(a);continue}(g.some(b=>b.length>0&&A(a,b)>0)?i:j).push(a)}return{totalParams:d.length,used:h,relevantMissed:i,irrelevantMissed:j,noiseExcluded:e}}var C=c(18292);let D=["project_name","project_code","owner","project_location","project_scale","schedule_requirement","quality_standard","project_investment_estimate"],E=/资料未明确|系统暂未从知识库确认|项目资料暂未明确|^(?:无|暂无|未确认|待确认)$/u;function F(a){return/--|延期到|资料|附件|扫描|目录|汇总|打包|备份|\d{1,2}\.\d{1,2}/u.test(a)}function G(a){return a.replace(/[((]\d+[))]/gu,"").replace(/副本|最终版|扫描件|定稿/gu,"").replace(/[\s,。,.;;::《》“”‘’()()_-]+/gu,"").toLowerCase()}function H(a,b){let c=G(b);if(!c||c.length<4)return!0;let d=G(a);return!!d.includes(c)||c.length>=12&&d.includes(c.slice(0,Math.max(8,Math.floor(.72*c.length))))}let I={规范包:/[括含]/u};var J=c(73859);function K(a){return a.replace(/[((]\d+[))]/gu,"").replace(/副本|最终版|扫描件|定稿/gu,"").replace(/\s+/gu,"").replace(/[,。,.;;::《》“”‘’()()_\-—–―─-〜~·•]/gu,"").toLowerCase()}let L=/项目名称|工程名称|招标人|建设单位|发包人|采购人|招标单位|建设地点|工程地点|项目地点/u,M=/bill_of_quantities|drawing|table/iu;function N(a,b,c){let d=a.trim();if((0,J.d2)(b,d)||(0,J.rF)(b,d)||/签章|盖章|联系人|联系电话|电话|邮箱|解密|开标|评标|保证金|交易系统|空白|填写|上传|下载|递交|投标文件制作|电子服务系统|交易平台/u.test(d)||/\|/u.test(d)||/^#+\s*/u.test(d)||/见(?:招标公告|投标人须知|前附表|本项目|补疑)|资料参数行摘要|公共资源交易监督管理|开评标程序|监管部门|招标代理机构|监督管理部门|行政监督部门/u.test(d)||/是否|符合|采购范围|规定的投标截止时间|电子交易系统|投标人须知|招标文件正文/u.test(d)&&/\d{3,}/u.test(d)||/项目名称|工程名称/u.test(d)&&/项目编号|工程概况|建筑面积|本项目分为|现状建筑物|改造工程|标段/u.test(d)||/项目编号[::]|工程概况[::]|本项目分为|现状建筑物|总建筑面积|本次改造工程|清单编制说明/u.test(d)||c&&/招标人|建设单位|发包人|采购人|招标单位/u.test(c)&&!/局|公司|中心|政府|管委会|委员会|集团|院|大学|学校|街道|办事处|指挥部|项目部|办公室|厅|署|银行|医院/u.test(d))return"";if(c&&L.test(c)){if(/所在地|地址|详见|见前附表|见招标/u.test(d)||/检查井|化粪池|机箱|碎石|路灯|井盖|监控系统|吊顶|抹灰|楼面|顶棚/u.test(d))return"";let a=d.replace(RegExp(`^${c.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&")}\\s*[::、,,..]?\\s*`,"u"),"")||d;return!a||a.length>40||/第\s*页|共\s*页/u.test(a)||/[,。;;、]/u.test(a)||/[::]/u.test(a)||/^[((][^))]*[))]$/u.test(a)||/[/\\]|\.(?:pdf|docx?|xlsx?|zip)/iu.test(a)||/R\d+C\d+/u.test(a)||K(a)===K(c)?"":K(a)}let e=/\d+(?:\.\d+)?\s*(?:日历天|天|个月|月)/u.exec(d)?.[0],f=K(e&&/工期|总工期|合同工期|计划工期|施工周期|质保期|有效期|养护期/u.test(`${c||""} ${d}`)?e:d);return!f||f.length>80?"":f}var O=c(40299),P=c(52639),Q=c(95622),R=c(23760),S=c(85016),T=c(10751),U=c(30836),V=c(1358);let W=[{re:/^(?:GB|JGJ|CJJ|CJ|JG|JT|TB|SL|DL|HG|SH|YB|SY|GA|QB|WS|JC|NB|CECS|ISO|IEC|IEEE|API|RFC|DB\d*|T\/[A-Z]+)[/T]{0,2}\s?\d/iu,reason:"规范编号"},{re:/^(?:19|20)\d{2}\s*年$/u,reason:"法规年代"},{re:/^E\d{12,}$/u,reason:"招标项目编号"}],X=/(?:劳动力|人力|用工|工人|民工|工种|普工|技工|管理人员|作业人员|人数|保勤|人员|班组|峰值|高峰|机械|机具|设备|车辆|台班|挖掘机|装载机|自卸|搅拌|塔吊|吊车|起重机|进度|工期|日历天|节点|阶段|开工|竣工|进场|退场|保养|维修|周转|材料|物资|水泥|砂石|碎石|钢筋|钢管|钢材|管材|灯具|路灯|电缆|光缆|通信|线缆|配线|配管|双绞|JDG|SC管|PC管|电源|电压|配电箱|照明|工作站|服务器|存储|工具|角磨|垫板|苗木|绿植|种植|养护期|保修|储备|堆放|供应|工程量|桩号|里程|K\d|管网|管道|胸径|地径|冠幅|冠丛|蓬径|工长|负责人|施工员|完成率|计划|拆除|人行道|侧石|缘石|杆件|砖基础|圈梁|构造柱|矩形柱|矩形梁|基础梁|过梁|有梁板|天沟|挑檐|雨篷|楼梯|散水|坡道|块料|墙面|吊顶|砌体|砖墙|多孔砖|实心砖|金属门|木质门|金属窗|百叶窗|百页窗|门窗|扶手|栏杆|桥架|管道基础|包管|压顶|独立基础|墙基|防潮层|给水|排水|空调|公厕|停车场|零星)/u,Y=/(?:混凝土|砼|砂浆|强度|等级|标号|配合比|坍落度|水灰比|掺量|养护|浇筑|振捣|模板|支架|脚手架|搭接|锚固|保护层|垫层|找平|找坡|坡度|防水|涂膜|卷材|闭水|蓄水|淋水|回填|夯实|压实|分层|虚铺|沟槽|基槽|基坑|边坡|标高|高程|厚度|间距|埋深|覆土|管径|PPR|冷水管|井室|抹灰|腻子|涂料|面层|基层|安装|提升泵|扬程|焊接|法兰|试压|冲洗|消毒|调试|接地|防雷|避雷|绝缘|电阻|验收|检验|检测|试验|取样|频率|焊缝|防腐|除锈|开挖|平整|清底|预留|土方|路床|碾压|摊铺|温度|降雨|雨量|接头|管枕|接口|承插|热熔|连接|封堵|距地|挂墙|挂装|嵌墙|暗配|明配|暗装|敷设|过桥|随桥|排管|人孔|通棒|内径|管孔|垂直度|偏差|漏风|通风|壁厚|接缝|遍数|密植|分叉|栽植|浇灌|试运转|严密性|渗水|牌号|材质|分辨率|图像|稳压|压力降|风速|纵距|横距|步距|立杆|连墙件|支撑卡|施工现场|场区|硬化|围挡|反光|封闭段|渣土)/u,Z=/(?:(?<![\d.])\d+\s*(?:座|辆|根|处|盏|株|道|孔|眼|樘|d(?![A-Za-z0-9]))|\d+(?:\.\d+)?\s*(?:%|℃|人日|工日)|(?:DN|Φ|φ|HRB|HPB)\s*\d+(?:\.\d+)?)/gu;function $(a,b,c=0){for(let d=a.indexOf(b,c);d>=0;d=a.indexOf(b,d+1)){let c=a.charAt(d-1),e=a.charAt(d+b.length);if(!/[\d.]/u.test(c)&&!/[\dA-Za-z]/u.test(e))return d}return -1}function _(a){let b=a.match(/\d+(?:\.\d+)?/u);return b?b[0]:a.trim()}function aa(a){return X.test(a)?"derivation-gap":Y.test(a)?"process-gap":"unattributed"}async function ab(a){let b=a.beforeMetrics?.map(Number)??(await a.recheck(a.originalContent)).map(Number),c=await a.apply();if(c===a.originalContent)return{content:a.originalContent,rolledBack:!1,beforeMetrics:b,afterMetrics:b};let d=(await a.recheck(c)).map(Number);return(a.shouldRollback??function(a,b){return b.some((b,c)=>b>a[c])})(b,d)?(!function(a,b){if(!a)return;let c=a.llm.patchGuardStats??(a.llm.patchGuardStats={}),d=c[b]??(c[b]={hits:0,rejects:0,rollbacks:0});d.rollbacks=(d.rollbacks??0)+1}(a.diagnostics,a.repairRound),{content:a.originalContent,rolledBack:!0,beforeMetrics:b,afterMetrics:d}):{content:c,rolledBack:!1,beforeMetrics:b,afterMetrics:d}}let ac=/(?:\d+(?:\.\d+)?\s*(?:mm|cm|m2|m3|m³|m²|㎡|平方米|m|km|kg|g|t|K|L|ml|MPa|kPa|kN|N|℃|%|台|套|座|个|项|批|次|份|人|小时|分钟|日历天|天|周|月|年|万元|元|W|kW|kV|V|A|Hz|米|处|道|根|盏|株|标段|层|樘|孔|眼|间|户|栋|幢|d)(?![\w\u00B2\u00B3])|DN\s*\d+|Φ\s*\d+(?:\.\d+)?|φ\s*\d+(?:\.\d+)?|C\d{2,}|HRB\d+|HPB\d+)/giu;function ad(a){return a.replace(/\s+/gu,"").toLowerCase()}function ae(a){return[...new Set((a.match(ac)||[]).map(ad))]}function af(a){let b=new Set;for(let c of a.allEvidence)if(c.content)for(let a of ae((0,g.eE)(c.content)))b.add(a);let c=a.input.billFactLock;if(c)for(let a of c.entries){for(let c of ae(`${a.name} ${a.description} ${a.quantity}${a.unit}`))b.add(c);for(let c of(0,s.L4)(a.description))b.add(ad(c));for(let c of a.specQuantityPairs)for(let a of(b.add(ad(c.spec)),ae(c.quantity)))b.add(a)}let d=a.input.blueprintData?.quantities;if(d)for(let[a,c]of Object.entries(d)){for(let a of("number"==typeof c.value&&Number.isFinite(c.value)&&b.add(ad(`${c.value}${c.unit||""}`)),c.specBreakdown??[]))"number"==typeof a.value&&Number.isFinite(a.value)&&b.add(ad(`${a.value}${c.unit||""}`));for(let c of ae(a))b.add(c)}for(let c of[...a.structuredFacts||[],...a.factsModel?.preciseFacts||[]])for(let a of ae((0,e.lG)(c.value)))b.add(a);for(let c of a.factsModel?.tables||[])for(let a of c.rows||[]){if(!Array.isArray(a)||0===a.length)continue;let c=a.map(a=>String(a??"").trim());for(let a of ae(c.join(" ")))b.add(a);let d=[...new Set(c.filter(a=>V.bX.test(a)))];if(0===d.length)continue;let e=[...new Set(c.filter(a=>V.CE.test(a)))];for(let a of d)for(let c of e)for(let d of ae(`${a}${c}`))b.add(d)}return b}async function ag(a){let b=af(a);if(0===b.size)return;let c=a=>{let c=[];for(let d of a.split(/[。;;!!??\n]/u).map(a=>a.trim()).filter(Boolean).filter(a=>!a.startsWith("#")&&(a.match(ac)??[]).length>0).map(a=>a.slice(0,160))){if(function(a){if(/高温|防暑|危大|专家论证|超过一定规模|40℃|37℃|35℃/u.test(a)||/第\s*\d+\s*(天|周|月|日|层|道|步|轮|批)/u.test(a))return!0;let b=a.match(ac)||[];return!!(b.length>0&&b.every(a=>/%$/u.test(a.trim()))&&/完成|进度|利用率|合格率|优良率|评标|得分|负荷/u.test(a)||b.every(a=>/^20\d{2}/u.test(a))&&/年/u.test(a)&&!/月|日/u.test(a))}(d))continue;let a=ae(d);if(0===a.length||a.every(a=>b.has(a)))continue;let e=a.filter(a=>!b.has(a)&&"unsourced"===(0,V.eS)({token:a,context:d}).kind);e.length>0&&c.push({sentence:d,tokens:e})}return c},d=new Map;for(let b of a.finalChapterDrafts){let a=c(b.content);a.length>0&&d.set(b.id,a)}let e=[...d.values()].reduce((a,b)=>a+b.length,0);if(0===e){let c=(0,q.X5)({type:"validation",roleId:"numeric-verification",status:"success",message:"正文数值确定性核对通过:全部正文数值均在资料原文/清单事实锁/蓝图参数桶中找到同值来源",details:[`数值权威库规模:${b.size} 个归一化 token`]},{subtitle:"数值确定性核对"});(0,q.fx)(a.progressStages,c),(0,q.fx)(a.finalGateRepairStages,c),a.emitProgress(a.finalChapterDrafts,a.progressStages);return}let g=0,h=0;for(let[b,e]of d){let d=a.finalChapterDrafts.findIndex(a=>a.id===b);if(d<0)continue;let i=a.finalChapterDrafts[d],j=i.content,k=e,l=c(j).length,m=0,n=!1,o=!1,p=[l];for(;k.length>0&&m<2;){m+=1;let e=(0,q.X5)({type:"llm_review",roleId:`agent-numeric-verification-${b}`,status:"running",message:`正文数值核对发现 ${k.length} 处疑似无来源数值,第 ${m} 轮定向修复中:${i.title}`,details:k.map(a=>`疑似:${a.sentence}(缺来源 token:${a.tokens.join("、")})`)},{subtitle:"数值确定性核对"});(0,q.fx)(a.progressStages,e),(0,q.fx)(a.finalGateRepairStages,e),a.emitProgress(a.finalChapterDrafts,a.progressStages);let g=["【正文数值定向核对修复】",...m>1?[`本轮为第 ${m} 轮(最多 2 轮):上一轮修复后仍有残留,无法确认来源的数值必须直接删除,禁止保留或替换为其他无来源数值。`]:[],"下列句子中的数值(标注「缺来源 token」)在项目绑定材料、工程量清单与蓝图中均找不到同值来源,属于疑似编造数值。请逐句核对并修复:","1. 若该数值在本章绑定证据中确实存在(仅表述口径不同),保持数值原样,只修正单位或表述;","2. 若该数值确属规范/标准常数(如试块留置、养护龄期、检测频次),保留数值并显性标注规范名称与编号(如「按《混凝土结构工程施工质量验收规范》GB 50204 规定,每100m\xb3留置一组试块」)——显性标注后即视为已溯源;","3. 其余情况必须删除该数值,改写为不带具体数值的过程控制表述(如「按设计要求」「分层碾压至压实度满足设计及规范要求」);","禁止把疑似数值替换为另一个同样无来源的数值;禁止改动句子的非数值部分;只做局部修改,不得新增、删除或合并小节。",k.map(a=>`- 疑似句:${a.sentence}(缺来源 token:${a.tokens.join("、")})`).join("\n")].join("\n"),h=await ab({originalContent:j,repairRound:"numeric-verification",diagnostics:a.generationDiagnostics,apply:async()=>{let b=await a.withProgressHeartbeat(()=>(0,f.l8)({template:a.template,chapter:{id:i.id,title:i.title,content:j,evidence:i.evidence,missingFacts:i.missingFacts,sections:i.sections},issues:k.map(a=>`疑似无来源数值:${a.sentence}(token:${a.tokens.join("、")})`),promptTexts:g,requirement:a.requirement,forbidDrawingImages:!1,bidComposition:a.bidComposition,diagnostics:a.generationDiagnostics,signal:a.signal,patchGuard:(0,f.XG)("numeric-verification",a.generationDiagnostics)}));return b.content&&b.content!==j?b.content:j},recheck:a=>[c(a).length]});h.rolledBack||h.content===j||(j=h.content,a.finalChapterDrafts[d]={...i,content:j},n=!0),h.rolledBack&&(o=!0);let r=c(j).length;if(p.push(r),0===r||r>=l||m>=2)break;l=r,k=c(j).slice(0,12)}n&&(g+=1);let r=c(j).length;h+=r;let s=(0,q.X5)({type:"llm_review",roleId:`agent-numeric-verification-${b}`,status:0===r?"success":"failed",message:0===r?`数值核对修复完成:${i.title}(${e.length} 处疑似数值已处理,残留轨迹 ${p.join("→")})`:n?`数值核对修复部分生效:${i.title}(疑似数值残留轨迹 ${p.join("→")},已执行 ${m} 轮定向修复(每章最多 2 轮);残留项以 warning 记录,不阻断交付)`:o?`数值核对修复已回滚:${i.title}(修复后疑似数值增多,保留修复前正文;残留 ${r} 处以 warning 记录,不阻断交付)`:`数值核对修复未生效:${i.title}(模型未产生有效修改;残留 ${r} 处以 warning 记录,不阻断交付)`,details:[...e.map(a=>`疑似:${a.sentence}`),r>0?`已执行 ${m} 轮定向修复,残留项以 warning 记录,不阻断交付`:""]},{subtitle:"数值确定性核对"});(0,q.fx)(a.progressStages,s),(0,q.fx)(a.finalGateRepairStages,s),a.emitProgress(a.finalChapterDrafts,a.progressStages)}g>0&&(a.finalMarkdown=a.rebuildFinalMarkdown(),await a.recomputeFinalValidationBundle()),a.generationDiagnostics.llm.lastInfo=`正文数值确定性核对:权威库 ${b.size} token,${e} 处疑似无来源数值,${g} 章完成定向修复,残留 ${h} 处(每章最多 2 轮收敛修复,未收敛残留以 warning 记录,不阻断交付)`}var ah=c(40693);function ai(a){return[...a.project,...a.schedule,...a.quality,...a.safety,...a.resources,...a.preciseFacts,...a.bills,...a.drawings,...a.rules,...a.specifications].flatMap(a=>{let b=(0,t.K3)(`${a.fieldName||a.key} ${(0,e.lG)(a.value)}`),c=(0,t.K3)((0,e.lG)(a.value));return c&&c!==b?[b,c]:[b]}).join("\n")}function aj(a,b){let c=[{label:"工期",corpus:ai({...b,project:[],quality:[],safety:[],resources:[],preciseFacts:[],bills:[],drawings:[],rules:[],specifications:[]}),required:/工期|日历天|合同工期|计划工期/u},{label:"质量",corpus:ai({...b,project:[],schedule:[],safety:[],resources:[],preciseFacts:[],bills:[],drawings:[],rules:[],specifications:[]}),required:/质量目标|质量标准|验收|复验/u},{label:"安全",corpus:ai({...b,project:[],schedule:[],quality:[],resources:[],preciseFacts:[],bills:[],drawings:[],rules:[],specifications:[]}),required:/安全|文明|风险|应急/u},{label:"资源",corpus:ai({...b,project:[],schedule:[],quality:[],safety:[],preciseFacts:[],bills:[],drawings:[],rules:[],specifications:[]}),required:/资源|材料|设备|劳动力/u},{label:"工程量",corpus:ai({...b,project:[],schedule:[],quality:[],safety:[],resources:[],preciseFacts:[],drawings:[],rules:[],specifications:[]}),required:/工程量|清单|建筑面积|长度|吨|台|套|项/u}],d=(0,t.K3)(a.replace(/\s+/gu,"")),e=[b.project,b.schedule,b.quality,b.safety,b.resources,b.preciseFacts,b.bills,b.drawings,b.rules,b.specifications].every(a=>0===a.length),f=[];for(let b of c){if(!b.required.test(a))continue;let c=[...new Set(b.corpus.split("\n").map(a=>a.replace(/\s+/gu,"")).filter(Boolean))];(0!==c.length||e)&&0===c.filter(a=>!(a.length<6)&&(!!(d.includes(a.slice(0,24))||a.length>24&&d.includes(a.slice(0,12)))||(a.match(/\d+(?:\.\d+)?(?:m2|hm2|m3|l|ml|mm|cm|km|m|kg|g|t|万元|亿元|元|天|工作天|月|年|h|min|%|permille|mpa|kpa|pa|kn|kw|mw|w|kv|v|ma|a|hz|℃|台|套|件|个|根|只|组|项|处|座|栋|层|间|批|次|人|工日|人日|亩)/gu)||[]).some(a=>a.length>=3&&d.includes(a)))).length&&f.push({level:"warning",message:`证据使用覆盖率偏低:正文中未明显使用${b.label}相关事实`,suggestion:`请在相应章节中引用至少一项${b.label}事实,避免只写通用表述。`})}return f}async function ak(a,b){let c=a.split(/\n\s*\n/gu).map(a=>a.trim()).filter(Boolean),d=/(?:加强组织领导|严格执行规范|落实责任制度|确保工程质量|强化过程管理|提高思想认识|完善管理体系|形成闭环管理|统筹推进|全面落实)/gu,e=[];for(let a of c){if(120>(0,h.V7)(a)||(a.match(d)||[]).length<2)continue;let c=await b.analyze(a);c&&(c.concrete||e.push({level:"warning",message:`段落存在空泛表述:${a.slice(0,48)}...`,suggestion:"请补充该段对应的对象、动作、控制点或验收闭环,避免只保留管理性套话。"}))}return e}function al(a,b){let c=[];if(!b)return c;let d=a.map(a=>`${a.title}
|
|
15
15
|
${a.content}`).join("\n\n");if(/进度|工期/u.test(d)&&/资源|材料|设备|劳动力/u.test(d)){let d=a.find(a=>/资源|材料|设备|劳动力/u.test(a.title)),e=d?b.get(d.title):void 0;e?.contentNeeds.resource||c.push({level:"warning",message:"章节逻辑依赖不足:进度章节与资源章节之间缺少明显支撑关系",suggestion:"请在资源章节补充与工期目标相匹配的劳动力、材料、设备投入和调配计划。"})}return/质量/u.test(d)&&/施工|工艺|技术/u.test(d)&&(a.some(a=>b.get(a.title)?.contentNeeds.quality||b.get(a.title)?.contentNeeds.construction)||c.push({level:"warning",message:"章节逻辑依赖不足:质量章节未明显支撑施工工艺控制",suggestion:"请在施工技术和质量章节之间补齐工艺控制点、验收要求和整改复验闭环。"})),/安全|文明|风险/u.test(d)&&(a.some(a=>b.get(a.title)?.contentNeeds.safety)||c.push({level:"warning",message:"章节逻辑依赖不足:安全章节缺少检查整改和应急支撑",suggestion:"请补齐风险识别、检查整改、应急响应和演练闭环。"})),c}let am=/安全|文明|质量|绿色施工|环保|扬尘|消防|应急|危大|风险|规范|标准|管理要求|施工工艺|技术措施|验收/u,an=/项目名称|工程名称|建设地点|建设单位|招标人|发包人|建设规模|招标范围|合同工期|计划工期|质量标准|危大工程清单|工程量|材料规格|设备型号|图纸参数|报价|单价|利润|税率|合同金额|联系方式|品牌/u,ao=/报价|单价|合价|金额|利润|税率|增值税|招标控制价|最高投标限价|中标价|合同价|暂列金额/u,ap=/联网增强|联网检索|网页资料|搜索结果|根据网页|互联网资料|在线资料|浏览器|搜索引擎/u,aq=["项目名称","工程名称","建设地点","建设单位","招标人","发包人","建设规模","招标范围","合同工期","计划工期","工程量","报价","单价"];function ar(a){return a.replace(/&/gu,"&").replace(/</gu,"<").replace(/>/gu,">").replace(/"/gu,'"').replace(/'/gu,"'").replace(/<[^>]+>/gu,"").replace(/\s+/gu," ").trim()}async function as(a,b,c,d,e){let f=`https://duckduckgo.com/html/?q=${encodeURIComponent(a)}`,g=new AbortController,h=setTimeout(()=>g.abort(),8e3),i=()=>g.abort();e?.addEventListener("abort",i,{once:!0});let j=await fetch(f,{headers:{"User-Agent":"Mozilla/5.0 compatible; customize-agent web research"},signal:g.signal}).finally(()=>{clearTimeout(h),e?.removeEventListener("abort",i)});return j.ok?[...(await j.text()).matchAll(/<a[^>]+class="result__a"[^>]+href="([^"]+)"[^>]*>([\s\S]*?)<\/a>[\s\S]*?<a[^>]+class="result__snippet"[^>]*>([\s\S]*?)<\/a>/giu)].map(a=>{let b=ar(a[1]||""),c=ar(a[2]||""),d=ar(a[3]||""),e=/uddg=([^&]+)/u.exec(b)?.[1];return{url:e?decodeURIComponent(e):b,title:c,snippet:d}}).filter(a=>{let b=`${a.title} ${a.snippet} ${a.url}`;return!(!a.url||!a.snippet||an.test(b)||ao.test(b)||ap.test(b)||d.some(a=>a&&b.includes(a)))&&(0===c.length||c.some(b=>a.url.includes(b)))}).slice(0,b):[]}async function at(a){if(!a.config.enabled||!function(a,b){let c=`${a} ${b.join(" ")}`;return!(!am.test(c)||/项目概况|工程概况|建设地点|建设规模|招标范围|工程量|报价|造价/u.test(c)&&!/安全|文明|质量|危大|环保|工艺|措施/u.test(c))}(a.chapterTitle,a.sectionTitles))return{evidence:[],queries:[],filtered:0,failedQueries:0,failures:[]};let b=function(a,b,c){let d=`${a} ${b.join(" ")}`,e=[/危大/u.test(d)?"危大工程 专项施工方案 管理规定 安全措施":"",/安全|文明/u.test(d)?"建筑工程 安全文明施工 管理要求":"",/质量|验收/u.test(d)?"建筑工程 质量控制 质量验收 通用要求":"",/扬尘|环保|绿色/u.test(d)?"施工现场 扬尘治理 绿色施工 环保要求":"",/消防|应急/u.test(d)?"施工现场 消防 应急管理 要求":"",/工艺|技术措施/u.test(d)?"建筑工程 施工工艺 技术措施 通用要求":""].filter(Boolean),f=`${a.replace(an,"")} 公开规范 通用要求`.trim();return[...new Set(e.length?e:[f])].slice(0,c)}(a.chapterTitle,a.sectionTitles,a.config.maxQueriesPerChapter),c=[],d=0,e=0,f=[];for(let g of b)try{for(let b of(await as(g,a.config.maxResultsPerQuery,a.config.trustedDomains,a.runtimeRules.forbiddenTerms||[],a.signal))){let e=function(a,b){let c=a;for(let a of aq)c=c.replace(RegExp(`${a}[^。;;
|
|
16
16
|
]{0,80}`,"gu"),"");for(let a of b.map(a=>{var b;return null==(b=a.value)?"":"string"==typeof b||"number"==typeof b||"boolean"==typeof b?String(b).trim():""}).filter(a=>a.length>=3&&a.length<=80))c=c.replace(RegExp(a.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&"),"gu"),"");return c.replace(ao,"").trim()}(b.snippet,a.localFacts);if(!e||e.length<20){d+=1;continue}c.push({chapterId:a.chapterId,filePath:b.url,score:.42,content:`参考依据:${b.title}
|
|
17
|
-
${e}`,source:function(a){let b=a.toLowerCase();return b.includes(".gov.cn")||b.includes("mohurd")||b.includes("zjt")||a.includes("住建")?"web-policy":"web-evidence"}(b.url),sectionTitle:a.chapterTitle})}}catch(a){e+=1,f.push(`${"string"==typeof g?g:"查询"}:${a instanceof Error?a.message:String(a)}`),console.error("[web-research] 检索查询失败(与「被噪声过滤」分列计数)",a)}return{evidence:c,queries:b,filtered:d,failedQueries:e,failures:f}}var au=c(65667);let av=[{label:"工程名称",factGroups:["project"],patterns:[/工程名称\s*[::]\s*([^\n|]+)/u],locations:"封面、工程概况、页眉页脚、专项方案、表格标题"},{label:"建设地点",factGroups:["project"],patterns:[/建设地点\s*[::]\s*([^\n|]+)/u,/工程地点\s*[::]\s*([^\n|]+)/u],locations:"工程概况、周边环境、扬尘噪声、交通导改、属地化措施"},{label:"总工期",factGroups:["schedule"],patterns:[/总工期\s*[::]\s*([^\n|]+)/u,/计划工期\s*[::]\s*([^\n|]+)/u,/工期目标\s*[::]\s*([^\n|]+)/u],locations:"工程概况、进度计划、横道图、资源计划、纠偏措施"},{label:"建设规模",factGroups:["project","preciseFacts"],patterns:[/建设规模\s*[::]\s*([^|\n]+)/u,/建筑面积\s*[::]\s*([^|\n]+)/u,/道路长度\s*[::]\s*([^|\n]+)/u,/管线长度\s*[::]\s*([^|\n]+)/u],locations:"工程概况、工程量表、施工部署、资源配置"},{label:"机械数量型号",factGroups:["resources"],locations:"机械表、平面布置、进度保障、安全专项方案",kind:"equipment-counts"},{label:"劳动力人数",factGroups:["resources"],patterns:[/劳动力\s*[^\n|]{0,12}(\d+)\s*人/u,/班组\s*[^\n|]{0,12}(\d+)\s*人/u],locations:"劳动力计划、进度节点、抢工方案、工资保障台账"},{label:"危大工程清单",factGroups:["safety","preciseFacts"],patterns:[/危大工程\s*[::]\s*([^\n|]+)/u,/深基坑|高支模|起重吊装|脚手架/u],locations:"安全章节、专项方案、审批表、应急预案"},{label:"环保监测指标",factGroups:["quality","safety","preciseFacts"],patterns:[/PM10|PM2\.5|TSP|噪声|扬尘在线监测/u],locations:"文明施工、扬尘噪声、智慧工地、应急联动"}];function aw(a){return a.replace(/[\s,。;;::|]/gu,"").trim()}let ax=/塔式起重机|履带吊|汽车吊|卷扬机|脚手架|扣件|钢管|模板|噪声|PM2\.5|PM10|TSP|扬尘在线监测|临电|消防|安全网|围挡|洗车台|沉淀池|雾炮/u,ay=/不使用|不采用|不配置|无需|未采用|不得使用|禁止使用/u;function az(a,b){let c=[];for(let d of b){let b=a[d];if(Array.isArray(b))for(let a of b)a&&"object"==typeof a&&"value"in a&&"string"==typeof a.value&&c.push(a.value)}return c.map(aw).filter(Boolean)}function aA(a,b){return 0===b.length||b.some(b=>b.includes(a)||a.includes(b)||a.length>=4&&b.includes(a.slice(0,4)))}var aB=c(37047),aC=c(63516);let aD=/([\u4e00-\u9fa5A-Za-z0-9()()]{1,12}?)(\d+(?:\.\d+)?)\s*(m²|m³|㎡|mm|cm|m|米|MPa|kN|kV|kW|℃|°C|万元|元|人|天|日|个|层|樘|处|套|台|t|吨)([\u4e00-\u9fa5A-Za-z0-9()()]{0,8})/gu,aE=["直径","厚度","宽度","长度","高度","深度","间距","距离","标高","偏差","数量","面积","体积","重量","压力","温度","强度","等级","坡度","规格","尺寸","层数","次数","跨度","半径","总长","全长"],aF=["以内","以外","以上","以下","之间","左右","以前","以后","之前","之后"],aG=/^(?:主要|本工程|本项目|全项目)?(?:作业对象|作业内容|施工内容|工作内容|工程内容|施工对象|施工范围|工程规模|建设内容|建设规模)为/u,aH=/^(?:由)?责任[\u4e00-\u9fa5]{0,4}在(?:内)?完成/u,aI=/自然村|村组|标段|区域|点位|养护|地上|地下|建筑高度|[\u4e00-\u9fa5]{1,4}组$/u,aJ=/^(?:局部|个别|少数|多数|大部分)/u,aK=["开挖","封闭","回填","浇筑","铺筑","摊铺","供应","编制","提交","签订","安装","养护","试验","拆除","砌筑"],aL=["直径","半径","穴径","胸径","地径","冠幅","厚度","宽度","长度","高度","深度","穴深","间距","距离","标高","坡度","跨度","株距","行距"];function aM(a){return a.replace(/(?:mm|cm|m|MPa|kN|kV|kW|℃|元|万元|人|天|日|个|层|樘|处|套|台|t|吨)/gu,"").replace(/[\s,,、;;::()()]/gu,"")}function aN(a,b){let c=["。",";",";","\n"],d=0;for(let e of c){let c=a.lastIndexOf(e,b-1);c+1>d&&(d=c+1)}let e=a.length;for(let d of c){let c=a.indexOf(d,b);c>=0&&c<e&&(e=c)}return a.slice(d,e)}async function aO(a){let b=function(a){let b=new Map,c=0;for(let d of a.split("\n")){let a=d.trim(),e=c;if(c+=d.length+1,!(/^#{1,6}\s/u.test(a)||/^\s*\|/u.test(a)))for(let a of d.matchAll(RegExp(aD.source,"gu"))){let c=(a[1]||"").trim(),d=a[2],f=/\d+$/u.exec(c);if(f&&(c=c.slice(0,f.index).trim(),d=`${f[0]}${d}`),/月\s*$/u.test(c))continue;let g=Number(d),h=a[3]||"",i=(a[4]||"").trim(),j=/[与和及][^与和及]{0,12}?\d/u.exec(i),k=j?i.slice(0,j.index):i,l=`${c}${k}`.replace(/[\s,,、;;::]/gu,""),m=l.replace(aG,"").replace(aH,""),n=m.length>=2?m:l;if(n.length<2||!/[\u4e00-\u9fa5A-Za-z]{2,}/u.test(n)||!Number.isFinite(g)||g<=0||aE.some(a=>n===a||aM(n)===a)||aF.some(a=>aM(n)===a)||aI.test(n)||aJ.test(n))continue;let o={matchIndex:e+(a.index||0),valueOffset:function(a,b,c){if(!c)return a.indexOf(b);let d=a.lastIndexOf(c);if(d>=0){let c=d-b.length;if(c>=0&&a.slice(c,d)===b)return c;let e=RegExp(`(${b.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&")})\\s*$`,"u").exec(a.slice(0,d));if(e&&void 0!==e.index)return e.index}return a.indexOf(b)}(a[0],d,a[3]||""),valueText:d},p=b.get(a[0]);if(p){p.occurrences.push(o);continue}b.set(a[0],{concept:n,value:g,unit:h,raw:a[0],occurrences:[o]})}}return[...b.values()].slice(0,60)}(a);if(b.length<3)return{groups:[]};let c=[...new Set(b.map(a=>a.concept))];if(c.length<2)return{groups:[]};let d=await (0,aB.VN)().embedDocuments(c);if(d.length!==c.length){let a=`本地语义模型嵌入数量不一致:期望 ${c.length} 条,实际 ${d.length} 条`;return console.warn(`[gen] parameter-concept-conflict degraded: ${a}`),{groups:[],degraded:{level:"warning",severity:"warning",category:"format",owner:"system",repairability:"manual_review",message:`参数概念口径冲突检测已降级跳过:${a}`,suggestion:"语义模型输出异常,本轮未执行该检测维度;可稍后重新生成复核。"}}}let e=new Map(c.map((a,b)=>[a,d[b]])),f=function(a,b){let c=new Map(a.map(a=>[a,a])),d=a=>{let b=c.get(a)||a;return b===a?a:(c.set(a,d(b)),c.get(a)||a)},e=(a,b)=>{c.set(d(a),d(b))};for(let c=0;c<a.length;c+=1)for(let d=c+1;d<a.length;d+=1)b(a[c],a[d])>=.6&&e(a[c],a[d]);return c}(c,(a,b)=>{let c=e.get(a),d=e.get(b);if(!c||!d||0===c.length||0===d.length)return 0;let f=Math.min(c.length,d.length),g=0;for(let a=0;a<f;a+=1)g+=c[a]*d[a];return g}),g=a=>{let b=a;for(;(f.get(b)||b)!==b;)b=f.get(b)||b;return b},h=new Map;for(let a of b){let b=g(a.concept),c=h.get(b)||[];c.push(a),h.set(b,c)}let i=[];for(let b of h.values()){if(b.length<2||Math.max(...b.map(a=>a.value))>4*Math.min(...b.map(a=>a.value)))continue;let c=new Map;for(let a of b){let b=c.get(a.unit)||[];b.push(a),c.set(a.unit,b)}for(let b of c.values()){if(b.length<2)continue;let c=new Map;for(let a of b){let b=aL.find(b=>a.raw.includes(b))||"",d=c.get(b)||[];d.push(a),c.set(b,d)}for(let d of[...c.keys()].filter(a=>""!==a).length>=2&&!c.has("")?[...c.values()]:[b]){if(d.length<2)continue;let b=d.map(a=>aK.find(b=>a.raw.includes(b))||"");if(b.length>=2&&b.every(a=>""!==a)&&new Set(b).size===b.length)continue;let c=d.map(a=>/^([\u4e00-\u9fa5]{2,})([一二三四五六七八九十]|\d+)$/u.exec(a.concept)).filter(a=>null!==a);if(c.length===d.length&&c.length>=2&&1===new Set(c.map(a=>a[1])).size&&new Set(c.map(a=>a[2])).size===c.length)continue;let e=d.map(a=>{let b=a.raw.indexOf("按每");return b>=0?a.raw.slice(0,b):null});if(e.every(a=>null!==a)&&!e.some((a,b)=>!!a&&e.some((c,d)=>b!==d&&!!c&&(a===c||a.includes(c)||c.includes(a))))||d.every(b=>b.occurrences.some(c=>/违约金|解除合同|提高至|自第|逾期超过/u.test(a.slice(Math.max(0,c.matchIndex-30),c.matchIndex+b.raw.length+40)))))continue;let f=[...new Set(d.map(a=>a.value))];if(f.length<2)continue;let g=Math.max(...f);if(g-Math.min(...f)<=.02*g)continue;let h=f.reduce((a,b)=>a+b,0);if(![...new Set(d.flatMap(b=>b.occurrences.map(b=>aN(a,b.matchIndex))))].some(b=>/(?:总量|合计|总计|共计)/u.test(b)&&/(?:其中|分别为|分为)/u.test(b)&&d.every(c=>c.occurrences.some(c=>aN(a,c.matchIndex)===b))&&[...b.matchAll(/\d+(?:\.\d+)?/gu)].some(a=>Math.abs(Number(a[0])-h)<=Math.max(.5,.01*h)))&&!(d.filter(b=>b.occurrences.some(c=>{let d=a.slice(c.matchIndex,c.matchIndex+b.raw.length+12),e=a.slice(Math.max(0,c.matchIndex-12),c.matchIndex);return/[、/](?:与)?[A-Za-z]?\d/u.test(d)||/[、/](?:与)?[A-Za-z]?\d/u.test(e)})).length>=2)&&!(d.length>=2&&d.every((a,b)=>d.every((c,d)=>{if(b>=d||a.value===c.value)return!0;let e=a.concept.length<=c.concept.length?a.concept:c.concept,f=a.concept.length<=c.concept.length?c.concept:a.concept;if(e.length>=4&&e.length<f.length&&f.endsWith(e)&&/^[板梁柱墙底顶]/u.test(e))return!0;let g=(0,U.Qk)(a.concept,c.concept);if(g.length<2)return!1;let h=a.concept.slice(g.start,g.end),i=a.concept.replace(h,""),j=c.concept.replace(h,"");return i.length>0&&j.length>0&&!i.includes(j)&&!j.includes(i)})))&&(i.push({concept:d[0].concept,values:d}),i.length>=4))break}if(i.length>=4)break}if(i.length>=4)break}return{groups:i}}function aP(a){return a.replace(/㎡/gu,"m2").replace(/m²/giu,"m2").replace(/m³/giu,"m3").replace(/\s+/gu,"").toLowerCase()}function aQ(a){return a.replace(/[((][^))]*[))]/gu,"").replace(/[\s,,、;;::]/gu,"")}function aR(a,b){let c=b.entries??b.billFactLock?.entries??[];if(0===c.length)return[];let d=Math.max(.01,.001*a.value),e=aP(function(a){let b=a.occurrences[0];if(!b)return a.unit;let c=a.raw.indexOf(b.valueText);return c<0?a.unit:a.raw.slice(c+b.valueText.length)||a.unit}(a)),f=a.occurrences.map(a=>b.markdown.slice(Math.max(0,a.matchIndex-48),a.matchIndex+a.valueOffset+a.valueText.length+48)).join("\n"),g=[];for(let b of c){if(!Number.isFinite(b.quantity)||b.quantity<=0||Math.abs(b.quantity-a.value)>d)continue;let c=aP(b.unit);if(e&&c&&e!==c)continue;let h=function(a,b){let c=aQ(a),d=aQ(b);if(c.length<2||d.length<2)return!1;if(c===d)return!0;let e=c.length<=d.length?c:d,f=c.length<=d.length?d:c;return e.length>=3&&f.includes(e)}(b.name,a.concept),i=b.villageGroup.trim().length>=2&&f.includes(b.villageGroup.trim());if((h||i)&&(g.push({entry:b,nameRelated:h}),g.length>=8))break}return g}function aS(a,b){if(a.values.length<2)return{verdict:"no-anchor"};let c=b.billFactLock?.entries??[],d=function(a){if(!a)return[];let b=[],c=1,d=(a,d,e,f,g)=>{b.push({seq:c,name:a,description:"",quantity:d,unit:e,section:"",subsection:g,villageGroup:g,sourceFile:f,specQuantityPairs:[]}),c+=1};for(let[b,c]of Object.entries(a)){let a=c.unit||"",e=c.sourceFile||"";for(let f of(Number.isFinite(c.value)&&c.value>0&&d(b,c.value,a,e,""),c.groups||[]))Number.isFinite(f.value)&&!(f.value<=0)&&d(`${b}(${f.group})`,f.value,a,e,f.group)}return b}(b.blueprintQuantities);if(0===c.length&&0===d.length)return{verdict:"no-anchor"};let e=a.values.map(a=>({value:a,matches:aR(a,{markdown:b.markdown,entries:[...c,...d]}),billMatches:aR(a,{markdown:b.markdown,entries:c})}));if(e.every(a=>a.matches.length>0)&&e.every((a,b)=>e.every((c,d)=>b===d||!a.matches.some(a=>c.matches.some(b=>b.entry.seq===a.entry.seq)))))return{verdict:"distinct-lock-entries",entries:e.map(a=>`「${a.matches[0].entry.name}」(${a.value.value}${a.value.unit})`).join("、")};let f=e.filter(a=>a.billMatches.length>0),g=e.filter(a=>0===a.matches.length);if(1===f.length&&g.length>0&&f.length+g.length===e.length){let a=f[0].billMatches.find(a=>a.nameRelated);if(a)return{verdict:"single-lock-entry",lockValue:a.entry.quantity,lockUnit:a.entry.unit,entryName:a.entry.name,nonLock:g.map(a=>a.value)}}return{verdict:"no-anchor"}}async function aT(a,b){let c=await aO(a);if(c.degraded)return[c.degraded];if(0===c.groups.length)return[];let d=[],e=[];for(let f of c.groups){let c=aS(f,{markdown:a,billFactLock:b?.billFactLock,blueprintQuantities:b?.blueprintQuantities});"distinct-lock-entries"===c.verdict?e.push({group:f,entries:c.entries}):d.push(f)}let f=[];if(d.length>0){let a=d.map(a=>`“${a.concept}”出现多个口径:${[...new Set(a.values.map(a=>a.raw))].slice(0,3).join("、")}`);f.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`同一参数概念出现多口径数值冲突:${a.join(";")}`,suggestion:"以绑定资料(图纸/清单/规范)裁决口径为准统一数值表述:每个参数概念全文只保留一个口径数值,删除矛盾表述。"})}return e.length>0&&f.push({level:"info",severity:"suggestion",category:"fact_consistency",owner:"system",repairability:"not_repair_needed",message:`参数概念多口径已裁决为不同清单条目口径(不构成冲突):${e.map(({group:a,entries:b})=>`“${a.concept}”对应${b}`).join(";")}`,suggestion:"各数值分别对应不同的工程量清单条目,正文已带条目名区分,无需处理。"}),f}let aU=["电梯","幕墙","智能化","消防","暖通","给排水","电气","燃气","人防","室外","园林","绿化","景观","钢结构","防水","保温","门窗","通风","空调","防雷","接地","动力","照明","拆除","加固","装修","装饰"],aV=(a,b)=>{let c=b.exec(a);if(!c)return;let d=Number(c[1]);return Number.isFinite(d)&&d>0?d:void 0},aW=[{name:"基坑支护与降水工程",aliases:["基坑支护","基坑工程","降排水","降水井"],applicable:a=>{let b=aV(a,/(?:基坑)?开挖深度[约为达至]{0,3}(\d+(?:\.\d+)?)\s*m/u);return void 0!==b&&b>=3}},{name:"高大模板支撑工程",aliases:["高大模板","高支模","模板支撑体系","模板支撑"],applicable:a=>{let b=aV(a,/(?:模板)?支撑(?:体系)?(?:搭设)?高度[约为达至]{0,3}(\d+(?:\.\d+)?)\s*m/u),c=aV(a,/(?:施工(?:总)?荷载|集中线荷载)[约为达至]{0,3}(\d+(?:\.\d+)?)\s*kN/u);return void 0!==b&&b>=8||void 0!==c&&c>=10||/高支模|高大模板/u.test(a)}},{name:"脚手架工程",aliases:["脚手架","落地式钢管脚手架","悬挑式脚手架","悬挑脚手架"],applicable:a=>{let b=aV(a,/(?:落地式|悬挑式)?(?:钢管)?脚手架(?:搭设)?高度[约为达至]{0,3}(\d+(?:\.\d+)?)\s*m/u);return void 0!==b&&b>=15||/悬挑(?:式)?脚手架/u.test(a)}},{name:"起重吊装及安装拆卸工程",aliases:["起重吊装","塔吊","塔式起重机","汽车吊","履带吊","起重机械安拆","物料提升机","提升机","起重机械","吊装"],applicable:a=>!!/塔吊|塔式起重机|汽车吊|履带吊|吊车|起重机械|起重设备|起重机|卷扬机|物料提升机|提升机|电动葫芦/u.test(a)||/起重伤害|非常规起重|起吊重量|吊装重量|吊装荷载/u.test(a)&&!/(?:不涉及|不存在|不属于|未涉及)[^。;\u000A]{0,16}危大|(?:不涉及|不存在|不属于|未涉及)[^。;\u000A]{0,16}危险性较大|(?:参数|高度|深度)[^。;\u000A]{0,12}未达[^。;\u000A]{0,60}危大/u.test(a)},{name:"吊篮作业工程",aliases:["吊篮","高处作业吊篮","电动吊篮"],applicable:a=>/吊篮/u.test(a)},{name:"拆除工程",aliases:["拆除工程","爆破拆除","机械拆除"],applicable:a=>/拆除工程(?![量])|爆破拆除/u.test(a)}];function aX(a){let b=a.split(/\r?\n/u),c=[];return b.forEach((a,d)=>{/危大/u.test(a)&&c.push(...b.slice(Math.max(0,d-6),Math.min(b.length,d+7)))}),c.join("\n")}function aY(a){let b=aW.filter(b=>b.applicable(a)),c=aX(a);return{applicableNames:b.map(a=>a.name),zonePresent:""!==c,missingNames:""===c?b.map(a=>a.name):b.filter(a=>!a.aliases.some(a=>c.includes(a))).map(a=>a.name)}}function aZ(a,b){let c=aX(a);return b.filter(a=>{let b=aW.find(b=>b.name===a);return!!b&&!b.aliases.some(a=>c.includes(a))})}let a$=/[二三四五六七八九十\d]{1,4}\s*个?\s*阶段/u,a_={一:1,二:2,三:3,四:4,五:5,六:6,七:7,八:8,九:9};function a0(a){return/(\d+|[一二三四五六七八九十]+)\s*个?\s*阶段/u.exec(a)?.[1]??null}function a1(a){let b=a.map(a0).filter(a=>null!==a).map(a=>/^\d+$/u.test(a)?parseInt(a,10):/^[一二三四五六七八九十]+$/u.test(a)?"十"===a?10:1===a.length?a_[a]??null:a.startsWith("十")?10+(a_[a[1]]??0):a.endsWith("十")?(a_[a[0]]??0)*10:(a_[a[0]]??0)*10+(a_[a[2]]??0):null).filter(a=>null!==a);return 0===b.length?null:1===new Set(b).size?b[0]:null}async function a2(a){let b=[...new Set(a.split(/\n+/u).filter(a=>a.trim()&&!/^\s*(#{1,6}\s+|\|)/u.test(a)).flatMap(a=>a.split(/[。;;]/u)).map(a=>a.replace(/\s+/gu,"").trim()).filter(a=>{var b;if(a.length<8||a.length>60)return!1;let c=a$.exec(a);return null!==c&&(b=c.index,!/[、,,]/u.test(a.slice(Math.max(0,b-12),b)))}))];if(b.length<2)return[];let c=await (0,aB.Mv)(b,b),d=b.map((a,b)=>b),e=a=>{let b=a;for(;d[b]!==b;)b=d[b];let c=a;for(;d[c]!==b;){let a=d[c];d[c]=b,c=a}return b},f=(a,b)=>{d[e(b)]=e(a)};for(let a=0;a<b.length;a+=1)for(let d=a+1;d<b.length;d+=1)c(b[a],b[d])>=.62&&f(a,d);let g=new Map;for(let a=0;a<b.length;a+=1){let c=e(a),d=g.get(c)||[];d.push(b[a]),g.set(c,d)}if(g.size<2||new Set([...g.values()].map(a1).filter(a=>null!==a)).size<2)return[];let h=[...g.values()].map(a=>a.sort((a,b)=>b.length-a.length)[0]).slice(0,4);return[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`施工阶段划分口径不统一:正文出现 ${g.size} 种互异阶段划分口径(${h.map(a=>`“${a.slice(0,16)}”`).join("、")})`,suggestion:"全文统一阶段划分口径:以总进度计划/施工部署章节的划分为唯一口径,其余章节划分句逐字对齐或删除。"}]}var a3=c(41991);let a4=/应急预案|应急措施|应急响应|应急救援|突发事件|应急管理|应急物资|应急演练|应急组织|应急保障/u,a5=/应急|突发|救援|预案|抢险|疏散/u,a6=["应急预案的编制与响应流程","突发事件应急处置措施","应急救援组织体系与保障"],a7=["应急照明系统安装调试","应急电源配置与切换方案"],a8={organization:"应急管理领导小组、应急救援队伍的组织机构与职责分工",procedure:"应急处置程序、应急响应流程与应急演练安排",resource:"应急物资、应急器材设备的储备与保障措施"},a9=/应急物资|急救箱|灭火器|沙袋|发电机|水泵|对讲机|应急照明|应急灯|防护服|救援绳|救生衣|铁锹|编织袋|抽水泵|警示带|应急器材/u,ba=/配备|储备|保障|配置|数量|不少于|共计|套|具|个|台|把|只/u,bb=["应急物资储备清单与配备数量","应急救援器材的配置与保障"],bc=["应急照明灯具数量与回路设计","应急电源的电气系统设计"];async function bd(a){return(0,a3.A)({prototypes:[...a6],negativePrototypes:[...a7],embedDocuments:a})}async function be(a){return(0,a3.A)({prototypes:[...bb],negativePrototypes:[...bc],embedDocuments:a})}async function bf(a,b){let c=a.split(/\r?\n/u),d=[],f=c.map(a=>{let b=/^(#{2,4})\s+(.+)$/u.exec(a.trim());if(b)return{level:b[1].length,title:b[2].replace(/^\d+(?:\.\d+)*\s+/u,"").trim()}}).filter(a=>void 0!==a).filter(a=>!a4.test(a.title)&&a5.test(a.title)),g=await bd(b),h=f.length>0?await g(f.map(a=>a.title)):[],i=new Set(f.filter((a,b)=>h[b]).map(a=>a.title)),j=a=>a4.test(a)||i.has(a),k=!1,l=[],m=[],n="",o=0;for(let a of c){let b=/^(#{2,4})\s+(.+)$/u.exec(a.trim());if(b){let a=b[1].length,c=b[2].replace(/^\d+(?:\.\d+)*\s+/u,"").trim();if(j(c)){k=!0,l.push(c);continue}a<=3&&k&&(k=!1);continue}if(k&&a.trim()&&!/^\s*\|/u.test(a)){m.push(a);let b=a.replace(/\s+/gu,"");n+=b,o+=b.length}}if(0===l.length)return d;let p=[];o<300&&p.push(`字数仅 ${o} 字(要求 ≥300 字)`);let q=n.match(/.{1,200}/gu)||[],r=Object.values(a8),s=await (0,aB.Mv)(q,r),t=a=>q.some(b=>s(b,a)>=aB.Eh);t(a8.organization)||p.push("应急组织体系"),t(a8.procedure)||p.push("应急处置程序/演练");let u=await be(b),v=m.join("。").split(/[。;;]/u).map(a=>a.trim()).filter(a=>a9.test(a)&&ba.test(a)),w=v.length>0?await u(v):[];return t(a8.resource)||w.some(Boolean)||p.push("应急物资保障"),p.length>0&&d.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:`应急预案小节深度不足:${l.join("、")}(缺少:${p.join("、")})`,suggestion:"补写应急组织体系(领导小组/抢险队与职责)、应急处置程序与演练安排、应急物资清单与保障措施,达到可落地深度。",sectionTitle:l[0],provenance:{detectorId:"emergency-section-depth",fingerprint:(0,e.c6)(a)}}),d}var bg=c(70208),bh=c(91943),bi=c(54185),bj=c(75251);let bk=/(?:GB|JGJ|CJJ|JTG|SL|DB|DL|YS|HG|DBJ)[\s/T]*\d{1,2}[\s/-]?(?:T[\s/]*)?\d{2,4}(?:[\s/-]\d{1,4})?/gu,bl=/《[^《》\r\n]{2,60}?》/gu,bm=/(?:规范|标准|规程)$/u;function bn(a){return[...a.matchAll(bk)].map(a=>a[0])}function bo(a){return[...a.matchAll(bl)].map(a=>a[0].replace(/《|》/gu,""))}function bp(a){return a.replace(/[\s\u200b-\u200d\ufeff]/gu,"").replace(/[—–-]/gu,"-").toUpperCase()}function bq(a){return a.replace(/《|》/gu,"").replace(/[((][^))]{0,40}[))]/gu,"").replace(/[\s\u200b-\u200d\ufeff]/gu,"")}function br(a){return bm.test(bq(a))}function bs(a,b){let c=bp(a),d=bp(b);if(!c||!d)return!1;if(c===d)return!0;let e=c.length<=d.length?c:d,f=c.length<=d.length?d:c;return RegExp(`^${e.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&")}-\\d{4}$`,"u").test(f)}function bt(a,b){let c=bq(a),d=bq(b);return!!c&&!!d&&(c===d||!(c.length<4)&&!(d.length<4)&&(c.includes(d)||d.includes(c)))}let bu=/^[\s()()【】[\]、,,;;::·.及和与]*$/u;function bv(a){let b=[];for(let c of a.split(/\r?\n/u)){let a=[];for(let b of c.matchAll(bk)){let c=b.index??0;a.push({type:"code",value:b[0],index:c,end:c+b[0].length})}for(let b of c.matchAll(bl)){let c=b.index??0;a.push({type:"name",value:b[0].replace(/《|》/gu,""),index:c,end:c+b[0].length})}if(0===a.length)continue;a.sort((a,b)=>a.index-b.index);let d=new Map,e=new Set;a.forEach((b,f)=>{if("code"!==b.type)return;let g=d=>{for(let g of"left"===d?a.slice(0,f).map((a,b)=>f-1-b):a.slice(f+1).map((a,b)=>f+1+b)){let f=a[g];if("name"!==f.type||e.has(g))continue;let h="left"===d?c.slice(f.end,b.index):c.slice(b.end,f.index);if(!bu.test(h))break;return g}return -1},h=g("left"),i=h>=0?h:g("right");i>=0&&(d.set(f,i),e.add(i))});let f=new Set;a.forEach((c,g)=>{if(!f.has(g))if("code"===c.type){let e=d.get(g);void 0!==e?(b.push({code:c.value,name:a[e].value}),f.add(e)):b.push({code:c.value}),f.add(g)}else e.has(g)||(b.push({name:c.value}),f.add(g))})}return b}function bw(a,b){let c=a.indexOf(b);if(c<0)return"";let d=Math.max(0,c-24),e=Math.min(a.length,c+b.length+24);return a.slice(d,e).replace(/\s+/gu," ").trim()}function bx(a){let b=[];for(let c of a){let a=b.findIndex(a=>!!(a.code&&c.code&&bs(a.code,c.code)||a.name&&c.name&&bt(a.name,c.name)));if(a<0){b.push(c);continue}"pair"===c.kind&&"pair"!==b[a].kind&&(b[a]=c)}return b}function by(a){let b=(0,R.UO)(a),c=(0,R.H4)(a),d=a.split(/\r?\n/u),e=new Set;for(let a of b)for(let b=a.start;b<a.end;b+=1)e.add(b);let f=d.filter((a,b)=>!e.has(b)).join("\n"),g=bv(c),h=bv(f),i=g.filter(a=>a.code).map(a=>a.code),j=g.filter(a=>a.name).map(a=>a.name),k=h.filter(a=>a.code).map(a=>a.code),l=h.filter(a=>a.name).map(a=>a.name),m=a=>k.some(b=>bs(a,b)),n=a=>l.some(b=>bt(a,b)),o=a=>i.some(b=>bs(b,a)),p=a=>j.some(b=>bt(b,a)),q=[];for(let a of g){let b=!a.code||m(a.code)||!!a.name&&n(a.name),c=!a.name||n(a.name)||!!a.code&&m(a.code);a.code&&!b&&a.name&&br(a.name)?q.push({kind:"pair",value:a.name,code:a.code,name:a.name,counterpart:a.code}):a.code&&!b?q.push({kind:"code",value:a.code,code:a.code,counterpart:a.name}):a.name&&br(a.name)&&!c&&q.push({kind:"name",value:a.name,name:a.name,counterpart:a.code})}let r=[];for(let a of h){let b=!a.code||o(a.code)||!!a.name&&p(a.name),c=!a.name||p(a.name)||!!a.code&&o(a.code);a.code&&!b&&a.name&&br(a.name)?r.push({kind:"pair",value:a.name,code:a.code,name:a.name,context:bw(f,a.code)}):a.code&&!b?r.push({kind:"code",value:a.code,code:a.code,context:bw(f,a.code)}):a.name&&br(a.name)&&!c&&r.push({kind:"name",value:a.name,name:a.name,context:bw(f,`《${a.name}》`)})}return{declaredNotUsed:bx(q),usedNotDeclared:bx(r),stats:{declaredCodes:i.length,declaredNames:j.length,usedCodes:k.length,usedNames:l.length}}}function bz(a){return"pair"===a.kind?`《${a.name}》(${a.code})`:"code"===a.kind?`标准编号「${a.value}」`:`《${a.value}》`}async function bA(a){let b=await (0,R.Z2)(a.markdown,a.factsModel,{scopeClassifier:a.factTokenScopeClassifier}),c=(0,aC.Uk)(a.tenderRequirements).map(({item:a})=>(0,aC.E6)(a)),d=a.markdown.split(/\n/u).filter(a=>/^#{2,4}\s/u.test(a.trim())).map(a=>(0,aC.NT)(a)).filter(Boolean).slice(0,80),f=(0,o.s3)(a.markdown,o.ev),g=await (0,aB.Mv)(c,[...d,...f]),i=await (0,aB.Mv)(a.evaluationCriteriaItems||[],d),j=new Map((await Promise.all(a.chapters.map(async b=>[b.title,await a.professionalDepthClassifier.analyze(b.content)]))).filter(a=>!!a[1]));return[...(0,l.yT)("toc-consistency",()=>a.promptDocumentRules?.forbidToc?[]:[...(0,R.gN)(a.markdown),...(0,R.f8)(a.markdown)]),...(0,l.yT)("section-numbering",()=>(0,R.Jn)(a.markdown)),...(0,l.yT)("section-count-overflow",()=>(0,R.VW)(a.chapters)),...(0,l.yT)("heading-duplicate",()=>(0,R.kw)(a.markdown)),...(0,l.yT)("structure-integrity",()=>(0,bh.dC)(a.markdown)),...(0,l.yT)("templated-label",()=>(0,bi.D9)(a.markdown)),...(0,l.yT)("title-integrity",()=>(0,bi.uw)(a.markdown)),...(0,l.yT)("evaluation-criteria-coverage",()=>(0,R.wl)(a.markdown,a.evaluationCriteriaItems||[],{semanticSimilarity:i})),...await (0,l.ll)("requirements-coverage",()=>(0,aC.tH)({markdown:a.markdown,entries:(0,aC.Uk)(a.tenderRequirements).map(({item:a})=>a),bodyTexts:f,semanticSimilarity:g})),...(0,l.yT)("fabricated-start-date",()=>(0,o.cf)(a.markdown,a.factsModel)),...(0,l.yT)("field-value-mismatch",()=>(0,o.a8)(a.markdown,a.factsModel)),...(0,l.yT)("area-arithmetic",()=>(0,o.u2)(a.markdown)),...(0,l.yT)("resource-consistency",()=>(0,o.rA)(a.markdown,{laborPeakAuthority:(0,T.yB)(a.blueprintData)})),...(0,l.yT)("node-schedule-consistency",()=>(0,o.Et)(a.markdown)),...(0,l.yT)("cross-section-numeric-conflict",()=>(0,o.H)(a.markdown)),...(0,l.yT)("fact-reconciliation",()=>(0,bj.az)({markdown:a.markdown,billFactLock:a.billFactLock,blueprintData:a.blueprintData,factsModel:a.factsModel})),...(0,l.yT)("greening-maintenance-mismatch",()=>(0,o.x5)(a.markdown,a.factsModel)),...(0,l.yT)("street-light-count-mismatch",()=>(0,o.Tz)(a.markdown,a.factsModel)),...(0,l.yT)("spec-location-mismatch",()=>(0,o.$$)(a.markdown,a.factsModel.specAuthorityMap)),...await (0,l.ll)("blueprint-citation-consistency",async()=>a.blueprintData?(await (0,p.dr)(a.markdown,a.blueprintData)).filter(a=>"error"===a.level):[]),...await (0,l.ll)("cross-project-value-copy",()=>(0,o.iy)(a.markdown,(0,T.L$)(a.blueprintData))),...(0,l.yT)("phase-labor-mixing",()=>(0,o.cv)(a.markdown,(0,T.i2)(a.blueprintData))),...(0,l.yT)("equipment-batch-conflict",()=>(0,o.KE)(a.markdown,(0,T.Be)(a.blueprintData))),...(0,l.yT)("preliminary-action-timing",()=>(0,o.fg)(a.markdown,a.blueprintData?.contract.totalDays)),...(0,l.yT)("foundation-form-residue",()=>(0,o.ex)(a.markdown)),...(0,l.yT)("ambiguous-either-or",()=>(0,o.Fr)(a.markdown)),...(0,l.yT)("excavation-depth-lock",()=>(0,o.bq)(a.markdown)),...(0,l.yT)("excavation-hazard-classification",()=>(0,o.LA)(a.markdown,a.factsModel)),...(0,l.yT)("support-form-fact-consistency",()=>(0,o.ek)(a.markdown,a.factsModel)),...(0,l.yT)("equipment-entry-timing",()=>(0,o.fQ)(a.markdown,a.factsModel)),...(0,l.yT)("fabricated-award",()=>(0,o.hu)(a.markdown,a.factsModel,a.tenderRequirements)),...(0,l.yT)("bidder-qualification-section",()=>(0,o.Rv)(a.markdown)),...(0,l.yT)("cross-chapter-duplicate-section",()=>(function(a,b){let c=a=>a.replace(/^\d+(?:\.\d+)*[、..\s]*/u,"").replace(/[\s,,、]/gu,""),d=new Map;a.forEach((a,b)=>{let c=(0,bg.GQ)(a.title).replace(/[\s,,、]/gu,"");c&&!d.has(c)&&d.set(c,b)});let e=new Map,f=new Map;a.forEach((a,b)=>{let d=new Set;for(let g of(a.content||"").split(/\r?\n/u)){let a=/^###\s+(.+?)\s*$/u.exec(g.trim());if(!a)continue;let h=c(a[1]);if(h.length<8||d.has(h))continue;d.add(h),f.has(h)||f.set(h,a[1].replace(/^\d+(?:\.\d+)*[、..\s]*/u,"").trim());let i=e.get(h)||[];i.push(b),e.set(h,i)}});let g=new Map;b.forEach(a=>{let b=d.get((0,bg.GQ)(a.title).replace(/[\s,,、]/gu,""));if(void 0!==b)for(let d of a.sections||[]){let a=c(d);if(a.length<8)continue;let e=g.get(a)||[];e.includes(b)||e.push(b),g.set(a,e)}});let h=[];for(let[b,c]of e){if(c.length<2)continue;let d=g.get(b)||[];if(d.length>=2)continue;let e=1===d.length?d[0]:c[0],i=f.get(b)||b;for(let b of c){if(b===e)continue;let c=a[b];h.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",chapterId:c.id,sectionTitle:i,message:`跨章同名小节:“${i}”已在「${a[e].title}」落位,本章(「${c.title}」)同名小节属跨章串章重复,须改写归并`,suggestion:"同一主题小节全文只保留一处(归属章);非归属章的同名小节:内容与本章主题相关则改写标题为可区分的具体主题并归并内容,与本章无关则整节删除(含标题行);修复后全文不得再出现跨章同名小节。"})}}return h})(a.chapters,a.effectiveChapters||a.template.chapters||[])),...(0,l.yT)("basic-info-schedule-field",()=>(0,o.cT)(a.markdown)),...(0,l.yT)("duplicate-table",()=>(0,o.ub)(a.markdown)),...(0,l.yT)("duplicate-paragraph",()=>(0,o.cl)(a.markdown)),...(0,l.yT)("paragraph-tail-repeat",()=>(0,o.AD)(a.markdown)),...(0,l.yT)("collision-numbered-heading",()=>(0,o.xR)(a.markdown)),...(0,l.yT)("inverted-date-range",()=>(0,o.jP)(a.markdown)),...(0,l.yT)("resource-triad-section-hierarchy",()=>(0,o.zP)(a.markdown)),...await (0,l.yT)("support-system-conflict",()=>(0,o.r8)(a.markdown,(0,o.P3)(a.factsModel))),...(0,l.yT)("dangerous-list-consistency",()=>(0,o.vH)(a.markdown)),...(0,l.yT)("hazard-exclusion-contradiction",()=>(0,o.m6)(a.markdown)),...await (0,l.yT)("six-hundred-percent-coverage",()=>(0,o.sn)(a.markdown)),...await (0,l.yT)("self-undermining-candidate",()=>(0,o.YN)(a.markdown)),...(0,l.yT)("paragraph-opening-repeat",()=>(0,o.y2)(a.markdown)),...(0,l.yT)("flow-form-repeat",()=>(0,bi.Q9)(a.markdown)),...(0,l.yT)("skeleton-fingerprint",()=>(0,bi.o0)(a.markdown)),...(0,l.yT)("sentence-pattern-repeat",()=>(0,bi.TN)(a.markdown)),...(0,l.yT)("repeated-word",()=>(0,o.Xc)(a.markdown)),...await (0,l.yT)("commercial-data-in-body",()=>(0,o.mC)(a.markdown)),...(0,l.yT)("overview-recap",()=>(0,o.l4)(a.markdown)),...(0,l.yT)("closure-phrase-density-cap",()=>(0,o.dF)(a.markdown)),...await (0,l.ll)("parameter-concept-conflict",()=>aT(a.markdown,{billFactLock:a.billFactLock,blueprintQuantities:a.blueprintData?.quantities})),...await (0,l.ll)("internal-terminology-anchor",()=>(0,S.WT)(a.markdown)),...(0,l.yT)("construction-system-coverage",()=>(function(a){let b=[...new Set(a.flatMap(a=>aU.filter(b=>a.title.includes(b))))];if(0===b.length)return[];let c=a.map(a=>a.content||"").join("\n"),d=b.filter(a=>!c.includes(a));if(0===d.length)return[];let e=a.find(a=>d.some(b=>a.title.includes(b)));return[{level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:`章节大纲涉及的专业工程系统在正文零覆盖:${d.join("、")}`,suggestion:"对应章节必须补写该专业工程的施工方案正文(施工概况/施工流程/施工方法,含可核实的工艺参数),不得整章零覆盖。",chapterId:e?.id}]})(a.chapters)),...(0,l.yT)("dangerous-applicability",()=>(function(a){let b=aY(a);return 0===b.applicableNames.length?[]:b.zonePresent?0===b.missingNames.length?[]:[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`危大工程辨识清单遗漏适用项:${b.missingNames.join("、")}(正文已出现适用前提但辨识清单未列入)`,suggestion:"按建办质〔2018〕31号逐项辨识:将遗漏项补入危大工程辨识清单并标注分级,超过一定规模的专项施工方案需专家论证。"}]:[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`正文出现危大工程适用前提(${b.applicableNames.join("、")})但全文未编制危大工程辨识清单`,suggestion:"必须编制危大工程辨识清单:按建办质〔2018〕31号逐项辨识并标注分级,超过一定规模的专项施工方案需专家论证。"}]})(a.markdown)),...(0,l.yT)("innovation-tech-coverage",()=>(0,R.Ef)(a.markdown,a.effectiveChapters||a.template.chapters||[])),...(0,l.yT)("instruction-like-heading",()=>(0,R.K1)(a.markdown)),...(0,l.yT)("formal-heading-hierarchy",()=>(0,R.Fv)(a.markdown)),...(0,l.yT)("formal-content-integrity",()=>(0,R.k0)(a.markdown)),...(0,l.yT)("punctuation-artifact",()=>(0,R.vZ)(a.markdown)),...(0,l.yT)("table-quality",()=>(0,R.NS)(a.markdown)),...(0,l.yT)("table-spam",()=>(0,R.SN)(a.markdown)),...(0,l.yT)("basis-regulations-coverage",()=>(0,R.AN)(a.markdown,a.blueprintData)),...(0,l.yT)("basis-regulations-cross",()=>(function(a){let b=by(a);if(b.stats.declaredCodes+b.stats.declaredNames===0)return[];let c=[],d=b.usedNotDeclared,e=b.declaredNotUsed;for(let a of d.slice(0,12))c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`编制依据对账缺口:正文引用${bz(a)}未列入编制依据小节${a.context?`(证据:…${a.context}…)`:""}`,suggestion:"请将该标准名称及编号按编号族补入编制依据小节同类目(与正文引用形态一致),不得改动正文既有引用。"});if(d.length>12){let a=d.slice(12);c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`编制依据对账缺口:正文另有 ${a.length} 处引用标准未列入编制依据小节(${a.slice(0,6).map(bz).join("、")} 等)`,suggestion:"请统一核对编制依据小节与正文引用清单,补齐全部未声明标准条目。"})}for(let a of e.slice(0,12))c.push({level:"warning",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`编制依据对账缺口:编制依据小节的${bz(a)}在正文无引用`,suggestion:"请在对应施工章节的工序/验收要求中落位该标准(或从未使用的编制依据中移除),保持编制依据与正文一一对应。"});if(e.length>12){let a=e.slice(12);c.push({level:"warning",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`编制依据对账缺口:编制依据小节另有 ${a.length} 条声明在正文无引用(${a.slice(0,6).map(bz).join("、")} 等)`,suggestion:"请统一核对编制依据与正文引用清单,未使用条目在正文落位或从编制依据移除。"})}return c})(a.markdown)),...(0,l.yT)("resource-breakdown-consistency",()=>(0,R.EJ)(a.markdown,a.blueprintData)),...(0,l.yT)("section-content-integrity",()=>(0,R.qK)(a.markdown,a.chapters)),...(0,l.yT)("professional-content",()=>(0,R.ji)(a.chapters,j)),...(0,l.yT)("professional-score",()=>(0,R.i0)(a.chapters,j)),...(0,l.yT)("generic-professional-content",()=>(0,R.ST)(a.chapters,j)),...(0,l.yT)("management-measure-number",()=>(0,R.xX)(a.chapters,j)),...await (0,l.yT)("closed-loop-density",()=>(0,R.Zu)(a.markdown)),...await (0,l.yT)("cross-chapter-consistency",()=>(0,R.qm)(a.markdown,a.factsModel,a.scopeConflicts,j)),...await (0,l.yT)("process-spec-conflict",()=>(0,R.hr)(a.markdown,a.factsModel)),...(0,l.yT)("evidence-usage-coverage",()=>aj(a.markdown,a.factsModel)),...await (0,l.yT)("paragraph-generic",()=>ak(a.markdown,a.professionalDepthClassifier)),...await (0,l.yT)("construction-org-generic-language",()=>(0,ah.Fw)(a.chapters)),...(0,l.yT)("construction-org-control-loop",()=>(0,ah.Hl)(a.chapters)),...(0,l.yT)("construction-org-professional-chain",()=>(0,ah.iX)({markdown:a.markdown,factsModel:a.factsModel,chapters:a.chapters})),...(0,l.yT)("construction-org-consistency",()=>(function(a,b){let c=[];if(!/施工组织设计|施工组织|施组|质量|安全|文明施工/u.test(a))return c;for(let d of av){if("equipment-counts"===d.kind){c.push(...function(a,b,c){let d=(0,au.AK)(a);if(0===d.length)return[];let{names:e,counts:f}=function(a,b){let c=[],d=new Map,e=a=>{c.includes(a)||c.push(a)};for(let c of b){let b=a[c];if(Array.isArray(b))for(let a of b){if(!a||"object"!=typeof a||!("value"in a)||"string"!=typeof a.value)continue;for(let b of(0,au.AK)(a.value))e(b.name),d.has(b.name)||d.set(b.name,b.count);let b=aw(a.value);if(b.length>12||/\d/u.test(b))continue;let c=(0,au.Rh)(b);c&&e(c)}}return{names:c,counts:d}}(b,c.factGroups);if(0===e.length)return[];let g=[],h=new Map,i=[],j=new Set;for(let a of d){let b=e.find(b=>aA(a.name,[b]));if(b){let c=f.get(b);if(void 0===c||c===a.count)continue;let d=`${a.name}:${[a.count,c].sort((a,b)=>a-b).join("-")}`;if(j.has(d))continue;j.add(d),i.push(`${a.name}:正文 ${a.count} 台、资料 ${c} 台`);continue}if(ax.test(a.name))continue;let c=h.get(a.name);(!c||a.raw.length<c.length)&&h.set(a.name,a.raw)}if(h.size>0){let a=[...h].map(([a,b])=>b.length-a.length<=1?b:a).slice(0,5);g.push({level:"warning",message:`施组数据一致性风险:机械数量型号 可能与项目图谱/事实不一致(${a.join("、")})`,suggestion:`请核对机械数量型号在${c.locations}中的表述,统一以招标文件、项目图谱和可信事实为准。`})}return i.length>0&&g.push({level:"warning",message:`施组数据一致性风险:机械数量型号 正文台数与项目图谱/事实不一致(${i.slice(0,5).join(";")})`,suggestion:`同一机械台数全文档只允许一套口径:请以资料事实/项目图谱中的机械配置为准统一${c.locations}中的台数表述(正文与资料并存时以资料为准)。`}),g}(a,b,d));continue}let e=az(b,d.factGroups),f=(function(a,b){let c=[];for(let d of b){let b=new RegExp(d.source,d.flags.includes("g")?d.flags:`${d.flags}g`);for(let d of a.matchAll(b)){let a=aw(d[1]||d[0]||"");!ay.test(a)&&a.length>=2&&a.length<=80&&c.push(a)}}return[...new Set(c)]})(a,d.patterns??[]).filter(a=>!ax.test(a)&&!aA(a,e)).slice(0,5);f.length>0&&c.push({level:"warning",message:`施组数据一致性风险:${d.label} 可能与项目图谱/事实不一致(${f.join("、")})`,suggestion:`请核对${d.label}在${d.locations}中的表述,统一以招标文件、项目图谱和可信事实为准。`})}return c})(a.markdown,a.factsModel)),...(0,l.yT)("construction-org-chapter-data-coverage",()=>(function(a,b){let c=[],d=az(b,["project","schedule","resources","quality","safety","preciseFacts"]);if(0===d.length)return c;for(let b of a)/概况|进度|资源|质量|安全|文明|工资|应急/u.test(`${b.title} ${(b.sections||[]).join(" ")}`)&&(d.some(a=>a.length>=3&&b.content.includes(a.slice(0,Math.min(10,a.length))))||c.push({level:"warning",message:`${b.title} 缺少可识别的项目图谱事实支撑`,suggestion:"请至少引用工程名称、工期、工程量、资源、风险、质量安全目标等项目专属事实之一,避免纯模板化。"}));return c})(a.chapters,a.factsModel)),...(0,l.yT)("construction-org-major-content",()=>(0,ah.Av)(a.chapters,a.markdown)),...(0,l.yT)("construction-org-division-section",()=>(0,ah.CS)(a.chapters,a.markdown)),...(0,l.yT)("major-content-governance",()=>(0,ah.l5)(a.markdown)),...(0,l.yT)("construction-org-bonus-module",()=>(0,ah.b7)(a.chapters)),...(0,l.yT)("chapter-dependency",()=>al(a.chapters,j)),...(0,l.yT)("document-delivery-score",()=>(function(a,b,c,d){let e={factuality:2*!(0,R.vY)(a,c).some(a=>"error"===a.level),structure:b.length>0&&b.every(b=>a.includes(b.title)&&(0,h.V7)(b.content)>=600)?2:1,depth:0===(0,R.i0)(b,d).length?2:1,executable:0===al(b,d).length?2:1,evidence:0===aj(a,c).length?2:1},f=e.factuality+e.structure+e.depth+e.executable+e.evidence;return[{level:"info",message:`文档交付评分报告:总分 ${f}/10,事实${e.factuality},结构${e.structure},专业${e.depth},可执行${e.executable},证据${e.evidence}`,suggestion:f>=8?"可交付,但建议继续优化证据使用覆盖率和章节依赖链路。":"建议优先修复低分维度后再导出。"}]})(a.markdown,a.chapters,a.factsModel,j)),...(0,l.yT)("generated-fact-verification",()=>b),...(0,l.yT)("numeric-traceability",()=>(0,V.FA)(a.markdown,a.factsModel)),...(0,l.yT)("table-arithmetic-consistency",()=>(0,o.qE)(a.markdown)),...(0,l.yT)("duplicate-basic-info",()=>(0,R.iC)(a.markdown)),...await (0,l.yT)("formal-style",()=>(0,R.BV)(a.markdown)),...(0,l.yT)("tertiary-heading",()=>(0,O.dh)(a.markdown)),...(0,l.yT)("min-chapter-section",()=>(0,R.Ty)(a.chapters)),...await (0,l.yT)("precise-fact-usage",()=>(0,R.N1)(a.markdown,a.factsModel,a.chapters)),...(0,l.yT)("parameter-obligation-usage",()=>(function(a,b,c=[]){if(0===c.length)return[];let d=B(a,b,c),f=d.used.length+d.relevantMissed.length;if(f<8||d.used.length/f>=.9)return[];let g=d.relevantMissed.slice(0,3).map(a=>String(a.value).slice(0,30));return[{level:"error",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`可靠参数义务落位不足:${d.used.length}/${f}(相关而遗漏 ${d.relevantMissed.length} 项${g.length>0?`,缺失如 ${g.join("、")}`:""})`,suggestion:"请将资料中的可靠参数(规格/型号/尺寸/强度/规范编号等)在对应章节的对应位置自然写入,保持原值原形态(数字、单位、编号中的连字符与年份不得改写、拆分或省略);商务金额、单价、税率、预留金类数据一律不得写入正文。",provenance:{detectorId:"parameter-obligation-usage",fingerprint:(0,e.c6)(a)}}]})(a.markdown,a.factsModel,a.chapters)),...await (0,l.yT)("boq-placement",()=>(0,R.S2)(a.markdown,a.chapters,a.factsModel)),...await (0,l.yT)("stage-phrasing",()=>a2(a.markdown)),...await (0,l.yT)("emergency-section-depth",()=>bf(a.markdown)),...(0,l.yT)("boq-row-trace",()=>(0,V.QP)((0,V.JV)(a.markdown,a.factsModel))),...(0,l.yT)("drawing-reference",()=>(0,R.yd)(a.markdown,a.drawingFactLock)),...(0,l.yT)("web-evidence-leakage",()=>(function(a){let b=[];return ap.test(a)&&b.push({level:"warning",message:"正文包含联网增强过程性表述",suggestion:"请删除联网检索、网页资料、搜索结果等过程性话术,改为正式交付语言。"}),b})(a.markdown)),...(0,l.yT)("formal-placeholder",()=>(0,R.bM)(a.markdown)),...(0,l.yT)("prompt-example-leak",()=>(0,R.M$)(a.markdown,a.promptBindings)),...(0,l.yT)("degenerate-content",()=>(0,R.AC)(a.markdown,a.chapters)),...(0,l.yT)("planned-auto-spec-gate",()=>(0,R.mR)(a.markdown,a.template)),...(0,l.yT)("bid-composition-body-table",()=>(0,O.NN)(a.markdown,{bodyTableForbidden:a.bodyTableForbidden,plannedChapterTitles:(a.effectiveChapters?.length?a.effectiveChapters:a.template.chapters).filter(a=>(a.tablePlans?.length||0)>0||(a.tableSections?.length||0)>0||(a.diagramRequirements?.length||0)>0).map(a=>a.title),requiredTableTitles:a.promptDocumentRules?.requiredTables||[]})),...(0,l.yT)("bid-composition-body-figure",()=>(0,O.Fo)(a.markdown,a.bodyFigureForbidden)),...(0,l.yT)("identity-marks-forbidden",()=>(0,o.Vl)(a.markdown,a.identityMarksForbidden)),...(0,l.yT)("planned-structure",()=>(0,O.UG)(a.markdown,a.template,a.bodyTableForbidden)),...(0,l.yT)("table-caption",()=>(0,O.XU)(a.markdown,a.bodyTableForbidden)),...await (0,l.yT)("prompt-document-rule",()=>(0,O.Ed)(a.markdown,a.promptDocumentRules,void 0,{bodyTableForbidden:a.bodyTableForbidden,coverForbidden:a.coverForbidden})),...await (0,l.yT)("local-adaptation-keyword",()=>(0,o.cJ)(a.markdown,a.factsModel)),...(0,l.yT)("boq-division-coverage",()=>(0,V.sl)(a.markdown,a.chapters,a.factsModel))]}let bB={project:"项目基础事实",schedule:"工期与节点",quality:"质量目标与验收",safety:"安全文明要求",resources:"资源投入依据",quantities:"清单/图纸/工程量事实",rules:"规范规则与验收要求"};var bC=c(52922);function bD(a){let b=a.replace(/[\u200b-\u200f\u2060\ufeff]/gu,"").trim();return!(!b||/[。!?]/u.test(b))&&(b.match(/第[一二三四五六七八九十百千\d]+[章节篇]/gu)||[]).length+(b.match(/\d+(?:\.\d+)+/gu)||[]).length>=3}function bE(a){let b=a.split(/[,,、\s]+/u).map(a=>a.trim()).filter(Boolean);return!(b.length<8)&&b.reduce((a,b)=>a+b.length,0)/b.length<8}function bF(a){return a.split("\n").filter(a=>!(0,bC.X9)(a)&&!bD(a)).flatMap(a=>a.split(/[。;;]/u)).map(a=>a.trim()).filter(a=>a.length>=12).filter(a=>{let b=(a.match(/[\u4e00-\u9fff]/gu)||[]).length,c=a.replace(/\s+/gu,"").length;return b>=8&&b/Math.max(1,c)>=.15}).filter(a=>!bE(a))}function bG(a,b){let c=new Set;for(let d of bF(a))for(let a of d.match(b)||[])c.add(a);return c}let bH=/\d|确保|保证|杜绝|实行|采用|落实|建立|执行|达到|不低于|不少于|控制在|符合|按照|承诺/u,bI=["危险性较大的分部分项工程安全管理","扬尘污染防治措施","建筑工人实名制管理","农民工工资专用账户与工资支付保障","生产安全事故应急预案与应急演练","绿色施工与四节一环保措施"],bJ=["危险源辨识与风险识别评估","编制专项施工方案","组织专家论证并履行审批程序","对作业人员进行安全技术交底","施工过程监测与监控量测","分部分项工程验收","三级配电系统","两级漏电保护装置","漏电保护器与接地保护","实名制考勤与人员管理","农民工工资专用账户银行代发","应急预案编制与响应","绿色施工措施与评价"];function bK(a){return a.replace(/^第[一二三四五六七八九十百千万\d]+[章节]\s*/u,"").replace(/^\d+(?:\.\d+)*[、..\s]+/u,"").replace(/^[((]?[一二三四五六七八九十]+[))、..\s]+/u,"").replace(/\s+/gu,"").trim()}async function bL(a){let{blocks:b,completeBlocks:c}=await (0,bC.Pm)(a);return Math.round((.7*Math.min(1,c/Math.max(6,Math.ceil((0,h.V7)(a)/1500)))+.3*(b?c/b:0))*100)}let bM=/目录|层级|编号|表格|表头|分隔线|页码|空小节|缺少规划小节|小节只有标题|缺节/u,bN=/跨章一致性复核|事实一致性冲突|事实冲突|评分项要求|可靠精确参数|应急预案|属地创优|工伤保险|专业评分|深度不足|事实反查|存在多个值|已确认事实未在正文中落位|事实未在正文中落位/u,bO=/缺少规划小节|小节只有标题|空小节|只有标题或表格无正文|小节内容补写未完成|小节生成未达标|同名小节|H4 标题|正文缺少章节标题|小节正文过短/u;function bP(a){let b=new Map;return a.split("\n").forEach((a,c)=>{if(!((0,bC.X9)(a)||bD(a)))for(let d of a.matchAll(/[^。;;]+/gu)){let a=d[0]||"",e=a.trim(),f=e.replace(/[\s,,、::()()【】[\]《》“”"'`]/gu,"");if(f.length<12)continue;let g=(d.index||0)+(a.length-a.trimStart().length),h=b.get(f)||[];h.push({lineIndex:c,start:g,end:g+e.length,raw:e}),b.set(f,h)}}),[...b.entries()].map(([a,b])=>({key:a,occurrences:b}))}function bQ(a){let b=bP(a),c=b.reduce((a,b)=>a+b.occurrences.length,0),d=b.length,e=c-d;return{totalSentences:c,uniqueSentences:d,duplicateInstances:e,duplicateRate:c>0?e/c:0}}async function bR(a,b){let c=await (0,bC.Bt)(a,b),d=(0,bC.Ye)(a),e=bQ(a).duplicateRate,f=await (0,bC.gE)(a,b),g=(0,bC.nY)(a),h=(0,bi.vL)(a),i=bi.y9.map(b=>({patternId:b.id,patternLabel:b.label,count:(0,bi.be)(a,b)})).filter(a=>a.count>=h),j=i.length>=2||i.some(a=>a.count>=2*h);return{level:f.heavyTemplated||"heavy"===c.level||j?"heavy":"medium"===c.level||i.length>0?"medium":"light",fillerRatio:c.ratio,fillerSentences:c.fillerSentences,totalSentences:c.totalSentences,vagueHitCount:d.reduce((a,b)=>a+b.count,0),vaguePhrases:d.map(a=>a.phrase),duplicateSentenceRate:e,crossProjectResidue:g,difficultyCountermeasureRatio:f.ratio,difficultyBothCount:f.bothCount,difficultyCountermeasures:f.countermeasures,difficultyHeavyTemplated:f.heavyTemplated,sentencePatternHits:i}}function bS(a){let b=a.replace(/[\u200b-\u200f\u2060\ufeff]/gu,"").split(/(?=^#{1,6}\s)/mu),c=[];for(let a of b){if(!a.trim())continue;let b=a.split("\n"),d=/^#{1,6}\s/u.test(b[0]||""),e=d?(b[0]||"").trim():"",f=d?bK(e.replace(/^#{1,6}\s+/u,"")):"",g=d?b.slice(1):b,h=[],i=[];for(let a of g){if(!a.trim()){i.length>0&&(h.push(i),i=[]);continue}i.push(a)}i.length>0&&h.push(i);let j=[];for(let a of h){let b=a.filter(a=>!bD(a));b.some(a=>(function(a){let b=a.replace(/[\u200b-\u200f\u2060\ufeff]/gu,"").trim();return!(b.length<12||(0,bC.X9)(b)||bD(b))&&!bE(b)})(a))&&j.push(b.map(a=>a.trim()).join("\n"))}c.push({heading:e,headingText:f,hasSubstantiveBody:j.length>0,substantiveParagraphs:j})}return c}function bT(a){let b=[];for(let c of bS(a))if(c.hasSubstantiveBody)for(let a of c.substantiveParagraphs)b.push(...function(a){let b=[],c=[],d=0;for(let e of a.split("\n"))d>0&&d+e.length>600&&(b.push(c.join("\n")),c=[],d=0),c.push(e),d+=e.length+1;return c.length>0&&b.push(c.join("\n")),b}(a));return b}async function bU(a){let b=bT(a.markdown),c=await (0,aB.Mv)(b,[...bI,...bJ],a.embedDocuments),d=a=>b.some(b=>c(b,a)>=aB.Eh),e=bI.filter(d).length/bI.length,f=await (0,bC.Bt)(a.markdown,a.embedDocuments);return{completeness:function(a,b,c,d){let e=[...a.matchAll(/^#{1,3}\s+(.+)$/gmu)].map(a=>bK(a[1]||"")).filter(a=>a.length>=2),f=1,g=c?.chapters||[];if(g.length>0){let a=g.map(a=>bK(a.title)).filter(Boolean);f=a.filter(a=>e.some(b=>b.includes(a)||a.includes(b))).length/a.length}else b.length>0&&(f=b.filter(a=>e.some(b=>b.includes(bK(a.title))||bK(a.title).includes(b))).length/b.length);return Math.round((.55*f+.45*d)*100)}(a.markdown,a.chapters,a.template,e),specificity:function(a,b){let c=b.filter(V.O7),d=c.filter(a=>"used"===a.status),e=c.length?d.length/c.length:1,f=d.map(a=>String(a.value||"").replace(/\s+/gu," ").trim()).filter(a=>a.length>=4&&a.length<=60),g=a.map(a=>(a.content||"").replace(/\s+/gu," ")),h=f.filter(a=>g.filter(b=>b.includes(a)).length>=2).length;return Math.round((.55*e+.45*(f.length?h/f.length:1))*100)}(a.chapters,a.factTraces),compliance:function(a,b){let c=bJ.filter(b).length/bJ.length,d=a.split("\n").map(a=>a.replace(/[\u200b-\u200f\u2060\ufeff]/gu,"").trim()).filter(a=>!(!a||/^#{1,6}\s+/u.test(a)||bD(a))&&!/^(?:第[一二三四五六七八九十百\d]+[章节篇]|\d+(?:\.\d+){0,3})\s+[^。;;,,]*$/u.test(a)).join("\n"),e=(0,bC.JD)(d);return Math.round((.8*c+.1*(e.twoStepComplete?1:e.categories.length>0&&e.graded?.6:.3*(e.categories.length>0))+.1*(0,bC.bH)(d).coverage)*100)}(a.markdown,d),executability:await bL(a.markdown),normalization:function(a){let b=a=>"table"===a.category||"format"===a.category||("structure"===a.category?bO.test(a.message):!a.category&&!bN.test(a.message)&&bM.test(a.message));return Math.max(0,100-8*a.filter(a=>"error"===a.level&&b(a)).length-Math.min(3*a.filter(a=>"warning"===a.level&&b(a)).length,30))}(a.issues),uniqueness:function(a,b){let c=b.forbiddenEmptyPhraseHits,d=b.vagueSemanticSentences,e=100*Math.max(0,b.ratio-.1),f=bQ(a),g=Math.max(10,Math.ceil((0,h.V7)(a)/1e4)),i=Math.max(0,f.duplicateInstances-g);return Math.max(0,Math.round(100-4*c-6*d-.5*e-Math.max(60*f.duplicateRate,i)))}(a.markdown,f),moduleCoverageRate:e}}var bV=c(43378),bW=c(31263),bX=c(35547);async function bY(a){let b=a.items.map(a=>a.trim()).filter(Boolean);if(0===b.length)return{total:0,met:0,partial:0,missing:0,simulatedScore:0,criteria:[]};let c=bT(a.markdown),d=bS(a.markdown).map(a=>a.heading).filter(Boolean),e=bF(a.markdown).join(""),f=await (0,aB.Mv)([...c,...d],b,a.embedDocuments),g=b.map((a,b)=>{let g=(0,R.pG)(a),h=g.length>0&&g.some(a=>e.includes(a)),i="",j=0;for(let b of c){let c=f(b,a);c>j&&(j=c,i=b)}if(h||j>=aB.Eh)return{index:b,title:a,status:"met",similarity:j,anchor:i?i.split("\n")[0].replace(/^#{1,6}\s+/u,"").slice(0,80):void 0};let k="",l=0;for(let b of d){let c=f(b,a);c>l&&(l=c,k=b)}return l>=aB.Eh?{index:b,title:a,status:"partial",similarity:l,anchor:k.replace(/^#{1,6}\s+/u,"").slice(0,80)}:{index:b,title:a,status:"missing",similarity:l}}),h=g.filter(a=>"met"===a.status).length,i=g.filter(a=>"partial"===a.status).length,j=g.filter(a=>"missing"===a.status).length,k=Math.round((h+.5*i)/g.length*100);return{total:g.length,met:h,partial:i,missing:j,simulatedScore:k,criteria:g}}let bZ="quality-caliber-c9.2",b$={version:bZ,role:"primary"},b_={version:bZ,role:"secondary",relatedTo:"quality-report"},b0={requirement:.3,structure:.15,dataAnchor:.2,professionalDepth:.15,compliance:.1,factIntegrity:.1},b1={anchors:.85,modules:.15},b2={execution:.45,figure:.35,caption:.2,appendix:.75,bodyCompliance:.25},b3={boq:.4,parameters:.3,drawing:.15,authority:.15},b4={selfHarm:.25,placeholder:.2,length:.15,tableConsistency:.2,regulation:.2},b5={reconciliation:.6,binding:.2,keyFacts:.2},b6=/规格-数值绑定|名称-数值绑定|合计值/u,b7=/编制依据对账缺口/u,b8={selfHarm:/自伤表述/u,placeholder:/占位符|占位式表达/u,length:/正文篇幅/u};function b9(a){let b=a.filter(a=>null!==a.value&&Number.isFinite(a.value));if(0===b.length)return{value:null};let c=b.reduce((a,b)=>a+b.weight,0);return{value:b.reduce((a,b)=>a+b.value*b.weight,0)/c,detail:b.map(a=>a.detail).filter(a=>!!a).join("、")||void 0}}async function ca(a,b){if(!b)return{value:null};let c=a.filter(a=>(0,h.V7)(a.content)>=800);if(0===c.length)return{value:null};let d=[],e=await Promise.all(c.map(a=>b.analyze(a.content).catch(b=>{d.push(`${a.title}:${b instanceof Error?b.message:String(b)}`)}))),f=c.map((a,b)=>({title:a.title,analysis:e[b]})).filter(a=>!!a.analysis);if(0===f.length)return{value:null};let g=0,i=[];for(let a of f){let b=(0,R.Pu)(a.analysis.dimensions),c=(0,R.lH)(a.title);g+=Math.min(1,b/c),b<c&&i.push(`${a.title} ${b}/12`)}let j=g/f.length*100,k=d.length>0?`;⚠ ${d.length} 章语义分析失败未计入(${d.slice(0,2).join(";")})`:"",l=(i.length>0?`专业深度达标 ${Math.round(j)}(薄弱:${i.slice(0,3).join("、")})`:`专业深度达标 ${Math.round(j)}(全部章达目标线)`)+k;return{value:j,detail:l}}async function cb(a){let b=await bU({markdown:a.markdown,chapters:a.chapters,template:a.template,factTraces:a.factTraces,issues:a.issues,embedDocuments:a.embedDocuments}),c=a.bidComposition?.bidType||"unknown",d=a.tenderRequirements?.extracted&&a.tenderRequirements.entries||[],e=d.length>0?(0,aC.U1)(d,a.markdown):[],f=e.filter(a=>"comply"!==a.entry.policy),g=f.length>0?(()=>{let a=f.filter(a=>a.satisfied).length;return{value:a/f.length*100,detail:`锚点全命中 ${a}/${f.length}`}})():{value:null},h=function(a,b){let c=b.filter(a=>!a.exempt),d=c.filter(a=>a.placed),e=d.length>0?(0,s.R8)(a,d.map(a=>a.itemName)):new Map;return b.length>0?{effectiveRows:c.length,placedRows:d.length,explicitRows:e.size,rate:c.length>0?d.length/c.length:null,exemptRows:b.filter(a=>a.exempt).slice(0,50).map(a=>`${a.itemName}${a.quantity?` ${a.quantity}${a.unit}`:""}`)}:void 0}(a.markdown,a.boqRowTraces||[]),i=b9([{...g,weight:b1.anchors},{...function(a){if(!Number.isFinite(a))return{value:null};let b=Math.round(a*bI.length);return{value:100*a,detail:`强制模块 ${b}/${bI.length}`}}(b.moduleCoverageRate),weight:b1.modules}]),j=function(a){let{markdown:b,mode:c,bidComposition:d,effectiveChapters:e,chapters:f}=a;if("blind"===c){let a=[],c=d?.appendixPlan||[];if(c.length>0){let d=c.filter(a=>(0,Q.cM)(b,a)).length;a.push({weight:b2.appendix,value:d/c.length*100,detail:`附表承载 ${d}/${c.length}`})}if(d?.bodyTablePolicy==="forbidden"){let d=function(a,b){let c=-1;for(let d of b){let b=a.indexOf(`## ${d.title}`);b>=0&&(c<0||b<c)&&(c=b)}let d=c>=0?a.slice(0,c):a;return d.match(/^\s*\|/gmu)?.length||0}(b,c);a.push({weight:b2.bodyCompliance,value:Math.max(0,100-25*d),detail:d>0?`正文禁表 违规 ${d} 处`:"正文禁表合规"})}else{let c=(e||[]).reduce((a,b)=>a+(b.tablePlans?.length||0),0);if(c>0&&e){let b=Math.max(0,c-(0,bV.Xi)(e,f).reduce((a,b)=>a+b.plans.length,0));a.push({weight:b2.execution,value:b/c*100,detail:`表执行 ${b}/${c}`})}let d=(e||[]).filter(a=>(a.tablePlans?.length||0)>0||(a.tableSections?.length||0)>0||(a.diagramRequirements?.length||0)>0).map(a=>a.title),g=(0,O.NN)(b,{bodyTableForbidden:!1,plannedChapterTitles:d}).length;a.push({weight:b2.bodyCompliance,value:Math.max(0,100-25*g),detail:g>0?`正文未授权表格 违规 ${g} 处`:"正文表格授权合规"});let h=(0,O.xw)(b,!1);h.total>0&&a.push({weight:b2.caption,value:h.captioned/h.total*100,detail:`题注 ${h.captioned}/${h.total}`})}return b9(a)}let g=[],h=(e||[]).reduce((a,b)=>a+(b.tablePlans?.length||0),0);if(h>0&&e){let a=Math.max(0,h-(0,bV.Xi)(e,f).reduce((a,b)=>a+b.plans.length,0));g.push({weight:b2.execution,value:a/h*100,detail:`表执行 ${a}/${h}`})}let i=(0,bV.cA)({chapters:e});if(i.length>0){let a=(0,bV.Vr)(i,b);g.push({weight:b2.figure,value:a.covered/a.total*100,detail:`图位 ${a.covered}/${a.total}`})}let j=(0,O.xw)(b,d?.bodyTablePolicy==="forbidden");return j.total>0&&g.push({weight:b2.caption,value:j.captioned/j.total*100,detail:`题注 ${j.captioned}/${j.total}`}),b9(g)}({markdown:a.markdown,mode:c,bidComposition:a.bidComposition,effectiveChapters:a.effectiveChapters,chapters:a.chapters}),k=function(a){let{markdown:b,billPlacementAudit:c,parameterUsageAudit:d,drawingFactLock:e,authorityAuditReport:f}=a,g=[];c&&null!==c.rate&&Number.isFinite(c.rate)&&g.push({weight:b3.boq,value:100*c.rate,detail:`BOQ 落位 ${c.placedRows}/${c.effectiveRows}`}),d&&null!==d.rate&&Number.isFinite(d.rate)&&g.push({weight:b3.parameters,value:100*d.rate,detail:`参数 ${d.usedParams}/${d.usedParams+d.relevantMissedCount}`});let h=e?0===e.groups.length?"图纸事实锁无可用分组(无图纸类证据入库)":void 0:"图纸事实锁不可用(未构建或构建失败)";if(e&&e.groups.length>0){let a=(0,bW.SL)(e,b);g.push({weight:b3.drawing,value:100*a.rate,detail:`图纸事实 ${a.referenced.length}/${e.groups.length}`})}if(f){let a=f.unregisteredCount+f.derivationGaps.length+f.processGaps.length;g.push({weight:b3.authority,value:Math.max(0,100-5*a),detail:a>0?`无主数值 缺口 ${a} 处`:"无主数值 0 缺口"})}let i=b9(g);return h&&null!==i.value&&(i.detail=`${i.detail?`${i.detail};`:""}⚠ ${h},图纸分量未计量(本维度按剩余分量重归一)`),i}({markdown:a.markdown,billPlacementAudit:h,parameterUsageAudit:a.parameterUsageAudit,drawingFactLock:a.drawingFactLock,authorityAuditReport:a.authorityAuditReport}),l=await ca(a.chapters,a.professionalDepthClassifier),m=function(a,b){let c=b=>a.filter(a=>b.test(a.message)).length,d=c(b8.selfHarm),e=c(b8.placeholder),f=c(b8.length),g=(0,bX.OV)(b),h=by(b),i=h.declaredNotUsed.length,j=h.usedNotDeclared.length,k=h.stats.declaredCodes+h.stats.declaredNames>0?{weight:b4.regulation,value:Math.max(0,100-(i+j)*20),detail:i+j>0?`编制依据缺口 ${i+j} 处(声明未用 ${i}/引用未声明 ${j})`:"编制依据对账 0 缺口"}:{weight:b4.regulation,value:null};return b9([{weight:b4.selfHarm,value:Math.max(0,100-25*d),detail:d>0?`自伤 ${d} 处`:"自伤 0"},{weight:b4.placeholder,value:Math.max(0,100-25*e),detail:e>0?`占位符 ${e} 处`:"占位符 0"},{weight:b4.length,value:Math.max(0,100-50*f),detail:f>0?`篇幅超限 ${f} 条`:"篇幅达标"},{weight:b4.tableConsistency,value:Math.max(0,100-20*g),detail:g>0?`表内不自洽 ${g} 处`:"表自洽 100%"},k])}(a.issues,a.markdown),n=function(a,b){let c=a.filter(a=>"error"===a.level&&"fact_consistency"===a.category&&!b7.test(a.message)),d=c.filter(a=>b6.test(a.message)),e=[{weight:b5.reconciliation,value:Math.max(0,100-20*c.length),detail:c.length>0?`对账冲突 ${c.length} 条`:"对账零冲突"},{weight:b5.binding,value:Math.max(0,100-20*d.length),detail:d.length>0?`绑定冲突 ${d.length} 条`:"绑定零冲突"}];return b&&null!==b.rate&&Number.isFinite(b.rate)&&e.push({weight:b5.keyFacts,value:100*b.rate,detail:`关键事实 ${b.placed}/${b.specs}`}),b9(e)}(a.issues,a.keyFactPlacementAudit),o=[{key:"requirement",label:"要求实体响应",...i,weight:b0.requirement},{key:"structure",label:"结构呈现落实",...j,weight:b0.structure},{key:"dataAnchor",label:"数据锚定",...k,weight:b0.dataAnchor},{key:"professionalDepth",label:"专业深度",...l,weight:b0.professionalDepth},{key:"compliance",label:"合规与规范",...m,weight:b0.compliance},{key:"factIntegrity",label:"事实完整与一致性",...n,weight:b0.factIntegrity}],p=o.filter(a=>null!==a.value&&Number.isFinite(a.value)),q=p.reduce((a,b)=>a+b.weight,0),r=q>0?p.reduce((a,b)=>a+b.value*b.weight,0)/q:0,t=p.length,u=o.length,v=q>=.9,w=Math.round(r),x=p.map(a=>({key:a.key,label:a.label,score:Math.round(a.value),weight:a.weight,detail:a.detail})),y=a.issues.filter(a=>"error"===a.level&&(0,R.R9)(a)).length,z=Math.max(0,Math.min(99,Math.round(w-Math.min(10,3*y)))),A=await bR(a.markdown,a.embedDocuments),B=a.evaluationCriteriaItems&&a.evaluationCriteriaItems.length>0?await bY({items:a.evaluationCriteriaItems,markdown:a.markdown,embedDocuments:a.embedDocuments}):void 0,C=d.length>0?d.map((a,b)=>({text:a.text.slice(0,160),category:a.category,responded:"comply"===a.policy||!!e[b]?.satisfied})):void 0,D="unknown"===c?";⚠ 标书类型未判定(按明标口径)——暗标项目须核对招标文件后重跑":"",E=B?`;评分细则模拟 ${B.simulatedScore}%(met ${B.met} / partial ${B.partial} / missing ${B.missing})`:"",F=z>=95&&0===y&&b.uniqueness>=60&&v,G=F?["已达到当前质量目标,建议保持事实口径和导出前复核。"]:[...v?[]:[`本次仅计量 ${t}/${u} 维(权重覆盖 ${(100*q).toFixed(0)}%,低于下限 90%):重归一分不得作为达标依据,须先补齐缺失维度的计量条件再判定。`],"按对齐评分口径补齐短板维度:要求实体响应补锚点全命中(核心词与数字参数逐条落位)、结构呈现补图表落位、数据锚定补 BOQ/参数/图纸/无主数值溯源、专业深度按章补六维薄弱项、合规与规范清理自伤与占位符并压缩超限篇幅且编制依据与正文双向对齐、事实一致性补关键事实落位与数值对账。","系统需优先修复阻断问题、扩大本地知识库检索、补抽结构化事实,并将未落位事实写入对应章节。"];b.uniqueness<60&&G.push(`低雷同性 ${b.uniqueness} 低于门槛 60:存在与公开模板/通用话术重合的雷同风险,须改写高重合段落后再交付。`);let H=`${v?"":"⚠ "}本次仅计量 ${t}/${u} 维、权重覆盖 ${(100*q).toFixed(0)}%`,I=`交付置信度 ${z}% / 目标 95%,综合评分 ${w}/100(${[...x.map(a=>`${a.label} ${a.score}`),`低雷同性 ${b.uniqueness}`].join("、")});${H}${D}${E};评分口径 ${bZ}(主尺)`;return{overall:w,deliveryProbability:z,target:95,passed:F,scores:b,mode:c,dimensions:x,requirementChecklist:C,billPlacementAudit:h,parameterUsageAudit:a.parameterUsageAudit,keyFactPlacementAudit:a.keyFactPlacementAudit,templating:A,caliber:b$,evaluationCriteriaAttainment:B,measurementCoverage:{dimensions:t,totalDimensions:u,weightRatio:q,sufficient:v},summary:I,actions:G}}let cc=new Set(["fact-coverage","overview-recap","internal-terminology-anchor","global-consistency-snapshot","data-consistency-snapshot"]);function cd(...a){return a.flat()}var ce=c(19898),cf=c(91977),cg=c(51144);function ch(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}}async function ci(a){(0,e.Te)(a.signal);let b=[];if(0===a.scopedFilePaths.length)return b;let c=/资源|人|材|机|材料|设备|清单|工程量|BOQ|报价/u.test(a.chapter.title),d=(c?1.6:1)*(/[、,,与和及]/.test(a.chapter.title)?1.4:1),f=Math.ceil((a.highRisk?18:10)*d),h=Math.ceil((a.highRisk?24:14)*(c?1.4:1)),i=Math.ceil((a.highRisk?72:42)*d),j=Math.ceil((a.highRisk?72e3:42e3)*d),k=[...new Set([...a.requiredNeeds||[],...a.extraClues||[]])].slice(0,12),l=(function(a,b=[],c=[]){let d=a.sections||[],e=[...a.requiredFacts,...b,...c],f=(0,cg.Cr)(d,a=>(0,cg.Ox)(a),{maxItems:16,maxChars:1200},"retrieval-sections").selected,g=(0,cg.Cr)(e,a=>(0,cg.Ox)(a),{maxItems:16,maxChars:1200},"retrieval-facts").selected,h=/[、,,与和及]/.test(a.title),i=/资源|人|材|机|材料|设备|清单|工程量|BOQ|报价/u.test(a.title),j=/进度|工期|节点/u.test(a.title)?["合同工期","计划工期","日历天","开工","竣工","关键线路","进度计划","施工进度"]:/质量|验收/u.test(a.title)?["质量标准","验收规范","检验批","复验","合格","质量保证","隐蔽验收"]:/安全|危大|风险/u.test(a.title)?["安全措施","风险源","危大工程","应急","检查整改","安全防护","应急预案","基坑支护","基坑开挖","基坑底标高","坡率","支护形式","降水","开挖深度","高支模","专项方案"]:i?["工程量清单","项目特征","材料设备","规格型号","数量单位","劳动力","机械设备","进场计划","资源保障","主要材料","施工机具","材料供应","设备配置"]:/施工|方案|方法|技术|工艺/u.test(a.title)?["施工方法","工艺流程","技术标准","构造做法","控制要点","施工准备"]:["工程范围","施工方法","控制要点","验收要求"],k=h?[...j,...a.title.split(/[、,,与和及]+/u).map(a=>a.trim()).filter(a=>a.length>=4)]:j,l=[...new Set([a.title,...f,...g,...k].flatMap(a=>a.split(/[\s、,,。;;::()()《》【】\-/]+/u)).map(a=>a.trim()).filter(a=>a.length>=2))],m=(0,cg.Cr)(l,a=>(0,cg.Ox)(a),{maxItems:36,maxChars:1200},"retrieval-tokens").selected,n=h?a.title.split(/[、,,与和及]+/u).map(a=>a.trim()).filter(a=>a.length>=4).map(a=>`${a} ${f.slice(0,6).join(" ")} ${g.slice(0,4).join(" ")}`.trim()):[];return[...new Set([`${a.title} ${f.join(" ")}`.trim(),...g.map(b=>`${a.title} ${b}`.trim()),...f.map(b=>`${a.title} ${b} ${g.slice(0,6).join(" ")}`.trim()),`${a.title} ${k.join(" ")}`.trim(),...n,m.join(" ")].filter(Boolean))]})(a.chapter,a.requiredNeeds,a.extraClues).slice(0,f),m=[...k.map(b=>`${a.chapter.title} ${b} ${(a.chapter.sections||[]).join(" ")}`.trim()).filter(a=>!l.includes(a)).map(a=>({text:a,boost:2,source:"required-fact-evidence"})),...l.map(a=>({text:a,boost:2.4,source:"deep-retrieval"}))];return b.push(...(await (0,e.l$)(m,async b=>{var c;(0,e.Te)(a.signal);let d=await a.manager.search(a.projectRoot,b.text,{scope:"project",filters:{filePaths:a.scopedFilePaths,materialRoots:a.scopedMaterialRoots??(0,ce.materialRootsOfFiles)(a.scopedFilePaths)},limit:h,weights:{keyword:.62,vector:.32,rewrite:.9,hybridBonus:.28},generationMode:!0});return(c={chapter:a.chapter,results:d.results,fileRoleByPath:a.fileRoleByPath,fileProcessingByPath:a.fileProcessingByPath,boost:b.boost,source:b.source}).results.map(a=>{let b=c.fileProcessingByPath.get(a.filePath);return{chapterId:c.chapter.id,filePath:a.filePath,score:a.score+c.boost+("table"===b?3:"structured_data"===b?2.6:3.2*("bill_of_quantities"===b)),content:a.content,roleId:c.fileRoleByPath.get(a.filePath),processingType:b,sectionTitle:a.sectionTitle,source:c.source}})},{kind:"deepRetrieval",highRisk:a.highRisk})).flat()),[...(0,g.QR)(b.filter(a=>"required-fact-evidence"===a.source),{maxItems:Math.max(6,3*k.length),maxChars:18e3,preservePinned:!0}),...(0,g.QR)(b.filter(a=>"required-fact-evidence"!==a.source),{maxItems:i,maxChars:j,preservePinned:!0})]}var cj=c(32434),ck=c(36003),cl=c(95734);async function cm(a,b){let c=(0,O.r4)(a.content);if(0===c.length)return[];let d=[];for(let e of c){let c=e.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&"),f=a.content.match(RegExp(`^###\\s+(?:\\d+(?:\\.\\d+)*[、..\\s]*\\s+)?${c}\\s*\\n([\\s\\S]*?)(?=^#{2,3}\\s+|$)`,"mu")),g=f?.[1]||"",h=await (0,ck.AI)(e,(0,ck.Ym)(e,a.chapter,a.evidence),b),i=(0,ck.uQ)(e,g,h);i&&d.push(`${e}:${i}`)}return d}function cn(a,b){let c=a.trim();if(!c)return[];let d=Math.max(1e3,Math.ceil(b)),e=[],f=0;for(;f<c.length;){let a=Math.min(f+d,c.length),b=c.lastIndexOf("\n\n",a);(b<=f||a-b>.25*d)&&(b=c.lastIndexOf("\n",a)),(b<=f||a-b>.2*d)&&(b=a),e.push(c.slice(f,b).trim()),f=b}return e.filter(Boolean)}function co(a){return"string"==typeof a?a:a&&"object"==typeof a&&"message"in a?String(a.message):JSON.stringify(a)}function cp(a){let b=Number(process.env[a]);return Number.isFinite(b)&&b>0?Math.ceil(b):0}async function cq(a){var b;(0,e.Te)(a.signal);let c=a.chapters.map(a=>{let b=a.content.replace(/#{1,6}\s+/gu,"").replace(/\*\*/gu,"").replace(/\|/gu," ").replace(/[\n\r]+/gu," ").trim(),c=function(a){let b=[];for(let c of[/(?:总建筑面积|建设规模|总用地面积|总占地面积)[^\n。;;]{0,18}\d+(?:[.,]\d+)?\s*万?\s*(?:㎡|m²|m2|平方米)/gu,/(?:合同估算价|合同估算价格|投资估算|最高投标限价|招标控制价|工程总投资|总投资|工程造价)[^\n。;;]{0,18}\d+(?:[.,]\d+)?\s*万?\s*(?:万元|亿元|元)/gu,/(?:计划工期|合同工期|总工期|施工周期)[^\n。;;]{0,18}\d+\s*(?:日历天|天|个月|月)/gu,/(?:质量标准|质量目标)[^\n。;;]{0,26}/gu,/(?:找平层|抹灰层|防水层|保温层|结合层|垫层|面层|粘结层)[^\n。;;]{0,24}\d+:\d+(?:\.\d+)?/gu]){let d=[...new Set(a.match(c)||[])].slice(0,4);b.push(...d)}return[...new Set(b.map(a=>a.replace(/\s+/gu," ").trim()).filter(Boolean))].join(";")}(a.content);return`章节:${a.title}
|
|
17
|
+
${e}`,source:function(a){let b=a.toLowerCase();return b.includes(".gov.cn")||b.includes("mohurd")||b.includes("zjt")||a.includes("住建")?"web-policy":"web-evidence"}(b.url),sectionTitle:a.chapterTitle})}}catch(a){e+=1,f.push(`${"string"==typeof g?g:"查询"}:${a instanceof Error?a.message:String(a)}`),console.error("[web-research] 检索查询失败(与「被噪声过滤」分列计数)",a)}return{evidence:c,queries:b,filtered:d,failedQueries:e,failures:f}}var au=c(65667);let av=[{label:"工程名称",factGroups:["project"],patterns:[/工程名称\s*[::]\s*([^\n|]+)/u],locations:"封面、工程概况、页眉页脚、专项方案、表格标题"},{label:"建设地点",factGroups:["project"],patterns:[/建设地点\s*[::]\s*([^\n|]+)/u,/工程地点\s*[::]\s*([^\n|]+)/u],locations:"工程概况、周边环境、扬尘噪声、交通导改、属地化措施"},{label:"总工期",factGroups:["schedule"],patterns:[/总工期\s*[::]\s*([^\n|]+)/u,/计划工期\s*[::]\s*([^\n|]+)/u,/工期目标\s*[::]\s*([^\n|]+)/u],locations:"工程概况、进度计划、横道图、资源计划、纠偏措施"},{label:"建设规模",factGroups:["project","preciseFacts"],patterns:[/建设规模\s*[::]\s*([^|\n]+)/u,/建筑面积\s*[::]\s*([^|\n]+)/u,/道路长度\s*[::]\s*([^|\n]+)/u,/管线长度\s*[::]\s*([^|\n]+)/u],locations:"工程概况、工程量表、施工部署、资源配置"},{label:"机械数量型号",factGroups:["resources"],locations:"机械表、平面布置、进度保障、安全专项方案",kind:"equipment-counts"},{label:"劳动力人数",factGroups:["resources"],patterns:[/劳动力\s*[^\n|]{0,12}(\d+)\s*人/u,/班组\s*[^\n|]{0,12}(\d+)\s*人/u],locations:"劳动力计划、进度节点、抢工方案、工资保障台账"},{label:"危大工程清单",factGroups:["safety","preciseFacts"],patterns:[/危大工程\s*[::]\s*([^\n|]+)/u,/深基坑|高支模|起重吊装|脚手架/u],locations:"安全章节、专项方案、审批表、应急预案"},{label:"环保监测指标",factGroups:["quality","safety","preciseFacts"],patterns:[/PM10|PM2\.5|TSP|噪声|扬尘在线监测/u],locations:"文明施工、扬尘噪声、智慧工地、应急联动"}];function aw(a){return a.replace(/[\s,。;;::|]/gu,"").trim()}let ax=/塔式起重机|履带吊|汽车吊|卷扬机|脚手架|扣件|钢管|模板|噪声|PM2\.5|PM10|TSP|扬尘在线监测|临电|消防|安全网|围挡|洗车台|沉淀池|雾炮/u,ay=/不使用|不采用|不配置|无需|未采用|不得使用|禁止使用/u;function az(a,b){let c=[];for(let d of b){let b=a[d];if(Array.isArray(b))for(let a of b)a&&"object"==typeof a&&"value"in a&&"string"==typeof a.value&&c.push(a.value)}return c.map(aw).filter(Boolean)}function aA(a,b){return 0===b.length||b.some(b=>b.includes(a)||a.includes(b)||a.length>=4&&b.includes(a.slice(0,4)))}var aB=c(37047),aC=c(63516);let aD=/([\u4e00-\u9fa5A-Za-z0-9()()]{1,12}?)(\d+(?:\.\d+)?)\s*(m²|m³|㎡|mm|cm|m|米|MPa|kN|kV|kW|℃|°C|万元|元|人|天|日|个|层|樘|处|套|台|t|吨)([\u4e00-\u9fa5A-Za-z0-9()()]{0,8})/gu,aE=["直径","厚度","宽度","长度","高度","深度","间距","距离","标高","偏差","数量","面积","体积","重量","压力","温度","强度","等级","坡度","规格","尺寸","层数","次数","跨度","半径","总长","全长"],aF=["以内","以外","以上","以下","之间","左右","以前","以后","之前","之后"],aG=/^(?:主要|本工程|本项目|全项目)?(?:作业对象|作业内容|施工内容|工作内容|工程内容|施工对象|施工范围|工程规模|建设内容|建设规模)为/u,aH=/^(?:由)?责任[\u4e00-\u9fa5]{0,4}在(?:内)?完成/u,aI=/自然村|村组|标段|区域|点位|养护|地上|地下|建筑高度|[\u4e00-\u9fa5]{1,4}组$/u,aJ=/^(?:局部|个别|少数|多数|大部分)/u,aK=["开挖","封闭","回填","浇筑","铺筑","摊铺","供应","编制","提交","签订","安装","养护","试验","拆除","砌筑"],aL=["直径","半径","穴径","胸径","地径","冠幅","厚度","宽度","长度","高度","深度","穴深","间距","距离","标高","坡度","跨度","株距","行距"];function aM(a){return a.replace(/(?:mm|cm|m|MPa|kN|kV|kW|℃|元|万元|人|天|日|个|层|樘|处|套|台|t|吨)/gu,"").replace(/[\s,,、;;::()()]/gu,"")}function aN(a,b){let c=["。",";",";","\n"],d=0;for(let e of c){let c=a.lastIndexOf(e,b-1);c+1>d&&(d=c+1)}let e=a.length;for(let d of c){let c=a.indexOf(d,b);c>=0&&c<e&&(e=c)}return a.slice(d,e)}async function aO(a){let b=function(a){let b=new Map,c=0;for(let d of a.split("\n")){let a=d.trim(),e=c;if(c+=d.length+1,!(/^#{1,6}\s/u.test(a)||/^\s*\|/u.test(a)))for(let a of d.matchAll(RegExp(aD.source,"gu"))){let c=(a[1]||"").trim(),d=a[2],f=/\d+$/u.exec(c);if(f&&(c=c.slice(0,f.index).trim(),d=`${f[0]}${d}`),/月\s*$/u.test(c))continue;let g=Number(d),h=a[3]||"",i=(a[4]||"").trim(),j=/[与和及][^与和及]{0,12}?\d/u.exec(i),k=j?i.slice(0,j.index):i,l=`${c}${k}`.replace(/[\s,,、;;::]/gu,""),m=l.replace(aG,"").replace(aH,""),n=m.length>=2?m:l;if(n.length<2||!/[\u4e00-\u9fa5A-Za-z]{2,}/u.test(n)||!Number.isFinite(g)||g<=0||aE.some(a=>n===a||aM(n)===a)||aF.some(a=>aM(n)===a)||aI.test(n)||aJ.test(n))continue;let o={matchIndex:e+(a.index||0),valueOffset:function(a,b,c){if(!c)return a.indexOf(b);let d=a.lastIndexOf(c);if(d>=0){let c=d-b.length;if(c>=0&&a.slice(c,d)===b)return c;let e=RegExp(`(${b.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&")})\\s*$`,"u").exec(a.slice(0,d));if(e&&void 0!==e.index)return e.index}return a.indexOf(b)}(a[0],d,a[3]||""),valueText:d},p=b.get(a[0]);if(p){p.occurrences.push(o);continue}b.set(a[0],{concept:n,value:g,unit:h,raw:a[0],occurrences:[o]})}}return[...b.values()].slice(0,60)}(a);if(b.length<3)return{groups:[]};let c=[...new Set(b.map(a=>a.concept))];if(c.length<2)return{groups:[]};let d=await (0,aB.VN)().embedDocuments(c);if(d.length!==c.length){let a=`本地语义模型嵌入数量不一致:期望 ${c.length} 条,实际 ${d.length} 条`;return console.warn(`[gen] parameter-concept-conflict degraded: ${a}`),{groups:[],degraded:{level:"warning",severity:"warning",category:"format",owner:"system",repairability:"manual_review",message:`参数概念口径冲突检测已降级跳过:${a}`,suggestion:"语义模型输出异常,本轮未执行该检测维度;可稍后重新生成复核。"}}}let e=new Map(c.map((a,b)=>[a,d[b]])),f=function(a,b){let c=new Map(a.map(a=>[a,a])),d=a=>{let b=c.get(a)||a;return b===a?a:(c.set(a,d(b)),c.get(a)||a)},e=(a,b)=>{c.set(d(a),d(b))};for(let c=0;c<a.length;c+=1)for(let d=c+1;d<a.length;d+=1)b(a[c],a[d])>=.6&&e(a[c],a[d]);return c}(c,(a,b)=>{let c=e.get(a),d=e.get(b);if(!c||!d||0===c.length||0===d.length)return 0;let f=Math.min(c.length,d.length),g=0;for(let a=0;a<f;a+=1)g+=c[a]*d[a];return g}),g=a=>{let b=a;for(;(f.get(b)||b)!==b;)b=f.get(b)||b;return b},h=new Map;for(let a of b){let b=g(a.concept),c=h.get(b)||[];c.push(a),h.set(b,c)}let i=[];for(let b of h.values()){if(b.length<2||Math.max(...b.map(a=>a.value))>4*Math.min(...b.map(a=>a.value)))continue;let c=new Map;for(let a of b){let b=c.get(a.unit)||[];b.push(a),c.set(a.unit,b)}for(let b of c.values()){if(b.length<2)continue;let c=new Map;for(let a of b){let b=aL.find(b=>a.raw.includes(b))||"",d=c.get(b)||[];d.push(a),c.set(b,d)}for(let d of[...c.keys()].filter(a=>""!==a).length>=2&&!c.has("")?[...c.values()]:[b]){if(d.length<2)continue;let b=d.map(a=>aK.find(b=>a.raw.includes(b))||"");if(b.length>=2&&b.every(a=>""!==a)&&new Set(b).size===b.length)continue;let c=d.map(a=>/^([\u4e00-\u9fa5]{2,})([一二三四五六七八九十]|\d+)$/u.exec(a.concept)).filter(a=>null!==a);if(c.length===d.length&&c.length>=2&&1===new Set(c.map(a=>a[1])).size&&new Set(c.map(a=>a[2])).size===c.length)continue;let e=d.map(a=>{let b=a.raw.indexOf("按每");return b>=0?a.raw.slice(0,b):null});if(e.every(a=>null!==a)&&!e.some((a,b)=>!!a&&e.some((c,d)=>b!==d&&!!c&&(a===c||a.includes(c)||c.includes(a))))||d.every(b=>b.occurrences.some(c=>/违约金|解除合同|提高至|自第|逾期超过/u.test(a.slice(Math.max(0,c.matchIndex-30),c.matchIndex+b.raw.length+40)))))continue;let f=[...new Set(d.map(a=>a.value))];if(f.length<2)continue;let g=Math.max(...f);if(g-Math.min(...f)<=.02*g)continue;let h=f.reduce((a,b)=>a+b,0);if(![...new Set(d.flatMap(b=>b.occurrences.map(b=>aN(a,b.matchIndex))))].some(b=>/(?:总量|合计|总计|共计)/u.test(b)&&/(?:其中|分别为|分为)/u.test(b)&&d.every(c=>c.occurrences.some(c=>aN(a,c.matchIndex)===b))&&[...b.matchAll(/\d+(?:\.\d+)?/gu)].some(a=>Math.abs(Number(a[0])-h)<=Math.max(.5,.01*h)))&&!(d.filter(b=>b.occurrences.some(c=>{let d=a.slice(c.matchIndex,c.matchIndex+b.raw.length+12),e=a.slice(Math.max(0,c.matchIndex-12),c.matchIndex);return/[、/](?:与)?[A-Za-z]?\d/u.test(d)||/[、/](?:与)?[A-Za-z]?\d/u.test(e)})).length>=2)&&!(d.length>=2&&d.every((a,b)=>d.every((c,d)=>{if(b>=d||a.value===c.value)return!0;let e=a.concept.length<=c.concept.length?a.concept:c.concept,f=a.concept.length<=c.concept.length?c.concept:a.concept;if(e.length>=4&&e.length<f.length&&f.endsWith(e)&&/^[板梁柱墙底顶]/u.test(e))return!0;let g=(0,U.Qk)(a.concept,c.concept);if(g.length<2)return!1;let h=a.concept.slice(g.start,g.end),i=a.concept.replace(h,""),j=c.concept.replace(h,"");return i.length>0&&j.length>0&&!i.includes(j)&&!j.includes(i)})))&&(i.push({concept:d[0].concept,values:d}),i.length>=4))break}if(i.length>=4)break}if(i.length>=4)break}return{groups:i}}function aP(a){return a.replace(/㎡/gu,"m2").replace(/m²/giu,"m2").replace(/m³/giu,"m3").replace(/\s+/gu,"").toLowerCase()}function aQ(a){return a.replace(/[((][^))]*[))]/gu,"").replace(/[\s,,、;;::]/gu,"")}function aR(a,b){let c=b.entries??b.billFactLock?.entries??[];if(0===c.length)return[];let d=Math.max(.01,.001*a.value),e=aP(function(a){let b=a.occurrences[0];if(!b)return a.unit;let c=a.raw.indexOf(b.valueText);return c<0?a.unit:a.raw.slice(c+b.valueText.length)||a.unit}(a)),f=a.occurrences.map(a=>b.markdown.slice(Math.max(0,a.matchIndex-48),a.matchIndex+a.valueOffset+a.valueText.length+48)).join("\n"),g=[];for(let b of c){if(!Number.isFinite(b.quantity)||b.quantity<=0||Math.abs(b.quantity-a.value)>d)continue;let c=aP(b.unit);if(e&&c&&e!==c)continue;let h=function(a,b){let c=aQ(a),d=aQ(b);if(c.length<2||d.length<2)return!1;if(c===d)return!0;let e=c.length<=d.length?c:d,f=c.length<=d.length?d:c;return e.length>=3&&f.includes(e)}(b.name,a.concept),i=b.villageGroup.trim().length>=2&&f.includes(b.villageGroup.trim());if((h||i)&&(g.push({entry:b,nameRelated:h}),g.length>=8))break}return g}function aS(a,b){if(a.values.length<2)return{verdict:"no-anchor"};let c=b.billFactLock?.entries??[],d=function(a){if(!a)return[];let b=[],c=1,d=(a,d,e,f,g)=>{b.push({seq:c,name:a,description:"",quantity:d,unit:e,section:"",subsection:g,villageGroup:g,sourceFile:f,specQuantityPairs:[]}),c+=1};for(let[b,c]of Object.entries(a)){let a=c.unit||"",e=c.sourceFile||"";for(let f of(Number.isFinite(c.value)&&c.value>0&&d(b,c.value,a,e,""),c.groups||[]))Number.isFinite(f.value)&&!(f.value<=0)&&d(`${b}(${f.group})`,f.value,a,e,f.group)}return b}(b.blueprintQuantities);if(0===c.length&&0===d.length)return{verdict:"no-anchor"};let e=a.values.map(a=>({value:a,matches:aR(a,{markdown:b.markdown,entries:[...c,...d]}),billMatches:aR(a,{markdown:b.markdown,entries:c})}));if(e.every(a=>a.matches.length>0)&&e.every((a,b)=>e.every((c,d)=>b===d||!a.matches.some(a=>c.matches.some(b=>b.entry.seq===a.entry.seq)))))return{verdict:"distinct-lock-entries",entries:e.map(a=>`「${a.matches[0].entry.name}」(${a.value.value}${a.value.unit})`).join("、")};let f=e.filter(a=>a.billMatches.length>0),g=e.filter(a=>0===a.matches.length);if(1===f.length&&g.length>0&&f.length+g.length===e.length){let a=f[0].billMatches.find(a=>a.nameRelated);if(a)return{verdict:"single-lock-entry",lockValue:a.entry.quantity,lockUnit:a.entry.unit,entryName:a.entry.name,nonLock:g.map(a=>a.value)}}return{verdict:"no-anchor"}}async function aT(a,b){let c=await aO(a);if(c.degraded)return[c.degraded];if(0===c.groups.length)return[];let d=[],e=[];for(let f of c.groups){let c=aS(f,{markdown:a,billFactLock:b?.billFactLock,blueprintQuantities:b?.blueprintQuantities});"distinct-lock-entries"===c.verdict?e.push({group:f,entries:c.entries}):d.push(f)}let f=[];if(d.length>0){let a=d.map(a=>`“${a.concept}”出现多个口径:${[...new Set(a.values.map(a=>a.raw))].slice(0,3).join("、")}`);f.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`同一参数概念出现多口径数值冲突:${a.join(";")}`,suggestion:"以绑定资料(图纸/清单/规范)裁决口径为准统一数值表述:每个参数概念全文只保留一个口径数值,删除矛盾表述。"})}return e.length>0&&f.push({level:"info",severity:"suggestion",category:"fact_consistency",owner:"system",repairability:"not_repair_needed",message:`参数概念多口径已裁决为不同清单条目口径(不构成冲突):${e.map(({group:a,entries:b})=>`“${a.concept}”对应${b}`).join(";")}`,suggestion:"各数值分别对应不同的工程量清单条目,正文已带条目名区分,无需处理。"}),f}let aU=["电梯","幕墙","智能化","消防","暖通","给排水","电气","燃气","人防","室外","园林","绿化","景观","钢结构","防水","保温","门窗","通风","空调","防雷","接地","动力","照明","拆除","加固","装修","装饰"],aV=(a,b)=>{let c=b.exec(a);if(!c)return;let d=Number(c[1]);return Number.isFinite(d)&&d>0?d:void 0},aW=[{name:"基坑支护与降水工程",aliases:["基坑支护","基坑工程","降排水","降水井"],applicable:a=>{let b=aV(a,/(?:基坑)?开挖深度[约为达至]{0,3}(\d+(?:\.\d+)?)\s*m/u);return void 0!==b&&b>=3}},{name:"高大模板支撑工程",aliases:["高大模板","高支模","模板支撑体系","模板支撑"],applicable:a=>{let b=aV(a,/(?:模板)?支撑(?:体系)?(?:搭设)?高度[约为达至]{0,3}(\d+(?:\.\d+)?)\s*m/u),c=aV(a,/(?:施工(?:总)?荷载|集中线荷载)[约为达至]{0,3}(\d+(?:\.\d+)?)\s*kN/u);return void 0!==b&&b>=8||void 0!==c&&c>=10||/高支模|高大模板/u.test(a)}},{name:"脚手架工程",aliases:["脚手架","落地式钢管脚手架","悬挑式脚手架","悬挑脚手架"],applicable:a=>{let b=aV(a,/(?:落地式|悬挑式)?(?:钢管)?脚手架(?:搭设)?高度[约为达至]{0,3}(\d+(?:\.\d+)?)\s*m/u);return void 0!==b&&b>=15||/悬挑(?:式)?脚手架/u.test(a)}},{name:"起重吊装及安装拆卸工程",aliases:["起重吊装","塔吊","塔式起重机","汽车吊","履带吊","起重机械安拆","物料提升机","提升机","起重机械","吊装"],applicable:a=>!!/塔吊|塔式起重机|汽车吊|履带吊|吊车|起重机械|起重设备|起重机|卷扬机|物料提升机|提升机|电动葫芦/u.test(a)||/起重伤害|非常规起重|起吊重量|吊装重量|吊装荷载/u.test(a)&&!/(?:不涉及|不存在|不属于|未涉及)[^。;\u000A]{0,16}危大|(?:不涉及|不存在|不属于|未涉及)[^。;\u000A]{0,16}危险性较大|(?:参数|高度|深度)[^。;\u000A]{0,12}未达[^。;\u000A]{0,60}危大/u.test(a)},{name:"吊篮作业工程",aliases:["吊篮","高处作业吊篮","电动吊篮"],applicable:a=>/吊篮/u.test(a)},{name:"拆除工程",aliases:["拆除工程","爆破拆除","机械拆除"],applicable:a=>/拆除工程(?![量])|爆破拆除/u.test(a)}];function aX(a){let b=a.split(/\r?\n/u),c=[];return b.forEach((a,d)=>{/危大/u.test(a)&&c.push(...b.slice(Math.max(0,d-6),Math.min(b.length,d+7)))}),c.join("\n")}function aY(a){let b=aW.filter(b=>b.applicable(a)),c=aX(a);return{applicableNames:b.map(a=>a.name),zonePresent:""!==c,missingNames:""===c?b.map(a=>a.name):b.filter(a=>!a.aliases.some(a=>c.includes(a))).map(a=>a.name)}}function aZ(a,b){let c=aX(a);return b.filter(a=>{let b=aW.find(b=>b.name===a);return!!b&&!b.aliases.some(a=>c.includes(a))})}let a$=/[二三四五六七八九十\d]{1,4}\s*个?\s*阶段/u,a_={一:1,二:2,三:3,四:4,五:5,六:6,七:7,八:8,九:9};function a0(a){return/(\d+|[一二三四五六七八九十]+)\s*个?\s*阶段/u.exec(a)?.[1]??null}function a1(a){let b=a.map(a0).filter(a=>null!==a).map(a=>/^\d+$/u.test(a)?parseInt(a,10):/^[一二三四五六七八九十]+$/u.test(a)?"十"===a?10:1===a.length?a_[a]??null:a.startsWith("十")?10+(a_[a[1]]??0):a.endsWith("十")?(a_[a[0]]??0)*10:(a_[a[0]]??0)*10+(a_[a[2]]??0):null).filter(a=>null!==a);return 0===b.length?null:1===new Set(b).size?b[0]:null}async function a2(a){let b=[...new Set(a.split(/\n+/u).filter(a=>a.trim()&&!/^\s*(#{1,6}\s+|\|)/u.test(a)).flatMap(a=>a.split(/[。;;]/u)).map(a=>a.replace(/\s+/gu,"").trim()).filter(a=>{var b;if(a.length<8||a.length>60)return!1;let c=a$.exec(a);return null!==c&&(b=c.index,!/[、,,]/u.test(a.slice(Math.max(0,b-12),b)))}))];if(b.length<2)return[];let c=await (0,aB.Mv)(b,b),d=b.map((a,b)=>b),e=a=>{let b=a;for(;d[b]!==b;)b=d[b];let c=a;for(;d[c]!==b;){let a=d[c];d[c]=b,c=a}return b},f=(a,b)=>{d[e(b)]=e(a)};for(let a=0;a<b.length;a+=1)for(let d=a+1;d<b.length;d+=1)c(b[a],b[d])>=.62&&f(a,d);let g=new Map;for(let a=0;a<b.length;a+=1){let c=e(a),d=g.get(c)||[];d.push(b[a]),g.set(c,d)}if(g.size<2||new Set([...g.values()].map(a1).filter(a=>null!==a)).size<2)return[];let h=[...g.values()].map(a=>a.sort((a,b)=>b.length-a.length)[0]).slice(0,4);return[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`施工阶段划分口径不统一:正文出现 ${g.size} 种互异阶段划分口径(${h.map(a=>`“${a.slice(0,16)}”`).join("、")})`,suggestion:"全文统一阶段划分口径:以总进度计划/施工部署章节的划分为唯一口径,其余章节划分句逐字对齐或删除。"}]}var a3=c(41991);let a4=/应急预案|应急措施|应急响应|应急救援|突发事件|应急管理|应急物资|应急演练|应急组织|应急保障/u,a5=/应急|突发|救援|预案|抢险|疏散/u,a6=["应急预案的编制与响应流程","突发事件应急处置措施","应急救援组织体系与保障"],a7=["应急照明系统安装调试","应急电源配置与切换方案"],a8={organization:"应急管理领导小组、应急救援队伍的组织机构与职责分工",procedure:"应急处置程序、应急响应流程与应急演练安排",resource:"应急物资、应急器材设备的储备与保障措施"},a9=/应急物资|急救箱|灭火器|沙袋|发电机|水泵|对讲机|应急照明|应急灯|防护服|救援绳|救生衣|铁锹|编织袋|抽水泵|警示带|应急器材/u,ba=/配备|储备|保障|配置|数量|不少于|共计|套|具|个|台|把|只/u,bb=["应急物资储备清单与配备数量","应急救援器材的配置与保障"],bc=["应急照明灯具数量与回路设计","应急电源的电气系统设计"];async function bd(a){return(0,a3.A)({prototypes:[...a6],negativePrototypes:[...a7],embedDocuments:a})}async function be(a){return(0,a3.A)({prototypes:[...bb],negativePrototypes:[...bc],embedDocuments:a})}async function bf(a,b){let c=a.split(/\r?\n/u),d=[],f=c.map(a=>{let b=/^(#{2,4})\s+(.+)$/u.exec(a.trim());if(b)return{level:b[1].length,title:b[2].replace(/^\d+(?:\.\d+)*\s+/u,"").trim()}}).filter(a=>void 0!==a).filter(a=>!a4.test(a.title)&&a5.test(a.title)),g=await bd(b),h=f.length>0?await g(f.map(a=>a.title)):[],i=new Set(f.filter((a,b)=>h[b]).map(a=>a.title)),j=a=>a4.test(a)||i.has(a),k=!1,l=[],m=[],n="",o=0;for(let a of c){let b=/^(#{2,4})\s+(.+)$/u.exec(a.trim());if(b){let a=b[1].length,c=b[2].replace(/^\d+(?:\.\d+)*\s+/u,"").trim();if(j(c)){k=!0,l.push(c);continue}a<=3&&k&&(k=!1);continue}if(k&&a.trim()&&!/^\s*\|/u.test(a)){m.push(a);let b=a.replace(/\s+/gu,"");n+=b,o+=b.length}}if(0===l.length)return d;let p=[];o<300&&p.push(`字数仅 ${o} 字(要求 ≥300 字)`);let q=n.match(/.{1,200}/gu)||[],r=Object.values(a8),s=await (0,aB.Mv)(q,r),t=a=>q.some(b=>s(b,a)>=aB.Eh);t(a8.organization)||p.push("应急组织体系"),t(a8.procedure)||p.push("应急处置程序/演练");let u=await be(b),v=m.join("。").split(/[。;;]/u).map(a=>a.trim()).filter(a=>a9.test(a)&&ba.test(a)),w=v.length>0?await u(v):[];return t(a8.resource)||w.some(Boolean)||p.push("应急物资保障"),p.length>0&&d.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:`应急预案小节深度不足:${l.join("、")}(缺少:${p.join("、")})`,suggestion:"补写应急组织体系(领导小组/抢险队与职责)、应急处置程序与演练安排、应急物资清单与保障措施,达到可落地深度。",sectionTitle:l[0],provenance:{detectorId:"emergency-section-depth",fingerprint:(0,e.c6)(a)}}),d}var bg=c(70208),bh=c(91943),bi=c(54185),bj=c(75251);let bk=/(?:GB|JGJ|CJJ|JTG|SL|DB|DL|YS|HG|DBJ)[\s/T]*\d{1,2}[\s/-]?(?:T[\s/]*)?\d{2,4}(?:[\s/-]\d{1,4})?/gu,bl=/《[^《》\r\n]{2,60}?》/gu,bm=/(?:规范|标准|规程)$/u;function bn(a){return[...a.matchAll(bk)].map(a=>a[0])}function bo(a){return[...a.matchAll(bl)].map(a=>a[0].replace(/《|》/gu,""))}function bp(a){return a.replace(/[\s\u200b-\u200d\ufeff]/gu,"").replace(/[—–-]/gu,"-").toUpperCase()}function bq(a){return a.replace(/《|》/gu,"").replace(/[((][^))]{0,40}[))]/gu,"").replace(/[\s\u200b-\u200d\ufeff]/gu,"")}function br(a){return bm.test(bq(a))}function bs(a,b){let c=bp(a),d=bp(b);if(!c||!d)return!1;if(c===d)return!0;let e=c.length<=d.length?c:d,f=c.length<=d.length?d:c;return RegExp(`^${e.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&")}-\\d{4}$`,"u").test(f)}function bt(a,b){let c=bq(a),d=bq(b);return!!c&&!!d&&(c===d||!(c.length<4)&&!(d.length<4)&&(c.includes(d)||d.includes(c)))}let bu=/^[\s()()【】[\]、,,;;::·.及和与]*$/u;function bv(a){let b=[];for(let c of a.split(/\r?\n/u)){let a=[];for(let b of c.matchAll(bk)){let c=b.index??0;a.push({type:"code",value:b[0],index:c,end:c+b[0].length})}for(let b of c.matchAll(bl)){let c=b.index??0;a.push({type:"name",value:b[0].replace(/《|》/gu,""),index:c,end:c+b[0].length})}if(0===a.length)continue;a.sort((a,b)=>a.index-b.index);let d=new Map,e=new Set;a.forEach((b,f)=>{if("code"!==b.type)return;let g=d=>{for(let g of"left"===d?a.slice(0,f).map((a,b)=>f-1-b):a.slice(f+1).map((a,b)=>f+1+b)){let f=a[g];if("name"!==f.type||e.has(g))continue;let h="left"===d?c.slice(f.end,b.index):c.slice(b.end,f.index);if(!bu.test(h))break;return g}return -1},h=g("left"),i=h>=0?h:g("right");i>=0&&(d.set(f,i),e.add(i))});let f=new Set;a.forEach((c,g)=>{if(!f.has(g))if("code"===c.type){let e=d.get(g);void 0!==e?(b.push({code:c.value,name:a[e].value}),f.add(e)):b.push({code:c.value}),f.add(g)}else e.has(g)||(b.push({name:c.value}),f.add(g))})}return b}function bw(a,b){let c=a.indexOf(b);if(c<0)return"";let d=Math.max(0,c-24),e=Math.min(a.length,c+b.length+24);return a.slice(d,e).replace(/\s+/gu," ").trim()}function bx(a){let b=[];for(let c of a){let a=b.findIndex(a=>!!(a.code&&c.code&&bs(a.code,c.code)||a.name&&c.name&&bt(a.name,c.name)));if(a<0){b.push(c);continue}"pair"===c.kind&&"pair"!==b[a].kind&&(b[a]=c)}return b}function by(a){let b=(0,R.UO)(a),c=(0,R.H4)(a),d=a.split(/\r?\n/u),e=new Set;for(let a of b)for(let b=a.start;b<a.end;b+=1)e.add(b);let f=d.filter((a,b)=>!e.has(b)).join("\n"),g=bv(c),h=bv(f),i=g.filter(a=>a.code).map(a=>a.code),j=g.filter(a=>a.name).map(a=>a.name),k=h.filter(a=>a.code).map(a=>a.code),l=h.filter(a=>a.name).map(a=>a.name),m=a=>k.some(b=>bs(a,b)),n=a=>l.some(b=>bt(a,b)),o=a=>i.some(b=>bs(b,a)),p=a=>j.some(b=>bt(b,a)),q=[];for(let a of g){let b=!a.code||m(a.code)||!!a.name&&n(a.name),c=!a.name||n(a.name)||!!a.code&&m(a.code);a.code&&!b&&a.name&&br(a.name)?q.push({kind:"pair",value:a.name,code:a.code,name:a.name,counterpart:a.code}):a.code&&!b?q.push({kind:"code",value:a.code,code:a.code,counterpart:a.name}):a.name&&br(a.name)&&!c&&q.push({kind:"name",value:a.name,name:a.name,counterpart:a.code})}let r=[];for(let a of h){let b=!a.code||o(a.code)||!!a.name&&p(a.name),c=!a.name||p(a.name)||!!a.code&&o(a.code);a.code&&!b&&a.name&&br(a.name)?r.push({kind:"pair",value:a.name,code:a.code,name:a.name,context:bw(f,a.code)}):a.code&&!b?r.push({kind:"code",value:a.code,code:a.code,context:bw(f,a.code)}):a.name&&br(a.name)&&!c&&r.push({kind:"name",value:a.name,name:a.name,context:bw(f,`《${a.name}》`)})}return{declaredNotUsed:bx(q),usedNotDeclared:bx(r),stats:{declaredCodes:i.length,declaredNames:j.length,usedCodes:k.length,usedNames:l.length}}}function bz(a){return"pair"===a.kind?`《${a.name}》(${a.code})`:"code"===a.kind?`标准编号「${a.value}」`:`《${a.value}》`}async function bA(a){let b=await (0,R.Z2)(a.markdown,a.factsModel,{scopeClassifier:a.factTokenScopeClassifier}),c=(0,aC.Uk)(a.tenderRequirements).map(({item:a})=>(0,aC.E6)(a)),d=a.markdown.split(/\n/u).filter(a=>/^#{2,4}\s/u.test(a.trim())).map(a=>(0,aC.NT)(a)).filter(Boolean).slice(0,80),f=(0,o.s3)(a.markdown,o.ev),g=await (0,aB.Mv)(c,[...d,...f]),i=await (0,aB.Mv)(a.evaluationCriteriaItems||[],d),j=new Map((await Promise.all(a.chapters.map(async b=>[b.title,await a.professionalDepthClassifier.analyze(b.content)]))).filter(a=>!!a[1]));return[...(0,l.yT)("toc-consistency",()=>a.promptDocumentRules?.forbidToc?[]:[...(0,R.gN)(a.markdown),...(0,R.f8)(a.markdown)]),...(0,l.yT)("section-numbering",()=>(0,R.Jn)(a.markdown)),...(0,l.yT)("section-count-overflow",()=>(0,R.VW)(a.chapters)),...(0,l.yT)("heading-duplicate",()=>(0,R.kw)(a.markdown)),...(0,l.yT)("structure-integrity",()=>(0,bh.dC)(a.markdown)),...(0,l.yT)("templated-label",()=>(0,bi.D9)(a.markdown)),...(0,l.yT)("title-integrity",()=>(0,bi.uw)(a.markdown)),...(0,l.yT)("evaluation-criteria-coverage",()=>(0,R.wl)(a.markdown,a.evaluationCriteriaItems||[],{semanticSimilarity:i})),...await (0,l.ll)("requirements-coverage",()=>(0,aC.tH)({markdown:a.markdown,entries:(0,aC.Uk)(a.tenderRequirements).map(({item:a})=>a),bodyTexts:f,semanticSimilarity:g})),...(0,l.yT)("fabricated-start-date",()=>(0,o.cf)(a.markdown,a.factsModel)),...(0,l.yT)("field-value-mismatch",()=>(0,o.a8)(a.markdown,a.factsModel)),...(0,l.yT)("area-arithmetic",()=>(0,o.u2)(a.markdown)),...(0,l.yT)("resource-consistency",()=>(0,o.rA)(a.markdown,{laborPeakAuthority:(0,T.yB)(a.blueprintData)})),...(0,l.yT)("node-schedule-consistency",()=>(0,o.Et)(a.markdown)),...(0,l.yT)("cross-section-numeric-conflict",()=>(0,o.H)(a.markdown)),...(0,l.yT)("fact-reconciliation",()=>(0,bj.az)({markdown:a.markdown,billFactLock:a.billFactLock,blueprintData:a.blueprintData,factsModel:a.factsModel})),...(0,l.yT)("greening-maintenance-mismatch",()=>(0,o.x5)(a.markdown,a.factsModel)),...(0,l.yT)("street-light-count-mismatch",()=>(0,o.Tz)(a.markdown,a.factsModel)),...(0,l.yT)("spec-location-mismatch",()=>(0,o.$$)(a.markdown,a.factsModel.specAuthorityMap)),...await (0,l.ll)("blueprint-citation-consistency",async()=>a.blueprintData?(await (0,p.dr)(a.markdown,a.blueprintData)).filter(a=>"error"===a.level):[]),...await (0,l.ll)("cross-project-value-copy",()=>(0,o.iy)(a.markdown,(0,T.L$)(a.blueprintData))),...(0,l.yT)("phase-labor-mixing",()=>(0,o.cv)(a.markdown,(0,T.i2)(a.blueprintData))),...(0,l.yT)("equipment-batch-conflict",()=>(0,o.KE)(a.markdown,(0,T.Be)(a.blueprintData))),...(0,l.yT)("preliminary-action-timing",()=>(0,o.fg)(a.markdown,a.blueprintData?.contract.totalDays)),...(0,l.yT)("foundation-form-residue",()=>(0,o.ex)(a.markdown)),...(0,l.yT)("ambiguous-either-or",()=>(0,o.Fr)(a.markdown)),...(0,l.yT)("excavation-depth-lock",()=>(0,o.bq)(a.markdown)),...(0,l.yT)("excavation-hazard-classification",()=>(0,o.LA)(a.markdown,a.factsModel)),...(0,l.yT)("support-form-fact-consistency",()=>(0,o.ek)(a.markdown,a.factsModel)),...(0,l.yT)("equipment-entry-timing",()=>(0,o.fQ)(a.markdown,a.factsModel)),...(0,l.yT)("fabricated-award",()=>(0,o.hu)(a.markdown,a.factsModel,a.tenderRequirements)),...(0,l.yT)("bidder-qualification-section",()=>(0,o.Rv)(a.markdown)),...(0,l.yT)("cross-chapter-duplicate-section",()=>(function(a,b){let c=a=>a.replace(/^\d+(?:\.\d+)*[、..\s]*/u,"").replace(/[\s,,、]/gu,""),d=new Map;a.forEach((a,b)=>{let c=(0,bg.GQ)(a.title).replace(/[\s,,、]/gu,"");c&&!d.has(c)&&d.set(c,b)});let e=new Map,f=new Map;a.forEach((a,b)=>{let d=new Set;for(let g of(a.content||"").split(/\r?\n/u)){let a=/^###\s+(.+?)\s*$/u.exec(g.trim());if(!a)continue;let h=c(a[1]);if(h.length<8||d.has(h))continue;d.add(h),f.has(h)||f.set(h,a[1].replace(/^\d+(?:\.\d+)*[、..\s]*/u,"").trim());let i=e.get(h)||[];i.push(b),e.set(h,i)}});let g=new Map;b.forEach(a=>{let b=d.get((0,bg.GQ)(a.title).replace(/[\s,,、]/gu,""));if(void 0!==b)for(let d of a.sections||[]){let a=c(d);if(a.length<8)continue;let e=g.get(a)||[];e.includes(b)||e.push(b),g.set(a,e)}});let h=[];for(let[b,c]of e){if(c.length<2)continue;let d=g.get(b)||[];if(d.length>=2)continue;let e=1===d.length?d[0]:c[0],i=f.get(b)||b;for(let b of c){if(b===e)continue;let c=a[b];h.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",chapterId:c.id,sectionTitle:i,message:`跨章同名小节:“${i}”已在「${a[e].title}」落位,本章(「${c.title}」)同名小节属跨章串章重复,须改写归并`,suggestion:"同一主题小节全文只保留一处(归属章);非归属章的同名小节:内容与本章主题相关则改写标题为可区分的具体主题并归并内容,与本章无关则整节删除(含标题行);修复后全文不得再出现跨章同名小节。"})}}return h})(a.chapters,a.effectiveChapters||a.template.chapters||[])),...(0,l.yT)("basic-info-schedule-field",()=>(0,o.cT)(a.markdown)),...(0,l.yT)("duplicate-table",()=>(0,o.ub)(a.markdown)),...(0,l.yT)("duplicate-paragraph",()=>(0,o.cl)(a.markdown)),...(0,l.yT)("paragraph-tail-repeat",()=>(0,o.AD)(a.markdown)),...(0,l.yT)("collision-numbered-heading",()=>(0,o.xR)(a.markdown)),...(0,l.yT)("inverted-date-range",()=>(0,o.jP)(a.markdown)),...(0,l.yT)("resource-triad-section-hierarchy",()=>(0,o.zP)(a.markdown)),...await (0,l.yT)("support-system-conflict",()=>(0,o.r8)(a.markdown,(0,o.P3)(a.factsModel))),...(0,l.yT)("dangerous-list-consistency",()=>(0,o.vH)(a.markdown)),...(0,l.yT)("hazard-exclusion-contradiction",()=>(0,o.m6)(a.markdown)),...await (0,l.yT)("six-hundred-percent-coverage",()=>(0,o.sn)(a.markdown)),...await (0,l.yT)("self-undermining-candidate",()=>(0,o.YN)(a.markdown)),...(0,l.yT)("paragraph-opening-repeat",()=>(0,o.y2)(a.markdown)),...(0,l.yT)("flow-form-repeat",()=>(0,bi.Q9)(a.markdown)),...(0,l.yT)("skeleton-fingerprint",()=>(0,bi.o0)(a.markdown)),...(0,l.yT)("sentence-pattern-repeat",()=>(0,bi.TN)(a.markdown)),...(0,l.yT)("repeated-word",()=>(0,o.Xc)(a.markdown)),...await (0,l.yT)("commercial-data-in-body",()=>(0,o.mC)(a.markdown)),...(0,l.yT)("overview-recap",()=>(0,o.l4)(a.markdown)),...(0,l.yT)("closure-phrase-density-cap",()=>(0,o.dF)(a.markdown)),...await (0,l.ll)("parameter-concept-conflict",()=>aT(a.markdown,{billFactLock:a.billFactLock,blueprintQuantities:a.blueprintData?.quantities})),...await (0,l.ll)("internal-terminology-anchor",()=>(0,S.WT)(a.markdown)),...(0,l.yT)("construction-system-coverage",()=>(function(a){let b=[...new Set(a.flatMap(a=>aU.filter(b=>a.title.includes(b))))];if(0===b.length)return[];let c=a.map(a=>a.content||"").join("\n"),d=b.filter(a=>!c.includes(a));if(0===d.length)return[];let e=a.find(a=>d.some(b=>a.title.includes(b)));return[{level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:`章节大纲涉及的专业工程系统在正文零覆盖:${d.join("、")}`,suggestion:"对应章节必须补写该专业工程的施工方案正文(施工概况/施工流程/施工方法,含可核实的工艺参数),不得整章零覆盖。",chapterId:e?.id}]})(a.chapters)),...(0,l.yT)("dangerous-applicability",()=>(function(a){let b=aY(a);return 0===b.applicableNames.length?[]:b.zonePresent?0===b.missingNames.length?[]:[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`危大工程辨识清单遗漏适用项:${b.missingNames.join("、")}(正文已出现适用前提但辨识清单未列入)`,suggestion:"按建办质〔2018〕31号逐项辨识:将遗漏项补入危大工程辨识清单并标注分级,超过一定规模的专项施工方案需专家论证。"}]:[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`正文出现危大工程适用前提(${b.applicableNames.join("、")})但全文未编制危大工程辨识清单`,suggestion:"必须编制危大工程辨识清单:按建办质〔2018〕31号逐项辨识并标注分级,超过一定规模的专项施工方案需专家论证。"}]})(a.markdown)),...(0,l.yT)("innovation-tech-coverage",()=>(0,R.Ef)(a.markdown,a.effectiveChapters||a.template.chapters||[])),...(0,l.yT)("instruction-like-heading",()=>(0,R.K1)(a.markdown)),...(0,l.yT)("formal-heading-hierarchy",()=>(0,R.Fv)(a.markdown)),...(0,l.yT)("formal-content-integrity",()=>(0,R.k0)(a.markdown)),...(0,l.yT)("punctuation-artifact",()=>(0,R.vZ)(a.markdown)),...(0,l.yT)("table-quality",()=>(0,R.NS)(a.markdown)),...(0,l.yT)("table-spam",()=>(0,R.SN)(a.markdown)),...(0,l.yT)("basis-regulations-coverage",()=>(0,R.AN)(a.markdown,a.blueprintData)),...(0,l.yT)("basis-regulations-cross",()=>(function(a){let b=by(a);if(b.stats.declaredCodes+b.stats.declaredNames===0)return[];let c=[],d=b.usedNotDeclared,e=b.declaredNotUsed;for(let a of d.slice(0,12))c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`编制依据对账缺口:正文引用${bz(a)}未列入编制依据小节${a.context?`(证据:…${a.context}…)`:""}`,suggestion:"请将该标准名称及编号按编号族补入编制依据小节同类目(与正文引用形态一致),不得改动正文既有引用。"});if(d.length>12){let a=d.slice(12);c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`编制依据对账缺口:正文另有 ${a.length} 处引用标准未列入编制依据小节(${a.slice(0,6).map(bz).join("、")} 等)`,suggestion:"请统一核对编制依据小节与正文引用清单,补齐全部未声明标准条目。"})}for(let a of e.slice(0,12))c.push({level:"warning",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`编制依据对账缺口:编制依据小节的${bz(a)}在正文无引用`,suggestion:"请在对应施工章节的工序/验收要求中落位该标准(或从未使用的编制依据中移除),保持编制依据与正文一一对应。"});if(e.length>12){let a=e.slice(12);c.push({level:"warning",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`编制依据对账缺口:编制依据小节另有 ${a.length} 条声明在正文无引用(${a.slice(0,6).map(bz).join("、")} 等)`,suggestion:"请统一核对编制依据与正文引用清单,未使用条目在正文落位或从编制依据移除。"})}return c})(a.markdown)),...(0,l.yT)("resource-breakdown-consistency",()=>(0,R.EJ)(a.markdown,a.blueprintData)),...(0,l.yT)("section-content-integrity",()=>(0,R.qK)(a.markdown,a.chapters)),...(0,l.yT)("professional-content",()=>(0,R.ji)(a.chapters,j)),...(0,l.yT)("professional-score",()=>(0,R.i0)(a.chapters,j)),...(0,l.yT)("generic-professional-content",()=>(0,R.ST)(a.chapters,j)),...(0,l.yT)("management-measure-number",()=>(0,R.xX)(a.chapters,j)),...await (0,l.yT)("closed-loop-density",()=>(0,R.Zu)(a.markdown)),...await (0,l.yT)("cross-chapter-consistency",()=>(0,R.qm)(a.markdown,a.factsModel,a.scopeConflicts,j)),...await (0,l.yT)("process-spec-conflict",()=>(0,R.hr)(a.markdown,a.factsModel)),...(0,l.yT)("evidence-usage-coverage",()=>aj(a.markdown,a.factsModel)),...await (0,l.yT)("paragraph-generic",()=>ak(a.markdown,a.professionalDepthClassifier)),...await (0,l.yT)("construction-org-generic-language",()=>(0,ah.Fw)(a.chapters)),...(0,l.yT)("construction-org-control-loop",()=>(0,ah.Hl)(a.chapters)),...(0,l.yT)("construction-org-professional-chain",()=>(0,ah.iX)({markdown:a.markdown,factsModel:a.factsModel,chapters:a.chapters})),...(0,l.yT)("construction-org-consistency",()=>(function(a,b){let c=[];if(!/施工组织设计|施工组织|施组|质量|安全|文明施工/u.test(a))return c;for(let d of av){if("equipment-counts"===d.kind){c.push(...function(a,b,c){let d=(0,au.AK)(a);if(0===d.length)return[];let{names:e,counts:f}=function(a,b){let c=[],d=new Map,e=a=>{c.includes(a)||c.push(a)};for(let c of b){let b=a[c];if(Array.isArray(b))for(let a of b){if(!a||"object"!=typeof a||!("value"in a)||"string"!=typeof a.value)continue;for(let b of(0,au.AK)(a.value))e(b.name),d.has(b.name)||d.set(b.name,b.count);let b=aw(a.value);if(b.length>12||/\d/u.test(b))continue;let c=(0,au.Rh)(b);c&&e(c)}}return{names:c,counts:d}}(b,c.factGroups);if(0===e.length)return[];let g=[],h=new Map,i=[],j=new Set;for(let a of d){let b=e.find(b=>aA(a.name,[b]));if(b){let c=f.get(b);if(void 0===c||c===a.count)continue;let d=`${a.name}:${[a.count,c].sort((a,b)=>a-b).join("-")}`;if(j.has(d))continue;j.add(d),i.push(`${a.name}:正文 ${a.count} 台、资料 ${c} 台`);continue}if(ax.test(a.name))continue;let c=h.get(a.name);(!c||a.raw.length<c.length)&&h.set(a.name,a.raw)}if(h.size>0){let a=[...h].map(([a,b])=>b.length-a.length<=1?b:a).slice(0,5);g.push({level:"warning",message:`施组数据一致性风险:机械数量型号 可能与项目图谱/事实不一致(${a.join("、")})`,suggestion:`请核对机械数量型号在${c.locations}中的表述,统一以招标文件、项目图谱和可信事实为准。`})}return i.length>0&&g.push({level:"warning",message:`施组数据一致性风险:机械数量型号 正文台数与项目图谱/事实不一致(${i.slice(0,5).join(";")})`,suggestion:`同一机械台数全文档只允许一套口径:请以资料事实/项目图谱中的机械配置为准统一${c.locations}中的台数表述(正文与资料并存时以资料为准)。`}),g}(a,b,d));continue}let e=az(b,d.factGroups),f=(function(a,b){let c=[];for(let d of b){let b=new RegExp(d.source,d.flags.includes("g")?d.flags:`${d.flags}g`);for(let d of a.matchAll(b)){let a=aw(d[1]||d[0]||"");!ay.test(a)&&a.length>=2&&a.length<=80&&c.push(a)}}return[...new Set(c)]})(a,d.patterns??[]).filter(a=>!ax.test(a)&&!aA(a,e)).slice(0,5);f.length>0&&c.push({level:"warning",message:`施组数据一致性风险:${d.label} 可能与项目图谱/事实不一致(${f.join("、")})`,suggestion:`请核对${d.label}在${d.locations}中的表述,统一以招标文件、项目图谱和可信事实为准。`})}return c})(a.markdown,a.factsModel)),...(0,l.yT)("construction-org-chapter-data-coverage",()=>(function(a,b){let c=[],d=az(b,["project","schedule","resources","quality","safety","preciseFacts"]);if(0===d.length)return c;for(let b of a)/概况|进度|资源|质量|安全|文明|工资|应急/u.test(`${b.title} ${(b.sections||[]).join(" ")}`)&&(d.some(a=>a.length>=3&&b.content.includes(a.slice(0,Math.min(10,a.length))))||c.push({level:"warning",message:`${b.title} 缺少可识别的项目图谱事实支撑`,suggestion:"请至少引用工程名称、工期、工程量、资源、风险、质量安全目标等项目专属事实之一,避免纯模板化。"}));return c})(a.chapters,a.factsModel)),...(0,l.yT)("construction-org-major-content",()=>(0,ah.Av)(a.chapters,a.markdown)),...(0,l.yT)("construction-org-division-section",()=>(0,ah.CS)(a.chapters,a.markdown)),...(0,l.yT)("major-content-governance",()=>(0,ah.l5)(a.markdown)),...(0,l.yT)("construction-org-bonus-module",()=>(0,ah.b7)(a.chapters)),...(0,l.yT)("chapter-dependency",()=>al(a.chapters,j)),...(0,l.yT)("document-delivery-score",()=>(function(a,b,c,d){let e={factuality:2*!(0,R.vY)(a,c).some(a=>"error"===a.level),structure:b.length>0&&b.every(b=>a.includes(b.title)&&(0,h.V7)(b.content)>=600)?2:1,depth:0===(0,R.i0)(b,d).length?2:1,executable:0===al(b,d).length?2:1,evidence:0===aj(a,c).length?2:1},f=e.factuality+e.structure+e.depth+e.executable+e.evidence;return[{level:"info",message:`文档交付评分报告:总分 ${f}/10,事实${e.factuality},结构${e.structure},专业${e.depth},可执行${e.executable},证据${e.evidence}`,suggestion:f>=8?"可交付,但建议继续优化证据使用覆盖率和章节依赖链路。":"建议优先修复低分维度后再导出。"}]})(a.markdown,a.chapters,a.factsModel,j)),...(0,l.yT)("generated-fact-verification",()=>b),...(0,l.yT)("numeric-traceability",()=>(0,V.FA)(a.markdown,a.factsModel)),...(0,l.yT)("table-arithmetic-consistency",()=>(0,o.qE)(a.markdown)),...(0,l.yT)("duplicate-basic-info",()=>(0,R.iC)(a.markdown)),...await (0,l.yT)("formal-style",()=>(0,R.BV)(a.markdown)),...(0,l.yT)("tertiary-heading",()=>(0,O.dh)(a.markdown)),...(0,l.yT)("min-chapter-section",()=>(0,R.Ty)(a.chapters)),...await (0,l.yT)("precise-fact-usage",()=>(0,R.N1)(a.markdown,a.factsModel,a.chapters)),...(0,l.yT)("parameter-obligation-usage",()=>(function(a,b,c=[]){if(0===c.length)return[];let d=B(a,b,c),f=d.used.length+d.relevantMissed.length;if(f<8||d.used.length/f>=.9)return[];let g=d.relevantMissed.slice(0,3).map(a=>String(a.value).slice(0,30));return[{level:"error",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`可靠参数义务落位不足:${d.used.length}/${f}(相关而遗漏 ${d.relevantMissed.length} 项${g.length>0?`,缺失如 ${g.join("、")}`:""})`,suggestion:"请将资料中的可靠参数(规格/型号/尺寸/强度/规范编号等)在对应章节的对应位置自然写入,保持原值原形态(数字、单位、编号中的连字符与年份不得改写、拆分或省略);商务金额、单价、税率、预留金类数据一律不得写入正文。",provenance:{detectorId:"parameter-obligation-usage",fingerprint:(0,e.c6)(a)}}]})(a.markdown,a.factsModel,a.chapters)),...await (0,l.yT)("boq-placement",()=>(0,R.S2)(a.markdown,a.chapters,a.factsModel)),...await (0,l.yT)("stage-phrasing",()=>a2(a.markdown)),...await (0,l.yT)("emergency-section-depth",()=>bf(a.markdown)),...(0,l.yT)("boq-row-trace",()=>(0,V.QP)((0,V.JV)(a.markdown,a.factsModel))),...(0,l.yT)("drawing-reference",()=>(0,R.yd)(a.markdown,a.drawingFactLock)),...(0,l.yT)("web-evidence-leakage",()=>(function(a){let b=[];return ap.test(a)&&b.push({level:"warning",message:"正文包含联网增强过程性表述",suggestion:"请删除联网检索、网页资料、搜索结果等过程性话术,改为正式交付语言。"}),b})(a.markdown)),...(0,l.yT)("formal-placeholder",()=>(0,R.bM)(a.markdown)),...(0,l.yT)("prompt-example-leak",()=>(0,R.M$)(a.markdown,a.promptBindings)),...(0,l.yT)("degenerate-content",()=>(0,R.AC)(a.markdown,a.chapters)),...(0,l.yT)("planned-auto-spec-gate",()=>(0,R.mR)(a.markdown,a.template)),...(0,l.yT)("bid-composition-body-table",()=>(0,O.NN)(a.markdown,{bodyTableForbidden:a.bodyTableForbidden,plannedChapterTitles:(a.effectiveChapters?.length?a.effectiveChapters:a.template.chapters).filter(a=>(a.tablePlans?.length||0)>0||(a.tableSections?.length||0)>0||(a.diagramRequirements?.length||0)>0).map(a=>a.title),requiredTableTitles:a.promptDocumentRules?.requiredTables||[]})),...(0,l.yT)("bid-composition-body-figure",()=>(0,O.Fo)(a.markdown,a.bodyFigureForbidden)),...(0,l.yT)("identity-marks-forbidden",()=>(0,o.Vl)(a.markdown,a.identityMarksForbidden)),...(0,l.yT)("planned-structure",()=>(0,O.UG)(a.markdown,a.template,a.bodyTableForbidden)),...(0,l.yT)("table-caption",()=>(0,O.XU)(a.markdown,a.bodyTableForbidden)),...await (0,l.yT)("prompt-document-rule",()=>(0,O.Ed)(a.markdown,a.promptDocumentRules,void 0,{bodyTableForbidden:a.bodyTableForbidden,coverForbidden:a.coverForbidden})),...await (0,l.yT)("local-adaptation-keyword",()=>(0,o.cJ)(a.markdown,a.factsModel)),...(0,l.yT)("boq-division-coverage",()=>(0,V.sl)(a.markdown,a.chapters,a.factsModel))]}let bB={project:"项目基础事实",schedule:"工期与节点",quality:"质量目标与验收",safety:"安全文明要求",resources:"资源投入依据",quantities:"清单/图纸/工程量事实",rules:"规范规则与验收要求"};var bC=c(52922);function bD(a){let b=a.replace(/[\u200b-\u200f\u2060\ufeff]/gu,"").trim();return!(!b||/[。!?]/u.test(b))&&(b.match(/第[一二三四五六七八九十百千\d]+[章节篇]/gu)||[]).length+(b.match(/\d+(?:\.\d+)+/gu)||[]).length>=3}function bE(a){let b=a.split(/[,,、\s]+/u).map(a=>a.trim()).filter(Boolean);return!(b.length<8)&&b.reduce((a,b)=>a+b.length,0)/b.length<8}function bF(a){return a.split("\n").filter(a=>!(0,bC.X9)(a)&&!bD(a)).flatMap(a=>a.split(/[。;;]/u)).map(a=>a.trim()).filter(a=>a.length>=12).filter(a=>{let b=(a.match(/[\u4e00-\u9fff]/gu)||[]).length,c=a.replace(/\s+/gu,"").length;return b>=8&&b/Math.max(1,c)>=.15}).filter(a=>!bE(a))}function bG(a,b){let c=new Set;for(let d of bF(a))for(let a of d.match(b)||[])c.add(a);return c}let bH=/\d|确保|保证|杜绝|实行|采用|落实|建立|执行|达到|不低于|不少于|控制在|符合|按照|承诺/u,bI=["危险性较大的分部分项工程安全管理","扬尘污染防治措施","建筑工人实名制管理","农民工工资专用账户与工资支付保障","生产安全事故应急预案与应急演练","绿色施工与四节一环保措施"],bJ=["危险源辨识与风险识别评估","编制专项施工方案","组织专家论证并履行审批程序","对作业人员进行安全技术交底","施工过程监测与监控量测","分部分项工程验收","三级配电系统","两级漏电保护装置","漏电保护器与接地保护","实名制考勤与人员管理","农民工工资专用账户银行代发","应急预案编制与响应","绿色施工措施与评价"];function bK(a){return a.replace(/^第[一二三四五六七八九十百千万\d]+[章节]\s*/u,"").replace(/^\d+(?:\.\d+)*[、..\s]+/u,"").replace(/^[((]?[一二三四五六七八九十]+[))、..\s]+/u,"").replace(/\s+/gu,"").trim()}async function bL(a){let{blocks:b,completeBlocks:c}=await (0,bC.Pm)(a);return Math.round((.7*Math.min(1,c/Math.max(6,Math.ceil((0,h.V7)(a)/1500)))+.3*(b?c/b:0))*100)}let bM=/目录|层级|编号|表格|表头|分隔线|页码|空小节|缺少规划小节|小节只有标题|缺节/u,bN=/跨章一致性复核|事实一致性冲突|事实冲突|评分项要求|可靠精确参数|应急预案|属地创优|工伤保险|专业评分|深度不足|事实反查|存在多个值|已确认事实未在正文中落位|事实未在正文中落位/u,bO=/缺少规划小节|小节只有标题|空小节|只有标题或表格无正文|小节内容补写未完成|小节生成未达标|同名小节|H4 标题|正文缺少章节标题|小节正文过短/u;function bP(a){let b=new Map;return a.split("\n").forEach((a,c)=>{if(!((0,bC.X9)(a)||bD(a)))for(let d of a.matchAll(/[^。;;]+/gu)){let a=d[0]||"",e=a.trim(),f=e.replace(/[\s,,、::()()【】[\]《》“”"'`]/gu,"");if(f.length<12)continue;let g=(d.index||0)+(a.length-a.trimStart().length),h=b.get(f)||[];h.push({lineIndex:c,start:g,end:g+e.length,raw:e}),b.set(f,h)}}),[...b.entries()].map(([a,b])=>({key:a,occurrences:b}))}function bQ(a){let b=bP(a),c=b.reduce((a,b)=>a+b.occurrences.length,0),d=b.length,e=c-d;return{totalSentences:c,uniqueSentences:d,duplicateInstances:e,duplicateRate:c>0?e/c:0}}async function bR(a,b){let c=await (0,bC.Bt)(a,b),d=(0,bC.Ye)(a),e=bQ(a).duplicateRate,f=await (0,bC.gE)(a,b),g=(0,bC.nY)(a),h=(0,bi.vL)(a),i=bi.y9.map(b=>({patternId:b.id,patternLabel:b.label,count:(0,bi.be)(a,b)})).filter(a=>a.count>=h),j=i.length>=2||i.some(a=>a.count>=2*h);return{level:f.heavyTemplated||"heavy"===c.level||j?"heavy":"medium"===c.level||i.length>0?"medium":"light",fillerRatio:c.ratio,fillerSentences:c.fillerSentences,totalSentences:c.totalSentences,vagueHitCount:d.reduce((a,b)=>a+b.count,0),vaguePhrases:d.map(a=>a.phrase),duplicateSentenceRate:e,crossProjectResidue:g,difficultyCountermeasureRatio:f.ratio,difficultyBothCount:f.bothCount,difficultyQuantifiedCount:f.quantified,difficultyCountermeasures:f.countermeasures,difficultyHeavyTemplated:f.heavyTemplated,sentencePatternHits:i}}function bS(a){let b=a.replace(/[\u200b-\u200f\u2060\ufeff]/gu,"").split(/(?=^#{1,6}\s)/mu),c=[];for(let a of b){if(!a.trim())continue;let b=a.split("\n"),d=/^#{1,6}\s/u.test(b[0]||""),e=d?(b[0]||"").trim():"",f=d?bK(e.replace(/^#{1,6}\s+/u,"")):"",g=d?b.slice(1):b,h=[],i=[];for(let a of g){if(!a.trim()){i.length>0&&(h.push(i),i=[]);continue}i.push(a)}i.length>0&&h.push(i);let j=[];for(let a of h){let b=a.filter(a=>!bD(a));b.some(a=>(function(a){let b=a.replace(/[\u200b-\u200f\u2060\ufeff]/gu,"").trim();return!(b.length<12||(0,bC.X9)(b)||bD(b))&&!bE(b)})(a))&&j.push(b.map(a=>a.trim()).join("\n"))}c.push({heading:e,headingText:f,hasSubstantiveBody:j.length>0,substantiveParagraphs:j})}return c}function bT(a){let b=[];for(let c of bS(a))if(c.hasSubstantiveBody)for(let a of c.substantiveParagraphs)b.push(...function(a){let b=[],c=[],d=0;for(let e of a.split("\n"))d>0&&d+e.length>600&&(b.push(c.join("\n")),c=[],d=0),c.push(e),d+=e.length+1;return c.length>0&&b.push(c.join("\n")),b}(a));return b}async function bU(a){let b=bT(a.markdown),c=await (0,aB.Mv)(b,[...bI,...bJ],a.embedDocuments),d=a=>b.some(b=>c(b,a)>=aB.Eh),e=bI.filter(d).length/bI.length,f=await (0,bC.Bt)(a.markdown,a.embedDocuments);return{completeness:function(a,b,c,d){let e=[...a.matchAll(/^#{1,3}\s+(.+)$/gmu)].map(a=>bK(a[1]||"")).filter(a=>a.length>=2),f=1,g=c?.chapters||[];if(g.length>0){let a=g.map(a=>bK(a.title)).filter(Boolean);f=a.filter(a=>e.some(b=>b.includes(a)||a.includes(b))).length/a.length}else b.length>0&&(f=b.filter(a=>e.some(b=>b.includes(bK(a.title))||bK(a.title).includes(b))).length/b.length);return Math.round((.55*f+.45*d)*100)}(a.markdown,a.chapters,a.template,e),specificity:function(a,b){let c=b.filter(V.O7),d=c.filter(a=>"used"===a.status),e=c.length?d.length/c.length:1,f=d.map(a=>String(a.value||"").replace(/\s+/gu," ").trim()).filter(a=>a.length>=4&&a.length<=60),g=a.map(a=>(a.content||"").replace(/\s+/gu," ")),h=f.filter(a=>g.filter(b=>b.includes(a)).length>=2).length;return Math.round((.55*e+.45*(f.length?h/f.length:1))*100)}(a.chapters,a.factTraces),compliance:function(a,b){let c=bJ.filter(b).length/bJ.length,d=a.split("\n").map(a=>a.replace(/[\u200b-\u200f\u2060\ufeff]/gu,"").trim()).filter(a=>!(!a||/^#{1,6}\s+/u.test(a)||bD(a))&&!/^(?:第[一二三四五六七八九十百\d]+[章节篇]|\d+(?:\.\d+){0,3})\s+[^。;;,,]*$/u.test(a)).join("\n"),e=(0,bC.JD)(d);return Math.round((.8*c+.1*(e.twoStepComplete?1:e.categories.length>0&&e.graded?.6:.3*(e.categories.length>0))+.1*(0,bC.bH)(d).coverage)*100)}(a.markdown,d),executability:await bL(a.markdown),normalization:function(a){let b=a=>"table"===a.category||"format"===a.category||("structure"===a.category?bO.test(a.message):!a.category&&!bN.test(a.message)&&bM.test(a.message));return Math.max(0,100-8*a.filter(a=>"error"===a.level&&b(a)).length-Math.min(3*a.filter(a=>"warning"===a.level&&b(a)).length,30))}(a.issues),uniqueness:function(a,b){let c=b.forbiddenEmptyPhraseHits,d=b.vagueSemanticSentences,e=100*Math.max(0,b.ratio-.1),f=bQ(a),g=Math.max(10,Math.ceil((0,h.V7)(a)/1e4)),i=Math.max(0,f.duplicateInstances-g);return Math.max(0,Math.round(100-4*c-6*d-.5*e-Math.max(60*f.duplicateRate,i)))}(a.markdown,f),moduleCoverageRate:e}}var bV=c(43378),bW=c(31263),bX=c(35547);async function bY(a){let b=a.items.map(a=>a.trim()).filter(Boolean);if(0===b.length)return{total:0,met:0,partial:0,missing:0,simulatedScore:0,criteria:[]};let c=bT(a.markdown),d=bS(a.markdown).map(a=>a.heading).filter(Boolean),e=bF(a.markdown).join(""),f=await (0,aB.Mv)([...c,...d],b,a.embedDocuments),g=b.map((a,b)=>{let g=(0,R.pG)(a),h=g.length>0&&g.some(a=>e.includes(a)),i="",j=0;for(let b of c){let c=f(b,a);c>j&&(j=c,i=b)}if(h||j>=aB.Eh)return{index:b,title:a,status:"met",similarity:j,anchor:i?i.split("\n")[0].replace(/^#{1,6}\s+/u,"").slice(0,80):void 0};let k="",l=0;for(let b of d){let c=f(b,a);c>l&&(l=c,k=b)}return l>=aB.Eh?{index:b,title:a,status:"partial",similarity:l,anchor:k.replace(/^#{1,6}\s+/u,"").slice(0,80)}:{index:b,title:a,status:"missing",similarity:l}}),h=g.filter(a=>"met"===a.status).length,i=g.filter(a=>"partial"===a.status).length,j=g.filter(a=>"missing"===a.status).length,k=Math.round((h+.5*i)/g.length*100);return{total:g.length,met:h,partial:i,missing:j,simulatedScore:k,criteria:g}}let bZ="quality-caliber-c9.2",b$={version:bZ,role:"primary"},b_={version:bZ,role:"secondary",relatedTo:"quality-report"},b0={requirement:.3,structure:.15,dataAnchor:.2,professionalDepth:.15,compliance:.1,factIntegrity:.1},b1={anchors:.85,modules:.15},b2={execution:.45,figure:.35,caption:.2,appendix:.75,bodyCompliance:.25},b3={boq:.4,parameters:.3,drawing:.15,authority:.15},b4={selfHarm:.25,placeholder:.2,length:.15,tableConsistency:.2,regulation:.2},b5={reconciliation:.6,binding:.2,keyFacts:.2},b6=/规格-数值绑定|名称-数值绑定|合计值/u,b7=/编制依据对账缺口/u,b8={selfHarm:/自伤表述/u,placeholder:/占位符|占位式表达/u,length:/正文篇幅/u};function b9(a){let b=a.filter(a=>null!==a.value&&Number.isFinite(a.value));if(0===b.length)return{value:null};let c=b.reduce((a,b)=>a+b.weight,0);return{value:b.reduce((a,b)=>a+b.value*b.weight,0)/c,detail:b.map(a=>a.detail).filter(a=>!!a).join("、")||void 0}}async function ca(a,b){if(!b)return{value:null};let c=a.filter(a=>(0,h.V7)(a.content)>=800);if(0===c.length)return{value:null};let d=[],e=await Promise.all(c.map(a=>b.analyze(a.content).catch(b=>{d.push(`${a.title}:${b instanceof Error?b.message:String(b)}`)}))),f=c.map((a,b)=>({title:a.title,analysis:e[b]})).filter(a=>!!a.analysis);if(0===f.length)return{value:null};let g=0,i=[];for(let a of f){let b=(0,R.Pu)(a.analysis.dimensions),c=(0,R.lH)(a.title);g+=Math.min(1,b/c),b<c&&i.push(`${a.title} ${b}/12`)}let j=g/f.length*100,k=d.length>0?`;⚠ ${d.length} 章语义分析失败未计入(${d.slice(0,2).join(";")})`:"",l=(i.length>0?`专业深度达标 ${Math.round(j)}(薄弱:${i.slice(0,3).join("、")})`:`专业深度达标 ${Math.round(j)}(全部章达目标线)`)+k;return{value:j,detail:l}}async function cb(a){let b=await bU({markdown:a.markdown,chapters:a.chapters,template:a.template,factTraces:a.factTraces,issues:a.issues,embedDocuments:a.embedDocuments}),c=a.bidComposition?.bidType||"unknown",d=a.tenderRequirements?.extracted&&a.tenderRequirements.entries||[],e=d.length>0?(0,aC.U1)(d,a.markdown):[],f=e.filter(a=>"comply"!==a.entry.policy),g=f.length>0?(()=>{let a=f.filter(a=>a.satisfied).length;return{value:a/f.length*100,detail:`锚点全命中 ${a}/${f.length}`}})():{value:null},h=function(a,b){let c=b.filter(a=>!a.exempt),d=c.filter(a=>a.placed),e=d.length>0?(0,s.R8)(a,d.map(a=>a.itemName)):new Map;return b.length>0?{effectiveRows:c.length,placedRows:d.length,explicitRows:e.size,rate:c.length>0?d.length/c.length:null,exemptRows:b.filter(a=>a.exempt).slice(0,50).map(a=>`${a.itemName}${a.quantity?` ${a.quantity}${a.unit}`:""}`)}:void 0}(a.markdown,a.boqRowTraces||[]),i=b9([{...g,weight:b1.anchors},{...function(a){if(!Number.isFinite(a))return{value:null};let b=Math.round(a*bI.length);return{value:100*a,detail:`强制模块 ${b}/${bI.length}`}}(b.moduleCoverageRate),weight:b1.modules}]),j=function(a){let{markdown:b,mode:c,bidComposition:d,effectiveChapters:e,chapters:f}=a;if("blind"===c){let a=[],c=d?.appendixPlan||[];if(c.length>0){let d=c.filter(a=>(0,Q.cM)(b,a)).length;a.push({weight:b2.appendix,value:d/c.length*100,detail:`附表承载 ${d}/${c.length}`})}if(d?.bodyTablePolicy==="forbidden"){let d=function(a,b){let c=-1;for(let d of b){let b=a.indexOf(`## ${d.title}`);b>=0&&(c<0||b<c)&&(c=b)}let d=c>=0?a.slice(0,c):a;return d.match(/^\s*\|/gmu)?.length||0}(b,c);a.push({weight:b2.bodyCompliance,value:Math.max(0,100-25*d),detail:d>0?`正文禁表 违规 ${d} 处`:"正文禁表合规"})}else{let c=(e||[]).reduce((a,b)=>a+(b.tablePlans?.length||0),0);if(c>0&&e){let b=Math.max(0,c-(0,bV.Xi)(e,f).reduce((a,b)=>a+b.plans.length,0));a.push({weight:b2.execution,value:b/c*100,detail:`表执行 ${b}/${c}`})}let d=(e||[]).filter(a=>(a.tablePlans?.length||0)>0||(a.tableSections?.length||0)>0||(a.diagramRequirements?.length||0)>0).map(a=>a.title),g=(0,O.NN)(b,{bodyTableForbidden:!1,plannedChapterTitles:d}).length;a.push({weight:b2.bodyCompliance,value:Math.max(0,100-25*g),detail:g>0?`正文未授权表格 违规 ${g} 处`:"正文表格授权合规"});let h=(0,O.xw)(b,!1);h.total>0&&a.push({weight:b2.caption,value:h.captioned/h.total*100,detail:`题注 ${h.captioned}/${h.total}`})}return b9(a)}let g=[],h=(e||[]).reduce((a,b)=>a+(b.tablePlans?.length||0),0);if(h>0&&e){let a=Math.max(0,h-(0,bV.Xi)(e,f).reduce((a,b)=>a+b.plans.length,0));g.push({weight:b2.execution,value:a/h*100,detail:`表执行 ${a}/${h}`})}let i=(0,bV.cA)({chapters:e});if(i.length>0){let a=(0,bV.Vr)(i,b);g.push({weight:b2.figure,value:a.covered/a.total*100,detail:`图位 ${a.covered}/${a.total}`})}let j=(0,O.xw)(b,d?.bodyTablePolicy==="forbidden");return j.total>0&&g.push({weight:b2.caption,value:j.captioned/j.total*100,detail:`题注 ${j.captioned}/${j.total}`}),b9(g)}({markdown:a.markdown,mode:c,bidComposition:a.bidComposition,effectiveChapters:a.effectiveChapters,chapters:a.chapters}),k=function(a){let{markdown:b,billPlacementAudit:c,parameterUsageAudit:d,drawingFactLock:e,authorityAuditReport:f}=a,g=[];c&&null!==c.rate&&Number.isFinite(c.rate)&&g.push({weight:b3.boq,value:100*c.rate,detail:`BOQ 落位 ${c.placedRows}/${c.effectiveRows}`}),d&&null!==d.rate&&Number.isFinite(d.rate)&&g.push({weight:b3.parameters,value:100*d.rate,detail:`参数 ${d.usedParams}/${d.usedParams+d.relevantMissedCount}`});let h=e?0===e.groups.length?"图纸事实锁无可用分组(无图纸类证据入库)":void 0:"图纸事实锁不可用(未构建或构建失败)";if(e&&e.groups.length>0){let a=(0,bW.SL)(e,b);g.push({weight:b3.drawing,value:100*a.rate,detail:`图纸事实 ${a.referenced.length}/${e.groups.length}`})}if(f){let a=f.unregisteredCount+f.derivationGaps.length+f.processGaps.length;g.push({weight:b3.authority,value:Math.max(0,100-5*a),detail:a>0?`无主数值 缺口 ${a} 处`:"无主数值 0 缺口"})}let i=b9(g);return h&&null!==i.value&&(i.detail=`${i.detail?`${i.detail};`:""}⚠ ${h},图纸分量未计量(本维度按剩余分量重归一)`),i}({markdown:a.markdown,billPlacementAudit:h,parameterUsageAudit:a.parameterUsageAudit,drawingFactLock:a.drawingFactLock,authorityAuditReport:a.authorityAuditReport}),l=await ca(a.chapters,a.professionalDepthClassifier),m=function(a,b){let c=b=>a.filter(a=>b.test(a.message)).length,d=c(b8.selfHarm),e=c(b8.placeholder),f=c(b8.length),g=(0,bX.OV)(b),h=by(b),i=h.declaredNotUsed.length,j=h.usedNotDeclared.length,k=h.stats.declaredCodes+h.stats.declaredNames>0?{weight:b4.regulation,value:Math.max(0,100-(i+j)*20),detail:i+j>0?`编制依据缺口 ${i+j} 处(声明未用 ${i}/引用未声明 ${j})`:"编制依据对账 0 缺口"}:{weight:b4.regulation,value:null};return b9([{weight:b4.selfHarm,value:Math.max(0,100-25*d),detail:d>0?`自伤 ${d} 处`:"自伤 0"},{weight:b4.placeholder,value:Math.max(0,100-25*e),detail:e>0?`占位符 ${e} 处`:"占位符 0"},{weight:b4.length,value:Math.max(0,100-50*f),detail:f>0?`篇幅超限 ${f} 条`:"篇幅达标"},{weight:b4.tableConsistency,value:Math.max(0,100-20*g),detail:g>0?`表内不自洽 ${g} 处`:"表自洽 100%"},k])}(a.issues,a.markdown),n=function(a,b){let c=a.filter(a=>"error"===a.level&&"fact_consistency"===a.category&&!b7.test(a.message)),d=c.filter(a=>b6.test(a.message)),e=[{weight:b5.reconciliation,value:Math.max(0,100-20*c.length),detail:c.length>0?`对账冲突 ${c.length} 条`:"对账零冲突"},{weight:b5.binding,value:Math.max(0,100-20*d.length),detail:d.length>0?`绑定冲突 ${d.length} 条`:"绑定零冲突"}];return b&&null!==b.rate&&Number.isFinite(b.rate)&&e.push({weight:b5.keyFacts,value:100*b.rate,detail:`关键事实 ${b.placed}/${b.specs}`}),b9(e)}(a.issues,a.keyFactPlacementAudit),o=[{key:"requirement",label:"要求实体响应",...i,weight:b0.requirement},{key:"structure",label:"结构呈现落实",...j,weight:b0.structure},{key:"dataAnchor",label:"数据锚定",...k,weight:b0.dataAnchor},{key:"professionalDepth",label:"专业深度",...l,weight:b0.professionalDepth},{key:"compliance",label:"合规与规范",...m,weight:b0.compliance},{key:"factIntegrity",label:"事实完整与一致性",...n,weight:b0.factIntegrity}],p=o.filter(a=>null!==a.value&&Number.isFinite(a.value)),q=p.reduce((a,b)=>a+b.weight,0),r=q>0?p.reduce((a,b)=>a+b.value*b.weight,0)/q:0,t=p.length,u=o.length,v=q>=.9,w=Math.round(r),x=p.map(a=>({key:a.key,label:a.label,score:Math.round(a.value),weight:a.weight,detail:a.detail})),y=a.issues.filter(a=>"error"===a.level&&(0,R.R9)(a)).length,z=Math.max(0,Math.min(99,Math.round(w-Math.min(10,3*y)))),A=await bR(a.markdown,a.embedDocuments),B=a.evaluationCriteriaItems&&a.evaluationCriteriaItems.length>0?await bY({items:a.evaluationCriteriaItems,markdown:a.markdown,embedDocuments:a.embedDocuments}):void 0,C=d.length>0?d.map((a,b)=>({text:a.text.slice(0,160),category:a.category,responded:"comply"===a.policy||!!e[b]?.satisfied})):void 0,D="unknown"===c?";⚠ 标书类型未判定(按明标口径)——暗标项目须核对招标文件后重跑":"",E=B?`;评分细则模拟 ${B.simulatedScore}%(met ${B.met} / partial ${B.partial} / missing ${B.missing})`:"",F=z>=95&&0===y&&b.uniqueness>=60&&v,G=F?["已达到当前质量目标,建议保持事实口径和导出前复核。"]:[...v?[]:[`本次仅计量 ${t}/${u} 维(权重覆盖 ${(100*q).toFixed(0)}%,低于下限 90%):重归一分不得作为达标依据,须先补齐缺失维度的计量条件再判定。`],"按对齐评分口径补齐短板维度:要求实体响应补锚点全命中(核心词与数字参数逐条落位)、结构呈现补图表落位、数据锚定补 BOQ/参数/图纸/无主数值溯源、专业深度按章补六维薄弱项、合规与规范清理自伤与占位符并压缩超限篇幅且编制依据与正文双向对齐、事实一致性补关键事实落位与数值对账。","系统需优先修复阻断问题、扩大本地知识库检索、补抽结构化事实,并将未落位事实写入对应章节。"];b.uniqueness<60&&G.push(`低雷同性 ${b.uniqueness} 低于门槛 60:存在与公开模板/通用话术重合的雷同风险,须改写高重合段落后再交付。`);let H=`${v?"":"⚠ "}本次仅计量 ${t}/${u} 维、权重覆盖 ${(100*q).toFixed(0)}%`,I=`交付置信度 ${z}% / 目标 95%,综合评分 ${w}/100(${[...x.map(a=>`${a.label} ${a.score}`),`低雷同性 ${b.uniqueness}`].join("、")});${H}${D}${E};评分口径 ${bZ}(主尺)`;return{overall:w,deliveryProbability:z,target:95,passed:F,scores:b,mode:c,dimensions:x,requirementChecklist:C,billPlacementAudit:h,parameterUsageAudit:a.parameterUsageAudit,keyFactPlacementAudit:a.keyFactPlacementAudit,templating:A,caliber:b$,evaluationCriteriaAttainment:B,measurementCoverage:{dimensions:t,totalDimensions:u,weightRatio:q,sufficient:v},summary:I,actions:G}}let cc=new Set(["fact-coverage","overview-recap","internal-terminology-anchor","global-consistency-snapshot","data-consistency-snapshot"]);function cd(...a){return a.flat()}var ce=c(19898),cf=c(91977),cg=c(51144);function ch(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}}async function ci(a){(0,e.Te)(a.signal);let b=[];if(0===a.scopedFilePaths.length)return b;let c=/资源|人|材|机|材料|设备|清单|工程量|BOQ|报价/u.test(a.chapter.title),d=(c?1.6:1)*(/[、,,与和及]/.test(a.chapter.title)?1.4:1),f=Math.ceil((a.highRisk?18:10)*d),h=Math.ceil((a.highRisk?24:14)*(c?1.4:1)),i=Math.ceil((a.highRisk?72:42)*d),j=Math.ceil((a.highRisk?72e3:42e3)*d),k=[...new Set([...a.requiredNeeds||[],...a.extraClues||[]])].slice(0,12),l=(function(a,b=[],c=[]){let d=a.sections||[],e=[...a.requiredFacts,...b,...c],f=(0,cg.Cr)(d,a=>(0,cg.Ox)(a),{maxItems:16,maxChars:1200},"retrieval-sections").selected,g=(0,cg.Cr)(e,a=>(0,cg.Ox)(a),{maxItems:16,maxChars:1200},"retrieval-facts").selected,h=/[、,,与和及]/.test(a.title),i=/资源|人|材|机|材料|设备|清单|工程量|BOQ|报价/u.test(a.title),j=/进度|工期|节点/u.test(a.title)?["合同工期","计划工期","日历天","开工","竣工","关键线路","进度计划","施工进度"]:/质量|验收/u.test(a.title)?["质量标准","验收规范","检验批","复验","合格","质量保证","隐蔽验收"]:/安全|危大|风险/u.test(a.title)?["安全措施","风险源","危大工程","应急","检查整改","安全防护","应急预案","基坑支护","基坑开挖","基坑底标高","坡率","支护形式","降水","开挖深度","高支模","专项方案"]:i?["工程量清单","项目特征","材料设备","规格型号","数量单位","劳动力","机械设备","进场计划","资源保障","主要材料","施工机具","材料供应","设备配置"]:/施工|方案|方法|技术|工艺/u.test(a.title)?["施工方法","工艺流程","技术标准","构造做法","控制要点","施工准备"]:["工程范围","施工方法","控制要点","验收要求"],k=h?[...j,...a.title.split(/[、,,与和及]+/u).map(a=>a.trim()).filter(a=>a.length>=4)]:j,l=[...new Set([a.title,...f,...g,...k].flatMap(a=>a.split(/[\s、,,。;;::()()《》【】\-/]+/u)).map(a=>a.trim()).filter(a=>a.length>=2))],m=(0,cg.Cr)(l,a=>(0,cg.Ox)(a),{maxItems:36,maxChars:1200},"retrieval-tokens").selected,n=h?a.title.split(/[、,,与和及]+/u).map(a=>a.trim()).filter(a=>a.length>=4).map(a=>`${a} ${f.slice(0,6).join(" ")} ${g.slice(0,4).join(" ")}`.trim()):[];return[...new Set([`${a.title} ${f.join(" ")}`.trim(),...g.map(b=>`${a.title} ${b}`.trim()),...f.map(b=>`${a.title} ${b} ${g.slice(0,6).join(" ")}`.trim()),`${a.title} ${k.join(" ")}`.trim(),...n,m.join(" ")].filter(Boolean))]})(a.chapter,a.requiredNeeds,a.extraClues).slice(0,f),m=[...k.map(b=>`${a.chapter.title} ${b} ${(a.chapter.sections||[]).join(" ")}`.trim()).filter(a=>!l.includes(a)).map(a=>({text:a,boost:2,source:"required-fact-evidence"})),...l.map(a=>({text:a,boost:2.4,source:"deep-retrieval"}))];return b.push(...(await (0,e.l$)(m,async b=>{var c;(0,e.Te)(a.signal);let d=await a.manager.search(a.projectRoot,b.text,{scope:"project",filters:{filePaths:a.scopedFilePaths,materialRoots:a.scopedMaterialRoots??(0,ce.materialRootsOfFiles)(a.scopedFilePaths)},limit:h,weights:{keyword:.62,vector:.32,rewrite:.9,hybridBonus:.28},generationMode:!0});return(c={chapter:a.chapter,results:d.results,fileRoleByPath:a.fileRoleByPath,fileProcessingByPath:a.fileProcessingByPath,boost:b.boost,source:b.source}).results.map(a=>{let b=c.fileProcessingByPath.get(a.filePath);return{chapterId:c.chapter.id,filePath:a.filePath,score:a.score+c.boost+("table"===b?3:"structured_data"===b?2.6:3.2*("bill_of_quantities"===b)),content:a.content,roleId:c.fileRoleByPath.get(a.filePath),processingType:b,sectionTitle:a.sectionTitle,source:c.source}})},{kind:"deepRetrieval",highRisk:a.highRisk})).flat()),[...(0,g.QR)(b.filter(a=>"required-fact-evidence"===a.source),{maxItems:Math.max(6,3*k.length),maxChars:18e3,preservePinned:!0}),...(0,g.QR)(b.filter(a=>"required-fact-evidence"!==a.source),{maxItems:i,maxChars:j,preservePinned:!0})]}var cj=c(32434),ck=c(36003),cl=c(95734);async function cm(a,b){let c=(0,O.r4)(a.content);if(0===c.length)return[];let d=[];for(let e of c){let c=e.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&"),f=a.content.match(RegExp(`^###\\s+(?:\\d+(?:\\.\\d+)*[、..\\s]*\\s+)?${c}\\s*\\n([\\s\\S]*?)(?=^#{2,3}\\s+|$)`,"mu")),g=f?.[1]||"",h=await (0,ck.AI)(e,(0,ck.Ym)(e,a.chapter,a.evidence),b),i=(0,ck.uQ)(e,g,h);i&&d.push(`${e}:${i}`)}return d}function cn(a,b){let c=a.trim();if(!c)return[];let d=Math.max(1e3,Math.ceil(b)),e=[],f=0;for(;f<c.length;){let a=Math.min(f+d,c.length),b=c.lastIndexOf("\n\n",a);(b<=f||a-b>.25*d)&&(b=c.lastIndexOf("\n",a)),(b<=f||a-b>.2*d)&&(b=a),e.push(c.slice(f,b).trim()),f=b}return e.filter(Boolean)}function co(a){return"string"==typeof a?a:a&&"object"==typeof a&&"message"in a?String(a.message):JSON.stringify(a)}function cp(a){let b=Number(process.env[a]);return Number.isFinite(b)&&b>0?Math.ceil(b):0}async function cq(a){var b;(0,e.Te)(a.signal);let c=a.chapters.map(a=>{let b=a.content.replace(/#{1,6}\s+/gu,"").replace(/\*\*/gu,"").replace(/\|/gu," ").replace(/[\n\r]+/gu," ").trim(),c=function(a){let b=[];for(let c of[/(?:总建筑面积|建设规模|总用地面积|总占地面积)[^\n。;;]{0,18}\d+(?:[.,]\d+)?\s*万?\s*(?:㎡|m²|m2|平方米)/gu,/(?:合同估算价|合同估算价格|投资估算|最高投标限价|招标控制价|工程总投资|总投资|工程造价)[^\n。;;]{0,18}\d+(?:[.,]\d+)?\s*万?\s*(?:万元|亿元|元)/gu,/(?:计划工期|合同工期|总工期|施工周期)[^\n。;;]{0,18}\d+\s*(?:日历天|天|个月|月)/gu,/(?:质量标准|质量目标)[^\n。;;]{0,26}/gu,/(?:找平层|抹灰层|防水层|保温层|结合层|垫层|面层|粘结层)[^\n。;;]{0,24}\d+:\d+(?:\.\d+)?/gu]){let d=[...new Set(a.match(c)||[])].slice(0,4);b.push(...d)}return[...new Set(b.map(a=>a.replace(/\s+/gu," ").trim()).filter(Boolean))].join(";")}(a.content);return`章节:${a.title}
|
|
18
18
|
数值口径清单:${c||"(未提取到总量口径数字)"}
|
|
19
19
|
正文摘要:${b.slice(0,600)}`}).join("\n\n---\n\n"),d=function(a){let b=Math.ceil(a.totalChars/Math.max(1e3,a.chunkChars)),c="chapter"===a.phase?cp("DOCUMENT_CHAPTER_REVIEW_MAX_CHUNKS")||Math.min(Math.max(2,Math.floor(a.totalChars/a.chapterCount/4e3)),b):"global"===a.phase?cp("DOCUMENT_GLOBAL_REVIEW_MAX_CHUNKS")||Math.min(4,b):cp("DOCUMENT_FINAL_REVIEW_MAX_CHUNKS")||Math.min(6,b);return{chunks:c,budgetPerChunk:Math.ceil(a.totalChars/Math.max(1,c)),maxIssues:Math.max(4,Math.min(28,Math.ceil(2.5*c)))}}({totalChars:c.length,chapterCount:a.chapters.length,chunkChars:16e3,phase:"global"}),f=cn(c,16e3).map((a,b)=>`**第 ${b+1}/${cn(c,16e3).length} 部分**
|
|
20
20
|
|
|
@@ -52,7 +52,7 @@ ${b.styleRequirements.map(a=>`- ${a}`).join("\n")}`]:[]].join("\n"),i=[...new Se
|
|
|
52
52
|
表题命名要求:概括该表内容与用途的业务表名(10~24 字),以“表/台账/清单/计划/记录/一览表”等名词结尾;不得使用“表格/数据表/明细”类无信息泛化名。
|
|
53
53
|
缺表题表格原文(只允许在各表正上方补一行表题;严禁修改表头、数据行、表格列数与其余正文,严禁删除表格):
|
|
54
54
|
${g.map(a=>a.blockText).join("\n\n")}
|
|
55
|
-
以局部 patch 方式输出:每处 patch 只包含新增表题行与必要定位上下文,不得重写其他内容。`,m=await ab({originalContent:e.content,repairRound:"table-caption-repair",diagnostics:a.generationDiagnostics,beforeMetrics:[g.length],shouldRollback:(a,b)=>b[0]>=g.length,apply:async()=>{let b=await a.withProgressHeartbeat(()=>(0,f.l8)({template:a.template,chapter:{id:e.id,title:e.title,content:e.content,evidence:e.evidence,missingFacts:e.missingFacts,sections:e.sections},issues:[`正文存在 ${g.length} 张缺少表题的表格`],promptTexts:l,requirement:a.requirement,forbidDrawingImages:!1,diagnostics:a.generationDiagnostics,signal:a.signal,patchGuard:(0,f.XG)("table-caption-repair",a.generationDiagnostics)}));return b.content&&b.content!==e.content?b.content:e.content},recheck:a=>[b(a)]}),n=m.content;m.rolledBack||n===e.content||(a.finalChapterDrafts[c]={...e,content:h?(0,k.w_)(n,h):n},d+=1);let o=m.rolledBack?g.length:m.afterMetrics[0],p=(0,q.X5)({type:"llm_review",roleId:i,status:m.rolledBack||o>0?"failed":"success",message:m.rolledBack?`表格题名补全已回滚:${e.title}(补名后无题表数未下降,保留修复前正文)`:o>0?`表格题名补全未完全生效:${e.title}(残留 ${o} 张无题表由终检复核)`:`表格题名补全完成:${e.title}`,details:[`无题表 ${g.length} 张 → 残留 ${o} 张`]},{subtitle:"表格题名补全"});(0,q.fx)(a.progressStages,p),(0,q.fx)(a.finalGateRepairStages,p),a.emitProgress(a.finalChapterDrafts,a.progressStages)}(c>0||d>0)&&(a.finalMarkdown=a.rebuildFinalMarkdown(),await a.recomputeFinalValidationBundle())}async function eh(a){let b=new Map;for(let c of a.finalChapterDrafts){let a=(0,bX.qE)(c.content);a.length>0&&b.set(c.id,a)}let c=[...b.keys()].reduce((b,c)=>{let d=a.finalChapterDrafts.find(a=>a.id===c);return b+(d?(0,bX.OV)(d.content):0)},0);if(0===b.size){let b=(0,q.X5)({type:"validation",roleId:"table-arithmetic-repair",status:"success",message:"表内算术自洽核对通过:全部含合计标记的表格分项和=合计"},{subtitle:"表内算术自洽"});(0,q.fx)(a.progressStages,b),(0,q.fx)(a.finalGateRepairStages,b),a.emitProgress(a.finalChapterDrafts,a.progressStages);return}let d=0,e=0;for(let[c,g]of b){let b=a.finalChapterDrafts.findIndex(a=>a.id===c);if(b<0)continue;let h=a.finalChapterDrafts[b],i=h.content,j=(0,bX.OV)(i),k=0,l=!1,m=!1,n=[j];for(;j>0&&k<2;){k+=1;let d=(0,bX.qE)(i),e=(0,q.X5)({type:"llm_review",roleId:`agent-table-arithmetic-${c}`,status:"running",message:`表格算术不自洽 ${d.length} 张表,第 ${k} 轮定向修复中:${h.title}`,details:d.map(a=>a.message)},{subtitle:"表内算术自洽"});(0,q.fx)(a.progressStages,e),(0,q.fx)(a.finalGateRepairStages,e),a.emitProgress(a.finalChapterDrafts,a.progressStages);let g=["【表格算术自洽修复】下列表格的「合计」(合计行/合计列)与分项之和对不上,请逐表修正表内数值:",...k>1?[`本轮为第 ${k} 轮(最多 2 轮):上一轮修复后仍有残留,必须让合计与分项之和完全相等。`]:[],"1. 以分项为准重算合计:合计 = 该行/该列已列出的分项之和(单位一致);","2. 若分项数值本身与资料/清单/上下文矛盾,按权威值修正分项,使分项和 = 合计;","3. 台账类表(含「其他/其余」差额项的)保留显性「其他」项并给出数值,使合计 = 全部分项(含其他)之和;","4. 只允许修正表格内的数值(合计格/分项格);严禁编造无来源数值、严禁删除表格、严禁改动表格外正文。","以局部 patch 方式输出:每个 patch 只包含表格区域的数值修正与必要定位上下文。",d.map(a=>`- ${a.message}`).join("\n")].join("\n"),o=await ab({originalContent:i,repairRound:"table-arithmetic-repair",diagnostics:a.generationDiagnostics,beforeMetrics:[j],shouldRollback:(a,b)=>b[0]>=a[0],apply:async()=>{let b=await a.withProgressHeartbeat(()=>(0,f.l8)({template:a.template,chapter:{id:h.id,title:h.title,content:i,evidence:h.evidence,missingFacts:h.missingFacts,sections:h.sections},issues:d.map(a=>a.message),promptTexts:g,requirement:a.requirement,forbidDrawingImages:!1,bidComposition:a.bidComposition,diagnostics:a.generationDiagnostics,signal:a.signal,patchGuard:(0,f.XG)("table-arithmetic-repair",a.generationDiagnostics)}));return b.content&&b.content!==i?b.content:i},recheck:a=>[(0,bX.OV)(a)]});o.rolledBack||o.content===i||(i=o.content,a.finalChapterDrafts[b]={...h,content:i},l=!0),o.rolledBack&&(m=!0);let p=(0,bX.OV)(i);if(n.push(p),0===p||p>=j||k>=2)break;j=p}l&&(d+=1);let o=(0,bX.OV)(i);e+=o;let p=(0,q.X5)({type:"llm_review",roleId:`agent-table-arithmetic-${c}`,status:0===o?"success":"failed",message:0===o?`表内算术自洽修复完成:${h.title}(残留轨迹 ${n.join("→")})`:l?`表内算术自洽修复部分生效:${h.title}(不自洽处数残留轨迹 ${n.join("→")},已执行 ${k} 轮定向修复(每章最多 2 轮);残留由终检照常复核)`:m?`表内算术自洽修复已回滚:${h.title}(修复后不自洽处数未下降,保留修复前正文;残留 ${o} 处由终检照常复核)`:`表内算术自洽修复未生效:${h.title}(模型未产生有效修改;残留 ${o} 处由终检照常复核)`,details:[...g.map(a=>a.message),o>0?`已执行 ${k} 轮定向修复,残留由终检照常复核`:""]},{subtitle:"表内算术自洽"});(0,q.fx)(a.progressStages,p),(0,q.fx)(a.finalGateRepairStages,p),a.emitProgress(a.finalChapterDrafts,a.progressStages)}d>0&&(a.finalMarkdown=a.rebuildFinalMarkdown(),await a.recomputeFinalValidationBundle()),a.generationDiagnostics.llm.lastInfo=`表内算术自洽修复:${c} 处不自洽,${d} 章完成定向修复,残留 ${e} 处(每章最多 2 轮收敛修复,残留由终检照常复核)`}async function ei(a){let b=function(a){let b=0,c=0,d=[];return a.forEach((a,e)=>{if(!a.content?.trim())return;let f=0;for(let b=0;b<4;b+=1){let b=(0,R.rz)(a);if(0===b.length)break;let c=new Set(b.map(a=>a.line));for(let g of(a.content=a.content.split("\n").filter((a,b)=>!c.has(b)).join("\n").replace(/\n{3,}/gu,"\n\n"),f+=b.length,b))d.push(`第 ${e+1} 章移除空壳标题「${g.rawTitle}」`)}if(0===f)return;b+=f;let g=(0,bh.PA)(a.content,{chapterNumber:e+1});a.content=g.markdown,g.fixedCount>0&&(c+=1)}),{removedCount:b,renumberedChapters:c,details:d}}(a.finalChapterDrafts),c=(0,q.X5)({type:"validation",roleId:"empty-section-sweep",status:"success",message:b.removedCount>0?`空节清扫完成:移除无依据空壳小节标题 ${b.removedCount} 处(${b.renumberedChapters} 章重排编号)`:"空节清扫核对通过:无无规划归属的空壳小节",details:b.details.length>0?b.details:void 0},{subtitle:"空节清扫"});(0,q.fx)(a.progressStages,c),(0,q.fx)(a.finalGateRepairStages,c),b.removedCount>0&&(a.finalMarkdown=a.rebuildFinalMarkdown(),await a.recomputeFinalValidationBundle()),a.emitProgress(a.finalChapterDrafts,a.progressStages)}async function ej(a){let b=dg(a.finalChapterDrafts),c=function(a){let b=0,c=[];return a.forEach((a,d)=>{if(!a.content?.trim())return;let f=b=>{let c=String(b||"").trim();return!c||(0,bi.cq)(c)||/^附录/u.test(c)||c6.gG.test(a.title)&&e.V.test(c)},g=(a.sections||[]).filter(a=>!f(a));if(0===g.length||(0,O.r4)(a.content).filter(a=>!f(a)).length<=g.length)return;let h=g.map(a=>(0,R.mJ)(a)),i=new Set(h),j=a.content.split("\n"),k=[];j.forEach((a,b)=>{if(!/^\s*###\s+\S/u.test(a))return;let c=(0,e.Jb)(a),d=c?(0,R.mJ)(c):"";d&&k.push({line:b,title:c,normalized:d})});let l=-1,m=0;for(let a of k){if(i.has(a.normalized)){l=a.line;continue}!(f(a.title)||h.some(b=>(0,e.ty)(a.normalized,b))||/(?:((?:\d+|[一二三四五六七八九十]+)))+$/u.test(a.title))&&(l<0||(j[a.line]=`#### ${a.title}`,m+=1,c.push(`第 ${d+1} 章「${a.title}」降为 H4(并入上方规划小节主题块)`)))}0!==m&&(b+=m,a.content=(0,bh.PA)(j.join("\n"),{chapterNumber:d+1}).markdown)}),{demotedCount:b,details:c}}(a.finalChapterDrafts),d=0;a.finalChapterDrafts.forEach((a,b)=>{if(!a.content?.trim())return;let c=(0,bh.PA)(a.content,{chapterNumber:b+1});c.fixedCount>0&&(a.content=c.markdown,d+=1)});let g=b.mergedCount+c.demotedCount,h=g>0||d>0;(0,f.kD)(a.generationDiagnostics,g+d);let i=[...b.details,...c.details],j=(0,q.X5)({type:"validation",roleId:"section-alignment-sweep",status:"success",message:h?`小节结构对齐收口:近名对齐/合并 ${b.mergedCount} 处、规划外小节降级 ${c.demotedCount} 处、编号重放 ${d} 章`:"小节结构对齐核对通过:成稿小节与规划主题块一一对应",details:i.length>0?i.slice(0,6):void 0},{subtitle:"结构对齐收口"});(0,q.fx)(a.progressStages,j),(0,q.fx)(a.finalGateRepairStages,j),h&&(a.finalMarkdown=a.rebuildFinalMarkdown(),await a.recomputeFinalValidationBundle()),a.emitProgress(a.finalChapterDrafts,a.progressStages)}async function ek(a){let b=cE(a.finalChapterDrafts),c=b.length>0?cF(a.finalChapterDrafts,b):{deletedCount:0,deletedSentences:[],remaining:b},d=0;for(let b of a.finalChapterDrafts){if(!b.content?.trim())continue;let a=(0,o.Vc)(b.content);a.removedCount>0&&(b.content=a.markdown,d+=a.removedCount)}let e=c.deletedCount+d,f=(0,q.X5)({type:"validation",roleId:"templating-sweep",status:"success",message:e>0?`模板化链尾清理:零信息前缀句删除 ${c.deletedCount} 处、重复段落去重 ${d} 处`:"模板化链尾核对通过:无零信息前缀句与重复段落残留",details:c.deletedSentences.length>0?c.deletedSentences.slice(0,3).map(a=>`前缀句删除:「${a.slice(0,40)}」`):void 0},{subtitle:"模板化清理收口"});(0,q.fx)(a.progressStages,f),(0,q.fx)(a.finalGateRepairStages,f),e>0&&(a.finalMarkdown=a.rebuildFinalMarkdown(),await a.recomputeFinalValidationBundle()),a.emitProgress(a.finalChapterDrafts,a.progressStages)}async function el(a){let b=function(a){let b=0,c=[];return a.forEach((a,d)=>{if(!a.content?.trim())return;let f=0;for(let g=0;g<6;g+=1){let g=a.sections||[],h=g.map((a,b)=>({section:String(a||"").trim(),index:b})).filter(a=>a.section),i=new Map;for(let a of h){let b=(0,R.Sn)(a.section);b&&i.set(b,[...i.get(b)||[],a])}let j=[...i.values()].find(a=>a.length>=2);if(!j)break;let k=a.content.split("\n"),l=[];k.forEach((a,b)=>{if(!/^\s*###\s+\S/u.test(a))return;let c=(0,e.Jb)(a),d=c?(0,R.mJ)(c):"";d&&l.push({line:b,title:c,normalized:d})});let m=a=>{let b=(0,R.mJ)(a);return l.find(a=>a.normalized===b)||l.find(a=>(0,e.ty)(a.normalized,b))},n=j.flatMap(a=>{let b=m(a.section);return b?[{section:a.section,index:a.index,heading:b}]:[]}),o=n.filter((a,b)=>n.findIndex(b=>b.heading.line===a.heading.line)===b),p=new Map;for(let a of n)p.set(a.heading.line,[...p.get(a.heading.line)||[],a]);let q=[...p.values()].find(a=>a.length>1);if(q){let e=q.find(a=>a.heading.normalized===(0,R.mJ)(a.section))||q[0],h=q.filter(a=>a!==e).map(a=>a.index);a.sections=g.filter((a,b)=>!h.includes(b)),b+=1,f+=1,c.push(`「${q.filter(a=>a!==e).map(a=>a.section).join("、")}」与「${e.section}」同节对齐去重(第 ${d+1} 章)`);continue}if(o.length<2)break;o.sort((a,b)=>a.heading.line-b.heading.line);let r=o[0],s=o[1],t=de(k,r.heading.line),u=de(k,s.heading.line),v=k.slice(r.heading.line+1,t);for(;v.length>0&&""===v[v.length-1].trim();)v.pop();let w=k.slice(s.heading.line+1,u);for(;w.length>0&&""===w[w.length-1].trim();)w.pop();for(;w.length>0&&""===w[0].trim();)w.shift();let x=w.length>0?[...v,"",...w,""]:[...v,""],y=r.heading.normalized===(0,R.mJ)(r.section)?k[r.heading.line]:`${df(k[r.heading.line])}${r.section}`;a.content=[...k.slice(0,r.heading.line),y,...x,...k.slice(t,s.heading.line),...k.slice(u)].join("\n").replace(/\n{3,}/gu,"\n\n"),a.sections=g.filter((a,b)=>b!==s.index),b+=1,f+=1,c.push(`「${s.section}」并入「${r.section}」(第 ${d+1} 章)`)}if(f>0){let b=(0,bh.PA)(a.content,{chapterNumber:d+1});a.content=b.markdown}}),{mergedCount:b,details:c}}(a.finalChapterDrafts),c=(0,q.X5)({type:"validation",roleId:"duplicate-theme-merge",status:"success",message:b.mergedCount>0?`重复主题小节合并:${b.mergedCount} 处(保留首现小节,后续标题行摘除、正文并入,规划数组同步)`:"重复主题小节核对通过:同桶小节无并存",details:b.details.length>0?b.details.slice(0,6):void 0},{subtitle:"重复主题合并"});(0,q.fx)(a.progressStages,c),(0,q.fx)(a.finalGateRepairStages,c),b.mergedCount>0&&(a.finalMarkdown=a.rebuildFinalMarkdown(),await a.recomputeFinalValidationBundle()),a.emitProgress(a.finalChapterDrafts,a.progressStages)}async function em(a){let b=[],c=(0,Q._G)(a.finalMarkdown),d=0;c!==a.finalMarkdown&&(a.finalMarkdown=c,d+=1,b.push("附表区内部话术清洗:内部推导口径已中性化(唯一口径/经验工效区间/清单批注等)"));let e=(0,cr.av)(a.finalMarkdown);e.markdown!==a.finalMarkdown&&(a.finalMarkdown=e.markdown,d+=e.splitCount,b.push(`超长段落切分:消除 >380 字符段落 ${e.splitCount} 处`));let g=(0,o._D)(a.finalMarkdown);g.fixedCount>0&&(a.finalMarkdown=g.markdown,d+=g.fixedCount,b.push(...g.details)),(0,f.kD)(a.generationDiagnostics,d);let h=b.length>0,i=(0,q.X5)({type:"validation",roleId:"delivery-structure-closure",status:"success",message:h?`交付结构收口:${b.join(";")}`:"交付结构收口核对通过:目录与正文一致、无超长段落",details:h?b:void 0},{subtitle:"交付结构收口"});(0,q.fx)(a.progressStages,i),(0,q.fx)(a.finalGateRepairStages,i),h&&await a.recomputeFinalValidationBundle(),a.emitProgress(a.finalChapterDrafts,a.progressStages)}async function en(a){let b=(0,bi.yp)(a.finalMarkdown),c=(0,q.X5)({type:"validation",roleId:"sentence-pattern-sweep",status:"success",message:b.removedCount>0?`句模复读链尾收口:宣告引导句确定性剥离 ${b.removedCount} 处(列表引导语删除无损,列表内容保留)`:"句模复读链尾核对通过:无宣告引导句残留",details:b.removedSentences.length>0?b.removedSentences.slice(0,4).map(a=>`引导句剥离:「${a.slice(0,40)}」`):void 0},{subtitle:"模板化清理收口"});(0,q.fx)(a.progressStages,c),(0,q.fx)(a.finalGateRepairStages,c),b.removedCount>0&&(a.finalMarkdown=b.markdown,await a.recomputeFinalValidationBundle()),a.emitProgress(a.finalChapterDrafts,a.progressStages)}async function eo(a){let b=function(a){let b=a.split("\n"),c=[],d="(文首)";b.forEach((a,b)=>{let e=a.trim();/^##\s+/u.test(e)&&(d=e),c[b]=d});let e=[],f=[],g=new Map,h=0,i=0;for(let b of bP(a)){let a=b.occurrences;if(a.length<2)continue;let d=1===new Set(a.map(a=>c[a.lineIndex])).size,j=bi.Lw.test(a[0].raw);if(!d&&!j){f.push(a[0].raw);continue}for(let b of a.slice(1)){let a=g.get(b.lineIndex)||[];a.push({start:b.start,end:b.end}),g.set(b.lineIndex,a),e.push(b.raw),d?h+=1:i+=1}}if(0===e.length)return{markdown:a,removedCount:0,removedSentences:e,keptSentences:f,sameChapterRemoved:h,generalizedRemoved:i};for(let[a,c]of g){let d=b[a];for(let a of c.sort((a,b)=>b.start-a.start)){let b=a.start;for(;b>0&&/\s/u.test(d[b-1]);)b-=1;let c=a.end;for(;c<d.length&&/\s/u.test(d[c]);)c+=1;/[。;;]/u.test(d[c]||"")&&(c+=1),d=d.slice(0,b)+d.slice(c)}b[a]=""===d.trim()?"":d.replace(/^[ \t]+/u,"").replace(/[ \t]+$/u,"")}return{markdown:b.join("\n").replace(/\n{4,}/gu,"\n\n\n"),removedCount:e.length,removedSentences:e,keptSentences:f,sameChapterRemoved:h,generalizedRemoved:i}}(a.finalMarkdown),c=b.removedSentences.slice(0,3).map(a=>`复读坍塌:「${a.slice(0,40)}」`);b.keptSentences.length>0&&c.push(`跨章业务复读保留 ${b.keptSentences.length} 种(合理重申不坍塌)`);let d=(0,q.X5)({type:"validation",roleId:"duplicate-sentence-collapse",status:"success",message:b.removedCount>0?`句级复读坍塌:完全重复句保首次删后续 ${b.removedCount} 处(同章复读 ${b.sameChapterRemoved} 处、跨章泛化归口复读 ${b.generalizedRemoved} 处)`:"句级复读核对通过:无完全重复句残留",details:c.length>0?c:void 0},{subtitle:"模板化清理收口"});(0,q.fx)(a.progressStages,d),(0,q.fx)(a.finalGateRepairStages,d),b.removedCount>0&&(a.finalMarkdown=b.markdown,await a.recomputeFinalValidationBundle()),a.emitProgress(a.finalChapterDrafts,a.progressStages)}async function ep(a){let b=function(a){let b,c=a.split("\n"),d=[];if(c.forEach((a,e)=>{let f=a.trim();/^##\s+/u.test(f)&&(b&&(b.endLine=e,d.push(b)),b={startLine:e,endLine:c.length,title:f.replace(/^#+\s*/u,"")})}),b&&d.push(b),0===d.length)return{markdown:a,prefixRemoved:0,prefixSentences:[],paragraphRemoved:0,targetCount:0};let e=d.map((a,b)=>({id:`md-chapter-${b}`,title:a.title,content:c.slice(a.startLine,a.endLine).join("\n"),evidence:[],missingFacts:[]})),f=cE(e),g=f.length>0?cF(e,f):{deletedCount:0,deletedSentences:[],remaining:f},h=0;for(let a of e){if(!a.content?.trim())continue;let b=(0,o.Vc)(a.content);b.removedCount>0&&(a.content=b.markdown,h+=b.removedCount)}if(0===g.deletedCount&&0===h)return{markdown:a,prefixRemoved:0,prefixSentences:[],paragraphRemoved:0,targetCount:f.length};let i=[...c];for(let a=d.length-1;a>=0;a-=1){let b=d[a];i.splice(b.startLine,b.endLine-b.startLine,...e[a].content.split("\n"))}return{markdown:i.join("\n"),prefixRemoved:g.deletedCount,prefixSentences:g.deletedSentences,paragraphRemoved:h,targetCount:f.length}}(a.finalMarkdown),c=b.prefixRemoved+b.paragraphRemoved,d=(0,q.X5)({type:"validation",roleId:"templating-tail-replay",status:"success",message:c>0?`模板化链尾重放(markdown):零信息前缀句删除 ${b.prefixRemoved} 处、重复段落去重 ${b.paragraphRemoved} 处`:"模板化链尾重放核对通过:无零信息前缀句与重复段落残留",details:b.prefixSentences.length>0?b.prefixSentences.slice(0,3).map(a=>`前缀句删除:「${a.slice(0,40)}」`):void 0},{subtitle:"模板化清理收口"});(0,q.fx)(a.progressStages,d),(0,q.fx)(a.finalGateRepairStages,d),c>0&&(a.finalMarkdown=b.markdown,await a.recomputeFinalValidationBundle()),a.emitProgress(a.finalChapterDrafts,a.progressStages)}function eq(a){return Math.max(0,Math.min(100,Math.round(a)))}async function er(a){let b=await cC(a),c=a.reduce((a,b)=>a+(b.content.match(/本小节围绕|交底覆盖率按100%|24小时内形成整改责任|按施工准备→过程实施→检查验收→问题整改→资料归档的闭环组织|按作业条件确认→技术交底→过程实施|依据本项目已确认资料中的项目边界/gu)||[]).length,0),d=await (0,bC.Bt)(a.map(a=>a.content).join("\n")),e=400*Math.max(0,d.ratio-.1);return{score:eq(100-15*c-25*b.filter(a=>"error"===a.level).length-e),detail:`模板化空话命中 ${c} 处,套话句占比 ${(100*d.ratio).toFixed(1)}%(docx 达标线 ≤10%),废话段问题 ${b.length} 项`}}async function es(a,b="",c={}){let d=function(a){let b=a.map(a=>`${a.title} ${(a.sections||[]).join(" ")} ${a.content}`).filter(a=>bF(a).reduce((a,b)=>a+b.length,0)>=200).join("\n"),c=[{label:"工程概况",pattern:/工程概况|项目概况|基本概况/u},{label:"主要施工内容",pattern:/主要施工内容/u},{label:"重难点分析",pattern:/重点.{0,4}难点/u},{label:"施工部署",pattern:/施工部署|总体部署|流水/u},{label:"进度计划",pattern:/进度计划|工期保障|工期计划/u},{label:"质量保证",pattern:/质量保证|质量管理|质量控制/u},{label:"安全文明",pattern:/安全.{0,8}(?:管理|措施|文明)|文明施工/u},{label:"资源配置",pattern:/劳动力|机械设备|材料.{0,4}计划|资源配置/u},{label:"绿色环保",pattern:/绿色施工|扬尘|噪声|环保/u},{label:"应急管理",pattern:/应急/u}],d=c.filter(a=>a.pattern.test(b)),e=eq(d.length/c.length*100),f=c.filter(a=>!a.pattern.test(b)).map(a=>a.label);return{score:e,detail:`覆盖 ${d.length}/${c.length} 个核心结构组${f.length?`;缺失:${f.join("、")}`:""}`}}(a),e=function(a){let b=a.map(a=>a.content).join("\n"),c=bG(b,cs.s2),d=bG(b,/工程量|材料|设备|范围|流程|验收|检测|复试|调试|隐蔽|检验批|资料|记录|系统|部位|接口|规格|标准/gu),e=Math.max(1,b.length),f=c.size/(e/1e3);return{score:eq(Math.min(100,22*f+d.size/18*15)),detail:`量化参数 ${c.size} 项(每千字 ${f.toFixed(1)}),专业事实词 ${d.size}/18 类`}}(a),f=function(a){let b=a.map(a=>a.content).join("\n"),c=bG(b,cs.aX),d=Math.max(1,b.length),e=c.size/(d/1e3);return{score:eq(Math.min(100,20*e+40)),detail:`工艺参数 ${c.size} 项(每千字 ${e.toFixed(1)})`}}(a),g=function(a,b=""){let c=(b||a.map(a=>a.content).join("\n\n")).split("\n"),d=0,e=0,f=0;for(;f<c.length;){let a=c[f].trim();if(!/^\|.+\|$/u.test(a)){f+=1;continue}let b=[];for(;f<c.length&&/^\|.+\|$/u.test(c[f].trim());)b.push(c[f].trim()),f+=1;b.length<3||(d+=1,0===function(a){let b=(a[0]||"").split("|").slice(1,-1).map(a=>(0,cr.jG)(a.trim()));return a.slice(1).filter(a=>a.replace(/\|/gu,"").replace(/[\s\-:]/gu,"").length>0).reduce((a,c)=>{let d=c.split("|").slice(1,-1).map(a=>(0,cr.jG)(a.trim())),e=/^[\s|]*\|?\s*(?:合计|小计|总计|累计)/u.test(c);return a+d.filter((a,c)=>(""===a||"-"===a||"—"===a||"/"===a)&&(!e||"—"!==a)&&!("—"===a&&/规格|型号/u.test(b[c]||""))).length},0)}(b)&&(e+=1))}return{score:0===d?40:eq(e/d*100),detail:`表格 ${d} 个,其中字段完整 ${e} 个`}}(a,b),h=await er(a),i=function(a){let b=cB(a);return{score:eq(100-20*b.length-20*b.filter(a=>"error"===a.level).length),detail:`重复段落问题 ${b.length} 项`}}(a),j=function(a,b=""){let c=bF(b||a.map(a=>a.content).join("\n\n")),d=[{label:"质量标准",pattern:/质量标准|质量要求|合格率/u},{label:"计划工期",pattern:/计划工期|工期要求|日历天/u},{label:"保修",pattern:/缺陷责任期|保修|质保/u},{label:"安全目标",pattern:/安全.{0,8}目标|文明.{0,8}目标/u},{label:"项目经理",pattern:/项目经理|项目负责人/u}],e=d.filter(a=>c.some(b=>a.pattern.test(b)&&bH.test(b))),f=d.filter(a=>!e.includes(a));return{score:eq(e.length/d.length*100),detail:`招标硬性要求响应 ${e.length}/${d.length} 项${f.length?`(未响应:${f.map(a=>a.label).join("、")})`:""}`}}(a,b),k=function(a){if(!a)return{score:100,detail:"模板化未检测(无信号,按满分计)"};let b=300*Math.max(0,a.fillerRatio-.1),c=Math.min(40,8*a.vagueHitCount),d=a.difficultyCountermeasures>0?Math.min(30,60*Math.max(0,.5-a.difficultyCountermeasureRatio)):0,e=Math.min(30,10*a.crossProjectResidue.length);return{score:eq(100-b-c-d-e),detail:`套话句占比 ${(100*a.fillerRatio).toFixed(1)}%(线 ≤10%)、模糊应答词 ${a.vagueHitCount} 处、重难点双达标 ${a.difficultyBothCount}/${a.difficultyCountermeasures}(线 ≥50%)、跨项目残留 ${a.crossProjectResidue.length} 处;扣分 ${b.toFixed(0)}+${c.toFixed(0)}+${d.toFixed(0)}+${e.toFixed(0)}`}}(c.templating),l=[{key:"structure",label:"结构完整度",score:d.score,detail:d.detail,weight:0,baseWeight:.18},{key:"factLanding",label:"事实落位率",score:e.score,detail:e.detail,weight:0,baseWeight:.18},{key:"processParameter",label:"工艺参数密度",score:f.score,detail:f.detail,weight:0,baseWeight:.16},{key:"table",label:"表格完整度",score:g.score,detail:g.detail,weight:0,baseWeight:.12},{key:"filler",label:"废话控制",score:h.score,detail:h.detail,weight:0,baseWeight:.14},{key:"duplication",label:"重复控制",score:i.score,detail:i.detail,weight:0,baseWeight:.12},{key:"reviewResponse",label:"评标响应度",score:j.score,detail:j.detail,weight:0,baseWeight:.1}],m=.2*!!c.templating,n=[...l.map(({baseWeight:a,...b})=>({...b,weight:Number((a*(1-m)).toFixed(4))})),...m>0?[{key:"templating",label:"表述实质性",score:k.score,detail:k.detail,weight:m}]:[]],o=eq(n.reduce((a,b)=>a+b.score*b.weight,0)),p=o>=85?"专业":o>=70?"良好":o>=55?"合格":"待提升",q=[...cB(a),...await cC(a),...cG(a),...cH(a)].slice(0,5).map(a=>a.message),r=n.filter(a=>a.score<70).map(a=>`${a.label}(${a.score}分)`);return{total:o,grade:p,dimensions:n,summary:`施工组织设计专业度评分 ${o} 分(${p};从属口径,交付主尺见六维质量报告)${c.templating&&"light"!==c.templating.level?`;模板化等级:${"heavy"===c.templating.level?"重度":"中度"}(已按「表述实质性」维度计分,不再封顶总分)`:""}${r.length?`;待提升:${r.join("、")}`:""}`,topIssues:q,caliber:b_}}async function et(a){var b;if(!("heavy"===(b=a.templating).level||b.vagueHitCount>0||b.difficultyHeavyTemplated))return{issues:[],reviewed:!1};let c=(0,bC.T4)(a.markdown),d=[`确定性检测信号:模板化等级=${a.templating.level},套话句占比=${(100*a.templating.fillerRatio).toFixed(1)}%,模糊应答词命中=${a.templating.vagueHitCount}(${a.templating.vaguePhrases.join("、")||"无"}),重难点归因+量化双达标占比=${(100*a.templating.difficultyCountermeasureRatio).toFixed(0)}%,跨项目残留=${a.templating.crossProjectResidue.join("、")||"无"}${c.found.length?`,四新技术命中=${c.found.join("、")}`:""}`,`待复核正文(节选):
|
|
55
|
+
以局部 patch 方式输出:每处 patch 只包含新增表题行与必要定位上下文,不得重写其他内容。`,m=await ab({originalContent:e.content,repairRound:"table-caption-repair",diagnostics:a.generationDiagnostics,beforeMetrics:[g.length],shouldRollback:(a,b)=>b[0]>=g.length,apply:async()=>{let b=await a.withProgressHeartbeat(()=>(0,f.l8)({template:a.template,chapter:{id:e.id,title:e.title,content:e.content,evidence:e.evidence,missingFacts:e.missingFacts,sections:e.sections},issues:[`正文存在 ${g.length} 张缺少表题的表格`],promptTexts:l,requirement:a.requirement,forbidDrawingImages:!1,diagnostics:a.generationDiagnostics,signal:a.signal,patchGuard:(0,f.XG)("table-caption-repair",a.generationDiagnostics)}));return b.content&&b.content!==e.content?b.content:e.content},recheck:a=>[b(a)]}),n=m.content;m.rolledBack||n===e.content||(a.finalChapterDrafts[c]={...e,content:h?(0,k.w_)(n,h):n},d+=1);let o=m.rolledBack?g.length:m.afterMetrics[0],p=(0,q.X5)({type:"llm_review",roleId:i,status:m.rolledBack||o>0?"failed":"success",message:m.rolledBack?`表格题名补全已回滚:${e.title}(补名后无题表数未下降,保留修复前正文)`:o>0?`表格题名补全未完全生效:${e.title}(残留 ${o} 张无题表由终检复核)`:`表格题名补全完成:${e.title}`,details:[`无题表 ${g.length} 张 → 残留 ${o} 张`]},{subtitle:"表格题名补全"});(0,q.fx)(a.progressStages,p),(0,q.fx)(a.finalGateRepairStages,p),a.emitProgress(a.finalChapterDrafts,a.progressStages)}(c>0||d>0)&&(a.finalMarkdown=a.rebuildFinalMarkdown(),await a.recomputeFinalValidationBundle())}async function eh(a){let b=new Map;for(let c of a.finalChapterDrafts){let a=(0,bX.qE)(c.content);a.length>0&&b.set(c.id,a)}let c=[...b.keys()].reduce((b,c)=>{let d=a.finalChapterDrafts.find(a=>a.id===c);return b+(d?(0,bX.OV)(d.content):0)},0);if(0===b.size){let b=(0,q.X5)({type:"validation",roleId:"table-arithmetic-repair",status:"success",message:"表内算术自洽核对通过:全部含合计标记的表格分项和=合计"},{subtitle:"表内算术自洽"});(0,q.fx)(a.progressStages,b),(0,q.fx)(a.finalGateRepairStages,b),a.emitProgress(a.finalChapterDrafts,a.progressStages);return}let d=0,e=0;for(let[c,g]of b){let b=a.finalChapterDrafts.findIndex(a=>a.id===c);if(b<0)continue;let h=a.finalChapterDrafts[b],i=h.content,j=(0,bX.OV)(i),k=0,l=!1,m=!1,n=[j];for(;j>0&&k<2;){k+=1;let d=(0,bX.qE)(i),e=(0,q.X5)({type:"llm_review",roleId:`agent-table-arithmetic-${c}`,status:"running",message:`表格算术不自洽 ${d.length} 张表,第 ${k} 轮定向修复中:${h.title}`,details:d.map(a=>a.message)},{subtitle:"表内算术自洽"});(0,q.fx)(a.progressStages,e),(0,q.fx)(a.finalGateRepairStages,e),a.emitProgress(a.finalChapterDrafts,a.progressStages);let g=["【表格算术自洽修复】下列表格的「合计」(合计行/合计列)与分项之和对不上,请逐表修正表内数值:",...k>1?[`本轮为第 ${k} 轮(最多 2 轮):上一轮修复后仍有残留,必须让合计与分项之和完全相等。`]:[],"1. 以分项为准重算合计:合计 = 该行/该列已列出的分项之和(单位一致);","2. 若分项数值本身与资料/清单/上下文矛盾,按权威值修正分项,使分项和 = 合计;","3. 台账类表(含「其他/其余」差额项的)保留显性「其他」项并给出数值,使合计 = 全部分项(含其他)之和;","4. 只允许修正表格内的数值(合计格/分项格);严禁编造无来源数值、严禁删除表格、严禁改动表格外正文。","以局部 patch 方式输出:每个 patch 只包含表格区域的数值修正与必要定位上下文。",d.map(a=>`- ${a.message}`).join("\n")].join("\n"),o=await ab({originalContent:i,repairRound:"table-arithmetic-repair",diagnostics:a.generationDiagnostics,beforeMetrics:[j],shouldRollback:(a,b)=>b[0]>=a[0],apply:async()=>{let b=await a.withProgressHeartbeat(()=>(0,f.l8)({template:a.template,chapter:{id:h.id,title:h.title,content:i,evidence:h.evidence,missingFacts:h.missingFacts,sections:h.sections},issues:d.map(a=>a.message),promptTexts:g,requirement:a.requirement,forbidDrawingImages:!1,bidComposition:a.bidComposition,diagnostics:a.generationDiagnostics,signal:a.signal,patchGuard:(0,f.XG)("table-arithmetic-repair",a.generationDiagnostics)}));return b.content&&b.content!==i?b.content:i},recheck:a=>[(0,bX.OV)(a)]});o.rolledBack||o.content===i||(i=o.content,a.finalChapterDrafts[b]={...h,content:i},l=!0),o.rolledBack&&(m=!0);let p=(0,bX.OV)(i);if(n.push(p),0===p||p>=j||k>=2)break;j=p}l&&(d+=1);let o=(0,bX.OV)(i);e+=o;let p=(0,q.X5)({type:"llm_review",roleId:`agent-table-arithmetic-${c}`,status:0===o?"success":"failed",message:0===o?`表内算术自洽修复完成:${h.title}(残留轨迹 ${n.join("→")})`:l?`表内算术自洽修复部分生效:${h.title}(不自洽处数残留轨迹 ${n.join("→")},已执行 ${k} 轮定向修复(每章最多 2 轮);残留由终检照常复核)`:m?`表内算术自洽修复已回滚:${h.title}(修复后不自洽处数未下降,保留修复前正文;残留 ${o} 处由终检照常复核)`:`表内算术自洽修复未生效:${h.title}(模型未产生有效修改;残留 ${o} 处由终检照常复核)`,details:[...g.map(a=>a.message),o>0?`已执行 ${k} 轮定向修复,残留由终检照常复核`:""]},{subtitle:"表内算术自洽"});(0,q.fx)(a.progressStages,p),(0,q.fx)(a.finalGateRepairStages,p),a.emitProgress(a.finalChapterDrafts,a.progressStages)}d>0&&(a.finalMarkdown=a.rebuildFinalMarkdown(),await a.recomputeFinalValidationBundle()),a.generationDiagnostics.llm.lastInfo=`表内算术自洽修复:${c} 处不自洽,${d} 章完成定向修复,残留 ${e} 处(每章最多 2 轮收敛修复,残留由终检照常复核)`}async function ei(a){let b=function(a){let b=0,c=0,d=[];return a.forEach((a,e)=>{if(!a.content?.trim())return;let f=0;for(let b=0;b<4;b+=1){let b=(0,R.rz)(a);if(0===b.length)break;let c=new Set(b.map(a=>a.line));for(let g of(a.content=a.content.split("\n").filter((a,b)=>!c.has(b)).join("\n").replace(/\n{3,}/gu,"\n\n"),f+=b.length,b))d.push(`第 ${e+1} 章移除空壳标题「${g.rawTitle}」`)}if(0===f)return;b+=f;let g=(0,bh.PA)(a.content,{chapterNumber:e+1});a.content=g.markdown,g.fixedCount>0&&(c+=1)}),{removedCount:b,renumberedChapters:c,details:d}}(a.finalChapterDrafts),c=(0,q.X5)({type:"validation",roleId:"empty-section-sweep",status:"success",message:b.removedCount>0?`空节清扫完成:移除无依据空壳小节标题 ${b.removedCount} 处(${b.renumberedChapters} 章重排编号)`:"空节清扫核对通过:无无规划归属的空壳小节",details:b.details.length>0?b.details:void 0},{subtitle:"空节清扫"});(0,q.fx)(a.progressStages,c),(0,q.fx)(a.finalGateRepairStages,c),b.removedCount>0&&(a.finalMarkdown=a.rebuildFinalMarkdown(),await a.recomputeFinalValidationBundle()),a.emitProgress(a.finalChapterDrafts,a.progressStages)}async function ej(a){let b=dg(a.finalChapterDrafts),c=function(a){let b=0,c=[];return a.forEach((a,d)=>{if(!a.content?.trim())return;let f=b=>{let c=String(b||"").trim();return!c||(0,bi.cq)(c)||/^附录/u.test(c)||c6.gG.test(a.title)&&e.V.test(c)},g=(a.sections||[]).filter(a=>!f(a));if(0===g.length||(0,O.r4)(a.content).filter(a=>!f(a)).length<=g.length)return;let h=g.map(a=>(0,R.mJ)(a)),i=new Set(h),j=a.content.split("\n"),k=[];j.forEach((a,b)=>{if(!/^\s*###\s+\S/u.test(a))return;let c=(0,e.Jb)(a),d=c?(0,R.mJ)(c):"";d&&k.push({line:b,title:c,normalized:d})});let l=-1,m=0;for(let a of k){if(i.has(a.normalized)){l=a.line;continue}!(f(a.title)||h.some(b=>(0,e.ty)(a.normalized,b))||/(?:((?:\d+|[一二三四五六七八九十]+)))+$/u.test(a.title))&&(l<0||(j[a.line]=`#### ${a.title}`,m+=1,c.push(`第 ${d+1} 章「${a.title}」降为 H4(并入上方规划小节主题块)`)))}0!==m&&(b+=m,a.content=(0,bh.PA)(j.join("\n"),{chapterNumber:d+1}).markdown)}),{demotedCount:b,details:c}}(a.finalChapterDrafts),d=0;a.finalChapterDrafts.forEach((a,b)=>{if(!a.content?.trim())return;let c=(0,bh.PA)(a.content,{chapterNumber:b+1});c.fixedCount>0&&(a.content=c.markdown,d+=1)});let g=b.mergedCount+c.demotedCount,h=g>0||d>0;(0,f.kD)(a.generationDiagnostics,g+d);let i=[...b.details,...c.details],j=(0,q.X5)({type:"validation",roleId:"section-alignment-sweep",status:"success",message:h?`小节结构对齐收口:近名对齐/合并 ${b.mergedCount} 处、规划外小节降级 ${c.demotedCount} 处、编号重放 ${d} 章`:"小节结构对齐核对通过:成稿小节与规划主题块一一对应",details:i.length>0?i.slice(0,6):void 0},{subtitle:"结构对齐收口"});(0,q.fx)(a.progressStages,j),(0,q.fx)(a.finalGateRepairStages,j),h&&(a.finalMarkdown=a.rebuildFinalMarkdown(),await a.recomputeFinalValidationBundle()),a.emitProgress(a.finalChapterDrafts,a.progressStages)}async function ek(a){let b=cE(a.finalChapterDrafts),c=b.length>0?cF(a.finalChapterDrafts,b):{deletedCount:0,deletedSentences:[],remaining:b},d=0;for(let b of a.finalChapterDrafts){if(!b.content?.trim())continue;let a=(0,o.Vc)(b.content);a.removedCount>0&&(b.content=a.markdown,d+=a.removedCount)}let e=c.deletedCount+d,f=(0,q.X5)({type:"validation",roleId:"templating-sweep",status:"success",message:e>0?`模板化链尾清理:零信息前缀句删除 ${c.deletedCount} 处、重复段落去重 ${d} 处`:"模板化链尾核对通过:无零信息前缀句与重复段落残留",details:c.deletedSentences.length>0?c.deletedSentences.slice(0,3).map(a=>`前缀句删除:「${a.slice(0,40)}」`):void 0},{subtitle:"模板化清理收口"});(0,q.fx)(a.progressStages,f),(0,q.fx)(a.finalGateRepairStages,f),e>0&&(a.finalMarkdown=a.rebuildFinalMarkdown(),await a.recomputeFinalValidationBundle()),a.emitProgress(a.finalChapterDrafts,a.progressStages)}async function el(a){let b=function(a){let b=0,c=[];return a.forEach((a,d)=>{if(!a.content?.trim())return;let f=0;for(let g=0;g<6;g+=1){let g=a.sections||[],h=g.map((a,b)=>({section:String(a||"").trim(),index:b})).filter(a=>a.section),i=new Map;for(let a of h){let b=(0,R.Sn)(a.section);b&&i.set(b,[...i.get(b)||[],a])}let j=[...i.values()].find(a=>a.length>=2);if(!j)break;let k=a.content.split("\n"),l=[];k.forEach((a,b)=>{if(!/^\s*###\s+\S/u.test(a))return;let c=(0,e.Jb)(a),d=c?(0,R.mJ)(c):"";d&&l.push({line:b,title:c,normalized:d})});let m=a=>{let b=(0,R.mJ)(a);return l.find(a=>a.normalized===b)||l.find(a=>(0,e.ty)(a.normalized,b))},n=j.flatMap(a=>{let b=m(a.section);return b?[{section:a.section,index:a.index,heading:b}]:[]}),o=n.filter((a,b)=>n.findIndex(b=>b.heading.line===a.heading.line)===b),p=new Map;for(let a of n)p.set(a.heading.line,[...p.get(a.heading.line)||[],a]);let q=[...p.values()].find(a=>a.length>1);if(q){let e=q.find(a=>a.heading.normalized===(0,R.mJ)(a.section))||q[0],h=q.filter(a=>a!==e).map(a=>a.index);a.sections=g.filter((a,b)=>!h.includes(b)),b+=1,f+=1,c.push(`「${q.filter(a=>a!==e).map(a=>a.section).join("、")}」与「${e.section}」同节对齐去重(第 ${d+1} 章)`);continue}if(o.length<2)break;o.sort((a,b)=>a.heading.line-b.heading.line);let r=o[0],s=o[1],t=de(k,r.heading.line),u=de(k,s.heading.line),v=k.slice(r.heading.line+1,t);for(;v.length>0&&""===v[v.length-1].trim();)v.pop();let w=k.slice(s.heading.line+1,u);for(;w.length>0&&""===w[w.length-1].trim();)w.pop();for(;w.length>0&&""===w[0].trim();)w.shift();let x=w.length>0?[...v,"",...w,""]:[...v,""],y=r.heading.normalized===(0,R.mJ)(r.section)?k[r.heading.line]:`${df(k[r.heading.line])}${r.section}`;a.content=[...k.slice(0,r.heading.line),y,...x,...k.slice(t,s.heading.line),...k.slice(u)].join("\n").replace(/\n{3,}/gu,"\n\n"),a.sections=g.filter((a,b)=>b!==s.index),b+=1,f+=1,c.push(`「${s.section}」并入「${r.section}」(第 ${d+1} 章)`)}if(f>0){let b=(0,bh.PA)(a.content,{chapterNumber:d+1});a.content=b.markdown}}),{mergedCount:b,details:c}}(a.finalChapterDrafts),c=(0,q.X5)({type:"validation",roleId:"duplicate-theme-merge",status:"success",message:b.mergedCount>0?`重复主题小节合并:${b.mergedCount} 处(保留首现小节,后续标题行摘除、正文并入,规划数组同步)`:"重复主题小节核对通过:同桶小节无并存",details:b.details.length>0?b.details.slice(0,6):void 0},{subtitle:"重复主题合并"});(0,q.fx)(a.progressStages,c),(0,q.fx)(a.finalGateRepairStages,c),b.mergedCount>0&&(a.finalMarkdown=a.rebuildFinalMarkdown(),await a.recomputeFinalValidationBundle()),a.emitProgress(a.finalChapterDrafts,a.progressStages)}async function em(a){let b=[],c=(0,Q._G)(a.finalMarkdown),d=0;c!==a.finalMarkdown&&(a.finalMarkdown=c,d+=1,b.push("附表区内部话术清洗:内部推导口径已中性化(唯一口径/经验工效区间/清单批注等)"));let e=(0,cr.av)(a.finalMarkdown);e.markdown!==a.finalMarkdown&&(a.finalMarkdown=e.markdown,d+=e.splitCount,b.push(`超长段落切分:消除 >380 字符段落 ${e.splitCount} 处`));let g=(0,o._D)(a.finalMarkdown);g.fixedCount>0&&(a.finalMarkdown=g.markdown,d+=g.fixedCount,b.push(...g.details)),(0,f.kD)(a.generationDiagnostics,d);let h=b.length>0,i=(0,q.X5)({type:"validation",roleId:"delivery-structure-closure",status:"success",message:h?`交付结构收口:${b.join(";")}`:"交付结构收口核对通过:目录与正文一致、无超长段落",details:h?b:void 0},{subtitle:"交付结构收口"});(0,q.fx)(a.progressStages,i),(0,q.fx)(a.finalGateRepairStages,i),h&&await a.recomputeFinalValidationBundle(),a.emitProgress(a.finalChapterDrafts,a.progressStages)}async function en(a){let b=(0,bi.yp)(a.finalMarkdown),c=(0,q.X5)({type:"validation",roleId:"sentence-pattern-sweep",status:"success",message:b.removedCount>0?`句模复读链尾收口:宣告引导句确定性剥离 ${b.removedCount} 处(列表引导语删除无损,列表内容保留)`:"句模复读链尾核对通过:无宣告引导句残留",details:b.removedSentences.length>0?b.removedSentences.slice(0,4).map(a=>`引导句剥离:「${a.slice(0,40)}」`):void 0},{subtitle:"模板化清理收口"});(0,q.fx)(a.progressStages,c),(0,q.fx)(a.finalGateRepairStages,c),b.removedCount>0&&(a.finalMarkdown=b.markdown,await a.recomputeFinalValidationBundle()),a.emitProgress(a.finalChapterDrafts,a.progressStages)}async function eo(a){let b=function(a){let b=a.split("\n"),c=[],d="(文首)";b.forEach((a,b)=>{let e=a.trim();/^##\s+/u.test(e)&&(d=e),c[b]=d});let e=[],f=[],g=new Map,h=0,i=0;for(let b of bP(a)){let a=b.occurrences;if(a.length<2)continue;let d=1===new Set(a.map(a=>c[a.lineIndex])).size,j=bi.Lw.test(a[0].raw);if(!d&&!j){f.push(a[0].raw);continue}for(let b of a.slice(1)){let a=g.get(b.lineIndex)||[];a.push({start:b.start,end:b.end}),g.set(b.lineIndex,a),e.push(b.raw),d?h+=1:i+=1}}if(0===e.length)return{markdown:a,removedCount:0,removedSentences:e,keptSentences:f,sameChapterRemoved:h,generalizedRemoved:i};for(let[a,c]of g){let d=b[a];for(let a of c.sort((a,b)=>b.start-a.start)){let b=a.start;for(;b>0&&/\s/u.test(d[b-1]);)b-=1;let c=a.end;for(;c<d.length&&/\s/u.test(d[c]);)c+=1;/[。;;]/u.test(d[c]||"")&&(c+=1),d=d.slice(0,b)+d.slice(c)}b[a]=""===d.trim()?"":d.replace(/^[ \t]+/u,"").replace(/[ \t]+$/u,"")}return{markdown:b.join("\n").replace(/\n{4,}/gu,"\n\n\n"),removedCount:e.length,removedSentences:e,keptSentences:f,sameChapterRemoved:h,generalizedRemoved:i}}(a.finalMarkdown),c=b.removedSentences.slice(0,3).map(a=>`复读坍塌:「${a.slice(0,40)}」`);b.keptSentences.length>0&&c.push(`跨章业务复读保留 ${b.keptSentences.length} 种(合理重申不坍塌)`);let d=(0,q.X5)({type:"validation",roleId:"duplicate-sentence-collapse",status:"success",message:b.removedCount>0?`句级复读坍塌:完全重复句保首次删后续 ${b.removedCount} 处(同章复读 ${b.sameChapterRemoved} 处、跨章泛化归口复读 ${b.generalizedRemoved} 处)`:"句级复读核对通过:无完全重复句残留",details:c.length>0?c:void 0},{subtitle:"模板化清理收口"});(0,q.fx)(a.progressStages,d),(0,q.fx)(a.finalGateRepairStages,d),b.removedCount>0&&(a.finalMarkdown=b.markdown,await a.recomputeFinalValidationBundle()),a.emitProgress(a.finalChapterDrafts,a.progressStages)}async function ep(a){let b=function(a){let b,c=a.split("\n"),d=[];if(c.forEach((a,e)=>{let f=a.trim();/^##\s+/u.test(f)&&(b&&(b.endLine=e,d.push(b)),b={startLine:e,endLine:c.length,title:f.replace(/^#+\s*/u,"")})}),b&&d.push(b),0===d.length)return{markdown:a,prefixRemoved:0,prefixSentences:[],paragraphRemoved:0,targetCount:0};let e=d.map((a,b)=>({id:`md-chapter-${b}`,title:a.title,content:c.slice(a.startLine,a.endLine).join("\n"),evidence:[],missingFacts:[]})),f=cE(e),g=f.length>0?cF(e,f):{deletedCount:0,deletedSentences:[],remaining:f},h=0;for(let a of e){if(!a.content?.trim())continue;let b=(0,o.Vc)(a.content);b.removedCount>0&&(a.content=b.markdown,h+=b.removedCount)}if(0===g.deletedCount&&0===h)return{markdown:a,prefixRemoved:0,prefixSentences:[],paragraphRemoved:0,targetCount:f.length};let i=[...c];for(let a=d.length-1;a>=0;a-=1){let b=d[a];i.splice(b.startLine,b.endLine-b.startLine,...e[a].content.split("\n"))}return{markdown:i.join("\n"),prefixRemoved:g.deletedCount,prefixSentences:g.deletedSentences,paragraphRemoved:h,targetCount:f.length}}(a.finalMarkdown),c=b.prefixRemoved+b.paragraphRemoved,d=(0,q.X5)({type:"validation",roleId:"templating-tail-replay",status:"success",message:c>0?`模板化链尾重放(markdown):零信息前缀句删除 ${b.prefixRemoved} 处、重复段落去重 ${b.paragraphRemoved} 处`:"模板化链尾重放核对通过:无零信息前缀句与重复段落残留",details:b.prefixSentences.length>0?b.prefixSentences.slice(0,3).map(a=>`前缀句删除:「${a.slice(0,40)}」`):void 0},{subtitle:"模板化清理收口"});(0,q.fx)(a.progressStages,d),(0,q.fx)(a.finalGateRepairStages,d),c>0&&(a.finalMarkdown=b.markdown,await a.recomputeFinalValidationBundle()),a.emitProgress(a.finalChapterDrafts,a.progressStages)}function eq(a){return Math.max(0,Math.min(100,Math.round(a)))}async function er(a){let b=await cC(a),c=a.reduce((a,b)=>a+(b.content.match(/本小节围绕|交底覆盖率按100%|24小时内形成整改责任|按施工准备→过程实施→检查验收→问题整改→资料归档的闭环组织|按作业条件确认→技术交底→过程实施|依据本项目已确认资料中的项目边界/gu)||[]).length,0),d=await (0,bC.Bt)(a.map(a=>a.content).join("\n")),e=400*Math.max(0,d.ratio-.1);return{score:eq(100-15*c-25*b.filter(a=>"error"===a.level).length-e),detail:`模板化空话命中 ${c} 处,套话句占比 ${(100*d.ratio).toFixed(1)}%(docx 达标线 ≤10%),废话段问题 ${b.length} 项`}}async function es(a,b="",c={}){let d=function(a){let b=a.map(a=>`${a.title} ${(a.sections||[]).join(" ")} ${a.content}`).filter(a=>bF(a).reduce((a,b)=>a+b.length,0)>=200).join("\n"),c=[{label:"工程概况",pattern:/工程概况|项目概况|基本概况/u},{label:"主要施工内容",pattern:/主要施工内容/u},{label:"重难点分析",pattern:/重点.{0,4}难点/u},{label:"施工部署",pattern:/施工部署|总体部署|流水/u},{label:"进度计划",pattern:/进度计划|工期保障|工期计划/u},{label:"质量保证",pattern:/质量保证|质量管理|质量控制/u},{label:"安全文明",pattern:/安全.{0,8}(?:管理|措施|文明)|文明施工/u},{label:"资源配置",pattern:/劳动力|机械设备|材料.{0,4}计划|资源配置/u},{label:"绿色环保",pattern:/绿色施工|扬尘|噪声|环保/u},{label:"应急管理",pattern:/应急/u}],d=c.filter(a=>a.pattern.test(b)),e=eq(d.length/c.length*100),f=c.filter(a=>!a.pattern.test(b)).map(a=>a.label);return{score:e,detail:`覆盖 ${d.length}/${c.length} 个核心结构组${f.length?`;缺失:${f.join("、")}`:""}`}}(a),e=function(a){let b=a.map(a=>a.content).join("\n"),c=bG(b,cs.s2),d=bG(b,/工程量|材料|设备|范围|流程|验收|检测|复试|调试|隐蔽|检验批|资料|记录|系统|部位|接口|规格|标准/gu),e=Math.max(1,b.length),f=c.size/(e/1e3);return{score:eq(Math.min(100,22*f+d.size/18*15)),detail:`量化参数 ${c.size} 项(每千字 ${f.toFixed(1)}),专业事实词 ${d.size}/18 类`}}(a),f=function(a){let b=a.map(a=>a.content).join("\n"),c=bG(b,cs.aX),d=Math.max(1,b.length),e=c.size/(d/1e3);return{score:eq(Math.min(100,20*e+40)),detail:`工艺参数 ${c.size} 项(每千字 ${e.toFixed(1)})`}}(a),g=function(a,b=""){let c=(b||a.map(a=>a.content).join("\n\n")).split("\n"),d=0,e=0,f=0;for(;f<c.length;){let a=c[f].trim();if(!/^\|.+\|$/u.test(a)){f+=1;continue}let b=[];for(;f<c.length&&/^\|.+\|$/u.test(c[f].trim());)b.push(c[f].trim()),f+=1;b.length<3||(d+=1,0===function(a){let b=(a[0]||"").split("|").slice(1,-1).map(a=>(0,cr.jG)(a.trim()));return a.slice(1).filter(a=>a.replace(/\|/gu,"").replace(/[\s\-:]/gu,"").length>0).reduce((a,c)=>{let d=c.split("|").slice(1,-1).map(a=>(0,cr.jG)(a.trim())),e=/^[\s|]*\|?\s*(?:合计|小计|总计|累计)/u.test(c);return a+d.filter((a,c)=>(""===a||"-"===a||"—"===a||"/"===a)&&(!e||"—"!==a)&&!("—"===a&&/规格|型号/u.test(b[c]||""))).length},0)}(b)&&(e+=1))}return{score:0===d?40:eq(e/d*100),detail:`表格 ${d} 个,其中字段完整 ${e} 个`}}(a,b),h=await er(a),i=function(a){let b=cB(a);return{score:eq(100-20*b.length-20*b.filter(a=>"error"===a.level).length),detail:`重复段落问题 ${b.length} 项`}}(a),j=function(a,b=""){let c=bF(b||a.map(a=>a.content).join("\n\n")),d=[{label:"质量标准",pattern:/质量标准|质量要求|合格率/u},{label:"计划工期",pattern:/计划工期|工期要求|日历天/u},{label:"保修",pattern:/缺陷责任期|保修|质保/u},{label:"安全目标",pattern:/安全.{0,8}目标|文明.{0,8}目标/u},{label:"项目经理",pattern:/项目经理|项目负责人/u}],e=d.filter(a=>c.some(b=>a.pattern.test(b)&&bH.test(b))),f=d.filter(a=>!e.includes(a));return{score:eq(e.length/d.length*100),detail:`招标硬性要求响应 ${e.length}/${d.length} 项${f.length?`(未响应:${f.map(a=>a.label).join("、")})`:""}`}}(a,b),k=function(a){if(!a)return{score:100,detail:"模板化未检测(无信号,按满分计)"};let b=300*Math.max(0,a.fillerRatio-.1),c=Math.min(40,8*a.vagueHitCount),d=a.difficultyCountermeasures>0?a.difficultyQuantifiedCount/a.difficultyCountermeasures:1,e=a.difficultyCountermeasures>0?Math.min(30,60*Math.max(0,.5-d)):0,f=Math.min(30,10*a.crossProjectResidue.length);return{score:eq(100-b-c-e-f),detail:`套话句占比 ${(100*a.fillerRatio).toFixed(1)}%(线 ≤10%)、模糊应答词 ${a.vagueHitCount} 处、重难点量化达标 ${a.difficultyQuantifiedCount}/${a.difficultyCountermeasures}(线 ≥50%)、跨项目残留 ${a.crossProjectResidue.length} 处;扣分 ${b.toFixed(0)}+${c.toFixed(0)}+${e.toFixed(0)}+${f.toFixed(0)}`}}(c.templating),l=[{key:"structure",label:"结构完整度",score:d.score,detail:d.detail,weight:0,baseWeight:.18},{key:"factLanding",label:"事实落位率",score:e.score,detail:e.detail,weight:0,baseWeight:.18},{key:"processParameter",label:"工艺参数密度",score:f.score,detail:f.detail,weight:0,baseWeight:.16},{key:"table",label:"表格完整度",score:g.score,detail:g.detail,weight:0,baseWeight:.12},{key:"filler",label:"废话控制",score:h.score,detail:h.detail,weight:0,baseWeight:.14},{key:"duplication",label:"重复控制",score:i.score,detail:i.detail,weight:0,baseWeight:.12},{key:"reviewResponse",label:"评标响应度",score:j.score,detail:j.detail,weight:0,baseWeight:.1}],m=.2*!!c.templating,n=[...l.map(({baseWeight:a,...b})=>({...b,weight:Number((a*(1-m)).toFixed(4))})),...m>0?[{key:"templating",label:"表述实质性",score:k.score,detail:k.detail,weight:m}]:[]],o=eq(n.reduce((a,b)=>a+b.score*b.weight,0)),p=o>=85?"专业":o>=70?"良好":o>=55?"合格":"待提升",q=[...cB(a),...await cC(a),...cG(a),...cH(a)].slice(0,5).map(a=>a.message),r=n.filter(a=>a.score<70).map(a=>`${a.label}(${a.score}分)`);return{total:o,grade:p,dimensions:n,summary:`施工组织设计专业度评分 ${o} 分(${p};从属口径,交付主尺见六维质量报告)${c.templating&&"light"!==c.templating.level?`;模板化等级:${"heavy"===c.templating.level?"重度":"中度"}(已按「表述实质性」维度计分,不再封顶总分)`:""}${r.length?`;待提升:${r.join("、")}`:""}`,topIssues:q,caliber:b_}}async function et(a){var b;if(!("heavy"===(b=a.templating).level||b.vagueHitCount>0||b.difficultyHeavyTemplated))return{issues:[],reviewed:!1};let c=(0,bC.T4)(a.markdown),d=[`确定性检测信号:模板化等级=${a.templating.level},套话句占比=${(100*a.templating.fillerRatio).toFixed(1)}%,模糊应答词命中=${a.templating.vagueHitCount}(${a.templating.vaguePhrases.join("、")||"无"}),重难点归因+量化双达标占比=${(100*a.templating.difficultyCountermeasureRatio).toFixed(0)}%,跨项目残留=${a.templating.crossProjectResidue.join("、")||"无"}${c.found.length?`,四新技术命中=${c.found.join("、")}`:""}`,`待复核正文(节选):
|
|
56
56
|
${function(a,b=6e3){return[a.match(/#{2,3}\s*[^\n]*(?:重难点|重点难点|工程难点|难点分析)[^\n]*\n[\s\S]{0,3500}/u)?.[0]||"",a.replace(/#{1,6}\s+[^\n]*\n/gu,"").replace(/\s+/gu," ").slice(0,b)].filter(Boolean).join("\n\n").slice(0,b+4e3)}(a.markdown)}`,'返回 JSON:{"issues":["问题1","问题2"]}'];try{let b=await (0,cl.bb)((0,O.y4)('你是招标技术标评审专家。对施工组织设计做语义级复核,只报告确定性规则覆盖不到的语义问题。\n复核维度(按《施工组织设计全维度校验提示词》判定标尺):\n1. 重难点三级判定:识别精准性(是否点明本项目真实难点而非泛泛而谈)→ 归因合理性(是否说明难点成因/风险来源)→ 对策匹配度(对策是否针对该难点的成因,而非通用措施堆砌);\n2. 术语等效性:同一对象是否前后术语一致(如"砼"与"混凝土"混用需统一),是否出现词面不同但概念等效的双重标准表述;\n3. 四新技术升级价值:若正文声称采用四新技术,其价值表述是否停留在"提升效率"式套话,缺少可对标官方推广目录或替代落后工艺的实质说明。\n每条问题必须包含:问题所在内容简述+判定依据(对应上面哪条维度)+一句话改进建议。\n只报告真实存在的问题,正文无问题时返回空数组;不得编造问题。只返回 JSON。'),d.join("\n\n"),{maxTokens:1200,temperature:0,signal:a.signal,diagnostics:a.diagnostics,taskKind:"structuredGeneration"});return{issues:Array.isArray(b?.issues)?b.issues.filter(a=>"string"==typeof a&&a.length>0):[],reviewed:!0}}catch(a){return{issues:[`⚠ 语义级模板化复核未完成(模型调用失败,本项未复核):${a instanceof Error?a.message:String(a)}`],reviewed:!1}}}var eu=c(73024),ev=c.n(eu),ew=c(76760),ex=c.n(ew),ey=c(48661);function ez(a){return Math.round(10*a)/10}function eA(a,b){let c=a.replace(/\s+/gu," ").trim();return c.length>b?`${c.slice(0,b)}…`:c}let eB={success:"通过",failed:"失败",skipped:"跳过",running:"进行中"},eC={blind:"暗标",open:"明标",unknown:"未判定(按明标口径)"};async function eD(a){var b;a.reviewChecklist=[{key:"export-gate",label:"导出门禁",passed:(b={exportGate:a.qualityBundle.finalExportGate,qualityReport:a.qualityBundle.qualityReport,repairStrategies:a.qualityBundle.repairStrategies}).exportGate.passed,message:b.exportGate.passed?"导出门禁通过":`仍有 ${b.exportGate.blockingIssues.length} 个阻断问题`},{key:"delivery-probability",label:"交付置信度",passed:b.qualityReport.passed,message:`${b.qualityReport.deliveryProbability}% / ${b.qualityReport.target}%`},{key:"completeness",label:"资料完整性",passed:b.qualityReport.scores.completeness>=85,message:`${b.qualityReport.scores.completeness}/100`},{key:"specificity",label:"方案针对性",passed:b.qualityReport.scores.specificity>=85,message:`${b.qualityReport.scores.specificity}/100`},{key:"compliance",label:"合规性",passed:b.qualityReport.scores.compliance>=80,message:`${b.qualityReport.scores.compliance}/100`},{key:"repair-strategies",label:"修复策略",passed:0===b.repairStrategies.filter(a=>"high"===a.priority).length,message:b.repairStrategies.map(a=>a.title).join("、")||"无高优先级修复策略"}];let c=(0,R.Ff)(a.validationIssues);a.generationDiagnostics.quality.blockingCount+=c.blocking,a.generationDiagnostics.quality.importantCount+=c.important,a.generationDiagnostics.quality.minorCount+=c.minor,a.telemetry=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})),c={};for(let[b,d]of Object.entries(a.diagnostics.llm.patchGuardStats||{}))c[b]={hits:d.hits+d.rejects,repaired:d.hits,failed:d.rejects+(d.rollbacks??0)};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,repairHeat:Object.keys(c).length>0?c:void 0}}({diagnostics:a.generationDiagnostics});let d=a.qualityBundle.finalExportGate.blockingIssues.length,e=(a.generationDiagnostics.evidence.retrievalFailures??0)>0?`,⚠ 检索失败 ${a.generationDiagnostics.evidence.retrievalFailures} 次(非「无命中」,请看进度中的 failed 事件)`:"",f=(a.generationDiagnostics.evidence.pinnedEvidenceMissed??0)>0?`,⚠ 固定证据未命中 ${a.generationDiagnostics.evidence.pinnedEvidenceMissed} 处(资料包绑定漂移)`:"";a.telemetry.qualityIssues.blockingCount=d,a.professionalScore=await es(a.finalChapterDrafts,a.finalMarkdown,{templating:a.qualityBundle.qualityReport.templating}),a.templatingReview=a.qualityBundle.qualityReport.templating?await a.withProgressHeartbeat(()=>et({templating:a.qualityBundle.qualityReport.templating,markdown:a.finalMarkdown,diagnostics:a.generationDiagnostics,signal:a.signal})):{issues:[],reviewed:!1},a.finalStages=[...a.executionStages,...a.finalGateRepairStages],a.suspensionChecklist=a.qualityBundle.finalExportGate.passed?void 0:(0,i.aF)(a.qualityBundle.finalExportGate.blockingIssues,a.finalChapterDrafts),a.finalStages.push((0,q.X5)({type:"validation",roleId:"agent-final-gate",status:a.qualityBundle.finalExportGate.passed?"success":"failed",message:a.qualityBundle.finalExportGate.passed?"Agent 最终门禁通过":`Agent 最终门禁未通过 ${d} 个问题(不计入交付阻断,文档照常可导出;人工复核清单见明细)`,details:a.suspensionChecklist?(0,i.$w)(a.suspensionChecklist):[]},{subtitle:"Agent 最终门禁"}));let g=a.qualityBundle.qualityReport.deliveryProbability<70;a.finalStages.push((0,q.X5)({type:"validation",roleId:"document-delivery-score",status:a.qualityBundle.qualityReport.passed?"success":a.qualityBundle.finalExportGate.passed?"skipped":"failed",message:a.qualityBundle.finalExportGate.passed&&!a.qualityBundle.qualityReport.passed?`${a.qualityBundle.qualityReport.summary}${g?";置信度低于 70%,建议完成续修后再交付归档":"(导出门禁已通过,作为后续优化建议归档)"}`:a.qualityBundle.qualityReport.summary,details:g&&a.qualityBundle.finalExportGate.passed?[...a.qualityBundle.qualityReport.actions,"续修建议:交付置信度低于 70% 门槛,建议按交付复核清单补齐短板维度后重新生成或续修。"]:a.qualityBundle.qualityReport.actions},{subtitle:"交付评分"})),a.finalStages.push((0,q.X5)({type:"validation",roleId:"document-professional-score",status:"专业"===a.professionalScore.grade||"良好"===a.professionalScore.grade?"success":"skipped",message:a.professionalScore.summary,details:[...a.professionalScore.dimensions.map(a=>`${a.label}:${a.score} 分(${a.detail})`),...a.professionalScore.topIssues.map(a=>`待修复:${a}`)]},{subtitle:"专业度评分"})),a.qualityBundle.qualityReport.templating&&"light"!==a.qualityBundle.qualityReport.templating.level&&a.finalStages.push((0,q.X5)({type:"validation",roleId:"document-templating-report",status:"skipped",message:`模板化检测:${"heavy"===a.qualityBundle.qualityReport.templating.level?"重度":"中度"}模板化(套话句占比 ${(100*a.qualityBundle.qualityReport.templating.fillerRatio).toFixed(1)}%,重难点归因+量化双达标占比 ${(100*a.qualityBundle.qualityReport.templating.difficultyCountermeasureRatio).toFixed(0)}%,模糊应答词 ${a.qualityBundle.qualityReport.templating.vagueHitCount} 处)`,details:a.templatingReview.issues},{subtitle:"模板化检测"})),a.writingTaskBrief&&a.finalStages.push((0,q.X5)({type:"reference",roleId:"document-writing-task-brief",status:"success",message:`写作任务书:${a.writingTaskBrief.documentType},${a.writingTaskBrief.chapters.length} 章任务卡,全局写作焦点 ${a.writingTaskBrief.globalWritingFocus.length} 条`,details:[...a.writingTaskBrief.globalWritingFocus,...a.writingTaskBrief.chapters.slice(0,10).map(a=>`${a.chapterTitle}:覆盖 ${a.mustCover.length} 项`)],subtitle:"写作任务书"})),a.finalStages.push((0,q.X5)({type:"reference",roleId:"knowledge-coverage",status:a.qualityBundle.knowledgeCoverage.score>=85?"success":"failed",message:`资料确认覆盖率:${a.qualityBundle.knowledgeCoverage.score}%(证据 ${a.qualityBundle.knowledgeCoverage.evidenceCount} 条,文件 ${a.qualityBundle.knowledgeCoverage.confirmedFiles} 份)`,details:[a.qualityBundle.knowledgeCoverage.remediation]},{subtitle:"资料覆盖"})),a.finalStages.push((0,q.X5)({type:"validation",roleId:"document-review-checklist",status:a.reviewChecklist.every(a=>a.passed)?"success":a.qualityBundle.finalExportGate.passed?"skipped":"failed",message:`交付复核清单:通过 ${a.reviewChecklist.filter(a=>a.passed).length}/${a.reviewChecklist.length}${a.qualityBundle.finalExportGate.passed&&!a.reviewChecklist.every(a=>a.passed)?"(导出门禁已通过,其余项作为优化建议归档)":""}`,details:a.reviewChecklist.map(a=>`${a.passed?"通过":"待修复"}:${a.label}${a.message?`(${a.message})`:""}`)},{subtitle:"交付复核"}));let h=(0,k._8)(a.generationDiagnostics.metrics),j=(0,k.bz)(a.generationDiagnostics.llm.callBreakdown),m=a.generationDiagnostics.factSanitize?`,事实净化 截断${a.generationDiagnostics.factSanitize.truncated}/丢弃${a.generationDiagnostics.factSanitize.dropped}/编号补全${a.generationDiagnostics.factSanitize.repaired}`:"";if(a.finalStages.push((0,q.X5)({type:"validation",roleId:"document-diagnostics",status:"success",message:`性能统计:LLM ${a.generationDiagnostics.llm.calls} 次,失败 ${a.generationDiagnostics.llm.failures} 次,瞬态重试 ${a.generationDiagnostics.llm.retries} 次,schema 校验失败 ${a.generationDiagnostics.llm.schemaFailures} 次,峰值并行 ${a.generationDiagnostics.llm.maxActive},检索 ${a.generationDiagnostics.evidence.searchQueries} 次/${Math.round(a.generationDiagnostics.evidence.searchMs/1e3)} 秒,证据上下文 ${a.generationDiagnostics.evidence.contextChars} 字,噪声过滤 ${a.generationDiagnostics.evidence.filteredNoise} 条,预算裁剪 ${a.generationDiagnostics.evidence.budgetDropped} 条,质量问题 阻断${a.generationDiagnostics.quality.blockingCount}/重要${a.generationDiagnostics.quality.importantCount}/轻微${a.generationDiagnostics.quality.minorCount}${m}${e}${f}${h?`,Top耗时:${h}`:""}${j?`,调用输入Top5:${j}`:""}`,details:[...(0,k.Il)(a.generationDiagnostics.metrics),...(0,k.NJ)(a.generationDiagnostics.llm.callBreakdown)]},{subtitle:"后台诊断"})),a.documentId)try{let b=function(a){let b=a.qualityReport,c=a.exportGate,d=new Date(a.generatedAt??Date.now()),e=b.mode?eC[b.mode]:"未判定(按明标口径)",f=[];f.push(`# 交付三件套报告:${a.title}`),f.push(""),f.push(`> 文档 ID:${a.documentId??"未提供"};生成时间:${d.toISOString()}`),f.push(`> 评分口径:${bZ}(主尺=六维;招标六项/专业分为从属展示口径)`),f.push(`> 导出门禁:${c.passed?"通过":`未通过(${c.blockingIssues.length} 项阻断,文档照常可导出,人工复核清单见下)`};标书类型:${e}`),f.push(""),f.push("## 一、评分报告"),f.push(""),f.push("### 1.1 六维质量评分(主尺)");let g=b.dimensions||[];if(g.length>0)for(let a of(f.push("| 维度 | 得分 | 权重 | 构成明细 |"),f.push("|---|---|---|---|"),g))f.push(`| ${a.label} | ${a.score} | ${Math.round(100*a.weight)}% | ${a.detail??"—"} |`);else f.push("- (六维构成明细缺失——评级输入不完整,仅综合分可用)");if(f.push(`- 综合评分:**${b.overall}**/100;交付置信度 **${b.deliveryProbability}%** / 目标 ${b.target}%;低雷同性 ${b.scores?.uniqueness??"—"}${b.passed?";已达当前质量目标":";未达目标(按第三节预估路径补强)"}`),f.push(""),f.push("### 1.2 专业度评分(从属口径,交付主尺见六维)"),f.push(`- 总分 ${a.professionalScore.total}/100(${a.professionalScore.grade}):${a.professionalScore.summary}`),a.professionalScore.dimensions.length>0)for(let b of(f.push(""),f.push("| 维度 | 得分 | 权重 | 明细 |"),f.push("|---|---|---|---|"),a.professionalScore.dimensions))f.push(`| ${b.label} | ${b.score} | ${Math.round(100*b.weight)}% | ${b.detail} |`);if(a.professionalScore.topIssues.length>0)for(let b of(f.push(""),f.push("待修复:"),a.professionalScore.topIssues.slice(0,12)))f.push(`- ${eA(b,220)}`);if(f.push(""),f.push("### 1.3 阻断明细(终门禁)"),0===c.blockingIssues.length)f.push("- 无阻断:终检检测器全部通过。");else for(let a of c.blockingIssues){let b=a.severity?`[${a.severity}]`:`[${a.level}]`,c=a.chapterId?`(章:${a.chapterId}${a.sectionTitle?` / ${a.sectionTitle}`:""})`:"";f.push(`- ${b} ${eA(a.message,320)}${c}`),a.suggestion&&f.push(` - 建议:${eA(a.suggestion,260)}`)}if(c.checklist.length>0){let a=c.checklist.filter(a=>!a.passed);f.push(""),f.push(`- 门禁复核清单:通过 ${c.checklist.length-a.length}/${c.checklist.length}${a.length>0?`;未过项:${a.slice(0,10).map(a=>a.label).join("、")}${a.length>10?` 等 ${a.length} 项`:""}`:""}`)}for(let b of(f.push(""),f.push("## 二、进度(阶段/耗时/修复轮次)"),f.push(""),f.push(`### 2.1 阶段执行(共 ${a.stages.length} 个阶段)`),a.stages)){let a=b.subtitle||b.roleId,c=b.message?`:${eA(b.message,240)}`:"";f.push(`- [${eB[b.status]}] ${a}${c}`)}f.push(""),f.push("### 2.2 耗时(按耗时降序)");let h=[...a.metrics].sort((a,b)=>b.durationMs-a.durationMs);if(0===h.length)f.push("- (无性能指标记录)");else for(let a of h){var i;f.push(`- ${a.name}:${!Number.isFinite(i=a.durationMs)||i<0?"0ms":i<1e3?`${Math.round(i)}ms`:i<6e4?`${(i/1e3).toFixed(1)}s`:`${(i/6e4).toFixed(1)}min`}`)}for(let b of(f.push(""),f.push("### 2.3 修复轮次(detectorFixerRegistry 轮序声明表口径)"),l.rk)){let c=[...a.stages].reverse().find(a=>a.roleId===b);if(c){let a=c.message?` — ${eA(c.message,200)}`:"";f.push(`- ${b}:${eB[c.status]}${a}`)}else f.push(`- ${b}:未记录(无触发或静默通过)`)}f.push(""),f.push("## 三、下轮预估目标(按当前六维缺口)"),f.push("");let j=function(a){let b=(a.dimensions||[]).filter(a=>Number.isFinite(a.score)&&Number.isFinite(a.weight)&&a.weight>0);if(0===b.length)return;let c=b.reduce((a,b)=>a+b.weight,0),d=ez(b.reduce((a,b)=>a+b.score*b.weight,0)/c),e=Math.min(1,(a.scores?.uniqueness??90)/90),f=b.map(a=>({key:a.key,label:a.label,score:a.score,gap:Math.max(0,100-a.score),effectiveGain:ez(Math.max(0,100-a.score)*(a.weight/c)*e),detail:a.detail})).sort((a,b)=>b.effectiveGain-a.effectiveGain||a.label.localeCompare(b.label,"zh-Hans-CN")),g=ez(a.target-a.overall),h=null;if(g>0){let b=[],c=0;for(let a of f)if(a.effectiveGain<=0||(b.push(a),(c=ez(c+a.effectiveGain))>=g))break;h={target:a.target,gap:g,picks:b,covered:c}}return{dimensions:f,currentWeighted:d,uniquenessFactor:e,projectedOverall:Math.min(100,Math.round(100*e)),pathToTarget:h}}(b);if(j){for(let a of(f.push("| 维度 | 当前分 | 提升空间 | 对综合分贡献 | 补强方向 |"),f.push("|---|---|---|---|---|"),j.dimensions))f.push(`| ${a.label} | ${a.score} | ${a.gap>0?`+${a.gap}`:"0(满分)"} | ${a.effectiveGain>0?`+${a.effectiveGain.toFixed(1)}`:"0"} | ${a.detail?eA(a.detail,120):"—"} |`);f.push(`- 当前加权综合分:${j.currentWeighted.toFixed(1)}/100(uniqueness 因子 ${j.uniquenessFactor.toFixed(2)})`);let a=j.projectedOverall<b.target;if(f.push(`- 预计总分上限:**${j.projectedOverall}**/100(全维补满、uniqueness 不变的理论口径${a?`;低于目标 ${b.target}——受低雷同性因子 ${j.uniquenessFactor.toFixed(2)} 约束,需同步提升 uniqueness`:""};实际以重生成/续修产物复评)`),j.pathToTarget){let{target:a,gap:b,picks:c,covered:d}=j.pathToTarget,e=c.map(a=>`${a.label}(+${a.effectiveGain.toFixed(1)})`).join(" → ");d>=b?f.push(`- 达标路径(目标 ${a}):补强 ${e},合计 +${d.toFixed(1)} ≥ 缺口 ${b.toFixed(1)}。`):f.push(`- 达标路径(目标 ${a}):补强 ${e},合计 +${d.toFixed(1)} < 缺口 ${b.toFixed(1)}——六维补满仍不足,须按上限提示先提升低雷同性(uniqueness)再复评。`)}else f.push(`- 当前已达目标 ${b.target},无需补强路径(维持口径与阻断清零即可)。`)}else f.push("- 六维构成明细缺失,无法计算下轮预估(降级不猜数;补全评级输入后自动生成)。");return f.push(""),f.join("\n")}({documentId:a.documentId,title:a.template.outputTitle,qualityReport:a.qualityBundle.qualityReport,professionalScore:a.professionalScore,exportGate:a.qualityBundle.finalExportGate,stages:a.finalStages,metrics:a.generationDiagnostics.metrics}),c=function(a,b,c){let d=function(a,b){let c=b.trim().replace(/[^A-Za-z0-9_-]/gu,"_");if(!c)throw Error("交付报告文件名缺少文档 ID");return ex().join((0,ey.Gl)(a),"reports",`${c}-review.md`)}(a,b);ev().mkdirSync(ex().dirname(d),{recursive:!0});let e=`${d}.${process.pid}.${Date.now()}.tmp`;return ev().writeFileSync(e,c,"utf8"),ev().renameSync(e,d),d}(a.projectRoot,a.documentId,b),d=a.qualityBundle.finalExportGate.blockingIssues.length;a.finalStages.push((0,q.X5)({type:"reference",roleId:"delivery-review-report",status:"success",message:`交付三件套报告已产出:${c}`,details:[a.qualityBundle.qualityReport.summary,`专业度(从属口径):${a.professionalScore.summary}`,`阻断:${d} 项${d>0?"(人工复核清单随报告归档,不阻断交付)":"(终检检测器全部通过)"}`,"下轮预估目标:按当前六维缺口计算各维提升空间与达标路径(见报告第三节)"]},{subtitle:"交付报告"}))}catch(c){let b=c instanceof Error?c.message:String(c);a.finalStages.push((0,q.X5)({type:"reference",roleId:"delivery-review-report",status:"failed",message:`交付三件套报告产出失败(不阻断交付):${b}`},{subtitle:"交付报告"}))}}let eE={prefixCacheHitRateFloor:.4,budgetDropRatioCeiling:.3,llmFailureRateCeiling:.1};async function eF(a){let b=function(a){let b=[],c=a.llm.promptCacheHitTokens??0,d=c+(a.llm.promptCacheMissTokens??0),e=d>0?c/d:null;null!==e&&e<eE.prefixCacheHitRateFloor&&b.push(`固定前缀缓存命中率 ${(100*e).toFixed(1)}% 低于 40%:固定前缀未收敛,检查 L0/L2 恒定段结构`);let f=a.llm.reasoningTokens??0;f>0&&b.push(`推理 token 累计 ${f}:disableThinking 未生效,检查模型 provider 配置`);let g=a.evidence.raw>0?a.evidence.budgetDropped/a.evidence.raw:null;null!==g&&g>eE.budgetDropRatioCeiling&&b.push(`证据预算裁剪 ${(100*g).toFixed(1)}%(${a.evidence.budgetDropped}/${a.evidence.raw}):裁剪过重,疑似预算配置失配`);let h=a.llm.calls>0?a.llm.failures/a.llm.calls:null;return null!==h&&h>eE.llmFailureRateCeiling&&b.push(`LLM 失败率 ${(100*h).toFixed(1)}%(${a.llm.failures}/${a.llm.calls}):失败率偏高,检查限流与重试策略`),{alerts:b,metrics:{prefixCacheHitRate:e,reasoningTokens:f,budgetDropRatio:g,llmFailureRate:h}}}(a.generationDiagnostics),c=process.memoryUsage(),d=Math.round(c.rss/1048576),e=Math.round(c.heapUsed/1048576),f=function(){let a=Number(process.env.DOCUMENT_MEMORY_ALERT_MB??3072);return Number.isFinite(a)&&a>0?a:3072}();console.log(`[gen] memory(finalize) rss=${d}MB heap=${e}MB threshold=${f}MB`);let g=d>=f?[...b.alerts,`进程内存 rss=${d}MB 超过告警阈值 ${f}MB:大文档生成建议 NODE_OPTIONS=--max-old-space-size=4096,并控制并发生成任务数(DOCUMENT_MAX_CONCURRENT_GENERATIONS)`]:b.alerts;a.telemetry.healthAlerts=g,0!==g.length&&a.finalStages.push((0,q.X5)({type:"validation",roleId:"document-health-diagnosis",status:"skipped",message:`自动健康诊断:${g.length} 项告警(不阻断,供配置优化参考)`,details:g},{subtitle:"健康诊断"}))}async function eG(a){var b;(0,l.wF)();let{chapterDraftsByOrder:c,chapterGenerationStagesByOrder:d,chapterGenerationStages:e,effectiveChapters:f,input:m,failedChapterMessages:n}=a,{requirement:p}=m,q=function(a){let{signal:b,requirement:c}=a.input;return{input:a,template:a.template,effectiveChapters:a.effectiveChapters,requirement:c,signal:b,projectRoot:a.projectRoot,projectId:a.projectId,documentId:a.documentId,projectMaterialSummary:a.projectMaterialSummary,documentSpec:a.documentSpec,documentBudget:a.documentBudget,promptBindings:a.promptBindings,promptDocumentRules:a.promptDocumentRules,domainProfile:a.domainProfile,scopeConflicts:a.scopeConflicts,evaluationCriteriaItems:a.evaluationCriteriaItems,tenderRequirements:a.tenderRequirements,requirementAssignments:a.requirementAssignments,requirementsSimilarity:a.requirementsSimilarity,factTokenScopeClassifier:a.factTokenScopeClassifier,professionalDepthClassifier:a.professionalDepthClassifier,blueprintData:a.blueprintData,bidComposition:a.bidComposition,billFactLock:a.billFactLock,drawingFactLock:a.drawingFactLock,requirementSemantics:a.requirementSemantics,generationDiagnostics:a.generationDiagnostics,repairPromptTexts:a.repairPromptTexts,progressStages:a.progressStages,chapterGenerationStages:a.chapterGenerationStages,emitProgress:a.emitProgress,withProgressHeartbeat:a.withProgressHeartbeat,missingItems:a.missingItems,failedChapterMessages:a.failedChapterMessages,indexHealth:a.indexHealth,webResearchReport:a.webResearchReport,retrievalCoverageReports:a.retrievalCoverageReports,writingTaskBrief:a.writingTaskBrief,globalConsistencyIssues:a.globalConsistencyIssues,agentWorkflow:a.agentWorkflow,factExtractionPromptTexts:a.factExtractionPromptTexts,readiness:a.readiness,allEvidence:a.allEvidence,facts:{},structuredFacts:[],governedStructuredFacts:[],factsModel:void 0,chapterDrafts:[],finalChapterDrafts:[],finalMarkdown:"",validationIssues:[],baseValidationIssues:[],executionStages:[],finalGateRepairStages:[],sources:[],qualityBundle:void 0,scheduleAuthority:void 0,assemblyRateAuthority:void 0,scaleSummary:void 0,supportAuthority:void 0,laborPeakAuthority:void 0,greeningMaintenanceAuthority:void 0,surfaceFixContext:{laborPeakAuthority:void 0,greeningMaintenanceAuthority:void 0,resourceBreakdownAuthority:void 0,supportFormAuthority:void 0},decisionLockEntries:[],finalStages:[],reviewChecklist:[],telemetry:void 0,professionalScore:void 0,templatingReview:{issues:[],reviewed:!1},assets:[],validation:void 0,rebuildFinalMarkdown:()=>"",recomputeFinalValidationBundle:async()=>void 0}}(a),s=c.filter(a=>!!a);q.chapterDrafts=s,e.push(...d.filter(a=>!!a));let t=0===(b={chapterDraftCount:s.length,failedChapterMessages:n}).chapterDraftCount?`章节生成未完成:${b.failedChapterMessages.join(";")||"没有生成任何有效章节"}`:null;if(t)throw Error(t);await r(q),await cP(q),function(a){let b=(0,o.dW)(a.chapterDrafts);b.insertedIn&&(a.chapterDrafts=b.chapters,a.generationDiagnostics.llm.lastInfo=`安全目标承诺句兜底:${b.insertedIn}(写作侧未写出安全目标,按投标人承诺口径补入)`);let c=(0,P._C)(a.bidComposition),d=(0,P.kO)(a.bidComposition),e=a.bidComposition?.formatRules.cover==="forbidden",f=(0,O.rs)((0,O.V3)({templateId:a.template.id,templateName:a.template.name,title:a.template.outputTitle,requirement:a.requirement||"",projectRoot:a.projectRoot,projectId:a.projectId,exportSettings:a.template.exportSettings,generationSettings:a.template.generationSettings,facts:a.facts,structuredFacts:a.structuredFacts,factsModel:a.factsModel,chapters:a.chapterDrafts,sources:a.sources,missingItems:[...new Set(a.missingItems)],validation:a.validation,validationIssues:a.validationIssues,executionStages:a.executionStages,exportGate:{passed:!1,blockingIssues:[],checklist:[]},assets:a.assets,partialChapters:a.chapterDrafts.map(b=>({id:b.id,title:b.title,chars:(0,h.V7)(b.content),status:(0,k.DR)(b,a.documentBudget.chapterTargets.get(b.id)),updatedAt:Date.now()})),checkpointChapters:a.chapterDrafts,generatedAt:Date.now()},{forbidDrawingImages:d,promptRules:a.promptDocumentRules,bodyTableForbidden:c,coverForbidden:e}),a.chapterDrafts,{forbidDrawingImages:d,promptRules:a.promptDocumentRules,bodyTableForbidden:c,coverForbidden:e});a.finalChapterDrafts=f.chapters.map(b=>{let c=a.effectiveChapters.find(a=>a.id===b.id)||b;return{...b,sections:b.sections||[],content:(0,k.w_)(b.content,c)}}),a.finalMarkdown=(0,O.rs)((0,O.V3)({templateId:a.template.id,templateName:a.template.name,title:a.template.outputTitle,requirement:a.requirement||"",projectRoot:a.projectRoot,projectId:a.projectId,exportSettings:a.template.exportSettings,generationSettings:a.template.generationSettings,facts:a.facts,structuredFacts:a.structuredFacts,factsModel:a.factsModel,chapters:a.finalChapterDrafts,sources:a.sources,missingItems:[...new Set(a.missingItems)],validation:a.validation,validationIssues:a.validationIssues,executionStages:a.executionStages,exportGate:{passed:!1,blockingIssues:[],checklist:[]},assets:a.assets,partialChapters:[],checkpointChapters:a.finalChapterDrafts,generatedAt:Date.now()},{forbidDrawingImages:d,promptRules:a.promptDocumentRules,bodyTableForbidden:c,coverForbidden:e}),a.finalChapterDrafts,{forbidDrawingImages:d,promptRules:a.promptDocumentRules,bodyTableForbidden:c,coverForbidden:e}).markdown,a.finalMarkdown=(0,o._D)((0,k.Ht)((0,O.bR)((0,k.Xr)((0,O.kT)((0,O.K7)(cK((0,k.jO)(a.finalMarkdown,a.structuredFacts,{bodyTableForbidden:c}),a.projectMaterialSummary))))))).markdown,c||(a.finalMarkdown=(0,bV.TG)((0,bV.lj)(a.finalMarkdown)),a.finalMarkdown=(0,bV.Vp)((0,bV.n3)(a.finalMarkdown,cQ(a)).markdown)),a.finalMarkdown=(0,Q.u7)(a.finalMarkdown,{plan:a.bidComposition?.appendixPlan||[],blueprintData:a.blueprintData})}(q),await cS(q),await cT(q),await dj(q),await dk(q),await dm(q),await ag(q),await dL(q),await dW(q),await d7(q),await d9(q),await eb(q),await dP(q),await ef(q),await dV(q),await eg(q),await eh(q),await ei(q),await ej(q),await ek(q),await el(q),await dS(q),await dQ(q),await dR(q),await dO(q),await em(q),await en(q),await eo(q),await ep(q),await dT(q),await eD(q),await eF(q);let u=q.finalChapterDrafts.map(a=>({...a,evidence:(0,g.QR)(a.evidence||[],{preservePinned:!0})}));return q.finalChapterDrafts=u,{templateId:q.template.id,templateName:q.template.name,title:q.template.outputTitle,requirement:p||"",projectRoot:q.projectRoot,projectId:q.projectId,exportSettings:q.template.exportSettings,generationSettings:q.template.generationSettings,facts:q.facts,structuredFacts:q.structuredFacts,factsModel:q.factsModel,chapters:u,sources:q.sources,missingItems:[...new Set(q.missingItems)],validation:q.validation,validationIssues:q.validationIssues,exportGate:q.qualityBundle.finalExportGate,executionStages:q.finalStages,assets:q.assets,partialChapters:q.finalChapterDrafts.map(a=>({id:a.id,title:a.title,chars:(0,h.V7)(a.content),status:(0,k.DR)(a,q.documentBudget.chapterTargets.get(a.id)),updatedAt:Date.now()})),checkpointChapters:u,promptRules:q.promptDocumentRules,agentWorkflow:q.agentWorkflow,reviewMetadata:{chapterSummaries:[],globalIssues:[],diagnostics:q.generationDiagnostics,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:q.template,chapters:f,requirement:p}),knowledgeCoverage:q.qualityBundle.knowledgeCoverage,factTraces:q.qualityBundle.factTraces,chapterCoverage:q.qualityBundle.chapterCoverage,retrievalCoverage:q.retrievalCoverageReports,qualityReport:q.qualityBundle.qualityReport,repairStrategies:q.qualityBundle.repairStrategies,reviewChecklist:q.reviewChecklist,professionalScore:q.professionalScore,templatingReviewIssues:q.templatingReview.issues,authorityAudit:q.authorityAuditReport,suspensionChecklist:q.suspensionChecklist??(q.qualityBundle.finalExportGate.passed?void 0:(0,i.aF)(q.qualityBundle.finalExportGate.blockingIssues,q.finalChapterDrafts)),writingTaskBrief:q.writingTaskBrief,workflowVersion:j.x,telemetry:q.telemetry},generatedAt:Date.now(),markdown:q.finalMarkdown,bidComposition:q.bidComposition}}var eH=c(71678),eI=c(29055);let eJ=[{id:"overview",title:"工程概况与总体理解",requiredSectionPatterns:[/编制依据|编制说明/u,/工程概况|项目概况|基本概况/u,/现场踏勘|施工条件|现场条件/u],chapterPatterns:[/概况|总体|理解|说明|编制|项目/u],remedy:"应设置工程概况章节,包含编制依据、工程基本概况、现场条件与总体理解。",level:"required"},{id:"major-content",title:"项目主要施工内容",requiredSectionPatterns:[/主要施工内容|主要施工项目|施工内容/u],chapterPatterns:[/概况|总体|理解|主要施工|工程/u],remedy:'必须包含"项目主要施工内容"小节,按工作包展开施工概况、施工流程、施工方法。',level:"required"},{id:"key-difficulty",title:"重难点分析与对策",requiredSectionPatterns:[/重点.*难点|难点.*对策|重难点/u],chapterPatterns:[/概况|总体|理解|重点|难点|施工/u],remedy:"应设置项目特点、重点、难点分析小节,并逐项给出应对措施与责任闭环。",level:"required"},{id:"deployment",title:"施工部署与施工组织",requiredSectionPatterns:[/施工部署|总体部署|流水|施工顺序|施工区段/u],chapterPatterns:[/部署|组织|总体|方案/u],remedy:"应设置施工部署小节,明确流水段划分、施工顺序与资源调配。",level:"required"},{id:"schedule",title:"进度计划与工期保障",requiredSectionPatterns:[/进度计划|工期|节点/u],chapterPatterns:[/进度|工期|计划|保障/u],remedy:"应设置进度计划与工期保障小节,含总进度计划、关键节点与纠偏措施。",level:"required"},{id:"quality",title:"质量保证体系与措施",requiredSectionPatterns:[/质量/u],chapterPatterns:[/质量|验收|保障|措施/u],remedy:"应设置质量保证体系与措施小节,含质量目标、三检、隐蔽验收、通病防治。",level:"required"},{id:"safety",title:"安全文明施工与危大工程管控",requiredSectionPatterns:[/安全/u,/危大工程|危大/u],chapterPatterns:[/安全|文明|风险|危大|保障|措施/u],remedy:"应设置安全管理与危大工程管控小节,含危险源辨识、危大清单、专项方案。",level:"required"},{id:"resources",title:"劳动力材料机械设备配置",requiredSectionPatterns:[/劳动力|机械设备|材料.*计划|资源配置|人材机/u],chapterPatterns:[/资源|劳动力|机械|材料|设备|计划/u],remedy:"应设置资源配置小节,含分阶段劳动力、机械设备投入与材料进场计划。",level:"required"},{id:"environment",title:"绿色文明施工与环保措施",requiredSectionPatterns:[/文明施工|扬尘|噪声|绿色|环保|四节/u],chapterPatterns:[/文明|绿色|环保|扬尘|噪声|保障|措施/u],remedy:"应设置文明施工与绿色施工小节,含扬尘噪声管控与四节一环保措施。",level:"required"},{id:"emergency",title:"应急管理体系",requiredSectionPatterns:[/应急/u],chapterPatterns:[/应急|安全|保障|措施/u],remedy:"应设置应急管理小节,含应急组织、物资储备与专项预案。",level:"recommended"}],eK={building:[{id:"key-difficulty",title:"危大工程专项管控(房建)",requiredSectionPatterns:[/深基坑|高支模|起重吊装|脚手架/u],chapterPatterns:[/危大|安全|专项/u],remedy:"房建项目应对深基坑、高支模、起重吊装、脚手架等危大工程逐项给出专项方案与安全管理措施。",level:"recommended"}],municipal:[{id:"key-difficulty",title:"交通导改与管线保护(市政)",requiredSectionPatterns:[/交通导改|交通导行|占道施工/u,/管线保护|管线探测/u],chapterPatterns:[/交通|管线|安全|专项|保障/u],remedy:"市政项目应设置交通导改与既有管线保护专项内容。",level:"recommended"}],renovation:[{id:"key-difficulty",title:"居民协调与既有保护(改造)",requiredSectionPatterns:[/居民|扰民|既有.*保护|不中断/u],chapterPatterns:[/居民|协调|保护|保障|专项/u],remedy:"改造项目应设置居民沟通协调与既有设施保护专项内容。",level:"recommended"}],decoration:[{id:"key-difficulty",title:"成品保护与交叉施工(装饰)",requiredSectionPatterns:[/成品保护/u,/交叉施工|工序穿插/u],chapterPatterns:[/成品保护|交叉|协调|保障|专项/u],remedy:"装饰项目应设置成品保护与交叉施工工序优化专项内容。",level:"recommended"}]};function eL(a){return(0,bg.GQ)(a).replace(/\s+/gu,"").toLowerCase()}function eM(a){return eL(`${a.title} ${(a.sections||[]).join(" ")}`).slice(0,800)}function eN(a){var b;let c,d=(b=a.chapters,[...eJ].map(a=>{let c=[],d=new Set;for(let e of b){let b=eL(`${e.title} ${(e.sections||[]).join(" ")}`);for(let f of a.requiredSectionPatterns)f.test(b)&&!d.has(f)&&(d.add(f),c.push(e.title))}let e=[...new Set(c)],f=a.requiredSectionPatterns.filter(a=>!d.has(a)).map(a=>(function(a){let b=a.source.replace(/[\\/^$.*+?()[\]{}]/gu,"").replace(/u$/u,"");return b.split("|").map(a=>a.trim()).find(Boolean)||b})(a)),g=d.size===a.requiredSectionPatterns.length?e.length>1?"fragmented":"satisfied":"missing";return{groupId:a.id,groupTitle:a.title,level:a.level,status:g,carrierChapters:e,missingSections:f,remedy:a.remedy}})),e=[],f=d.filter(a=>"required"===a.level&&"missing"===a.status);for(let a of f)e.push({level:"error",severity:"blocker",message:`评标结构缺失:${a.groupTitle}(缺少:${a.missingSections.join("、")})`,suggestion:a.remedy});for(let a of d.filter(a=>"fragmented"===a.status))e.push({level:"warning",severity:"warning",message:`${a.groupTitle} 小节散落在 ${a.carrierChapters.length} 个章节(${a.carrierChapters.join("、")}),结构可能失真`,suggestion:"建议将同类内容集中到一个承载章节,避免章节间职责重叠。"});for(let b of a.chapters){let a=(b.sections||[]).length;a>18&&e.push({level:"warning",severity:"warning",message:`${b.title} 规划小节 ${a} 个,超过 18 个上限,易产生内容膨胀与重复`,suggestion:"合并语义相近的小节,或将细分内容下移为三级小节而非二级小节。"})}let g=a.chapters.map(a=>({...a,sections:[...a.sections||[]]})),h=new Set;for(let a of f){let b=eJ.find(b=>b.id===a.groupId);if(!b)continue;let c=g.findIndex(a=>{let c=eL(a.title);return b.chapterPatterns.some(a=>a.test(c))&&!/雨季|冬季|高温|防汛|扬尘|噪声|工资|劳务|实名|应急|BIM|智慧|管线/u.test(c)}),d=g[c>=0?c:0];for(let c of a.missingSections.filter(a=>!h.has(a))){h.add(c);let a=!function(a){let b=(0,bg.GQ)(a).replace(/\s+/gu,"");return b.length>0&&b.length<=3&&/^[\u4e00-\u9fa5]+$/u.test(b)}(c)?c:b.title;!(0,eH.xb)(a)&&(d.sections.some(b=>eL(b).includes(eL(a))||eL(a).includes(eL(b)))||d.sections.push(a))}}let i=/^(?:确保\s*)?([人材机])(?:员|力|料|械|工)?\s*的保障体系与措施$/u;for(let a of g){if(!/人[、,,]材[、,,]机/u.test(a.title))continue;let b=new Set,c=[];for(let d of a.sections){if(eL(d)===eL(a.title))continue;let e=i.exec(d.trim());e?b.has(e[1])||(b.add(e[1]),c.push(d.trim())):c.push(d)}for(let a of["人","材","机"])b.has(a)||c.push(`确保${a}的保障体系与措施`);c.length!==a.sections.length&&(a.sections=c)}if(a.evaluationItems?.length){let b=a.chapters.map(eM);for(let{item:d}of(c=function(a,b,c){let d=[],e=a.map(eM);for(let a of b){let b=a.title;if(!b||e.some(a=>(function(a,b){let c=eL(b);return!!c&&(a.includes(c)||c.includes(a.slice(0,40)))})(a,b)))continue;let f=0;if(c?.semanticSimilarity)for(let a of e)f=Math.max(f,c.semanticSimilarity(b,a));f>=.6||d.push({item:a,title:b,bestSimilarity:c?.semanticSimilarity?f:void 0})}return{items:b,uncovered:d}}(a.chapters,a.evaluationItems,{semanticSimilarity:a.semanticSimilarity})).uncovered){let c=d.title;if(!c||(0,bg.Fe)(c)||(0,bg.ob)(c)||(0,eH.xb)(c))continue;let f=b.reduce((b,d,e)=>{let f=a.semanticSimilarity?a.semanticSimilarity(c,d):+!!d.includes(eL(c));return f>b.score?{index:e,score:f}:b},{index:-1,score:-1}).index,h=g[f>=0?f:0];h.sections.some(a=>eL(a).includes(eL(c))||eL(c).includes(eL(a)))||(h.sections.push(c),h.purpose=`${h.purpose||""};系统已按招标文件技术评审条目自动补足小节“${c}”,必须基于项目资料与适用技术展开实质内容。`,e.push({level:"warning",severity:"warning",message:`评分标准条目“${c}”无承接章节,已自动补小节“${c}”至“${h.title}”`,suggestion:"请确认补充小节与招标文件评审条目口径一致。"}))}}for(let b of(0,eI.y)(a))if("general"!==b)for(let a of eK[b]){let b=eL(g.map(a=>`${a.title} ${(a.sections||[]).join(" ")}`).join(" "));if(a.requiredSectionPatterns.some(a=>a.test(b)))continue;let c=g.findIndex(b=>{let c=eL(b.title);return a.chapterPatterns.some(a=>a.test(c))}),d=g[c>=0?c:0];(0,eH.xb)(a.title)||d.sections.push(a.title)}return{diagnostics:d,issues:e,enrichedChapters:g,criteriaAudit:c}}function eO(a){return a.replace(/\s+/gu,"").toLowerCase()}var eP=c(81892),eQ=c(30355),eR=c(2773),eS=c(38115),eT=c(31129);async function eU(a){a.planning.generationDiagnostics.metrics.push({name:"phase:plan",startedAt:a.planning.planPhaseStartedAt,endedAt:Date.now(),durationMs:Date.now()-a.planning.planPhaseStartedAt}),a.chapterLoop.draftPhaseStartedAt=Date.now();let b=(0,s.UO)(a.blueprint.billFactLock,a.planning.effectiveChapters);for(let c=0;c<a.planning.effectiveChapters.length;c+=a.blueprint.chapterConcurrency){let d=a.planning.effectiveChapters.slice(c,c+a.blueprint.chapterConcurrency);for(let g of(await Promise.all(d.map(async(d,g)=>{let i,j=c+g;(0,e.Te)(a.global.input.signal);let l=a.understanding.rolePoolRisk??ch({totalChunks:0,loadedChunks:0,vectorReady:void 0}),r=a.blueprint.blueprintActive?{missing:[],failedChecks:[]}:(0,p.RT)(d.title,a.blueprint.integratedBlueprint?.validation,a.planning.chapterIntentClassifier);if(r.missing.length>0){let b=r.failedChecks.length>0?`蓝图校验项「${r.failedChecks.join("、")}」未通过`:"蓝图校验未通过或构建异常",c=`${(0,bg.GQ)(d.title)} 依赖蓝图权威 [${r.missing.join("、")}],${b},已按节点级把关阻断生成`,e=(0,q.X5)({type:"chapter_generation",roleId:"chapter_generation",status:"failed",message:c,details:["数值密集型章所需蓝图权威不可用时禁止无权威成稿","请检查清单解析与蓝图构建诊断后重试"],progress:{current:j+1,total:a.planning.effectiveChapters.length,label:"章节阻断"}},{subtitle:(0,bg.GQ)(d.title),order:j});a.global.progressStages.push(e),a.understanding.failedChapterMessages.push(c),a.understanding.chapterGenerationStagesByOrder[j]=e,a.global.emitProgress();return}let t=Date.now(),u=a.global.progressStages.length;try{let c,g,v;a.global.progressStages.push((0,q.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:a.prepare.promptPlan.writerPrompts[0]?.id,status:"running",message:`${(0,bg.GQ)(d.title)} 正在检索证据并准备章节内容`,details:[`章节序号:${j+1}/${a.planning.effectiveChapters.length}`,`二级小节:${d.sections?.length||0} 个`,"正在生成检索查询"],progress:{current:j+1,total:a.planning.effectiveChapters.length,label:"章节生成"}},{subtitle:(0,bg.GQ)(d.title),order:j})),a.global.emitProgress();let w=a.global.input.resumeChapters?.find(a=>a.id===d.id||a.title===d.title),x=w?.content?.trim(),B=w?.evidence?.length?[...w.evidence]:[],C=a.prepare.projectUnderstanding.chapterPlans.find(a=>a.chapterId===d.id||a.chapterTitle===d.title),D=C?Object.values(C.evidenceQueries).flat().filter(Boolean):[],E=d.queries.length>0?d.queries:[a.prepare.template.name,a.prepare.template.outputTitle,d.title],F=a.understanding.chapterGraphMap.get(d.id);if(a.understanding.projectGraph&&F&&F.graphFiles.size>0)for(let b of[...F.graphFiles]){let c=a.understanding.getCachedFileDetail(b);if(c?.chunks?.length)for(let e of c.chunks)B.push({chapterId:d.id,filePath:c.file?.relativePath||b,score:5+(F.graphWorks.length+F.graphMethods.length)*.5,content:e.content,roleId:a.understanding.fileRoleByPath.get(b),processingType:a.understanding.fileProcessingByPath.get(b),sectionTitle:e.sectionTitle,source:"graph-evidence"})}let G=a.planning.chapterIntentClassifier.needsBasicFacts(d.title),H=a.blueprint.billFactLock?(0,s.Zc)(a.blueprint.billFactLock,d.title,d.sections||[]):[],I=(0,k.QP)(d,[...E,...D,...H],[]),J=Date.now();a.global.progressStages[u]=(0,q.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:a.prepare.promptPlan.writerPrompts[0]?.id,status:"running",message:`${(0,bg.GQ)(d.title)} 正在执行质量优先的章节检索${F?.graphFiles.size?`(图谱匹配 ${F.graphFiles.size} 个文件)`:""}`,details:I.map(a=>`检索:${a.slice(0,42)}`),progress:{current:j+1,total:a.planning.effectiveChapters.length,label:"证据检索"}},{subtitle:(0,bg.GQ)(d.title),order:j}),a.global.emitProgress();let K=x?[]:[...a.understanding.availableEvidenceScopePaths].filter(Boolean).sort(),L=x?[]:a.understanding.scopedIntelligence?.evidenceByChapterId?.[d.id]||[];if(L.length>0){B.push(...L);let b=a.planning.generationDiagnostics.evidence;b.intentEvidenceInjected=(b.intentEvidenceInjected??0)+L.length}let M=[],N=(d.requiredFacts||[]).filter(a=>!!a&&!I.some(b=>b.includes(a)||a.includes(b))).map(a=>`${d.title} ${a}`),Q=(a.prepare.requirementSemantics?.factClues||[]).filter(a=>!I.some(b=>b.includes(a)||a.includes(b))&&!N.some(b=>b.includes(a)||a.includes(b))).map(a=>`${d.title} ${a}`.trim()).slice(0,8),S=[...I,...N,...Q];if(K.length>0&&S.length>0){(0,e.Te)(a.global.input.signal);let b=await (0,e.l$)(S,async b=>a.understanding.searchWithCache(b,K,Math.min(a.understanding.requestedEvidencePerChapter,12),d.title,a.prepare.materialScope.selectedMaterialRoots),{kind:"search"});M.push(...b)}for(let b of(a.planning.generationDiagnostics.evidence.searchQueries+=S.length,a.planning.generationDiagnostics.evidence.searchMs+=Date.now()-J,a.global.progressStages[u]=(0,q.X5)({type:"chapter_generation",roleId:"chapter_generation",status:"running",message:`${(0,bg.GQ)(d.title)} KB 检索完成:${S.length} 组查询,准备深度召回与语义排序`,progress:{current:j+1,total:a.planning.effectiveChapters.length,label:"证据检索"}},{subtitle:(0,bg.GQ)(d.title),order:j}),a.global.emitProgress(),M)){B.push(...b.map(b=>({chapterId:d.id,filePath:b.filePath,score:b.score,content:b.content,roleId:a.understanding.fileRoleByPath.get(b.filePath),processingType:a.understanding.fileProcessingByPath.get(b.filePath),sectionTitle:b.sectionTitle,source:b.source})));let c=a.planning.generationDiagnostics.evidence;c.retrievedEvidenceInjected=(c.retrievedEvidenceInjected??0)+b.length}G&&K.length>0&&a.blueprint.basicFactSearchResults.length>0&&B.push(...a.blueprint.basicFactSearchResults.map(b=>({chapterId:d.id,filePath:b.filePath,score:b.score,content:b.content,roleId:a.understanding.fileRoleByPath.get(b.filePath),processingType:a.understanding.fileProcessingByPath.get(b.filePath),sectionTitle:b.sectionTitle,source:"basic-fact-cache"})));let U=x?[]:await (0,eR.$b)({manager:a.understanding.manager,projectRoot:a.prepare.projectRoot,chapter:d,plan:C,profile:a.prepare.projectMaterialProfile,scopedFilePaths:K,scopedMaterialRoots:a.prepare.materialScope.selectedMaterialRoots,limitPerQuery:Math.min(a.understanding.requestedEvidencePerChapter,10),signal:a.global.input.signal}).catch(b=>(a.planning.generationDiagnostics.evidence.retrievalFailures=(a.planning.generationDiagnostics.evidence.retrievalFailures??0)+1,a.planning.generationDiagnostics.llm.lastError=`计划材料证据召回失败(${d.title}):${b instanceof Error?b.message:String(b)}`,console.error(`[gen] 计划材料证据召回失败(${d.title})`,b),[]));B.push(...U);let W=[];a.planning.chapterIntentClassifier.needsBasicFacts(d.title)&&B.push(...a.understanding.safeProjectBasicEvidence.map(a=>({...a,chapterId:d.id,source:"pinned-evidence"})));let X=a.understanding.writerEvidence.filter(a=>/招标|投标须知|评标办法|专用合同条款|投标人须知/u.test(`${a.filePath||""}${a.sectionTitle||""}`));/概况|工程|项目|总体|部署/u.test(d.title)&&X.length>0&&B.push(...X.map(a=>({...a,chapterId:d.id,source:"pinned-evidence"})));let Y=a.prepare.materialScope.selectedMaterialRoots[0]||"";for(let b of(d.pinnedEvidenceFilePaths||[]).filter(Boolean)){let c=b.replace(/\\/gu,"/").replace(/^\.\//u,"").replace(/^\/+/u,""),e=Y&&c!==Y&&!c.startsWith(`${Y}/`)?`${Y}/${c}`:c,f=a.understanding.getCachedFileDetail(e);if(!f){let c=a.planning.generationDiagnostics?.evidence;c&&(c.pinnedEvidenceMissed=(c.pinnedEvidenceMissed??0)+1),console.warn("[stage-chapter-loop] pinned 证据文件未命中知识库(配置漂移或文件未入库)",{chapter:d.title,pinnedPath:b,resolvedPath:e});continue}B.push(...f.chunks.map(b=>({chapterId:d.id,filePath:f.file.relativePath,score:1,content:b.content,roleId:a.understanding.fileRoleByPath.get(f.file.relativePath),processingType:a.understanding.fileProcessingByPath.get(f.file.relativePath),sectionTitle:b.sectionTitle,source:"pinned-evidence"})))}let Z=B;if(!x&&a.prepare.webAccessConfig.enabled&&a.prepare.webAccessConfig.allowProjectFacts){let b=await at({config:a.prepare.webAccessConfig,chapterId:d.id,chapterTitle:d.title,sectionTitles:d.sections||[],runtimeRules:a.prepare.runtimePromptRules,localFacts:[...a.understanding.preliminaryFactsModel.project,...a.understanding.preliminaryFactsModel.schedule,...a.understanding.preliminaryFactsModel.quality,...a.understanding.preliminaryFactsModel.safety,...a.understanding.preliminaryFactsModel.resources,...a.understanding.preliminaryFactsModel.preciseFacts],signal:a.global.input.signal});a.understanding.webResearchReport.queries.push(...b.queries),a.understanding.webResearchReport.filteredCount+=b.filtered+b.evidence.length,b.failedQueries>0&&(a.understanding.webResearchReport.failedCount=(a.understanding.webResearchReport.failedCount??0)+b.failedQueries,a.planning.generationDiagnostics.llm.lastError=`联网检索失败 ${b.failedQueries} 次(${d.title}):${b.failures.slice(0,3).join(";")}`)}let $=x?[]:(0,eR.SK)({project:a.understanding.project,chapter:d,plan:C,profile:a.prepare.projectMaterialProfile,scopedFilePaths:K,highRisk:l.highRisk});$.length>0&&Z.push(...$),a.understanding.excludedEvidenceKeys.size>0&&(Z=Z.filter(b=>!a.understanding.excludedEvidenceKeys.has((0,eH.hM)(b))));let _=(()=>{let a=Number(process.env.DOCUMENT_SEMANTIC_TOP_CANDIDATES);return Number.isFinite(a)&&a>0?Math.floor(a):3e3})(),aa=(0,k.Mz)(d,Z,_),ab=await (0,aB.Mv)([eM(d)],aa.map(k.t7)),ac=(0,k.UG)(d,Z,{preservePinned:!0,semantic:{similarity:ab,queryText:eM(d)}},a.planning.generationDiagnostics);ac=(0,n.pm)(ac,a.understanding.canonicalFacts.scopeConflicts);let ad=d.requiredFacts.filter(a=>!ac.some(b=>(0,cf.Lk)(b,a))),ae=0,af=(0,P.kO)(a.understanding.bidComposition),ag=F?[F.graphWorks.length?`图谱识别本章工程内容:${F.graphWorks.join("、")}`:"",F.graphMethods.length?`图谱识别本章施工方法:${F.graphMethods.join("、")}`:"",F.graphBoqItems.length?`图谱识别本章BOQ清单项(${F.graphBoqItems.length}项):${F.graphBoqItems.map(a=>`${a.name} ${a.quantity}${a.unit}`).join("、")}`:"",F.gaps.length?`图谱识别本章资料缺口:${F.gaps.join(";")}`:""].filter(Boolean).join("\n"):"",ah=(0,n.Bf)(a.understanding.canonicalFacts.scopeConflicts),ai=(()=>{if(0===a.blueprint.requirementAssignments.length)return"";let b=(0,aC.NT)(d.title),c=a.blueprint.requirementAssignments.filter(a=>a.chapterTitle===b).map(a=>a.entry);return(0,aC.HF)(c)})(),aj=(()=>{if(0===a.blueprint.structureAssignments.length)return"";let b=(0,aC.NT)(d.title),c=a.blueprint.structureAssignments.filter(a=>a.chapterTitle===b).map(a=>a.requirement);return(0,aC.FR)(c,{bodyTableForbidden:(0,P._C)(a.understanding.bidComposition),bodyFigureForbidden:af})})(),ak=a.planning.chapterIntentClassifier.needsDustControl(d.title)||a.planning.chapterIntentClassifier.needsDustControl(`${d.title}${d.purpose||""}`)?"【扬尘治理六个百分百——规范固定条目,必须逐项落实并写入正文,每项一句具体措施,六项不得缺项;若本项目无拆迁工程,对“拆迁工地100%湿法作业”必须显性写明“本项目无拆迁工程,不涉及拆迁工地湿法作业”,不得省略】\n- 施工工地周边100%围挡\n- 物料堆放100%覆盖\n- 出入车辆100%冲洗\n- 施工现场地面100%硬化\n- 拆迁工地100%湿法作业\n- 渣土车辆100%密闭运输":"",al=(d.sections||[]).filter(a=>!/^(?:施工概况|施工流程|施工方法)$/u.test(a.trim())&&!/^附录/u.test(a.trim())),am=al.length>0?`【必须输出以下规划小节为三级标题(### 小节名),逐个小节展开正式正文:每小节正文不少于 100 字,不得只写标题、不得空小节、不得用表格替代正文;小节名与章标题相同或相近也必须输出,不得省略或合并】${al.join("、")}`:"",an=a.blueprint.billFactLock?(0,s.uD)(a.blueprint.billFactLock,d.title,{sections:d.sections||[]}):"",ao=a.blueprint.billFactLock?(0,s.zK)(a.blueprint.billFactLock,b,d.title):[],ap=a.blueprint.drawingFactLock?(0,bW.pH)(a.blueprint.drawingFactLock,d.title,{sections:d.sections||[]}):"",aq=function(a,b,c={}){let d=function(a,b,c={}){let{usable:d}=y(a);if(0===d.length)return[];let e=z(b,c.sections||[]);return 0===e.length?[]:d.map(a=>({fact:a,score:A(a,e)})).filter(a=>a.score>0).sort((a,b)=>b.score-a.score||String(a.fact.key).localeCompare(String(b.fact.key),"zh")||String(a.fact.value).localeCompare(String(b.fact.value),"zh")).map(a=>a.fact)}(a,b,c);if(0===d.length)return[];let e=Math.max(1,c.maxChars??3600),f=[],g=0;for(let a of d){let b=a.fieldName&&a.fieldName!==a.key?`(${a.fieldName})`:"",c=`- ${a.key}${b}:${String(a.value).slice(0,80)}`;if(g+c.length+1>e)break;f.push(c),g+=c.length+1}let h=d.slice(f.length);return 0===f.length?[]:[`【本章可靠参数清单(资料事实链参数索引:${d.length} 项与本章相关的规格/参数/数量/时间/比例/标准编号,须逐项在正文对应位置自然写入,保持原值原形态(数字、单位、编号中的连字符与年份不得改写、拆分或省略);商务金额/单价/税率/预留金类数据一律不得写入正文)】`,...f,...h.length>0?[`- 另需落位(仅列名,共${h.length}项,须同样逐项写入正文):${h.map(a=>String(a.key)).join("、")}`]:[]]}(a.understanding.preliminaryFactsModel,d.title,{sections:d.sections||[]}),ar=function(a,b){let c=b.indexOf(a),d=(a,b)=>`${(0,bg.tb)(a,b.title)}${b.sections?.length?`(小节:${b.sections.join("、")})`:""}`,e=b.map((a,b)=>({item:a,index:b})).filter(b=>b.item!==a);return["【跨章写作职责分工——只就本章主题展开,写时即不产生跨章重复】",`- 本章职责:${d(c>=0?c:0,a)}`,...e.length>0?["- 其他章节职责(不得展开复述其主题内容):",...e.map(a=>` - ${d(a.index,a.item)}`)]:[],"- 写作规范:只就本章主题展开;其他章节主题的内容如需关联,一句话引用(“详见第X章”,X 替换为实际章号),不得展开复述;篇幅以本节合同字数为准,不得借写其他章节主题充数。"].join("\n")}(d,a.planning.effectiveChapters),as=/施工方法|施工方案|施工工艺|主要施工内容|分部分项/u.test(d.title)?(()=>{let b=(0,V.Hp)((0,V.v7)(a.understanding.preliminaryFactsModel));return b?`【本章必须覆盖的清单分部分项全景(下列专有分项逐项写入正文施工方法,不得只写道路/铺装/绿化等大类而遗漏清单独有分项)】
|
|
57
57
|
${b}`:""})():"",au=(0,eP.uQ)(d.title),av=[au?`【本章写作重点】${au.goal}
|
|
58
58
|
【本章必须覆盖(逐项落位,缺一即判未响应)】
|
|
@@ -218,7 +218,7 @@ ${a.content}`).join("\n\n"));let g=Date.now(),h=JSON.stringify({stages:a.map(a=>
|
|
|
218
218
|
${a.content}`).join("\n\n"):i.markdown,k=S(ac({...i,ownerPid:process.pid,ownerStartedAt:z,executionStages:a,checkpointChapters:b,partialChapters:f?.chapters?u(b):i.partialChapters,markdown:j,wordCount:j?(0,o.V7)(j):i.wordCount}),e),l=[...a].reverse().find(a=>"running"===a.status)||a[a.length-1];ad(e,{taskId:c,title:`生成 ${k.templateName||k.title}`,status:"processing",percent:Math.max(1,Math.min(99,l?.progress?Math.round(l.progress.current/Math.max(1,l.progress.total)*90):30)),message:l?.message||"文档生成中",stages:a});let m=h===C;if(B=g,C=h,console.log(`[gen] progress saved: ${a.length} stages, checkpoint=${b?.length||0}, doc=${d}`),m){let a=process.memoryUsage();console.log(`[gen] memory rss=${Math.round(a.rss/1048576)}MB heap=${Math.round(a.heapUsed/1048576)}MB doc=${d}`)}}}catch(a){console.error("[gen] progress save error:",a)}}})).then(async a=>{v.current&&(v.current.lastProgressAt=Date.now());let b=R(d,e);if(!b||"generating"!==b.status)return b??g;let f=/结构化事实读取不足|正文可能未显式覆盖|仅包含文件类型和占位符|不在本次招标范围内|知识库文件索引失败|暂无可检索内容切片|未抽取到结构化事实|兜底片段|资料抽取诊断|无法直接读取文本内容|占位符|缺乏详细的.*具体尺寸|需结合原文件进一步深化|章节生成存在兜底/u,i=a.markdown||"",l=/^##\s+(?!目录$)(?!附录)(?!附表\s*[一二三四五六七八九十\d]{1,3})(?!第[一二三四五六七八九十百千万\d]+章\s+)/gmu.test(i),m=/(?:第?\d+页|P\.?\s*\d+)/iu.test(i),o=/施工方/u.test(i),p=a.validationIssues.filter(a=>"error"===a.level||"warning"===a.level).map(a=>a.suggestion?`${a.message}:${a.suggestion}`:a.message).filter(a=>!/^\s*[[{]/u.test(a)&&!/"status"\s*:/u.test(a)&&!f.test(a)).filter(a=>!/正文存在非正式章二级标题/u.test(a)||l).filter(a=>!/资料页码|文件页码|页码引用/u.test(a)||m).filter(a=>!/禁止内容|施工方/u.test(a)||o).filter(b=>!a.exportGate.passed||!/目录与正文不一致|表格分隔线位置不规范/u.test(b)),q=(0,j.yw)(a.markdown,a.chapters).filter(a=>"empty"===a.reason);if(q.length>0&&p.unshift(`小节内容补写未完成:仍有 ${q.length} 个空洞小节,请继续生成或补充资料后重试`),!a.exportGate.passed){let b=a.exportGate.blockingIssues||[],c=a.reviewMetadata?.suspensionChecklist??(0,k.aF)(b,a.chapters);p.unshift((0,k.Fy)(c))}let r=a.exportGate.passed?"completed":"completed_with_issues",s=ac({...b,templateName:a.templateName,templateVersion:a.templateVersion??b.templateVersion,title:a.title,markdown:a.markdown,status:r,draft:a,executionStages:a.executionStages,partialChapters:a.partialChapters,checkpointChapters:a.chapters,reviewMetadata:a.reviewMetadata,promptProvenance:a.promptProvenance??b.promptProvenance,agentWorkflow:a.agentWorkflow,assets:a.assets||[],completedAt:Date.now(),warningIssues:p}),t=Y(s,e),u=S({...s,assets:t?[t,...(s.assets||[]).filter(a=>a.id!==t.id)]:s.assets},e);if(a.markdown){let b=(0,h.bsz)(a.markdown);(b.h3.length>0||b.h4.length>0)&&(0,h.Hpz)({documentId:d,templateId:u.templateId||n.templateId,h3:b.h3,h4:b.h4,createdAt:new Date().toISOString()})}return X(a.assets||[],d,e),ad(e,{taskId:c,title:`生成 ${u.title}`,status:"completed"===u.status?"success":"warning",percent:100,message:"completed"===u.status?"文档生成完成,已通过导出门禁":`文档生成完成,存在 ${a.exportGate.blockingIssues.length||p.length||1} 项质量提示待人工复核(不影响导出)`,stages:a.executionStages}),u}).catch(a=>{let f=R(d,e);if(!f||"generating"!==f.status)return f??g;let h=a instanceof Error?a.message:String(a),i=a instanceof Error&&"用户中止"===a.message||q.signal.aborted?"aborted":f.checkpointChapters?.length||y?"warning":"failed",j=y||f.markdown||f.checkpointChapters?.map(a=>`# ${a.title}
|
|
219
219
|
|
|
220
220
|
${a.content}`).join("\n\n")||"",k=r(b||f.executionStages,h),l=S(ac({...f,title:"failed"===i?s(f):f.title&&"生成中"!==f.title?f.title:`${f.templateName||"文档"}生成未完成`,status:i,error:h,markdown:j,executionStages:k,completedAt:Date.now(),warningIssues:"warning"===i?[...f.warningIssues||[],h]:f.warningIssues}),e);return ad(e,{taskId:c,title:`生成 ${l.title}`,status:"warning"===i?"warning":"error",percent:100,message:h,stages:k,error:h}),l}).finally(()=>{w.delete(c),ag()}),G={id:c,documentId:d,templateId:n.templateId,projectRoot:e,status:"generating",controller:q,promise:F,startedAt:p,lastProgressAt:p};return v.current=G,w.set(c,G),{taskId:c,documentId:d,record:g}}function ai(a,b=(0,n.aY)()){let c=g.resolve(b),e=(0,m.computeProjectId)(c),f=Date.now(),i=a.resumeDocumentId?R(a.resumeDocumentId,c):null;if(i){let b=O(i.id),e=b?function(a,b){let c=R(a.documentId,b);return c&&"generating"===c.status?{taskId:a.id,documentId:a.documentId,record:c,queuePosition:void 0}:null}(b,c):null;if(e)return e;if(w.size>=ae())throw Error(`当前已有 ${w.size} 个文档生成任务在运行(上限 ${ae()}),请等待完成或中止后再运行`);let g=x.findIndex(a=>a.documentId===i.id);g>=0&&x.splice(g,1);let h=`task-${f}-${d.randomBytes(4).toString("hex")}`,j={...i,taskId:h,status:"generating",error:void 0,completedAt:void 0,interruptedAt:void 0,interruptionReason:void 0,abortedAt:void 0,abortedBy:void 0,abortedStage:void 0,ownerPid:process.pid,ownerStartedAt:z,executionStages:[{type:"validation",roleId:"resume-generation",status:"running",message:"已重新进入生成流程;仅复用通过当前工作流版本、项目、模板、需求和导出门禁校验的章节,其余章节重新生成"}],partialChapters:void 0,checkpointChapters:void 0,draft:void 0,warningIssues:void 0,updatedAt:f};return{...ah({taskId:h,documentId:i.id,resolvedProjectRoot:c,templateId:a.templateId,requirement:a.requirement,maxEvidencePerChapter:a.maxEvidencePerChapter,resumeDocumentId:a.resumeDocumentId,existing:i,initial:j,startMessage:"文档生成任务已进入后台队列"}),queuePosition:void 0}}let j=`doc-${f}-${d.randomBytes(4).toString("hex")}`,k=`task-${f}-${d.randomBytes(4).toString("hex")}`,l=(0,h.QJx)(a.templateId),o={id:j,taskId:k,ownerPid:process.pid,ownerStartedAt:z,templateId:a.templateId,templateName:l?.name,templateVersion:l?.version,title:"排队中",requirement:a.requirement||"",maxEvidencePerChapter:a.maxEvidencePerChapter,projectRoot:c,projectId:e,knowledgeBasePath:(0,n.NW)(c),markdown:"",status:"queued",assets:[],createdAt:f,updatedAt:f};x.push({taskId:k,documentId:j,templateId:a.templateId,projectRoot:c,requirement:a.requirement,maxEvidencePerChapter:a.maxEvidencePerChapter,enqueuedAt:f});let p=af(j)??1,q={...o,executionStages:[{type:"validation",roleId:"queue-wait",status:"running",message:`已加入生成队列(位次 ${p}):同模板前一任务完成或并发名额空闲后自动开始`}]};S(q,c),ad(c,{taskId:k,title:`生成 ${l?.name||"文档"}`,status:"processing",percent:1,message:`已加入生成队列(位次 ${p}),等待自动接续`,stages:q.executionStages}),ag();let r=O(j);return{taskId:k,documentId:j,record:R(j,c)||q,queuePosition:r?void 0:af(j)}}},51190:(a,b,c)=>{c.d(b,{nC:()=>j,A:()=>D,GZ:()=>E,qD:()=>F,mN:()=>t,KX:()=>z,UT:()=>s,nD:()=>o,pm:()=>B,Bf:()=>C});var d=c(73024),e=c(76760),f=c(1218),g=c(22157),h=c(48161),i=c(28366);let j=[{key:"project_name",label:"项目名称",aliases:["项目名称","工程名称","招标项目名称"],valueType:"text"},{key:"project_code",label:"项目编号",aliases:["项目编号","招标项目编号","工程编号"],valueType:"identifier"},{key:"owner",label:"招标人",aliases:["招标人","项目业主","建设单位","发包人","采购人"],valueType:"organization"},{key:"project_location",label:"建设地点",aliases:["建设地点","实施地点","服务地点","交付地点"],valueType:"location"},{key:"project_scale",label:"建设规模",aliases:["建设规模","工程规模","项目规模"],valueType:"scale"},{key:"schedule_requirement",label:"计划工期",aliases:["计划工期","合同工期","总工期","工期","实施周期","服务期限"],valueType:"duration"},{key:"quality_standard",label:"质量标准",aliases:["质量标准","质量目标","验收标准","服务标准"],valueType:"standard"},{key:"project_investment_estimate",label:"合同估算价",aliases:["合同估算价","合同估算价格","投资估算","估算价格","最高投标限价","招标控制价","预算金额"],valueType:"money"},{key:"labor_peak",label:"劳动力高峰人数",aliases:["劳动力高峰","高峰期劳动力","高峰人数","劳动力峰值","高峰期人数","劳动力配置"],valueType:"count"},{key:"assembly_rate",label:"装配率",aliases:["装配率","装配式建筑占比","装配式比例","装配式建筑面积占比"],valueType:"percentage"},{key:"foundation_support_form",label:"基坑支护形式",aliases:["基坑支护形式","基坑支护方式","支护形式","支护方式"],valueType:"text"},{key:"excavation_depth",label:"基坑开挖深度",aliases:["基坑开挖深度","基坑深度","开挖深度","基坑底标高","坑底标高","坡底线","坑底"],valueType:"text"},{key:"award_clause",label:"创优奖惩条款",aliases:["创优奖惩","优质优价","创优目标","奖惩条款","创优奖项"],valueType:"award"}],k=[{pattern:/土钉/u,form:"土钉墙"},{pattern:/锚杆|锚索/u,form:"锚杆支护"},{pattern:/喷锚/u,form:"喷锚支护"},{pattern:/放坡/u,form:"放坡开挖"},{pattern:/地下连续墙/u,form:"地下连续墙"},{pattern:/支护桩/u,form:"支护桩"}];function l(a){return/^(见|详见|参见|按|以).{0,30}(招标公告|招标文件|投标人须知|前附表|合同|附件|图纸|清单|约定|规定|执行)/u.test(a)||/见招标公告|见投标人须知前附表|详见|按.*执行/u.test(a)}function m(a,b){switch(b.valueType){case"duration":if(!/\d+(?:\.\d+)?\s*(?:日历天|天|个月|月|年)/u.test(a))return{rejected:!0,score:-80,reason:"缺少明确工期数值和时间单位"};if(/延误|逾期|违约|赔偿|罚款|处罚|扣除|扣留|切除/u.test(a))return{rejected:!0,score:-90,reason:"命中工期违约条款而非计划工期"};return{rejected:!1,score:45,reason:"包含明确工期数值和时间单位"};case"money":if(!/\d+(?:\.\d+)?\s*(?:万元|元|亿元)/u.test(a))return{rejected:!0,score:-80,reason:"缺少明确金额数值和单位"};if(/综合单价|税率|增值税|利润|报价明细/u.test(a))return{rejected:!0,score:-90,reason:"命中非目标商务明细"};return{rejected:!1,score:45,reason:"包含明确金额数值和单位"};case"standard":if(!/合格|优良|一次性验收|达到|满足|符合/u.test(a))return{rejected:!0,score:-70,reason:"不符合标准类字段表达"};if(/工期|投标|技术标准|有效期/u.test(a))return{rejected:!0,score:-90,reason:"标准字段包含其他字段或投标条款"};return{rejected:!1,score:40,reason:"符合标准类字段表达"};case"location":if(l(a))return{rejected:!1,score:-40,reason:"引用型地点弱值"};if(!/(省|市|区|县|镇|街道|路|园区|大道|巷|内|号)/u.test(a))return{rejected:!1,score:-10,reason:"地点具体性不足"};return{rejected:!1,score:35,reason:"包含具体地址特征"};case"organization":if(/监督管理部门|投标人|中标候选人|评标委员会/u.test(a))return{rejected:!0,score:-90,reason:"组织字段角色串位"};if(/(公司|集团|单位|委员会|机关|中心|局|院|所|政府|运营管理)/u.test(a))return{rejected:!1,score:35,reason:"包含组织名称特征"};return{rejected:!1,score:5,reason:"组织名称特征较弱"};case"identifier":if(!/^[A-Za-z0-9\-_.()()]+$/u.test(a))return{rejected:!0,score:-70,reason:"编号格式不合法"};if(/(?:㎡|m²|m2|m3|m³|平方米|米|万元|元|日历天|个月)/u.test(a))return{rejected:!0,score:-60,reason:"编号中混入量纲单位,疑似字段串位"};return{rejected:!1,score:35,reason:"符合编号格式"};case"scale":if(/\d+(?:\.\d+)?\s*(?:㎡|平方米|m²|米|m|层|栋|座|万元|元)/iu.test(a))return{rejected:!1,score:30,reason:"包含规模数值或单位"};return{rejected:!1,score:5,reason:"规模字段为文本描述"};case"count":if(!/\d+(?:\.\d+)?\s*人/u.test(a))return{rejected:!0,score:-80,reason:"缺少明确人数数值"};if(/面积|工期|金额|报价|万元/u.test(a))return{rejected:!0,score:-70,reason:"人数字段混入其他量纲"};return{rejected:!1,score:40,reason:"包含明确人数数值"};case"percentage":if(!/\d+(?:\.\d+)?\s*(?:%|%)/u.test(a))return{rejected:!0,score:-80,reason:"缺少百分比数值"};if(/工期|金额|报价/u.test(a))return{rejected:!0,score:-70,reason:"百分比字段混入其他量纲"};return{rejected:!1,score:40,reason:"包含百分比数值"};case"award":if(!/(?:杯|奖|万元|优质优价)/u.test(a))return{rejected:!0,score:-70,reason:"缺少奖项或奖惩金额特征"};if(/评标|保证金|报价明细|综合单价/u.test(a))return{rejected:!0,score:-90,reason:"奖项字段串入评标条款"};return{rejected:!1,score:40,reason:"包含奖项/奖惩金额特征"};default:if("project_name"===b.key){if(/存在部位|风险等级|管控措施|监测频次|闭环要求|序号|内容|范围|不适用/u.test(a))return{rejected:!0,score:-90,reason:"项目名称字段串位或表头噪声"};if(!/项目|工程|学院|宿舍|楼|校区|施工总承包/u.test(a))return{rejected:!0,score:-70,reason:"项目名称缺少工程名称特征"};return{rejected:!1,score:35,reason:"符合项目名称特征"}}if("foundation_support_form"===b.key){if(!(k.some(b=>b.pattern.test(a)||a.includes(b.form))||/支护|放坡|锚|桩|喷|开挖|护坡/u.test(a)))return{rejected:!0,score:-70,reason:"基坑支护形式缺少支护工艺特征"};if(/监测|监测频次|闭环/u.test(a))return{rejected:!0,score:-80,reason:"支护形式字段串入监测管控内容"};return{rejected:!1,score:30,reason:"包含支护工艺特征"}}if("excavation_depth"===b.key){if(!/\d+(?:\.\d+)?/u.test(a))return{rejected:!0,score:-70,reason:"基坑开挖深度缺少数值"};if(/监测|监测频次|闭环|验收|支护桩/u.test(a))return{rejected:!0,score:-80,reason:"开挖深度字段串入监测管控内容"};return{rejected:!1,score:30,reason:"包含开挖深度数值"}}return{rejected:!1,score:a.length>=2?10:-20,reason:"文本字段"}}}function n(a,b){let c=(0,f.de)(a.value),d=[],e=30,g=!1;(!c||c.length>260)&&(g=!0,e-=100,d.push("空值或过长")),/###|投标文件的编制|备选投标方案|投标将被否决|投标人提供|投标有效期|电子交易系统|公共资源交易监督管理部门|中标候选|评标委员会|实质性内容作出响应|招标人有权核查/u.test(c)&&(g=!0,e-=100,d.push("大段条款或 Markdown 噪声")),/(?<=[日天])\s*[0-9]+(?:\.[0-9]+)?(?=[\s]*(?:招标|建设|质量|合同|项目|工程|资金|投标|开标|评标|付款|工期|开工|计划|计价|现场|资质|标段|[0-9]{1,3}[.、.]|[,,。;;]|$))/u.test(c)&&(g=!0,e-=100,d.push("值尾部编号粘连,疑似 PDF 编号串行残留")),j.some(a=>a.key!==b.key&&a.aliases.some(a=>c.includes(a)))&&(e-=45,d.push("包含其他字段名,疑似字段串位")),l(c)&&(e-=35,d.push("引用型弱值"));let h=m(c,b);return e+=h.score,d.push(h.reason),h.rejected&&(g=!0),"evidence"===a.sourceType&&(e+=20,d.push("来源为证据原文")),a.sourceName&&/补疑|答疑|澄清|补充|更正|修改/u.test(a.sourceName)&&(e+=35,d.push("补疑/澄清类修正文件,权威最高")),a.sourceName&&/招标文件|招标公告|前附表|合同|需求书|正文/u.test(a.sourceName)&&(e+=15,d.push("来源文件可信")),"generated_markdown"===a.sourceType&&(e-=10),{...a,value:c,confidence:e,rejected:g,reasons:d}}function o(a){let b=`${a.fieldId||""}${a.key||""}${a.fieldName||""}`;return j.find(c=>c.key===a.fieldId||c.aliases.some(a=>b.includes(a)))}let p=/坡底线|坑底标高|基坑底标高|开挖深度|基坑深度/u,q=RegExp(k.map(a=>a.pattern.source).join("|"),"u"),r=/(?:超过|大于|小于|不[大低小]于|不低于|及以上|及以下|以上|以下)/u;function s(a){let b=[],c=new Map,d=new Map;for(let b of a){let a=String(b.content||""),e=b.filePath||b.sectionTitle||"drawing_annotation";if(!("drawing"===b.processingType||/dwg|图纸|CAD/iu.test(`${b.filePath||""} ${b.sectionTitle||""}`))&&!/CAD 语义标注/u.test(a)||!p.test(a)&&!q.test(a))continue;let f=a.split(/\r?\n/u);for(let a=0;a<f.length;a+=1){let b=f[a].trim();if(b){if(p.test(b)&&!/坑底H/u.test(b)&&!r.test(b)){let d=a=>Number.isFinite(a)&&a>=1&&a<50,g=[...b.matchAll(/-?(\d+(?:\.\d{1,3})?)/gu)].filter(a=>{let c=a.index??0,d=b[c-1],e=b[c+a[0].length];return":"!==d&&":"!==e&&"#"!==e}).map(a=>Math.abs(Number(a[1]))).filter(d),h=g.length>0?Math.max(...g):NaN,i=!1;if(!Number.isFinite(h)&&a>0&&/^-?[\d.,]+\s*$/u.test(f[a-1].trim())){let b=Math.abs(Number(f[a-1].trim().replace(/,/gu,"")));d(b)&&(h=b,i=!0)}if(Number.isFinite(h)){let d=(i?`${f[a-1].trim()} ${b}`:b).replace(/[|]/gu," ").replace(/\s+/gu," ").trim().slice(0,48),g=`${e}:${h.toFixed(2)}`;c.has(g)||c.set(g,{value:h,context:d})}}if(q.test(b))for(let a of k.filter(a=>a.pattern.test(b)).map(a=>a.form))d.has(a)||d.set(a,{form:a,context:b.replace(/\s+/gu," ").slice(0,60)})}}}if(c.size>0){let a=Math.max(...[...c.values()].map(a=>a.value)),d=[...c.values()].map(a=>a.context).slice(0,3).join(";");b.push({key:"基坑开挖深度",fieldId:"excavation_depth",fieldName:"基坑开挖深度",value:`${a}m(图纸标注:${d})`,sourceFile:"图纸标注",roleId:"drawing",processingType:"drawing",confidence:90})}if(d.size>0){let a=[...d.values()],c=a.map(a=>a.context).slice(0,3).join(";");b.push({key:"基坑支护形式",fieldId:"foundation_support_form",fieldName:"基坑支护形式",value:`${a.map(a=>a.form).join("、")}(图纸标注:${c})`,sourceFile:"图纸标注",roleId:"drawing",processingType:"drawing",confidence:90})}return b}function t(a){return function(a,b=j){let c=new Map;for(let d of b){let b=a.filter(a=>a.fieldKey===d.key).sort((a,b)=>b.confidence-a.confidence),e=b.find(a=>!a.rejected&&a.confidence>0);e&&c.set(d.key,{fieldKey:d.key,label:d.label,value:e.value,source:e.sourceName||e.sourceType,confidence:e.confidence,candidates:b,selectedReason:e.reasons.join(";")})}return c}([...function(a){let b=[];for(let c of a){let a=o(c);if(!a)continue;let d=(0,g.lG)(c.value);b.push(n({fieldKey:a.key,label:a.label,value:d,sourceType:"structured_fact",sourceName:c.sourceFile||c.sourceRef?.sectionTitle||"structured_fact"},a))}let c=j.find(a=>"excavation_depth"===a.key);if(c)for(let d of a){if("excavation_depth"===d.fieldId)continue;let a=(0,g.lG)(d.value),e=`${d.fieldId||""}${d.key||""}${d.fieldName||""} ${a}`;if(!/坡底线|坑底|电梯井|坑底标高/u.test(e))continue;let f=[...a.matchAll(/-?(\d+(?:\.\d{1,3})?)(?=[^0-9.]|$)/gu)].map(a=>Math.abs(Number(a[1]))).filter(a=>Number.isFinite(a)&&a>.5&&a<50);if(0===f.length)continue;let h=Math.max(...f);b.push(n({fieldKey:"excavation_depth",label:c.label,value:`${h}m(图纸标注:${a.slice(0,60)})`,sourceType:"structured_fact",sourceName:d.sourceFile||d.sourceRef?.sectionTitle||"drawing_annotation"},c))}return b}(a.facts),...function(a,b="generated_markdown"){let c=[];for(let d of a.split(/\r?\n/u)){if(!/^\|.*\|\s*$/u.test(d)||/^\|\s*:?-{3,}:?/u.test(d))continue;let a=d.trim().replace(/^\|/u,"").replace(/\|$/u,"").split("|").map(a=>a.replace(/\*\*/gu,"").trim());if(a.length<2)continue;let e="序号"===a[0]&&a.length>=3?a[1]:a[0],f="序号"===a[0]&&a.length>=3?a[2]:a[1],g="序号"===a[0]&&a.length>=4?a[3]:a[2],h=j.find(a=>a.aliases.some(a=>e.includes(a))||a.label===e);!h||!f||/内容|参数|资料未明确|系统暂未确认|暂未从知识库确认/u.test(f)||c.push(n({fieldKey:h.key,label:h.label,value:f,sourceType:"generated_markdown",sourceName:g||b},h))}return c}(a.markdown||"")])}function u(a){return({user:100,addendum:96,contract:90,tender:85,boq:75,drawing:70,standard:60,evidence:55,structured_fact:50,projectGraph:40,generated_markdown:30,derived:20,unknown:10})[a]}function v(a){let b=e.join(process.env.HOME||process.cwd(),".customize-agent","cache","document-workflow",(0,g.c6)(a||"default"));return d.mkdirSync(b,{recursive:!0}),b}let w=new Map;function x(a){let b=w.get(a);return b||(b=RegExp(a,"u"),w.set(a,b)),b}function y(a,b){let c=`${a||""} ${b||""}`;return/补疑|答疑|澄清|补充|更正|修改/u.test(c)?95:/合同/u.test(c)?90:/招标文件|招标公告|前附表|投标人须知|需求书/u.test(c)?85:/清单|工程量|BOQ|编制说明/u.test(c)?75:/图纸|设计/u.test(c)?70:50}function z(a,b=(0,i.bC)()){let c=[];for(let d of["area","cost","duration","floors","parkingSpaces"]){let e=new Set,f=[];for(let c of a){let a=(0,g.lG)(c.value),h=y(c.sourceFile,c.roleId);for(let g of function(a,b,c,d){let e=[],f="area"===b?/(?<![地上地下门卫室值班室配电室配电房泵房水泵房锅炉房公厕车库车棚岗亭传达室警卫室样板房售楼处门房])总?建筑面积|建设规模/u:"cost"===b?/合同估算价|合同估算价格|投资估算|最高投标限价|招标控制价|工程总投资|总投资|工程造价/u:"floors"===b?/总?层数|建筑层数|地上层数|地下层数|楼层数/u:"parkingSpaces"===b?/总?车位|停车位|机动车位|车位数/u:/计划工期|合同工期|总工期|施工周期/u,g="floors"===b||"parkingSpaces"===b?"\\d+(?:[.,]\\d+)?":"\\d{2,}(?:[.,]\\d+)?",h=RegExp(`(?:${f.source})(?:[^0-9\\n]{0,14}?)(${g})\\s*${"area"===b?"(万?㎡|万?m\xb2|万?m2|万?平方米)":"cost"===b?"(万元|亿元|万?元)":"floors"===b?"(层)":"parkingSpaces"===b?"(个|个车位|个停车位)":"(日历天|天|个月|月)"}`,"giu"),i=RegExp(g,"u");for(let g of a.matchAll(h)){let h,j=g[0].match(f),k=j?.[0]||"",l=g[1].replace(/[,,]/gu,"").trim(),m=(g[2]||"").trim();if(!k||!l||!i.test(l))continue;let n=(g.index??0)+(j?.index??0),o=(g.index??0)+g[0].indexOf(g[1]),p=o-(n+k.length),q=a.slice(n+k.length,o);if("area"===b&&/占地|用地/u.test(q))continue;let r=function(a,b,c,d,e,f){let g=a.slice(Math.max(0,b-10),b),h=a.slice(b+c,d),i=`${g}${h}`,{addendumSource:j,amendmentContext:k,thresholdComparison:l,aspirationalPrefix:m}=f.factGovernance;return x(j).test(e||"")&&x(k).test(i)?"amendment":x(l).test(i)?"threshold":x(m).test(g)?"aspirational":"ontological"}(a,n,k.length,o,c,d);if("threshold"!==r&&"aspirational"!==r){if("duration"===b||"floors"===b||"parkingSpaces"===b)h=`${l}|${m}`;else{let a=+!!/万/u.test(m),b=Number(l)*(a?1e4:1);if(!Number.isFinite(b))continue;h=String(/亿元/u.test(m)?1e8*b:/万元/u.test(m)?1e4*b:b)}e.push({scope:k,value:l,unit:m,compareKey:h,contextClass:r,anchorScore:(p<=3?3:p<=9?2:1)+("ontological"===r||"amendment"===r?2:1),gapLength:p})}}return e}(a,d,c.sourceFile,b)){let a=`${c.sourceFile||""}|${g.scope}|${g.compareKey}`;e.has(a)||(e.add(a),f.push({...g,sourceFile:c.sourceFile,priority:h}))}}if(!(f.length<2))for(let[a,e]of f.reduce((a,b)=>{let c=b.scope.replace(/^总/u,""),d=a.get(c)||[];return d.push(b),a.set(c,d),a},new Map)){let f;if(new Set(e.map(a=>a.compareKey)).size<2||new Set(e.map(a=>a.sourceFile).filter(Boolean)).size<2)continue;let g=Math.max(...e.map(a=>a.priority)),h=e.filter(a=>a.priority===g),i=Math.max(...h.map(a=>a.anchorScore)),j=h.filter(a=>a.anchorScore===i),k=1===new Set(j.map(a=>a.compareKey)).size?j[0]:void 0;if(k){let a=k.gapLength>b.factGovernance.weakAnchorGapThreshold;f="amendment"===k.contextClass?a?"medium":"high":a?"low":"medium"}c.push({kind:d,scope:`${a}(${"area"===d?"面积":"cost"===d?"金额":"floors"===d?"层数":"parkingSpaces"===d?"车位数":"工期"}口径)`,values:[...new Map(e.map(a=>[`${a.value}${a.unit}|${a.sourceFile||""}`,{value:a.value,unit:a.unit,sourceFile:a.sourceFile,priority:a.priority}])).values()],resolution:k?`${k.value}${k.unit}`:void 0,...f?{confidence:f}:{}})}}return c}function A(a){let b=new Map;for(let c of a){if(!c.resolution||"low"===c.confidence||b.has(c.kind))continue;let a=c.values.find(a=>`${a.value}${a.unit}`===c.resolution),d=a?a.value.replace(/[,,]/gu,""):"",e=c.values.filter(a=>`${a.value}${a.unit}`!==c.resolution).map(a=>({value:a.value.replace(/[,,]/gu,""),unit:a.unit}));d&&0!==e.length&&b.set(c.kind,{winnerNum:d,losers:e})}return b}function B(a,b){return b?.length?a.map(a=>{let c=function(a,b){let c=a;for(let{winnerNum:a,losers:d}of A(b).values())for(let b of d)b.unit&&c.includes(`${b.value}${b.unit}`)?c=c.split(`${b.value}${b.unit}`).join(`${a}${b.unit}`):c.includes(b.value)&&(c=c.split(b.value).join(a));return c}(a.content,b);return c===a.content?a:{...a,content:c}}):a}function C(a){let b=[];for(let c of a){if(!c.resolution)continue;let a=c.values.filter(a=>`${a.value}${a.unit}`!==c.resolution);if(0===a.length)continue;let d=a.map(a=>`${a.value}${a.unit}`).join("、");"high"===c.confidence?b.push(`${c.scope}必须统一为 ${c.resolution}(补疑/答疑/澄清类修正文件权威最高;${d} 已被修正,正文禁止出现)`):"medium"===c.confidence?b.push(`${c.scope}应统一为 ${c.resolution}(按资料来源优先级裁决;${d} 为败选值,正文避免使用)`):b.push(`${c.scope}参考口径为 ${c.resolution}(锚定较弱,请人工复核;${d} 不参与自动改写)`)}return b}function D(a,b){let c=A(b);if(0===c.size)return a;let d={area:/建设规模|工程规模|建筑面积|用地面积|占地面积|project_scale|scale/u,cost:/合同估算|投资估算|最高投标限价|招标控制价|总投资|工程造价|project_cost|cost|price|amount/u,duration:/计划工期|合同工期|总工期|施工周期|duration|schedule/u,floors:/总层数|建筑层数|地上层数|地下层数|楼层数|project_floors|floors/u,parkingSpaces:/总车位|停车位|机动车位|车位数|project_parking|parking/u};return a.map(a=>{let b=[...c.keys()].find(b=>d[b].test(a.key)||d[b].test(a.value));if(!b)return a;let{winnerNum:e,losers:f}=c.get(b),g=a.value,h=!1;for(let a of f)a.unit&&g.includes(`${a.value}${a.unit}`)?(g=g.split(`${a.value}${a.unit}`).join(`${e}${a.unit}`),h=!0):g.includes(a.value)&&(g=g.split(a.value).join(e),h=!0);return h?{...a,value:g}:a})}function E(a,b){if(a.length<=1)return a;let c=z(a,(0,i.bC)(b)),d=D(a,c),e=/项目名称|工程名称|招标人|建设单位|建设地点|质量标准|合同价格形式|绿色建筑等级|投标有效期|质保期|劳动力高峰|装配率|支护形式|创优奖惩|结构形式|总层数|建筑层数|建筑面积|建设规模|计划工期|合同工期|总工期/u,h=a=>e.test(`${a.key||""}${a.fieldName||""}${a.fieldId||""}`),j=a=>a.fieldId||a.key||a.fieldName||"",k=new Map;for(let a of d){if(!h(a))continue;let b=j(a),c=k.get(b);if(!c){k.set(b,a);continue}let d=a=>({priority:y(a.sourceFile,a.roleId),normalized:(0,f.de)((0,g.lG)(a.value))}),e=d(c),i=d(a);(i.priority>e.priority||i.priority===e.priority&&i.normalized!==e.normalized&&i.normalized.length<e.normalized.length)&&k.set(b,a)}if(0===k.size)return d;let l=new Set;for(let a of d)h(a)&&k.get(j(a))!==a&&l.add(a);return 0===l.size?d:d.filter(a=>!l.has(a))}function F(a){var b;let c=(0,g.c6)({version:"canonical-facts-v7",rulesHash:(0,i.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,g.c6)(a.projectGraph):"",markdownHash:a.markdown?(0,g.c6)(a.markdown.slice(0,2e4)):""}),k=function(a,b){let c=v(a);if(c)try{let a=JSON.parse(d.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(k)return k;let l=a.facts||[],n=z(l,(0,i.bC)(a.projectRoot));for(let a of n.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})))try{d.appendFileSync(e.join(function(){let a=e.join(h.homedir(),".customize-agent","cache","document-workflow","case-log");return d.mkdirSync(a,{recursive:!0}),a}(),"arbitration-cases.jsonl"),`${JSON.stringify(a)}
|
|
221
|
-
`,"utf-8")}catch{}let o=D(l,n),p=t({facts:o,markdown:a.markdown}),q={};for(let[a,b]of p.entries())q[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:(0,f.de)(a.value),sourceType:b,sourceFile:a.source,confidence:a.confidence,priority:u(b),locked:u(b)>=80,selectedReason:a.selectedReason}}(b);if(q.project_scale){let a=q.project_scale;if(/占地|用地/u.test(a.value)&&/建筑面积/u.test(a.value)){let b=a.value.search(/(?:单体)?总?建筑面积/u);if(b>0){let c=(0,f.wj)(a.value.slice(b)).trim();q.project_scale={...a,value:c,normalizedValue:(0,f.de)(c),selectedReason:`${a.selectedReason};混合口径已净化,scale 只取建筑面积段`}}}}let r=[];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 h=j.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,f.iG)((0,g.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:(0,f.de)(d),sourceType:e,sourceFile:a.sourceFile,sourceRef:a.sourceRef?.sectionTitle,confidence:(()=>{let b=Number(a.confidence)||.5;return Math.round(100*("rule"===a.processingType&&b>1?.5:Math.min(b,.99)))})(),priority:u(e),locked:u(e)>=80,selectedReason:"按资料来源优先级和字段置信度决策"}})(a,b,c)).filter(a=>a.value&&!/资料未明确|系统暂未确认/u.test(a.value)).filter(a=>{let d=e??h?.valueType;return!d||"text"===d||!m(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)}(o,a.key,a.label,a.pattern,a.valueType);!q[a.key]&&b.length>0&&(q[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&&r.push(c)}let s=(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:(0,f.de)([a.name,a.spec,a.quantity,a.unit].filter(Boolean).join(" ")),sourceType:"projectGraph",sourceFile:a.sourceFiles?.[0],confidence:55,priority:u("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:(0,f.de)([a.risk,a.level,a.mitigation].filter(Boolean).join(" ")),sourceType:"projectGraph",sourceFile:a.sourceFiles?.[0],confidence:55,priority:u("projectGraph"),locked:!1,selectedReason:"来自项目图谱风险节点"})).filter(a=>a.value)]:[],w=s.filter(a=>/resource_/u.test(a.key)),x=s.filter(a=>/risk_/u.test(a.key));for(let a of s)q[a.key]||(q[a.key]=a);let y=(a.requiredKeys||[]).filter(a=>!q[a]).map(a=>({key:a,label:j.find(b=>b.key===a)?.label||a,reason:"未从用户输入、招标资料、清单、图纸或项目图谱中确认该事实"})),A={projectIdentity:{projectName:q.project_name,projectCode:q.project_code,owner:q.owner,location:q.project_location},projectScope:{scale:q.project_scale,constructionScope:q.construction_scope},schedule:{duration:q.duration||q.schedule_requirement},quality:{target:q.quality_target||q.quality_standard},safety:{risks:x},resources:{resources:w},environment:{},constraints:{},byKey:q,conflicts:r,gaps:y,scopeConflicts:n},B=v(a.projectRoot);return B&&d.writeFileSync(e.join(B,`canonical-facts-${c}.json`),JSON.stringify(A,null,2)),A}},52639:(a,b,c)=>{c.d(b,{SD:()=>q,_C:()=>r,bh:()=>u,iJ:()=>w,kO:()=>s,nD:()=>t,zs:()=>v});var d=c(71001);let e="[☑√✔✓■●◼☒⊠▣]",f="[\\uFE0E\\uFE0F\\s()()【】\\[\\]〔〕]*";function g(a){let b=[...a],c=`${b[0]}\\s*${b[1]}`;return[RegExp(`${e}${f}${c}`,"u"),RegExp(`${c}${f}${e}`,"u")]}let h=g("暗标"),i=g("明标"),j=[/暗标(?:评审项目)?的?编制要求/u,/(?<!不)按暗标/u,/(?<!不)(?:采用|执行|实行)暗标(?:评审|方式|编制|形式)/u,/暗标(?:评审|编制)(?:方式|办法|程序)/u],k=[/明标(?:评审项目)?的?编制要求/u,/(?<!不)按明标/u,/(?<!不)(?:采用|执行|实行)明标(?:评审|方式|编制|形式)/u,/明标(?:评审|编制)(?:方式|办法|程序)/u];function l(a,b){for(let c of b){let b=c.exec(a);if(b)return(b[0]||"").trim()}}function m(a,b){let c=b.exec(a);return c?(c[0]||"").trim():void 0}let n=[/正文(?:部分)?[\s\S]{0,16}?(?:不得|不允许|禁止|严禁)[\s\S]{0,16}?(?:使用|出现|插入|包含|采用|列入|设置|添加|附带|有|存在)[\s\S]{0,8}?(?:任何|所有|全部|其它|其他)?(?:表格|图表|框图)/u,/(?:不得|不允许|禁止|严禁)[\s\S]{0,10}?(?:在)?正文(?:部分|中|内|里)?[\s\S]{0,10}?(?:使用|出现|插入|包含|采用|列入|设置|添加|附带|有|存在)[\s\S]{0,8}?(?:任何|所有|全部|其它|其他)?(?:表格|图表|框图)/u,/(?:任何|所有|全部|其它|其他)?(?:表格|图表|框图)[\s\S]{0,16}?(?:一律|均|全部|都)?(?:不得|不允许|禁止|严禁)[\s\S]{0,12}?(?:出现|写入|进入|列入|使用|用于|插入)[\s\S]{0,12}?正文/u,/正文(?:部分)?[\s\S]{0,12}?(?:一律|均|只能|仅)[\s\S]{0,8}?(?:纯文字|文字表述|文字叙述|文字描述)(?![\s\S]{0,2}?(?:结合|及|与|和))/u],o=/颜色|彩色|单色|黑白|无关|不相干|非文字需要/u,p=[/文字(?:表述|叙述|说明|描述)?[\s\S]{0,4}?(?:结合|相结合)[\s\S]{0,4}?(?:图表|表格|框图)/u,/除(?:采用)?文字(?:表述|叙述)?外[\s\S]{0,4}?(?:可|可以)?附[\s\S]{0,4}?(?:下列|如下|相关|相应)?(?:图表|表格|框图)/u,/(?:横道图|网络图|进度(?:表|图)|平面布置图|框图|表格|图表)[\s\S]{0,26}?(?:自行确定|由投标人自定|不作规定|不作限制|不做要求)/u,/(?:表格|图表|框图)[\s\S]{0,16}?(?:可采用|可用|可以使用|应采用)[\s\S]{0,6}?A3/u,/(?:施工进度(?:表|图)?|总进度(?:表|图|计划)?|进度计划)[\s\S]{0,8}?(?:可|应)?采用[\s\S]{0,6}?(?:网络图|横道图)/u,/(?:图表|框图|表格)[\s\S]{0,10}?(?:一律|均|全部)[\s\S]{0,6}?单(?:黑色|色)/u,/图表及格式要求附后/u];function q(a){let b=[...a.tenderTexts,a.requirement||""].filter(Boolean).join("\n").replace(/\\n/gu,"\n").replace(/\r/gu,""),c=[],e=function(a){let b=[];for(let c of a.matchAll(/施工组织设计\s*采用\s*[::]?/gu)){let d=c.index||0;b.push(a.slice(d,d+320))}return b}(b),f=e.length>0?e.join("\n"):b,g=l(f,h),q=l(f,i),r=l(b,j),s=l(b,k),t="unknown";g?(t="blind",c.push(`标书类型勾选证据:${g}`)):q?(t="open",c.push(`标书类型勾选证据:${q}`)):r?(t="blind",c.push(`结构证据:识别到「${r}」条款(语义判定通道——勾选标记不可见或未被提取时的兜底,招标文件为该标段设定暗标编制条款)`)):s&&(t="open",c.push(`结构证据:识别到「${s}」条款(语义判定通道——按明标口径编制)`));let u=m(b,/正文内不允许[\s\S]{0,24}?出现非文字需要的其他任何符号和标志/u),v=m(b,/不得有图片和扉页|不得有图片/u),w=l(b,n),x=l(b,p),y=w&&!o.test(w)?w:void 0,z=y?"forbidden":"allowed";y?c.push(`正文禁表证据:${y}`):(x&&c.push(`正文表格允许证据:${x}`),u&&c.push(`排版格式证据:${u}(禁与投标内容无关符号标记的排版条款,不构成正文禁表)`));let A="blind"===t||v?"forbidden":"allowed";v&&c.push(`图片口径证据:${v}`);let B=(0,d.eB)(b).titles.map(a=>{let b=a.replace(/^附表\s*/u,"").split(/\s+/u)[0]||"",c=a.replace(/^附表\s*[一二三四五六七八九十\d]{1,3}\s*/u,"").trim();return{no:b,title:a,.../施工设备表|机械设备表|施工机械.*设备/u.test(c)?{kind:"table",dataSource:"blueprint.equipment"}:/试验.*仪器|检测仪器|试验仪器|仪器设备表/u.test(c)?{kind:"table",dataSource:"blueprint.testInstruments"}:/劳动力/u.test(c)?{kind:"table",dataSource:"blueprint.labor"}:/临时用地/u.test(c)?{kind:"table",dataSource:"blueprint.tempLand"}:/网络图|进度图|横道图|开.*竣工/u.test(c)?{kind:"figure",dataSource:"blueprint.schedule"}:/总平面/u.test(c)?{kind:"figure",dataSource:"blueprint.tempLand"}:{kind:"table",dataSource:"manual"}}});B.length>0&&c.push(`文末附表清单 ${B.length} 项:${B.map(a=>a.title).join("、")}`);let C=/正文(?:部分)?(?:一律|均)?采用\s*(小?[一二三四五六七八九十]号)?\s*([\u4e00-\u9fffA-Za-z_]{2,10})/u.exec(b),D=/大标题用\s*([小]?[一二三四五六七八九十]号)\s*([\u4e00-\u9fffA-Za-z_]{2,10})/u.exec(b),E=/装订线\s*([\d.]+\s*[-~-—]\s*[\d.]+\s*cm|[\d.]+\s*cm)/u.exec(b),F=/行间距为固定值\s*(\d+)\s*磅/u.exec(b),G=/(?:总页数上限|页数上限)\s*[::]?\s*(\d+)|不得超过\s*(\d+)\s*页/u.exec(b),H={monoColor:!!/一律单黑色|全部单黑色|均单黑色/u.test(b)||void 0,cover:/不设内封(?:面)?/u.test(b)?"forbidden":void 0,headersFooters:/不需编制页眉、页脚|不编制页眉|不需要页眉|不需编制页眉/u.test(b)?"forbidden":void 0,bodyFont:C?.[2]?`${C[2]}${/GB2312/iu.test(b)?"(GB2312)":""}`:void 0,bodySize:C?.[1]||void 0,headingSize:D?.[1]||void 0,headingFont:D?.[2]||void 0,gutter:E?.[1]?.replace(/\s+/gu,"")||void 0,lineHeight:F?.[1]?`固定值${F[1]}磅`:void 0,pageLimit:G&&Number(G[1]||G[2])||void 0},I=/明示或暗示具体投标人|以往的施工业绩/u.test(b);I&&c.push("投标人身份禁语证据:任何部位、任何条文出现明示或暗示具体投标人的说明及标记(包括以往的施工业绩等)");let J=[];if("forbidden"===z&&(a.requiredTables||[]).length>0)for(let b of a.requiredTables||[]){let a=b.trim();if(!a)continue;let c=B.find(b=>(function(a,b){let c=a.replace(/^附表\s*[一二三四五六七八九十\d]{1,3}\s*/u,"").replace(/\s+/gu,"").replace(/表$/u,""),d=b.replace(/\s+/gu,"").replace(/表$/u,"");return!!c&&!!d&&(c.includes(d)||d.includes(c))})(b.title,a));J.push({rule:`提示词必需表格《${a}》`,source:"用户提示词",resolution:c?`招标正文禁表(显式禁表句):该表已收敛入文末《${c.title}》,正文不再输出表格`:"招标正文禁表(显式禁表句):该表取消表格形式,数据以对应章节文字表述呈现"})}return{bidType:t,bodyTablePolicy:z,bodyFigurePolicy:A,appendixPlan:B,formatRules:H,identityMarksForbidden:I,conflicts:J,evidence:c}}function r(a){return a?.bodyTablePolicy==="forbidden"}function s(a){return a?.bodyFigurePolicy==="forbidden"}function t(a){if(!a)return"";let b="forbidden"===a.bodyTablePolicy,c="forbidden"===a.bodyFigurePolicy;if(!b&&!c&&!a.formatRules.monoColor&&!a.identityMarksForbidden)return"";let d=["【正文编制口径(招标文件要求,硬性验收项)】"];return b?(d.push("1. 正文一律纯文字表述:不得输出任何 Markdown 表格或管道符表格结构;数据性内容以段落文字表述(人数、台数、工艺参数、计划节点等数值一律原样引用蓝图权威锚点,不得编造或自设)。"),d.push("2. 结构化数据表由系统在文末附表区按招标附表清单统一生成,正文不重复列出表格。")):(d.push("1. 正文表格按系统表格计划输出:只输出任务中明确列出的表格(表格计划),不得自行新增、改名或改变列结构;数据一律原样引用蓝图权威锚点,不得编造或自设。"),d.push("2. 图类数据(进度/网络/横道/平面布置等)以表格化数据表达,不绘制图片;表格与图类数据位置服从任务中给定的表格计划。")),c&&d.push(`${d.length}. 不得插入图片、Markdown 图片语法或图件占位;图类内容由系统统一数据化处理。`),a.formatRules.monoColor&&d.push(`${d.length}. 表格与文字一律单黑色(黑白)表述,不得出现彩色标注、高亮或颜色说明。`),a.identityMarksForbidden&&d.push(`${d.length}. 不得出现任何明示或暗示具体投标人的说明及标记(投标人名称、以往施工业绩、获奖情况等一律不得写入正文)。`),d.join("\n")}function u(a){return`招标正文禁表(显式禁表句,违反即施工组织设计部分不得分):本章正文出现 ${a} 处 Markdown 表格结构。请把每处表格的承载数据改写为段落式连贯叙述(数值、口径保持不变,数据原样保留),删除表格表头与分隔线结构;不得新增或删除其它正文内容。`}function v(a){return`本章正文出现 ${a} 处 Markdown 表格结构,但本章未列入系统表格计划(正文表格须由招标附表清单与评分要求统一规划,不得自设)。请将表格承载数据改写为段落式连贯叙述(数值、口径保持不变),删除表格表头与分隔线结构;确属必要的表格由系统在表格计划中补齐,不得新增其它正文内容。`}function w(a){let b="blind"===a.bidType?"暗标":"open"===a.bidType?"明标":"未识别(按常规口径)",c=[`标书类型:${b}`,`正文表格:${"forbidden"===a.bodyTablePolicy?"禁表格(招标显式禁表句)":"允许(表格按系统表格计划输出)"}`,`正文图片:${"forbidden"===a.bodyFigurePolicy?"禁图片(图类数据化输出)":"允许"}`,a.appendixPlan.length>0?`文末附表 ${a.appendixPlan.length} 项(表类 ${a.appendixPlan.filter(a=>"table"===a.kind).length} / 图类 ${a.appendixPlan.filter(a=>"figure"===a.kind).length})`:"未识别文末附表清单",a.formatRules.pageLimit?`总页数上限 ${a.formatRules.pageLimit} 页`:""].filter(Boolean),d=[...a.evidence.map(a=>`证据:${a}`),..."unknown"===a.bidType?["核查指引:检索招标文件「施工组织设计采用」勾选项(标记字符变体 ☑/√/■/▣ 与「按暗标/采用暗标评审」语义条款均已覆盖)或「暗标编制要求」条款,确认标书类型后重跑以切换编制口径"]:[],...a.appendixPlan.map(a=>`附表${a.no}:${a.title}(${"figure"===a.kind?"图类\xb7编制人补图":`数据源 ${a.dataSource}`})`),a.formatRules.gutter?`格式:装订线 ${a.formatRules.gutter}${a.formatRules.lineHeight?`、行距${a.formatRules.lineHeight}`:""}`:"",a.formatRules.bodyFont?`格式:正文 ${[a.formatRules.bodySize,a.formatRules.bodyFont].filter(Boolean).join(" ")}${a.formatRules.headingSize?`、大标题 ${a.formatRules.headingSize}`:""}`:"","forbidden"===a.formatRules.cover?"格式:不设内封面(终稿移除封面块)":"",a.formatRules.monoColor?"格式:图表一律单黑色":"",a.identityMarksForbidden?"身份禁语:正文不得出现投标人名称/以往业绩等标记":"",...a.conflicts.map(a=>`冲突裁决:${a.rule}——${a.resolution}`)].filter(Boolean);return{status:"unknown"===a.bidType?"skipped":"success",message:"unknown"===a.bidType?"⚠ 标书类型未判定(告警):未识别到「本项目施工组织设计采用:□明标/☑暗标」勾选标记与暗标编制要求语义证据,本次按常规口径生成(正文表格策略按招标证据判定、正文图片允许)——若本项目实为暗标,正文图片与投标人标记可能未被禁止(暗标通常不得出现),请核对招标文件后重跑":`标书编制规格:${c.join(";")}`,details:d}}},52922:(a,b,c)=>{c.d(b,{Bt:()=>w,G5:()=>D,JD:()=>N,Pm:()=>z,Sz:()=>y,T4:()=>J,W0:()=>r,X9:()=>o,Ye:()=>k,_Q:()=>v,bH:()=>Q,cs:()=>p,e1:()=>u,gE:()=>E,ge:()=>C,nY:()=>S,w7:()=>q});var d=c(37047),e=c(41991);let f=["基本满足","大致符合","力争","原则上","大概","左右","尽可能","尽量满足"],g=/基本|大致|力争|原则上|大概|左右|尽可能|尽量/u,h=["基本满足招标文件要求","大致符合相关规范标准","力争达到优良质量标准","原则上按照规范执行","尽可能保证工程质量","尽量满足工期要求"],i=["结构构件左右对称布置","平面布置左右对称合理","力争上游的企业精神"];async function j(a){return(0,e.A)({prototypes:[...h],negativePrototypes:[...i],lexicalHints:g,embedDocuments:a})}function k(a){return f.filter(b=>a.includes(b)).map(b=>({phrase:b,count:a.split(b).length-1}))}let l=["精心组织","科学统筹","科学管理","精益求精","全力保障","高效推进","力争优质","力争一流","一流水平","完善体系","最大限度","显著提升","大力落实","严格把控","充分确保","竭力打造","现代化管理","加强管理","提高意识","强化监督","持续完善","及时处理","全方位","常态化","提质增效","高标准","统筹推进"];[...l];let m=["精心组织、科学管理,确保工程质量","严格执行相关规范和设计要求","根据实际情况适当调整施工安排","建立健全管理体系,加强过程管理","全力保障项目顺利推进","加强管理、严格控制,确保工程质量达到优良标准","精心策划、周密部署,全力以赴完成任务目标","高度重视、狠抓落实,层层压实责任","统筹兼顾、合理安排,确保各项工作有序推进","严格管理、严格要求,确保一次成优","认真贯彻落实各项管理制度,不断提升管理水平","加强安全管理,杜绝各类安全事故发生","合理安排施工工序,确保工程按期完工","坚持质量第一、安全至上,认真做好各项工作"],n=/^\s*(?:第[一二三四五六七八九十百\d]+[章节篇]|\d+(?:\.\d+){0,3})\s+[^。;;,,]*$/u;function o(a){let b=a.replace(/[\u200b-\u200f\u2060\ufeff]/gu,"").trim();return!!(!b||/^\s*(#{1,6}\s+|\||[-*+]\s|>)/u.test(b))||n.test(b)}function p(a){return a.split("\n").filter(a=>!o(a)).flatMap(a=>a.split(/[。;;]/u)).map(a=>a.trim()).filter(a=>a.length>=12)}async function q(a,b){if(0===a.length)return[];let c=await (0,d.Mv)(a,[...m],b),e=await j(b),f=await e(a);return a.map((a,b)=>{let d=Math.max(...m.map(b=>c(a,b))),e=d>=.8,g=f[b];return{sentence:a,semantic:e,vague:g,filler:e||g,similarity:d}})}function r(a){let b=a.replace(/\s+/gu,"");return!(0===b.length||b.length>60||/[0-90-9]/u.test(b)||/项目经理|技术负责人|施工员|质检员|专职安全员|安全员|材料员|资料员|监理|班组|责任人|岗位/u.test(b)||/每日|每周|每月|每季|每年|每\d+|定期|不定期|不少于|不低于|至少/u.test(b)||/合同|约定|承诺|保证金|履约|招标|投标|中标|资质|奖项|证书|备案|报审|报验|审批|签证|变更/u.test(b))}let s=/^(?:#{1,6}\s*)?(?:(?:\d+(?:\.\d+)*)(?:[.、))]|\s)+|(\d+)|[((][一二三四五六七八九十]+[))]|[-*•]\s+)?\s*/u,t=/^(?:(?:本节|本章|本小节|本部分|本(?:文|篇章))(?:将|拟|主要|重点|首先|从|围绕|按|结合|针对|以|通过|对|就|分|共|内容|的|内)|(?:以下|下述|下面)(?:从|将|为|是|内容|主要|就|围绕|介绍|说明)|综上所述|通过以上|由此可见|总的来说|总体而言)/u;function u(a){let b=a.replace(/[\u200b-\u200f\u2060\ufeff]/gu,"").trim();return!!b&&t.test(b.replace(s,""))}function v(a){return a.split("\n").map(a=>a.replace(/[\u200b-\u200f\u2060\ufeff]/gu,"").trim()).filter(a=>a&&!o(a)).flatMap(a=>a.split(/[。;;]/u)).map(a=>a.trim()).filter(a=>a.length>=12&&u(a))}async function w(a,b){let c=p(a),d=await q(c,b),e=c.filter(a=>g.test(a)).length,f=d.filter(a=>a.vague).length,h=d.map(a=>a.filler),i=h.filter(Boolean).length,j=[...new Set(c.filter((a,b)=>h[b]))].slice(0,40),k=new Set;c.forEach((a,b)=>{if(h[b])for(let b of l)a.includes(b)&&k.add(b)});let m=k.size,n=c.length?i/c.length:0;return{totalSentences:c.length,fillerSentences:i,ratio:n,level:n>=.4?"heavy":n>=.2?"medium":"light",vagueCandidateSentences:e,vagueSemanticSentences:f,forbiddenEmptyPhraseHits:m,fillerSentenceDetails:j}}let x={plan:"制定专项施工方案与管理制度,明确技术措施",process:"施工工序流程与工艺步骤顺序",role:"由项目经理、技术负责人等岗位人员分工负责",frequency:"每日、每周等检查频次与时间节点安排",acceptance:"经检查验收合格后整改销项闭环"},y={plan:/专项施工方案|专项方案|施工方案|施工组织设计|技术措施|管理制度|技术交底|作业指导书|操作规程/u,process:/施工工序|工艺流程|施工流程|作业流程|施工顺序|施工步骤|工艺步骤|流水段|流水作业|依次施工|工序/u,role:/项目经理|技术负责人|施工员|质检员|安全员|材料员|资料员|测量员|劳资员|班组长|监理工程师|试验员/u,frequency:/每日|每天|每周|每月|每季度|每批|不少于\s*\d+\s*次|至少\s*\d+\s*次|每周\s*\d+\s*次|每日\s*\d+\s*次|每\s*\d+\s*日/u,acceptance:/整改|复查|销项|复验|闭环|返工/u};async function z(a,b){let c=a.split(/\n{2,}/u).filter(a=>a.trim().length>=30),e=Object.values(x),f=await (0,d.Mv)(c,e,b),g=y.role,h=y.frequency,i=y.acceptance,j=y.plan,k=y.process,l=(a,b)=>{let c=(b!==x.plan||!!j.test(a))&&(!!(b===x.plan&&j.test(a))||(b!==x.process||!!k.test(a))&&(!!(b===x.process&&k.test(a))||(b!==x.role||!!g.test(a))&&(!!(b===x.role&&g.test(a))||(b!==x.frequency||!!h.test(a))&&(!!(b===x.frequency&&h.test(a))||(b!==x.acceptance||!!i.test(a))&&(!!(b===x.acceptance&&i.test(a))||void 0)))));return void 0!==c?c:f(a,b)>=d.Eh},m=0,n=0,o=0;for(let a of c)e.filter(b=>l(a,b)).length>=4?m+=1:l(a,x.role)&&l(a,x.frequency)||(n+=1),l(a,x.role)&&l(a,x.frequency)&&l(a,x.acceptance)&&(o+=1);return{blocks:c.length,completeBlocks:m,incompleteBlocks:n,closedLoopBlocks:o}}let A="分析该工程难点的成因与风险来源",B=/\d+(?:\.\d+)?\s*(?:mm|cm|m|米|℃|%|kN|MPa|次|天|日历天|小时|h|Hz|m³|㎡|m²|t|吨|座|套|个)/u;function C(a){return a.trim().startsWith("|")?a.split(/\n/u).filter(a=>{let b=a.trim();return b.startsWith("|")&&!/^\|\s*-+\s*\|/u.test(b)&&!/重难点/u.test(b.split("|")[1]||"")}).filter(a=>a.trim().length>=20):a.split(/\n{2,}/u).filter(a=>a.trim().length>=20)}async function D(a,b,c={}){let e,f=async c=>k>=0?l(c,k).length>=4:(e??=await (0,d.Mv)(a,[A],b))(c,A)>=d.Eh,g=0,h=0,i=0,j=[],k=c.attributionColumnIndex??-1,l=(a,b)=>(a.split("|").slice(1,-1)[b]??"").trim();for(let b of a){let a=await f(b),c=B.test(b);a&&(g+=1),c&&(h+=1),a&&c&&(i+=1),j.push({text:b,attributed:a,quantified:c})}return{entries:a,attributed:g,quantified:h,bothCount:i,ratio:a.length?i/a.length:0,details:j}}async function E(a,b){let c=C(function(a){let b=a.match(/^#{2,4}\s*[^\n]*(?:重难点|重点难点|工程难点|难点分析)[^\n]*\n/mu);if(b&&void 0!==b.index){let c=b.index+b[0].length,d=a.slice(c),e=b[0].match(/^#+/u)?.[0].length??3,f=RegExp(`^#{2,${Math.max(2,e)}}\\s+`,"mu"),g=d.search(f);return g>=0?d.slice(0,g):d}let c=a.match(/^\|?\s*[^\n]*(?:重难点|重点难点|工程难点|难点分析)[^\n]*\|\s*$/mu);if(!c||void 0===c.index)return"";let d=a.slice(c.index).split(/\n/u),e=[];for(let a of d){let b=a.trim();if(!b||!b.startsWith("|")){if(e.length>0)break;continue}e.push(a)}return e.join("\n")}(a)),d=(()=>{let a=c.find(a=>a.trim().startsWith("|"));return a?a.split("|").slice(1,-1).map(a=>a.trim()).findIndex(a=>/成因|风险|致险|难点分析/u.test(a)):-1})(),e=await D(c,b,{attributionColumnIndex:d});return{countermeasures:c.length,attributed:e.attributed,quantified:e.quantified,bothCount:e.bothCount,ratio:e.ratio,heavyTemplated:c.length>0&&e.ratio<.5,entries:e.details.slice(0,24)}}let F=/建筑业10项新技术|10项新技术|新技术推广目录|建设领域推广/u,G=/替代|取代|淘汰.{0,10}(?:工艺|技术|做法)|(?:较|比).{0,10}(?:传统|常规|普通)/u,H=/(?:提升|提高|节省|节约|降低|缩短|减少).{0,10}(?:效率|工期|成本|损耗|能耗|人工|周期)|升级价值|效益显著/u,I=["BIM","铝模","附着式升降脚手架","跳仓法","直螺纹","装配式","灌浆套筒","自动化监测","智慧工地","再生利用","非开挖","CCTV","碳纤维","薄贴法","干法施工","液压提升","预制","光伏一体化","BIPV","模块化"];function J(a){let b=I.filter(b=>a.includes(b)),c=F.test(a),d=G.test(a),e=H.test(a),f=[c,d,e].filter(Boolean).length;return{found:[...b],catalogCited:c,replaceClaimed:d,upgradeClaimed:e,effective:b.length>0&&f>=2}}let K=[/基坑|沟槽/u,/模板支撑|高支模/u,/脚手架|悬挑|附着式/u,/起重吊装|吊装/u,/幕墙/u,/人工挖孔桩/u,/装配式|钢结构安装/u,/拆除工程/u,/顶管|盾构|暗挖/u,/有限空间|水下作业/u,/吊篮/u,/塔吊|施工电梯|升降机/u,/沉井/u],L=/超危大|超规模|专家论证|一般危大/u,M=/(?:深度|高度|跨度|开挖).{0,8}\d+(?:\.\d+)?\s*(?:m|米)|(?:重量|吊装).{0,8}\d+(?:\.\d+)?\s*(?:kN|千牛)/u;function N(a){let b=K.filter(b=>b.test(a)).map(a=>a.source.replace(/\\u\w*|\\|\(|\||\)/gu,"")),c=L.test(a),d=M.test(a);return{categories:b,graded:c,paramMatched:d,twoStepComplete:b.length>0&&c&&d}}let O=[{name:"总则",pattern:/总则/u},{name:"组织机构及职责",pattern:/应急(?:组织|领导)|组织机构|应急指挥部|应急小组/u},{name:"风险分析与危险源辨识",pattern:/风险分析|危险源辨识|风险辨识/u},{name:"应急物资设备通讯保障",pattern:/应急物资|物资.{0,8}(?:保障|储备)|通讯保障|通信保障/u},{name:"专项应急预案",pattern:/专项应急预案|专项预案/u},{name:"应急响应流程",pattern:/应急响应|响应流程|响应程序/u},{name:"后期处置",pattern:/后期处置|善后|事故调查/u},{name:"培训演练",pattern:/(?:应急)?演练|培训.{0,6}演练/u}],P=["高处坠落","物体打击","坍塌","触电","火灾","起重","防汛","防台风","中暑","中毒窒息","管线破坏"];function Q(a){let b=O.filter(b=>b.pattern.test(a)).map(a=>a.name),c=O.filter(b=>!b.pattern.test(a)).map(a=>a.name),d=P.filter(b=>a.includes(b));return{coveredParts:[...b],missingParts:[...c],coverage:b.length/O.length,planHits:[...d]}}let R=[/其他项目/u,/其他标段/u,/其他城市/u,/本公司(?:其他|承建)/u,/某(?:市|县|区|项目)(?:的)?/u,/他项目/u,/兄弟项目/u];function S(a){let b=a.replace(/及其他项目/gu,"及〔清单列举项〕");return R.filter(a=>a.test(b)).map(a=>a.source.replace(/\\u/gu,""))}},55807:(a,b,c)=>{c.d(b,{C_:()=>g.C_,DR:()=>h.DR,EG:()=>h.EG,EK:()=>h.EK,Fc:()=>g.Fc,G2:()=>h.G2,Ht:()=>g.Ht,Il:()=>h.Il,Iu:()=>d.Iu,M6:()=>h.M6,Mz:()=>d.Mz,NJ:()=>h.NJ,QP:()=>d.xs,R_:()=>h.R_,UG:()=>d.UG,Xr:()=>f.Xr,_8:()=>h._8,_k:()=>g._k,br:()=>e.br,bz:()=>h.bz,gq:()=>h.gq,h:()=>f.h,hS:()=>e.hS,hW:()=>d.hW,jO:()=>f.jO,jX:()=>d.jX,md:()=>h.md,t7:()=>d.t7,w_:()=>g.w_,xs:()=>f.xs});var d=c(64753),e=c(18292),f=c(87635),g=c(13145),h=c(39372)},55965:(a,b,c)=>{c.d(b,{hy:()=>m,kE:()=>j});var d=c(22157),e=c(95734);let f=new Map,g={"labor-peak":"项目劳动力峰值(人)","total-days":"项目总工期(日历天)","village-count":"项目自然村数量(个)",quantity:"工程量清单条目汇总工程量"},h=`你是施工组织设计文档的数值引用裁决器。任务:判断正文句中的数值是否「以该项目级数据的口径」陈述(项目级 = 全项目汇总/锁定口径)。
|
|
221
|
+
`,"utf-8")}catch{}let o=D(l,n),p=t({facts:o,markdown:a.markdown}),q={};for(let[a,b]of p.entries())q[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:(0,f.de)(a.value),sourceType:b,sourceFile:a.source,confidence:a.confidence,priority:u(b),locked:u(b)>=80,selectedReason:a.selectedReason}}(b);if(q.project_scale){let a=q.project_scale;if(/占地|用地/u.test(a.value)&&/建筑面积/u.test(a.value)){let b=a.value.search(/(?:单体)?总?建筑面积/u);if(b>0){let c=(0,f.wj)(a.value.slice(b)).trim();q.project_scale={...a,value:c,normalizedValue:(0,f.de)(c),selectedReason:`${a.selectedReason};混合口径已净化,scale 只取建筑面积段`}}}}let r=[];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 h=j.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,f.iG)((0,g.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:(0,f.de)(d),sourceType:e,sourceFile:a.sourceFile,sourceRef:a.sourceRef?.sectionTitle,confidence:(()=>{let b=Number(a.confidence)||.5;return Math.round(100*("rule"===a.processingType&&b>1?.5:Math.min(b,.99)))})(),priority:u(e),locked:u(e)>=80,selectedReason:"按资料来源优先级和字段置信度决策"}})(a,b,c)).filter(a=>a.value&&!/资料未明确|系统暂未确认/u.test(a.value)).filter(a=>{let d=e??h?.valueType;return!d||"text"===d||!m(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)}(o,a.key,a.label,a.pattern,a.valueType);!q[a.key]&&b.length>0&&(q[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&&r.push(c)}let s=(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:(0,f.de)([a.name,a.spec,a.quantity,a.unit].filter(Boolean).join(" ")),sourceType:"projectGraph",sourceFile:a.sourceFiles?.[0],confidence:55,priority:u("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:(0,f.de)([a.risk,a.level,a.mitigation].filter(Boolean).join(" ")),sourceType:"projectGraph",sourceFile:a.sourceFiles?.[0],confidence:55,priority:u("projectGraph"),locked:!1,selectedReason:"来自项目图谱风险节点"})).filter(a=>a.value)]:[],w=s.filter(a=>/resource_/u.test(a.key)),x=s.filter(a=>/risk_/u.test(a.key));for(let a of s)q[a.key]||(q[a.key]=a);let y=(a.requiredKeys||[]).filter(a=>!q[a]).map(a=>({key:a,label:j.find(b=>b.key===a)?.label||a,reason:"未从用户输入、招标资料、清单、图纸或项目图谱中确认该事实"})),A={projectIdentity:{projectName:q.project_name,projectCode:q.project_code,owner:q.owner,location:q.project_location},projectScope:{scale:q.project_scale,constructionScope:q.construction_scope},schedule:{duration:q.duration||q.schedule_requirement},quality:{target:q.quality_target||q.quality_standard},safety:{risks:x},resources:{resources:w},environment:{},constraints:{},byKey:q,conflicts:r,gaps:y,scopeConflicts:n},B=v(a.projectRoot);return B&&d.writeFileSync(e.join(B,`canonical-facts-${c}.json`),JSON.stringify(A,null,2)),A}},52639:(a,b,c)=>{c.d(b,{SD:()=>q,_C:()=>r,bh:()=>u,iJ:()=>w,kO:()=>s,nD:()=>t,zs:()=>v});var d=c(71001);let e="[☑√✔✓■●◼☒⊠▣]",f="[\\uFE0E\\uFE0F\\s()()【】\\[\\]〔〕]*";function g(a){let b=[...a],c=`${b[0]}\\s*${b[1]}`;return[RegExp(`${e}${f}${c}`,"u"),RegExp(`${c}${f}${e}`,"u")]}let h=g("暗标"),i=g("明标"),j=[/暗标(?:评审项目)?的?编制要求/u,/(?<!不)按暗标/u,/(?<!不)(?:采用|执行|实行)暗标(?:评审|方式|编制|形式)/u,/暗标(?:评审|编制)(?:方式|办法|程序)/u],k=[/明标(?:评审项目)?的?编制要求/u,/(?<!不)按明标/u,/(?<!不)(?:采用|执行|实行)明标(?:评审|方式|编制|形式)/u,/明标(?:评审|编制)(?:方式|办法|程序)/u];function l(a,b){for(let c of b){let b=c.exec(a);if(b)return(b[0]||"").trim()}}function m(a,b){let c=b.exec(a);return c?(c[0]||"").trim():void 0}let n=[/正文(?:部分)?[\s\S]{0,16}?(?:不得|不允许|禁止|严禁)[\s\S]{0,16}?(?:使用|出现|插入|包含|采用|列入|设置|添加|附带|有|存在)[\s\S]{0,8}?(?:任何|所有|全部|其它|其他)?(?:表格|图表|框图)/u,/(?:不得|不允许|禁止|严禁)[\s\S]{0,10}?(?:在)?正文(?:部分|中|内|里)?[\s\S]{0,10}?(?:使用|出现|插入|包含|采用|列入|设置|添加|附带|有|存在)[\s\S]{0,8}?(?:任何|所有|全部|其它|其他)?(?:表格|图表|框图)/u,/(?:任何|所有|全部|其它|其他)?(?:表格|图表|框图)[\s\S]{0,16}?(?:一律|均|全部|都)?(?:不得|不允许|禁止|严禁)[\s\S]{0,12}?(?:出现|写入|进入|列入|使用|用于|插入)[\s\S]{0,12}?正文/u,/正文(?:部分)?[\s\S]{0,12}?(?:一律|均|只能|仅)[\s\S]{0,8}?(?:纯文字|文字表述|文字叙述|文字描述)(?![\s\S]{0,2}?(?:结合|及|与|和))/u],o=/颜色|彩色|单色|黑白|无关|不相干|非文字需要/u,p=[/文字(?:表述|叙述|说明|描述)?[\s\S]{0,4}?(?:结合|相结合)[\s\S]{0,4}?(?:图表|表格|框图)/u,/除(?:采用)?文字(?:表述|叙述)?外[\s\S]{0,4}?(?:可|可以)?附[\s\S]{0,4}?(?:下列|如下|相关|相应)?(?:图表|表格|框图)/u,/(?:横道图|网络图|进度(?:表|图)|平面布置图|框图|表格|图表)[\s\S]{0,26}?(?:自行确定|由投标人自定|不作规定|不作限制|不做要求)/u,/(?:表格|图表|框图)[\s\S]{0,16}?(?:可采用|可用|可以使用|应采用)[\s\S]{0,6}?A3/u,/(?:施工进度(?:表|图)?|总进度(?:表|图|计划)?|进度计划)[\s\S]{0,8}?(?:可|应)?采用[\s\S]{0,6}?(?:网络图|横道图)/u,/(?:图表|框图|表格)[\s\S]{0,10}?(?:一律|均|全部)[\s\S]{0,6}?单(?:黑色|色)/u,/图表及格式要求附后/u];function q(a){let b=[...a.tenderTexts,a.requirement||""].filter(Boolean).join("\n").replace(/\\n/gu,"\n").replace(/\r/gu,""),c=[],e=function(a){let b=[];for(let c of a.matchAll(/施工组织设计\s*采用\s*[::]?/gu)){let d=c.index||0;b.push(a.slice(d,d+320))}return b}(b),f=e.length>0?e.join("\n"):b,g=l(f,h),q=l(f,i),r=l(b,j),s=l(b,k),t="unknown";g?(t="blind",c.push(`标书类型勾选证据:${g}`)):q?(t="open",c.push(`标书类型勾选证据:${q}`)):r?(t="blind",c.push(`结构证据:识别到「${r}」条款(语义判定通道——勾选标记不可见或未被提取时的兜底,招标文件为该标段设定暗标编制条款)`)):s&&(t="open",c.push(`结构证据:识别到「${s}」条款(语义判定通道——按明标口径编制)`));let u=m(b,/正文内不允许[\s\S]{0,24}?出现非文字需要的其他任何符号和标志/u),v=m(b,/不得有图片和扉页|不得有图片/u),w=l(b,n),x=l(b,p),y=w&&!o.test(w)?w:void 0,z=y?"forbidden":"allowed";y?c.push(`正文禁表证据:${y}`):(x&&c.push(`正文表格允许证据:${x}`),u&&c.push(`排版格式证据:${u}(禁与投标内容无关符号标记的排版条款,不构成正文禁表)`));let A="blind"===t||v?"forbidden":"allowed";v&&c.push(`图片口径证据:${v}`);let B=(0,d.eB)(b).titles.map(a=>{let b=a.replace(/^附表\s*/u,"").split(/\s+/u)[0]||"",c=a.replace(/^附表\s*[一二三四五六七八九十\d]{1,3}\s*/u,"").trim();return{no:b,title:a,.../施工设备表|机械设备表|施工机械.*设备/u.test(c)?{kind:"table",dataSource:"blueprint.equipment"}:/试验.*仪器|检测仪器|试验仪器|仪器设备表/u.test(c)?{kind:"table",dataSource:"blueprint.testInstruments"}:/劳动力/u.test(c)?{kind:"table",dataSource:"blueprint.labor"}:/临时用地/u.test(c)?{kind:"table",dataSource:"blueprint.tempLand"}:/网络图|进度图|横道图|开.*竣工/u.test(c)?{kind:"figure",dataSource:"blueprint.schedule"}:/总平面/u.test(c)?{kind:"figure",dataSource:"blueprint.tempLand"}:{kind:"table",dataSource:"manual"}}});B.length>0&&c.push(`文末附表清单 ${B.length} 项:${B.map(a=>a.title).join("、")}`);let C=/正文(?:部分)?(?:一律|均)?采用\s*(小?[一二三四五六七八九十]号)?\s*([\u4e00-\u9fffA-Za-z_]{2,10})/u.exec(b),D=/大标题用\s*([小]?[一二三四五六七八九十]号)\s*([\u4e00-\u9fffA-Za-z_]{2,10})/u.exec(b),E=/装订线\s*([\d.]+\s*[-~-—]\s*[\d.]+\s*cm|[\d.]+\s*cm)/u.exec(b),F=/行间距为固定值\s*(\d+)\s*磅/u.exec(b),G=/(?:总页数上限|页数上限)\s*[::]?\s*(\d+)|不得超过\s*(\d+)\s*页/u.exec(b),H={monoColor:!!/一律单黑色|全部单黑色|均单黑色/u.test(b)||void 0,cover:/不设内封(?:面)?/u.test(b)?"forbidden":void 0,headersFooters:/不需编制页眉、页脚|不编制页眉|不需要页眉|不需编制页眉/u.test(b)?"forbidden":void 0,bodyFont:C?.[2]?`${C[2]}${/GB2312/iu.test(b)?"(GB2312)":""}`:void 0,bodySize:C?.[1]||void 0,headingSize:D?.[1]||void 0,headingFont:D?.[2]||void 0,gutter:E?.[1]?.replace(/\s+/gu,"")||void 0,lineHeight:F?.[1]?`固定值${F[1]}磅`:void 0,pageLimit:G&&Number(G[1]||G[2])||void 0},I=/明示或暗示具体投标人|以往的施工业绩/u.test(b);I&&c.push("投标人身份禁语证据:任何部位、任何条文出现明示或暗示具体投标人的说明及标记(包括以往的施工业绩等)");let J=[];if("forbidden"===z&&(a.requiredTables||[]).length>0)for(let b of a.requiredTables||[]){let a=b.trim();if(!a)continue;let c=B.find(b=>(function(a,b){let c=a.replace(/^附表\s*[一二三四五六七八九十\d]{1,3}\s*/u,"").replace(/\s+/gu,"").replace(/表$/u,""),d=b.replace(/\s+/gu,"").replace(/表$/u,"");return!!c&&!!d&&(c.includes(d)||d.includes(c))})(b.title,a));J.push({rule:`提示词必需表格《${a}》`,source:"用户提示词",resolution:c?`招标正文禁表(显式禁表句):该表已收敛入文末《${c.title}》,正文不再输出表格`:"招标正文禁表(显式禁表句):该表取消表格形式,数据以对应章节文字表述呈现"})}return{bidType:t,bodyTablePolicy:z,bodyFigurePolicy:A,appendixPlan:B,formatRules:H,identityMarksForbidden:I,conflicts:J,evidence:c}}function r(a){return a?.bodyTablePolicy==="forbidden"}function s(a){return a?.bodyFigurePolicy==="forbidden"}function t(a){if(!a)return"";let b="forbidden"===a.bodyTablePolicy,c="forbidden"===a.bodyFigurePolicy;if(!b&&!c&&!a.formatRules.monoColor&&!a.identityMarksForbidden)return"";let d=["【正文编制口径(招标文件要求,硬性验收项)】"];return b?(d.push("1. 正文一律纯文字表述:不得输出任何 Markdown 表格或管道符表格结构;数据性内容以段落文字表述(人数、台数、工艺参数、计划节点等数值一律原样引用蓝图权威锚点,不得编造或自设)。"),d.push("2. 结构化数据表由系统在文末附表区按招标附表清单统一生成,正文不重复列出表格。")):(d.push("1. 正文表格按系统表格计划输出:只输出任务中明确列出的表格(表格计划),不得自行新增、改名或改变列结构;数据一律原样引用蓝图权威锚点,不得编造或自设。"),d.push("2. 图类数据(进度/网络/横道/平面布置等)以表格化数据表达,不绘制图片;表格与图类数据位置服从任务中给定的表格计划。")),c&&d.push(`${d.length}. 不得插入图片、Markdown 图片语法或图件占位;图类内容由系统统一数据化处理。`),a.formatRules.monoColor&&d.push(`${d.length}. 表格与文字一律单黑色(黑白)表述,不得出现彩色标注、高亮或颜色说明。`),a.identityMarksForbidden&&d.push(`${d.length}. 不得出现任何明示或暗示具体投标人的说明及标记(投标人名称、以往施工业绩、获奖情况等一律不得写入正文)。`),d.join("\n")}function u(a){return`招标正文禁表(显式禁表句,违反即施工组织设计部分不得分):本章正文出现 ${a} 处 Markdown 表格结构。请把每处表格的承载数据改写为段落式连贯叙述(数值、口径保持不变,数据原样保留),删除表格表头与分隔线结构;不得新增或删除其它正文内容。`}function v(a){return`本章正文出现 ${a} 处 Markdown 表格结构,但本章未列入系统表格计划(正文表格须由招标附表清单与评分要求统一规划,不得自设)。请将表格承载数据改写为段落式连贯叙述(数值、口径保持不变),删除表格表头与分隔线结构;确属必要的表格由系统在表格计划中补齐,不得新增其它正文内容。`}function w(a){let b="blind"===a.bidType?"暗标":"open"===a.bidType?"明标":"未识别(按常规口径)",c=[`标书类型:${b}`,`正文表格:${"forbidden"===a.bodyTablePolicy?"禁表格(招标显式禁表句)":"允许(表格按系统表格计划输出)"}`,`正文图片:${"forbidden"===a.bodyFigurePolicy?"禁图片(图类数据化输出)":"允许"}`,a.appendixPlan.length>0?`文末附表 ${a.appendixPlan.length} 项(表类 ${a.appendixPlan.filter(a=>"table"===a.kind).length} / 图类 ${a.appendixPlan.filter(a=>"figure"===a.kind).length})`:"未识别文末附表清单",a.formatRules.pageLimit?`总页数上限 ${a.formatRules.pageLimit} 页`:""].filter(Boolean),d=[...a.evidence.map(a=>`证据:${a}`),..."unknown"===a.bidType?["核查指引:检索招标文件「施工组织设计采用」勾选项(标记字符变体 ☑/√/■/▣ 与「按暗标/采用暗标评审」语义条款均已覆盖)或「暗标编制要求」条款,确认标书类型后重跑以切换编制口径"]:[],...a.appendixPlan.map(a=>`附表${a.no}:${a.title}(${"figure"===a.kind?"图类\xb7编制人补图":`数据源 ${a.dataSource}`})`),a.formatRules.gutter?`格式:装订线 ${a.formatRules.gutter}${a.formatRules.lineHeight?`、行距${a.formatRules.lineHeight}`:""}`:"",a.formatRules.bodyFont?`格式:正文 ${[a.formatRules.bodySize,a.formatRules.bodyFont].filter(Boolean).join(" ")}${a.formatRules.headingSize?`、大标题 ${a.formatRules.headingSize}`:""}`:"","forbidden"===a.formatRules.cover?"格式:不设内封面(终稿移除封面块)":"",a.formatRules.monoColor?"格式:图表一律单黑色":"",a.identityMarksForbidden?"身份禁语:正文不得出现投标人名称/以往业绩等标记":"",...a.conflicts.map(a=>`冲突裁决:${a.rule}——${a.resolution}`)].filter(Boolean);return{status:"unknown"===a.bidType?"skipped":"success",message:"unknown"===a.bidType?"⚠ 标书类型未判定(告警):未识别到「本项目施工组织设计采用:□明标/☑暗标」勾选标记与暗标编制要求语义证据,本次按常规口径生成(正文表格策略按招标证据判定、正文图片允许)——若本项目实为暗标,正文图片与投标人标记可能未被禁止(暗标通常不得出现),请核对招标文件后重跑":`标书编制规格:${c.join(";")}`,details:d}}},52922:(a,b,c)=>{c.d(b,{Bt:()=>w,G5:()=>D,JD:()=>N,Pm:()=>z,Sz:()=>y,T4:()=>J,W0:()=>r,X9:()=>o,Ye:()=>k,_Q:()=>v,bH:()=>Q,cs:()=>p,e1:()=>u,gE:()=>E,ge:()=>C,nY:()=>S,w7:()=>q});var d=c(37047),e=c(41991);let f=["基本满足","大致符合","力争","原则上","大概","左右","尽可能","尽量满足"],g=/基本|大致|力争|原则上|大概|左右|尽可能|尽量/u,h=["基本满足招标文件要求","大致符合相关规范标准","力争达到优良质量标准","原则上按照规范执行","尽可能保证工程质量","尽量满足工期要求"],i=["结构构件左右对称布置","平面布置左右对称合理","力争上游的企业精神"];async function j(a){return(0,e.A)({prototypes:[...h],negativePrototypes:[...i],lexicalHints:g,embedDocuments:a})}function k(a){return f.filter(b=>a.includes(b)).map(b=>({phrase:b,count:a.split(b).length-1}))}let l=["精心组织","科学统筹","科学管理","精益求精","全力保障","高效推进","力争优质","力争一流","一流水平","完善体系","最大限度","显著提升","大力落实","严格把控","充分确保","竭力打造","现代化管理","加强管理","提高意识","强化监督","持续完善","及时处理","全方位","常态化","提质增效","高标准","统筹推进"];[...l];let m=["精心组织、科学管理,确保工程质量","严格执行相关规范和设计要求","根据实际情况适当调整施工安排","建立健全管理体系,加强过程管理","全力保障项目顺利推进","加强管理、严格控制,确保工程质量达到优良标准","精心策划、周密部署,全力以赴完成任务目标","高度重视、狠抓落实,层层压实责任","统筹兼顾、合理安排,确保各项工作有序推进","严格管理、严格要求,确保一次成优","认真贯彻落实各项管理制度,不断提升管理水平","加强安全管理,杜绝各类安全事故发生","合理安排施工工序,确保工程按期完工","坚持质量第一、安全至上,认真做好各项工作"],n=/^\s*(?:第[一二三四五六七八九十百\d]+[章节篇]|\d+(?:\.\d+){0,3})\s+[^。;;,,]*$/u;function o(a){let b=a.replace(/[\u200b-\u200f\u2060\ufeff]/gu,"").trim();return!!(!b||/^\s*(#{1,6}\s+|\||[-*+]\s|>)/u.test(b))||n.test(b)}function p(a){return a.split("\n").filter(a=>!o(a)).flatMap(a=>a.split(/[。;;]/u)).map(a=>a.trim()).filter(a=>a.length>=12)}async function q(a,b){if(0===a.length)return[];let c=await (0,d.Mv)(a,[...m],b),e=await j(b),f=await e(a);return a.map((a,b)=>{let d=Math.max(...m.map(b=>c(a,b))),e=d>=.8,g=f[b];return{sentence:a,semantic:e,vague:g,filler:e||g,similarity:d}})}function r(a){let b=a.replace(/\s+/gu,"");return!(0===b.length||b.length>60||/[0-90-9]/u.test(b)||/项目经理|技术负责人|施工员|质检员|专职安全员|安全员|材料员|资料员|监理|班组|责任人|岗位/u.test(b)||/每日|每周|每月|每季|每年|每\d+|定期|不定期|不少于|不低于|至少/u.test(b)||/合同|约定|承诺|保证金|履约|招标|投标|中标|资质|奖项|证书|备案|报审|报验|审批|签证|变更/u.test(b))}let s=/^(?:#{1,6}\s*)?(?:(?:\d+(?:\.\d+)*)(?:[.、))]|\s)+|(\d+)|[((][一二三四五六七八九十]+[))]|[-*•]\s+)?\s*/u,t=/^(?:(?:本节|本章|本小节|本部分|本(?:文|篇章))(?:将|拟|主要|重点|首先|从|围绕|按|结合|针对|以|通过|对|就|分|共|内容|的|内)|(?:以下|下述|下面)(?:从|将|为|是|内容|主要|就|围绕|介绍|说明)|综上所述|通过以上|由此可见|总的来说|总体而言)/u;function u(a){let b=a.replace(/[\u200b-\u200f\u2060\ufeff]/gu,"").trim();return!!b&&t.test(b.replace(s,""))}function v(a){return a.split("\n").map(a=>a.replace(/[\u200b-\u200f\u2060\ufeff]/gu,"").trim()).filter(a=>a&&!o(a)).flatMap(a=>a.split(/[。;;]/u)).map(a=>a.trim()).filter(a=>a.length>=12&&u(a))}async function w(a,b){let c=p(a),d=await q(c,b),e=c.filter(a=>g.test(a)).length,f=d.filter(a=>a.vague).length,h=d.map(a=>a.filler),i=h.filter(Boolean).length,j=[...new Set(c.filter((a,b)=>h[b]))].slice(0,40),k=new Set;c.forEach((a,b)=>{if(h[b])for(let b of l)a.includes(b)&&k.add(b)});let m=k.size,n=c.length?i/c.length:0;return{totalSentences:c.length,fillerSentences:i,ratio:n,level:n>=.4?"heavy":n>=.2?"medium":"light",vagueCandidateSentences:e,vagueSemanticSentences:f,forbiddenEmptyPhraseHits:m,fillerSentenceDetails:j}}let x={plan:"制定专项施工方案与管理制度,明确技术措施",process:"施工工序流程与工艺步骤顺序",role:"由项目经理、技术负责人等岗位人员分工负责",frequency:"每日、每周等检查频次与时间节点安排",acceptance:"经检查验收合格后整改销项闭环"},y={plan:/专项施工方案|专项方案|施工方案|施工组织设计|技术措施|管理制度|技术交底|作业指导书|操作规程/u,process:/施工工序|工艺流程|施工流程|作业流程|施工顺序|施工步骤|工艺步骤|流水段|流水作业|依次施工|工序/u,role:/项目经理|技术负责人|施工员|质检员|安全员|材料员|资料员|测量员|劳资员|班组长|监理工程师|试验员/u,frequency:/每日|每天|每周|每月|每季度|每批|不少于\s*\d+\s*次|至少\s*\d+\s*次|每周\s*\d+\s*次|每日\s*\d+\s*次|每\s*\d+\s*日/u,acceptance:/整改|复查|销项|复验|闭环|返工/u};async function z(a,b){let c=a.split(/\n{2,}/u).filter(a=>a.trim().length>=30),e=Object.values(x),f=await (0,d.Mv)(c,e,b),g=y.role,h=y.frequency,i=y.acceptance,j=y.plan,k=y.process,l=(a,b)=>{let c=(b!==x.plan||!!j.test(a))&&(!!(b===x.plan&&j.test(a))||(b!==x.process||!!k.test(a))&&(!!(b===x.process&&k.test(a))||(b!==x.role||!!g.test(a))&&(!!(b===x.role&&g.test(a))||(b!==x.frequency||!!h.test(a))&&(!!(b===x.frequency&&h.test(a))||(b!==x.acceptance||!!i.test(a))&&(!!(b===x.acceptance&&i.test(a))||void 0)))));return void 0!==c?c:f(a,b)>=d.Eh},m=0,n=0,o=0;for(let a of c)e.filter(b=>l(a,b)).length>=4?m+=1:l(a,x.role)&&l(a,x.frequency)||(n+=1),l(a,x.role)&&l(a,x.frequency)&&l(a,x.acceptance)&&(o+=1);return{blocks:c.length,completeBlocks:m,incompleteBlocks:n,closedLoopBlocks:o}}let A="分析该工程难点的成因与风险来源",B=/\d+(?:\.\d+)?\s*(?:mm|cm|m|米|℃|%|kN|MPa|次|天|日历天|小时|h|Hz|m³|㎡|m²|t|吨|座|套|个)/u;function C(a){return a.trim().startsWith("|")?a.split(/\n/u).filter(a=>{let b=a.trim();return b.startsWith("|")&&!/^\|\s*-+\s*\|/u.test(b)&&!/重难点/u.test(b.split("|")[1]||"")}).filter(a=>a.trim().length>=20):a.split(/\n{2,}/u).filter(a=>a.trim().length>=20)}async function D(a,b,c={}){let e,f=async c=>k>=0?l(c,k).length>=4:(e??=await (0,d.Mv)(a,[A],b))(c,A)>=d.Eh,g=0,h=0,i=0,j=[],k=c.attributionColumnIndex??-1,l=(a,b)=>(a.split("|").slice(1,-1)[b]??"").trim();for(let b of a){let a=await f(b),c=B.test(b);a&&(g+=1),c&&(h+=1),a&&c&&(i+=1),j.push({text:b,attributed:a,quantified:c})}return{entries:a,attributed:g,quantified:h,bothCount:i,ratio:a.length?i/a.length:0,details:j}}async function E(a,b){let c=C(function(a){let b=a.match(/^#{2,4}\s*[^\n]*(?:重难点|重点难点|工程难点|难点分析)[^\n]*\n/mu);if(b&&void 0!==b.index){let c=b.index+b[0].length,d=a.slice(c),e=b[0].match(/^#+/u)?.[0].length??3,f=RegExp(`^#{2,${Math.max(2,e)}}\\s+`,"mu"),g=d.search(f);return g>=0?d.slice(0,g):d}let c=a.match(/^\|?\s*[^\n]*(?:重难点|重点难点|工程难点|难点分析)[^\n]*\|\s*$/mu);if(!c||void 0===c.index)return"";let d=a.slice(c.index).split(/\n/u),e=[];for(let a of d){let b=a.trim();if(!b||!b.startsWith("|")){if(e.length>0)break;continue}e.push(a)}return e.join("\n")}(a)),d=(()=>{let a=c.find(a=>a.trim().startsWith("|"));return a?a.split("|").slice(1,-1).map(a=>a.trim()).findIndex(a=>/成因|风险|致险|难点分析/u.test(a)):-1})(),e=await D(c,b,{attributionColumnIndex:d});return{countermeasures:c.length,attributed:e.attributed,quantified:e.quantified,bothCount:e.bothCount,ratio:e.ratio,heavyTemplated:c.length>0&&e.quantified/c.length<.5,entries:e.details.slice(0,24)}}let F=/建筑业10项新技术|10项新技术|新技术推广目录|建设领域推广/u,G=/替代|取代|淘汰.{0,10}(?:工艺|技术|做法)|(?:较|比).{0,10}(?:传统|常规|普通)/u,H=/(?:提升|提高|节省|节约|降低|缩短|减少).{0,10}(?:效率|工期|成本|损耗|能耗|人工|周期)|升级价值|效益显著/u,I=["BIM","铝模","附着式升降脚手架","跳仓法","直螺纹","装配式","灌浆套筒","自动化监测","智慧工地","再生利用","非开挖","CCTV","碳纤维","薄贴法","干法施工","液压提升","预制","光伏一体化","BIPV","模块化"];function J(a){let b=I.filter(b=>a.includes(b)),c=F.test(a),d=G.test(a),e=H.test(a),f=[c,d,e].filter(Boolean).length;return{found:[...b],catalogCited:c,replaceClaimed:d,upgradeClaimed:e,effective:b.length>0&&f>=2}}let K=[/基坑|沟槽/u,/模板支撑|高支模/u,/脚手架|悬挑|附着式/u,/起重吊装|吊装/u,/幕墙/u,/人工挖孔桩/u,/装配式|钢结构安装/u,/拆除工程/u,/顶管|盾构|暗挖/u,/有限空间|水下作业/u,/吊篮/u,/塔吊|施工电梯|升降机/u,/沉井/u],L=/超危大|超规模|专家论证|一般危大/u,M=/(?:深度|高度|跨度|开挖).{0,8}\d+(?:\.\d+)?\s*(?:m|米)|(?:重量|吊装).{0,8}\d+(?:\.\d+)?\s*(?:kN|千牛)/u;function N(a){let b=K.filter(b=>b.test(a)).map(a=>a.source.replace(/\\u\w*|\\|\(|\||\)/gu,"")),c=L.test(a),d=M.test(a);return{categories:b,graded:c,paramMatched:d,twoStepComplete:b.length>0&&c&&d}}let O=[{name:"总则",pattern:/总则/u},{name:"组织机构及职责",pattern:/应急(?:组织|领导)|组织机构|应急指挥部|应急小组/u},{name:"风险分析与危险源辨识",pattern:/风险分析|危险源辨识|风险辨识/u},{name:"应急物资设备通讯保障",pattern:/应急物资|物资.{0,8}(?:保障|储备)|通讯保障|通信保障/u},{name:"专项应急预案",pattern:/专项应急预案|专项预案/u},{name:"应急响应流程",pattern:/应急响应|响应流程|响应程序/u},{name:"后期处置",pattern:/后期处置|善后|事故调查/u},{name:"培训演练",pattern:/(?:应急)?演练|培训.{0,6}演练/u}],P=["高处坠落","物体打击","坍塌","触电","火灾","起重","防汛","防台风","中暑","中毒窒息","管线破坏"];function Q(a){let b=O.filter(b=>b.pattern.test(a)).map(a=>a.name),c=O.filter(b=>!b.pattern.test(a)).map(a=>a.name),d=P.filter(b=>a.includes(b));return{coveredParts:[...b],missingParts:[...c],coverage:b.length/O.length,planHits:[...d]}}let R=[/其他项目/u,/其他标段/u,/其他城市/u,/本公司(?:其他|承建)/u,/某(?:市|县|区|项目)(?:的)?/u,/他项目/u,/兄弟项目/u];function S(a){let b=a.replace(/及其他项目/gu,"及〔清单列举项〕");return R.filter(a=>a.test(b)).map(a=>a.source.replace(/\\u/gu,""))}},55807:(a,b,c)=>{c.d(b,{C_:()=>g.C_,DR:()=>h.DR,EG:()=>h.EG,EK:()=>h.EK,Fc:()=>g.Fc,G2:()=>h.G2,Ht:()=>g.Ht,Il:()=>h.Il,Iu:()=>d.Iu,M6:()=>h.M6,Mz:()=>d.Mz,NJ:()=>h.NJ,QP:()=>d.xs,R_:()=>h.R_,UG:()=>d.UG,Xr:()=>f.Xr,_8:()=>h._8,_k:()=>g._k,br:()=>e.br,bz:()=>h.bz,gq:()=>h.gq,h:()=>f.h,hS:()=>e.hS,hW:()=>d.hW,jO:()=>f.jO,jX:()=>d.jX,md:()=>h.md,t7:()=>d.t7,w_:()=>g.w_,xs:()=>f.xs});var d=c(64753),e=c(18292),f=c(87635),g=c(13145),h=c(39372)},55965:(a,b,c)=>{c.d(b,{hy:()=>m,kE:()=>j});var d=c(22157),e=c(95734);let f=new Map,g={"labor-peak":"项目劳动力峰值(人)","total-days":"项目总工期(日历天)","village-count":"项目自然村数量(个)",quantity:"工程量清单条目汇总工程量"},h=`你是施工组织设计文档的数值引用裁决器。任务:判断正文句中的数值是否「以该项目级数据的口径」陈述(项目级 = 全项目汇总/锁定口径)。
|
|
222
222
|
判定结论三选一:
|
|
223
223
|
- consistent:该句并非以该数据的项目级口径陈述该数值。典型非冲突形态:规格参数(间距/直径/厚度/强度等级)、检测频次或测点密度、分区/分段/分等级声明、分部分项或单体(单座/单栋/每座)工程量、分村/分工程/分标段明细值、计划或阶段工期、工期管理阈值(延误/预留/机动/占用天数)、施工组织分配(每X覆盖N个)、型号编号、其他概念的同形数字;或该句确以项目级口径陈述且数值与权威值一致。
|
|
224
224
|
- conflict:该句确以该项目级数据的口径陈述该数值,且数值与权威值不一致。
|