@customize-agent/server 4.56.5 → 4.56.6
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 +20 -20
- package/.next/prerender-manifest.json +3 -3
- package/.next/server/chunks/4435.js +3 -3
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/pages/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 +26 -26
- package/.next/static/chunks/{289-35ac595388bbd018.js → 289-12dfcb3abec1c4b4.js} +1 -1
- package/.next/static/chunks/563-2b116a2500a97dba.js +1 -0
- package/.next/static/chunks/788-961761f5858f9189.js +1 -0
- package/.next/static/chunks/pages/documents-8e1a30170e9311b0.js +1 -0
- package/.next/static/chunks/pages/knowledge/files-7b78e962e432d199.js +1 -0
- package/.next/static/chunks/pages/knowledge/manage-7535b873ab505397.js +1 -0
- package/.next/static/chunks/pages/prompt-2c242e541f2e77a9.js +1 -0
- package/.next/static/chunks/pages/system/logs-c5a8920c6506a7e8.js +1 -0
- package/.next/static/{1OarWpIlYyjo9b3a3yhj3 → es9Sh_JJlOsf_N_OSbqQa}/_buildManifest.js +1 -1
- package/package.json +1 -1
- package/.next/static/chunks/563-b12f299d34bb9e44.js +0 -1
- package/.next/static/chunks/788-3afeb069ed706ac0.js +0 -1
- package/.next/static/chunks/pages/documents-d60a47643f5bd6b4.js +0 -1
- package/.next/static/chunks/pages/knowledge/files-8e25066889a85834.js +0 -1
- package/.next/static/chunks/pages/knowledge/manage-d0d0e0716e9d705b.js +0 -1
- package/.next/static/chunks/pages/prompt-5e1fb81efc656866.js +0 -1
- package/.next/static/chunks/pages/system/logs-6f45ef8d862759a2.js +0 -1
- /package/.next/static/{1OarWpIlYyjo9b3a3yhj3 → es9Sh_JJlOsf_N_OSbqQa}/_ssgManifest.js +0 -0
|
@@ -11,7 +11,7 @@ ${n}
|
|
|
11
11
|
${b}`,{signal:e,maxTokens:1800,temperature:0,diagnostics:f});for(let a of c?.facts??[])a&&"string"==typeof a.key&&q.push(a)}if((0,o.Te)(e),!q?.length)return{facts:[],stages:g};let x=[],y=0;for(let a of q){if(!a.key||!a.value)continue;let b=r.get(String(a.evidenceId||"").trim().toUpperCase());if(!b){y+=1;continue}let c=l.find(b=>b.id===a.fieldId||b.name===a.fieldName||b.name===a.key);x.push({key:c?.name||a.key,fieldId:c?.id||a.fieldId,fieldName:c?.name||a.fieldName,value:(0,o.lG)(a.value),sourceFile:b.filePath,roleId:b.roleId||"llm",processingType:b.processingType,confidence:a.confidence??.8,sourceRef:{filePath:b.filePath,roleId:b.roleId||"llm",processingType:b.processingType}})}return{facts:x,stages:[{type:"fact_extraction",roleId:"llm-json",status:"success",message:`LLM 按动态 schema 抽取 ${x.length} 条事实${y>0?`(丢弃 ${y} 条无效来源编号)`:""}`}]}}let D=["投标保证金的金额、收款账户名称、开户行与账号","电子投标文件加密方式与解密方式","开标时间、开标地点与开标程序","评标委员会组成与评标办法","招标人联系人、联系电话、邮箱与地址","投标文件递交方式与递交截止时间","空白表格填写说明与上传下载指引","公共资源交易平台监督管理部门"],E=/签章|盖章|联系人|联系电话|电话|邮箱|解密方式|开标时间|开标地点|评标办法|评标委员会|投标保证金|保证金账户|电子交易系统|空白|填写|上传|下载|递交方式|递交截止|公共资源交易监督管理|监管部门|开评标程序|采购范围|是否|符合/u;async function F(a,b,c=h.p4,d){let e=(b?.factFields.map(a=>a.name)||[...new Set(a.map(a=>a.fieldName||a.key))]).filter(a=>(function(a,b){let c=(0,h.oC)(b,a);return c?"single"===c.cardinality&&"ignore"!==c.conflictPolicy&&"allow_multiple"!==c.conflictPolicy:/项目名称|工程名称|招标人|建设地点|建筑面积|结构形式|层数|工期|质量标准|合同价格形式|绿色建筑等级|投标有效期|质保期|劳动力高峰|装配率|支护形式|创优奖惩/u.test(a)})(a,c)),f=[...new Set(a.map(a=>(0,o.lG)(a.value).trim()).filter(a=>E.test(a)))],g=await (0,p.Mv)(f,D,d),j=a=>D.some(b=>g(a,b)>=.6),k=[];for(let b of e){let d=a.filter(a=>a.key===b||a.fieldName===b||(0,h.oC)(c,a.fieldName||a.key)?.name===b),e=new Map;for(let a of d){let b=function(a,b,c){let d=I((0,o.lG)(a).trim());if((0,r.j4)(d))return"";let e=(0,i.De)((0,i.pN)(d));if(!e||(0,r.j4)(e)||(0,h.d2)(b,e)||(0,h.rF)(b,e)||(0,i.wI)(e)||/\|/u.test(e)||/^#+\s*/u.test(e)||/见(?:招标公告|投标人须知|前附表|本项目|补疑)|资料参数行摘要/u.test(e)||i.mf.test(e.replace(/\s+/gu,""))&&/投标|开标|递交|评标|公示|中标|截标/u.test(e))return"";let f=e.match(/\d+\s*日历天/u)?.[0]?.replace(/\s+/gu,"");if(f&&/工期|日历天|开工日期|竣工/u.test(e))return f;let g=(0,l.K3)((0,o.lG)(e));return!g||g.length>80||!/[\d年月日%]|合格|一星|二星|三星|总价合同|单价合同|承台|框架|装配式/u.test(e)||E.test(e)&&c?.(e)?"":g}(a.value,c,j);b&&e.set(b,[...e.get(b)||[],a])}if(e.size<=1)continue;let f=new Set([...e.keys()].map(i.cg));for(let a of 2!==f.size||f.has("plain")?[e]:["duration","date"].map(a=>new Map([...e].filter(b=>(0,i.cg)(b[0])===a)))){if(a.size<=1)continue;let c=[...a.values()].slice(0,4).map(a=>`${(0,o.lG)(a[0].value).slice(0,120)}(${[...new Set(a.map(a=>a.sourceFile))].slice(0,3).join("、")})`).join(" vs ");k.push(`事实冲突:${b} 存在多个来源值:${c}`)}}return k.slice(0,8)}function G(a){return(0,o.lG)(a).replace(/\s*[##]{1,6}\s*/gu,"")}function H(a){return(0,o.lG)(a).replace(/[\u00A0\u2002-\u200B\u3000]/gu," ").replace(/([\p{Script=Han}])\s+([\p{Script=Han}])/gu,"$1$2").replace(/(\d)\s+(日历天|天|个月|月|年|万元|元|㎡|平方米|米|m|mm|MPa|kPa|%)/giu,"$1$2").replace(/(合同|投资|工程|项目)\s*估\s*算\s*(?:价格|价)/gu,"$1估算价").replace(/计划\s*工\s*期/gu,"计划工期").replace(/合同\s*工\s*期/gu,"合同工期").replace(/质量\s*标\s*准/gu,"质量标准").replace(/建设\s*地\s*点/gu,"建设地点").replace(/建设\s*规\s*模/gu,"建设规模").replace(/招标\s*范\s*围/gu,"招标范围").replace(/最高\s*投\s*标\s*限\s*价/gu,"最高投标限价").replace(/招标\s*控\s*制\s*价/gu,"招标控制价").replace(/[::]\s*/gu,":").replace(/\s+/gu," ").trim()}function I(a){return a.replace(/[((【[]?\s*(?:\d{1,2}(?:[..]\d{1,2}){0,3}\s*)?(?:招标项目编号|招标编号|项目编号|工程编号|标段编号|采购编号|项目代码)\s*[::为是]?\s*[A-Za-z0-9][A-Za-z0-9\-_.()()]{3,79}\s*[))】\]]?\s*$/u,"").trim()}let J=[{fieldId:"project_name",key:"项目名称",fieldName:"项目名称",pattern:/(?:项目名称|工程名称|招标项目名称)[::\s为是]+([^\n。;;]{2,120})/u},{fieldId:"project_code",key:"项目编号",fieldName:"项目编号",pattern:/(?:项目编号|招标项目编号|工程编号)[::\s为是]+([A-Za-z0-9\-_.()()]{4,80})/u},{fieldId:"owner",key:"招标人",fieldName:"招标人",pattern:/(?:招标人|建设单位|发包人)[::\s为是]+([^\n。;;]{2,120})/u},{fieldId:"project_location",key:"建设地点",fieldName:"建设地点",pattern:/建设地点[::\s为是]+([^\n。;;]{2,100})/u},{fieldId:"project_scale",key:"建设规模",fieldName:"建设规模",pattern:/建设规模[::\s为是]+([^\n。;;]{2,220})/u},{fieldId:"project_scale",key:"建设规模",fieldName:"建设规模",pattern:/(?:拟|计划|规划|目标|力争|预计|期望|远期|未来|设想|建议|预期|争取)[^,,。;;\n]{0,12}?(?<![地上地下])总?建筑面积(?:约|约为|约计|共计|为)?\s*[\d,,.]+\s*(?:㎡|m²|m2|平方米)|((?<![地上地下])总?建筑面积(?:约|约为|约计|共计|为)?\s*[\d,,.]+\s*(?:㎡|m²|m2|平方米))/u},{fieldId:"project_scope",key:"招标范围",fieldName:"招标范围",pattern:/招标范围[::\s为是]+([^\n。;;]{2,220})/u},{fieldId:"schedule_requirement",key:"计划工期",fieldName:"周期要求",pattern:/(?:(?:计划工期|合同工期|总工期)[::\s为是约]*|工期[::\s为是约]+)([^\n。;;]{0,40}?\d+(?:\.\d+)?\s*(?:日历天|天|个月|月|年)(?:[^\n。;;]{0,30})?)/u},{fieldId:"quality_standard",key:"质量标准",fieldName:"质量标准",pattern:/质量标准[::\s为是]+([^\n。;;]{1,60})/u},{fieldId:"project_investment_estimate",key:"合同估算价格",fieldName:"项目投资估算",pattern:/(?:合同估算价格|合同估算价|投资估算|估算价格|工程估算价|项目估算价|最高投标限价|招标控制价)[::\s为是约]+([^\n。;;]{0,80}?\d+(?:\.\d+)?\s*(?:万元|元))/u},{fieldId:"labor_peak",key:"劳动力高峰人数",fieldName:"劳动力高峰人数",pattern:/(?:劳动力|用工|作业人员|施工人员)[^。;;\n]{0,40}?(?:高峰|峰值)[^。;;\n]{0,20}?(\d+(?:\.\d+)?\s*人)/u},{fieldId:"labor_peak",key:"劳动力高峰人数",fieldName:"劳动力高峰人数",pattern:/(?:高峰(?:期)?(?:劳动力|用工|人数|作业人员)|高峰期人数)[^。;;\n]{0,20}?(\d+(?:\.\d+)?\s*人)/u},{fieldId:"assembly_rate",key:"装配率",fieldName:"装配率",pattern:/(?:装配率|装配式建筑占比|装配式比例|装配式建筑面积占比)[^。;;\n]{0,16}?(\d+(?:\.\d+)?\s*%)/u},{fieldId:"foundation_support_form",key:"基坑支护形式",fieldName:"基坑支护形式",pattern:/(?:基坑支护(?:形式|方式|方案)?|支护(?:形式|方式))[^。;;\n]{0,10}?(?:采用|为|:|:|\s)([^。;;\n]{2,60})/u},{fieldId:"award_clause",key:"创优奖惩条款",fieldName:"创优奖惩条款",pattern:/(?:创优(?:目标|奖惩)?|优质优价)[^。;;\n]{0,60}?(\d+(?:\.\d+)?\s*万元)/u},{fieldId:"award_clause",key:"创优奖惩条款",fieldName:"创优奖惩条款",pattern:/(?:确保|争创|力争|争获)?[\u4e00-\u9fa5]{2,6}[杯奖][^。;;\n]{0,60}?(\d+(?:\.\d+)?\s*万元)/u}];function K(a,b){let c=H((0,o.lG)(b));return!(!a||!c||c.length>260||/###|第\s*\d+\s*页|共\s*\d+\s*页|律师代理费|投标文件的编制|备选投标方案|投标将被否决|投标人提供|投标有效期|电子交易系统|公共资源交易监督管理部门|中标候选|评标委员会|实质性内容作出响应/u.test(c)||/签章|盖章|联系人|联系电话|电话|邮箱|解密|开标|评标|保证金|交易系统|空白|填写|上传|下载|递交/u.test(c)||/条款号|条款名称|编列内容|澄清为如下|现澄清|答疑文件|补遗书|投标人须知前附表/u.test(c))&&("schedule_requirement"===a?c.length<=90&&/\d+(?:\.\d+)?\s*(?:日历天|天|个月|月|年)/u.test(c)&&!/^(?:计划)?开工日期\s*[::]/u.test(c)&&!/(?<=[日天])\s*[0-9]+(?:\.[0-9]+)?(?=[\s]*(?:招标|建设|质量|合同|项目|工程|资金|投标|开标|评标|付款|工期|开工|计划|计价|现场|资质|标段|[,,。;;]|$))/u.test(c):"quality_standard"===a?c.length<=40&&/合格|优良|一次性验收|国家.*验收|达到/u.test(c)&&!/工期|投标|技术标准|\d[..、]/u.test(c):"owner"===a?c.length>=4&&c.length<=80&&/公司|局|委员会|中心|处|院|所|校|集团|有限|股份|责任|管理|政府|管委会|办事处|指挥部/u.test(c)&&!/将报|监督管理部门|投标人|中标|负责解释|见招标|详见|空白|填写/u.test(c):"project_location"===a?c.length<=120&&!/见招标公告|详见|投标/u.test(c):"project_scope"===a?c.length<=220&&!/^[((]\s*\d+[))]/u.test(c)&&!/具备.{0,24}(?:证书|考核合格|安全生产考核)/u.test(c)&&!/^见(?:招标|投标人|前附)/u.test(c):"project_code"===a?/^[A-Za-z0-9\-_.()()]+$/u.test(c)&&c.length<=80&&!/\.\d+$/u.test(c):"project_scale"===a?c.length<=100&&/(?:m²|㎡|平方米|m2|km|米|公里|亩|公顷|栋|幢|座|处|户|层|个)/u.test(c)&&!/招标范围/u.test(c):"project_investment_estimate"===a?c.length<=100&&/\d+(?:\.\d+)?\s*(?:万元|元)/u.test(c):"labor_peak"===a?c.length<=40&&/\d+(?:\.\d+)?\s*人/u.test(c):"assembly_rate"===a?c.length<=20&&/\d+(?:\.\d+)?\s*%/u.test(c):"foundation_support_form"===a?c.length<=60&&/支护|放坡|锚|桩|喷|开挖|护坡/u.test(c):"award_clause"===a?c.length<=120&&/\d+(?:\.\d+)?\s*万元/u.test(c)&&!/评标|保证金/u.test(c):c.length<=220)}function L(a,b){let c=String(a||""),d=String(b||"");if(!c||!d)return;let e=/(?:部位|位置|单体|楼栋|楼层)[::]\s*([^\s,。;、||]{1,20})/u.exec(c);if(e)return e[1].trim();let f=c.indexOf(d);if(f<=0)return;let g=c.slice(0,f),h=Math.max(g.lastIndexOf("。"),g.lastIndexOf(";"),g.lastIndexOf(","),g.lastIndexOf("、"),g.lastIndexOf("|"),g.lastIndexOf("\n"),g.lastIndexOf(":"),g.lastIndexOf(":")),i=g.slice(h+1).trim();if(!i)return;let j=i.replace(/(?:的)?(?:建筑面积|占地面积|面积|厚度|强度等级|强度|等级|规格|型号|管径|直径|长度|宽度|高度|数量|重量|间距|坡率|埋深|标高|比例|配比|用量|含量|厚度规格)$/u,"").trim(),k=/([\u4e00-\u9fa5][\u4e00-\u9fa5A-Za-z0-9#()()]{0,11})$/u.exec(j);if(!k)return;let l=k[1].replace(/^(?:本工程|本项目|本标段|该项|该|其)+/u,"").replace(/(?:地上|地下|的)$/u,"").replace(/(?:采用|选用|使用|设置|为|是|按|共|约|取)+$/u,"").trim();if(!(!l||/^(?:的|了|是|为|按|共|约|及|和|与|在|由|其中|详见|参见)$/u.test(l)))return l}let M=/\||第\s*\d+\s*页|共\s*\d+\s*页|[##]{1,6}| 资料参数行摘要|(?<=[日天])\s*[0-9]+(?:\.[0-9]+)?(?=[\s]*(?:招标|建设|质量|合同|项目|工程|资金|投标|开标|评标|付款|工期|开工|计划|计价|现场|资质|标段|[0-9]{1,3}[.、.]|[,,。;;]|$))/u,N=/规模|范围|工期|周期|project_scope|project_scale/iu,O=/^[A-Za-z0-9\-_.()()]+$/u,P=/(?:招标项目编号|项目编号|工程编号|标段编号|合同编号|编号)[::为是]*([A-Za-z0-9][A-Za-z0-9\-_.()()]{3,79})/gu;function Q(a){return"project_code"===a.fieldId||/编号|代码/u.test(`${a.fieldName||""}${a.key||""}`)}function R(a,b,c){let d,e=[];for(let f of a){let a=(0,o.lG)(f.value).trim();if(!a)continue;let g=M.exec(a),h=a;g&&(h=a.slice(0,g.index).replace(/[\s::,,、;;\-—|]+$/u,"").trim()),Q(f)||(h=I(h));let i=h!==a;if(h.length<2){c.dropped+=1;continue}let j=Q(f);if(j&&!O.test(h)||h.length>120&&!N.test(`${f.fieldId||""} ${f.fieldName||""} ${f.key||""}`)){c.dropped+=1;continue}let k=!1;if(j&&h.length>=4){let a=[...(d||=function(a){let b=new Map;for(let c of a)for(let a of G((0,o.lG)(c.content)).replace(/\s+/gu,"").matchAll(P)){let c=a[1];c&&b.set(c,(b.get(c)||0)+1)}return b}(b)).entries()].filter(([a])=>a.length>=h.length+2&&a.startsWith(h)),c=a.sort((a,b)=>b[1]-a[1]||a[0].length-b[0].length)[0]?.[0];c&&(h=c,k=!0)}i&&(c.truncated+=1),k&&(c.repaired+=1),e.push(h===a?f:{...f,value:h})}return e}function S(a){let b={localFacts:function(a,b,c){let d=(0,k.Uy)(b,c),e=d.map(a=>({field:a,pattern:function(a){let b=a.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&"),c=/规模|scale|工期|周期/iu.test(a)?"[^。]{2,220}":"[^\n,。;;]+";return RegExp(`${b}[::\\s]+(${c})`,"u")}(a.name)})),f=d.map(a=>a.name).filter(Boolean),g=[];for(let b of a)for(let{field:a,pattern:c}of e){if(!(0,k.I2)(b,a))continue;let d=b.content.match(c),e=d?.[1]?.trim();if(!e)continue;e=(e=G(e).replace(/\s+/gu,"")).replace(/(?<=[日天])[0-9]+(?:\.[0-9]+)?(?=(?:招标范围|质量标准|建设规模|计划工期|合同估算|项目名称|项目编号|建设地点|招标人|资金来源|投标人资格|资质要求|开标|评标|付款|计价|现场条件|开工日期|合同工期|工期要求|[0-9]{1,3}[.、.]|[,,。;;]|$))/u,"");let i=f.filter(b=>b!==a.name).map(a=>e.indexOf(a)).filter(a=>a>0);i.length>0&&(e=e.slice(0,Math.min(...i))),!e||!(e.length<=220)||(0,h.rF)(h.p4,e)||(0,h.d2)(h.p4,e)||g.some(b=>b.fieldId===a.id&&b.value===e)||g.push({key:a.name,fieldId:a.id,fieldName:a.name,value:e,sourceFile:b.filePath,roleId:b.roleId||"unknown",processingType:b.processingType,confidence:b.score,sourceRef:{filePath:b.filePath,roleId:b.roleId||"unknown",processingType:b.processingType,sectionTitle:b.sectionTitle}})}return g}(a.evidence,a.template,a.spec),projectBasicFacts:function(a){let b=[],c=new Set;for(let d of a)for(let a of G((0,o.lG)(d.content)).replace(/(\d)\s*\r?\n\s*(日历天|天|个月|月|年|万元|元|㎡|平方米|米|m|mm|MPa|kPa|%)/giu,"$1$2").replace(/([\d,,.]+(?:平方|立方|㎡|m²|m2|m)?)\s*\r?\n\s*(米|m|㎡|m2|m²)/gu,"$1$2").split(/\r?\n/u).flatMap(a=>{let b=H(a);return b.length>260?b.split(/(?=\d+(?:\.\d+)?\s*[^\s::]{2,12}[::])/u):[b]}).filter(Boolean))if(!/报价明细|综合单价|税率|增值税|利润|结算/u.test(a)||/合同估算价|合同估算价格|投资估算|最高投标限价|招标控制价/u.test(a))for(let e of J){let f=e.pattern.exec(a),g=f?.[1]?.trim();if(!g||!K(e.fieldId,g))continue;let h=`${d.filePath}:${e.fieldId}:${g}`;c.has(h)||(c.add(h),b.push({key:e.key,fieldName:e.fieldName,fieldId:e.fieldId,value:g,sourceFile:d.filePath,roleId:d.roleId||"project_basic_fact",processingType:d.processingType||"reference",confidence:Math.max(.82,d.score||.82),sourceRef:{filePath:d.filePath,roleId:d.roleId||"project_basic_fact",processingType:d.processingType||"reference",sectionTitle:d.sectionTitle}}))}return b}(a.evidence),preciseFacts:function(a,b=h.p4){let c=[],d=new Set;for(let e of a){let a=`${e.roleId||""} ${e.processingType||""} ${e.filePath} ${e.sectionTitle||""}`;if(!/structured_data|\bdraw(?:ing)?\b|\btable\b|\bbill\b|\bboq\b|\bsheet\b|\bspec\b|\bstandard\b|\brecord\b|\breport\b|表格|数据|规格|参数|标准|记录|报告|清单|图纸|说明/u.test(a)&&e.score<.75)continue;let f=(0,o.lG)(e.content).replace(/\s+/gu," ");for(let a of f.matchAll(n._W)){let g=a[0].trim();if(!g||(0,h.rF)(b,g))continue;let i=Math.max(0,(a.index||0)-40),j=Math.min(f.length,(a.index||0)+g.length+40),k=f.slice(i,j);if((0,h.d2)(b,k)||(0,h.E1)(b,k))continue;let l=`${e.filePath}:${g}`;d.has(l)||(d.add(l),c.push({key:"精确参数",fieldName:"技术参数",fieldId:"technical_parameter",objectName:L(k,g),value:g,sourceFile:e.filePath,roleId:e.roleId||"precise_fact",processingType:e.processingType||"precise",confidence:Math.max(.7,e.score||.7),sourceRef:{filePath:e.filePath,roleId:e.roleId||"precise_fact",processingType:e.processingType||"precise",sectionTitle:e.sectionTitle}}))}}return c.slice(0,240)}(a.evidence,a.profile||h.p4),structuredTables:v(a.evidence)},c={truncated:0,dropped:0,repaired:0};if(b.localFacts=R(b.localFacts,a.evidence,c),b.projectBasicFacts=R(b.projectBasicFacts,a.evidence,c),b.preciseFacts=R(b.preciseFacts,a.evidence,c),a.diagnostics&&(c.truncated>0||c.dropped>0||c.repaired>0)){let b=a.diagnostics.factSanitize||={truncated:0,dropped:0,repaired:0};b.truncated+=c.truncated,b.dropped+=c.dropped,b.repaired+=c.repaired}return{...b,factSanitize:c}}function T(a){return`${a.key} ${a.fieldName||""} ${a.value} ${a.roleId} ${a.processingType||""} ${a.sourceFile}`}function U(a){return/合同估算价|合同估算价格|投资估算|估算价格|工程估算价|项目估算价|最高投标限价|招标控制价/u.test(a)}function V(a){let b=T(a);return!U(b)&&/投标保证金|发票类型|开标时间|公共资源交易监督管理|不良行为记录|投诉举报|资质投诉|投标承诺|违约金|中标服务费|交易平台|保证金账户|投标有效期|报价明细|投标报价|单价|合价|税率|增值税|利润|结算/u.test(b)}function W(a){return(0,o.lG)(a).replace(/\s+/gu," ").trim()}function X(a,b=[]){return[...new Set([a,...b,...a.split(/[\s、,。;;::/\\_-]+/u)].map(W).filter(a=>a.length>=2))]}function Y(a,b,c){var d,e;let f=W(c.label);if(!f||(0,h.rF)(b,f)||(0,h.d2)(b,f))return;let g=c.id||(d=c.source,e=c.fieldId,`${d}:${e||f}`.toLowerCase().replace(/[^\p{L}\p{N}]+/gu,"-").replace(/^-|-$/gu,"")||`${d}-${Math.random().toString(36).slice(2,8)}`),i=c.queries?.length?c.queries.map(W).filter(Boolean):X(f),j=a.find(a=>a.id===g||a.label===f);if(j){j.required=j.required||c.required,j.queries=[...new Set([...j.queries,...i])];return}a.push({...c,id:g,label:f,queries:i})}function Z(a,b,c,d,e,f=[]){"do_not_use"!==c.usagePolicy&&"diagnostic_only"!==c.usagePolicy&&"forbidden"!==c.derivationPolicy&&Y(a,b,{label:c.name,category:c.category,required:e,source:d,fieldId:c.id,queries:X(c.name,[...c.aliases,...f])})}function $(a){let b=a.profile||h.p4,c=[],d=[a.template.name,a.template.outputTitle,a.chapter.title,a.chapter.purpose,...a.chapter.sections||[],...a.chapter.requiredFacts||[]].filter(Boolean).join(" "),e=a.spec?.chapterRules.find(b=>b.id===a.chapter.id||b.title===a.chapter.title);for(let d of a.chapter.requiredFacts||[])Y(c,b,{label:d,category:(0,h.oC)(b,d)?.category||"required",required:!0,source:"template"});for(let d of a.chapter.sections||[])Y(c,b,{label:d,category:"section",required:!1,source:"section",queries:X(d,[a.chapter.title])});for(let d of a.plan?.requiredContents||[])Y(c,b,{label:d,category:(0,h.oC)(b,d)?.category||"plan",required:!0,source:"plan"});for(let d of a.plan?.evidenceNeeds||[])Y(c,b,{label:d,category:(0,h.oC)(b,d)?.category||"plan",required:!0,source:"plan"});for(let d of e?.requiredFactIds||[]){let e=a.spec?.factFields.find(a=>a.id===d);e&&Y(c,b,{label:e.name,category:(0,h.oC)(b,e.name)?.category||"spec",required:!0,source:"spec",fieldId:e.id,queries:X(e.name,[e.extractionHint||"",e.validationHint||""])})}for(let e of a.spec?.factFields||[]){if(!e.required)continue;let f=(0,h.oC)(b,e.name),g=`${e.name} ${e.extractionHint||""} ${e.validationHint||""}`;(d.includes(e.name)||X(e.name,f?.aliases||[]).some(a=>d.includes(a))||a.chapter.requiredFacts.some(a=>a.includes(e.name)||e.name.includes(a)))&&Y(c,b,{label:e.name,category:f?.category||"spec",required:!0,source:"spec",fieldId:e.id,queries:X(e.name,[g])})}for(let a of b.factFields)[a.name,...a.aliases].some(a=>a.length>=2&&d.includes(a))&&Z(c,b,a,"profile","must_use"===a.usagePolicy,[d]);let f=W(a.requirement||"");if(f)for(let a of b.factFields)[a.name,...a.aliases].some(a=>a.length>=2&&f.includes(a))&&Z(c,b,a,"requirement",!0,[f]);let g=W(a.promptTexts||"");if(g)for(let d of b.factFields)[d.name,...d.aliases].some(a=>a.length>=2&&g.includes(a))&&Z(c,b,d,"prompt","must_use"===d.usagePolicy,[a.chapter.title]);return c}function _(a){let b=new Set;return a.filter(a=>{let c=`${a.sourceFile}:${a.key}:${a.value}`;return!b.has(c)&&(b.add(c),!0)})}function aa(a){let b=a.profile||h.p4,c=a.excludedEvidenceKeys,d=_([...a.factsModel.factIndex.parameterFacts,...a.factsModel.billItemFacts||[],...a.factsModel.factIndex.billFacts,...a.factsModel.factIndex.tableFacts,...a.factsModel.factIndex.drawingFacts,...a.factsModel.factIndex.reliableFacts]);return a.needs.map(e=>{let f=a=>"bill_of_quantities"===a.processingType||"structured_data"===a.processingType||/bill|boq|清单/u.test(T(a))?.05:0,g=_(d.filter(a=>(function(a,b,c){let d=T(a);if(V(a)||(0,h.rF)(c,d)||(0,h.d2)(c,d))return!1;if(b.fieldId&&a.fieldId===b.fieldId||(0,h.oC)(c,a.fieldName||a.key)?.id===b.fieldId||b.queries.filter(a=>a.length>=2).some(a=>d.includes(a)))return!0;let e=(0,h.oC)(c,b.label);return!!(e&&[e.name,...e.aliases].some(a=>a.length>=2&&d.includes(a)))})(a,e,b))).sort((a,b)=>(b.confidence||0)+f(b)-((a.confidence||0)+f(a))),i=(a.evidence||[]).filter(a=>!c?.has((0,q.hM)(a))&&function(a,b,c){let d=`${a.filePath} ${a.roleId||""} ${a.processingType||""} ${a.sectionTitle||""} ${a.content}`;return!((0,h.rF)(c,d)||(0,h.d2)(c,d))&&b.queries.some(a=>a.length>=2&&d.includes(a))}(a,e,b)),j=Math.max(0,...g.map(a=>a.confidence||0)),k=0===g.length&&0===i.length?"missing":j>0&&j<.58?"low_confidence":"satisfied";return{need:e,facts:g,evidence:i,status:k}})}function ab(a){return _(a.flatMap(a=>a.facts))}function ac(a){let b=a.map(a=>{let b=a.facts.filter((a,b,c)=>c.findIndex(b=>(0,o.lG)(b.value)===(0,o.lG)(a.value))===b).slice(0,5).map(b=>`${b.key||b.fieldName||a.need.label}=${ad(b.value)}${b.sourceFile?`(${e.basename(b.sourceFile)})`:""}`),c=a.facts.length?[]:(a.evidence||[]).slice(0,2).map(a=>`证据片段:${ad(a.content).slice(0,160)}${a.filePath?`(${e.basename(a.filePath)})`:""}`);return`- ${a.need.required?"必须":"相关"}|${a.need.label}|${a.status}${b.length||c.length?`:${[...b,...c].join(";")}`:":未在已解析资料中确认"}`});return b.length?`事实需求覆盖卡片:
|
|
12
12
|
${b.join("\n")}`:""}function ad(a){return(0,o.lG)(a).replace(/\s+/gu," ").trim().slice(0,220)}let ae=/[\u3400-\u4DBF\u{20000}-\u{3FFFF}]/gu,af=/(?:R\d+C\d+|COL\d+|第\d+行第\d+列)/giu;function ag(a){let b=a.match(/([\u4e00-\u9fa5]{2,8}?(?:镇|乡|县|市|区|街道|村))/u);return b?.[1]}function ah(a,b){for(let c of a.matchAll(/([\u4e00-\u9fa5]{2,8}?(?:镇|乡|县|市|区|街道|村))[^。;;\n]{0,24}?(?:项目|工程)/gu))if(c[1]!==b)return!0;return!1}function ai(a){let b=`${a.key||""}${a.fieldName||""}${a.fieldId||""}`,c=H((0,o.lG)(a.value)).trim();if(!c)return a;if(/项目名称|工程名称|project_name/u.test(b)){if(E.test(c))return a;let b=c.replace(/^(?:项目|工程)名称[::]\s*/u,"").trim();if(!(/项目|工程/u.test(b)&&!/(?:[||]|序号|合计|金额|第\d*页|共\d*页)/u.test(b)&&b.length>=3&&b.length<=80))return{...a,value:""}}if(/招标人|建设单位|发包人|tenderee/u.test(b)){if(af.test(c))return a;let b=c.replace(/^招标人[::]\s*/u,"").trim();if(!(/(?:政府|公司|局|委员会|集团|学院|大学|中心|研究院|设计院|事务所|管理处|指挥部|医院|学校|村委会|居委会)(?:[((][^))]*[))])?$/u.test(b)&&b.length<=60))return{...a,value:""}}return a}async function aj(a,b=[],c=[],d,e=h.p4){a=function(a){let b=a.filter(a=>!function(a){let b=(0,o.lG)(a.value);if(!b)return!1;let c=[...b.matchAll(ae)].length;if(c>0){let a=[...b.matchAll(/[\u3400-\u4DBF\u4E00-\u9FFF\u{20000}-\u{3FFFF}]/gu)].length;if(b.length<=40||a>0&&c/a>=.2)return!0}return!!af.test(b)&&!!(b.replace(af,"").trim().length<=24)}(a)).map(ai).filter(a=>(0,o.lG)(a.value).trim().length>0).filter(a=>!(0,r.j4)((0,o.lG)(a.value),{allowProse:!0,includePoolNoise:!1})),c=b.find(a=>("项目名称"===a.key||"project_name"===a.fieldId)&&(0,o.lG)(a.value).trim().length>=6),d=c?H((0,o.lG)(c.value)).trim():"",e=d?ag(d):void 0;return e?b.map(a=>{let b=`${a.key||""}${a.fieldName||""}${a.fieldId||""}`,c=H((0,o.lG)(a.value)).trim();if(!c)return a;if(/招标范围|施工范围/u.test(b)){let b=c.split(/[。;;\n]/u).map(a=>a.trim()).filter(Boolean);if(b.length<=1)return ah(c,e)?{...a,value:""}:a;let d=b.filter(a=>!ah(a,e));return 0===d.length?{...a,value:""}:{...a,value:d.join(";")}}return/项目名称候选|项目名称|工程名称/u.test(b)&&ah(c,e)?{...a,value:""}:a}).filter(a=>(0,o.lG)(a.value).trim().length>0):b}(a);let f=b=>a.filter(a=>b.some(b=>`${a.key} ${a.fieldName||""}`.includes(b))),g=b=>a.filter(a=>a.processingType===b||a.roleId.includes(b)),i=a.filter(a=>{let b=`${a.key} ${a.fieldName||""} ${a.value}`;return n.sv.test(b)&&(!(0,h.rF)(e,b)||U(b))&&!(0,h.d2)(e,b)}),j=a.filter(a=>"table"===a.processingType||"structured_data"===a.processingType||"bill_of_quantities"===a.processingType||/bill|boq|table|sheet|data|表格|列表|明细|数据/u.test(`${a.roleId} ${a.sourceFile}`)),k=w(b).slice(0,600),l=function(a){let b={},c=(a,c,d,e,f)=>{if(!a||!d)return;let g=d.replace(/[,,。\s]+$/u,"").slice(0,40),h=b[a]||=[];h.some(a=>a.location===c&&a.spec===g)||h.push({location:c,spec:g,quantity:e||void 0,sourceFile:f})};for(let b of a){let a=(b.key||"").replace(/^清单条目:/u,"");if(!a)continue;let d=(0,o.lG)(b.value),e=/|工程量:(.+)$/u.exec(d)?.[1]??"",f=d.replace(/|工程量:.+$/u,""),g=function(a){let b=[];for(let c of a.split(/[;;]/u)){let a=c.replace(/^\s*\d+[.、]\s*/u,"").trim(),d=a.search(/[::]/u);if(d>0){let c=a.slice(0,d).trim(),e=a.slice(d+1).trim();c.length>=2&&c.length<=20&&e&&b.push({label:c,value:e})}}return b}(f),h=!1;for(let{label:d,value:f}of g){if(x.some(a=>d.includes(a))){h=!0,c(d,a,f,e,b.sourceFile);continue}let g=f.match(y)?.[0];g&&g!==f&&c(A(g),a,g,e,b.sourceFile)}if(!h)for(let d of f.match(y)||[])c(A(d),a,d,e,b.sourceFile)}return b}(k),m=(function(a){let b=[];for(let c of a){let a=`${c.key||""}${c.fieldName||""}${c.fieldId||""}`,d=(0,o.lG)(c.value);if(/建设规模/u.test(a)&&/占地|用地/u.test(d)&&/建筑面积/u.test(d)){let a=d.search(/(?:总)?占地/u),e=d.search(/(?:单体)?总?建筑面积/u);if(a>=0&&e>a){let f=d.slice(a,e).replace(/^[,,、\s]+/u,"").replace(/[,,、\s]+$/u,"").trim(),g=d.slice(e).trim();if(f&&g){b.push({...c,key:"总占地面积",fieldName:"总占地面积",fieldId:void 0,value:f}),b.push({...c,key:"单体建筑面积",fieldName:"单体建筑面积",value:g});continue}}}b.push(c)}return b})(a.filter(a=>/项目名称|工程名称|项目编号|招标项目编号|招标人|建设单位|发包人|建设地点|建设规模|招标范围|计划工期|合同工期|周期要求|质量标准|合同估算|投资估算|最高投标限价|招标控制价/u.test(`${a.key||""}${a.fieldName||""}${a.fieldId||""}`))).slice(0,80),p=function(a,b,c,d){let e=a.filter(a=>(0,h.d2)(d,T(a))||(0,h.E1)(d,T(a))),f=a.filter(a=>{let b=T(a);return a.confidence>=.58&&!V(a)&&!(0,h.rF)(d,b)&&!(0,h.d2)(d,b)&&!(0,h.E1)(d,b)}),g=[...b.filter(a=>!V(a)),...f.filter(a=>n.sv.test(T(a)))].filter((a,b,c)=>c.findIndex(b=>b.sourceFile===a.sourceFile&&b.value===a.value&&b.key===a.key)===b).slice(0,360),i=f.filter(a=>"table"===a.processingType||/table|sheet|表格|清单|明细|数据|参数行摘要/u.test(T(a))),j=f.filter(a=>"drawing"===a.processingType||/drawing|dwg|图纸|施工图|设计图|平面图|剖面图|大样图|详图/u.test(T(a)));return{reliableFacts:f.slice(0,500),parameterFacts:g,tableFacts:i.slice(0,240),drawingFacts:j.slice(0,240),billFacts:c.slice(0,240),diagnostics:e.slice(0,120)}}(a,i,j,e);return{project:m,schedule:f(["工期","开工","竣工","节点","周期"]),quality:f(["质量","验收"]),safety:f(["安全","风险"]),resources:f(["劳动力","材料","机械","设备","资源"]),tables:b,drawings:g("drawing"),bills:j,preciseFacts:i,rules:g("rule"),specifications:g("specification"),schemaFacts:function(a,b){let c={};for(let d of b?.factFields||[])c[d.id]=a.filter(a=>a.fieldId===d.id||a.key===d.name||a.fieldName===d.name);return c}(a,d),factIndex:p,billItemFacts:k,specAuthorityMap:l,missing:[...new Set(c)],conflicts:await F(a,d,e)}}},1358:(a,b,c)=>{c.d(b,{CE:()=>P,FA:()=>X,Gs:()=>H,Hp:()=>G,Ih:()=>S,JV:()=>u,O7:()=>m,QP:()=>v,SR:()=>l,a2:()=>t,bX:()=>O,c$:()=>o,e$:()=>n,eS:()=>W,rj:()=>j,sl:()=>C,v7:()=>F,y6:()=>i});var d=c(22157),e=c(11248),f=c(31846),g=c(18274);function h(a){return a.replace(/[\s,,.。::;;||、・·()()《》<>【】"“”'‘’]/gu,"").toLowerCase()}let i=h;function j(a){let b=a.replace(/[||]\s*(?:[||]\s*)+$/gu,"").replace(/(?:[。;;]|\d+\s*[..、])\s*(?:未尽事宜|其余(?:未尽)?事宜|其他(?:未尽)?事宜|注\s*[::]).*$/u,"").trim();return b=b.replace(/[、,,;;]+\s*$/u,"").trim(),/[||]/u.test(b)&&(b=b.split(/[||]/u)[0]?.trim()||b),b}function k(a){return[...a.project,...a.schedule,...a.quality,...a.safety,...a.resources,...a.preciseFacts,...a.bills,...a.drawings,...a.rules,...a.specifications]}function l(a){return!(/^(?:见|详见|按|执行|参见|依据).{0,16}(?:前附表|招标公告|招标文件|合同|协议书|通用条款|专用条款|图纸|清单|附件|资料)$/u.test(a)||/(?:^|[::]\s*)(?:见|详见|按|执行|参见|依据)[^。;;]{0,18}(?:前附表|招标公告|招标文件|合同|协议书|通用条款|专用条款|图纸|清单|附件|资料|补疑|答疑)[^。;;]{0,6}$/u.test(a)||/^见.{0,24}(?:招标范围|招标补疑|补疑|前附表|答疑)/u.test(a)||/^(?:合同协议书|通用条款|专用条款|招标文件|招标公告|投标人须知前附表|附件|资料)$/u.test(a.replace(/[()()\d一二三四五六七八九十、..\s]/gu,""))||/^(?:工程名称|项目名称|建设地点|建设规模|计划工期|质量标准|招标范围|合同估算价|工程概况|项目概况|项目内容)$/u.test(a)||/\|/u.test(a)||/^#+\s*/u.test(a)||/^[一二三四五六七八九十]+[、..]\s*\S{2,}[::]/u.test(a)||/^[((]\s*\d+[))]/u.test(a)&&/具备|证书|考核|资格|人员/u.test(a)||/^\d{1,2}(?:[..]\d{1,2}){1,2}$/u.test(a)||/^\d{1,2}(?:[..]\d{1,2}){1,2}\s*(?:招标|计划|其他|特殊|内容|范围|说明|要求|概况|工期|质量|标段|项目|工程|名称|地点|规模|信息)(?:[::].{0,6})?$/u.test(a)||/^[0-9A-Za-z]{8,}[..]\d+$/u.test(a)||/^[0-9A-Za-z]{8,}\s*[))]$/u.test(a)||/\d{1,2}[..]\d{1,2}[..]?\d{0,2}\s*(?:计划工期|招标|其他|特殊|质量要求|建设规模)/u.test(a)||(a.match(/《/gu)||[]).length!==(a.match(/》/gu)||[]).length||(a.match(/[((]/gu)||[]).length!==(a.match(/[))]/gu)||[]).length||/[::]\s*$/u.test(a)||/[//]\s*$/u.test(a)||/[一二三四五]是\s*\S{2,}/u.test(a)||a.length>=20&&/未编制|未组织|未按|未及时|未落实|未经验收/u.test(a))&&(!(a.length<4)||!!/\d/u.test(a))}function m(a){let b=String(a.value||"").trim(),c=`${a.label}${b}`;if(!/项目|工程|编号|地点|规模|范围|工期|质量|安全|资源|材料|设备|验收|招标人|建设单位|发包人|业主|\d/u.test(c)||!l(b)||/^(?:技术参数|精确参数)$/u.test(a.label)||/^(?:项目名称|工程名称|项目名)$/u.test(a.label)&&!/(?:建设|新建|改建|扩建|改造|整治|提升|治理)/u.test(b)&&!/[\u4e00-\u9fa5]{1,8}(?:镇|乡|县|区|村|街道|社区|片区)/u.test(b)||!b.replace(/《[^》]{2,60}》/gu,"").replace(/[、,,;;..//\s()()]/gu,"")&&/《[^》]{2,60}》/u.test(b))return!1;let d=/\d/u.test(b);return!(!d&&/^(?:承包人|发包人|招标人|投标人|我方|施工单位|建设单位|总承包单位|分包人|中标人)(?:应|须|必须|应当)/u.test(b)||!d&&/^本(?:招标|采购)项目[^。;]{0,80}?(?:须|应|必须)/u.test(b)||/^[((]\s*[一二三四五六七八九十\d]{1,3}\s*[))]/u.test(b))}function n(a,b){let c=new Set,e=[];for(let f of k(b)){let b=j((0,d.lG)(f.value).replace(/\s+/gu," ").trim()),g=f.fieldName||f.key||f.fieldId||"资料事实",i=`${g}:${b}`;!b||c.has(i)||(c.add(i),e.push({label:g,value:b,sourceFile:f.sourceFile,status:!function(a,b){let c=h(a),d=h(b);if(!d||d.length<2||c.includes(d))return!0;{let a=b.split(/[;;。\n]|、|,|,/u).map(a=>h(a.replace(/^\s*\d+\s*[、..]\s*/u,""))).filter(a=>a.length>=4);if(a.length>=2&&a.some(a=>c.includes(a)))return!0}{let a=b.replace(/[、,,;;||\s]+/gu,"、").split("、").map(a=>h(a.replace(/(?:工程|项目|改造|维修|安装|施工|内容|资料|要求|标准)+$/u,""))).filter(a=>a.length>=2);if(a.length>=1&&(a.length>=2||(a[0]?.length??0)>=3)&&a.every(a=>c.includes(a)))return!0}return(b.match(/\d+(?:\.\d+)?\s*(?:日历天|天|个月|月|年|万元|元|平方米|㎡|m²|立方米|m³|米|m|mm|cm|台|套|人|项|%|MPa|kPa|个|栋|层|标段|批|处|座|组|道|根|樘|扇)?/giu)||[]).some(a=>h(a).length>=2&&c.includes(h(a)))}(a,b)?"unplaced":"used",confidence:f.confidence}))}return e}function o(a,b={}){let c=a.filter(a=>"unplaced"===a.status&&m(a)),d=b.maxIssues&&b.maxIssues>0?b.maxIssues:c.length;return c.slice(0,d).map(a=>({level:"warning",message:`已确认知识库事实未落位:${a.label}=${a.value}`,suggestion:`请将该事实落位到对应章节,并保持来源 ${a.sourceFile||"结构化事实主表"} 的原始口径。${c.length>d?`(共${c.length}个未落位事实,此处显示前${d}个)`:""}`}))}let p=/^(?:项目名称|名称|清单项名称|清单项目名称|分部分项(?:工程)?名称|项目特征|工程内容|材料名称|设备名称)/u,q=/^(?:项目编码|编码|编号)/u,r=/^(?:工程量|数量)/u,s=/单位/u;function t(a,b,c=""){let d=h(b),e=h(c),g=h(String(b||"").split(/[\s((、,,;;::]/u)[0]||"");return(g.length>=3||2===g.length&&!f.$B.has(g))&&a.includes(g.slice(0,12))||d.length>=3&&a.includes(d.slice(0,12))||e.length>=3&&a.includes(e.slice(0,8))}function u(a,b){let c=b.tables||[],d=[],e=h(a);for(let a of c){let b=a.headers.map(a=>a.replace(/\s+/gu,"").toLowerCase()),c=b.findIndex(a=>p.test(a)),g=b.findIndex(a=>q.test(a)),h=b.findIndex(a=>r.test(a)),i=b.findIndex(a=>s.test(a));for(let b of a.rows){let j=c>=0&&b[c]||"",k=g>=0&&b[g]||"";if(!j&&!k){let a=b.findIndex(a=>/^\d{10,12}$/u.test(a)||/^[A-Z]{1,3}\d{8,}$/u.test(a));a>=0&&(k=b[a]||"",j=b[a+1]||"")}let l=h>=0&&b[h]||"",m=i>=0&&b[i]||"";if(!j&&!k)continue;let n=t(e,j,k);d.push({itemCode:k.slice(0,50),itemName:j.slice(0,200),quantity:l.slice(0,50),unit:m.slice(0,20),sourceFile:a.sourceFile||"",placed:n,exempt:void 0!==(0,f.IJ)(j,{code:k,quantity:l}),description:b.map(a=>String(a??"")).join(" ").replace(/\s+/gu," ").trim().slice(0,240)})}}return d.sort((a,b)=>a.placed===b.placed?0:a.placed?1:-1)}function v(a){let b=a.filter(a=>!a.exempt),c=b.filter(a=>!a.placed);if(0===c.length)return[];let d=b.length,e=(d-c.length)/d,f=a.filter(a=>a.exempt),g=f.length>0?`(口径行 ${f.length} 行已豁免不计入分母:${f.slice(0,5).map(a=>a.itemName).join("、")}${f.length>5?" 等":""})`:"",h=[];return e<.3?h.push({level:"warning",message:`BOQ 清单行级落位严重不足:${d-c.length}/${d} 行(${Math.round(100*e)}%)${g}`,suggestion:`清单明细数量较大,建议优先补充主要分部分项、关键规格和大额工程量。未落位清单项示例:${c.slice(0,5).map(a=>`${a.itemName} ${a.quantity}${a.unit}`).join(";")}`}):e<.6&&h.push({level:"warning",message:`BOQ 清单行级落位不足:${d-c.length}/${d} 行(${Math.round(100*e)}%)${g}`,suggestion:`建议补充落位:${c.slice(0,5).map(a=>a.itemName).join("、")}`}),h}let w=/公厕|厕所|过路涵|涵洞|涵管|污水|排水沟|水沟|清淤|沟塘|小菜园|菜园|菜地|花池|树池|挡墙|护栏|路灯|检查井|化粪池|泵站|生态池|生态塘|护坡|驳岸|栈道|步道|管网|管道|道路|铺装|绿化|景观|基础|结构|防水|屋面|外墙|内墙|地面|门窗|栏杆|电梯|电气|给水|排水|消防|通风|空调|智能化|幕墙|基坑/u,x=/^(?:管网|管道|道路|铺装|绿化|景观|基础|结构|防水|屋面|外墙|内墙|地面|门窗|栏杆|电梯|电气|给水|排水|消防|通风|空调|智能化|幕墙|基坑)$/u,y={公厕:["公共厕所","厕所"],厕所:["公厕","公共厕所"],菜地:["菜园","小菜园"],菜园:["菜地"],小菜园:["菜地"],步道:["人行道","园路","游步道"]},z=/^(?:挖|回填|运|运输|拆除|清理|浇筑|绑扎|安装|铺设|砌筑|抹灰|刷|喷|摊铺|碾压|夯实|整平|找平|支模|搭设|检测|试验|防腐|除锈)/u,A=/计价|费用|税金|规费|暂列|暂估|合计|汇总|小计|措施项目|其他项目|税金项目/u;function B(a,b,c){if(0===(c.tables||[]).length)return{methodChapters:[],gaps:[]};let d=b.filter(a=>/施工方法|施工方案|施工工艺|主要施工内容|分部分项/u.test(a.title)),e=d.map(a=>a.content||"").join("\n");if(!e)return{methodChapters:d,gaps:[]};let f=h(e),g=u(a,c),i=[],j=new Set;for(let a of g){let b=(a.itemName||"").trim();if(!b||A.test(b)||z.test(b))continue;let c=[...b.matchAll(RegExp(w.source,"gu"))].map(a=>a[0]);if(0===c.length)continue;let d=c.filter(a=>!x.test(a));if(0===d.length)continue;let e=a=>f.includes(h(a))||(y[a]||[]).some(a=>f.includes(h(a)));if(d.some(e))continue;let g=b.slice(0,12);j.has(g)||(j.add(g),i.push({itemName:b,sample:a.quantity?`${a.quantity}${a.unit}`:""}))}return{methodChapters:d,gaps:i}}function C(a,b,c){let{methodChapters:d,gaps:e}=B(a,b,c);if(0===e.length)return[];let f=e.map(a=>`${a.itemName.slice(0,30)}${a.sample?` ${a.sample}`:""}`);return[{level:"error",severity:"blocker",category:"evidence_coverage",owner:"llm",repairability:"llm_repairable",chapterId:d[0]?.id,message:`施工方法章分项覆盖缺失:${f.slice(0,6).join(";")}${f.length>6?` 等共 ${f.length} 个清单分项`:""}`,suggestion:"施工方法章必须逐项覆盖工程量清单中的全部分部分项(含公厕/过路涵/污水管网/排水沟/沟塘清淤/小菜园等专项分项):为每个缺失分项补齐施工方法小节(施工概况/施工流程/施工方法三要素齐全),禁止只写道路、铺装、绿化等大类而遗漏清单独有分项。"}]}let D=/工程名称|标段|第\s*\d+\s*页|共\s*\d+\s*页|序号|综合单价|合价|定额|暂估|测评|E\.1|分部分项工程量清单计价表|措施项目|其他项目|规费|税金/u,E=/^(?:其他|其它|零星|建筑|安装工程|土建|附属|附属工程|市政工程)$/u;function F(a){let b=a?.tables||[];if(0===b.length)return[];let c=function(a){let b=new Set;for(let c of a)for(let a of c.rows||[])if(Array.isArray(a))for(let c of a){let a=String(c||"").trim(),d=/^工程名称[::]\s*(.+)$/u.exec(a);if(d)for(let a of d[1].replace(/[((]([^))]*)[))]/gu,"、$1").split(/[、,,]/u)){let c=a.replace(/[(())]/gu,"").trim();c.length>=2&&c.length<=20&&b.add(c)}}return b}(b),d=a=>c.has(a)||[...c].some(b=>b.length>=2&&a.startsWith(b)&&a.length-b.length<=4),e=new Map;for(let a of b){let b="";for(let c of a.rows||[]){if(!Array.isArray(c))continue;let a=function(a){let b=a.map(a=>String(a??"").trim()),c=b.findIndex(a=>/^\d{10,12}$/u.test(a)||/^[A-Z]{1,3}\d{8,}$/u.test(a));if(c>=0){let a="";for(let d=c+1;d<b.length;d+=1)if(b[d]){a=b[d];break}if(a){let c=b.findIndex(a=>/^\d{1,3}(?:,\d{3})*\.\d{3}$/u.test(a));if(c>=0){let d="";for(let a=c-1;a>=Math.max(0,c-3);a-=1){let c=b[a];if(c){!(c.length<=8)||/^\d/u.test(c)||/[||]/u.test(c)||(d=c);break}}return{kind:"item",summary:`${a}${d?` ${b[c].replace(/(\.\d*?)0+$/u,"$1").replace(/\.$/u,"")}${d}`:""}`}}return{kind:"item",summary:a}}}let d=b.findIndex((a,b)=>/^\d+(?:\.\d+){1,3}$/u.test(a)||b<=2&&(/^\d{4}(?:\d{2})?$/u.test(a)||/^[一二三四五六七八九十]{1,3}$/u.test(a)));if(d>=0&&!b.some(a=>/^\d{1,3}(?:,\d{3})*\.\d{3}$/u.test(a)))for(let a=d+1;a<b.length;a+=1){let c=b[a];if(c){if(!/[\u4e00-\u9fa5]/u.test(c))break;if(c.length>=2&&c.length<=15&&!D.test(c))return{kind:"division",name:c};break}}return{kind:"none"}}(c);if("division"===a.kind){if(d(a.name)||E.test(a.name))continue;e.has(a.name)||e.set(a.name,[]),b=a.name;continue}if("item"===a.kind&&b){let c=e.get(b);c&&c.length<3&&!c.includes(a.summary)&&c.push(a.summary)}}}return[...e.entries()].filter(([a,b])=>b.length>0||w.test(a)).map(([a,b])=>({name:a,items:b})).slice(0,30)}function G(a){return 0===a.length?"":a.map(a=>a.items.length?`- ${a.name}(${a.items.join(";")})`:`- ${a.name}`).join("\n")}function H(a){let{methodChapters:b,gaps:c}=B(a.markdown,a.chapters,a.factsModel);if(0===c.length||0===b.length)return null;let d=b[0],e=c.map(a=>`${a.itemName}分项${a.sample?`(清单工程量 ${a.sample})`:""}按设计图纸与工程量清单特征组织施工:施工前完成测量放线、材料进场检验与技术交底,施工中控制各工序标高、尺寸与搭接质量,完工后按现行验收标准逐项检查。`),f=`本工程工程量清单分项施工方法补充如下。${e.join("")}`,g=a.markdown.split("\n"),i=h(d.title),j=-1;for(let a=0;a<g.length;a+=1){let b=g[a];if(!/^##\s/u.test(b))continue;let c=h(b.replace(/^#+\s*/u,"").replace(/^第[一二三四五六七八九十百]+章/u,""));if(c&&(c.includes(i)||i.includes(c))){j=a;break}}if(j<0)return null;let k=g.length;for(let a=j+1;a<g.length;a+=1)if(/^##\s/u.test(g[a])){k=a;break}let l=k;for(;l>j+1&&!g[l-1].trim();)l-=1;let m=[...g.slice(0,l),"",f,...g.slice(l)];return d.content=`${(d.content||"").trimEnd()}
|
|
13
13
|
|
|
14
|
-
${f}`,{markdown:m.join("\n"),appended:c.map(a=>a.itemName)}}let I=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"),J=/检查|巡查|例会|培训|交底|演练|复核|记录|台账|考核|整改|保养|维护|监测|检测|排查|验收|清扫/u,K=/作业面|班组|工区|标段|片区|地块|单元|分部|队伍|小组|机构|部门|岗位|区域|社区|村庄|村|路段|楼栋|站区|库区|厂区/u,L=/分组|平行|流水|包保|分区|分片|分块|划分|组建|成立|配备|配置|设置|设立|建立|指定|安排|派驻/u,M=/违约金|延期竣工|解除合同|缺陷责任期|质量保证金|质保金|履约保证金|保修期|合理期限|工期顺延|误期赔偿|响应|抢修|回访/u,N=/\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,O=/^\d+(?:\.\d+)?$/u,P=/^(?:m2|㎡|m²|平方米|平方|平米|m3|m³|立方米|立方|hm2|公顷|亩|mm|cm|km|m|米|kg|g|t|吨|个|台|套|项|处|座|株|组|批|次|人|天|月|年|万元|元|l|ml|樘|盏|根|只|块|片|条|道|层|间|栋|幢|户|袋|桶|罐|车|盘|孔|节|段|张|面|棵|丛)$/u,Q={kind:"unsourced",basis:""};function R(a){return a.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&")}function S(a){return a.replace(/(\d+\.\d*?)0+(?![\d])/gu,"$1").replace(/(\d+)\.(?![\d])/gu,"$1")}let T=/^(?:\d{1,2})\.\d{1,2}$/u,U=/(?<![\d.])(\d{1,2})\.(\d{1,2})(?![\d])/gu,V=/(?<![\d.])\.(\d{1,2})(?![\d])/gu;function W(a){let b=a.token.replace(/\s+/gu,""),c=(0,e.K3)(a.token),d=a.context||"";if(!c)return Q;for(let a of d.matchAll(I)){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)&&J.test(d)?{kind:"management",basis:"管理频次"}:/^\d+个$/u.test(c)&&K.test(d)&&L.test(d)?{kind:"management",basis:"施工组织编排"}:/^\d+(?:人|名|组|支|队)$/u.test(c)&&/配备|配置|设置|组建|成立|设立|建立|派驻|指定|安排/u.test(d)&&/专职|兼职|管理|岗位|人员|班组|队伍|小组|安全|质量|技术|施工|材料|资料|机械|劳务|作业/u.test(d)?{kind:"management",basis:"组织配置"}:/(?:天|月|年|d|万元|元|%)$/u.test(c)&&M.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:"商务金额"}:!function(a){let b=a.token.replace(/\s+/gu,"");if(!b)return!1;let c=(0,e.K3)(a.token);if(c&&g.c5.test(c))return!0;if(!c||!g.Rz.test(c))return!1;let d=a.context||"";return!!g.WL.test(d)&&RegExp(`(?:DN|De|HRB|HPB|Φ|φ)\\s*${R(b)}`,"iu").test(d)}({token:a.token,context:d})?!function(a){let b=/^\d+(?:\.\d+)?/u.exec(a.token.replace(/\s+/gu,""))?.[0]??"";if(!T.test(b))return!1;let[c,d]=b.split("."),e=Number(c),f=Number(d),g=a.context||"";for(let a of g.matchAll(U)){if(a[0]===b||a[2].length!==d.length)continue;let c=Number(a[1]),g=Number(a[2]);if(c===e&&1===Math.abs(g-f)||g===f&&1===Math.abs(c-e))return!0}for(let a of g.matchAll(V))if(a[1].length===d.length&&1===Math.abs(Number(a[1])-f))return!0;return!1}({token:a.token,context:d})?Q:{kind:"regulatory",basis:"章节编号"}:{kind:"regulatory",basis:"规格粘连"}}function X(a,b){let c=function(a,b){let c=function(a){let b=[];for(let c of k(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=>O.test(a)).map(a=>S(a)))];if(0===d.length)continue;let e=[...new Set(c.filter(a=>P.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(N)){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=W({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=S(b);return d!==b&&c.push(d),c.some(b=>RegExp(`(?<![\\d.])${R(b)}(?![\\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:"未溯源数值必须改为定性表述或显式标注来源:来自清单/图纸的保留并明确来源(清单条目/图纸编号);规范常数(试块留置/养护龄期/检测频次等)保留时显性标注规范名称与编号;其余改为不带具体数值的过程控制表述。"}]}},7148:(a,b,c)=>{c.d(b,{Q0:()=>g,Sn:()=>f});let d={米:"m",m:"m",延长米:"m",公里:"km",千米:"km",km:"km",平方米:"m2",平方:"m2","㎡":"m2","m\xb2":"m2",m2:"m2",立方米:"m3",方:"m3","m\xb3":"m3",m3:"m3",吨:"t",t:"t",千克:"kg",公斤:"kg",kg:"kg"},e=[["m3","m\xb3","立方米","方"],["m2","m\xb2","㎡","平方米"],["m","米","延长米"],["t","吨"],["kg","千克","公斤"],["km","公里","千米"]];function f(a){let b=String(a||"").trim().toLowerCase();return Object.prototype.hasOwnProperty.call(d,b)?d[b]:b}function g(a,b){let c=String(a||"").trim().toLowerCase(),d=String(b||"").trim().toLowerCase();return!c||!d||c===d||f(c)===f(d)||e.some(a=>a.includes(c)&&a.includes(d))}},10025:(a,b,c)=>{function d(a){let b=String(a||"").trim();return b?/\d{4}\s*年\s*\d{1,2}\s*月\s*\d{1,2}\s*日/u.test(b)?"date":/\d+(?:\.\d+)?\s*(?:万元|亿元|元)/u.test(b)&&!/\d+(?:\.\d+)?\s*(?:万元|元)\s*\//u.test(b)?"money":/(?:GB|JGJ|CJJ|DB|CECS|ISO|IEC|JTG|SL|DL|YB|HG)\s*\/?\s*T?\s*[\d.]+/iu.test(b)?"standard":/(?:C\d{2,3}|HRB\d{3,4}|HPB\d{3}|DN\s*\d+|Φ\s*\d+|φ\s*\d+|\d+(?:\.\d+)?\s*(?:mm|cm|kV|MPa|kPa|kW|W|A|V))/u.test(b)?"spec":/\d+(?:\.\d+)?\s*(?:m2|m3|m²|m³|㎡|m|km|kg|t|吨|个|座|套|台|根|块|株|棵|处|项|日历天|天|层|樘|扇|片|组|件|孔|盏)/u.test(b)?"measure":"text":"text"}c.d(b,{M0:()=>k,Oq:()=>j,Su:()=>s,UD:()=>i,dm:()=>d,f2:()=>l,yJ:()=>e});let e="变更修改为|变更为|变更至|澄清为|澄清修改为|修改为|调整为|调整至|更正为|修正为|现为|现改为|更改为",f=/[。;;\n]/u,g=RegExp("\\d{4}\\s*年\\s*\\d{1,2}\\s*月\\s*\\d{1,2}\\s*日|\\d+(?:\\.\\d+)?\\s*(?:万元|亿元|日历天|个?月|天|m2|m3|m\xb2|m\xb3|㎡|mm|cm|km|m|kg|t|吨|个|座|套|台|根|块|樘|扇|片|组|件|孔|盏|项|处|层|kV|MPa|kPa|kW|W|A|V|%)|(?:GB|JGJ|CJJ|DB|CECS|ISO|IEC)\\s*/?\\s*T?\\s*[\\d.]+(?:-\\d{2,4})?","giu"),h=/(?:第\s*)?(\d{1,2}(?:\.\d{1,2}){1,3})\s*(?:条|项|款)?/u;function i(a){let b=RegExp(`(${e})\\s*[::]?\\s*(${g.source}|[\\u4e00-\\u9fa5]{2,12})`,"u"),c=RegExp(g.source,"gu"),i=RegExp(`([\\u4e00-\\u9fa5]{2,8})\\s*[::]\\s*(${g.source})`,"gu"),j=[],k=new Set,l=a=>{let b=`${a.superseded}\u0000${a.effective}`;a.superseded===a.effective||k.has(b)||(k.add(b),j.push(a))},m=/变更|澄清|补疑|补遗|调整为|修改为|更正/;for(let g of a){let a=String(g.text||"");if(a&&m.test(a))for(let j of a.split(f)){let a=j.replace(/\s+/gu,"");if(a.length<4)continue;let f=function(a){let b=[],c=h.exec(a)?.[1];c&&b.push(c);let d=a.match(/[一-龥]{2,8}(?=[::))]?(?:为|是|按|采用|统一|变更|澄清|调整))/gu);return d&&b.push(...d.slice(0,3)),[...new Set(b)]}(a),k=b.exec(a);if(k){let b=k[2].trim();if(!/\d/u.test(b)||RegExp(e,"u").test(b))continue;let h=d(b);for(let e of[...a.slice(0,k.index).matchAll(c)].map(a=>a[0].trim()))e!==b&&d(e)===h&&l({superseded:e,effective:b,scope:f,evidence:[{source:g.source,snippet:a.slice(0,120)}],kind:"override"});continue}let m=[...a.matchAll(i)];if(m.length>=2){let b=new Map;for(let a of m){let c=b.get(a[1])||[];c.push(a[2].trim()),b.set(a[1],c)}for(let[c,d]of b){let b=[...new Set(d)];b.length<2||l({superseded:b[0],effective:b[b.length-1],scope:[...new Set([...f,c])],evidence:[{source:g.source,snippet:a.slice(0,120)}],kind:"override"})}}}}return j}function j(a){let b=new Map;for(let c of a){let a=`${c.superseded}\u0000${c.scope.join("|")}`,d=b.get(a);if(!d){b.set(a,c);continue}let e=(d.effective===c.superseded,{...c,superseded:d.superseded,evidence:[...d.evidence,...c.evidence],scope:[...new Set([...d.scope,...c.scope])]});b.set(a,e)}return[...b.values()]}function k(a,b){let c=String(a||""),d=[];for(let a of b)"override"===a.kind&&a.superseded&&c.includes(a.superseded)&&(c=c.replace(RegExp(a.superseded.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&"),"gu"),(b,e)=>{if(e>0&&/[\d.,]/u.test(c[e-1]))return b;let f=c.slice(Math.max(0,e-12),e+b.length+12);return/原(?:为|值|内容|计划|合同|招标)|此前|由[^,。;]{0,12}(?:变更|调整)|变更过程/u.test(f)?b:(d.push({from:b,to:a.effective}),a.effective)}));return{text:c,applied:d}}function l(a,b){if(!b||0===b.length)return 0;let c=0;for(let d of a){let a=k(String(d.content??""),b);0!==a.applied.length&&(d.content=a.text,c+=1)}return c}let m=[{attribute:"合同金额",re:/(?:最高投标限价|招标控制价|合同估算价(?:格)?|工程估算价|投标限价)(?<gap>[^。;\n]{0,16}?)(?:现)?(?:调整)?为?\s*[::]?\s*(?<num>[\d,]+(?:\.\d+)?)\s*(?<unit>亿元|万元|元)/u},{attribute:"计划工期",re:/(?:计划工期|合同工期|总工期)(?<gap>[^。;\n]{0,16}?)(?<num>[\d,]+(?:\.\d+)?)\s*个?\s*日历天/u},{attribute:"开工日期",re:/(?:计划)?开工日期(?<gap>[^。;\n]{0,8}?)[::]?\s*(?<num>20\d{2}\s*年\s*\d{1,2}\s*月\s*\d{1,2}\s*日)/u},{attribute:"暂列金额",re:/(?:暂列金额|暂列金)(?<gap>[^。;\n\d]{0,12}?)(?<num>[\d,]+(?:\.\d+)?)\s*(?<unit>亿元|万元|元)/u}],n=RegExp(`(?:${e})\\s*[::]?\\s*(\\d{1,4})\\s*个?\\s*日历天`,"u"),o=/(?:计划工期|合同工期|总工期|工期)/u,p=/(?:暂列|暂估|分部分项|单项工程|单位工程|措施项目|其他项目|规费|税金|人工费|材料费|机械费|管理费|利润|单价|合价)/u,q=/现澄清为|现变更为|澄清为如下|澄清修改为|变更修改为|现调整为|全部作废|以本次[^。;\n]{0,10}为准|以澄清[^。;\n]{0,6}为准/u,r=/^\s*(?:\d{1,2}\s*[、..]|问\s*[::])/u;function s(a){let b=[],c=/作废|以本次(?:招标)?答疑附件(?:中材料)?为准|以澄清(?:文件)?为准/u;for(let d of a){let a=String(d.text||"");if(!a)continue;let f=!1;for(let g of a.split(/\n\s*\n/u))for(let a of(r.test(g)&&/[??]/u.test(g)&&(f=!1),q.test(g)&&(f=!0),g.split(/[。;;\n]/u))){let g;if(a.length<6)continue;let h=c.test(a),i=f||q.test(a),j=o.test(a)?n.exec(a)?.[1]:void 0;j&&b.push({attribute:"计划工期",value:`${j}日历天`,source:d.source,supersedesPriorMaterials:h,clarified:i});let k=a.search(/(?:暂列金额|暂列金)/u),l=k>=0?RegExp(`(?:${e})\\s*[::]?\\s*(\\d+(?:\\.\\d+)?)\\s*(亿元|万元|元)`,"gu"):void 0;if(l){for(let b of a.matchAll(l))if((b.index??0)>k){g=b;break}}for(let c of(g&&b.push({attribute:"暂列金额",value:`${g[1]}${g[2]||""}`,source:d.source,supersedesPriorMaterials:h,clarified:i}),m)){if("计划工期"===c.attribute&&j||"暂列金额"===c.attribute&&g)continue;let e=c.re.exec(a);if(!e?.groups)continue;let f=e.groups.num?.replace(/,/gu,"")||"";if(!f||p.test(e.groups.gap||""))continue;let k="合同金额"===c.attribute||"暂列金额"===c.attribute?`${f}${e.groups.unit||""}`:"计划工期"===c.attribute?`${f}日历天`:f.trim();b.push({attribute:c.attribute,value:k,source:d.source,supersedesPriorMaterials:h,clarified:i})}}}return b}},10751:(a,b,c)=>{c.d(b,{Be:()=>p,Bf:()=>k,IV:()=>g,L$:()=>n,Xe:()=>l,i2:()=>o,yB:()=>m});let d=[{re:/挖掘机/u,alias:"挖机"},{re:/塔式起重机|塔吊/u,alias:"塔吊"},{re:/施工升降机|施工电梯/u,alias:"施工电梯"},{re:/汽车起重机|汽车吊|吊车/u,alias:"汽车吊"},{re:/装载机/u,alias:"铲车"},{re:/混凝土输送泵|地泵|泵车/u,alias:"地泵"},{re:/插入式振捣器|振捣棒/u,alias:"振捣棒"}];function e(a,b,c){return void 0!==a&&void 0!==b?Math.round((a+b)/2):void 0!==b?b:void 0!==a?a:c}let f=[a=>{let b=[];return a.contract.totalDays>0&&b.push({id:"",kind:"fact",domain:"contract",label:"总工期",anchors:["总工期","合同工期","施工工期","工期"],value:a.contract.totalDays,unit:"日历天",source:"招标文件/合同条款",paths:["contract.totalDays"]}),void 0!==a.contract.estimatedAmount&&a.contract.estimatedAmount>0&&b.push({id:"",kind:"fact",domain:"contract",label:"合同估算价",anchors:["合同估算价","估算价","工程造价"],value:a.contract.estimatedAmount,unit:"万元",source:"招标文件",amountRestricted:!0,paths:["contract.estimatedAmount"]}),b},a=>{let b=[];(a.milestones??[]).forEach((a,c)=>{(a.duration??0)<=0||b.push({id:"",kind:"derived",domain:"schedule",label:`里程碑:${a.label}`,anchors:[a.label],value:a.duration??0,unit:"天",source:"里程碑推导",trace:a.basis,paths:[`milestones[${c}].duration`]})});let c=(a.milestones??[]).reduce((a,b)=>a+(b.duration??0),0);return a.contract.totalDays>0&&b.push({id:"",kind:"derived",domain:"schedule",label:"机动工期",anchors:["机动工期","机动时间","工期余量"],value:Math.max(0,a.contract.totalDays-c),unit:"天",source:"工期推导",trace:`总工期 ${a.contract.totalDays} 天 − 里程碑合计 ${c} 天`,paths:[]}),(a.schedule??[]).forEach((a,c)=>{b.push({id:"",kind:"derived",domain:"schedule",label:`工序:${a.label}`,anchors:[a.label],value:a.duration,unit:"天",spec:`第${a.startDay}~${a.endDay}天`,source:"进度工序推导",trace:a.basis,paths:[`schedule[${c}].seq`,`schedule[${c}].duration`,`schedule[${c}].startDay`,`schedule[${c}].endDay`]})}),b},a=>{let b=a.resources.labor,c=[];return b.peakValue>0&&c.push({id:"",kind:"derived",domain:"labor",label:"劳动力峰值",anchors:["劳动力峰值","高峰人数","峰值人数"],value:b.peakValue,unit:"人",source:"劳动力推导",trace:b.peakBasis,paths:["resources.labor.peak.min","resources.labor.peak.max","resources.labor.peakValue"]}),(b.byPhase??[]).forEach((a,b)=>{(void 0!==a.min||void 0!==a.max)&&c.push({id:"",kind:"derived",domain:"labor",label:`阶段劳动力:${a.phase}`,anchors:[a.phase],value:e(a.min,a.max,0),unit:"人",source:"劳动力推导",trace:a.basis,paths:[`resources.labor.byPhase[${b}].min`,`resources.labor.byPhase[${b}].max`]})}),(b.byTrade??[]).forEach((a,b)=>{(void 0!==a.min||void 0!==a.max)&&c.push({id:"",kind:"derived",domain:"labor",label:`工种区间:${a.trade}`,anchors:[a.trade],value:e(a.min,a.max,0),unit:"人",source:"劳动力推导",trace:a.basis,paths:[`resources.labor.byTrade[${b}].min`,`resources.labor.byTrade[${b}].max`]})}),(b.composition??[]).forEach((a,b)=>{c.push({id:"",kind:"derived",domain:"labor",label:`工种构成:${a.trade}`,anchors:[a.trade],value:a.count,unit:"人",source:"劳动力推导",trace:a.basis,paths:[`resources.labor.composition[${b}].count`]})}),c},a=>(a.resources.equipment??[]).map((a,b)=>{let c=d.filter(b=>b.re.test(a.name)).map(a=>a.alias);return{id:"",kind:"derived",domain:"equipment",label:a.name,anchors:[a.name,...c.filter(b=>b!==a.name)],value:a.quantity??e(a.min,a.max,1),unit:"台",spec:a.spec,source:"机械推导",trace:a.basis,paths:[`resources.equipment[${b}].quantity`,`resources.equipment[${b}].min`,`resources.equipment[${b}].max`]}}),a=>(a.materialsPlan??[]).map((a,b)=>({id:"",kind:"fact",domain:"material",label:a.spec?`${a.name}(${a.spec})`:a.name,anchors:[a.name],value:a.quantity??a.spec??a.name,unit:a.unit,spec:a.spec,source:"清单汇总",trace:a.basis,paths:[`materialsPlan[${b}].quantity`]})),a=>Object.entries(a.quantities??{}).map(([a,b])=>({id:"",kind:"fact",domain:"quantity",label:a,anchors:[a],value:b.value,unit:b.unit,source:b.sourceFile||"工程量清单",groups:b.groups?.length?b.groups:void 0,specBreakdown:b.specBreakdown?.length?b.specBreakdown:void 0,paths:[`quantities.${a}.value`,...(b.groups??[]).map((b,c)=>`quantities.${a}.groups[${c}].value`),...(b.specBreakdown??[]).map((b,c)=>`quantities.${a}.specBreakdown[${c}].value`)]})),a=>Object.entries(a.specAuthorities??{}).map(([a,b])=>({id:"",kind:"fact",domain:"spec",label:`规格:${a}`,anchors:[a],value:b,unit:"",source:"清单特征",paths:[]})),a=>{let b=[],c=a.earthworkBalance;if(!c)return b;for(let a of[{key:"excavation",label:"挖方"},{key:"backfill",label:"填方"},{key:"disposal",label:"弃方"}]){let d=c[a.key];void 0===d||d<=0||b.push({id:"",kind:"derived",domain:"earthwork",label:`土方平衡:${a.label}`,anchors:[`土方${a.label}`,a.label],value:d,unit:"m\xb3",source:"土方平衡推导",trace:c.basis,paths:[`earthworkBalance.${a.key}`]})}return b},a=>{let b=[];return(a.tempLand??[]).forEach((a,c)=>{void 0===a.area||a.area<=0||b.push({id:"",kind:"derived",domain:"site",label:`临时设施:${a.purpose}`,anchors:[a.purpose],value:a.area,unit:"㎡",source:"总平面布置推导",trace:a.basis,paths:[`tempLand[${c}].area`]})}),b},a=>{let b=(a.testPlan??[]).map((a,b)=>({id:"",kind:"derived",domain:"test",label:`试验计划:${a.scope}`,anchors:[a.scope],value:a.count??a.scope,unit:void 0!==a.count?"次":"",source:"试验计划推导",trace:a.basis,paths:[`testPlan[${b}].count`]}));return(a.testInstruments??[]).forEach((a,c)=>{void 0!==a.quantity&&b.push({id:"",kind:"derived",domain:"test",label:`试验仪器:${a.name}`,anchors:[a.name],value:a.quantity,unit:"台",spec:a.spec,source:"仪器配置推导",trace:a.basis,paths:[`testInstruments[${c}].quantity`]})}),b},a=>{let b=a.redLineFacts??[],c=b.map(a=>({id:"",kind:"fact",domain:"redline",label:a.key,anchors:[a.key],value:a.value,unit:"",source:a.source,amountRestricted:a.amount,paths:[]})),d=b.find(a=>"自然村数量"===a.key),e=d?/(\d+)/u.exec(d.value):null;return e&&c.push({id:"",kind:"fact",domain:"redline",label:"自然村数量",anchors:["自然村数量","自然村"],value:Number(e[1]),unit:"个",source:d?.source||"招标文件",paths:[]}),c}];function g(a){let b=function(a){let b=new Map;for(let c of a){let a=`${c.domain}:${c.label}`,d=b.get(a)??0;b.set(a,d+1),c.id=0===d?a:`${a}#${d+1}`}return a}(f.flatMap(b=>b(a))),c=new Map;for(let a of b){let b=c.get(a.domain);b?b.push(a):c.set(a.domain,[a])}return{entries:b,byDomain:c}}let h=["contract","schedule","labor","equipment","material","quantity","spec","earthwork","site","test","redline"];function i(a,b){return a.startsWith(b)?a.slice(b.length):a}let j={contract:a=>{let b=[],c=a.find(a=>"总工期"===a.label);return c&&b.push(`- 总工期:${c.value} 日历天`),b},schedule:a=>{let b=[],c=a.filter(a=>a.label.startsWith("里程碑:"));c.length>0&&b.push(`- 里程碑(各节点用时,总和 ≤ 总工期):${c.map(a=>`${i(a.label,"里程碑:")} ${a.value} 天`).join("、")}`);let d=a.filter(a=>a.label.startsWith("工序:"));d.length>0&&b.push(`- 进度工序(里程碑展开,起止天序系统推导,不得自设):${d.map(a=>`${i(a.label,"工序:")} ${a.spec||`${a.value} 天`}`).join("、")}`);let e=a.find(a=>"机动工期"===a.label);return e&&b.push(`- 机动工期:${e.value} 天`),b},labor:a=>{let b=[],c=a.find(a=>"劳动力峰值"===a.label);c&&b.push(`- 劳动力峰值:${c.value} 人(清单工效推导口径唯一峰值,各章必须引用该值,不得自设其他峰值)`);let d=a.filter(a=>a.label.startsWith("阶段劳动力:"));d.length>0&&b.push(`- 分阶段劳动力投入(各阶段同时在场人数,分阶段计划表数据源):${d.map(a=>`${i(a.label,"阶段劳动力:")} ${a.value} 人`).join("、")}`);let e=a.filter(a=>a.label.startsWith("工种区间:"));e.length>0&&b.push(`- 工种区间(区间中值参考,不得作为工种表口径,不得自设):${e.map(a=>`${i(a.label,"工种区间:")} ${a.value} 人`).join("、")}`);let f=a.filter(a=>a.label.startsWith("工种构成:"));return f.length>0&&b.push(`- 工种构成(合计=${c?.value??0} 人,写作层工种表唯一数据源,不得自设构成):${f.map(a=>`${i(a.label,"工种构成:")} ${a.value} 人`).join("、")}`),b},equipment:a=>0===a.length?[]:[`- 主要机械(台数唯一口径,不得自设):${a.map(a=>`${a.label}${a.spec?`(${a.spec})`:""} ${a.value} 台`).join("、")}`],material:a=>{if(0===a.length)return[];let b=[`- 物资计划\xb7主要材料(清单汇总,名称、型号规格、数量必须与此一致;清单明确给出的规格是事实数据,未列材料不得自编型号规格):${a.map(a=>`${a.label} ${a.value}${a.unit}`).join("、")}`],c=new Map;for(let b of a){let a=b.anchors[0]??b.label,d=c.get(a);d?d.push(b):c.set(a,[b])}for(let[a,d]of c){if(d.length<2)continue;let c=d.reduce((a,b)=>a+("number"==typeof b.value?b.value:0),0);b.push(`- ${a}规格-数量拆分(逐项照抄,不得自行分配/改动):${d.map(a=>`${a.spec||"未标规格"} ${a.value}${a.unit}`).join(" + ")}(合计 ${Math.round(1e3*c)/1e3}${d[0]?.unit??""})`)}return b},quantity:a=>{if(0===a.length)return[];let b=[`- 工程量清单(合计口径;分组明细为合法多值):${a.map(a=>`${a.label} ${a.value}${a.unit}`+(a.groups?.length?`(分组:${a.groups.map(a=>`${a.group} ${a.value}`).join("、")})`:"")).join("、")}`];for(let c of a){if((c.specBreakdown?.length??0)<2)continue;let a="number"==typeof c.value?c.value:0;b.push(`- ${c.label}规格-数量拆分(逐项照抄,不得自行分配/改动):${c.specBreakdown.map(a=>`${a.spec} ${a.value}${c.unit}`).join(" + ")}(合计 ${a}${c.unit})`)}return b},spec:a=>0===a.length?[]:[`- 规格权威(清单特征原文,必须原样引用,不得自编):${a.map(a=>`${i(a.label,"规格:")}=${a.value}`).join("、")}`],earthwork:a=>0===a.length?[]:[`- 土方平衡(清单汇总口径):${a.map(a=>`${i(a.label,"土方平衡:")} ${a.value}${a.unit}`).join("、")}`],site:a=>0===a.length?[]:[`- 临时设施与用地(面积/位置规划,不得自设):${a.map(a=>`${i(a.label,"临时设施:")} ${a.value}${a.unit}`).join("、")}`],test:a=>{let b=[],c=a.filter(a=>a.label.startsWith("试验计划:"));c.length>0&&b.push(`- 试验计划(推导口径,不得自设):${c.map(a=>`${i(a.label,"试验计划:")} ${a.value}${a.unit}`).join("、")}`);let d=a.filter(a=>a.label.startsWith("试验仪器:"));return d.length>0&&b.push(`- 试验检测仪器(配置清单,不得自设):${d.map(a=>`${i(a.label,"试验仪器:")}${a.spec?`(${a.spec})`:""} ${a.value} 台`).join("、")}`),b},redline:a=>{let b=new Set,c=a.filter(a=>!b.has(a.label)&&(b.add(a.label),!0)),d=[],e=c.filter(a=>!a.amountRestricted),f=c.filter(a=>a.amountRestricted);return e.length>0&&d.push(`- 评审红线事实(must_cite,正文必须逐条出现且数值一致):${e.map(a=>`${a.label}=${a.value}`).join(";")}`),f.length>0&&d.push(`- 金额类红线事实(商务禁区,不进正文):${f.map(a=>`${a.label}=${a.value}`).join(";")}`),d}};function k(a,b){let c=b&&b.length>0?h.filter(a=>b.includes(a)):h,d=[];for(let b of c)d.push(...j[b](a.byDomain.get(b)??[]));return d}function l(a,b){let c=[];for(let d of h){let e=a.byDomain.get(d)??[];if("quantity"===d||"material"===d){let a=e.filter(a=>(function(a,b){let c=[a.label,...a.anchors].filter(Boolean);return b.some(a=>c.some(b=>b.includes(a)||a.includes(b)))})(a,b.blockTokens)),f="quantity"===d?b.quantityCharsCap??9e3:b.materialCharsCap??7e3;c.push(...function(a,b,c){if(0===b.length)return[];let d=j[a],e=d(b);if(e.join("\n").length<=c)return e;let f=b.length;for(;f>0&&!((f=Math.floor(.9*f))<=0);){let a=d(b.slice(0,f));if(a.join("\n").length<=c)return a[0]+=`(另有 ${b.length-f} 条未列出,其余清单条目见绑定材料)`,a}return["- (本节相关清单条目超出预算未展开;引用清单数值必须逐字取自绑定材料,不得估计)"]}(d,a,f))}else c.push(...j[d](e))}return c}function m(a){if(!a)return;let b=(g(a).byDomain.get("labor")??[]).find(a=>"劳动力峰值"===a.label);return b&&"number"==typeof b.value&&b.value>0?b.value:void 0}function n(a){return a?(g(a).byDomain.get("quantity")??[]).filter(a=>"number"==typeof a.value&&(a.groups?.length??0)>=2).map(a=>({name:a.label,value:a.value,unit:a.unit,groups:a.groups})):[]}function o(a){if(!a)return[];let b="阶段劳动力:";return(g(a).byDomain.get("labor")??[]).filter(a=>a.label.startsWith(b)&&"number"==typeof a.value&&a.value>0).map(a=>({phase:a.label.slice(b.length),value:a.value,trace:a.trace}))}function p(a){if(!a)return[];let b=new Map;for(let c of g(a).byDomain.get("equipment")??[])"number"!=typeof c.value||c.value<=0||b.set(c.label,(b.get(c.label)??0)+c.value);return[...b.entries()].map(([a,b])=>({name:a,count:b}))}},11248:(a,b,c)=>{c.d(b,{K3:()=>f,zn:()=>g});let d=/[A-Za-z0-9%+-.,]/gu;function e(a){let b=a.charCodeAt(0);return b>=65281&&b<=65374?String.fromCharCode(b-65248):a}function f(a){return a.replace(d,e).replace(/\s+/gu,"").replace(/[—–‑﹣]/gu,"-").replace(/[×X**]/gu,"x").replace(/[%]/gu,"%").replace(/‰/gu,"permille").replace(/平方米|平方|平米|m²|㎡/giu,"m2").replace(/公顷|hm²/giu,"hm2").replace(/立方米|立方|m³/giu,"m3").replace(/升/gu,"l").replace(/毫升/gu,"ml").replace(/千米|公里/gu,"km").replace(/毫米/gu,"mm").replace(/厘米/gu,"cm").replace(/米/gu,"m").replace(/千克|公斤/gu,"kg").replace(/克/gu,"g").replace(/吨/gu,"t").replace(/人民币万元|万元人民币/gu,"万元").replace(/人民币元|元人民币|¥/gu,"元").replace(/日历天|自然日/gu,"天").replace(/工作日/gu,"工作天").replace(/个月/gu,"月").replace(/小时/gu,"h").replace(/分钟/gu,"min").replace(/兆帕/gu,"mpa").replace(/千帕/gu,"kpa").replace(/千牛/gu,"kn").replace(/牛/gu,"n").replace(/千瓦/gu,"kw").replace(/兆瓦/gu,"mw").replace(/瓦/gu,"w").replace(/千伏/gu,"kv").replace(/伏/gu,"v").replace(/毫安/gu,"ma").replace(/安培|安/gu,"a").replace(/赫兹/gu,"hz").replace(/摄氏度/gu,"℃").replace(/百分之\s*(\d+(?:\.\d+)?)/gu,"$1%").replace(/千分之\s*(\d+(?:\.\d+)?)/gu,"$1permille").replace(/直径\s*(\d+(?:\.\d+)?)/gu,"φ$1").replace(/[Φφ]\s*(\d+(?:\.\d+)?)(?:mm)?/giu,"φ$1").replace(/DN\s*(\d+)/giu,"dn$1").replace(/D\s*(\d+)(?=\b|[^a-z0-9])/giu,"d$1").replace(/\b(KN|MPA|KPA|KW|MW|KV|HZ|DN)\b/giu,a=>a.toLowerCase()).replace(/[,,、。;;::||()()【】\]《》<>"“”'‘’[]/gu,"").toLowerCase()}function g(a){let b=f(a),c=new Set;for(let a of b.matchAll(/\d+(?:\.\d+)?(?:m2|hm2|亩|m3|l|ml|mm|cm|km|m|kg|g|t|万元|亿元|元|天|工作天|月|年|h|min|%|permille|mpa|kpa|pa|kn|n|kn\/m2|kn\/m|kw|mw|w|kv|v|ma|a|hz|℃|台|套|件|个|根|只|组|项|处|座|栋|层|间|批|次|人|工日|人日)?|dn\d+|φ\d+(?:\.\d+)?|d\d+|c\d{2,}|hrb\d+|q\d{3}[a-z]?|m\d+|\d+(?:\.\d+)?x\d+(?:\.\d+)?(?:x\d+(?:\.\d+)?)?|[+-]?\d+\.\d{3}|\d+[:/]\d+/giu))c.add(a[0]);return[...c]}},11628:(a,b,c)=>{c.d(b,{De:()=>p,H8:()=>h,LD:()=>j,Ui:()=>o,cg:()=>m,mf:()=>l,pN:()=>f,wI:()=>e});var d=c(10025);function e(a){return(a.match(/�|/gu)?.length||0)>=2||Array.from(a).some(a=>{let b=a.charCodeAt(0);return 65533===b||b<32&&9!==b&&10!==b&&13!==b})}function f(a){let b=RegExp(`(?:${d.yJ})\\s*[::]?\\s*`,"u").exec(a);return b?a.slice((b.index??0)+b[0].length).trim():a}let g=/条款号|条款名称|编列内容|评标办法前附表|评标办法正文/u;function h(a){return g.test(a)}let i=/(?<=[一-龥])[—–―─--]|一(?=[一-龥])/gu;function j(a){return a.replace(i,"")}let k=/^\d+\s*个?\s*(?:日历天|天|个月|月|周|年)$/u,l=/^20\d{2}\s*(?:年\s*\d{1,2}\s*月|[.\-/]\d{1,2}(?:[.\-/]|$))/u;function m(a){return k.test(a)?"duration":l.test(a)?"date":"plain"}let n=/[((][^))]{0,12}[))]\s*$/u;function o(a){let b=a.trim(),c="";for(;c!==b;)c=b,b=b.replace(n,"").trim();return b||a.trim()}function p(a){let b=String(a||""),c=b.replace(/^(?:招标人|招标单位|建设单位|发包人|项目名称|工程名称|项目编号|招标项目编号|标段名称|建设地点|建设规模|招标范围|计划工期|合同工期|质量标准|质量目标)[::]\s*/u,"");return c!==b?c:b.replace(/^[一-龥]{2,10}[::]\s*(?=(?:20\d{2}\s*年|\d+\s*(?:日历天|天|个月|月|年)))/u,"")}},12863:(a,b,c)=>{c.d(b,{Dp:()=>e,Dq:()=>q,Ei:()=>f,GG:()=>t,Lp:()=>x,Mb:()=>r,P3:()=>n,Pt:()=>v,QW:()=>j,Rm:()=>i,YZ:()=>w,a0:()=>p,dc:()=>k,hI:()=>u,mO:()=>m,nv:()=>y,re:()=>l,rx:()=>h,vC:()=>g,z4:()=>s});var d=c(22157);let e=/(?:高峰期|高峰|峰值)[^。;;\n]{0,20}?(?:约)?\s*([\d,]+)\s*人/g,f=["基坑与基础","二次结构与砌体","施工准备","地下结构","主体结构","装饰装修","机电安装","室外工程","收尾调试","临时设施","土方","基坑","基础"],g=/(?:铺装工|钢筋工|混凝土工|架子工|砌筑工|抹灰工|防水工|油漆工|水暖工|水电工|管道工|电焊工|起重工|机械工|司索工|信号工|塔吊司机|测量工|试验工|绿化工|管网工|装修工|装饰工|安装工|养护工|保温工|幕墙工|防腐工|操作工|市政工|模板工|木工|瓦工|焊工|电工|普工)(?!程|序|艺|期)/u;function h(a,b){let c,d=a.slice(0,b),e=Math.max(d.lastIndexOf("。"),d.lastIndexOf(";"),d.lastIndexOf(";"),d.lastIndexOf("\n")),h=a.slice(Math.max(0,e+1),b),i=Math.max(h.lastIndexOf(","),h.lastIndexOf("、"));i>=0&&(/(?:高峰期|高峰|峰值)/u.test(h.slice(0,i))||!g.test(h.slice(0,i)))&&(h=h.slice(i+1));let j=-1;for(let a of f){let b=h.lastIndexOf(a);b>j&&(j=b,c=a)}let k=[...h.matchAll(/[^,,。;;::\n]{1,14}阶段/gu)].filter(a=>{let b=a[0].slice(0,-2);return!/^(?:各|每个|不同|相应)/u.test(b)&&!/^[一二三四五六七八九十\d]{1,3}个/u.test(b)&&!f.some(a=>a.startsWith(b))}).pop();return k&&(k.index??0)>j&&(c=k[0]),c}function i(a){let b=[],c=a.split(/\r?\n/u),d=/^\|.+\|$/u,e=/阶段|时期|工期|工序|进度/u,f=/人数|劳动力|作业人员|施工人员|投入人数/u,h=/^:?-{3,}:?$/u,i=a=>a.replace(/[*_`~]/gu,"").trim();for(let a=0;a<c.length;a+=1){let j,k,l;if(!d.test(c[a].trim()))continue;let m=[];for(;a<c.length&&d.test(c[a].trim());)m.push(c[a].trim()),a+=1;if(a-=1,m.length<3)continue;let n=a=>a.split("|").map(a=>a.trim()).slice(1,-1),o=m.findIndex((a,b)=>b>0&&n(a).every(a=>h.test(a)));if(1===o&&m.length>=3)j=n(m[0]).map(i),k=m.slice(2);else{if(-1!==o||!(m.length>=2))continue;let a=n(m[0]).map(i);if(!(e.test(a.join("|"))&&f.test(a.join("|"))))continue;j=a,k=m.slice(1)}let p=j.findIndex(a=>e.test(a)),q=j.findIndex(a=>/高峰|峰值/u.test(a)&&f.test(a)),r=q>=0?q:j.findIndex(a=>f.test(a));if(r<0||p>=0&&p===r||/岗位/u.test(j.join("|"))&&/职责|持证|职称/u.test(j.join("|")))continue;let s=j.some(a=>/工种|岗位|班组|人员类别|管理人员/u.test(a)),t=s?j.findIndex(a=>/工种|岗位|班组|人员类别|管理人员/u.test(a)):-1,u=[],v=0,w=[];for(let a of k){let b=n(a),c=b[r]||"",d=/^([\d,]+)\s*人?$/u.exec(c);if(!d)continue;let e=Number(d[1].replace(/[,,]/gu,""));if(Number.isFinite(e)&&!(e<=0)){if(b.some((a,b)=>b!==r&&/合计|总计|小计/u.test(a))){l=e;continue}if(u.push(e),v+=e,t>=0){let a=(b[t]||"").replace(/[*_`~]/gu,"").trim(),c=g.exec(a)?.[0];c&&w.push({trade:c,value:e})}}}if(0===u.length&&void 0===l)continue;let x=Math.max(...u.length>0?u:[l||0]);b.push({countCells:u,totalCell:l,detailSum:v,peak:x,hasPeakCol:q>=0,hasTradeCol:s,hasStageCol:p>=0,tradeCells:w})}return b}function j(a){let b=i(a).filter(a=>!a.hasTradeCol).map(a=>a.peak);return b.length>0?Math.max(...b):void 0}function k(a){let b,c=j(a);if(void 0!==c)return c;for(let c of a.matchAll(e)){let d=Number(c[1].replace(/[,,]/gu,""));Number.isFinite(d)&&!(d<=0)&&!h(a,c.index+c[0].indexOf(c[1]))&&(void 0===b||d>b)&&(b=d)}return b}let l=/钻孔灌注桩|高压旋喷桩|旋喷桩|搅拌桩|灌注桩|排桩|地下连续墙|咬合桩|支护桩/u,m=/土钉|放坡|喷锚|挂网|锚杆|护坡/u;function n(a){let b=a?.canonical?.byKey.foundation_support_form?.value,c=(0,d.lG)(b);if(!c)return;let e=m.test(c),f=l.test(c);return e&&!f?"slope":f&&!e?"pile":void 0}let o={零:0,一:1,二:2,两:2,三:3,四:4,五:5,六:6,七:7,八:8,九:9};function p(a){return/^\d+$/.test(a)?Number(a):"十"===a?10:a.startsWith("十")&&2===a.length?10+(o[a[1]??""]??0):a.endsWith("十")&&2===a.length?(o[a[0]??""]??0)*10:1===a.length&&void 0!==o[a]?o[a]:void 0}function q(a){let b=/养护[^。;;|]{0,10}?([一二两三四五六七八九十]+|\d{1,2})\s*年/gu,c=[a?.bills??[],a?.billItemFacts??[],a?.preciseFacts??[],a?.project??[]],e=(a,c)=>{for(let d of a.matchAll(b)){let a=p(d[1]??"");void 0!==a&&a>0&&a<=20&&c.set(a,(c.get(a)||0)+1)}},f=a=>{let b,c=0;for(let[d,e]of a)(e>c||e===c&&void 0!==b&&d>b)&&(b=d,c=e);return b};for(let a of c){let b=new Map;for(let c of a){let a=`${c.key||""}${c.fieldName||""}${c.fieldId||""}`;e((0,d.lG)(c.value),b),e(a,b)}if(b.size>0)return f(b)}}function r(a){let b=a=>/路灯/u.test(`${a.key||""}${a.fieldName||""}${a.fieldId||""}`),c=(a?.billItemFacts??[]).filter(b),e=c.length>0?c:[...a?.bills??[],...a?.preciseFacts??[]].filter(b),f=new Set,g=0;for(let a of e){if(f.has(a))continue;f.add(a);let b=(0,d.lG)(a.value);for(let a of(b.split("|工程量:")[1]??b).matchAll(/(\d+)\s*(?:套|盏|杆)/gu)){let b=Number(a[1]);Number.isFinite(b)&&b>0&&(g+=b)}}return g>0?g:void 0}function s(a){let b=a.canonical?.byKey.excavation_depth?.value,c=[...(a.drawings||[]).map(a=>`${a.fieldName||a.key||""} ${(0,d.lG)(a.value)}`),...(a.project||[]).map(a=>`${a.fieldName||a.key||""} ${(0,d.lG)(a.value)}`),...(a.preciseFacts||[]).map(a=>`${a.fieldName||a.key||""} ${(0,d.lG)(a.value)}`)].filter(Boolean),e=a=>[...a.matchAll(/-?(\d+(?:\.\d+)?)\s*(?:m|米)/gu)].filter(b=>{let c=Math.max(0,(b.index??0)-6),d=Math.min(a.length,(b.index??0)+b[0].length+6);return!/(?:超过|大于|小于|不[大低小]于|不低于|及以上|及以下|以上|以下)/u.test(a.slice(c,d))}).map(a=>Math.abs(Number(a[1]))),f=[...b?e(b):[],...c.flatMap(a=>/基坑开挖深度|基坑深度|开挖深度|坡底线|坑底标高/u.test(a)?e(a):[])].filter(a=>Number.isFinite(a)&&a>=1&&a<50);return f.length>0?Math.max(...f):void 0}function t(a){let b=a=>{let b=a.match(/(\d{1,4})\s*个?\s*日历天/u);if(!b)return;let c=Number(b[1]);return Number.isFinite(c)&&c>0?c:void 0};for(let c of a?.schedule??[]){let a=`${c.key||""}${c.fieldName||""}${c.fieldId||""}`;if(!/工期|周期/u.test(a))continue;let e=b((0,d.lG)(c.value));if(void 0!==e)return e}for(let c of Object.values(a?.canonical?.schedule??{})){let a=Array.isArray(c)?c[0]:c;if(!a||!/工期|周期/u.test(a.label))continue;let d=b(a.value);if(void 0!==d)return d}}function u(a){let b=a=>{let b=a.match(/(\d+(?:\.\d+)?)\s*%/u);if(!b)return;let c=Number(b[1]);return Number.isFinite(c)&&c>0&&c<=100?c:void 0};for(let c of[...a?.project??[],...a?.bills??[],...a?.preciseFacts??[]]){let a=`${c.key||""}${c.fieldName||""}${c.fieldId||""}`;if(!/装配率|assembly/u.test(a))continue;let e=b((0,d.lG)(c.value));if(void 0!==e)return e}}function v(a){let b,c=[],e=a?.project??[];for(let a of e){let c=`${a.key||""}${a.fieldName||""}`;if(!/单体建筑面积|建设规模/u.test(c))continue;let e=(0,d.lG)(a.value).match(/(\d+(?:\.\d+)?)\s*(?:平方(?:米)?|㎡|m²)/u);if(e&&Number.isFinite(Number(e[1]))){b=Number(e[1]);break}}void 0!==b&&c.push(`建筑面积${b}平方米`);let f=JSON.stringify({project:e,drawings:a?.drawings??[],tables:a?.tables??[]}),g=f.match(/地上\s*(\d+)\s*层/u)?.[1],h=f.match(/地下\s*(\d+)\s*层/u)?.[1];return void 0!==g&&c.push(`地上${g}层`),void 0!==h&&c.push(`地下${h}层`),c.length>0?c.join("、"):void 0}function w(a){let b=a.trim().toLowerCase();return/(?:m2|m²|㎡)/.test(b)?"(?:㎡|m\xb2|m2)":/(?:m3|m³)/.test(b)?"(?:m\xb3|m3)":"t"===b||"吨"===b?"(?:吨|t)":a.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&")}function x(a){return a.split("").map(a=>"("===a||"("===a?"[((]?":")"===a||")"===a?"[))]?":/[.*+?^${}()|[\]\\]/u.test(a)?`\\${a}`:a).join("")}function y(a){let b=a=>/[.*+?^${}()|[\]\\]/u.test(a)?`\\${a}`:a,c="",d=0;for(;d<a.length;){let e=a[d];if("("===e||"("===e){let e=-1;for(let b=d+1;b<a.length;b+=1)if(")"===a[b]||")"===a[b]){e=b;break}if(e>d){let f=a.slice(d+1,e).split("").map(b).join("");c+=`(?:[((]?${f}[))]?|(?![((]))`,d=e+1;continue}}if("("===e||"("===e){c+="[((]?",d+=1;continue}if(")"===e||")"===e){c+="[))]?",d+=1;continue}c+=b(e),d+=1}return c}},13145:(a,b,c)=>{c.d(b,{C_:()=>I,Fc:()=>p,Ht:()=>H,Mp:()=>k,VS:()=>i,_k:()=>r,av:()=>u,j7:()=>n,jG:()=>j,vh:()=>h,w_:()=>G,yk:()=>m});var d=c(40299),e=c(70208),f=c(22157),g=c(46482);function h(a){return/^\s*\|?\s*:?-{3,}:?\s*(?:\|\s*:?-{3,}:?\s*)+\|?\s*$/u.test(a.trim())}function i(a){let b=a.trim();if(!b||/^#{1,6}\s+/u.test(b)||h(b))return!1;let c=(b.match(/\|/gu)||[]).length;return c>=2||c>=1&&/^\s*\|/u.test(b)||c>=1&&/\|\s*$/u.test(b)}function j(a){return a.replace(/[\u3000\u00a0\u2000-\u200f\u202f\u205f\ufeff]/gu,"")}function k(a){return a.trim().replace(/^\|/u,"").replace(/\|$/u,"").trim().split("|").map(a=>j(a).trim())}function l(a,b){let c=a.slice(0,b);for(;c.length<b;)c.push("");return`| ${c.join(" | ")} |`}function m(a){let b=(a=(0,d.BJ)(a)).replace(/\r?\n/gu,"\n").split("\n"),c=[];for(let a=0;a<b.length;){let d=b[a]||"",e=b[a+1]?.trim()===""?a+2:a+1,f=b[e]||"";if(i(d)&&h(f)){let g=k(d).length;for(c.push(d),e!==a+1&&c.push(b[a+1]||""),c.push(f),a=e+1;a<b.length&&i(b[a]||"");){let d=k(b[a]||"");if(d.length>g){let a=d.slice(g-1).join(";");c.push(l([...d.slice(0,g-1),a],g))}else c.push(b[a]||"");a+=1}continue}if(!i(d)){c.push(d),a+=1;continue}let g=[],j=a;for(;j<b.length&&i(b[j]||"");)g.push(b[j]||""),j+=1;let m=g.map(a=>k(a)),n=m.map(a=>a.length),o=n[0]||0,p=/^(?:项目名称|工程名称|项目编号|招标人|建设单位|建设地点|建设规模|计划工期|质量标准|合同估算价|招标范围)$/u;if(g.length<2||o<2||n.some(a=>a!==o)||m.some(a=>p.test(a[0]||""))){c.push(...g),a=j;continue}let q=m[0]||[],r=m.slice(1);if(!(q.length>=2&&q.every(a=>a.length>0&&a.length<=12&&!/\d/u.test(a)&&!/[。,;:]/u.test(a))&&r.some(a=>a.some(a=>/\d/u.test(a)||a.length>12)))){c.push(...g),a=j;continue}for(let a of(c.length>0&&c[c.length-1]?.trim()&&c.push(""),c.push(l(q,o)),c.push(l(Array.from({length:o},()=>"---"),o)),r))c.push(l(a,o));(a=j)<b.length&&b[a]?.trim()&&c.push("")}return c.join("\n").replace(/\n{3,}/gu,"\n\n")}function n(a){let b=a.replace(/\r?\n/gu,"\n").split("\n"),c=[],d=a=>a.trim().replace(/^\|/u,"").replace(/\|$/u,"").split("|").map(a=>a.trim()),e=a=>/^\s*\|.*\|\s*$/u.test(a),f=a=>/^\s*\|\s*:?-{3,}:?\s*(?:\|\s*:?-{3,}:?\s*)+\|?\s*$/u.test(a),g=a=>`| ${a.join(" | ")} |`;for(let a=0;a<b.length;){let h=b[a]||"",i=b[a+1]||"";if(!e(h)||!f(i)){c.push(h),a+=1;continue}let j=d(h),k=j.map((a,b)=>/^(?:资料来源|资料来源\/(?:说明|证明)|来源|证明)$/u.test(a)?b:-1).filter(a=>a>=0);if(0===k.length){c.push(h),a+=1;continue}let l=a=>a.filter((a,b)=>!k.includes(b));for(c.push(g(l(j))),c.push(g(l(d(i)).map(a=>a||"---"))),a+=2;a<b.length&&e(b[a]||"");)c.push(g(l(d(b[a]||"")))),a+=1}return c.join("\n").replace(/资料来源\/(?:说明|证明)/gu,"")}let o=["资料未明确","系统暂未","项目资料暂未","暂未明确","待确认","待资料复核","待系统","未检索到","资料不足","无法确认","建议补充","可核验信息","知识库","COL"];function p(a){if(!/做法(?:执行|参照|详见|见|依据|按)/u.test(a))return{markdown:a,fixedCount:0};let b=0;return{markdown:a.split("\n").map(a=>/^\s*#{1,6}\s/u.test(a)||/^\s*\|/u.test(a)?a:a.replace(RegExp("(?:[,,]\\s*)?(?:构造做法|节点做法|做法)(?:执行|参照|详见|见|依据|按)[^。;!!??\\n]{0,30}(?:图集|国标\\s?[0-9]{1,4}[^。;!!??\\n]{0,16})(?=[。;!!??]|$)","gu"),()=>(b+=1,""))).join("\n"),fixedCount:b}}let q=/评标|投标|行贿|打招呼|递条子|廉洁|串标|围标|弄虚作假|干扰评标|纪律|澄清|中标|报价|清单计量|评审|保证金|开标|递交/u;async function r(a,b){if(!q.test(a))return a;let c=a.split("\n"),d=[];for(let a=0;a<c.length;a+=1){let b=c[a].trim();if(!(!b||/^\s*\|/u.test(b))){if(/^#{1,6}\s/u.test(b)){let c=b.replace(/^#{1,6}\s+/u,"");q.test(c)&&d.push({lineIndex:a,text:c,wholeLine:!0});continue}for(let b of c[a].split(/(?<=[。;;])/u)){let c=b.trim();c&&q.test(c)&&d.push({lineIndex:a,text:c,wholeLine:!1})}}}if(0===d.length)return a;let e=await b(d.map(a=>a.text)),g=new Set,h=new Map;for(let a=0;a<d.length;a+=1){let b=d[a];if(!((0,f.hh)(b.text)||e[a]))continue;if(b.wholeLine){g.add(b.lineIndex);continue}let c=h.get(b.lineIndex)||new Set;c.add(b.text),h.set(b.lineIndex,c)}return 0===g.size&&0===h.size?a:c.map((a,b)=>{if(g.has(b))return"";let c=h.get(b);return c?a.split(/(?<=[。;;])/u).filter(a=>!c.has(a.trim())).join(""):a}).join("\n")}function s(a,b){let c={"(":")","(":")","【":"】","「":"」"},d=[],e=[],f="";for(let g of a){if(f+=g,b.includes(g)&&0===e.length){d.push(f),f="";continue}let a=c[g];a?e.push(a):e.length>0&&g===e[e.length-1]&&e.pop()}return f&&d.push(f),d}function t(a){if(a.length<=380||/^\s*(#{1,6}\s+|[-*+]\s+|\|)/u.test(a))return a;let b=s(a,"。;").flatMap(a=>{let b=a.trim();return b?b.length>360?s(b,",,").map(a=>a.trim()).filter(Boolean):[b]:[]}),c=[],d="";for(let a of b)d&&d.length+a.length>360?(c.push(d),d=a):d+=a;return d&&c.push(d),c.join("\n\n")}function u(a){let b,c=a=>a.split("\n").filter(a=>a.length>380).length,d=c(a);if(0===d)return{markdown:a,splitCount:0};let e=a.split("\n"),f=e.findIndex(a=>/^#{1,2}\s*目录\s*$/u.test(a.trim()));if(f<0)b=e.map(t).join("\n");else{let a=e.length;for(let b=f+1;b<e.length;b+=1)if(/^#{1,2}\s+\S/u.test((e[b]??"").trim())){a=b;break}b=[...e.slice(0,f).map(t),...e.slice(f,a),...e.slice(a).map(t)].join("\n")}return{markdown:b,splitCount:d-c(b)}}function v(a){let b=a.split(/\r?\n/u),c=[];for(let a=0;a<b.length;a+=1){let d=b[a],e=d.trim(),g=/^(#{3,5})\s+/u.exec(e);if(!g){c.push(d);continue}let h=g[1].length,i=a+1,j=!1,k=0;for(;i<b.length;){let a=b[i].trim(),c=/^(#{1,6})\s+/u.exec(a);if(c){k=c[1].length;break}if(a){j=!0;break}i+=1}let l=f.V.test(e)&&4===h&&4===k;(j||k>h||l)&&c.push(d)}return c.join("\n")}function w(a){let b=a;for(let a=0;a<3;a+=1){let a=b.replace(/((施工概况|施工流程|施工方法)[::])\s*\*\*\2(?:[::])?\*\*[::]?/gu,"$1").replace(/(?<![\w|])\*\*(施工概况|施工流程|施工方法)(?:[::])\*\*[::]?/gu,"$1:").replace(/(?<![\w|])\*\*(施工概况|施工流程|施工方法)\*\*[::]/gu,"$1:");if(a===b)break;b=a}return b}function x(a){let b=a.split(/\r?\n/u),c=[];for(let a=0;a<b.length;a+=1){let d=b[a],e=d.trim(),f=(b[a+1]||"").trim();if(!e||e.startsWith("|")||e.startsWith("#")||!f.startsWith("|")){c.push(d);continue}let g=/(\|\s*[^|\n]{1,40}\s*){2,}\|\s*$/u.exec(e);if(!g){c.push(d);continue}let h=e.length-g[0].length,i=e.slice(0,h).trim();i&&c.push(i),c.push(g[0].trim())}return c.join("\n").replace(/\n{3,}/gu,"\n\n")}function y(a){return a.split(/\r?\n/u).map(a=>{let b=a.trim();return!b||/^#{1,6}\s+/u.test(b)||/^\d+(?:\.\d+)*\s+/u.test(b)||/^第[一二三四五六七八九十百千\d]+[章节]\s+/u.test(b)?a:a.replace(/([\u4e00-\u9fa5])[ \t\u00a0\u3000]+(?=[\u4e00-\u9fa5])/gu,"$1")}).join("\n")}function z(a){let b=a;return(b=(b=b.replace(/([\u4e00-\u9fa5A-Za-z]{2,16})工程工作包/gu,"$1工程")).replace(/(按|以|按每个|每个|的)工作包/gu,"$1专业工程")).replace(/工作包/gu,"专业工程")}function A(a){let b=a.split(/\r?\n/u),c=b.map(a=>{let b=/^#{3,4}\s+(.+)$/u.exec(a.trim());return b&&(0,e.mq)((0,e.GQ)((b[1]||"").trim()))?"":a});return c.every((a,c)=>a===b[c])?a:c.join("\n").replace(/\n{3,}/gu,"\n\n")}function B(a){let b=a.trim();return!!(/^(?:上表|本表)/u.test(b)&&/(?:不一致|修正为|应改为|更正为)/u.test(b)||/(?:全文|正文|文中)(?:不再出现|不得出现|不得再出现|不应出现|不会再出现)/u.test(b)||/不得出现跨章冲突|跨章冲突不得出现|不得与其他章节(?:矛盾|冲突)/u.test(b))}function C(a){return!!(/不得出现其他[^。;\n]{0,12}口径/u.test(a)||/[^。;\n]{0,10}口径必须(?:唯一|一致|统一)/u.test(a))}function D(a){let b=a.split(/\n\s*\n/u),c=[],d=!1;for(let a of b){if(a.split("\n").some(a=>/^#{1,6}\s/u.test(a.trim()))){let b=[];for(let c of a.split("\n")){let a=c.trim();if(!a||/^#{1,6}\s/u.test(a)){b.push(c);continue}if(B(a)){d=!0;continue}let e=c.split(/(?<=[。!?!?;;])/u),f=e.filter(a=>!C(a.trim()));f.length!==e.length&&(d=!0),b.push(f.join(""))}c.push(b.join("\n"));continue}if(B(a.replace(/\n/gu,""))){d=!0;continue}let b=a.split(/(?<=[。!?!?;;])/u),e=b.filter(a=>!C(a.replace(/\n/gu,"").trim()));e.length!==b.length&&(d=!0),c.push(e.join(""))}return d?c.filter(Boolean).join("\n\n"):a}function E(a){let b=a.split("\n"),c=new Map,d=new Map,e="",f=!1,g=b.map(a=>{let b=a.trim();if(/^#{1,6}\s/u.test(b)){let c=d.get(b)||0;return d.set(b,c+1),e=0===c?b:`${b}#${c}`,a}if(!b||/^\s*\|/u.test(b))return a;let g=a.split(/(?<=[。;;])/u).filter(a=>{let b=a.replace(/\s+/gu,"");if(b.length<30)return!0;let d=c.get(b);return void 0===d?(c.set(b,e),!0):d===e||(f=!0,!1)});return g.length!==a.split(/(?<=[。;;])/u).length&&(f=!0),g.join("")});return f?g.join("\n"):a}function F(a){let b=a.split(/\n{2,}/u),c=!1,d=b.map(a=>{let b=a.trim();if(!b||/^#{1,6}\s/u.test(b)||/^\s*\|/u.test(b))return a;let d=a.split(/(?<=[。;;])/u),e=new Set;return d.filter(a=>{let b=a.replace(/\s+/gu,"");return b.length<20||(e.has(b)?(c=!0,!1):(e.add(b),!0))}).join("")});return c?d.join("\n\n"):a}function G(a,b){var c,e;let g=z(a);return c=g=(g=g.replace(/^\s*本表依据项目图谱[^\n。]*[。.]\s*$/gmu,"").replace(/^\s*本表依据(?:招标文件|工程量清单|施工区段|质量目标|计划工期|项目图谱|危险源辨识|材料设备清单|现场条件|图纸资料|图纸设计说明)[^\n。]*[。.]\s*$/gmu,"").replace(/^\s*表中事项应纳入[^\n。]*[。.]\s*$/gmu,"").replace(/^\s*正式输出的表格\/清单必须形成[^\n。]*[。.]\s*$/gmu,"").replace(/\n{3,}/gu,"\n\n").trim()).replace(/【修复任务包】[\s\S]*?(?=\n#{1,3}\s|\n\*\*|\n\|\s|$)/gu,"").replace(/^修复类型:.*$/gmu,"").replace(/^修复对象:.*$/gmu,"").replace(/^问题:【修复任务包】[\s\S]*?(?=\n#{1,3}\s|\n\*\*|\n\|\s|$)/gu,"").replace(/^输出要求:.*$/gmu,"").replace(/重新生成/gu,"补充完善").replace(/见招标公告|见投标人须知前附表/gu,"按已确认的招标边界和施工条件执行").replace(/见招标文件/gu,"按本项目招标文件已明确的相应条款执行").replace(/招标范围:/gu,"施工范围:").replace(/主要承包人案|承包人案/gu,a=>a.replace(/承包人案/gu,"施工方案")).replace(/施工方(?!案|法|式|针|向|面)/gu,"承包人").replace(/按图纸/gu,"依据经确认的设计文件和图纸内容组织实施").replace(/按设计要求/gu,"依据设计文件明确的构造、材料、尺寸和验收要求执行").replace(/按(?:资料|文件|说明)/gu,"按设计文件及批准的施工方案要求").replace(/满足(?:相关|有关)?要求/gu,"满足本项目已明确的质量、安全、技术和验收控制要求").replace(/本节(?:将|主要|重点)?/gu,"").replace(/本章将/gu,"").replace(/根据需要|视情况|结合实际情况/gu,"根据现场实际情况和审批后的施工安排确定").replace(/相关要求/gu,"本项目已明确的质量、安全、技术和验收要求").replace(/要求要求/gu,"要求").replace(/确定确定/gu,"确定"),e=g=o.some(a=>c.includes(a))?c.split("\n").map(a=>/^\s*#{1,6}\s/u.test(a)||/^\s*\|/u.test(a)||!o.some(b=>a.includes(b))?a:a.split(/(?<=[。;;])/u).filter(a=>!o.some(b=>a.includes(b))).join("")).join("\n"):c,g=(g=!f.Kd.some(a=>e.includes(a))&&!/纪律|廉洁/u.test(e)?e:e.split("\n").map(a=>{let b=a.trim(),c=/^#{1,6}\s/u.test(b);return/^\s*\|/u.test(b)?a:c?(0,f.hh)(b.replace(/^#{1,6}\s+/u,""))?"":a:a.split(/(?<=[。;;])/u).filter(a=>!(0,f.hh)(a)).join("")}).join("\n")).split("\n").map(t).join("\n"),g=(0,d.wi)(g),g=x(g=(0,d.Re)(g)),g=(0,d.z1)(g),g=(0,d.Bl)(g),g=function(a){let b=new Map,c=!1,d=a.split("\n").map(a=>{let d=a.trim();return/^#{1,6}\s/u.test(d)||/^\s*\|/u.test(d)?a:a.split(/(?<=[。;;])/u).filter(a=>{let d=a.replace(/\s+/gu,"");if(d.length<12)return!0;let e=b.get(d)||0;return b.set(d,e+1),!(e+1>2)||(c=!0,!1)}).join("")});return c?d.join("\n"):a}(g=F(g=E(g=w(g=y(g=v(g=(0,f.wq)(g))))))),g=(0,d.cf)(g),D(g=A(g=(g=function(a){let b=a.split("\n"),c=new Set,d=new Set,e=[],f=[],g=()=>{let a=e.join("").replace(/\s+/gu,"");a.length>=24&&(c.has(a)?f.forEach(a=>d.add(a)):c.add(a)),e=[],f=[]};return(b.forEach((a,b)=>{let c=a.trim();if(!c||/^#{1,6}\s/u.test(c)||/^\s*\|/u.test(c))return void g();if(/^[-*•]\s/u.test(c)){g(),e=[c],f=[b],g();return}e.push(c),f.push(b)}),g(),0===d.size)?a:b.filter((a,b)=>!d.has(b)).join("\n")}(g=(0,d.p8)(g))).replace(/\n{3,}/gu,"\n\n"))).trim()}function H(a){return D(A(v((0,f.wq)((0,f.jM)((0,d.cf)((0,d.p8)(w(y(x(z(F(E(a)))))))))))))}function I(a,b){let c=a.chapterPrompts.filter(a=>"writer"===a.category||"chapter"===a.category||"formatting"===a.category),d=[...a.writerPrompts,...c,...a.formattingPrompts],e=a.writerPrompts[0],f=d.map(a=>`${"writer"===a.category?"写作控制提示词":a.category}|${a.roleId}|${a.name}|${a.content.length} 字符`),h=(0,g.fC)(a.writerPrompts),i=(0,g.fC)([...c,...a.formattingPrompts]);return{primaryPromptId:e?.id,primaryWriter:e,prompts:d,promptTexts:[h?`【最高优先级:配置写作主控提示词】
|
|
14
|
+
${f}`,{markdown:m.join("\n"),appended:c.map(a=>a.itemName)}}let I=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"),J=/检查|巡查|例会|培训|交底|演练|复核|记录|台账|考核|整改|保养|维护|监测|检测|排查|验收|清扫/u,K=/作业面|班组|工区|标段|片区|地块|单元|分部|队伍|小组|机构|部门|岗位|区域|社区|村庄|村|路段|楼栋|站区|库区|厂区/u,L=/分组|平行|流水|包保|分区|分片|分块|划分|组建|成立|配备|配置|设置|设立|建立|指定|安排|派驻/u,M=/违约金|延期竣工|解除合同|缺陷责任期|质量保证金|质保金|履约保证金|保修期|合理期限|工期顺延|误期赔偿|响应|抢修|回访/u,N=/\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,O=/^\d+(?:\.\d+)?$/u,P=/^(?:m2|㎡|m²|平方米|平方|平米|m3|m³|立方米|立方|hm2|公顷|亩|mm|cm|km|m|米|kg|g|t|吨|个|台|套|项|处|座|株|组|批|次|人|天|月|年|万元|元|l|ml|樘|盏|根|只|块|片|条|道|层|间|栋|幢|户|袋|桶|罐|车|盘|孔|节|段|张|面|棵|丛)$/u,Q={kind:"unsourced",basis:""};function R(a){return a.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&")}function S(a){return a.replace(/(\d+\.\d*?)0+(?![\d])/gu,"$1").replace(/(\d+)\.(?![\d])/gu,"$1")}let T=/^(?:\d{1,2})\.\d{1,2}$/u,U=/(?<![\d.])(\d{1,2})\.(\d{1,2})(?![\d])/gu,V=/(?<![\d.])\.(\d{1,2})(?![\d])/gu;function W(a){let b=a.token.replace(/\s+/gu,""),c=(0,e.K3)(a.token),d=a.context||"";if(!c)return Q;for(let a of d.matchAll(I)){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)&&J.test(d)?{kind:"management",basis:"管理频次"}:/^\d+个$/u.test(c)&&K.test(d)&&L.test(d)?{kind:"management",basis:"施工组织编排"}:/^\d+(?:人|名|组|支|队)$/u.test(c)&&/配备|配置|设置|组建|成立|设立|建立|派驻|指定|安排/u.test(d)&&/专职|兼职|管理|岗位|人员|班组|队伍|小组|安全|质量|技术|施工|材料|资料|机械|劳务|作业/u.test(d)?{kind:"management",basis:"组织配置"}:/(?:天|月|年|d|万元|元|%)$/u.test(c)&&M.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:"商务金额"}:!function(a){let b=a.token.replace(/\s+/gu,"");if(!b)return!1;let c=(0,e.K3)(a.token);if(c&&g.c5.test(c))return!0;if(!c||!g.Rz.test(c))return!1;let d=a.context||"";return!!g.WL.test(d)&&RegExp(`(?:DN|De|HRB|HPB|Φ|φ)\\s*${R(b)}`,"iu").test(d)}({token:a.token,context:d})?!function(a){let b=/^\d+(?:\.\d+)?/u.exec(a.token.replace(/\s+/gu,""))?.[0]??"";if(!T.test(b))return!1;let[c,d]=b.split("."),e=Number(c),f=Number(d),g=a.context||"";for(let a of g.matchAll(U)){if(a[0]===b||a[2].length!==d.length)continue;let c=Number(a[1]),g=Number(a[2]);if(c===e&&1===Math.abs(g-f)||g===f&&1===Math.abs(c-e))return!0}for(let a of g.matchAll(V))if(a[1].length===d.length&&1===Math.abs(Number(a[1])-f))return!0;return!1}({token:a.token,context:d})?Q:{kind:"regulatory",basis:"章节编号"}:{kind:"regulatory",basis:"规格粘连"}}function X(a,b){let c=function(a,b){let c=function(a){let b=[];for(let c of k(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=>O.test(a)).map(a=>S(a)))];if(0===d.length)continue;let e=[...new Set(c.filter(a=>P.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(N)){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=W({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=S(b);return d!==b&&c.push(d),c.some(b=>RegExp(`(?<![\\d.])${R(b)}(?![\\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:"未溯源数值必须改为定性表述或显式标注来源:来自清单/图纸的保留并明确来源(清单条目/图纸编号);规范常数(试块留置/养护龄期/检测频次等)保留时显性标注规范名称与编号;其余改为不带具体数值的过程控制表述。"}]}},7148:(a,b,c)=>{c.d(b,{Q0:()=>g,Sn:()=>f});let d={米:"m",m:"m",延长米:"m",公里:"km",千米:"km",km:"km",平方米:"m2",平方:"m2","㎡":"m2","m\xb2":"m2",m2:"m2",立方米:"m3",方:"m3","m\xb3":"m3",m3:"m3",吨:"t",t:"t",千克:"kg",公斤:"kg",kg:"kg"},e=[["m3","m\xb3","立方米","方"],["m2","m\xb2","㎡","平方米"],["m","米","延长米"],["t","吨"],["kg","千克","公斤"],["km","公里","千米"]];function f(a){let b=String(a||"").trim().toLowerCase();return Object.prototype.hasOwnProperty.call(d,b)?d[b]:b}function g(a,b){let c=String(a||"").trim().toLowerCase(),d=String(b||"").trim().toLowerCase();return!c||!d||c===d||f(c)===f(d)||e.some(a=>a.includes(c)&&a.includes(d))}},10025:(a,b,c)=>{function d(a){let b=String(a||"").trim();return b?/\d{4}\s*年\s*\d{1,2}\s*月\s*\d{1,2}\s*日/u.test(b)?"date":/\d+(?:\.\d+)?\s*(?:万元|亿元|元)/u.test(b)&&!/\d+(?:\.\d+)?\s*(?:万元|元)\s*\//u.test(b)?"money":/(?:GB|JGJ|CJJ|DB|CECS|ISO|IEC|JTG|SL|DL|YB|HG)\s*\/?\s*T?\s*[\d.]+/iu.test(b)?"standard":/(?:C\d{2,3}|HRB\d{3,4}|HPB\d{3}|DN\s*\d+|Φ\s*\d+|φ\s*\d+|\d+(?:\.\d+)?\s*(?:mm|cm|kV|MPa|kPa|kW|W|A|V))/u.test(b)?"spec":/\d+(?:\.\d+)?\s*(?:m2|m3|m²|m³|㎡|m|km|kg|t|吨|个|座|套|台|根|块|株|棵|处|项|日历天|天|层|樘|扇|片|组|件|孔|盏)/u.test(b)?"measure":"text":"text"}c.d(b,{M0:()=>k,Oq:()=>j,Su:()=>s,UD:()=>i,dm:()=>d,f2:()=>l,yJ:()=>e});let e="变更修改为|变更为|变更至|澄清为|澄清修改为|修改为|调整为|调整至|更正为|修正为|现为|现改为|更改为",f=/[。;;\n]/u,g=RegExp("\\d{4}\\s*年\\s*\\d{1,2}\\s*月\\s*\\d{1,2}\\s*日|\\d+(?:\\.\\d+)?\\s*(?:万元|亿元|日历天|个?月|天|m2|m3|m\xb2|m\xb3|㎡|mm|cm|km|m|kg|t|吨|个|座|套|台|根|块|樘|扇|片|组|件|孔|盏|项|处|层|kV|MPa|kPa|kW|W|A|V|%)|(?:GB|JGJ|CJJ|DB|CECS|ISO|IEC)\\s*/?\\s*T?\\s*[\\d.]+(?:-\\d{2,4})?","giu"),h=/(?:第\s*)?(\d{1,2}(?:\.\d{1,2}){1,3})\s*(?:条|项|款)?/u;function i(a){let b=RegExp(`(${e})\\s*[::]?\\s*(${g.source}|[\\u4e00-\\u9fa5]{2,12})`,"u"),c=RegExp(g.source,"gu"),i=RegExp(`([\\u4e00-\\u9fa5]{2,8})\\s*[::]\\s*(${g.source})`,"gu"),j=[],k=new Set,l=a=>{let b=`${a.superseded}\u0000${a.effective}`;a.superseded===a.effective||k.has(b)||(k.add(b),j.push(a))},m=/变更|澄清|补疑|补遗|调整为|修改为|更正/;for(let g of a){let a=String(g.text||"");if(a&&m.test(a))for(let j of a.split(f)){let a=j.replace(/\s+/gu,"");if(a.length<4)continue;let f=function(a){let b=[],c=h.exec(a)?.[1];c&&b.push(c);let d=a.match(/[一-龥]{2,8}(?=[::))]?(?:为|是|按|采用|统一|变更|澄清|调整))/gu);return d&&b.push(...d.slice(0,3)),[...new Set(b)]}(a),k=b.exec(a);if(k){let b=k[2].trim();if(!/\d/u.test(b)||RegExp(e,"u").test(b))continue;let h=d(b);for(let e of[...a.slice(0,k.index).matchAll(c)].map(a=>a[0].trim()))e!==b&&d(e)===h&&l({superseded:e,effective:b,scope:f,evidence:[{source:g.source,snippet:a.slice(0,120)}],kind:"override"});continue}let m=[...a.matchAll(i)];if(m.length>=2){let b=new Map;for(let a of m){let c=b.get(a[1])||[];c.push(a[2].trim()),b.set(a[1],c)}for(let[c,d]of b){let b=[...new Set(d)];b.length<2||l({superseded:b[0],effective:b[b.length-1],scope:[...new Set([...f,c])],evidence:[{source:g.source,snippet:a.slice(0,120)}],kind:"override"})}}}}return j}function j(a){let b=new Map;for(let c of a){let a=`${c.superseded}\u0000${c.scope.join("|")}`,d=b.get(a);if(!d){b.set(a,c);continue}let e=(d.effective===c.superseded,{...c,superseded:d.superseded,evidence:[...d.evidence,...c.evidence],scope:[...new Set([...d.scope,...c.scope])]});b.set(a,e)}return[...b.values()]}function k(a,b){let c=String(a||""),d=[];for(let a of b)"override"===a.kind&&a.superseded&&c.includes(a.superseded)&&(c=c.replace(RegExp(a.superseded.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&"),"gu"),(b,e)=>{if(e>0&&/[\d.,]/u.test(c[e-1]))return b;let f=c.slice(Math.max(0,e-12),e+b.length+12);return/原(?:为|值|内容|计划|合同|招标)|此前|由[^,。;]{0,12}(?:变更|调整)|变更过程/u.test(f)?b:(d.push({from:b,to:a.effective}),a.effective)}));return{text:c,applied:d}}function l(a,b){if(!b||0===b.length)return 0;let c=0;for(let d of a){let a=k(String(d.content??""),b);0!==a.applied.length&&(d.content=a.text,c+=1)}return c}let m=[{attribute:"合同金额",re:/(?:最高投标限价|招标控制价|合同估算价(?:格)?|工程估算价|投标限价)(?<gap>[^。;\n]{0,16}?)(?:现)?(?:调整)?为?\s*[::]?\s*(?<num>[\d,]+(?:\.\d+)?)\s*(?<unit>亿元|万元|元)/u},{attribute:"计划工期",re:/(?:计划工期|合同工期|总工期)(?<gap>[^。;\n]{0,16}?)(?<num>[\d,]+(?:\.\d+)?)\s*个?\s*日历天/u},{attribute:"开工日期",re:/(?:计划)?开工日期(?<gap>[^。;\n]{0,8}?)[::]?\s*(?<num>20\d{2}\s*年\s*\d{1,2}\s*月\s*\d{1,2}\s*日)/u},{attribute:"暂列金额",re:/(?:暂列金额|暂列金)(?<gap>[^。;\n\d]{0,12}?)(?<num>[\d,]+(?:\.\d+)?)\s*(?<unit>亿元|万元|元)/u}],n=RegExp(`(?:${e})\\s*[::]?\\s*(\\d{1,4})\\s*个?\\s*日历天`,"u"),o=/(?:计划工期|合同工期|总工期|工期)/u,p=/(?:暂列|暂估|分部分项|单项工程|单位工程|措施项目|其他项目|规费|税金|人工费|材料费|机械费|管理费|利润|单价|合价)/u,q=/现澄清为|现变更为|澄清为如下|澄清修改为|变更修改为|现调整为|全部作废|以本次[^。;\n]{0,10}为准|以澄清[^。;\n]{0,6}为准/u,r=/^\s*(?:\d{1,2}\s*[、..]|问\s*[::])/u;function s(a){let b=[],c=/作废|以本次(?:招标)?答疑附件(?:中材料)?为准|以澄清(?:文件)?为准/u;for(let d of a){let a=String(d.text||"");if(!a)continue;let f=!1;for(let g of a.split(/\n\s*\n/u))for(let a of(r.test(g)&&/[??]/u.test(g)&&(f=!1),q.test(g)&&(f=!0),g.split(/[。;;\n]/u))){let g;if(a.length<6)continue;let h=c.test(a),i=f||q.test(a),j=o.test(a)?n.exec(a)?.[1]:void 0;j&&b.push({attribute:"计划工期",value:`${j}日历天`,source:d.source,supersedesPriorMaterials:h,clarified:i});let k=a.search(/(?:暂列金额|暂列金)/u),l=k>=0?RegExp(`(?:${e})\\s*[::]?\\s*(\\d+(?:\\.\\d+)?)\\s*(亿元|万元|元)`,"gu"):void 0;if(l){for(let b of a.matchAll(l))if((b.index??0)>k){g=b;break}}for(let c of(g&&b.push({attribute:"暂列金额",value:`${g[1]}${g[2]||""}`,source:d.source,supersedesPriorMaterials:h,clarified:i}),m)){if("计划工期"===c.attribute&&j||"暂列金额"===c.attribute&&g)continue;let e=c.re.exec(a);if(!e?.groups)continue;let f=e.groups.num?.replace(/,/gu,"")||"";if(!f||p.test(e.groups.gap||""))continue;let k="合同金额"===c.attribute||"暂列金额"===c.attribute?`${f}${e.groups.unit||""}`:"计划工期"===c.attribute?`${f}日历天`:f.trim();b.push({attribute:c.attribute,value:k,source:d.source,supersedesPriorMaterials:h,clarified:i})}}}return b}},10751:(a,b,c)=>{c.d(b,{Be:()=>p,Bf:()=>k,IV:()=>g,L$:()=>n,Xe:()=>l,i2:()=>o,yB:()=>m});let d=[{re:/挖掘机/u,alias:"挖机"},{re:/塔式起重机|塔吊/u,alias:"塔吊"},{re:/施工升降机|施工电梯/u,alias:"施工电梯"},{re:/汽车起重机|汽车吊|吊车/u,alias:"汽车吊"},{re:/装载机/u,alias:"铲车"},{re:/混凝土输送泵|地泵|泵车/u,alias:"地泵"},{re:/插入式振捣器|振捣棒/u,alias:"振捣棒"}];function e(a,b,c){return void 0!==a&&void 0!==b?Math.round((a+b)/2):void 0!==b?b:void 0!==a?a:c}let f=[a=>{let b=[];return a.contract.totalDays>0&&b.push({id:"",kind:"fact",domain:"contract",label:"总工期",anchors:["总工期","合同工期","施工工期","工期"],value:a.contract.totalDays,unit:"日历天",source:"招标文件/合同条款",paths:["contract.totalDays"]}),void 0!==a.contract.estimatedAmount&&a.contract.estimatedAmount>0&&b.push({id:"",kind:"fact",domain:"contract",label:"合同估算价",anchors:["合同估算价","估算价","工程造价"],value:a.contract.estimatedAmount,unit:"万元",source:"招标文件",amountRestricted:!0,paths:["contract.estimatedAmount"]}),b},a=>{let b=[];(a.milestones??[]).forEach((a,c)=>{(a.duration??0)<=0||b.push({id:"",kind:"derived",domain:"schedule",label:`里程碑:${a.label}`,anchors:[a.label],value:a.duration??0,unit:"天",source:"里程碑推导",trace:a.basis,paths:[`milestones[${c}].duration`]})});let c=(a.milestones??[]).reduce((a,b)=>a+(b.duration??0),0);return a.contract.totalDays>0&&b.push({id:"",kind:"derived",domain:"schedule",label:"机动工期",anchors:["机动工期","机动时间","工期余量"],value:Math.max(0,a.contract.totalDays-c),unit:"天",source:"工期推导",trace:`总工期 ${a.contract.totalDays} 天 − 里程碑合计 ${c} 天`,paths:[]}),(a.schedule??[]).forEach((a,c)=>{b.push({id:"",kind:"derived",domain:"schedule",label:`工序:${a.label}`,anchors:[a.label],value:a.duration,unit:"天",spec:`第${a.startDay}~${a.endDay}天`,source:"进度工序推导",trace:a.basis,paths:[`schedule[${c}].seq`,`schedule[${c}].duration`,`schedule[${c}].startDay`,`schedule[${c}].endDay`]})}),b},a=>{let b=a.resources.labor,c=[];return b.peakValue>0&&c.push({id:"",kind:"derived",domain:"labor",label:"劳动力峰值",anchors:["劳动力峰值","高峰人数","峰值人数"],value:b.peakValue,unit:"人",source:"劳动力推导",trace:b.peakBasis,paths:["resources.labor.peak.min","resources.labor.peak.max","resources.labor.peakValue"]}),(b.byPhase??[]).forEach((a,b)=>{(void 0!==a.min||void 0!==a.max)&&c.push({id:"",kind:"derived",domain:"labor",label:`阶段劳动力:${a.phase}`,anchors:[a.phase],value:e(a.min,a.max,0),unit:"人",source:"劳动力推导",trace:a.basis,paths:[`resources.labor.byPhase[${b}].min`,`resources.labor.byPhase[${b}].max`]})}),(b.byTrade??[]).forEach((a,b)=>{(void 0!==a.min||void 0!==a.max)&&c.push({id:"",kind:"derived",domain:"labor",label:`工种区间:${a.trade}`,anchors:[a.trade],value:e(a.min,a.max,0),unit:"人",source:"劳动力推导",trace:a.basis,paths:[`resources.labor.byTrade[${b}].min`,`resources.labor.byTrade[${b}].max`]})}),(b.composition??[]).forEach((a,b)=>{c.push({id:"",kind:"derived",domain:"labor",label:`工种构成:${a.trade}`,anchors:[a.trade],value:a.count,unit:"人",source:"劳动力推导",trace:a.basis,paths:[`resources.labor.composition[${b}].count`]})}),c},a=>(a.resources.equipment??[]).map((a,b)=>{let c=d.filter(b=>b.re.test(a.name)).map(a=>a.alias);return{id:"",kind:"derived",domain:"equipment",label:a.name,anchors:[a.name,...c.filter(b=>b!==a.name)],value:a.quantity??e(a.min,a.max,1),unit:"台",spec:a.spec,source:"机械推导",trace:a.basis,paths:[`resources.equipment[${b}].quantity`,`resources.equipment[${b}].min`,`resources.equipment[${b}].max`]}}),a=>(a.materialsPlan??[]).map((a,b)=>({id:"",kind:"fact",domain:"material",label:a.spec?`${a.name}(${a.spec})`:a.name,anchors:[a.name],value:a.quantity??a.spec??a.name,unit:a.unit,spec:a.spec,source:"清单汇总",trace:a.basis,paths:[`materialsPlan[${b}].quantity`]})),a=>Object.entries(a.quantities??{}).map(([a,b])=>({id:"",kind:"fact",domain:"quantity",label:a,anchors:[a],value:b.value,unit:b.unit,source:b.sourceFile||"工程量清单",groups:b.groups?.length?b.groups:void 0,specBreakdown:b.specBreakdown?.length?b.specBreakdown:void 0,paths:[`quantities.${a}.value`,...(b.groups??[]).map((b,c)=>`quantities.${a}.groups[${c}].value`),...(b.specBreakdown??[]).map((b,c)=>`quantities.${a}.specBreakdown[${c}].value`)]})),a=>Object.entries(a.specAuthorities??{}).map(([a,b])=>({id:"",kind:"fact",domain:"spec",label:`规格:${a}`,anchors:[a],value:b,unit:"",source:"清单特征",paths:[]})),a=>{let b=[],c=a.earthworkBalance;if(!c)return b;for(let a of[{key:"excavation",label:"挖方"},{key:"backfill",label:"填方"},{key:"disposal",label:"弃方"}]){let d=c[a.key];void 0===d||d<=0||b.push({id:"",kind:"derived",domain:"earthwork",label:`土方平衡:${a.label}`,anchors:[`土方${a.label}`,a.label],value:d,unit:"m\xb3",source:"土方平衡推导",trace:c.basis,paths:[`earthworkBalance.${a.key}`]})}return b},a=>{let b=[];return(a.tempLand??[]).forEach((a,c)=>{void 0===a.area||a.area<=0||b.push({id:"",kind:"derived",domain:"site",label:`临时设施:${a.purpose}`,anchors:[a.purpose],value:a.area,unit:"㎡",source:"总平面布置推导",trace:a.basis,paths:[`tempLand[${c}].area`]})}),b},a=>{let b=(a.testPlan??[]).map((a,b)=>({id:"",kind:"derived",domain:"test",label:`试验计划:${a.scope}`,anchors:[a.scope],value:a.count??a.scope,unit:void 0!==a.count?"次":"",source:"试验计划推导",trace:a.basis,paths:[`testPlan[${b}].count`]}));return(a.testInstruments??[]).forEach((a,c)=>{void 0!==a.quantity&&b.push({id:"",kind:"derived",domain:"test",label:`试验仪器:${a.name}`,anchors:[a.name],value:a.quantity,unit:"台",spec:a.spec,source:"仪器配置推导",trace:a.basis,paths:[`testInstruments[${c}].quantity`]})}),b},a=>{let b=a.redLineFacts??[],c=b.map(a=>({id:"",kind:"fact",domain:"redline",label:a.key,anchors:[a.key],value:a.value,unit:"",source:a.source,amountRestricted:a.amount,paths:[]})),d=b.find(a=>"自然村数量"===a.key),e=d?/(\d+)/u.exec(d.value):null;return e&&c.push({id:"",kind:"fact",domain:"redline",label:"自然村数量",anchors:["自然村数量","自然村"],value:Number(e[1]),unit:"个",source:d?.source||"招标文件",paths:[]}),c}];function g(a){let b=function(a){let b=new Map;for(let c of a){let a=`${c.domain}:${c.label}`,d=b.get(a)??0;b.set(a,d+1),c.id=0===d?a:`${a}#${d+1}`}return a}(f.flatMap(b=>b(a))),c=new Map;for(let a of b){let b=c.get(a.domain);b?b.push(a):c.set(a.domain,[a])}return{entries:b,byDomain:c}}let h=["contract","schedule","labor","equipment","material","quantity","spec","earthwork","site","test","redline"];function i(a,b){return a.startsWith(b)?a.slice(b.length):a}let j={contract:a=>{let b=[],c=a.find(a=>"总工期"===a.label);return c&&b.push(`- 总工期:${c.value} 日历天`),b},schedule:a=>{let b=[],c=a.filter(a=>a.label.startsWith("里程碑:"));c.length>0&&b.push(`- 里程碑(各节点用时,总和 ≤ 总工期):${c.map(a=>`${i(a.label,"里程碑:")} ${a.value} 天`).join("、")}`);let d=a.filter(a=>a.label.startsWith("工序:"));d.length>0&&b.push(`- 进度工序(里程碑展开,起止天序系统推导,不得自设):${d.map(a=>`${i(a.label,"工序:")} ${a.spec||`${a.value} 天`}`).join("、")}`);let e=a.find(a=>"机动工期"===a.label);return e&&b.push(`- 机动工期:${e.value} 天`),b},labor:a=>{let b=[],c=a.find(a=>"劳动力峰值"===a.label);c&&b.push(`- 劳动力峰值:${c.value} 人(清单工效推导口径唯一峰值,各章必须引用该值,不得自设其他峰值)`);let d=a.filter(a=>a.label.startsWith("阶段劳动力:"));d.length>0&&b.push(`- 分阶段劳动力投入(各阶段同时在场人数,分阶段计划表数据源):${d.map(a=>`${i(a.label,"阶段劳动力:")} ${a.value} 人`).join("、")}`);let e=a.filter(a=>a.label.startsWith("工种区间:"));e.length>0&&b.push(`- 工种区间(区间中值参考,不得作为工种表口径,不得自设):${e.map(a=>`${i(a.label,"工种区间:")} ${a.value} 人`).join("、")}`);let f=a.filter(a=>a.label.startsWith("工种构成:"));return f.length>0&&b.push(`- 工种构成(合计=${c?.value??0} 人,写作层工种表唯一数据源,不得自设构成):${f.map(a=>`${i(a.label,"工种构成:")} ${a.value} 人`).join("、")}`),b},equipment:a=>0===a.length?[]:[`- 主要机械(台数唯一口径,不得自设):${a.map(a=>`${a.label}${a.spec?`(${a.spec})`:""} ${a.value} 台`).join("、")}`],material:a=>{if(0===a.length)return[];let b=[`- 物资计划\xb7主要材料(清单汇总,名称、型号规格、数量必须与此一致;清单明确给出的规格是事实数据,未列材料不得自编型号规格):${a.map(a=>`${a.label} ${a.value}${a.unit}`).join("、")}`],c=new Map;for(let b of a){let a=b.anchors[0]??b.label,d=c.get(a);d?d.push(b):c.set(a,[b])}for(let[a,d]of c){if(d.length<2)continue;let c=d.reduce((a,b)=>a+("number"==typeof b.value?b.value:0),0);b.push(`- ${a}规格-数量拆分(逐项照抄,不得自行分配/改动):${d.map(a=>`${a.spec||"未标规格"} ${a.value}${a.unit}`).join(" + ")}(合计 ${Math.round(1e3*c)/1e3}${d[0]?.unit??""})`)}return b},quantity:a=>{if(0===a.length)return[];let b=[`- 工程量清单(合计口径;分组明细为合法多值):${a.map(a=>`${a.label} ${a.value}${a.unit}`+(a.groups?.length?`(分组:${a.groups.map(a=>`${a.group} ${a.value}`).join("、")})`:"")).join("、")}`];for(let c of a){if((c.specBreakdown?.length??0)<2)continue;let a="number"==typeof c.value?c.value:0;b.push(`- ${c.label}规格-数量拆分(逐项照抄,不得自行分配/改动):${c.specBreakdown.map(a=>`${a.spec} ${a.value}${c.unit}`).join(" + ")}(合计 ${a}${c.unit})`)}return b},spec:a=>0===a.length?[]:[`- 规格权威(清单特征原文,必须原样引用,不得自编):${a.map(a=>`${i(a.label,"规格:")}=${a.value}`).join("、")}`],earthwork:a=>0===a.length?[]:[`- 土方平衡(清单汇总口径):${a.map(a=>`${i(a.label,"土方平衡:")} ${a.value}${a.unit}`).join("、")}`],site:a=>0===a.length?[]:[`- 临时设施与用地(面积/位置规划,不得自设):${a.map(a=>`${i(a.label,"临时设施:")} ${a.value}${a.unit}`).join("、")}`],test:a=>{let b=[],c=a.filter(a=>a.label.startsWith("试验计划:"));c.length>0&&b.push(`- 试验计划(推导口径,不得自设):${c.map(a=>`${i(a.label,"试验计划:")} ${a.value}${a.unit}`).join("、")}`);let d=a.filter(a=>a.label.startsWith("试验仪器:"));return d.length>0&&b.push(`- 试验检测仪器(配置清单,不得自设):${d.map(a=>`${i(a.label,"试验仪器:")}${a.spec?`(${a.spec})`:""} ${a.value} 台`).join("、")}`),b},redline:a=>{let b=new Set,c=a.filter(a=>!b.has(a.label)&&(b.add(a.label),!0)),d=[],e=c.filter(a=>!a.amountRestricted),f=c.filter(a=>a.amountRestricted);return e.length>0&&d.push(`- 评审红线事实(must_cite,正文必须逐条出现且数值一致):${e.map(a=>`${a.label}=${a.value}`).join(";")}`),f.length>0&&d.push(`- 金额类红线事实(商务禁区,不进正文):${f.map(a=>`${a.label}=${a.value}`).join(";")}`),d}};function k(a,b){let c=b&&b.length>0?h.filter(a=>b.includes(a)):h,d=[];for(let b of c)d.push(...j[b](a.byDomain.get(b)??[]));return d}function l(a,b){let c=[];for(let d of h){let e=a.byDomain.get(d)??[];if("quantity"===d||"material"===d){let a=e.filter(a=>(function(a,b){let c=[a.label,...a.anchors].filter(Boolean);return b.some(a=>c.some(b=>b.includes(a)||a.includes(b)))})(a,b.blockTokens)),f="quantity"===d?b.quantityCharsCap??9e3:b.materialCharsCap??7e3;c.push(...function(a,b,c){if(0===b.length)return[];let d=j[a],e=d(b);if(e.join("\n").length<=c)return e;let f=b.length;for(;f>0&&!((f=Math.floor(.9*f))<=0);){let a=d(b.slice(0,f));if(a.join("\n").length<=c)return a[0]+=`(另有 ${b.length-f} 条未列出,其余清单条目见绑定材料)`,a}return["- (本节相关清单条目超出预算未展开;引用清单数值必须逐字取自绑定材料,不得估计)"]}(d,a,f))}else c.push(...j[d](e))}return c}function m(a){if(!a)return;let b=(g(a).byDomain.get("labor")??[]).find(a=>"劳动力峰值"===a.label);return b&&"number"==typeof b.value&&b.value>0?b.value:void 0}function n(a){return a?(g(a).byDomain.get("quantity")??[]).filter(a=>"number"==typeof a.value&&(a.groups?.length??0)>=2).map(a=>({name:a.label,value:a.value,unit:a.unit,groups:a.groups})):[]}function o(a){if(!a)return[];let b="阶段劳动力:";return(g(a).byDomain.get("labor")??[]).filter(a=>a.label.startsWith(b)&&"number"==typeof a.value&&a.value>0).map(a=>({phase:a.label.slice(b.length),value:a.value,trace:a.trace}))}function p(a){if(!a)return[];let b=new Map;for(let c of g(a).byDomain.get("equipment")??[])"number"!=typeof c.value||c.value<=0||b.set(c.label,(b.get(c.label)??0)+c.value);return[...b.entries()].map(([a,b])=>({name:a,count:b}))}},11248:(a,b,c)=>{c.d(b,{K3:()=>f,zn:()=>g});let d=/[A-Za-z0-9%+-.,]/gu;function e(a){let b=a.charCodeAt(0);return b>=65281&&b<=65374?String.fromCharCode(b-65248):a}function f(a){return a.replace(d,e).replace(/\s+/gu,"").replace(/[—–‑﹣]/gu,"-").replace(/[×X**]/gu,"x").replace(/[%]/gu,"%").replace(/‰/gu,"permille").replace(/平方米|平方|平米|m²|㎡/giu,"m2").replace(/公顷|hm²/giu,"hm2").replace(/立方米|立方|m³/giu,"m3").replace(/升/gu,"l").replace(/毫升/gu,"ml").replace(/千米|公里/gu,"km").replace(/毫米/gu,"mm").replace(/厘米/gu,"cm").replace(/米/gu,"m").replace(/千克|公斤/gu,"kg").replace(/克/gu,"g").replace(/吨/gu,"t").replace(/人民币万元|万元人民币/gu,"万元").replace(/人民币元|元人民币|¥/gu,"元").replace(/日历天|自然日/gu,"天").replace(/工作日/gu,"工作天").replace(/个月/gu,"月").replace(/小时/gu,"h").replace(/分钟/gu,"min").replace(/兆帕/gu,"mpa").replace(/千帕/gu,"kpa").replace(/千牛/gu,"kn").replace(/牛/gu,"n").replace(/千瓦/gu,"kw").replace(/兆瓦/gu,"mw").replace(/瓦/gu,"w").replace(/千伏/gu,"kv").replace(/伏/gu,"v").replace(/毫安/gu,"ma").replace(/安培|安/gu,"a").replace(/赫兹/gu,"hz").replace(/摄氏度/gu,"℃").replace(/百分之\s*(\d+(?:\.\d+)?)/gu,"$1%").replace(/千分之\s*(\d+(?:\.\d+)?)/gu,"$1permille").replace(/直径\s*(\d+(?:\.\d+)?)/gu,"φ$1").replace(/[Φφ]\s*(\d+(?:\.\d+)?)(?:mm)?/giu,"φ$1").replace(/DN\s*(\d+)/giu,"dn$1").replace(/D\s*(\d+)(?=\b|[^a-z0-9])/giu,"d$1").replace(/\b(KN|MPA|KPA|KW|MW|KV|HZ|DN)\b/giu,a=>a.toLowerCase()).replace(/[,,、。;;::||()()【】\]《》<>"“”'‘’[]/gu,"").toLowerCase()}function g(a){let b=f(a),c=new Set;for(let a of b.matchAll(/\d+(?:\.\d+)?(?:m2|hm2|亩|m3|l|ml|mm|cm|km|m|kg|g|t|万元|亿元|元|天|工作天|月|年|h|min|%|permille|mpa|kpa|pa|kn|n|kn\/m2|kn\/m|kw|mw|w|kv|v|ma|a|hz|℃|台|套|件|个|根|只|组|项|处|座|栋|层|间|批|次|人|工日|人日)?|dn\d+|φ\d+(?:\.\d+)?|d\d+|c\d{2,}|hrb\d+|q\d{3}[a-z]?|m\d+|\d+(?:\.\d+)?x\d+(?:\.\d+)?(?:x\d+(?:\.\d+)?)?|[+-]?\d+\.\d{3}|\d+[:/]\d+/giu))c.add(a[0]);return[...c]}},11628:(a,b,c)=>{c.d(b,{De:()=>r,EI:()=>l,H8:()=>h,LD:()=>j,Ui:()=>q,cg:()=>o,mf:()=>n,pN:()=>f,wI:()=>e});var d=c(10025);function e(a){return(a.match(/�|/gu)?.length||0)>=2||Array.from(a).some(a=>{let b=a.charCodeAt(0);return 65533===b||b<32&&9!==b&&10!==b&&13!==b})}function f(a){let b=RegExp(`(?:${d.yJ})\\s*[::]?\\s*`,"u").exec(a);return b?a.slice((b.index??0)+b[0].length).trim():a}let g=/条款号|条款名称|编列内容|评标办法前附表|评标办法正文/u;function h(a){return g.test(a)}let i=/(?<=[一-龥])[—–―─--]|一(?=[一-龥])/gu;function j(a){return a.replace(i,"")}let k=[[/经济技术开发区/gu,"经开区"],[/高新技术产业开发区/gu,"高新区"],[/经济开发区/gu,"经开区"],[/高新技术开发区/gu,"高新区"],[/产业开发区/gu,"开发区"]];function l(a){let b=a;for(let[a,c]of k)b=b.replace(a,c);return b}let m=/^\d+\s*个?\s*(?:日历天|天|个月|月|周|年)$/u,n=/^20\d{2}\s*(?:年\s*\d{1,2}\s*月|[.\-/]\d{1,2}(?:[.\-/]|$))/u;function o(a){return m.test(a)?"duration":n.test(a)?"date":"plain"}let p=/[((][^))]{0,12}[))]\s*$/u;function q(a){let b=a.trim(),c="";for(;c!==b;)c=b,b=b.replace(p,"").trim();return b||a.trim()}function r(a){let b=String(a||""),c=b.replace(/^(?:招标人|招标单位|建设单位|发包人|项目名称|工程名称|项目编号|招标项目编号|标段名称|建设地点|建设规模|招标范围|计划工期|合同工期|质量标准|质量目标)[::]\s*/u,"");return c!==b?c:b.replace(/^[一-龥]{2,10}[::]\s*(?=(?:20\d{2}\s*年|\d+\s*(?:日历天|天|个月|月|年)))/u,"")}},12863:(a,b,c)=>{c.d(b,{Dp:()=>e,Dq:()=>q,Ei:()=>f,GG:()=>t,Lp:()=>x,Mb:()=>r,P3:()=>n,Pt:()=>v,QW:()=>j,Rm:()=>i,YZ:()=>w,a0:()=>p,dc:()=>k,hI:()=>u,mO:()=>m,nv:()=>y,re:()=>l,rx:()=>h,vC:()=>g,z4:()=>s});var d=c(22157);let e=/(?:高峰期|高峰|峰值)[^。;;\n]{0,20}?(?:约)?\s*([\d,]+)\s*人/g,f=["基坑与基础","二次结构与砌体","施工准备","地下结构","主体结构","装饰装修","机电安装","室外工程","收尾调试","临时设施","土方","基坑","基础"],g=/(?:铺装工|钢筋工|混凝土工|架子工|砌筑工|抹灰工|防水工|油漆工|水暖工|水电工|管道工|电焊工|起重工|机械工|司索工|信号工|塔吊司机|测量工|试验工|绿化工|管网工|装修工|装饰工|安装工|养护工|保温工|幕墙工|防腐工|操作工|市政工|模板工|木工|瓦工|焊工|电工|普工)(?!程|序|艺|期)/u;function h(a,b){let c,d=a.slice(0,b),e=Math.max(d.lastIndexOf("。"),d.lastIndexOf(";"),d.lastIndexOf(";"),d.lastIndexOf("\n")),h=a.slice(Math.max(0,e+1),b),i=Math.max(h.lastIndexOf(","),h.lastIndexOf("、"));i>=0&&(/(?:高峰期|高峰|峰值)/u.test(h.slice(0,i))||!g.test(h.slice(0,i)))&&(h=h.slice(i+1));let j=-1;for(let a of f){let b=h.lastIndexOf(a);b>j&&(j=b,c=a)}let k=[...h.matchAll(/[^,,。;;::\n]{1,14}阶段/gu)].filter(a=>{let b=a[0].slice(0,-2);return!/^(?:各|每个|不同|相应)/u.test(b)&&!/^[一二三四五六七八九十\d]{1,3}个/u.test(b)&&!f.some(a=>a.startsWith(b))}).pop();return k&&(k.index??0)>j&&(c=k[0]),c}function i(a){let b=[],c=a.split(/\r?\n/u),d=/^\|.+\|$/u,e=/阶段|时期|工期|工序|进度/u,f=/人数|劳动力|作业人员|施工人员|投入人数/u,h=/^:?-{3,}:?$/u,i=a=>a.replace(/[*_`~]/gu,"").trim();for(let a=0;a<c.length;a+=1){let j,k,l;if(!d.test(c[a].trim()))continue;let m=[];for(;a<c.length&&d.test(c[a].trim());)m.push(c[a].trim()),a+=1;if(a-=1,m.length<3)continue;let n=a=>a.split("|").map(a=>a.trim()).slice(1,-1),o=m.findIndex((a,b)=>b>0&&n(a).every(a=>h.test(a)));if(1===o&&m.length>=3)j=n(m[0]).map(i),k=m.slice(2);else{if(-1!==o||!(m.length>=2))continue;let a=n(m[0]).map(i);if(!(e.test(a.join("|"))&&f.test(a.join("|"))))continue;j=a,k=m.slice(1)}let p=j.findIndex(a=>e.test(a)),q=j.findIndex(a=>/高峰|峰值/u.test(a)&&f.test(a)),r=q>=0?q:j.findIndex(a=>f.test(a));if(r<0||p>=0&&p===r||/岗位/u.test(j.join("|"))&&/职责|持证|职称/u.test(j.join("|")))continue;let s=j.some(a=>/工种|岗位|班组|人员类别|管理人员/u.test(a)),t=s?j.findIndex(a=>/工种|岗位|班组|人员类别|管理人员/u.test(a)):-1,u=[],v=0,w=[];for(let a of k){let b=n(a),c=b[r]||"",d=/^([\d,]+)\s*人?$/u.exec(c);if(!d)continue;let e=Number(d[1].replace(/[,,]/gu,""));if(Number.isFinite(e)&&!(e<=0)){if(b.some((a,b)=>b!==r&&/合计|总计|小计/u.test(a))){l=e;continue}if(u.push(e),v+=e,t>=0){let a=(b[t]||"").replace(/[*_`~]/gu,"").trim(),c=g.exec(a)?.[0];c&&w.push({trade:c,value:e})}}}if(0===u.length&&void 0===l)continue;let x=Math.max(...u.length>0?u:[l||0]);b.push({countCells:u,totalCell:l,detailSum:v,peak:x,hasPeakCol:q>=0,hasTradeCol:s,hasStageCol:p>=0,tradeCells:w})}return b}function j(a){let b=i(a).filter(a=>!a.hasTradeCol).map(a=>a.peak);return b.length>0?Math.max(...b):void 0}function k(a){let b,c=j(a);if(void 0!==c)return c;for(let c of a.matchAll(e)){let d=Number(c[1].replace(/[,,]/gu,""));Number.isFinite(d)&&!(d<=0)&&!h(a,c.index+c[0].indexOf(c[1]))&&(void 0===b||d>b)&&(b=d)}return b}let l=/钻孔灌注桩|高压旋喷桩|旋喷桩|搅拌桩|灌注桩|排桩|地下连续墙|咬合桩|支护桩/u,m=/土钉|放坡|喷锚|挂网|锚杆|护坡/u;function n(a){let b=a?.canonical?.byKey.foundation_support_form?.value,c=(0,d.lG)(b);if(!c)return;let e=m.test(c),f=l.test(c);return e&&!f?"slope":f&&!e?"pile":void 0}let o={零:0,一:1,二:2,两:2,三:3,四:4,五:5,六:6,七:7,八:8,九:9};function p(a){return/^\d+$/.test(a)?Number(a):"十"===a?10:a.startsWith("十")&&2===a.length?10+(o[a[1]??""]??0):a.endsWith("十")&&2===a.length?(o[a[0]??""]??0)*10:1===a.length&&void 0!==o[a]?o[a]:void 0}function q(a){let b=/养护[^。;;|]{0,10}?([一二两三四五六七八九十]+|\d{1,2})\s*年/gu,c=[a?.bills??[],a?.billItemFacts??[],a?.preciseFacts??[],a?.project??[]],e=(a,c)=>{for(let d of a.matchAll(b)){let a=p(d[1]??"");void 0!==a&&a>0&&a<=20&&c.set(a,(c.get(a)||0)+1)}},f=a=>{let b,c=0;for(let[d,e]of a)(e>c||e===c&&void 0!==b&&d>b)&&(b=d,c=e);return b};for(let a of c){let b=new Map;for(let c of a){let a=`${c.key||""}${c.fieldName||""}${c.fieldId||""}`;e((0,d.lG)(c.value),b),e(a,b)}if(b.size>0)return f(b)}}function r(a){let b=a=>/路灯/u.test(`${a.key||""}${a.fieldName||""}${a.fieldId||""}`),c=(a?.billItemFacts??[]).filter(b),e=c.length>0?c:[...a?.bills??[],...a?.preciseFacts??[]].filter(b),f=new Set,g=0;for(let a of e){if(f.has(a))continue;f.add(a);let b=(0,d.lG)(a.value);for(let a of(b.split("|工程量:")[1]??b).matchAll(/(\d+)\s*(?:套|盏|杆)/gu)){let b=Number(a[1]);Number.isFinite(b)&&b>0&&(g+=b)}}return g>0?g:void 0}function s(a){let b=a.canonical?.byKey.excavation_depth?.value,c=[...(a.drawings||[]).map(a=>`${a.fieldName||a.key||""} ${(0,d.lG)(a.value)}`),...(a.project||[]).map(a=>`${a.fieldName||a.key||""} ${(0,d.lG)(a.value)}`),...(a.preciseFacts||[]).map(a=>`${a.fieldName||a.key||""} ${(0,d.lG)(a.value)}`)].filter(Boolean),e=a=>[...a.matchAll(/-?(\d+(?:\.\d+)?)\s*(?:m|米)/gu)].filter(b=>{let c=Math.max(0,(b.index??0)-6),d=Math.min(a.length,(b.index??0)+b[0].length+6);return!/(?:超过|大于|小于|不[大低小]于|不低于|及以上|及以下|以上|以下)/u.test(a.slice(c,d))}).map(a=>Math.abs(Number(a[1]))),f=[...b?e(b):[],...c.flatMap(a=>/基坑开挖深度|基坑深度|开挖深度|坡底线|坑底标高/u.test(a)?e(a):[])].filter(a=>Number.isFinite(a)&&a>=1&&a<50);return f.length>0?Math.max(...f):void 0}function t(a){let b=a=>{let b=a.match(/(\d{1,4})\s*个?\s*日历天/u);if(!b)return;let c=Number(b[1]);return Number.isFinite(c)&&c>0?c:void 0};for(let c of a?.schedule??[]){let a=`${c.key||""}${c.fieldName||""}${c.fieldId||""}`;if(!/工期|周期/u.test(a))continue;let e=b((0,d.lG)(c.value));if(void 0!==e)return e}for(let c of Object.values(a?.canonical?.schedule??{})){let a=Array.isArray(c)?c[0]:c;if(!a||!/工期|周期/u.test(a.label))continue;let d=b(a.value);if(void 0!==d)return d}}function u(a){let b=a=>{let b=a.match(/(\d+(?:\.\d+)?)\s*%/u);if(!b)return;let c=Number(b[1]);return Number.isFinite(c)&&c>0&&c<=100?c:void 0};for(let c of[...a?.project??[],...a?.bills??[],...a?.preciseFacts??[]]){let a=`${c.key||""}${c.fieldName||""}${c.fieldId||""}`;if(!/装配率|assembly/u.test(a))continue;let e=b((0,d.lG)(c.value));if(void 0!==e)return e}}function v(a){let b,c=[],e=a?.project??[];for(let a of e){let c=`${a.key||""}${a.fieldName||""}`;if(!/单体建筑面积|建设规模/u.test(c))continue;let e=(0,d.lG)(a.value).match(/(\d+(?:\.\d+)?)\s*(?:平方(?:米)?|㎡|m²)/u);if(e&&Number.isFinite(Number(e[1]))){b=Number(e[1]);break}}void 0!==b&&c.push(`建筑面积${b}平方米`);let f=JSON.stringify({project:e,drawings:a?.drawings??[],tables:a?.tables??[]}),g=f.match(/地上\s*(\d+)\s*层/u)?.[1],h=f.match(/地下\s*(\d+)\s*层/u)?.[1];return void 0!==g&&c.push(`地上${g}层`),void 0!==h&&c.push(`地下${h}层`),c.length>0?c.join("、"):void 0}function w(a){let b=a.trim().toLowerCase();return/(?:m2|m²|㎡)/.test(b)?"(?:㎡|m\xb2|m2)":/(?:m3|m³)/.test(b)?"(?:m\xb3|m3)":"t"===b||"吨"===b?"(?:吨|t)":a.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&")}function x(a){return a.split("").map(a=>"("===a||"("===a?"[((]?":")"===a||")"===a?"[))]?":/[.*+?^${}()|[\]\\]/u.test(a)?`\\${a}`:a).join("")}function y(a){let b=a=>/[.*+?^${}()|[\]\\]/u.test(a)?`\\${a}`:a,c="",d=0;for(;d<a.length;){let e=a[d];if("("===e||"("===e){let e=-1;for(let b=d+1;b<a.length;b+=1)if(")"===a[b]||")"===a[b]){e=b;break}if(e>d){let f=a.slice(d+1,e).split("").map(b).join("");c+=`(?:[((]?${f}[))]?|(?![((]))`,d=e+1;continue}}if("("===e||"("===e){c+="[((]?",d+=1;continue}if(")"===e||")"===e){c+="[))]?",d+=1;continue}c+=b(e),d+=1}return c}},13145:(a,b,c)=>{c.d(b,{C_:()=>I,Fc:()=>p,Ht:()=>H,Mp:()=>k,VS:()=>i,_k:()=>r,av:()=>u,j7:()=>n,jG:()=>j,vh:()=>h,w_:()=>G,yk:()=>m});var d=c(40299),e=c(70208),f=c(22157),g=c(46482);function h(a){return/^\s*\|?\s*:?-{3,}:?\s*(?:\|\s*:?-{3,}:?\s*)+\|?\s*$/u.test(a.trim())}function i(a){let b=a.trim();if(!b||/^#{1,6}\s+/u.test(b)||h(b))return!1;let c=(b.match(/\|/gu)||[]).length;return c>=2||c>=1&&/^\s*\|/u.test(b)||c>=1&&/\|\s*$/u.test(b)}function j(a){return a.replace(/[\u3000\u00a0\u2000-\u200f\u202f\u205f\ufeff]/gu,"")}function k(a){return a.trim().replace(/^\|/u,"").replace(/\|$/u,"").trim().split("|").map(a=>j(a).trim())}function l(a,b){let c=a.slice(0,b);for(;c.length<b;)c.push("");return`| ${c.join(" | ")} |`}function m(a){let b=(a=(0,d.BJ)(a)).replace(/\r?\n/gu,"\n").split("\n"),c=[];for(let a=0;a<b.length;){let d=b[a]||"",e=b[a+1]?.trim()===""?a+2:a+1,f=b[e]||"";if(i(d)&&h(f)){let g=k(d).length;for(c.push(d),e!==a+1&&c.push(b[a+1]||""),c.push(f),a=e+1;a<b.length&&i(b[a]||"");){let d=k(b[a]||"");if(d.length>g){let a=d.slice(g-1).join(";");c.push(l([...d.slice(0,g-1),a],g))}else c.push(b[a]||"");a+=1}continue}if(!i(d)){c.push(d),a+=1;continue}let g=[],j=a;for(;j<b.length&&i(b[j]||"");)g.push(b[j]||""),j+=1;let m=g.map(a=>k(a)),n=m.map(a=>a.length),o=n[0]||0,p=/^(?:项目名称|工程名称|项目编号|招标人|建设单位|建设地点|建设规模|计划工期|质量标准|合同估算价|招标范围)$/u;if(g.length<2||o<2||n.some(a=>a!==o)||m.some(a=>p.test(a[0]||""))){c.push(...g),a=j;continue}let q=m[0]||[],r=m.slice(1);if(!(q.length>=2&&q.every(a=>a.length>0&&a.length<=12&&!/\d/u.test(a)&&!/[。,;:]/u.test(a))&&r.some(a=>a.some(a=>/\d/u.test(a)||a.length>12)))){c.push(...g),a=j;continue}for(let a of(c.length>0&&c[c.length-1]?.trim()&&c.push(""),c.push(l(q,o)),c.push(l(Array.from({length:o},()=>"---"),o)),r))c.push(l(a,o));(a=j)<b.length&&b[a]?.trim()&&c.push("")}return c.join("\n").replace(/\n{3,}/gu,"\n\n")}function n(a){let b=a.replace(/\r?\n/gu,"\n").split("\n"),c=[],d=a=>a.trim().replace(/^\|/u,"").replace(/\|$/u,"").split("|").map(a=>a.trim()),e=a=>/^\s*\|.*\|\s*$/u.test(a),f=a=>/^\s*\|\s*:?-{3,}:?\s*(?:\|\s*:?-{3,}:?\s*)+\|?\s*$/u.test(a),g=a=>`| ${a.join(" | ")} |`;for(let a=0;a<b.length;){let h=b[a]||"",i=b[a+1]||"";if(!e(h)||!f(i)){c.push(h),a+=1;continue}let j=d(h),k=j.map((a,b)=>/^(?:资料来源|资料来源\/(?:说明|证明)|来源|证明)$/u.test(a)?b:-1).filter(a=>a>=0);if(0===k.length){c.push(h),a+=1;continue}let l=a=>a.filter((a,b)=>!k.includes(b));for(c.push(g(l(j))),c.push(g(l(d(i)).map(a=>a||"---"))),a+=2;a<b.length&&e(b[a]||"");)c.push(g(l(d(b[a]||"")))),a+=1}return c.join("\n").replace(/资料来源\/(?:说明|证明)/gu,"")}let o=["资料未明确","系统暂未","项目资料暂未","暂未明确","待确认","待资料复核","待系统","未检索到","资料不足","无法确认","建议补充","可核验信息","知识库","COL"];function p(a){if(!/做法(?:执行|参照|详见|见|依据|按)/u.test(a))return{markdown:a,fixedCount:0};let b=0;return{markdown:a.split("\n").map(a=>/^\s*#{1,6}\s/u.test(a)||/^\s*\|/u.test(a)?a:a.replace(RegExp("(?:[,,]\\s*)?(?:构造做法|节点做法|做法)(?:执行|参照|详见|见|依据|按)[^。;!!??\\n]{0,30}(?:图集|国标\\s?[0-9]{1,4}[^。;!!??\\n]{0,16})(?=[。;!!??]|$)","gu"),()=>(b+=1,""))).join("\n"),fixedCount:b}}let q=/评标|投标|行贿|打招呼|递条子|廉洁|串标|围标|弄虚作假|干扰评标|纪律|澄清|中标|报价|清单计量|评审|保证金|开标|递交/u;async function r(a,b){if(!q.test(a))return a;let c=a.split("\n"),d=[];for(let a=0;a<c.length;a+=1){let b=c[a].trim();if(!(!b||/^\s*\|/u.test(b))){if(/^#{1,6}\s/u.test(b)){let c=b.replace(/^#{1,6}\s+/u,"");q.test(c)&&d.push({lineIndex:a,text:c,wholeLine:!0});continue}for(let b of c[a].split(/(?<=[。;;])/u)){let c=b.trim();c&&q.test(c)&&d.push({lineIndex:a,text:c,wholeLine:!1})}}}if(0===d.length)return a;let e=await b(d.map(a=>a.text)),g=new Set,h=new Map;for(let a=0;a<d.length;a+=1){let b=d[a];if(!((0,f.hh)(b.text)||e[a]))continue;if(b.wholeLine){g.add(b.lineIndex);continue}let c=h.get(b.lineIndex)||new Set;c.add(b.text),h.set(b.lineIndex,c)}return 0===g.size&&0===h.size?a:c.map((a,b)=>{if(g.has(b))return"";let c=h.get(b);return c?a.split(/(?<=[。;;])/u).filter(a=>!c.has(a.trim())).join(""):a}).join("\n")}function s(a,b){let c={"(":")","(":")","【":"】","「":"」"},d=[],e=[],f="";for(let g of a){if(f+=g,b.includes(g)&&0===e.length){d.push(f),f="";continue}let a=c[g];a?e.push(a):e.length>0&&g===e[e.length-1]&&e.pop()}return f&&d.push(f),d}function t(a){if(a.length<=380||/^\s*(#{1,6}\s+|[-*+]\s+|\|)/u.test(a))return a;let b=s(a,"。;").flatMap(a=>{let b=a.trim();return b?b.length>360?s(b,",,").map(a=>a.trim()).filter(Boolean):[b]:[]}),c=[],d="";for(let a of b)d&&d.length+a.length>360?(c.push(d),d=a):d+=a;return d&&c.push(d),c.join("\n\n")}function u(a){let b,c=a=>a.split("\n").filter(a=>a.length>380).length,d=c(a);if(0===d)return{markdown:a,splitCount:0};let e=a.split("\n"),f=e.findIndex(a=>/^#{1,2}\s*目录\s*$/u.test(a.trim()));if(f<0)b=e.map(t).join("\n");else{let a=e.length;for(let b=f+1;b<e.length;b+=1)if(/^#{1,2}\s+\S/u.test((e[b]??"").trim())){a=b;break}b=[...e.slice(0,f).map(t),...e.slice(f,a),...e.slice(a).map(t)].join("\n")}return{markdown:b,splitCount:d-c(b)}}function v(a){let b=a.split(/\r?\n/u),c=[];for(let a=0;a<b.length;a+=1){let d=b[a],e=d.trim(),g=/^(#{3,5})\s+/u.exec(e);if(!g){c.push(d);continue}let h=g[1].length,i=a+1,j=!1,k=0;for(;i<b.length;){let a=b[i].trim(),c=/^(#{1,6})\s+/u.exec(a);if(c){k=c[1].length;break}if(a){j=!0;break}i+=1}let l=f.V.test(e)&&4===h&&4===k;(j||k>h||l)&&c.push(d)}return c.join("\n")}function w(a){let b=a;for(let a=0;a<3;a+=1){let a=b.replace(/((施工概况|施工流程|施工方法)[::])\s*\*\*\2(?:[::])?\*\*[::]?/gu,"$1").replace(/(?<![\w|])\*\*(施工概况|施工流程|施工方法)(?:[::])\*\*[::]?/gu,"$1:").replace(/(?<![\w|])\*\*(施工概况|施工流程|施工方法)\*\*[::]/gu,"$1:");if(a===b)break;b=a}return b}function x(a){let b=a.split(/\r?\n/u),c=[];for(let a=0;a<b.length;a+=1){let d=b[a],e=d.trim(),f=(b[a+1]||"").trim();if(!e||e.startsWith("|")||e.startsWith("#")||!f.startsWith("|")){c.push(d);continue}let g=/(\|\s*[^|\n]{1,40}\s*){2,}\|\s*$/u.exec(e);if(!g){c.push(d);continue}let h=e.length-g[0].length,i=e.slice(0,h).trim();i&&c.push(i),c.push(g[0].trim())}return c.join("\n").replace(/\n{3,}/gu,"\n\n")}function y(a){return a.split(/\r?\n/u).map(a=>{let b=a.trim();return!b||/^#{1,6}\s+/u.test(b)||/^\d+(?:\.\d+)*\s+/u.test(b)||/^第[一二三四五六七八九十百千\d]+[章节]\s+/u.test(b)?a:a.replace(/([\u4e00-\u9fa5])[ \t\u00a0\u3000]+(?=[\u4e00-\u9fa5])/gu,"$1")}).join("\n")}function z(a){let b=a;return(b=(b=b.replace(/([\u4e00-\u9fa5A-Za-z]{2,16})工程工作包/gu,"$1工程")).replace(/(按|以|按每个|每个|的)工作包/gu,"$1专业工程")).replace(/工作包/gu,"专业工程")}function A(a){let b=a.split(/\r?\n/u),c=b.map(a=>{let b=/^#{3,4}\s+(.+)$/u.exec(a.trim());return b&&(0,e.mq)((0,e.GQ)((b[1]||"").trim()))?"":a});return c.every((a,c)=>a===b[c])?a:c.join("\n").replace(/\n{3,}/gu,"\n\n")}function B(a){let b=a.trim();return!!(/^(?:上表|本表)/u.test(b)&&/(?:不一致|修正为|应改为|更正为)/u.test(b)||/(?:全文|正文|文中)(?:不再出现|不得出现|不得再出现|不应出现|不会再出现)/u.test(b)||/不得出现跨章冲突|跨章冲突不得出现|不得与其他章节(?:矛盾|冲突)/u.test(b))}function C(a){return!!(/不得出现其他[^。;\n]{0,12}口径/u.test(a)||/[^。;\n]{0,10}口径必须(?:唯一|一致|统一)/u.test(a))}function D(a){let b=a.split(/\n\s*\n/u),c=[],d=!1;for(let a of b){if(a.split("\n").some(a=>/^#{1,6}\s/u.test(a.trim()))){let b=[];for(let c of a.split("\n")){let a=c.trim();if(!a||/^#{1,6}\s/u.test(a)){b.push(c);continue}if(B(a)){d=!0;continue}let e=c.split(/(?<=[。!?!?;;])/u),f=e.filter(a=>!C(a.trim()));f.length!==e.length&&(d=!0),b.push(f.join(""))}c.push(b.join("\n"));continue}if(B(a.replace(/\n/gu,""))){d=!0;continue}let b=a.split(/(?<=[。!?!?;;])/u),e=b.filter(a=>!C(a.replace(/\n/gu,"").trim()));e.length!==b.length&&(d=!0),c.push(e.join(""))}return d?c.filter(Boolean).join("\n\n"):a}function E(a){let b=a.split("\n"),c=new Map,d=new Map,e="",f=!1,g=b.map(a=>{let b=a.trim();if(/^#{1,6}\s/u.test(b)){let c=d.get(b)||0;return d.set(b,c+1),e=0===c?b:`${b}#${c}`,a}if(!b||/^\s*\|/u.test(b))return a;let g=a.split(/(?<=[。;;])/u).filter(a=>{let b=a.replace(/\s+/gu,"");if(b.length<30)return!0;let d=c.get(b);return void 0===d?(c.set(b,e),!0):d===e||(f=!0,!1)});return g.length!==a.split(/(?<=[。;;])/u).length&&(f=!0),g.join("")});return f?g.join("\n"):a}function F(a){let b=a.split(/\n{2,}/u),c=!1,d=b.map(a=>{let b=a.trim();if(!b||/^#{1,6}\s/u.test(b)||/^\s*\|/u.test(b))return a;let d=a.split(/(?<=[。;;])/u),e=new Set;return d.filter(a=>{let b=a.replace(/\s+/gu,"");return b.length<20||(e.has(b)?(c=!0,!1):(e.add(b),!0))}).join("")});return c?d.join("\n\n"):a}function G(a,b){var c,e;let g=z(a);return c=g=(g=g.replace(/^\s*本表依据项目图谱[^\n。]*[。.]\s*$/gmu,"").replace(/^\s*本表依据(?:招标文件|工程量清单|施工区段|质量目标|计划工期|项目图谱|危险源辨识|材料设备清单|现场条件|图纸资料|图纸设计说明)[^\n。]*[。.]\s*$/gmu,"").replace(/^\s*表中事项应纳入[^\n。]*[。.]\s*$/gmu,"").replace(/^\s*正式输出的表格\/清单必须形成[^\n。]*[。.]\s*$/gmu,"").replace(/\n{3,}/gu,"\n\n").trim()).replace(/【修复任务包】[\s\S]*?(?=\n#{1,3}\s|\n\*\*|\n\|\s|$)/gu,"").replace(/^修复类型:.*$/gmu,"").replace(/^修复对象:.*$/gmu,"").replace(/^问题:【修复任务包】[\s\S]*?(?=\n#{1,3}\s|\n\*\*|\n\|\s|$)/gu,"").replace(/^输出要求:.*$/gmu,"").replace(/重新生成/gu,"补充完善").replace(/见招标公告|见投标人须知前附表/gu,"按已确认的招标边界和施工条件执行").replace(/见招标文件/gu,"按本项目招标文件已明确的相应条款执行").replace(/招标范围:/gu,"施工范围:").replace(/主要承包人案|承包人案/gu,a=>a.replace(/承包人案/gu,"施工方案")).replace(/施工方(?!案|法|式|针|向|面)/gu,"承包人").replace(/按图纸/gu,"依据经确认的设计文件和图纸内容组织实施").replace(/按设计要求/gu,"依据设计文件明确的构造、材料、尺寸和验收要求执行").replace(/按(?:资料|文件|说明)/gu,"按设计文件及批准的施工方案要求").replace(/满足(?:相关|有关)?要求/gu,"满足本项目已明确的质量、安全、技术和验收控制要求").replace(/本节(?:将|主要|重点)?/gu,"").replace(/本章将/gu,"").replace(/根据需要|视情况|结合实际情况/gu,"根据现场实际情况和审批后的施工安排确定").replace(/相关要求/gu,"本项目已明确的质量、安全、技术和验收要求").replace(/要求要求/gu,"要求").replace(/确定确定/gu,"确定"),e=g=o.some(a=>c.includes(a))?c.split("\n").map(a=>/^\s*#{1,6}\s/u.test(a)||/^\s*\|/u.test(a)||!o.some(b=>a.includes(b))?a:a.split(/(?<=[。;;])/u).filter(a=>!o.some(b=>a.includes(b))).join("")).join("\n"):c,g=(g=!f.Kd.some(a=>e.includes(a))&&!/纪律|廉洁/u.test(e)?e:e.split("\n").map(a=>{let b=a.trim(),c=/^#{1,6}\s/u.test(b);return/^\s*\|/u.test(b)?a:c?(0,f.hh)(b.replace(/^#{1,6}\s+/u,""))?"":a:a.split(/(?<=[。;;])/u).filter(a=>!(0,f.hh)(a)).join("")}).join("\n")).split("\n").map(t).join("\n"),g=(0,d.wi)(g),g=x(g=(0,d.Re)(g)),g=(0,d.z1)(g),g=(0,d.Bl)(g),g=function(a){let b=new Map,c=!1,d=a.split("\n").map(a=>{let d=a.trim();return/^#{1,6}\s/u.test(d)||/^\s*\|/u.test(d)?a:a.split(/(?<=[。;;])/u).filter(a=>{let d=a.replace(/\s+/gu,"");if(d.length<12)return!0;let e=b.get(d)||0;return b.set(d,e+1),!(e+1>2)||(c=!0,!1)}).join("")});return c?d.join("\n"):a}(g=F(g=E(g=w(g=y(g=v(g=(0,f.wq)(g))))))),g=(0,d.cf)(g),D(g=A(g=(g=function(a){let b=a.split("\n"),c=new Set,d=new Set,e=[],f=[],g=()=>{let a=e.join("").replace(/\s+/gu,"");a.length>=24&&(c.has(a)?f.forEach(a=>d.add(a)):c.add(a)),e=[],f=[]};return(b.forEach((a,b)=>{let c=a.trim();if(!c||/^#{1,6}\s/u.test(c)||/^\s*\|/u.test(c))return void g();if(/^[-*•]\s/u.test(c)){g(),e=[c],f=[b],g();return}e.push(c),f.push(b)}),g(),0===d.size)?a:b.filter((a,b)=>!d.has(b)).join("\n")}(g=(0,d.p8)(g))).replace(/\n{3,}/gu,"\n\n"))).trim()}function H(a){return D(A(v((0,f.wq)((0,f.jM)((0,d.cf)((0,d.p8)(w(y(x(z(F(E(a)))))))))))))}function I(a,b){let c=a.chapterPrompts.filter(a=>"writer"===a.category||"chapter"===a.category||"formatting"===a.category),d=[...a.writerPrompts,...c,...a.formattingPrompts],e=a.writerPrompts[0],f=d.map(a=>`${"writer"===a.category?"写作控制提示词":a.category}|${a.roleId}|${a.name}|${a.content.length} 字符`),h=(0,g.fC)(a.writerPrompts),i=(0,g.fC)([...c,...a.formattingPrompts]);return{primaryPromptId:e?.id,primaryWriter:e,prompts:d,promptTexts:[h?`【最高优先级:配置写作主控提示词】
|
|
15
15
|
${h}`:"",i?`【章节/格式提示词】
|
|
16
16
|
${i}`:""].filter(Boolean).join("\n\n"),promptDetails:f}}},18292:(a,b,c)=>{c.d(b,{AI:()=>k,br:()=>m,hS:()=>l,rf:()=>j});var d=c(1218),e=c(22157),f=c(87635);function g(a){return(0,d.de)(a).replace(/[\s,,.。::;;||()()《》<>【】"“”'‘’\-—–―─-〜~·•]/gu,"").split("[").join("").split("]").join("").toLowerCase()}function h(a){return/工程造价|造价|报价|投标报价|报价明细|综合单价|单价|合价|金额|税率|增值税|利润|预留金|暂列金额|最高投标限价|招标控制价|合同估算价|合同估算价格|投资估算|估算价/u.test(a)}function i(a){let b=(0,f.ml)((0,e.lG)(a));return!b||/资料未明确|系统暂未从知识库确认|未确认|待确认|无|暂无/u.test(b)||/###|第\s*\d+\s*页|共\s*\d+\s*页|新版交易系统|操作帮助|登录页面|见招标公告|未尽事宜|详见图纸|招标文件补疑|政府相关文件|规范等其它资料/u.test(b)||/^\d+(?:\.\d+)?\s*(?:mm|cm|m|㎡|m²|m3|m³|%|元|万元)?$/iu.test(b)||h(b)||b.length>160?"":b}function j(a,b){return!!(/\.(?:docx?|pdf|xlsx?|zip|rar)$/iu.test(b)||/[A-Z]{8,}/u.test(b)||/([\u4e00-\u9fa5]{2,3})\1/u.test(b)||/[((](?:公章|签章|签名|盖章)[))]|住所:|法定代表人:|委托代理人:|年月日/u.test(b)||/[::]$/u.test(b)||/^见.{0,12}(?:前附表|须知|公告|文件)/u.test(b)||/^(?:项目所在地|项目名称|工程名称|标段名称|分部小计|小计|合计|总计|计量单位)$/u.test(b)||/^(?:项目编号|招标项目编号|标段名称|询标日期)[::]/u.test(b)||/招标人|建设单位|发包人/u.test(a)&&/投标|参加|承担|费用|协商|贯彻|方针|为了/u.test(b)||/[\u3400-\u4DBF\uE000-\uF8FF]/u.test(b)||/^[A-Z]\d[A-Z]\d/u.test(b)||/^[((][^))]{1,12}[))]$/u.test(b)&&/名称|编号|单位|日期|签章|公章|甲方|乙方/u.test(b)||/招标人|建设单位|发包人|项目名称|工程名称/u.test(a)&&/^(?:将报|拟报|应按|应报|须报|须按|拟按)/u.test(b)||/^(?:本项目|项目|工程)(?:位于|地处|坐落在?|选址在?)/u.test(b)||/^[((]?[一二三四五六七八九十]{1,3}[))]?是/u.test(b))}function k(a,b){let c=g(a),d=g(b);if(!d||d.length<2||c.includes(d)||d.length>=10&&c.includes(d.slice(0,Math.floor(.7*d.length))))return!0;let e=b.match(/\d+(?:\.\d+)?\s*(?:日历天|天|个月|月|年|万元|元|平方米|㎡|m²|立方米|m³|米|m|mm|cm|台|套|人|项|%|MPa|kPa)?/giu)||[];if(e.length>0&&e.some(a=>g(a).length>=2&&c.includes(g(a))))return!0;let f=b.split(/[、,,;;。::\s]+/u).map(a=>g(a.replace(/等$/u,""))).filter(a=>a.length>=4);if(f.length>=2){let a=f.filter(a=>c.includes(a)).reduce((a,b)=>a+b.length,0);if(a>=.5*d.length&&a>=8)return!0}return!1}function l(a,b){let c=b.filter(a=>{let b=`${a.key||""}${a.fieldName||""}${a.fieldId||""}`,c=(0,e.lG)(a.value);return!(h(`${b}${c}`)||!i(c)||j(b,c)||/项目名称|工程名称/u.test(b)&&("table"===a.processingType||"structured_data"===a.processingType||/bill_of_quantities/u.test(a.roleId||""))||/第\s*\d+\s*页|新版交易系统|操作帮助|见招标公告|未尽事宜|详见图纸|招标文件补疑|政府相关文件|规范等其它资料/u.test(`${b}${c}${a.sourceFile||""}`))&&(/项目名称|工程名称|项目编号|招标项目编号|招标人|建设单位|发包人|建设地点|建设规模|招标范围|计划工期|合同工期|质量标准|质量目标/u.test(b)||/危大|安全|资源|材料|机械|设备/u.test(b)&&!/^\d+(?:\.\d+)?\s*(?:mm|cm|m|㎡|m²|m3|m³|%|元|万元)?$/iu.test(c)||/面积|占地|建筑面积|长度|宽度|高度|厚度|深度|强度|等级|坡度|管径|直径|规格|跨度|天数|工期|周长|体积|重量/u.test(b)&&/^\d+(?:\.\d+)?\s*(?:㎡|m²|m2|m³|m3|m|mm|cm|km|MPa|kPa|kN|天|日历天|日|级|%|台|套|座|个|t|kg)/iu.test(c))}),f=new Set,g=[];for(let b of c){let c=(0,d.De)(i(b.value));if(!c)continue;let e=b.fieldName||b.key||b.fieldId||"资料事实",h=`${e}:${c}`;!f.has(h)&&(f.add(h),k(a,c)||g.push({fact:b,label:e,value:c}))}return g}function m(a,b){return l(a,b).map(a=>({level:"warning",message:`已确认事实未在正文中落位:${a.label}=${a.value}`,suggestion:"请将该事实自然写入对应章节或小节,不得改变原始数值和单位。"}))}},21702:(a,b,c)=>{c.d(b,{Cd:()=>j,J5:()=>g,KM:()=>q,SA:()=>l,jk:()=>o,mY:()=>r,mv:()=>m,o9:()=>p,oM:()=>k});var d=c(78217),e=c(40299),f=c(52922);let g=1.5,h=/\d+(?:\.\d+)?\s*(?:m²|㎡|平方米|m³|m3|立方米|km|mm|cm|m|kg|t|吨|层|栋|日历天|天|%|台|套|根|处|个|kV|kW|MPa|kN|℃|次|遍|道|户|座|米|小时|min|分钟)/giu;function i(a){return new Set(a.match(h)||[]).size}function j(a){let b=(0,d.V7)(a),c=i(a),e=b>0?Math.ceil(b/1e3*g):0,f=b>0?Math.round(c/b*1e5)/100:0;return{chars:b,params:c,per1000:f,required:e,gap:b>0&&c<e}}function k(a,b){let c=j(a),d=i(b);return{verdict:c,materialParams:d,blocking:c.gap&&d>=c.required}}async function l(a){let b=(0,f.cs)(a);if(0===b.length)return{totalSentences:0,fillerSentences:0,fillerRatio:0,vagueCount:0,fillerDetails:[]};let c=await (0,f.w7)(b),d=c.map(a=>a.filler),e=d.filter(Boolean).length;return{totalSentences:b.length,fillerSentences:e,fillerRatio:e/b.length,vagueCount:c.filter(a=>a.vague).length,fillerDetails:[...new Set(b.filter((a,b)=>d[b]))].slice(0,12)}}function m(a){return a.fillerRatio>.1||a.vagueCount>=3}let n=/重难点|重点难点|难点分析|难点|工程特点|施工特点|项目特点/u;function o(a){return n.test(a)}async function p(a){let b=a.split("\n").filter(a=>!/^\s*#{1,6}\s/u.test(a)).join("\n"),c=(0,f.ge)(b);if(0===c.length)return{entries:0,bothRatio:1,missing:[]};let d=await (0,f.G5)(c);return{entries:c.length,bothRatio:d.ratio,missing:d.details.filter(a=>!a.attributed||!a.quantified).slice(0,8)}}function q(a){return a.entries>0&&a.bothRatio<.5}function r(a){return a.split("\n").map(a=>a.trim()).filter(a=>a.length>0&&e.Rg.test(a)).slice(0,5)}},22213:(a,b,c)=>{c.d(b,{Bk:()=>u,Ep:()=>t,I6:()=>x,KJ:()=>C,ab:()=>z,ap:()=>E,eB:()=>y,eK:()=>B,eL:()=>n,hL:()=>G,iA:()=>w,qj:()=>A,sh:()=>v,xu:()=>o,zJ:()=>D,zX:()=>F});var d=c(70933),e=c(1218);c(78217),c(70208);var f=c(22157),g=c(3063);function h(a){return a.replace(/^#{3,4}\s+.*\n+/u,"").trim()}function i(a,b){let c=a.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&"),d=b.match(RegExp(`^#{3,4}\\s+(?:\\d+(?:\\.\\d+)*\\s+)?${c}\\s*\\n([\\s\\S]*?)(?=^###\\s+|^##\\s+|(?![\\s\\S]))`,"mu"));return d?d[0]:b}function j(a,b){let c=b?i(b,a):a;return/^####\s+\S+/mu.test(c)}function k(a){return(0,d.eE)(a).replace(/#{2,6}\s*[^;;。\n]+/gu,"").replace(/资料内容事实[;;::]?/gu,"").replace(/\s+/gu," ").trim()}function l(a){let b=k(a);return!(!b||b.length<4||b.length>120||/资料内容事实|#{2,6}|未尽事宜|项目编号\s*[::]?\s*[一二三四五六七八九十]?$/u.test(b)||/本项目为|总建筑面积|保留现状|专业施工内容统筹|招标文件列明|招标范围还包含|具备有效的.*资质/u.test(b)||/未注明|以图纸为准|按设计要求确定/u.test(b)&&!/\d/u.test(b))&&(!((b.match(/工程|维修|改造|安装|设备/gu)||[]).length>=4)||!!/\d|㎡|m2|m²|mm|厚|验收|检测|调试|试验|复试/u.test(b))&&/\d|㎡|m2|m²|mm|厚|工程|材料|设备|系统|范围|改造|维修|加固|消防|水电|智能化|管网|屋面|门窗|验收|检测|调试/u.test(b)}function m(a){return a.split(/→|;|;|、|,|,/u).map(a=>k(a)).filter(a=>a&&a.length>=2&&a.length<=40).filter(a=>!/^按?施工准备$|^实施$|^检查$|^验收组织?$|^按规范和资料闭环$/u.test(a)).filter(a=>!/本项目为|总建筑面积|保留现状|专业施工内容统筹|招标文件列明|招标范围|未尽事宜|具备有效/u.test(a))}function n(a){let b=[];for(let c of a){let a=c.replace(/[::,,、;;||()()]/gu," ").replace(/\s+/gu," ").trim(),d=new Set(a.split(" ").filter(a=>a.length>=2)),e=new Set([...a.match(/\d+[A-Z]{2,}[A-Za-z0-9]*/gu)||[],...a.match(/\d+(?:\.\d+)?\s*(?:台|套|个|座|㎡|m2|m²|m³|m3|kg|t|根|扇|樘|块|件|组|mm)/gu)||[]]),f=a.split(" ")[0]||"",g=b.findIndex(b=>{if(b.norm.includes(a)||a.includes(b.norm))return!0;if(!([...e].some(a=>b.models.has(a))||[...b.models].some(a=>e.has(a))))return!1;let c=(a,b)=>[...a].every(a=>b.has(a));return c(d,b.tokens)||c(b.tokens,d)||f===b.norm.split(" ")[0]});if(g>=0){let f=b[g];(d.size>f.tokens.size||d.size===f.tokens.size&&c.length<f.text.length)&&(b[g]={text:c,norm:a,tokens:d,models:e})}else b.push({text:c,norm:a,tokens:d,models:e})}return b.map(a=>a.text)}function o(a,b){let c=b.map(a=>a.replace(/[::,,、;;||()()]/gu," ").replace(/\s+/gu," ").trim()),d=/安装|敷设|浇筑|砌筑|抹灰|回填|拆除|吊装|固定|连接|试验|调试|养护|压实|铺设|焊接|绑扎|涂刷|灌浆|开挖|预制|穿线|放线|找平|清底|防水|密封/u;return a.filter(a=>{if(/\d+(?:\.\d+)?\s*(?:台|套|个|座|㎡|m2|m²|m³|m3|kg|t|根|扇|樘|块|件|组)/u.test(a)||/[A-Z]+\d+/u.test(a)&&/箱|柜|泵|机组|风机|面板/u.test(a))return!1;let b=a.replace(/[::,,、;;||()()]/gu," ").replace(/\s+/gu," ").trim();return!!(b.length<=6&&d.test(b))||(b.length<4?!c.some(a=>a.includes(b)):!c.some(a=>a.includes(b)))})}function p(a){let b=k(a);return!b||(b.match(/工程|维修|改造|安装|设备|系统|管网|屋面|门窗|消防|智能化/gu)||[]).length>=5&&!/\d|㎡|m2|m²|mm|厚|验收|检测|调试|试验|复试|记录|报告|材料|设备|规格|标准|检验批/u.test(b)}function q(a){let b=/^(.{1,18}?)(等)([\s\S]{2,})$/u.exec(a);return!b||void 0===b[1]||void 0===b[3]||/电$/u.test(b[1])||/^级/u.test(b[3])?a:b[3].length>=3?b[3]:b[1].length>=3?b[1]:a}let r=/计价|费用|税金|规费|暂列|暂估|合计|汇总|小计|措施项目|其他项目|税金项目|金额|结算管理|竣工结算/u,s=/[[\]【】]/u;function t(a,b){let c=(function(a){let b=[],c=a.match(/施工工作包结构化数据:\s*(\[[^\n]*\])/u);if(c)try{for(let a of JSON.parse(c[1])){let c=k(a.name||""),d=k(a.scope||""),e=n([...a.quantities||[],...a.materials||[],...a.methods||[]].map(k).filter(l).filter(a=>!p(a))),f=o((a.process||[]).flatMap(m),e),g=(a.acceptance||[]).map(k).filter(a=>a&&!p(a));!(!c||/项目施工$|项目$|^\d{4}年度/u.test(c))&&(!d||/资料内容事实|#{2,6}/u.test(d)||b.push({name:c,scope:d,quantities:e,process:f,acceptance:g}))}if(b.length>0)return b}catch(a){console.warn(`[gen] 结构化工作包解析失败,回退正则提取(保真度下降):${a instanceof Error?a.message:String(a)}`),b.length=0}for(let c of a.split(/\r?\n/u).filter(a=>/^\d+\.\s+.+?|范围:/u.test(a))){let a=c.match(/^\d+\.\s+(.+?)|范围:(.+?)|工程量\/材料:(.+?)|流程:(.+?)|验收:(.+)$/u);if(!a)continue;let d=k(a[1]),e=k(a[2]),f=n(a[3].split(/[;;、,,]/u).map(a=>k(a)).filter(l).filter(a=>"按证据展开"!==a)),g=o(m(a[4]),f),h=a[5].split(/[;;、,,]/u).map(a=>k(a)).filter(a=>a&&"按规范和资料闭环"!==a).filter(a=>!p(a));!(!d||/项目施工$|项目$|^\d{4}年度/u.test(d))&&(!e||/资料内容事实|#{2,6}/u.test(e)||b.push({name:d,scope:e,quantities:f,process:g,acceptance:h}))}return b.slice(0,8)})(a).map(a=>a.name).filter(Boolean),d=function(a,b){let c=[a,...b.map(a=>a.content)].filter(Boolean),d=/工程|安装|系统|通风|空调|智能化|装修|幕墙|屋面|土方|基坑|地基|基础|结构|电气|给排水|消防|防水|设备|管网|道路|景观|绿化|公厕|厕所|过路涵|涵|清淤|沟塘|塘|小菜园|菜园|排水沟|水沟|花池|树池|挡墙|护栏/u,f=(()=>{for(let a of c){let b=/(?:项目名称|工程名称)[::\s为是]+([^\n。;;]{4,120})/u.exec(a);if(!b)continue;let c=(0,e.ir)(b[1]);if(c)return c}})();for(let a of c){let b=function(a){for(let b=0;b<a.length;){let c=a.indexOf("招标范围",b);if(c<0)break;let d=a.lastIndexOf("\n",c-1)+1;if(!/^\s*[-*]?\s*(?:\*\*)?\s*\[/u.test(a.slice(d,c)))return c;b=c+4}return -1}(a);if(b<0)continue;let c=a.slice(b,b+600);if(f){let a=c.split(/[。;;\n]/u).map(a=>a.trim()).filter(Boolean).filter(a=>!(0,e.PP)(a,f));a.length>0&&(c=a.join("。"))}let g=c,h=g.indexOf("包括但不限于"),i=(g=(g=h>=0?g.slice(h+6).replace(/^[::、,,;;\s]+/u,""):g.replace(/^[^、,,;;。]{0,60}?招标范围[::]?\s*/u,"")).replace(/(?:等)?图纸[、及]?清单范围内所有工程[。.]*/u,"")).replace(/([^)]*)/gu,"").split(/[、,,;;。]/u).map(a=>k(a).replace(/["“”']/gu,"")).filter(a=>a.length>=3&&a.length<=20).filter(a=>d.test(a)).map(a=>q(a)).filter(a=>a.length>=3&&a.length<=20).filter(a=>!/招标范围|图纸|清单|补疑|答疑|具体内容|包括但不限于|投标|专用合同|未尽事宜|工程量|约束|不得|仅指导|集中交代|矛盾|参数|数字/u.test(a)).filter(a=>!/^(?:包括|涵盖|重点实施|实施|建设范围覆盖|本项目建设|主要包含|主要实施|具体包括|分别为|共计|包含|涉及)/u.test(a)).filter(a=>!/以下|以上|如下|详见|具体内容/u.test(a)).filter(a=>!/^是否/u.test(a)).filter(a=>!/及其他|以及其他/u.test(a)).filter(a=>!s.test(a)).filter(a=>!r.test(a)),j=[];for(let a of i){let b=a.replace(/\s+/gu,"");j.some(a=>a.replace(/\s+/gu,"").includes(b)||b.includes(a.replace(/\s+/gu,"")))||j.push(a)}if(j.length>=3)return j.slice(0,12)}return[]}(a,b),f=function(a){let b=(0,e.qG)(a),c=(0,e.hn)(b),d=[],f=new Set;for(let a of c){let b=a.key.replace(/^清单条目:/u,"").trim();!(!b||b.length<2||b.length>24||r.test(b)||s.test(b))&&(f.has(b)||(f.add(b),d.push(b)))}return d.slice(0,12)}(b),g=[],h=a=>{let b=q(a.trim()),c=b.replace(/\s+/gu,"");return!(!c||/^(?:包括|涵盖|重点实施|实施以下|建设范围覆盖|本项目建设|主要包含|主要实施|具体包括|分别为|共计|包含|涉及|是否)/u.test(c)||/以下|以上|如下|详见|具体内容|及其他|以及其他/u.test(c)||/^\d{4}年度/u.test(c)||/施工图|设计图|详图|平面图|剖面图|立面图|大样图|图集/u.test(c)||c.length>20||g.some(a=>{let b=a.replace(/\s+/gu,"");return b.includes(c)||c.includes(b)}))&&(g.push(b),!0)};for(let a of c)h(a);for(let a of d){if(g.length>=12)break;h(a)}let i=/公厕|厕所|过路涵|涵洞|涵管|污水|排水沟|水沟|清淤|沟塘|塘|小菜园|菜园|菜地|花池|树池|挡墙|护栏|路灯|检查井|化粪池|泵站|生态池|生态塘|护坡|驳岸|栈道|步道/u;if(g.length<3)for(let a of[...f].sort((a,b)=>Number(i.test(b))-Number(i.test(a)))){if(g.length>=12)break;h(a)}else for(let a of f){if(g.length>=16)break;i.test(a)&&h(a)}return g}function u(a,b,c=3,d){let e=d??t(a,b);if(e.length<c)return"";let f=e.map((a,b)=>`#### ${b+1} ${a}`).join("\n");return[`【小节骨架锁定】本节内部结构已由系统锁定,必须且只能按以下 ${e.length} 个工作包小节标题逐项展开(标题一字不差,不得增删改、合并或调序):`,f,"每个工作包小节必须覆盖三方面要素:作业对象与工程量、工序顺序、施工方法(三要素缺一不可),融入连贯段落叙述;禁止以“施工概况/施工流程/施工方法/工艺流程”等结构标签充当 H4 小节标题或段落开头引导。\n要素写法:作业对象与工程量(作业对象与部位、工程量或规模、材料设备规格型号,数量类数值优先取工程量清单数据);工序顺序(先后顺序清晰,相邻小节不得同句式开头,同一句式全文不得反复使用,禁止以固定句模复读);施工方法(工艺做法、工艺参数(数值+单位)、验收检测与记录闭环)。\n融合叙述示例(仅为形式示意:数值必须替换为本项目绑定资料中的真实数值,句式不得照抄、须按本节资料重新组织):\n本工程室外道排范围覆盖园区内雨水、污水管网及检查井,主要工程量 HDPE 双壁波纹管 DN300 约 1200m、检查井 45 座,管材环刚度 SN8。施工按测量放线、沟槽开挖、管道基础、管道铺设、闭水试验、分层回填、压实度检测、验收的顺序组织;沟槽机械开挖配合人工清底,槽底标高偏差控制在\xb120mm以内,接口采用承插式橡胶圈连接,回填每层虚铺厚度不超过300mm、压实度不低于95%,压实度检测结果当日整理归档。\n数值来源优先级:工程量、材料规格、设备型号等数量类数值优先取工程量清单数据;清单未覆盖的参数(标高、坡率、构造做法等)才取图纸数据;禁止“按设计图纸执行”“详见设计图纸”“按设计文件确定”式概括话术——必须落到具体数值或具体规范条文。\n本节禁止出现 Markdown 表格;禁止写入重难点识别表、关键施工节点控制计划表等属于其他小节的内容;禁止只写综合概述而不展开工作包。"].join("\n")}function v(a,b,c=3){let d=t(a,b);return d.length>=c?d:[]}function w(a,b,c=3){let d=a.filter(a=>b.some(b=>{let c=(0,f.Sw)(b),d=(0,f.Sw)(a);return c.includes(d)||d.includes(c)}));return d.length>=c?d:[]}function x(a){let b=a.split(/\r?\n/u),c=[],d=!1;for(let a of b){let b=a.trim();if(/^\|.+\|\s*$/u.test(b)){d=!0;continue}if(d){if(""===b)continue;d=!1}c.push(a)}return c.join("\n")}function y(a,b,c=[]){let d=b.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&"),e=RegExp(`^#{3,4}\\s+(?:\\d+(?:\\.\\d+)*\\s+)?${d}\\s*$`,"u"),g=a.split("\n"),h=g.findIndex(a=>e.test(a.trim()));if(h<0)return a;let i=/^####\s+/u.test(g[h].trim()),j=c.map(f.Sw),k=[g[h]];for(let a=h+1;a<g.length;a+=1){let b=g[a].trim();if(/^#{2,3}\s+/u.test(b))break;if(/^####\s+/u.test(b)&&i){let a=b.replace(/^####\s+(?:\d+(?:\.\d+)*\s+)?/u,""),c=(0,f.Sw)(a);if(!j.some(a=>c.includes(a)||a.includes(c)))break}k.push(g[a])}let l=k.join("\n"),m=x(l);return m===l?a:a.replace(l,m)}function z(a,b,c){let d=i(b,a),e=b.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&");if(!RegExp(`^#{3,4}\\s+(?:\\d+(?:\\.\\d+)*\\s+)?${e}\\s*$`,"u").test(d.split("\n")[0]?.trim()||""))return[];let g=(d.match(/^#{3,4}\s+(.+)$/gmu)||[]).map(a=>a.replace(/^#{3,4}\s+/u,""));return c.filter(a=>!g.some(b=>(0,f.Sw)(b).includes((0,f.Sw)(a))))}function A(a,b,c){let d=i(b,a),e=b.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&");if(!RegExp(`^#{3,4}\\s+(?:\\d+(?:\\.\\d+)*\\s+)?${e}\\s*$`,"u").test(d.split("\n")[0]?.trim()||""))return a;let g=d.split(/^####\s+/gmu),h=g.shift()||"",j=[];for(let a of g){let b=a.split("\n"),d=(b[0]||"").trim(),e=(0,f.Sw)(d),g=b.slice(1).join("\n").replace(/^#{1,6}\s+.+$/gmu,"").trim();c.some(a=>e.includes((0,f.Sw)(a)))&&g.length<80||j.push(a)}let k=`${h}${j.length>0?"#### ":""}${j.join("#### ")}`;return k===d?a:a.replace(d,k)}function B(a,b){if(/项目主要施工内容/u.test(a)){var c;let d=i(a,b);if(!j(b,a))return`${a} 缺少施工工作包三级小节`;if(!function(a){let b=h(a);return((b.match(/^####\s+(?:\d+\.\d+\.\d+\s+)?[一二三四五六七八九十\d]*[、..]?\s*\S+/gmu)||[]).length||(b.match(/^[一二三四五六七八九十]+、\S+/gmu)||[]).length)>=3&&(0,f.az)(b)}(d))return`${a} 未按施工工作包展开`;let e=d.split(/^####\s+/gmu).slice(1).map(a=>a.trim()).filter(Boolean);if(e.some(a=>!(0,f.az)(a)))return`${a} 存在工作包内容要素不全`;if(c=h(d),/资料内容事实|(?:^#{2,3}|^#{5,6})\s+|\*\*[^*]+\*\*|未尽事宜|专业施工内容统筹|招标范围还包含|具备有效的.*资质|安全生产考核合格证书|注册建造师|联合体投标|项目经理要求|投标人资格|投标人资质|营业执照|安全生产许可证|资格审查|资格后审|中标通知书|签订合同|电子交易系统|投标保证金|评标办法|踏勘现场|投标预备会/mu.test(c))return`${a} 存在脏事实或标题污染`;if(e.some(a=>/施工流程[::][\s\S]*?(未尽事宜|本项目为|总建筑面积|保留现状|专业施工内容统筹|招标文件列明|招标范围|安全生产考核合格证书|联合体投标|注册建造师)/u.test(a)))return`${a} 存在工作包流程污染`;if(!(0,f.Z1)(d)||e.some(a=>{let b=a.match(/施工方法[::]([\s\S]*?)(?=\n施工|$)/u)?.[1]||"",c=a.match(/(?:施工流程|工艺流程)[::]([\s\S]*?)(?=\n施工|$)/u)?.[1]||"";return(b.trim().length>0||c.trim().length>0)&&!(0,f.Z1)(b+c)}))return`${a} 存在工作包工序顺序表达缺失`;if(e.some(a=>{let b=a.match(/施工方法[::]([\s\S]*?)(?=\n施工|$)/u)?.[1]||"";if(!/施工方法[::]/u.test(a))return!1;if(/安全生产考核合格证书|联合体投标|注册建造师|投标人资格|资质要求|营业执照|安全生产许可证/u.test(b)||b.length<30)return!0;let c=(b.match(/[::]\s*\d/gu)||[]).length;return/\d/u.test(b)&&!/→|采用|组织|浇筑|铺设|焊接|绑扎|砌筑|抹灰|涂刷|敷设|压实|养护|试验|调试|测量|放线|验收|检测|复试|记录|报告|吊装|灌注|埋设|嵌缝/u.test(b)&&(c>=2||!/安装|固定|挂墙|机具/u.test(b))||(b.match(/工程|维修|改造|安装|设备/gu)||[]).length>=4&&!/\d|㎡|m2|m²|mm|厚|验收|检测|调试|试验|复试|记录|报告/u.test(b)}))return`${a} 存在工作包施工方法过弱`;let g=h(d);if(/^\s*\|.+\|\s*$/mu.test(g))return`${a} 不应使用 Markdown 表格替代工作包正文`}if(g.gG.test(a)){let c=i(a,b);if(!j(b,a))return`${a} 缺少分项工程方案三级小节`;let d=c.split(/^####\s+/gmu).slice(1).map(a=>a.trim()).filter(Boolean);if(0===d.length)return`${a} 未按分项工程方案展开`;if(d.some(a=>!(0,f.az)(a)))return`${a} 存在分项方案内容要素不全`;if(!(0,f.Z1)(c)||d.some(a=>{let b=a.match(/施工方法[::]([\s\S]*?)(?=\n施工|$)/u)?.[1]||"",c=a.match(/(?:施工流程|工艺流程)[::]([\s\S]*?)(?=\n施工|$)/u)?.[1]||"";return(b.trim().length>0||c.trim().length>0)&&!(0,f.Z1)(b+c)}))return`${a} 存在分项方案工序顺序表达缺失`}return""}function C(a,b){let c=b;for(let b of a){if(/项目主要施工内容/u.test(b))continue;let a=b.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&");c=c.replace(RegExp(`(^###\\s+(?:\\d+\\.\\d+\\s+)?${a}\\s*\\n)([\\s\\S]*?)(?=^###\\s+|^##\\s+|$)`,"gmu"),(a,c,d)=>{if(/^####\s+\S+/mu.test(d))return`${c}${d}`;let e=c.replace(/^#{1,6}[\s]*/,"").replace(/^\d+(?:\.\d+)*[\s]*/,"").trim();return(0,f.Sw)(e)===(0,f.Sw)(b)?`${c}
|
|
17
17
|
${d.trim()}
|
|
@@ -146,7 +146,7 @@ ${w}`),drawingNote:"总平面布置图/横道图/组织机构图为后期人工
|
|
|
146
146
|
注意:①权威值是该数据的项目级唯一锁定值(工程量清单汇总/蓝图推导);②句中工程对象(村名/分项/单体/部位)限定了数值作用范围时,该数值不是项目级口径,判 consistent。
|
|
147
147
|
只返回 JSON,不要返回 markdown。`,i={type:"object",required:["judgments"],properties:{judgments:{type:"array",minItems:1,items:{type:"object",properties:{id:{type:"string",minLength:1,required:!0},conclusion:{type:"string",minLength:1,required:!0},rationale:{type:"string",minLength:1,maxLength:300,required:!0}}}}}};function j(a,b,c=0){let d=Math.max(a.lastIndexOf("。",Math.max(0,b-1)),a.lastIndexOf("\n",Math.max(0,b-1)))+1,e=Math.max(a.lastIndexOf("。",Math.max(0,d-1)),a.lastIndexOf("\n",Math.max(0,d-1)))+1,f=a.lastIndexOf("\n\n",b),g=a.indexOf("。",b);-1===g&&(g=a.length);let h=a.indexOf("\n",b);-1===h&&(h=a.length);let i=Math.max(-1===f?0:f+2,e,b-220),k=Math.max(Math.min(g,h)+1,b+c);return a.slice(i,k).trim()}function k(a){return[a.kind,a.subject,a.value,a.unit,a.authority,a.facts?.join("|")??"",(0,d.c6)(a.sentence)].join("\xa7")}async function l(a,b={}){let c,d=new Map,j=[];for(let b of a){let a=f.get(k(b));a?d.set(b.id,{...a,id:b.id}):j.push(b)}if(0===j.length)return{records:d};let m=b.invokeJson??((a,c)=>(0,e.bb)(a,c,{temperature:0,diagnostics:b.diagnostics,signal:b.signal,schema:i,prefixKey:"citation-adjudication"}));for(let a=0;a<j.length;a+=40){let b,e=j.slice(a,a+40);try{b=await m(h,function(a){let b=a.map(a=>JSON.stringify({id:a.id,数据类型:g[a.kind],数据主体:a.subject,权威值:`${a.authority}${a.unit}`,正文引用值:`${a.value}${a.unit}`,所在句:a.sentence,...a.facts&&a.facts.length>0?{判定辅助事实:a.facts}:{}}));return`逐条裁决以下 ${a.length} 条正文引用候选是否以该项目级数据口径陈述该数值:
|
|
148
148
|
${b.join("\n")}
|
|
149
|
-
只输出 JSON:{"judgments":[{"id":"...","conclusion":"consistent|conflict|uncertain","rationale":"不超过 60 字的依据"}]};每条候选必须给出结论,不得遗漏。`}(e))}catch(a){c=`语义判定调用异常:${a instanceof Error?a.message:String(a)}`,b=void 0}if(!b||!Array.isArray(b.judgments)){for(let a of(c=c??"语义判定调用失败(模型未返回有效 JSON)",e))d.set(a.id,{id:a.id,conclusion:"uncertain",rationale:c});continue}let i=new Map;for(let a of b.judgments)a&&"string"==typeof a.id&&i.set(a.id,a);for(let a of e){let b=i.get(a.id),c="string"==typeof b?.rationale&&b.rationale.trim()?b.rationale.trim().slice(0,120):b?"模型未给出判定依据":"模型输出缺少该候选的判定",e=b?.conclusion==="consistent"||b?.conclusion==="conflict"||b?.conclusion==="uncertain"?b.conclusion:"uncertain";"conflict"===e&&function(a){let b=/不冲突|并非冲突|不存在冲突|不予冲突|无冲突|(?:未|不|没有|不曾|从未|并非)(?:构成|形成|产生|发生|视为|属于|存在|发现|出现|检出|识别)[^,。;;、]{0,10}?(?:冲突|不一致)|非[^,。;;、]{0,12}?(?:口径|数值|陈述)/u;if(!b.test(a))return!1;let c=a.replace(RegExp(b.source,"gu"),"");return!/冲突|不一致/u.test(c)}(c)&&(e="consistent");let g={id:a.id,conclusion:e,rationale:c};d.set(a.id,g),b&&(f.size>=4e3&&f.clear(),f.set(k(a),g))}}return{records:d,unavailable:c}}let m=(a,b)=>l(a,b)},56963:(a,b,c)=>{c.d(b,{E7:()=>m,RT:()=>h,Rk:()=>o,fw:()=>f});var d=c(13145),e=c(91943);function f(a,b){if(!b)return"";let c=a.split(/\r?\n/u);for(let a=0;a<c.length;a+=1){if(!/^\s*\|/u.test(c[a])||!c[a].includes(b))continue;let d=a;for(;d>0&&/^\s*\|/u.test(c[d-1]);)d-=1;let e=a;for(;e+1<c.length&&/^\s*\|/u.test(c[e+1]);)e+=1;return c.slice(d,e+1).join("\n")}return""}function g(a){let b=a.map(a=>a.trim().replace(/^\|/u,"").replace(/\|$/u,"").split(/(?<!\\)\|/u).map(a=>(0,d.jG)(a.trim())));if(b.length<2)return{lines:a,removed:0};let c=b.length>1&&b[1].length>0&&b[1].every(a=>/^:?-{2,}:?$/u.test(a))?1:0,e=()=>Math.max(...b.map(a=>a.length)),f=0,g=!1,h=b[0],i=b.slice(c+1);if(i.length>0&&/表$/u.test(h[0]||"")&&i.every(a=>a.length>0&&""===a[a.length-1])&&i.some(a=>""!==a[0])){b[0]=h.slice(1);for(let a=c+1;a<b.length;a+=1)b[a]=b[a].slice(0,b[a].length-1);g=!0,f+=1}if(b.length>c+1){let a=[];for(let d=0;d<e();d+=1)b.slice(c+1).every(a=>""===(a[d]||""))&&a.push(d);if(a.length>0){for(let c of b)for(let b=a.length-1;b>=0;b-=1)c.splice(a[b],1);g=!0,f+=1}}return(b.length<=c+1&&(b.splice(0,b.length),g=!0,f+=1),g)?{lines:b.map((a,b)=>b===c?`| ${a.map(()=>"---").join(" | ")} |`:`| ${a.join(" | ")} |`),removed:f}:{lines:a,removed:0}}function h(a,b){let c=f(a,b);if(!c)return{content:a,removed:0};let d=g(c.split(/\r?\n/u));return d.removed>0?{content:a.replace(c,d.lines.join("\n")),removed:d.removed}:{content:a,removed:0}}let i=["上述要求与后续安排配套执行,执行情况由责任岗位登记归档。","下列要求应在上述安排基础上逐项落实,相关记录经复核后留存备查。","各项安排与上述要求同步执行,执行结果纳入日常台账统一管理。"],j={管控点位:["检查项目","管控事项","检查要点"],检查项目:["检查内容","检查要点","管控事项"],序号:["项次","编号","序次"]};function k(a){return a.trim().replace(/^\|/u,"").replace(/\|$/u,"").split(/(?<!\\)\|/u).map(a=>(0,d.jG)(a.trim()))}function l(a){let b=k(a);return b.length>=2&&b.every(a=>/^:?-{2,}:?$/u.test(a))}function m(a){let b=a.split(/\r?\n/u),c=[],d=0;for(;d<b.length;){if(!/^\s*\|/u.test(b[d])){c.push({kind:"text",line:b[d]}),d+=1;continue}let a=d;for(;a+1<b.length&&/^\s*\|/u.test(b[a+1]);)a+=1;c.push({kind:"table",parts:function(a){let b=[];for(let c=2;c<a.length;c+=1){if(!l(a[c])||l(a[c-1]))continue;let d=k(a[c-1]);!d[0]||d.every(a=>""===a)||b.push(c-1)}if(0===b.length)return[a];let c=[],d=0;for(let e of b)c.push(a.slice(d,e)),d=e;return c.push(a.slice(d)),c}(b.slice(d,a+1))}),d=a+1}let e=new Map;for(let a of c)if("table"===a.kind)for(let b of a.parts){if(!b.some(a=>l(a)))continue;let a=function(a){let b=a.trim(),c=b.startsWith("|")?b.slice(1):b;return(c.endsWith("|")?c.slice(0,-1):c).split("|").map(a=>a.split("**").join("").trim()).filter(a=>a.length>0).join("|")}(b[0]||"");if(!a)continue;let c=e.get(a);c?c.push(b):e.set(a,[b])}let f=0;for(let a of e.values())if(!(a.length<3))for(let b=1;b<a.length;b+=1){let c=j[function(a){let b=a.trim(),c=b.startsWith("|")?b.slice(1):b;for(let a of(c.endsWith("|")?c.slice(0,-1):c).split("|")){let b=a.split("**").join("").trim();if(b.length>0)return b}return""}(a[b][0]||"")];c&&0!==c.length&&(a[b][0]=function(a,b){let c=a.trim(),d=c.startsWith("|")?c.slice(1):c,e=(d.endsWith("|")?d.slice(0,-1):d).split("|"),f=e.findIndex(a=>a.trim().length>0);return f<0?a:(e[f]=` ${e[f].includes("**")?`**${b}**`:b} `,`|${e.join("|")}|`)}(a[b][0]||"",c[(b-1)%c.length]),f+=1)}let h=[],m=0,n=0,o=0;for(let a of c){if("text"===a.kind){h.push(a.line);continue}a.parts.length>1&&(n+=a.parts.length-1);let b=!1;for(let c of a.parts){let a=g(c);a.removed>0&&(m+=1),0!==a.lines.length&&(b&&(h.push("",i[o%i.length],""),o+=1),h.push(...a.lines),b=!0)}}return{markdown:h.join("\n"),removed:m,splitCount:n,variantCount:f}}function n(a){return(0,d.jG)(a).replace(/[\s*_`<>#]/gu,"")}function o(a,b){let c=a.replace(/\r\n?/gu,"\n").split("\n"),f=[],g=0,h=0;for(;h<c.length;){if(!/^\s*\|/u.test(c[h])){f.push(c[h]),h+=1;continue}let a=h;for(;a+1<c.length&&/^\s*\|/u.test(c[a+1]);)a+=1;let i=function(a,b,c){let f=a.map(a=>a.trim().replace(/^\|/u,"").replace(/\|$/u,"").split(/(?<!\\)\|/u).map(a=>(0,d.jG)(a.trim())));if(f.length<2)return;let g=f[1];if(!(g.length>0&&g.every(a=>/^:?-{2,}:?$/u.test(a))))return;let h=f[0],i=(h[0]||"").replace(/[\s*_]/gu,"");if(h.length<3||!/表$/u.test(i)||(i.match(/[\u4e00-\u9fa5]/gu)||[]).length<e.dM)return;let j=(h[0]||"").trim(),k=[...c].reverse().find(a=>a.trim());if(k&&n(k.replace(/^#{1,6}\s+/u,""))===n(j))return;let l=f.slice(2);if(l.length>0&&l.every(a=>a.length>0&&""===(a[a.length-1]||"").trim())&&l.some(a=>""!==(a[0]||"").trim())){let a=h.slice(1);return[j,"",`| ${a.join(" | ")} |`,`| ${a.map(()=>"---").join(" | ")} |`,...l.map(a=>`| ${a.slice(0,-1).join(" | ")} |`)]}let m=(b||[]).find(a=>a.title&&n(a.title)===n(j)),o=m?.fields?.[0]?.name?(0,d.jG)(m.fields[0].name).replace(/[\s\u3000]/gu,""):"";if(o)return[j,"",`| ${[o,...h.slice(1)].join(" | ")} |`,...a.slice(1)]}(c.slice(h,a+1),b,f);i?(f.push(...i),g+=1):f.push(...c.slice(h,a+1)),h=a+1}return{markdown:f.join("\n"),normalized:g}}},61239:(a,b,c)=>{let d;c.d(b,{Hpz:()=>f7.Hp,h0x:()=>e.h0,bVF:()=>e.bV,bsz:()=>f7.bs,OXS:()=>gW,QJx:()=>e.QJ,jGg:()=>e.jG,Bhi:()=>e.Bh,xmB:()=>e.xm,J5_:()=>e.J5});var e=c(23500),f=c(22157),g=c(46482),h=c(70933),i=c(78217),j=c(80439),k=c(52639),l=c(30055),m=c(87942),n=c(55807),o=c(76193),p=c(82437),q=c(1218),r=c(51190),s=c(44505),t=c(49350);async function u(a){let b=a.chapterDrafts.flatMap(a=>a.evidence||[]);b.length>0&&(a.allEvidence.push(...b),a.allEvidence.splice(0,a.allEvidence.length,...(0,h.QR)(a.allEvidence,{preservePinned:!0}))),(0,f.Te)(a.signal);let c=(0,h.QR)(a.allEvidence,{preservePinned:!0});a.allEvidence.splice(0,a.allEvidence.length,...c),a.facts=(0,q.B2)(a.template,a.allEvidence,a.documentSpec);let{localFacts:d,projectBasicFacts:e,preciseFacts:g,structuredTables:i}=(0,q.d6)({evidence:a.allEvidence,template:a.template,spec:a.documentSpec,profile:a.domainProfile,diagnostics:a.generationDiagnostics}),k=[...d,...e,...g],l={facts:[],stages:[{type:"fact_extraction",roleId:"llm-json",status:"skipped",message:"已有本地/资料事实覆盖主要必需字段,跳过 LLM 全量事实抽取"}]};if((0,q.N2)(k,a.template,a.documentSpec)){let b=(0,h.QR)(a.allEvidence,{preservePinned:!0});try{l=await (0,q.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 l.stages)(0,j.fx)(a.progressStages,b);let m=(0,r.UT)(a.allEvidence);for(let b of(a.structuredFacts=[...d,...e,...g,...l.facts,...m],a.governedStructuredFacts=(0,r.A)(a.structuredFacts,a.scopeConflicts??(0,r.KX)(a.structuredFacts)),a.governedStructuredFacts))a.facts[b.key]=`${(0,f.lG)(b.value)}(来源:${b.sourceFile},角色:${b.roleId})`;a.factsModel=await (0,q.d7)(a.governedStructuredFacts,i,a.missingItems,a.documentSpec,a.domainProfile);let n=(0,r.qD)({facts:a.governedStructuredFacts,projectRoot:a.projectRoot,requirement:a.requirement||"",templateId:a.template.id});a.factsModel.canonical=n,a.scheduleAuthority=(0,s.GG)(a.factsModel),a.assemblyRateAuthority=(0,s.hI)(a.factsModel),a.scaleSummary=(0,s.Pt)(a.factsModel),a.supportAuthority=(0,s.P3)(a.factsModel),a.decisionLockEntries=(0,t.Pd)({facts:[...d,...e,...g],evidence:a.allEvidence})}var v=c(31846),w=c(11248),x=c(95294),y=c(1358),z=c(10025);let A=/OCR|乱码|识别错误|无法确认|语义断裂|页码/u,B=/暂列金额|暂估价|预留金/u,C=/^\d+(?:\.\d+)?\s*(?:%|元|万元|亿元|项|个|天|月|年|周|小时|分钟|人|次|份|批|层)$|^\d{4}[.\-/]\d{1,2}$/u,D=/^[A-Za-z]{1,4}\s*[-–—]?\s*\d{1,3}$/u,E=/^(?:精确参数|技术参数|参数|参数规格|规格参数|数据|指标|其他|其它|备注|说明|未分类)$/u,F=/(?:GB|JGJ|CJJ|CJ|JG|JT|TB|SL|DL|HG|SH|YB|SY|GA|QB|WS|JC|NB|CECS|ISO|IEC|JTG|DB)\s*\/?\s*T?\s*[\d.]{4,}/iu,G=/^[A-Za-z]{1,3}\s*\d+(?:\.\d+)?[A-Za-z]?$/u,H=/[。!?]|[::]\s*[\d((]|(?:应|须|不得|必须|严禁|宜)[^,。;]{0,20}(?:采用|符合|按照|满足|设置|办理|执行|组织|进行|大于|小于|超过|支付|承担|参加|具备|具有|提供|建立|完成|取得|达到|构成|包括|包含|纳入|列入|签署|加盖)|[^,。;]{6,}为[^,。;]{6,}/u,I=/(?:有限公司|有限责任公司|股份公司|集团公司|公司|事务所|管理处|管理局|委员会|服务中心)$/u;function J(a){return`${a.key||""} ${a.fieldName||""} ${a.value||""}`.trim()}function K(a,b=new Set){if(!a)return{usable:[],noiseExcluded:[]};let c=a.factIndex?.parameterFacts?.length?a.factIndex.parameterFacts:a.preciseFacts||[],d=new Set,e=[],f=[];for(let a of c){if(!a)continue;let c=String(a.value||"").trim();if(!c||b.has((0,w.K3)(c))||A.test(J(a))||(0,q.ZR)(a)||B.test(J(a)))continue;let g=(0,x.MO)(c);if(g){f.push({fact:a,category:g});continue}if(function(a){let b=String(a.value||"").trim();if(!b)return"空值";let c=(0,p.j4)(b);if(c)return c;let d=String(a.key||"").trim();return E.test(d)&&!G.test(b)&&!F.test(b)&&C.test(b)?"裸量碎片(键为通用桶、值无概念词,正文无从逐字落位)":RegExp(z.yJ,"u").test(b)?"变更叙述(非可落位参数)":b.length>=18&&H.test(b)?"条文句(非短语级参数)":/(?:\d)\s*(?:\d)(?:\s*\d){2,}/u.test(b)&&/(?:北|南|东|西|侧|号|路|街|村|镇|区)\s*\d/u.test(b)?"OCR 数字复写残片":I.test(b)?"单位/机构名(非工程参数)":/[==]/u.test(b)?"表格公式/口径残片(非值)":/^《[^》]{2,60}》\s*[((]?[A-Z]{1,6}\d{0,4}\s*\/?\s*T?\s*[\d.]{3,}/u.test(b)?"规范引用条目(属编制依据,非工程参数)":!D.test(b)||F.test(b)||G.test(b)?void 0:"清单/图签编码"}(a)||N.test(String(a.key||"").trim()))continue;let h=`${a.key}|${(0,w.K3)(c)}`;d.has(h)||(d.add(h),e.push(a))}return{usable:e,noiseExcluded:f}}function L(a,b=[]){let c=new Set;for(let d of(0,v.TC)(a,b))for(let a of(0,v.XF)(d))c.add(a);return[...c]}function M(a,b){let c=J(a),d=0;for(let a of b)c.includes(a)&&(d+=1);return d}let N=/^(?:项目名称|项目编号|招标人|建设单位|建设地点|建设规模|计划工期|合同工期|总工期|开工日期|质量标准|质量目标|合同估算价|最高投标限价|招标范围|施工范围|投标人|开标|评标|资金来源|编制依据|安全生产许可证)/u,O=/[一—–‑﹣]/gu,P=/(?:约(?:为)?|大约|大概|左右|共计|总计|合计|合计为|不小于|不少于|不超过|不大于|应不少于)/gu,Q=/^(?:dn|de|d|φ|ф)/iu;function R(a,b,c=[],d={}){let{usable:e,noiseExcluded:f}=K(b,d.supersededValues),g=(0,w.K3)(a||""),h=g.replace(O,"-"),i=c.map(a=>L(a.title,a.sections||[])),j=[],k=[],l=[];for(let a of e){if(function(a,b,c=""){let d=(0,w.K3)(b);return!!d&&(!!(a.includes(d)||b.split(/[、,,;;/|]+/u).map(a=>(0,w.K3)(a)).filter(a=>a.length>=5).some(b=>a.includes(b)))||!!c&&function(a,b,c){let d=(0,w.K3)(c).replace(O,"-");if(d.length>=5&&b.includes(d))return!0;let e=d.replace(P,"");if(e.length>=5&&e!==d&&b.includes(e))return!0;let f=(0,y.Ih)(e);if(f.length>=5&&f!==e&&b.includes(f)||(0,y.Ih)(b).includes(f))return!0;if(Q.test(d)){let b=d.replace(Q,"dn");if(b.length>=4&&a.includes(b))return!0}return!1}(a,c,b))}(g,String(a.value),h)){j.push(a);continue}(i.some(b=>b.length>0&&M(a,b)>0)?k:l).push(a)}return{totalParams:e.length,used:j,relevantMissed:k,irrelevantMissed:l,noiseExcluded:f}}var S=c(18292);let T=["project_name","project_code","owner","project_location","project_scale","schedule_requirement","quality_standard","project_investment_estimate"],U=/资料未明确|系统暂未从知识库确认|项目资料暂未明确|^(?:无|暂无|未确认|待确认)$/u;function V(a){return/--|延期到|资料|附件|扫描|目录|汇总|打包|备份|\d{1,2}\.\d{1,2}/u.test(a)}function W(a){return a.replace(/[((]\d+[))]/gu,"").replace(/副本|最终版|扫描件|定稿/gu,"").replace(/[\s,。,.;;::《》“”‘’()()_-]+/gu,"").toLowerCase()}function X(a,b){let c=W(b);if(!c||c.length<4)return!0;let d=W(a);return!!d.includes(c)||c.length>=12&&d.includes(c.slice(0,Math.max(8,Math.floor(.72*c.length))))}let Y={规范包:/[括含]/u};var Z=c(73859),$=c(11628);function _(a){return a.replace(/[((]\d+[))]/gu,"").replace(/副本|最终版|扫描件|定稿/gu,"").replace(/\s+/gu,"").replace(/[,。,.;;::《》“”‘’()()_\-—–―─-〜~·•]/gu,"").toLowerCase()}let aa=/项目名称|工程名称|招标人|建设单位|发包人|采购人|招标单位|建设地点|工程地点|项目地点/u,ab=/bill_of_quantities|drawing|table/iu;function ac(a,b,c){if((0,p.j4)(a.trim())||(0,$.wI)(a)||(0,$.H8)(a)||/^(?:详|参见|见|依据)\s*[《【]/u.test(a.trim()))return"";let d=(0,$.pN)(a.trim()).trim();if(d!==a.trim()&&(0,p.j4)(d)||(0,Z.d2)(b,d)||(0,Z.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&&aa.test(c)){if(/所在地|地址|详见|见前附表|见招标/u.test(d)||/检查井|化粪池|机箱|碎石|路灯|井盖|监控系统|吊顶|抹灰|楼面|顶棚/u.test(d))return"";let a=d.replace(RegExp(`^${c.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&")}\\s*[::、,,..]?\\s*`,"u"),""),b=(0,$.Ui)(a||d);return!b||b.length>40||/第\s*页|共\s*页/u.test(b)||/[,。;;、]/u.test(b)||/[::]/u.test(b)||/^[((][^))]*[))]$/u.test(b)||/[/\\]|\.(?:pdf|docx?|xlsx?|zip)/iu.test(b)||/R\d+C\d+/u.test(b)||_(b)===_(c)?"":_(b)}let e=(0,$.De)(d),f=e.replace(/([^)]*)|\([^)]*\)/gu,"").replace(/\s+/gu,"").trim();if($.mf.test(f))return _(f.slice(0,40));let g=/\d+(?:\.\d+)?\s*(?:日历天|天|个月|月)/u.exec(e)?.[0],h=_(g&&/工期|总工期|合同工期|计划工期|施工周期|质保期|有效期|养护期/u.test(`${c||""} ${d}`)?g:d);return!h||h.length>80?"":h}var ad=c(40299),ae=c(95622),af=c(23760),ag=c(85016),ah=c(10751),ai=c(30836),aj=c(75251);let ak=[{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:"招标项目编号"}],al=/(?:劳动力|人力|用工|工人|民工|工种|普工|技工|管理人员|作业人员|人数|保勤|人员|班组|峰值|高峰|机械|机具|设备|车辆|台班|挖掘机|装载机|自卸|搅拌|塔吊|吊车|起重机|进度|工期|日历天|节点|阶段|开工|竣工|进场|退场|保养|维修|周转|材料|物资|水泥|砂石|碎石|钢筋|钢管|钢材|管材|灯具|路灯|电缆|光缆|通信|线缆|配线|配管|双绞|JDG|SC管|PC管|电源|电压|配电箱|照明|工作站|服务器|存储|工具|角磨|垫板|苗木|绿植|种植|养护期|保修|储备|堆放|供应|工程量|桩号|里程|K\d|管网|管道|胸径|地径|冠幅|冠丛|蓬径|工长|负责人|施工员|完成率|计划|拆除|人行道|侧石|缘石|杆件|砖基础|圈梁|构造柱|矩形柱|矩形梁|基础梁|过梁|有梁板|天沟|挑檐|雨篷|楼梯|散水|坡道|块料|墙面|吊顶|砌体|砖墙|多孔砖|实心砖|金属门|木质门|金属窗|百叶窗|百页窗|门窗|扶手|栏杆|桥架|管道基础|包管|压顶|独立基础|墙基|防潮层|给水|排水|空调|公厕|停车场|零星)/u,am=/(?:混凝土|砼|砂浆|强度|等级|标号|配合比|坍落度|水灰比|掺量|养护|浇筑|振捣|模板|支架|脚手架|搭接|锚固|保护层|垫层|找平|找坡|坡度|防水|涂膜|卷材|闭水|蓄水|淋水|回填|夯实|压实|分层|虚铺|沟槽|基槽|基坑|边坡|标高|高程|厚度|间距|埋深|覆土|管径|PPR|冷水管|井室|抹灰|腻子|涂料|面层|基层|安装|提升泵|扬程|焊接|法兰|试压|冲洗|消毒|调试|接地|防雷|避雷|绝缘|电阻|验收|检验|检测|试验|取样|频率|焊缝|防腐|除锈|开挖|平整|清底|预留|土方|路床|碾压|摊铺|温度|降雨|雨量|接头|管枕|接口|承插|热熔|连接|封堵|距地|挂墙|挂装|嵌墙|暗配|明配|暗装|敷设|过桥|随桥|排管|人孔|通棒|内径|管孔|垂直度|偏差|漏风|通风|壁厚|接缝|遍数|密植|分叉|栽植|浇灌|试运转|严密性|渗水|牌号|材质|分辨率|图像|稳压|压力降|风速|纵距|横距|步距|立杆|连墙件|支撑卡|施工现场|场区|硬化|围挡|反光|封闭段|渣土)/u;function an(a,b,c,d=16){let e=Math.max(0,b-d),f=Math.min(a.length,b+c+d);for(;e>0&&/[\d.]/u.test(a[e-1]??"");)e-=1;for(;f<a.length&&/[\d.]/u.test(a[f]??"");)f+=1;return a.slice(e,f)}function ao(a,b,c,d,e){if(0===e.length)return null;let f=/^[\d,,.]+(.*)$/u.exec(c)?.[1]?.trim()??"",g=an(a,b,c.length,40).replace(/\s+/gu," ");return(0,aj.j9)({total:Number(d),unit:f,context:g,values:e})}let ap=/(?:(?<![\d.])\d+\s*(?:座|辆|根|处|盏|株|道|孔|眼|樘|d(?![A-Za-z0-9]))|\d+(?:\.\d+)?\s*(?:%|℃|人日|工日)|(?:DN|Φ|φ|HRB|HPB)\s*\d+(?:\.\d+)?)/gu;function aq(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 ar(a){let b=[];for(let c of(0,ah.IV)(a).entries){for(let a of("number"==typeof c.value&&Number.isFinite(c.value)&&b.push({name:c.label,value:c.value,unit:c.unit,kind:"entry"}),c.groups??[]))Number.isFinite(a.value)&&b.push({name:c.label,value:a.value,unit:c.unit,kind:"group"});for(let a of c.specBreakdown??[])Number.isFinite(a.value)&&b.push({name:c.label,value:a.value,unit:c.unit,kind:"split"})}return b}function as(a){let b=a.match(/\d+(?:\.\d+)?/u);return b?b[0]:a.trim()}function at(a){return al.test(a)?"derivation-gap":am.test(a)?"process-gap":"unattributed"}function au(a){return a.after<=0?"success":a.rolledBack?"failed":"number"==typeof a.before&&Number.isFinite(a.before)?a.after<a.before?"partial":"failed":a.repaired?"partial":"failed"}async function av(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 aw=/(?:\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 ax(a){return a.replace(/\s+/gu,"").toLowerCase()}function ay(a){return[...new Set((a.match(aw)||[]).map(ax))]}function az(a){let b=new Set;for(let c of a.allEvidence)if(c.content)for(let a of ay((0,h.eE)(c.content)))b.add(a);let c=a.input.billFactLock;if(c)for(let a of c.entries){for(let c of ay(`${a.name} ${a.description} ${a.quantity}${a.unit}`))b.add(c);for(let c of(0,v.L4)(a.description))b.add(ax(c));for(let c of a.specQuantityPairs)for(let a of(b.add(ax(c.spec)),ay(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(ax(`${c.value}${c.unit||""}`)),c.specBreakdown??[]))"number"==typeof a.value&&Number.isFinite(a.value)&&b.add(ax(`${a.value}${c.unit||""}`));for(let c of ay(a))b.add(c)}for(let c of[...a.structuredFacts||[],...a.factsModel?.preciseFacts||[]])for(let a of ay((0,f.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 ay(c.join(" ")))b.add(a);let d=[...new Set(c.filter(a=>y.bX.test(a)))];if(0===d.length)continue;let e=[...new Set(c.filter(a=>y.CE.test(a)))];for(let a of d)for(let c of e)for(let d of ay(`${a}${c}`))b.add(d)}return b}async function aA(a){let b=az(a);if(0===b.size)return;let c=a.blueprintData?ar(a.blueprintData):[],d=function(a){let b=new Map;if(!a)return b;for(let c of[...a.derivationGaps,...a.processGaps]){let a=c.closureCandidates??[];if(0===a.length)continue;let d=ax(c.token);b.has(d)||b.set(d,`${a.join(" + ")} = ${c.token.replace(/\s+/gu,"")}`)}return b}(a.authorityAuditReport),e=a=>{let d=[];for(let e of a.split(/[。;;!!??\n]/u).map(a=>a.trim()).filter(Boolean).filter(a=>!a.startsWith("#")&&(a.match(aw)??[]).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(aw)||[];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))}(e))continue;let a=ay(e);if(0===a.length||a.every(a=>b.has(a)))continue;let f=a.filter(a=>!b.has(a)&&"unsourced"===(0,y.eS)({token:a,context:e}).kind),g=function(a,b,c){let d=new Set;if(0===c.length)return d;for(let e of b){let b=a.indexOf(e);if(b<0)continue;let f=a.slice(Math.max(0,b-24),b).replace(/\s+/gu," ");if(!aj.FW.test(f))continue;let g=/\d+(?:\.\d+)?/u.exec(e);if(!g)continue;let h=/^[\d,,.]+(.*)$/u.exec(e)?.[1]?.trim()??"",i=an(a,b,e.length,40).replace(/\s+/gu," ");(0,aj.j9)({total:Number(g[0]),unit:h,context:i,values:c})&&d.add(e)}return d}(e,f,c),h=f.filter(a=>!g.has(a));h.length>0&&d.push({sentence:e,tokens:h})}return d},f=new Map;for(let b of a.finalChapterDrafts){let a=e(b.content);a.length>0&&f.set(b.id,a)}let h=[...f.values()].reduce((a,b)=>a+b.length,0);if(0===h){let c=(0,j.X5)({type:"validation",roleId:"numeric-verification",status:"success",message:"正文数值确定性核对通过:全部正文数值均在资料原文/清单事实锁/蓝图参数桶中找到同值来源",details:[`数值权威库规模:${b.size} 个归一化 token`]},{subtitle:"数值确定性核对"});(0,j.fx)(a.progressStages,c),(0,j.fx)(a.finalGateRepairStages,c),a.emitProgress(a.finalChapterDrafts,a.progressStages);return}let i=0,k=0;for(let[b,c]of f){let f=a.finalChapterDrafts.findIndex(a=>a.id===b);if(f<0)continue;let h=a.finalChapterDrafts[f],l=h.content,m=c,n=e(l).length,o=0,p=!1,q=!1,r=[n];for(;m.length>0&&o<2;){o+=1;let c=(0,j.X5)({type:"llm_review",roleId:`agent-numeric-verification-${b}`,status:"running",message:`正文数值核对发现 ${m.length} 处疑似无来源数值,第 ${o} 轮定向修复中:${h.title}`,details:m.map(a=>`疑似:${a.sentence}(缺来源 token:${a.tokens.join("、")})`)},{subtitle:"数值确定性核对"});(0,j.fx)(a.progressStages,c),(0,j.fx)(a.finalGateRepairStages,c),a.emitProgress(a.finalChapterDrafts,a.progressStages);let i=m.flatMap(a=>a.tokens.map(a=>({token:a,hint:d.get(ax(a))}))).filter(a=>!!a.hint),k=["【正文数值定向核对修复】",...o>1?[`本轮为第 ${o} 轮(最多 2 轮):上一轮修复后仍有残留,无法确认来源的数值必须直接删除,禁止保留或替换为其他无来源数值。`]:[],"下列句子中的数值(标注「缺来源 token」)在项目绑定材料、工程量清单与蓝图中均找不到同值来源,属于疑似编造数值。请逐句核对并修复:","1. 若该数值在本章绑定证据中确实存在(仅表述口径不同),保持数值原样,只修正单位或表述;","2. 若该数值确属规范/标准常数(如试块留置、养护龄期、检测频次),保留数值并显性标注规范名称与编号(如「按《混凝土结构工程施工质量验收规范》GB 50204 规定,每100m\xb3留置一组试块」)——显性标注后即视为已溯源;",...i.length>0?["3. 若该数值已给出「具名分项和候选」(该值恰为若干具名权威分项之和),说明它是写手对权威分项的自算合计,**不得删除**:按分项显式还原为「分项名 数值+单位、…,合计 数值+单位」的分解表述(分项值必须取候选值原样,禁止改动候选数值),还原后即为可溯源的合法合计;"]:[],`${i.length>0?"4":"3"}. 其余情况必须删除该数值,改写为不带具体数值的过程控制表述(如「按设计要求」「分层碾压至压实度满足设计及规范要求」);`,"禁止把疑似数值替换为另一个同样无来源的数值;禁止改动句子的非数值部分;只做局部修改,不得新增、删除或合并小节。",m.map(a=>`- 疑似句:${a.sentence}(缺来源 token:${a.tokens.join("、")})`).join("\n"),...i.length>0?["具名分项和候选(按第 3 条还原分解,不得删除):",...i.map(a=>`- ${a.token.replace(/\s+/gu,"")}:${a.hint}`)]:[]].join("\n"),s=await av({originalContent:l,repairRound:"numeric-verification",diagnostics:a.generationDiagnostics,apply:async()=>{let b=await a.withProgressHeartbeat(()=>(0,g.l8)({template:a.template,chapter:{id:h.id,title:h.title,content:l,evidence:h.evidence,missingFacts:h.missingFacts,sections:h.sections},issues:m.map(a=>`疑似无来源数值:${a.sentence}(token:${a.tokens.join("、")})`),promptTexts:k,requirement:a.requirement,forbidDrawingImages:!1,bidComposition:a.bidComposition,diagnostics:a.generationDiagnostics,signal:a.signal,patchGuard:(0,g.XG)("numeric-verification",a.generationDiagnostics)}));return b.content&&b.content!==l?b.content:l},recheck:a=>[e(a).length]});s.rolledBack||s.content===l||(l=s.content,a.finalChapterDrafts[f]={...h,content:l},p=!0),s.rolledBack&&(q=!0);let t=e(l).length;if(r.push(t),0===t||t>=n||o>=2)break;n=t,m=e(l).slice(0,12)}p&&(i+=1);let s=e(l).length;k+=s;let t=(0,j.X5)({type:"llm_review",roleId:`agent-numeric-verification-${b}`,status:au({before:c.length,after:s,repaired:p,rolledBack:q}),message:0===s?`数值核对修复完成:${h.title}(${c.length} 处疑似数值已处理,残留轨迹 ${r.join("→")})`:p?`数值核对修复部分生效:${h.title}(疑似数值残留轨迹 ${r.join("→")},已执行 ${o} 轮定向修复(每章最多 2 轮);残留项以 warning 记录,不阻断交付)`:q?`数值核对修复已回滚:${h.title}(修复后疑似数值增多,保留修复前正文;残留 ${s} 处以 warning 记录,不阻断交付)`:`数值核对修复未生效:${h.title}(模型未产生有效修改;残留 ${s} 处以 warning 记录,不阻断交付)`,details:[...c.map(a=>`疑似:${a.sentence}`),s>0?`已执行 ${o} 轮定向修复,残留项以 warning 记录,不阻断交付`:""]},{subtitle:"数值确定性核对"});(0,j.fx)(a.progressStages,t),(0,j.fx)(a.finalGateRepairStages,t),a.emitProgress(a.finalChapterDrafts,a.progressStages)}i>0&&(a.finalMarkdown=a.rebuildFinalMarkdown(),await a.recomputeFinalValidationBundle()),a.generationDiagnostics.llm.lastInfo=`正文数值确定性核对:权威库 ${b.size} token,${h} 处疑似无来源数值,${i} 章完成定向修复,残留 ${k} 处(每章最多 2 轮收敛修复,未收敛残留以 warning 记录,不阻断交付)`}var aB=c(40693);function aC(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,w.K3)(`${a.fieldName||a.key} ${(0,f.lG)(a.value)}`),c=(0,w.K3)((0,f.lG)(a.value));return c&&c!==b?[b,c]:[b]}).join("\n")}function aD(a,b){let c=[{label:"工期",corpus:aC({...b,project:[],quality:[],safety:[],resources:[],preciseFacts:[],bills:[],drawings:[],rules:[],specifications:[]}),required:/工期|日历天|合同工期|计划工期/u},{label:"质量",corpus:aC({...b,project:[],schedule:[],safety:[],resources:[],preciseFacts:[],bills:[],drawings:[],rules:[],specifications:[]}),required:/质量目标|质量标准|验收|复验/u},{label:"安全",corpus:aC({...b,project:[],schedule:[],quality:[],resources:[],preciseFacts:[],bills:[],drawings:[],rules:[],specifications:[]}),required:/安全|文明|风险|应急/u},{label:"资源",corpus:aC({...b,project:[],schedule:[],quality:[],safety:[],preciseFacts:[],bills:[],drawings:[],rules:[],specifications:[]}),required:/资源|材料|设备|劳动力/u},{label:"工程量",corpus:aC({...b,project:[],schedule:[],quality:[],safety:[],resources:[],preciseFacts:[],drawings:[],rules:[],specifications:[]}),required:/工程量|清单|建筑面积|长度|吨|台|套|项/u}],d=(0,w.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 aE(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,i.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 aF(a,b){let c=[];if(!b)return c;let d=a.map(a=>`${a.title}
|
|
149
|
+
只输出 JSON:{"judgments":[{"id":"...","conclusion":"consistent|conflict|uncertain","rationale":"不超过 60 字的依据"}]};每条候选必须给出结论,不得遗漏。`}(e))}catch(a){c=`语义判定调用异常:${a instanceof Error?a.message:String(a)}`,b=void 0}if(!b||!Array.isArray(b.judgments)){for(let a of(c=c??"语义判定调用失败(模型未返回有效 JSON)",e))d.set(a.id,{id:a.id,conclusion:"uncertain",rationale:c});continue}let i=new Map;for(let a of b.judgments)a&&"string"==typeof a.id&&i.set(a.id,a);for(let a of e){let b=i.get(a.id),c="string"==typeof b?.rationale&&b.rationale.trim()?b.rationale.trim().slice(0,120):b?"模型未给出判定依据":"模型输出缺少该候选的判定",e=b?.conclusion==="consistent"||b?.conclusion==="conflict"||b?.conclusion==="uncertain"?b.conclusion:"uncertain";"conflict"===e&&function(a){let b=/不冲突|并非冲突|不存在冲突|不予冲突|无冲突|(?:未|不|没有|不曾|从未|并非)(?:构成|形成|产生|发生|视为|属于|存在|发现|出现|检出|识别)[^,。;;、]{0,10}?(?:冲突|不一致)|非[^,。;;、]{0,12}?(?:口径|数值|陈述)/u;if(!b.test(a))return!1;let c=a.replace(RegExp(b.source,"gu"),"");return!/冲突|不一致/u.test(c)}(c)&&(e="consistent");let g={id:a.id,conclusion:e,rationale:c};d.set(a.id,g),b&&(f.size>=4e3&&f.clear(),f.set(k(a),g))}}return{records:d,unavailable:c}}let m=(a,b)=>l(a,b)},56963:(a,b,c)=>{c.d(b,{E7:()=>m,RT:()=>h,Rk:()=>o,fw:()=>f});var d=c(13145),e=c(91943);function f(a,b){if(!b)return"";let c=a.split(/\r?\n/u);for(let a=0;a<c.length;a+=1){if(!/^\s*\|/u.test(c[a])||!c[a].includes(b))continue;let d=a;for(;d>0&&/^\s*\|/u.test(c[d-1]);)d-=1;let e=a;for(;e+1<c.length&&/^\s*\|/u.test(c[e+1]);)e+=1;return c.slice(d,e+1).join("\n")}return""}function g(a){let b=a.map(a=>a.trim().replace(/^\|/u,"").replace(/\|$/u,"").split(/(?<!\\)\|/u).map(a=>(0,d.jG)(a.trim())));if(b.length<2)return{lines:a,removed:0};let c=b.length>1&&b[1].length>0&&b[1].every(a=>/^:?-{2,}:?$/u.test(a))?1:0,e=()=>Math.max(...b.map(a=>a.length)),f=0,g=!1,h=b[0],i=b.slice(c+1);if(i.length>0&&/表$/u.test(h[0]||"")&&i.every(a=>a.length>0&&""===a[a.length-1])&&i.some(a=>""!==a[0])){b[0]=h.slice(1);for(let a=c+1;a<b.length;a+=1)b[a]=b[a].slice(0,b[a].length-1);g=!0,f+=1}if(b.length>c+1){let a=[];for(let d=0;d<e();d+=1)b.slice(c+1).every(a=>""===(a[d]||""))&&a.push(d);if(a.length>0){for(let c of b)for(let b=a.length-1;b>=0;b-=1)c.splice(a[b],1);g=!0,f+=1}}return(b.length<=c+1&&(b.splice(0,b.length),g=!0,f+=1),g)?{lines:b.map((a,b)=>b===c?`| ${a.map(()=>"---").join(" | ")} |`:`| ${a.join(" | ")} |`),removed:f}:{lines:a,removed:0}}function h(a,b){let c=f(a,b);if(!c)return{content:a,removed:0};let d=g(c.split(/\r?\n/u));return d.removed>0?{content:a.replace(c,d.lines.join("\n")),removed:d.removed}:{content:a,removed:0}}let i=["上述要求与后续安排配套执行,执行情况由责任岗位登记归档。","下列要求应在上述安排基础上逐项落实,相关记录经复核后留存备查。","各项安排与上述要求同步执行,执行结果纳入日常台账统一管理。"],j={管控点位:["检查项目","管控事项","检查要点"],检查项目:["检查内容","检查要点","管控事项"],序号:["项次","编号","序次"]};function k(a){return a.trim().replace(/^\|/u,"").replace(/\|$/u,"").split(/(?<!\\)\|/u).map(a=>(0,d.jG)(a.trim()))}function l(a){let b=k(a);return b.length>=2&&b.every(a=>/^:?-{2,}:?$/u.test(a))}function m(a){let b=a.split(/\r?\n/u),c=[],d=0;for(;d<b.length;){if(!/^\s*\|/u.test(b[d])){c.push({kind:"text",line:b[d]}),d+=1;continue}let a=d;for(;a+1<b.length&&/^\s*\|/u.test(b[a+1]);)a+=1;c.push({kind:"table",parts:function(a){let b=[];for(let c=2;c<a.length;c+=1){if(!l(a[c])||l(a[c-1]))continue;let d=k(a[c-1]);!d[0]||d.every(a=>""===a)||b.push(c-1)}if(0===b.length)return[a];let c=[],d=0;for(let e of b)c.push(a.slice(d,e)),d=e;return c.push(a.slice(d)),c}(b.slice(d,a+1))}),d=a+1}let e=new Map;for(let a of c)if("table"===a.kind)for(let b of a.parts){if(!b.some(a=>l(a)))continue;let a=function(a){let b=a.trim(),c=b.startsWith("|")?b.slice(1):b;return(c.endsWith("|")?c.slice(0,-1):c).split("|").map(a=>a.split("**").join("").trim()).filter(a=>a.length>0).join("|")}(b[0]||"");if(!a)continue;let c=e.get(a);c?c.push(b):e.set(a,[b])}let f=0;for(let a of e.values())if(!(a.length<3))for(let b=1;b<a.length;b+=1){let c=j[function(a){let b=a.trim(),c=b.startsWith("|")?b.slice(1):b;for(let a of(c.endsWith("|")?c.slice(0,-1):c).split("|")){let b=a.split("**").join("").trim();if(b.length>0)return b}return""}(a[b][0]||"")];c&&0!==c.length&&(a[b][0]=function(a,b){let c=a.trim(),d=c.startsWith("|")?c.slice(1):c,e=(d.endsWith("|")?d.slice(0,-1):d).split("|"),f=e.findIndex(a=>a.trim().length>0);return f<0?a:(e[f]=` ${e[f].includes("**")?`**${b}**`:b} `,`|${e.join("|")}|`)}(a[b][0]||"",c[(b-1)%c.length]),f+=1)}let h=[],m=0,n=0,o=0;for(let a of c){if("text"===a.kind){h.push(a.line);continue}a.parts.length>1&&(n+=a.parts.length-1);let b=!1;for(let c of a.parts){let a=g(c);a.removed>0&&(m+=1),0!==a.lines.length&&(b&&(h.push("",i[o%i.length],""),o+=1),h.push(...a.lines),b=!0)}}return{markdown:h.join("\n"),removed:m,splitCount:n,variantCount:f}}function n(a){return(0,d.jG)(a).replace(/[\s*_`<>#]/gu,"")}function o(a,b){let c=a.replace(/\r\n?/gu,"\n").split("\n"),f=[],g=0,h=0;for(;h<c.length;){if(!/^\s*\|/u.test(c[h])){f.push(c[h]),h+=1;continue}let a=h;for(;a+1<c.length&&/^\s*\|/u.test(c[a+1]);)a+=1;let i=function(a,b,c){let f=a.map(a=>a.trim().replace(/^\|/u,"").replace(/\|$/u,"").split(/(?<!\\)\|/u).map(a=>(0,d.jG)(a.trim())));if(f.length<2)return;let g=f[1];if(!(g.length>0&&g.every(a=>/^:?-{2,}:?$/u.test(a))))return;let h=f[0],i=(h[0]||"").replace(/[\s*_]/gu,"");if(h.length<3||!/表$/u.test(i)||(i.match(/[\u4e00-\u9fa5]/gu)||[]).length<e.dM)return;let j=(h[0]||"").trim(),k=[...c].reverse().find(a=>a.trim());if(k&&n(k.replace(/^#{1,6}\s+/u,""))===n(j))return;let l=f.slice(2);if(l.length>0&&l.every(a=>a.length>0&&""===(a[a.length-1]||"").trim())&&l.some(a=>""!==(a[0]||"").trim())){let a=h.slice(1);return[j,"",`| ${a.join(" | ")} |`,`| ${a.map(()=>"---").join(" | ")} |`,...l.map(a=>`| ${a.slice(0,-1).join(" | ")} |`)]}let m=(b||[]).find(a=>a.title&&n(a.title)===n(j)),o=m?.fields?.[0]?.name?(0,d.jG)(m.fields[0].name).replace(/[\s\u3000]/gu,""):"";if(o)return[j,"",`| ${[o,...h.slice(1)].join(" | ")} |`,...a.slice(1)]}(c.slice(h,a+1),b,f);i?(f.push(...i),g+=1):f.push(...c.slice(h,a+1)),h=a+1}return{markdown:f.join("\n"),normalized:g}}},61239:(a,b,c)=>{let d;c.d(b,{Hpz:()=>f7.Hp,h0x:()=>e.h0,bVF:()=>e.bV,bsz:()=>f7.bs,OXS:()=>gW,QJx:()=>e.QJ,jGg:()=>e.jG,Bhi:()=>e.Bh,xmB:()=>e.xm,J5_:()=>e.J5});var e=c(23500),f=c(22157),g=c(46482),h=c(70933),i=c(78217),j=c(80439),k=c(52639),l=c(30055),m=c(87942),n=c(55807),o=c(76193),p=c(82437),q=c(1218),r=c(51190),s=c(44505),t=c(49350);async function u(a){let b=a.chapterDrafts.flatMap(a=>a.evidence||[]);b.length>0&&(a.allEvidence.push(...b),a.allEvidence.splice(0,a.allEvidence.length,...(0,h.QR)(a.allEvidence,{preservePinned:!0}))),(0,f.Te)(a.signal);let c=(0,h.QR)(a.allEvidence,{preservePinned:!0});a.allEvidence.splice(0,a.allEvidence.length,...c),a.facts=(0,q.B2)(a.template,a.allEvidence,a.documentSpec);let{localFacts:d,projectBasicFacts:e,preciseFacts:g,structuredTables:i}=(0,q.d6)({evidence:a.allEvidence,template:a.template,spec:a.documentSpec,profile:a.domainProfile,diagnostics:a.generationDiagnostics}),k=[...d,...e,...g],l={facts:[],stages:[{type:"fact_extraction",roleId:"llm-json",status:"skipped",message:"已有本地/资料事实覆盖主要必需字段,跳过 LLM 全量事实抽取"}]};if((0,q.N2)(k,a.template,a.documentSpec)){let b=(0,h.QR)(a.allEvidence,{preservePinned:!0});try{l=await (0,q.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 l.stages)(0,j.fx)(a.progressStages,b);let m=(0,r.UT)(a.allEvidence);for(let b of(a.structuredFacts=[...d,...e,...g,...l.facts,...m],a.governedStructuredFacts=(0,r.A)(a.structuredFacts,a.scopeConflicts??(0,r.KX)(a.structuredFacts)),a.governedStructuredFacts))a.facts[b.key]=`${(0,f.lG)(b.value)}(来源:${b.sourceFile},角色:${b.roleId})`;a.factsModel=await (0,q.d7)(a.governedStructuredFacts,i,a.missingItems,a.documentSpec,a.domainProfile);let n=(0,r.qD)({facts:a.governedStructuredFacts,projectRoot:a.projectRoot,requirement:a.requirement||"",templateId:a.template.id});a.factsModel.canonical=n,a.scheduleAuthority=(0,s.GG)(a.factsModel),a.assemblyRateAuthority=(0,s.hI)(a.factsModel),a.scaleSummary=(0,s.Pt)(a.factsModel),a.supportAuthority=(0,s.P3)(a.factsModel),a.decisionLockEntries=(0,t.Pd)({facts:[...d,...e,...g],evidence:a.allEvidence})}var v=c(31846),w=c(11248),x=c(95294),y=c(1358),z=c(10025);let A=/OCR|乱码|识别错误|无法确认|语义断裂|页码/u,B=/暂列金额|暂估价|预留金/u,C=/^\d+(?:\.\d+)?\s*(?:%|元|万元|亿元|项|个|天|月|年|周|小时|分钟|人|次|份|批|层)$|^\d{4}[.\-/]\d{1,2}$/u,D=/^[A-Za-z]{1,4}\s*[-–—]?\s*\d{1,3}$/u,E=/^(?:精确参数|技术参数|参数|参数规格|规格参数|数据|指标|其他|其它|备注|说明|未分类)$/u,F=/(?:GB|JGJ|CJJ|CJ|JG|JT|TB|SL|DL|HG|SH|YB|SY|GA|QB|WS|JC|NB|CECS|ISO|IEC|JTG|DB)\s*\/?\s*T?\s*[\d.]{4,}/iu,G=/^[A-Za-z]{1,3}\s*\d+(?:\.\d+)?[A-Za-z]?$/u,H=/[。!?]|[::]\s*[\d((]|(?:应|须|不得|必须|严禁|宜)[^,。;]{0,20}(?:采用|符合|按照|满足|设置|办理|执行|组织|进行|大于|小于|超过|支付|承担|参加|具备|具有|提供|建立|完成|取得|达到|构成|包括|包含|纳入|列入|签署|加盖)|[^,。;]{6,}为[^,。;]{6,}/u,I=/(?:有限公司|有限责任公司|股份公司|集团公司|公司|事务所|管理处|管理局|委员会|服务中心)$/u;function J(a){return`${a.key||""} ${a.fieldName||""} ${a.value||""}`.trim()}function K(a,b=new Set){if(!a)return{usable:[],noiseExcluded:[]};let c=a.factIndex?.parameterFacts?.length?a.factIndex.parameterFacts:a.preciseFacts||[],d=new Set,e=[],f=[];for(let a of c){if(!a)continue;let c=String(a.value||"").trim();if(!c||b.has((0,w.K3)(c))||A.test(J(a))||(0,q.ZR)(a)||B.test(J(a)))continue;let g=(0,x.MO)(c);if(g){f.push({fact:a,category:g});continue}if(function(a){let b=String(a.value||"").trim();if(!b)return"空值";let c=(0,p.j4)(b);if(c)return c;let d=String(a.key||"").trim();return E.test(d)&&!G.test(b)&&!F.test(b)&&C.test(b)?"裸量碎片(键为通用桶、值无概念词,正文无从逐字落位)":RegExp(z.yJ,"u").test(b)?"变更叙述(非可落位参数)":b.length>=18&&H.test(b)?"条文句(非短语级参数)":/(?:\d)\s*(?:\d)(?:\s*\d){2,}/u.test(b)&&/(?:北|南|东|西|侧|号|路|街|村|镇|区)\s*\d/u.test(b)?"OCR 数字复写残片":I.test(b)?"单位/机构名(非工程参数)":/[==]/u.test(b)?"表格公式/口径残片(非值)":/^《[^》]{2,60}》\s*[((]?[A-Z]{1,6}\d{0,4}\s*\/?\s*T?\s*[\d.]{3,}/u.test(b)?"规范引用条目(属编制依据,非工程参数)":!D.test(b)||F.test(b)||G.test(b)?void 0:"清单/图签编码"}(a)||N.test(String(a.key||"").trim()))continue;let h=`${a.key}|${(0,w.K3)(c)}`;d.has(h)||(d.add(h),e.push(a))}return{usable:e,noiseExcluded:f}}function L(a,b=[]){let c=new Set;for(let d of(0,v.TC)(a,b))for(let a of(0,v.XF)(d))c.add(a);return[...c]}function M(a,b){let c=J(a),d=0;for(let a of b)c.includes(a)&&(d+=1);return d}let N=/^(?:项目名称|项目编号|招标人|建设单位|建设地点|建设规模|计划工期|合同工期|总工期|开工日期|质量标准|质量目标|合同估算价|最高投标限价|招标范围|施工范围|投标人|开标|评标|资金来源|编制依据|安全生产许可证)/u,O=/[一—–‑﹣]/gu,P=/(?:约(?:为)?|大约|大概|左右|共计|总计|合计|合计为|不小于|不少于|不超过|不大于|应不少于)/gu,Q=/^(?:dn|de|d|φ|ф)/iu;function R(a,b,c=[],d={}){let{usable:e,noiseExcluded:f}=K(b,d.supersededValues),g=(0,w.K3)(a||""),h=g.replace(O,"-"),i=c.map(a=>L(a.title,a.sections||[])),j=[],k=[],l=[];for(let a of e){if(function(a,b,c=""){let d=(0,w.K3)(b);return!!d&&(!!(a.includes(d)||b.split(/[、,,;;/|]+/u).map(a=>(0,w.K3)(a)).filter(a=>a.length>=5).some(b=>a.includes(b)))||!!c&&function(a,b,c){let d=(0,w.K3)(c).replace(O,"-");if(d.length>=5&&b.includes(d))return!0;let e=d.replace(P,"");if(e.length>=5&&e!==d&&b.includes(e))return!0;let f=(0,y.Ih)(e);if(f.length>=5&&f!==e&&b.includes(f)||(0,y.Ih)(b).includes(f))return!0;if(Q.test(d)){let b=d.replace(Q,"dn");if(b.length>=4&&a.includes(b))return!0}return!1}(a,c,b))}(g,String(a.value),h)){j.push(a);continue}(i.some(b=>b.length>0&&M(a,b)>0)?k:l).push(a)}return{totalParams:e.length,used:j,relevantMissed:k,irrelevantMissed:l,noiseExcluded:f}}var S=c(18292);let T=["project_name","project_code","owner","project_location","project_scale","schedule_requirement","quality_standard","project_investment_estimate"],U=/资料未明确|系统暂未从知识库确认|项目资料暂未明确|^(?:无|暂无|未确认|待确认)$/u;function V(a){return/--|延期到|资料|附件|扫描|目录|汇总|打包|备份|\d{1,2}\.\d{1,2}/u.test(a)}function W(a){return a.replace(/[((]\d+[))]/gu,"").replace(/副本|最终版|扫描件|定稿/gu,"").replace(/[\s,。,.;;::《》“”‘’()()_-]+/gu,"").toLowerCase()}function X(a,b){let c=W(b);if(!c||c.length<4)return!0;let d=W(a);return!!d.includes(c)||c.length>=12&&d.includes(c.slice(0,Math.max(8,Math.floor(.72*c.length))))}let Y={规范包:/[括含]/u};var Z=c(73859),$=c(11628);function _(a){return a.replace(/[((]\d+[))]/gu,"").replace(/副本|最终版|扫描件|定稿/gu,"").replace(/\s+/gu,"").replace(/[,。,.;;::《》“”‘’()()_\-—–―─-〜~·•]/gu,"").toLowerCase()}let aa=/项目名称|工程名称|招标人|建设单位|发包人|采购人|招标单位|建设地点|工程地点|项目地点/u,ab=/bill_of_quantities|drawing|table/iu;function ac(a,b,c){if((0,p.j4)(a.trim())||(0,$.wI)(a)||(0,$.H8)(a)||/^(?:详|参见|见|依据)\s*[《【]/u.test(a.trim()))return"";let d=(0,$.pN)(a.trim()).trim();if(d!==a.trim()&&(0,p.j4)(d)||(0,Z.d2)(b,d)||(0,Z.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){let a=_(c),b=_(d);if(a.length>=2&&b.length>0&&b.length<=a.length+6&&b.endsWith(a.slice(-2))&&!/\d/u.test(d))return""}if(c&&aa.test(c)){if(/所在地|地址|详见|见前附表|见招标/u.test(d)||/检查井|化粪池|机箱|碎石|路灯|井盖|监控系统|吊顶|抹灰|楼面|顶棚/u.test(d))return"";let a=d.replace(RegExp(`^${c.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&")}\\s*[::、,,..]?\\s*`,"u"),""),b=(0,$.Ui)(a||d);return!b||b.length>40||/第\s*页|共\s*页/u.test(b)||/[,。;;、]/u.test(b)||/[::]/u.test(b)||/^[((][^))]*[))]$/u.test(b)||/[/\\]|\.(?:pdf|docx?|xlsx?|zip)/iu.test(b)||/R\d+C\d+/u.test(b)||_(b)===_(c)?"":_(b)}let e=(0,$.De)(d),f=e.replace(/([^)]*)|\([^)]*\)/gu,"").replace(/\s+/gu,"").trim();if($.mf.test(f))return _(f.slice(0,40));let g=/\d+(?:\.\d+)?\s*(?:日历天|天|个月|月)/u.exec(e)?.[0],h=_(g&&/工期|总工期|合同工期|计划工期|施工周期|质保期|有效期|养护期/u.test(`${c||""} ${d}`)?g:d);return!h||h.length>80?"":h}var ad=c(40299),ae=c(95622),af=c(23760),ag=c(85016),ah=c(10751),ai=c(30836),aj=c(75251);let ak=[{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:"招标项目编号"}],al=/(?:劳动力|人力|用工|工人|民工|工种|普工|技工|管理人员|作业人员|人数|保勤|人员|班组|峰值|高峰|机械|机具|设备|车辆|台班|挖掘机|装载机|自卸|搅拌|塔吊|吊车|起重机|进度|工期|日历天|节点|阶段|开工|竣工|进场|退场|保养|维修|周转|材料|物资|水泥|砂石|碎石|钢筋|钢管|钢材|管材|灯具|路灯|电缆|光缆|通信|线缆|配线|配管|双绞|JDG|SC管|PC管|电源|电压|配电箱|照明|工作站|服务器|存储|工具|角磨|垫板|苗木|绿植|种植|养护期|保修|储备|堆放|供应|工程量|桩号|里程|K\d|管网|管道|胸径|地径|冠幅|冠丛|蓬径|工长|负责人|施工员|完成率|计划|拆除|人行道|侧石|缘石|杆件|砖基础|圈梁|构造柱|矩形柱|矩形梁|基础梁|过梁|有梁板|天沟|挑檐|雨篷|楼梯|散水|坡道|块料|墙面|吊顶|砌体|砖墙|多孔砖|实心砖|金属门|木质门|金属窗|百叶窗|百页窗|门窗|扶手|栏杆|桥架|管道基础|包管|压顶|独立基础|墙基|防潮层|给水|排水|空调|公厕|停车场|零星)/u,am=/(?:混凝土|砼|砂浆|强度|等级|标号|配合比|坍落度|水灰比|掺量|养护|浇筑|振捣|模板|支架|脚手架|搭接|锚固|保护层|垫层|找平|找坡|坡度|防水|涂膜|卷材|闭水|蓄水|淋水|回填|夯实|压实|分层|虚铺|沟槽|基槽|基坑|边坡|标高|高程|厚度|间距|埋深|覆土|管径|PPR|冷水管|井室|抹灰|腻子|涂料|面层|基层|安装|提升泵|扬程|焊接|法兰|试压|冲洗|消毒|调试|接地|防雷|避雷|绝缘|电阻|验收|检验|检测|试验|取样|频率|焊缝|防腐|除锈|开挖|平整|清底|预留|土方|路床|碾压|摊铺|温度|降雨|雨量|接头|管枕|接口|承插|热熔|连接|封堵|距地|挂墙|挂装|嵌墙|暗配|明配|暗装|敷设|过桥|随桥|排管|人孔|通棒|内径|管孔|垂直度|偏差|漏风|通风|壁厚|接缝|遍数|密植|分叉|栽植|浇灌|试运转|严密性|渗水|牌号|材质|分辨率|图像|稳压|压力降|风速|纵距|横距|步距|立杆|连墙件|支撑卡|施工现场|场区|硬化|围挡|反光|封闭段|渣土)/u;function an(a,b,c,d=16){let e=Math.max(0,b-d),f=Math.min(a.length,b+c+d);for(;e>0&&/[\d.]/u.test(a[e-1]??"");)e-=1;for(;f<a.length&&/[\d.]/u.test(a[f]??"");)f+=1;return a.slice(e,f)}function ao(a,b,c,d,e){if(0===e.length)return null;let f=/^[\d,,.]+(.*)$/u.exec(c)?.[1]?.trim()??"",g=an(a,b,c.length,40).replace(/\s+/gu," ");return(0,aj.j9)({total:Number(d),unit:f,context:g,values:e})}let ap=/(?:(?<![\d.])\d+\s*(?:座|辆|根|处|盏|株|道|孔|眼|樘|d(?![A-Za-z0-9]))|\d+(?:\.\d+)?\s*(?:%|℃|人日|工日)|(?:DN|Φ|φ|HRB|HPB)\s*\d+(?:\.\d+)?)/gu;function aq(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 ar(a){let b=[];for(let c of(0,ah.IV)(a).entries){for(let a of("number"==typeof c.value&&Number.isFinite(c.value)&&b.push({name:c.label,value:c.value,unit:c.unit,kind:"entry"}),c.groups??[]))Number.isFinite(a.value)&&b.push({name:c.label,value:a.value,unit:c.unit,kind:"group"});for(let a of c.specBreakdown??[])Number.isFinite(a.value)&&b.push({name:c.label,value:a.value,unit:c.unit,kind:"split"})}return b}function as(a){let b=a.match(/\d+(?:\.\d+)?/u);return b?b[0]:a.trim()}function at(a){return al.test(a)?"derivation-gap":am.test(a)?"process-gap":"unattributed"}function au(a){return a.after<=0?"success":a.rolledBack?"failed":"number"==typeof a.before&&Number.isFinite(a.before)?a.after<a.before?"partial":"failed":a.repaired?"partial":"failed"}async function av(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 aw=/(?:\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 ax(a){return a.replace(/\s+/gu,"").toLowerCase()}function ay(a){return[...new Set((a.match(aw)||[]).map(ax))]}function az(a){let b=new Set;for(let c of a.allEvidence)if(c.content)for(let a of ay((0,h.eE)(c.content)))b.add(a);let c=a.input.billFactLock;if(c)for(let a of c.entries){for(let c of ay(`${a.name} ${a.description} ${a.quantity}${a.unit}`))b.add(c);for(let c of(0,v.L4)(a.description))b.add(ax(c));for(let c of a.specQuantityPairs)for(let a of(b.add(ax(c.spec)),ay(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(ax(`${c.value}${c.unit||""}`)),c.specBreakdown??[]))"number"==typeof a.value&&Number.isFinite(a.value)&&b.add(ax(`${a.value}${c.unit||""}`));for(let c of ay(a))b.add(c)}for(let c of[...a.structuredFacts||[],...a.factsModel?.preciseFacts||[]])for(let a of ay((0,f.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 ay(c.join(" ")))b.add(a);let d=[...new Set(c.filter(a=>y.bX.test(a)))];if(0===d.length)continue;let e=[...new Set(c.filter(a=>y.CE.test(a)))];for(let a of d)for(let c of e)for(let d of ay(`${a}${c}`))b.add(d)}return b}async function aA(a){let b=az(a);if(0===b.size)return;let c=a.blueprintData?ar(a.blueprintData):[],d=function(a){let b=new Map;if(!a)return b;for(let c of[...a.derivationGaps,...a.processGaps]){let a=c.closureCandidates??[];if(0===a.length)continue;let d=ax(c.token);b.has(d)||b.set(d,`${a.join(" + ")} = ${c.token.replace(/\s+/gu,"")}`)}return b}(a.authorityAuditReport),e=a=>{let d=[];for(let e of a.split(/[。;;!!??\n]/u).map(a=>a.trim()).filter(Boolean).filter(a=>!a.startsWith("#")&&(a.match(aw)??[]).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(aw)||[];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))}(e))continue;let a=ay(e);if(0===a.length||a.every(a=>b.has(a)))continue;let f=a.filter(a=>!b.has(a)&&"unsourced"===(0,y.eS)({token:a,context:e}).kind),g=function(a,b,c){let d=new Set;if(0===c.length)return d;for(let e of b){let b=a.indexOf(e);if(b<0)continue;let f=a.slice(Math.max(0,b-24),b).replace(/\s+/gu," ");if(!aj.FW.test(f))continue;let g=/\d+(?:\.\d+)?/u.exec(e);if(!g)continue;let h=/^[\d,,.]+(.*)$/u.exec(e)?.[1]?.trim()??"",i=an(a,b,e.length,40).replace(/\s+/gu," ");(0,aj.j9)({total:Number(g[0]),unit:h,context:i,values:c})&&d.add(e)}return d}(e,f,c),h=f.filter(a=>!g.has(a));h.length>0&&d.push({sentence:e,tokens:h})}return d},f=new Map;for(let b of a.finalChapterDrafts){let a=e(b.content);a.length>0&&f.set(b.id,a)}let h=[...f.values()].reduce((a,b)=>a+b.length,0);if(0===h){let c=(0,j.X5)({type:"validation",roleId:"numeric-verification",status:"success",message:"正文数值确定性核对通过:全部正文数值均在资料原文/清单事实锁/蓝图参数桶中找到同值来源",details:[`数值权威库规模:${b.size} 个归一化 token`]},{subtitle:"数值确定性核对"});(0,j.fx)(a.progressStages,c),(0,j.fx)(a.finalGateRepairStages,c),a.emitProgress(a.finalChapterDrafts,a.progressStages);return}let i=0,k=0;for(let[b,c]of f){let f=a.finalChapterDrafts.findIndex(a=>a.id===b);if(f<0)continue;let h=a.finalChapterDrafts[f],l=h.content,m=c,n=e(l).length,o=0,p=!1,q=!1,r=[n];for(;m.length>0&&o<2;){o+=1;let c=(0,j.X5)({type:"llm_review",roleId:`agent-numeric-verification-${b}`,status:"running",message:`正文数值核对发现 ${m.length} 处疑似无来源数值,第 ${o} 轮定向修复中:${h.title}`,details:m.map(a=>`疑似:${a.sentence}(缺来源 token:${a.tokens.join("、")})`)},{subtitle:"数值确定性核对"});(0,j.fx)(a.progressStages,c),(0,j.fx)(a.finalGateRepairStages,c),a.emitProgress(a.finalChapterDrafts,a.progressStages);let i=m.flatMap(a=>a.tokens.map(a=>({token:a,hint:d.get(ax(a))}))).filter(a=>!!a.hint),k=["【正文数值定向核对修复】",...o>1?[`本轮为第 ${o} 轮(最多 2 轮):上一轮修复后仍有残留,无法确认来源的数值必须直接删除,禁止保留或替换为其他无来源数值。`]:[],"下列句子中的数值(标注「缺来源 token」)在项目绑定材料、工程量清单与蓝图中均找不到同值来源,属于疑似编造数值。请逐句核对并修复:","1. 若该数值在本章绑定证据中确实存在(仅表述口径不同),保持数值原样,只修正单位或表述;","2. 若该数值确属规范/标准常数(如试块留置、养护龄期、检测频次),保留数值并显性标注规范名称与编号(如「按《混凝土结构工程施工质量验收规范》GB 50204 规定,每100m\xb3留置一组试块」)——显性标注后即视为已溯源;",...i.length>0?["3. 若该数值已给出「具名分项和候选」(该值恰为若干具名权威分项之和),说明它是写手对权威分项的自算合计,**不得删除**:按分项显式还原为「分项名 数值+单位、…,合计 数值+单位」的分解表述(分项值必须取候选值原样,禁止改动候选数值),还原后即为可溯源的合法合计;"]:[],`${i.length>0?"4":"3"}. 其余情况必须删除该数值,改写为不带具体数值的过程控制表述(如「按设计要求」「分层碾压至压实度满足设计及规范要求」);`,"禁止把疑似数值替换为另一个同样无来源的数值;禁止改动句子的非数值部分;只做局部修改,不得新增、删除或合并小节。",m.map(a=>`- 疑似句:${a.sentence}(缺来源 token:${a.tokens.join("、")})`).join("\n"),...i.length>0?["具名分项和候选(按第 3 条还原分解,不得删除):",...i.map(a=>`- ${a.token.replace(/\s+/gu,"")}:${a.hint}`)]:[]].join("\n"),s=await av({originalContent:l,repairRound:"numeric-verification",diagnostics:a.generationDiagnostics,apply:async()=>{let b=await a.withProgressHeartbeat(()=>(0,g.l8)({template:a.template,chapter:{id:h.id,title:h.title,content:l,evidence:h.evidence,missingFacts:h.missingFacts,sections:h.sections},issues:m.map(a=>`疑似无来源数值:${a.sentence}(token:${a.tokens.join("、")})`),promptTexts:k,requirement:a.requirement,forbidDrawingImages:!1,bidComposition:a.bidComposition,diagnostics:a.generationDiagnostics,signal:a.signal,patchGuard:(0,g.XG)("numeric-verification",a.generationDiagnostics)}));return b.content&&b.content!==l?b.content:l},recheck:a=>[e(a).length]});s.rolledBack||s.content===l||(l=s.content,a.finalChapterDrafts[f]={...h,content:l},p=!0),s.rolledBack&&(q=!0);let t=e(l).length;if(r.push(t),0===t||t>=n||o>=2)break;n=t,m=e(l).slice(0,12)}p&&(i+=1);let s=e(l).length;k+=s;let t=(0,j.X5)({type:"llm_review",roleId:`agent-numeric-verification-${b}`,status:au({before:c.length,after:s,repaired:p,rolledBack:q}),message:0===s?`数值核对修复完成:${h.title}(${c.length} 处疑似数值已处理,残留轨迹 ${r.join("→")})`:p?`数值核对修复部分生效:${h.title}(疑似数值残留轨迹 ${r.join("→")},已执行 ${o} 轮定向修复(每章最多 2 轮);残留项以 warning 记录,不阻断交付)`:q?`数值核对修复已回滚:${h.title}(修复后疑似数值增多,保留修复前正文;残留 ${s} 处以 warning 记录,不阻断交付)`:`数值核对修复未生效:${h.title}(模型未产生有效修改;残留 ${s} 处以 warning 记录,不阻断交付)`,details:[...c.map(a=>`疑似:${a.sentence}`),s>0?`已执行 ${o} 轮定向修复,残留项以 warning 记录,不阻断交付`:""]},{subtitle:"数值确定性核对"});(0,j.fx)(a.progressStages,t),(0,j.fx)(a.finalGateRepairStages,t),a.emitProgress(a.finalChapterDrafts,a.progressStages)}i>0&&(a.finalMarkdown=a.rebuildFinalMarkdown(),await a.recomputeFinalValidationBundle()),a.generationDiagnostics.llm.lastInfo=`正文数值确定性核对:权威库 ${b.size} token,${h} 处疑似无来源数值,${i} 章完成定向修复,残留 ${k} 处(每章最多 2 轮收敛修复,未收敛残留以 warning 记录,不阻断交付)`}var aB=c(40693);function aC(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,w.K3)(`${a.fieldName||a.key} ${(0,f.lG)(a.value)}`),c=(0,w.K3)((0,f.lG)(a.value));return c&&c!==b?[b,c]:[b]}).join("\n")}function aD(a,b){let c=[{label:"工期",corpus:aC({...b,project:[],quality:[],safety:[],resources:[],preciseFacts:[],bills:[],drawings:[],rules:[],specifications:[]}),required:/工期|日历天|合同工期|计划工期/u},{label:"质量",corpus:aC({...b,project:[],schedule:[],safety:[],resources:[],preciseFacts:[],bills:[],drawings:[],rules:[],specifications:[]}),required:/质量目标|质量标准|验收|复验/u},{label:"安全",corpus:aC({...b,project:[],schedule:[],quality:[],resources:[],preciseFacts:[],bills:[],drawings:[],rules:[],specifications:[]}),required:/安全|文明|风险|应急/u},{label:"资源",corpus:aC({...b,project:[],schedule:[],quality:[],safety:[],preciseFacts:[],bills:[],drawings:[],rules:[],specifications:[]}),required:/资源|材料|设备|劳动力/u},{label:"工程量",corpus:aC({...b,project:[],schedule:[],quality:[],safety:[],resources:[],preciseFacts:[],drawings:[],rules:[],specifications:[]}),required:/工程量|清单|建筑面积|长度|吨|台|套|项/u}],d=(0,w.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 aE(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,i.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 aF(a,b){let c=[];if(!b)return c;let d=a.map(a=>`${a.title}
|
|
150
150
|
${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}var aG=c(35547),aH=c(31920);let aI=/安全|文明|质量|绿色施工|环保|扬尘|消防|应急|危大|风险|规范|标准|管理要求|施工工艺|技术措施|验收/u,aJ=/项目名称|工程名称|建设地点|建设单位|招标人|发包人|建设规模|招标范围|合同工期|计划工期|质量标准|危大工程清单|工程量|材料规格|设备型号|图纸参数|报价|单价|利润|税率|合同金额|联系方式|品牌/u,aK=/报价|单价|合价|金额|利润|税率|增值税|招标控制价|最高投标限价|中标价|合同价|暂列金额/u,aL=/联网增强|联网检索|网页资料|搜索结果|根据网页|互联网资料|在线资料|浏览器|搜索引擎/u,aM=["项目名称","工程名称","建设地点","建设单位","招标人","发包人","建设规模","招标范围","合同工期","计划工期","工程量","报价","单价"];function aN(a){return a.replace(/&/gu,"&").replace(/</gu,"<").replace(/>/gu,">").replace(/"/gu,'"').replace(/'/gu,"'").replace(/<[^>]+>/gu,"").replace(/\s+/gu," ").trim()}async function aO(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=aN(a[1]||""),c=aN(a[2]||""),d=aN(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||aJ.test(b)||aK.test(b)||aL.test(b)||d.some(a=>a&&b.includes(a)))&&(0===c.length||c.some(b=>a.url.includes(b)))}).slice(0,b):[]}async function aP(a){if(!a.config.enabled||!function(a,b){let c=`${a} ${b.join(" ")}`;return!(!aI.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(aJ,"")} 公开规范 通用要求`.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 aO(g,a.config.maxResultsPerQuery,a.config.trustedDomains,a.runtimeRules.forbiddenTerms||[],a.signal))){let e=function(a,b){let c=a;for(let a of aM)c=c.replace(RegExp(`${a}[^。;;
|
|
151
151
|
]{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(aK,"").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}
|
|
152
152
|
${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 aQ=c(65667);let aR=[{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 aS(a){return a.replace(/[\s,。;;::|]/gu,"").trim()}let aT=/塔式起重机|履带吊|汽车吊|卷扬机|脚手架|扣件|钢管|模板|噪声|PM2\.5|PM10|TSP|扬尘在线监测|临电|消防|安全网|围挡|洗车台|沉淀池|雾炮/u,aU=/不使用|不采用|不配置|无需|未采用|不得使用|禁止使用/u;function aV(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(aS).filter(Boolean)}function aW(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 aX=c(37047),aY=c(63516);let aZ=/([\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,a$=["直径","厚度","宽度","长度","高度","深度","间距","距离","标高","偏差","数量","面积","体积","重量","压力","温度","强度","等级","坡度","规格","尺寸","层数","次数","跨度","半径","总长","全长"],a_=["以内","以外","以上","以下","之间","左右","以前","以后","之前","之后"],a0=/^(?:主要|本工程|本项目|全项目)?(?:作业对象|作业内容|施工内容|工作内容|工程内容|施工对象|施工范围|工程规模|建设内容|建设规模)为/u,a1=/^(?:由)?责任[\u4e00-\u9fa5]{0,4}在(?:内)?完成/u,a2=/自然村|村组|标段|区域|点位|养护|地上|地下|建筑高度|[\u4e00-\u9fa5]{1,4}组$/u,a3=/^(?:局部|个别|少数|多数|大部分)/u,a4=["开挖","封闭","回填","浇筑","铺筑","摊铺","供应","编制","提交","签订","安装","养护","试验","拆除","砌筑"],a5=["直径","半径","穴径","胸径","地径","冠幅","厚度","宽度","长度","高度","深度","穴深","间距","距离","标高","坡度","跨度","株距","行距"];function a6(a){return a.replace(/(?:mm|cm|m|MPa|kN|kV|kW|℃|元|万元|人|天|日|个|层|樘|处|套|台|t|吨)/gu,"").replace(/[\s,,、;;::()()]/gu,"")}function a7(a,b){if(/[、/](?:与)?[A-Za-z]?\d/u.test(a))return!0;for(let c of a.matchAll(/[、/](?:与|和|及)?([\p{Script=Han}A-Za-z]{1,8})\d/gu))if(function(a,b){let c=a6(a),d=a6(b);return 0!==c.length&&0!==d.length&&!c.includes(d)&&!d.includes(c)}(c[1]||"",b))return!0;return!1}function a8(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 a9(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(aZ.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(a0,"").replace(a1,""),n=m.length>=2?m:l;if(n.length<2||!/[\u4e00-\u9fa5A-Za-z]{2,}/u.test(n)||!Number.isFinite(g)||g<=0||a$.some(a=>n===a||a6(n)===a)||a_.some(a=>a6(n)===a)||a2.test(n)||a3.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,aX.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=a5.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=>a4.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=>a8(a,b.matchIndex))))].some(b=>/(?:总量|合计|总计|共计)/u.test(b)&&/(?:其中|分别为|分为)/u.test(b)&&d.every(c=>c.occurrences.some(c=>a8(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 a7(d,b.concept)||a7(e,b.concept)})).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,ai.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 ba(a){return a.replace(/㎡/gu,"m2").replace(/m²/giu,"m2").replace(/m³/giu,"m3").replace(/\s+/gu,"").toLowerCase()}function bb(a){return a.replace(/[((][^))]*[))]/gu,"").replace(/[\s,,、;;::]/gu,"")}function bc(a,b){let c=b.entries??b.billFactLock?.entries??[];if(0===c.length)return[];let d=Math.max(.01,.001*a.value),e=ba(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=ba(b.unit);if(e&&c&&e!==c)continue;let h=function(a,b){let c=bb(a),d=bb(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 bd(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:bc(a,{markdown:b.markdown,entries:[...c,...d]}),billMatches:bc(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 be(a,b){let c=await a9(a);if(c.degraded)return[c.degraded];if(0===c.groups.length)return[];let d=[],e=[];for(let f of c.groups){let c=bd(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}function bf(a){return/补疑|补遗|答疑|澄清|更正|修改通知|question|clarif/iu.test(a||"")}let bg=/(\d{1,4})\s*个?\s*日历天/gu,bh=/(20\d{2}\s*年\s*\d{1,2}\s*月\s*\d{1,2}\s*日)/gu,bi=/(?:变更修改为|变更为|澄清为|调整为|更正为|修正为|变更至|调整至)\s*[::]?\s*(\d{1,4})\s*个?\s*日历天/u,bj=/(?:变更修改为|变更为|澄清为|调整为|更正为|修正为|变更至|调整至)\s*[::]?\s*(20\d{2}\s*年\s*\d{1,2}\s*月\s*\d{1,2}\s*日)/u;function bk(a){return`${a.replace(/\s+/gu,"")}日历天`}function bl(a){return a.replace(/\s+/gu,"")}function bm(a){let b=a.filter(a=>a.superseded.length>0);return 0===b.length?"":["【答疑澄清生效口径(硬约束)】招标文件与答疑/澄清文件不一致时,以下为**现行唯一口径**,全文(含进度计划、节点、信息表、正文表述)必须一致使用;被取代的旧值仅在引用澄清原文时可出现,不得作为现行表述:",...b.map(a=>`- ${a.field}:现行为「${a.effective}」;已被取代(不得再作为现行口径):${a.superseded.join("、")}`)].join("\n")}let bn=/(?:澄清|变更|修改|调整为|更正|原(?:为|值)?|原招标|此前)/u,bo="clarification-amendment",bp=/(?:\d|±)/u,bq=/(?:采用|按|执行|为准|不得|应|必须|相当于|统一|计入)/u,br=/±\s?\d|\d+\s*[*x×]\s*\d+|\d+\s*[::]\s*\d+|\d+(?:\.\d+)?\s*(?:mm|cm|km|m2|m3|㎡|kg|t|mpa|kpa|kn|mw|kw|kva|kv|v|a|w|pa)|dn\d+/iu;function bs(a){return br.test(a)?0:bJ.test(a)?2:1}let bt=/(?:答|回复|答复|回\s*答)\s*[::]/gu,bu=/(?:^|[\n。;;!])\s*(?:#{1,4}\s*)?(?:\d{1,3}\s*[、..))]|问\s*[::]|问题\s*\d{0,2}\s*[::]?)/u,bv=/\d{1,3}\s*(?:[、))]|[..](?!\d))/gu,bw=/[。;;,,\n]/u;function bx(a){return String(a||"").replace(/\s+/gu," ").replace(/^(?:#{1,4}|[-*])\s*/u,"").trim()}function by(a,b){let c=a.lastIndexOf("\n",Math.max(0,b-1))+1,d=a.indexOf("\n",b);return{start:c,end:-1===d?a.length:d}}function bz(a){let b=bx(a),c=Math.max(b.lastIndexOf("?"),b.lastIndexOf("?"));if(c<0)return b;let d=[...b.slice(0,c)].reverse().join(""),e=bw.exec(d),f=e?.index===void 0?c:c-e.index-1;return(f>0?b.slice(0,f+1):b.slice(0,c)).trim()}let bA=RegExp(`${z.yJ}|均改为|全部改为|统一改为|一律改为|改成|改为|暂按|暂定按`,"u"),bB=/(?:不涉及|不需要|不需|无需|不用|不做|不再|取消|去除|删除|不予)/u,bC=/(?:不涉及|取消|去除|删除)/u,bD=/(?:按|依据|参照)[^,。;]{2,40}?(?:执行|实施|施工|计入|做法|说明|要求|考虑)|以[^,。;]{2,24}?为(?:准|分界(?:线|点)?|依据|界限|原则)|^采用[^,。;]{2,40}$/u,bE=/^(?:是|是的|对|对的|可以|可行|可采用|可|需要|需|要|必须|应|应该|均需|均要|均按|同意|确认|有|会)[。!]?$/u,bF=/^(?:无误|正确|无异议|没问题|没有问题|符合)[。!]?$/u,bG=/(?:是否|要不要|需不需要|够不够|能不能|可不可以|可否|能否|多少|多大|多高|多厚|多久|何种|哪些|如何|怎么|为何|为什么|有无|未见|未明确|请明确|请确认|规格|型号|尺寸|材质|做法|要求|标准|标号|强度等级|数量|高度|厚度|宽度|长度|标高|管径|参数|品牌)/u,bH=/^(?:见|详见|参见|参照|参图|详|按图|依图|如图|附图|不在此次|不在本次|不在|无(?:专项)?图)/u,bI=/(?:详见|参见|参照|图集|图号|大样|建施|结施|SW\s*\d|S\s*\d{2}|04S516)/u,bJ=/(?:费用|报价|清单|投标人|中标|结算|不予调整|工期|日历天|万元|亿元|元)/u,bK=/(?:\d|[一二三四五六七八九十两])\s*(?:道|遍|层|次|个|座|套|台|根|块|处|项|只|组|片|扇|樘|米|厚|mm|cm|km|m|㎡|m2|m3|吨|t|kg|kw|kv|kva|v|a|w|j|pa|mpa)/iu,bL=/^(?:(?:是否|请问|请明确|请确认|请设计确认|明确|[而但且并则即故均皆也都又于此该项上述以上其中另另外再需需要应必须全部整体为是])+)/u,bM=/(?:是否|要不要|需不需要|为何|如何|怎么|多少|多大|哪些|需|需要|要|应|应该|必须|可否|能否|全部|均|皆|的)+$/u;function bN(a){let b=String(a||"");return/\d/u.test(b)||bK.test(b)||"text"!==(0,z.dm)(b)?"strong":"weak"}function bO(a){return String(a||"").split(/[??]/u)[0].replace(bL,"").replace(bM,"").replace(/[??。!!,,、;;::\s]+$/u,"").trim().slice(0,40)}function bP(a){return(function(a){let b=String(a||"").split(/[,,]/u).map(a=>a.trim()).filter(Boolean),c=b.findIndex((a,b)=>b>=1&&bJ.test(a));return(c>0?b.slice(0,c):b).join(",")})(String(a||"").split(/[??]/u)[0]).replace(/^[,,、。;;::\s]+/u,"").replace(/^(?:是的|是|对|对的|可以|可行|需要的?|需要)[,,、]+/u,"").replace(/[??。;;!!]+$/u,"").replace(/(?:再|重新)?(?:喷涂|涂刷|刷|做|施工|采用|设置|进行|安装|铺设|设置)+$/u,"").replace(/(?:是否|需不需要|需要|需|应|应该|必须|均|皆|要|可行|可以|吗|呢|吧)+$/u,"").trim().slice(0,60)}function bQ(a){return String(a||"").split(/[。;;,,??\n]/u).map(a=>a.trim()).filter(Boolean)}function bR(a){let b=[];for(let c of bQ(a)){let a=/^(.*?)(?:均为|皆为|采用|为|按|用|做)(.+)$/u.exec(c);if(!a)continue;let d=bO(a[1]||""),e=bP((a[2]||"").replace(/^(?:何|为何|如何|怎么)?(?:均为|皆为|采用|为|做|用|按)/u,""));!(d.length<2)&&!(e.length<2)&&!(e.length>24)&&(bJ.test(e)||bI.test(e)||b.push({object:d,complement:e}))}return b}function bS(a){return{text:a,strength:bN(a)}}function bT(a){let b=a.before[0]?.text;return"cancel"===a.kind?`- ${a.object}:${a.after}${b?`——修正前形态「${b}」不得再作为现行做法`:"——不得再作为现行做法"}`:"replace"===a.kind&&b?`- ${a.object}:修正后「${a.after}」;修正前「${b}」为被取代形态,不得作为现行做法`:`- ${a.object}:${a.after}`}let bU=(0,p.eA)("未标注来源的资料"),bV=/(?:不采用|不设置|不设|不需要|不需|无需|不予|不再|不做|不考虑|不进行|不涉及|取消)/u,bW=["电梯","幕墙","智能化","消防","暖通","给排水","电气","燃气","人防","室外","园林","绿化","景观","钢结构","防水","保温","门窗","通风","空调","防雷","接地","动力","照明","拆除","加固","装修","装饰"];var bX=c(68977);let bY=(a,b)=>{let c=b.exec(a);if(!c)return;let d=Number(c[1]);return Number.isFinite(d)&&d>0?d:void 0},bZ=[{name:"基坑支护与降水工程",aliases:["基坑支护","基坑工程","降排水","降水井"],applicable:a=>{let b=bY(a,/(?:基坑)?开挖深度[约为达至]{0,3}(\d+(?:\.\d+)?)\s*m/u);return void 0!==b&&b>=(bX.gQ.基坑工程.hazardous[0].value??3)}},{name:"高大模板支撑工程",aliases:["高大模板","高支模","模板支撑体系","模板支撑"],applicable:a=>{let b=bY(a,/(?:模板)?支撑(?:体系)?(?:搭设)?高度[约为达至]{0,3}(\d+(?:\.\d+)?)\s*m/u),c=bY(a,/(?:施工(?:总)?荷载|集中线荷载)[约为达至]{0,3}(\d+(?:\.\d+)?)\s*kN/u);return void 0!==b&&b>=(bX.gQ.模板工程及支撑体系.hazardous[0].value??5)||void 0!==c&&c>=15||/高支模|高大模板/u.test(a)}},{name:"脚手架工程",aliases:["脚手架","落地式钢管脚手架","悬挑式脚手架","悬挑脚手架"],applicable:a=>{let b=bY(a,/(?:落地式|悬挑式)?(?:钢管)?脚手架(?:搭设)?高度[约为达至]{0,3}(\d+(?:\.\d+)?)\s*m/u);return void 0!==b&&b>=(bX.gQ.脚手架工程.hazardous[0].value??24)||/悬挑(?:式)?脚手架/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 b$(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 b_(a){let b=bZ.filter(b=>b.applicable(a)),c=b$(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 b0(a,b){let c=b$(a);return b.filter(a=>{let b=bZ.find(b=>b.name===a);return!!b&&!b.aliases.some(a=>c.includes(a))})}let b1=/[二三四五六七八九十\d]{1,4}\s*个?\s*阶段/u,b2={一:1,二:2,三:3,四:4,五:5,六:6,七:7,八:8,九:9};function b3(a){return/(\d+|[一二三四五六七八九十]+)\s*个?\s*阶段/u.exec(a)?.[1]??null}function b4(a){let b=a.map(b3).filter(a=>null!==a).map(a=>/^\d+$/u.test(a)?parseInt(a,10):/^[一二三四五六七八九十]+$/u.test(a)?"十"===a?10:1===a.length?b2[a]??null:a.startsWith("十")?10+(b2[a[1]]??0):a.endsWith("十")?(b2[a[0]]??0)*10:(b2[a[0]]??0)*10+(b2[a[2]]??0):null).filter(a=>null!==a);return 0===b.length?null:1===new Set(b).size?b[0]:null}async function b5(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=b1.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,aX.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(b4).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 b6=c(41991);let b7=/应急预案|应急措施|应急响应|应急救援|突发事件|应急管理|应急物资|应急演练|应急组织|应急保障/u,b8=/应急|突发|救援|预案|抢险|疏散/u,b9=["应急预案的编制与响应流程","突发事件应急处置措施","应急救援组织体系与保障"],ca=["应急照明系统安装调试","应急电源配置与切换方案"],cb={organization:"应急管理领导小组、应急救援队伍的组织机构与职责分工",procedure:"应急处置程序、应急响应流程与应急演练安排",resource:"应急物资、应急器材设备的储备与保障措施"},cc=/应急物资|急救箱|灭火器|沙袋|发电机|水泵|对讲机|应急照明|应急灯|防护服|救援绳|救生衣|铁锹|编织袋|抽水泵|警示带|应急器材/u,cd=/配备|储备|保障|配置|数量|不少于|共计|套|具|个|台|把|只/u,ce=["应急物资储备清单与配备数量","应急救援器材的配置与保障"],cf=["应急照明灯具数量与回路设计","应急电源的电气系统设计"];async function cg(a){return(0,b6.A)({prototypes:[...b9],negativePrototypes:[...ca],embedDocuments:a})}async function ch(a){return(0,b6.A)({prototypes:[...ce],negativePrototypes:[...cf],embedDocuments:a})}async function ci(a,b){let c=a.split(/\r?\n/u),d=[],e=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=>!b7.test(a.title)&&b8.test(a.title)),g=await cg(b),h=e.length>0?await g(e.map(a=>a.title)):[],i=new Set(e.filter((a,b)=>h[b]).map(a=>a.title)),j=a=>b7.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(cb),s=await (0,aX.Mv)(q,r),t=a=>q.some(b=>s(b,a)>=aX.Eh);t(cb.organization)||p.push("应急组织体系"),t(cb.procedure)||p.push("应急处置程序/演练");let u=await ch(b),v=m.join("。").split(/[。;;]/u).map(a=>a.trim()).filter(a=>cc.test(a)&&cd.test(a)),w=v.length>0?await u(v):[];return t(cb.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,f.c6)(a)}}),d}var cj=c(70208),ck=c(91943),cl=c(54185);let cm=/(?: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,cn=/《[^《》\r\n]{2,60}?》/gu,co=/(?:规范|标准|规程)$/u;function cp(a){return[...a.matchAll(cm)].map(a=>a[0])}function cq(a){return[...a.matchAll(cn)].map(a=>a[0].replace(/《|》/gu,""))}function cr(a){return a.replace(/[!-~]/gu,a=>String.fromCharCode(a.charCodeAt(0)-65248)).replace(/\u3000/gu," ")}function cs(a){return cr(a).replace(/[\s\u200b-\u200d\ufeff]/gu,"").replace(/[—–-]/gu,"-").toUpperCase()}function ct(a){return cr(a).replace(/《|》/gu,"").replace(/[((][^))]{0,40}[))]/gu,"").replace(/[\s\u200b-\u200d\ufeff]/gu,"")}function cu(a){return co.test(ct(a))}function cv(a,b){let c=cs(a),d=cs(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 cw(a,b){let c=ct(a),d=ct(b);return!!c&&!!d&&(c===d||!(c.length<4)&&!(d.length<4)&&(c.includes(d)||d.includes(c)))}let cx=/^[\s()()【】[\]、,,;;::·.及和与]*$/u;function cy(a){let b=[];for(let c of a.split(/\r?\n/u)){let a=cr(c),d=[];for(let b of a.matchAll(cm)){let a=b.index??0;d.push({type:"code",value:c.slice(a,a+b[0].length),index:a,end:a+b[0].length})}for(let b of a.matchAll(cn)){let a=b.index??0;d.push({type:"name",value:c.slice(a+1,a+b[0].length-1),index:a,end:a+b[0].length})}if(0===d.length)continue;d.sort((a,b)=>a.index-b.index);let e=new Map,f=new Set;d.forEach((a,b)=>{if("code"!==a.type)return;let g=e=>{for(let g of"left"===e?d.slice(0,b).map((a,c)=>b-1-c):d.slice(b+1).map((a,c)=>b+1+c)){let b=d[g];if("name"!==b.type||f.has(g))continue;let h="left"===e?c.slice(b.end,a.index):c.slice(a.end,b.index);if(!cx.test(h))break;return g}return -1},h=g("left"),i=h>=0?h:g("right");i>=0&&(e.set(b,i),f.add(i))});let g=new Set;d.forEach((a,c)=>{if(!g.has(c))if("code"===a.type){let f=e.get(c);void 0!==f?(b.push({code:a.value,name:d[f].value}),g.add(f)):b.push({code:a.value}),g.add(c)}else f.has(c)||(b.push({name:a.value}),g.add(c))})}return b}function cz(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 cA(a){let b=[];for(let c of a){let a=b.findIndex(a=>!!(a.code&&c.code&&cv(a.code,c.code)||a.name&&c.name&&cw(a.name,c.name)));if(a<0){b.push(c);continue}"pair"===c.kind&&"pair"!==b[a].kind&&(b[a]=c)}return b}let cB=/编制依据|编制说明|编制原则|编制目的/u;function cC(a){let b=(0,af.UO)(a);if(0===b.length)return b;let c=b.filter(a=>cB.test(a.title));if(0===c.length)return b;let d=a.split(/\r?\n/u);return c.reduce((a,b)=>a+cy([b.title,...d.slice(b.start+1,b.end)].join("\n")).length,0)>0?c:b}function cD(a){let b=a.split(/\r?\n/u);return cC(a).map(a=>[a.title,...b.slice(a.start+1,a.end)].join("\n")).join("\n")}function cE(a){let b=cC(a),c=cD(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=cy(c),h=cy(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=function(a){let b=[];for(let c of a.split(/\r?\n/u))if(c.trim())for(let a of c.trim().startsWith("|")?c.split("|"):c.split(/[、,,;;]/u)){let c=a.trim();!(c.length<4||c.length>40||c.includes("《"))&&co.test(ct(c))&&b.push(c)}return b}(f),n=a=>k.some(b=>cv(a,b)),o=a=>l.some(b=>cw(a,b))||m.some(b=>ct(b)===ct(a)),p=a=>i.some(b=>cv(b,a)),q=a=>j.some(b=>cw(b,a)),r=[];for(let a of g){let b=!a.code||n(a.code)||!!a.name&&o(a.name),c=!a.name||o(a.name)||!!a.code&&n(a.code);a.code&&!b&&a.name&&cu(a.name)?r.push({kind:"pair",value:a.name,code:a.code,name:a.name,counterpart:a.code}):a.code&&!b?r.push({kind:"code",value:a.code,code:a.code,counterpart:a.name}):a.name&&cu(a.name)&&!c&&r.push({kind:"name",value:a.name,name:a.name,counterpart:a.code})}let s=[];for(let a of h){let b=!a.code||p(a.code)||!!a.name&&q(a.name),c=!a.name||q(a.name)||!!a.code&&p(a.code);a.code&&!b&&a.name&&cu(a.name)?s.push({kind:"pair",value:a.name,code:a.code,name:a.name,context:cz(f,a.code)}):a.code&&!b?s.push({kind:"code",value:a.code,code:a.code,context:cz(f,a.code)}):a.name&&cu(a.name)&&!c&&s.push({kind:"name",value:a.name,name:a.name,context:cz(f,`《${a.name}》`)})}return{declaredNotUsed:cA(r),usedNotDeclared:cA(s),stats:{declaredCodes:i.length,declaredNames:j.length,usedCodes:k.length,usedNames:l.length}}}function cF(a){return"pair"===a.kind?`《${a.name}》(${a.code})`:"code"===a.kind?`标准编号「${a.value}」`:`《${a.value}》`}async function cG(a){let b=await (0,af.Z2)(a.markdown,a.factsModel,{scopeClassifier:a.factTokenScopeClassifier}),c=new Set((a.truthValues||[]).flatMap(a=>a.superseded||[]).map(a=>(0,w.K3)(a))),d=(0,aY.Uk)(a.tenderRequirements).map(({item:a})=>(0,aY.E6)(a)),e=a.markdown.split(/\n/u).filter(a=>/^#{2,4}\s/u.test(a.trim())).map(a=>(0,aY.NT)(a)).filter(Boolean).slice(0,80),g=(0,s.s3)(a.markdown,s.ev),h=await (0,aX.Mv)(d,[...e,...g]),j=await (0,aX.Mv)(a.evaluationCriteriaItems||[],e),k=new Map((await Promise.all(a.chapters.map(async b=>[b.title,await a.professionalDepthClassifier.analyze(b.content)]))).filter(a=>!!a[1]));return[...(0,o.yT)("toc-consistency",()=>a.promptDocumentRules?.forbidToc?[]:[...(0,af.gN)(a.markdown),...(0,af.f8)(a.markdown)]),...(0,o.yT)("section-numbering",()=>(0,af.Jn)(a.markdown)),...(0,o.yT)("section-count-overflow",()=>(0,af.VW)(a.chapters)),...(0,o.yT)("heading-duplicate",()=>(0,af.kw)(a.markdown)),...(0,o.yT)("structure-integrity",()=>(0,ck.dC)(a.markdown,{excludeKinds:["truncated-line"]})),...(0,o.yT)("truncated-sentence",()=>(0,ck.kj)(a.markdown)),...(0,o.yT)("templated-label",()=>(0,cl.D9)(a.markdown)),...(0,o.yT)("title-integrity",()=>(0,cl.uw)(a.markdown)),...(0,o.yT)("evaluation-criteria-coverage",()=>(0,af.wl)(a.markdown,a.evaluationCriteriaItems||[],{semanticSimilarity:j})),...await (0,o.ll)("requirements-coverage",()=>(0,aY.tH)({markdown:a.markdown,entries:(0,aY.Uk)(a.tenderRequirements).map(({item:a})=>a),bodyTexts:g,semanticSimilarity:h})),...(0,o.yT)("fabricated-start-date",()=>(0,s.cf)(a.markdown,a.factsModel,a.materialEvidence)),...(0,o.yT)("field-value-mismatch",()=>(0,s.a8)(a.markdown,a.factsModel)),...(0,o.yT)("area-arithmetic",()=>(0,s.u2)(a.markdown)),...(0,o.yT)("resource-consistency",()=>(0,s.rA)(a.markdown,{laborPeakAuthority:(0,ah.yB)(a.blueprintData)})),...(0,o.yT)("node-schedule-consistency",()=>(0,s.Et)(a.markdown)),...(0,o.yT)("cross-section-numeric-conflict",()=>(0,s.H)(a.markdown)),...(0,o.yT)("fact-reconciliation",()=>(0,aj.az)({markdown:a.markdown,billFactLock:a.billFactLock,blueprintData:a.blueprintData,factsModel:a.factsModel})),...(0,o.yT)("greening-maintenance-mismatch",()=>(0,s.x5)(a.markdown,a.factsModel)),...(0,o.yT)("street-light-count-mismatch",()=>(0,s.Tz)(a.markdown,a.factsModel)),...(0,o.yT)("spec-location-mismatch",()=>(0,s.$$)(a.markdown,a.factsModel.specAuthorityMap)),...await (0,o.ll)("blueprint-citation-consistency",async()=>a.blueprintData?(await (0,t.dr)(a.markdown,a.blueprintData)).filter(a=>"error"===a.level):[]),...await (0,o.ll)("cross-project-value-copy",()=>(0,s.iy)(a.markdown,(0,ah.L$)(a.blueprintData))),...(0,o.yT)("phase-labor-mixing",()=>(0,s.cv)(a.markdown,(0,ah.i2)(a.blueprintData))),...(0,o.yT)("equipment-batch-conflict",()=>(0,s.KE)(a.markdown,(0,ah.Be)(a.blueprintData))),...(0,o.yT)("preliminary-action-timing",()=>(0,s.fg)(a.markdown,a.blueprintData?.contract.totalDays)),...(0,o.yT)("foundation-form-residue",()=>(0,s.ex)(a.markdown)),...(0,o.yT)("ambiguous-either-or",()=>(0,s.Fr)(a.markdown)),...(0,o.yT)("excavation-depth-lock",()=>(0,s.bq)(a.markdown)),...(0,o.yT)("excavation-hazard-classification",()=>(0,s.LA)(a.markdown,a.factsModel)),...(0,o.yT)("support-form-fact-consistency",()=>(0,s.ek)(a.markdown,a.factsModel)),...(0,o.yT)("equipment-entry-timing",()=>(0,s.fQ)(a.markdown,a.factsModel)),...(0,o.yT)("fabricated-award",()=>(0,s.hu)(a.markdown,a.factsModel,a.tenderRequirements)),...(0,o.yT)("bidder-qualification-section",()=>(0,s.Rv)(a.markdown)),...(0,o.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,cj.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,cj.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,o.yT)("basic-info-schedule-field",()=>(0,s.cT)(a.markdown)),...(0,o.yT)("duplicate-table",()=>(0,s.ub)(a.markdown)),...(0,o.yT)("duplicate-paragraph",()=>(0,s.cl)(a.markdown)),...(0,o.yT)("paragraph-near-duplicate",()=>(0,aG.w9)(a.markdown)),...(0,o.yT)("paragraph-tail-repeat",()=>(0,s.AD)(a.markdown)),...(0,o.yT)("collision-numbered-heading",()=>(0,s.xR)(a.markdown)),...(0,o.yT)("inverted-date-range",()=>(0,s.jP)(a.markdown)),...(0,o.yT)("resource-triad-section-hierarchy",()=>(0,s.zP)(a.markdown)),...await (0,o.yT)("support-system-conflict",()=>(0,s.r8)(a.markdown,(0,s.P3)(a.factsModel))),...(0,o.yT)("dangerous-list-consistency",()=>(0,s.vH)(a.markdown)),...(0,o.yT)("hazard-exclusion-contradiction",()=>(0,s.m6)(a.markdown)),...await (0,o.yT)("six-hundred-percent-coverage",()=>(0,s.sn)(a.markdown,{chapterTitles:(a.effectiveChapters||a.template.chapters||[]).map(a=>a.title)})),...await (0,o.yT)("self-undermining-candidate",()=>(0,s.YN)(a.markdown)),...(0,o.yT)("paragraph-opening-repeat",()=>(0,s.y2)(a.markdown)),...(0,o.yT)("flow-form-repeat",()=>(0,cl.Q9)(a.markdown)),...(0,o.yT)("skeleton-fingerprint",()=>(0,cl.o0)(a.markdown)),...(0,o.yT)("sentence-pattern-repeat",()=>(0,cl.TN)(a.markdown)),...(0,o.yT)("repeated-word",()=>(0,s.Xc)(a.markdown)),...await (0,o.yT)("commercial-data-in-body",()=>(0,s.mC)(a.markdown)),...(0,o.yT)("overview-recap",()=>(0,s.l4)(a.markdown)),...(0,o.yT)("closure-phrase-density-cap",()=>(0,s.dF)(a.markdown)),...await (0,o.ll)("parameter-concept-conflict",()=>be(a.markdown,{billFactLock:a.billFactLock,blueprintQuantities:a.blueprintData?.quantities})),...await (0,o.ll)("internal-terminology-anchor",()=>(0,ag.WT)(a.markdown)),...(0,o.yT)("construction-system-coverage",()=>(function(a){let b=[...new Set(a.flatMap(a=>bW.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,o.yT)("dangerous-applicability",()=>(function(a){let b=b_(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,o.yT)("innovation-tech-coverage",()=>(0,af.Ef)(a.markdown,a.effectiveChapters||a.template.chapters||[])),...(0,o.yT)("instruction-like-heading",()=>(0,af.K1)(a.markdown)),...(0,o.yT)("formal-heading-hierarchy",()=>(0,af.Fv)(a.markdown)),...(0,o.yT)("formal-content-integrity",()=>(0,af.k0)(a.markdown)),...(0,o.yT)("punctuation-artifact",()=>(0,af.vZ)(a.markdown)),...(0,o.yT)("table-quality",()=>(0,af.NS)(a.markdown)),...(0,o.yT)("table-spam",()=>(0,af.SN)(a.markdown)),...(0,o.yT)("basis-regulations-coverage",()=>(0,af.AN)(a.markdown,a.blueprintData,{chapterTitles:(a.effectiveChapters||a.template.chapters||[]).map(a=>a.title)})),...(0,o.yT)("basis-regulations-cross",()=>(function(a){let b=cE(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:`编制依据对账缺口:正文引用${cF(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(cF).join("、")} 等)`,suggestion:"请统一核对编制依据小节与正文引用清单,补齐全部未声明标准条目。"})}for(let a of e.slice(0,12))c.push({level:"warning",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`编制依据对账缺口:编制依据小节的${cF(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(cF).join("、")} 等)`,suggestion:"请统一核对编制依据与正文引用清单,未使用条目在正文落位或从编制依据移除。"})}return c})(a.markdown)),...(0,o.yT)("resource-breakdown-consistency",()=>(0,af.EJ)(a.markdown,a.blueprintData,a.billFactLock)),...(0,o.yT)("section-content-integrity",()=>(0,af.qK)(a.markdown,a.chapters)),...(0,o.yT)("professional-content",()=>(0,af.ji)(a.chapters,k)),...(0,o.yT)("professional-score",()=>(0,af.i0)(a.chapters,k)),...(0,o.yT)("generic-professional-content",()=>(0,af.ST)(a.chapters,k)),...(0,o.yT)("management-measure-number",()=>(0,af.xX)(a.chapters,k)),...await (0,o.yT)("closed-loop-density",()=>(0,af.Zu)(a.markdown)),...await (0,o.yT)("cross-chapter-consistency",()=>(0,af.qm)(a.markdown,a.factsModel,a.scopeConflicts,k)),...await (0,o.yT)("process-spec-conflict",()=>(0,af.hr)(a.markdown,a.factsModel)),...(0,o.yT)("evidence-usage-coverage",()=>aD(a.markdown,a.factsModel)),...await (0,o.yT)("paragraph-generic",()=>aE(a.markdown,a.professionalDepthClassifier)),...await (0,o.yT)("construction-org-generic-language",()=>(0,aB.Fw)(a.chapters)),...(0,o.yT)("construction-org-control-loop",()=>(0,aB.Hl)(a.chapters)),...(0,o.yT)("construction-org-professional-chain",()=>(0,aB.iX)({markdown:a.markdown,factsModel:a.factsModel,chapters:a.chapters})),...(0,o.yT)("construction-org-consistency",()=>(function(a,b){let c=[];if(!/施工组织设计|施工组织|施组|质量|安全|文明施工/u.test(a))return c;for(let d of aR){if("equipment-counts"===d.kind){c.push(...function(a,b,c){let d=(0,aQ.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,aQ.AK)(a.value))e(b.name),d.has(b.name)||d.set(b.name,b.count);let b=aS(a.value);if(b.length>12||/\d/u.test(b))continue;let c=(0,aQ.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=>aW(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(aT.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=aV(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=aS(d[1]||d[0]||"");!aU.test(a)&&a.length>=2&&a.length<=80&&c.push(a)}}return[...new Set(c)]})(a,d.patterns??[]).filter(a=>!aT.test(a)&&!aW(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,o.yT)("construction-org-chapter-data-coverage",()=>(function(a,b){let c=[],d=aV(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,o.yT)("construction-org-major-content",()=>(0,aB.Av)(a.chapters,a.markdown)),...(0,o.yT)("construction-org-division-section",()=>(0,aB.CS)(a.chapters,a.markdown)),...(0,o.yT)("major-content-governance",()=>(0,aB.l5)(a.markdown)),...(0,o.yT)("construction-org-bonus-module",()=>(0,aB.b7)(a.chapters)),...(0,o.yT)("chapter-dependency",()=>aF(a.chapters,k)),...(0,o.yT)("document-delivery-score",()=>(function(a,b,c,d){let e=(d?.size??0)>0,f={factuality:(0,i.V7)(a)>=80,structure:b.length>0,depth:e,executable:e,evidence:b.length>0},g={factuality:2*!(0,af.vY)(a,c).some(a=>"error"===a.level),structure:b.length>0&&b.every(b=>a.includes(b.title)&&(0,i.V7)(b.content)>=600)?2:1,depth:0===(0,af.i0)(b,d).length?2:1,executable:0===aF(b,d).length?2:1,evidence:0===aD(a,c).length?2:1},h=Object.keys(g).filter(a=>f[a]),j=Object.keys(g).filter(a=>!f[a]),k=h.reduce((a,b)=>a+g[b],0),l=2*h.length,m={factuality:"事实",structure:"结构",depth:"专业",executable:"可执行",evidence:"证据"},n=j.map(a=>m[a]).join("、");return[{level:"info",message:`文档交付评分报告:总分 ${k}/${l}(已测 ${h.length}/5 维),`+h.map(a=>`${m[a]}${g[a]}`).join(",")+(j.length>0?`;**未测维度(本次无输入,未计分)**:${n}`:""),suggestion:j.length>0?`存在未测维度(${n}):该部分本次**未被核验**,本分数不构成放行依据;请补齐输入(章草稿/AI 分析)后重跑。`:k>=.8*l?"可交付,但建议继续优化证据使用覆盖率和章节依赖链路。":"建议优先修复低分维度后再导出。"}]})(a.markdown,a.chapters,a.factsModel,k)),...(0,o.yT)("generated-fact-verification",()=>b),...(0,o.yT)("numeric-traceability",()=>(0,y.FA)(a.markdown,a.factsModel)),...(0,o.yT)("table-arithmetic-consistency",()=>(0,s.qE)(a.markdown)),...(0,o.yT)("duplicate-basic-info",()=>(0,af.iC)(a.markdown)),...await (0,o.yT)("formal-style",()=>(0,af.BV)(a.markdown)),...(0,o.yT)("tertiary-heading",()=>(0,ad.dh)(a.markdown)),...(0,o.yT)("min-chapter-section",()=>(0,af.Ty)(a.chapters)),...(0,o.yT)("hollow-table-cell",()=>(0,af.cG)(a.markdown)),...(0,o.yT)("schedule-duration-overrun",()=>(0,af.v4)(a.markdown)),...(0,o.yT)("caliber-consistency",()=>[...(0,af.lg)(a.markdown,a.truthValues||[]),...function(a,b=[]){let c=[];if(!a||!b||0===b.length)return c;let d=(0,w.K3)(a),e=(0,f.c6)(a);for(let f of b){let b=f.before.filter(a=>(function(a,b){let c=(0,w.K3)(a);if(c.length<3)return!1;for(let a of b.matchAll(RegExp(c.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&"),"gu"))){let d=a.index||0,e=b.slice(Math.max(0,d-16),d+c.length+16);if(!bn.test(e))return!0}return!1})(a.text,d));if(b.length>0){let a=b.some(a=>"strong"===a.strength),d=b.map(a=>`「${a.text}」`).join("、");c.push({level:a?"error":"warning",severity:a?"blocker":"warning",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",provenance:{detectorId:bo,fingerprint:e},message:`被取代形态残留:答疑修正后「${f.object}」为「${f.after}」,正文仍以修正前形态 ${d} 作为现行做法(修正前形态仅可在陈述变更过程时引用)`,suggestion:`请把正文中 ${d} 改为答疑修正后内容「${f.after}」(来源:${f.source});确需说明变更过程的,写成「原为X,经答疑修正为Y」的形式。`})}if("cancel"===f.kind)continue;let g=f.after.trim();if(g.length<2)continue;let h=function(a,b){let c=function(a){let b=a.trim();if(b.length>=4&&b.length<=12)return[b];let c=b.split(/[、,,及与和\s()()]/u).map(a=>a.trim()).filter(a=>a.length>=4).sort((a,b)=>b.length-a.length);return c.length>0?[c[0]]:b.length>=4?[b]:[]}(a.object);if(0===c.length)return;let d=c.map(a=>(0,w.K3)(a)).filter(Boolean);if(0!==d.length)for(let a of b.split(/[。;;!?\n]+/u)){let b=a.trim();if(b.length<6||b.length>200)continue;let c=(0,w.K3)(b);if(c)for(let a of d){let d=c.indexOf(a);if(!(d<0)){for(let a of c.matchAll(RegExp(bV.source,"gu")))if(30>=Math.abs((a.index??0)-d))return b.slice(0,60)}}}}(f,a);if(h){c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",provenance:{detectorId:bo,fingerprint:e},message:`答疑修正未落实(明确对立):「${f.object}」经答疑修正为「${g}」,正文却以否定表述处理(如「${h}」)`,suggestion:`请按答疑修正后内容改写该处表述:「${g}」(来源:${f.source});答疑已明确的做法不得写成不做/不采用。`});continue}g.length<6||g.length>60||!function(a,b){let c=(0,w.K3)(a);if(c.length<4||b.includes(c))return!0;let d=function(a){let b=[];for(let c=0;c+1<a.length;c+=1)b.push(a.slice(c,c+2));return b}(c);if(0===d.length)return!0;if(d.filter(a=>b.includes(a)).length/d.length<.6)return!1;let e=(0,w.zn)(a).map(a=>(0,w.K3)(a)).filter(a=>a.length>=2);return 0===e.length||e.some(a=>b.includes(a))}(g,d)&&c.push({level:"warning",severity:"warning",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",provenance:{detectorId:bo,fingerprint:e},message:`答疑修正未落位:「${f.object}」经答疑修正为「${g}」,正文未体现该修正后内容(不足额)`,suggestion:`请在相关章节补写答疑修正后内容「${g}」(来源:${f.source});该条已作为写作硬约束下发,此处为终检兜底。`})}return c}(a.markdown,a.clarificationAmendments)]),...(0,o.yT)("hazard-parameter-binding",()=>(0,af.Bs)(a.markdown,a.truthValues||[])),...(0,o.yT)("blueprint-value-placement",()=>(0,af.uy)(a.markdown,a.blueprintData)),...(0,o.yT)("dangling-conjunction",()=>(0,af.Dy)(a.markdown)),...(0,o.yT)("planned-section-placement",()=>(0,af.hd)(a.markdown,a.chapters)),...await (0,o.yT)("precise-fact-usage",()=>(0,af.N1)(a.markdown,a.factsModel,a.chapters)),...(0,o.yT)("parameter-obligation-usage",()=>(function(a,b,c=[],d={}){if(0===c.length)return[];let e=R(a,b,c,d),g=e.used.length+e.relevantMissed.length;if(g<8||e.used.length/g>=.9)return[];let h=e.relevantMissed.slice(0,3).map(a=>String(a.value).slice(0,30));return[{level:"error",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`可靠参数义务落位不足:${e.used.length}/${g}(相关而遗漏 ${e.relevantMissed.length} 项${h.length>0?`,缺失如 ${h.join("、")}`:""})`,suggestion:"请将资料中的可靠参数(规格/型号/尺寸/强度/规范编号等)在对应章节的对应位置自然写入,保持原值原形态(数字、单位、编号中的连字符与年份不得改写、拆分或省略);商务金额、单价、税率、预留金类数据一律不得写入正文。",provenance:{detectorId:"parameter-obligation-usage",fingerprint:(0,f.c6)(a)}}]})(a.markdown,a.factsModel,a.chapters,{supersededValues:c})),...await (0,o.yT)("boq-placement",()=>(0,af.S2)(a.markdown,a.chapters,a.factsModel)),...await (0,o.yT)("stage-phrasing",()=>b5(a.markdown)),...await (0,o.yT)("emergency-section-depth",()=>ci(a.markdown)),...(0,o.yT)("boq-row-trace",()=>(0,y.QP)((0,y.JV)(a.markdown,a.factsModel))),...(0,o.yT)("drawing-reference",()=>(0,af.yd)(a.markdown,a.drawingFactLock)),...(0,o.yT)("drawing-pointer-phrase",()=>(0,af.D0)(a.markdown)),...(0,o.yT)("atlas-reference-phrase",()=>(function(a){let b=(0,aH.St)(a);return 0===b.length?[]:[{level:"error",severity:"blocker",category:"format",owner:"system",repairability:"local_deterministic",message:`正文出现图集/标准图指向替代做法 ${b.length} 处(如「${[...new Set(b)].slice(0,3).join("」「")}」):做法必须写进正文,不得让评标人回查图集`,suggestion:"写出具体做法(尺寸/材料/构造参数/工艺要求)替代指向短语;规范/法规引用(书名号内为规范名,或标题后紧跟 GB/JGJ/CJJ 类标准代号)不属本判据范围,保留不动。"}]})(a.markdown)),...(0,o.yT)("source-enumeration",()=>(0,ad.bx)(a.markdown).filter(a=>a.message.includes("资料来源罗列话术"))),...(0,o.yT)("meta-discourse-declaration",()=>(0,aG.nm)(a.markdown)),...(0,o.yT)("finish-thickness",()=>(0,aG.WY)(a.markdown)),...(0,o.yT)("formula-residue",()=>(0,aG.ON)(a.markdown)),...(0,o.yT)("web-evidence-leakage",()=>(function(a){let b=[];return aL.test(a)&&b.push({level:"warning",message:"正文包含联网增强过程性表述",suggestion:"请删除联网检索、网页资料、搜索结果等过程性话术,改为正式交付语言。"}),b})(a.markdown)),...(0,o.yT)("formal-placeholder",()=>(0,af.bM)(a.markdown)),...(0,o.yT)("prompt-example-leak",()=>(0,af.M$)(a.markdown,a.promptBindings)),...(0,o.yT)("degenerate-content",()=>(0,af.AC)(a.markdown,a.chapters)),...(0,o.yT)("planned-auto-spec-gate",()=>(0,af.mR)(a.markdown,a.template)),...(0,o.yT)("bid-composition-body-table",()=>(0,ad.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,o.yT)("bid-composition-body-figure",()=>(0,ad.Fo)(a.markdown,a.bodyFigureForbidden)),...(0,o.yT)("identity-marks-forbidden",()=>(0,s.Vl)(a.markdown,a.identityMarksForbidden)),...(0,o.yT)("planned-structure",()=>(0,ad.UG)(a.markdown,a.template,a.bodyTableForbidden)),...(0,o.yT)("table-caption",()=>(0,ad.XU)(a.markdown,a.bodyTableForbidden)),...await (0,o.yT)("prompt-document-rule",()=>(0,ad.Ed)(a.markdown,a.promptDocumentRules,void 0,{bodyTableForbidden:a.bodyTableForbidden,coverForbidden:a.coverForbidden})),...await (0,o.yT)("local-adaptation-keyword",()=>(0,s.cJ)(a.markdown,a.factsModel)),...(0,o.yT)("boq-division-coverage",()=>(0,y.sl)(a.markdown,a.chapters,a.factsModel))]}let cH={project:"项目基础事实",schedule:"工期与节点",quality:"质量目标与验收",safety:"安全文明要求",resources:"资源投入依据",quantities:"清单/图纸/工程量事实",rules:"规范规则与验收要求"};var cI=c(52922);function cJ(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 cK(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 cL(a){return a.split("\n").filter(a=>!(0,cI.X9)(a)&&!cJ(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=>!cK(a))}function cM(a,b){let c=new Set;for(let d of cL(a))for(let a of d.match(b)||[])c.add(a);return c}let cN=/\d|确保|保证|杜绝|实行|采用|落实|建立|执行|达到|不低于|不少于|控制在|符合|按照|承诺/u,cO=["危险性较大的分部分项工程安全管理","扬尘污染防治措施","建筑工人实名制管理","农民工工资专用账户与工资支付保障","生产安全事故应急预案与应急演练","绿色施工与四节一环保措施"],cP=["危险源辨识与风险识别评估","编制专项施工方案","组织专家论证并履行审批程序","对作业人员进行安全技术交底","施工过程监测与监控量测","分部分项工程验收","三级配电系统","两级漏电保护装置","漏电保护器与接地保护","实名制考勤与人员管理","农民工工资专用账户银行代发","应急预案编制与响应","绿色施工措施与评价"];function cQ(a){return a.replace(/^第[一二三四五六七八九十百千万\d]+[章节]\s*/u,"").replace(/^\d+(?:\.\d+)*[、..\s]+/u,"").replace(/^[((]?[一二三四五六七八九十]+[))、..\s]+/u,"").replace(/\s+/gu,"").trim()}async function cR(a){let{blocks:b,completeBlocks:c}=await (0,cI.Pm)(a);return Math.round((.7*Math.min(1,c/Math.max(6,Math.ceil((0,i.V7)(a)/1500)))+.3*(b?c/b:0))*100)}let cS=/目录|层级|编号|表格|表头|分隔线|页码|空小节|缺少规划小节|小节只有标题|缺节/u,cT=/跨章一致性复核|事实一致性冲突|事实冲突|评分项要求|可靠精确参数|应急预案|属地创优|工伤保险|专业评分|深度不足|事实反查|存在多个值|已确认事实未在正文中落位|事实未在正文中落位/u,cU=/缺少规划小节|小节只有标题|空小节|只有标题或表格无正文|小节内容补写未完成|小节生成未达标|同名小节|H4 标题|正文缺少章节标题|小节正文过短/u;function cV(a){let b=new Map;return a.split("\n").forEach((a,c)=>{if(!((0,cI.X9)(a)||cJ(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 cW(a){let b=cV(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 cX(a,b){let c=await (0,cI.Bt)(a,b),d=(0,cI.Ye)(a),e=cW(a).duplicateRate,f=await (0,cI.gE)(a,b),g=(0,cI.nY)(a),h=(0,cl.vL)(a),i=cl.y9.map(b=>({patternId:b.id,patternLabel:b.label,count:(0,cl.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 cY(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?cQ(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=>!cJ(a));b.some(a=>(function(a){let b=a.replace(/[\u200b-\u200f\u2060\ufeff]/gu,"").trim();return!(b.length<12||(0,cI.X9)(b)||cJ(b))&&!cK(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 cZ(a){let b=[];for(let c of cY(a))if(c.hasSubstantiveBody)for(let a of(c.headingText&&b.push(c.headingText),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 c$(a){let b=cZ(a.markdown),c=await (0,aX.Mv)(b,[...cO,...cP],a.embedDocuments),d=a=>b.some(b=>c(b,a)>=aX.Eh),e=cO.filter(d).length/cO.length,f=await (0,cI.Bt)(a.markdown,a.embedDocuments);return{completeness:function(a,b,c,d){let e=[...a.matchAll(/^#{1,3}\s+(.+)$/gmu)].map(a=>cQ(a[1]||"")).filter(a=>a.length>=2),f=1,g=c?.chapters||[];if(g.length>0){let a=g.map(a=>cQ(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(cQ(a.title))||cQ(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(y.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=cP.filter(b).length/cP.length,d=a.split("\n").map(a=>a.replace(/[\u200b-\u200f\u2060\ufeff]/gu,"").trim()).filter(a=>!(!a||/^#{1,6}\s+/u.test(a)||cJ(a))&&!/^(?:第[一二三四五六七八九十百\d]+[章节篇]|\d+(?:\.\d+){0,3})\s+[^。;;,,]*$/u.test(a)).join("\n"),e=(0,cI.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,cI.bH)(d).coverage)*100)}(a.markdown,d),executability:await cR(a.markdown),normalization:function(a){let b=a=>"table"===a.category||"format"===a.category||("structure"===a.category?cU.test(a.message):!a.category&&!cT.test(a.message)&&cS.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=cW(a),g=Math.max(10,Math.ceil((0,i.V7)(a)/1e4)),h=Math.max(0,f.duplicateInstances-g);return Math.max(0,Math.round(100-4*c-6*d-.5*e-Math.max(60*f.duplicateRate,h)))}(a.markdown,f),moduleCoverageRate:e}}var c_=c(43378),c0=c(31263);async function c1(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=cZ(a.markdown),d=cY(a.markdown).map(a=>a.heading).filter(Boolean),e=cL(a.markdown).join(""),f=await (0,aX.Mv)([...c,...d],b,a.embedDocuments),g=b.map((a,b)=>{let g=(0,af.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>=aX.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>=aX.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 c2="quality-caliber-c9.2",c3={version:c2,role:"primary"},c4={version:c2,role:"secondary",relatedTo:"quality-report"},c5={requirement:.3,structure:.15,dataAnchor:.2,professionalDepth:.15,compliance:.1,factIntegrity:.1},c6={anchors:.85,modules:.15},c7={execution:.45,figure:.35,caption:.2,appendix:.75,bodyCompliance:.25},c8={boq:.4,parameters:.3,drawing:.15,authority:.15},c9={selfHarm:.25,placeholder:.2,length:.15,tableConsistency:.2,regulation:.2},da={reconciliation:.6,binding:.2,keyFacts:.2},db=/规格-数值绑定|名称-数值绑定|合计值/u,dc=/编制依据对账缺口/u,dd={selfHarm:/自伤表述/u,placeholder:/占位符|占位式表达/u,length:/正文篇幅/u};function de(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 df(a,b){if(!b)return{value:null};let c=a.filter(a=>(0,i.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,h=[];for(let a of f){let b=(0,af.Pu)(a.analysis.dimensions),c=(0,af.lH)(a.title);g+=Math.min(1,b/c),b<c&&h.push(`${a.title} ${b}/12`)}let j=g/f.length*100,k=d.length>0?`;⚠ ${d.length} 章语义分析失败未计入(${d.slice(0,2).join(";")})`:"",l=(h.length>0?`专业深度达标 ${Math.round(j)}(薄弱:${h.slice(0,3).join("、")})`:`专业深度达标 ${Math.round(j)}(全部章达目标线)`)+k;return{value:j,detail:l}}async function dg(a){let b=await c$({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,aY.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,v.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=de([{...g,weight:c6.anchors},{...function(a){if(!Number.isFinite(a))return{value:null};let b=Math.round(a*cO.length);return{value:100*a,detail:`强制模块 ${b}/${cO.length}`}}(b.moduleCoverageRate),weight:c6.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,ae.cM)(b,a)).length;a.push({weight:c7.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:c7.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,c_.Xi)(e,f).reduce((a,b)=>a+b.plans.length,0));a.push({weight:c7.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,ad.NN)(b,{bodyTableForbidden:!1,plannedChapterTitles:d}).length;a.push({weight:c7.bodyCompliance,value:Math.max(0,100-25*g),detail:g>0?`正文未授权表格 违规 ${g} 处`:"正文表格授权合规"});let h=(0,ad.xw)(b,!1);h.total>0&&a.push({weight:c7.caption,value:h.captioned/h.total*100,detail:`题注 ${h.captioned}/${h.total}`})}return de(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,c_.Xi)(e,f).reduce((a,b)=>a+b.plans.length,0));g.push({weight:c7.execution,value:a/h*100,detail:`表执行 ${a}/${h}`})}let i=(0,c_.cA)({chapters:e});if(i.length>0){let a=(0,c_.F4)(i,b);g.push({weight:c7.figure,value:a.covered/a.total*100,detail:`图类数据表 ${a.covered}/${a.total}`})}let j=(0,ad.xw)(b,d?.bodyTablePolicy==="forbidden");return j.total>0&&g.push({weight:c7.caption,value:j.captioned/j.total*100,detail:`题注 ${j.captioned}/${j.total}`}),de(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:c8.boq,value:100*c.rate,detail:`BOQ 落位 ${c.placedRows}/${c.effectiveRows}`}),d&&null!==d.rate&&Number.isFinite(d.rate)&&g.push({weight:c8.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,c0.SL)(e,b);g.push({weight:c8.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:c8.authority,value:Math.max(0,100-5*a),detail:a>0?`无主数值 缺口 ${a} 处`:"无主数值 0 缺口"})}let i=de(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 df(a.chapters,a.professionalDepthClassifier),m=function(a,b){let c=b=>a.filter(a=>b.test(a.message)).length,d=c(dd.selfHarm),e=c(dd.placeholder),f=c(dd.length),g=(0,aG.OV)(b),h=cE(b),i=h.declaredNotUsed.length,j=h.usedNotDeclared.length,k=h.stats.declaredCodes+h.stats.declaredNames>0?{weight:c9.regulation,value:Math.max(0,100-(i+j)*20),detail:i+j>0?`编制依据缺口 ${i+j} 处(声明未用 ${i}/引用未声明 ${j})`:"编制依据对账 0 缺口"}:{weight:c9.regulation,value:null};return de([{weight:c9.selfHarm,value:Math.max(0,100-25*d),detail:d>0?`自伤 ${d} 处`:"自伤 0"},{weight:c9.placeholder,value:Math.max(0,100-25*e),detail:e>0?`占位符 ${e} 处`:"占位符 0"},{weight:c9.length,value:Math.max(0,100-50*f),detail:f>0?`篇幅超限 ${f} 条`:"篇幅达标"},{weight:c9.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&&!dc.test(a.message)),d=c.filter(a=>db.test(a.message)),e=[{weight:da.reconciliation,value:Math.max(0,100-20*c.length),detail:c.length>0?`对账冲突 ${c.length} 条`:"对账零冲突"},{weight:da.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:da.keyFacts,value:100*b.rate,detail:`关键事实 ${b.placed}/${b.specs}`}),de(e)}(a.issues,a.keyFactPlacementAudit),o=[{key:"requirement",label:"要求实体响应",...i,weight:c5.requirement},{key:"structure",label:"结构呈现落实",...j,weight:c5.structure},{key:"dataAnchor",label:"数据锚定",...k,weight:c5.dataAnchor},{key:"professionalDepth",label:"专业深度",...l,weight:c5.professionalDepth},{key:"compliance",label:"合规与规范",...m,weight:c5.compliance},{key:"factIntegrity",label:"事实完整与一致性",...n,weight:c5.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,s=p.length,t=o.length,u=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,af.R9)(a)).length,z=Math.max(0,Math.min(99,Math.round(w-Math.min(10,3*y)))),A=await cX(a.markdown,a.embedDocuments),B=a.evaluationCriteriaItems&&a.evaluationCriteriaItems.length>0?await c1({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&&u,G=F?["已达到当前质量目标,建议保持事实口径和导出前复核。"]:[...u?[]:[`本次仅计量 ${s}/${t} 维(权重覆盖 ${(100*q).toFixed(0)}%,低于下限 90%):重归一分不得作为达标依据,须先补齐缺失维度的计量条件再判定。`],"按对齐评分口径补齐短板维度:要求实体响应补锚点全命中(核心词与数字参数逐条落位)、结构呈现补图表落位、数据锚定补 BOQ/参数/图纸/无主数值溯源、专业深度按章补六维薄弱项、合规与规范清理自伤与占位符并压缩超限篇幅且编制依据与正文双向对齐、事实一致性补关键事实落位与数值对账。","系统需优先修复阻断问题、扩大本地知识库检索、补抽结构化事实,并将未落位事实写入对应章节。"];b.uniqueness<60&&G.push(`低雷同性 ${b.uniqueness} 低于门槛 60:存在与公开模板/通用话术重合的雷同风险,须改写高重合段落后再交付。`);let H=`${u?"":"⚠ "}本次仅计量 ${s}/${t} 维、权重覆盖 ${(100*q).toFixed(0)}%`,I=`交付置信度 ${z}% / 目标 95%,综合评分 ${w}/100(${[...x.map(a=>`${a.label} ${a.score}`),`低雷同性 ${b.uniqueness}`].join("、")});${H}${D}${E};评分口径 ${c2}(主尺)`;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:c3,evaluationCriteriaAttainment:B,measurementCoverage:{dimensions:s,totalDimensions:t,weightRatio:q,sufficient:u},summary:I,actions:G}}let dh=new Set(["fact-coverage","overview-recap","internal-terminology-anchor","global-consistency-snapshot","data-consistency-snapshot","clarification-amendment"]);function di(...a){return a.flat()}var dj=c(19898),dk=c(91977),dl=c(51144);function dm(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 dn(a){(0,f.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),e=Math.ceil((a.highRisk?18:10)*d),g=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,dl.C)(d,a=>(0,dl.O)(a),{maxItems:16,maxChars:1200},"retrieval-sections").selected,g=(0,dl.C)(e,a=>(0,dl.O)(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,dl.C)(l,a=>(0,dl.O)(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,e),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,f.l$)(m,async b=>{var c;(0,f.Te)(a.signal);let d=await a.manager.search(a.projectRoot,b.text,{scope:"project",filters:{filePaths:a.scopedFilePaths,materialRoots:a.scopedMaterialRoots??(0,dj.materialRootsOfFiles)(a.scopedFilePaths)},limit:g,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,h.QR)(b.filter(a=>"required-fact-evidence"===a.source),{maxItems:Math.max(6,3*k.length),maxChars:18e3,preservePinned:!0}),...(0,h.QR)(b.filter(a=>"required-fact-evidence"!==a.source),{maxItems:i,maxChars:j,preservePinned:!0})]}var dp=c(32434),dq=c(36003),dr=c(95734);async function ds(a,b){let c=(0,ad.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,dq.AI)(e,(0,dq.Ym)(e,a.chapter,a.evidence),b),i=(0,dq.uQ)(e,g,h);i&&d.push(`${e}:${i}`)}return d}function dt(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 du(a){return"string"==typeof a?a:a&&"object"==typeof a&&"message"in a?String(a.message):JSON.stringify(a)}function dv(a){let b=Number(process.env[a]);return Number.isFinite(b)&&b>0?Math.ceil(b):0}async function dw(a){var b;(0,f.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}
|
|
@@ -158,7 +158,7 @@ ${h}`:""].join("\n\n"),k=[...new Set((await Promise.all(e.map(b=>(0,dr.bb)(i,`${
|
|
|
158
158
|
|
|
159
159
|
${b}
|
|
160
160
|
|
|
161
|
-
返回 JSON:{"issues":[]}`,{maxTokens:1e3,temperature:0,signal:a.signal,diagnostics:a.diagnostics,contextLayers:{l0:i.length,l1:(0,dr.CX)([a.promptTexts]),l3:(0,dr.CX)([b,'\n\n返回 JSON:{"issues":[]}'])},prefixKey:"review-global-consistency"})))).flatMap(a=>Array.isArray(a?.issues)?a.issues:[]).map(du).filter(Boolean))];return{issues:k,stage:(0,j.X5)({type:"llm_review",roleId:"global-consistency-review",status:k.length>0?"failed":"success",message:k.length>0?`全局一致性审查完成:发现 ${k.length} 个跨章问题`:"全局一致性审查通过"},{subtitle:"全局一致性审查"})}}var dx=c(33409),dy=c(21702),dz=c(13145),dA=c(18274);let dB=[{pattern:/本小节围绕.+展开,结合绑定项目资料/u,label:"模板化开篇套话"},{pattern:/明确适用范围、控制目标、责任岗位与过程要求/u,label:"泛化目标罗列"},{pattern:/实施前应完成资料核对、技术交底和作业条件确认/u,label:"泛化前置条件"},{pattern:/交底覆盖率按\s*100%?\s*控制/u,label:"空泛交底承诺"},{pattern:/关键问题在\s*24\s*小时内形成整改责任/u,label:"空泛整改时限"},{pattern:/按施工准备→过程实施→检查验收→问题整改→资料归档的闭环组织/u,label:"通用闭环套话"},{pattern:/按作业条件确认→技术交底→过程实施→自检互检→整改复查/u,label:"通用流程套话"},{pattern:/依据本项目已确认资料中的项目边界/u,label:"资料依据套话"},{pattern:/执行日巡查、周复核和节点验收制度/u,label:"泛化巡查制度"},{pattern:/一般问题\s*7\s*日内闭环/u,label:"泛化整改时限"},{pattern:/由项目经理、技术负责人和专职安全员联合复核/u,label:"岗位名单堆砌"},{pattern:/确保与总体施工部署、工期计划和验收要求保持一致/u,label:"原则性呼应"},{pattern:/结合现场实际情况(?:,|,)?合理(?:组织|安排|布置|配置)/u,label:"结合实际套话"},{pattern:/严格(?:执行|落实|按照)国家(?:现行)?(?:有关)?(?:规范|标准|规程)/u,label:"规范泛引用"},{pattern:/做到(?:文明施工|安全生产|质量第一|安全第一)/u,label:"口号式承诺"},{pattern:/(?:确保|保证)工程(?:质量|安全|进度|文明施工)/u,label:"目标口号"},{pattern:/建立(?:健全)?(?:完善)?(?:的)?(?:管理)?体系(?:和|,)?(?:落实|确保|保证)/u,label:"体系空话"}],dC=RegExp(dB.map(a=>`(?:${a.pattern.source})`).join("|"),"u"),dD=["本小节围绕以下内容展开并结合绑定项目资料","明确适用范围控制目标责任岗位与过程要求","实施前应完成资料核对技术交底和作业条件确认","交底覆盖率按100%控制","关键问题在24小时内形成整改责任","按施工准备过程实施检查验收问题整改资料归档的闭环组织","依据本项目已确认资料中的项目边界","执行日巡查周复核和节点验收制度","一般问题7日内闭环","由项目经理技术负责人和专职安全员联合复核","确保与总体施工部署工期计划和验收要求保持一致","结合现场实际情况合理组织安排","严格执行国家现行有关规范标准","做到文明施工安全生产质量第一","确保工程质量和安全进度","建立健全管理体系并落实相关制度"],dE=["每道工序完成后由质检员实测实量并记录数据","混凝土浇筑完成后每天洒水养护不少于两次","每周组织不少于一次的现场安全专项检查"];async function dF(a){return(0,b6.A)({prototypes:[...dD],negativePrototypes:[...dE],lexicalHints:dC,embedDocuments:a})}let dG=[/主要分部分项工程施工方案/u,/主要施工方法/u,/主要施工内容/u,/施工方案/u],dH=/(?:建筑面积|面积|总建筑面积)[约]?\s*\d+(?:\.\d+)?\s*(?:㎡|m²)|计划工期\s*\d+|日历天|地上\s*\d+\s*层|框架结构|质量标准[::]?\s*合格/giu;function dI(a){let b=a.split("\n"),c=[],d="",e=[];for(let a of b){let b=/^#{3,4}\s+(.+)$/u.exec(a.replace(/[\u200b-\u200f\u2060\ufeff]/gu,"").trim());b?((d||e.length>0)&&c.push({heading:d,body:e.join("\n")}),d=b[1].trim(),e=[]):e.push(a)}return(d||e.length>0)&&c.push({heading:d,body:e.join("\n")}),c}function dJ(a){let b=[],c=new Map;for(let b of a)for(let a of dI(b.content)){let d=a.heading||b.title;for(let e of a.body.replace(/^#{1,6}\s+.*$/gmu,"").replace(/^\s*\|.*\|\s*$/gmu,"").replace(/^\s*[-|]\s*$/gmu,"").replace(/^\s*\[.*?\]\(.*?\)\s*$/gmu,"").split(/\n{1,}/u).map(a=>a.trim()).filter(a=>a.length>=60&&a.length<=400&&!/^\s*[-*]\s+/u.test(a))){let a=e.replace(/[,。,.;;::、()()【】[\]《》“”"'`\s]/gu,"");if(a.length<60)continue;let f=c.get(a)||[];f.some(a=>a.chapter===b.title&&a.section===d)||f.push({chapter:b.title,section:d}),c.set(a,f)}}let d=new Set;for(let[a,e]of c){let c=e.filter((a,b,c)=>c.findIndex(b=>b.chapter===a.chapter&&b.section===a.section)===b);if(c.length<2)continue;let f=c.map(a=>`${a.chapter}::${a.section}`).sort().join("|");if(d.has(f))continue;d.add(f);let g=e[0],h=g?`(如:${g.section} 中「${a.slice(0,30)}…」)`:"";if(b.push({level:c.length>=3?"error":"warning",severity:c.length>=3?"blocker":"warning",message:`发现相同段落出现在 ${c.length} 个不同小节:${c.map(a=>a.section).slice(0,6).join("、")}${h}`,suggestion:"每个小节必须针对其标题写专属内容,不得复制粘贴相同段落;重复小节应合并或删除后重写。"}),b.length>=8)break}return b}async function dK(a,b){let c=[],d=await dF(b);for(let b of a){let a=dI(b.content),e=[];for(let b of a){let a=b.body.split(/\n/u).filter(a=>!(0,cI.X9)(a)).flatMap(a=>a.split(/[。;;]/u)).map(a=>a.trim()).filter(a=>a.length>=12);if(0===a.length)continue;let c=await d(a);a.forEach((a,b)=>{if(c[b])for(let{pattern:b,label:c}of dB)b.test(a)&&!e.includes(c)&&e.push(c)})}e.length>=3?c.push({level:"error",severity:"blocker",message:`${b.title} 存在大量模板化空话(${e.slice(0,6).join("、")})`,suggestion:'删除"本小节围绕…展开""按100%控制"式套话,按"责任岗位+执行动作+量化标准+检查频次+整改时限"重写。'}):e.length>0&&c.push({level:"warning",severity:"warning",message:`${b.title} 存在模板化空话:${e.join("、")}`,suggestion:"替换为具体量化做法;同一小节不得重复出现套话段落。"})}return c}async function dL(a,b){let c=[];for(let d of a){let a=[],e=d.title;for(let b of d.content.split("\n")){let c=/^#{3,4}\s+(.+)$/u.exec(b.replace(/[\u200b-\u200f\u2060\ufeff]/gu,"").trim());if(c){e=c[1].trim();continue}if(!(0,cI.X9)(b))for(let c of b.split(/[。;;]/u)){let b=c.trim();b.length>=12&&a.push({sentence:b,section:e})}}if(0===a.length)continue;let f=await (0,cI.w7)(a.map(a=>a.sentence),b),g=await dF(b),h=await g(a.map(a=>a.sentence)),i=0,j=new Set;for(let b=0;b<f.length;b+=1){let e=f[b];if(!e.filler&&!h[b]||j.has(e.sentence)||i>=12)continue;j.add(e.sentence),i+=1;let g=e.semantic?"semantic":e.vague?"vague":"paragraph";c.push({chapterId:d.id,chapterTitle:d.title,section:a[b].section,sentence:e.sentence,channel:g})}if(c.length>=60)break}return c.slice(0,60)}function dM(a){let b=[];for(let c of a){let a=c.title,d=0;for(let e of c.content.split("\n")){let f=/^#{3,4}\s+(.+)$/u.exec(e.replace(/[\u200b-\u200f\u2060\ufeff]/gu,"").trim());if(f){a=f[1].trim();continue}let g=e.replace(/[\u200b-\u200f\u2060\ufeff]/gu,"");if(!/^\s*#{1,6}\s/u.test(g)&&!(0,cI.X9)(e)){for(let f of e.split(/[。;;]/u)){let e=f.trim();if(!(e.length<12)&&(0,cI.e1)(e)){if(d>=12||b.length>=60)break;d+=1,b.push({chapterId:c.id,chapterTitle:c.title,section:a,sentence:e,channel:"prefix"})}}if(d>=12||b.length>=60)break}}if(b.length>=60)break}return b}function dN(a,b){let c=[],d=[],e=0;for(let f of b){let b=f.chapterId||f.chapterTitle,g=a.find(a=>(a.id||a.title)===b),h="semantic"===f.channel||"prefix"===f.channel||"paragraph"===f.channel;if(!g||!h||!(0,cI.W0)(f.sentence)){d.push(f);continue}let i=g.content.split("\n"),j=function(a,b){let c=b.replace(/[。;;]\s*$/u,"").trim();if(c.length<12)return 0;let d=c.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&"),e=RegExp(`[\\s\\u3000]*${d}[\\s\\u3000]*[。;;]`,"gu"),f=RegExp(`[\\s\\u3000]*${d}[\\s\\u3000]*$`,"u"),g=0;for(let b=a.length-1;b>=0;b-=1){let d=a[b];if((0,cI.X9)(d)||!d.includes(c))continue;let h=d.match(e),i=h&&h.length>0?d.replace(e,""):d.replace(f,"");i!==d&&(g+=h&&h.length>0?h.length:1,""===i.trim()?a.splice(b,1):a[b]=i)}return g}(i,f.sentence);j>0?(g.content=i.join("\n").replace(/\n{3,}/gu,"\n\n"),e+=j,c.includes(f.sentence)||c.push(f.sentence)):d.push(f)}return{deletedCount:e,deletedSentences:c,remaining:d}}function dO(a){let b=[];for(let c of a)for(let a of dI(c.content)){if(!dG.some(b=>b.test(a.heading)||b.test(c.title))||/(?:方案管理|管理程序|管理流程|管理制度|审批流程)/u.test(a.heading))continue;let d=new Set(a.body.match(dA.aX)||[]),e=new Set(a.body.match(dH)||[]),f=new Set(a.body.match(dA.LT)||[]),g=a.body.length;if(g<400)continue;let h=d.size/(g/1e3),i=/拆除|清理|清底|清运|弃置|运输|搬运/u.test(a.heading);if(0===d.size){if(f.size>=6){b.push({level:"warning",severity:"warning",message:`${c.title} / ${a.heading} 以设备配置参数为主:设备型号/容量参数 ${f.size} 项,工艺参数待补充`,suggestion:"设备清单型小节保留型号规格参数即可;如补充安装工艺(试验压力、坡度、间距、偏差),应同步写入工艺参数与验收节点。"});continue}if(i){b.push({level:"warning",severity:"warning",message:`${c.title} / ${a.heading} 以工程量与保护措施为主,建议补充拆除深度偏差、保护挑网宽度、警戒距离等参数`,suggestion:"拆除类作业补充拆除厚度偏差(mm)、防护挑网/安全网宽度(m)、警戒区距离(m)等安全与技术参数即可,不强制 mm/MPa 级工艺参数。"});continue}b.push({level:"error",severity:"blocker",message:`${c.title} / ${a.heading} 无工艺参数:全文只有概况性数字,缺乏 mm/MPa/间距/偏差/试验压力等工艺级参数`,suggestion:"必须写入工艺参数(如桩位偏差≤50mm、搭接宽度≥100mm、闭水试验48h),参数来自绑定资料或行业规范值。"})}else h<(i?.3:dy.J5)&&b.push({level:"warning",severity:"warning",message:`${c.title} / ${a.heading} 工艺参数密度偏低:每千字 ${d.size} 个工艺参数(概况数字 ${e.size} 个)`,suggestion:"增加工艺级参数落位;概况数字(面积、工期、层数)不能替代工艺参数。"})}return b}function dP(a){let b=[];for(let c of a){let a=c.content.split("\n");for(let d=0;d<a.length;d+=1){let e=a[d].trim();if(!/^#{3}\s+[^\n]*(?:主要分部分项工程施工方案|主要施工方法)/u.test(e))continue;let g=a.length;for(let b=d+1;b<a.length;b+=1)if(/^#{2,3}\s+/u.test(a[b].trim())){g=b;break}let h=a.slice(d+1,g).join("\n").split(/^####\s+/gmu).slice(1).map(a=>a.trim()).filter(Boolean);if(0===h.length)continue;let i=h.filter(a=>!(0,f.az)(a));i.length>0&&b.push({level:"error",severity:"blocker",message:`${c.title} / ${e.replace(/^#{3}\s+(?:\d+(?:\.\d+)*\s+)?/u,"")} 有 ${i.length}/${h.length} 个分部分项内容要素不全(作业对象与工程量/工序顺序/施工方法至少缺一)`,suggestion:"每个分项方案需覆盖作业对象与工程量、工序安排、施工方法三方面要素,融入连贯段落叙述(禁止以“施工概况/工艺流程/施工方法”等结构标签充当标题或段落开头引导);工序顺序表达须先后清晰(相邻小节不得同句式开头,同一句式全文不得反复使用,禁止以固定句模复读)。"})}}return b}async function dQ(a,b="",c){return[...dJ(a),...await dK(a,c),...dO(a),...dP(a),...function(a,b=""){let c=[],d=(b||a.map(a=>a.content).join("\n\n")).split("\n"),e=0,f=0;for(;f<d.length;){let a=d[f].trim();if(!/^\|.+\|$/u.test(a)){f+=1;continue}let b=[];for(;f<d.length&&/^\|.+\|$/u.test(d[f].trim());)b.push(d[f].trim()),f+=1;if(b.length<3)continue;e+=1;let g=b[0].split("|").length-2,h=b.filter((a,b)=>0!==b&&a.replace(/\|/gu,"").replace(/[\s\-:]/gu,"").length>0),i=h.reduce((a,b)=>a+b.split("|").slice(1,-1).map(a=>(0,dz.jG)(a.trim())).filter(a=>""===a||"-"===a||"—"===a||"/"===a).length,0),j=h.length*Math.max(1,g);if(i>0&&i/Math.max(1,j)>=.4&&c.push({level:"warning",severity:"warning",message:`第 ${e} 个表格存在 ${i} 个空单元格(${h.length} 行),表格信息不完整`,suggestion:"表格每一列都必须填写,缺失字段应从资料补齐;无法确认的字段应删除该行而非留空。"}),c.length>=5)break}return c}(a,b)]}function dR(a,b){let c=new Set([b?.projectName,...b?.fingerprint?.projectNames||[]].filter(Boolean));return(b?.contaminationCandidates||[]).reduce((a,b)=>!b||b.length<6||c.has(b)?a:a.replace(RegExp(b.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&"),"gu"),"本项目工程"),a)}let dS=[{title:"项目特点、重点、难点分析",minChars:1800},{title:"项目主要施工内容",minChars:2200},{title:"主要分部分项工程施工方案",minChars:1200,blockerMinChars:800},{title:"主要施工方法",minChars:2200},{title:"危大工程专项施工方案审批流程",minChars:500,blockerMinChars:250},{title:"原材料进场复试与见证取样",minChars:600,blockerMinChars:300}];async function dT(a){let{documentSpec:b,validationIssues:c,factsModel:d,finalChapterDrafts:e,finalMarkdown:g,template:h,promptBindings:j,promptDocumentRules:k,projectMaterialSummary:l,domainProfile:m,structuredFacts:p,documentBudget:q,scopeConflicts:r,evaluationCriteriaItems:t,effectiveChapters:u,tenderRequirements:v,requirementsSimilarity:w,factTokenScopeClassifier:x,professionalDepthClassifier:y,blueprintData:z,billFactLock:A,drawingFactLock:B,bodyTableForbidden:C,bodyFigureForbidden:D,identityMarksForbidden:E,coverForbidden:F}=a;return di((0,o.yT)("spec-gate-rules",()=>(0,af.kQ)(b,c,d,e,g,h.projectBindings||[],j)),(0,o.yT)("auto-spec-validation",()=>(function(a){let b=[],c=a.markdown||"";for(let e of a.spec.factFields.filter(a=>a.required)){var d;!((d=e.name).length<4||V(d))&&/\d|GB|JGJ|C\d|HRB|DN|mm|MPa|kPa|工期|质量|安全|项目名称|工程名称|招标人|建设地点|建筑面积|结构形式|层数/u.test(d)&&!X(c,e.name)&&b.push({level:"info",message:`正文可能未显式覆盖“${e.name}”`,suggestion:"建议检查对应章节是否已自然表达该事实。"})}let e=a.summary.facts.projectName;!e||"当前知识库项目"===e||V(e)||X(c,e)||b.push({level:"warning",message:"正文未明显体现关键对象名称",suggestion:"建议在概况、背景或首页标题中体现当前文档的关键对象名称。"});let f=a.summary.facts.documentNo;for(let a of(f&&!c.includes(f)&&b.push({level:"info",message:"正文未体现文档/任务编号",suggestion:"如文档需要编号,请在概况、背景或首页信息中补充。"}),["知识库证据","资料类型","提示词角色","文档规范包","规范包","后台自动规范","后台优化建议","基础事实候选","材料未提供","未检索到"]))(function(a,b){let c=Y[b];if(!c)return a.includes(b);let d=0;for(;;){let e=a.indexOf(b,d);if(e<0)return!1;let f=a[e+b.length]||"";if(f&&c.test(f)){d=e+b.length;continue}return!0}})(c,a)&&b.push({level:"error",message:`正文包含后台流程话术:${a}`,suggestion:"请重新生成或在审查阶段删除后台流程描述。"});return b})({markdown:g,spec:b,summary:l})),(0,o.yT)("fact-consistency",()=>(function(a){let b=a.profile||Z.p4,c=[],d=new Map;for(let c of a.facts){let a=c.fieldName||c.key;!(!a||!function(a,b){let c=(0,Z.oC)(b,a);return c?"single"===c.cardinality&&"allow_multiple"!==c.conflictPolicy&&"ignore"!==c.conflictPolicy:/项目名称|工程名称|招标人|建设地点|建筑面积|结构形式|层数|工期|质量标准|合同价格形式|绿色建筑等级|投标有效期|质保期/u.test(a)}(a,b)||aa.test(a)&&ab.test(c.roleId||""))&&ac(String(c.value),b,a)&&d.set(a,[...d.get(a)||[],{value:String(c.value),source:c.sourceFile}])}for(let[a,e]of d){let d=new Map;for(let c of e){let e=ac(c.value,b,a);if(!e)continue;let f=(0,$.LD)(e);d.set(f,[...d.get(f)||[],c])}if(d.size>1){let a=[...d.keys()].sort((a,b)=>a.length-b.length),b=new Set;for(let c=0;c<a.length;c+=1){let e=a[c];if(!b.has(e))for(let f=c+1;f<a.length;f+=1){let c=a[f],g=c.length-e.length,h=e.length<=6&&/[省市县区镇乡村]$/u.test(e)&&c.startsWith(e);if((g<=3||e.endsWith("等")&&g<=6||h)&&c.startsWith(e)){d.set(c,[...d.get(c)||[],...d.get(e)||[]]),b.add(e);break}}}for(let a of b)d.delete(a)}if(d.size>1){let b=new Set([...d.keys()].map($.cg));if(2===b.size&&!b.has("plain")){for(let b of["duration","date"]){let e=new Map([...d].filter(([a])=>(0,$.cg)(a)===b));if(e.size>1){let b=[...e.values()].map(a=>`${a[0].value}(${a.map(a=>a.source).filter(Boolean).join("、")||"未知来源"})`).join(" vs ");c.push({level:"error",message:`事实一致性冲突:${a} 存在多个值:${b}`,suggestion:"请确认当前绑定材料组,或在模板绑定中只绑定当前文档所需材料。"})}}continue}let e=[...d.values()].map(a=>`${a[0].value}(${a.map(a=>a.source).filter(Boolean).join("、")||"未知来源"})`).join(" vs ");c.push({level:"error",message:`事实一致性冲突:${a} 存在多个值:${e}`,suggestion:"请确认当前绑定材料组,或在模板绑定中只绑定当前文档所需材料。"})}}let e=a.summary.facts.projectName;if(e&&"当前知识库项目"!==e&&!/--|延期到|资料|附件|扫描|目录|汇总|打包|备份|招标工程量清单封面|招标工程量清单扉页|工程量清单表|清单封面|清单扉页|\d{1,2}\.\d{1,2}/u.test(e)){let b=_(a.markdown),d=[e,...a.summary.fingerprint.projectNames].flatMap(a=>[a,a.replace(/^\d+(?:\.\d+)?[^\u4e00-\u9fa5]*/u,""),a.replace(/\([^)]*\)|([^)]*)/gu,"")]).map(a=>_(a)).filter(a=>a.length>=4),f=d.filter(a=>a.length>=8),g=d.filter(a=>a.length<8),h=f.some(a=>b.includes(a)||a.length>=12&&b.includes(a.slice(0,Math.max(8,Math.floor(.72*a.length))))),i=g.some(a=>b.includes(a));(f.length>0?h:!(g.length>0)||i)||c.push({level:"warning",message:`正文未包含当前对象名称:${e}`,suggestion:"请确认标题、概况或背景信息是否已体现当前对象名称。"})}return c})({markdown:g,facts:p,summary:l,profile:m})),(0,o.yT)("project-contamination",()=>(function(a,b){let c=[],d=new Set([b.projectName,...b.fingerprint.projectNames].filter(Boolean));for(let e of b.contaminationCandidates)e.length>=6&&!d.has(e)&&a.replace(/\s+/gu,"").includes(e.replace(/\s+/gu,""))&&c.push({level:"error",message:`正文疑似混入其他对象名称:${e}`,suggestion:"请检查绑定材料选择、模板绑定文件和知识库证据范围。"});let e=b.fingerprint.documentNos,f=a.match(/\b\d{4}[A-Z]{2,}\d{4,}\b/gu)?.find(a=>!e.includes(a));return f&&e.length>0&&c.push({level:"error",message:`正文疑似混入其他文档编号:${f}`,suggestion:"请重新生成并检查是否召回了其他绑定材料。"}),c})(g,l)),(0,o.yT)("project-type-consistency",()=>(0,s.MM)(g,{projectName:z?.project?.name,blueprintStrategyId:z?.strategyId})),(0,o.yT)("figure-substitute-table",()=>(0,s.X_)(g,(0,c_.cA)({chapters:u}))),(0,o.yT)("project-basic-placeholder",()=>(0,n.h)(g,p)),await (0,o.ll)("standard-final",()=>cG({markdown:g,truthValues:a.truthValues,chapters:e,factsModel:d,template:h,promptBindings:j,promptDocumentRules:k,scopeConflicts:r,evaluationCriteriaItems:t,effectiveChapters:u,tenderRequirements:v,requirementsSimilarity:w,factTokenScopeClassifier:x,professionalDepthClassifier:y,materialEvidence:a.materialEvidence,blueprintData:z,billFactLock:A,drawingFactLock:B,bodyTableForbidden:C,bodyFigureForbidden:D,identityMarksForbidden:E,coverForbidden:F,clarificationAmendments:a.clarificationAmendments})),(0,o.yT)("fact-coverage",()=>(0,n.br)(g,[...p,...d.preciseFacts]).map(a=>({...a,level:"warning",severity:"warning",suggestion:"建议后续优化事实自然落位;导出阶段不因未落位的引用型或可优化事实阻断。"}))),(0,o.yT)("page-target",()=>(0,i.PE)(h.generationSettings||h.exportSettings,g).filter(a=>!(q.minPages&&/低于目标页数/u.test(a.message)))),(0,o.yT)("document-budget",()=>(0,i.ty)(q,g)),(0,o.yT)("formal-text-gate",()=>(0,dp.IA)(g)),await (0,o.ll)("internal-terminology-anchor",()=>(0,ag.WT)(g)),(0,o.yT)("heading-uncovered-engineering-items",()=>(0,af.j9)(g)),(0,o.yT)("writer-missing-section",()=>g.includes("WRITER_MISSING_SECTION")||g.includes("Writer 未完成")?[{level:"error",severity:"blocker",category:"structure",owner:"system",message:"最终正文仍包含未完成小节标记",suggestion:"必须重新补写对应小节并删除 WRITER_MISSING_SECTION/Writer 未完成。"}]:[]),(0,o.yT)("critical-section-depth",()=>(function(a){let b=[];for(let c of a)for(let a of dS){let d=(0,f.Xl)(c.content,a.title)||(0,f.Xl)(c.content,a.title,{fuzzy:!0}),e=(0,i.V7)(d);if(!d||e>=a.minChars)continue;let g=(0,n.R_)(a.title);e>=g?b.push({level:"warning",severity:"warning",message:`${c.title} ${a.title} 正文深度接近目标:当前 ${e} 字,目标 ${a.minChars} 字`,suggestion:"已达到可交付深度,建议后续按项目数据继续优化扩写。"}):b.push({level:"error",severity:"blocker",message:`${c.title} ${a.title} 正文不足:当前 ${e} 字,要求不少于 ${g} 字`,suggestion:"关键小节必须补足项目数据、重点难点与施工内容对应关系后方可导出。",chapterId:c.id,sectionTitle:a.title,provenance:{detectorId:"critical-section-depth",fingerprint:(0,f.c6)(`${c.title}\u0000${a.title}`)}})}return b})(e)),(0,o.yT)("critical-section-fact-density",()=>(function(a){let b=[{title:"项目特点、重点、难点分析",minNumericFacts:5,minObjectFacts:8,objectPatterns:[/建筑面积|面积/u,/层|框架结构|既有建筑/u,/结构形式|结构加固|墙体补强|装配式/u,/拆除|改造|装修|装饰/u,/工期|日历天/u,/质量标准|合格/u,/营业商铺|经营区域|场地/u,/管网|防水|室外道排/u,/智能化|弱电|消防|暖通|通风空调|水电/u]},{title:"项目主要施工内容",minNumericFacts:4,minObjectFacts:6,objectPatterns:[/拆除|垃圾外运|既有设施保护/u,/结构加固|墙体补强|框架结构/u,/装饰|装修|基层|面层|环保|阻燃/u,/防水|管网|给排水|阀门|道排/u,/消防|水电|电气|弱电|智能化|通风空调/u,/屋面|立面|室外|附属/u,/施工流程|施工方法|施工顺序|工艺流程/u,/验收|检测|调试|资料闭环/u]},{title:"主要分部分项工程施工方案",minNumericFacts:4,minObjectFacts:6,objectPatterns:[/拆除|垃圾外运|既有设施保护/u,/结构加固|墙体补强|框架结构/u,/装饰|装修|基层|面层|环保|阻燃/u,/防水|管网|给排水|阀门|道排/u,/消防|水电|电气|弱电|智能化|通风空调/u,/屋面|立面|室外|附属/u,/施工流程|施工方法|施工顺序|工艺流程/u,/验收|检测|调试|资料闭环/u]},{title:"主要施工方法",minNumericFacts:4,minObjectFacts:6,objectPatterns:[/拆除|垃圾外运|既有设施保护/u,/结构加固|墙体补强|框架结构/u,/装饰|装修|基层|面层|环保|阻燃/u,/防水|管网|给排水|阀门|道排/u,/消防|水电|电气|弱电|智能化|通风空调/u,/屋面|立面|室外|附属/u,/施工流程|施工方法|施工顺序|工艺流程/u,/验收|检测|调试|资料闭环/u]}];return a.flatMap(a=>b.flatMap(b=>{let c=(0,f.Xl)(a.content,b.title);if(!c)return[];let d=new Set(c.match(/\d+(?:\.\d+)?\s*(?:m²|㎡|平方米|m|mm|层|栋|日历天|天|%|台|套|根|处|个|kg|t|吨)/giu)||[]).size,e=b.objectPatterns.filter(a=>a.test(c)).length,g=[];return d<b.minNumericFacts&&g.push({level:"warning",severity:"warning",message:`${a.title} ${b.title} 参数落位不足:当前 ${d} 个,建议不少于 ${b.minNumericFacts} 个`,suggestion:"关键小节必须写入项目规模、工期、层数、结构、专业工程或验收参数等具体数值。"}),e<b.minObjectFacts&&g.push({level:"warning",severity:"warning",message:`${a.title} ${b.title} 专业事实覆盖不足:当前 ${e} 类,建议不少于 ${b.minObjectFacts} 类`,suggestion:"优先基于当前项目绑定资料补充工程对象、专业范围、重点难点和对应施工内容;不得为满足类别数量编造或混入其他项目事实。"}),g}))})(e)),(0,o.yT)("chapter-fact-density",()=>e.flatMap(a=>{let b=(0,dy.Cd)(a.content);return b.gap?[{level:"warning",severity:"warning",message:`${a.title} 量化参数密度偏低:当前 ${b.params} 个(约 ${b.per1000}/千字,建议 ≥${dy.J5}/千字、约 ${b.required} 个),小节事实或量化参数落位可继续优化`,suggestion:"优先将本章绑定资料中的工程规模、工期、部位做法、材料规格等参数自然写入对应工序;不得从行业惯例或相邻章节借参数凑数。"}]:[]})),await (0,o.ll)("construction-org-professional-audit",async()=>(await dQ(e,g)).map(a=>"error"===a.level?{...a,severity:"blocker"}:a))).map(a=>"error"===a.level?{...a,severity:a.severity||"blocker"}:a)}let dU=/章节级证据覆盖较弱|章节事实覆盖不足|小节事实或量化参数落位可继续优化/u;async function dV(a){var b;let{finalChapterDrafts:c,effectiveChapters:d,factsModel:e,allEvidence:g,finalMarkdown:h,validationIssues:j,retrievalCoverageReports:k,includeRetrievalCoverage:l,template:m,tenderRequirements:n,bidComposition:o,drawingFactLock:p,structuredFacts:s,authorityAuditReport:t,professionalDepthClassifier:u,evaluationCriteriaItems:v}=a,w=function(a){let b=a.chapters.map(b=>{let c=function(a){let b=["project"];return/进度|工期|节点|部署/u.test(a.title)&&b.push("schedule"),/质量|验收|材料/u.test(a.title)&&b.push("quality","rules"),/安全|文明|风险|危大/u.test(a.title)&&b.push("safety","rules"),/资源|材料|设备|劳动力|机械/u.test(a.title)&&b.push("resources"),/施工|工艺|技术|方案|清单|工程量|图纸/u.test(a.title)&&b.push("quantities"),[...new Set(b)]}(a.templateChapters.find(a=>a.id===b.id||a.title===b.title)||b),d=c.filter(c=>{var d;return d=a.factsModel,("project"===c?d.project.length>0||d.preciseFacts.length>0:"schedule"===c?d.schedule.length>0:"quality"===c?d.quality.length>0||d.specifications.length>0:"safety"===c?d.safety.length>0||d.rules.length>0:"resources"===c?d.resources.length>0||d.bills.length>0:"quantities"===c?d.bills.length>0||d.drawings.length>0||d.tables.length>0:"rules"===c&&(d.rules.length>0||d.specifications.length>0))||(b.evidence||[]).some(a=>RegExp(cH[c]||c,"u").test(`${a.sectionTitle||""} ${a.content||""}`))}),e=c.filter(a=>!d.includes(a)),f=c.length?Math.round(d.length/c.length*100):100;return{chapterId:b.id,title:b.title,requiredDomains:c,confirmedDomains:d,unconfirmedDomains:e,score:f}}),c=new Set(a.evidence.map(a=>a.filePath).filter(Boolean)),d=b.length?Math.round(b.reduce((a,b)=>a+b.score,0)/b.length):100;return{score:d,evidenceCount:a.evidence.length,confirmedFiles:c.size,chapterReports:b,unconfirmedDomains:[...new Set(b.flatMap(a=>a.unconfirmedDomains))],remediation:d>=95?"知识库事实覆盖已达到高置信交付要求。":"系统需扩大本地知识库检索、补抽结构化事实,并将已确认事实落位到对应章节。"}}({chapters:c,templateChapters:d,factsModel:e,evidence:g}),x=(0,y.e$)(h,e),z=(b={chapters:c,templateChapters:d,factsModel:e}).chapters.map(a=>{let c=b.templateChapters.find(b=>b.id===a.id||b.title===a.title),d=function(a,b){let c=`${a.title} ${(b?.sections||a.sections||[]).join(" ")}`;return[{key:"structure",label:"结构完整",passed:(a.sections||b?.sections||[]).length>=2||/###\s+/u.test(a.content)},{key:"depth",label:"内容深度",passed:(0,i.V7)(a.content)>=600},{key:"evidence",label:"证据绑定",passed:(a.evidence||[]).length>0},{key:"professional",label:"专业控制点",passed:/验收|复核|检查|交底|控制点|整改|闭环|台账|进场|工序/u.test(a.content)},{key:"schedule",label:"工期支撑",passed:!/进度|工期|节点/u.test(c)||/工期|节点|计划|纠偏|资源|穿插/u.test(a.content)},{key:"quality",label:"质量验收",passed:!/质量|验收/u.test(c)||/质量|验收|复验|隐蔽|检验批|整改/u.test(a.content)},{key:"safety",label:"安全闭环",passed:!/安全|文明|风险|危大/u.test(c)||/风险|检查|整改|应急|培训|交底/u.test(a.content)}]}(a,c),e=d.filter(a=>a.passed).length;return{chapterId:a.id,title:a.title,score:d.length?Math.round(e/d.length*100):100,checks:d,action:e===d.length?"章节覆盖完整。":"系统需补齐章节结构、证据绑定、专业控制点和跨章依赖。"}}),A=di(j,w.score>=85?[]:[{level:"warning",message:`系统知识库覆盖确认率偏低:${w.score}%`,suggestion:`${w.remediation} 未确认事实域:${w.unconfirmedDomains.map(a=>cH[a]||a).join("、")||"无"}`}],(0,y.c$)(x,{maxIssues:20}),z.filter(a=>a.score<80).map(a=>({level:"warning",message:`章节覆盖不足:${a.title} ${a.score}%`,suggestion:`${a.action} 未通过项:${a.checks.filter(a=>!a.passed).map(a=>a.label).join("、")}`})),l?k.filter(a=>a.risk.highRisk&&(0===a.requiredFactTotal?a.evidenceCount<8:a.requiredFactCovered<a.requiredFactTotal)).map(a=>({level:"warning",message:`系统知识库召回覆盖需复核:${a.chapterTitle}`,suggestion:`知识库总切片 ${a.risk.totalChunks},当前预加载 ${a.risk.loadedChunks}${a.risk.riskReason?`(${a.risk.riskReason})`:""},已启用深召回;事实覆盖 ${a.requiredFactCovered}/${a.requiredFactTotal},小节覆盖 ${a.sectionCovered}/${a.sectionTotal}。`})):[]);A=A.map(a=>dU.test(a.message)&&"warning"===a.level?{...a,level:"info"}:a);let B=await dg({markdown:h,chapters:c,issues:A,knowledgeCoverage:w,factTraces:x,template:m,tenderRequirements:n,bidComposition:o,effectiveChapters:d,drawingFactLock:p,boqRowTraces:(0,y.JV)(h,e),parameterUsageAudit:function(a){let b=a.chapters||[],c=R(a.markdown,a.factsModel,b,{supersededValues:a.supersededValues});if(0===c.totalParams)return;let d=c.used.length,e=c.relevantMissed.length,f=d+e;return{totalParams:c.totalParams,usedParams:d,relevantMissedCount:e,relevantMissed:c.relevantMissed.slice(0,20).map(a=>`${a.key}:${String(a.value).slice(0,60)}`),irrelevantMissedCount:c.irrelevantMissed.length,noiseExcludedCount:c.noiseExcluded.length,noiseExcluded:c.noiseExcluded.slice(0,10).map(a=>`[${a.category}]${a.fact.key}:${String(a.fact.value).slice(0,50)}`),rate:b.length>0&&f>0?d/f:null}}({markdown:h,factsModel:e,chapters:c,supersededValues:a.supersededTruthValues}),keyFactPlacementAudit:function(a,b){let c=function(a){let b=[];if(!a||0===a.length)return b;let c=new Set(T),d=new Set;for(let e of a){if(!e)continue;let a=(0,r.nD)(e);if(!a||!c.has(a.key))continue;let g=`${e.key||""}${e.fieldName||""}${e.fieldId||""}`,h=(0,f.lG)(e.value).trim();if(!h||U.test(h)||/项目名称|工程名称/u.test(g)&&("table"===e.processingType||"structured_data"===e.processingType||/bill_of_quantities/u.test(e.roleId||""))||(0,S.rf)(g,h))continue;let i=(0,q.iG)((0,q.De)(h)).replace(/\s+/gu," ").trim();if(!i)continue;let j=`${a.key}|${i}`;d.has(j)||(d.add(j),b.push({key:a.key,label:a.label,value:i}))}return b}(b);if(0===c.length)return;let d=new Map;for(let a of c){let b=d.get(a.key)??{label:a.label,values:[]};b.values.push(a.value),d.set(a.key,b)}let e=0,g=[];for(let b of T){let c=d.get(b);if(c){if(c.values.some(b=>(0,S.AI)(a||"",b))){e+=1;continue}g.push(`${c.label}:${c.values[0].slice(0,60)}`)}}let h=d.size;return{specs:h,placed:e,unplaced:g.slice(0,20),rate:h>0?e/h:null}}(h,[...s||[],...e&&e.preciseFacts||[]]),authorityAuditReport:t,professionalDepthClassifier:u,evaluationCriteriaItems:v}),C=function(a){let b=[],c=a.issues.filter(a=>"error"===a.level);c.length>0&&b.push({priority:"high",title:"阻断问题修复",action:`修复 ${c.length} 个导出阻断问题,优先处理事实冲突、结构缺失、模板规则违规和占位残留。`});let d=(a.factTraces||[]).filter(a=>"unplaced"===a.status&&(0,y.O7)(a));if(d.length>0){let a=d.length>12?`${d.length} 项(示例:${d.slice(0,8).map(a=>a.label).join("、")} 等)`:`${d.length} 项(${d.map(a=>a.label).join("、")})`;b.push({priority:"high",title:"事实落位修复",action:`将 ${a} 已确认知识库事实写入对应章节,保持原始数值、单位和来源口径。`})}a.knowledgeCoverage&&a.knowledgeCoverage.score<95&&b.push({priority:"medium",title:"知识库确认覆盖修复",action:"扩大本地知识库检索范围,执行事实补抽和章节证据重分配;这是系统检索、抽取、落位问题,不要求用户追加资料。"});let e=(a.chapterCoverage||[]).filter(a=>a.score<80);if(e.length>0){let a=e.length>10?`${e.slice(0,8).map(a=>a.title).join("、")} 及其他${e.length-8}章`:e.map(a=>a.title).join("、");b.push({priority:"medium",title:"章节覆盖修复",action:`补齐低覆盖章节(${e.length}章):${a}。`})}return a.qualityReport&&!a.qualityReport.passed&&b.push({priority:"medium",title:"交付置信度修复",action:a.qualityReport.actions.join(" ")}),b}({issues:A,qualityReport:B,knowledgeCoverage:w,factTraces:x,chapterCoverage:z});A=di(A,B.passed?[]:[{level:"error",severity:"blocker",category:"structure",repairability:"manual_review",owner:"user",message:`交付置信度未达目标:${B.deliveryProbability}% / ${B.target}%(综合评分 ${B.overall}/100)`,suggestion:B.actions.join(" ")}],C.filter(a=>"high"===a.priority).map(a=>({level:"info",message:`修复策略待执行:${a.title}`,suggestion:a.action})));let D=(0,af.Ai)(A,e,c);return{knowledgeCoverage:w,factTraces:x,chapterCoverage:z,qualityReport:B,repairStrategies:C,validationIssues:A,finalExportGate:D}}async function dW(a){var b,c;let d=(b=a.chapterDrafts,c=a.documentSpec,b.map(a=>{let b=c.chapterRules.find(b=>b.id===a.id||b.title===a.title),d=(b?.requiredFactIds||[]).map(a=>c.factFields.find(b=>b.id===a)?.name).filter(Boolean),e=[...new Set([...a.missingFacts||[],...d].filter(Boolean))],f=e.filter(b=>!a.missingFacts.includes(b)),g=e.filter(b=>a.missingFacts.includes(b));return{chapterId:a.id,title:a.title,requiredFacts:e,coveredFacts:f,missingFacts:g,evidenceCount:a.evidence.length}}));a.validation=(0,n.M6)(a.chapterDrafts,a.governedStructuredFacts,a.template),a.validation.warnings=[...a.validation.warnings,...a.readiness.warnings],a.validation.errors=[...a.validation.errors,...a.readiness.blockingIssues],a.sources=[...a.allEvidence.reduce((a,b)=>a.set(b.filePath,(a.get(b.filePath)??0)+1),new Map).entries()].sort((a,b)=>b[1]-a[1]).map(([a,b])=>({filePath:a,count:b}));let e=new Map;for(let b of a.allEvidence)e.set(b.source||"unknown",(e.get(b.source||"unknown")??0)+1);a.validationIssues=di((0,dq.w9)(a.validation,a.factsModel,a.chapterDrafts),function(a){let b=[];for(let c of a)0===c.evidenceCount?b.push({level:"error",message:`章节缺少证据:${c.title}`,suggestion:"请补充对应绑定材料或调整模板章节检索词。"}):c.missingFacts.length>0&&b.push({level:"warning",message:`章节事实覆盖不足:${c.title},缺失 ${c.missingFacts.slice(0,6).join("、")}`,suggestion:"建议补充章节 requiredFacts 或绑定材料证据。"});return b}(d),(a.globalConsistencyIssues||[]).filter(a=>!/^跨章一致性冲突|^工序规格冲突/u.test(a)).slice(0,10).map(b=>{let c=/^数据一致性矛盾/u.test(b);return{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`${c?"数据一致性复核":"跨章一致性复核"}:${b}`,suggestion:c?"全文数据必须一致:以绑定资料(图纸/清单/招标文件)为准选定唯一值,统一矛盾数值对。":"跨章数值口径不一致属低级错误,必须定向修复统一口径后重新校验。",provenance:{detectorId:c?"data-consistency-snapshot":"global-consistency-snapshot",fingerprint:(0,f.c6)(a.chapterDrafts.map(a=>a.content).join("\n\n"))}}}));let g=a.chapterDrafts.map(a=>a.content).join("\n\n");a.validationIssues=di(a.validationIssues,(0,n.br)(g,a.structuredFacts).map(a=>({...a,level:"warning",severity:"warning",suggestion:"建议 Agent Writer 在章节生成阶段优先落位可信基础事实;导出阶段不因未落位的低置信或泛化事实阻断。",provenance:{detectorId:"fact-coverage",fingerprint:(0,f.c6)(g)}})));let h=Math.max(0,a.effectiveChapters.length-a.chapterDrafts.length);a.validationIssues=di(a.validationIssues,[...h>0?[{level:"error",severity:"blocker",message:`部分章节生成失败:${h} 章`,suggestion:a.failedChapterMessages.join(";")||"请检查模型调用、知识库检索和事实抽取配置后重新生成失败章节。"}]:[]]);let i=await Promise.all(a.chapterDrafts.map(async b=>{let c=a.effectiveChapters.find(a=>a.id===b.id);if(!c)return[];let d=await ds({chapter:c,content:b.content,evidence:b.evidence||[]});return d.length>0?[{level:"warning",message:`${b.title} 小节事实或量化参数落位可继续优化:${d.slice(0,5).join(";")}`,suggestion:"建议在 Agent Writer 阶段扩大定向证据,不得在导出阶段补写。"}]:[]}));a.validationIssues=di(a.validationIssues,i.flat()),a.assets=[];let k=[...a.progressStages];for(let b of a.chapterGenerationStages)(0,j.fx)(k,b);a.executionStages=function(a,b=300){if(a.length<=b)return a;let c=b-4-1;if(c<=0)return a.slice(-b);let d=a.slice(0,4),e=a.slice(-c),f=a.slice(4,a.length-c),g=f.filter(a=>"failed"===a.status).length;return[...d,{type:"validation",roleId:"stage-archive",status:g>0?"failed":"success",message:`已归档 ${f.length} 个中间执行阶段${g>0?`(含 ${g} 个失败记录)`:""}`,details:f[0]?.subtitle?[`归档区间:${f[0].subtitle} → ${f[f.length-1]?.subtitle||""}`]:[]},...e]}(k),(0,j.fx)(a.executionStages,(0,j.X5)({type:"reference",roleId:"knowledge-usage-report",status:"success",message:`资料使用报告:证据 ${a.allEvidence.length} 条,来源文件 ${a.sources.length} 份,结构化事实 ${a.structuredFacts.length} 条`,details:[`证据类型:${[...e.entries()].map(([a,b])=>`${a} ${b}`).join(",")||"无"}`,`索引健康:可用切片 ${a.indexHealth.usableChunkCount} 条,待索引 ${a.indexHealth.pendingJobs} 个,向量${(0,n.EG)(a.indexHealth.vectorStatus?.status)}`]},{subtitle:"资料使用报告"})),(0,j.fx)(a.executionStages,(0,j.X5)({type:"reference",roleId:"web-research-report",status:a.webResearchReport.enabled?"success":"skipped",message:a.webResearchReport.enabled?`联网增强:检索章节 ${new Set(a.webResearchReport.chapters).size} 个,查询 ${a.webResearchReport.queries.length} 个,使用公开资料 ${a.webResearchReport.evidenceCount} 条`:"联网增强未开启",details:a.webResearchReport.enabled?[`检索主题:${[...new Set(a.webResearchReport.queries)].join(";")||"无"}`,`过滤结果:${a.webResearchReport.filteredCount} 条`,"公开资料仅用于通用规范、政策、工艺和措施补充,不作为项目事实来源"]:["可在模型配置中开启联网增强"]},{subtitle:"联网增强报告"}));{let b=(0,o.Jq)("standard-final"),c=b.degraded.length>0?b.degraded.join("、"):"无";(0,j.fx)(a.executionStages,(0,j.X5)({type:"validation",roleId:"detector-execution-summary",status:b.degraded.length>0?"failed":"success",message:b.degraded.length>0?`交付前检测器执行情况:已执行 ${b.executed.length} 个、**降级未执行 ${b.degraded.length} 个**(该 ${b.degraded.length} 个检测维度本次未查,导出不受阻断但需复核)`:`交付前检测器执行情况:${b.executed.length} 个全部执行完成`,details:[`降级未执行(基础设施异常):${c}`,...b.declaredMissing.length>0?[`声明但未执行(疑为死检测器,请核查接线):${b.declaredMissing.join("、")}`]:[],"说明:降级为检测器基础设施异常而非正文内容缺陷,不阻断导出;重跑可恢复该维度检查。"]},{subtitle:"交付前检测器执行情况"})),a.emitProgress?.()}}function dX(a){let b=(0,aY._D)(a.tenderRequirements?.structureRequirements||[],a.effectiveChapters,a.requirementsSimilarity);return(0,c_.cA)({structureItems:b.assignments.map(a=>({chapterTitle:a.chapterTitle,form:a.requirement.form,element:a.requirement.element})),chapters:a.effectiveChapters})}function dY(a){let b=function(a,b,c){let d=b?function(a){let b=new Set,c=ar(a),d=a=>{let c=(0,y.Ih)(a);c&&b.add(c)};for(let b of(0,ah.IV)(a).entries){for(let a of("number"==typeof b.value&&Number.isFinite(b.value)&&d(String(b.value)),[String(b.value),b.spec,b.label]))if(a)for(let b of a.match(/\d+(?:\.\d+)?/gu)??[])d(b);for(let a of b.groups??[])d(String(a.value));for(let a of b.specBreakdown??[])d(String(a.value))}return{cores:b,values:c}}(b):void 0,e=d?.cores??new Set,f=d?.values??[];if(c)for(let a of c){let b=/\d+(?:\.\d+)?/u.exec(a);b&&e.add((0,y.Ih)(b[0]))}let g=function(a){let b=new Map,c=c=>{let d=c.trim();!d||b.has(d)||b.set(d,aq(a,d))};for(let b of(0,ai.ll)(a))c(b);for(let b of a.matchAll(ap))c(b[0]);return[...b.entries()].sort((a,b)=>a[1]-b[1]).map(([a,b])=>({token:a,index:b}))}(a),h=[],i=[],j=[],k=[],l=[],m=0,n=0,o=0,p=0;for(let{token:b,index:c}of g){if(c<0||function(a,b){let c=a.lastIndexOf("\n",b-1)+1,d=a.indexOf("\n",b),e=a.slice(c,d<0?a.length:d);return/^\s*\|/u.test(e.trim())}(a,c)||"0"===as(b))continue;if(m+=1,ak.some(a=>a.re.test(b))){o+=1;continue}let d=(0,y.Ih)(as(b)),g=an(a,c,b.length).replace(/\s+/gu," ").trim(),q={token:b,value:d,context:g,occurrences:function(a,b){let c=0;for(let d=aq(a,b);d>=0;d=aq(a,b,d+1))c+=1;return c}(a,b)};if(e.has(d)){n+=1,"unattributed"!==at(g)&&k.push(q);continue}let r=function(a,b,c,d,e){let f=a.slice(Math.max(0,b-24),b);return aj.FW.test(f.replace(/\s+/gu," "))?ao(a,b,c,d,e):null}(a,c,b,d,f);if(r){l.push({...q,closure:r.map(a=>`${a.name} ${a.value}${a.unit}`)});continue}if("unsourced"!==(0,y.eS)({token:b,context:g}).kind){p+=1;continue}let s=at(g);if("unattributed"===s){j.push(q);continue}let t=ao(a,c,b,d,f),u=t?{...q,closureCandidates:t.map(a=>`${a.name} ${a.value}${a.unit}`)}:q;"derivation-gap"===s?h.push(u):i.push(u)}return{scanned:m,matched:n,registered:o,conventionExempt:p,totalClaimClosed:l,derivationGaps:h,processGaps:i,unattributed:j,contextualMatches:k,unregisteredCount:j.length}}(a.finalMarkdown,a.blueprintData,az(a));a.authorityAuditReport=b;let c=(0,o.yT)("authority-audit-gap",()=>(function(a){let b=a.derivationGaps.length+a.processGaps.length;if(0===a.unregisteredCount&&0===b)return[];let c=a=>a.slice(0,6).map(a=>a.token.replace(/\s+/gu,"")).join("、"),d=[];return a.unregisteredCount>0&&d.push(`疑似编造(未登记)${a.unregisteredCount} 项 ${c(a.unattributed)}`),a.derivationGaps.length>0&&d.push(`推导/投影缺口 ${a.derivationGaps.length} 项 ${c(a.derivationGaps)}`),a.processGaps.length>0&&d.push(`工艺库缺口 ${a.processGaps.length} 项 ${c(a.processGaps)}`),[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`无主数值审计失败:${d.join(";")}`,suggestion:"未登记数值(疑似编造)必须回归资料原文或改为不带具体数值的表述;推导/投影缺口数值应补权威投影(transform/specBreakdown/groups 扩容)——若该值可由具名权威分项和闭合(见审计明细「可闭合」),应在正文按分项显式还原为「分项名 值 + …,合计 值」的分解表述(还原后即由合计闭包收编);工艺库缺口数值应补规范常数/管理数字分类(C-T2 分类器)或工艺库登记。**禁止以删除数值或改定性表述消除缺口**(链尾无删除式收敛器,理由见 authorityAudit 模块头)。修复后重跑生成复核清零。"}]})(b));a.validationIssues=[...a.validationIssues.filter(a=>!a.message.startsWith("无主数值审计失败")),...c];let d=b.unregisteredCount>0||b.derivationGaps.length>0||b.processGaps.length>0;(0,j.fx)(a.executionStages,(0,j.X5)({type:"validation",roleId:"authority-audit",status:d?"failed":"success",message:function(a){let b=`无主数值审计:扫描数值 ${a.scanned} 个(命中权威 ${a.matched},登记豁免 ${a.registered},规范/管理豁免 ${a.conventionExempt},合计闭包 ${a.totalClaimClosed?.length??0},推导/投影缺口 ${a.derivationGaps.length},工艺库缺口 ${a.processGaps.length},未登记 ${a.unregisteredCount})`,c=[...a.derivationGaps,...a.processGaps].filter(a=>(a.closureCandidates?.length??0)>0).length,d=c>0?`(覆盖缺口中有 ${c} 项可由具名权威分项和闭合:属投影覆盖缺口,应扩投影或按分项还原,不得删除)`:"";return a.unregisteredCount>0?`${b};存在疑似编造数值,须核查${d}`:a.derivationGaps.length+a.processGaps.length>0?`${b};存在收编缺口,须扩权威投影/工艺库登记(链尾不做删除式收敛)${d}`:b}(b),details:function(a,b=24){let c=(a,c)=>0===c.length?[]:[a,...c.slice(0,b).map(a=>{let b=a.closureCandidates??[],c=b.length>0?`;可闭合:= ${b.join(" + ")}`:"";return`${a.token}(\xd7${a.occurrences})— ${a.context}${c}`})],d=[...c("未登记(疑似编造,须核查或收编):",a.unattributed),...c("推导器/投影覆盖缺口(进收编清单):",a.derivationGaps),...c("工艺库缺口(进收编清单):",a.processGaps),...a.totalClaimClosed?.length?["合计闭包收编(权威分项和,不计缺口):",...a.totalClaimClosed.slice(0,b).map(a=>`${a.token}(\xd7${a.occurrences})= ${(a.closure??[]).join(" + ")} — ${a.context}`)]:[]];return d.length>0?d:["全部数值命中权威索引或登记表,无未登记项。"]}(b)},{subtitle:"权威覆盖审计"}))}async function dZ(a){let b=dX(a);a.rebuildFinalMarkdown=()=>{let c=(0,s._D)((0,n.Ht)((0,ad.bR)((0,n.Xr)((0,ad.kT)((0,ad.K7)(dR((0,n.jO)(function(a){let b=(0,k.kO)(a.bidComposition),c=(0,n.Ht)((0,ad.rs)((0,ad.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.chapters,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.chapters,generatedAt:Date.now()},{forbidDrawingImages:b,promptRules:a.promptDocumentRules,bodyTableForbidden:a.bodyTableForbidden,coverForbidden:a.coverForbidden}),a.chapters,{forbidDrawingImages:b,promptRules:a.promptDocumentRules,bodyTableForbidden:a.bodyTableForbidden,coverForbidden:a.coverForbidden}).markdown);return(0,ae.u7)(c,{plan:a.bidComposition?.appendixPlan||[],blueprintData:a.blueprintData})}({template:a.template,requirement:a.requirement,projectRoot:a.projectRoot,projectId:a.projectId,facts:a.facts,structuredFacts:a.structuredFacts,factsModel:a.factsModel,chapters:a.finalChapterDrafts,sources:a.sources,missingItems:a.missingItems,validation:a.validation,validationIssues:a.validationIssues,executionStages:a.executionStages,assets:a.assets,promptDocumentRules:a.promptDocumentRules,bodyTableForbidden:(0,k._C)(a.bidComposition),coverForbidden:a.bidComposition?.formatRules.cover==="forbidden",bidComposition:a.bidComposition,blueprintData:a.blueprintData}),a.structuredFacts,{bodyTableForbidden:(0,k._C)(a.bidComposition)}),a.projectMaterialSummary))))))).markdown;return(0,k._C)(a.bidComposition)?c:(0,c_.aH)((0,c_.TG)((0,c_.lj)(c)),b,{substituteTable:b=>(0,dx.Ik)(a.blueprintData,b)}).markdown};let c=(0,r.mN)({facts:a.structuredFacts,markdown:a.finalMarkdown});if(c.size>0&&a.executionStages.push({type:"fact_extraction",roleId:"canonical-facts",status:"success",message:`已决策可信基础事实 ${c.size} 项`,details:[...c.values()].map(a=>`${a.label}=${a.value}(${a.source},confidence=${a.confidence})`).slice(0,12)}),!a.caliberLedger){let b=[...a.factsModel?.preciseFacts||[],...a.factsModel?.project||[],...a.factsModel?.schedule||[],...a.factsModel?.quality||[],...a.factsModel?.safety||[]].map(a=>({key:a.key,label:a.fieldName,value:a.value,sourceFile:a.sourceFile})),c=[...(a.allEvidence||[]).map(a=>({text:String(a.content||""),source:`${a.filePath||""} ${a.sectionTitle||""}`})),...b.map(a=>({text:String(a.value??""),source:String(a.sourceFile||"")}))],d=(0,z.Oq)((0,z.UD)(c)),e=(0,p.iC)({facts:b,overrides:d,labeledValues:(0,z.Su)(c)});a.caliberLedger=(0,p.wc)(e),a.truthValues=e.resolved;let f=(0,p.DK)(e);f.length>0&&(console.error(`[caliber] 真值层自检发现 ${f.length} 处不变量违规:${f.slice(0,5).join(";")}`),a.executionStages.push((0,j.X5)({type:"validation",roleId:"caliber-self-check",status:"partial",message:`真值层自检:${f.length} 处不变量违规(${f.slice(0,3).join(";")})——已记录,不改写、不阻断`},{subtitle:"真值层自检"})));let g=function(a){let b=0,c=0,d=[];for(let e of a){if(String(e.objectName||"").trim()){b+=1;continue}if(N.test(String(e.key||"").trim())){c+=1;continue}d.length<12&&d.push(`${String(e.key).slice(0,20)}:${String(e.value).slice(0,30)}`)}let e=a.length-b-c,f=b+e;return{total:a.length,bound:b,projectLevel:c,unbound:e,bindRate:f>0?b/f:1,unboundSamples:d}}(a.factsModel?.factIndex?.parameterFacts||[]),h=(0,j.X5)({type:"reference",roleId:"caliber-ledger",status:"success",message:`口径账本(真值层):受管属性 ${e.resolved.length} 项、噪声剔除 ${e.noiseRejected.length} 项、值级覆盖 ${d.length} 对;参数绑定 ${g.bound}/${g.bound+g.unbound}(绑定率 ${Math.round(100*g.bindRate)}%,项目级 ${g.projectLevel} 项不计入)`,details:[...a.caliberLedger.slice(0,20),...d.length>0?[`值级覆盖:${d.slice(0,5).map(a=>`${a.superseded}→${a.effective}`).join("、")}`]:[],...g.unbound>0?[`未绑定对象(应清零:有锚点却未抽到=抽取器缺陷):${g.unboundSamples.join(";")}`]:[]]},{subtitle:"口径账本"});(0,j.fx)(a.executionStages,h),(0,j.fx)(a.progressStages,h)}let d=function(a,b){let c=[];if(!a||0===b.length)return c;for(let d of b)for(let e of d.superseded){let f=e.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&"),g=[...a.matchAll(RegExp(f,"gu"))];if(0===g.length)continue;let h=[];for(let b of g){let c=a.lastIndexOf("。",b.index??0)+1,d=a.indexOf("。",(b.index??0)+e.length),f=-1===d?a.length:d+1,g=a.slice(c,f);bn.test(g)||h.push(g.trim().slice(0,80))}0!==h.length&&c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",provenance:{detectorId:"superseded-value-usage",fingerprint:String(b.length)},message:`${d.field}口径错误:正文 ${h.length} 处仍以被取代值「${e}」作为现行口径(现行为「${d.effective}」)——如「${h[0]}」`,suggestion:`请把上述表述统一为现行口径「${d.effective}」(答疑澄清后生效值);若确需说明变更过程,须写成引用形态(如「招标文件原为${e},经答疑澄清变更为${d.effective}」),不得单独以旧值陈述现状。`})}return c}(a.finalMarkdown,a.clarificationOverrides||[]);d.length>0&&(a.validationIssues=[...a.validationIssues,...d]),a.baseValidationIssues=a.validationIssues,a.validationIssues=await dT({documentSpec:a.documentSpec,validationIssues:a.validationIssues,factsModel:a.factsModel,finalChapterDrafts:a.finalChapterDrafts,finalMarkdown:a.finalMarkdown,truthValues:a.truthValues,template:a.template,promptBindings:a.promptBindings,promptDocumentRules:a.promptDocumentRules,projectMaterialSummary:a.projectMaterialSummary,domainProfile:a.domainProfile,structuredFacts:a.structuredFacts,documentBudget:a.documentBudget,scopeConflicts:a.scopeConflicts,evaluationCriteriaItems:a.evaluationCriteriaItems,effectiveChapters:a.effectiveChapters,tenderRequirements:a.tenderRequirements,requirementsSimilarity:a.requirementsSimilarity,factTokenScopeClassifier:a.factTokenScopeClassifier,professionalDepthClassifier:a.professionalDepthClassifier,materialEvidence:a.allEvidence,blueprintData:a.blueprintData,billFactLock:a.billFactLock,drawingFactLock:a.drawingFactLock,bodyTableForbidden:(0,k._C)(a.bidComposition),bodyFigureForbidden:(0,k.kO)(a.bidComposition),identityMarksForbidden:!!a.bidComposition?.identityMarksForbidden,coverForbidden:a.bidComposition?.formatRules.cover==="forbidden",clarificationAmendments:a.clarificationAmendments?.amendments}),dY(a),a.qualityBundle=await dV({finalChapterDrafts:a.finalChapterDrafts,effectiveChapters:a.effectiveChapters,factsModel:a.factsModel,allEvidence:a.allEvidence,finalMarkdown:a.finalMarkdown,validationIssues:a.validationIssues,retrievalCoverageReports:a.retrievalCoverageReports,includeRetrievalCoverage:!0,template:a.template,tenderRequirements:a.tenderRequirements,bidComposition:a.bidComposition,drawingFactLock:a.drawingFactLock,structuredFacts:a.structuredFacts,authorityAuditReport:a.authorityAuditReport,professionalDepthClassifier:a.professionalDepthClassifier,evaluationCriteriaItems:a.evaluationCriteriaItems,supersededTruthValues:new Set((a.truthValues||[]).flatMap(a=>a.superseded||[]).map(a=>(0,w.K3)(a)))}),a.validationIssues=a.qualityBundle.validationIssues,a.finalGateRepairStages=[],a.recomputeFinalValidationBundle=async()=>{let b=a.baseValidationIssues.filter(a=>!a.provenance||!dh.has(a.provenance.detectorId));a.validationIssues=await dT({documentSpec:a.documentSpec,validationIssues:b,factsModel:a.factsModel,finalChapterDrafts:a.finalChapterDrafts,finalMarkdown:a.finalMarkdown,truthValues:a.truthValues,template:a.template,promptBindings:a.promptBindings,promptDocumentRules:a.promptDocumentRules,projectMaterialSummary:a.projectMaterialSummary,domainProfile:a.domainProfile,structuredFacts:a.structuredFacts,documentBudget:a.documentBudget,scopeConflicts:a.scopeConflicts,evaluationCriteriaItems:a.evaluationCriteriaItems,effectiveChapters:a.effectiveChapters,tenderRequirements:a.tenderRequirements,requirementsSimilarity:a.requirementsSimilarity,factTokenScopeClassifier:a.factTokenScopeClassifier,professionalDepthClassifier:a.professionalDepthClassifier,materialEvidence:a.allEvidence,blueprintData:a.blueprintData,billFactLock:a.billFactLock,drawingFactLock:a.drawingFactLock,bodyTableForbidden:(0,k._C)(a.bidComposition),bodyFigureForbidden:(0,k.kO)(a.bidComposition),identityMarksForbidden:!!a.bidComposition?.identityMarksForbidden,coverForbidden:a.bidComposition?.formatRules.cover==="forbidden",clarificationAmendments:a.clarificationAmendments?.amendments}),dY(a),a.qualityBundle=await dV({finalChapterDrafts:a.finalChapterDrafts,effectiveChapters:a.effectiveChapters,factsModel:a.factsModel,allEvidence:a.allEvidence,finalMarkdown:a.finalMarkdown,validationIssues:a.validationIssues,retrievalCoverageReports:a.retrievalCoverageReports,includeRetrievalCoverage:!1,template:a.template,tenderRequirements:a.tenderRequirements,bidComposition:a.bidComposition,drawingFactLock:a.drawingFactLock,structuredFacts:a.structuredFacts,authorityAuditReport:a.authorityAuditReport,professionalDepthClassifier:a.professionalDepthClassifier,evaluationCriteriaItems:a.evaluationCriteriaItems,supersededTruthValues:new Set((a.truthValues||[]).flatMap(a=>a.superseded||[]).map(a=>(0,w.K3)(a)))}),a.validationIssues=a.qualityBundle.validationIssues}}async function d$(a){let b=(0,n.hS)(a.finalMarkdown,[...a.structuredFacts,...a.factsModel.preciseFacts]);if(b.length>0){let c=[[/项目名称|工程名称|项目编号|招标人|建设单位|发包人|建设地点|建设规模|招标范围|施工范围/u,/概况|基本信息|概述|总述|简介/u],[/计划工期|合同工期|天数/u,/工期|进度|施工部署|总体部署|流水/u],[/质量标准|质量目标/u,/质量/u],[/危大|安全/u,/安全/u],[/资源|材料|机械|设备|机具/u,/资源|投入|物资|机械|设备|机具|周转/u],[/面积|占地|建筑面积|长度|宽度|高度|厚度|深度|强度|等级|坡度|管径|直径|规格|跨度|周长|体积|重量/u,/概况|施工方法|主要施工|方案/u]],d=new Map,e=[],f=[];for(let f of b){let b=c.find(([a])=>a.test(f.label)),g=b?a.finalChapterDrafts.find(a=>b[1].test(a.title)):void 0;if(!g){e.push(`${f.label}=${f.value}`);continue}let h=d.get(g.id)||[];h.push({label:f.label,value:f.value,fact:f.fact}),d.set(g.id,h)}let h=0;for(let[b,c]of d){let d=a.finalChapterDrafts.findIndex(a=>a.id===b);if(d<0)continue;let i=a.finalChapterDrafts[d],k=a.effectiveChapters.find(a=>a.id===i.id||a.title===i.title),l=(0,j.X5)({type:"llm_review",roleId:`agent-fact-landing-${b}`,status:"running",message:`正在落位 ${c.length} 条重要事实:${i.title}`,details:[...c.map(a=>`${a.label}=${a.value}`),...e.map(a=>`跳过:${a}(无匹配章节)`),...f.map(a=>`超限跳过:${a}`)]},{subtitle:"事实落位修复"});(0,j.fx)(a.progressStages,l),(0,j.fx)(a.finalGateRepairStages,l),a.emitProgress(a.finalChapterDrafts,a.progressStages);let m=["【事实落位定向修复】\n下列资料事实是项目硬数据,当前正文未出现。请逐条定位到本章最合适的位置(项目概况引导段、项目基本信息表对应行或对应小节),以局部 patch 方式自然写入,保持原始数值、单位与表述口径,不得改写、换算或编造。\n不得新增、删除或合并小节;表格内补充必须保持表头结构不变;只修改与落位事实直接相关的局部文本。",c.map(a=>`- ${a.label}=${a.value}`).join("\n")].join("\n"),o=0,p=await av({originalContent:i.content,repairRound:"fact-landing",diagnostics:a.generationDiagnostics,apply:async()=>{let b=await a.withProgressHeartbeat(()=>(0,g.l8)({template:a.template,chapter:{id:i.id,title:i.title,content:i.content,evidence:i.evidence,missingFacts:i.missingFacts,sections:i.sections},issues:c.map(a=>`已确认事实未在正文中落位:${a.label}=${a.value}`),promptTexts:m,requirement:a.requirement,forbidDrawingImages:!1,bidComposition:a.bidComposition,diagnostics:a.generationDiagnostics,signal:a.signal,patchGuard:(0,g.XG)("fact-landing",a.generationDiagnostics)}));return b.content&&b.content!==i.content?(o=b.appliedCount,k?(0,n.w_)(b.content,k):b.content):i.content},recheck:a=>[(0,n.hS)(a,c.map(a=>a.fact)).length]});p.rolledBack||p.content===i.content||(a.finalChapterDrafts[d]={...i,content:p.content},h+=o);let q=(0,j.X5)({type:"llm_review",roleId:`agent-fact-landing-${b}`,status:p.rolledBack||0===o?"failed":"success",message:p.rolledBack?`重要事实落位已回滚:${i.title}(修复后事实缺失增多,保留修复前正文)`:o>0?`重要事实落位完成:${i.title}(${o} 处 patch)`:`重要事实落位未生效:${i.title}`,details:c.map(a=>`${a.label}=${a.value}`)},{subtitle:"事实落位修复"});(0,j.fx)(a.progressStages,q),(0,j.fx)(a.finalGateRepairStages,q),a.emitProgress(a.finalChapterDrafts,a.progressStages)}h>0&&(a.finalMarkdown=a.rebuildFinalMarkdown(),await a.recomputeFinalValidationBundle())}}var d_=c(80572),d0=c(56963),d1=c(7148),d2=c(31530),d3=c(12863);function d4(a,b){return Math.abs(a-b)<=.01+1e-6*Math.max(Math.abs(a),Math.abs(b))}function d5(a,b){return!!d4(a,b)||Number.isInteger(a)&&(Math.trunc(b)===a||Math.round(b)===a)}function d6(a){let b=(a||"").trim().toLowerCase();return(0,d1.Sn)(b)}let d7=/^([^。;;\n|]{0,12}?)([\d,,]+(?:\.\d+)?)\s*(座|个|套|处|盏|棵|株|樘|扇|根|块|片|组|件|孔|间|栋|幢|户|米|m|km|公里|平方米|m2|㎡|m²|立方米|m3|m³|kg|吨|t)(?![a-zA-Z0-9²³])/u;function d8(a,b){let c=[];if(!b||0===b.entries.length)return c;let d=b.entries.map(a=>({...a,name:(a.name||"").trim()})).filter(a=>a.name.length>=2&&!aj.e.test(a.name)&&Number.isFinite(a.quantity)&&a.quantity>0);if(0===d.length)return c;let e=new Map;for(let a of d){let b=e.get(a.name);b?b.push(a):e.set(a.name,[a])}let f=[];for(let b of e.keys())for(let[c,d]of[[(0,d3.Lp)(b),!0],[(0,d3.nv)(b),!1]]){let e=RegExp(c,"gu");for(let c of a.matchAll(e)){let a=c.index??0;f.push({name:b,start:a,end:a+c[0].length,strict:d})}}f.sort((a,b)=>(a.strict!==b.strict?a.strict?-1:1:0)||a.start-b.start||b.end-b.start-(a.end-a.start)||b.name.length-a.name.length);let g=[];for(let b of f){let f=b.start,h=b.end;if(g.some(a=>f<a.end&&h>a.start)||(g.push({start:f,end:h}),/\d$/u.test(b.name)&&/^[\d.]/u.test(a.slice(h,h+1))||"量"===a.slice(h,h+1)))continue;let i=a.slice(h,h+20),j=d7.exec(i);if(!j||aj.As.test(j[1]))continue;let k=Number.parseFloat(j[2].replace(/[,,]/gu,""));if(!Number.isFinite(k))continue;let l=d6(j[3]),m=e.get(b.name)??[],n=m.map(a=>a.quantity),o=d.find(a=>a.name!==b.name&&d4(a.quantity,k)&&d6(a.unit)===l),p=j[1].length;c.push({name:b.name,value:k,unit:l,valueText:j[2],valueStart:h+p,sameNameEntries:m,sameNameQuantities:n,foreignEntry:o})}return c}async function d9(a,b){let c=[],d=[],e=[],f=await a9(a);if(!f.degraded)for(let g of f.groups){let f=bd(g,{markdown:a,billFactLock:b.billFactLock,blueprintQuantities:b.blueprintQuantities});if("distinct-lock-entries"===f.verdict){d.push(`“${g.concept}”对应${f.entries}`);continue}if("no-anchor"===f.verdict){e.push(`“${g.concept}”:${[...new Set(g.values.map(a=>a.raw))].slice(0,3).join("、")}`);continue}for(let b of f.nonLock)for(let d of b.occurrences){let h=d.matchIndex+d.valueOffset,i=a.slice(Math.max(0,h-40),h+d.valueText.length+40),j=(0,d2.Rd)({authorityOwner:f.entryName,bodyLocation:g.concept,bodyWindow:i,found:b.raw,authority:`${f.lockValue}${f.lockUnit||""}`});if(!j.allowed){e.push(`“${g.concept}” ${b.raw}→${f.lockValue}${f.lockUnit||""} 未过统一改写闸门(${j.reason}),保留检测不改正文`);continue}c.push({start:h,end:h+d.valueText.length,replacement:String(f.lockValue),detail:`参数口径“${b.concept}” ${b.raw}→${f.lockValue}${f.lockUnit}(以工程量清单条目「${f.entryName}」锁定口径为准)`,concept:g.concept})}}for(let d of(0,s.mB)(a,b.specAuthorityMap))d.replacement&&c.push({...d.replacement,location:d.location});for(let d of d8(a,b.billFactLock)){if(d.sameNameQuantities.some(a=>d5(d.value,a))||!d.foreignEntry)continue;if(1!==d.sameNameEntries.length){let a=[...new Set(d.sameNameEntries.map(a=>`${a.quantity}${a.unit}`))].slice(0,3).join("、");e.push(`“${d.name}”同名清单条目 ${d.sameNameEntries.length} 条(如 ${a} 等),正文 ${d.value}${d.unit} 无法确定性替换,交 LLM 定向修复`);continue}let b=d.sameNameEntries[0];if(d6(d.unit)!==d6(b.unit))continue;let f=(0,d2.Rd)({authorityOwner:d.name,bodyLocation:d.name,bodyWindow:a.slice(Math.max(0,d.valueStart-40),d.valueStart+d.valueText.length+40),found:`${d.value}${d.unit}`,authority:`${b.quantity}${b.unit}`,bindingKind:"sameName"});if(!f.allowed){e.push(`“${d.name}” ${d.value}${d.unit}→${b.quantity}${b.unit} 未过统一改写闸门(${f.reason}),保留检测不改正文`);continue}c.push({start:d.valueStart,end:d.valueStart+d.valueText.length,replacement:String(b.quantity),detail:`名称-数值绑定「${d.name}」 ${d.value}${d.unit}→${b.quantity}${b.unit}(清单条目「${d.name}」权威口径)`,binding:d.name})}if(0===c.length)return{replacements:[],falsePositiveGroups:d,noAnchorGroups:e,details:[]};let g=(0,s.gk)(a,c).markdown,h=new Set,i=await a9(g);if(!i.degraded){let a=new Set(i.groups.map(a=>a.concept));for(let b of new Set(c.filter(a=>a.concept).map(a=>a.concept)))a.has(b)&&(c.forEach((a,c)=>{a.concept===b&&h.add(c)}),e.push(`“${b}”锁值替换复检未清零,已回滚交 LLM 定向修复`))}let j=new Map;for(let a of c)a.location&&j.set(a.location,(j.get(a.location)||0)+1);if(j.size>0){let a=(0,s.mB)(g,b.specAuthorityMap),d=new Map;for(let b of a)b.replacement&&d.set(b.location,(d.get(b.location)||0)+1);for(let[a,b]of j)(d.get(a)||0)>=b&&(c.forEach((b,c)=>{b.location===a&&h.add(c)}),e.push(`“${a}”规格替换复检未减数,已回滚交 LLM 定向修复`))}let k=new Set(d8(g,b.billFactLock).filter(a=>1===a.sameNameEntries.length&&a.foreignEntry&&d6(a.unit)===d6(a.sameNameEntries[0].unit)&&!a.sameNameQuantities.some(b=>d5(a.value,b))).map(a=>a.name));for(let a of new Set(c.filter(a=>a.binding).map(a=>a.binding)))k.has(a)&&(c.forEach((b,c)=>{b.binding===a&&h.add(c)}),e.push(`“${a}”名称-数值绑定替换复检未清零,已回滚交 LLM 定向修复`));let l=[...new Set(c.filter((a,b)=>!h.has(b)).map(a=>a.detail))].slice(0,12);return{replacements:c.filter((a,b)=>!h.has(b)).map(a=>({start:a.start,end:a.end,replacement:a.replacement,detail:a.detail})),falsePositiveGroups:d,noAnchorGroups:e,details:l}}var ea=c(71001);let eb={type:"object",required:["conflicts"],properties:{conflicts:{type:"array",required:!0,items:{type:"object",required:!0,properties:{kind:{type:"string",required:!0},itemA:{type:"string",required:!0},itemB:{type:"string",required:!0},description:{type:"string",required:!0},confidence:{type:"number",required:!0}}}}}};async function ec(a,b={}){let c=function(a){let b=[];for(let c of a.split(/\r?\n/u)){let a=c.trim();if(a){if(/^\|/u.test(a)&&/[\d]/u.test(a)){b.push(a.slice(0,160));continue}if(!/^#{1,6}\s/u.test(a))for(let c of a.split(/(?<=[。;;])/u)){let a=c.trim();a.length>=6&&a.length<=160&&/[\d]/u.test(a)&&b.push(a)}}}let c=[...new Set(b)],d=function(){let a=process.env.DOCUMENT_CONSISTENCY_SAMPLE_LIMIT;if(void 0===a||""===a)return 120;if("0"===a)return 200;let b=Number(a);return Number.isFinite(b)&&b>0?Math.floor(b):120}();return c.length<=d?c:c.map((a,b)=>({sentence:a,index:b,density:(a.match(/[\d,]+(?:\.\d+)?/gu)||[]).length})).sort((a,b)=>b.density-a.density||a.index-b.index).slice(0,d).sort((a,b)=>a.index-b.index).map(a=>a.sentence)}(a);if(c.length<2)return{conflicts:[]};let d={},e=await (0,dr.bb)([(0,ad.y4)("你是施工组织设计数据一致性审查器。"),"给定全文含数值的句子/表格行清单(编号与内容),找出互相矛盾的数值对:\n- 同一口径必须一致而实际数值不同:劳动力峰值多处不一致、同一面积两处数字不同、总工期与分项工期冲突、同一节点日期两处不一致、表格合计与明细之和不等、人数\xd7工期与总工日不自洽;\n- 只报确定的矛盾(itemA 与 itemB 明确矛盾且置信度 ≥0.8),不得臆造;\n- 不同口径的数值不算矛盾:建筑面积 vs 占地面积、不同单位的表述;分阶段各期人数互比不算矛盾(各阶段人数不同是正常配置);\n- 但总量控制上限与分阶段峰值必须自洽:“高峰期总人数控制在X人/高峰总人数X人以内/控制在X人以下”与任何“高峰投入Y人/阶段高峰Y人/峰值Y人”(Y>X)构成矛盾,必须上报;\nitemA/itemB 必须是清单中真实出现的原文片段(逐字引用编号对应句子或表格行的关键片段,含数值)。\n只输出 JSON,不得输出其他内容。"].join("\n"),c.map((a,b)=>`${b+1}. ${a}`).join("\n"),{maxTokens:2500,temperature:0,signal:b.signal,diagnostics:b.diagnostics,schema:eb,taskKind:"structuredGeneration",outFailure:d});return e?{conflicts:(e.conflicts||[]).filter(a=>"string"==typeof a.itemA&&"string"==typeof a.itemB&&a.itemA.trim()&&a.itemB.trim()).filter(a=>(a.confidence??0)>=.7)}:{conflicts:[],failure:d.value||"LLM 未返回有效结果"}}var ed=c(22213),ee=c(3063);let ef=/两可|按图纸|资料[^。;;\n]{0,14}(?:未明确|两可|冲突)|支护[^。;;\n]{0,10}并存/u;async function eg(a){let{chapterDraftsFinal:b,progressStages:c,emitProgress:d}=a,e=a.globalConsistencyIssues,f=0,g=0;for(let a of b){let b=a.content.split(/\r?\n/u).length,c=(0,s.lR)(a.content),d=(0,s.QM)(c.markdown),e=(0,s.Vc)(d.markdown);b-e.markdown.split(/\r?\n/u).length>0&&(f+=c.removedCount+d.removedCount,g+=e.removedCount,a.content=e.markdown)}if(f>0||g>0){let a=b.map(a=>a.content).join("\n\n"),h=[...(0,s.ub)(a),...(0,s.cl)(a)].map(a=>`${a.message};${a.suggestion||""}`);e=[...new Set([...e.filter(a=>!/表格重复|段落完全重复/u.test(a)),...h])];let i=[f>0?`重复表格 ${f} 行`:"",g>0?`重复段落 ${g} 行`:""].filter(Boolean).join("、");(0,j.fx)(c,(0,j.X5)({type:"llm_review",roleId:"post-table-dedup",status:"success",message:`补表后确定性去重:${i}`},{subtitle:"表格执行率核验"})),d(b)}return e}async function eh(a,b){let{chapterDraftsFinal:c,template:d,repairPromptTexts:e,requirement:f,signal:h,generationDiagnostics:i,progressStages:l,emitProgress:m,withProgressHeartbeat:n,bidComposition:o}=a,p=a=>!b||!b.plannedChapterKeys.has((0,cj.YZ)(a.title)),q=c.filter(p).map(a=>({chapter:a,tableCount:(0,ad.ao)(a.content),blocks:(0,ad.wV)(a.content)})).filter(a=>a.tableCount>0);if(0===q.length)return{tableFixApplied:!1};let r=b?"无计划表格修复":"正文拆表修复",s=b?"本章未列入系统表格计划(正文表格须来自系统表格计划,不得自设)":"招标正文禁表(显式禁表句)";(0,j.fx)(l,(0,j.X5)({type:"llm_review",roleId:"table-execution-repair",status:"running",message:`${r}:${q.length} 个章节正文残留表格(${s})`},{subtitle:r})),m(c);let t=0,u=[],v=async a=>{let{chapter:c,tableCount:j,blocks:l}=a;return av({originalContent:c.content,repairRound:"table-execution-repair",diagnostics:i,beforeMetrics:[j],apply:async()=>{let a=await n(()=>(0,g.X6)(i,`body-table-dismantle:${c.id}`,()=>(0,g.l8)({template:d,chapter:{id:c.id,title:c.title,content:c.content,evidence:c.evidence||[],missingFacts:c.missingFacts||[],sections:c.sections},issues:[b?(0,k.zs)(j):(0,k.bh)(j)],promptTexts:e,requirement:f,forbidDrawingImages:!b||(0,k.kO)(o),bidComposition:o,diagnostics:i,signal:h,patchGuard:(0,g.XG)("table-execution-repair",i),anchorTexts:l.length>0?l:void 0,maxTokens:Math.min(12e3,Math.max(6e3,1600*l.length))})));return a.content&&a.content!==c.content?a.content:c.content},recheck:a=>[(0,ad.ao)(a)]})};(await Promise.allSettled(q.map(a=>v(a)))).forEach((a,b)=>{if("rejected"===a.status){if(h?.aborted)throw a.reason;u.push(`${q[b].chapter.title}:拆表修复异常(${a.reason instanceof Error?a.reason.message:"未知错误"})`);return}let c=a.value,{chapter:d}=q[b];if(c.rolledBack)return void u.push(`${d.title}:拆表后表格数不降反升,已回滚本轮修改`);c.content&&c.content!==d.content?(d.content=c.content,t+=1):u.push(`${d.title}:拆表 patch 未应用(${i?.llm.lastError||"无产出"})`)});let w=c.filter(p).reduce((a,b)=>a+(0,ad.ao)(b.content),0);return(0,j.fx)(l,(0,j.X5)({type:"llm_review",roleId:"table-execution-repair",status:w>0?"failed":"success",message:w>0?`${r}:${t} 章已改写,${b?"未授权章":"正文"}仍有 ${w} 处表格残留(终检门禁拦截)`:`${r}:${t} 章已改写,${b?"未授权章表格清零":"正文表格清零"}`,details:u},{subtitle:r})),m(c),{tableFixApplied:t>0}}async function ei(a){let{effectiveChapters:b,chapterDraftsFinal:c,template:d,repairPromptTexts:e,requirement:f,signal:h,generationDiagnostics:i,progressStages:l,emitProgress:m,withProgressHeartbeat:n}=a;if((0,k._C)(a.bidComposition))return eh(a);let o=new Set(b.filter(a=>(a.tablePlans?.length||0)>0||(a.tableSections?.length||0)>0||(a.diagramRequirements?.length||0)>0).map(a=>(0,cj.YZ)(a.title))),p=await eh(a,{plannedChapterKeys:o}),q=(0,c_.Xi)(b,c),r=p.tableFixApplied;if(q.length>0)for(let a=0;a<1&&q.length>0;a+=1){(0,j.fx)(l,(0,j.X5)({type:"llm_review",roleId:"table-execution-repair",status:"running",message:`表格执行率修复第 ${a+1} 轮(${q.length} 个章节缺表)`},{subtitle:"表格执行率修复"})),m(c);let k=0,o=[],p=q.flatMap(a=>{let b=c.find(b=>b.title===a.chapterTitle||a.chapterTitle.includes(b.title)||b.title.includes(a.chapterTitle));return b?[{gap:a,draft:b}]:[]}),s=async a=>{let{gap:j,draft:k}=a,l=[...new Set(j.plans.map(a=>a.section).filter(Boolean))],m=l.length>0?k.evidence.filter(a=>{let b=a.sectionTitle;return!b||l.some(a=>b===a||b.includes(a)||a.includes(b))}):k.evidence,o={id:k.id,title:k.title,content:k.content,evidence:m.length?m:k.evidence,missingFacts:k.missingFacts||[],sections:k.sections},p=`计划表格缺失(本章计划 ${j.planned} 张,正文实际检出 ${j.actual} 张):${j.plans.map(a=>`${a.title}(表头:${a.fields.map(a=>a.name).join("、")})`).join(";")}。必须按表头字段补齐这些 markdown 表格并紧跟相关小节输出,不得删除已有正文;每个表格前须有 1~2 句引导叙述说明表格作用与关键结论,表格不能替代小节正文;表格内项目特有数字、日期、工程量、规格必须来自项目资料或项目图谱,不得编造;人数、台班、进度时间等计划类数值必须原样引用蓝图权威锚点(劳动力峰值、工种构成、分阶段投入、机械台数、总工期节点),不得基于工程量或定额自行推算另设,不得留空、不得写“按需配置”等空话。`;return av({originalContent:k.content,repairRound:"table-execution-repair",diagnostics:i,beforeMetrics:[j.plans.length],apply:async()=>{let a=await n(()=>(0,g.X6)(i,`table-execution-repair:${k.id}`,()=>(0,g.l8)({template:d,chapter:o,issues:[p],promptTexts:e,requirement:f,forbidDrawingImages:!0,diagnostics:i,signal:h,patchGuard:(0,g.XG)("table-execution-repair",i),maxTokens:Math.min(12e3,Math.max(6e3,1200*j.plans.length))})));return a.content&&a.content!==k.content?a.content:k.content},recheck:a=>{let d=c.map(b=>b.id===k.id?{title:b.title,content:a,sections:b.sections}:b);return[(0,c_.Xi)(b,d).filter(a=>a.chapterTitle===k.title||a.chapterTitle===j.chapterTitle||k.title.includes(a.chapterTitle)||a.chapterTitle.includes(k.title)).reduce((a,b)=>a+b.plans.length,0)]}})},t=await Promise.allSettled(p.map(a=>s(a))),u=new Set;if(t.forEach((a,b)=>{if("rejected"===a.status){if(h?.aborted)throw a.reason;o.push(`${p[b].gap.chapterTitle}:修复异常(${a.reason instanceof Error?a.reason.message:"未知错误"})`);return}let c=a.value,{gap:d,draft:e}=p[b];if(c.rolledBack)return void o.push(`${d.chapterTitle}:修复后计划表格缺口增多,已回滚本轮修改`);c.content&&c.content!==e.content&&!u.has(e.id)?(e.content=c.content,u.add(e.id),k+=1):u.has(e.id)||o.push(`${d.chapterTitle}:缺 ${d.plans.map(a=>a.title).join("、")}(${i?.llm.lastError||"补表 patch 未应用"})`)}),0===k){(0,j.fx)(l,(0,j.X5)({type:"llm_review",roleId:"table-execution-repair",status:"failed",message:`表格执行率修复第 ${a+1} 轮:补表 patch 未应用(${q.length} 个章节缺表)`,details:o},{subtitle:"表格执行率修复"})),m(c);break}r=!0,m(c),q=(0,c_.Xi)(b,c),(0,j.fx)(l,(0,j.X5)({type:"llm_review",roleId:"table-execution-repair",status:q.length>0?"failed":"success",message:q.length>0?`表格执行率修复第 ${a+1} 轮完成,仍有 ${q.length} 个章节缺表`:`表格执行率修复第 ${a+1} 轮完成`},{subtitle:"表格执行率修复"})),(0,j.fx)(l,(0,j.X5)({type:"llm_review",roleId:"table-execution-review",status:q.length>0?"failed":"success",message:q.length>0?`表格执行率复检:仍有 ${q.length} 个章节缺表`:"表格执行率复检通过"},{subtitle:"表格执行率核验"}))}return{tableFixApplied:r}}function ej(a,b){if(!b)return!1;let c=/^##\s+(.+?)\s*$/mu.exec(a.content)?.[1];return b===a.title||b===c||a.content.includes(b)}async function ek(a){let{chapterDraftsFinal:b,template:c,repairPromptTexts:d,requirement:e,signal:f,generationDiagnostics:h,progressStages:i,emitProgress:k,withProgressHeartbeat:l,bidComposition:m}=a,n=!1;for(let a=0;a<2;a+=1){let o=b.map(a=>a.content).join("\n\n"),p=await (0,cI.Bt)(o),q=await (0,cI.gE)(o),r=p.fillerSentences>0,s=q.countermeasures>0&&q.ratio<.5,t=(0,cl.P_)(o),u=(0,cl.C4)(o),v=(0,cl.p5)(o),w=(0,cl.uj)(o),x=dM(b),y=t.length>0,z=u.length>0,A=v.length>0,B=w.length>0,C=x.length>0;if(!r&&!s&&!y&&!z&&!A&&!B&&!C)break;let D=r?await dL(b):[];C&&D.push(...x);let E=D.length>0?dN(b,D):{deletedCount:0,deletedSentences:[],remaining:D};E.deletedCount>0&&console.error(`[gen][templating] 零信息句(口号/前缀)确定性删除 ${E.deletedCount} 处:${E.deletedSentences.slice(0,3).join(" / ")}${E.deletedSentences.length>3?" 等":""}`);let F=b.map(a=>a.content).join("\n\n"),G=new Map(b.map(a=>[a.id,a.content])),H=(s?q.entries.filter(a=>!a.attributed||!a.quantified).slice(0,20):[]).flatMap(a=>{let c=a.text.replace(/\s+/gu,""),d=b.find(a=>a.content.replace(/\s+/gu,"").includes(c));return d?[{chapter:d,text:a.text,missingAttribution:!a.attributed,missingTarget:!a.quantified}]:[]}),I=b.flatMap(a=>{let b=E.remaining.filter(b=>(b.chapterId||b.chapterTitle)===(a.id||a.title)),c=b.filter(a=>"prefix"!==a.channel).map(a=>a.sentence),d=b.filter(a=>"prefix"===a.channel).map(a=>a.sentence),e=H.filter(b=>b.chapter.id===a.id).map(a=>({text:a.text,missingAttribution:a.missingAttribution,missingTarget:a.missingTarget})),f=t.filter(b=>ej(a,b.chapterTitle)),g=u.filter(b=>ej(a,b.chapterTitle)),h=v.filter(b=>ej(a,b.chapterTitle)),i=w.filter(b=>ej(a,b.chapterTitle));return c.length>0||d.length>0||e.length>0||f.length>0||g.length>0||h.length>0||i.length>0?[{chapter:a,sentences:c,prefixSentences:d,difficulty:e,frames:f,flows:g,patterns:h,titles:i}]:[]});if(0===I.length){E.deletedCount>0&&(n=!0,(0,j.fx)(i,(0,j.X5)({type:"llm_review",roleId:"templating-repair",status:"success",message:`模板化修复第 ${a+1} 轮:确定性删除零信息句(口号/前缀)${E.deletedCount} 处(无剩余重写目标)`},{subtitle:"模板化修复"})),k(b));break}let J=[r?`套话句占比 ${(100*p.ratio).toFixed(1)}%${E.deletedCount>0?`(已确定性删除零信息句 ${E.deletedCount} 处)`:""}`:"",C?`模板化前缀句 ${x.length} 处`:"",s?`重难点双达标 ${(100*q.ratio).toFixed(0)}%`:"",y?`骨架指纹 ${t.length} 组`:"",z?`工序形式 ${u.length} 处`:"",A?`句模复读 ${v.length} 处`:"",B?`标题缺陷 ${w.length} 处`:""].filter(Boolean).join("、");(0,j.fx)(i,(0,j.X5)({type:"llm_review",roleId:"templating-repair",status:"running",message:`模板化修复第 ${a+1} 轮:${J}(${I.length} 章)`},{subtitle:"模板化修复"})),k(b);let K=0,L=async a=>{let b=[];a.sentences.length>0&&b.push(`第 1~${a.sentences.length} 条目标原文是本章已检出的空话套话句(零信息纯口号句已由系统确定性删除,此处为含信息或合规承诺类命中句):逐条原地改写为“责任岗位 + 执行动作 + 量化标准 + 检查频次 + 整改时限”式可核查措施,且每条改写句必须嵌入不少于 2 个项目实体(村名/工程量/规格,取自本章证据摘要);禁止以同义空话替换、禁止改写清单外内容、不得凭空编造数值;属必须保留的合规承诺句须具体化到可核查。`);let i=a.sentences.length+1;if(a.prefixSentences.length>0){let c=a.prefixSentences.map(()=>{let a=i;return i+=1,a});b.push(`第 ${c.join("、")} 条目标原文是模板化前缀导语句(句首为“本节/本章将/以下从”式元话语):删除前缀后直接从作业对象、执行动作、量化措施切入改写,句内工程信息(数值/规格/岗位/频次)必须全部保留;禁止以同义导语替换。`)}for(let c of a.difficulty){let a=[c.missingAttribution?"归因句(该难点的成因/风险来源)":"",c.missingTarget?"量化控制目标(数值+单位,来自本章证据摘要或行业规范,不得编造)":""].filter(Boolean).join("与");b.push(`第 ${i} 条目标原文是重难点分析条目,缺少${c.missingAttribution&&c.missingTarget?"成因归因与量化控制目标":a}:保留条目原有事实与数值,在其内补充${a}。`),i+=1}for(let c of a.frames){let a=c.sentences.map(()=>{let a=i;return i+=1,a});b.push(`第 ${a.join("、")} 条目标原文含全篇复读骨架「${c.fingerprintLabel}」(全篇 ${c.totalCount} 处,验收上限 ${c.cap} 处):逐句改写为差异化句式(每条句子的动词与语序不得雷同,禁止集中复用同一替换说法),保留原句全部事实信息(岗位、数值、频次不得丢失)。`)}for(let c of a.flows)b.push(`第 ${i} 条目标原文是小节标题,其所在小节「${c.blockTitle}」的工序顺序表达当前为【${c.currentForm}】形式且与相邻小节同形式:将该小节的工序顺序表达改写为【${c.targetForm}】形式,内容与数值保持不变(工艺参数不得删减)。`),i+=1;for(let c of a.patterns){let a=c.sentences.map(()=>{let a=i;return i+=1,a});b.push(`第 ${a.join("、")} 条目标原文是同一句式模版在全篇复读的句子(该句式全篇 ${c.totalCount} 处,全篇保留额度 ${c.cap} 处):逐句改写为自然多样表达(变换句式结构与连接词组织,或拆分为多句;各句改写方向须彼此不同,禁止集中复用同一替换句式),保持原句全部工序顺序、数值与验收事实不变。`)}for(let c of a.titles)b.push(`第 ${i} 条目标原文是小节标题(${c.reason}):将该小节标题重命名为完整表达本小节内容的正式名称,正文内容不变;禁止使用“施工概况/施工流程/施工方法”等结构标签词充当标题。`),i+=1;return b.push("清单之外的内容一律不得改动;不得删除任何小节标题、表格与数值参数。"),l(()=>(0,g.X6)(h,`templating-repair:${a.chapter.id}`,()=>(0,g.l8)({template:c,chapter:{id:a.chapter.id,title:a.chapter.title,content:a.chapter.content,evidence:a.chapter.evidence||[],missingFacts:a.chapter.missingFacts||[],sections:a.chapter.sections},issues:[b.join("\n")],promptTexts:d,requirement:e,forbidDrawingImages:!0,bidComposition:m,diagnostics:h,signal:f,patchGuard:(0,g.XG)("templating-repair",h),anchorTexts:[...a.sentences,...a.prefixSentences,...a.difficulty.map(a=>a.text),...a.frames.flatMap(a=>a.sentences),...a.flows.map(a=>a.blockTitle),...a.patterns.flatMap(a=>a.sentences),...a.titles.map(a=>a.title)],maxTokens:6e3,evidenceChars:5e3})))},M=await av({originalContent:F,repairRound:"templating-repair",diagnostics:h,beforeMetrics:[p.ratio,q.ratio,t.length,u.length,w.length,(0,cI._Q)(o).length,v.length],apply:async()=>((await Promise.allSettled(I.map(a=>L(a)))).forEach((a,b)=>{if("rejected"===a.status){if(f?.aborted)throw a.reason;console.error("[gen] templating repair failed:",a.reason);return}let c=a.value,{chapter:d}=I[b];c.content&&c.content!==d.content&&(d.content=c.content,K+=1)}),k(b),b.map(a=>a.content).join("\n\n")),recheck:async a=>{let b=await (0,cI.Bt)(a),c=await (0,cI.gE)(a);return[b.ratio,c.ratio,(0,cl.P_)(a).length,(0,cl.C4)(a).length,(0,cl.uj)(a).length,(0,cI._Q)(a).length,(0,cl.p5)(a).length]},shouldRollback:(a,b)=>b[0]>a[0]+.01&&!(b[1]>a[1]+.01)||b.slice(2).reduce((a,b)=>a+b,0)>a.slice(2).reduce((a,b)=>a+b,0)});if(0===K&&0===E.deletedCount){(0,j.fx)(i,(0,j.X5)({type:"llm_review",roleId:"templating-repair",status:"failed",message:`模板化修复第 ${a+1} 轮:修复 patch 未落地(${I.length} 章锚点失配或 LLM 未产出)`,details:[`未收敛维度:${J}`]},{subtitle:"模板化修复"}));break}if(M.rolledBack){for(let a of b){let b=G.get(a.id);void 0!==b&&(a.content=b)}(0,j.fx)(i,(0,j.X5)({type:"llm_review",roleId:"templating-repair",status:"failed",message:`模板化修复第 ${a+1} 轮:修复后指标变差已回滚本轮修改(套话 ${(100*M.beforeMetrics[0]).toFixed(1)}%→${(100*M.afterMetrics[0]).toFixed(1)}%,治理缺陷目标 ${M.beforeMetrics.slice(2).reduce((a,b)=>a+b,0)}→${M.afterMetrics.slice(2).reduce((a,b)=>a+b,0)})`,details:["LLM 重写未收敛,回滚保留修复前正文"]},{subtitle:"模板化修复"})),k(b);break}n=!0}if(n){let a=b.map(a=>a.content).join("\n\n"),c=await (0,cI.Bt)(a),d=await (0,cI.gE)(a),e=(0,cl.P_)(a),f=(0,cl.C4)(a),g=(0,cl.p5)(a),h=(0,cl.uj)(a),l=(0,cI._Q)(a),m=c.ratio<.1&&(!d.heavyTemplated||0===d.countermeasures)&&0===e.length&&0===f.length&&0===g.length&&0===h.length&&0===l.length,n=[e.length>0?`骨架指纹 ${[...new Set(e.map(a=>`${a.fingerprintLabel}\xd7${a.totalCount}`))].join("、")}`:"",f.length>0?`工序形式相邻重复 ${f.length} 处`:"",g.length>0?`句模复读 ${[...new Set(g.map(a=>`${a.patternLabel}\xd7${a.totalCount}`))].join("、")}`:"",h.length>0?`标题缺陷 ${h.length} 处`:"",l.length>0?`模板化前缀句 ${l.length} 处`:""].filter(Boolean).join(";");(0,j.fx)(i,(0,j.X5)({type:"llm_review",roleId:"templating-repair",status:m?"success":"failed",message:`模板化修复完成:套话句占比 ${(100*c.ratio).toFixed(1)}%(达标线 ≤10%),重难点归因+量化双达标 ${(100*d.ratio).toFixed(0)}%(达标线 ≥50%)${n?`,模板化残留:${n}`:""}`,details:m?[]:["未完全收敛:残留项先由确定性修复链(终检前)收敛;复核未清零的残留经终检检测器判定,仍不达标即列入终检复核清单(不阻断导出,宁缺毋假)"]},{subtitle:"模板化修复"})),k(b)}return{templatingFixApplied:n}}async function el(a){let{chapterDraftsFinal:b,projectContext:c,template:d,repairPromptTexts:e,requirement:f,signal:h,generationDiagnostics:i,progressStages:k,emitProgress:l,withProgressHeartbeat:m,bidComposition:n}=a,o=/^#{3,4}\s+(?:\d+(?:\.\d+)*\s+)?(?:项目主要施工\s*内容|主要施工\s*内容|主要分部分项工程施工方案|主要分部分项施工方案|主要施工方法)\s*$/u,p=!1,q=0,r=0,s=(0,ed.sh)(c,b.flatMap(a=>a.evidence||[]));if(s.length>0){let a=/项目主要施工内容|主要施工内容|主要分部分项工程施工方案|主要分部分项施工方案|主要施工方法/u;for(let c of b){if(c.content.split("\n").some(a=>o.test(a.trim())))continue;let d=(c.sections||[]).find(b=>a.test(b));if(!d)continue;Array.isArray(c.sections)||(c.sections=[]);let e=c.sections.findIndex(b=>a.test(b)),f=e>=0?e+1:c.sections.length+1,g=`### ${b.indexOf(c)+1}.${f} ${d}`;c.content=`${c.content.replace(/\s+$/u,"")}
|
|
161
|
+
返回 JSON:{"issues":[]}`,{maxTokens:1e3,temperature:0,signal:a.signal,diagnostics:a.diagnostics,contextLayers:{l0:i.length,l1:(0,dr.CX)([a.promptTexts]),l3:(0,dr.CX)([b,'\n\n返回 JSON:{"issues":[]}'])},prefixKey:"review-global-consistency"})))).flatMap(a=>Array.isArray(a?.issues)?a.issues:[]).map(du).filter(Boolean))];return{issues:k,stage:(0,j.X5)({type:"llm_review",roleId:"global-consistency-review",status:k.length>0?"failed":"success",message:k.length>0?`全局一致性审查完成:发现 ${k.length} 个跨章问题`:"全局一致性审查通过"},{subtitle:"全局一致性审查"})}}var dx=c(33409),dy=c(21702),dz=c(13145),dA=c(18274);let dB=[{pattern:/本小节围绕.+展开,结合绑定项目资料/u,label:"模板化开篇套话"},{pattern:/明确适用范围、控制目标、责任岗位与过程要求/u,label:"泛化目标罗列"},{pattern:/实施前应完成资料核对、技术交底和作业条件确认/u,label:"泛化前置条件"},{pattern:/交底覆盖率按\s*100%?\s*控制/u,label:"空泛交底承诺"},{pattern:/关键问题在\s*24\s*小时内形成整改责任/u,label:"空泛整改时限"},{pattern:/按施工准备→过程实施→检查验收→问题整改→资料归档的闭环组织/u,label:"通用闭环套话"},{pattern:/按作业条件确认→技术交底→过程实施→自检互检→整改复查/u,label:"通用流程套话"},{pattern:/依据本项目已确认资料中的项目边界/u,label:"资料依据套话"},{pattern:/执行日巡查、周复核和节点验收制度/u,label:"泛化巡查制度"},{pattern:/一般问题\s*7\s*日内闭环/u,label:"泛化整改时限"},{pattern:/由项目经理、技术负责人和专职安全员联合复核/u,label:"岗位名单堆砌"},{pattern:/确保与总体施工部署、工期计划和验收要求保持一致/u,label:"原则性呼应"},{pattern:/结合现场实际情况(?:,|,)?合理(?:组织|安排|布置|配置)/u,label:"结合实际套话"},{pattern:/严格(?:执行|落实|按照)国家(?:现行)?(?:有关)?(?:规范|标准|规程)/u,label:"规范泛引用"},{pattern:/做到(?:文明施工|安全生产|质量第一|安全第一)/u,label:"口号式承诺"},{pattern:/(?:确保|保证)工程(?:质量|安全|进度|文明施工)/u,label:"目标口号"},{pattern:/建立(?:健全)?(?:完善)?(?:的)?(?:管理)?体系(?:和|,)?(?:落实|确保|保证)/u,label:"体系空话"}],dC=RegExp(dB.map(a=>`(?:${a.pattern.source})`).join("|"),"u"),dD=["本小节围绕以下内容展开并结合绑定项目资料","明确适用范围控制目标责任岗位与过程要求","实施前应完成资料核对技术交底和作业条件确认","交底覆盖率按100%控制","关键问题在24小时内形成整改责任","按施工准备过程实施检查验收问题整改资料归档的闭环组织","依据本项目已确认资料中的项目边界","执行日巡查周复核和节点验收制度","一般问题7日内闭环","由项目经理技术负责人和专职安全员联合复核","确保与总体施工部署工期计划和验收要求保持一致","结合现场实际情况合理组织安排","严格执行国家现行有关规范标准","做到文明施工安全生产质量第一","确保工程质量和安全进度","建立健全管理体系并落实相关制度"],dE=["每道工序完成后由质检员实测实量并记录数据","混凝土浇筑完成后每天洒水养护不少于两次","每周组织不少于一次的现场安全专项检查"];async function dF(a){return(0,b6.A)({prototypes:[...dD],negativePrototypes:[...dE],lexicalHints:dC,embedDocuments:a})}let dG=[/主要分部分项工程施工方案/u,/主要施工方法/u,/主要施工内容/u,/施工方案/u],dH=/(?:建筑面积|面积|总建筑面积)[约]?\s*\d+(?:\.\d+)?\s*(?:㎡|m²)|计划工期\s*\d+|日历天|地上\s*\d+\s*层|框架结构|质量标准[::]?\s*合格/giu;function dI(a){let b=a.split("\n"),c=[],d="",e=[];for(let a of b){let b=/^#{3,4}\s+(.+)$/u.exec(a.replace(/[\u200b-\u200f\u2060\ufeff]/gu,"").trim());b?((d||e.length>0)&&c.push({heading:d,body:e.join("\n")}),d=b[1].trim(),e=[]):e.push(a)}return(d||e.length>0)&&c.push({heading:d,body:e.join("\n")}),c}function dJ(a){let b=[],c=new Map;for(let b of a)for(let a of dI(b.content)){let d=a.heading||b.title;for(let e of a.body.replace(/^#{1,6}\s+.*$/gmu,"").replace(/^\s*\|.*\|\s*$/gmu,"").replace(/^\s*[-|]\s*$/gmu,"").replace(/^\s*\[.*?\]\(.*?\)\s*$/gmu,"").split(/\n{1,}/u).map(a=>a.trim()).filter(a=>a.length>=60&&a.length<=400&&!/^\s*[-*]\s+/u.test(a))){let a=e.replace(/[,。,.;;::、()()【】[\]《》“”"'`\s]/gu,"");if(a.length<60)continue;let f=c.get(a)||[];f.some(a=>a.chapter===b.title&&a.section===d)||f.push({chapter:b.title,section:d}),c.set(a,f)}}let d=new Set;for(let[a,e]of c){let c=e.filter((a,b,c)=>c.findIndex(b=>b.chapter===a.chapter&&b.section===a.section)===b);if(c.length<2)continue;let f=c.map(a=>`${a.chapter}::${a.section}`).sort().join("|");if(d.has(f))continue;d.add(f);let g=e[0],h=g?`(如:${g.section} 中「${a.slice(0,30)}…」)`:"";if(b.push({level:c.length>=3?"error":"warning",severity:c.length>=3?"blocker":"warning",message:`发现相同段落出现在 ${c.length} 个不同小节:${c.map(a=>a.section).slice(0,6).join("、")}${h}`,suggestion:"每个小节必须针对其标题写专属内容,不得复制粘贴相同段落;重复小节应合并或删除后重写。"}),b.length>=8)break}return b}async function dK(a,b){let c=[],d=await dF(b);for(let b of a){let a=dI(b.content),e=[];for(let b of a){let a=b.body.split(/\n/u).filter(a=>!(0,cI.X9)(a)).flatMap(a=>a.split(/[。;;]/u)).map(a=>a.trim()).filter(a=>a.length>=12);if(0===a.length)continue;let c=await d(a);a.forEach((a,b)=>{if(c[b])for(let{pattern:b,label:c}of dB)b.test(a)&&!e.includes(c)&&e.push(c)})}e.length>=3?c.push({level:"error",severity:"blocker",message:`${b.title} 存在大量模板化空话(${e.slice(0,6).join("、")})`,suggestion:'删除"本小节围绕…展开""按100%控制"式套话,按"责任岗位+执行动作+量化标准+检查频次+整改时限"重写。'}):e.length>0&&c.push({level:"warning",severity:"warning",message:`${b.title} 存在模板化空话:${e.join("、")}`,suggestion:"替换为具体量化做法;同一小节不得重复出现套话段落。"})}return c}async function dL(a,b){let c=[];for(let d of a){let a=[],e=d.title;for(let b of d.content.split("\n")){let c=/^#{3,4}\s+(.+)$/u.exec(b.replace(/[\u200b-\u200f\u2060\ufeff]/gu,"").trim());if(c){e=c[1].trim();continue}if(!(0,cI.X9)(b))for(let c of b.split(/[。;;]/u)){let b=c.trim();b.length>=12&&a.push({sentence:b,section:e})}}if(0===a.length)continue;let f=await (0,cI.w7)(a.map(a=>a.sentence),b),g=await dF(b),h=await g(a.map(a=>a.sentence)),i=0,j=new Set;for(let b=0;b<f.length;b+=1){let e=f[b];if(!e.filler&&!h[b]||j.has(e.sentence)||i>=12)continue;j.add(e.sentence),i+=1;let g=e.semantic?"semantic":e.vague?"vague":"paragraph";c.push({chapterId:d.id,chapterTitle:d.title,section:a[b].section,sentence:e.sentence,channel:g})}if(c.length>=60)break}return c.slice(0,60)}function dM(a){let b=[];for(let c of a){let a=c.title,d=0;for(let e of c.content.split("\n")){let f=/^#{3,4}\s+(.+)$/u.exec(e.replace(/[\u200b-\u200f\u2060\ufeff]/gu,"").trim());if(f){a=f[1].trim();continue}let g=e.replace(/[\u200b-\u200f\u2060\ufeff]/gu,"");if(!/^\s*#{1,6}\s/u.test(g)&&!(0,cI.X9)(e)){for(let f of e.split(/[。;;]/u)){let e=f.trim();if(!(e.length<12)&&(0,cI.e1)(e)){if(d>=12||b.length>=60)break;d+=1,b.push({chapterId:c.id,chapterTitle:c.title,section:a,sentence:e,channel:"prefix"})}}if(d>=12||b.length>=60)break}}if(b.length>=60)break}return b}function dN(a,b){let c=[],d=[],e=0;for(let f of b){let b=f.chapterId||f.chapterTitle,g=a.find(a=>(a.id||a.title)===b),h="semantic"===f.channel||"prefix"===f.channel||"paragraph"===f.channel;if(!g||!h||!(0,cI.W0)(f.sentence)){d.push(f);continue}let i=g.content.split("\n"),j=function(a,b){let c=b.replace(/[。;;]\s*$/u,"").trim();if(c.length<12)return 0;let d=c.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&"),e=RegExp(`[\\s\\u3000]*${d}[\\s\\u3000]*[。;;]`,"gu"),f=RegExp(`[\\s\\u3000]*${d}[\\s\\u3000]*$`,"u"),g=0;for(let b=a.length-1;b>=0;b-=1){let d=a[b];if((0,cI.X9)(d)||!d.includes(c))continue;let h=d.match(e),i=h&&h.length>0?d.replace(e,""):d.replace(f,"");i!==d&&(g+=h&&h.length>0?h.length:1,""===i.trim()?a.splice(b,1):a[b]=i)}return g}(i,f.sentence);j>0?(g.content=i.join("\n").replace(/\n{3,}/gu,"\n\n"),e+=j,c.includes(f.sentence)||c.push(f.sentence)):d.push(f)}return{deletedCount:e,deletedSentences:c,remaining:d}}function dO(a){let b=[];for(let c of a)for(let a of dI(c.content)){if(!dG.some(b=>b.test(a.heading)||b.test(c.title))||/(?:方案管理|管理程序|管理流程|管理制度|审批流程)/u.test(a.heading))continue;let d=new Set(a.body.match(dA.aX)||[]),e=new Set(a.body.match(dH)||[]),f=new Set(a.body.match(dA.LT)||[]),g=a.body.length;if(g<400)continue;let h=d.size/(g/1e3),i=/拆除|清理|清底|清运|弃置|运输|搬运/u.test(a.heading);if(0===d.size){if(f.size>=6){b.push({level:"warning",severity:"warning",message:`${c.title} / ${a.heading} 以设备配置参数为主:设备型号/容量参数 ${f.size} 项,工艺参数待补充`,suggestion:"设备清单型小节保留型号规格参数即可;如补充安装工艺(试验压力、坡度、间距、偏差),应同步写入工艺参数与验收节点。"});continue}if(i){b.push({level:"warning",severity:"warning",message:`${c.title} / ${a.heading} 以工程量与保护措施为主,建议补充拆除深度偏差、保护挑网宽度、警戒距离等参数`,suggestion:"拆除类作业补充拆除厚度偏差(mm)、防护挑网/安全网宽度(m)、警戒区距离(m)等安全与技术参数即可,不强制 mm/MPa 级工艺参数。"});continue}b.push({level:"error",severity:"blocker",message:`${c.title} / ${a.heading} 无工艺参数:全文只有概况性数字,缺乏 mm/MPa/间距/偏差/试验压力等工艺级参数`,suggestion:"必须写入工艺参数(如桩位偏差≤50mm、搭接宽度≥100mm、闭水试验48h),参数来自绑定资料或行业规范值。"})}else h<(i?.3:dy.J5)&&b.push({level:"warning",severity:"warning",message:`${c.title} / ${a.heading} 工艺参数密度偏低:每千字 ${d.size} 个工艺参数(概况数字 ${e.size} 个)`,suggestion:"增加工艺级参数落位;概况数字(面积、工期、层数)不能替代工艺参数。"})}return b}function dP(a){let b=[];for(let c of a){let a=c.content.split("\n");for(let d=0;d<a.length;d+=1){let e=a[d].trim();if(!/^#{3}\s+[^\n]*(?:主要分部分项工程施工方案|主要施工方法)/u.test(e))continue;let g=a.length;for(let b=d+1;b<a.length;b+=1)if(/^#{2,3}\s+/u.test(a[b].trim())){g=b;break}let h=a.slice(d+1,g).join("\n").split(/^####\s+/gmu).slice(1).map(a=>a.trim()).filter(Boolean);if(0===h.length)continue;let i=h.filter(a=>!(0,f.az)(a));i.length>0&&b.push({level:"error",severity:"blocker",message:`${c.title} / ${e.replace(/^#{3}\s+(?:\d+(?:\.\d+)*\s+)?/u,"")} 有 ${i.length}/${h.length} 个分部分项内容要素不全(作业对象与工程量/工序顺序/施工方法至少缺一)`,suggestion:"每个分项方案需覆盖作业对象与工程量、工序安排、施工方法三方面要素,融入连贯段落叙述(禁止以“施工概况/工艺流程/施工方法”等结构标签充当标题或段落开头引导);工序顺序表达须先后清晰(相邻小节不得同句式开头,同一句式全文不得反复使用,禁止以固定句模复读)。"})}}return b}async function dQ(a,b="",c){return[...dJ(a),...await dK(a,c),...dO(a),...dP(a),...function(a,b=""){let c=[],d=(b||a.map(a=>a.content).join("\n\n")).split("\n"),e=0,f=0;for(;f<d.length;){let a=d[f].trim();if(!/^\|.+\|$/u.test(a)){f+=1;continue}let b=[];for(;f<d.length&&/^\|.+\|$/u.test(d[f].trim());)b.push(d[f].trim()),f+=1;if(b.length<3)continue;e+=1;let g=b[0].split("|").length-2,h=b.filter((a,b)=>0!==b&&a.replace(/\|/gu,"").replace(/[\s\-:]/gu,"").length>0),i=h.reduce((a,b)=>a+b.split("|").slice(1,-1).map(a=>(0,dz.jG)(a.trim())).filter(a=>""===a||"-"===a||"—"===a||"/"===a).length,0),j=h.length*Math.max(1,g);if(i>0&&i/Math.max(1,j)>=.4&&c.push({level:"warning",severity:"warning",message:`第 ${e} 个表格存在 ${i} 个空单元格(${h.length} 行),表格信息不完整`,suggestion:"表格每一列都必须填写,缺失字段应从资料补齐;无法确认的字段应删除该行而非留空。"}),c.length>=5)break}return c}(a,b)]}function dR(a,b){let c=new Set([b?.projectName,...b?.fingerprint?.projectNames||[]].filter(Boolean));return(b?.contaminationCandidates||[]).reduce((a,b)=>!b||b.length<6||c.has(b)?a:a.replace(RegExp(b.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&"),"gu"),"本项目工程"),a)}let dS=[{title:"项目特点、重点、难点分析",minChars:1800},{title:"项目主要施工内容",minChars:2200},{title:"主要分部分项工程施工方案",minChars:1200,blockerMinChars:800},{title:"主要施工方法",minChars:2200},{title:"危大工程专项施工方案审批流程",minChars:500,blockerMinChars:250},{title:"原材料进场复试与见证取样",minChars:600,blockerMinChars:300}];async function dT(a){let{documentSpec:b,validationIssues:c,factsModel:d,finalChapterDrafts:e,finalMarkdown:g,template:h,promptBindings:j,promptDocumentRules:k,projectMaterialSummary:l,domainProfile:m,structuredFacts:p,documentBudget:q,scopeConflicts:r,evaluationCriteriaItems:t,effectiveChapters:u,tenderRequirements:v,requirementsSimilarity:w,factTokenScopeClassifier:x,professionalDepthClassifier:y,blueprintData:z,billFactLock:A,drawingFactLock:B,bodyTableForbidden:C,bodyFigureForbidden:D,identityMarksForbidden:E,coverForbidden:F}=a;return di((0,o.yT)("spec-gate-rules",()=>(0,af.kQ)(b,c,d,e,g,h.projectBindings||[],j)),(0,o.yT)("auto-spec-validation",()=>(function(a){let b=[],c=a.markdown||"";for(let e of a.spec.factFields.filter(a=>a.required)){var d;!((d=e.name).length<4||V(d))&&/\d|GB|JGJ|C\d|HRB|DN|mm|MPa|kPa|工期|质量|安全|项目名称|工程名称|招标人|建设地点|建筑面积|结构形式|层数/u.test(d)&&!X(c,e.name)&&b.push({level:"info",message:`正文可能未显式覆盖“${e.name}”`,suggestion:"建议检查对应章节是否已自然表达该事实。"})}let e=a.summary.facts.projectName;!e||"当前知识库项目"===e||V(e)||X(c,e)||b.push({level:"warning",message:"正文未明显体现关键对象名称",suggestion:"建议在概况、背景或首页标题中体现当前文档的关键对象名称。"});let f=a.summary.facts.documentNo;for(let a of(f&&!c.includes(f)&&b.push({level:"info",message:"正文未体现文档/任务编号",suggestion:"如文档需要编号,请在概况、背景或首页信息中补充。"}),["知识库证据","资料类型","提示词角色","文档规范包","规范包","后台自动规范","后台优化建议","基础事实候选","材料未提供","未检索到"]))(function(a,b){let c=Y[b];if(!c)return a.includes(b);let d=0;for(;;){let e=a.indexOf(b,d);if(e<0)return!1;let f=a[e+b.length]||"";if(f&&c.test(f)){d=e+b.length;continue}return!0}})(c,a)&&b.push({level:"error",message:`正文包含后台流程话术:${a}`,suggestion:"请重新生成或在审查阶段删除后台流程描述。"});return b})({markdown:g,spec:b,summary:l})),(0,o.yT)("fact-consistency",()=>(function(a){let b=a.profile||Z.p4,c=[],d=new Map;for(let c of a.facts){let a=c.fieldName||c.key;!(!a||!function(a,b){let c=(0,Z.oC)(b,a);return c?"single"===c.cardinality&&"allow_multiple"!==c.conflictPolicy&&"ignore"!==c.conflictPolicy:/项目名称|工程名称|招标人|建设地点|建筑面积|结构形式|层数|工期|质量标准|合同价格形式|绿色建筑等级|投标有效期|质保期/u.test(a)}(a,b)||aa.test(a)&&ab.test(c.roleId||""))&&ac(String(c.value),b,a)&&d.set(a,[...d.get(a)||[],{value:String(c.value),source:c.sourceFile}])}for(let[a,e]of d){let d=new Map;for(let c of e){let e=ac(c.value,b,a);if(!e)continue;let f=(0,$.EI)((0,$.LD)(e));d.set(f,[...d.get(f)||[],c])}if(d.size>1){let a=[...d.keys()].sort((a,b)=>a.length-b.length),b=new Set;for(let c=0;c<a.length;c+=1){let e=a[c];if(!b.has(e))for(let f=c+1;f<a.length;f+=1){let c=a[f],g=c.length-e.length,h=e.length<=12&&/(?:省|市|县|区|镇|乡|村|开发区|经开区|新区|高新区)$/u.test(e)&&c.startsWith(e),i=e.length<=20&&/(?:项目|工程|标段)$/u.test(e)&&c.startsWith(e);if((g<=3||e.endsWith("等")&&g<=6||h||i)&&c.startsWith(e)){d.set(c,[...d.get(c)||[],...d.get(e)||[]]),b.add(e);break}}}for(let a of b)d.delete(a)}if(d.size>1){let b=new Set([...d.keys()].map($.cg));if(2===b.size&&!b.has("plain")){for(let b of["duration","date"]){let e=new Map([...d].filter(([a])=>(0,$.cg)(a)===b));if(e.size>1){let b=[...e.values()].map(a=>`${a[0].value}(${a.map(a=>a.source).filter(Boolean).join("、")||"未知来源"})`).join(" vs ");c.push({level:"error",message:`事实一致性冲突:${a} 存在多个值:${b}`,suggestion:"请确认当前绑定材料组,或在模板绑定中只绑定当前文档所需材料。"})}}continue}let e=[...d.values()].map(a=>`${a[0].value}(${a.map(a=>a.source).filter(Boolean).join("、")||"未知来源"})`).join(" vs ");c.push({level:"error",message:`事实一致性冲突:${a} 存在多个值:${e}`,suggestion:"请确认当前绑定材料组,或在模板绑定中只绑定当前文档所需材料。"})}}let e=a.summary.facts.projectName;if(e&&"当前知识库项目"!==e&&!/--|延期到|资料|附件|扫描|目录|汇总|打包|备份|招标工程量清单封面|招标工程量清单扉页|工程量清单表|清单封面|清单扉页|\d{1,2}\.\d{1,2}/u.test(e)){let b=_(a.markdown),d=[e,...a.summary.fingerprint.projectNames].flatMap(a=>[a,a.replace(/^\d+(?:\.\d+)?[^\u4e00-\u9fa5]*/u,""),a.replace(/\([^)]*\)|([^)]*)/gu,"")]).map(a=>_(a)).filter(a=>a.length>=4),f=d.filter(a=>a.length>=8),g=d.filter(a=>a.length<8),h=f.some(a=>b.includes(a)||a.length>=12&&b.includes(a.slice(0,Math.max(8,Math.floor(.72*a.length))))),i=g.some(a=>b.includes(a));(f.length>0?h:!(g.length>0)||i)||c.push({level:"warning",message:`正文未包含当前对象名称:${e}`,suggestion:"请确认标题、概况或背景信息是否已体现当前对象名称。"})}return c})({markdown:g,facts:p,summary:l,profile:m})),(0,o.yT)("project-contamination",()=>(function(a,b){let c=[],d=new Set([b.projectName,...b.fingerprint.projectNames].filter(Boolean));for(let e of b.contaminationCandidates)e.length>=6&&!d.has(e)&&a.replace(/\s+/gu,"").includes(e.replace(/\s+/gu,""))&&c.push({level:"error",message:`正文疑似混入其他对象名称:${e}`,suggestion:"请检查绑定材料选择、模板绑定文件和知识库证据范围。"});let e=b.fingerprint.documentNos,f=a.match(/\b\d{4}[A-Z]{2,}\d{4,}\b/gu)?.find(a=>!e.includes(a));return f&&e.length>0&&c.push({level:"error",message:`正文疑似混入其他文档编号:${f}`,suggestion:"请重新生成并检查是否召回了其他绑定材料。"}),c})(g,l)),(0,o.yT)("project-type-consistency",()=>(0,s.MM)(g,{projectName:z?.project?.name,blueprintStrategyId:z?.strategyId})),(0,o.yT)("figure-substitute-table",()=>(0,s.X_)(g,(0,c_.cA)({chapters:u}))),(0,o.yT)("project-basic-placeholder",()=>(0,n.h)(g,p)),await (0,o.ll)("standard-final",()=>cG({markdown:g,truthValues:a.truthValues,chapters:e,factsModel:d,template:h,promptBindings:j,promptDocumentRules:k,scopeConflicts:r,evaluationCriteriaItems:t,effectiveChapters:u,tenderRequirements:v,requirementsSimilarity:w,factTokenScopeClassifier:x,professionalDepthClassifier:y,materialEvidence:a.materialEvidence,blueprintData:z,billFactLock:A,drawingFactLock:B,bodyTableForbidden:C,bodyFigureForbidden:D,identityMarksForbidden:E,coverForbidden:F,clarificationAmendments:a.clarificationAmendments})),(0,o.yT)("fact-coverage",()=>(0,n.br)(g,[...p,...d.preciseFacts]).map(a=>({...a,level:"warning",severity:"warning",suggestion:"建议后续优化事实自然落位;导出阶段不因未落位的引用型或可优化事实阻断。"}))),(0,o.yT)("page-target",()=>(0,i.PE)(h.generationSettings||h.exportSettings,g).filter(a=>!(q.minPages&&/低于目标页数/u.test(a.message)))),(0,o.yT)("document-budget",()=>(0,i.ty)(q,g)),(0,o.yT)("formal-text-gate",()=>(0,dp.IA)(g)),await (0,o.ll)("internal-terminology-anchor",()=>(0,ag.WT)(g)),(0,o.yT)("heading-uncovered-engineering-items",()=>(0,af.j9)(g)),(0,o.yT)("writer-missing-section",()=>g.includes("WRITER_MISSING_SECTION")||g.includes("Writer 未完成")?[{level:"error",severity:"blocker",category:"structure",owner:"system",message:"最终正文仍包含未完成小节标记",suggestion:"必须重新补写对应小节并删除 WRITER_MISSING_SECTION/Writer 未完成。"}]:[]),(0,o.yT)("critical-section-depth",()=>(function(a){let b=[];for(let c of a)for(let a of dS){let d=(0,f.Xl)(c.content,a.title)||(0,f.Xl)(c.content,a.title,{fuzzy:!0}),e=(0,i.V7)(d);if(!d||e>=a.minChars)continue;let g=(0,n.R_)(a.title);e>=g?b.push({level:"warning",severity:"warning",message:`${c.title} ${a.title} 正文深度接近目标:当前 ${e} 字,目标 ${a.minChars} 字`,suggestion:"已达到可交付深度,建议后续按项目数据继续优化扩写。"}):b.push({level:"error",severity:"blocker",message:`${c.title} ${a.title} 正文不足:当前 ${e} 字,要求不少于 ${g} 字`,suggestion:"关键小节必须补足项目数据、重点难点与施工内容对应关系后方可导出。",chapterId:c.id,sectionTitle:a.title,provenance:{detectorId:"critical-section-depth",fingerprint:(0,f.c6)(`${c.title}\u0000${a.title}`)}})}return b})(e)),(0,o.yT)("critical-section-fact-density",()=>(function(a){let b=[{title:"项目特点、重点、难点分析",minNumericFacts:5,minObjectFacts:8,objectPatterns:[/建筑面积|面积/u,/层|框架结构|既有建筑/u,/结构形式|结构加固|墙体补强|装配式/u,/拆除|改造|装修|装饰/u,/工期|日历天/u,/质量标准|合格/u,/营业商铺|经营区域|场地/u,/管网|防水|室外道排/u,/智能化|弱电|消防|暖通|通风空调|水电/u]},{title:"项目主要施工内容",minNumericFacts:4,minObjectFacts:6,objectPatterns:[/拆除|垃圾外运|既有设施保护/u,/结构加固|墙体补强|框架结构/u,/装饰|装修|基层|面层|环保|阻燃/u,/防水|管网|给排水|阀门|道排/u,/消防|水电|电气|弱电|智能化|通风空调/u,/屋面|立面|室外|附属/u,/施工流程|施工方法|施工顺序|工艺流程/u,/验收|检测|调试|资料闭环/u]},{title:"主要分部分项工程施工方案",minNumericFacts:4,minObjectFacts:6,objectPatterns:[/拆除|垃圾外运|既有设施保护/u,/结构加固|墙体补强|框架结构/u,/装饰|装修|基层|面层|环保|阻燃/u,/防水|管网|给排水|阀门|道排/u,/消防|水电|电气|弱电|智能化|通风空调/u,/屋面|立面|室外|附属/u,/施工流程|施工方法|施工顺序|工艺流程/u,/验收|检测|调试|资料闭环/u]},{title:"主要施工方法",minNumericFacts:4,minObjectFacts:6,objectPatterns:[/拆除|垃圾外运|既有设施保护/u,/结构加固|墙体补强|框架结构/u,/装饰|装修|基层|面层|环保|阻燃/u,/防水|管网|给排水|阀门|道排/u,/消防|水电|电气|弱电|智能化|通风空调/u,/屋面|立面|室外|附属/u,/施工流程|施工方法|施工顺序|工艺流程/u,/验收|检测|调试|资料闭环/u]}];return a.flatMap(a=>b.flatMap(b=>{let c=(0,f.Xl)(a.content,b.title);if(!c)return[];let d=new Set(c.match(/\d+(?:\.\d+)?\s*(?:m²|㎡|平方米|m|mm|层|栋|日历天|天|%|台|套|根|处|个|kg|t|吨)/giu)||[]).size,e=b.objectPatterns.filter(a=>a.test(c)).length,g=[];return d<b.minNumericFacts&&g.push({level:"warning",severity:"warning",message:`${a.title} ${b.title} 参数落位不足:当前 ${d} 个,建议不少于 ${b.minNumericFacts} 个`,suggestion:"关键小节必须写入项目规模、工期、层数、结构、专业工程或验收参数等具体数值。"}),e<b.minObjectFacts&&g.push({level:"warning",severity:"warning",message:`${a.title} ${b.title} 专业事实覆盖不足:当前 ${e} 类,建议不少于 ${b.minObjectFacts} 类`,suggestion:"优先基于当前项目绑定资料补充工程对象、专业范围、重点难点和对应施工内容;不得为满足类别数量编造或混入其他项目事实。"}),g}))})(e)),(0,o.yT)("chapter-fact-density",()=>e.flatMap(a=>{let b=(0,dy.Cd)(a.content);return b.gap?[{level:"warning",severity:"warning",message:`${a.title} 量化参数密度偏低:当前 ${b.params} 个(约 ${b.per1000}/千字,建议 ≥${dy.J5}/千字、约 ${b.required} 个),小节事实或量化参数落位可继续优化`,suggestion:"优先将本章绑定资料中的工程规模、工期、部位做法、材料规格等参数自然写入对应工序;不得从行业惯例或相邻章节借参数凑数。"}]:[]})),await (0,o.ll)("construction-org-professional-audit",async()=>(await dQ(e,g)).map(a=>"error"===a.level?{...a,severity:"blocker"}:a))).map(a=>"error"===a.level?{...a,severity:a.severity||"blocker"}:a)}let dU=/章节级证据覆盖较弱|章节事实覆盖不足|小节事实或量化参数落位可继续优化/u;async function dV(a){var b;let{finalChapterDrafts:c,effectiveChapters:d,factsModel:e,allEvidence:g,finalMarkdown:h,validationIssues:j,retrievalCoverageReports:k,includeRetrievalCoverage:l,template:m,tenderRequirements:n,bidComposition:o,drawingFactLock:p,structuredFacts:s,authorityAuditReport:t,professionalDepthClassifier:u,evaluationCriteriaItems:v}=a,w=function(a){let b=a.chapters.map(b=>{let c=function(a){let b=["project"];return/进度|工期|节点|部署/u.test(a.title)&&b.push("schedule"),/质量|验收|材料/u.test(a.title)&&b.push("quality","rules"),/安全|文明|风险|危大/u.test(a.title)&&b.push("safety","rules"),/资源|材料|设备|劳动力|机械/u.test(a.title)&&b.push("resources"),/施工|工艺|技术|方案|清单|工程量|图纸/u.test(a.title)&&b.push("quantities"),[...new Set(b)]}(a.templateChapters.find(a=>a.id===b.id||a.title===b.title)||b),d=c.filter(c=>{var d;return d=a.factsModel,("project"===c?d.project.length>0||d.preciseFacts.length>0:"schedule"===c?d.schedule.length>0:"quality"===c?d.quality.length>0||d.specifications.length>0:"safety"===c?d.safety.length>0||d.rules.length>0:"resources"===c?d.resources.length>0||d.bills.length>0:"quantities"===c?d.bills.length>0||d.drawings.length>0||d.tables.length>0:"rules"===c&&(d.rules.length>0||d.specifications.length>0))||(b.evidence||[]).some(a=>RegExp(cH[c]||c,"u").test(`${a.sectionTitle||""} ${a.content||""}`))}),e=c.filter(a=>!d.includes(a)),f=c.length?Math.round(d.length/c.length*100):100;return{chapterId:b.id,title:b.title,requiredDomains:c,confirmedDomains:d,unconfirmedDomains:e,score:f}}),c=new Set(a.evidence.map(a=>a.filePath).filter(Boolean)),d=b.length?Math.round(b.reduce((a,b)=>a+b.score,0)/b.length):100;return{score:d,evidenceCount:a.evidence.length,confirmedFiles:c.size,chapterReports:b,unconfirmedDomains:[...new Set(b.flatMap(a=>a.unconfirmedDomains))],remediation:d>=95?"知识库事实覆盖已达到高置信交付要求。":"系统需扩大本地知识库检索、补抽结构化事实,并将已确认事实落位到对应章节。"}}({chapters:c,templateChapters:d,factsModel:e,evidence:g}),x=(0,y.e$)(h,e),z=(b={chapters:c,templateChapters:d,factsModel:e}).chapters.map(a=>{let c=b.templateChapters.find(b=>b.id===a.id||b.title===a.title),d=function(a,b){let c=`${a.title} ${(b?.sections||a.sections||[]).join(" ")}`;return[{key:"structure",label:"结构完整",passed:(a.sections||b?.sections||[]).length>=2||/###\s+/u.test(a.content)},{key:"depth",label:"内容深度",passed:(0,i.V7)(a.content)>=600},{key:"evidence",label:"证据绑定",passed:(a.evidence||[]).length>0},{key:"professional",label:"专业控制点",passed:/验收|复核|检查|交底|控制点|整改|闭环|台账|进场|工序/u.test(a.content)},{key:"schedule",label:"工期支撑",passed:!/进度|工期|节点/u.test(c)||/工期|节点|计划|纠偏|资源|穿插/u.test(a.content)},{key:"quality",label:"质量验收",passed:!/质量|验收/u.test(c)||/质量|验收|复验|隐蔽|检验批|整改/u.test(a.content)},{key:"safety",label:"安全闭环",passed:!/安全|文明|风险|危大/u.test(c)||/风险|检查|整改|应急|培训|交底/u.test(a.content)}]}(a,c),e=d.filter(a=>a.passed).length;return{chapterId:a.id,title:a.title,score:d.length?Math.round(e/d.length*100):100,checks:d,action:e===d.length?"章节覆盖完整。":"系统需补齐章节结构、证据绑定、专业控制点和跨章依赖。"}}),A=di(j,w.score>=85?[]:[{level:"warning",message:`系统知识库覆盖确认率偏低:${w.score}%`,suggestion:`${w.remediation} 未确认事实域:${w.unconfirmedDomains.map(a=>cH[a]||a).join("、")||"无"}`}],(0,y.c$)(x,{maxIssues:20}),z.filter(a=>a.score<80).map(a=>({level:"warning",message:`章节覆盖不足:${a.title} ${a.score}%`,suggestion:`${a.action} 未通过项:${a.checks.filter(a=>!a.passed).map(a=>a.label).join("、")}`})),l?k.filter(a=>a.risk.highRisk&&(0===a.requiredFactTotal?a.evidenceCount<8:a.requiredFactCovered<a.requiredFactTotal)).map(a=>({level:"warning",message:`系统知识库召回覆盖需复核:${a.chapterTitle}`,suggestion:`知识库总切片 ${a.risk.totalChunks},当前预加载 ${a.risk.loadedChunks}${a.risk.riskReason?`(${a.risk.riskReason})`:""},已启用深召回;事实覆盖 ${a.requiredFactCovered}/${a.requiredFactTotal},小节覆盖 ${a.sectionCovered}/${a.sectionTotal}。`})):[]);A=A.map(a=>dU.test(a.message)&&"warning"===a.level?{...a,level:"info"}:a);let B=await dg({markdown:h,chapters:c,issues:A,knowledgeCoverage:w,factTraces:x,template:m,tenderRequirements:n,bidComposition:o,effectiveChapters:d,drawingFactLock:p,boqRowTraces:(0,y.JV)(h,e),parameterUsageAudit:function(a){let b=a.chapters||[],c=R(a.markdown,a.factsModel,b,{supersededValues:a.supersededValues});if(0===c.totalParams)return;let d=c.used.length,e=c.relevantMissed.length,f=d+e;return{totalParams:c.totalParams,usedParams:d,relevantMissedCount:e,relevantMissed:c.relevantMissed.slice(0,20).map(a=>`${a.key}:${String(a.value).slice(0,60)}`),irrelevantMissedCount:c.irrelevantMissed.length,noiseExcludedCount:c.noiseExcluded.length,noiseExcluded:c.noiseExcluded.slice(0,10).map(a=>`[${a.category}]${a.fact.key}:${String(a.fact.value).slice(0,50)}`),rate:b.length>0&&f>0?d/f:null}}({markdown:h,factsModel:e,chapters:c,supersededValues:a.supersededTruthValues}),keyFactPlacementAudit:function(a,b){let c=function(a){let b=[];if(!a||0===a.length)return b;let c=new Set(T),d=new Set;for(let e of a){if(!e)continue;let a=(0,r.nD)(e);if(!a||!c.has(a.key))continue;let g=`${e.key||""}${e.fieldName||""}${e.fieldId||""}`,h=(0,f.lG)(e.value).trim();if(!h||U.test(h)||/项目名称|工程名称/u.test(g)&&("table"===e.processingType||"structured_data"===e.processingType||/bill_of_quantities/u.test(e.roleId||""))||(0,S.rf)(g,h))continue;let i=(0,q.iG)((0,q.De)(h)).replace(/\s+/gu," ").trim();if(!i)continue;let j=`${a.key}|${i}`;d.has(j)||(d.add(j),b.push({key:a.key,label:a.label,value:i}))}return b}(b);if(0===c.length)return;let d=new Map;for(let a of c){let b=d.get(a.key)??{label:a.label,values:[]};b.values.push(a.value),d.set(a.key,b)}let e=0,g=[];for(let b of T){let c=d.get(b);if(c){if(c.values.some(b=>(0,S.AI)(a||"",b))){e+=1;continue}g.push(`${c.label}:${c.values[0].slice(0,60)}`)}}let h=d.size;return{specs:h,placed:e,unplaced:g.slice(0,20),rate:h>0?e/h:null}}(h,[...s||[],...e&&e.preciseFacts||[]]),authorityAuditReport:t,professionalDepthClassifier:u,evaluationCriteriaItems:v}),C=function(a){let b=[],c=a.issues.filter(a=>"error"===a.level);c.length>0&&b.push({priority:"high",title:"阻断问题修复",action:`修复 ${c.length} 个导出阻断问题,优先处理事实冲突、结构缺失、模板规则违规和占位残留。`});let d=(a.factTraces||[]).filter(a=>"unplaced"===a.status&&(0,y.O7)(a));if(d.length>0){let a=d.length>12?`${d.length} 项(示例:${d.slice(0,8).map(a=>a.label).join("、")} 等)`:`${d.length} 项(${d.map(a=>a.label).join("、")})`;b.push({priority:"high",title:"事实落位修复",action:`将 ${a} 已确认知识库事实写入对应章节,保持原始数值、单位和来源口径。`})}a.knowledgeCoverage&&a.knowledgeCoverage.score<95&&b.push({priority:"medium",title:"知识库确认覆盖修复",action:"扩大本地知识库检索范围,执行事实补抽和章节证据重分配;这是系统检索、抽取、落位问题,不要求用户追加资料。"});let e=(a.chapterCoverage||[]).filter(a=>a.score<80);if(e.length>0){let a=e.length>10?`${e.slice(0,8).map(a=>a.title).join("、")} 及其他${e.length-8}章`:e.map(a=>a.title).join("、");b.push({priority:"medium",title:"章节覆盖修复",action:`补齐低覆盖章节(${e.length}章):${a}。`})}return a.qualityReport&&!a.qualityReport.passed&&b.push({priority:"medium",title:"交付置信度修复",action:a.qualityReport.actions.join(" ")}),b}({issues:A,qualityReport:B,knowledgeCoverage:w,factTraces:x,chapterCoverage:z});A=di(A,B.passed?[]:[{level:"error",severity:"blocker",category:"structure",repairability:"manual_review",owner:"user",message:`交付置信度未达目标:${B.deliveryProbability}% / ${B.target}%(综合评分 ${B.overall}/100)`,suggestion:B.actions.join(" ")}],C.filter(a=>"high"===a.priority).map(a=>({level:"info",message:`修复策略待执行:${a.title}`,suggestion:a.action})));let D=(0,af.Ai)(A,e,c);return{knowledgeCoverage:w,factTraces:x,chapterCoverage:z,qualityReport:B,repairStrategies:C,validationIssues:A,finalExportGate:D}}async function dW(a){var b,c;let d=(b=a.chapterDrafts,c=a.documentSpec,b.map(a=>{let b=c.chapterRules.find(b=>b.id===a.id||b.title===a.title),d=(b?.requiredFactIds||[]).map(a=>c.factFields.find(b=>b.id===a)?.name).filter(Boolean),e=[...new Set([...a.missingFacts||[],...d].filter(Boolean))],f=e.filter(b=>!a.missingFacts.includes(b)),g=e.filter(b=>a.missingFacts.includes(b));return{chapterId:a.id,title:a.title,requiredFacts:e,coveredFacts:f,missingFacts:g,evidenceCount:a.evidence.length}}));a.validation=(0,n.M6)(a.chapterDrafts,a.governedStructuredFacts,a.template),a.validation.warnings=[...a.validation.warnings,...a.readiness.warnings],a.validation.errors=[...a.validation.errors,...a.readiness.blockingIssues],a.sources=[...a.allEvidence.reduce((a,b)=>a.set(b.filePath,(a.get(b.filePath)??0)+1),new Map).entries()].sort((a,b)=>b[1]-a[1]).map(([a,b])=>({filePath:a,count:b}));let e=new Map;for(let b of a.allEvidence)e.set(b.source||"unknown",(e.get(b.source||"unknown")??0)+1);a.validationIssues=di((0,dq.w9)(a.validation,a.factsModel,a.chapterDrafts),function(a){let b=[];for(let c of a)0===c.evidenceCount?b.push({level:"error",message:`章节缺少证据:${c.title}`,suggestion:"请补充对应绑定材料或调整模板章节检索词。"}):c.missingFacts.length>0&&b.push({level:"warning",message:`章节事实覆盖不足:${c.title},缺失 ${c.missingFacts.slice(0,6).join("、")}`,suggestion:"建议补充章节 requiredFacts 或绑定材料证据。"});return b}(d),(a.globalConsistencyIssues||[]).filter(a=>!/^跨章一致性冲突|^工序规格冲突/u.test(a)).slice(0,10).map(b=>{let c=/^数据一致性矛盾/u.test(b);return{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`${c?"数据一致性复核":"跨章一致性复核"}:${b}`,suggestion:c?"全文数据必须一致:以绑定资料(图纸/清单/招标文件)为准选定唯一值,统一矛盾数值对。":"跨章数值口径不一致属低级错误,必须定向修复统一口径后重新校验。",provenance:{detectorId:c?"data-consistency-snapshot":"global-consistency-snapshot",fingerprint:(0,f.c6)(a.chapterDrafts.map(a=>a.content).join("\n\n"))}}}));let g=a.chapterDrafts.map(a=>a.content).join("\n\n");a.validationIssues=di(a.validationIssues,(0,n.br)(g,a.structuredFacts).map(a=>({...a,level:"warning",severity:"warning",suggestion:"建议 Agent Writer 在章节生成阶段优先落位可信基础事实;导出阶段不因未落位的低置信或泛化事实阻断。",provenance:{detectorId:"fact-coverage",fingerprint:(0,f.c6)(g)}})));let h=Math.max(0,a.effectiveChapters.length-a.chapterDrafts.length);a.validationIssues=di(a.validationIssues,[...h>0?[{level:"error",severity:"blocker",message:`部分章节生成失败:${h} 章`,suggestion:a.failedChapterMessages.join(";")||"请检查模型调用、知识库检索和事实抽取配置后重新生成失败章节。"}]:[]]);let i=await Promise.all(a.chapterDrafts.map(async b=>{let c=a.effectiveChapters.find(a=>a.id===b.id);if(!c)return[];let d=await ds({chapter:c,content:b.content,evidence:b.evidence||[]});return d.length>0?[{level:"warning",message:`${b.title} 小节事实或量化参数落位可继续优化:${d.slice(0,5).join(";")}`,suggestion:"建议在 Agent Writer 阶段扩大定向证据,不得在导出阶段补写。"}]:[]}));a.validationIssues=di(a.validationIssues,i.flat()),a.assets=[];let k=[...a.progressStages];for(let b of a.chapterGenerationStages)(0,j.fx)(k,b);a.executionStages=function(a,b=300){if(a.length<=b)return a;let c=b-4-1;if(c<=0)return a.slice(-b);let d=a.slice(0,4),e=a.slice(-c),f=a.slice(4,a.length-c),g=f.filter(a=>"failed"===a.status).length;return[...d,{type:"validation",roleId:"stage-archive",status:g>0?"failed":"success",message:`已归档 ${f.length} 个中间执行阶段${g>0?`(含 ${g} 个失败记录)`:""}`,details:f[0]?.subtitle?[`归档区间:${f[0].subtitle} → ${f[f.length-1]?.subtitle||""}`]:[]},...e]}(k),(0,j.fx)(a.executionStages,(0,j.X5)({type:"reference",roleId:"knowledge-usage-report",status:"success",message:`资料使用报告:证据 ${a.allEvidence.length} 条,来源文件 ${a.sources.length} 份,结构化事实 ${a.structuredFacts.length} 条`,details:[`证据类型:${[...e.entries()].map(([a,b])=>`${a} ${b}`).join(",")||"无"}`,`索引健康:可用切片 ${a.indexHealth.usableChunkCount} 条,待索引 ${a.indexHealth.pendingJobs} 个,向量${(0,n.EG)(a.indexHealth.vectorStatus?.status)}`]},{subtitle:"资料使用报告"})),(0,j.fx)(a.executionStages,(0,j.X5)({type:"reference",roleId:"web-research-report",status:a.webResearchReport.enabled?"success":"skipped",message:a.webResearchReport.enabled?`联网增强:检索章节 ${new Set(a.webResearchReport.chapters).size} 个,查询 ${a.webResearchReport.queries.length} 个,使用公开资料 ${a.webResearchReport.evidenceCount} 条`:"联网增强未开启",details:a.webResearchReport.enabled?[`检索主题:${[...new Set(a.webResearchReport.queries)].join(";")||"无"}`,`过滤结果:${a.webResearchReport.filteredCount} 条`,"公开资料仅用于通用规范、政策、工艺和措施补充,不作为项目事实来源"]:["可在模型配置中开启联网增强"]},{subtitle:"联网增强报告"}));{let b=(0,o.Jq)("standard-final"),c=b.degraded.length>0?b.degraded.join("、"):"无";(0,j.fx)(a.executionStages,(0,j.X5)({type:"validation",roleId:"detector-execution-summary",status:b.degraded.length>0?"failed":"success",message:b.degraded.length>0?`交付前检测器执行情况:已执行 ${b.executed.length} 个、**降级未执行 ${b.degraded.length} 个**(该 ${b.degraded.length} 个检测维度本次未查,导出不受阻断但需复核)`:`交付前检测器执行情况:${b.executed.length} 个全部执行完成`,details:[`降级未执行(基础设施异常):${c}`,...b.declaredMissing.length>0?[`声明但未执行(疑为死检测器,请核查接线):${b.declaredMissing.join("、")}`]:[],"说明:降级为检测器基础设施异常而非正文内容缺陷,不阻断导出;重跑可恢复该维度检查。"]},{subtitle:"交付前检测器执行情况"})),a.emitProgress?.()}}function dX(a){let b=(0,aY._D)(a.tenderRequirements?.structureRequirements||[],a.effectiveChapters,a.requirementsSimilarity);return(0,c_.cA)({structureItems:b.assignments.map(a=>({chapterTitle:a.chapterTitle,form:a.requirement.form,element:a.requirement.element})),chapters:a.effectiveChapters})}function dY(a){let b=function(a,b,c){let d=b?function(a){let b=new Set,c=ar(a),d=a=>{let c=(0,y.Ih)(a);c&&b.add(c)};for(let b of(0,ah.IV)(a).entries){for(let a of("number"==typeof b.value&&Number.isFinite(b.value)&&d(String(b.value)),[String(b.value),b.spec,b.label]))if(a)for(let b of a.match(/\d+(?:\.\d+)?/gu)??[])d(b);for(let a of b.groups??[])d(String(a.value));for(let a of b.specBreakdown??[])d(String(a.value))}return{cores:b,values:c}}(b):void 0,e=d?.cores??new Set,f=d?.values??[];if(c)for(let a of c){let b=/\d+(?:\.\d+)?/u.exec(a);b&&e.add((0,y.Ih)(b[0]))}let g=function(a){let b=new Map,c=c=>{let d=c.trim();!d||b.has(d)||b.set(d,aq(a,d))};for(let b of(0,ai.ll)(a))c(b);for(let b of a.matchAll(ap))c(b[0]);return[...b.entries()].sort((a,b)=>a[1]-b[1]).map(([a,b])=>({token:a,index:b}))}(a),h=[],i=[],j=[],k=[],l=[],m=0,n=0,o=0,p=0;for(let{token:b,index:c}of g){if(c<0||function(a,b){let c=a.lastIndexOf("\n",b-1)+1,d=a.indexOf("\n",b),e=a.slice(c,d<0?a.length:d);return/^\s*\|/u.test(e.trim())}(a,c)||"0"===as(b))continue;if(m+=1,ak.some(a=>a.re.test(b))){o+=1;continue}let d=(0,y.Ih)(as(b)),g=an(a,c,b.length).replace(/\s+/gu," ").trim(),q={token:b,value:d,context:g,occurrences:function(a,b){let c=0;for(let d=aq(a,b);d>=0;d=aq(a,b,d+1))c+=1;return c}(a,b)};if(e.has(d)){n+=1,"unattributed"!==at(g)&&k.push(q);continue}let r=function(a,b,c,d,e){let f=a.slice(Math.max(0,b-24),b);return aj.FW.test(f.replace(/\s+/gu," "))?ao(a,b,c,d,e):null}(a,c,b,d,f);if(r){l.push({...q,closure:r.map(a=>`${a.name} ${a.value}${a.unit}`)});continue}if("unsourced"!==(0,y.eS)({token:b,context:g}).kind){p+=1;continue}let s=at(g);if("unattributed"===s){j.push(q);continue}let t=ao(a,c,b,d,f),u=t?{...q,closureCandidates:t.map(a=>`${a.name} ${a.value}${a.unit}`)}:q;"derivation-gap"===s?h.push(u):i.push(u)}return{scanned:m,matched:n,registered:o,conventionExempt:p,totalClaimClosed:l,derivationGaps:h,processGaps:i,unattributed:j,contextualMatches:k,unregisteredCount:j.length}}(a.finalMarkdown,a.blueprintData,az(a));a.authorityAuditReport=b;let c=(0,o.yT)("authority-audit-gap",()=>(function(a){let b=a.derivationGaps.length+a.processGaps.length;if(0===a.unregisteredCount&&0===b)return[];let c=a=>a.slice(0,6).map(a=>a.token.replace(/\s+/gu,"")).join("、"),d=[];return a.unregisteredCount>0&&d.push(`疑似编造(未登记)${a.unregisteredCount} 项 ${c(a.unattributed)}`),a.derivationGaps.length>0&&d.push(`推导/投影缺口 ${a.derivationGaps.length} 项 ${c(a.derivationGaps)}`),a.processGaps.length>0&&d.push(`工艺库缺口 ${a.processGaps.length} 项 ${c(a.processGaps)}`),[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`无主数值审计失败:${d.join(";")}`,suggestion:"未登记数值(疑似编造)必须回归资料原文或改为不带具体数值的表述;推导/投影缺口数值应补权威投影(transform/specBreakdown/groups 扩容)——若该值可由具名权威分项和闭合(见审计明细「可闭合」),应在正文按分项显式还原为「分项名 值 + …,合计 值」的分解表述(还原后即由合计闭包收编);工艺库缺口数值应补规范常数/管理数字分类(C-T2 分类器)或工艺库登记。**禁止以删除数值或改定性表述消除缺口**(链尾无删除式收敛器,理由见 authorityAudit 模块头)。修复后重跑生成复核清零。"}]})(b));a.validationIssues=[...a.validationIssues.filter(a=>!a.message.startsWith("无主数值审计失败")),...c];let d=b.unregisteredCount>0||b.derivationGaps.length>0||b.processGaps.length>0;(0,j.fx)(a.executionStages,(0,j.X5)({type:"validation",roleId:"authority-audit",status:d?"failed":"success",message:function(a){let b=`无主数值审计:扫描数值 ${a.scanned} 个(命中权威 ${a.matched},登记豁免 ${a.registered},规范/管理豁免 ${a.conventionExempt},合计闭包 ${a.totalClaimClosed?.length??0},推导/投影缺口 ${a.derivationGaps.length},工艺库缺口 ${a.processGaps.length},未登记 ${a.unregisteredCount})`,c=[...a.derivationGaps,...a.processGaps].filter(a=>(a.closureCandidates?.length??0)>0).length,d=c>0?`(覆盖缺口中有 ${c} 项可由具名权威分项和闭合:属投影覆盖缺口,应扩投影或按分项还原,不得删除)`:"";return a.unregisteredCount>0?`${b};存在疑似编造数值,须核查${d}`:a.derivationGaps.length+a.processGaps.length>0?`${b};存在收编缺口,须扩权威投影/工艺库登记(链尾不做删除式收敛)${d}`:b}(b),details:function(a,b=24){let c=(a,c)=>0===c.length?[]:[a,...c.slice(0,b).map(a=>{let b=a.closureCandidates??[],c=b.length>0?`;可闭合:= ${b.join(" + ")}`:"";return`${a.token}(\xd7${a.occurrences})— ${a.context}${c}`})],d=[...c("未登记(疑似编造,须核查或收编):",a.unattributed),...c("推导器/投影覆盖缺口(进收编清单):",a.derivationGaps),...c("工艺库缺口(进收编清单):",a.processGaps),...a.totalClaimClosed?.length?["合计闭包收编(权威分项和,不计缺口):",...a.totalClaimClosed.slice(0,b).map(a=>`${a.token}(\xd7${a.occurrences})= ${(a.closure??[]).join(" + ")} — ${a.context}`)]:[]];return d.length>0?d:["全部数值命中权威索引或登记表,无未登记项。"]}(b)},{subtitle:"权威覆盖审计"}))}async function dZ(a){let b=dX(a);a.rebuildFinalMarkdown=()=>{let c=(0,s._D)((0,n.Ht)((0,ad.bR)((0,n.Xr)((0,ad.kT)((0,ad.K7)(dR((0,n.jO)(function(a){let b=(0,k.kO)(a.bidComposition),c=(0,n.Ht)((0,ad.rs)((0,ad.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.chapters,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.chapters,generatedAt:Date.now()},{forbidDrawingImages:b,promptRules:a.promptDocumentRules,bodyTableForbidden:a.bodyTableForbidden,coverForbidden:a.coverForbidden}),a.chapters,{forbidDrawingImages:b,promptRules:a.promptDocumentRules,bodyTableForbidden:a.bodyTableForbidden,coverForbidden:a.coverForbidden}).markdown);return(0,ae.u7)(c,{plan:a.bidComposition?.appendixPlan||[],blueprintData:a.blueprintData})}({template:a.template,requirement:a.requirement,projectRoot:a.projectRoot,projectId:a.projectId,facts:a.facts,structuredFacts:a.structuredFacts,factsModel:a.factsModel,chapters:a.finalChapterDrafts,sources:a.sources,missingItems:a.missingItems,validation:a.validation,validationIssues:a.validationIssues,executionStages:a.executionStages,assets:a.assets,promptDocumentRules:a.promptDocumentRules,bodyTableForbidden:(0,k._C)(a.bidComposition),coverForbidden:a.bidComposition?.formatRules.cover==="forbidden",bidComposition:a.bidComposition,blueprintData:a.blueprintData}),a.structuredFacts,{bodyTableForbidden:(0,k._C)(a.bidComposition)}),a.projectMaterialSummary))))))).markdown;return(0,k._C)(a.bidComposition)?c:(0,c_.aH)((0,c_.TG)((0,c_.lj)(c)),b,{substituteTable:b=>(0,dx.Ik)(a.blueprintData,b)}).markdown};let c=(0,r.mN)({facts:a.structuredFacts,markdown:a.finalMarkdown});if(c.size>0&&a.executionStages.push({type:"fact_extraction",roleId:"canonical-facts",status:"success",message:`已决策可信基础事实 ${c.size} 项`,details:[...c.values()].map(a=>`${a.label}=${a.value}(${a.source},confidence=${a.confidence})`).slice(0,12)}),!a.caliberLedger){let b=[...a.factsModel?.preciseFacts||[],...a.factsModel?.project||[],...a.factsModel?.schedule||[],...a.factsModel?.quality||[],...a.factsModel?.safety||[]].map(a=>({key:a.key,label:a.fieldName,value:a.value,sourceFile:a.sourceFile})),c=[...(a.allEvidence||[]).map(a=>({text:String(a.content||""),source:`${a.filePath||""} ${a.sectionTitle||""}`})),...b.map(a=>({text:String(a.value??""),source:String(a.sourceFile||"")}))],d=(0,z.Oq)((0,z.UD)(c)),e=(0,p.iC)({facts:b,overrides:d,labeledValues:(0,z.Su)(c)});a.caliberLedger=(0,p.wc)(e),a.truthValues=e.resolved;let f=(0,p.DK)(e);f.length>0&&(console.error(`[caliber] 真值层自检发现 ${f.length} 处不变量违规:${f.slice(0,5).join(";")}`),a.executionStages.push((0,j.X5)({type:"validation",roleId:"caliber-self-check",status:"partial",message:`真值层自检:${f.length} 处不变量违规(${f.slice(0,3).join(";")})——已记录,不改写、不阻断`},{subtitle:"真值层自检"})));let g=function(a){let b=0,c=0,d=[];for(let e of a){if(String(e.objectName||"").trim()){b+=1;continue}if(N.test(String(e.key||"").trim())){c+=1;continue}d.length<12&&d.push(`${String(e.key).slice(0,20)}:${String(e.value).slice(0,30)}`)}let e=a.length-b-c,f=b+e;return{total:a.length,bound:b,projectLevel:c,unbound:e,bindRate:f>0?b/f:1,unboundSamples:d}}(a.factsModel?.factIndex?.parameterFacts||[]),h=(0,j.X5)({type:"reference",roleId:"caliber-ledger",status:"success",message:`口径账本(真值层):受管属性 ${e.resolved.length} 项、噪声剔除 ${e.noiseRejected.length} 项、值级覆盖 ${d.length} 对;参数绑定 ${g.bound}/${g.bound+g.unbound}(绑定率 ${Math.round(100*g.bindRate)}%,项目级 ${g.projectLevel} 项不计入)`,details:[...a.caliberLedger.slice(0,20),...d.length>0?[`值级覆盖:${d.slice(0,5).map(a=>`${a.superseded}→${a.effective}`).join("、")}`]:[],...g.unbound>0?[`未绑定对象(应清零:有锚点却未抽到=抽取器缺陷):${g.unboundSamples.join(";")}`]:[]]},{subtitle:"口径账本"});(0,j.fx)(a.executionStages,h),(0,j.fx)(a.progressStages,h)}let d=function(a,b){let c=[];if(!a||0===b.length)return c;for(let d of b)for(let e of d.superseded){let f=e.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&"),g=[...a.matchAll(RegExp(f,"gu"))];if(0===g.length)continue;let h=[];for(let b of g){let c=a.lastIndexOf("。",b.index??0)+1,d=a.indexOf("。",(b.index??0)+e.length),f=-1===d?a.length:d+1,g=a.slice(c,f);bn.test(g)||h.push(g.trim().slice(0,80))}0!==h.length&&c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",provenance:{detectorId:"superseded-value-usage",fingerprint:String(b.length)},message:`${d.field}口径错误:正文 ${h.length} 处仍以被取代值「${e}」作为现行口径(现行为「${d.effective}」)——如「${h[0]}」`,suggestion:`请把上述表述统一为现行口径「${d.effective}」(答疑澄清后生效值);若确需说明变更过程,须写成引用形态(如「招标文件原为${e},经答疑澄清变更为${d.effective}」),不得单独以旧值陈述现状。`})}return c}(a.finalMarkdown,a.clarificationOverrides||[]);d.length>0&&(a.validationIssues=[...a.validationIssues,...d]),a.baseValidationIssues=a.validationIssues,a.validationIssues=await dT({documentSpec:a.documentSpec,validationIssues:a.validationIssues,factsModel:a.factsModel,finalChapterDrafts:a.finalChapterDrafts,finalMarkdown:a.finalMarkdown,truthValues:a.truthValues,template:a.template,promptBindings:a.promptBindings,promptDocumentRules:a.promptDocumentRules,projectMaterialSummary:a.projectMaterialSummary,domainProfile:a.domainProfile,structuredFacts:a.structuredFacts,documentBudget:a.documentBudget,scopeConflicts:a.scopeConflicts,evaluationCriteriaItems:a.evaluationCriteriaItems,effectiveChapters:a.effectiveChapters,tenderRequirements:a.tenderRequirements,requirementsSimilarity:a.requirementsSimilarity,factTokenScopeClassifier:a.factTokenScopeClassifier,professionalDepthClassifier:a.professionalDepthClassifier,materialEvidence:a.allEvidence,blueprintData:a.blueprintData,billFactLock:a.billFactLock,drawingFactLock:a.drawingFactLock,bodyTableForbidden:(0,k._C)(a.bidComposition),bodyFigureForbidden:(0,k.kO)(a.bidComposition),identityMarksForbidden:!!a.bidComposition?.identityMarksForbidden,coverForbidden:a.bidComposition?.formatRules.cover==="forbidden",clarificationAmendments:a.clarificationAmendments?.amendments}),dY(a),a.qualityBundle=await dV({finalChapterDrafts:a.finalChapterDrafts,effectiveChapters:a.effectiveChapters,factsModel:a.factsModel,allEvidence:a.allEvidence,finalMarkdown:a.finalMarkdown,validationIssues:a.validationIssues,retrievalCoverageReports:a.retrievalCoverageReports,includeRetrievalCoverage:!0,template:a.template,tenderRequirements:a.tenderRequirements,bidComposition:a.bidComposition,drawingFactLock:a.drawingFactLock,structuredFacts:a.structuredFacts,authorityAuditReport:a.authorityAuditReport,professionalDepthClassifier:a.professionalDepthClassifier,evaluationCriteriaItems:a.evaluationCriteriaItems,supersededTruthValues:new Set((a.truthValues||[]).flatMap(a=>a.superseded||[]).map(a=>(0,w.K3)(a)))}),a.validationIssues=a.qualityBundle.validationIssues,a.finalGateRepairStages=[],a.recomputeFinalValidationBundle=async()=>{let b=a.baseValidationIssues.filter(a=>!a.provenance||!dh.has(a.provenance.detectorId));a.validationIssues=await dT({documentSpec:a.documentSpec,validationIssues:b,factsModel:a.factsModel,finalChapterDrafts:a.finalChapterDrafts,finalMarkdown:a.finalMarkdown,truthValues:a.truthValues,template:a.template,promptBindings:a.promptBindings,promptDocumentRules:a.promptDocumentRules,projectMaterialSummary:a.projectMaterialSummary,domainProfile:a.domainProfile,structuredFacts:a.structuredFacts,documentBudget:a.documentBudget,scopeConflicts:a.scopeConflicts,evaluationCriteriaItems:a.evaluationCriteriaItems,effectiveChapters:a.effectiveChapters,tenderRequirements:a.tenderRequirements,requirementsSimilarity:a.requirementsSimilarity,factTokenScopeClassifier:a.factTokenScopeClassifier,professionalDepthClassifier:a.professionalDepthClassifier,materialEvidence:a.allEvidence,blueprintData:a.blueprintData,billFactLock:a.billFactLock,drawingFactLock:a.drawingFactLock,bodyTableForbidden:(0,k._C)(a.bidComposition),bodyFigureForbidden:(0,k.kO)(a.bidComposition),identityMarksForbidden:!!a.bidComposition?.identityMarksForbidden,coverForbidden:a.bidComposition?.formatRules.cover==="forbidden",clarificationAmendments:a.clarificationAmendments?.amendments}),dY(a),a.qualityBundle=await dV({finalChapterDrafts:a.finalChapterDrafts,effectiveChapters:a.effectiveChapters,factsModel:a.factsModel,allEvidence:a.allEvidence,finalMarkdown:a.finalMarkdown,validationIssues:a.validationIssues,retrievalCoverageReports:a.retrievalCoverageReports,includeRetrievalCoverage:!1,template:a.template,tenderRequirements:a.tenderRequirements,bidComposition:a.bidComposition,drawingFactLock:a.drawingFactLock,structuredFacts:a.structuredFacts,authorityAuditReport:a.authorityAuditReport,professionalDepthClassifier:a.professionalDepthClassifier,evaluationCriteriaItems:a.evaluationCriteriaItems,supersededTruthValues:new Set((a.truthValues||[]).flatMap(a=>a.superseded||[]).map(a=>(0,w.K3)(a)))}),a.validationIssues=a.qualityBundle.validationIssues}}async function d$(a){let b=(0,n.hS)(a.finalMarkdown,[...a.structuredFacts,...a.factsModel.preciseFacts]);if(b.length>0){let c=[[/项目名称|工程名称|项目编号|招标人|建设单位|发包人|建设地点|建设规模|招标范围|施工范围/u,/概况|基本信息|概述|总述|简介/u],[/计划工期|合同工期|天数/u,/工期|进度|施工部署|总体部署|流水/u],[/质量标准|质量目标/u,/质量/u],[/危大|安全/u,/安全/u],[/资源|材料|机械|设备|机具/u,/资源|投入|物资|机械|设备|机具|周转/u],[/面积|占地|建筑面积|长度|宽度|高度|厚度|深度|强度|等级|坡度|管径|直径|规格|跨度|周长|体积|重量/u,/概况|施工方法|主要施工|方案/u]],d=new Map,e=[],f=[];for(let f of b){let b=c.find(([a])=>a.test(f.label)),g=b?a.finalChapterDrafts.find(a=>b[1].test(a.title)):void 0;if(!g){e.push(`${f.label}=${f.value}`);continue}let h=d.get(g.id)||[];h.push({label:f.label,value:f.value,fact:f.fact}),d.set(g.id,h)}let h=0;for(let[b,c]of d){let d=a.finalChapterDrafts.findIndex(a=>a.id===b);if(d<0)continue;let i=a.finalChapterDrafts[d],k=a.effectiveChapters.find(a=>a.id===i.id||a.title===i.title),l=(0,j.X5)({type:"llm_review",roleId:`agent-fact-landing-${b}`,status:"running",message:`正在落位 ${c.length} 条重要事实:${i.title}`,details:[...c.map(a=>`${a.label}=${a.value}`),...e.map(a=>`跳过:${a}(无匹配章节)`),...f.map(a=>`超限跳过:${a}`)]},{subtitle:"事实落位修复"});(0,j.fx)(a.progressStages,l),(0,j.fx)(a.finalGateRepairStages,l),a.emitProgress(a.finalChapterDrafts,a.progressStages);let m=["【事实落位定向修复】\n下列资料事实是项目硬数据,当前正文未出现。请逐条定位到本章最合适的位置(项目概况引导段、项目基本信息表对应行或对应小节),以局部 patch 方式自然写入,保持原始数值、单位与表述口径,不得改写、换算或编造。\n不得新增、删除或合并小节;表格内补充必须保持表头结构不变;只修改与落位事实直接相关的局部文本。",c.map(a=>`- ${a.label}=${a.value}`).join("\n")].join("\n"),o=0,p=await av({originalContent:i.content,repairRound:"fact-landing",diagnostics:a.generationDiagnostics,apply:async()=>{let b=await a.withProgressHeartbeat(()=>(0,g.l8)({template:a.template,chapter:{id:i.id,title:i.title,content:i.content,evidence:i.evidence,missingFacts:i.missingFacts,sections:i.sections},issues:c.map(a=>`已确认事实未在正文中落位:${a.label}=${a.value}`),promptTexts:m,requirement:a.requirement,forbidDrawingImages:!1,bidComposition:a.bidComposition,diagnostics:a.generationDiagnostics,signal:a.signal,patchGuard:(0,g.XG)("fact-landing",a.generationDiagnostics)}));return b.content&&b.content!==i.content?(o=b.appliedCount,k?(0,n.w_)(b.content,k):b.content):i.content},recheck:a=>[(0,n.hS)(a,c.map(a=>a.fact)).length]});p.rolledBack||p.content===i.content||(a.finalChapterDrafts[d]={...i,content:p.content},h+=o);let q=(0,j.X5)({type:"llm_review",roleId:`agent-fact-landing-${b}`,status:p.rolledBack||0===o?"failed":"success",message:p.rolledBack?`重要事实落位已回滚:${i.title}(修复后事实缺失增多,保留修复前正文)`:o>0?`重要事实落位完成:${i.title}(${o} 处 patch)`:`重要事实落位未生效:${i.title}`,details:c.map(a=>`${a.label}=${a.value}`)},{subtitle:"事实落位修复"});(0,j.fx)(a.progressStages,q),(0,j.fx)(a.finalGateRepairStages,q),a.emitProgress(a.finalChapterDrafts,a.progressStages)}h>0&&(a.finalMarkdown=a.rebuildFinalMarkdown(),await a.recomputeFinalValidationBundle())}}var d_=c(80572),d0=c(56963),d1=c(7148),d2=c(31530),d3=c(12863);function d4(a,b){return Math.abs(a-b)<=.01+1e-6*Math.max(Math.abs(a),Math.abs(b))}function d5(a,b){return!!d4(a,b)||Number.isInteger(a)&&(Math.trunc(b)===a||Math.round(b)===a)}function d6(a){let b=(a||"").trim().toLowerCase();return(0,d1.Sn)(b)}let d7=/^([^。;;\n|]{0,12}?)([\d,,]+(?:\.\d+)?)\s*(座|个|套|处|盏|棵|株|樘|扇|根|块|片|组|件|孔|间|栋|幢|户|米|m|km|公里|平方米|m2|㎡|m²|立方米|m3|m³|kg|吨|t)(?![a-zA-Z0-9²³])/u;function d8(a,b){let c=[];if(!b||0===b.entries.length)return c;let d=b.entries.map(a=>({...a,name:(a.name||"").trim()})).filter(a=>a.name.length>=2&&!aj.e.test(a.name)&&Number.isFinite(a.quantity)&&a.quantity>0);if(0===d.length)return c;let e=new Map;for(let a of d){let b=e.get(a.name);b?b.push(a):e.set(a.name,[a])}let f=[];for(let b of e.keys())for(let[c,d]of[[(0,d3.Lp)(b),!0],[(0,d3.nv)(b),!1]]){let e=RegExp(c,"gu");for(let c of a.matchAll(e)){let a=c.index??0;f.push({name:b,start:a,end:a+c[0].length,strict:d})}}f.sort((a,b)=>(a.strict!==b.strict?a.strict?-1:1:0)||a.start-b.start||b.end-b.start-(a.end-a.start)||b.name.length-a.name.length);let g=[];for(let b of f){let f=b.start,h=b.end;if(g.some(a=>f<a.end&&h>a.start)||(g.push({start:f,end:h}),/\d$/u.test(b.name)&&/^[\d.]/u.test(a.slice(h,h+1))||"量"===a.slice(h,h+1)))continue;let i=a.slice(h,h+20),j=d7.exec(i);if(!j||aj.As.test(j[1]))continue;let k=Number.parseFloat(j[2].replace(/[,,]/gu,""));if(!Number.isFinite(k))continue;let l=d6(j[3]),m=e.get(b.name)??[],n=m.map(a=>a.quantity),o=d.find(a=>a.name!==b.name&&d4(a.quantity,k)&&d6(a.unit)===l),p=j[1].length;c.push({name:b.name,value:k,unit:l,valueText:j[2],valueStart:h+p,sameNameEntries:m,sameNameQuantities:n,foreignEntry:o})}return c}async function d9(a,b){let c=[],d=[],e=[],f=await a9(a);if(!f.degraded)for(let g of f.groups){let f=bd(g,{markdown:a,billFactLock:b.billFactLock,blueprintQuantities:b.blueprintQuantities});if("distinct-lock-entries"===f.verdict){d.push(`“${g.concept}”对应${f.entries}`);continue}if("no-anchor"===f.verdict){e.push(`“${g.concept}”:${[...new Set(g.values.map(a=>a.raw))].slice(0,3).join("、")}`);continue}for(let b of f.nonLock)for(let d of b.occurrences){let h=d.matchIndex+d.valueOffset,i=a.slice(Math.max(0,h-40),h+d.valueText.length+40),j=(0,d2.Rd)({authorityOwner:f.entryName,bodyLocation:g.concept,bodyWindow:i,found:b.raw,authority:`${f.lockValue}${f.lockUnit||""}`});if(!j.allowed){e.push(`“${g.concept}” ${b.raw}→${f.lockValue}${f.lockUnit||""} 未过统一改写闸门(${j.reason}),保留检测不改正文`);continue}c.push({start:h,end:h+d.valueText.length,replacement:String(f.lockValue),detail:`参数口径“${b.concept}” ${b.raw}→${f.lockValue}${f.lockUnit}(以工程量清单条目「${f.entryName}」锁定口径为准)`,concept:g.concept})}}for(let d of(0,s.mB)(a,b.specAuthorityMap))d.replacement&&c.push({...d.replacement,location:d.location});for(let d of d8(a,b.billFactLock)){if(d.sameNameQuantities.some(a=>d5(d.value,a))||!d.foreignEntry)continue;if(1!==d.sameNameEntries.length){let a=[...new Set(d.sameNameEntries.map(a=>`${a.quantity}${a.unit}`))].slice(0,3).join("、");e.push(`“${d.name}”同名清单条目 ${d.sameNameEntries.length} 条(如 ${a} 等),正文 ${d.value}${d.unit} 无法确定性替换,交 LLM 定向修复`);continue}let b=d.sameNameEntries[0];if(d6(d.unit)!==d6(b.unit))continue;let f=(0,d2.Rd)({authorityOwner:d.name,bodyLocation:d.name,bodyWindow:a.slice(Math.max(0,d.valueStart-40),d.valueStart+d.valueText.length+40),found:`${d.value}${d.unit}`,authority:`${b.quantity}${b.unit}`,bindingKind:"sameName"});if(!f.allowed){e.push(`“${d.name}” ${d.value}${d.unit}→${b.quantity}${b.unit} 未过统一改写闸门(${f.reason}),保留检测不改正文`);continue}c.push({start:d.valueStart,end:d.valueStart+d.valueText.length,replacement:String(b.quantity),detail:`名称-数值绑定「${d.name}」 ${d.value}${d.unit}→${b.quantity}${b.unit}(清单条目「${d.name}」权威口径)`,binding:d.name})}if(0===c.length)return{replacements:[],falsePositiveGroups:d,noAnchorGroups:e,details:[]};let g=(0,s.gk)(a,c).markdown,h=new Set,i=await a9(g);if(!i.degraded){let a=new Set(i.groups.map(a=>a.concept));for(let b of new Set(c.filter(a=>a.concept).map(a=>a.concept)))a.has(b)&&(c.forEach((a,c)=>{a.concept===b&&h.add(c)}),e.push(`“${b}”锁值替换复检未清零,已回滚交 LLM 定向修复`))}let j=new Map;for(let a of c)a.location&&j.set(a.location,(j.get(a.location)||0)+1);if(j.size>0){let a=(0,s.mB)(g,b.specAuthorityMap),d=new Map;for(let b of a)b.replacement&&d.set(b.location,(d.get(b.location)||0)+1);for(let[a,b]of j)(d.get(a)||0)>=b&&(c.forEach((b,c)=>{b.location===a&&h.add(c)}),e.push(`“${a}”规格替换复检未减数,已回滚交 LLM 定向修复`))}let k=new Set(d8(g,b.billFactLock).filter(a=>1===a.sameNameEntries.length&&a.foreignEntry&&d6(a.unit)===d6(a.sameNameEntries[0].unit)&&!a.sameNameQuantities.some(b=>d5(a.value,b))).map(a=>a.name));for(let a of new Set(c.filter(a=>a.binding).map(a=>a.binding)))k.has(a)&&(c.forEach((b,c)=>{b.binding===a&&h.add(c)}),e.push(`“${a}”名称-数值绑定替换复检未清零,已回滚交 LLM 定向修复`));let l=[...new Set(c.filter((a,b)=>!h.has(b)).map(a=>a.detail))].slice(0,12);return{replacements:c.filter((a,b)=>!h.has(b)).map(a=>({start:a.start,end:a.end,replacement:a.replacement,detail:a.detail})),falsePositiveGroups:d,noAnchorGroups:e,details:l}}var ea=c(71001);let eb={type:"object",required:["conflicts"],properties:{conflicts:{type:"array",required:!0,items:{type:"object",required:!0,properties:{kind:{type:"string",required:!0},itemA:{type:"string",required:!0},itemB:{type:"string",required:!0},description:{type:"string",required:!0},confidence:{type:"number",required:!0}}}}}};async function ec(a,b={}){let c=function(a){let b=[];for(let c of a.split(/\r?\n/u)){let a=c.trim();if(a){if(/^\|/u.test(a)&&/[\d]/u.test(a)){b.push(a.slice(0,160));continue}if(!/^#{1,6}\s/u.test(a))for(let c of a.split(/(?<=[。;;])/u)){let a=c.trim();a.length>=6&&a.length<=160&&/[\d]/u.test(a)&&b.push(a)}}}let c=[...new Set(b)],d=function(){let a=process.env.DOCUMENT_CONSISTENCY_SAMPLE_LIMIT;if(void 0===a||""===a)return 120;if("0"===a)return 200;let b=Number(a);return Number.isFinite(b)&&b>0?Math.floor(b):120}();return c.length<=d?c:c.map((a,b)=>({sentence:a,index:b,density:(a.match(/[\d,]+(?:\.\d+)?/gu)||[]).length})).sort((a,b)=>b.density-a.density||a.index-b.index).slice(0,d).sort((a,b)=>a.index-b.index).map(a=>a.sentence)}(a);if(c.length<2)return{conflicts:[]};let d={},e=await (0,dr.bb)([(0,ad.y4)("你是施工组织设计数据一致性审查器。"),"给定全文含数值的句子/表格行清单(编号与内容),找出互相矛盾的数值对:\n- 同一口径必须一致而实际数值不同:劳动力峰值多处不一致、同一面积两处数字不同、总工期与分项工期冲突、同一节点日期两处不一致、表格合计与明细之和不等、人数\xd7工期与总工日不自洽;\n- 只报确定的矛盾(itemA 与 itemB 明确矛盾且置信度 ≥0.8),不得臆造;\n- 不同口径的数值不算矛盾:建筑面积 vs 占地面积、不同单位的表述;分阶段各期人数互比不算矛盾(各阶段人数不同是正常配置);\n- 但总量控制上限与分阶段峰值必须自洽:“高峰期总人数控制在X人/高峰总人数X人以内/控制在X人以下”与任何“高峰投入Y人/阶段高峰Y人/峰值Y人”(Y>X)构成矛盾,必须上报;\nitemA/itemB 必须是清单中真实出现的原文片段(逐字引用编号对应句子或表格行的关键片段,含数值)。\n只输出 JSON,不得输出其他内容。"].join("\n"),c.map((a,b)=>`${b+1}. ${a}`).join("\n"),{maxTokens:2500,temperature:0,signal:b.signal,diagnostics:b.diagnostics,schema:eb,taskKind:"structuredGeneration",outFailure:d});return e?{conflicts:(e.conflicts||[]).filter(a=>"string"==typeof a.itemA&&"string"==typeof a.itemB&&a.itemA.trim()&&a.itemB.trim()).filter(a=>(a.confidence??0)>=.7)}:{conflicts:[],failure:d.value||"LLM 未返回有效结果"}}var ed=c(22213),ee=c(3063);let ef=/两可|按图纸|资料[^。;;\n]{0,14}(?:未明确|两可|冲突)|支护[^。;;\n]{0,10}并存/u;async function eg(a){let{chapterDraftsFinal:b,progressStages:c,emitProgress:d}=a,e=a.globalConsistencyIssues,f=0,g=0;for(let a of b){let b=a.content.split(/\r?\n/u).length,c=(0,s.lR)(a.content),d=(0,s.QM)(c.markdown),e=(0,s.Vc)(d.markdown);b-e.markdown.split(/\r?\n/u).length>0&&(f+=c.removedCount+d.removedCount,g+=e.removedCount,a.content=e.markdown)}if(f>0||g>0){let a=b.map(a=>a.content).join("\n\n"),h=[...(0,s.ub)(a),...(0,s.cl)(a)].map(a=>`${a.message};${a.suggestion||""}`);e=[...new Set([...e.filter(a=>!/表格重复|段落完全重复/u.test(a)),...h])];let i=[f>0?`重复表格 ${f} 行`:"",g>0?`重复段落 ${g} 行`:""].filter(Boolean).join("、");(0,j.fx)(c,(0,j.X5)({type:"llm_review",roleId:"post-table-dedup",status:"success",message:`补表后确定性去重:${i}`},{subtitle:"表格执行率核验"})),d(b)}return e}async function eh(a,b){let{chapterDraftsFinal:c,template:d,repairPromptTexts:e,requirement:f,signal:h,generationDiagnostics:i,progressStages:l,emitProgress:m,withProgressHeartbeat:n,bidComposition:o}=a,p=a=>!b||!b.plannedChapterKeys.has((0,cj.YZ)(a.title)),q=c.filter(p).map(a=>({chapter:a,tableCount:(0,ad.ao)(a.content),blocks:(0,ad.wV)(a.content)})).filter(a=>a.tableCount>0);if(0===q.length)return{tableFixApplied:!1};let r=b?"无计划表格修复":"正文拆表修复",s=b?"本章未列入系统表格计划(正文表格须来自系统表格计划,不得自设)":"招标正文禁表(显式禁表句)";(0,j.fx)(l,(0,j.X5)({type:"llm_review",roleId:"table-execution-repair",status:"running",message:`${r}:${q.length} 个章节正文残留表格(${s})`},{subtitle:r})),m(c);let t=0,u=[],v=async a=>{let{chapter:c,tableCount:j,blocks:l}=a;return av({originalContent:c.content,repairRound:"table-execution-repair",diagnostics:i,beforeMetrics:[j],apply:async()=>{let a=await n(()=>(0,g.X6)(i,`body-table-dismantle:${c.id}`,()=>(0,g.l8)({template:d,chapter:{id:c.id,title:c.title,content:c.content,evidence:c.evidence||[],missingFacts:c.missingFacts||[],sections:c.sections},issues:[b?(0,k.zs)(j):(0,k.bh)(j)],promptTexts:e,requirement:f,forbidDrawingImages:!b||(0,k.kO)(o),bidComposition:o,diagnostics:i,signal:h,patchGuard:(0,g.XG)("table-execution-repair",i),anchorTexts:l.length>0?l:void 0,maxTokens:Math.min(12e3,Math.max(6e3,1600*l.length))})));return a.content&&a.content!==c.content?a.content:c.content},recheck:a=>[(0,ad.ao)(a)]})};(await Promise.allSettled(q.map(a=>v(a)))).forEach((a,b)=>{if("rejected"===a.status){if(h?.aborted)throw a.reason;u.push(`${q[b].chapter.title}:拆表修复异常(${a.reason instanceof Error?a.reason.message:"未知错误"})`);return}let c=a.value,{chapter:d}=q[b];if(c.rolledBack)return void u.push(`${d.title}:拆表后表格数不降反升,已回滚本轮修改`);c.content&&c.content!==d.content?(d.content=c.content,t+=1):u.push(`${d.title}:拆表 patch 未应用(${i?.llm.lastError||"无产出"})`)});let w=c.filter(p).reduce((a,b)=>a+(0,ad.ao)(b.content),0);return(0,j.fx)(l,(0,j.X5)({type:"llm_review",roleId:"table-execution-repair",status:w>0?"failed":"success",message:w>0?`${r}:${t} 章已改写,${b?"未授权章":"正文"}仍有 ${w} 处表格残留(终检门禁拦截)`:`${r}:${t} 章已改写,${b?"未授权章表格清零":"正文表格清零"}`,details:u},{subtitle:r})),m(c),{tableFixApplied:t>0}}async function ei(a){let{effectiveChapters:b,chapterDraftsFinal:c,template:d,repairPromptTexts:e,requirement:f,signal:h,generationDiagnostics:i,progressStages:l,emitProgress:m,withProgressHeartbeat:n}=a;if((0,k._C)(a.bidComposition))return eh(a);let o=new Set(b.filter(a=>(a.tablePlans?.length||0)>0||(a.tableSections?.length||0)>0||(a.diagramRequirements?.length||0)>0).map(a=>(0,cj.YZ)(a.title))),p=await eh(a,{plannedChapterKeys:o}),q=(0,c_.Xi)(b,c),r=p.tableFixApplied;if(q.length>0)for(let a=0;a<1&&q.length>0;a+=1){(0,j.fx)(l,(0,j.X5)({type:"llm_review",roleId:"table-execution-repair",status:"running",message:`表格执行率修复第 ${a+1} 轮(${q.length} 个章节缺表)`},{subtitle:"表格执行率修复"})),m(c);let k=0,o=[],p=q.flatMap(a=>{let b=c.find(b=>b.title===a.chapterTitle||a.chapterTitle.includes(b.title)||b.title.includes(a.chapterTitle));return b?[{gap:a,draft:b}]:[]}),s=async a=>{let{gap:j,draft:k}=a,l=[...new Set(j.plans.map(a=>a.section).filter(Boolean))],m=l.length>0?k.evidence.filter(a=>{let b=a.sectionTitle;return!b||l.some(a=>b===a||b.includes(a)||a.includes(b))}):k.evidence,o={id:k.id,title:k.title,content:k.content,evidence:m.length?m:k.evidence,missingFacts:k.missingFacts||[],sections:k.sections},p=`计划表格缺失(本章计划 ${j.planned} 张,正文实际检出 ${j.actual} 张):${j.plans.map(a=>`${a.title}(表头:${a.fields.map(a=>a.name).join("、")})`).join(";")}。必须按表头字段补齐这些 markdown 表格并紧跟相关小节输出,不得删除已有正文;每个表格前须有 1~2 句引导叙述说明表格作用与关键结论,表格不能替代小节正文;表格内项目特有数字、日期、工程量、规格必须来自项目资料或项目图谱,不得编造;人数、台班、进度时间等计划类数值必须原样引用蓝图权威锚点(劳动力峰值、工种构成、分阶段投入、机械台数、总工期节点),不得基于工程量或定额自行推算另设,不得留空、不得写“按需配置”等空话。`;return av({originalContent:k.content,repairRound:"table-execution-repair",diagnostics:i,beforeMetrics:[j.plans.length],apply:async()=>{let a=await n(()=>(0,g.X6)(i,`table-execution-repair:${k.id}`,()=>(0,g.l8)({template:d,chapter:o,issues:[p],promptTexts:e,requirement:f,forbidDrawingImages:!0,diagnostics:i,signal:h,patchGuard:(0,g.XG)("table-execution-repair",i),maxTokens:Math.min(12e3,Math.max(6e3,1200*j.plans.length))})));return a.content&&a.content!==k.content?a.content:k.content},recheck:a=>{let d=c.map(b=>b.id===k.id?{title:b.title,content:a,sections:b.sections}:b);return[(0,c_.Xi)(b,d).filter(a=>a.chapterTitle===k.title||a.chapterTitle===j.chapterTitle||k.title.includes(a.chapterTitle)||a.chapterTitle.includes(k.title)).reduce((a,b)=>a+b.plans.length,0)]}})},t=await Promise.allSettled(p.map(a=>s(a))),u=new Set;if(t.forEach((a,b)=>{if("rejected"===a.status){if(h?.aborted)throw a.reason;o.push(`${p[b].gap.chapterTitle}:修复异常(${a.reason instanceof Error?a.reason.message:"未知错误"})`);return}let c=a.value,{gap:d,draft:e}=p[b];if(c.rolledBack)return void o.push(`${d.chapterTitle}:修复后计划表格缺口增多,已回滚本轮修改`);c.content&&c.content!==e.content&&!u.has(e.id)?(e.content=c.content,u.add(e.id),k+=1):u.has(e.id)||o.push(`${d.chapterTitle}:缺 ${d.plans.map(a=>a.title).join("、")}(${i?.llm.lastError||"补表 patch 未应用"})`)}),0===k){(0,j.fx)(l,(0,j.X5)({type:"llm_review",roleId:"table-execution-repair",status:"failed",message:`表格执行率修复第 ${a+1} 轮:补表 patch 未应用(${q.length} 个章节缺表)`,details:o},{subtitle:"表格执行率修复"})),m(c);break}r=!0,m(c),q=(0,c_.Xi)(b,c),(0,j.fx)(l,(0,j.X5)({type:"llm_review",roleId:"table-execution-repair",status:q.length>0?"failed":"success",message:q.length>0?`表格执行率修复第 ${a+1} 轮完成,仍有 ${q.length} 个章节缺表`:`表格执行率修复第 ${a+1} 轮完成`},{subtitle:"表格执行率修复"})),(0,j.fx)(l,(0,j.X5)({type:"llm_review",roleId:"table-execution-review",status:q.length>0?"failed":"success",message:q.length>0?`表格执行率复检:仍有 ${q.length} 个章节缺表`:"表格执行率复检通过"},{subtitle:"表格执行率核验"}))}return{tableFixApplied:r}}function ej(a,b){if(!b)return!1;let c=/^##\s+(.+?)\s*$/mu.exec(a.content)?.[1];return b===a.title||b===c||a.content.includes(b)}async function ek(a){let{chapterDraftsFinal:b,template:c,repairPromptTexts:d,requirement:e,signal:f,generationDiagnostics:h,progressStages:i,emitProgress:k,withProgressHeartbeat:l,bidComposition:m}=a,n=!1;for(let a=0;a<2;a+=1){let o=b.map(a=>a.content).join("\n\n"),p=await (0,cI.Bt)(o),q=await (0,cI.gE)(o),r=p.fillerSentences>0,s=q.countermeasures>0&&q.ratio<.5,t=(0,cl.P_)(o),u=(0,cl.C4)(o),v=(0,cl.p5)(o),w=(0,cl.uj)(o),x=dM(b),y=t.length>0,z=u.length>0,A=v.length>0,B=w.length>0,C=x.length>0;if(!r&&!s&&!y&&!z&&!A&&!B&&!C)break;let D=r?await dL(b):[];C&&D.push(...x);let E=D.length>0?dN(b,D):{deletedCount:0,deletedSentences:[],remaining:D};E.deletedCount>0&&console.error(`[gen][templating] 零信息句(口号/前缀)确定性删除 ${E.deletedCount} 处:${E.deletedSentences.slice(0,3).join(" / ")}${E.deletedSentences.length>3?" 等":""}`);let F=b.map(a=>a.content).join("\n\n"),G=new Map(b.map(a=>[a.id,a.content])),H=(s?q.entries.filter(a=>!a.attributed||!a.quantified).slice(0,20):[]).flatMap(a=>{let c=a.text.replace(/\s+/gu,""),d=b.find(a=>a.content.replace(/\s+/gu,"").includes(c));return d?[{chapter:d,text:a.text,missingAttribution:!a.attributed,missingTarget:!a.quantified}]:[]}),I=b.flatMap(a=>{let b=E.remaining.filter(b=>(b.chapterId||b.chapterTitle)===(a.id||a.title)),c=b.filter(a=>"prefix"!==a.channel).map(a=>a.sentence),d=b.filter(a=>"prefix"===a.channel).map(a=>a.sentence),e=H.filter(b=>b.chapter.id===a.id).map(a=>({text:a.text,missingAttribution:a.missingAttribution,missingTarget:a.missingTarget})),f=t.filter(b=>ej(a,b.chapterTitle)),g=u.filter(b=>ej(a,b.chapterTitle)),h=v.filter(b=>ej(a,b.chapterTitle)),i=w.filter(b=>ej(a,b.chapterTitle));return c.length>0||d.length>0||e.length>0||f.length>0||g.length>0||h.length>0||i.length>0?[{chapter:a,sentences:c,prefixSentences:d,difficulty:e,frames:f,flows:g,patterns:h,titles:i}]:[]});if(0===I.length){E.deletedCount>0&&(n=!0,(0,j.fx)(i,(0,j.X5)({type:"llm_review",roleId:"templating-repair",status:"success",message:`模板化修复第 ${a+1} 轮:确定性删除零信息句(口号/前缀)${E.deletedCount} 处(无剩余重写目标)`},{subtitle:"模板化修复"})),k(b));break}let J=[r?`套话句占比 ${(100*p.ratio).toFixed(1)}%${E.deletedCount>0?`(已确定性删除零信息句 ${E.deletedCount} 处)`:""}`:"",C?`模板化前缀句 ${x.length} 处`:"",s?`重难点双达标 ${(100*q.ratio).toFixed(0)}%`:"",y?`骨架指纹 ${t.length} 组`:"",z?`工序形式 ${u.length} 处`:"",A?`句模复读 ${v.length} 处`:"",B?`标题缺陷 ${w.length} 处`:""].filter(Boolean).join("、");(0,j.fx)(i,(0,j.X5)({type:"llm_review",roleId:"templating-repair",status:"running",message:`模板化修复第 ${a+1} 轮:${J}(${I.length} 章)`},{subtitle:"模板化修复"})),k(b);let K=0,L=async a=>{let b=[];a.sentences.length>0&&b.push(`第 1~${a.sentences.length} 条目标原文是本章已检出的空话套话句(零信息纯口号句已由系统确定性删除,此处为含信息或合规承诺类命中句):逐条原地改写为“责任岗位 + 执行动作 + 量化标准 + 检查频次 + 整改时限”式可核查措施,且每条改写句必须嵌入不少于 2 个项目实体(村名/工程量/规格,取自本章证据摘要);禁止以同义空话替换、禁止改写清单外内容、不得凭空编造数值;属必须保留的合规承诺句须具体化到可核查。`);let i=a.sentences.length+1;if(a.prefixSentences.length>0){let c=a.prefixSentences.map(()=>{let a=i;return i+=1,a});b.push(`第 ${c.join("、")} 条目标原文是模板化前缀导语句(句首为“本节/本章将/以下从”式元话语):删除前缀后直接从作业对象、执行动作、量化措施切入改写,句内工程信息(数值/规格/岗位/频次)必须全部保留;禁止以同义导语替换。`)}for(let c of a.difficulty){let a=[c.missingAttribution?"归因句(该难点的成因/风险来源)":"",c.missingTarget?"量化控制目标(数值+单位,来自本章证据摘要或行业规范,不得编造)":""].filter(Boolean).join("与");b.push(`第 ${i} 条目标原文是重难点分析条目,缺少${c.missingAttribution&&c.missingTarget?"成因归因与量化控制目标":a}:保留条目原有事实与数值,在其内补充${a}。`),i+=1}for(let c of a.frames){let a=c.sentences.map(()=>{let a=i;return i+=1,a});b.push(`第 ${a.join("、")} 条目标原文含全篇复读骨架「${c.fingerprintLabel}」(全篇 ${c.totalCount} 处,验收上限 ${c.cap} 处):逐句改写为差异化句式(每条句子的动词与语序不得雷同,禁止集中复用同一替换说法),保留原句全部事实信息(岗位、数值、频次不得丢失)。`)}for(let c of a.flows)b.push(`第 ${i} 条目标原文是小节标题,其所在小节「${c.blockTitle}」的工序顺序表达当前为【${c.currentForm}】形式且与相邻小节同形式:将该小节的工序顺序表达改写为【${c.targetForm}】形式,内容与数值保持不变(工艺参数不得删减)。`),i+=1;for(let c of a.patterns){let a=c.sentences.map(()=>{let a=i;return i+=1,a});b.push(`第 ${a.join("、")} 条目标原文是同一句式模版在全篇复读的句子(该句式全篇 ${c.totalCount} 处,全篇保留额度 ${c.cap} 处):逐句改写为自然多样表达(变换句式结构与连接词组织,或拆分为多句;各句改写方向须彼此不同,禁止集中复用同一替换句式),保持原句全部工序顺序、数值与验收事实不变。`)}for(let c of a.titles)b.push(`第 ${i} 条目标原文是小节标题(${c.reason}):将该小节标题重命名为完整表达本小节内容的正式名称,正文内容不变;禁止使用“施工概况/施工流程/施工方法”等结构标签词充当标题。`),i+=1;return b.push("清单之外的内容一律不得改动;不得删除任何小节标题、表格与数值参数。"),l(()=>(0,g.X6)(h,`templating-repair:${a.chapter.id}`,()=>(0,g.l8)({template:c,chapter:{id:a.chapter.id,title:a.chapter.title,content:a.chapter.content,evidence:a.chapter.evidence||[],missingFacts:a.chapter.missingFacts||[],sections:a.chapter.sections},issues:[b.join("\n")],promptTexts:d,requirement:e,forbidDrawingImages:!0,bidComposition:m,diagnostics:h,signal:f,patchGuard:(0,g.XG)("templating-repair",h),anchorTexts:[...a.sentences,...a.prefixSentences,...a.difficulty.map(a=>a.text),...a.frames.flatMap(a=>a.sentences),...a.flows.map(a=>a.blockTitle),...a.patterns.flatMap(a=>a.sentences),...a.titles.map(a=>a.title)],maxTokens:6e3,evidenceChars:5e3})))},M=await av({originalContent:F,repairRound:"templating-repair",diagnostics:h,beforeMetrics:[p.ratio,q.ratio,t.length,u.length,w.length,(0,cI._Q)(o).length,v.length],apply:async()=>((await Promise.allSettled(I.map(a=>L(a)))).forEach((a,b)=>{if("rejected"===a.status){if(f?.aborted)throw a.reason;console.error("[gen] templating repair failed:",a.reason);return}let c=a.value,{chapter:d}=I[b];c.content&&c.content!==d.content&&(d.content=c.content,K+=1)}),k(b),b.map(a=>a.content).join("\n\n")),recheck:async a=>{let b=await (0,cI.Bt)(a),c=await (0,cI.gE)(a);return[b.ratio,c.ratio,(0,cl.P_)(a).length,(0,cl.C4)(a).length,(0,cl.uj)(a).length,(0,cI._Q)(a).length,(0,cl.p5)(a).length]},shouldRollback:(a,b)=>b[0]>a[0]+.01&&!(b[1]>a[1]+.01)||b.slice(2).reduce((a,b)=>a+b,0)>a.slice(2).reduce((a,b)=>a+b,0)});if(0===K&&0===E.deletedCount){(0,j.fx)(i,(0,j.X5)({type:"llm_review",roleId:"templating-repair",status:"failed",message:`模板化修复第 ${a+1} 轮:修复 patch 未落地(${I.length} 章锚点失配或 LLM 未产出)`,details:[`未收敛维度:${J}`]},{subtitle:"模板化修复"}));break}if(M.rolledBack){for(let a of b){let b=G.get(a.id);void 0!==b&&(a.content=b)}(0,j.fx)(i,(0,j.X5)({type:"llm_review",roleId:"templating-repair",status:"failed",message:`模板化修复第 ${a+1} 轮:修复后指标变差已回滚本轮修改(套话 ${(100*M.beforeMetrics[0]).toFixed(1)}%→${(100*M.afterMetrics[0]).toFixed(1)}%,治理缺陷目标 ${M.beforeMetrics.slice(2).reduce((a,b)=>a+b,0)}→${M.afterMetrics.slice(2).reduce((a,b)=>a+b,0)})`,details:["LLM 重写未收敛,回滚保留修复前正文"]},{subtitle:"模板化修复"})),k(b);break}n=!0}if(n){let a=b.map(a=>a.content).join("\n\n"),c=await (0,cI.Bt)(a),d=await (0,cI.gE)(a),e=(0,cl.P_)(a),f=(0,cl.C4)(a),g=(0,cl.p5)(a),h=(0,cl.uj)(a),l=(0,cI._Q)(a),m=c.ratio<.1&&(!d.heavyTemplated||0===d.countermeasures)&&0===e.length&&0===f.length&&0===g.length&&0===h.length&&0===l.length,n=[e.length>0?`骨架指纹 ${[...new Set(e.map(a=>`${a.fingerprintLabel}\xd7${a.totalCount}`))].join("、")}`:"",f.length>0?`工序形式相邻重复 ${f.length} 处`:"",g.length>0?`句模复读 ${[...new Set(g.map(a=>`${a.patternLabel}\xd7${a.totalCount}`))].join("、")}`:"",h.length>0?`标题缺陷 ${h.length} 处`:"",l.length>0?`模板化前缀句 ${l.length} 处`:""].filter(Boolean).join(";");(0,j.fx)(i,(0,j.X5)({type:"llm_review",roleId:"templating-repair",status:m?"success":"failed",message:`模板化修复完成:套话句占比 ${(100*c.ratio).toFixed(1)}%(达标线 ≤10%),重难点归因+量化双达标 ${(100*d.ratio).toFixed(0)}%(达标线 ≥50%)${n?`,模板化残留:${n}`:""}`,details:m?[]:["未完全收敛:残留项先由确定性修复链(终检前)收敛;复核未清零的残留经终检检测器判定,仍不达标即列入终检复核清单(不阻断导出,宁缺毋假)"]},{subtitle:"模板化修复"})),k(b)}return{templatingFixApplied:n}}async function el(a){let{chapterDraftsFinal:b,projectContext:c,template:d,repairPromptTexts:e,requirement:f,signal:h,generationDiagnostics:i,progressStages:k,emitProgress:l,withProgressHeartbeat:m,bidComposition:n}=a,o=/^#{3,4}\s+(?:\d+(?:\.\d+)*\s+)?(?:项目主要施工\s*内容|主要施工\s*内容|主要分部分项工程施工方案|主要分部分项施工方案|主要施工方法)\s*$/u,p=!1,q=0,r=0,s=(0,ed.sh)(c,b.flatMap(a=>a.evidence||[]));if(s.length>0){let a=/项目主要施工内容|主要施工内容|主要分部分项工程施工方案|主要分部分项施工方案|主要施工方法/u;for(let c of b){if(c.content.split("\n").some(a=>o.test(a.trim())))continue;let d=(c.sections||[]).find(b=>a.test(b));if(!d)continue;Array.isArray(c.sections)||(c.sections=[]);let e=c.sections.findIndex(b=>a.test(b)),f=e>=0?e+1:c.sections.length+1,g=`### ${b.indexOf(c)+1}.${f} ${d}`;c.content=`${c.content.replace(/\s+$/u,"")}
|
|
162
162
|
|
|
163
163
|
${g}
|
|
164
164
|
`,p=!0}let c=b.some(a=>a.content.split("\n").some(a=>o.test(a.trim()))),d=b.some(b=>(b.sections||[]).some(b=>a.test(b)));if(!c&&!d){let a=b.find(a=>/整体理解|工程概况|项目理解|招标范围|编制边界|现场踏勘|施工界面|主要施工方法|施工方案/u.test(a.title))||b[0];if(a){let c=b.indexOf(a);Array.isArray(a.sections)||(a.sections=[]);let d=a.sections.findIndex(a=>/项目主要施工内容|主要施工内容/u.test(a)),e=d>=0?d+1:(a.sections.push("项目主要施工内容"),a.sections.length),f=`### ${c+1}.${e} 项目主要施工内容`;a.content=`${a.content.replace(/\s+$/u,"")}
|