@customize-agent/server 4.55.17 → 4.55.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/build-manifest.json +2 -2
- package/.next/prerender-manifest.json +3 -3
- package/.next/server/chunks/208.js +3 -3
- package/.next/server/chunks/3145.js +11 -11
- 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 +25 -25
- package/package.json +1 -1
- /package/.next/static/{FjhiWw2QL_GzJobgS-Y3g → W8vd4K3m1xmU_hmfzkVEL}/_buildManifest.js +0 -0
- /package/.next/static/{FjhiWw2QL_GzJobgS-Y3g → W8vd4K3m1xmU_hmfzkVEL}/_ssgManifest.js +0 -0
|
@@ -11,7 +11,7 @@ ${o}
|
|
|
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,n.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=s.get(String(a.evidenceId||"").trim().toUpperCase());if(!b){y+=1;continue}let c=m.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,n.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 B=["投标保证金的金额、收款账户名称、开户行与账号","电子投标文件加密方式与解密方式","开标时间、开标地点与开标程序","评标委员会组成与评标办法","招标人联系人、联系电话、邮箱与地址","投标文件递交方式与递交截止时间","空白表格填写说明与上传下载指引","公共资源交易平台监督管理部门"],C=/签章|盖章|联系人|联系电话|电话|邮箱|解密方式|开标时间|开标地点|评标办法|评标委员会|投标保证金|保证金账户|电子交易系统|空白|填写|上传|下载|递交方式|递交截止|公共资源交易监督管理|监管部门|开评标程序|采购范围|是否|符合/u,D=/^\d+\s*个?\s*(?:日历天|天|个月|月|周|年)$/u,E=/^20\d{2}\s*(?:年\s*\d{1,2}\s*月|[.\-/]\d{1,2}(?:[.\-/]|$))/u;function F(a){return D.test(a)?"duration":E.test(a)?"date":"plain"}async function G(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,n.lG)(a.value).trim()).filter(a=>C.test(a)))],g=await (0,o.Mv)(f,B,d),i=a=>B.some(b=>g(a,b)>=.6),j=[];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=K((0,n.lG)(a).trim());if((0,h.d2)(b,d)||(0,h.rF)(b,d)||(d.match(/�|/gu)?.length||0)>=2||Array.from(d).some(a=>{let b=a.charCodeAt(0);return 65533===b||b<32&&9!==b&&10!==b&&13!==b})||/\|/u.test(d)||/^#+\s*/u.test(d)||/见(?:招标公告|投标人须知|前附表|本项目|补疑)|资料参数行摘要/u.test(d))return"";let e=d.match(/\d+\s*日历天/u)?.[0]?.replace(/\s+/gu,"");if(e&&/工期|日历天|开工日期|竣工/u.test(d))return e;let f=(0,k.K3)((0,n.lG)(d));return!f||f.length>80||!/[\d年月日%]|合格|一星|二星|三星|总价合同|单价合同|承台|框架|装配式/u.test(d)||C.test(d)&&c?.(d)?"":f}(a.value,c,i);b&&e.set(b,[...e.get(b)||[],a])}if(e.size<=1)continue;let f=new Set([...e.keys()].map(F));for(let a of 2!==f.size||f.has("plain")?[e]:["duration","date"].map(a=>new Map([...e].filter(b=>F(b[0])===a)))){if(a.size<=1)continue;let c=[...a.values()].slice(0,4).map(a=>`${(0,n.lG)(a[0].value).slice(0,120)}(${[...new Set(a.map(a=>a.sourceFile))].slice(0,3).join("、")})`).join(" vs ");j.push(`事实冲突:${b} 存在多个来源值:${c}`)}}return j.slice(0,8)}function H(a){return(0,n.lG)(a).replace(/\s*[##]{1,6}\s*/gu,"")}function I(a){return(0,n.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 J(a){return a.replace(/^(?:招标人|招标单位|建设单位|发包人|项目名称|工程名称|项目编号|招标项目编号|标段名称|建设地点|建设规模|招标范围|计划工期|合同工期|质量标准|质量目标)[::]\s*/u,"")}function K(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 L=[{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 M(a,b){let c=I((0,n.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)}let N=/\||第\s*\d+\s*页|共\s*\d+\s*页|[##]{1,6}| 资料参数行摘要|(?<=[日天])\s*[0-9]+(?:\.[0-9]+)?(?=[\s]*(?:招标|建设|质量|合同|项目|工程|资金|投标|开标|评标|付款|工期|开工|计划|计价|现场|资质|标段|[0-9]{1,3}[.、.]|[,,。;;]|$))/u,O=/规模|范围|工期|周期|project_scope|project_scale/iu,P=/^[A-Za-z0-9\-_.()()]+$/u,Q=/(?:招标项目编号|项目编号|工程编号|标段编号|合同编号|编号)[::为是]*([A-Za-z0-9][A-Za-z0-9\-_.()()]{3,79})/gu;function R(a){return"project_code"===a.fieldId||/编号|代码/u.test(`${a.fieldName||""}${a.key||""}`)}function S(a,b,c){let d,e=[];for(let f of a){let a=(0,n.lG)(f.value).trim();if(!a)continue;let g=N.exec(a),h=a;g&&(h=a.slice(0,g.index).replace(/[\s::,,、;;\-—|]+$/u,"").trim()),R(f)||(h=K(h));let i=h!==a;if(h.length<2){c.dropped+=1;continue}let j=R(f);if(j&&!P.test(h)||h.length>120&&!O.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 H((0,n.lG)(c.content)).replace(/\s+/gu,"").matchAll(Q)){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 T(a){let b={localFacts:function(a,b,c){let d=(0,j.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,j.I2)(b,a))continue;let d=b.content.match(c),e=d?.[1]?.trim();if(!e)continue;e=(e=H(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 H((0,n.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=I(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 L){let f=e.pattern.exec(a),g=f?.[1]?.trim();if(!g||!M(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,n.lG)(e.content).replace(/\s+/gu," ");for(let a of f.matchAll(m._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",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:u(a.evidence)},c={truncated:0,dropped:0,repaired:0};if(b.localFacts=S(b.localFacts,a.evidence,c),b.projectBasicFacts=S(b.projectBasicFacts,a.evidence,c),b.preciseFacts=S(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 U(a){return`${a.key} ${a.fieldName||""} ${a.value} ${a.roleId} ${a.processingType||""} ${a.sourceFile}`}function V(a){return/合同估算价|合同估算价格|投资估算|估算价格|工程估算价|项目估算价|最高投标限价|招标控制价/u.test(a)}function W(a){let b=U(a);return!V(b)&&/投标保证金|发票类型|开标时间|公共资源交易监督管理|不良行为记录|投诉举报|资质投诉|投标承诺|违约金|中标服务费|交易平台|保证金账户|投标有效期|报价明细|投标报价|单价|合价|税率|增值税|利润|结算/u.test(b)}function X(a){return(0,n.lG)(a).replace(/\s+/gu," ").trim()}function Y(a,b=[]){return[...new Set([a,...b,...a.split(/[\s、,。;;::/\\_-]+/u)].map(X).filter(a=>a.length>=2))]}function Z(a,b,c){var d,e;let f=X(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(X).filter(Boolean):Y(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 $(a,b,c,d,e,f=[]){"do_not_use"!==c.usagePolicy&&"diagnostic_only"!==c.usagePolicy&&"forbidden"!==c.derivationPolicy&&Z(a,b,{label:c.name,category:c.category,required:e,source:d,fieldId:c.id,queries:Y(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||[])Z(c,b,{label:d,category:(0,h.oC)(b,d)?.category||"required",required:!0,source:"template"});for(let d of a.chapter.sections||[])Z(c,b,{label:d,category:"section",required:!1,source:"section",queries:Y(d,[a.chapter.title])});for(let d of a.plan?.requiredContents||[])Z(c,b,{label:d,category:(0,h.oC)(b,d)?.category||"plan",required:!0,source:"plan"});for(let d of a.plan?.evidenceNeeds||[])Z(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&&Z(c,b,{label:e.name,category:(0,h.oC)(b,e.name)?.category||"spec",required:!0,source:"spec",fieldId:e.id,queries:Y(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)||Y(e.name,f?.aliases||[]).some(a=>d.includes(a))||a.chapter.requiredFacts.some(a=>a.includes(e.name)||e.name.includes(a)))&&Z(c,b,{label:e.name,category:f?.category||"spec",required:!0,source:"spec",fieldId:e.id,queries:Y(e.name,[g])})}for(let a of b.factFields)[a.name,...a.aliases].some(a=>a.length>=2&&d.includes(a))&&$(c,b,a,"profile","must_use"===a.usagePolicy,[d]);let f=X(a.requirement||"");if(f)for(let a of b.factFields)[a.name,...a.aliases].some(a=>a.length>=2&&f.includes(a))&&$(c,b,a,"requirement",!0,[f]);let g=X(a.promptTexts||"");if(g)for(let d of b.factFields)[d.name,...d.aliases].some(a=>a.length>=2&&g.includes(a))&&$(c,b,d,"prompt","must_use"===d.usagePolicy,[a.chapter.title]);return c}function aa(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 ab(a){let b=a.profile||h.p4,c=a.excludedEvidenceKeys,d=aa([...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(U(a))?.05:0,g=aa(d.filter(a=>(function(a,b,c){let d=U(a);if(W(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,p.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 ac(a){return aa(a.flatMap(a=>a.facts))}function ad(a){let b=a.map(a=>{let b=a.facts.filter((a,b,c)=>c.findIndex(b=>(0,n.lG)(b.value)===(0,n.lG)(a.value))===b).slice(0,5).map(b=>`${b.key||b.fieldName||a.need.label}=${ae(b.value)}${b.sourceFile?`(${e.basename(b.sourceFile)})`:""}`),c=a.facts.length?[]:(a.evidence||[]).slice(0,2).map(a=>`证据片段:${ae(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 ae(a){return(0,n.lG)(a).replace(/\s+/gu," ").trim().slice(0,220)}let af=/[\u3400-\u4DBF\u{20000}-\u{3FFFF}]/gu,ag=/(?:R\d+C\d+|COL\d+|第\d+行第\d+列)/giu;function ah(a){let b=a.match(/([\u4e00-\u9fa5]{2,8}?(?:镇|乡|县|市|区|街道|村))/u);return b?.[1]}function ai(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 aj(a){let b=`${a.key||""}${a.fieldName||""}${a.fieldId||""}`,c=I((0,n.lG)(a.value)).trim();if(!c)return a;if(/项目名称|工程名称|project_name/u.test(b)){if(C.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(ag.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 ak(a,b=[],c=[],d,e=h.p4){a=function(a){let b=a.filter(a=>!function(a){let b=(0,n.lG)(a.value);if(!b)return!1;let c=[...b.matchAll(af)].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!!ag.test(b)&&!!(b.replace(ag,"").trim().length<=24)}(a)).map(aj).filter(a=>(0,n.lG)(a.value).trim().length>0).filter(a=>!(0,q.j4)((0,n.lG)(a.value),{allowProse:!0,includePoolNoise:!1})),c=b.find(a=>("项目名称"===a.key||"project_name"===a.fieldId)&&(0,n.lG)(a.value).trim().length>=6),d=c?I((0,n.lG)(c.value)).trim():"",e=d?ah(d):void 0;return e?b.map(a=>{let b=`${a.key||""}${a.fieldName||""}${a.fieldId||""}`,c=I((0,n.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 ai(c,e)?{...a,value:""}:a;let d=b.filter(a=>!ai(a,e));return 0===d.length?{...a,value:""}:{...a,value:d.join(";")}}return/项目名称候选|项目名称|工程名称/u.test(b)&&ai(c,e)?{...a,value:""}:a}).filter(a=>(0,n.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 m.sv.test(b)&&(!(0,h.rF)(e,b)||V(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=v(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,n.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(w.some(a=>d.includes(a))){h=!0,c(d,a,f,e,b.sourceFile);continue}let g=f.match(x)?.[0];g&&g!==f&&c(y(g),a,g,e,b.sourceFile)}if(!h)for(let d of f.match(x)||[])c(y(d),a,d,e,b.sourceFile)}return b}(k),o=(function(a){let b=[];for(let c of a){let a=`${c.key||""}${c.fieldName||""}${c.fieldId||""}`,d=(0,n.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,U(a))||(0,h.E1)(d,U(a))),f=a.filter(a=>{let b=U(a);return a.confidence>=.58&&!W(a)&&!(0,h.rF)(d,b)&&!(0,h.d2)(d,b)&&!(0,h.E1)(d,b)}),g=[...b.filter(a=>!W(a)),...f.filter(a=>m.sv.test(U(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(U(a))),j=f.filter(a=>"drawing"===a.processingType||/drawing|dwg|图纸|施工图|设计图|平面图|剖面图|大样图|详图/u.test(U(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:o,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 G(a,d,e)}}},1358:(a,b,c)=>{c.d(b,{CE:()=>O,FA:()=>S,Gs:()=>G,Hp:()=>F,Ih:()=>Q,JV:()=>t,O7:()=>l,QP:()=>u,SR:()=>k,a2:()=>s,bX:()=>N,c$:()=>n,e$:()=>m,eS:()=>R,rj:()=>i,sl:()=>B,v7:()=>E,y6:()=>h});var d=c(22157),e=c(11248),f=c(31846);function g(a){return a.replace(/[\s,,.。::;;||、・·()()《》<>【】"“”'‘’]/gu,"").toLowerCase()}let h=g;function i(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 j(a){return[...a.project,...a.schedule,...a.quality,...a.safety,...a.resources,...a.preciseFacts,...a.bills,...a.drawings,...a.rules,...a.specifications]}function k(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 l(a){let b=String(a.value||"").trim(),c=`${a.label}${b}`;if(!/项目|工程|编号|地点|规模|范围|工期|质量|安全|资源|材料|设备|验收|招标人|建设单位|发包人|业主|\d/u.test(c)||!k(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 m(a,b){let c=new Set,e=[];for(let f of j(b)){let b=i((0,d.lG)(f.value).replace(/\s+/gu," ").trim()),h=f.fieldName||f.key||f.fieldId||"资料事实",j=`${h}:${b}`;!b||c.has(j)||(c.add(j),e.push({label:h,value:b,sourceFile:f.sourceFile,status:!function(a,b){let c=g(a),d=g(b);if(!d||d.length<2||c.includes(d))return!0;{let a=b.split(/[;;。\n]|、|,|,/u).map(a=>g(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=>g(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=>g(a).length>=2&&c.includes(g(a)))}(a,b)?"unplaced":"used",confidence:f.confidence}))}return e}function n(a,b={}){let c=a.filter(a=>"unplaced"===a.status&&l(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 o=/^(?:项目名称|名称|清单项名称|清单项目名称|分部分项(?:工程)?名称|项目特征|工程内容|材料名称|设备名称)/u,p=/^(?:项目编码|编码|编号)/u,q=/^(?:工程量|数量)/u,r=/单位/u;function s(a,b,c=""){let d=g(b),e=g(c),h=g(String(b||"").split(/[\s((、,,;;::]/u)[0]||"");return(h.length>=3||2===h.length&&!f.$B.has(h))&&a.includes(h.slice(0,12))||d.length>=3&&a.includes(d.slice(0,12))||e.length>=3&&a.includes(e.slice(0,8))}function t(a,b){let c=b.tables||[],d=[],e=g(a);for(let a of c){let b=a.headers.map(a=>a.replace(/\s+/gu,"").toLowerCase()),c=b.findIndex(a=>o.test(a)),g=b.findIndex(a=>p.test(a)),h=b.findIndex(a=>q.test(a)),i=b.findIndex(a=>r.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=s(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 u(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 v=/公厕|厕所|过路涵|涵洞|涵管|污水|排水沟|水沟|清淤|沟塘|小菜园|菜园|菜地|花池|树池|挡墙|护栏|路灯|检查井|化粪池|泵站|生态池|生态塘|护坡|驳岸|栈道|步道|管网|管道|道路|铺装|绿化|景观|基础|结构|防水|屋面|外墙|内墙|地面|门窗|栏杆|电梯|电气|给水|排水|消防|通风|空调|智能化|幕墙|基坑/u,w=/^(?:管网|管道|道路|铺装|绿化|景观|基础|结构|防水|屋面|外墙|内墙|地面|门窗|栏杆|电梯|电气|给水|排水|消防|通风|空调|智能化|幕墙|基坑)$/u,x={公厕:["公共厕所","厕所"],厕所:["公厕","公共厕所"],菜地:["菜园","小菜园"],菜园:["菜地"],小菜园:["菜地"],步道:["人行道","园路","游步道"]},y=/^(?:挖|回填|运|运输|拆除|清理|浇筑|绑扎|安装|铺设|砌筑|抹灰|刷|喷|摊铺|碾压|夯实|整平|找平|支模|搭设|检测|试验|防腐|除锈)/u,z=/计价|费用|税金|规费|暂列|暂估|合计|汇总|小计|措施项目|其他项目|税金项目/u;function A(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=g(e),h=t(a,c),i=[],j=new Set;for(let a of h){let b=(a.itemName||"").trim();if(!b||z.test(b)||y.test(b))continue;let c=[...b.matchAll(RegExp(v.source,"gu"))].map(a=>a[0]);if(0===c.length)continue;let d=c.filter(a=>!w.test(a));if(0===d.length)continue;let e=a=>f.includes(g(a))||(x[a]||[]).some(a=>f.includes(g(a)));if(d.some(e))continue;let h=b.slice(0,12);j.has(h)||(j.add(h),i.push({itemName:b,sample:a.quantity?`${a.quantity}${a.unit}`:""}))}return{methodChapters:d,gaps:i}}function B(a,b,c){let{methodChapters:d,gaps:e}=A(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 C=/工程名称|标段|第\s*\d+\s*页|共\s*\d+\s*页|序号|综合单价|合价|定额|暂估|测评|E\.1|分部分项工程量清单计价表|措施项目|其他项目|规费|税金/u,D=/^(?:其他|其它|零星|建筑|安装工程|土建|附属|附属工程|市政工程)$/u;function E(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&&!C.test(c))return{kind:"division",name:c};break}}return{kind:"none"}}(c);if("division"===a.kind){if(d(a.name)||D.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||v.test(a)).map(([a,b])=>({name:a,items:b})).slice(0,30)}function F(a){return 0===a.length?"":a.map(a=>a.items.length?`- ${a.name}(${a.items.join(";")})`:`- ${a.name}`).join("\n")}function G(a){let{methodChapters:b,gaps:c}=A(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("")}`,h=a.markdown.split("\n"),i=g(d.title),j=-1;for(let a=0;a<h.length;a+=1){let b=h[a];if(!/^##\s/u.test(b))continue;let c=g(b.replace(/^#+\s*/u,"").replace(/^第[一二三四五六七八九十百]+章/u,""));if(c&&(c.includes(i)||i.includes(c))){j=a;break}}if(j<0)return null;let k=h.length;for(let a=j+1;a<h.length;a+=1)if(/^##\s/u.test(h[a])){k=a;break}let l=k;for(;l>j+1&&!h[l-1].trim();)l-=1;let m=[...h.slice(0,l),"",f,...h.slice(l)];return d.content=`${(d.content||"").trimEnd()}
|
|
13
13
|
|
|
14
|
-
${f}`,{markdown:m.join("\n"),appended:c.map(a=>a.itemName)}}let H=RegExp(`(?:GB|JGJ|CJJ|CECS|ISO|SL|DL|JTS|JTG|JT|TB|DB\\d{2}|DB)\\s*\\/?\\s*T?\\s*(\\d{3,5})(?:\\s*[-—–]\\s*(\\d{2,4}))?`,"giu"),I=/检查|巡查|例会|培训|交底|演练|复核|记录|台账|考核|整改|保养|维护|监测|检测|排查|验收|清扫/u,J=/作业面|班组|工区|标段|片区|地块|单元|分部|队伍|小组|机构|部门|岗位|区域|社区|村庄|村|路段|楼栋|站区|库区|厂区/u,K=/分组|平行|流水|包保|分区|分片|分块|划分|组建|成立|配备|配置|设置|设立|建立|指定|安排|派驻/u,L=/违约金|延期竣工|解除合同|缺陷责任期|质量保证金|质保金|履约保证金|保修期|合理期限|工期顺延|误期赔偿|响应|抢修|回访/u,M=/\d+(?:\.\d+)?(?:\s*(?:mm|cm|km|m2|㎡|m²|m3|m³|hm2|亩|kg|g|t|吨|ml|l|升|mpa|kpa|kn|kw|mw|kv|v|hz|℃|%|万元|亿元|元|天|工作日|工作天|月|年|h|min|次|遍|轮|班|趟|周|季|点|人|名|组|支|队|台|套|件|个|根|只|项|处|座|栋|幢|层|间|批|盏|樘|孔|株|户|盘|块|片|条|道|节|段|张|袋|桶|罐|车|d|米|m))?/giu,N=/^\d+(?:\.\d+)?$/u,O=/^(?:m2|㎡|m²|平方米|平方|平米|m3|m³|立方米|立方|hm2|公顷|亩|mm|cm|km|m|米|kg|g|t|吨|个|台|套|项|处|座|株|组|批|次|人|天|月|年|万元|元|l|ml|樘|盏|根|只|块|片|条|道|层|间|栋|幢|户|袋|桶|罐|车|盘|孔|节|段|张|面|棵|丛)$/u,P={kind:"unsourced",basis:""};function Q(a){return a.replace(/(\d+\.\d*?)0+(?![\d])/gu,"$1").replace(/(\d+)\.(?![\d])/gu,"$1")}function R(a){let b=a.token.replace(/\s+/gu,""),c=(0,e.K3)(a.token),d=a.context||"";if(!c)return P;for(let a of d.matchAll(H)){if(c===a[1])return{kind:"regulatory",basis:"标准编号"};if(a[2]&&c===a[2])return{kind:"regulatory",basis:"标准编号年份"}}return/^(?:19|20)\d{2}年度?$/u.test(c)?{kind:"regulatory",basis:"年份表述"}:/^(?:3|7|10|14|21|28)(?:d|天)$/u.test(c)&&/养护|龄期|标养|同条件|强度|试验/u.test(d)?{kind:"regulatory",basis:"养护龄期"}:/^(?:50|100|150|200|250|400|500)m3$/u.test(c)&&/试块|留置|检验批|砂浆|混凝土|浇筑|砌筑/u.test(d)?{kind:"regulatory",basis:"试块留置/检验批"}:/^(?:50|100)盘$/u.test(c)||/^[1-9]组$/u.test(c)&&/试块|留置|砂浆|混凝土|抗压|强度|钢筋/u.test(d)?{kind:"regulatory",basis:"试块留置"}:/^(?:100|200|400|1000)m2$/u.test(c)&&/每层|压实度|检测|检验|测点|不少于|至少/u.test(d)||/^\d+点$/u.test(c)&&/检测|检验|测量|观测|测点|抽检|不少于|至少/u.test(d)?{kind:"regulatory",basis:"检测频次"}:/℃$/u.test(c)&&/温度|养护|浇筑|入模|气温|环境|温差|加热/u.test(d)?{kind:"regulatory",basis:"温度阈值"}:/^\d+(?:\.\d+)?%$/u.test(c)&&/压实度|饱满度|含泥量|密实度|压实系数|保证率|灰剂量|油石比/u.test(d)?{kind:"regulatory",basis:"质量指标"}:/^\d+(?:\.\d+)?mm$/u.test(c)&&/偏差|公差|误差/u.test(d)?{kind:"regulatory",basis:"工艺公差"}:/^\d+(?:\.\d+)?mpa$/u.test(c)&&/试压|水压|气压|压力试验|试验压力|工作压力|注浆|强度试验|严密性|稳压|压降/u.test(d)?{kind:"regulatory",basis:"工艺压力参数"}:/^m\d+(?:\.\d+)?$/u.test(c)&&/砂浆|砌筑|抹灰|强度|等级/u.test(d)?{kind:"regulatory",basis:"砂浆强度等级"}:(/^\d+(?:\.\d+)?mω$/u.test(c)||/^\d+(?:\.\d+)?m$/u.test(c)&&/[ωΩ]/u.test(d))&&/绝缘|接地|电阻|兆欧/u.test(d)?{kind:"regulatory",basis:"绝缘电阻"}:/^s\d+(?:\.\d+)?$/u.test(c)&&/ppr|pb|pvc|pe|管|系列|冷热|给水/iu.test(d)?{kind:"regulatory",basis:"管系列代号"}:/^(?!(?:dn|de|sc|jdg|hrb|hpb)\d)[a-z]{1,4}\d[\w./-]*$/u.test(c)&&/材质|牌号|型号|配置|开关|断路器|配电|电缆|配电箱|控制箱|规格型号/u.test(d)&&!/混凝土|钢筋|砂浆/u.test(d)?{kind:"regulatory",basis:"材料/设备规格型号"}:/^[md]\d{3,5}$/u.test(c)&&/门窗|洞口|管段|管节|桩号|里程|井位|大样|详图|图集|编号|图纸/u.test(d)&&!/直径|壁厚|管径|外径|内径|砂浆|砌筑/u.test(d)?{kind:"regulatory",basis:"图纸编号"}:/(?:大于|不小于|超过|不大于|不超过|小于)/u.test(d)&&/(?:规范|规定|要求|标准|条文|验收)/u.test(d)&&/^\d+(?:\.\d+)?(?:mm|cm|m|m2|m3|℃|%)$/u.test(c)?{kind:"regulatory",basis:"规范阈值"}:/^\d+(?:次|遍|轮|班|趟)$/u.test(c)&&/每|逐|定期|不少于|至少/u.test(d)&&I.test(d)?{kind:"management",basis:"管理频次"}:/^\d+个$/u.test(c)&&J.test(d)&&K.test(d)?{kind:"management",basis:"施工组织编排"}:/^\d+(?:人|名|组|支|队)$/u.test(c)&&/配备|配置|设置|组建|成立|设立|建立|派驻|指定|安排/u.test(d)&&/专职|兼职|管理|岗位|人员|班组|队伍|小组|安全|质量|技术|施工|材料|资料|机械|劳务|作业/u.test(d)?{kind:"management",basis:"组织配置"}:/(?:天|月|年|d|万元|元|%)$/u.test(c)&&L.test(d)?{kind:"management",basis:"合同程序条款"}:/^\d+(?:\.\d+)?%$/u.test(c)&&/完成|进度|利用率|得分|负荷|覆盖|达到|控制|以上|以下|不低于|合格率|优良率|成活率|出勤率|到岗率|出工率|一次验收/u.test(d)?{kind:"management",basis:"过程指标"}:/^\d+(?:\.\d+)?月$/u.test(b)&&/开工|竣工|计划|日期|旬|上旬|中旬|下旬|季度|汛期|雨季|冬季|夏季|月初|月底|年底|年中/u.test(d)?{kind:"management",basis:"日期表述"}:/^\d+(?:\.\d+)?小时$/u.test(c)&&/保修|响应|抢修|到场|时限|服务|承诺|维修|热线|回访/u.test(d)?{kind:"management",basis:"服务时限承诺"}:/^\d+天$/u.test(c)&&/合计|共计|总计|累计|总和|总共/u.test(d)&&/工期|工序|节点|进度|衔接|机动|预留|缓冲/u.test(d)?{kind:"management",basis:"工期合计编排"}:/(?:万元|亿元|元)$/u.test(c)&&/暂列金额|暂估价|报价|单价|合价|综合单价|税率|增值税|预留金|招标控制价|限价|造价/u.test(d)?{kind:"management",basis:"商务金额"}:P}function S(a,b){let c=function(a,b){let c=function(a){let b=[];for(let c of j(a)){let a=(0,d.lG)(c.value);a&&b.push(a)}for(let c of a.tables||[])for(let a of c.rows||[]){if(!Array.isArray(a)||0===a.length)continue;let c=a.map(a=>String(a??"").trim());b.push(c.join(" "));let d=[...new Set(c.filter(a=>N.test(a)).map(a=>Q(a)))];if(0===d.length)continue;let e=[...new Set(c.filter(a=>O.test(a)))];for(let a of d)for(let c of e)b.push(`${a}${c}`)}return b.map(a=>(0,e.K3)(a).replace(/(\d+\.\d*?)0+(?![\d])/gu,"$1").replace(/(\d+)\.(?![\d])/gu,"$1")).join("\n")}(b);if(c.length<40)return[];let f=[];for(let b of function(a){let b=[];for(let c of a.matchAll(M)){let d=c[0],f=c.index??0,g=(0,e.K3)(d);if(!g||/^\d+\.\d+$/u.test(g)||/^\d{9,}$/u.test(g))continue;let h=a.lastIndexOf("\n",f-1)+1,i=a.indexOf("\n",f),j=a.slice(h,i<0?a.length:i);if(/^\s*\|/u.test(j.trim()))continue;let k=/^\d+(?:\.\d+)?/u.exec(g)?.[0]??"",l=g.slice(k.length);if(!l&&!/^(?:19|20)\d{2}$/u.test(g)&&!/^\d{3,5}$/u.test(g))continue;let m=function(a,b,c){let d=b;for(;d>0&&!/[。;;!!??\n]/u.test(a[d-1]);)d-=1;let e=b+c;for(;e<a.length&&!/[。;;!!???\n]/u.test(a[e]);)e+=1;return a.slice(d,Math.min(e+1,a.length)).trim()}(a,f,d.length),n=R({token:d,context:m});(l||"unsourced"!==n.kind)&&b.push({token:d,normalizedToken:g,index:f,sentence:m,kind:n.kind,basis:n.basis})}return b}(a))"unsourced"===b.kind&&!function(a,b){let c=[b],d=Q(b);return d!==b&&c.push(d),c.some(b=>RegExp(`(?<![\\d.])${b.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&")}(?![\\d.])`,"u").test(a))}(c,b.normalizedToken)&&f.push({token:b.token,normalizedToken:b.normalizedToken,sentence:b.sentence,index:b.index});return f}(a,b);if(0===c.length)return[];let f=[...new Set(c.map(a=>a.token.replace(/\s+/gu,"")))];return[{level:"error",severity:"blocker",category:"evidence_coverage",owner:"llm",repairability:"llm_repairable",message:`生成后事实反查失败:正文出现 ${f.length} 处未溯源数值 ${f.slice(0,8).join("、")}${f.length>8?" 等":""}`,suggestion:"未溯源数值必须改为定性表述或显式标注来源:来自清单/图纸的保留并明确来源(清单条目/图纸编号);规范常数(试块留置/养护龄期/检测频次等)保留时显性标注规范名称与编号;其余改为不带具体数值的过程控制表述。"}]}},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,{Oq:()=>j,UD:()=>i,dm:()=>d,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=[],c=new Set,i=a=>{let d=`${a.superseded}\u0000${a.effective}`;a.superseded===a.effective||c.has(d)||(c.add(d),b.push(a))};for(let b of a){let a=String(b.text||"");if(a)for(let c of a.split(f)){let a=c.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),j=RegExp(`(${e})\\s*[::]?\\s*(${g.source}|[\\u4e00-\\u9fa5]{2,12})`,"u").exec(a);if(j){let c=j[2].trim();if(!/\d/u.test(c)||RegExp(e,"u").test(c))continue;let h=d(c);for(let e of[...a.slice(0,j.index).matchAll(RegExp(g.source,"gu"))].map(a=>a[0].trim()))e!==c&&d(e)===h&&i({superseded:e,effective:c,scope:f,evidence:[{source:b.source,snippet:a.slice(0,120)}],kind:"override"});continue}let k=[...a.matchAll(RegExp(`([\\u4e00-\\u9fa5]{2,8})\\s*[::]\\s*(${g.source})`,"gu"))];if(k.length>=2){let c=new Map;for(let a of k){let b=c.get(a[1])||[];b.push(a[2].trim()),c.set(a[1],b)}for(let[d,e]of c){let c=[...new Set(e)];c.length<2||i({superseded:c[0],effective:c[c.length-1],scope:[...new Set([...f,d])],evidence:[{source:b.source,snippet:a.slice(0,120)}],kind:"override"})}}}}return b}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()]}},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]}},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 H=RegExp(`(?:GB|JGJ|CJJ|CECS|ISO|SL|DL|JTS|JTG|JT|TB|DB\\d{2}|DB)\\s*\\/?\\s*T?\\s*(\\d{3,5})(?:\\s*[-—–]\\s*(\\d{2,4}))?`,"giu"),I=/检查|巡查|例会|培训|交底|演练|复核|记录|台账|考核|整改|保养|维护|监测|检测|排查|验收|清扫/u,J=/作业面|班组|工区|标段|片区|地块|单元|分部|队伍|小组|机构|部门|岗位|区域|社区|村庄|村|路段|楼栋|站区|库区|厂区/u,K=/分组|平行|流水|包保|分区|分片|分块|划分|组建|成立|配备|配置|设置|设立|建立|指定|安排|派驻/u,L=/违约金|延期竣工|解除合同|缺陷责任期|质量保证金|质保金|履约保证金|保修期|合理期限|工期顺延|误期赔偿|响应|抢修|回访/u,M=/\d+(?:\.\d+)?(?:\s*(?:mm|cm|km|m2|㎡|m²|m3|m³|hm2|亩|kg|g|t|吨|ml|l|升|mpa|kpa|kn|kw|mw|kv|v|hz|℃|%|万元|亿元|元|天|工作日|工作天|月|年|h|min|次|遍|轮|班|趟|周|季|点|人|名|组|支|队|台|套|件|个|根|只|项|处|座|栋|幢|层|间|批|盏|樘|孔|株|户|盘|块|片|条|道|节|段|张|袋|桶|罐|车|d|米|m))?/giu,N=/^\d+(?:\.\d+)?$/u,O=/^(?:m2|㎡|m²|平方米|平方|平米|m3|m³|立方米|立方|hm2|公顷|亩|mm|cm|km|m|米|kg|g|t|吨|个|台|套|项|处|座|株|组|批|次|人|天|月|年|万元|元|l|ml|樘|盏|根|只|块|片|条|道|层|间|栋|幢|户|袋|桶|罐|车|盘|孔|节|段|张|面|棵|丛)$/u,P={kind:"unsourced",basis:""};function Q(a){return a.replace(/(\d+\.\d*?)0+(?![\d])/gu,"$1").replace(/(\d+)\.(?![\d])/gu,"$1")}function R(a){let b=a.token.replace(/\s+/gu,""),c=(0,e.K3)(a.token),d=a.context||"";if(!c)return P;for(let a of d.matchAll(H)){if(c===a[1])return{kind:"regulatory",basis:"标准编号"};if(a[2]&&c===a[2])return{kind:"regulatory",basis:"标准编号年份"}}return/^(?:19|20)\d{2}年度?$/u.test(c)?{kind:"regulatory",basis:"年份表述"}:/^(?:3|7|10|14|21|28)(?:d|天)$/u.test(c)&&/养护|龄期|标养|同条件|强度|试验/u.test(d)?{kind:"regulatory",basis:"养护龄期"}:/^(?:50|100|150|200|250|400|500)m3$/u.test(c)&&/试块|留置|检验批|砂浆|混凝土|浇筑|砌筑/u.test(d)?{kind:"regulatory",basis:"试块留置/检验批"}:/^(?:50|100)盘$/u.test(c)||/^[1-9]组$/u.test(c)&&/试块|留置|砂浆|混凝土|抗压|强度|钢筋/u.test(d)?{kind:"regulatory",basis:"试块留置"}:/^(?:100|200|400|1000)m2$/u.test(c)&&/每层|压实度|检测|检验|测点|不少于|至少/u.test(d)||/^\d+点$/u.test(c)&&/检测|检验|测量|观测|测点|抽检|不少于|至少/u.test(d)?{kind:"regulatory",basis:"检测频次"}:/℃$/u.test(c)&&/温度|养护|浇筑|入模|气温|环境|温差|加热/u.test(d)?{kind:"regulatory",basis:"温度阈值"}:/^\d+(?:\.\d+)?%$/u.test(c)&&/压实度|饱满度|含泥量|密实度|压实系数|保证率|灰剂量|油石比/u.test(d)?{kind:"regulatory",basis:"质量指标"}:/^\d+(?:\.\d+)?mm$/u.test(c)&&/偏差|公差|误差/u.test(d)?{kind:"regulatory",basis:"工艺公差"}:/^\d+(?:\.\d+)?mpa$/u.test(c)&&/试压|水压|气压|压力试验|试验压力|工作压力|注浆|强度试验|严密性|稳压|压降/u.test(d)?{kind:"regulatory",basis:"工艺压力参数"}:/^m\d+(?:\.\d+)?$/u.test(c)&&/砂浆|砌筑|抹灰|强度|等级/u.test(d)?{kind:"regulatory",basis:"砂浆强度等级"}:(/^\d+(?:\.\d+)?mω$/u.test(c)||/^\d+(?:\.\d+)?m$/u.test(c)&&/[ωΩ]/u.test(d))&&/绝缘|接地|电阻|兆欧/u.test(d)?{kind:"regulatory",basis:"绝缘电阻"}:/^s\d+(?:\.\d+)?$/u.test(c)&&/ppr|pb|pvc|pe|管|系列|冷热|给水/iu.test(d)?{kind:"regulatory",basis:"管系列代号"}:/^(?!(?:dn|de|sc|jdg|hrb|hpb)\d)[a-z]{1,4}\d[\w./-]*$/u.test(c)&&/材质|牌号|型号|配置|开关|断路器|配电|电缆|配电箱|控制箱|规格型号/u.test(d)&&!/混凝土|钢筋|砂浆/u.test(d)?{kind:"regulatory",basis:"材料/设备规格型号"}:/^[md]\d{3,5}$/u.test(c)&&/门窗|洞口|管段|管节|桩号|里程|井位|大样|详图|图集|编号|图纸/u.test(d)&&!/直径|壁厚|管径|外径|内径|砂浆|砌筑/u.test(d)?{kind:"regulatory",basis:"图纸编号"}:/(?:大于|不小于|超过|不大于|不超过|小于)/u.test(d)&&/(?:规范|规定|要求|标准|条文|验收)/u.test(d)&&/^\d+(?:\.\d+)?(?:mm|cm|m|m2|m3|℃|%)$/u.test(c)?{kind:"regulatory",basis:"规范阈值"}:/^\d+(?:次|遍|轮|班|趟)$/u.test(c)&&/每|逐|定期|不少于|至少/u.test(d)&&I.test(d)?{kind:"management",basis:"管理频次"}:/^\d+个$/u.test(c)&&J.test(d)&&K.test(d)?{kind:"management",basis:"施工组织编排"}:/^\d+(?:人|名|组|支|队)$/u.test(c)&&/配备|配置|设置|组建|成立|设立|建立|派驻|指定|安排/u.test(d)&&/专职|兼职|管理|岗位|人员|班组|队伍|小组|安全|质量|技术|施工|材料|资料|机械|劳务|作业/u.test(d)?{kind:"management",basis:"组织配置"}:/(?:天|月|年|d|万元|元|%)$/u.test(c)&&L.test(d)?{kind:"management",basis:"合同程序条款"}:/^\d+(?:\.\d+)?%$/u.test(c)&&/完成|进度|利用率|得分|负荷|覆盖|达到|控制|以上|以下|不低于|合格率|优良率|成活率|出勤率|到岗率|出工率|一次验收/u.test(d)?{kind:"management",basis:"过程指标"}:/^\d+(?:\.\d+)?月$/u.test(b)&&/开工|竣工|计划|日期|旬|上旬|中旬|下旬|季度|汛期|雨季|冬季|夏季|月初|月底|年底|年中/u.test(d)?{kind:"management",basis:"日期表述"}:/^\d+(?:\.\d+)?小时$/u.test(c)&&/保修|响应|抢修|到场|时限|服务|承诺|维修|热线|回访/u.test(d)?{kind:"management",basis:"服务时限承诺"}:/^\d+天$/u.test(c)&&/合计|共计|总计|累计|总和|总共/u.test(d)&&/工期|工序|节点|进度|衔接|机动|预留|缓冲/u.test(d)?{kind:"management",basis:"工期合计编排"}:/(?:万元|亿元|元)$/u.test(c)&&/暂列金额|暂估价|报价|单价|合价|综合单价|税率|增值税|预留金|招标控制价|限价|造价/u.test(d)?{kind:"management",basis:"商务金额"}:P}function S(a,b){let c=function(a,b){let c=function(a){let b=[];for(let c of j(a)){let a=(0,d.lG)(c.value);a&&b.push(a)}for(let c of a.tables||[])for(let a of c.rows||[]){if(!Array.isArray(a)||0===a.length)continue;let c=a.map(a=>String(a??"").trim());b.push(c.join(" "));let d=[...new Set(c.filter(a=>N.test(a)).map(a=>Q(a)))];if(0===d.length)continue;let e=[...new Set(c.filter(a=>O.test(a)))];for(let a of d)for(let c of e)b.push(`${a}${c}`)}return b.map(a=>(0,e.K3)(a).replace(/(\d+\.\d*?)0+(?![\d])/gu,"$1").replace(/(\d+)\.(?![\d])/gu,"$1")).join("\n")}(b);if(c.length<40)return[];let f=[];for(let b of function(a){let b=[];for(let c of a.matchAll(M)){let d=c[0],f=c.index??0,g=(0,e.K3)(d);if(!g||/^\d+\.\d+$/u.test(g)||/^\d{9,}$/u.test(g))continue;let h=a.lastIndexOf("\n",f-1)+1,i=a.indexOf("\n",f),j=a.slice(h,i<0?a.length:i);if(/^\s*\|/u.test(j.trim()))continue;let k=/^\d+(?:\.\d+)?/u.exec(g)?.[0]??"",l=g.slice(k.length);if(!l&&!/^(?:19|20)\d{2}$/u.test(g)&&!/^\d{3,5}$/u.test(g))continue;let m=function(a,b,c){let d=b;for(;d>0&&!/[。;;!!??\n]/u.test(a[d-1]);)d-=1;let e=b+c;for(;e<a.length&&!/[。;;!!???\n]/u.test(a[e]);)e+=1;return a.slice(d,Math.min(e+1,a.length)).trim()}(a,f,d.length),n=R({token:d,context:m});(l||"unsourced"!==n.kind)&&b.push({token:d,normalizedToken:g,index:f,sentence:m,kind:n.kind,basis:n.basis})}return b}(a))"unsourced"===b.kind&&!function(a,b){let c=[b],d=Q(b);return d!==b&&c.push(d),c.some(b=>RegExp(`(?<![\\d.])${b.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&")}(?![\\d.])`,"u").test(a))}(c,b.normalizedToken)&&f.push({token:b.token,normalizedToken:b.normalizedToken,sentence:b.sentence,index:b.index});return f}(a,b);if(0===c.length)return[];let f=[...new Set(c.map(a=>a.token.replace(/\s+/gu,"")))];return[{level:"error",severity:"blocker",category:"evidence_coverage",owner:"llm",repairability:"llm_repairable",message:`生成后事实反查失败:正文出现 ${f.length} 处未溯源数值 ${f.slice(0,8).join("、")}${f.length>8?" 等":""}`,suggestion:"未溯源数值必须改为定性表述或显式标注来源:来自清单/图纸的保留并明确来源(清单条目/图纸编号);规范常数(试块留置/养护龄期/检测频次等)保留时显性标注规范名称与编号;其余改为不带具体数值的过程控制表述。"}]}},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:()=>n,UD:()=>i,dm:()=>d,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,f)=>{let g=c.slice(Math.max(0,f-12),f+b.length+12);return RegExp(`${e}|原(?:为|值)|此前|由`,"u").test(g)?b:(d.push({from:b,to:a.effective}),a.effective)}));return{text:c,applied:d}}let l=[{attribute:"合同金额",re:/(?:最高投标限价|招标控制价|合同估算价(?:格)?|工程估算价|投标限价)[^。;\n]{0,16}?(?:现)?(?:调整)?为?\s*[::]?\s*([\d,]+(?:\.\d+)?)\s*(亿元|万元|元)/u},{attribute:"计划工期",re:/(?:计划工期|合同工期|总工期)[^。;\n]{0,16}?([\d,]+(?:\.\d+)?)\s*个?\s*日历天/u},{attribute:"开工日期",re:/(?:计划)?开工日期[^。;\n]{0,8}?[::]?\s*(20\d{2}\s*年\s*\d{1,2}\s*月\s*\d{1,2}\s*日)/u}],m=RegExp(`${e}\\s*[::]?\\s*(\\d{1,4})\\s*个?\\s*日历天`,"u");function n(a){let b=[],c=/作废|以本次(?:招标)?答疑附件(?:中材料)?为准|以澄清(?:文件)?为准/u;for(let d of a){let a=String(d.text||"");if(a)for(let e of a.split(/[。;;\n]/u)){if(e.length<6)continue;let a=c.test(e);for(let c of l){let f=c.re.exec(e);if(!f)continue;let g=f[1]?.replace(/,/gu,"")||"";if(!g)continue;if("计划工期"===c.attribute){let c=m.exec(e)?.[1];if(c){b.push({attribute:"计划工期",value:`${c}日历天`,source:d.source,supersedesPriorMaterials:a});continue}b.push({attribute:"计划工期",value:`${g}日历天`,source:d.source,supersedesPriorMaterials:a});continue}let h="合同金额"===c.attribute?`${g}${f[2]||""}`:(f[1]||"").trim();b.push({attribute:c.attribute,value:h,source:d.source,supersedesPriorMaterials:a})}}}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]}},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:()=>s,Ep:()=>r,I6:()=>v,KJ:()=>z,ab:()=>x,ap:()=>A,eB:()=>w,eL:()=>l,hL:()=>C,iA:()=>u,qj:()=>y,sh:()=>t,xu:()=>m,zX:()=>B});var d=c(70933),e=c(1218);c(78217),c(70208);var f=c(22157),g=c(3063);function h(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 i(a){return(0,d.eE)(a).replace(/#{2,6}\s*[^;;。\n]+/gu,"").replace(/资料内容事实[;;::]?/gu,"").replace(/\s+/gu," ").trim()}function j(a){let b=i(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 k(a){return a.split(/→|;|;|、|,|,/u).map(a=>i(a)).filter(a=>a&&a.length>=2&&a.length<=40).filter(a=>!/^按?施工准备$|^实施$|^检查$|^验收组织?$|^按规范和资料闭环$/u.test(a)).filter(a=>!/本项目为|总建筑面积|保留现状|专业施工内容统筹|招标文件列明|招标范围|未尽事宜|具备有效/u.test(a))}function l(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 m(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 n(a){let b=i(a);return!b||(b.match(/工程|维修|改造|安装|设备|系统|管网|屋面|门窗|消防|智能化/gu)||[]).length>=5&&!/\d|㎡|m2|m²|mm|厚|验收|检测|调试|试验|复试|记录|报告|材料|设备|规格|标准|检验批/u.test(b)}function o(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 p=/计价|费用|税金|规费|暂列|暂估|合计|汇总|小计|措施项目|其他项目|税金项目|金额|结算管理|竣工结算/u,q=/[[\]【】]/u;function r(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=i(a.name||""),d=i(a.scope||""),e=l([...a.quantities||[],...a.materials||[],...a.methods||[]].map(i).filter(j).filter(a=>!n(a))),f=m((a.process||[]).flatMap(k),e),g=(a.acceptance||[]).map(i).filter(a=>a&&!n(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=i(a[1]),e=i(a[2]),f=l(a[3].split(/[;;、,,]/u).map(a=>i(a)).filter(j).filter(a=>"按证据展开"!==a)),g=m(k(a[4]),f),h=a[5].split(/[;;、,,]/u).map(a=>i(a)).filter(a=>a&&"按规范和资料闭环"!==a).filter(a=>!n(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("包括但不限于"),j=(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=>i(a).replace(/["“”']/gu,"")).filter(a=>a.length>=3&&a.length<=20).filter(a=>d.test(a)).map(a=>o(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=>!q.test(a)).filter(a=>!p.test(a)),k=[];for(let a of j){let b=a.replace(/\s+/gu,"");k.some(a=>a.replace(/\s+/gu,"").includes(b)||b.includes(a.replace(/\s+/gu,"")))||k.push(a)}if(k.length>=3)return k.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||p.test(b)||q.test(b))&&(f.has(b)||(f.add(b),d.push(b)))}return d.slice(0,12)}(b),g=[],h=a=>{let b=o(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 r=/公厕|厕所|过路涵|涵洞|涵管|污水|排水沟|水沟|清淤|沟塘|塘|小菜园|菜园|菜地|花池|树池|挡墙|护栏|路灯|检查井|化粪池|泵站|生态池|生态塘|护坡|驳岸|栈道|步道/u;if(g.length<3)for(let a of[...f].sort((a,b)=>Number(r.test(b))-Number(r.test(a)))){if(g.length>=12)break;h(a)}else for(let a of f){if(g.length>=16)break;r.test(a)&&h(a)}return g}function s(a,b,c=3,d){let e=d??r(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 t(a,b,c=3){let d=r(a,b);return d.length>=c?d:[]}function u(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 v(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 w(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=v(l);return m===l?a:a.replace(l,m)}function x(a,b,c){let d=h(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 y(a,b,c){let d=h(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),i=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=`${i}${j.length>0?"#### ":""}${j.join("#### ")}`;return k===d?a:a.replace(d,k)}function z(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()}
|
|
@@ -19,9 +19,9 @@ ${d.trim()}
|
|
|
19
19
|
#### ${b}
|
|
20
20
|
|
|
21
21
|
${d.trim()}
|
|
22
|
-
`})}return c}function A(a){return(0,g.ap)(a)}function B(a,b){let c=a.map(a=>String(a||"").trim()).filter(Boolean);if(0===c.length||!b)return{markdown:b,promoted:[],missing:[]};let d=b.split(/\r?\n/u),e=new Set;for(let a of d){let b=/^###\s+(.+?)\s*$/u.exec(a.trim());b&&e.add((0,f.Sw)(b[1]))}let g=[],h=d.map(a=>{let b=/^(#{4,5})\s+(.+?)\s*$/u.exec(a.trim());if(!b)return a;let d=(0,f.Sw)(b[2]),h=c.find(a=>(0,f.Sw)(a)===d);return!h||e.has(d)?a:(e.add(d),g.push(h),`### ${h}`)}),i=c.filter(a=>!e.has((0,f.Sw)(a)));return{markdown:h.join("\n"),promoted:g,missing:i}}function C(a,b){let c=a.map(a=>String(a||"").trim()).filter(Boolean);if(0===c.length||!b)return[];let d=new Set;for(let a of String(b).split(/\r?\n/u)){let b=/^###\s+(.+?)\s*$/u.exec(a.trim());b&&d.add((0,f.Sw)(b[1]))}return c.filter(a=>!d.has((0,f.Sw)(a)))}},22496:(a,b,c)=>{c.d(b,{cn:()=>h});let d=[{id:"earthwork-excavation",name:"土方开挖",aliases:["土方","基坑开挖","土方开挖","挖土"],process:["测量放线","标高复核","分层开挖","边坡修整","基底验槽"],params:["分层开挖厚度≤2m","基底标高偏差0~-50mm","边坡坡度按土质取1:0.5~1:1","预留200~300mm人工清底"],acceptance:["基底验槽","钎探记录","标高与轴线复核","隐蔽验收记录"],standards:["GB 50202-2018 建筑地基基础工程施工质量验收标准"]},{id:"earthwork-backfill",name:"土方回填",aliases:["素土回填","填土碾压","回填","余方弃置","人工清底"],process:["基底隐蔽验收","分层摊铺","分层碾压","压实度检测","边角补夯","表面整平"],params:["每层虚铺厚度≤300mm","填土含水率控制在最优含水率\xb12%","压实系数≥0.94","边角部位采用小型夯实机补夯","压实度每层每100m\xb2不少于1组检测"],acceptance:["压实度检测报告","回填土施工记录","隐蔽验收记录"],standards:["GB 50202-2018 建筑地基基础工程施工质量验收标准","GB 50268-2008 给水排水管道工程施工及验收规范"]},{id:"foundation-pit-support",name:"基坑支护",aliases:["基坑支护","钢板桩","土钉墙","支护桩","冠梁"],process:["测量定位","支护桩成孔","钢筋笼制安","混凝土浇筑","冠梁施工","分层开挖","位移监测"],params:["桩位偏差≤50mm","垂直度≤1%","冠梁顶标高偏差\xb110mm","监测频率:开挖期每天1次","报警值按设计位移速率3mm/d"],acceptance:["桩身完整性检测","锚杆拉拔试验","基坑监测日报","专项方案审批记录"],standards:["JGJ 120-2012 建筑基坑支护技术规程","GB 50497-2019 建筑基坑工程监测技术标准"]},{id:"pile-foundation",name:"桩基工程",aliases:["桩基","钻孔灌注桩","预制桩","静压桩","PHC管桩"],process:["测量定位","成孔(压桩)","清孔验收","钢筋笼制安","混凝土灌注","桩身检测"],params:["桩径偏差\xb15mm","沉渣厚度≤50mm(端承桩)","充盈系数≥1.0","桩顶标高偏差\xb110mm","静载试验不少于总桩数1%且≥3根"],acceptance:["桩基静载试验","低应变/声波透射检测","成孔记录","钢筋隐蔽验收"],standards:["JGJ 94-2008 建筑桩基技术规范","GB 50202-2018"]},{id:"rebar-works",name:"钢筋工程",aliases:["钢筋","钢筋绑扎","钢筋加工","钢筋连接"],process:["翻样下料","加工成型","运输堆放","绑扎安装","隐蔽验收"],params:["直螺纹接头拧紧力矩值按规格控制","接头错开≥35d且≥500mm","保护层垫块间距≤1m","绑扎搭接长度按图集16G101"],acceptance:["钢筋原材复试","接头工艺检验","隐蔽工程验收记录","保护层实测"],standards:["GB 50204-2015 混凝土结构工程施工质量验收规范","JGJ 18-2012 钢筋焊接及验收规程"]},{id:"formwork-works",name:"模板工程",aliases:["模板","模板支撑","高支模","脚手架模板"],process:["方案编制","立杆搭设","主次龙骨铺设","面板安装","验收挂牌","拆模申请"],params:["立杆间距≤900\xd7900mm(危大)","扫地杆距地≤200mm","水平杆步距≤1500mm","剪刀撑连续设置","拆模强度:板≥75%设计强度"],acceptance:["高支模专项方案论证","架体验收挂牌","沉降变形监测","拆模令"],standards:["JGJ 162-2008 建筑施工模板安全技术规范","JGJ 130-2011 建筑施工扣件式钢管脚手架安全技术规范"]},{id:"concrete-works",name:"混凝土工程",aliases:["混凝土","砼浇筑","混凝土浇筑","振捣"],process:["浇筑申请","坍落度检测","分层浇筑","振捣密实","收面养护","试块留置"],params:["坍落度按配比\xb130mm","分层浇筑厚度≤500mm","振动棒快插慢拔","养护≥7d(掺外加剂≥14d)","标养试块每100m\xb3≥1组"],acceptance:["坍落度检测记录","试块标养与同条件报告","混凝土外观检查","强度评定"],standards:["GB 50204-2015","GB/T 50107-2010 混凝土强度检验评定标准"]},{id:"steel-structure",name:"钢结构工程",aliases:["钢结构","钢构件","焊接","高强螺栓"],process:["深化设计","构件加工","进场验收","吊装就位","校正固定","焊接/螺栓连接","涂装"],params:["高强螺栓初拧终拧扭矩比1.1","焊缝等级按设计一级/二级","挠度允许值L/400","防火涂料厚度按耐火极限"],acceptance:["焊缝探伤检测","高强螺栓扭矩检查","构件尺寸偏差实测","防火涂料厚度检测"],standards:["GB 50205-2020 钢结构工程施工质量验收标准","JGJ 82-2011 钢结构高强度螺栓连接技术规程"]},{id:"masonry-works",name:"砌体工程",aliases:["砌体","砌筑","加气块","二次结构"],process:["弹线定位","排砖撂底","砌筑","构造柱植筋","圈梁浇筑","顶砖处理"],params:["灰缝厚度8~12mm","垂直度偏差≤5mm(每层)","拉结筋间距≤500mm","顶砖间隔7d斜砌"],acceptance:["砌筑砂浆试块","构造柱钢筋隐蔽验收","垂直度平整度实测","拉结筋检测"],standards:["GB 50203-2011 砌体结构工程施工质量验收规范"]},{id:"waterproofing",name:"防水工程",aliases:["防水","屋面防水","卫生间防水","地下防水","卷材"],process:["基层处理","阴阳角附加层","防水层铺贴","搭接密封","闭水/淋水试验","保护层"],params:["卷材搭接宽度≥100mm","附加层宽度≥500mm","卫生间闭水试验48h","屋面蓄水试验24h","涂膜厚度按设计≥1.5mm"],acceptance:["闭水/蓄水试验记录","隐蔽验收记录","防水材料复试","淋水试验"],standards:["GB 50207-2012 屋面工程质量验收规范","GB 50208-2011 地下防水工程质量验收规范"]},{id:"plastering",name:"抹灰工程",aliases:["抹灰","粉刷","墙面抹灰","挂网"],process:["基层处理","浇水湿润","打点冲筋","分层抹灰","压光","养护"],params:["不同基体交接处挂网宽≥200mm","每遍抹灰厚度≤7mm","平整度偏差≤4mm","空鼓面积≤400cm\xb2且不连续"],acceptance:["空鼓敲击检查","平整度垂直度实测","养护记录"],standards:["GB 50210-2018 建筑装饰装修工程质量验收标准"]},{id:"tile-paving",name:"墙地砖铺贴",aliases:["墙地砖","瓷砖","铺贴","石材"],process:["基层检查","排砖放线","选砖泡水","铺贴","勾缝","成品保护"],params:["粘结层厚度≤10mm","接缝宽度按设计要求","空鼓率单块≤15%且整面≤5%","平整度偏差≤2mm"],acceptance:["空鼓锤击检查","平整度实测","坡度泼水检查","成品保护验收"],standards:["GB 50210-2018"]},{id:"ceil-partition",name:"吊顶与轻质隔墙",aliases:["吊顶","轻钢龙骨","隔墙","石膏板"],process:["弹线定位","龙骨安装","面板安装","接缝处理","面层施工"],params:["主龙骨间距≤1200mm","吊杆间距≤1000mm","罩面板接缝错开","石膏板接缝处粘贴网格布"],acceptance:["龙骨隐蔽验收","面板平整度实测","吊顶起拱检查"],standards:["GB 50210-2018"]},{id:"painting",name:"涂饰工程",aliases:["涂料","油漆","乳胶漆","腻子"],process:["基层清理","刮腻子","打磨","底漆","面漆","修整"],params:["腻子每遍厚度≤2mm","底漆1遍面漆2遍","施工温度5~35℃","平整度偏差≤2mm"],acceptance:["涂层色泽均匀检查","无流坠起皮检查","平整度实测"],standards:["GB 50210-2018"]},{id:"door-window",name:"门窗工程",aliases:["门窗","铝合金窗","幕墙","玻璃"],process:["洞口复核","安装固定","缝隙填塞","打胶密封","开启调试","淋水试验"],params:["框与墙间隙≤5mm","密封胶连续饱满","窗扇开关力≤50N","气密水密性能按设计等级"],acceptance:["淋水试验","开启灵活检查","垂直度偏差实测","性能检测报告"],standards:["GB 50210-2018","GB/T 7106-2019 建筑外门窗气密水密抗风压性能检测方法"]},{id:"plumbing",name:"给排水工程",aliases:["给排水","给水管道","排水管道","管道安装"],process:["预留预埋","支架安装","管道安装","压力试验","冲洗消毒","通水试验"],params:["给水管试验压力为工作压力1.5倍且≥0.6MPa","排水管坡度按管径DN50~DN200取2.5%~0.8%","支架间距按管径设置","PPR热熔温度260℃"],acceptance:["管道水压试验","通球试验","灌水试验","冲洗消毒记录"],standards:["GB 50242-2002 建筑给水排水及采暖工程施工质量验收规范"]},{id:"electrical",name:"电气工程",aliases:["电气","配管","穿线","桥架","配电箱","防雷接地"],process:["预留预埋","配管桥架","穿线放缆","设备安装","绝缘测试","通电调试"],params:["管路弯曲半径≥6D(埋地≥10D)","导线绝缘电阻≥0.5MΩ","桥架支架间距≤1.5m","防雷接地电阻≤1Ω"],acceptance:["绝缘电阻测试","接地电阻测试","通电试运行","隐蔽验收记录"],standards:["GB 50303-2015 建筑电气工程施工质量验收规范"]},{id:"hvac",name:"通风空调工程",aliases:["通风空调","风管","空调","新风","保温"],process:["风管制作","吊架安装","风管安装","设备安装","严密性试验","系统调试"],params:["风管支吊架间距≤3m","中压风管漏光法检测","保温层厚度按设计","风口风速按设计值\xb110%"],acceptance:["风管严密性试验","风量平衡调试","设备单机试运行","系统联动调试"],standards:["GB 50243-2016 通风与空调工程施工质量验收规范"]},{id:"fire-protection",name:"消防工程",aliases:["消防","消火栓","喷淋","火灾报警","防排烟"],process:["预留预埋","管道安装","喷头/探测器安装","系统试压","联动调试","检测验收"],params:["喷淋试验压力≥1.4MPa","消火栓充实水柱≥10m","探测器保护半径按类别","防排烟风管严密性"],acceptance:["消防水压试验","联动调试记录","消防检测报告","竣工验收备案"],standards:["GB 50261-2017 自动喷水灭火系统施工及验收规范","GB 50166-2019 火灾自动报警系统施工及验收标准"]},{id:"weak-current",name:"弱电智能化工程",aliases:["弱电","智能化","综合布线","监控","门禁"],process:["管线预埋","桥架敷设","线缆敷设","设备安装","单机调试","系统联调"],params:["双绞线弯曲半径≥4D","光缆弯曲半径≥15D","面板安装高度距地300mm","链路测试按TIA-568"],acceptance:["链路测试报告","单机调试记录","系统联调记录","隐蔽验收"],standards:["GB 50311-2016 综合布线系统工程设计规范","GB 50339-2013 智能建筑工程质量验收规范"]},{id:"municipal-road",name:"道路工程",aliases:["道路","路基","路面","水稳","沥青"],process:["测量放线","路基处理","分层碾压","水稳摊铺","沥青摊铺","标线设施"],params:["路基压实度≥93%(路床)","水稳层7d无侧限抗压强度按设计","沥青压实度≥96%","面层平整度≤5mm(3m直尺)"],acceptance:["压实度检测","弯沉检测","取芯厚度检测","平整度实测"],standards:["CJJ 1-2008 城镇道路工程施工与质量验收规范"]},{id:"municipal-pipe",name:"市政管道工程",aliases:["管道","雨污水","沟槽","检查井","承插管"],process:["测量放线","沟槽开挖支护","基础垫层","管道安装","接口处理","闭水试验","回填"],params:["沟槽开挖放坡按土质1:0.33~1:0.5","垫层厚度按设计≥100mm","管道安装轴线偏差≤15mm","闭水试验渗水量按GB 50268","回填分层厚度≤250mm"],acceptance:["闭水试验记录","管内底高程检测","管道CCTV检测","回填压实度检测"],standards:["GB 50268-2008 给水排水管道工程施工及验收规范"]},{id:"demolition",name:"拆除工程",aliases:["拆除","墙体拆除","结构拆除","垃圾外运"],process:["方案编制","围挡隔离","管线切断","分层拆除","垃圾清运","验收交接"],params:["拆除顺序自上而下","垃圾清运日产日清","湿法作业降尘","既有保留部位防护到位"],acceptance:["拆除专项方案","既有设施保护检查","垃圾清运记录"],standards:["JGJ 147-2016 建筑拆除工程安全技术规范"]},{id:"structural-strengthen",name:"结构加固",aliases:["结构加固","粘钢","碳纤维","植筋","加大截面"],process:["设计交底","基层处理","植筋","粘贴加固","养护","检测验收"],params:["植筋锚固深度按设计≥15d","碳纤维布粘结强度≥2.5MPa","胶粘剂固化时间按产品说明","加大截面混凝土强度等级≥C25"],acceptance:["拉拔试验","粘结密实度检测","隐蔽验收记录"],standards:["GB 50367-2013 混凝土结构加固设计规范","GB 50550-2010 建筑结构加固工程施工质量验收规范"]},{id:"facade-renovation",name:"外立面整治",aliases:["外立面","立面修补","真石漆","外保温"],process:["脚手架搭设","空鼓铲除","界面处理","保温层施工","面层施工","验收落架"],params:["保温板粘贴面积≥40%","锚栓数量每平米≥6个","抗裂砂浆厚度3~5mm","面层垂直度偏差≤4mm"],acceptance:["粘结强度现场拉拔","锚栓拉拔试验","平整度实测"],standards:["GB 50411-2019 建筑节能工程施工质量验收标准","JGJ 144-2019 外墙外保温工程技术标准"]},{id:"scaffold",name:"脚手架工程",aliases:["脚手架","外架","落地架","悬挑架"],process:["方案编制","基础处理","立杆搭设","连墙件设置","安全网封闭","验收挂牌","拆除"],params:["立杆纵距≤1.5m","连墙件两步三跨","剪刀撑与地面夹角45\xb0~60\xb0","悬挑架工字钢锚固长度≥1.25倍悬挑长度","架体高于作业层1.5m"],acceptance:["架体分段验收","连墙件检查","安全网封闭检查"],standards:["JGJ 130-2011 建筑施工扣件式钢管脚手架安全技术规范"]},{id:"tower-crane",name:"起重吊装",aliases:["起重吊装","塔吊","吊装","汽车吊"],process:["方案编制","设备报验","基础验收","安装调试","检测备案","日常检查","拆除"],params:["吊装作业半径内警戒","吊索具安全系数≥6","塔吊垂直度≤4‰","风速≥6级停止吊装"],acceptance:["特种设备检测","安装验收记录","司机指挥持证检查"],standards:["JGJ 196-2010 建筑施工塔式起重机安装使用拆卸安全技术规程"]},{id:"electrical-hookup",name:"临时用电",aliases:["临电","临时用电","三级配电"],process:["方案编制","线路敷设","配电箱设置","接地保护","验收送电","日常巡检"],params:["三级配电两级漏保","漏电动作电流≤30mA/0.1s","PE线截面按相线1/2","电缆埋深≥0.7m","配电箱距地1.4~1.6m"],acceptance:["绝缘电阻测试","接地电阻测试","验收送电记录"],standards:["JGJ 46-2005 施工现场临时用电安全技术规范"]}],e=new Map,f=new Map;for(let a of d)for(let b of(f.set(a.id,a),e.set(a.name,a),a.aliases))e.set(b,a);let g=[{pattern:/安装工程|机电安装/u,cardIds:["electrical","plumbing","hvac","fire-protection","weak-current"]},{pattern:/结构加固|加固改造/u,cardIds:["structural-strengthen","concrete-works","rebar-works","formwork-works"]},{pattern:/装饰工程|装饰装修/u,cardIds:["plastering","tile-paving","ceil-partition","painting","door-window"]},{pattern:/外墙|屋面|立面/u,cardIds:["facade-renovation","waterproofing","scaffold"]},{pattern:/室外道排|道排|室外管网|雨污水/u,cardIds:["municipal-pipe","municipal-road","earthwork-excavation"]},{pattern:/智能化/u,cardIds:["weak-current"]},{pattern:/消防/u,cardIds:["fire-protection"]},{pattern:/拆除/u,cardIds:["demolition"]},{pattern:/水电改造/u,cardIds:["plumbing","electrical"]}];function h(a,b=[]){let c=new Set;for(let b of a){let a=e.get(b);for(let[d,f]of(a&&c.add(a),e))d.length>=3&&b.includes(d)&&c.add(f);for(let a of g)if(a.pattern.test(b))for(let b of a.cardIds){let a=f.get(b);a&&c.add(a)}}for(let a of d){if(c.size>=16)break;(!a.projectTypes||a.projectTypes.some(a=>b.includes(a)))&&c.add(a)}return[...c].slice(0,16)}},23760:(a,b,c)=>{c.d(b,{AC:()=>C,AN:()=>ad,Ai:()=>L,BV:()=>O,Bs:()=>bC,EJ:()=>ae,Ef:()=>J,Ff:()=>A,Fv:()=>Z,H4:()=>ac,Jn:()=>U,K1:()=>W,KI:()=>aV,M$:()=>bw,N1:()=>bo,NS:()=>aa,Pu:()=>bc,Qi:()=>a9,Qm:()=>_,R9:()=>E,RX:()=>bd,S2:()=>bq,SN:()=>af,ST:()=>aZ,Sn:()=>P,Ty:()=>Q,UO:()=>ab,VW:()=>ao,Yb:()=>aW,Z2:()=>a8,Zu:()=>aX,bM:()=>bs,cG:()=>bz,f8:()=>T,gN:()=>R,hd:()=>bx,hr:()=>aS,i0:()=>be,iC:()=>N,j9:()=>bt,ji:()=>bf,k0:()=>X,kQ:()=>bv,kw:()=>F,lH:()=>ba,lg:()=>bB,mJ:()=>ah,mR:()=>bu,pG:()=>H,qK:()=>am,qm:()=>aK,rz:()=>an,tW:()=>bp,v4:()=>bA,vY:()=>a7,vZ:()=>Y,wl:()=>I,xX:()=>aY,yd:()=>br,yw:()=>al});var d=c(8753),e=c(98281),f=c(37047),g=c(78217),h=c(11248),i=c(22213),j=c(1358),k=c(70208),l=c(40299),m=c(13145),n=c(91943),o=c(31263),p=c(31846),q=c(65667),r=c(91977),s=c(23500),t=c(22157),u=c(54185),v=c(3063),w=c(52922),x=c(41991),y=c(30836),z=c(35547);function A(a){let b={blocking:0,important:0,minor:0};for(let c of a)b[function(a){let b="string"==typeof a?a:a.message;if("error"===("string"==typeof a?void 0:a.level))return"blocking";for(let a of e.gr)if(a.pattern.test(b))return a.severity;return"minor"}(c)]+=1;return b}function B(a,b){let c=a.replace(/[\][()`*_>#|{},。、“”‘’:;!?,.!?:;-]+/gu," ").replace(e.ug," ").trim();if(c.length<120)return;let d=[...c.matchAll(/[A-Za-z][A-Za-z-]{2,}|[\p{Script=Han}]{2,}/gu)];if(d.length<30)return;let f=1,g=new Map;for(let a=0;a<d.length;a+=1){let e=d[a][0].toLowerCase();g.set(e,(g.get(e)||0)+1);let h=!1;if(a>0){let b=d[a-1],f=c.slice((b.index??0)+b[0].length,d[a].index??0);h=e===b[0].toLowerCase()&&""===f.trim()}if(h?f+=1:f=1,f>=12)return{level:"error",message:`${b} 存在重复 token 退化输出`,suggestion:"请重新生成该小节,禁止保留连续重复的英文单词或无意义片段。"}}let h=[...g.entries()].sort((a,b)=>b[1]-a[1])[0];if(h&&h[1]>=25&&h[1]/d.length>=.42)return{level:"error",message:`${b} 存在重复 token 退化输出`,suggestion:`检测到“${h[0]}”异常高频重复,请重新生成该小节。`}}function C(a,b=[]){let c=[],d=B(a,"全文");for(let a of(d&&c.push(d),b)){let b=B(a.content,`章节“${a.title}”`);for(let d of(b&&c.push(b),a.sections||[])){let b=d.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&"),e=a.content.match(RegExp(`^#{3,4}\\s+(?:\\d+(?:\\.\\d+)*\\s+)?${b}\\s*\\n([\\s\\S]*?)(?=^#{3,4}\\s+|^##\\s+|$)`,"mu"));if(!e)continue;let f=B(e[1],`小节“${d}”`);f&&c.push(f)}}return c}function D(a){return a.severity&&a.repairability?a:/小节只有标题|空小节|小节内容补写未完成/u.test(a.message)?{...a,severity:"blocker",repairability:"local_deterministic",category:"structure",owner:"system"}:/不得出现|提示词要求|疑似提示词指令标题|项目污染|生成未完成/u.test(a.message)?{...a,severity:"blocker",repairability:"llm_repairable",category:"structure",owner:"system"}:/事实一致性冲突|projectFactOnly|核心事实/u.test(a.message)?{...a,severity:"error"===a.level?"blocker":"warning",repairability:"manual_review",category:"fact_consistency",owner:"user"}:/证据使用覆盖率偏低|BOQ|落位|高分模块|专业链|闭环/u.test(a.message)?"error"===a.level?{...a,severity:"blocker",repairability:"llm_repairable",category:"evidence_coverage",owner:"llm"}:{...a,severity:"warning",repairability:"not_repair_needed",category:"evidence_coverage",owner:"system"}:"error"===a.level?{...a,severity:"blocker",repairability:"llm_repairable",category:"structure",owner:"system"}:"warning"===a.level?{...a,severity:"warning",repairability:"not_repair_needed",category:"style",owner:"system"}:{...a,severity:"suggestion",repairability:"not_repair_needed",category:"style",owner:"system"}}function E(a){let b=D(a);return"blocker"===b.severity&&(!!("error"===b.level&&"blocker"===b.severity&&/placeholder|source|style|format|structure/u.test(String(b.category||""))||"error"===b.level&&"blocker"===b.severity&&/交付置信度未达目标/u.test(a.message)||"error"===b.level&&"fact_consistency"===b.category&&/危大工程判定缺失|超危大工程判定缺失|支护形式与资料矛盾|支护形式未落地|设备进场时间荒谬|设备进场工序倒挂/u.test(a.message)||"error"===b.level&&"blocker"===b.severity&&"fact_consistency"===b.category&&"llm_repairable"===b.repairability||/提示词要求|疑似提示词指令标题|适用性自相矛盾|不得出现/u.test(a.message))||!/目录与正文/u.test(a.message)&&(/配置要求缺少必要内容/u.test(a.message)?"error"===a.level:!!/小节内容补写未完成|空小节|小节只有标题|生成未完成/u.test(a.message)||!/生成后事实反查失败/u.test(a.message)&&(/工序规格冲突/u.test(a.message)?"error"===a.level:!!/项目特点、重点、难点分析 正文不足|项目主要施工内容 正文不足/u.test(a.message)||!(/规划小节正文过短/u.test(a.message)||/事实一致性冲突:项目名称/u.test(a.message))&&(/跨章一致性|专业评分不足|专业缺口|泛化套话|缺少关键线路|缺少材料验收|缺少风险识别|缺少进场/u.test(a.message)?"error"===a.level&&!/证据使用覆盖率偏低|章节逻辑依赖不足|文档交付评分报告/u.test(a.message):!(!e.hc.test(a.message)||/章节审查|最终质量审查|不在本次招标范围内/u.test(a.message))))))}function F(a){let b=[];for(let c of a.split(/^##\s+/gmu).slice(1)){let a=c.split(/\r?\n/u),d=(a.shift()||"").trim(),e=new Map,f=new Map;for(let b of a){let a=/^###\s+(.+)$/u.exec(b.trim());if(a){let b=(0,l.xT)(a[1]);b.length>=2&&f.set(b,(f.get(b)||0)+1)}let c=/^####\s+(.+)$/u.exec(b.trim());if(!c)continue;let d=c[1],g=/^\d+(?:\.\d+)*/u.test(d);if(g&&!(0,u.cq)(d))continue;let h=g?(0,t.Sw)(d):d.replace(/\s+/gu,"");h.length<2||e.set(h,(e.get(h)||0)+1)}for(let[a,c]of f)if(!(c<2)&&(b.push({level:"error",message:`${d||"某章"} 存在同名小节重复:“${a}”出现 ${c} 次`,suggestion:"同主题内容应合并为一个小节;若确为不同方面,请重命名标题以区分内容,避免目录重复堆叠。"}),b.length>=6))return b;for(let[a,c]of e)if(!(c<2)&&(b.push({level:"error",message:`${d||"某章"} 存在同名小节重复:“${a}”出现 ${c} 次`,suggestion:"同主题内容应合并为一个小节;若确为不同方面,请重命名标题以区分内容,避免目录重复堆叠。"}),b.length>=6))return b}return b}let G=new Set(["如有","应用","措施","体系","管理","保障","要求","内容","工程","项目","施工"]);function H(a){return a.replace(/^拟采用/u,"").replace(/^针对/u,"").replace(/^确保/u,"").replace(/[((][^))]*[))]/gu,"").replace(/的保障体系与措施$|管理体系与措施$|保障体系与措施$/u,"").replace(/^\d{1,3}(?:[.、.]\d{1,3})*\s*/u,"").trim().split(/[、,,;;及与和]+/u).map(a=>a.replace(/^[的了者]+/u,"").trim()).filter(a=>a.length>=2&&!G.has(a))}function I(a,b,c={}){let d=[],e=a.replace(/\s+/gu,""),f=c.semanticSimilarity?a.split(/\n/u).filter(a=>/^#{2,4}\s/u.test(a.trim())).map(a=>a.trim().replace(/^#{2,4}\s+/u,"").replace(/^\d+(?:\.\d+)*[\s、.]+/u,"").trim()).filter(Boolean).slice(0,80):[];for(let a of b.slice(0,8)){let b=H(a);if(0!==b.length&&!b.some(a=>e.includes(a))){if(c.semanticSimilarity&&f.length>0&&Math.max(...f.map(b=>c.semanticSimilarity(a,b)))>=.6)continue;d.push({level:"warning",severity:"warning",message:`招标文件评分条目“${a}”未在正文中出现(核心词:${b.join("/")})`,suggestion:"评审条目必须逐条承接为正文小节;请补写对应内容并确保核心关键词落位,避免评标失分。"})}}return d}function J(a,b){let c=(b||[]).flatMap(a=>(a.sections||[]).filter(a=>/新技术|新工艺|新材料|新设备|四新/u.test(a)));if(0===c.length)return[];let d=[],e=(0,t.Xl)(a,"四新",{fuzzy:!0}),f=e?(0,g.V7)(e):0;for(let b of[...new Set(c)]){let c=(0,t.Xl)(a,b,{fuzzy:!0});if(!c||200>(0,g.V7)(c)){if(f>=200)continue;d.push({level:"warning",severity:"warning",message:`大纲承诺小节“${b}”未在正文成稿(正文 ${c?(0,g.V7)(c):0} 字,要求不少于 200 字)`,suggestion:"请补写四新技术应用小节成稿,落位本项目适用的创新工艺、新材料与新设备应用计划。"})}}return d}let K=["basic_facts","source_traceability","chapter_evidence","no_missing_content"];function L(a,b,c){let d=a.map(D),f=/封面|页眉|页脚|附图|图片引用|CAD图|示意图|插图/u,g=d.filter(a=>"error"===a.level&&E(a)&&!f.test(a.message)),h=d.filter(a=>"error"===a.level&&f.test(a.message)),i=[{key:"no_errors",label:"无阻断级校验错误",passed:0===g.length},{key:"basic_facts",label:"基础事实齐全",passed:b.project.length>0},{key:"source_traceability",label:"事实具备来源追踪",passed:[...b.project,...b.schedule,...b.quality,...b.safety].every(a=>!!a.sourceFile)},{key:"structured_precision",label:"结构化精确参数已使用",passed:b.preciseFacts.length<e.mu||a.every(a=>"error"!==a.level||!e.Ab.test(a.message))},{key:"chapter_evidence",label:"章节均具备证据",passed:c.every(a=>a.evidence.length>0)},{key:"no_missing_content",label:"无资料未提供章节",passed:c.every(a=>!a.content.includes("资料未提供"))},{key:"no_project_contamination",label:"无项目污染和事实一致性阻断",passed:!a.some(a=>"error"===a.level&&e.Uv.test(a.message)&&E(a))},{key:"numeric_consistency",label:"跨章数值口径与资料一致",passed:!a.some(a=>"error"===a.level&&/跨章一致性冲突|跨章一致性缺口|跨章一致性复核/u.test(a.message)&&E(a))},{key:"manual_postprocess",label:`封面/页眉页脚/附图等 ${h.length} 项由后期人工完善(不阻断导出)`,passed:!0,message:h.length?h.slice(0,5).map(a=>a.message).join(";"):void 0}],j=[...g,...i.filter(a=>K.includes(a.key)&&!a.passed).map(a=>({level:"error",severity:"blocker",category:"evidence_coverage",repairability:"manual_review",owner:"user",message:`交付门禁未通过:${a.label}`,suggestion:"该项由资料完备度决定,非正文改写可解:请补齐知识库对应资料并重新生成。"}))];return{passed:0===j.length,blockingIssues:j,checklist:i}}function M(a){let b=[],c=a.split(e.A5);for(let a=0;a<c.length;a+=1){if(!e.w7.test(c[a]))continue;let d=[];for(;a<c.length&&e.w7.test(c[a]);)d.push(c[a]),a+=1;a-=1,d.some(a=>e.N3.test(a))&&b.push(d.join("\n"))}return b}function N(a){let b=[...a.matchAll(e.DB)],c=[];for(let d=1;d<b.length;d+=1){let f=b[d].index||0,g=b[d+1]?.index??a.length,h=a.slice(f,g);e.Ks.test(h)&&c.push({level:"warning",message:`第 ${d+1} 章可能重复出现基础信息`,suggestion:"如该信息与本章主题无关,建议合并到更合适的概况类章节,避免重复铺陈。"})}if(0===b.length)return c;let d=b[0].index||0,f=b[1]?.index??a.length,g=a.slice(d,f),h=g.search(e.jM);if(h<=0)return c;let i=g.slice(0,h).replace(e.Dc,""),j=[];for(let a of e.Y8)RegExp(`${a}\\s*[::]`,"u").test(i)&&j.push(a);return j.length>=3&&c.push({level:"warning",message:`基础信息表前重复叙述字段:${j.join("、")}`,suggestion:"基础信息已表格化时,表格前只保留一句引导语,不要重复逐项叙述名称、编号、范围、周期、质量等字段。"}),c}async function O(a){let b=[],c=(0,w._Q)(a);c.length>0&&b.push({level:"warning",message:`存在模板化前缀或套话:${c.slice(0,3).join("、")}`,suggestion:"请删除“本节/本章将/以下从”等前缀,标题后直接进入对象、动作、措施、检查和闭环。"});let d=a.match(/OCR|提示词|绑定片段|后台|文件路径|识别错误|知识库证据|知识库已确认事实|通用兜底段落|兜底占位|兜底模板/giu);return d?.length&&b.push({level:"warning",message:`正文包含后台或资料处理话术:${[...new Set(d)].join("、")}`,suggestion:"建议改为正式文档语言,例如“资料文字不清”“资料口径不一致”“项目资料”,不得暴露后台处理过程。"}),b}function P(a){return/劳动力|人员|工种/u.test(a)?"劳动力计划":/机械|设备|机具/u.test(a)?"机械设备计划":/材料|物资/u.test(a)?"材料物资计划":/冬季|雨季|高温|台风|大风/u.test(a)?"特殊气候措施":""}function Q(a){let b=[];for(let c of a){let a=(c.sections||[]).filter(Boolean),d=a.filter((b,c)=>a.indexOf(b)!==c);d.length>0&&b.push({level:"warning",message:`${c.title} 存在重复小节:${[...new Set(d)].join("、")}`,suggestion:"请保留用户需求、模板或显式大纲中真实需要的小节,删除重复项。"});let e=new Map;for(let b of a){let a=P(b);a&&e.set(a,[...e.get(a)||[],b])}for(let[a,d]of e)d.length>1&&b.push({level:"warning",message:`${c.title} 存在重复主题小节:${a}(${d.join("、")})`,suggestion:"请合并同类小节,只保留一个主表或主方案,其他位置采用引用或执行说明。"})}return b}function R(a){let b=e.HX.exec(a);if(!b)return[{level:"error",message:"缺少目录页",suggestion:"请在封面后生成“## 目录”,并按一级章父级、二级小节子级组织。"}];let c=0,d=0;for(let a of b[1].split(e.A5))e.ZT.test(a)&&e.EB.test(a)&&(c+=1,e.sr.test(a)&&(d+=1));return c>0&&0===d?[{level:"error",message:"目录二级小节未作为子级缩进",suggestion:"目录应为父子级导航:一级章单独成行,二级小节至少缩进两个空格列在所属章下方。"}]:[]}function S(a){return a.replace(/^#+\s*/u,"").replace(/^第[一二三四五六七八九十百千万\d]+[章节篇部分]\s*/u,"").replace(/^\d+(?:\.\d+)*(?:[..、]|\s)+/u,"").replace(/[()]/gu,a=>"("===a?"(":")").replace(/[\s::.。;;,,、]+$/gu,"").replace(/的(?=保障体系|管理体系|控制体系|措施|方案|计划|要求)/gu,"").replace(/[\s()()::.。;;,,、-]/gu,"").trim()}function T(a){let b=function(a){let b=e.HX.exec(a);return b?b[1].split(e.A5).map(a=>/^\s*(\d+\.\d+)\s+(.+)$/u.exec(a.trim())).filter(a=>!!a).map(a=>({number:a[1]||"",title:S(a[2]||"")})).filter(a=>a.title):[]}(a),c=[...a.matchAll(/^###\s+(\d+\.\d+)\s+(.+)$/gmu)].map(a=>({number:a[1]||"",title:S(a[2]||"")})).filter(a=>a.title);if(0===b.length||0===c.length)return[];let d=b.map(a=>a.title),f=c.map(a=>a.title),g=new Set(f),h=new Set(d),i=d.filter(a=>!g.has(a)),j=f.filter(a=>!h.has(a)),k=[];i.length>0&&k.push({level:"error",message:`目录与正文不一致,目录小节未在正文中找到:${[...new Set(i)].join("、")}`,suggestion:"建议以最终清洗后的正文二级标题为准重新生成目录。"}),j.length>0&&k.push({level:"error",message:`目录与正文不一致,正文小节未进入目录:${[...new Set(j)].join("、")}`,suggestion:"建议重新生成目录,确保正文二级小节完整进入目录。"});let l=new Map(c.map(a=>[a.number,a.title])),m=new Set(b.map(a=>a.number)),n=b.filter(a=>l.has(a.number)&&l.get(a.number)!==a.title),o=c.filter(a=>!m.has(a.number));return b.length!==c.length&&k.push({level:"error",message:`目录与正文小节数量不一致:目录 ${b.length} 节、正文 ${c.length} 节`,suggestion:"正文 H3 编号必须连续单调且与目录一一对应;出现重复编号、跳号或丢节时以正文实际结构重建目录。"}),n.length>0&&k.push({level:"error",message:`目录与正文同一编号对应不同小节:${n.slice(0,5).map(a=>`${a.number} 目录「${a.title}」/正文「${l.get(a.number)}」`).join("、")}`,suggestion:"目录必须按正文 H3 实际编号与标题生成,同一编号不得对应不同小节名称。"}),o.length>0&&k.push({level:"error",message:`正文小节编号未出现在目录中:${o.slice(0,5).map(a=>`${a.number} ${a.title}`).join("、")}`,suggestion:"目录编号与正文编号必须全集一致。"}),k}function U(a){let b,c=[];for(let d of a.split(e.A5)){let a=d.trim(),e=/^##\s+第[一二三四五六七八九十百千万\d]+章\s+(.+)$/u.exec(a);if(e){b={ordinal:c.length+1,title:(e[1]||"").trim(),numbers:[],prefixNumbers:[]},c.push(b);continue}let f=/^###\s+(\d+)\.(\d+)\s+/u.exec(a);f&&b&&(b.prefixNumbers.push(Number(f[1])),b.numbers.push(Number(f[2])))}let d=[];for(let a of c){if(0===a.numbers.length)continue;let b=new Map;for(let c of a.prefixNumbers)b.set(c,(b.get(c)||0)+1);let c=[...b.entries()].sort((a,b)=>b[1]-a[1]||a[0]-b[0])[0]?.[0]??a.ordinal,e=[...new Set(a.prefixNumbers.filter(b=>b!==a.ordinal))].sort((a,b)=>a-b);e.length>0&&d.push({level:"error",severity:"blocker",category:"structure",message:`小节编号章号错位:第${a.ordinal}章「${a.title}」内出现 ${e.slice(0,8).map(a=>`${a}.x`).join("、")} 编号小节(应为 ${a.ordinal}.x)`,suggestion:`正文二级小节编号必须为「章序.节序」;按章序重排本章 H3 编号(降级 H4 不占 H3 编号)。`});let f=new Map;for(let b of a.numbers)f.set(b,(f.get(b)||0)+1);let g=[...f.entries()].filter(([,a])=>a>1).map(([a])=>a).sort((a,b)=>a-b);g.length>0&&d.push({level:"error",severity:"blocker",category:"structure",message:`小节编号重复:第${a.ordinal}章「${a.title}」${g.slice(0,8).map(a=>`${c}.${a}`).join("、")} 重复出现`,suggestion:"同章内同一小节编号只允许出现一次;重复编号为降级合并残留,按正文实际小节顺序重排编号。"});let h=Math.max(...a.numbers),i=Array.from({length:h},(a,b)=>b+1).filter(a=>!f.has(a));i.length>0&&d.push({level:"error",severity:"blocker",category:"structure",message:`小节编号缺号:第${a.ordinal}章「${a.title}」缺 ${i.slice(0,8).map(a=>`${c}.${a}`).join("、")}(实有 ${f.size} 个小节,最大编号 ${c}.${h})`,suggestion:"小节编号必须从 1 起连续;缺号源自降级合并占用编号或丢节,按正文小节顺序重排编号后同步重建目录。"})}return d}function V(a){let b=a.replace(/^#{1,6}\s+/u,"").replace(/^\s*\d+(?:\.\d+)*(?:[..、]|\s)+/u,"").replace(/^第[一二三四五六七八九十百千万\d]+[章节篇部分]\s*/u,"").trim(),c=(0,k.GQ)(b),d=/^(?:\d+(?:\.\d+)*\s*)?(?:[-—–]\s*)?(?:(?:判断|判定|识别|确认)?是否(?:涉及|涉|需要|适用).*|(?:如|若|如果)(?:涉及|不涉及|适用|不适用).*|.*(?:根据|结合).{0,12}(?:实际情况|项目情况|资料情况).{0,8}(?:判断|确定|编写|生成).*|.*(?:按需(?:生成|编写)|视情况|判断后|生成要求|编写要求|注意事项))\s*$/u;return d.test(b)||d.test(c)||(0,k.mq)(b)||(0,k.mq)(c)}function W(a){let b=[...a.matchAll(/^#{2,6}\s+(.+)$/gmu)].map(a=>(0,k.GQ)(a[1]||"")).filter(V);return b.length>0?[{level:"error",message:`正文存在疑似提示词指令标题:${[...new Set(b)].slice(0,8).join("、")}`,suggestion:"请删除或改写为正式施工组织设计小节标题,目录也不得收录该类标题。"}]:[]}function X(a){let b=[],c=a.split(e.A5).map(a=>a.trim()).filter(a=>a&&!/^#{1,6}\s+/u.test(a)&&!/^\s*\|/u.test(a)&&!/^<div\b/iu.test(a)),d=c.find(a=>S(a).length<=1);d&&b.push({level:"warning",message:`正文存在孤立字或残缺段落:${d}`,suggestion:"请删除残缺行或重新生成所在小节。"});let f=/^(?:[-*+]\s+|[((]?\d+[)).、]\s*)/u,g=/(?:按以下|如下|包括|分为|包含|列出).*[::]$/u,h=a=>/[::]$/u.test(c[a])&&a+1<c.length&&f.test(c[a+1]),i=a=>/[,、;:]$/u.test(c[a])&&a+1<c.length&&!f.test(c[a+1]),j=[];for(let a=0;a<c.length&&j.length<3;a+=1){let b=c[a];!(f.test(b)||g.test(b)||h(a)||i(a))&&(/[,、;:和与在为对将]$/u.test(b)||/(通过|包括|如下|主要包括|验收|合格后|复查合格后|设计风|确认后|具体如下|应符合|不少于|以及|且应|不得少于)$/u.test(b))&&j.push(b)}for(let a of j)b.push({level:"error",severity:"blocker",category:"format",owner:"llm",repairability:"llm_repairable",message:`正文存在疑似截断句:${a}`,suggestion:"请补完整该段落,避免以连接词、逗号、冒号或无句号的动作词结尾。"});let k=c.find(a=>a.length>380);k&&b.push({level:"warning",message:`正文存在过长段落:${k}`,suggestion:"请拆分为多段或表格,改善导出版式和可读性。"});let l=c.find(a=>/\S.+(?:\s|[。;;])(?:\d+[.、](?=\s|\*\*)\s*|[((]\d+[))]\s*|[-*+]\s+)\S.+(?:\s|[。;;])(?:\d+[.、](?=\s|\*\*)\s*|[((]\d+[))]\s*|[-*+]\s+)\S/u.test(a)&&!/\b\d+\.\d+\s*(?:mm|cm|m|㎡|m2|kg|t|MPa|kPa|V|KV|kV|A)\b/iu.test(a));l&&b.push({level:"error",message:`正文存在列表项粘连同一行:${l.slice(0,120)}`,suggestion:"有序列表和无序列表必须逐项独占一行,确保 Markdown/PDF/DOCX 正确排版。"});let m=a.match(/PDF\s*第\s*|(?:PDF\s*)?第\s*\d+\s*(?:[-—至到~~]\s*\d+)?\s*页|(?:图纸|清单|资料|文件|[\u4e00-\u9fa5A-Za-z0-9()()、·-]{2,24}(?:工程)?)\s*(?:[((]?\s*|(?:共|多达|约|合计)\s*)\d+\s*页|[\u4e00-\u9fa5A-Za-z0-9、及与和]{2,24}\s*(?:共|多达|约|合计)\s*\d+\s*页|\d+\s*页\s*(?:图纸|资料|文件|装饰|土建|加固|给排水|电气|智能化|消防)|\d+\s*页/iu)?.[0];m&&b.push({level:"error",message:`正文残留资料页码元信息:${m}`,suggestion:"正式投标正文应引用招标文件、施工图设计文件、工程量清单和相关专业图纸,不写 PDF 页码或资料页数。"});let n=c.find(a=>/仅作为内部事实提取依据|正式正文不得引用文件名|后台事实|内部事实/u.test(a));return n&&b.push({level:"error",message:`正文残留内部处理说明:${n.slice(0,120)}`,suggestion:"正式投标正文不得出现内部事实抽取、后台处理或文件名引用限制说明。"}),b}function Y(a){let b=[],c=a.split(e.A5),d=/。{2,}|[!?;:,、]{2,}|。[!?;:,、]|[!?;:,、]。/u;for(let a of c){let c=a.trim();if(!c||/^#{1,6}\s+/u.test(c)||/^\s*\|/u.test(c)||/^<div\b/iu.test(c))continue;let e=d.exec(c);if(e){let a=Math.max(0,e.index-24),d=`${c.slice(a,e.index)}【${e[0]}】${c.slice(e.index+e[0].length,e.index+e[0].length+24)}`;b.push({level:"error",severity:"blocker",category:"format",owner:"llm",repairability:"llm_repairable",message:`正文存在句读标点叠用(拼接/删节残留):${d}`,suggestion:"相邻句读标点(如「。;」「;。」「。。」)是删节拼接残留或省略号误写,请重写该句。"})}}for(let{open:d,close:e,label:f}of n.Rc){let g=a.split(d).length-1,h=a.split(e).length-1;if(g===h)continue;let i=c.find(a=>a.split(d).length-1!=a.split(e).length-1);b.push({level:"error",severity:"blocker",category:"format",owner:"llm",repairability:"llm_repairable",message:`正文存在${f}不闭合(开 ${g} 处、闭 ${h} 处,拼接/删节残留):${i?.trim().slice(0,120)??""}`,suggestion:`${f}成对性破坏是内容丢失拼接的确定性信号,请重写所在句子/小节,补齐或删除残缺部分。`})}return b}function Z(a){let b=[];{let c=[...a.matchAll(/^#{2,4}\s+(.+)$/gmu)].map(a=>(a[1]||"").trim()).filter(a=>/[☑✓✔☐□☒○●◉◇◆]/u.test(a)).slice(0,6);c.length>0&&b.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:`小节标题残留复选框/选项符号(☑/✓ 等招标文件符号):“${c.join("”、“")}”`,suggestion:"删除标题中的复选框符号(☑✓✔☐□等);标题主体若属商务文件内容(如“电子保函”),整个小节删除,技术标不得出现商务条款小节。"})}let c=a.search(/^##\s+第[一二三四五六七八九十百千万\d]+章\s+/mu),d=[...(c>=0?a.slice(c):a.replace(/^##\s+目录[\s\S]*?(?=^##\s+第[一二三四五六七八九十百千万\d]+章\s+)/mu,"")).matchAll(/^##\s+(.+)$/gmu)].map(a=>(a[1]||"").trim()).filter(a=>"目录"!==a&&!/^第[一二三四五六七八九十百千万\d]+章\s+/u.test(a)&&!/^附录/u.test(a)&&!/^附表\s*[一二三四五六七八九十\d]{1,3}/u.test(a)).map(a=>(0,k.GQ)(a));d.length>0&&b.push({level:"error",message:`正文存在非正式章二级标题:${[...new Set(d)].slice(0,8).join("、")}`,suggestion:"正文 ## 只允许用于“第X章”正式章标题;章内小节必须使用 ### X.Y。"});let e=[...a.matchAll(/^##\s+(第[一二三四五六七八九十百千万\d]+章\s+.+)$/gmu)];for(let c=0;c<e.length;c+=1){let d=e[c].index||0,f=e[c+1]?.index??a.length,g=[...a.slice(d,f).matchAll(/^###\s+\d+\.\d+\s+(.+)$/gmu)].map(a=>(0,k.GQ)(a[1]||"")),h=(0,k.GQ)((e[c][1]||"").replace(/^第[一二三四五六七八九十百千万\d]+章\s*/u,""));1===g.length&&S(g[0])===S(h)&&b.push({level:"error",message:`章节只有一个且与章名同名的小节:${e[c][1]}`,suggestion:"应拆分为多个业务小节,不能用章标题重复作为唯一二级小节。"})}return b}function $(a,b){return!(!e.US.test(a)&&!e.s8.test(a)||b.headerCell&&/存在问题|整改措施|整改情况|复查结果|处理情况|检查情况|落实情况|验收结论|备注|说明/u.test(b.headerCell)&&/^无+$/u.test(a))&&(!/^(?:—+|-+)$/u.test(a)||!(b.cellIndex>0&&/^(?:合计|小计|总计|累计)/u.test(b.rowFirstCell||"")||b.headerCell&&/规格型号|规格|型号|额定功率|功率|生产能力|产能|国别产地|制造年份|用于施工部位|已使用台时数/u.test(b.headerCell)))}function _(a){let b=[];for(let c of M(a)){let a=c.split(e.A5).filter(a=>e.w7.test(a));if(a.length<2||!e.N3.test(a[1]||""))continue;let d=a.map(a=>a.trim().replace(/^\|/u,"").replace(/\|$/u,"").split(/(?<!\\)\|/u).map(a=>(0,m.jG)(a.trim()))),f=d[0]||[];for(let a of d.slice(2))for(let c=0;c<a.length;c+=1){let d=a[c]||"";$(d,{rowFirstCell:a[0]||"",headerCell:f[c],cellIndex:c})&&b.push({header:f,rowFirstCell:a[0]||"",cellIndex:c,cell:d})}}return b}function aa(a){a=(0,l.BJ)(a);let b=[];{let c=a.split(e.A5);for(let a=1;a<c.length;a+=1){let d=(c[a]||"").trim(),f=(c[a-1]||"").trim();d&&!/^\|/u.test(d)&&d.endsWith("|")&&1===(d.match(/\|/gu)||[]).length&&!/^#{1,6}\s/u.test(d)&&e.w7.test(f)&&b.push({level:"error",message:`表格断行残片:${d}`,suggestion:"该行是表格数据行整列丢失的残片:合并回所属表格行并补齐缺失列,或删除该残行。"})}}/按审批确认执行/u.test(a)&&b.push({level:"error",message:"表格存在自动兜底污染内容:按审批确认执行",suggestion:"正式投标表格不得使用通用兜底短语,应保留真实业务内容或删除该行。"});let c=[];for(let b of a.matchAll(/\|\s*信息项\s*\|\s*内容\s*\|/gu)){let d=a.slice(b.index||0),f=[];for(let a of d.split(e.A5)){if(f.length>0&&!e.w7.test(a))break;f.push(a)}c.push(f.join("\n"))}let d=c.filter(a=>/项目名称|招标人|建设单位|发包人|建设地点|招标范围|计划工期|合同估算价|质量标准/u.test(a)).length;d>1&&b.push({level:"error",message:`项目基础信息类表格重复:${d} 处`,suggestion:"项目名称、招标人、建设地点、工期、质量等基础信息只能集中输出一次。"});let f=a.match(/^\|\s*---\s*\|\s*---\s*\|\s*$/gmu)||[];for(let c of(f.length>60&&b.push({level:"error",message:`表格分隔线异常重复:${f.length} 行`,suggestion:"请修复表格规范化逻辑,禁止把数据行拆成多个碎表。"}),M(a))){let a=c.split(e.A5).filter(a=>e.w7.test(a));if(a.length<2)continue;if(!e.N3.test(a[1]||"")){b.push({level:"error",message:`表格分隔线位置不规范:${a[0]||""}`,suggestion:"Markdown 表格必须紧跟表头输出分隔线,例如 |---|---|,中间不得插入正文或其他管道行。"});continue}let d=a.map(a=>a.trim().replace(/^\|/u,"").replace(/\|$/u,"").split(/(?<!\\)\|/u).map(a=>(0,m.jG)(a.trim()))),f=d[0]||[],g=f.filter(a=>/^(?:列|字段|内容|备注)\d+$/u.test(a));g.length>0&&b.push({level:"error",message:`表格存在泛化表头:${g.join("、")}`,suggestion:"正式投标表格必须使用业务字段表头,不得出现“列5/字段1/内容2”等临时表头。"});let h=f.length;d.find((a,b)=>1!==b&&a.length!==h)&&b.push({level:"error",message:`表格列数不一致:${f.join("、")}`,suggestion:"请统一表头和数据行列数;不应通过自动填充兜底词修补表格。"});let i=d.slice(2),j=i.find(a=>a.some(a=>""===a));j&&b.push({level:"error",message:`表格存在空单元格:${f.join("、")}(“${j[0]||""}”行)`,suggestion:"正式交付表格不得出现空单元格;缺失数据应从资料补齐或按业务口径填写具体值,不得留空。"});let k=i.find(a=>a.some((b,c)=>$(b,{rowFirstCell:a[0]||"",headerCell:f[c],cellIndex:c})));if(k){let a=k.find((a,b)=>$(a,{rowFirstCell:k[0]||"",headerCell:f[b],cellIndex:b}))||"";b.push({level:"error",message:`表格存在占位符单元格:${f.join("、")}(“${k[0]||""}”行“${a}”)`,suggestion:"正式交付表格不得用“—/若干/约/待定”等占位或模糊表达代替具体数据;应从资料补齐具体数值。"})}}return b}function ab(a){let b=a.split(/\r?\n/u),c=[],d=(a,d,e)=>{c.some(b=>b.start===a)||c.push({start:a,end:((a,c)=>{for(let d=a+1;d<b.length;d+=1){let a=/^(#{1,4})\s+(.+)$/u.exec(b[d].trim());if(a&&(0===c||a[1].length<=c))return d}return b.length})(a,d),level:d,title:e})};for(let a of[/编制依据/u,/编制说明|编制原则|编制目的/u]){let c=!1;for(let e=0;e<b.length;e+=1){let f=b[e].trim(),g=/^(#{2,4})\s+(.+)$/u.exec(f),h=g?null:/^\*\*(.+)\*\*$/u.exec(f);if(!g&&!h)continue;let i=g?g[2]:h?.[1]??"";if(a.test(i)){d(e,g?g[1].length:0,i),c=!0;break}}if(c)break}for(let a=0;a<b.length;a+=1){let c=b[a].trim();if(!(!c.includes("编制依据")||/^#{1,6}\s/u.test(c)||/^\*\*(.+)\*\*$/u.test(c))&&!(c.includes(" ")||/[.·…]{4,}/u.test(c)))for(let c=a-1;c>=0;c-=1){let e=b[c].trim(),f=/^(#{2,4})\s+(.+)$/u.exec(e),g=f?null:/^\*\*(.+)\*\*$/u.exec(e);if(!f&&!g)continue;if(a-c>60)break;let h=f?f[2]:g?.[1]??"";if(/目录/u.test(h))break;d(c,f?f[1].length:0,h);break}}return c.sort((a,b)=>a.start-b.start)}function ac(a){let b=a.split(/\r?\n/u);return ab(a).map(a=>[a.title,...b.slice(a.start+1,a.end)].join("\n")).join("\n")}function ad(a,b){let c=ac(a);if(!c)return[];let d=[],e=(c.match(/《[^《》]{2,40}(?:法|条例|办法|规程|规范|标准)》/gu)||[]).map(a=>a.replace(/《|》/gu,""));e.some(a=>/法$/u.test(a))||d.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:"编制依据小节缺少国家法律法规条目",suggestion:"编制依据小节必须列出具体法律名称及文号(如《中华人民共和国建筑法》),不得空写「国家现行法律、行政法规」类别话术。"}),e.some(a=>/(?:条例|办法)$/u.test(a))||d.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:"编制依据小节缺少条例类条目",suggestion:"编制依据小节必须列出具体条例名称(如《建设工程质量管理条例》),不得以类别话术代替。"});let f=/《[^《》]{2,40}(?:规范|规程|标准)[^《》]{0,20}》/u.test(c),g=/(?:GB|CJJ|JGJ|JTG|SL|DB|DL|YS|HG)[\s/T]*[A-Z]?[\s/]?\d{2,4}/u.test(c);f||g||d.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:"编制依据小节缺少施工验收规范条目",suggestion:"编制依据必须包含与本工程分部对应的现行施工验收规范名称及编号(如《给水排水管道工程施工及验收规范》(GB 50268-2008))。"});let h=[...(b?.project.location||"").matchAll(/([\u4e00-\u9fa5]{2,10}?[省市])/gu)].map(a=>a[1]);if(h.length>0&&(h.some(a=>e.some(b=>b.startsWith(a)||b.includes(a)))||d.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`编制依据小节缺少${h[0]}地方性法规、条例`,suggestion:`编制依据必须列出工程所在地(${h.join("、")})现行地方性法规及条例名称。`})),b&&b.basisRegulations.length>0){let a=b.basisRegulations.filter(a=>!e.includes((a.match(/《([^》]+)》/u)||[])[1]||""));a.length===b.basisRegulations.length&&d.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`编制依据小节未列招标文件引用法规:${a.slice(0,3).map(a=>a.replace(/(.*/u,"")).join("、")}`,suggestion:"招标文件引用的法规必须照抄进编制依据小节。"})}return d}function ae(a,b){let c=(0,q.re)(b);if(!c)return[];let d=[],e=new Set;for(let b of(0,q._H)(a,c))e.has(b.label)||(e.add(b.label),d.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:b.message,suggestion:b.suggestion}));return d}function af(a){let b=[],c=a.split(e.A5),d=[];for(let a=0;a<c.length;a+=1){if(!e.w7.test(c[a]))continue;let b=a,f=[];for(;a<c.length&&e.w7.test(c[a]);)f.push(c[a]),a+=1;a-=1;let g=f.filter(a=>e.N3.test(a)).length;if(0===g)continue;let h=(f[0]||"").trim(),i=h.startsWith("|")?h.slice(1):h,j=(i.endsWith("|")?i.slice(0,-1):i).split("|").map(a=>a.split("**").join("").trim()).filter(a=>a.length>0);d.push({headerKey:j.join("|"),headerText:j.join("、"),start:b,end:a,dividerCount:g})}let f=new Map;for(let a of d)f.set(a.headerKey,(f.get(a.headerKey)||0)+1);let g=[...f.entries()].filter(([,a])=>a>=3);if(g.length>0){let a=d.find(a=>f.get(a.headerKey)===g[0]?.[1])?.headerText||"";b.push({level:"error",severity:"blocker",category:"table",owner:"llm",repairability:"llm_repairable",message:`同主题表格重复堆叠:${g.length} 组相同表头出现 3 次及以上(如:${a})`,suggestion:"同一主题表格全文只出现一次,禁止拆成多张碎表重复堆叠凑数;请合并同类表格或删除重复内容。相同表头分别用于不同主题时,必须在表头列名中加主题限定词(如「进度关键节点/质量关键节点/安全关键节点」)以区分口径。"})}let h=0;for(let a=1;a<d.length;a+=1){let b=d[a-1],e=d[a];b&&e&&c.slice(b.end+1,e.start).every(a=>""===a.trim())&&(h+=1)}for(let a of d)a.dividerCount>=2&&(h+=a.dividerCount-1);return h>=2&&b.push({level:"warning",category:"table",message:`表格连续堆叠:${h} 处相邻表格无正文分隔`,suggestion:"表格之间应有正文引导叙述,禁止连续堆叠多张表格凑数。"}),b}function ag(a){return a.split(e.A5).filter(a=>!/^#{1,6}\s+/u.test(a.trim())).filter(a=>!/^\s*\|/u.test(a)).filter(a=>!/^\s*:?-{3,}:?/u.test(a)).filter(a=>!/^<\/?div\b/iu.test(a.trim())).join("\n").replace(/[|*_`<>-]/gu,"").replace(e.ug,"").length}function ah(a){return S(a)}function ai(a,b){let c=S(a),d=S(b);if(!c||!d)return!1;if(c===d||c.includes(d)||d.includes(c)||(0,t.ty)(c,d))return!0;let e=/项目概况|主要施工方案|新技术新材料|工程重点难点|重点难点|危大工程|保障体系|安全保障|工期|质量|安全生产|应急预案|资源|人材机|材料|机械|劳动力|进度|关键线路|交通疏导|成品保护|深化设计|验收/gu,f=new Set(c.match(e)||[]),g=new Set(d.match(e)||[]),h=[...f].filter(a=>g.has(a)).length;return h>=2||1===Math.min(f.size,g.size)&&1===h&&16>=Math.max(c.length,d.length)}function aj(a){let b=[...a.matchAll(/^(#{3,4})\s+(.+)$/gmu)];return b.map((c,d)=>{let e=c[1].length,f=(c.index||0)+c[0].length,g=b.slice(d+1).find(a=>a[1].length<=e),h=g?.index??a.length,i=(c[2]||"").trim();return{rawTitle:i,title:S(i),level:e,body:a.slice(f,h)}}).filter(a=>a.title&&(3===a.level||4===a.level))}function ak(a,b,c,d,f){let g=ag(d),h=e.w7.test(d)&&d.split(e.A5).some(a=>e.N3.test(a)),i=ag(d.split("\n").filter(a=>!e.w7.test(a)&&!e.N3.test(a)).join("\n").replace(/^#{1,6}\s+.+$/gmu,""));if(/\[WRITER_MISSING_SECTION\]|Writer 未完成/u.test(d))return{chapterTitle:a,sectionTitle:b,level:c,bodyLength:g,reason:"empty",planned:f,message:`${a} 小节内容补写未完成:${b}`};if(/【本小节生成未达标,需重新生成】/u.test(d))return{chapterTitle:a,sectionTitle:b,level:c,bodyLength:g,reason:"empty",planned:f,message:`${a} 小节生成未达标:${b}`};if(/项目基本信息|基本信息|工程概况|项目概况|工程概述|项目概述/u.test(b)&&(h||g>=40)||/^附录[一二三四五六七八九十A-Z\d]/u.test(b)&&h)return;let j=/清单|配置|汇总|一览|明细|计划|进度|节点|安排/u.test(b)||/表[^,。;:\s]{0,6}$/u.test(b);if(!(h&&j&&Math.max(0,d.split(e.A5).filter(a=>e.w7.test(a)&&!e.N3.test(a)).length-1)>=2)){if(h&&i<20)return{chapterTitle:a,sectionTitle:b,level:c,bodyLength:g,reason:"empty",planned:f,message:f?`${a} 只有标题或表格无正文:${b}`:`${a} 小节只有标题或表格无正文:${b}`};if(!(g>=80)||!(i>=20)){if(0===g)return{chapterTitle:a,sectionTitle:b,level:c,bodyLength:g,reason:"empty",planned:f,message:`${a} 空小节:${b}`};if(g<180)return{chapterTitle:a,sectionTitle:b,level:c,bodyLength:g,reason:"too_short",planned:f,message:`${a} ${f?"规划小节":"正文小节"}正文过短:${b}`}}}}function al(a,b){let c=[],d=new Set;for(let e of b){let b=e.content?.trim()?e.content:a;for(let a of(e.sections||[]).filter(a=>!(0,u.cq)(a)&&!(v.gG.test(e.title)&&t.V.test(a.trim()))&&!/^附录/u.test(a.trim()))){let f=S(a),g=function(a,b){let c=aj(a).filter(a=>ai(a.rawTitle,b));return c.length<=1?c[0]:c.map(a=>({item:a,gap:ak("",b,a.level,a.body,!0),textLength:ag(a.body)})).sort((a,b)=>{let c=a.gap&&"empty"===a.gap.reason?1:0,d=b.gap&&"empty"===b.gap.reason?1:0;return c!==d?c-d:b.textLength-a.textLength})[0]?.item}(b,a),h=`${e.title}|${f}|planned`;if(!g){c.push({chapterTitle:e.title,sectionTitle:a,level:3,bodyLength:0,reason:"missing_planned_section",planned:!0,message:`${e.title} 缺少规划小节:${a}`}),d.add(h);continue}let i=ak(e.title,a,g.level,g.body,!0);i&&c.push(i),d.add(h)}for(let a of aj(b)){let b=`${e.title}|${a.title}|actual`,f=`${e.title}|${a.title}|planned`;if(d.has(b)||d.has(f))continue;let g=ak(e.title,a.title,a.level,a.body,!1);g&&"empty"===g.reason&&c.push(g),d.add(b)}}return c}function am(a,b){return al(a,b).filter(a=>"empty"===a.reason||"missing_planned_section"===a.reason).map(a=>({level:"error",category:"structure",message:a.message,suggestion:"missing_planned_section"===a.reason?"必须补充该规划小节正式正文,不得缺节导出。":"必须补充与该小节相关的材料事实和必要内容,达到正文完整度要求。"}))}function an(a){let b=a.content?.trim()?a.content:"";if(!b)return[];let c=(a.sections||[]).filter(b=>!(0,u.cq)(b)&&!(v.gG.test(a.title)&&t.V.test(b.trim()))&&!/^附录/u.test(b.trim())),d=[...b.matchAll(/^(#{3,4})\s+(.+)$/gmu)],e=[];return d.forEach((a,f)=>{let g=a[1].length,h=(a[2]||"").trim();if(!h)return;let i=(a.index||0)+a[0].length,j=d.slice(f+1).find(a=>a[1].length<=g),k=j?.index??b.length;if(""!==b.slice(i,k).trim()||c.some(a=>ai(a,h)))return;let l=b.slice(0,a.index||0).split("\n").length-1;e.push({line:l,rawTitle:h,level:g})}),e}function ao(a){let b=[];for(let c of a){if(!c.content?.trim())continue;let a=a=>{let b=String(a||"").trim();return!b||(0,u.cq)(b)||/^附录/u.test(b)||v.gG.test(c.title)&&t.V.test(b)},d=(c.sections||[]).filter(b=>!a(b));if(0===d.length)continue;let e=(0,l.r4)(c.content).filter(b=>!a(b));if(e.length<=d.length)continue;let f=new Set(d.map(a=>S(a))),g=e.filter(a=>!f.has(S(a)));b.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",chapterId:c.id,message:`成稿小节超出主题块数:「${c.title}」成稿 ${e.length} 个小节、规划主题块 ${d.length} 个${g.length?`;规划外小节:${g.slice(0,5).join("、")}`:""}`,suggestion:"成稿 H3 小节必须与规划主题块一一对应(拆半块合并为一个小节):规划外小节属相邻主题块内容时并入归属小节并降为 H4,无归属时整节删除;修复后小节编号按正文顺序自动重排。"})}return b}function ap(a){return`${a.fieldName||a.key} ${(0,t.lG)(a.value)}`.replace(/\s+/gu," ").trim()}function aq(a){let b=new Set;for(let c of[/\d+\s*日历天(?!内)/gu,/(?:计划工期|合同工期|总工期|工期|施工周期)[^\n。;;]{0,12}\d+\s*天/gu,/(?:计划工期|合同工期|总工期|工期|施工周期)[^\n。;;]{0,12}\d+\s*(?:个月|月)/gu])for(let d of a.matchAll(c)){let a=d[0].match(/\d+\s*(?:日历天|天|个月|月)/u)?.[0]?.replace(/\s+/gu,"");a&&b.add(a)}return[...b]}let ar=/占地|用地|地下|地上|办公|生活|附属|辅助|绿化|道路|广场|门卫|配电|泵房|锅炉房|车库|车棚|岗亭|传达|警卫|样板房|售楼|门房|单栋|各栋|楼层|每层|单层|架空|雨棚|堆场/u,as=/办公区|生活区|加工区|施工区|堆场|门卫|配电|泵房|锅炉房|车库|车棚|岗亭|传达|警卫|样板房|售楼|门房|地下室|楼层|单层|每层|架空|雨棚/u,at=/门卫|门房|岗亭|值班室|传达室|警卫室|公厕|车棚|雨棚|配电房|配电室|泵房|水泵房|锅炉房|样板房|售楼处|构筑物|用房|配套设施|\d{1,3}[栋座处]/u;function au(a,b){let c=a.slice(Math.max(0,b-48),b),d=c.lastIndexOf("\n\n"),e=d>=0?c.slice(d+2):c;return at.test(e.replace(/\s+/gu,""))}let av=/暂列|暂估|费率|税率|利润|规费|安全文明|措施费|人工费|材料费|机械费|管理费|暂定/u,aw=["地下建筑面积与地上建筑面积的分项指标","配套用房与附属用房的建筑面积","占地面积与绿化面积的用地指标"],ax=["总建筑面积的总体规模指标","建设规模的总量数值"],ay=["暂列金额与暂估价的子项费用","人工费与材料费的分项费用"],az=["合同估算价的总金额口径","投资估算的总体金额"];async function aA(a){return(0,x.A)({prototypes:[...aw],negativePrototypes:[...ax],embedDocuments:a})}async function aB(a){return(0,x.A)({prototypes:[...ay],negativePrototypes:[...az],embedDocuments:a})}async function aC(a,b,c,d,e,f,g){let h=[],i=[],j=new Set,k=RegExp(`(?:${b.source})(?:[^\\n。;;,,]{0,14}?)(\\d{2,}(?:[.,]\\d+)?\\s*万?)\\s*(${c.source})`,"giu"),l=[...a.matchAll(k)],m=f?l.filter(b=>{let c=b[0].slice(0,b[0].indexOf(b[1])),f=a.slice(Math.max(0,(b.index??0)-16),b.index??0);return!(d&&d.test(c)||e&&e.test(f)||g&&au(a,b.index??0))}).map(b=>{let c=b[0].slice(0,b[0].indexOf(b[1])),d=a.slice(Math.max(0,(b.index??0)-16),b.index??0);return{index:b.index??0,context:`${d}${c}`.replace(/\s+/gu,"").slice(-24)}}):[],n=m.length>0?await f(m.map(a=>a.context)):[],o=new Set(m.filter((a,b)=>n[b]).map(a=>a.index));for(let c of l){let f=c[1].replace(/[,,]/gu,"").replace(/\s+/gu,""),k=c[2],l=c[0].slice(0,c[0].indexOf(c[1])),m=a.slice(Math.max(0,(c.index??0)-16),c.index??0);if(d&&d.test(l)||e&&e.test(m)||g&&au(a,c.index??0)||o.has(c.index??0)){i.push({value:f,unit:k,scope:c[0].slice(0,l.length).replace(/\s+/gu,""),context:`${m}${l}`.replace(/\s+/gu,"").slice(-24)});continue}let n=c[0].match(b)?.[0]||"",p=`${f}|${k}`;!f||j.has(p)||(j.add(p),h.push({value:f,unit:k,scope:n}))}return{entries:h,skipped:i}}function aD(a,b){return aC(a,aF,aG,ar,as,b).then(({entries:b})=>{let c=b.find(a=>"建筑面积"===a.scope.replace(/^总/u,""));return/占地|用地/u.test(a)?c:b[0]})}function aE(a){let b=a.value.replace(/[,,]/gu,"").trim(),c=/^([\d.]+)万/u.exec(b),d=c?1e4*Number(c[1]):Number(b);return Number.isFinite(d)?/亿元/u.test(a.unit)?1e8*d:/万元/u.test(a.unit)?1e4*d:d:NaN}let aF=/(?<![地上地下门卫室值班室配电室配电房泵房水泵房锅炉房公厕车库车棚岗亭传达室警卫室样板房售楼处门房])总?建筑面积|总?建设规模/u,aG=/㎡|m²|m2|平方米/u,aH=/合同估算价|合同估算价格|投资估算|最高投标限价|招标控制价|工程总投资|总投资|工程造价/u,aI=/万元|亿元/u,aJ=/本组配置|分组配置|按全项目总表调度|按总表调度|总表调度|按全项目机械配置总表|按机械配置总表|按设备配置总表/u;async function aK(a,b,c,d,e){let f=[],g=await aA(e),h=await aB(e),i=a=>c?.find(b=>b.kind===a&&b.resolution&&"low"!==b.confidence)?.resolution,j=a=>{let b=/(\d+(?:\.\d+)?)\s*(㎡|m²|m2|平方米|万元|亿元)/u.exec(a);return b?{value:b[1],unit:b[2]}:void 0},k=i("duration")??b.schedule.map(ap).find(a=>/\d+\s*(?:日历天|天|个月|月)|计划工期|合同工期/u.test(a)),l=b.quality.map(ap).find(a=>/质量|合格|优良/u.test(a));if(k){let b=aq(k)[0],c=a.split("\n").filter(a=>!/^\s*\|/u.test(a.trim())).join("\n"),d=[];for(let a of c.matchAll(/(?:计划工期|合同工期|总工期|工期|施工周期)[^\d。;;\n|]{0,18}(\d{1,4})\s*日历天/gu)){let e=c.slice(Math.max(0,(a.index||0)-8),a.index||0)+a[0];if(/顺延|延长|展期|不超过|不大于|最多|累计|第\d+日/u.test(e)||/基坑|支护|桩基|土方|基础|主体|装饰|装修|安装|室外|分项|分阶段|阶段|关键线路|单层|每层|地下室|砌体|二次结构|收尾|调试/u.test(e))continue;let f=`${a[1]}日历天`;f===b||d.includes(f)||d.push(f)}b&&d.length>=1&&f.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`跨章一致性冲突:正文出现与资料工期不一致的表述 ${d.slice(0,6).join("、")}`,suggestion:`请统一使用资料中的工期口径:${k}`})}l&&!/质量标准|质量目标|合格|优良/u.test(a)&&(d&&[...d.values()].some(a=>a.contentNeeds.quality)||f.push({level:"error",message:"跨章一致性缺口:正文未稳定体现资料中的质量目标",suggestion:`请在工程概况、质量保证和验收相关章节统一体现:${l}`}));let m=i("area"),n=b.project.map(ap).filter(a=>/建设规模|建筑面积/u.test(a)),o=await Promise.all(n.map(a=>aD(a,g))),p=m??n.find((a,b)=>void 0!==o[b]);if(p){let c=m?j(m):await aD(p,g),{entries:d,skipped:e}=await aC(a,aF,aG,ar,as,g,at);if(c){let a=d.filter(a=>aE(a)!==aE(c));a.length>=1&&f.push({level:"error",message:`跨章一致性冲突:正文出现与资料建设规模不一致的表述 ${a.slice(0,6).map(a=>`${a.value}${a.unit}`).join("、")}`,suggestion:`请统一使用资料中的建设规模口径:${p.slice(0,80)}`})}if(e.length>0){let a=[m?`建筑总量裁决值:${m}`:"",...b.project.map(ap).filter(a=>/建设规模|建筑面积|占地/u.test(a)).slice(0,3)].filter(Boolean);f.push({level:"warning",severity:"warning",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`规模口径复核:正文 ${e.slice(0,3).map(a=>`“${a.context.slice(-14)}${a.value}${a.unit}”`).join("、")} 等 ${e.length} 处数值的口径词与数值之间或口径词前文出现子项/专项/实体口径词,需核对口径归属`,suggestion:`依据项目规模事实卡逐处核对该数值的口径归属(${a.join(";")||"无可用事实卡,以绑定资料原文为准"}):与事实卡对应口径一致的数值保留原样,口径错位或数值不一致的数值改正为事实卡对应口径值,不得把子项/专项口径数值改成建筑总量数值。`})}}let r=i("cost"),s=r??b.project.map(ap).find(a=>/合同估算|投资估算|最高投标限价|招标控制价|总投资|工程造价/u.test(a));if(s){let b=r?j(r):(await aC(s,aH,aI,av,void 0,h)).entries[0],c=(await aC(a,aH,aI,av,void 0,h)).entries;if(b){let a=c.filter(a=>aE(a)!==aE(b));a.length>=1&&f.push({level:"error",message:`跨章一致性冲突:正文出现与资料估算价不一致的表述 ${a.slice(0,6).map(a=>`${a.value}${a.unit}`).join("、")}`,suggestion:`请统一使用资料中的估算价口径:${s.slice(0,80)}`})}}let u=new Set;for(let b of a.matchAll(RegExp(aJ.source,"gu"))){let c=b.index??0,d=Math.max(a.lastIndexOf("\n",c-1),a.lastIndexOf("。",c-1),a.lastIndexOf(";",c-1),a.lastIndexOf(";",c-1)),e=["\n","。",";",";"].map(b=>a.indexOf(b,c)).filter(a=>a>=0),f=e.length>0?Math.min(...e):a.length;for(let b of(0,q.tx)(a.slice(d+1,f)))u.add(b)}let v=new Map;for(let b of(0,q.AK)(a)){if((0,z.HS)(a,b.start,b.text))continue;let c=b.name,d=String(b.count),e=a.slice(Math.max(0,b.start-20),b.start+b.text.length+24),f=/组|村/u.test(e)||aJ.test(e),g=v.get(c)||{values:[],grouped:!1};g.values.includes(d)||g.values.push(d),g.grouped=g.grouped||f,v.set(c,g)}let w=new Map,x=new Map;for(let a of b.billItemFacts??[]){let b=(0,t.lG)(a.value),c=/名称[::]\s*([^\n|]+)/u.exec(b)?.[1]??"",d=(0,q.j4)(c.replace(/[((][^))]*[))]/gu,"").trim());if(!d)continue;let e=b.split("|工程量:")[1]??"",f=/(\d+(?:\.\d+)?)\s*(?:台|套|辆)/u.exec(e),g=f?Number(f[1]):NaN;Number.isFinite(g)&&!(g<=0)&&(w.set(d,(w.get(d)||0)+1),x.set(d,(x.get(d)||0)+g))}for(let[a,b]of v){if(b.values.length<2)continue;let c=b.values.join("、"),d=Math.max(...b.values.map(a=>Number(a))),e=(w.get(a)??0)>=2&&Number.isFinite(d)&&d<=(x.get(a)??0);b.grouped||u.has(a)||e?f.push({level:"warning",severity:"warning",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`设备分组口径提示:正文「${a}」存在分组配置台数 ${c} 多值并存,需注明分组与全项目总量的调度关系`,suggestion:`分组配置(组/村级)与全项目总量并存时,必须在正文注明「本组配置、按总表调度」或明确分组数量与总量数量之间的对应关系,避免评标误读为口径矛盾。`}):f.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`跨章一致性冲突:正文「${a}」配置台数出现互相矛盾的取值 ${c}`,suggestion:`全项目「${a}」配置总量必须全文唯一:以全项目机械配置总表为准统一全部表述;分组配置必须显式注明「本组配置、按总表调度」并删除与总表矛盾的全项目口径数字。`})}for(let{label:b,re:c,contextAware:d}of[{label:"隔油池数量",re:/隔油池[^\d。;;\n|::,,、]{0,6}(\d+)\s*座/gu},{label:"挖沟槽土方",re:/挖沟槽[^\d。;;\n|]{0,15}([\d,]+(?:\.\d+)?)\s*m[³3]/gu,contextAware:!0}]){let e=[];for(let b of a.matchAll(c)){let c=b[1].replace(/,/gu,"");e.some(a=>a.value===c)||e.push({value:c,context:a.slice(Math.max(0,(b.index||0)-24),b.index||0)})}if(e.length>=2){if(d&&e.every((a,b)=>e.slice(b+1).every(b=>6>(0,y.qr)(a.context,b.context))))continue;let a=e.map(a=>a.value).join("、");f.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`跨章一致性冲突:正文${b}出现互相矛盾的取值 ${a}`,suggestion:`${b}必须全文唯一:以工程量清单为最高优先级裁定正确值,将正文全部相关表述统一为该值,并删除其余矛盾口径。`})}}if(k){let b=aq(k)[0],c=Number(/(\d+)\s*(?:日历天|天)/u.exec(b||"")?.[1]);for(let b of a.matchAll(/各阶段工期(?:分别)?为?\s*[::]?\s*([\d]+(?:\s*[、,,]?\s*\d+)*)\s*(?:天|日历天)/gu)){let a=b[1].split(/[、,,]/u).map(a=>Number(a.trim())).filter(a=>Number.isFinite(a)).reduce((a,b)=>a+b,0);Number.isFinite(c)&&a>0&&a!==c&&f.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`跨章一致性冲突:正文各阶段工期文字表述(${b[1]}天)合计 ${a} 天,与总工期 ${c} 天不符`,suggestion:`各阶段工期加总必须等于总工期 ${c} 天:核对各阶段天数并修正文字表述,或与阶段计划表保持一致。`})}}for(let b of a.matchAll(/每间(?:可)?容纳\s*(\d+)\s*人/gu)){let a=Number(b[1]);a>=100&&f.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`逻辑校验失败:正文出现「每间容纳 ${a} 人」的宿舍配置表述,单间宿舍不可能容纳 100 人以上`,suggestion:`宿舍容纳人数按单间 4~8 人配置计算间数(如高峰 216 人按每间 8 人需 27 间),修正配置表述为「每间 X 人、共 Y 间,满足高峰在场人数」的完整口径。`})}for(let b of a.matchAll(/第(\d+)\s*日\s*[~~—至到]\s*第(\d+)\s*日/gu))b[1]===b[2]&&f.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`逻辑校验失败:正文出现「第 ${b[1]} 日~第 ${b[2]} 日」的零长度区间表述`,suggestion:`起止日相同的区间属笔误:按该事项所属施工阶段的实际起止日修正(如进场时间应为阶段开始前)。`});return f}let aL=/找平层|抹灰层|防水层|保温层|结合层|垫层|面层|粘结层|隔热层|隔离层/gu,aM=/铺设|施工|浇筑|粘贴|铺贴|涂抹|完成|进行|待|设置|铺装|挂网|喷涂|灌注/u,aN=["施工过程与工序动作的先后描述","铺设浇筑完成后再进行的工序"],aO=["结构层的厚度与配比参数","找平层厚20毫米的规格"];async function aP(a){return(0,x.A)({prototypes:[...aN],negativePrototypes:[...aO],embedDocuments:a})}async function aQ(a,b){let c=[],d=[...a.matchAll(aL)],e=[],f=(a,b)=>e.some(([c,d])=>a<d&&b>c),g=[],h=(a,d,h,i,j,k)=>{let l=[...a.matchAll(h)];for(let h of"first"===i?l:[...l].reverse()){let l=d+(h.index??0),m=l+h[0].length;if(f(l,m))continue;let n="first"===i?a.slice(0,h.index??0):a.slice((h.index??0)+h[0].length);if(!aM.test(n)){if("thickness"===k){let a=Number(h[1]??"");if(!Number.isFinite(a)||a<=0||a>=1e3)continue}b&&n.trim()&&g.push({key:`${j}|${l}|${m}`,gap:n}),e.push([l,m]),c.push({layer:j,span:[l,m],raw:h[0],kind:k});return}}};for(let b=0;b<d.length;b+=1){let c=d[b],e=c[0],f=c.index??0,g=f+e.length,i=d[b+1]?.index,j=void 0===i?Math.min(a.length,g+90):i,k=a.slice(g,j),l=b>0?(d[b-1].index??0)+d[b-1][0].length:Math.max(0,f-40),m=a.slice(l,f);h(k,g,/(\d+:\d+(?:\.\d+)?)/gu,"first",e,"ratio"),h(m,l,/(\d+:\d+(?:\.\d+)?)/gu,"last",e,"ratio"),h(k,g,/(\d+(?:\.\d+)?)\s*mm/gu,"first",e,"thickness"),h(m,l,/(\d+(?:\.\d+)?)\s*mm/gu,"last",e,"thickness")}if(b&&g.length>0){let a=await b(g.map(a=>a.gap)),d=new Set(g.filter((b,c)=>a[c]).map(a=>a.key));return c.filter(a=>!d.has(`${a.layer}|${a.span[0]}|${a.span[1]}`))}return c}async function aR(a,b){let c=[],d=new Set;for(let e of(await aQ(a,b))){let a="ratio"===e.kind?e.raw.match(/(\d+:\d+(?:\.\d+)?)/u)?.[1]:void 0,b="thickness"===e.kind?e.raw.match(/(\d+(?:\.\d+)?)/u)?.[1]:void 0,f=b?Number(b):void 0,g=`${e.layer}|${a||""}|${f??""}`;d.has(g)||(d.add(g),c.push({layer:e.layer,ratio:a,thickness:f}))}return c}async function aS(a,b,c){let d=[],e=await aP(c),f=[...b.specifications,...b.quality,...b.preciseFacts,...b.bills].map(ap).join("\n"),g=await aR(f,e);if(0===g.length)return d;let h=new Map;for(let a of g){let b=h.get(a.layer)||[];b.push(a),h.set(a.layer,b)}let i=await aR(a,e),j=new Set;for(let[a,b]of h){let c=[...new Set(b.map(a=>a.ratio).filter(Boolean))],e=[...new Set(b.map(a=>a.thickness).filter(a=>Number.isFinite(a)))];for(let b of i.filter(b=>b.layer===a)){if(1===c.length&&b.ratio&&b.ratio!==c[0]){let e=`ratio|${a}|${b.ratio}`;j.has(e)||(j.add(e),d.push({level:"error",message:`工序规格冲突:正文${a}配比 ${b.ratio} 与资料口径 ${c[0]} 不一致`,suggestion:`请将${a}配比统一为资料口径 ${c[0]},禁止改写资料规格。`}))}if(1===e.length&&Number.isFinite(b.thickness)&&b.thickness!==e[0]){let c=`thickness|${a}|${b.thickness}`;j.has(c)||(j.add(c),d.push({level:"error",message:`工序规格冲突:正文${a}厚度 ${b.thickness}mm 与资料口径 ${e[0]}mm 不一致`,suggestion:`请将${a}厚度统一为资料口径 ${e[0]}mm。`}))}}}return d}async function aT(a,b,c){let d=await aA(c),e=await aB(c),f=await aP(c),g=[...a.specifications,...a.quality,...a.preciseFacts,...a.bills].map(ap).join("\n"),h=new Map;for(let a of(await aR(g,f))){let b=h.get(a.layer)||{ratios:[],thicknesses:[]};a.ratio&&!b.ratios.includes(a.ratio)&&b.ratios.push(a.ratio),Number.isFinite(a.thickness)&&!b.thicknesses.includes(a.thickness)&&b.thicknesses.push(a.thickness),h.set(a.layer,b)}let i=new Map;for(let[a,b]of h)(1===b.ratios.length||1===b.thicknesses.length)&&i.set(a,{ratio:1===b.ratios.length?b.ratios[0]:void 0,thickness:1===b.thicknesses.length?b.thicknesses[0]:void 0});let j=a=>b?.find(b=>b.kind===a&&b.resolution&&"low"!==b.confidence)?.resolution,k=a=>{let b=/(\d+(?:\.\d+)?)\s*(㎡|m²|m2|平方米|万元|亿元)/u.exec(a);return b?{value:b[1],unit:b[2]}:void 0},l=j("area"),m=a.project.map(ap).filter(a=>/建设规模|建筑面积/u.test(a)),n=await Promise.all(m.map(a=>aD(a,d))),o=l??m.find((a,b)=>void 0!==n[b]),p=j("cost"),q=p??a.project.map(ap).find(a=>/合同估算|投资估算|最高投标限价|招标控制价|总投资|工程造价/u.test(a));return{specTargets:i,scaleTarget:o?l?k(l):await aD(o,d):void 0,costTarget:q?p?k(p):(await aC(q,aH,aI,av,void 0,e)).entries[0]:void 0,scaleGapGate:d,costGapGate:e,actionGate:f}}async function aU(a,b){let c=[];for(let d of(await aQ(a,b.actionGate))){let a=b.specTargets.get(d.layer);if(a){if("ratio"===d.kind&&a.ratio){let b=d.raw.match(/(\d+:\d+(?:\.\d+)?)/u)?.[1];b&&b!==a.ratio&&c.push({start:d.span[0],end:d.span[1],replacement:d.raw.replace(/(\d+:\d+(?:\.\d+)?)/u,a.ratio),detail:`${d.layer}配比 ${b}→${a.ratio}`})}if("thickness"===d.kind&&Number.isFinite(a.thickness)){let b=Number(d.raw.match(/(\d+(?:\.\d+)?)/u)?.[1]);Number.isFinite(b)&&b!==a.thickness&&c.push({start:d.span[0],end:d.span[1],replacement:d.raw.replace(/(\d+(?:\.\d+)?)/u,String(a.thickness)),detail:`${d.layer}厚度 ${b}mm→${a.thickness}mm`})}}}let d=async(b,d,e,f,g,h,i,j)=>{if(!b)return;let k=RegExp(`(?:${d.source})(?:[^\\n。;;,,]{0,14}?)(\\d{2,}(?:[.,]\\d+)?\\s*万?)\\s*(${e.source})`,"giu"),l=[...a.matchAll(k)],m=i?l.filter(b=>{let c=b[0].slice(0,b[0].indexOf(b[1])),d=a.slice(Math.max(0,(b.index??0)-16),b.index??0);return!(g&&g.test(c)||h&&h.test(d)||j&&au(a,b.index??0))}).map(b=>{let c=b[0].slice(0,b[0].indexOf(b[1])),d=a.slice(Math.max(0,(b.index??0)-16),b.index??0);return{index:b.index??0,context:`${d}${c}`.replace(/\s+/gu,"").slice(-24)}}):[],n=m.length>0?await i(m.map(a=>a.context)):[],o=new Set(m.filter((a,b)=>n[b]).map(a=>a.index));for(let d of l){let e=d[0].slice(0,d[0].indexOf(d[1])),i=a.slice(Math.max(0,(d.index??0)-16),d.index??0);if(g&&g.test(e)||h&&h.test(i)||j&&au(a,d.index??0)||o.has(d.index??0))continue;let k={value:d[1].replace(/[,,]/gu,"").replace(/\s+/gu,""),unit:d[2]};if(aE(k)===aE(b))continue;let l=(d.index??0)+d[0].indexOf(d[1]),m=l+d[1].length;c.some(a=>a.start<m&&a.end>l)||c.push({start:l,end:m,replacement:b.value,detail:`${f} ${k.value}${k.unit}→${b.value}${k.unit}`})}};if(await d(b.scaleTarget,aF,aG,"建设规模",ar,as,b.scaleGapGate,at),await d(b.costTarget,aH,aI,"估算价",av,void 0,b.costGapGate),0===c.length)return{content:a,fixedCount:0,details:[]};c.sort((a,b)=>b.start-a.start);let e=a;for(let a of c)e=e.slice(0,a.start)+a.replacement+e.slice(a.end);return{content:e,fixedCount:c.length,details:c.map(a=>a.detail)}}async function aV(a,b,c,d){let e=await aT(b,c,d);if(0===e.specTargets.size&&!e.scaleTarget&&!e.costTarget)return{fixedCount:0,details:[]};let f=0,g=[];for(let b of a){let a=await aU(b.content,e);a.fixedCount>0&&(b.content=a.content,f+=a.fixedCount,g.push(...a.details))}return{fixedCount:f,details:g}}async function aW(a,b,c,d){let e=await aT(b,c,d);if(0===e.specTargets.size&&!e.scaleTarget&&!e.costTarget)return{markdown:a,fixedCount:0,details:[]};let f=await aU(a,e);return{markdown:f.content,fixedCount:f.fixedCount,details:f.details}}async function aX(a){let{closedLoopBlocks:b}=await (0,w.Pm)(a),c=Math.max(6,Math.ceil((0,g.V7)(a)/1500));return b>=c?[]:[{level:"warning",message:`可落地性闭环句式密度不足:全文 ${b} 段完整闭环句式,未达每 1500 字 1 段(目标 ${c} 段)`,suggestion:"在措施类段落中补齐“责任岗位 + 检查频次 + 整改闭环”三要素齐全的闭环表述:同一自然段内同时出现岗位(如项目经理/质检员/安全员)、频次(每日/每周/不少于X次)与闭环(整改/复查/销项);三要素分散融入叙述,不得以固定句模复读。"}]}function aY(a,b){let c=[],d=/(?:三检制|三级教育|三级管理|5S|24\s*小时|每日|每周|每月|一次|两次)/gu;for(let e of a){let a=[...new Set(e.content.match(d)||[])];if(a.length<3)continue;let f=b?.get(e.title);f&&(f.closedLoop||c.push({level:"warning",message:`${e.title} 管理措施数字较多但缺少执行闭环:${a.slice(0,8).join("、")}`,suggestion:"这些管理数字可以保留,但需要补充责任主体、检查频次、记录台账、整改复查和闭环要求。"}))}return c}function aZ(a,b){let c=/(?:加强组织领导|严格执行规范|落实责任制度|确保工程质量|强化过程管理|提高思想认识|完善管理体系|形成闭环管理)/gu,d=[];for(let e of a){if((e.content.match(c)||[]).length<6)continue;let a=b?.get(e.title);a&&(a.concrete||d.push({level:"error",message:`${e.title} 存在较多未绑定项目事实和工序控制点的泛化套话`,suggestion:"请替换为结合资料事实、施工对象、工序控制、验收资料和整改闭环的专业内容。",chapterId:e.id}))}return d}function a$(a){return[[...a.project,...a.schedule,...a.quality,...a.safety,...a.resources,...a.preciseFacts,...a.bills,...a.drawings,...a.rules,...a.specifications].map(ap).join("\n"),...a.tables.flatMap(a=>[...a.headers,...a.rows.flat()])].join("\n")}function a_(a,b){return!(!/总工期|计划工期|合同工期|日历天|施工周期/u.test(a)||/阶段|历时|用时|合计|总计|共计|累计|预留|机动|余量|剩余|养护|编制|提交|签订|划分|闭合|控制基准|持续时间|关键|节点/u.test(`${a}${b}`))&&(b.match(/\d+(?:\.\d+)?\s*(?:工作天|天)/gu)||[]).length<2}function a0(a,b){return/^\d+(?:\.\d+)?(?:月|年)$/u.test(a)&&/开工|竣工|日期|计划|年|月/u.test(b)}function a1(a,b,c){let d=`${a} ${b}`;if(/(?:工日|人日|次|台|套|个|人|层|间|批|项|处|座|栋|根|只|组|件|块|片|面|条|道|樘|扇|盏|节|段)$/u.test(a)||/三检制|三级|5S|24\s*小时|每日|每周|每月|一次|两次|责任制|制度/u.test(d)||/暂列金额|暂估价|报价|单价|合价|综合单价|税率|增值税|预留金/u.test(d)||a0(a,b))return"soft";let e=c??b;return/(?:天|工作天|月|年)$/u.test(a)&&a_(e,b)||/(?:万元|亿元|元)$/u.test(a)&&/最高投标限价|招标控制价|合同估算价|投资估算|报价|金额|人民币/u.test(e)||/(?:m2|hm2|亩|㎡|m²|平方米)$/u.test(a)&&/建设规模|总建筑面积|总用地面积|总占地面积/u.test(e)?"scope":/(?:工程量|清单|建设规模|建筑面积|长度|材料|设备|规格|型号).{0,24}(?:m²|㎡|m3|m³|米|吨|套|台|个|项|%)/u.test(d)?"spec":/GB\s*\d|JGJ\s*\d|CJJ\s*\d|ISO\s*\d|GB\/T|CECS\s*\d|DL\s*\d|YB\s*\d|SH\s*\d|SJ\/T\s*\d|CJJ\/T\s*\d|DB\s*\d/u.test(d)?"soft":/标准|规范|编号/u.test(d)?"spec":"soft"}let a2=[["hm2","hm2|hm\xb2|公顷"],["m2","m2|m\xb2|㎡|平方米|平方|平米"],["m3","m3|m\xb3|立方米|立方"],["工作天","工作天|工作日"],["万元","万元|人民币万元|万元人民币"],["天","天|日历天|自然日|个日历天"],["月","月|个月"],["km","km|千米|公里"],["mm","mm|毫米"],["cm","cm|厘米"],["kg","kg|千克|公斤"],["min","min|分钟"],["t","t|吨"],["m","m|米"],["元","元|人民币元|元人民币"],["h","h|小时"]];function a3(a){return a.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&")}function a4(a){let b=[];for(let c of(0,h.zn)(a)){if(/^\d+\.\d+$/u.test(c))continue;let d=(0,h.K3)(c),e=function(a,b){let c=/^(\d+(?:\.\d+)?)/u.exec(b)?.[1];if(!c)return a.indexOf(b);let d=RegExp(`(?<![\\d.])${a3(b)}(?![\\d.])`,"u").exec(a);if(d)return d.index;let e=b.slice(c.length);if(!e)return -1;let f=a2.find(([a])=>a===e),g=f?f[1]:a3(e),h=RegExp(`(?<![\\d.])${a3(c)}\\s*(?:${g})(?![a-z0-9])`,"iu").exec(a);return h?h.index:-1}(a,c);if(e<0)continue;let f=a.lastIndexOf("\n",e-1)+1,g=a.indexOf("\n",e),i=a.slice(f,g<0?a.length:g);if(/^\s*\|/u.test(i.trim()))continue;let j=a.slice(Math.max(0,e-36),Math.min(a.length,e+c.length+36));if(/违约金|延期竣工|解除合同|缺陷责任期|质量保证金|质保金|履约保证金|保修期/u.test(j))continue;let k=a.slice(Math.max(0,e-16),e);/(?:阶段|缓冲|累计)\s*\d*$/u.test(k)||b.push({token:c,normalizedToken:d,context:j,prefix:k})}return b}function a5(a){let{markdown:b,factsModel:c,scopeSuspicious:d,specSuspicious:e,softSuspicious:f}=a,g=[],h=[...new Set(d)],i=[...new Set(e)],j=[...new Set(f)];return h.length>=1&&g.push({level:"error",message:`生成后事实反查失败:正文出现资料事实主表中未找到的总量口径数字 ${h.slice(0,8).join("、")}`,suggestion:"总量口径数字(工期/金额/建设规模)必须与资料一致;请删除或改写为资料确认的口径,禁止编造。"}),i.length>=2&&g.push({level:"warning",message:`生成后事实反查提示:正文出现资料事实主表中未找到的规格明细数字 ${i.slice(0,8).join("、")}`,suggestion:"建议复核这些规格是否来自管理制度、规范要求或资料事实;如无依据,改为定性管理要求。"}),j.length>=6&&g.push({level:"warning",message:`生成后事实反查提示:正文出现较多未在资料事实主表中反查到的管理数字 ${j.slice(0,10).join("、")}`,suggestion:"请确认这些管理数字属于通用制度、规范要求或项目资料事实;如无依据,建议改为定性管理要求。"}),/质量目标|质量标准/u.test(b)&&c.quality.length>0&&!c.quality.some(a=>b.includes((0,t.lG)(a.value).slice(0,18)))&&g.push({level:"warning",message:"生成后事实反查提示:正文质量目标表述未明显匹配质量事实主表",suggestion:"请使用资料中的质量目标原文或等价表述。"}),g}let a6=/(?:天|工作天|日历天|月|年|万元|亿元|元|m2|hm2|亩|㎡|m²|平方米)$/u;function a7(a,b){let c=a$(b);if(80>(0,g.V7)(c))return[];let d=(0,h.K3)(c),e=[],f=[],i=[];for(let b of a4(a)){let{token:a,normalizedToken:c,context:g,prefix:h}=b;if("unsourced"!==(0,j.eS)({token:a,context:g}).kind)continue;let k=a1(a,g,h);"scope"!==k||d.includes(c)||e.push(a),"spec"!==k||d.includes(c)||f.push(a),"soft"!==k||d.includes(c)||i.push(a)}return a5({markdown:a,factsModel:b,scopeSuspicious:e,specSuspicious:f,softSuspicious:i})}async function a8(a,b,c){let d,e=a$(b);if(80>(0,g.V7)(e))return[];let f=(0,h.K3)(e),i=a4(a),k=i.filter(a=>a6.test(a.token));if(k.length>0){let a=await c.scopeClassifier.batchClassify(k.map(a=>`${a.token} ${a.context}`.slice(0,160)));d=new Map,k.forEach((b,c)=>d.set(b.token,a[c]||"other"))}let l=[],m=[],n=[];for(let a of i){let{token:b,normalizedToken:c,context:e,prefix:g}=a;if("unsourced"!==(0,j.eS)({token:b,context:e}).kind)continue;let h=a1(b,e,g);if(d&&a6.test(b)){let a=d.get(b)||"other";"scope"===h?h="scope"===a?"scope":"soft":"scope"===a&&a_(g??e,e)&&!a0(b,e)&&(h="scope")}"scope"!==h||f.includes(c)||l.push(b),"spec"!==h||f.includes(c)||m.push(b),"soft"!==h||f.includes(c)||n.push(b)}return a5({markdown:a,factsModel:b,scopeSuspicious:l,specSuspicious:m,softSuspicious:n})}let a9=8;function ba(a){return/资源|材料|设备|劳动力/u.test(a)?10:a9}let bb=["factuality","structure","depth","executable","specificity","consistency"];function bc(a){return 2*bb.filter(b=>a[b]).length}function bd(a){return bb.filter(b=>!a[b])}function be(a,b){let c=[];for(let e of a){var d;let a=e.content;if(800>(0,g.V7)(a))continue;let f=(d=e.title,/概况|工程|项目/u.test(d)?"事实依据、项目特异性":/部署|总体|组织/u.test(d)?"组织结构、可执行闭环、跨章一致性":/进度|工期/u.test(d)?"进度结构、工期一致性、纠偏机制":/质量/u.test(d)?"质量深度、验收复验、资料闭环":/安全|文明|危大|风险/u.test(d)?"风险覆盖、应急响应、检查整改":/资源|材料|设备|劳动力/u.test(d)?"资源依据、进场调配、进度支撑":"事实依据、专业深度、可执行性"),h=b?.get(e.title);if(!h)continue;let i=bc(h.dimensions);if(i<ba(e.title)){let a=bd(h.dimensions).join("、")||f;c.push({level:"warning",message:`${e.title} 专业评分不足:${i}/12,薄弱维度:${a}`,suggestion:`请按章节任务卡补齐${f},并写出资料依据、实施流程、专业控制点和检查整改闭环。`,chapterId:e.id,provenance:{detectorId:"professional-score",fingerprint:(0,t.c6)(`${e.title}\u0000${i}`)}})}}return c}function bf(a,b){let c=[{re:/进度|工期/u,needKey:"schedule",need:/关键线路|穿插|纠偏|资源保障|节点|动态调整/u,message:"进度工期章节缺少关键线路、穿插施工或纠偏保障内容"},{re:/质量/u,needKey:"quality",need:/材料.*验收|复验|隐蔽验收|整改.*复验|质量.*资料|检验批/u,message:"质量章节缺少材料验收复验、隐蔽验收或整改复验闭环"},{re:/安全|文明|危大|风险/u,needKey:"safety",need:/风险|临电|消防|应急|检查.*整改|文明施工|人员|设备/u,message:"安全文明章节缺少风险识别、现场控制或应急检查闭环"},{re:/资源|材料|设备|劳动力/u,needKey:"resource",need:/进场|验收|调配|保管|供应|投入计划/u,message:"资源章节缺少进场、验收、调配或保管计划"},{re:/施工|工艺|技术|方案/u,needKey:"construction",need:/准备|流程|工艺|控制点|验收|交底/u,message:"施工技术章节缺少施工准备、工艺流程、控制点或验收要求"}],d=[];for(let h of a){if(600>(0,g.V7)(h.content))continue;let a=b?.get(h.title);if(a){for(let b of c)if(!(!b.re.test(h.title)||"construction"===b.needKey&&c.some(a=>"construction"!==a.needKey&&a.re.test(h.title))||"construction"===b.needKey&&/总平面|平面布置|布置图/u.test(h.title))&&!("resource"===b.needKey&&/劳动力/u.test(h.title)&&!/资源|材料|设备/u.test(h.title)&&/进场|入场|退场|调配|轮转/u.test(h.content))){var e,f;a.contentNeeds[b.needKey]||(e=b.needKey,f=h.content,"schedule"===e?/关键线路|关键路径/u.test(f)&&/纠偏|穿插|平行施工|流水施工|赶工/u.test(f):"resource"===e&&/(?:材料|设备|机械|机具|物资|构件|苗木|管材)[^。;;\n|]{0,16}?(?:进场|入场|退场)/u.test(f)&&/调度|保管|台账|供应|仓储|保养/u.test(f))||d.push({level:"error",message:`${h.title}:${b.message}`,suggestion:"请按专业任务卡定向补写该章节,补齐可实施的控制措施、资料依据和闭环要求。",chapterId:h.id})}}}return d}function bg(a,b){return!!(/万元|元|报价|单价|合价|综合单价|预留金|税率|增值税|利润|结算/u.test(`${a} ${b}`)||/OCR|识别错误|乱码|无法确认|疑似|不确定|语义断裂|页码|目录/u.test(b)||/^\d+$/.test(a)&&10>Number(a)||/^(?:mm|cm|dm|hm|km|kg|mg|ml|kwh|kj|kpa|mpa|kw|pa|kn|n|t|l|h|g|m|㎡|m²|m³)[23²³]?$/iu.test(a)||/^\d+(?:\.\d+)+\s*(?:项|个|份|页|批|次|条|款)$/u.test(a)||/^\d+\s*页$/u.test(a)||/^(?:COL|R\d+C)\d*$/iu.test(a)||/^[A-Za-z]\.\d+$/u.test(a)||/^[\d.]+\s*(?:天|日)$/u.test(a)&&/期限/u.test(b)||/之日起.{0,8}天内|天内.{0,10}(?:发出|提交|通知|回复|答复|完成|开工|竣工|报送|支付|更换)|天以上|天及以上|‰|暂扣|履约保证金|通过后.{0,6}天|因发包人原因|因承包人原因|未能按时|逾期|违约金/u.test(b))}function bh(a){let b=new Set;for(let c of a.preciseFacts){if("bill_of_quantities"===c.roleId)continue;let a=`${c.processingType||""} ${c.roleId} ${c.sourceFile}`;if(!e.FM.test(a)&&"precise_fact"!==c.roleId)continue;let d=`${c.key} ${c.fieldName||""} ${c.value}`;for(let a of d.matchAll(e.No)){let c=a[0].trim();bg(c,d)||b.add(c)}}return[...b]}function bi(a){let b=new Set;for(let c of a)for(let a of c.evidence||[]){if(/bill_of_quantities|boq/u.test(`${a.roleId||""}`))continue;let c="string"==typeof a.content?a.content:"";for(let a of c.matchAll(e.No)){let d=a[0].trim();if(!d||/^\d{4}\s*年$/u.test(d)||/^\d{1,2}\s*月$/u.test(d))continue;let e=a.index||0,f=c.slice(Math.max(0,e-40),e+d.length+40);bg(d,f)||b.add(d)}}return[...b]}function bj(a,b){let c=(0,h.K3)(b),d=0;for(let b of a)c.includes((0,h.K3)(b))&&(d+=1);return d}let bk=/日历天|个月|㎡|m²|m3|m³|MPa|kPa|kN|GB\/T|GB|JGJ|ISO|DN|φ|Φ|米\/秒|天$/u,bl=[/GB|JGJ|ISO|CJJ|DB/u,/DN|φ|Φ/u,/MPa|kPa|kN|米\/秒/u,/日历天|个月|天$/u,/㎡|m²/u,/m3|m³/u];function bm(a){let b=/\d+(?:\.\d+)?/u.exec(a)?.[0];return void 0===b?-1/0:Number.parseFloat(b)}function bn(a){let b=[...a].sort((a,b)=>a.localeCompare(b,"zh")),c=b.filter(a=>bk.test(a)),d=b.filter(a=>!bk.test(a)),e=bl.map(()=>[]),f=[];for(let a of c){let b=bl.findIndex(b=>b.test(a));(b>=0?e[b]:f).push(a)}let g=[...e,f].map(a=>a.sort((a,b)=>{let c=bm(a),d=bm(b);return Number.isFinite(c)&&Number.isFinite(d)?d-c||a.localeCompare(b,"zh"):Number.isFinite(c)?-1:Number.isFinite(d)?1:a.localeCompare(b,"zh")})),h=[],i=0,j=0;for(;h.length<8&&j<g.length;){let a=g[i%g.length];a.length>0?(h.push(a.shift()),j=0):j+=1,i+=1}return[...h,...d.slice(0,2)].slice(0,10)}async function bo(a,b,c=[]){let d=[],g=bi(c),i=g.length>=e.mu?g:bh(b),j=bj(i,a);i.length>=e.mu&&j/i.length<e.tg&&d.push({level:"warning",message:`可靠精确参数使用不足:${j}/${i.length}`,suggestion:"请将资料中可靠的规格、参数、数量、时间、比例和标准编号写入对应章节;商务金额、单价、税率、预留金不得写入正文。"});let k=bn(i);if(k.length>=6){let b=(0,h.K3)(a),c=bj(k,a),e=k.filter(a=>!b.includes((0,h.K3)(a)));if(e.length>0&&c/k.length<.5){let b=a.split(/[。;;|]/u).map(a=>a.trim()).filter(a=>a.length>=6&&a.length<=160).slice(0,300);if(b.length>0){let a=await (0,f.Mv)(e.slice(0,10),b);e=e.filter(c=>!b.some(b=>a(c,b)>=.6)),c=k.length-e.length}}if(c/k.length<.5){let b=e.slice(0,3);d.push({level:"error",message:`可靠精确参数使用不足:关键参数抽查 ${c}/${k.length}${b.length?`(缺失如 ${b.join("、")})`:""}`,suggestion:"请将资料中的关键工程参数(工期、面积、强度等级、材料规格、规范编号等)写入正文对应章节,不得因参数总量达标而遗漏核心参数。",provenance:{detectorId:"precise-fact-usage",fingerprint:(0,t.c6)(a)}})}}return b.bills.length>0&&!e.pP.test(a)&&d.push({level:"error",message:"正文未体现结构化数据资料",suggestion:"请从表格、列表或明细中提取对象、单位、数量、规格和关键参数补入对应章节。",provenance:{detectorId:"precise-fact-usage",fingerprint:(0,t.c6)(a)}}),b.drawings.length>0&&!e._U.test(a)&&d.push({level:"error",message:"正文未体现设计/方案/说明类资料",suggestion:"请从设计、方案或说明资料中提取对象、流程、节点、做法、配置、规则和标准要求。",provenance:{detectorId:"precise-fact-usage",fingerprint:(0,t.c6)(a)}}),d}function bp(a,b,c=[]){let d=(0,h.K3)(a),f=bi(c),g=bn(f.length>=e.mu?f:bh(b));return g.length<6?[]:g.filter(a=>!d.includes((0,h.K3)(a)))}async function bq(a,b,c){let d=[];if(0===(c.tables||[]).length)return d;let e=(0,j.JV)(a,c),g=e.filter(a=>!a.exempt);if(0===g.length)return d;let h=e.length-g.length,i=g.filter(a=>a.placed),k=g.filter(a=>!a.placed),l=g.length,m=i.length,n=(0,p.R8)(a,i.map(a=>a.itemName)),o=new Set;if(k.length>0&&m/l<.9){let b=a.split(/[。;;|]/u).map(a=>a.trim()).filter(a=>a.length>=6&&a.length<=160).slice(0,300),c=[...new Set(k.map(a=>a.itemName))];if(b.length>0&&c.length>0)for(let a=0;a<c.length;a+=60){let d=c.slice(a,a+60),e=await (0,f.Mv)(d,b);for(let a of d)b.some(b=>e(a,b)>=f.Eh)&&o.add(a)}}let q=m+k.filter(a=>o.has(a.itemName)).length,r=k.filter(a=>!o.has(a.itemName)),s=a=>{if(0===b.length)return"";let c=(0,p.o7)({name:a.itemName,description:a.description||""},b);return c?`,建议落位「${c.chapterTitle.slice(0,24)}」`:""},u=new Map;for(let a of r){let b=a.itemName.slice(0,40),c=u.get(b);c?c.rows+=1:u.set(b,{name:a.itemName,rows:1,sample:a})}let v=[...u.values()].sort((a,b)=>b.rows-a.rows),w=q/l,x=[h>0?`口径行 ${h} 行(汇总/噪声/费用/标题等非清单明细)已豁免不计入分母`:"",n.size>0?`显性说明 ${n.size} 行(利旧/甲供/不涉及等说明式处置)`:""].filter(Boolean).join(";"),y=v.length>0?`未落位项(共${r.length}行/${v.length}类):${v.slice(0,30).map(a=>`${a.name.slice(0,40)}${a.rows>1?`\xd7${a.rows}`:""}${a.sample.quantity?` ${a.sample.quantity}`:""}(未落位${s(a.sample)})`).join(";")}${v.length>30?` 及其他${v.length-30}类(同类项按已列名称分组归并补写)`:""}`:"";if(w<.9)return d.push({level:"error",severity:"blocker",category:"evidence_coverage",owner:"llm",repairability:"llm_repairable",provenance:{detectorId:"boq-placement",fingerprint:(0,t.c6)(a)},message:`清单项落位不足:${q}/${l} 项(${Math.round(100*w)}%)${y?`。${y}`:""}`,suggestion:`请将未落位清单项按专业工程分组补写进对应章节"主要施工内容"小节(融入各专业工程的作业对象与工程量、工序顺序、施工方法叙述),优先落位主要分部分项、关键规格与大额工程量;对确实不涉及/利旧/甲供/由厂家配套的条目,在正文对应章节显性说明处置方式(说明句须含条目名称)。${y}${x?`〔落位审计:${x}〕`:""}`}),d;if(0===r.length)return d;let z=k.length>0&&q/l<.9,A=z?k.filter(a=>o.has(a.itemName)):[],B=new Set(A.map(a=>a.itemName.slice(0,40))),C=v.filter(a=>!B.has(a.name.slice(0,40))),D=C.slice(0,20).map(a=>`${a.name.slice(0,40)}${a.rows>1?`\xd7${a.rows}`:""}${a.sample.quantity?` ${a.sample.quantity}`:""}(未落位${s(a.sample)})`).join(";"),E=z?`其中语义已承接 ${A.length} 行(${B.size} 类),未承接 ${C.reduce((a,b)=>a+b.rows,0)} 行(${C.length} 类)`:`(落位率已达线,语义兜底通道未触发——下列缺口均为字面未落位,是否已被同义表述承接需人工判断)`;return d.push({level:"warning",category:"evidence_coverage",owner:"user",repairability:"manual_review",provenance:{detectorId:"boq-placement",fingerprint:(0,t.c6)(a)},message:`清单落位缺口清单(已达落位率线,残留缺口供复核):${q}/${l} 项(${Math.round(100*w)}%),字面未落位 ${r.length} 行 / ${v.length} 类;${E}${D?`。缺口项:${D}`:""}`,suggestion:`以下未落位项须逐条给出处置:补写进对应章节、或显性说明(不涉及/利旧/甲供/由厂家配套)。${D}${x?`〔落位审计:${x}〕`:""}`}),d}function br(a,b){if(!b||0===b.groups.length)return[];let c=(0,o.SL)(b,a);if(0===c.unreferenced.length||c.rate>=.9)return[];let d=b.groups.length,e=c.unreferenced.slice(0,6).map(a=>{let b=a.factLines[0]?.slice(0,60)||"";return`${a.sourceFile.split("/").pop()||a.sourceFile}${b?`(如:${b})`:""}`}),f=Math.round(100*c.rate),g=`请将未落位图纸的设计说明、构造做法、材料规格与设备参数写入对应专业章节(按专业归属:结构/道路/排水/照明等),与清单规格一致的照抄清单权威值,不得编造;未落位图纸:${e.join("、")}`;return c.rate<.5&&d>=2?[{level:"error",severity:"blocker",owner:"llm",repairability:"llm_repairable",provenance:{detectorId:"drawing-reference",fingerprint:(0,t.c6)(a)},message:`图纸事实落位不足:${c.referenced.length}/${d} 份图纸的规格/做法事实在正文落位(${f}%)`,suggestion:g}]:[{level:"warning",severity:"warning",owner:"llm",repairability:"llm_repairable",provenance:{detectorId:"drawing-reference",fingerprint:(0,t.c6)(a)},message:`图纸事实未完全落位:${c.referenced.length}/${d} 份图纸被正文引用(${f}%,目标 ≥${Math.round(90)}%)`,suggestion:g}]}function bs(a){let b=[];for(let c of(/【本小节生成未达标,需重新生成】/u.test(a)&&b.push({level:"error",message:"生成未完成:存在未达标小节,需要重新生成或补写后才能导出",suggestion:"请重新生成未达标小节,禁止将占位内容作为正式正文。"}),e.IA))c.test(a)&&b.push({level:"warning",message:`存在占位式表达:${c.source}`,suggestion:"请改写为来自资料的准确事实;资料确实未提供时,改写为正式管理措施,不留空值或“见资料/按文件”。"});let c=_(a);if(c.length>0){let a=c[0];b.push({level:"warning",message:`存在占位式表达:表格数据格占位符(${a.header.join("、")}“${a.rowFirstCell}”行“${a.cell}”)共 ${c.length} 处`,suggestion:"请改写为来自资料的准确事实;资料确实未提供时,改写为正式管理措施,不留空值或“见资料/按文件”。"})}return b}function bt(a){return(0,z.LZ)(a).map(a=>({level:"error",message:`小节标题「${a.title}」含本小节正文未覆盖的工程类别:${a.uncovered.join("、")}`,suggestion:"标题中的工程类别必须在小节正文有对应施工内容;请将标题改为与实际施工内容一致的名称,不得照抄工程量清单章节汇总行名称。"}))}function bu(a,b){let c=`${b.name} ${b.category} ${b.outputTitle} ${b.description}`,f=[];for(let a of(0,d.V)().autoSpecGates)(function(a,b){for(let c of b)try{if(RegExp(c,"iu").test(a))return!0}catch{if(a.includes(c))return!0}return!1})(c,a.templateMatchers)&&f.push(a);if(0===f.length)return[];let g=[],h=M(a).length,i=0;for(let b of f){for(let c of(i=Math.max(i,b.minTables||0),b.requiredTexts))a.includes(c)||g.push({level:"error",message:`配置要求缺少必要内容:${c}`,suggestion:"请按当前模板匹配的专业规则补齐必要内容。"});for(let c of b.forbiddenTexts)(function(a,b){let c="见图纸"===b||"按图纸"===b?["目录","清单","索引","汇总"]:[],d=0;for(;;){let e=a.indexOf(b,d);if(e<0)return!1;let f=a.slice(e+b.length);if(c.some(a=>f.startsWith(a))){d=e+b.length;continue}return!0}})(a,c)&&g.push({level:"error",message:`配置要求不得出现:${c}`,suggestion:"请根据当前模板匹配的专业规则清理正文污染内容。"})}return e.bu.test(a)&&g.push({level:"error",message:"正式正文存在 Markdown 标题符号 #",suggestion:"导出正文应去除 Markdown 标题符号,保留正式标题文字。"}),i&&h<i&&g.push({level:"error",message:`配置要求正式表格不足:${h}/${i}`,suggestion:"如用户提示词或章节内容要求表格,应按项目资料补充对应表格本体。"}),g}function bv(a,b,c,d,f,h,i){var j;if(!a)return b;let k=[...b],l=function(a){let b=[...a.project,...a.schedule,...a.quality,...a.safety,...a.resources];for(let c of Object.values(a.schemaFacts))b.push(...c);return b}(c),m=function(a,b){let c=new Set;for(let a of b)c.add(a.key),a.fieldName&&c.add(a.fieldName);for(let b of a.tables){for(let a of b.headers)c.add(a);for(let a of b.rows)for(let b of a)c.add(b)}return c}(c,l),n=new Set(d.map(a=>a.title));for(let b of a.factFields){if(!b.required||(j=b.name,/国家法律法规|地方法规|规章|规范标准|标准规范|行业标准|现行规范|法律法规|合规|施工方法|工艺流程|质量控制|安全文明|应急|劳动力|材料投入|机械设备|检测仪器|关键节点/u.test(j)))continue;let a=c.schemaFacts[b.id]||[],e=!1,f=!b.sourceRoleIds?.length||a.some(a=>b.sourceRoleIds?.includes(a.roleId));for(let a of d){if(e&&f)break;for(let c of a.evidence)!e&&!a.missingFacts.includes(b.name)&&(0,r.I2)(c,b)&&(e=!0),!f&&(0,r.I2)(c,b)&&(f=!0)}0!==a.length||m.has(b.name)||e||k.push({level:"warning",message:`系统暂未从知识库确认必需事实:${b.name}`,suggestion:b.extractionHint||"请扩大本地知识库检索、执行事实补抽,或调整事实字段配置。"}),f||k.push({level:"warning",message:`必需事实来源角色不匹配:${b.name}`,suggestion:`请确认该事实来自角色:${b.sourceRoleIds?.join("、")}`})}for(let b of a.chapterRules){let a=d.find(a=>a.title===b.title);a&&b.minWords&&a.content.length<b.minWords&&k.push({level:"warning",message:`章节内容深度建议:${b.title}`,suggestion:`可扩展到约 ${b.minWords} 字,但不要改变模板章节结构。`})}let o=M(f),p=function(a){let b=[];for(let c of a.matchAll(e.gW))b.push({alt:c[1]||"",url:c[2]||"",index:c.index??0});return b}(f),q=(0,g.Cv)(f);for(let b of a.gateRules){let a=b.evaluator?b.evaluator:e.cA[b.type]?.(b)??{subject:"document",operator:"contains",value:b.value||b.target},g=a.target||b.target||"",j=a.value||b.value||g,r=d.find(a=>a.title===g),s=function(a){for(let c of e.Lp){let d=c(a);if(d){var b;return{level:a.rule.level,message:(b=a.rule,`${b.name}:${d}`)}}}}({rule:b,evaluator:a,target:g,value:j,min:a.min||Number(b.value)||1,markdown:f,textScope:"chapter"===a.subject&&r?r.content:f,regex:j?function(a){try{return RegExp(a,"iu")}catch{return}}(j):void 0,chapter:r,factNames:m,chapterTitles:n,tableBlocks:o,imageRefs:p,estimatedPages:q,allFacts:l,factsModel:c,projectBindings:h,promptBindings:i});s&&k.push(s)}return k}function bw(a,b){let c=function(a){let b="";for(let c of(0,s.dU)(a))c.content&&(b+=`${c.content}
|
|
22
|
+
`})}return c}function A(a){return(0,g.ap)(a)}function B(a,b){let c=a.map(a=>String(a||"").trim()).filter(Boolean);if(0===c.length||!b)return{markdown:b,promoted:[],missing:[]};let d=b.split(/\r?\n/u),e=new Set;for(let a of d){let b=/^###\s+(.+?)\s*$/u.exec(a.trim());b&&e.add((0,f.Sw)(b[1]))}let g=[],h=d.map(a=>{let b=/^(#{4,5})\s+(.+?)\s*$/u.exec(a.trim());if(!b)return a;let d=(0,f.Sw)(b[2]),h=c.find(a=>(0,f.Sw)(a)===d);return!h||e.has(d)?a:(e.add(d),g.push(h),`### ${h}`)}),i=c.filter(a=>!e.has((0,f.Sw)(a)));return{markdown:h.join("\n"),promoted:g,missing:i}}function C(a,b){let c=a.map(a=>String(a||"").trim()).filter(Boolean);if(0===c.length||!b)return[];let d=new Set;for(let a of String(b).split(/\r?\n/u)){let b=/^###\s+(.+?)\s*$/u.exec(a.trim());b&&d.add((0,f.Sw)(b[1]))}return c.filter(a=>!d.has((0,f.Sw)(a)))}},22496:(a,b,c)=>{c.d(b,{cn:()=>h});let d=[{id:"earthwork-excavation",name:"土方开挖",aliases:["土方","基坑开挖","土方开挖","挖土"],process:["测量放线","标高复核","分层开挖","边坡修整","基底验槽"],params:["分层开挖厚度≤2m","基底标高偏差0~-50mm","边坡坡度按土质取1:0.5~1:1","预留200~300mm人工清底"],acceptance:["基底验槽","钎探记录","标高与轴线复核","隐蔽验收记录"],standards:["GB 50202-2018 建筑地基基础工程施工质量验收标准"]},{id:"earthwork-backfill",name:"土方回填",aliases:["素土回填","填土碾压","回填","余方弃置","人工清底"],process:["基底隐蔽验收","分层摊铺","分层碾压","压实度检测","边角补夯","表面整平"],params:["每层虚铺厚度≤300mm","填土含水率控制在最优含水率\xb12%","压实系数≥0.94","边角部位采用小型夯实机补夯","压实度每层每100m\xb2不少于1组检测"],acceptance:["压实度检测报告","回填土施工记录","隐蔽验收记录"],standards:["GB 50202-2018 建筑地基基础工程施工质量验收标准","GB 50268-2008 给水排水管道工程施工及验收规范"]},{id:"foundation-pit-support",name:"基坑支护",aliases:["基坑支护","钢板桩","土钉墙","支护桩","冠梁"],process:["测量定位","支护桩成孔","钢筋笼制安","混凝土浇筑","冠梁施工","分层开挖","位移监测"],params:["桩位偏差≤50mm","垂直度≤1%","冠梁顶标高偏差\xb110mm","监测频率:开挖期每天1次","报警值按设计位移速率3mm/d"],acceptance:["桩身完整性检测","锚杆拉拔试验","基坑监测日报","专项方案审批记录"],standards:["JGJ 120-2012 建筑基坑支护技术规程","GB 50497-2019 建筑基坑工程监测技术标准"]},{id:"pile-foundation",name:"桩基工程",aliases:["桩基","钻孔灌注桩","预制桩","静压桩","PHC管桩"],process:["测量定位","成孔(压桩)","清孔验收","钢筋笼制安","混凝土灌注","桩身检测"],params:["桩径偏差\xb15mm","沉渣厚度≤50mm(端承桩)","充盈系数≥1.0","桩顶标高偏差\xb110mm","静载试验不少于总桩数1%且≥3根"],acceptance:["桩基静载试验","低应变/声波透射检测","成孔记录","钢筋隐蔽验收"],standards:["JGJ 94-2008 建筑桩基技术规范","GB 50202-2018"]},{id:"rebar-works",name:"钢筋工程",aliases:["钢筋","钢筋绑扎","钢筋加工","钢筋连接"],process:["翻样下料","加工成型","运输堆放","绑扎安装","隐蔽验收"],params:["直螺纹接头拧紧力矩值按规格控制","接头错开≥35d且≥500mm","保护层垫块间距≤1m","绑扎搭接长度按图集16G101"],acceptance:["钢筋原材复试","接头工艺检验","隐蔽工程验收记录","保护层实测"],standards:["GB 50204-2015 混凝土结构工程施工质量验收规范","JGJ 18-2012 钢筋焊接及验收规程"]},{id:"formwork-works",name:"模板工程",aliases:["模板","模板支撑","高支模","脚手架模板"],process:["方案编制","立杆搭设","主次龙骨铺设","面板安装","验收挂牌","拆模申请"],params:["立杆间距≤900\xd7900mm(危大)","扫地杆距地≤200mm","水平杆步距≤1500mm","剪刀撑连续设置","拆模强度:板≥75%设计强度"],acceptance:["高支模专项方案论证","架体验收挂牌","沉降变形监测","拆模令"],standards:["JGJ 162-2008 建筑施工模板安全技术规范","JGJ 130-2011 建筑施工扣件式钢管脚手架安全技术规范"]},{id:"concrete-works",name:"混凝土工程",aliases:["混凝土","砼浇筑","混凝土浇筑","振捣"],process:["浇筑申请","坍落度检测","分层浇筑","振捣密实","收面养护","试块留置"],params:["坍落度按配比\xb130mm","分层浇筑厚度≤500mm","振动棒快插慢拔","养护≥7d(掺外加剂≥14d)","标养试块每100m\xb3≥1组"],acceptance:["坍落度检测记录","试块标养与同条件报告","混凝土外观检查","强度评定"],standards:["GB 50204-2015","GB/T 50107-2010 混凝土强度检验评定标准"]},{id:"steel-structure",name:"钢结构工程",aliases:["钢结构","钢构件","焊接","高强螺栓"],process:["深化设计","构件加工","进场验收","吊装就位","校正固定","焊接/螺栓连接","涂装"],params:["高强螺栓初拧终拧扭矩比1.1","焊缝等级按设计一级/二级","挠度允许值L/400","防火涂料厚度按耐火极限"],acceptance:["焊缝探伤检测","高强螺栓扭矩检查","构件尺寸偏差实测","防火涂料厚度检测"],standards:["GB 50205-2020 钢结构工程施工质量验收标准","JGJ 82-2011 钢结构高强度螺栓连接技术规程"]},{id:"masonry-works",name:"砌体工程",aliases:["砌体","砌筑","加气块","二次结构"],process:["弹线定位","排砖撂底","砌筑","构造柱植筋","圈梁浇筑","顶砖处理"],params:["灰缝厚度8~12mm","垂直度偏差≤5mm(每层)","拉结筋间距≤500mm","顶砖间隔7d斜砌"],acceptance:["砌筑砂浆试块","构造柱钢筋隐蔽验收","垂直度平整度实测","拉结筋检测"],standards:["GB 50203-2011 砌体结构工程施工质量验收规范"]},{id:"waterproofing",name:"防水工程",aliases:["防水","屋面防水","卫生间防水","地下防水","卷材"],process:["基层处理","阴阳角附加层","防水层铺贴","搭接密封","闭水/淋水试验","保护层"],params:["卷材搭接宽度≥100mm","附加层宽度≥500mm","卫生间闭水试验48h","屋面蓄水试验24h","涂膜厚度按设计≥1.5mm"],acceptance:["闭水/蓄水试验记录","隐蔽验收记录","防水材料复试","淋水试验"],standards:["GB 50207-2012 屋面工程质量验收规范","GB 50208-2011 地下防水工程质量验收规范"]},{id:"plastering",name:"抹灰工程",aliases:["抹灰","粉刷","墙面抹灰","挂网"],process:["基层处理","浇水湿润","打点冲筋","分层抹灰","压光","养护"],params:["不同基体交接处挂网宽≥200mm","每遍抹灰厚度≤7mm","平整度偏差≤4mm","空鼓面积≤400cm\xb2且不连续"],acceptance:["空鼓敲击检查","平整度垂直度实测","养护记录"],standards:["GB 50210-2018 建筑装饰装修工程质量验收标准"]},{id:"tile-paving",name:"墙地砖铺贴",aliases:["墙地砖","瓷砖","铺贴","石材"],process:["基层检查","排砖放线","选砖泡水","铺贴","勾缝","成品保护"],params:["粘结层厚度≤10mm","接缝宽度按设计要求","空鼓率单块≤15%且整面≤5%","平整度偏差≤2mm"],acceptance:["空鼓锤击检查","平整度实测","坡度泼水检查","成品保护验收"],standards:["GB 50210-2018"]},{id:"ceil-partition",name:"吊顶与轻质隔墙",aliases:["吊顶","轻钢龙骨","隔墙","石膏板"],process:["弹线定位","龙骨安装","面板安装","接缝处理","面层施工"],params:["主龙骨间距≤1200mm","吊杆间距≤1000mm","罩面板接缝错开","石膏板接缝处粘贴网格布"],acceptance:["龙骨隐蔽验收","面板平整度实测","吊顶起拱检查"],standards:["GB 50210-2018"]},{id:"painting",name:"涂饰工程",aliases:["涂料","油漆","乳胶漆","腻子"],process:["基层清理","刮腻子","打磨","底漆","面漆","修整"],params:["腻子每遍厚度≤2mm","底漆1遍面漆2遍","施工温度5~35℃","平整度偏差≤2mm"],acceptance:["涂层色泽均匀检查","无流坠起皮检查","平整度实测"],standards:["GB 50210-2018"]},{id:"door-window",name:"门窗工程",aliases:["门窗","铝合金窗","幕墙","玻璃"],process:["洞口复核","安装固定","缝隙填塞","打胶密封","开启调试","淋水试验"],params:["框与墙间隙≤5mm","密封胶连续饱满","窗扇开关力≤50N","气密水密性能按设计等级"],acceptance:["淋水试验","开启灵活检查","垂直度偏差实测","性能检测报告"],standards:["GB 50210-2018","GB/T 7106-2019 建筑外门窗气密水密抗风压性能检测方法"]},{id:"plumbing",name:"给排水工程",aliases:["给排水","给水管道","排水管道","管道安装"],process:["预留预埋","支架安装","管道安装","压力试验","冲洗消毒","通水试验"],params:["给水管试验压力为工作压力1.5倍且≥0.6MPa","排水管坡度按管径DN50~DN200取2.5%~0.8%","支架间距按管径设置","PPR热熔温度260℃"],acceptance:["管道水压试验","通球试验","灌水试验","冲洗消毒记录"],standards:["GB 50242-2002 建筑给水排水及采暖工程施工质量验收规范"]},{id:"electrical",name:"电气工程",aliases:["电气","配管","穿线","桥架","配电箱","防雷接地"],process:["预留预埋","配管桥架","穿线放缆","设备安装","绝缘测试","通电调试"],params:["管路弯曲半径≥6D(埋地≥10D)","导线绝缘电阻≥0.5MΩ","桥架支架间距≤1.5m","防雷接地电阻≤1Ω"],acceptance:["绝缘电阻测试","接地电阻测试","通电试运行","隐蔽验收记录"],standards:["GB 50303-2015 建筑电气工程施工质量验收规范"]},{id:"hvac",name:"通风空调工程",aliases:["通风空调","风管","空调","新风","保温"],process:["风管制作","吊架安装","风管安装","设备安装","严密性试验","系统调试"],params:["风管支吊架间距≤3m","中压风管漏光法检测","保温层厚度按设计","风口风速按设计值\xb110%"],acceptance:["风管严密性试验","风量平衡调试","设备单机试运行","系统联动调试"],standards:["GB 50243-2016 通风与空调工程施工质量验收规范"]},{id:"fire-protection",name:"消防工程",aliases:["消防","消火栓","喷淋","火灾报警","防排烟"],process:["预留预埋","管道安装","喷头/探测器安装","系统试压","联动调试","检测验收"],params:["喷淋试验压力≥1.4MPa","消火栓充实水柱≥10m","探测器保护半径按类别","防排烟风管严密性"],acceptance:["消防水压试验","联动调试记录","消防检测报告","竣工验收备案"],standards:["GB 50261-2017 自动喷水灭火系统施工及验收规范","GB 50166-2019 火灾自动报警系统施工及验收标准"]},{id:"weak-current",name:"弱电智能化工程",aliases:["弱电","智能化","综合布线","监控","门禁"],process:["管线预埋","桥架敷设","线缆敷设","设备安装","单机调试","系统联调"],params:["双绞线弯曲半径≥4D","光缆弯曲半径≥15D","面板安装高度距地300mm","链路测试按TIA-568"],acceptance:["链路测试报告","单机调试记录","系统联调记录","隐蔽验收"],standards:["GB 50311-2016 综合布线系统工程设计规范","GB 50339-2013 智能建筑工程质量验收规范"]},{id:"municipal-road",name:"道路工程",aliases:["道路","路基","路面","水稳","沥青"],process:["测量放线","路基处理","分层碾压","水稳摊铺","沥青摊铺","标线设施"],params:["路基压实度≥93%(路床)","水稳层7d无侧限抗压强度按设计","沥青压实度≥96%","面层平整度≤5mm(3m直尺)"],acceptance:["压实度检测","弯沉检测","取芯厚度检测","平整度实测"],standards:["CJJ 1-2008 城镇道路工程施工与质量验收规范"]},{id:"municipal-pipe",name:"市政管道工程",aliases:["管道","雨污水","沟槽","检查井","承插管"],process:["测量放线","沟槽开挖支护","基础垫层","管道安装","接口处理","闭水试验","回填"],params:["沟槽开挖放坡按土质1:0.33~1:0.5","垫层厚度按设计≥100mm","管道安装轴线偏差≤15mm","闭水试验渗水量按GB 50268","回填分层厚度≤250mm"],acceptance:["闭水试验记录","管内底高程检测","管道CCTV检测","回填压实度检测"],standards:["GB 50268-2008 给水排水管道工程施工及验收规范"]},{id:"demolition",name:"拆除工程",aliases:["拆除","墙体拆除","结构拆除","垃圾外运"],process:["方案编制","围挡隔离","管线切断","分层拆除","垃圾清运","验收交接"],params:["拆除顺序自上而下","垃圾清运日产日清","湿法作业降尘","既有保留部位防护到位"],acceptance:["拆除专项方案","既有设施保护检查","垃圾清运记录"],standards:["JGJ 147-2016 建筑拆除工程安全技术规范"]},{id:"structural-strengthen",name:"结构加固",aliases:["结构加固","粘钢","碳纤维","植筋","加大截面"],process:["设计交底","基层处理","植筋","粘贴加固","养护","检测验收"],params:["植筋锚固深度按设计≥15d","碳纤维布粘结强度≥2.5MPa","胶粘剂固化时间按产品说明","加大截面混凝土强度等级≥C25"],acceptance:["拉拔试验","粘结密实度检测","隐蔽验收记录"],standards:["GB 50367-2013 混凝土结构加固设计规范","GB 50550-2010 建筑结构加固工程施工质量验收规范"]},{id:"facade-renovation",name:"外立面整治",aliases:["外立面","立面修补","真石漆","外保温"],process:["脚手架搭设","空鼓铲除","界面处理","保温层施工","面层施工","验收落架"],params:["保温板粘贴面积≥40%","锚栓数量每平米≥6个","抗裂砂浆厚度3~5mm","面层垂直度偏差≤4mm"],acceptance:["粘结强度现场拉拔","锚栓拉拔试验","平整度实测"],standards:["GB 50411-2019 建筑节能工程施工质量验收标准","JGJ 144-2019 外墙外保温工程技术标准"]},{id:"scaffold",name:"脚手架工程",aliases:["脚手架","外架","落地架","悬挑架"],process:["方案编制","基础处理","立杆搭设","连墙件设置","安全网封闭","验收挂牌","拆除"],params:["立杆纵距≤1.5m","连墙件两步三跨","剪刀撑与地面夹角45\xb0~60\xb0","悬挑架工字钢锚固长度≥1.25倍悬挑长度","架体高于作业层1.5m"],acceptance:["架体分段验收","连墙件检查","安全网封闭检查"],standards:["JGJ 130-2011 建筑施工扣件式钢管脚手架安全技术规范"]},{id:"tower-crane",name:"起重吊装",aliases:["起重吊装","塔吊","吊装","汽车吊"],process:["方案编制","设备报验","基础验收","安装调试","检测备案","日常检查","拆除"],params:["吊装作业半径内警戒","吊索具安全系数≥6","塔吊垂直度≤4‰","风速≥6级停止吊装"],acceptance:["特种设备检测","安装验收记录","司机指挥持证检查"],standards:["JGJ 196-2010 建筑施工塔式起重机安装使用拆卸安全技术规程"]},{id:"electrical-hookup",name:"临时用电",aliases:["临电","临时用电","三级配电"],process:["方案编制","线路敷设","配电箱设置","接地保护","验收送电","日常巡检"],params:["三级配电两级漏保","漏电动作电流≤30mA/0.1s","PE线截面按相线1/2","电缆埋深≥0.7m","配电箱距地1.4~1.6m"],acceptance:["绝缘电阻测试","接地电阻测试","验收送电记录"],standards:["JGJ 46-2005 施工现场临时用电安全技术规范"]}],e=new Map,f=new Map;for(let a of d)for(let b of(f.set(a.id,a),e.set(a.name,a),a.aliases))e.set(b,a);let g=[{pattern:/安装工程|机电安装/u,cardIds:["electrical","plumbing","hvac","fire-protection","weak-current"]},{pattern:/结构加固|加固改造/u,cardIds:["structural-strengthen","concrete-works","rebar-works","formwork-works"]},{pattern:/装饰工程|装饰装修/u,cardIds:["plastering","tile-paving","ceil-partition","painting","door-window"]},{pattern:/外墙|屋面|立面/u,cardIds:["facade-renovation","waterproofing","scaffold"]},{pattern:/室外道排|道排|室外管网|雨污水/u,cardIds:["municipal-pipe","municipal-road","earthwork-excavation"]},{pattern:/智能化/u,cardIds:["weak-current"]},{pattern:/消防/u,cardIds:["fire-protection"]},{pattern:/拆除/u,cardIds:["demolition"]},{pattern:/水电改造/u,cardIds:["plumbing","electrical"]}];function h(a,b=[]){let c=new Set;for(let b of a){let a=e.get(b);for(let[d,f]of(a&&c.add(a),e))d.length>=3&&b.includes(d)&&c.add(f);for(let a of g)if(a.pattern.test(b))for(let b of a.cardIds){let a=f.get(b);a&&c.add(a)}}for(let a of d){if(c.size>=16)break;(!a.projectTypes||a.projectTypes.some(a=>b.includes(a)))&&c.add(a)}return[...c].slice(0,16)}},23760:(a,b,c)=>{c.d(b,{AC:()=>C,AN:()=>ad,Ai:()=>L,BV:()=>O,Bs:()=>bC,Dy:()=>bF,EJ:()=>ae,Ef:()=>J,Ff:()=>A,Fv:()=>Z,H4:()=>ac,Jn:()=>U,K1:()=>W,KI:()=>aV,M$:()=>bw,N1:()=>bo,NS:()=>aa,Pu:()=>bc,Qi:()=>a9,Qm:()=>_,R9:()=>E,RX:()=>bd,S2:()=>bq,SN:()=>af,ST:()=>aZ,Sn:()=>P,Ty:()=>Q,UO:()=>ab,VW:()=>ao,Yb:()=>aW,Z2:()=>a8,Zu:()=>aX,bM:()=>bs,cG:()=>bz,f8:()=>T,gN:()=>R,hd:()=>bx,hr:()=>aS,i0:()=>be,iC:()=>N,j9:()=>bt,ji:()=>bf,k0:()=>X,kQ:()=>bv,kw:()=>F,lH:()=>ba,lg:()=>bB,mJ:()=>ah,mR:()=>bu,pG:()=>H,qK:()=>am,qm:()=>aK,rz:()=>an,tW:()=>bp,uy:()=>bD,v4:()=>bA,vY:()=>a7,vZ:()=>Y,wl:()=>I,xX:()=>aY,yd:()=>br,yw:()=>al});var d=c(8753),e=c(98281),f=c(37047),g=c(78217),h=c(11248),i=c(22213),j=c(1358),k=c(70208),l=c(40299),m=c(13145),n=c(91943),o=c(31263),p=c(31846),q=c(65667),r=c(91977),s=c(23500),t=c(22157),u=c(54185),v=c(3063),w=c(52922),x=c(41991),y=c(30836),z=c(35547);function A(a){let b={blocking:0,important:0,minor:0};for(let c of a)b[function(a){let b="string"==typeof a?a:a.message;if("error"===("string"==typeof a?void 0:a.level))return"blocking";for(let a of e.gr)if(a.pattern.test(b))return a.severity;return"minor"}(c)]+=1;return b}function B(a,b){let c=a.replace(/[\][()`*_>#|{},。、“”‘’:;!?,.!?:;-]+/gu," ").replace(e.ug," ").trim();if(c.length<120)return;let d=[...c.matchAll(/[A-Za-z][A-Za-z-]{2,}|[\p{Script=Han}]{2,}/gu)];if(d.length<30)return;let f=1,g=new Map;for(let a=0;a<d.length;a+=1){let e=d[a][0].toLowerCase();g.set(e,(g.get(e)||0)+1);let h=!1;if(a>0){let b=d[a-1],f=c.slice((b.index??0)+b[0].length,d[a].index??0);h=e===b[0].toLowerCase()&&""===f.trim()}if(h?f+=1:f=1,f>=12)return{level:"error",message:`${b} 存在重复 token 退化输出`,suggestion:"请重新生成该小节,禁止保留连续重复的英文单词或无意义片段。"}}let h=[...g.entries()].sort((a,b)=>b[1]-a[1])[0];if(h&&h[1]>=25&&h[1]/d.length>=.42)return{level:"error",message:`${b} 存在重复 token 退化输出`,suggestion:`检测到“${h[0]}”异常高频重复,请重新生成该小节。`}}function C(a,b=[]){let c=[],d=B(a,"全文");for(let a of(d&&c.push(d),b)){let b=B(a.content,`章节“${a.title}”`);for(let d of(b&&c.push(b),a.sections||[])){let b=d.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&"),e=a.content.match(RegExp(`^#{3,4}\\s+(?:\\d+(?:\\.\\d+)*\\s+)?${b}\\s*\\n([\\s\\S]*?)(?=^#{3,4}\\s+|^##\\s+|$)`,"mu"));if(!e)continue;let f=B(e[1],`小节“${d}”`);f&&c.push(f)}}return c}function D(a){return a.severity&&a.repairability?a:/小节只有标题|空小节|小节内容补写未完成/u.test(a.message)?{...a,severity:"blocker",repairability:"local_deterministic",category:"structure",owner:"system"}:/不得出现|提示词要求|疑似提示词指令标题|项目污染|生成未完成/u.test(a.message)?{...a,severity:"blocker",repairability:"llm_repairable",category:"structure",owner:"system"}:/事实一致性冲突|projectFactOnly|核心事实/u.test(a.message)?{...a,severity:"error"===a.level?"blocker":"warning",repairability:"manual_review",category:"fact_consistency",owner:"user"}:/证据使用覆盖率偏低|BOQ|落位|高分模块|专业链|闭环/u.test(a.message)?"error"===a.level?{...a,severity:"blocker",repairability:"llm_repairable",category:"evidence_coverage",owner:"llm"}:{...a,severity:"warning",repairability:"not_repair_needed",category:"evidence_coverage",owner:"system"}:"error"===a.level?{...a,severity:"blocker",repairability:"llm_repairable",category:"structure",owner:"system"}:"warning"===a.level?{...a,severity:"warning",repairability:"not_repair_needed",category:"style",owner:"system"}:{...a,severity:"suggestion",repairability:"not_repair_needed",category:"style",owner:"system"}}function E(a){let b=D(a);return"blocker"===b.severity&&(!!("error"===b.level&&"blocker"===b.severity&&/placeholder|source|style|format|structure/u.test(String(b.category||""))||"error"===b.level&&"blocker"===b.severity&&/交付置信度未达目标/u.test(a.message)||"error"===b.level&&"fact_consistency"===b.category&&/危大工程判定缺失|超危大工程判定缺失|支护形式与资料矛盾|支护形式未落地|设备进场时间荒谬|设备进场工序倒挂/u.test(a.message)||"error"===b.level&&"blocker"===b.severity&&"fact_consistency"===b.category&&"llm_repairable"===b.repairability||/提示词要求|疑似提示词指令标题|适用性自相矛盾|不得出现/u.test(a.message))||!/目录与正文/u.test(a.message)&&(/配置要求缺少必要内容/u.test(a.message)?"error"===a.level:!!/小节内容补写未完成|空小节|小节只有标题|生成未完成/u.test(a.message)||!/生成后事实反查失败/u.test(a.message)&&(/工序规格冲突/u.test(a.message)?"error"===a.level:!!/项目特点、重点、难点分析 正文不足|项目主要施工内容 正文不足/u.test(a.message)||!(/规划小节正文过短/u.test(a.message)||/事实一致性冲突:项目名称/u.test(a.message))&&(/跨章一致性|专业评分不足|专业缺口|泛化套话|缺少关键线路|缺少材料验收|缺少风险识别|缺少进场/u.test(a.message)?"error"===a.level&&!/证据使用覆盖率偏低|章节逻辑依赖不足|文档交付评分报告/u.test(a.message):!(!e.hc.test(a.message)||/章节审查|最终质量审查|不在本次招标范围内/u.test(a.message))))))}function F(a){let b=[];for(let c of a.split(/^##\s+/gmu).slice(1)){let a=c.split(/\r?\n/u),d=(a.shift()||"").trim(),e=new Map,f=new Map;for(let b of a){let a=/^###\s+(.+)$/u.exec(b.trim());if(a){let b=(0,l.xT)(a[1]);b.length>=2&&f.set(b,(f.get(b)||0)+1)}let c=/^####\s+(.+)$/u.exec(b.trim());if(!c)continue;let d=c[1],g=/^\d+(?:\.\d+)*/u.test(d);if(g&&!(0,u.cq)(d))continue;let h=g?(0,t.Sw)(d):d.replace(/\s+/gu,"");h.length<2||e.set(h,(e.get(h)||0)+1)}for(let[a,c]of f)if(!(c<2)&&(b.push({level:"error",message:`${d||"某章"} 存在同名小节重复:“${a}”出现 ${c} 次`,suggestion:"同主题内容应合并为一个小节;若确为不同方面,请重命名标题以区分内容,避免目录重复堆叠。"}),b.length>=6))return b;for(let[a,c]of e)if(!(c<2)&&(b.push({level:"error",message:`${d||"某章"} 存在同名小节重复:“${a}”出现 ${c} 次`,suggestion:"同主题内容应合并为一个小节;若确为不同方面,请重命名标题以区分内容,避免目录重复堆叠。"}),b.length>=6))return b}return b}let G=new Set(["如有","应用","措施","体系","管理","保障","要求","内容","工程","项目","施工"]);function H(a){return a.replace(/^拟采用/u,"").replace(/^针对/u,"").replace(/^确保/u,"").replace(/[((][^))]*[))]/gu,"").replace(/的保障体系与措施$|管理体系与措施$|保障体系与措施$/u,"").replace(/^\d{1,3}(?:[.、.]\d{1,3})*\s*/u,"").trim().split(/[、,,;;及与和]+/u).map(a=>a.replace(/^[的了者]+/u,"").trim()).filter(a=>a.length>=2&&!G.has(a))}function I(a,b,c={}){let d=[],e=a.replace(/\s+/gu,""),f=c.semanticSimilarity?a.split(/\n/u).filter(a=>/^#{2,4}\s/u.test(a.trim())).map(a=>a.trim().replace(/^#{2,4}\s+/u,"").replace(/^\d+(?:\.\d+)*[\s、.]+/u,"").trim()).filter(Boolean).slice(0,80):[];for(let a of b.slice(0,8)){let b=H(a);if(0!==b.length&&!b.some(a=>e.includes(a))){if(c.semanticSimilarity&&f.length>0&&Math.max(...f.map(b=>c.semanticSimilarity(a,b)))>=.6)continue;d.push({level:"warning",severity:"warning",message:`招标文件评分条目“${a}”未在正文中出现(核心词:${b.join("/")})`,suggestion:"评审条目必须逐条承接为正文小节;请补写对应内容并确保核心关键词落位,避免评标失分。"})}}return d}function J(a,b){let c=(b||[]).flatMap(a=>(a.sections||[]).filter(a=>/新技术|新工艺|新材料|新设备|四新/u.test(a)));if(0===c.length)return[];let d=[],e=(0,t.Xl)(a,"四新",{fuzzy:!0}),f=e?(0,g.V7)(e):0;for(let b of[...new Set(c)]){let c=(0,t.Xl)(a,b,{fuzzy:!0});if(!c||200>(0,g.V7)(c)){if(f>=200)continue;d.push({level:"warning",severity:"warning",message:`大纲承诺小节“${b}”未在正文成稿(正文 ${c?(0,g.V7)(c):0} 字,要求不少于 200 字)`,suggestion:"请补写四新技术应用小节成稿,落位本项目适用的创新工艺、新材料与新设备应用计划。"})}}return d}let K=["basic_facts","source_traceability","chapter_evidence","no_missing_content"];function L(a,b,c){let d=a.map(D),f=/封面|页眉|页脚|附图|图片引用|CAD图|示意图|插图/u,g=d.filter(a=>"error"===a.level&&E(a)&&!f.test(a.message)),h=d.filter(a=>"error"===a.level&&f.test(a.message)),i=[{key:"no_errors",label:"无阻断级校验错误",passed:0===g.length},{key:"basic_facts",label:"基础事实齐全",passed:b.project.length>0},{key:"source_traceability",label:"事实具备来源追踪",passed:[...b.project,...b.schedule,...b.quality,...b.safety].every(a=>!!a.sourceFile)},{key:"structured_precision",label:"结构化精确参数已使用",passed:b.preciseFacts.length<e.mu||a.every(a=>"error"!==a.level||!e.Ab.test(a.message))},{key:"chapter_evidence",label:"章节均具备证据",passed:c.every(a=>a.evidence.length>0)},{key:"no_missing_content",label:"无资料未提供章节",passed:c.every(a=>!a.content.includes("资料未提供"))},{key:"no_project_contamination",label:"无项目污染和事实一致性阻断",passed:!a.some(a=>"error"===a.level&&e.Uv.test(a.message)&&E(a))},{key:"numeric_consistency",label:"跨章数值口径与资料一致",passed:!a.some(a=>"error"===a.level&&/跨章一致性冲突|跨章一致性缺口|跨章一致性复核/u.test(a.message)&&E(a))},{key:"manual_postprocess",label:`封面/页眉页脚/附图等 ${h.length} 项由后期人工完善(不阻断导出)`,passed:!0,message:h.length?h.slice(0,5).map(a=>a.message).join(";"):void 0}],j=[...g,...i.filter(a=>K.includes(a.key)&&!a.passed).map(a=>({level:"error",severity:"blocker",category:"evidence_coverage",repairability:"manual_review",owner:"user",message:`交付门禁未通过:${a.label}`,suggestion:"该项由资料完备度决定,非正文改写可解:请补齐知识库对应资料并重新生成。"}))];return{passed:0===j.length,blockingIssues:j,checklist:i}}function M(a){let b=[],c=a.split(e.A5);for(let a=0;a<c.length;a+=1){if(!e.w7.test(c[a]))continue;let d=[];for(;a<c.length&&e.w7.test(c[a]);)d.push(c[a]),a+=1;a-=1,d.some(a=>e.N3.test(a))&&b.push(d.join("\n"))}return b}function N(a){let b=[...a.matchAll(e.DB)],c=[];for(let d=1;d<b.length;d+=1){let f=b[d].index||0,g=b[d+1]?.index??a.length,h=a.slice(f,g);e.Ks.test(h)&&c.push({level:"warning",message:`第 ${d+1} 章可能重复出现基础信息`,suggestion:"如该信息与本章主题无关,建议合并到更合适的概况类章节,避免重复铺陈。"})}if(0===b.length)return c;let d=b[0].index||0,f=b[1]?.index??a.length,g=a.slice(d,f),h=g.search(e.jM);if(h<=0)return c;let i=g.slice(0,h).replace(e.Dc,""),j=[];for(let a of e.Y8)RegExp(`${a}\\s*[::]`,"u").test(i)&&j.push(a);return j.length>=3&&c.push({level:"warning",message:`基础信息表前重复叙述字段:${j.join("、")}`,suggestion:"基础信息已表格化时,表格前只保留一句引导语,不要重复逐项叙述名称、编号、范围、周期、质量等字段。"}),c}async function O(a){let b=[],c=(0,w._Q)(a);c.length>0&&b.push({level:"warning",message:`存在模板化前缀或套话:${c.slice(0,3).join("、")}`,suggestion:"请删除“本节/本章将/以下从”等前缀,标题后直接进入对象、动作、措施、检查和闭环。"});let d=a.match(/OCR|提示词|绑定片段|后台|文件路径|识别错误|知识库证据|知识库已确认事实|通用兜底段落|兜底占位|兜底模板/giu);return d?.length&&b.push({level:"warning",message:`正文包含后台或资料处理话术:${[...new Set(d)].join("、")}`,suggestion:"建议改为正式文档语言,例如“资料文字不清”“资料口径不一致”“项目资料”,不得暴露后台处理过程。"}),b}function P(a){return/劳动力|人员|工种/u.test(a)?"劳动力计划":/机械|设备|机具/u.test(a)?"机械设备计划":/材料|物资/u.test(a)?"材料物资计划":/冬季|雨季|高温|台风|大风/u.test(a)?"特殊气候措施":""}function Q(a){let b=[];for(let c of a){let a=(c.sections||[]).filter(Boolean),d=a.filter((b,c)=>a.indexOf(b)!==c);d.length>0&&b.push({level:"warning",message:`${c.title} 存在重复小节:${[...new Set(d)].join("、")}`,suggestion:"请保留用户需求、模板或显式大纲中真实需要的小节,删除重复项。"});let e=new Map;for(let b of a){let a=P(b);a&&e.set(a,[...e.get(a)||[],b])}for(let[a,d]of e)d.length>1&&b.push({level:"warning",message:`${c.title} 存在重复主题小节:${a}(${d.join("、")})`,suggestion:"请合并同类小节,只保留一个主表或主方案,其他位置采用引用或执行说明。"})}return b}function R(a){let b=e.HX.exec(a);if(!b)return[{level:"error",message:"缺少目录页",suggestion:"请在封面后生成“## 目录”,并按一级章父级、二级小节子级组织。"}];let c=0,d=0;for(let a of b[1].split(e.A5))e.ZT.test(a)&&e.EB.test(a)&&(c+=1,e.sr.test(a)&&(d+=1));return c>0&&0===d?[{level:"error",message:"目录二级小节未作为子级缩进",suggestion:"目录应为父子级导航:一级章单独成行,二级小节至少缩进两个空格列在所属章下方。"}]:[]}function S(a){return a.replace(/^#+\s*/u,"").replace(/^第[一二三四五六七八九十百千万\d]+[章节篇部分]\s*/u,"").replace(/^\d+(?:\.\d+)*(?:[..、]|\s)+/u,"").replace(/[()]/gu,a=>"("===a?"(":")").replace(/[\s::.。;;,,、]+$/gu,"").replace(/的(?=保障体系|管理体系|控制体系|措施|方案|计划|要求)/gu,"").replace(/[\s()()::.。;;,,、-]/gu,"").trim()}function T(a){let b=function(a){let b=e.HX.exec(a);return b?b[1].split(e.A5).map(a=>/^\s*(\d+\.\d+)\s+(.+)$/u.exec(a.trim())).filter(a=>!!a).map(a=>({number:a[1]||"",title:S(a[2]||"")})).filter(a=>a.title):[]}(a),c=[...a.matchAll(/^###\s+(\d+\.\d+)\s+(.+)$/gmu)].map(a=>({number:a[1]||"",title:S(a[2]||"")})).filter(a=>a.title);if(0===b.length||0===c.length)return[];let d=b.map(a=>a.title),f=c.map(a=>a.title),g=new Set(f),h=new Set(d),i=d.filter(a=>!g.has(a)),j=f.filter(a=>!h.has(a)),k=[];i.length>0&&k.push({level:"error",message:`目录与正文不一致,目录小节未在正文中找到:${[...new Set(i)].join("、")}`,suggestion:"建议以最终清洗后的正文二级标题为准重新生成目录。"}),j.length>0&&k.push({level:"error",message:`目录与正文不一致,正文小节未进入目录:${[...new Set(j)].join("、")}`,suggestion:"建议重新生成目录,确保正文二级小节完整进入目录。"});let l=new Map(c.map(a=>[a.number,a.title])),m=new Set(b.map(a=>a.number)),n=b.filter(a=>l.has(a.number)&&l.get(a.number)!==a.title),o=c.filter(a=>!m.has(a.number));return b.length!==c.length&&k.push({level:"error",message:`目录与正文小节数量不一致:目录 ${b.length} 节、正文 ${c.length} 节`,suggestion:"正文 H3 编号必须连续单调且与目录一一对应;出现重复编号、跳号或丢节时以正文实际结构重建目录。"}),n.length>0&&k.push({level:"error",message:`目录与正文同一编号对应不同小节:${n.slice(0,5).map(a=>`${a.number} 目录「${a.title}」/正文「${l.get(a.number)}」`).join("、")}`,suggestion:"目录必须按正文 H3 实际编号与标题生成,同一编号不得对应不同小节名称。"}),o.length>0&&k.push({level:"error",message:`正文小节编号未出现在目录中:${o.slice(0,5).map(a=>`${a.number} ${a.title}`).join("、")}`,suggestion:"目录编号与正文编号必须全集一致。"}),k}function U(a){let b,c=[];for(let d of a.split(e.A5)){let a=d.trim(),e=/^##\s+第[一二三四五六七八九十百千万\d]+章\s+(.+)$/u.exec(a);if(e){b={ordinal:c.length+1,title:(e[1]||"").trim(),numbers:[],prefixNumbers:[]},c.push(b);continue}let f=/^###\s+(\d+)\.(\d+)\s+/u.exec(a);f&&b&&(b.prefixNumbers.push(Number(f[1])),b.numbers.push(Number(f[2])))}let d=[];for(let a of c){if(0===a.numbers.length)continue;let b=new Map;for(let c of a.prefixNumbers)b.set(c,(b.get(c)||0)+1);let c=[...b.entries()].sort((a,b)=>b[1]-a[1]||a[0]-b[0])[0]?.[0]??a.ordinal,e=[...new Set(a.prefixNumbers.filter(b=>b!==a.ordinal))].sort((a,b)=>a-b);e.length>0&&d.push({level:"error",severity:"blocker",category:"structure",message:`小节编号章号错位:第${a.ordinal}章「${a.title}」内出现 ${e.slice(0,8).map(a=>`${a}.x`).join("、")} 编号小节(应为 ${a.ordinal}.x)`,suggestion:`正文二级小节编号必须为「章序.节序」;按章序重排本章 H3 编号(降级 H4 不占 H3 编号)。`});let f=new Map;for(let b of a.numbers)f.set(b,(f.get(b)||0)+1);let g=[...f.entries()].filter(([,a])=>a>1).map(([a])=>a).sort((a,b)=>a-b);g.length>0&&d.push({level:"error",severity:"blocker",category:"structure",message:`小节编号重复:第${a.ordinal}章「${a.title}」${g.slice(0,8).map(a=>`${c}.${a}`).join("、")} 重复出现`,suggestion:"同章内同一小节编号只允许出现一次;重复编号为降级合并残留,按正文实际小节顺序重排编号。"});let h=Math.max(...a.numbers),i=Array.from({length:h},(a,b)=>b+1).filter(a=>!f.has(a));i.length>0&&d.push({level:"error",severity:"blocker",category:"structure",message:`小节编号缺号:第${a.ordinal}章「${a.title}」缺 ${i.slice(0,8).map(a=>`${c}.${a}`).join("、")}(实有 ${f.size} 个小节,最大编号 ${c}.${h})`,suggestion:"小节编号必须从 1 起连续;缺号源自降级合并占用编号或丢节,按正文小节顺序重排编号后同步重建目录。"})}return d}function V(a){let b=a.replace(/^#{1,6}\s+/u,"").replace(/^\s*\d+(?:\.\d+)*(?:[..、]|\s)+/u,"").replace(/^第[一二三四五六七八九十百千万\d]+[章节篇部分]\s*/u,"").trim(),c=(0,k.GQ)(b),d=/^(?:\d+(?:\.\d+)*\s*)?(?:[-—–]\s*)?(?:(?:判断|判定|识别|确认)?是否(?:涉及|涉|需要|适用).*|(?:如|若|如果)(?:涉及|不涉及|适用|不适用).*|.*(?:根据|结合).{0,12}(?:实际情况|项目情况|资料情况).{0,8}(?:判断|确定|编写|生成).*|.*(?:按需(?:生成|编写)|视情况|判断后|生成要求|编写要求|注意事项))\s*$/u;return d.test(b)||d.test(c)||(0,k.mq)(b)||(0,k.mq)(c)}function W(a){let b=[...a.matchAll(/^#{2,6}\s+(.+)$/gmu)].map(a=>(0,k.GQ)(a[1]||"")).filter(V);return b.length>0?[{level:"error",message:`正文存在疑似提示词指令标题:${[...new Set(b)].slice(0,8).join("、")}`,suggestion:"请删除或改写为正式施工组织设计小节标题,目录也不得收录该类标题。"}]:[]}function X(a){let b=[],c=a.split(e.A5).map(a=>a.trim()).filter(a=>a&&!/^#{1,6}\s+/u.test(a)&&!/^\s*\|/u.test(a)&&!/^<div\b/iu.test(a)),d=c.find(a=>S(a).length<=1);d&&b.push({level:"warning",message:`正文存在孤立字或残缺段落:${d}`,suggestion:"请删除残缺行或重新生成所在小节。"});let f=/^(?:[-*+]\s+|[((]?\d+[)).、]\s*)/u,g=/(?:按以下|如下|包括|分为|包含|列出).*[::]$/u,h=a=>/[::]$/u.test(c[a])&&a+1<c.length&&f.test(c[a+1]),i=a=>/[,、;:]$/u.test(c[a])&&a+1<c.length&&!f.test(c[a+1]),j=[];for(let a=0;a<c.length&&j.length<3;a+=1){let b=c[a];!(f.test(b)||g.test(b)||h(a)||i(a))&&(/[,、;:和与在为对将]$/u.test(b)||/(通过|包括|如下|主要包括|验收|合格后|复查合格后|设计风|确认后|具体如下|应符合|不少于|以及|且应|不得少于)$/u.test(b))&&j.push(b)}for(let a of j)b.push({level:"error",severity:"blocker",category:"format",owner:"llm",repairability:"llm_repairable",message:`正文存在疑似截断句:${a}`,suggestion:"请补完整该段落,避免以连接词、逗号、冒号或无句号的动作词结尾。"});let k=c.find(a=>a.length>380);k&&b.push({level:"warning",message:`正文存在过长段落:${k}`,suggestion:"请拆分为多段或表格,改善导出版式和可读性。"});let l=c.find(a=>/\S.+(?:\s|[。;;])(?:\d+[.、](?=\s|\*\*)\s*|[((]\d+[))]\s*|[-*+]\s+)\S.+(?:\s|[。;;])(?:\d+[.、](?=\s|\*\*)\s*|[((]\d+[))]\s*|[-*+]\s+)\S/u.test(a)&&!/\b\d+\.\d+\s*(?:mm|cm|m|㎡|m2|kg|t|MPa|kPa|V|KV|kV|A)\b/iu.test(a));l&&b.push({level:"error",message:`正文存在列表项粘连同一行:${l.slice(0,120)}`,suggestion:"有序列表和无序列表必须逐项独占一行,确保 Markdown/PDF/DOCX 正确排版。"});let m=a.match(/PDF\s*第\s*|(?:PDF\s*)?第\s*\d+\s*(?:[-—至到~~]\s*\d+)?\s*页|(?:图纸|清单|资料|文件|[\u4e00-\u9fa5A-Za-z0-9()()、·-]{2,24}(?:工程)?)\s*(?:[((]?\s*|(?:共|多达|约|合计)\s*)\d+\s*页|[\u4e00-\u9fa5A-Za-z0-9、及与和]{2,24}\s*(?:共|多达|约|合计)\s*\d+\s*页|\d+\s*页\s*(?:图纸|资料|文件|装饰|土建|加固|给排水|电气|智能化|消防)|\d+\s*页/iu)?.[0];m&&b.push({level:"error",message:`正文残留资料页码元信息:${m}`,suggestion:"正式投标正文应引用招标文件、施工图设计文件、工程量清单和相关专业图纸,不写 PDF 页码或资料页数。"});let n=c.find(a=>/仅作为内部事实提取依据|正式正文不得引用文件名|后台事实|内部事实/u.test(a));return n&&b.push({level:"error",message:`正文残留内部处理说明:${n.slice(0,120)}`,suggestion:"正式投标正文不得出现内部事实抽取、后台处理或文件名引用限制说明。"}),b}function Y(a){let b=[],c=a.split(e.A5),d=/。{2,}|[!?;:,、]{2,}|。[!?;:,、]|[!?;:,、]。/u;for(let a of c){let c=a.trim();if(!c||/^#{1,6}\s+/u.test(c)||/^\s*\|/u.test(c)||/^<div\b/iu.test(c))continue;let e=d.exec(c);if(e){let a=Math.max(0,e.index-24),d=`${c.slice(a,e.index)}【${e[0]}】${c.slice(e.index+e[0].length,e.index+e[0].length+24)}`;b.push({level:"error",severity:"blocker",category:"format",owner:"llm",repairability:"llm_repairable",message:`正文存在句读标点叠用(拼接/删节残留):${d}`,suggestion:"相邻句读标点(如「。;」「;。」「。。」)是删节拼接残留或省略号误写,请重写该句。"})}}for(let{open:d,close:e,label:f}of n.Rc){let g=a.split(d).length-1,h=a.split(e).length-1;if(g===h)continue;let i=c.find(a=>a.split(d).length-1!=a.split(e).length-1);b.push({level:"error",severity:"blocker",category:"format",owner:"llm",repairability:"llm_repairable",message:`正文存在${f}不闭合(开 ${g} 处、闭 ${h} 处,拼接/删节残留):${i?.trim().slice(0,120)??""}`,suggestion:`${f}成对性破坏是内容丢失拼接的确定性信号,请重写所在句子/小节,补齐或删除残缺部分。`})}return b}function Z(a){let b=[];{let c=[...a.matchAll(/^#{2,4}\s+(.+)$/gmu)].map(a=>(a[1]||"").trim()).filter(a=>/[☑✓✔☐□☒○●◉◇◆]/u.test(a)).slice(0,6);c.length>0&&b.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:`小节标题残留复选框/选项符号(☑/✓ 等招标文件符号):“${c.join("”、“")}”`,suggestion:"删除标题中的复选框符号(☑✓✔☐□等);标题主体若属商务文件内容(如“电子保函”),整个小节删除,技术标不得出现商务条款小节。"})}let c=a.search(/^##\s+第[一二三四五六七八九十百千万\d]+章\s+/mu),d=[...(c>=0?a.slice(c):a.replace(/^##\s+目录[\s\S]*?(?=^##\s+第[一二三四五六七八九十百千万\d]+章\s+)/mu,"")).matchAll(/^##\s+(.+)$/gmu)].map(a=>(a[1]||"").trim()).filter(a=>"目录"!==a&&!/^第[一二三四五六七八九十百千万\d]+章\s+/u.test(a)&&!/^附录/u.test(a)&&!/^附表\s*[一二三四五六七八九十\d]{1,3}/u.test(a)).map(a=>(0,k.GQ)(a));d.length>0&&b.push({level:"error",message:`正文存在非正式章二级标题:${[...new Set(d)].slice(0,8).join("、")}`,suggestion:"正文 ## 只允许用于“第X章”正式章标题;章内小节必须使用 ### X.Y。"});let e=[...a.matchAll(/^##\s+(第[一二三四五六七八九十百千万\d]+章\s+.+)$/gmu)];for(let c=0;c<e.length;c+=1){let d=e[c].index||0,f=e[c+1]?.index??a.length,g=[...a.slice(d,f).matchAll(/^###\s+\d+\.\d+\s+(.+)$/gmu)].map(a=>(0,k.GQ)(a[1]||"")),h=(0,k.GQ)((e[c][1]||"").replace(/^第[一二三四五六七八九十百千万\d]+章\s*/u,""));1===g.length&&S(g[0])===S(h)&&b.push({level:"error",message:`章节只有一个且与章名同名的小节:${e[c][1]}`,suggestion:"应拆分为多个业务小节,不能用章标题重复作为唯一二级小节。"})}return b}function $(a,b){return!(!e.US.test(a)&&!e.s8.test(a)||b.headerCell&&/存在问题|整改措施|整改情况|复查结果|处理情况|检查情况|落实情况|验收结论|备注|说明/u.test(b.headerCell)&&/^无+$/u.test(a))&&(!/^(?:—+|-+)$/u.test(a)||!(b.cellIndex>0&&/^(?:合计|小计|总计|累计)/u.test(b.rowFirstCell||"")||b.headerCell&&/规格型号|规格|型号|额定功率|功率|生产能力|产能|国别产地|制造年份|用于施工部位|已使用台时数/u.test(b.headerCell)))}function _(a){let b=[];for(let c of M(a)){let a=c.split(e.A5).filter(a=>e.w7.test(a));if(a.length<2||!e.N3.test(a[1]||""))continue;let d=a.map(a=>a.trim().replace(/^\|/u,"").replace(/\|$/u,"").split(/(?<!\\)\|/u).map(a=>(0,m.jG)(a.trim()))),f=d[0]||[];for(let a of d.slice(2))for(let c=0;c<a.length;c+=1){let d=a[c]||"";$(d,{rowFirstCell:a[0]||"",headerCell:f[c],cellIndex:c})&&b.push({header:f,rowFirstCell:a[0]||"",cellIndex:c,cell:d})}}return b}function aa(a){a=(0,l.BJ)(a);let b=[];{let c=a.split(e.A5);for(let a=1;a<c.length;a+=1){let d=(c[a]||"").trim(),f=(c[a-1]||"").trim();d&&!/^\|/u.test(d)&&d.endsWith("|")&&1===(d.match(/\|/gu)||[]).length&&!/^#{1,6}\s/u.test(d)&&e.w7.test(f)&&b.push({level:"error",message:`表格断行残片:${d}`,suggestion:"该行是表格数据行整列丢失的残片:合并回所属表格行并补齐缺失列,或删除该残行。"})}}/按审批确认执行/u.test(a)&&b.push({level:"error",message:"表格存在自动兜底污染内容:按审批确认执行",suggestion:"正式投标表格不得使用通用兜底短语,应保留真实业务内容或删除该行。"});let c=[];for(let b of a.matchAll(/\|\s*信息项\s*\|\s*内容\s*\|/gu)){let d=a.slice(b.index||0),f=[];for(let a of d.split(e.A5)){if(f.length>0&&!e.w7.test(a))break;f.push(a)}c.push(f.join("\n"))}let d=c.filter(a=>/项目名称|招标人|建设单位|发包人|建设地点|招标范围|计划工期|合同估算价|质量标准/u.test(a)).length;d>1&&b.push({level:"error",message:`项目基础信息类表格重复:${d} 处`,suggestion:"项目名称、招标人、建设地点、工期、质量等基础信息只能集中输出一次。"});let f=a.match(/^\|\s*---\s*\|\s*---\s*\|\s*$/gmu)||[];for(let c of(f.length>60&&b.push({level:"error",message:`表格分隔线异常重复:${f.length} 行`,suggestion:"请修复表格规范化逻辑,禁止把数据行拆成多个碎表。"}),M(a))){let a=c.split(e.A5).filter(a=>e.w7.test(a));if(a.length<2)continue;if(!e.N3.test(a[1]||"")){b.push({level:"error",message:`表格分隔线位置不规范:${a[0]||""}`,suggestion:"Markdown 表格必须紧跟表头输出分隔线,例如 |---|---|,中间不得插入正文或其他管道行。"});continue}let d=a.map(a=>a.trim().replace(/^\|/u,"").replace(/\|$/u,"").split(/(?<!\\)\|/u).map(a=>(0,m.jG)(a.trim()))),f=d[0]||[],g=f.filter(a=>/^(?:列|字段|内容|备注)\d+$/u.test(a));g.length>0&&b.push({level:"error",message:`表格存在泛化表头:${g.join("、")}`,suggestion:"正式投标表格必须使用业务字段表头,不得出现“列5/字段1/内容2”等临时表头。"});let h=f.length;d.find((a,b)=>1!==b&&a.length!==h)&&b.push({level:"error",message:`表格列数不一致:${f.join("、")}`,suggestion:"请统一表头和数据行列数;不应通过自动填充兜底词修补表格。"});let i=d.slice(2),j=i.find(a=>a.some(a=>""===a));j&&b.push({level:"error",message:`表格存在空单元格:${f.join("、")}(“${j[0]||""}”行)`,suggestion:"正式交付表格不得出现空单元格;缺失数据应从资料补齐或按业务口径填写具体值,不得留空。"});let k=i.find(a=>a.some((b,c)=>$(b,{rowFirstCell:a[0]||"",headerCell:f[c],cellIndex:c})));if(k){let a=k.find((a,b)=>$(a,{rowFirstCell:k[0]||"",headerCell:f[b],cellIndex:b}))||"";b.push({level:"error",message:`表格存在占位符单元格:${f.join("、")}(“${k[0]||""}”行“${a}”)`,suggestion:"正式交付表格不得用“—/若干/约/待定”等占位或模糊表达代替具体数据;应从资料补齐具体数值。"})}}return b}function ab(a){let b=a.split(/\r?\n/u),c=[],d=(a,d,e)=>{c.some(b=>b.start===a)||c.push({start:a,end:((a,c)=>{for(let d=a+1;d<b.length;d+=1){let a=/^(#{1,4})\s+(.+)$/u.exec(b[d].trim());if(a&&(0===c||a[1].length<=c))return d}return b.length})(a,d),level:d,title:e})};for(let a of[/编制依据/u,/编制说明|编制原则|编制目的/u]){let c=!1;for(let e=0;e<b.length;e+=1){let f=b[e].trim(),g=/^(#{2,4})\s+(.+)$/u.exec(f),h=g?null:/^\*\*(.+)\*\*$/u.exec(f);if(!g&&!h)continue;let i=g?g[2]:h?.[1]??"";if(a.test(i)){d(e,g?g[1].length:0,i),c=!0;break}}if(c)break}for(let a=0;a<b.length;a+=1){let c=b[a].trim();if(!(!c.includes("编制依据")||/^#{1,6}\s/u.test(c)||/^\*\*(.+)\*\*$/u.test(c))&&!(c.includes(" ")||/[.·…]{4,}/u.test(c)))for(let c=a-1;c>=0;c-=1){let e=b[c].trim(),f=/^(#{2,4})\s+(.+)$/u.exec(e),g=f?null:/^\*\*(.+)\*\*$/u.exec(e);if(!f&&!g)continue;if(a-c>60)break;let h=f?f[2]:g?.[1]??"";if(/目录/u.test(h))break;d(c,f?f[1].length:0,h);break}}return c.sort((a,b)=>a.start-b.start)}function ac(a){let b=a.split(/\r?\n/u);return ab(a).map(a=>[a.title,...b.slice(a.start+1,a.end)].join("\n")).join("\n")}function ad(a,b){let c=ac(a);if(!c)return[];let d=[],e=(c.match(/《[^《》]{2,40}(?:法|条例|办法|规程|规范|标准)》/gu)||[]).map(a=>a.replace(/《|》/gu,""));e.some(a=>/法$/u.test(a))||d.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:"编制依据小节缺少国家法律法规条目",suggestion:"编制依据小节必须列出具体法律名称及文号(如《中华人民共和国建筑法》),不得空写「国家现行法律、行政法规」类别话术。"}),e.some(a=>/(?:条例|办法)$/u.test(a))||d.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:"编制依据小节缺少条例类条目",suggestion:"编制依据小节必须列出具体条例名称(如《建设工程质量管理条例》),不得以类别话术代替。"});let f=/《[^《》]{2,40}(?:规范|规程|标准)[^《》]{0,20}》/u.test(c),g=/(?:GB|CJJ|JGJ|JTG|SL|DB|DL|YS|HG)[\s/T]*[A-Z]?[\s/]?\d{2,4}/u.test(c);f||g||d.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:"编制依据小节缺少施工验收规范条目",suggestion:"编制依据必须包含与本工程分部对应的现行施工验收规范名称及编号(如《给水排水管道工程施工及验收规范》(GB 50268-2008))。"});let h=[...(b?.project.location||"").matchAll(/([\u4e00-\u9fa5]{2,10}?[省市])/gu)].map(a=>a[1]);if(h.length>0&&(h.some(a=>e.some(b=>b.startsWith(a)||b.includes(a)))||d.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`编制依据小节缺少${h[0]}地方性法规、条例`,suggestion:`编制依据必须列出工程所在地(${h.join("、")})现行地方性法规及条例名称。`})),b&&b.basisRegulations.length>0){let a=b.basisRegulations.filter(a=>!e.includes((a.match(/《([^》]+)》/u)||[])[1]||""));a.length===b.basisRegulations.length&&d.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`编制依据小节未列招标文件引用法规:${a.slice(0,3).map(a=>a.replace(/(.*/u,"")).join("、")}`,suggestion:"招标文件引用的法规必须照抄进编制依据小节。"})}return d}function ae(a,b){let c=(0,q.re)(b);if(!c)return[];let d=[],e=new Set;for(let b of(0,q._H)(a,c))e.has(b.label)||(e.add(b.label),d.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:b.message,suggestion:b.suggestion}));return d}function af(a){let b=[],c=a.split(e.A5),d=[];for(let a=0;a<c.length;a+=1){if(!e.w7.test(c[a]))continue;let b=a,f=[];for(;a<c.length&&e.w7.test(c[a]);)f.push(c[a]),a+=1;a-=1;let g=f.filter(a=>e.N3.test(a)).length;if(0===g)continue;let h=(f[0]||"").trim(),i=h.startsWith("|")?h.slice(1):h,j=(i.endsWith("|")?i.slice(0,-1):i).split("|").map(a=>a.split("**").join("").trim()).filter(a=>a.length>0);d.push({headerKey:j.join("|"),headerText:j.join("、"),start:b,end:a,dividerCount:g})}let f=new Map;for(let a of d)f.set(a.headerKey,(f.get(a.headerKey)||0)+1);let g=[...f.entries()].filter(([,a])=>a>=3);if(g.length>0){let a=d.find(a=>f.get(a.headerKey)===g[0]?.[1])?.headerText||"";b.push({level:"error",severity:"blocker",category:"table",owner:"llm",repairability:"llm_repairable",message:`同主题表格重复堆叠:${g.length} 组相同表头出现 3 次及以上(如:${a})`,suggestion:"同一主题表格全文只出现一次,禁止拆成多张碎表重复堆叠凑数;请合并同类表格或删除重复内容。相同表头分别用于不同主题时,必须在表头列名中加主题限定词(如「进度关键节点/质量关键节点/安全关键节点」)以区分口径。"})}let h=0;for(let a=1;a<d.length;a+=1){let b=d[a-1],e=d[a];b&&e&&c.slice(b.end+1,e.start).every(a=>""===a.trim())&&(h+=1)}for(let a of d)a.dividerCount>=2&&(h+=a.dividerCount-1);return h>=2&&b.push({level:"warning",category:"table",message:`表格连续堆叠:${h} 处相邻表格无正文分隔`,suggestion:"表格之间应有正文引导叙述,禁止连续堆叠多张表格凑数。"}),b}function ag(a){return a.split(e.A5).filter(a=>!/^#{1,6}\s+/u.test(a.trim())).filter(a=>!/^\s*\|/u.test(a)).filter(a=>!/^\s*:?-{3,}:?/u.test(a)).filter(a=>!/^<\/?div\b/iu.test(a.trim())).join("\n").replace(/[|*_`<>-]/gu,"").replace(e.ug,"").length}function ah(a){return S(a)}function ai(a,b){let c=S(a),d=S(b);if(!c||!d)return!1;if(c===d||c.includes(d)||d.includes(c)||(0,t.ty)(c,d))return!0;let e=/项目概况|主要施工方案|新技术新材料|工程重点难点|重点难点|危大工程|保障体系|安全保障|工期|质量|安全生产|应急预案|资源|人材机|材料|机械|劳动力|进度|关键线路|交通疏导|成品保护|深化设计|验收/gu,f=new Set(c.match(e)||[]),g=new Set(d.match(e)||[]),h=[...f].filter(a=>g.has(a)).length;return h>=2||1===Math.min(f.size,g.size)&&1===h&&16>=Math.max(c.length,d.length)}function aj(a){let b=[...a.matchAll(/^(#{3,4})\s+(.+)$/gmu)];return b.map((c,d)=>{let e=c[1].length,f=(c.index||0)+c[0].length,g=b.slice(d+1).find(a=>a[1].length<=e),h=g?.index??a.length,i=(c[2]||"").trim();return{rawTitle:i,title:S(i),level:e,body:a.slice(f,h)}}).filter(a=>a.title&&(3===a.level||4===a.level))}function ak(a,b,c,d,f){let g=ag(d),h=e.w7.test(d)&&d.split(e.A5).some(a=>e.N3.test(a)),i=ag(d.split("\n").filter(a=>!e.w7.test(a)&&!e.N3.test(a)).join("\n").replace(/^#{1,6}\s+.+$/gmu,""));if(/\[WRITER_MISSING_SECTION\]|Writer 未完成/u.test(d))return{chapterTitle:a,sectionTitle:b,level:c,bodyLength:g,reason:"empty",planned:f,message:`${a} 小节内容补写未完成:${b}`};if(/【本小节生成未达标,需重新生成】/u.test(d))return{chapterTitle:a,sectionTitle:b,level:c,bodyLength:g,reason:"empty",planned:f,message:`${a} 小节生成未达标:${b}`};if(/项目基本信息|基本信息|工程概况|项目概况|工程概述|项目概述/u.test(b)&&(h||g>=40)||/^附录[一二三四五六七八九十A-Z\d]/u.test(b)&&h)return;let j=/清单|配置|汇总|一览|明细|计划|进度|节点|安排/u.test(b)||/表[^,。;:\s]{0,6}$/u.test(b);if(!(h&&j&&Math.max(0,d.split(e.A5).filter(a=>e.w7.test(a)&&!e.N3.test(a)).length-1)>=2)){if(h&&i<20)return{chapterTitle:a,sectionTitle:b,level:c,bodyLength:g,reason:"empty",planned:f,message:f?`${a} 只有标题或表格无正文:${b}`:`${a} 小节只有标题或表格无正文:${b}`};if(!(g>=80)||!(i>=20)){if(0===g)return{chapterTitle:a,sectionTitle:b,level:c,bodyLength:g,reason:"empty",planned:f,message:`${a} 空小节:${b}`};if(g<180)return{chapterTitle:a,sectionTitle:b,level:c,bodyLength:g,reason:"too_short",planned:f,message:`${a} ${f?"规划小节":"正文小节"}正文过短:${b}`}}}}function al(a,b){let c=[],d=new Set;for(let e of b){let b=e.content?.trim()?e.content:a;for(let a of(e.sections||[]).filter(a=>!(0,u.cq)(a)&&!(v.gG.test(e.title)&&t.V.test(a.trim()))&&!/^附录/u.test(a.trim()))){let f=S(a),g=function(a,b){let c=aj(a).filter(a=>ai(a.rawTitle,b));return c.length<=1?c[0]:c.map(a=>({item:a,gap:ak("",b,a.level,a.body,!0),textLength:ag(a.body)})).sort((a,b)=>{let c=a.gap&&"empty"===a.gap.reason?1:0,d=b.gap&&"empty"===b.gap.reason?1:0;return c!==d?c-d:b.textLength-a.textLength})[0]?.item}(b,a),h=`${e.title}|${f}|planned`;if(!g){c.push({chapterTitle:e.title,sectionTitle:a,level:3,bodyLength:0,reason:"missing_planned_section",planned:!0,message:`${e.title} 缺少规划小节:${a}`}),d.add(h);continue}let i=ak(e.title,a,g.level,g.body,!0);i&&c.push(i),d.add(h)}for(let a of aj(b)){let b=`${e.title}|${a.title}|actual`,f=`${e.title}|${a.title}|planned`;if(d.has(b)||d.has(f))continue;let g=ak(e.title,a.title,a.level,a.body,!1);g&&"empty"===g.reason&&c.push(g),d.add(b)}}return c}function am(a,b){return al(a,b).filter(a=>"empty"===a.reason||"missing_planned_section"===a.reason).map(a=>({level:"error",category:"structure",message:a.message,suggestion:"missing_planned_section"===a.reason?"必须补充该规划小节正式正文,不得缺节导出。":"必须补充与该小节相关的材料事实和必要内容,达到正文完整度要求。"}))}function an(a){let b=a.content?.trim()?a.content:"";if(!b)return[];let c=(a.sections||[]).filter(b=>!(0,u.cq)(b)&&!(v.gG.test(a.title)&&t.V.test(b.trim()))&&!/^附录/u.test(b.trim())),d=[...b.matchAll(/^(#{3,4})\s+(.+)$/gmu)],e=[];return d.forEach((a,f)=>{let g=a[1].length,h=(a[2]||"").trim();if(!h)return;let i=(a.index||0)+a[0].length,j=d.slice(f+1).find(a=>a[1].length<=g),k=j?.index??b.length;if(""!==b.slice(i,k).trim()||c.some(a=>ai(a,h)))return;let l=b.slice(0,a.index||0).split("\n").length-1;e.push({line:l,rawTitle:h,level:g})}),e}function ao(a){let b=[];for(let c of a){if(!c.content?.trim())continue;let a=a=>{let b=String(a||"").trim();return!b||(0,u.cq)(b)||/^附录/u.test(b)||v.gG.test(c.title)&&t.V.test(b)},d=(c.sections||[]).filter(b=>!a(b));if(0===d.length)continue;let e=(0,l.r4)(c.content).filter(b=>!a(b));if(e.length<=d.length)continue;let f=new Set(d.map(a=>S(a))),g=e.filter(a=>!f.has(S(a)));b.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",chapterId:c.id,message:`成稿小节超出主题块数:「${c.title}」成稿 ${e.length} 个小节、规划主题块 ${d.length} 个${g.length?`;规划外小节:${g.slice(0,5).join("、")}`:""}`,suggestion:"成稿 H3 小节必须与规划主题块一一对应(拆半块合并为一个小节):规划外小节属相邻主题块内容时并入归属小节并降为 H4,无归属时整节删除;修复后小节编号按正文顺序自动重排。"})}return b}function ap(a){return`${a.fieldName||a.key} ${(0,t.lG)(a.value)}`.replace(/\s+/gu," ").trim()}function aq(a){let b=new Set;for(let c of[/\d+\s*日历天(?!内)/gu,/(?:计划工期|合同工期|总工期|工期|施工周期)[^\n。;;]{0,12}\d+\s*天/gu,/(?:计划工期|合同工期|总工期|工期|施工周期)[^\n。;;]{0,12}\d+\s*(?:个月|月)/gu])for(let d of a.matchAll(c)){let a=d[0].match(/\d+\s*(?:日历天|天|个月|月)/u)?.[0]?.replace(/\s+/gu,"");a&&b.add(a)}return[...b]}let ar=/占地|用地|地下|地上|办公|生活|附属|辅助|绿化|道路|广场|门卫|配电|泵房|锅炉房|车库|车棚|岗亭|传达|警卫|样板房|售楼|门房|单栋|各栋|楼层|每层|单层|架空|雨棚|堆场/u,as=/办公区|生活区|加工区|施工区|堆场|门卫|配电|泵房|锅炉房|车库|车棚|岗亭|传达|警卫|样板房|售楼|门房|地下室|楼层|单层|每层|架空|雨棚/u,at=/门卫|门房|岗亭|值班室|传达室|警卫室|公厕|车棚|雨棚|配电房|配电室|泵房|水泵房|锅炉房|样板房|售楼处|构筑物|用房|配套设施|\d{1,3}[栋座处]/u;function au(a,b){let c=a.slice(Math.max(0,b-48),b),d=c.lastIndexOf("\n\n"),e=d>=0?c.slice(d+2):c;return at.test(e.replace(/\s+/gu,""))}let av=/暂列|暂估|费率|税率|利润|规费|安全文明|措施费|人工费|材料费|机械费|管理费|暂定/u,aw=["地下建筑面积与地上建筑面积的分项指标","配套用房与附属用房的建筑面积","占地面积与绿化面积的用地指标"],ax=["总建筑面积的总体规模指标","建设规模的总量数值"],ay=["暂列金额与暂估价的子项费用","人工费与材料费的分项费用"],az=["合同估算价的总金额口径","投资估算的总体金额"];async function aA(a){return(0,x.A)({prototypes:[...aw],negativePrototypes:[...ax],embedDocuments:a})}async function aB(a){return(0,x.A)({prototypes:[...ay],negativePrototypes:[...az],embedDocuments:a})}async function aC(a,b,c,d,e,f,g){let h=[],i=[],j=new Set,k=RegExp(`(?:${b.source})(?:[^\\n。;;,,]{0,14}?)(\\d{2,}(?:[.,]\\d+)?\\s*万?)\\s*(${c.source})`,"giu"),l=[...a.matchAll(k)],m=f?l.filter(b=>{let c=b[0].slice(0,b[0].indexOf(b[1])),f=a.slice(Math.max(0,(b.index??0)-16),b.index??0);return!(d&&d.test(c)||e&&e.test(f)||g&&au(a,b.index??0))}).map(b=>{let c=b[0].slice(0,b[0].indexOf(b[1])),d=a.slice(Math.max(0,(b.index??0)-16),b.index??0);return{index:b.index??0,context:`${d}${c}`.replace(/\s+/gu,"").slice(-24)}}):[],n=m.length>0?await f(m.map(a=>a.context)):[],o=new Set(m.filter((a,b)=>n[b]).map(a=>a.index));for(let c of l){let f=c[1].replace(/[,,]/gu,"").replace(/\s+/gu,""),k=c[2],l=c[0].slice(0,c[0].indexOf(c[1])),m=a.slice(Math.max(0,(c.index??0)-16),c.index??0);if(d&&d.test(l)||e&&e.test(m)||g&&au(a,c.index??0)||o.has(c.index??0)){i.push({value:f,unit:k,scope:c[0].slice(0,l.length).replace(/\s+/gu,""),context:`${m}${l}`.replace(/\s+/gu,"").slice(-24)});continue}let n=c[0].match(b)?.[0]||"",p=`${f}|${k}`;!f||j.has(p)||(j.add(p),h.push({value:f,unit:k,scope:n}))}return{entries:h,skipped:i}}function aD(a,b){return aC(a,aF,aG,ar,as,b).then(({entries:b})=>{let c=b.find(a=>"建筑面积"===a.scope.replace(/^总/u,""));return/占地|用地/u.test(a)?c:b[0]})}function aE(a){let b=a.value.replace(/[,,]/gu,"").trim(),c=/^([\d.]+)万/u.exec(b),d=c?1e4*Number(c[1]):Number(b);return Number.isFinite(d)?/亿元/u.test(a.unit)?1e8*d:/万元/u.test(a.unit)?1e4*d:d:NaN}let aF=/(?<![地上地下门卫室值班室配电室配电房泵房水泵房锅炉房公厕车库车棚岗亭传达室警卫室样板房售楼处门房])总?建筑面积|总?建设规模/u,aG=/㎡|m²|m2|平方米/u,aH=/合同估算价|合同估算价格|投资估算|最高投标限价|招标控制价|工程总投资|总投资|工程造价/u,aI=/万元|亿元/u,aJ=/本组配置|分组配置|按全项目总表调度|按总表调度|总表调度|按全项目机械配置总表|按机械配置总表|按设备配置总表/u;async function aK(a,b,c,d,e){let f=[],g=await aA(e),h=await aB(e),i=a=>c?.find(b=>b.kind===a&&b.resolution&&"low"!==b.confidence)?.resolution,j=a=>{let b=/(\d+(?:\.\d+)?)\s*(㎡|m²|m2|平方米|万元|亿元)/u.exec(a);return b?{value:b[1],unit:b[2]}:void 0},k=i("duration")??b.schedule.map(ap).find(a=>/\d+\s*(?:日历天|天|个月|月)|计划工期|合同工期/u.test(a)),l=b.quality.map(ap).find(a=>/质量|合格|优良/u.test(a));if(k){let b=aq(k)[0],c=a.split("\n").filter(a=>!/^\s*\|/u.test(a.trim())).join("\n"),d=[];for(let a of c.matchAll(/(?:计划工期|合同工期|总工期|工期|施工周期)[^\d。;;\n|]{0,18}(\d{1,4})\s*日历天/gu)){let e=c.slice(Math.max(0,(a.index||0)-8),a.index||0)+a[0];if(/顺延|延长|展期|不超过|不大于|最多|累计|第\d+日/u.test(e)||/基坑|支护|桩基|土方|基础|主体|装饰|装修|安装|室外|分项|分阶段|阶段|关键线路|单层|每层|地下室|砌体|二次结构|收尾|调试/u.test(e))continue;let f=`${a[1]}日历天`;f===b||d.includes(f)||d.push(f)}b&&d.length>=1&&f.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`跨章一致性冲突:正文出现与资料工期不一致的表述 ${d.slice(0,6).join("、")}`,suggestion:`请统一使用资料中的工期口径:${k}`})}l&&!/质量标准|质量目标|合格|优良/u.test(a)&&(d&&[...d.values()].some(a=>a.contentNeeds.quality)||f.push({level:"error",message:"跨章一致性缺口:正文未稳定体现资料中的质量目标",suggestion:`请在工程概况、质量保证和验收相关章节统一体现:${l}`}));let m=i("area"),n=b.project.map(ap).filter(a=>/建设规模|建筑面积/u.test(a)),o=await Promise.all(n.map(a=>aD(a,g))),p=m??n.find((a,b)=>void 0!==o[b]);if(p){let c=m?j(m):await aD(p,g),{entries:d,skipped:e}=await aC(a,aF,aG,ar,as,g,at);if(c){let a=d.filter(a=>aE(a)!==aE(c));a.length>=1&&f.push({level:"error",message:`跨章一致性冲突:正文出现与资料建设规模不一致的表述 ${a.slice(0,6).map(a=>`${a.value}${a.unit}`).join("、")}`,suggestion:`请统一使用资料中的建设规模口径:${p.slice(0,80)}`})}if(e.length>0){let a=[m?`建筑总量裁决值:${m}`:"",...b.project.map(ap).filter(a=>/建设规模|建筑面积|占地/u.test(a)).slice(0,3)].filter(Boolean);f.push({level:"warning",severity:"warning",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`规模口径复核:正文 ${e.slice(0,3).map(a=>`“${a.context.slice(-14)}${a.value}${a.unit}”`).join("、")} 等 ${e.length} 处数值的口径词与数值之间或口径词前文出现子项/专项/实体口径词,需核对口径归属`,suggestion:`依据项目规模事实卡逐处核对该数值的口径归属(${a.join(";")||"无可用事实卡,以绑定资料原文为准"}):与事实卡对应口径一致的数值保留原样,口径错位或数值不一致的数值改正为事实卡对应口径值,不得把子项/专项口径数值改成建筑总量数值。`})}}let r=i("cost"),s=r??b.project.map(ap).find(a=>/合同估算|投资估算|最高投标限价|招标控制价|总投资|工程造价/u.test(a));if(s){let b=r?j(r):(await aC(s,aH,aI,av,void 0,h)).entries[0],c=(await aC(a,aH,aI,av,void 0,h)).entries;if(b){let a=c.filter(a=>aE(a)!==aE(b));a.length>=1&&f.push({level:"error",message:`跨章一致性冲突:正文出现与资料估算价不一致的表述 ${a.slice(0,6).map(a=>`${a.value}${a.unit}`).join("、")}`,suggestion:`请统一使用资料中的估算价口径:${s.slice(0,80)}`})}}let u=new Set;for(let b of a.matchAll(RegExp(aJ.source,"gu"))){let c=b.index??0,d=Math.max(a.lastIndexOf("\n",c-1),a.lastIndexOf("。",c-1),a.lastIndexOf(";",c-1),a.lastIndexOf(";",c-1)),e=["\n","。",";",";"].map(b=>a.indexOf(b,c)).filter(a=>a>=0),f=e.length>0?Math.min(...e):a.length;for(let b of(0,q.tx)(a.slice(d+1,f)))u.add(b)}let v=new Map;for(let b of(0,q.AK)(a)){if((0,z.HS)(a,b.start,b.text))continue;let c=b.name,d=String(b.count),e=a.slice(Math.max(0,b.start-20),b.start+b.text.length+24),f=/组|村/u.test(e)||aJ.test(e),g=v.get(c)||{values:[],grouped:!1};g.values.includes(d)||g.values.push(d),g.grouped=g.grouped||f,v.set(c,g)}let w=new Map,x=new Map;for(let a of b.billItemFacts??[]){let b=(0,t.lG)(a.value),c=/名称[::]\s*([^\n|]+)/u.exec(b)?.[1]??"",d=(0,q.j4)(c.replace(/[((][^))]*[))]/gu,"").trim());if(!d)continue;let e=b.split("|工程量:")[1]??"",f=/(\d+(?:\.\d+)?)\s*(?:台|套|辆)/u.exec(e),g=f?Number(f[1]):NaN;Number.isFinite(g)&&!(g<=0)&&(w.set(d,(w.get(d)||0)+1),x.set(d,(x.get(d)||0)+g))}for(let[a,b]of v){if(b.values.length<2)continue;let c=b.values.join("、"),d=Math.max(...b.values.map(a=>Number(a))),e=(w.get(a)??0)>=2&&Number.isFinite(d)&&d<=(x.get(a)??0);b.grouped||u.has(a)||e?f.push({level:"warning",severity:"warning",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`设备分组口径提示:正文「${a}」存在分组配置台数 ${c} 多值并存,需注明分组与全项目总量的调度关系`,suggestion:`分组配置(组/村级)与全项目总量并存时,必须在正文注明「本组配置、按总表调度」或明确分组数量与总量数量之间的对应关系,避免评标误读为口径矛盾。`}):f.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`跨章一致性冲突:正文「${a}」配置台数出现互相矛盾的取值 ${c}`,suggestion:`全项目「${a}」配置总量必须全文唯一:以全项目机械配置总表为准统一全部表述;分组配置必须显式注明「本组配置、按总表调度」并删除与总表矛盾的全项目口径数字。`})}for(let{label:b,re:c,contextAware:d}of[{label:"隔油池数量",re:/隔油池[^\d。;;\n|::,,、]{0,6}(\d+)\s*座/gu},{label:"挖沟槽土方",re:/挖沟槽[^\d。;;\n|]{0,15}([\d,]+(?:\.\d+)?)\s*m[³3]/gu,contextAware:!0}]){let e=[];for(let b of a.matchAll(c)){let c=b[1].replace(/,/gu,"");e.some(a=>a.value===c)||e.push({value:c,context:a.slice(Math.max(0,(b.index||0)-24),b.index||0)})}if(e.length>=2){if(d&&e.every((a,b)=>e.slice(b+1).every(b=>6>(0,y.qr)(a.context,b.context))))continue;let a=e.map(a=>a.value).join("、");f.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`跨章一致性冲突:正文${b}出现互相矛盾的取值 ${a}`,suggestion:`${b}必须全文唯一:以工程量清单为最高优先级裁定正确值,将正文全部相关表述统一为该值,并删除其余矛盾口径。`})}}if(k){let b=aq(k)[0],c=Number(/(\d+)\s*(?:日历天|天)/u.exec(b||"")?.[1]);for(let b of a.matchAll(/各阶段工期(?:分别)?为?\s*[::]?\s*([\d]+(?:\s*[、,,]?\s*\d+)*)\s*(?:天|日历天)/gu)){let a=b[1].split(/[、,,]/u).map(a=>Number(a.trim())).filter(a=>Number.isFinite(a)).reduce((a,b)=>a+b,0);Number.isFinite(c)&&a>0&&a!==c&&f.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`跨章一致性冲突:正文各阶段工期文字表述(${b[1]}天)合计 ${a} 天,与总工期 ${c} 天不符`,suggestion:`各阶段工期加总必须等于总工期 ${c} 天:核对各阶段天数并修正文字表述,或与阶段计划表保持一致。`})}}for(let b of a.matchAll(/每间(?:可)?容纳\s*(\d+)\s*人/gu)){let a=Number(b[1]);a>=100&&f.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`逻辑校验失败:正文出现「每间容纳 ${a} 人」的宿舍配置表述,单间宿舍不可能容纳 100 人以上`,suggestion:`宿舍容纳人数按单间 4~8 人配置计算间数(如高峰 216 人按每间 8 人需 27 间),修正配置表述为「每间 X 人、共 Y 间,满足高峰在场人数」的完整口径。`})}for(let b of a.matchAll(/第(\d+)\s*日\s*[~~—至到]\s*第(\d+)\s*日/gu))b[1]===b[2]&&f.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`逻辑校验失败:正文出现「第 ${b[1]} 日~第 ${b[2]} 日」的零长度区间表述`,suggestion:`起止日相同的区间属笔误:按该事项所属施工阶段的实际起止日修正(如进场时间应为阶段开始前)。`});return f}let aL=/找平层|抹灰层|防水层|保温层|结合层|垫层|面层|粘结层|隔热层|隔离层/gu,aM=/铺设|施工|浇筑|粘贴|铺贴|涂抹|完成|进行|待|设置|铺装|挂网|喷涂|灌注/u,aN=["施工过程与工序动作的先后描述","铺设浇筑完成后再进行的工序"],aO=["结构层的厚度与配比参数","找平层厚20毫米的规格"];async function aP(a){return(0,x.A)({prototypes:[...aN],negativePrototypes:[...aO],embedDocuments:a})}async function aQ(a,b){let c=[],d=[...a.matchAll(aL)],e=[],f=(a,b)=>e.some(([c,d])=>a<d&&b>c),g=[],h=(a,d,h,i,j,k)=>{let l=[...a.matchAll(h)];for(let h of"first"===i?l:[...l].reverse()){let l=d+(h.index??0),m=l+h[0].length;if(f(l,m))continue;let n="first"===i?a.slice(0,h.index??0):a.slice((h.index??0)+h[0].length);if(!aM.test(n)){if("thickness"===k){let a=Number(h[1]??"");if(!Number.isFinite(a)||a<=0||a>=1e3)continue}b&&n.trim()&&g.push({key:`${j}|${l}|${m}`,gap:n}),e.push([l,m]),c.push({layer:j,span:[l,m],raw:h[0],kind:k});return}}};for(let b=0;b<d.length;b+=1){let c=d[b],e=c[0],f=c.index??0,g=f+e.length,i=d[b+1]?.index,j=void 0===i?Math.min(a.length,g+90):i,k=a.slice(g,j),l=b>0?(d[b-1].index??0)+d[b-1][0].length:Math.max(0,f-40),m=a.slice(l,f);h(k,g,/(\d+:\d+(?:\.\d+)?)/gu,"first",e,"ratio"),h(m,l,/(\d+:\d+(?:\.\d+)?)/gu,"last",e,"ratio"),h(k,g,/(\d+(?:\.\d+)?)\s*mm/gu,"first",e,"thickness"),h(m,l,/(\d+(?:\.\d+)?)\s*mm/gu,"last",e,"thickness")}if(b&&g.length>0){let a=await b(g.map(a=>a.gap)),d=new Set(g.filter((b,c)=>a[c]).map(a=>a.key));return c.filter(a=>!d.has(`${a.layer}|${a.span[0]}|${a.span[1]}`))}return c}async function aR(a,b){let c=[],d=new Set;for(let e of(await aQ(a,b))){let a="ratio"===e.kind?e.raw.match(/(\d+:\d+(?:\.\d+)?)/u)?.[1]:void 0,b="thickness"===e.kind?e.raw.match(/(\d+(?:\.\d+)?)/u)?.[1]:void 0,f=b?Number(b):void 0,g=`${e.layer}|${a||""}|${f??""}`;d.has(g)||(d.add(g),c.push({layer:e.layer,ratio:a,thickness:f}))}return c}async function aS(a,b,c){let d=[],e=await aP(c),f=[...b.specifications,...b.quality,...b.preciseFacts,...b.bills].map(ap).join("\n"),g=await aR(f,e);if(0===g.length)return d;let h=new Map;for(let a of g){let b=h.get(a.layer)||[];b.push(a),h.set(a.layer,b)}let i=await aR(a,e),j=new Set;for(let[a,b]of h){let c=[...new Set(b.map(a=>a.ratio).filter(Boolean))],e=[...new Set(b.map(a=>a.thickness).filter(a=>Number.isFinite(a)))];for(let b of i.filter(b=>b.layer===a)){if(1===c.length&&b.ratio&&b.ratio!==c[0]){let e=`ratio|${a}|${b.ratio}`;j.has(e)||(j.add(e),d.push({level:"error",message:`工序规格冲突:正文${a}配比 ${b.ratio} 与资料口径 ${c[0]} 不一致`,suggestion:`请将${a}配比统一为资料口径 ${c[0]},禁止改写资料规格。`}))}if(1===e.length&&Number.isFinite(b.thickness)&&b.thickness!==e[0]){let c=`thickness|${a}|${b.thickness}`;j.has(c)||(j.add(c),d.push({level:"error",message:`工序规格冲突:正文${a}厚度 ${b.thickness}mm 与资料口径 ${e[0]}mm 不一致`,suggestion:`请将${a}厚度统一为资料口径 ${e[0]}mm。`}))}}}return d}async function aT(a,b,c){let d=await aA(c),e=await aB(c),f=await aP(c),g=[...a.specifications,...a.quality,...a.preciseFacts,...a.bills].map(ap).join("\n"),h=new Map;for(let a of(await aR(g,f))){let b=h.get(a.layer)||{ratios:[],thicknesses:[]};a.ratio&&!b.ratios.includes(a.ratio)&&b.ratios.push(a.ratio),Number.isFinite(a.thickness)&&!b.thicknesses.includes(a.thickness)&&b.thicknesses.push(a.thickness),h.set(a.layer,b)}let i=new Map;for(let[a,b]of h)(1===b.ratios.length||1===b.thicknesses.length)&&i.set(a,{ratio:1===b.ratios.length?b.ratios[0]:void 0,thickness:1===b.thicknesses.length?b.thicknesses[0]:void 0});let j=a=>b?.find(b=>b.kind===a&&b.resolution&&"low"!==b.confidence)?.resolution,k=a=>{let b=/(\d+(?:\.\d+)?)\s*(㎡|m²|m2|平方米|万元|亿元)/u.exec(a);return b?{value:b[1],unit:b[2]}:void 0},l=j("area"),m=a.project.map(ap).filter(a=>/建设规模|建筑面积/u.test(a)),n=await Promise.all(m.map(a=>aD(a,d))),o=l??m.find((a,b)=>void 0!==n[b]),p=j("cost"),q=p??a.project.map(ap).find(a=>/合同估算|投资估算|最高投标限价|招标控制价|总投资|工程造价/u.test(a));return{specTargets:i,scaleTarget:o?l?k(l):await aD(o,d):void 0,costTarget:q?p?k(p):(await aC(q,aH,aI,av,void 0,e)).entries[0]:void 0,scaleGapGate:d,costGapGate:e,actionGate:f}}async function aU(a,b){let c=[];for(let d of(await aQ(a,b.actionGate))){let a=b.specTargets.get(d.layer);if(a){if("ratio"===d.kind&&a.ratio){let b=d.raw.match(/(\d+:\d+(?:\.\d+)?)/u)?.[1];b&&b!==a.ratio&&c.push({start:d.span[0],end:d.span[1],replacement:d.raw.replace(/(\d+:\d+(?:\.\d+)?)/u,a.ratio),detail:`${d.layer}配比 ${b}→${a.ratio}`})}if("thickness"===d.kind&&Number.isFinite(a.thickness)){let b=Number(d.raw.match(/(\d+(?:\.\d+)?)/u)?.[1]);Number.isFinite(b)&&b!==a.thickness&&c.push({start:d.span[0],end:d.span[1],replacement:d.raw.replace(/(\d+(?:\.\d+)?)/u,String(a.thickness)),detail:`${d.layer}厚度 ${b}mm→${a.thickness}mm`})}}}let d=async(b,d,e,f,g,h,i,j)=>{if(!b)return;let k=RegExp(`(?:${d.source})(?:[^\\n。;;,,]{0,14}?)(\\d{2,}(?:[.,]\\d+)?\\s*万?)\\s*(${e.source})`,"giu"),l=[...a.matchAll(k)],m=i?l.filter(b=>{let c=b[0].slice(0,b[0].indexOf(b[1])),d=a.slice(Math.max(0,(b.index??0)-16),b.index??0);return!(g&&g.test(c)||h&&h.test(d)||j&&au(a,b.index??0))}).map(b=>{let c=b[0].slice(0,b[0].indexOf(b[1])),d=a.slice(Math.max(0,(b.index??0)-16),b.index??0);return{index:b.index??0,context:`${d}${c}`.replace(/\s+/gu,"").slice(-24)}}):[],n=m.length>0?await i(m.map(a=>a.context)):[],o=new Set(m.filter((a,b)=>n[b]).map(a=>a.index));for(let d of l){let e=d[0].slice(0,d[0].indexOf(d[1])),i=a.slice(Math.max(0,(d.index??0)-16),d.index??0);if(g&&g.test(e)||h&&h.test(i)||j&&au(a,d.index??0)||o.has(d.index??0))continue;let k={value:d[1].replace(/[,,]/gu,"").replace(/\s+/gu,""),unit:d[2]};if(aE(k)===aE(b))continue;let l=(d.index??0)+d[0].indexOf(d[1]),m=l+d[1].length;c.some(a=>a.start<m&&a.end>l)||c.push({start:l,end:m,replacement:b.value,detail:`${f} ${k.value}${k.unit}→${b.value}${k.unit}`})}};if(await d(b.scaleTarget,aF,aG,"建设规模",ar,as,b.scaleGapGate,at),await d(b.costTarget,aH,aI,"估算价",av,void 0,b.costGapGate),0===c.length)return{content:a,fixedCount:0,details:[]};c.sort((a,b)=>b.start-a.start);let e=a;for(let a of c)e=e.slice(0,a.start)+a.replacement+e.slice(a.end);return{content:e,fixedCount:c.length,details:c.map(a=>a.detail)}}async function aV(a,b,c,d){let e=await aT(b,c,d);if(0===e.specTargets.size&&!e.scaleTarget&&!e.costTarget)return{fixedCount:0,details:[]};let f=0,g=[];for(let b of a){let a=await aU(b.content,e);a.fixedCount>0&&(b.content=a.content,f+=a.fixedCount,g.push(...a.details))}return{fixedCount:f,details:g}}async function aW(a,b,c,d){let e=await aT(b,c,d);if(0===e.specTargets.size&&!e.scaleTarget&&!e.costTarget)return{markdown:a,fixedCount:0,details:[]};let f=await aU(a,e);return{markdown:f.content,fixedCount:f.fixedCount,details:f.details}}async function aX(a){let{closedLoopBlocks:b}=await (0,w.Pm)(a),c=Math.max(6,Math.ceil((0,g.V7)(a)/1500));return b>=c?[]:[{level:"warning",message:`可落地性闭环句式密度不足:全文 ${b} 段完整闭环句式,未达每 1500 字 1 段(目标 ${c} 段)`,suggestion:"在措施类段落中补齐“责任岗位 + 检查频次 + 整改闭环”三要素齐全的闭环表述:同一自然段内同时出现岗位(如项目经理/质检员/安全员)、频次(每日/每周/不少于X次)与闭环(整改/复查/销项);三要素分散融入叙述,不得以固定句模复读。"}]}function aY(a,b){let c=[],d=/(?:三检制|三级教育|三级管理|5S|24\s*小时|每日|每周|每月|一次|两次)/gu;for(let e of a){let a=[...new Set(e.content.match(d)||[])];if(a.length<3)continue;let f=b?.get(e.title);f&&(f.closedLoop||c.push({level:"warning",message:`${e.title} 管理措施数字较多但缺少执行闭环:${a.slice(0,8).join("、")}`,suggestion:"这些管理数字可以保留,但需要补充责任主体、检查频次、记录台账、整改复查和闭环要求。"}))}return c}function aZ(a,b){let c=/(?:加强组织领导|严格执行规范|落实责任制度|确保工程质量|强化过程管理|提高思想认识|完善管理体系|形成闭环管理)/gu,d=[];for(let e of a){if((e.content.match(c)||[]).length<6)continue;let a=b?.get(e.title);a&&(a.concrete||d.push({level:"error",message:`${e.title} 存在较多未绑定项目事实和工序控制点的泛化套话`,suggestion:"请替换为结合资料事实、施工对象、工序控制、验收资料和整改闭环的专业内容。",chapterId:e.id}))}return d}function a$(a){return[[...a.project,...a.schedule,...a.quality,...a.safety,...a.resources,...a.preciseFacts,...a.bills,...a.drawings,...a.rules,...a.specifications].map(ap).join("\n"),...a.tables.flatMap(a=>[...a.headers,...a.rows.flat()])].join("\n")}function a_(a,b){return!(!/总工期|计划工期|合同工期|日历天|施工周期/u.test(a)||/阶段|历时|用时|合计|总计|共计|累计|预留|机动|余量|剩余|养护|编制|提交|签订|划分|闭合|控制基准|持续时间|关键|节点/u.test(`${a}${b}`))&&(b.match(/\d+(?:\.\d+)?\s*(?:工作天|天)/gu)||[]).length<2}function a0(a,b){return/^\d+(?:\.\d+)?(?:月|年)$/u.test(a)&&/开工|竣工|日期|计划|年|月/u.test(b)}function a1(a,b,c){let d=`${a} ${b}`;if(/(?:工日|人日|次|台|套|个|人|层|间|批|项|处|座|栋|根|只|组|件|块|片|面|条|道|樘|扇|盏|节|段)$/u.test(a)||/三检制|三级|5S|24\s*小时|每日|每周|每月|一次|两次|责任制|制度/u.test(d)||/暂列金额|暂估价|报价|单价|合价|综合单价|税率|增值税|预留金/u.test(d)||a0(a,b))return"soft";let e=c??b;return/(?:天|工作天|月|年)$/u.test(a)&&a_(e,b)||/(?:万元|亿元|元)$/u.test(a)&&/最高投标限价|招标控制价|合同估算价|投资估算|报价|金额|人民币/u.test(e)||/(?:m2|hm2|亩|㎡|m²|平方米)$/u.test(a)&&/建设规模|总建筑面积|总用地面积|总占地面积/u.test(e)?"scope":/(?:工程量|清单|建设规模|建筑面积|长度|材料|设备|规格|型号).{0,24}(?:m²|㎡|m3|m³|米|吨|套|台|个|项|%)/u.test(d)?"spec":/GB\s*\d|JGJ\s*\d|CJJ\s*\d|ISO\s*\d|GB\/T|CECS\s*\d|DL\s*\d|YB\s*\d|SH\s*\d|SJ\/T\s*\d|CJJ\/T\s*\d|DB\s*\d/u.test(d)?"soft":/标准|规范|编号/u.test(d)?"spec":"soft"}let a2=[["hm2","hm2|hm\xb2|公顷"],["m2","m2|m\xb2|㎡|平方米|平方|平米"],["m3","m3|m\xb3|立方米|立方"],["工作天","工作天|工作日"],["万元","万元|人民币万元|万元人民币"],["天","天|日历天|自然日|个日历天"],["月","月|个月"],["km","km|千米|公里"],["mm","mm|毫米"],["cm","cm|厘米"],["kg","kg|千克|公斤"],["min","min|分钟"],["t","t|吨"],["m","m|米"],["元","元|人民币元|元人民币"],["h","h|小时"]];function a3(a){return a.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&")}function a4(a){let b=[];for(let c of(0,h.zn)(a)){if(/^\d+\.\d+$/u.test(c))continue;let d=(0,h.K3)(c),e=function(a,b){let c=/^(\d+(?:\.\d+)?)/u.exec(b)?.[1];if(!c)return a.indexOf(b);let d=RegExp(`(?<![\\d.])${a3(b)}(?![\\d.])`,"u").exec(a);if(d)return d.index;let e=b.slice(c.length);if(!e)return -1;let f=a2.find(([a])=>a===e),g=f?f[1]:a3(e),h=RegExp(`(?<![\\d.])${a3(c)}\\s*(?:${g})(?![a-z0-9])`,"iu").exec(a);return h?h.index:-1}(a,c);if(e<0)continue;let f=a.lastIndexOf("\n",e-1)+1,g=a.indexOf("\n",e),i=a.slice(f,g<0?a.length:g);if(/^\s*\|/u.test(i.trim()))continue;let j=a.slice(Math.max(0,e-36),Math.min(a.length,e+c.length+36));if(/违约金|延期竣工|解除合同|缺陷责任期|质量保证金|质保金|履约保证金|保修期/u.test(j))continue;let k=a.slice(Math.max(0,e-16),e);/(?:阶段|缓冲|累计)\s*\d*$/u.test(k)||b.push({token:c,normalizedToken:d,context:j,prefix:k})}return b}function a5(a){let{markdown:b,factsModel:c,scopeSuspicious:d,specSuspicious:e,softSuspicious:f}=a,g=[],h=[...new Set(d)],i=[...new Set(e)],j=[...new Set(f)];return h.length>=1&&g.push({level:"error",message:`生成后事实反查失败:正文出现资料事实主表中未找到的总量口径数字 ${h.slice(0,8).join("、")}`,suggestion:"总量口径数字(工期/金额/建设规模)必须与资料一致;请删除或改写为资料确认的口径,禁止编造。"}),i.length>=2&&g.push({level:"warning",message:`生成后事实反查提示:正文出现资料事实主表中未找到的规格明细数字 ${i.slice(0,8).join("、")}`,suggestion:"建议复核这些规格是否来自管理制度、规范要求或资料事实;如无依据,改为定性管理要求。"}),j.length>=6&&g.push({level:"warning",message:`生成后事实反查提示:正文出现较多未在资料事实主表中反查到的管理数字 ${j.slice(0,10).join("、")}`,suggestion:"请确认这些管理数字属于通用制度、规范要求或项目资料事实;如无依据,建议改为定性管理要求。"}),/质量目标|质量标准/u.test(b)&&c.quality.length>0&&!c.quality.some(a=>b.includes((0,t.lG)(a.value).slice(0,18)))&&g.push({level:"warning",message:"生成后事实反查提示:正文质量目标表述未明显匹配质量事实主表",suggestion:"请使用资料中的质量目标原文或等价表述。"}),g}let a6=/(?:天|工作天|日历天|月|年|万元|亿元|元|m2|hm2|亩|㎡|m²|平方米)$/u;function a7(a,b){let c=a$(b);if(80>(0,g.V7)(c))return[];let d=(0,h.K3)(c),e=[],f=[],i=[];for(let b of a4(a)){let{token:a,normalizedToken:c,context:g,prefix:h}=b;if("unsourced"!==(0,j.eS)({token:a,context:g}).kind)continue;let k=a1(a,g,h);"scope"!==k||d.includes(c)||e.push(a),"spec"!==k||d.includes(c)||f.push(a),"soft"!==k||d.includes(c)||i.push(a)}return a5({markdown:a,factsModel:b,scopeSuspicious:e,specSuspicious:f,softSuspicious:i})}async function a8(a,b,c){let d,e=a$(b);if(80>(0,g.V7)(e))return[];let f=(0,h.K3)(e),i=a4(a),k=i.filter(a=>a6.test(a.token));if(k.length>0){let a=await c.scopeClassifier.batchClassify(k.map(a=>`${a.token} ${a.context}`.slice(0,160)));d=new Map,k.forEach((b,c)=>d.set(b.token,a[c]||"other"))}let l=[],m=[],n=[];for(let a of i){let{token:b,normalizedToken:c,context:e,prefix:g}=a;if("unsourced"!==(0,j.eS)({token:b,context:e}).kind)continue;let h=a1(b,e,g);if(d&&a6.test(b)){let a=d.get(b)||"other";"scope"===h?h="scope"===a?"scope":"soft":"scope"===a&&a_(g??e,e)&&!a0(b,e)&&(h="scope")}"scope"!==h||f.includes(c)||l.push(b),"spec"!==h||f.includes(c)||m.push(b),"soft"!==h||f.includes(c)||n.push(b)}return a5({markdown:a,factsModel:b,scopeSuspicious:l,specSuspicious:m,softSuspicious:n})}let a9=8;function ba(a){return/资源|材料|设备|劳动力/u.test(a)?10:a9}let bb=["factuality","structure","depth","executable","specificity","consistency"];function bc(a){return 2*bb.filter(b=>a[b]).length}function bd(a){return bb.filter(b=>!a[b])}function be(a,b){let c=[];for(let e of a){var d;let a=e.content;if(800>(0,g.V7)(a))continue;let f=(d=e.title,/概况|工程|项目/u.test(d)?"事实依据、项目特异性":/部署|总体|组织/u.test(d)?"组织结构、可执行闭环、跨章一致性":/进度|工期/u.test(d)?"进度结构、工期一致性、纠偏机制":/质量/u.test(d)?"质量深度、验收复验、资料闭环":/安全|文明|危大|风险/u.test(d)?"风险覆盖、应急响应、检查整改":/资源|材料|设备|劳动力/u.test(d)?"资源依据、进场调配、进度支撑":"事实依据、专业深度、可执行性"),h=b?.get(e.title);if(!h)continue;let i=bc(h.dimensions);if(i<ba(e.title)){let a=bd(h.dimensions).join("、")||f;c.push({level:"warning",message:`${e.title} 专业评分不足:${i}/12,薄弱维度:${a}`,suggestion:`请按章节任务卡补齐${f},并写出资料依据、实施流程、专业控制点和检查整改闭环。`,chapterId:e.id,provenance:{detectorId:"professional-score",fingerprint:(0,t.c6)(`${e.title}\u0000${i}`)}})}}return c}function bf(a,b){let c=[{re:/进度|工期/u,needKey:"schedule",need:/关键线路|穿插|纠偏|资源保障|节点|动态调整/u,message:"进度工期章节缺少关键线路、穿插施工或纠偏保障内容"},{re:/质量/u,needKey:"quality",need:/材料.*验收|复验|隐蔽验收|整改.*复验|质量.*资料|检验批/u,message:"质量章节缺少材料验收复验、隐蔽验收或整改复验闭环"},{re:/安全|文明|危大|风险/u,needKey:"safety",need:/风险|临电|消防|应急|检查.*整改|文明施工|人员|设备/u,message:"安全文明章节缺少风险识别、现场控制或应急检查闭环"},{re:/资源|材料|设备|劳动力/u,needKey:"resource",need:/进场|验收|调配|保管|供应|投入计划/u,message:"资源章节缺少进场、验收、调配或保管计划"},{re:/施工|工艺|技术|方案/u,needKey:"construction",need:/准备|流程|工艺|控制点|验收|交底/u,message:"施工技术章节缺少施工准备、工艺流程、控制点或验收要求"}],d=[];for(let h of a){if(600>(0,g.V7)(h.content))continue;let a=b?.get(h.title);if(a){for(let b of c)if(!(!b.re.test(h.title)||"construction"===b.needKey&&c.some(a=>"construction"!==a.needKey&&a.re.test(h.title))||"construction"===b.needKey&&/总平面|平面布置|布置图/u.test(h.title))&&!("resource"===b.needKey&&/劳动力/u.test(h.title)&&!/资源|材料|设备/u.test(h.title)&&/进场|入场|退场|调配|轮转/u.test(h.content))){var e,f;a.contentNeeds[b.needKey]||(e=b.needKey,f=h.content,"schedule"===e?/关键线路|关键路径/u.test(f)&&/纠偏|穿插|平行施工|流水施工|赶工/u.test(f):"resource"===e&&/(?:材料|设备|机械|机具|物资|构件|苗木|管材)[^。;;\n|]{0,16}?(?:进场|入场|退场)/u.test(f)&&/调度|保管|台账|供应|仓储|保养/u.test(f))||d.push({level:"error",message:`${h.title}:${b.message}`,suggestion:"请按专业任务卡定向补写该章节,补齐可实施的控制措施、资料依据和闭环要求。",chapterId:h.id})}}}return d}function bg(a,b){return!!(/万元|元|报价|单价|合价|综合单价|预留金|税率|增值税|利润|结算/u.test(`${a} ${b}`)||/OCR|识别错误|乱码|无法确认|疑似|不确定|语义断裂|页码|目录/u.test(b)||/^\d+$/.test(a)&&10>Number(a)||/^(?:mm|cm|dm|hm|km|kg|mg|ml|kwh|kj|kpa|mpa|kw|pa|kn|n|t|l|h|g|m|㎡|m²|m³)[23²³]?$/iu.test(a)||/^\d+(?:\.\d+)+\s*(?:项|个|份|页|批|次|条|款)$/u.test(a)||/^\d+\s*页$/u.test(a)||/^(?:COL|R\d+C)\d*$/iu.test(a)||/^[A-Za-z]\.\d+$/u.test(a)||/^[\d.]+\s*(?:天|日)$/u.test(a)&&/期限/u.test(b)||/之日起.{0,8}天内|天内.{0,10}(?:发出|提交|通知|回复|答复|完成|开工|竣工|报送|支付|更换)|天以上|天及以上|‰|暂扣|履约保证金|通过后.{0,6}天|因发包人原因|因承包人原因|未能按时|逾期|违约金/u.test(b))}function bh(a){let b=new Set;for(let c of a.preciseFacts){if("bill_of_quantities"===c.roleId)continue;let a=`${c.processingType||""} ${c.roleId} ${c.sourceFile}`;if(!e.FM.test(a)&&"precise_fact"!==c.roleId)continue;let d=`${c.key} ${c.fieldName||""} ${c.value}`;for(let a of d.matchAll(e.No)){let c=a[0].trim();bg(c,d)||b.add(c)}}return[...b]}function bi(a){let b=new Set;for(let c of a)for(let a of c.evidence||[]){if(/bill_of_quantities|boq/u.test(`${a.roleId||""}`))continue;let c="string"==typeof a.content?a.content:"";for(let a of c.matchAll(e.No)){let d=a[0].trim();if(!d||/^\d{4}\s*年$/u.test(d)||/^\d{1,2}\s*月$/u.test(d))continue;let e=a.index||0,f=c.slice(Math.max(0,e-40),e+d.length+40);bg(d,f)||b.add(d)}}return[...b]}function bj(a,b){let c=(0,h.K3)(b),d=0;for(let b of a)c.includes((0,h.K3)(b))&&(d+=1);return d}let bk=/日历天|个月|㎡|m²|m3|m³|MPa|kPa|kN|GB\/T|GB|JGJ|ISO|DN|φ|Φ|米\/秒|天$/u,bl=[/GB|JGJ|ISO|CJJ|DB/u,/DN|φ|Φ/u,/MPa|kPa|kN|米\/秒/u,/日历天|个月|天$/u,/㎡|m²/u,/m3|m³/u];function bm(a){let b=/\d+(?:\.\d+)?/u.exec(a)?.[0];return void 0===b?-1/0:Number.parseFloat(b)}function bn(a){let b=[...a].sort((a,b)=>a.localeCompare(b,"zh")),c=b.filter(a=>bk.test(a)),d=b.filter(a=>!bk.test(a)),e=bl.map(()=>[]),f=[];for(let a of c){let b=bl.findIndex(b=>b.test(a));(b>=0?e[b]:f).push(a)}let g=[...e,f].map(a=>a.sort((a,b)=>{let c=bm(a),d=bm(b);return Number.isFinite(c)&&Number.isFinite(d)?d-c||a.localeCompare(b,"zh"):Number.isFinite(c)?-1:Number.isFinite(d)?1:a.localeCompare(b,"zh")})),h=[],i=0,j=0;for(;h.length<8&&j<g.length;){let a=g[i%g.length];a.length>0?(h.push(a.shift()),j=0):j+=1,i+=1}return[...h,...d.slice(0,2)].slice(0,10)}async function bo(a,b,c=[]){let d=[],g=bi(c),i=g.length>=e.mu?g:bh(b),j=bj(i,a);i.length>=e.mu&&j/i.length<e.tg&&d.push({level:"warning",message:`可靠精确参数使用不足:${j}/${i.length}`,suggestion:"请将资料中可靠的规格、参数、数量、时间、比例和标准编号写入对应章节;商务金额、单价、税率、预留金不得写入正文。"});let k=bn(i);if(k.length>=6){let b=(0,h.K3)(a),c=bj(k,a),e=k.filter(a=>!b.includes((0,h.K3)(a)));if(e.length>0&&c/k.length<.5){let b=a.split(/[。;;|]/u).map(a=>a.trim()).filter(a=>a.length>=6&&a.length<=160).slice(0,300);if(b.length>0){let a=await (0,f.Mv)(e.slice(0,10),b);e=e.filter(c=>!b.some(b=>a(c,b)>=.6)),c=k.length-e.length}}if(c/k.length<.5){let b=e.slice(0,3);d.push({level:"error",message:`可靠精确参数使用不足:关键参数抽查 ${c}/${k.length}${b.length?`(缺失如 ${b.join("、")})`:""}`,suggestion:"请将资料中的关键工程参数(工期、面积、强度等级、材料规格、规范编号等)写入正文对应章节,不得因参数总量达标而遗漏核心参数。",provenance:{detectorId:"precise-fact-usage",fingerprint:(0,t.c6)(a)}})}}return b.bills.length>0&&!e.pP.test(a)&&d.push({level:"error",message:"正文未体现结构化数据资料",suggestion:"请从表格、列表或明细中提取对象、单位、数量、规格和关键参数补入对应章节。",provenance:{detectorId:"precise-fact-usage",fingerprint:(0,t.c6)(a)}}),b.drawings.length>0&&!e._U.test(a)&&d.push({level:"error",message:"正文未体现设计/方案/说明类资料",suggestion:"请从设计、方案或说明资料中提取对象、流程、节点、做法、配置、规则和标准要求。",provenance:{detectorId:"precise-fact-usage",fingerprint:(0,t.c6)(a)}}),d}function bp(a,b,c=[]){let d=(0,h.K3)(a),f=bi(c),g=bn(f.length>=e.mu?f:bh(b));return g.length<6?[]:g.filter(a=>!d.includes((0,h.K3)(a)))}async function bq(a,b,c){let d=[];if(0===(c.tables||[]).length)return d;let e=(0,j.JV)(a,c),g=e.filter(a=>!a.exempt);if(0===g.length)return d;let h=e.length-g.length,i=g.filter(a=>a.placed),k=g.filter(a=>!a.placed),l=g.length,m=i.length,n=(0,p.R8)(a,i.map(a=>a.itemName)),o=new Set;if(k.length>0&&m/l<.9){let b=a.split(/[。;;|]/u).map(a=>a.trim()).filter(a=>a.length>=6&&a.length<=160).slice(0,300),c=[...new Set(k.map(a=>a.itemName))];if(b.length>0&&c.length>0)for(let a=0;a<c.length;a+=60){let d=c.slice(a,a+60),e=await (0,f.Mv)(d,b);for(let a of d)b.some(b=>e(a,b)>=f.Eh)&&o.add(a)}}let q=m+k.filter(a=>o.has(a.itemName)).length,r=k.filter(a=>!o.has(a.itemName)),s=a=>{if(0===b.length)return"";let c=(0,p.o7)({name:a.itemName,description:a.description||""},b);return c?`,建议落位「${c.chapterTitle.slice(0,24)}」`:""},u=new Map;for(let a of r){let b=a.itemName.slice(0,40),c=u.get(b);c?c.rows+=1:u.set(b,{name:a.itemName,rows:1,sample:a})}let v=[...u.values()].sort((a,b)=>b.rows-a.rows),w=q/l,x=[h>0?`口径行 ${h} 行(汇总/噪声/费用/标题等非清单明细)已豁免不计入分母`:"",n.size>0?`显性说明 ${n.size} 行(利旧/甲供/不涉及等说明式处置)`:""].filter(Boolean).join(";"),y=v.length>0?`未落位项(共${r.length}行/${v.length}类):${v.slice(0,30).map(a=>`${a.name.slice(0,40)}${a.rows>1?`\xd7${a.rows}`:""}${a.sample.quantity?` ${a.sample.quantity}`:""}(未落位${s(a.sample)})`).join(";")}${v.length>30?` 及其他${v.length-30}类(同类项按已列名称分组归并补写)`:""}`:"";if(w<.9)return d.push({level:"error",severity:"blocker",category:"evidence_coverage",owner:"llm",repairability:"llm_repairable",provenance:{detectorId:"boq-placement",fingerprint:(0,t.c6)(a)},message:`清单项落位不足:${q}/${l} 项(${Math.round(100*w)}%)${y?`。${y}`:""}`,suggestion:`请将未落位清单项按专业工程分组补写进对应章节"主要施工内容"小节(融入各专业工程的作业对象与工程量、工序顺序、施工方法叙述),优先落位主要分部分项、关键规格与大额工程量;对确实不涉及/利旧/甲供/由厂家配套的条目,在正文对应章节显性说明处置方式(说明句须含条目名称)。${y}${x?`〔落位审计:${x}〕`:""}`}),d;if(0===r.length)return d;let z=k.length>0&&q/l<.9,A=z?k.filter(a=>o.has(a.itemName)):[],B=new Set(A.map(a=>a.itemName.slice(0,40))),C=v.filter(a=>!B.has(a.name.slice(0,40))),D=C.slice(0,20).map(a=>`${a.name.slice(0,40)}${a.rows>1?`\xd7${a.rows}`:""}${a.sample.quantity?` ${a.sample.quantity}`:""}(未落位${s(a.sample)})`).join(";"),E=z?`其中语义已承接 ${A.length} 行(${B.size} 类),未承接 ${C.reduce((a,b)=>a+b.rows,0)} 行(${C.length} 类)`:`(落位率已达线,语义兜底通道未触发——下列缺口均为字面未落位,是否已被同义表述承接需人工判断)`;return d.push({level:"warning",category:"evidence_coverage",owner:"user",repairability:"manual_review",provenance:{detectorId:"boq-placement",fingerprint:(0,t.c6)(a)},message:`清单落位缺口清单(已达落位率线,残留缺口供复核):${q}/${l} 项(${Math.round(100*w)}%),字面未落位 ${r.length} 行 / ${v.length} 类;${E}${D?`。缺口项:${D}`:""}`,suggestion:`以下未落位项须逐条给出处置:补写进对应章节、或显性说明(不涉及/利旧/甲供/由厂家配套)。${D}${x?`〔落位审计:${x}〕`:""}`}),d}function br(a,b){if(!b||0===b.groups.length)return[];let c=(0,o.SL)(b,a);if(0===c.unreferenced.length||c.rate>=.9)return[];let d=b.groups.length,e=c.unreferenced.slice(0,6).map(a=>{let b=a.factLines[0]?.slice(0,60)||"";return`${a.sourceFile.split("/").pop()||a.sourceFile}${b?`(如:${b})`:""}`}),f=Math.round(100*c.rate),g=`请将未落位图纸的设计说明、构造做法、材料规格与设备参数写入对应专业章节(按专业归属:结构/道路/排水/照明等),与清单规格一致的照抄清单权威值,不得编造;未落位图纸:${e.join("、")}`;return c.rate<.5&&d>=2?[{level:"error",severity:"blocker",owner:"llm",repairability:"llm_repairable",provenance:{detectorId:"drawing-reference",fingerprint:(0,t.c6)(a)},message:`图纸事实落位不足:${c.referenced.length}/${d} 份图纸的规格/做法事实在正文落位(${f}%)`,suggestion:g}]:[{level:"warning",severity:"warning",owner:"llm",repairability:"llm_repairable",provenance:{detectorId:"drawing-reference",fingerprint:(0,t.c6)(a)},message:`图纸事实未完全落位:${c.referenced.length}/${d} 份图纸被正文引用(${f}%,目标 ≥${Math.round(90)}%)`,suggestion:g}]}function bs(a){let b=[];for(let c of(/【本小节生成未达标,需重新生成】/u.test(a)&&b.push({level:"error",message:"生成未完成:存在未达标小节,需要重新生成或补写后才能导出",suggestion:"请重新生成未达标小节,禁止将占位内容作为正式正文。"}),e.IA))c.test(a)&&b.push({level:"warning",message:`存在占位式表达:${c.source}`,suggestion:"请改写为来自资料的准确事实;资料确实未提供时,改写为正式管理措施,不留空值或“见资料/按文件”。"});let c=_(a);if(c.length>0){let a=c[0];b.push({level:"warning",message:`存在占位式表达:表格数据格占位符(${a.header.join("、")}“${a.rowFirstCell}”行“${a.cell}”)共 ${c.length} 处`,suggestion:"请改写为来自资料的准确事实;资料确实未提供时,改写为正式管理措施,不留空值或“见资料/按文件”。"})}return b}function bt(a){return(0,z.LZ)(a).map(a=>({level:"error",message:`小节标题「${a.title}」含本小节正文未覆盖的工程类别:${a.uncovered.join("、")}`,suggestion:"标题中的工程类别必须在小节正文有对应施工内容;请将标题改为与实际施工内容一致的名称,不得照抄工程量清单章节汇总行名称。"}))}function bu(a,b){let c=`${b.name} ${b.category} ${b.outputTitle} ${b.description}`,f=[];for(let a of(0,d.V)().autoSpecGates)(function(a,b){for(let c of b)try{if(RegExp(c,"iu").test(a))return!0}catch{if(a.includes(c))return!0}return!1})(c,a.templateMatchers)&&f.push(a);if(0===f.length)return[];let g=[],h=M(a).length,i=0;for(let b of f){for(let c of(i=Math.max(i,b.minTables||0),b.requiredTexts))a.includes(c)||g.push({level:"error",message:`配置要求缺少必要内容:${c}`,suggestion:"请按当前模板匹配的专业规则补齐必要内容。"});for(let c of b.forbiddenTexts)(function(a,b){let c="见图纸"===b||"按图纸"===b?["目录","清单","索引","汇总"]:[],d=0;for(;;){let e=a.indexOf(b,d);if(e<0)return!1;let f=a.slice(e+b.length);if(c.some(a=>f.startsWith(a))){d=e+b.length;continue}return!0}})(a,c)&&g.push({level:"error",message:`配置要求不得出现:${c}`,suggestion:"请根据当前模板匹配的专业规则清理正文污染内容。"})}return e.bu.test(a)&&g.push({level:"error",message:"正式正文存在 Markdown 标题符号 #",suggestion:"导出正文应去除 Markdown 标题符号,保留正式标题文字。"}),i&&h<i&&g.push({level:"error",message:`配置要求正式表格不足:${h}/${i}`,suggestion:"如用户提示词或章节内容要求表格,应按项目资料补充对应表格本体。"}),g}function bv(a,b,c,d,f,h,i){var j;if(!a)return b;let k=[...b],l=function(a){let b=[...a.project,...a.schedule,...a.quality,...a.safety,...a.resources];for(let c of Object.values(a.schemaFacts))b.push(...c);return b}(c),m=function(a,b){let c=new Set;for(let a of b)c.add(a.key),a.fieldName&&c.add(a.fieldName);for(let b of a.tables){for(let a of b.headers)c.add(a);for(let a of b.rows)for(let b of a)c.add(b)}return c}(c,l),n=new Set(d.map(a=>a.title));for(let b of a.factFields){if(!b.required||(j=b.name,/国家法律法规|地方法规|规章|规范标准|标准规范|行业标准|现行规范|法律法规|合规|施工方法|工艺流程|质量控制|安全文明|应急|劳动力|材料投入|机械设备|检测仪器|关键节点/u.test(j)))continue;let a=c.schemaFacts[b.id]||[],e=!1,f=!b.sourceRoleIds?.length||a.some(a=>b.sourceRoleIds?.includes(a.roleId));for(let a of d){if(e&&f)break;for(let c of a.evidence)!e&&!a.missingFacts.includes(b.name)&&(0,r.I2)(c,b)&&(e=!0),!f&&(0,r.I2)(c,b)&&(f=!0)}0!==a.length||m.has(b.name)||e||k.push({level:"warning",message:`系统暂未从知识库确认必需事实:${b.name}`,suggestion:b.extractionHint||"请扩大本地知识库检索、执行事实补抽,或调整事实字段配置。"}),f||k.push({level:"warning",message:`必需事实来源角色不匹配:${b.name}`,suggestion:`请确认该事实来自角色:${b.sourceRoleIds?.join("、")}`})}for(let b of a.chapterRules){let a=d.find(a=>a.title===b.title);a&&b.minWords&&a.content.length<b.minWords&&k.push({level:"warning",message:`章节内容深度建议:${b.title}`,suggestion:`可扩展到约 ${b.minWords} 字,但不要改变模板章节结构。`})}let o=M(f),p=function(a){let b=[];for(let c of a.matchAll(e.gW))b.push({alt:c[1]||"",url:c[2]||"",index:c.index??0});return b}(f),q=(0,g.Cv)(f);for(let b of a.gateRules){let a=b.evaluator?b.evaluator:e.cA[b.type]?.(b)??{subject:"document",operator:"contains",value:b.value||b.target},g=a.target||b.target||"",j=a.value||b.value||g,r=d.find(a=>a.title===g),s=function(a){for(let c of e.Lp){let d=c(a);if(d){var b;return{level:a.rule.level,message:(b=a.rule,`${b.name}:${d}`)}}}}({rule:b,evaluator:a,target:g,value:j,min:a.min||Number(b.value)||1,markdown:f,textScope:"chapter"===a.subject&&r?r.content:f,regex:j?function(a){try{return RegExp(a,"iu")}catch{return}}(j):void 0,chapter:r,factNames:m,chapterTitles:n,tableBlocks:o,imageRefs:p,estimatedPages:q,allFacts:l,factsModel:c,projectBindings:h,promptBindings:i});s&&k.push(s)}return k}function bw(a,b){let c=function(a){let b="";for(let c of(0,s.dU)(a))c.content&&(b+=`${c.content}
|
|
23
23
|
|
|
24
|
-
`);return b}(b);if(!c.trim())return[];let d=a.replace(e.ug," ");for(let a of c.matchAll(e.QX)){let b=(a[1]||"").replace(e.ug," ").trim();if(b&&d.includes(b))return[{level:"error",message:"正文疑似包含提示词示例内容",suggestion:"请删除提示词样例数据,仅保留基于当前绑定材料生成的正文。"}]}return[]}function bx(a,b=[]){let c=[];if(!a||0===b.length)return c;let d=a.split(/\r?\n/u),e=[];for(let f of(d.forEach((a,b)=>{let c=/^##\s+(.+?)\s*$/u.exec(a.trim());c&&!/^(目录|附表)/u.test(c[1])&&e.push({index:b,title:c[1].replace(/\s+/gu,"")})}),b)){let b=(f.sections||[]).filter(Boolean);if(0===b.length)continue;let g=f.title.replace(/\s+/gu,""),h=e.find(a=>a.title.includes(g)||g.includes(a.title));if(!h)continue;let j=e.find(a=>a.index>h.index),l=d.slice(h.index+1,j?j.index:d.length).join("\n"),m=(0,i.hL)(b,l);0!==m.length&&c.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",provenance:{detectorId:"planned-section-placement",fingerprint:(0,t.c6)(a)},message:`规划小节未落位:「${(0,k.GQ)(f.title)}」缺少 ${m.length} 个规划小节(${m.slice(0,6).join("、")}${m.length>6?" 等":""})——章级规划小节必须以三级标题逐节落地,不得漏写或降级为四级标题`,suggestion:`请补齐以下小节并各自成节(三级标题「### X.X 小节名」,小节名与规划逐字一致,每节下写实质内容):${m.join("、")}。`})}return c}let by=/^(?:按(?:清单|设计|图纸|规范|方案|要求|合同|实际|甲方|业主)[^,。;]{0,14}|符合(?:设计|规范|标准|要求)[^,。;]{0,8}|根据(?:实际|现场)情况[^,。;]{0,10}|视(?:现场)?情况[^,。;]{0,10}|详见(?:图纸|设计|招标文件|清单)|相关(?:人员|部门|岗位)(?:及时)?[^,。;]{0,10}|及时(?:处理|整改|跟进|上报)|加强管理|严格控制|按需(?:配置|投入)|按实(?:计算|结算)|综合考虑|按有关规定)$/u;function bz(a){let b=[];if(!a)return b;let c=a.split(/\r?\n/u),d=new Map,e=0,f=[];for(let a=0;a<c.length;a+=1){let b=c[a];if(!/^\s*\|/.test(b)){f=[];continue}if(/^\s*\|[\s:|-]+\|\s*$/u.test(b)){e+=1;continue}let g=b.split("|").slice(1,-1).map(a=>a.trim());if(0===f.length){f=g;continue}g.forEach((a,b)=>{if(!a||/\d/u.test(a)||!by.test(a))return;let c=f[b]||`第${b+1}列`,g=`${e}\u0000${c}`,h=d.get(g)||{tableIndex:e,column:c,count:0,samples:[]};h.count+=1,h.samples.length<3&&h.samples.push(a),d.set(g,h)})}for(let[c,e]of d)b.push({level:"error",severity:"blocker",category:"table",owner:"llm",repairability:"llm_repairable",provenance:{detectorId:"hollow-table-cell",fingerprint:(0,t.c6)(a)},message:`表格空话单元格:第 ${e.tableIndex} 张表的「${e.column}」列有 ${e.count} 格写的是空话而非数据(如「${e.samples.join("」「")}」)——字段名承诺的是数据,写「按…」等价于留空`,suggestion:`请把该列的「按…」式表述替换为具体值:工程量列写清单原值(数值+单位,如 12792.800m3);规格/尺寸/净距列写图纸或清单给出的具体数值;确实无该字段数据时写可追溯来源(如「按施工图结施-03」),不得用“按清单工程量/按设计标高”类表述搪塞。同类数据在同章正文中通常已存在,请直接引用同一口径。`});return b}function bA(a,b={}){if(!a)return[];let c=[...a.matchAll(/(?:总工期|计划工期|合同工期|工期)[^。;;\n]{0,12}?(\d{2,4})\s*个?\s*日历天/gu)].map(a=>Number(a[1])).filter(Number.isFinite);if(0===c.length)return[];let d=new Map;for(let a of c)d.set(a,(d.get(a)||0)+1);let e=[...d.entries()].sort((a,b)=>b[1]-a[1]||a[0]-b[0])[0][0];if(!Number.isFinite(e)||e<=0)return[];let f=[];for(let b of a.matchAll(/第\s*(\d{1,4})\s*[~~—–-]\s*(\d{1,4})\s*天/gu))f.push(Number(b[2]));for(let b of a.matchAll(/(?:第|不迟于第|至第)\s*(\d{3,4})\s*天/gu))f.push(Number(b[1]));if(0===f.length)return[];let g=Math.max(...f),h=Math.max(b.toleranceDays??3,Math.round(.02*e));return g<=e+h?[]:[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",provenance:{detectorId:"schedule-duration-overrun",fingerprint:(0,t.c6)(a)},message:`进度计划超出声明工期:正文声明总工期 ${e} 日历天,而进度计划/节点的天序排到第 ${g} 天(超出 ${g-e} 天)——工期口径必须单一(招标工期经答疑澄清变更时以变更后为准)`,suggestion:`请统一工期口径:以答疑/澄清后的生效工期(${e} 日历天)为唯一基准,重排进度计划表与各阶段节点的起止天序,使最大天序不超过 ${e} 天(可留 ${h} 天收尾余量);正文任何位置的工期表述必须与此一致。`}]}function bB(a,b=[]){let c=[];if(!a||0===b.length)return c;let d=a.replace(/\s+/gu,"");for(let e of b){let b=String(e.value||"").replace(/\s+/gu,"");!(b.length<3)&&(d.includes(b)||c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",provenance:{detectorId:"caliber-consistency",fingerprint:(0,t.c6)(a)},message:`口径不一致:「${e.attribute}」真值层生效值为「${e.value}」(裁决 ${e.rule}),正文未按该口径落位`,suggestion:`请将「${e.attribute}」统一为现行口径「${e.value}」(裁决依据:${e.evidence[0]?.source||"资料"});不得使用被取代的旧口径,也不得改用其他数值。`}))}return c}function bC(a,b=[]){let c=[];if(!a)return c;let d=b.map(a=>({attribute:a.attribute,token:String(a.value||"").replace(/\s+/gu,"")})).filter(a=>/\d/u.test(a.token)&&a.token.length>=3).filter(a=>/深度|高度|跨度|重量|支护|层高/u.test(a.attribute));if(0===d.length)return c;let e=[];for(let b of a.matchAll(/(?:开挖深度|搭设高度|支撑高度|吊装重量|跨度|基坑深度)[^。;]{0,14}?(?:超过|达到|不小于|大于)\s*\d+(?:\.\d+)?\s*(?:m|米|t|吨|kg)/gu)){let c=Math.max(0,a.lastIndexOf("。",b.index??0)+1),f=a.indexOf("。",(b.index??0)+b[0].length),g=a.slice(c,-1===f?a.length:f+1);if(d.some(a=>g.replace(/\s+/gu,"").includes(a.token)))continue;let h=b[0].replace(/\s+/gu,"");e.push(h)}if(0===e.length)return c;let f=d.some(b=>a.replace(/\s+/gu,"").includes(b.token));return c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",provenance:{detectorId:"hazard-parameter-binding",fingerprint:(0,t.c6)(a)},message:`危大工程只写规范阈值、未落本项目实参:${e.slice(0,3).join("、")}${f?"":"(全文亦未出现本项目开挖深度/支护/高度类实参)"}——危大分级必须写「本项目实际参数 + 判定阈值对照 + 结论」,不得只抄规范阈值`,suggestion:`请在危大工程判定处写明本项目实际参数并给出对照结论(如「本项目基坑开挖深度 ${d[0]?.token||"1.75m"},对照《危险性较大的分部分项工程安全管理规定》3m 阈值判定为/不属于危大工程」);参数取自资料原文,不得编造。`}),c}},25284:(a,b,c)=>{c.d(b,{OO:()=>N,TD:()=>F,Tt:()=>A,Ut:()=>C,b3:()=>M,hp:()=>H,xv:()=>L});var d=c(77598),e=c(73024),f=c(76760),g=c(19898),h=c(44533),i=c(37095),j=c(32434),k=c(70963),l=c(36003),m=c(22157);let n="project-intelligence-v13";function o(a,b){let c=f.join(function(a){let b=f.join((0,h.a2)(),"projects",(0,g.computeProjectId)(a),"project-intelligence");return e.mkdirSync(b,{recursive:!0}),b}(a),"packs");return e.mkdirSync(c,{recursive:!0}),f.join(c,function(a){let b=encodeURIComponent(a),c=`${b}.json`;if(200>=Buffer.byteLength(c,"utf8"))return c;let e=b.slice(0,120).replace(/%[0-9A-F]{0,2}$/u,"");return`${e}-${(0,d.createHash)("sha1").update(a,"utf8").digest("hex").slice(0,12)}.json`}(b))}function p(a,b){let c=`${a}.tmp-${process.pid}`;e.writeFileSync(c,JSON.stringify(b,null,2)),e.renameSync(c,a)}let q="intelligence-mixed-";function r(a){return`${q}${encodeURIComponent(a)}`}function s(a){return a.replace(/资料参数行摘要\s*[::]?/gu,"").replace(/#{1,6}\s*/gu," ").replace(/[##]{1,6}(?=[\u4e00-\u9fa5])/gu," ").replace(/(?:PDF\s*)?第\s*\d+\s*页(?:\s*共\s*\d+\s*页)?/giu," ").replace(/资料类型\s*[::]\s*[^\s;;]+/giu," ").replace(/MIME\s*[::]\s*[^\s;;]+/giu," ").replace(/文件大小\s*[::]\s*[^\s;;]+/giu," ").replace(/(?:项目编号|招标编号|备案编号|工程编号)\s*[::]\s*[^\s;;,。]+/giu," ").replace(/\s+/gu," ").trim()}function t(a){return/投标函|保证金|开标|评标|交易系统|账户|协议书|示范文本|报价|税率|利润|我方已仔细研究|中标|签订合同|专用账户监管|联合体投标|注册建造师|安全生产考核合格证书|安全生产许可证|营业执照|资质要求|投标人资格|资格审查|资格后审|资格预审|业绩要求|信誉要求|财务要求|投标有效期|投标截止|递交投标文件|递交电子投标文件|获取招标文件|获取方式|获取时间|踏勘现场|投标预备会|备选投标方案|分包内容|电子交易系统|电子服务系统|联系方式|联系人|邮编|技术支持|全流程电子化交易|异议|投诉|评标委员会|评标办法|公告发布|媒介|咨询电话|拨打电话|招标工程量清单|最高投标限价|不可竞争费|招标总说明|招标需求|招标范围|招标控制价|编制补疑|计价依据|计价定额|措施项目费|暂列金额|投标总价|综合单价|计价格式|取费标准|清单编制说明|招标文件正文|招标图纸目录|投标人/u.test(a)}let u={工期进度:["工期","进度","计划","节点","流水","穿插","日历天"],质量验收:["质量","验收","检验","试验","复试","见证","取样","规范","标准"],安全危大:["安全","危大","风险","脚手架","深基坑","吊装","临电","消防","应急"],施工部署:["部署","总平面","临设","场地","施工组织","施工顺序"],施工方法:["施工方法","施工工艺","道路","桥梁","排水","照明","园林","绿化","交通","结构"],人材机:["劳动力","材料","机械","设备","周转","进场","资源"],环境文明:["环保","扬尘","文明","噪声","水土保持","绿色施工"],工程概况:["项目","工程","建设地点","建设规模","招标范围","发包人要求"]};function v(a){let b=[],c=(c,d,e=.72)=>{d&&b.push({key:c,value:d,sourceFile:a.relativePath,roleId:a.roles[0]||"project_overview",processingType:"project_intelligence",confidence:e})};for(let b of(c("资料文件",a.fileName,.6),a.root&&c("资料组",a.root,.65),a.roles))c("资料角色",b,.58);for(let b of a.contentFacts)c("资料内容事实",b,.76);for(let b of a.chapterHints)c("章节意图候选",b,.68);let d=a.relativePath.match(/([^/\\]*项目[^/\\]*)/u)?.[1]||a.root;return d&&c("项目名称候选",d,.62),b}function w(a){return(0,m.c6)(a.map(a=>({path:a.relativePath,hash:a.contentHash,chunkCount:a.chunkCount,status:a.status})).sort((a,b)=>a.path.localeCompare(b.path)))}function x(a,b){return w((0,h.Yy)(a).filter(a=>(0,g.materialRootOf)(a.relativePath)===b).filter(j.PZ).map(a=>({relativePath:a.relativePath,contentHash:a.contentHash,chunkCount:a.chunkCount,status:a.status,indexedAt:a.indexedAt})))}let y=new Map;function z(a,b){let c=`${a}::${b}`,d=Date.now();d-(y.get(c)||0)<6e4||(y.set(c,d),M(a,b))}function A(a,b){let c=o(a,b);if(e.existsSync(c))try{let d=function(a,b,c){if(c.version!==n||c.packRoot!==b||!c.projectGraph||!Array.isArray(c.files)||0===c.files.length)return;let d=w(c.files);if(d!==x(a,b))return;let e=c.constructionOrganizationGraph||E(c.projectGraph,c.files),f={...c,version:n,projectRoot:a,packRoot:b,projectId:c.projectId||(0,g.computeProjectId)(a),sourceHash:d,constructionOrganizationGraph:e};return c.constructionOrganizationGraph&&c.sourceHash===d||p(o(a,b),f),f}(a,b,JSON.parse(e.readFileSync(c,"utf8")));if(!d)return void z(a,b);return d.graphDegraded&&z(a,b),d}catch{z(a,b);return}}let B=/评标办法|评标(?:委员会|细则)|评分档位|分值构成|评审|地质勘察|地勘|土壤氡/u;function C(a){return B.test(a.replace(/\s+/gu," "))}function D(a,b){return[...new Set(a.map(a=>a.replace(/\s+/gu," ").trim()).filter(Boolean))].slice(0,b)}function E(a,b){let c=new Map(b.map(a=>[a.relativePath,a.contentFacts])),d=new Set(b.map(a=>a.root).filter(Boolean)),e=new Set(b.map(a=>a.fileName).filter(Boolean)),f=a=>/资料文件|资料组|资料角色|资料内容事实|章节意图候选|项目名称候选/u.test(a),g=(a,b)=>D(a,b).filter(a=>!(t(a)||f(a))&&!/\d+\s*[.、]/u.test(a.split(/[::]/u).slice(1).join(":"))),h=new Map;for(let a of b){if(!/工程量清单EXCEL/iu.test(a.relativePath)||!/\.xls$/iu.test(a.relativePath))continue;let b=a.relativePath.split("/"),c=b[b.length-1]||"",d=(b[b.length-2]||"").replace(/^\d+\s*/,"").trim()||c.replace(/\.xls$/iu,"").trim();!d||/项目施工$|清单编制说明|图纸目录|可调整价差|汇总|一览表/u.test(d)||(h.has(d)||h.set(d,[]),h.get(d).push(a.relativePath))}let i=new Map;for(let b of a.works)for(let a of b.sourceFiles||[])i.has(a)||i.set(a,b.scope||"");let j=[],k=new Set,l=(b,h,i,l=[])=>{if(!b||k.has(b)||d.has(b)||e.has(b)||/投标|报价|保证金|合同协议|账户|开标|评标|资质要求|资格审查|资料目录|招标范围|招标需求|招标总说明|最高投标限价|不可竞争费|补疑|清单编制说明|图纸目录/u.test(`${b}${i||""}`)||/项目施工$/u.test(b.trim()))return;let m=g([...l,...(h||[]).flatMap(a=>c.get(a)||[])],16),n=`${b}
|
|
24
|
+
`);return b}(b);if(!c.trim())return[];let d=a.replace(e.ug," ");for(let a of c.matchAll(e.QX)){let b=(a[1]||"").replace(e.ug," ").trim();if(b&&d.includes(b))return[{level:"error",message:"正文疑似包含提示词示例内容",suggestion:"请删除提示词样例数据,仅保留基于当前绑定材料生成的正文。"}]}return[]}function bx(a,b=[]){let c=[];if(!a||0===b.length)return c;let d=a.split(/\r?\n/u),e=[];for(let f of(d.forEach((a,b)=>{let c=/^##\s+(.+?)\s*$/u.exec(a.trim());c&&!/^(目录|附表)/u.test(c[1])&&e.push({index:b,title:c[1].replace(/\s+/gu,"")})}),b)){let b=(f.sections||[]).filter(Boolean);if(0===b.length)continue;let g=f.title.replace(/\s+/gu,""),h=e.find(a=>a.title.includes(g)||g.includes(a.title));if(!h)continue;let j=e.find(a=>a.index>h.index),l=d.slice(h.index+1,j?j.index:d.length).join("\n"),m=(0,i.hL)(b,l);0!==m.length&&c.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",provenance:{detectorId:"planned-section-placement",fingerprint:(0,t.c6)(a)},message:`规划小节未落位:「${(0,k.GQ)(f.title)}」缺少 ${m.length} 个规划小节(${m.slice(0,6).join("、")}${m.length>6?" 等":""})——章级规划小节必须以三级标题逐节落地,不得漏写或降级为四级标题`,suggestion:`请补齐以下小节并各自成节(三级标题「### X.X 小节名」,小节名与规划逐字一致,每节下写实质内容):${m.join("、")}。`})}return c}let by=/^(?:按(?:清单|设计|图纸|规范|方案|要求|合同|实际|甲方|业主)[^,。;]{0,14}|符合(?:设计|规范|标准|要求)[^,。;]{0,8}|根据(?:实际|现场)情况[^,。;]{0,10}|视(?:现场)?情况[^,。;]{0,10}|详见(?:图纸|设计|招标文件|清单)|相关(?:人员|部门|岗位)(?:及时)?[^,。;]{0,10}|及时(?:处理|整改|跟进|上报)|加强管理|严格控制|按需(?:配置|投入)|按实(?:计算|结算)|综合考虑|按有关规定)$/u;function bz(a){let b=[];if(!a)return b;let c=a.split(/\r?\n/u),d=new Map,e=0,f=[];for(let a=0;a<c.length;a+=1){let b=c[a];if(!/^\s*\|/.test(b)){f=[];continue}if(/^\s*\|[\s:|-]+\|\s*$/u.test(b)){e+=1;continue}let g=b.split("|").slice(1,-1).map(a=>a.trim());if(0===f.length){f=g;continue}g.forEach((a,b)=>{if(!a||/\d/u.test(a)||!by.test(a))return;let c=f[b]||`第${b+1}列`,g=`${e}\u0000${c}`,h=d.get(g)||{tableIndex:e,column:c,count:0,samples:[]};h.count+=1,h.samples.length<3&&h.samples.push(a),d.set(g,h)})}for(let[c,e]of d)b.push({level:"error",severity:"blocker",category:"table",owner:"llm",repairability:"llm_repairable",provenance:{detectorId:"hollow-table-cell",fingerprint:(0,t.c6)(a)},message:`表格空话单元格:第 ${e.tableIndex} 张表的「${e.column}」列有 ${e.count} 格写的是空话而非数据(如「${e.samples.join("」「")}」)——字段名承诺的是数据,写「按…」等价于留空`,suggestion:`请把该列的「按…」式表述替换为具体值:工程量列写清单原值(数值+单位,如 12792.800m3);规格/尺寸/净距列写图纸或清单给出的具体数值;确实无该字段数据时写可追溯来源(如「按施工图结施-03」),不得用“按清单工程量/按设计标高”类表述搪塞。同类数据在同章正文中通常已存在,请直接引用同一口径。`});return b}function bA(a,b={}){if(!a)return[];let c=[...a.matchAll(/(?:总工期|计划工期|合同工期|工期)[^。;;\n]{0,12}?(\d{2,4})\s*个?\s*日历天/gu)].map(a=>Number(a[1])).filter(Number.isFinite);if(0===c.length)return[];let d=new Map;for(let a of c)d.set(a,(d.get(a)||0)+1);let e=[...d.entries()].sort((a,b)=>b[1]-a[1]||a[0]-b[0])[0][0];if(!Number.isFinite(e)||e<=0)return[];let f=[];for(let b of a.matchAll(/第\s*(\d{1,4})\s*[~~—–-]\s*(\d{1,4})\s*天/gu))f.push(Number(b[2]));for(let b of a.matchAll(/(?:第|不迟于第|至第)\s*(\d{3,4})\s*天/gu))f.push(Number(b[1]));if(0===f.length)return[];let g=Math.max(...f),h=Math.max(b.toleranceDays??3,Math.round(.02*e));return g<=e+h?[]:[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",provenance:{detectorId:"schedule-duration-overrun",fingerprint:(0,t.c6)(a)},message:`进度计划超出声明工期:正文声明总工期 ${e} 日历天,而进度计划/节点的天序排到第 ${g} 天(超出 ${g-e} 天)——工期口径必须单一(招标工期经答疑澄清变更时以变更后为准)`,suggestion:`请统一工期口径:以答疑/澄清后的生效工期(${e} 日历天)为唯一基准,重排进度计划表与各阶段节点的起止天序,使最大天序不超过 ${e} 天(可留 ${h} 天收尾余量);正文任何位置的工期表述必须与此一致。`}]}function bB(a,b=[]){let c=[];if(!a||0===b.length)return c;let d=a.replace(/\s+/gu,"");for(let e of b){let b=String(e.value||"").replace(/\s+/gu,"");!(b.length<3)&&(d.includes(b)||c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",provenance:{detectorId:"caliber-consistency",fingerprint:(0,t.c6)(a)},message:`口径不一致:「${e.attribute}」真值层生效值为「${e.value}」(裁决 ${e.rule}),正文未按该口径落位`,suggestion:`请将「${e.attribute}」统一为现行口径「${e.value}」(裁决依据:${e.evidence[0]?.source||"资料"});不得使用被取代的旧口径,也不得改用其他数值。`}))}return c}function bC(a,b=[]){let c=[];if(!a)return c;let d=b.map(a=>({attribute:a.attribute,token:String(a.value||"").replace(/\s+/gu,"")})).filter(a=>/\d/u.test(a.token)&&a.token.length>=3).filter(a=>/深度|高度|跨度|重量|支护|层高/u.test(a.attribute));if(0===d.length)return c;let e=[];for(let b of a.matchAll(/(?:开挖深度|搭设高度|支撑高度|吊装重量|跨度|基坑深度)[^。;]{0,14}?(?:超过|达到|不小于|大于)\s*\d+(?:\.\d+)?\s*(?:m|米|t|吨|kg)/gu)){let c=Math.max(0,a.lastIndexOf("。",b.index??0)+1),f=a.indexOf("。",(b.index??0)+b[0].length),g=a.slice(c,-1===f?a.length:f+1);if(d.some(a=>g.replace(/\s+/gu,"").includes(a.token)))continue;let h=b[0].replace(/\s+/gu,"");e.push(h)}if(0===e.length)return c;let f=d.some(b=>a.replace(/\s+/gu,"").includes(b.token));return c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",provenance:{detectorId:"hazard-parameter-binding",fingerprint:(0,t.c6)(a)},message:`危大工程只写规范阈值、未落本项目实参:${e.slice(0,3).join("、")}${f?"":"(全文亦未出现本项目开挖深度/支护/高度类实参)"}——危大分级必须写「本项目实际参数 + 判定阈值对照 + 结论」,不得只抄规范阈值`,suggestion:`请在危大工程判定处写明本项目实际参数并给出对照结论(如「本项目基坑开挖深度 ${d[0]?.token||"1.75m"},对照《危险性较大的分部分项工程安全管理规定》3m 阈值判定为/不属于危大工程」);参数取自资料原文,不得编造。`}),c}function bD(a,b){let c=[];if(!a||!b)return c;let d=a.replace(/\s+/gu,""),e=[],f=b.resources?.labor?.peakValue;if("number"==typeof f&&f>0){let a=String(f);d.includes(a)||d.includes(`${a}人`)||RegExp(`峰值[^。;]{0,20}${a}`,"u").test(d)||e.push(`劳动力峰值 ${f} 人`)}for(let a of(b.resources?.equipment||[]).slice(0,12))"number"==typeof a.count&&!(a.count<=0)&&(d.includes(`${a.count}台`)||e.push(`${a.name} ${a.count} 台`));return 0===e.length||c.push({level:"error",severity:"blocker",category:"professional_chain",owner:"llm",repairability:"llm_repairable",provenance:{detectorId:"blueprint-value-placement",fingerprint:(0,t.c6)(a)},message:`蓝图权威值未落位:${e.slice(0,6).join("、")}——资源配置类数值由系统蓝图统一裁决,正文必须以具体数值写出,不得以「按…控制/按部署确定」类表述代替`,suggestion:`请在对应章节(劳动力配置/机械设备配置)写明蓝图权威值:${e.slice(0,6).join("、")};这些数值为系统裁决的唯一口径,不得自行推算另设、也不得只写控制原则。`}),c}let bE=/[^。;!?\n]{18,}?(?:以及|和|与|及|或|并)\s*[。;]/gu;function bF(a){let b=[];if(!a)return b;let c=[];for(let b of a.matchAll(bE))c.push(b[0].trim());return 0===c.length||b.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",provenance:{detectorId:"dangling-conjunction",fingerprint:(0,t.c6)(a)},message:`截断句(悬空连接词):${c.length} 处句子以连接词/助词收尾且无后续成分——如「${c[0].slice(-30)}」`,suggestion:"请补全被截断的句子成分(宾语/并列项),或删除悬空连接词使句子完整;不得出现半截句。"}),b}},25284:(a,b,c)=>{c.d(b,{OO:()=>N,TD:()=>F,Tt:()=>A,Ut:()=>C,b3:()=>M,hp:()=>H,xv:()=>L});var d=c(77598),e=c(73024),f=c(76760),g=c(19898),h=c(44533),i=c(37095),j=c(32434),k=c(70963),l=c(36003),m=c(22157);let n="project-intelligence-v13";function o(a,b){let c=f.join(function(a){let b=f.join((0,h.a2)(),"projects",(0,g.computeProjectId)(a),"project-intelligence");return e.mkdirSync(b,{recursive:!0}),b}(a),"packs");return e.mkdirSync(c,{recursive:!0}),f.join(c,function(a){let b=encodeURIComponent(a),c=`${b}.json`;if(200>=Buffer.byteLength(c,"utf8"))return c;let e=b.slice(0,120).replace(/%[0-9A-F]{0,2}$/u,"");return`${e}-${(0,d.createHash)("sha1").update(a,"utf8").digest("hex").slice(0,12)}.json`}(b))}function p(a,b){let c=`${a}.tmp-${process.pid}`;e.writeFileSync(c,JSON.stringify(b,null,2)),e.renameSync(c,a)}let q="intelligence-mixed-";function r(a){return`${q}${encodeURIComponent(a)}`}function s(a){return a.replace(/资料参数行摘要\s*[::]?/gu,"").replace(/#{1,6}\s*/gu," ").replace(/[##]{1,6}(?=[\u4e00-\u9fa5])/gu," ").replace(/(?:PDF\s*)?第\s*\d+\s*页(?:\s*共\s*\d+\s*页)?/giu," ").replace(/资料类型\s*[::]\s*[^\s;;]+/giu," ").replace(/MIME\s*[::]\s*[^\s;;]+/giu," ").replace(/文件大小\s*[::]\s*[^\s;;]+/giu," ").replace(/(?:项目编号|招标编号|备案编号|工程编号)\s*[::]\s*[^\s;;,。]+/giu," ").replace(/\s+/gu," ").trim()}function t(a){return/投标函|保证金|开标|评标|交易系统|账户|协议书|示范文本|报价|税率|利润|我方已仔细研究|中标|签订合同|专用账户监管|联合体投标|注册建造师|安全生产考核合格证书|安全生产许可证|营业执照|资质要求|投标人资格|资格审查|资格后审|资格预审|业绩要求|信誉要求|财务要求|投标有效期|投标截止|递交投标文件|递交电子投标文件|获取招标文件|获取方式|获取时间|踏勘现场|投标预备会|备选投标方案|分包内容|电子交易系统|电子服务系统|联系方式|联系人|邮编|技术支持|全流程电子化交易|异议|投诉|评标委员会|评标办法|公告发布|媒介|咨询电话|拨打电话|招标工程量清单|最高投标限价|不可竞争费|招标总说明|招标需求|招标范围|招标控制价|编制补疑|计价依据|计价定额|措施项目费|暂列金额|投标总价|综合单价|计价格式|取费标准|清单编制说明|招标文件正文|招标图纸目录|投标人/u.test(a)}let u={工期进度:["工期","进度","计划","节点","流水","穿插","日历天"],质量验收:["质量","验收","检验","试验","复试","见证","取样","规范","标准"],安全危大:["安全","危大","风险","脚手架","深基坑","吊装","临电","消防","应急"],施工部署:["部署","总平面","临设","场地","施工组织","施工顺序"],施工方法:["施工方法","施工工艺","道路","桥梁","排水","照明","园林","绿化","交通","结构"],人材机:["劳动力","材料","机械","设备","周转","进场","资源"],环境文明:["环保","扬尘","文明","噪声","水土保持","绿色施工"],工程概况:["项目","工程","建设地点","建设规模","招标范围","发包人要求"]};function v(a){let b=[],c=(c,d,e=.72)=>{d&&b.push({key:c,value:d,sourceFile:a.relativePath,roleId:a.roles[0]||"project_overview",processingType:"project_intelligence",confidence:e})};for(let b of(c("资料文件",a.fileName,.6),a.root&&c("资料组",a.root,.65),a.roles))c("资料角色",b,.58);for(let b of a.contentFacts)c("资料内容事实",b,.76);for(let b of a.chapterHints)c("章节意图候选",b,.68);let d=a.relativePath.match(/([^/\\]*项目[^/\\]*)/u)?.[1]||a.root;return d&&c("项目名称候选",d,.62),b}function w(a){return(0,m.c6)(a.map(a=>({path:a.relativePath,hash:a.contentHash,chunkCount:a.chunkCount,status:a.status})).sort((a,b)=>a.path.localeCompare(b.path)))}function x(a,b){return w((0,h.Yy)(a).filter(a=>(0,g.materialRootOf)(a.relativePath)===b).filter(j.PZ).map(a=>({relativePath:a.relativePath,contentHash:a.contentHash,chunkCount:a.chunkCount,status:a.status,indexedAt:a.indexedAt})))}let y=new Map;function z(a,b){let c=`${a}::${b}`,d=Date.now();d-(y.get(c)||0)<6e4||(y.set(c,d),M(a,b))}function A(a,b){let c=o(a,b);if(e.existsSync(c))try{let d=function(a,b,c){if(c.version!==n||c.packRoot!==b||!c.projectGraph||!Array.isArray(c.files)||0===c.files.length)return;let d=w(c.files);if(d!==x(a,b))return;let e=c.constructionOrganizationGraph||E(c.projectGraph,c.files),f={...c,version:n,projectRoot:a,packRoot:b,projectId:c.projectId||(0,g.computeProjectId)(a),sourceHash:d,constructionOrganizationGraph:e};return c.constructionOrganizationGraph&&c.sourceHash===d||p(o(a,b),f),f}(a,b,JSON.parse(e.readFileSync(c,"utf8")));if(!d)return void z(a,b);return d.graphDegraded&&z(a,b),d}catch{z(a,b);return}}let B=/评标办法|评标(?:委员会|细则)|评分档位|分值构成|评审|地质勘察|地勘|土壤氡/u;function C(a){return B.test(a.replace(/\s+/gu," "))}function D(a,b){return[...new Set(a.map(a=>a.replace(/\s+/gu," ").trim()).filter(Boolean))].slice(0,b)}function E(a,b){let c=new Map(b.map(a=>[a.relativePath,a.contentFacts])),d=new Set(b.map(a=>a.root).filter(Boolean)),e=new Set(b.map(a=>a.fileName).filter(Boolean)),f=a=>/资料文件|资料组|资料角色|资料内容事实|章节意图候选|项目名称候选/u.test(a),g=(a,b)=>D(a,b).filter(a=>!(t(a)||f(a))&&!/\d+\s*[.、]/u.test(a.split(/[::]/u).slice(1).join(":"))),h=new Map;for(let a of b){if(!/工程量清单EXCEL/iu.test(a.relativePath)||!/\.xls$/iu.test(a.relativePath))continue;let b=a.relativePath.split("/"),c=b[b.length-1]||"",d=(b[b.length-2]||"").replace(/^\d+\s*/,"").trim()||c.replace(/\.xls$/iu,"").trim();!d||/项目施工$|清单编制说明|图纸目录|可调整价差|汇总|一览表/u.test(d)||(h.has(d)||h.set(d,[]),h.get(d).push(a.relativePath))}let i=new Map;for(let b of a.works)for(let a of b.sourceFiles||[])i.has(a)||i.set(a,b.scope||"");let j=[],k=new Set,l=(b,h,i,l=[])=>{if(!b||k.has(b)||d.has(b)||e.has(b)||/投标|报价|保证金|合同协议|账户|开标|评标|资质要求|资格审查|资料目录|招标范围|招标需求|招标总说明|最高投标限价|不可竞争费|补疑|清单编制说明|图纸目录/u.test(`${b}${i||""}`)||/项目施工$/u.test(b.trim()))return;let m=g([...l,...(h||[]).flatMap(a=>c.get(a)||[])],16),n=`${b}
|
|
25
25
|
${i||""}
|
|
26
26
|
${m.join("\n")}`,o=a.methods.filter(a=>(a.applicableWorks||[]).some(a=>a.includes(b)||b.includes(a))||a.name.includes(b)).slice(0,4),p=a.resources.filter(a=>!f(a.name)&&(n.includes(a.name)||(a.sourceFiles||[]).some(a=>h.includes(a)))).slice(0,8),q=g([...o.flatMap(a=>a.steps||[])],10),r=p.map(a=>a.name).filter(Boolean),s=g([...o.map(a=>a.name),...m.filter(a=>!r.some(b=>b.length>=4&&a.includes(b)))],10),t=(i||"").trim()||m.slice(0,2).join(";")||b;(0!==m.length||t||0!==q.length||0!==s.length)&&(k.add(b),j.push({name:b,scope:t,quantities:g([...p.map(a=>`${a.name}${a.quantity?`:${a.quantity}${a.unit||""}`:""}`),...m.filter(a=>/\d|㎡|m2|m²|米|m³|立方|吨|台|套|项/u.test(a)&&!r.some(b=>b.length>=4&&a.includes(b)))],8),materials:g(p.map(a=>[a.name,a.spec].filter(Boolean).join("|")),8),process:q,methods:s,acceptance:g([...a.standards.filter(a=>(a.sourceFiles||[]).some(a=>h.includes(a))).map(a=>a.description||a.code),...m.filter(a=>/验收|复试|检测|见证|检验|质量/u.test(a))],8).filter(a=>/验收|检测|试验|复试|实测|试块|测试|检查|记录|报告|见证|取样|拉拔|探伤|闭水|通电|绝缘|接地|电阻|偏差|压实度|密实度|强度|合格|规范/u.test(a)),sourceFiles:h}))},m=[...h.keys()],n=a=>{if(m.includes(a))return a;for(let b of m)if(a.startsWith(`${b}-`)||a.startsWith(`${b}-`))return b},o=new Map;for(let b of a.works){let a=(b.name||"").trim();if(!a)continue;let c=n(a);if(!c)continue;let d=o.get(c)||{scope:"",files:[],items:[]};a===c&&b.scope?d.scope=b.scope:d.scope||(d.scope=b.scope||""),d.files.push(...b.sourceFiles||[]),d.items.push(...b.relatedItems||[]),o.set(c,d)}for(let[a,b]of h){let c=o.get(a),d=c?.scope||b.map(a=>i.get(a)).find(Boolean)||"";l(a,[...new Set([...b,...c?.files||[]])],d,c?.items||[])}for(let b of a.works){let a=(b.name||"").trim();!a||n(a)||l(a,b.sourceFiles||[],b.scope,b.relatedItems||[])}let p=j.map(a=>a.name);return{workPackages:j,controlMatrix:a.risks.slice(0,10).map(b=>({feature:b.risk,difficulty:b.mitigation||b.risk,relatedWorkPackages:p.filter(a=>b.mitigation.includes(a)||b.risk.includes(a)).slice(0,4),methods:a.methods.filter(a=>b.mitigation.includes(a.name)||b.risk.includes(a.name)).map(a=>a.name).slice(0,4),qualityControls:D(a.standards.map(a=>a.description||a.code).filter(Boolean),4),safetyControls:D([b.mitigation,...a.requirements.filter(a=>/安全|风险|危大|消防|应急/u.test(a.category+a.detail)).map(a=>a.detail)],4)})),qualityControls:D([...a.standards.map(a=>a.description||a.code),...a.requirements.filter(a=>/质量|验收|复试|检测/u.test(a.category+a.detail)).map(a=>a.detail)],18),safetyControls:D([...a.risks.map(a=>`${a.risk}:${a.mitigation}`),...a.requirements.filter(a=>/安全|危大|消防|应急|文明/u.test(a.category+a.detail)).map(a=>a.detail)],18),resourcePlans:D(a.resources.map(a=>`${a.name}${a.spec?`|${a.spec}`:""}${a.quantity?`|${a.quantity}${a.unit||""}`:""}`),24),acceptanceRecords:D([...a.standards.map(a=>a.description||a.code),...a.requirements.filter(a=>/资料|验收|记录|检验批|隐蔽/u.test(a.category+a.detail)).map(a=>a.detail)],18),evidenceRankingHints:["优先使用工程量清单、图纸设计说明、技术规范、发包人要求、补疑澄清中的施工范围、工程量、材料规格、工艺流程、验收标准;降低投标须知、保证金、付款、违约金、电子交易系统等商务合同条款权重。"]}}function F(a){if(!a||0===a.workPackages.length)return"";let b=a.workPackages.slice(0,12).map(a=>{let b=(0,l.eL)([...a.quantities,...a.materials,...a.methods].map(a=>a.replace(/\s+/gu," ").trim()).filter(a=>a.length>=4&&a.length<=120)),c=(0,l.xu)(a.process.map(a=>a.replace(/\s+/gu," ").trim()).filter(a=>a.length>=2&&a.length<=40),b);return{name:a.name,scope:a.scope,quantities:b,process:c,acceptance:a.acceptance}}),c=b.map(a=>({name:a.name,scope:a.scope,quantities:a.quantities,materials:[],process:a.process,methods:[],acceptance:a.acceptance}));return["## 施工组织设计专项图谱","主要施工工作包:",...b.map((a,b)=>`${b+1}. ${a.name}|范围:${a.scope}|工程量/材料:${a.quantities.slice(0,5).join(";")||"按证据展开"}|流程:${a.process.slice(0,8).join("→")||"按施工准备→实施→检查→验收组织"}|验收:${a.acceptance.slice(0,4).join(";")||"按规范和资料闭环"}`),"施工工作包结构化数据:",JSON.stringify(c),a.controlMatrix.length?"重点难点—施工内容—措施矩阵:":"",...a.controlMatrix.slice(0,8).map(a=>`- ${a.feature} → ${a.relatedWorkPackages.join("、")||"相关工作包"} → ${[...a.methods,...a.qualityControls,...a.safetyControls].slice(0,6).join(";")}`),a.evidenceRankingHints.join("\n")].filter(Boolean).join("\n")}async function G(a,b,c){let d,e;c?.("files",15,"正在扫描已入库文件并抽样提取内容事实");let l=await (0,h.Qh)().getProject(a),q=(0,h.Yy)(a).filter(a=>(0,g.materialRootOf)(a.relativePath)===b).filter(j.PZ);if(0===q.length)throw(0,i.CU)(a,r(b)),Error(`资料包「${b}」内无可用入库文件,跳过项目理解缓存构建`);let x=q.map(a=>{var b;let c=(0,g.materialRootOf)(a.relativePath),d=function(a){let b=new Set(["project_overview"]);return/招标|发包人要求|答疑|补疑|澄清/u.test(a)&&b.add("tender_requirement"),/图纸|设计说明|施工图|道路|桥梁|园林|交通|结构/u.test(a)&&b.add("drawing"),/清单|工程量|xls|xlsx/u.test(a)&&b.add("boq"),/质量|验收|规范|标准/u.test(a)&&b.add("quality_standard"),/安全|危大|风险|文明|环保/u.test(a)&&b.add("safety_requirement"),/施工|方案|组织|进度|工期|材料|机械|劳动力/u.test(a)&&b.add("construction_method"),[...b]}(a.relativePath),e=l.listChunksSampled({relativePath:a.relativePath,sampleSize:64}),h=function(a,b=48){let c=a.map(a=>s(String(a.content||""))).filter(Boolean);return c.length<=b?c:[...c.slice(0,b-4),...c.slice(-4)]}(e),i=(b=a.relativePath,/投标函|我方已仔细研究/u.test(b)?"投标函/承诺格式,不进入施工正文":/保证金|账户|协议书|资金托管/u.test(b)?"资金账户/保证金资料,不进入施工正文":/开标|评标|交易系统|示范文本/u.test(b)?"招投标流程/示范文本,不进入施工正文":/报价|税率|利润|最高投标限价|招标控制价|计价依据|计价定额/u.test(b)?"商务报价资料,不进入施工正文":/招标文件正文|清单编制说明|招标总说明|招标需求/u.test(b)?"招标说明/清单编制说明,不进入施工正文":void 0),j=/\.(?:xlsx?|csv|tsv)$/iu.test(a.relativePath),k=i?[]:j?function(a){let b=new Set,c=/工程名称|序号|项目编码|项目名称|项目特征|计量\s*单位|工程量|金额|综合单价|合价|人工费|机械费|暂估价|分部小计|本页|续表|合计|汇总/u,d={seq:0,name:2,feature:3,unit:4,quantity:5},e=null;for(let f of a)for(let a of String(f.content||"").split(/\r?\n/u)){let f=a.trim();if(!f.startsWith("|"))continue;let h=f.split("|").map(a=>a.trim());if(h.length<7)continue;let i=h.slice(1,-1);if((0,g.scoreTableHeaderRow)(i)>=4&&!/^\d+$/.test(i[0]||"")){e=(0,g.locateTableColumns)(i);continue}let j=e??d,k=(j.seq??0)>=0?i[j.seq??0]||"":i[0]||"",l=(j.name??2)>=0?i[j.name??2]||"":i[2]||"",m=(j.feature??3)>=0?i[j.feature??3]||"":i[3]||"",n=(j.unit??4)>=0?i[j.unit??4]||"":i[4]||"",o=(j.quantity??5)>=0?i[j.quantity??5]||"":i[5]||"";if(!/^\d+$/.test(k)||!l||!m||c.test(`${l}${m}`))continue;let p=m.replace(/\s+/gu," ").replace(/[,,;;]?\s*(?:\d+[、..]\s*)?(?:未尽事宜|具体详见|详见)[^,,;;]*?,?满足验收要求/gu,"").replace(/[,,;;]?\s*(?:\d+[、..]\s*)?含拆除、垃圾打堆、外弃[^,,;;]*/gu,"").replace(/[,,;;]?\s*投标人(?:结合设计图纸、地勘报告)?(?:自行)?踏勘现场后综合考虑/gu,"").replace(/[||]+/gu," ").replace(/\s*\d+[..]\s*$/gu,"").replace(/[。.]\s*$/gu,"").replace(/\s+/gu," ").trim();if(p.length<2)continue;let q=o&&n?`${o}${n}`:o||n,r=`${l}:${p.slice(0,80)}${q?`|${q}`:""}`;if(!(r.replace(/[^0-9a-zA-Z\u4e00-\u9fa5]/gu,"").length<4)&&(b.add(r),b.size>=60))return[...b]}return[...b]}(e):function(a){let b=new Set;for(let c of a){for(let a of c.split(/[。;;\n]/u)){let c=s(a);if(!(c.length<12||c.length>180||t(c))&&!(/^(?:项目编号|招标编号|备案编号|工程编号|资料名称|文档名称|文件名称|文档类型|文件类型|创建时间|修改时间|编制单位|编制日期)\s*[::]/u.test(c)||/^[##]{1,6}/u.test(c))&&(/(项目|工程|道路|桥梁|园林|交通|结构|排水|照明|绿化|工期|质量|安全|危大|材料|机械|劳动力|验收|规范|清单|工程量|施工)/u.test(c)&&b.add(c),b.size>=24))break}if(b.size>=24)break}return[...b]}(h),m=function(a,b){let c=`${a}
|
|
27
27
|
${b.join("\n")}`,d=new Set;for(let[a,b]of Object.entries(u))b.some(a=>c.includes(a))&&d.add(a);return[...d]}(a.relativePath,k),n=function(a,b){let c=`${a}
|
|
@@ -163,17 +163,17 @@ ${b.map((a,b)=>`${b+1}. ${a}`).join("\n")}
|
|
|
163
163
|
${(0,j.TP)("以上为系统提取的招标要求全局口径:本段提示词文字本身(编号、括号说明等元话语)禁止复述进正文")}`}function af(a){if(0===a.length)return"";let b={respond:"显性响应",comply:"全文遵守"};return["【本章必须处理的招标要求(蓝图分配全量,逐条响应/遵守;零处理即评标失分)】",...a.map(a=>{let c=a.sources.find(a=>a.file)?.file,d="respond"===a.policy?aw(a):[],e=d.length>0?`
|
|
164
164
|
└ 必须逐字落位:${d.join("、")}`:"";return`- [${b[a.policy]}] ${a.text}${c?`(来源:${c})`:""}${e}`}),(0,j.TP)("以上为系统提取的招标要求原文:实质内容(奖项名称/等级指标/数字参数)必须显性落位;「必须逐字落位」为系统验收锚点清单,其文字禁止复述进正文;本段提示词文字本身(编号、括号说明等元话语)禁止复述进正文")].join("\n")}function ag(a,b={}){if(0===a.length)return"";let c={diagram:"图(网络图/横道图/平面布置图类)",org_chart:"框图",table:"表格",chart_text:"文字结合图表"};return b.bodyTableForbidden?["【本章必须落实的呈现要求(招标明文规定呈现形态,正文禁表口径)】",...a.map(a=>`- 招标要求以「${c[a.form]}」呈现「${a.element}」:招标正文禁表(显式禁表句),不得出现任何表格/图片,须以完整文字描述${a.element}的组成与运作(图文形态由文末附表区承载,正文可自然指向附表)${"org_chart"===a.form?":正文须含「项目管理机构与岗位职责」专项内容——组织架构说明(层级设置、隶属关系、部门与岗位构成)及分岗位的职责分工与协作关系;严禁出现人员姓名、证书编号、身份证号等实名数据(人员实名信息属商务册职责,正文仅写岗位与职责体系)":""}`),(0,j.TP)("以上为招标明文的呈现形态要求:正文以文字完整承载内容,禁止任何图表实体与内部话术(如“由编制人绘制”)")].join("\n"):["【本章必须落实的呈现要求(招标明文规定呈现形态,缺失即评标失分)】",...a.map(a=>{var b;return`- 须以「${c[a.form]}」呈现「${a.element}」(呈现形态与要素均来自招标明文,不得省略)${"diagram"===(b=a.form)?":必须以 Markdown 数据表(表头字段 + 数据行,数据取自资料,禁止编造)或等价的结构化文字框图/表格式时间轴承载全部内容要点(≥3 行要点),内容结束处另起一行输出规范图题行(格式「图 X-X 图名」,X-X 为章序号与本章图序号,图名即要素名),图题行独立成行、不附加任何说明文字;**只输出图题行而无数据表/框图内容视为该项未落实**":"org_chart"===b?":正文须含「项目管理机构与岗位职责」专项内容——组织架构说明(层级设置、隶属关系、部门与岗位构成)+ 文字框图承载(列出全部岗位与层级关系)+ 岗位责任矩阵(各岗位职责、分工与协作关系);严禁出现人员姓名、证书编号、身份证号等实名数据(人员实名信息属商务册职责,正文仅写岗位与职责体系)":"table"===b?":以 Markdown 表格输出,表头字段按要素构成设置并覆盖全部构成项":""}`}),b.bodyFigureForbidden?(0,j.TP)("以上为招标明文的呈现形态要求:对应表格/框图必须在本章正文落实(内容使用资料事实,禁止编造);招标要求正文不得出现图片,图类以文字框图/表格式时间轴与图题行承载,禁止插入图片或图件占位"):(0,j.TP)("以上为招标明文的呈现形态要求:对应图/表/框图必须在本章正文落实,内容使用资料事实,禁止编造")].join("\n")}let ah={type:"object",required:["results"],properties:{results:{type:"array",required:!0,minItems:1,items:{type:"object",required:!0,properties:{index:{type:"number",required:!0},chapter:{type:"string",required:!0,maxLength:60}}}}}},ai=[(0,m.y4)("你是招标要求章责分配器。"),'输入是语义路由置信度偏低的技术标要求条目与本文档全部章节标题列表。\n为每条要求裁决其唯一主责章节(写该章节正文时必须响应此要求),逐条必出结果(不得遗漏序号)。\n\n- chapter:从章节标题列表中选择内容最匹配的一项,必须与列表原文逐字一致\n- chapter 填 "none":该条不是可写入技术标正文的实质要求(无问题上下文的残片/客套答复/程序性说明),或没有任何章节能承载其内容\n\n输出 JSON:{ "results": [ { "index": 0, "chapter": "章节标题或none" } ] },只返回 JSON。'].join("\n");async function aj(a,b,c={}){let d=[`章节标题列表:
|
|
165
165
|
${b.map((a,b)=>`${b+1}. ${a}`).join("\n")}`,"",a.map((a,b)=>`【要求 ${b}】${a.entry.text}`).join("\n\n")].join("\n"),e=await (0,g.bb)(ai,d,{maxTokens:4e3,temperature:0,signal:c.signal,diagnostics:c.diagnostics,schema:ah,taskKind:"structuredGeneration"}),f=new Map;for(let b of e?.results||[]){if("number"!=typeof b.index||!Number.isInteger(b.index)||b.index<0||b.index>=a.length||"string"!=typeof b.chapter)continue;let c=b.chapter.trim();c&&f.set(b.index,c)}return f}async function ak(a,b,c,d={}){let e=function(a,b,c){let d=[];if(0===a.length||0===b.length)return{assignments:d,lowConfidenceCount:0};let e=b.map(a=>s(a.title)).filter(Boolean);if(0===e.length)return{assignments:d,lowConfidenceCount:0};let f=0;for(let b of a){let a=ad(b),g="",h=0;for(let b of e){let d=c(a,b);d>h&&(h=d,g=b)}g||(g=e[0]);let i=h<.45;i&&(f+=1),d.push({entry:b,chapterTitle:g,score:h,lowConfidence:i})}return{assignments:d,lowConfidenceCount:f}}(a,b,c),f=b.map(a=>s(a.title)).filter(Boolean),g=e.assignments.map((a,b)=>a.lowConfidence?b:-1).filter(a=>a>=0);if(0===g.length||0===f.length||d.signal?.aborted)return{assignments:e.assignments,dropped:[],lowConfidenceCount:e.lowConfidenceCount};let h=[];for(let a=0;a<g.length;a+=40)h.push(g.slice(a,a+40));let i=await J(h,3,a=>aj(a.map(a=>e.assignments[a]),f,d)),j=new Map;i.forEach((a,b)=>{for(let[c,d]of a){let a=h[b][c];void 0!==a&&j.set(a,d)}});let k=new Set(f),l=[],m=[],n=0;return e.assignments.forEach((a,b)=>{if(!a.lowConfidence)return void l.push(a);let c=j.get(b);if(!c){l.push(a),n+=1;return}return/^(?:none|无)$/iu.test(c)?void m.push(a.entry):k.has(c)?void l.push({...a,chapterTitle:c,lowConfidence:!1}):void(l.push(a),n+=1)}),{assignments:l,dropped:m,lowConfidenceCount:n}}function al(a,b){let c=e.join((0,h.Gl)(a),"assets");d.mkdirSync(c,{recursive:!0});let f=e.join(c,"requirement-assignments.json");return d.writeFileSync(f,JSON.stringify({createdAt:new Date().toISOString(),total:b.length,assignments:b},null,2),"utf8"),f}let am=.35;function an(a){return`${a.element} ${a.sourceText}`.slice(0,120)}function ao(a,b,c){let d=[],e=[],f=b.map(a=>s(a.title)).filter(Boolean);for(let b of a){let a=an(b),g="",h=0;for(let b of f){let d=c(a,b);d>h&&(h=d,g=b)}let i={requirement:b,chapterTitle:g,score:h,lowConfidence:h<am};if(!g||i.lowConfidence){e.push(i);continue}d.push(i)}return{assignments:d,unattached:e}}function ap(a,b,c){let f=e.join((0,h.Gl)(a),"assets");d.mkdirSync(f,{recursive:!0});let g=e.join(f,"structure-assignments.json");return d.writeFileSync(g,JSON.stringify({createdAt:new Date().toISOString(),attached:b.length,unattached:c.length,assignments:b,unattachedItems:c},null,2),"utf8"),g}let aq={type:"object",required:["results"],properties:{results:{type:"array",required:!0,minItems:1,items:{type:"object",required:!0,properties:{index:{type:"number",required:!0},alternative:{type:"boolean",required:!0}}}}}};async function ar(a,b={}){let c=a.filter(a=>a.text.trim());if(0===c.length)return new Map;let d=[];for(let a=0;a<c.length;a+=40)d.push(c.slice(a,a+40));let e=await J(d,3,a=>as(a,b)),f=new Map;return e.forEach((a,b)=>{a.forEach((a,c)=>{f.set(40*b+c,a)})}),new Map(c.map((a,b)=>[b,f.get(b)??!1]))}async function as(a,b={}){let c=await (0,g.bb)([(0,m.y4)("你是招标要求条款锚点关系判定器。"),'对每条条款判定其锚点之间的关系:\n- alternative=true:条款锚点为"或/及/任选其一"关系(如"省级或国家级奖项""A、B、C任选"),满足任一锚点即算完整响应\n- alternative=false:条款锚点必须全部满足(并列承诺、金额与奖项共存条款),缺任一锚点即部分响应\n只输出 JSON,不得输出其他内容。'].join("\n"),a.map((a,b)=>`${b+1}. 条款:${a.text}
|
|
166
|
-
未命中锚点:${a.missingAnchors.join("、")||"(无)"}`).join("\n"),{maxTokens:1e3,temperature:0,signal:b.signal,diagnostics:b.diagnostics,schema:aq,taskKind:"structuredGeneration"});if(!c?.results?.length)return a.map(()=>!1);let d=new Map;for(let a of c.results)"number"==typeof a.index&&d.set(a.index,!0===a.alternative);return a.map((a,b)=>d.get(b)??!1)}function at(a){return a.replace(/%/gu,"%")}function au(a){return a.replace(/[「」『』“”"'`《》]/gu,"").replace(/[、,,]/gu,"").replace(/[的为]/gu,"").replace(/([^)]*)|\([^)]*\)/gu,"")}function av(a,b){let c=au(a);return!(c.length<2)&&!(2*c.length<a.length)&&b.includes(c)}function aw(a,b){let c=at(a.text.replace(/\s+/gu,"")),d=new Set;for(let b of a.coreTerms){let a=at(b.replace(/\s+/gu,""));if(a.length<2||Q(a))continue;let c=a.match(/^(.*?)(\d+(?:\.\d+)?(?:%|%)?)$/u);if(c&&c[1].length>=2){d.add(c[1]),d.add(c[2]);continue}d.add(a)}if(!b?.skipNumericAnchors)for(let a of c.matchAll(/(?:\d+(?:\.\d+)?\s*(?:%|%|天|日|万元|亿元|元|米|m|M|mm|毫米|层|年|个|月|周|小时|分钟|项|处|台|套|辆|人|家|次|遍|道|吨|kPa|MPa))/giu)){let b=at(a[0].replace(/\s+/gu,""));/^\d+\.\d+项$/u.test(b)||d.add(b)}for(let a of c.matchAll(/[\u4e00-\u9fa5]{2,6}[杯奖星]/gu)){let b=function(a){let b=a;for(;;){let a=b.replace(/^(?:争创|争取|力争|争获|确保|获得|创建|力创|评为|荣获|标为|目标为|承诺|为)/u,"");if(a===b||!a)break;b=a}return b}(a[0]);/^[\u4e00-\u9fa5]{2,7}$/u.test(b)&&d.add(b)}return[...d]}function ax(a,b,c,d){let e=aw(a,d),f=[],g=[];for(let a of e)(!function(a,b,c){if(b.includes(a)||av(a,c))return!0;let d=a.match(/(\d+(?:\.\d+)?)\s*[-–—~~至]\s*(\d+(?:\.\d+)?)/u);return!!d&&b.includes(d[1])&&b.includes(d[2])}(a,b,c)?g:f).push(a);return{total:e.length,hit:f,missing:g}}function ay(a,b,c){let d=at(a).replace(/([^)]*)|\([^)]*\)/gu,""),e=d.split(/[,。;、,;\n]/u).map(a=>a.replace(/[「」“”"'`\s]/gu,"").trim()).filter(a=>a.length>=6);if(0===e.length){let a=d.replace(/[「」“”"'`\s]/gu,"").trim();if(a.length>=6)return{total:1,missing:b.includes(a)||av(a,c)?[]:[a]}}let f=e.filter(a=>!b.includes(a)&&!av(a,c));return{total:e.length,missing:f}}function az(a){return a.replace(/[☑☐☒√✓✔■●◼⊠]\s*/gu,"").replace(/(?<![\d])\s*[×✗]\s*(?![\d])/gu,"").replace(/^\s*(?:[((]\s*\d{1,3}\s*[))]|(?:\d{1,3}(?:\.\d{1,3}){0,3})[.、,,](?=[\u4e00-\u9fff((])|(?:[一二三四五六七八九十]{1,3})[、.,,](?=[\u4e00-\u9fff((]))/u,"").replace(/投标人本单位|承包人本单位/gu,"本公司").replace(/本招标项目/gu,"本项目").replace(/(?:承包人|发包人)认为视同/gu,"视为").replace(/承包人|投标人|施工单位|承包方|中标人|承包单位|投标单位/gu,"我方")}function aA(a,b,c){let d=ax(a,b,c);if(d.total>0&&0===d.missing.length)return!0;let e=ay(a.text,b,c);if(e.total>0&&0===e.missing.length)return!0;let f=ay(az(a.text),b,c);return!!(f.total>0)&&0===f.missing.length}function aB(a,b){let c=at(b.replace(/\s+/gu,"")),d=au(c);return a.map(a=>{let b=ax(a,c,d);return{entry:a,hit:b.hit,missing:b.missing,satisfied:aA(a,c,d)}})}function aC(a){return!V.test(a)&&U.test(a)}async function aD(a){let b=[];if(0===a.entries.length)return b;let c=a.markdown,d=at(c.replace(/\s+/gu,"")),e=au(d),f=[/100%围挡|周边100%围挡/u,/物料堆放100%覆盖|物料堆放.{0,8}覆盖|密目网.*覆盖|覆盖.{0,4}密目网/u,/出入车辆100%冲洗|车辆.{0,10}冲洗|冲洗.{0,10}车辆|冲洗点/u,/施工现场地面100%硬化|地面100%硬化/u,/拆迁工地100%湿法作业|拆迁.{0,10}湿法作业|湿法作业.{0,10}拆迁|无拆迁|不涉及拆迁/u,/渣土车辆100%密闭运输|密闭运输|密闭式/u],g=()=>f.filter(a=>a.test(c)).length,h=c.split(/\n/u).filter(a=>/^#{2,4}\s/u.test(a.trim())).map(a=>s(a)).filter(Boolean),i=a.bodyTexts&&a.bodyTexts.length>0?[...h,...a.bodyTexts]:h.length>0?h:[c.slice(0,2e3)],k=[];for(let c of a.entries){let f=c.category;if("comply"===c.policy||/六个百分百|扬尘治理/u.test(c.text)&&g()>=4)continue;let h=ad(c),l=0;for(let b of i){let c=a.semanticSimilarity(h,b);c>l&&(l=c)}if(l>=.6){if(aA(c,d,e))continue;let a=ax(c,d,e);a.total>0&&k.push({item:c,kind:f,bestSimilarity:l,hit:a.hit,missing:a.missing});continue}if(aA(c,d,e))continue;let m=ax(c,d,e);if(m.hit.length>0){k.push({item:c,kind:f,bestSimilarity:l,hit:m.hit,missing:m.missing});continue}b.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:`招标要求未响应:${f}“${c.text}”在正文中零命中(最佳语义相似度 ${l.toFixed(2)})`,suggestion:`招标文件明确要求的${f}必须显性响应:在对应章节以投标人口吻补写“${c.text}”对应内容及配套保证措施(不得使用“按招标文件要求:”条幅前缀)。`,provenance:{detectorId:"requirements-coverage",fingerprint:(0,j.c6)(c.text)}})}if(k.length>0){let c=await ar(k.map(a=>({text:a.item.text,missingAnchors:a.missing})),{signal:a.signal,diagnostics:a.diagnostics});for(let[a,d]of k.entries()){if(c.get(a))continue;let e=d.hit.length>0?`已命中“${d.hit.join("、")}”,`:"";b.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:`招标要求部分响应:${d.kind}“${d.item.text}”${e}但缺少“${d.missing.join("、")}”(最佳语义相似度 ${d.bestSimilarity.toFixed(2)})`,suggestion:`条款内全部关键数据与奖项必须逐项显性响应:在对应章节补写“${d.missing.join("、")}”对应内容(缺一即部分响应)。`,provenance:{detectorId:"requirements-coverage",fingerprint:(0,j.c6)(d.item.text)}})}}return b}function aE(a){let b=a.split(/\r?\n/u),c=[],d=0,e=[];for(let a=0;a<b.length;a+=1){let f=b[a],g=f.trim();if(!g||/^#{1,6}\s/u.test(g)||/^\s*\|/u.test(f)){c.push(f);continue}let h=f,i=/^(\s*)按招标文件(?:要求|约定):\s*(.+)$/u.exec(h);if(i&&(h=`${i[1]}${az(i[2])}`),(h=(h=h.replace(/本施工组织设计已按上述条款要求逐项落实执行。?/gu,"")).replace(/按招标文件约定/gu,"按招标要求").replace(/按招标文件要求/gu,"按招标要求").replace(/按招标文件规定/gu,"按招标要求").replace(/按上述条款要求|按上述条款|按上述要求/gu,"按招标要求").replace(/按上述时限/gu,"按约定时限").replace(/本招标项目/gu,"本项目"))!==f&&(d+=1,e.length<6&&e.push(g.slice(0,24))),!h.trim()){a+1<b.length&&!b[a+1].trim()&&c.length>0&&!c[c.length-1].trim()&&(a+=1);continue}c.push(h)}return{markdown:c.join("\n"),fixedCount:d,details:e}}function aF(a){let b=(0,f.rA)(a),c=(a=
|
|
166
|
+
未命中锚点:${a.missingAnchors.join("、")||"(无)"}`).join("\n"),{maxTokens:1e3,temperature:0,signal:b.signal,diagnostics:b.diagnostics,schema:aq,taskKind:"structuredGeneration"});if(!c?.results?.length)return a.map(()=>!1);let d=new Map;for(let a of c.results)"number"==typeof a.index&&d.set(a.index,!0===a.alternative);return a.map((a,b)=>d.get(b)??!1)}function at(a){return a.replace(/%/gu,"%")}function au(a){return a.replace(/[「」『』“”"'`《》]/gu,"").replace(/[、,,]/gu,"").replace(/[的为]/gu,"").replace(/([^)]*)|\([^)]*\)/gu,"")}function av(a,b){let c=au(a);return!(c.length<2)&&!(2*c.length<a.length)&&b.includes(c)}function aw(a,b){let c=at(a.text.replace(/\s+/gu,"")),d=new Set;for(let b of a.coreTerms){let a=at(b.replace(/\s+/gu,""));if(a.length<2||Q(a))continue;let c=a.match(/^(.*?)(\d+(?:\.\d+)?(?:%|%)?)$/u);if(c&&c[1].length>=2){d.add(c[1]),d.add(c[2]);continue}d.add(a)}if(!b?.skipNumericAnchors)for(let a of c.matchAll(/(?:\d+(?:\.\d+)?\s*(?:%|%|天|日|万元|亿元|元|米|m|M|mm|毫米|层|年|个|月|周|小时|分钟|项|处|台|套|辆|人|家|次|遍|道|吨|kPa|MPa))/giu)){let b=at(a[0].replace(/\s+/gu,""));/^\d+\.\d+项$/u.test(b)||d.add(b)}for(let a of c.matchAll(/[\u4e00-\u9fa5]{2,6}[杯奖星]/gu)){let b=function(a){let b=a;for(;;){let a=b.replace(/^(?:争创|争取|力争|争获|确保|获得|创建|力创|评为|荣获|标为|目标为|承诺|为)/u,"");if(a===b||!a)break;b=a}return b}(a[0]);/^[\u4e00-\u9fa5]{2,7}$/u.test(b)&&d.add(b)}return[...d]}function ax(a,b,c,d){let e=aw(a,d),f=[],g=[];for(let a of e)(!function(a,b,c){if(b.includes(a)||av(a,c))return!0;let d=a.match(/(\d+(?:\.\d+)?)\s*[-–—~~至]\s*(\d+(?:\.\d+)?)/u);return!!d&&b.includes(d[1])&&b.includes(d[2])}(a,b,c)?g:f).push(a);return{total:e.length,hit:f,missing:g}}function ay(a,b,c){let d=at(a).replace(/([^)]*)|\([^)]*\)/gu,""),e=d.split(/[,。;、,;\n]/u).map(a=>a.replace(/[「」“”"'`\s]/gu,"").trim()).filter(a=>a.length>=6);if(0===e.length){let a=d.replace(/[「」“”"'`\s]/gu,"").trim();if(a.length>=6)return{total:1,missing:b.includes(a)||av(a,c)?[]:[a]}}let f=e.filter(a=>!b.includes(a)&&!av(a,c));return{total:e.length,missing:f}}function az(a){return a.replace(/[☑☐☒√✓✔■●◼⊠]\s*/gu,"").replace(/(?<![\d])\s*[×✗]\s*(?![\d])/gu,"").replace(/^\s*(?:[((]\s*\d{1,3}\s*[))]|(?:\d{1,3}(?:\.\d{1,3}){0,3})[.、,,](?=[\u4e00-\u9fff((])|(?:[一二三四五六七八九十]{1,3})[、.,,](?=[\u4e00-\u9fff((]))/u,"").replace(/投标人本单位|承包人本单位/gu,"本公司").replace(/本招标项目/gu,"本项目").replace(/(?:承包人|发包人)认为视同/gu,"视为").replace(/承包人|投标人|施工单位|承包方|中标人|承包单位|投标单位/gu,"我方")}function aA(a,b,c){let d=ax(a,b,c);if(d.total>0&&0===d.missing.length)return!0;let e=ay(a.text,b,c);if(e.total>0&&0===e.missing.length)return!0;let f=ay(az(a.text),b,c);return!!(f.total>0)&&0===f.missing.length}function aB(a,b){let c=at(b.replace(/\s+/gu,"")),d=au(c);return a.map(a=>{let b=ax(a,c,d);return{entry:a,hit:b.hit,missing:b.missing,satisfied:aA(a,c,d)}})}function aC(a){return!V.test(a)&&U.test(a)}async function aD(a){let b=[];if(0===a.entries.length)return b;let c=a.markdown,d=at(c.replace(/\s+/gu,"")),e=au(d),f=[/100%围挡|周边100%围挡/u,/物料堆放100%覆盖|物料堆放.{0,8}覆盖|密目网.*覆盖|覆盖.{0,4}密目网/u,/出入车辆100%冲洗|车辆.{0,10}冲洗|冲洗.{0,10}车辆|冲洗点/u,/施工现场地面100%硬化|地面100%硬化/u,/拆迁工地100%湿法作业|拆迁.{0,10}湿法作业|湿法作业.{0,10}拆迁|无拆迁|不涉及拆迁/u,/渣土车辆100%密闭运输|密闭运输|密闭式/u],g=()=>f.filter(a=>a.test(c)).length,h=c.split(/\n/u).filter(a=>/^#{2,4}\s/u.test(a.trim())).map(a=>s(a)).filter(Boolean),i=a.bodyTexts&&a.bodyTexts.length>0?[...h,...a.bodyTexts]:h.length>0?h:[c.slice(0,2e3)],k=[];for(let c of a.entries){let f=c.category;if("comply"===c.policy||/六个百分百|扬尘治理/u.test(c.text)&&g()>=4)continue;let h=ad(c),l=0;for(let b of i){let c=a.semanticSimilarity(h,b);c>l&&(l=c)}if(l>=.6){if(aA(c,d,e))continue;let a=ax(c,d,e);a.total>0&&k.push({item:c,kind:f,bestSimilarity:l,hit:a.hit,missing:a.missing});continue}if(aA(c,d,e))continue;let m=ax(c,d,e);if(m.hit.length>0){k.push({item:c,kind:f,bestSimilarity:l,hit:m.hit,missing:m.missing});continue}b.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:`招标要求未响应:${f}“${c.text}”在正文中零命中(最佳语义相似度 ${l.toFixed(2)})`,suggestion:`招标文件明确要求的${f}必须显性响应:在对应章节以投标人口吻补写“${c.text}”对应内容及配套保证措施(不得使用“按招标文件要求:”条幅前缀)。`,provenance:{detectorId:"requirements-coverage",fingerprint:(0,j.c6)(c.text)}})}if(k.length>0){let c=await ar(k.map(a=>({text:a.item.text,missingAnchors:a.missing})),{signal:a.signal,diagnostics:a.diagnostics});for(let[a,d]of k.entries()){if(c.get(a))continue;let e=d.hit.length>0?`已命中“${d.hit.join("、")}”,`:"";b.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:`招标要求部分响应:${d.kind}“${d.item.text}”${e}但缺少“${d.missing.join("、")}”(最佳语义相似度 ${d.bestSimilarity.toFixed(2)})`,suggestion:`条款内全部关键数据与奖项必须逐项显性响应:在对应章节补写“${d.missing.join("、")}”对应内容(缺一即部分响应)。`,provenance:{detectorId:"requirements-coverage",fingerprint:(0,j.c6)(d.item.text)}})}}return b}function aE(a){let b=a.split(/\r?\n/u),c=[],d=0,e=[];for(let a=0;a<b.length;a+=1){let f=b[a],g=f.trim();if(!g||/^#{1,6}\s/u.test(g)||/^\s*\|/u.test(f)){c.push(f);continue}let h=f,i=/^(\s*)按招标文件(?:要求|约定):\s*(.+)$/u.exec(h);if(i&&(h=`${i[1]}${az(i[2])}`),(h=(h=h.replace(/本施工组织设计已按上述条款要求逐项落实执行。?/gu,"")).replace(/按招标文件约定/gu,"按招标要求").replace(/按招标文件要求/gu,"按招标要求").replace(/按招标文件规定/gu,"按招标要求").replace(/按上述条款要求|按上述条款|按上述要求/gu,"按招标要求").replace(/按上述时限/gu,"按约定时限").replace(/本招标项目/gu,"本项目"))!==f&&(d+=1,e.length<6&&e.push(g.slice(0,24))),!h.trim()){a+1<b.length&&!b[a+1].trim()&&c.length>0&&!c[c.length-1].trim()&&(a+=1);continue}c.push(h)}return{markdown:c.join("\n"),fixedCount:d,details:e}}function aF(a){let b=(0,f.rA)(a),c=(0,f.vG)(b.text),d=(a=c.text).split(/\r?\n/u),e=[],g=0,h=[];for(let a=0;a<d.length;a+=1){let b=d[a];if(!(0,f.Nf)(b)){e.push(b);continue}g+=1,h.length<6&&h.push(b.trim().slice(0,24)),a+1<d.length&&!d[a+1].trim()&&e.length>0&&!e[e.length-1].trim()&&(a+=1)}let i=b.removed+c.removed;return{markdown:e.join("\n"),fixedCount:g+i,details:i>0?[...h,`句中资料残片 ${i} 处`].slice(0,6):h}}function aG(a){let b=a.split(/\r?\n/u),c=new Set,d=[],e=0,f=[];for(let a=0;a<b.length;a+=1){let g=b[a],h=g.trim();if(!h||/^#{1,6}\s/u.test(h)||/^\s*\|/u.test(g)){d.push(g);continue}let i=h.replace(/\s+/gu,"");if(!(i.length>=40&&(/我方/u.test(i)||/本工程/u.test(i)))){d.push(g);continue}if(c.has(i)){for(;a+1<b.length&&!b[a+1].trim();)a+=1;e+=1,f.length<6&&f.push(h.slice(0,24));continue}c.add(i),d.push(g)}return{markdown:d.join("\n"),fixedCount:e,details:f}}},64753:(a,b,c)=>{c.d(b,{Iu:()=>j,Mz:()=>o,UG:()=>n,hW:()=>q,jX:()=>i,t7:()=>m,xs:()=>p});var d=c(19898),e=c(70933),f=c(1218),g=c(22157),h=c(87635);async function i(a){let b=[],c=new Set(a.scopedFilePaths),e=await Promise.all(h.xs.map(async b=>((0,g.Te)(a.signal),(await a.manager.search(a.projectRoot,b,{scope:"project",filters:{filePaths:a.scopedFilePaths,materialRoots:a.scopedMaterialRoots??(0,d.materialRootsOfFiles)(a.scopedFilePaths)},limit:10,weights:{keyword:.65,vector:.25,rewrite:.8,hybridBonus:.2},generationMode:!0,disableReranker:!0})).results.filter(a=>c.has(a.filePath)&&(0,h.qq)(`${a.sectionTitle||""}
|
|
167
167
|
${a.content}`)>0).map(b=>({chapterId:"project-basic",filePath:b.filePath,score:Math.max(b.score,1)+(0,h.qq)(`${b.sectionTitle||""}
|
|
168
168
|
${b.content}`),content:b.content,roleId:a.fileRoleByPath.get(b.filePath),processingType:a.fileProcessingByPath.get(b.filePath),sectionTitle:b.sectionTitle,source:"pinned-evidence"})))));for(let c of(b.push(...e.flat()),a.scopedFilePaths)){(0,g.Te)(a.signal);let d=a.project.getFileDetail?.(c);if(d?.chunks?.length)for(let e of d.chunks){let f=`${e.sectionTitle||""}
|
|
169
169
|
${e.content||""}`,g=(0,h.qq)(f);if(g<=0)continue;let i=d.file?.relativePath||c;b.push({chapterId:"project-basic",filePath:i,score:1+g,content:e.content,roleId:a.fileRoleByPath.get(i),processingType:a.fileProcessingByPath.get(i),sectionTitle:e.sectionTitle,source:"pinned-evidence"})}}let i=new Set;return b.sort((a,b)=>b.score-a.score).filter(a=>{let b=`${a.filePath}|${a.sectionTitle||""}|${(0,f.de)(a.content).slice(0,180)}`;return!i.has(b)&&(i.add(b),!0)})}function j(a){return/概况|项目|工程|地点|规模|工期|质量|估算/u.test(a)?{keyword:.65,vector:.25,rewrite:.8,hybridBonus:.2}:/人|材|机|资源|材料|设备|机械|劳动力/u.test(a)?{keyword:.55,vector:.35,rewrite:.75,hybridBonus:.18}:/危大|安全|文明|风险/u.test(a)?{keyword:.5,vector:.4,rewrite:.8,hybridBonus:.2}:{keyword:.4,vector:.45,rewrite:.75,hybridBonus:.15}}function k(a,b){let c=`${a.title} ${(a.sections||[]).join(" ")} ${a.requiredFacts.join(" ")}`;return"reference"===b?.55:"table"===b?/清单|工程量|数量|材料|设备|资源|费用|造价|范围|统计|表/u.test(c)?1.45:.95:"rule"===b?/要求|规则|招标|评审|响应|质量|安全|验收|标准|工期|进度|风险|约束/u.test(c)?1.35:.95:"drawing"===b?/图纸|设计|布置|位置|平面|剖面|立面|空间|施工方法|做法/u.test(c)?1.35:.85:"specification"===b&&/技术|规范|标准|参数|做法|质量|验收|施工方法/u.test(c)?1.3:1}function l(a,b){let c=`${b.sectionTitle||""}
|
|
170
170
|
${b.filePath}
|
|
171
|
-
${b.content}`;return Math.min(1.8,.16*[...new Set([a.title,...a.sections||[],...a.requiredFacts].flatMap(a=>a.split(/[\s、,,。;;::()()《》【】-]+/u)).map(a=>a.trim()).filter(a=>a.length>=2).slice(0,36))].filter(a=>c.includes(a)).length)}function m(a){return`${a.sectionTitle||""}${a.content}`.slice(0,600)}function n(a,b,c,d){let f=b.map(b=>{let d=(0,e.A1)(b,a.requiredFacts)*k(a,b.processingType)+l(a,b),f=c.semantic?c.semantic.similarity(c.semantic.queryText,m(b)):0;return{...b,score:.5*d+10*f}});return(0,e.QR)(f,c,d)}function o(a,b,c){if(c<=0||b.length<=c)return b;let d=b.map(b=>({item:b,lexical:(0,e.A1)(b,a.requiredFacts)*k(a,b.processingType)+l(a,b)}));return d.sort((a,b)=>b.lexical-a.lexical),d.slice(0,c).map(a=>a.item)}function p(a,b,c){let d=(a.sections||[]).slice(0,10).join(" "),e=a.requiredFacts.slice(0,10).join(" "),f=a.title.split(/[、,,与和及]+/u).map(a=>a.trim()).filter(a=>a.length>=4);return[...new Set([...f.length>=2?[`${a.title} ${d} ${e}`.trim(),...f.map(b=>`${b} ${(a.sections||[]).slice(0,6).join(" ")}`.trim()),`${f.slice(0,3).join(" ")} ${e}`.trim()]:[`${a.title} ${d} ${e}`.trim()],...b,...c].filter(Boolean))]}async function q(a){if((0,g.Te)(a.signal),0===a.scopedFilePaths.length)return[];let b=`${a.chapter.title} ${a.sectionTitle}`.trim(),c=await a.manager.search(a.projectRoot,b,{scope:"project",filters:{filePaths:a.scopedFilePaths,materialRoots:a.scopedMaterialRoots??(0,d.materialRootsOfFiles)(a.scopedFilePaths)},limit:20,weights:j(b),generationMode:!0});return(0,e.QR)(c.results.map(b=>({chapterId:a.chapter.id,filePath:b.filePath,score:b.score+1.2,content:b.content,roleId:a.fileRoleByPath.get(b.filePath),processingType:a.fileProcessingByPath.get(b.filePath),sectionTitle:b.sectionTitle,source:"section-evidence"})),{preservePinned:!0})}},65667:(a,b,c)=>{c.d(b,{AK:()=>s,Rh:()=>u,Ti:()=>y,_H:()=>x,j4:()=>r,re:()=>w,tx:()=>t});let d=/^(?:为|达|共|约|计|配置|共计|总计|合计)$/u,e=/作业人员|施工人员|人员配置|班组|施工组|每村|分组|编组|编入|队伍/u,f=/^(?:为|达|共|约|计|配置|共计|总计|合计|投入|配备|启用)$/u,g=/^[))、::,,\s]{0,2}(?:混凝土|砼)?\s*(\d+(?:\.\d+)?)\s*(m3|m³|立方米|方|m2|m²|㎡|平方米|延长米|米|m|kg|千克|公斤|t|吨|套|个|块|根|只|组|件|片|樘|扇|盏|座|台|处|项|条|副|对|株)(?![A-Za-z0-9²³])/u,h=/^([^0-9]{0,2}?)(\d+(?:\.\d+)?)\s*人/u,i=/^([^0-9]{0,2}?)(\d+(?:\.\d+)?)\s*台/u,j=/阶段[^。;\n]{0,30}?(\d+(?:\.\d+)?)\s*人/u,k="机|吊|泵|车|夯",l=/[为配置备启投拟需计划增租赁购采设进出按据由从向对把被使等该此其每各和与及或在是将宜并可未非不另又还有部现中套余的用入要场阶段]/u,m=/^(?:[台辆部具个组米吨座])/u,n=/^(?:主力|主要|常用|配套|相关|专用|通用|各类|多种|其余|剩余|上述|前者|后者)/u,o=/(?:备用|租赁|租用)/u,p=/不使用|不采用|不配置|无需|未采用|不得使用|禁止使用/u,q=RegExp(`([\\p{Script=Han}A-Za-z0-9]{2,8}(?:${k}))$`,"u");function r(a){let b=a.replace(/\s+/gu,""),c=b;for(let a=b.length-1;a>=0;a-=1)if(l.test(b[a])){if(o.test(b.slice(0,a+1)))return;c=b.slice(a+1);break}if(!(c.length<2||m.test(c))&&!n.test(c))return c}function s(a){let b=[],c=RegExp(`([\\p{Script=Han}A-Za-z0-9]{2,8}(?:${k}))[^\\d。;;\\n|、,]{0,12}(\\d+)\\s*(?:台|套|辆)`,"gu");for(let d of a.matchAll(c)){let c=d.index??0,e=Math.max(a.lastIndexOf(",",c),a.lastIndexOf("。",c),a.lastIndexOf(";",c),a.lastIndexOf(";",c),a.lastIndexOf("\n",c),a.lastIndexOf("、",c));if(p.test(a.slice(e+1,c+d[1].length)))continue;let f=r(d[1]);if(!f)continue;let g=Number(d[2]);Number.isFinite(g)&&!(g<=0)&&b.push({name:f,raw:d[1],count:g,start:c,text:d[0]})}return b}function t(a){let b=new Set,c=RegExp(`([\\p{Script=Han}A-Za-z0-9]{2,8}(?:${k}))`,"gu");for(let d of a.matchAll(c)){let a=r(d[1]);a&&b.add(a)}return[...b]}function u(a){let b=q.exec(a);if(b)return r(b[1])}function v(a){let b=(a||"").replace(/\s+/gu,"");return b?/m[3³]|立方米|方/u.test(b)?"volume":/m[2²]|㎡|平方米/u.test(b)?"area":/m|米/u.test(b)?"length":/吨|千克|公斤|kg|^t$/u.test(b)?"mass":/套|个|块|根|只|组|件|片|樘|扇|盏|座|台|处|项|条|副|对|株/u.test(b)?"count":null:null}function w(a){if(!a)return;let b=(a.resources?.labor?.composition??[]).filter(a=>a.trade&&Number.isFinite(a.count)&&a.count>0).map(a=>({trade:a.trade,count:a.count})),c=new Map;for(let b of a.resources?.equipment??[]){if(!b.name)continue;let a=c.get(b.name);a?a.push(b):c.set(b.name,[b])}let d=[];for(let[a,b]of c)for(let c of b){let e=c.quantity&&c.quantity>0?c.quantity:Math.round(((c.min??1)+(c.max??c.min??1))/2);Number.isFinite(e)&&!(e<=0)&&d.push({name:a,spec:c.spec||"",count:e,variantCount:b.length})}let e=new Map;for(let b of a.materialsPlan??[]){if(!b.name)continue;let a=e.get(b.name);a?a.push(b):e.set(b.name,[b])}let f=[];for(let[a,b]of e)if(!(b.length<2))for(let c of b){if(!c.spec||!Number.isFinite(c.quantity)||(c.quantity??0)<=0)continue;let d=v(c.unit||"");d&&f.push({name:a,spec:c.spec,quantity:c.quantity,unit:c.unit||"",family:d,variantCount:b.length})}return{composition:b,equipment:d,materials:f}}function x(a,b){let c=[],k=new Set(b.composition.map(a=>a.trade)),l=(a,b)=>{let c=[];if(!b)return c;let d=0;for(;d<a.length;){let e=a.indexOf(b,d);if(-1===e)break;c.push(e),d=e+b.length}return c},m=(a,b)=>{let c=[];if(!b)return c;let d=0;for(;d<a.length;){let e=a.indexOf(b,d);if(-1===e)break;let f=a[e-1]||"",g=`${f}${b}`;if(/[\u4e00-\u9fa5]/u.test(f)&&[...k].some(a=>a.length>b.length&&a.includes(g))){d=e+b.length;continue}c.push(e),d=e+b.length}return c},n=function(a){let b=[],c=0;for(;c<=a.length;){let d=a.indexOf("\n",c),e=-1===d?a.length:d;if(b.push({start:c,end:e}),-1===d)break;c=d+1}let d=/^\s*(?:#|\||>)/u,e=[],f=0;for(;f<b.length;){let c=b[f],g=a.slice(c.start,c.end);if(""===g.trim()||d.test(g)){f+=1;continue}let h=f;for(;h+1<b.length;){let c=b[h+1],e=a.slice(c.start,c.end);if(""===e.trim()||d.test(e))break;h+=1}e.push({start:c.start,end:b[h].end}),f=h+1}return e}(a),o=[];for(let b of n){let c=a.slice(b.start,b.end);if(!c.includes("阶段"))continue;let e=[];for(let a of c.matchAll(RegExp(j.source,"gu")))e.push({start:b.start+(a.index??0),total:Number(a[1])});if(0!==e.length)for(let[c,f]of e.entries()){let g=f.start,i=e[c+1]?.start??b.end,j=a.slice(g,i),l=0;for(let a of k)for(let b of m(j,a)){let c=j.slice(b+a.length,b+a.length+12),e=h.exec(c);e&&(!e[1]||d.test(e[1]))&&(l+=Number(e[2]))}l>0&&l===f.total&&o.push({start:g,end:i})}}let p=a=>o.some(b=>a>=b.start&&a<b.end);for(let f of b.composition)for(let b of m(a,f.trade)){if(p(b))continue;let g=a.slice(0,b),i=Math.max(g.lastIndexOf("。"),g.lastIndexOf(";"),g.lastIndexOf(";"),g.lastIndexOf("\n"));if(e.test(g.slice(i+1)))continue;let j=a.slice(b+f.trade.length,b+f.trade.length+12),k=h.exec(j);if(!k||k[1]&&!d.test(k[1]))continue;let l=Number(k[2]);if(l===f.count)continue;let m=b+f.trade.length+k[1].length;c.push({kind:"trade",label:`工种构成 ${f.trade}`,start:m,end:m+k[2].length,actual:l,expected:f.count,message:`工种构成人数与蓝图权威不一致:${f.trade} 正文 ${l} 人,蓝图权威 ${f.count} 人`,suggestion:"工种构成表必须与蓝图工种构成唯一口径一致,各工种人数不得自行改写。"})}for(let d of b.equipment)if(1===d.variantCount)for(let b of l(a,d.name)){let e=a.slice(b+d.name.length,b+d.name.length+12),g=i.exec(e);if(!g||g[1]&&!f.test(g[1]))continue;let h=Number(g[2]);if(h===d.count)continue;let j=b+d.name.length+g[1].length;c.push({kind:"equipment",label:`机械台数 ${d.name}`,start:j,end:j+g[2].length,actual:h,expected:d.count,message:`机械台数与蓝图权威不一致:${d.name} 正文 ${h} 台,蓝图权威 ${d.count} 台`,suggestion:"机械投入计划必须与蓝图机械清单一致,台数不得自行改写。"})}else if(d.spec)for(let b of l(a,d.spec)){let e=a.lastIndexOf("\n",b)+1,f=a.indexOf("\n",b);-1===f&&(f=a.length);let g=a.slice(e,f),h=b-e,i=e+Math.max(g.lastIndexOf(",",h)+1,g.lastIndexOf("。",h)+1,g.lastIndexOf(";",h)+1);if(!a.slice(i,f).includes(d.name))continue;let j=b+d.spec.length,k=a.slice(j,j+12),l=/(\d+(?:\.\d+)?)\s*台/u.exec(k);if(!l)continue;let m=Number(l[1]);if(m===d.count)continue;let n=j+(l.index??0);c.push({kind:"equipment",label:`机械台数 ${d.name}(${d.spec})`,start:n,end:n+l[1].length,actual:m,expected:d.count,message:`机械台数与蓝图权威不一致:${d.name}(${d.spec}) 正文 ${m} 台,蓝图权威 ${d.count} 台`,suggestion:"机械投入计划必须与蓝图机械清单一致,台数不得自行改写。"})}for(let d of b.materials)for(let b of l(a,d.spec)){let e=a.lastIndexOf("\n",b)+1,f=a.indexOf("\n",b);-1===f&&(f=a.length);let h=a.slice(e,f);if(/^\s*\|?\s*(?:合计|小计|总计|累计)/u.test(h))continue;let i=b-e,j=e+Math.max(h.lastIndexOf(";",i),h.lastIndexOf(";",i),h.lastIndexOf("。",i))+1,k=h.indexOf(";",i),l=h.indexOf(";",i),m=h.indexOf("。",i),n=Math.min(-1===k?h.length:k,-1===l?h.length:l,-1===m?h.length:m);if(!a.slice(j,e+n).includes(d.name))continue;let o=b+d.spec.length,p=a.slice(o,o+16),q=g.exec(p);if(!q||v(q[2])!==d.family)continue;let r=Number(q[1]);if(r===d.quantity)continue;let s=o+q[0].indexOf(q[1]);c.push({kind:"material",label:`材料拆分 ${d.name}(${d.spec})`,start:s,end:s+q[1].length,actual:r,expected:d.quantity,message:`材料规格拆分数量与蓝图权威不一致:${d.name}(${d.spec})正文 ${r}${d.unit},蓝图权威 ${d.quantity}${d.unit}`,suggestion:"同名多规格材料的拆分数量必须与清单逐项一致,不得自行分配。"})}return c}function y(a,b){if(!b)return{markdown:a,fixedCount:0,details:[],residualCount:0};let c=x(a,b);if(0===c.length)return{markdown:a,fixedCount:0,details:[],residualCount:0};let d=[...c].sort((a,b)=>b.start-a.start),e=a,f=[],g=1/0;for(let a of d)a.end>g||(e=`${e.slice(0,a.start)}${a.expected}${e.slice(a.end)}`,f.push(a),g=a.start);let h=x(e,b);return h.length>0?{markdown:a,fixedCount:0,details:[],residualCount:h.length}:{markdown:e,fixedCount:f.length,details:f.map(a=>`${a.label} ${a.actual}→${a.expected}`),residualCount:0}}},71678:(a,b,c)=>{c.d(b,{Hf:()=>t,M8:()=>n,Xp:()=>r,a0:()=>m,dn:()=>s,hM:()=>l,mI:()=>v,xb:()=>q});var d=c(37047),e=c(41991),f=c(70208),g=c(30111);let h=["对与评标活动有关的工作人员的纪律要求","评标委员会成员与投标人接触的限制","评标纪律与廉洁从业承诺要求","评审争议处理与投标澄清配合程序","评审结果确认与中标公示流程","评标办法与分值构成说明","异常低价评审与计算方式说明","清单计量与报价口径约定","投标文件实质性响应要求","投标保证金缴纳与退还程序","开标程序与投标文件递交截止时间","评标期间行为管控与资料闭环","预付款与进度款支付比例约定","履约担保与保证金缴纳退还约定","价格波动与合同价款调整约定","暂列金额与暂估价使用约定","税费计取与发票结算约定","违约责任与罚款赔偿条款"],i=["劳动力配置计划与高峰期人数安排","施工质量保证措施与验收标准","安全生产管理与教育培训要求","施工进度计划与关键线路安排","材料设备采购进场计划与检验要求","施工现场文明施工与环境保护管理","劳动纪律与班组作业管理制度","施工机械设备配置与维护保养计划","农民工工资支付保障与劳务实名制管理","材料采购质量证明与进场验收管理","工期承诺与进度考核奖惩管理"],j=/评标|投标|行贿|打招呼|递条子|廉洁|串标|围标|弄虚作假|干扰评标|纪律|澄清|中标|报价|清单计量|评审|保证金|开标|递交|争议|异常低价|评标基准价|预付款|进度款|担保|价格波动|材料调差|暂列金额|暂估价|计税|税金|发票|违约|业绩证明|类似(?:工程)?业绩|获奖|荣获|协会颁发|营业执照|资质证书|安全生产许可证|认证证书|管理体系认证|审计报告|信用等级|信用评价|社保证明|无行贿犯罪|中标查询|中标公示|中标结果|电子交易系统|公共资源交易|质疑投诉|评标委员会/u;function k(a){let b=a.sectionTitle?.trim()||"",c=(a.content||"").replace(/\s+/gu," ").slice(0,400);return b?`${b}。${c}`:c}function l(a){let b=a.sectionTitle?.trim()||a.content.replace(/\s+/gu,"").slice(0,60);return`${a.filePath}::${b}`}async function m(a,b){if(0===a.length)return{safe:[],excluded:[]};let c=a.filter(a=>j.test(k(a)));if(0===c.length)return{safe:[...a],excluded:[]};let e=c.map(k),f=await (0,d.Mv)(e,[...h],b),g=await (0,d.Mv)(e,[...i],b),l=new Set;for(let a of c){let b=k(a),c=Math.max(...h.map(a=>f(b,a))),d=Math.max(...i.map(a=>g(b,a)));c>=.6&&c>d&&l.add(a)}return{safe:a.filter(a=>!l.has(a)),excluded:[...l]}}async function n(a){return(0,e.A)({prototypes:[...h],negativePrototypes:[...i],threshold:.6,embedDocuments:a})}function o(a){return a.replace(/[\s\p{P}\p{S}]+/gu,"").toLowerCase()}let p=/^(?:我公司|本公司|我方|投标人|供应商|承包人)(?:就|对)[^,。;]{0,22}(?:均属|属实|真实有效|承担|负责|无异议|为准)$/u;function q(a){let b=a.trim().replace(/\s+/gu,"");if(!b||(0,f.mq)(b)||p.test(b))return!0;let c=o(b);if(h.some(a=>o(a)===c))return!0;let d=b.replace(/农民工工资保证金|工资保证金/gu,""),e=/评标|投标|开标|中标|评审|保证金|串标|围标|廉洁|询标|递交/u.test(d),g=/纪律|监督|争议|澄清|程序|行为|管控|限制|接触|公示|承诺|响应|办法/u.test(b);return!!(e&&g||/异常低价|评标基准价/u.test(b)||/电子保函|保函|投标保证金|履约担保|履约保证金|保证金(?:的)?(?:缴纳|退还|提交|方式)/u.test(b)&&!/农民工|工资|专用账户|实名|考勤|劳资/u.test(b)||/暂列金额|暂估价|材料调差/u.test(b)||/预付款(?:支付|比例|约定|申请|保函)|进度款(?:支付|申请|计量|约定)|履约担保/u.test(b)||/价格波动(?:调整|约定)|违约金(?:条款|约定)|计税|税金(?:计取|结算)|发票(?:开具|结算)/u.test(b))||r(b)}function r(a){let b=a.trim().replace(/\s+/gu,"");if(!b)return!1;let c=b.replace(/^\d{1,3}(?:[..]\d{1,3})*[、..]?/u,"");return!!(/^具备(?:有效|相应|满足)/u.test(c)||/^(?:须|应|需|得)?提供[^,,。;]{0,12}(?:证明|材料|文件|证件|证书|报告)/u.test(c))||"technical"!==(0,g.mz)(b)||!!/营业执照|资质证书|安全生产许可证|资格预审|资格审查|资质审查|财务状况|业绩证明|业绩要求|银行资信|审计报告|信用记录|信用评价|不良行为记录|联合体投标|联合体协议/u.test(b)&&!/施工|技术|方案|措施|管理|控制|验收|工艺|流程|计划|组织|进度|质量|工期|文明|绿色|环保|节能|材料|设备|机械|人员|劳务|检验|检测|试验|保证|落实|制度/u.test(b)}function s(a){let b=a.trim().replace(/\s+/gu,"");return!!b&&(!!/接受分包/u.test(b)||!!/投标人|投标方|投标企业|承包人资格|资格要求|资格审查|资格预审|资质要求|资质条件|资质等级|资格条件|财务状况|业绩要求|业绩证明|信用要求|联合体|社保/u.test(b)&&/营业执照|资质证书|安全生产许可证|级及以上资质|注册建造师|建造师注册证书|安全生产考核合格证书|职称证书|财务状况|财务报告|审计报告|银行资信|业绩证明|类似业绩|信用记录|信用评价|不良行为记录|投标保证金|履约保证金|社保|在建工程|人员组成表/u.test(b))}function t(a){let b=a.trim().replace(/\s+/gu,"");return!!b&&!!(/你方/u.test(b)&&/我方/u.test(b)||/发包人[^。;;]{0,30}?(?:审批|批准|备案|同意|许可)/u.test(b)||/^[\d((、..\s]{0,8}监理人/u.test(b)&&/(?:提交|报送|审批|延期|通知|检查|验收)/u.test(b)||/(?:特别约定|有关约定|的约定)[::]/u.test(b)||/通用(?:合同)?条款/u.test(b)||/(?:承包人|发包人|监理人)/u.test(b)&&/(本合同|报送|提交|审批|备案|更换|违约责任|撤换|拒绝|保管|验收记录|签字|颁发|教育|穿戴|定期检查|授权范围|驻场|在岗)/u.test(b))}async function u(a){let b=a.sections.filter(a=>a?.trim());if(0===b.length)return[];let c=b.filter(a=>!q(a)),e=c.filter(a=>j.test(a));if(0===e.length)return c;let f=`${a.chapterTitle} ${a.chapterPurpose||""}`.trim(),g=await (0,d.Mv)(e,[...h],a.embedDocuments),k=await (0,d.Mv)(e,f?[f]:[],a.embedDocuments),l=await (0,d.Mv)(e,[...i],a.embedDocuments),m=new Set;for(let a of e){let b=Math.max(...h.map(b=>g(a,b))),c=f?k(a,f):0,d=Math.max(...i.map(b=>l(a,b)));b>=.6&&b>c&&b>d&&m.add(a)}return c.filter(a=>!m.has(a))}async function v(a,b){return Promise.all(a.map(async a=>({...a,sections:await u({sections:a.sections||[],chapterTitle:a.title,chapterPurpose:a.purpose,embedDocuments:b})})))}},73859:(a,b,c)=>{c.d(b,{$i:()=>f,E1:()=>j,d2:()=>i,oC:()=>g,p4:()=>d,rF:()=>h});let d={id:"default_general_document",name:"通用文档",factFields:[{id:"document_identity",name:"对象名称",aliases:["项目名称","工程名称","文档名称","任务名称","招标项目名称","建设项目名称"],category:"identity",cardinality:"single",derivationPolicy:"source_only",usagePolicy:"must_use",confidencePolicy:{minForGeneration:.75,minForValidation:.85,allowPathOnly:!1},conflictPolicy:"strict"},{id:"schedule_requirement",name:"周期要求",aliases:["计划工期","工期","周期要求","进度节点要求","开工日期","竣工日期"],category:"schedule",cardinality:"single",derivationPolicy:"source_only",usagePolicy:"must_use",confidencePolicy:{minForGeneration:.7,minForValidation:.8,allowPathOnly:!1},conflictPolicy:"strict"},{id:"quality_requirement",name:"质量要求",aliases:["质量要求","质量标准","验收要求","评价标准"],category:"quality",cardinality:"multiple",derivationPolicy:"source_only",usagePolicy:"use_if_relevant",confidencePolicy:{minForGeneration:.65,minForValidation:.75,allowPathOnly:!1},conflictPolicy:"allow_multiple"},{id:"safety_requirement",name:"安全合规要求",aliases:["安全要求","安全合规要求","风险控制要求","合规要求"],category:"safety",cardinality:"multiple",derivationPolicy:"source_only",usagePolicy:"use_if_relevant",confidencePolicy:{minForGeneration:.65,minForValidation:.75,allowPathOnly:!1},conflictPolicy:"allow_multiple"},{id:"technical_parameter",name:"技术参数",aliases:["技术参数","参数规格范围","规格","型号","尺寸","标准编号","材料设备"],category:"technical",cardinality:"multiple",derivationPolicy:"source_only",usagePolicy:"must_use",confidencePolicy:{minForGeneration:.7,minForValidation:.8,allowPathOnly:!1},conflictPolicy:"allow_multiple"},{id:"resource_plan",name:"资源配置",aliases:["劳动力","机械","检测设备","应急物资","资源配置","人员配置"],category:"resource",cardinality:"multiple",derivationPolicy:"plan_inferable",usagePolicy:"use_if_relevant",confidencePolicy:{minForGeneration:.45,minForValidation:.55,allowPathOnly:!1},conflictPolicy:"allow_multiple"},{id:"commercial_data",name:"商务数据",aliases:["报价","单价","合价","综合单价","预留金","税率","金额","利润"],category:"commercial",cardinality:"multiple",derivationPolicy:"forbidden",usagePolicy:"do_not_use",confidencePolicy:{minForGeneration:1,minForValidation:1,allowPathOnly:!1},conflictPolicy:"ignore"},{id:"rule_requirement",name:"规则要求",aliases:["规则要求","变更说明","实施范围","对象范围","结构化数据范围"],category:"compliance",cardinality:"multiple",derivationPolicy:"source_only",usagePolicy:"use_if_relevant",confidencePolicy:{minForGeneration:.6,minForValidation:.7,allowPathOnly:!1},conflictPolicy:"allow_multiple"}],forbiddenValuePatterns:[/投标报价|报价明细|单价|合价|综合单价|预留金|暂列金额|税率|增值税|利润|结算/u],diagnosticValuePatterns:[/OCR|识别错误|乱码|无法确认|疑似|不确定|绑定片段|兜底|知识库|提示词|后台|文件路径|PDF|DWG|Excel/u,/^#+\s*/u,/^见(?:招标|投标人|前附|补疑|图纸|清单|文件|资料|公告|须知)/u],lowConfidenceValuePatterns:[/无法确认|疑似|不确定|需复核|文字模糊|语义断裂|识别错误|乱码/u]},e={...d,id:"construction_organization_design",name:"施工组织设计"};function f(a,b=""){let c=`${a?.id||""} ${a?.name||""} ${a?.category||""} ${a?.description||""} ${a?.outputTitle||""} ${b}`;return/施工组织设计|施工方案|危大工程|人、材、机|安全文明施工/u.test(c)?e:d}function g(a,b){if(b)return a.factFields.find(a=>a.name===b||a.aliases.some(a=>b.includes(a)||a.includes(b)))}function h(a,b){return a.forbiddenValuePatterns.some(a=>a.test(b))}function i(a,b){return a.diagnosticValuePatterns.some(a=>a.test(b))}function j(a,b){return a.lowConfidenceValuePatterns.some(a=>a.test(b))}},75251:(a,b,c)=>{function d(a){return a.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&")}function e(a){let b=Number.parseFloat(a.replace(/[,,\s]/gu,""));return Number.isFinite(b)?b:void 0}function f(a,b){return Math.abs(a-b)<=.01+1e-6*Math.max(Math.abs(a),Math.abs(b))}function g(a,b){return!!f(a,b)||Number.isInteger(a)&&(Math.trunc(b)===a||Math.round(b)===a)}function h(a){return a.replace(/\s+/gu,"").toLowerCase()}function i(a){let b=(a||"").trim().toLowerCase();return({米:"m",m:"m",公里:"km",km:"km",千米:"km",平方米:"m2","㎡":"m2","m\xb2":"m2",m2:"m2",平方:"m2",立方米:"m3","m\xb3":"m3",m3:"m3",方:"m3",吨:"t",t:"t",千克:"kg",kg:"kg"})[b]??b}c.d(b,{As:()=>j,C4:()=>B,NN:()=>u,az:()=>J,e:()=>G,uv:()=>t});let j=/(?:每|厚度|宽度|高度|深度|长度|直径|间距|净距|坡度|标高|偏差|误差|系数|等级|龄期|温度|含水率|压实度|密度|功率|电压|照度|色温|耐火|强度|抗渗|配合比|搭接|错缝|含水|埋深|覆土|预留|预埋|伸缩|沉降|变形|垂直度|平整度|倾角|坡度|模数|螺距|壁厚|净空|层高|埋设|位置|距离|半径|周长|坡度|距地|距墙|距顶|距梁|距楼|离地|离墙)/u,k=/^(?:以上|以下|以内|左右|及[^。;;,,]{0,8}(?:以上|以下|以内|左右))/u;function l(a){let b=[],c=[],d=new Map,g=new Map,i=a.billFactLock;if(i)for(let a of i.entries){let f=Number.isFinite(a.quantity)?a.quantity:void 0;for(let g of(void 0!==f&&(b.push({name:(a.name||"").trim(),value:f,unit:(a.unit||"").trim(),description:a.description||"",source:"bill"}),c.push(f)),a.specQuantityPairs||[])){let b=(g.spec||"").replace(/\s+/gu,"").toLowerCase(),f=/^([\d,,]+(?:\.\d+)?)\s*(.*)$/u.exec((g.quantity||"").trim()),h=f?e(f[1]):void 0;if(!b||void 0===h)continue;let i=d.get(b)||[];i.push({value:h,unit:(f?.[2]||"").trim(),entryName:a.name,spec:(g.spec||"").trim()}),d.set(b,i),c.push(h)}}for(let[d,e]of Object.entries(a.blueprintData?.quantities??{})){if("number"!=typeof e?.value||!Number.isFinite(e.value))continue;for(let a of(b.push({name:d.trim(),value:e.value,unit:(e.unit||"").trim(),description:"",source:"blueprint"}),c.push(e.value),e.groups??[]))c.push(a.value);let a=e.specBreakdown??[];if(a.length>=2){let b=a.reduce((a,b)=>a+b.value,0);for(let i of(g.set(d.trim(),{value:e.value,unit:(e.unit||"").trim(),specs:new Map(a.map(a=>[h(a.spec),a.value])),breakdown:a.map(a=>({spec:a.spec,value:a.value})),partitioned:f(b,e.value)}),a))c.push(i.value)}}return!function(a,b){if(!a)return;let c=a=>{if("number"==typeof a){Number.isFinite(a)&&b.push(a);return}if("string"==typeof a){for(let c of a.matchAll(/\d+(?:\.\d+)?/gu))b.push(Number.parseFloat(c[0]));return}if(Array.isArray(a))return void a.forEach(c);a&&"object"==typeof a&&Object.values(a).forEach(c)};[a.project,a.schedule,a.quality,a.safety,a.resources,a.preciseFacts,a.bills,a.drawings,a.rules,a.specifications,a.tables].forEach(c)}(a.factsModel,c),{entries:b,numberPool:c,specValues:d,aggregateSpecs:g}}let m=/(?:合计|共计|总计|总共|总量|总数|总长|全长|总长度|总数量|总面积|总重量|小计)(?:为|达|约|共|计)?\s*([\d,,]+(?:\.\d+)?)\s*(立方米|m³|m3|平方米|㎡|m²|m2|公里|千米|km|kg|吨|t|座|个|套|处|盏|棵|株|樘|扇|根|块|片|组|件|孔|间|栋|幢|户|米|m)(?![a-zA-Z0-9²³])/gu;function n(a,b,c=2){if(!a||!b)return!1;let d=Math.min(a.length,8);for(let e=d;e>=c;e-=1)for(let c=0;c+e<=a.length;c+=1)if(b.includes(a.slice(c,c+e)))return!0;return!1}function o(a,b){let c=function(a){switch(i(a)){case"m":return"(?:m|米)";case"km":return"(?:km|公里|千米)";case"m2":return"(?:m2|m\xb2|㎡|平方米)";case"m3":return"(?:m3|m\xb3|立方米)";case"t":return"(?:t|吨)";case"kg":return"(?:kg|千克)";default:return d((a||"").trim())}}(b.unit);for(let e of function(a){let b=`${a}`,c=new Set([b]),[d,e]=b.split(".");return d.length>=4&&c.add(`${d.replace(/\B(?=(\d{3})+(?!\d))/gu,",")}${e?`.${e}`:""}`),[...c]}(b.value)){let f=d(e);if(RegExp(`${f}\\s*(?:${c})|(?:${c})\\s*${f}`,"u").test(a)||b.value>=100&&RegExp(`(?<![\\d.])${f}(?![\\d])`,"u").test(a))return!0}return!1}function p(a,b,c){let d=a.filter(a=>a.name.length>=2&&n(a.name,c));if(d.length<2||d.length>24)return[];for(let a=0;a<d.length;a+=1)for(let c=a+1;c<d.length;c+=1){let e=d[a],g=d[c];if(!(e.name===g.name&&f(e.value,g.value))&&f(e.value+g.value,b))return[e,g]}return[]}function q(a,b,c,d,e){let g=new Map;for(let a of d.entries){if(!(a.value>0)||i(a.unit)!==b)continue;let c=`${a.source}\u0000${a.name}`;g.set(c,(g.get(c)||0)+a.value)}let h=[];for(let[a,b]of g)if(n(a.slice(a.indexOf("\0")+1),c)&&(h.some(a=>f(a,b))||h.push(b),h.length>=24))break;if(0===h.length)return!1;let j=b=>f(b,a)||function(a,b){let c=0,d=a.length;for(;c<d;){let e=c+d>>1;a[e]<b?c=e+1:d=e}for(let d=Math.max(0,c-1);d<=Math.min(a.length-1,c+1);d+=1)if(f(a[d],b))return!0;return!1}(e,a-b);if(h.some(a=>j(a)))return!0;for(let a=0;a<h.length;a+=1)for(let b=a+1;b<h.length;b+=1)if(j(h[a]+h[b]))return!0;return!1}function r(a,b){let c=[];if(0===b.entries.length)return c;let d=new Set,g=[...b.numberPool].sort((a,b)=>a-b);for(let h of a.matchAll(m)){let j=e(h[1]);if(void 0===j)continue;let k=i(h[2]),l=h.index??0,m=l+h[0].length,r=b.entries.filter(a=>a.value>0&&i(a.unit)===k);if(0===r.length)continue;let s=a.slice(Math.max(0,l-40),l+h[0].length+40),t=a.slice(Math.max(0,l-20),l+h[0].length),u=r.filter(a=>a.name.length>=3&&t.includes(a.name)).sort((a,b)=>b.name.length-a.name.length)[0];if(u){if(f(u.value,j)){let b=p(r,j,s);if(b.length>=2){let e=a.slice(Math.max(0,l-150),l+h[0].length+150),f=b.filter(a=>!o(e,a));if(f.length>0){let a=b.map(a=>`「${a.name}」${a.value}${a.unit}`).join(" + "),e=`合计数值应分项显式:「${u.name} ${j}${h[2]}」= ${a},但正文未展示分项(缺 ${f.map(a=>`${a.name} ${a.value}${a.unit}`).join("、")}),无法核对合计来源`;d.has(e)||(d.add(e),c.push({issue:{level:"warning",severity:"warning",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:e,suggestion:`在合计值附近补充分项明细(${a}),使合计数值可逐项核对;分项值必须取自工程量清单原文,不得改动。`},matchStart:l,matchEnd:m}))}}continue}let e=j-u.value,i=r.find(a=>a!==u&&a.name!==u.name&&f(a.value,e));if(i){let b=a.slice(Math.max(0,l-150),l+h[0].length+150);if(o(b,u)&&o(b,i))continue;let f=`合计值与权威不符:「${u.name}」清单权威 ${u.value}${h[2]};正文 ${j}${h[2]} \u2248 ${u.value} + ${i.value}(「${i.name}」)——若「${i.name}」应计入「${u.name}」合计,须在正文显式分项;若不应计入(重复计入),须改回权威值 ${u.value}${h[2]}`;d.has(f)||(d.add(f),c.push({issue:{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:f,suggestion:`核对合计口径:「${u.name}」合计为 ${u.value}${h[2]}(清单权威)。若正文需表达 ${u.value} + ${i.value},则显式写成「${u.name} ${u.value}${h[2]}、${i.name} ${i.value}${h[2]},合计 ${j}${h[2]}」;否则将合计改回 ${u.value}${h[2]}(差额 ${Math.round(1e4*e)/1e4}${h[2]} 属「${i.name}」,不得并入)。`},matchStart:l,matchEnd:m}));continue}if(q(j,k,s,b,g))continue;let n=`合计值与权威不符:「${u.name}」合计为 ${u.value}${h[2]}(清单权威),正文写 ${j}${h[2]},且差额不属任何清单条目,需核对合计口径`;d.has(n)||(d.add(n),c.push({issue:{level:"warning",severity:"warning",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:n,suggestion:`核对「${u.name}」的合计口径:若为多分项之和,请写明与权威一致的分项分解;若为单一总量,改为清单权威值 ${u.value}${u.unit||h[2]}。`},matchStart:l,matchEnd:m}));continue}let v=p(r,j,s);if(v.length>=2){let b=a.slice(Math.max(0,l-150),l+h[0].length+150),e=v.filter(a=>!o(b,a));if(e.length>0){let a=v.map(a=>`「${a.name}」${a.value}${a.unit}`).join(" + "),b=`合计数值应分项显式:正文合计 ${j}${h[2]} = ${a},但未展示分项(缺 ${e.map(a=>`${a.name} ${a.value}${a.unit}`).join("、")}),无法核对合计来源`;d.has(b)||(d.add(b),c.push({issue:{level:"warning",severity:"warning",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:b,suggestion:`在合计值附近补充分项明细(${a});分项值必须取自工程量清单原文,不得改动。`},matchStart:l,matchEnd:m}))}continue}{let a=new Map;for(let b of r)a.set(b.name,(a.get(b.name)||0)+b.value);let b=!1;for(let c of a.values())if(f(c,j)){b=!0;break}if(b)continue}if(q(j,k,s,b,g))continue;let w=r.filter(a=>n(a.name,s)),x=r.some(a=>f(a.value,j)),y=b.numberPool.some(a=>f(a,j));if(!x&&!y&&w.length>0){let a=`合计值无权威来源:正文「${h[0].trim()}」在清单事实锁与蓝图参数桶中找不到同值来源,违反无据不写`;if(d.has(a))continue;d.add(a),c.push({issue:{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:a,suggestion:"删除该合计数值或改为与清单权威一致的合计值;无权威来源的合计数不得进入交付文本。"},matchStart:l,matchEnd:m})}}return c}function s(a,b,c){let d=Math.max(0,b-60),e=a.slice(d,b),f=-1;for(let a=e.length-1;a>=0;a-=1)if(/[,、;;。!?!?\n]/u.test(e[a])){f=d+a;break}if(-1===f||b-f>40)return null;let g=/[,、;;]/u.test(a[f]),h=g?f:f+1,i=g?c:c+ +!!/[,、;;]/u.test(a[c]||"");return i<=h?null:{start:h,end:i,excerpt:a.slice(h,i).trim()}}function t(a,b){let c=l({markdown:a,...b});if(0===c.entries.length)return{markdown:a,fixedCount:0,details:[]};let d=a,e=[];for(let a=1;a<=4;a+=1){let a=[];for(let b of r(d,c)){if(!b.issue.message.startsWith("合计值无权威来源"))continue;let c=s(d,b.matchStart,b.matchEnd);c&&a.push(c)}if(0===a.length)break;let b=0,f=1/0;for(let c of[...a].sort((a,b)=>b.start-a.start))c.end>f||(d=d.slice(0,c.start)+d.slice(c.end),f=c.start,b+=1,e.push(`删除无源合计「${c.excerpt.slice(0,40)}」`));if(0===b)break}return{markdown:d,fixedCount:e.length,details:e}}function u(a,b){let c=l({markdown:a,...b});if(0===c.entries.length)return{markdown:a,fixedCount:0,details:[]};let d=a,e=[];for(let a=1;a<=4;a+=1){let a=[];for(let e of I(d,c,b.billFactLock)){if(!e.issue.message.startsWith("名称-数值绑定无源"))continue;let b=s(d,e.matchStart,e.matchEnd);b&&a.push(b)}if(0===a.length)break;let f=0,g=1/0;for(let b of[...a].sort((a,b)=>b.start-a.start))b.end>g||(d=d.slice(0,b.start)+d.slice(b.end),g=b.start,f+=1,e.push(`删除无源绑定「${b.excerpt.slice(0,40)}」`));if(0===f)break}return{markdown:d,fixedCount:e.length,details:e}}let v=/(?:DN|De|Φ|φ|Ø|dn|de)\s*\d+(?:\.\d+)?|(?<![A-Za-z0-9])[CM]\d{2,3}(?![0-9])|HRB\d+|HPB\d+|(?<![A-Za-z0-9])\d{2,4}\s*[×xX*]\s*\d{2,4}(?![0-9])|(?<![A-Za-z0-9])\d+(?:\.\d+)?\s*[kK]?[Ww](?![A-Za-z0-9])/gu,w=/运输车|搅拌车|罐车|挖掘机|挖机|装载机|压路机|摊铺机|打夯机|夯实机|洒水车|浇水车|吊车|起重机|泵车|地泵|发电机组|发电机|电焊机|空压机|水泵|提升泵|潜水泵|雾炮机|充桩|桩机|机械|设备|机具|车辆|机组/u;function x(a,b){for(let[c,d]of a.aggregateSpecs)if(d.specs.has(b))return{entryName:c,info:d}}function y(a,b){let c=[];if(0===b.specValues.size&&0===b.aggregateSpecs.size)return c;let d=new Set;for(let g of a.matchAll(v)){let i,l=h(g[0]),m=b.specValues.get(l)??[],o=x(b,l);if(0===m.length&&!o)continue;let p=(g.index??0)+g[0].length,q=a.slice(p,p+36),r=/^([^。;;\n|]{0,16}?)([\d,,]+(?:\.\d+)?)\s*(座|个|套|盏|台|根|块|樘|扇|片|组|件|孔|米|m|km|公里|平方米|m2|㎡|m²|立方米|m3|m³|吨|t|kg)(?![a-zA-Z0-9²³])/u.exec(q);if(!r||j.test(r[1])||k.test(q.slice(r[1].length+r[2].length+r[3].length))||/不大于|不超过|不得大于|不得超过/.test(r[1]))continue;let s=r[1];if(/[、,,]/u.test(s)){let a=s.split(/[、,,]/u).pop()||"";if(/[\u4e00-\u9fa5]/u.test(a)&&!/合计|小计|共计|总计|总量|用量|总长|共/u.test(a))continue}if("台"===r[3]||"套"===r[3]){let b=p+r[1].length+r[2].length+r[3].length;if(w.test(r[1])||w.test(a.slice(b,b+12)))continue}if(/总长|全长|长度|管长|延米/u.test(r[1])&&/^(?:m|米|km|公里)$/u.test(r[3]))continue;let t=e(r[2]);if(void 0===t||0===t||m.some(a=>f(a.value,t)))continue;let u=o?.info.specs.get(l);if(void 0!==u&&f(u,t))continue;let v=new Map;for(let a of m){let b=v.get(a.entryName);b?b.value+=a.value:v.set(a.entryName,{value:a.value,unit:a.unit})}let y=[...v.values()].sort((a,b)=>b.value-a.value);if(m.length>=2&&y.some(a=>f(a.value,t)))continue;if(o?.info.partitioned&&void 0!==u&&f(o.info.value,t)){let a=h(r[1]);if(![...o.info.specs.keys()].some(b=>b!==l&&a.includes(b))){let a=o.info.breakdown.map(a=>`${a.spec} ${a.value}${o.info.unit}`).join(" + "),b=`规格-数值绑定错位:「${g[0]}」处数值 ${t}${r[3]} 是「${o.entryName}」的跨规格名称合计(${a}),不属于单一规格「${g[0]}」——名称合计不得挂给单一规格,须写该规格小计 ${u}${r[3]}(确需写合计须显式分解)`;if(!d.has(b)){d.add(b);let e=p+r[1].length;c.push({issue:{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:b,suggestion:`「${g[0]}」的数量须写该规格小计 ${u}${r[3]};名称合计须显式分解为 ${a}(合计 ${o.info.value}${o.info.unit}),不得把合计值挂在单一规格名下。`},specToken:g[0],value:t,unit:r[3],valueStart:e,valueEnd:e+r[2].length,groupSumCandidates:[{value:u,unit:o.info.unit},...y.filter(a=>!f(a.value,t))]})}}continue}for(let[a,c]of b.specValues){if(a===l)continue;let b=c.find(a=>f(a.value,t));if(b){i={spec:b.spec||a,entryName:b.entryName};break}}if(!i||r[1]&&n(i.entryName,r[1]))continue;let z=`规格-数值绑定错位:正文「${g[0]} ${t}${r[3]}」中 ${t}${r[3]} 属规格「${i.spec}」(清单条目「${i.entryName}」),不属于「${g[0]}」的清单数量`;if(d.has(z))continue;d.add(z);let A=p+r[1].length;c.push({issue:{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:z,suggestion:`「${g[0]}」的数量必须引用清单中该规格条目的原值(如 ${m.map(a=>`${a.value}${a.unit}`).join("、")});「${i.spec}」的数量不得张冠李戴至「${g[0]}」。`},specToken:g[0],value:t,unit:r[3],valueStart:A,valueEnd:A+r[2].length,groupSumCandidates:y.filter(a=>!f(a.value,t))})}for(let g of a.matchAll(v)){let i=h(g[0]),k=x(b,i);if(!k?.info.partitioned)continue;let l=k.info.specs.get(i);if(void 0===l)continue;let m=g.index??0,o=a.slice(Math.max(0,m-24),m),p=/([\d,,]+(?:\.\d+)?)\s*(座|个|套|盏|台|根|块|樘|扇|片|组|件|孔|米|m|km|公里|平方米|m2|㎡|m²|立方米|m3|m³|吨|t|kg)\s*([^。;;\n|0-9²³]{0,12})$/u.exec(o);if(!p)continue;let q=p[3];if(!/[((]|为|系|采用|型号|规格|灯型|类型/u.test(q)||j.test(q))continue;let r=e(p[1]);if(void 0===r||!f(k.info.value,r)||f(l,r)||!n(k.entryName,o))continue;let s=h(a.slice(Math.max(0,m-60),m+60));if([...k.info.specs.keys()].filter(a=>s.includes(a)).length>=2)continue;let t=m-q.length-p[2].length-p[1].length,u=`${i}@${t}`;if(d.has(u))continue;d.add(u);let v=k.info.breakdown.map(a=>`${a.spec} ${a.value}${k.info.unit}`).join(" + ");c.push({issue:{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`规格-数值绑定错位:正文「…${r}${p[2]}${q}${g[0]}…」中 ${r}${p[2]} 为「${k.entryName}」的跨规格名称合计(${v}),其后紧随单一规格「${g[0]}」易被读作全部为该规格;名称合计须显式分解`,suggestion:`数量 ${r}${p[2]} 保留不动;把规格表述改为显式分解,如「${r}${p[2]}(${v})」或逐规格列写「${v}」;不得以名称合计搭配单一规格描述。`},specToken:g[0],value:r,unit:p[2],valueStart:t,valueEnd:t+p[1].length,groupSumCandidates:[]})}if(b.aggregateSpecs.size>0){let g=0;for(let i of a.split("\n")){let a=g;if(g+=i.length+1,!i.includes("|")||/^\s*\|?[\s:|-]*\|?\s*$/u.test(i))continue;let j=new Map;for(let a of i.matchAll(v)){let c=h(a[0]),d=x(b,c);if(!d?.info.partitioned)continue;let e=d.info.specs.get(c);if(void 0===e)continue;let f=j.get(d.entryName)||[];f.some(a=>a.key===c)||f.push({key:c,raw:a[0].trim(),specSum:e}),j.set(d.entryName,f)}if(1!==j.size)continue;let[k,l]=[...j.entries()][0];if(1!==l.length)continue;let m=b.aggregateSpecs.get(k);if(!m)continue;let{key:o,raw:p,specSum:q}=l[0];if(n(k,i))for(let g of i.matchAll(/\|([^|\n]*)/gu)){let h=g[1].trim(),i=/^([\d,,]+(?:\.\d+)?)\s*(?:座|个|套|盏|台|根|块|樘|扇|片|组|件|孔|米|m|km|公里|平方米|m2|㎡|m²|立方米|m3|m³|吨|t|kg)?$/u.exec(h);if(!i)continue;let j=e(i[1]);if(void 0===j||!f(m.value,j)||f(q,j)||(b.specValues.get(o)??[]).some(a=>f(a.value,j)))continue;let l=a+(g.index??0)+1+g[1].indexOf(i[1]),n=`${o}@${l}`;if(d.has(n))continue;d.add(n);let r=m.breakdown.map(a=>`${a.spec} ${a.value}${m.unit}`).join(" + ");c.push({issue:{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`规格-数值绑定错位:表格行「${p}…」的数量 ${j}${m.unit} 是「${k}」的跨规格名称合计(${r}),该行规格为「${p}」应填其小计 ${q}${m.unit}`,suggestion:`该行数量改为 ${q}${m.unit};名称合计请另立「合计」行或显式分解为 ${r}。`},specToken:p,value:j,unit:m.unit,valueStart:l,valueEnd:l+i[1].length,groupSumCandidates:[{value:q,unit:m.unit}]})}}}return c}let z={米:"m",公里:"km",平方米:"m2","㎡":"m2","m\xb2":"m2",立方米:"m3","m\xb3":"m3",吨:"t"};function A(a){return Object.prototype.hasOwnProperty.call(z,a)?z[a]:a}function B(a,b){let c=l({markdown:a,...b});if(0===c.specValues.size&&0===c.aggregateSpecs.size)return{markdown:a,fixedCount:0,details:[]};let d=a,e=[];for(let a=1;a<=8;a+=1){let a=y(d,c).filter(a=>a.groupSumCandidates.length>0);if(0===a.length)break;let b=0;for(let f of[...a].sort((a,b)=>b.valueStart-a.valueStart)){let a,g,h=f.groupSumCandidates.find(a=>A(a.unit)===A(f.unit));if(h)a=d.slice(0,f.valueStart)+`${h.value}`+d.slice(f.valueEnd),g=`「${f.specToken}」绑定数值 ${f.value}${f.unit} → 组和值 ${h.value}${f.unit}`;else{let b=f.valueStart;for(;b>0&&/\s/u.test(d[b-1]);)b-=1;let c=f.valueEnd+f.unit.length;a=d.slice(0,b)+d.slice(c),g=`「${f.specToken}」移除张冠李戴数值 ${f.value}${f.unit}(无同单位替换候选,值不属该规格)`}y(a,c).some(a=>{let b=a.valueStart-f.valueStart;return b>=-4&&b<=4})||(d=a,b+=1,e.push(g))}if(0===b)break}return{markdown:d,fixedCount:e.length,details:e}}let C=/(?:埋深|覆土(?:厚度|深度)?|管顶覆土)(?:不小于|不大于|不低于|不超过|约|为|达|控制在|一般|宜|应)?[^。;;\n|]{0,10}?([\d,,]+(?:\.\d+)?)\s*(mm|cm|米|m)(?![a-zA-Z0-9²³])/gu,D=/(?:约为|大约|约计|约|将近|近)\s*([\d,,]+(?:\.\d+)?)\s*(点|处|座|个|套|盏|棵|株|樘|扇|根|块|片|组|件|孔|间|栋|幢|户|米|公里|km|m2|㎡|m²|平方米|m3|m³|立方米|kg|吨|t|l|升|kw|w)(?![a-zA-Z0-9²³³])/giu,E=/([\d,,]+(?:\.\d+)?)\s*余\s*(点|处|座|个|套|盏|棵|株|樘|扇|根|块|片|组|件|孔|间|栋|幢|户|米|公里|km|m2|㎡|m²|平方米|m3|m³|立方米|kg|吨|t)(?![a-zA-Z0-9²³])/gu,F=/[节制合履签违公盟密租最接靠邻附距离]/u,G=/^(?:管道|工程|材料|项目|施工|工作|设备|设施|系统|区域|场地|道路|建筑|结构|基础|主体|管网|土建|安装|装饰|装修|土方|绿化|照明|给水|排水|电气|挖方|填方|回填|弃方|外运|运输|检测|试验|测量|清理|拆除|清淤|维护|养护|管理|服务|其他|以上|以下|其中|包括|采用|使用|型号|规格|数量|单位|合计|总计|长度|面积|体积|重量)$/u,H=/(木质|木|铝合金|铝|不锈钢|塑钢|塑料|塑|钢|铁|砼|混凝土|铸铁|铜|复合)(门|窗|井|灯|护栏|围栏|盖板|雨水口)/gu;function I(a,b,c){let d=[],h=new Set,l=new Set,m=new Map;if(c)for(let a of c.entries){let b=(a.name||"").trim();if(b.length<2||!Number.isFinite(a.quantity))continue;let c=`${b}\u0000${i(a.unit)}`,d=m.get(c)||{count:0,samples:[]};d.count+=1;let e=`${a.quantity}${a.unit}`;d.samples.length<3&&!d.samples.includes(e)&&d.samples.push(e),m.set(c,d)}let o=b.entries.map(a=>`${a.name} ${a.description}`).join("\n"),p=new Map;{let a=new Map;for(let c of b.entries){if(!(c.value>0))continue;let b=`${c.source}\u0000${c.name}`,d=a.get(b);d?d.sum+=c.value:a.set(b,{name:c.name,sum:c.value})}for(let b of a.values()){let a=p.get(b.name)||[];a.push(b.sum),p.set(b.name,a)}}let q=new Map,r=new Map,s=new Map,t=(a,c,d)=>{let e=`${a}\u0000${c}`,f=q.get(e);if(f||(f=b.entries.filter(b=>b.name===a&&i(b.unit)===c&&b.value>0).map(a=>Math.round(100*a.value)),q.set(e,f)),f.length<2)return!1;let g=`${e}\u0000${Math.round(100*d)}`,h=r.get(g);if(void 0!==h)return h;let j=function(a,b){if(a.length<2||b<=0)return!1;let c=[...a].sort((a,b)=>a-b);if(c.some(a=>a===b))return!1;let d=c.reduce((a,b)=>a+b,0);if(b>d)return!1;let e=d-b;if(e>0&&e!==b){let a=Math.max(b,e);for(let d=0;d<c.length;d+=1)for(let f=d+1;f<c.length;f+=1){let g=c[d]+c[f];if(g>a)break;if(g===b||g===e)return!0}let d=0,f=c.length-1;for(;d<=f;){let a=d+f>>1;if(c[a]===e)return c.length>=3;c[a]<e?d=a+1:f=a-1}}else for(let a=0;a<c.length;a+=1)for(let d=a+1;d<c.length;d+=1){let e=c[a]+c[d];if(e>b)break;if(e===b)return!0}if(c.length>40)return!1;let f=Math.ceil(c.length/2),g=c.slice(0,f),h=c.slice(f),i=a=>{let b=new Set([0]);for(let c of a){let a=new Set;for(let d of b)a.add(d),a.add(d+c);b=a}return b},j=i(h);for(let a of i(g))if(j.has(b-a))return!0;return!1}(f,Math.round(100*d));return r.set(g,j),j},u=(a,c)=>{let d=p.get(a)||[];if(0===d.length)return!1;let e=`${a}\u0000${Math.round(100*c)}`,g=s.get(e);if(void 0!==g)return g;let h=d.some(a=>b.numberPool.some(b=>f(a+b,c)));return s.set(e,h),h};if(c)for(let o of c.entries){let c=(o.name||"").trim();if(c.length<2||G.test(c)||!Number.isFinite(o.quantity))continue;let q=0,r=0;for(;r<6;){let s=a.indexOf(c,q);if(s<0)break;if(q=s+c.length,r+=1,/\d$/u.test(c)&&/^[\d.]/u.test(a.slice(s+c.length,s+c.length+1))){q=s+1;continue}if("量"===a.slice(s+c.length,s+c.length+1))continue;let v=a.slice(s+c.length,s+c.length+20),w=/^([^。;;\n|]{0,12}?)([\d,,]+(?:\.\d+)?)\s*(座|个|套|处|盏|棵|株|樘|扇|根|块|片|组|件|孔|间|栋|幢|户|米|m|km|公里|平方米|m2|㎡|m²|立方米|m3|m³|kg|吨|t)(?![a-zA-Z0-9²³])/u.exec(v);if(!w||j.test(w[1])||k.test(v.slice(w[1].length+w[2].length+w[3].length)))continue;let x=e(w[2]);if(void 0===x||0===x||g(x,o.quantity))continue;let y=i(w[3]);if(y!==i(o.unit)||b.entries.some(a=>a.name===c&&g(x,a.value)&&i(a.unit)===y)||(p.get(c)||[]).some(a=>f(a,x))||t(c,y,x)||u(c,x))continue;let z=a.slice(Math.max(0,s-32),s+c.length+20);if(function(a,b,c,d){for(let[e,g]of d)if(e!==b&&(e.includes(b)||b.includes(e)||n(e,c))&&g.some(b=>f(b,a)))return!0;return!1}(x,c,z,p))continue;let A=b.entries.find(a=>a.name!==c&&f(a.value,x)&&i(a.unit)===y);if(A&&n(A.name,z))continue;if(A){let a=`${s}\u0000${x}\u0000${y}`;if(l.has(a))continue;l.add(a);let b=m.get(`${c}\u0000${y}`),e=b&&b.count>1?`名称-数值绑定错位:「${c}」处数值 ${x}${w[3]} 属清单条目「${A.name}」(${A.value}${A.unit}),与同名清单条目(共 ${b.count} 条,如 ${b.samples.join("、")} 等)的权威数量均不符`:`名称-数值绑定错位:「${c}」处数值 ${x}${w[3]} 属清单条目「${A.name}」(${A.value}${A.unit}),与「${c}」清单数量 ${o.quantity}${o.unit} 不符`;if(h.has(e))continue;h.add(e),d.push({issue:{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:e,suggestion:b&&b.count>1?`核对「${c}」的数量口径:同名清单条目共 ${b.count} 条(如 ${b.samples.join("、")} 等),逐一核对后引用对应条目数量;引用「${A.name}」数量时须明确对象名称,不得张冠李戴。`:`核对「${c}」的数量口径:清单权威值为 ${o.quantity}${o.unit};引用「${A.name}」数量时须明确对象名称,不得张冠李戴。`},matchStart:s,matchEnd:s+c.length+w[0].length});continue}if(function(a,b,c,d){let e=a.slice(Math.max(0,b-40),b+c+40),g=[];for(let a of e.matchAll(/\d+(?:\.\d+)?/gu)){let b=Number.parseFloat(a[0]);Number.isFinite(b)&&!f(b,d)&&g.push(b)}for(let a=0;a<g.length;a+=1)for(let b=a+1;b<g.length;b+=1)if(f(g[a]+g[b],d)||f(Math.abs(g[a]-g[b]),d))return!0;return!1}(a,s,c.length,x)||b.numberPool.some(a=>f(a,x)))continue;let B=`${s}\u0000${x}\u0000${y}`;if(l.has(B))continue;l.add(B);let C=m.get(`${c}\u0000${y}`),D=C&&C.count>1?`名称-数值绑定无源:「${c}」处数值 ${x}${w[3]} 与同名清单条目(共 ${C.count} 条,如 ${C.samples.join("、")} 等)的权威数量均不符,且在全部权威数据中找不到同值来源`:`名称-数值绑定无源:「${c}」处数值 ${x}${w[3]} 与清单权威 ${o.quantity}${o.unit} 不符,且在全部权威数据中找不到同值来源`;h.has(D)||(h.add(D),d.push({issue:{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:D,suggestion:C&&C.count>1?`核对「${c}」的数量口径:同名清单条目共 ${C.count} 条(如 ${C.samples.join("、")} 等),逐一核对后引用对应条目的权威数量;无权威来源的数值不得与清单条目名称绑定出现。`:`将「${c}」的数量改为清单权威值 ${o.quantity}${o.unit};无权威来源的数值不得与清单条目名称绑定出现。`},matchStart:s,matchEnd:s+c.length+w[0].length}))}}for(let c of a.matchAll(H)){let g=c[0];if(o.includes(g))continue;let j=c[2],k=a.slice((c.index??0)+g.length,(c.index??0)+g.length+16),l=/^([^。;;\n|]{0,10}?)([\d,,]+(?:\.\d+)?)\s*(樘|扇|套|座|盏|个)(?![a-zA-Z0-9²³])/u.exec(k);if(!l)continue;let m=e(l[2]);if(void 0===m)continue;let n=b.entries.find(a=>a.name.includes(j)&&f(a.value,m)&&i(a.unit)===i(l[3]));if(!n)continue;let p=`名称口径不符:正文「${g} ${m}${l[3]}」——${m}${l[3]} 对应清单「${n.name}」条目,清单中不存在「${g}」,名称与清单权威不符`;if(h.has(p))continue;h.add(p);let q=c.index??0;d.push({issue:{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:p,suggestion:`名称必须与清单条目口径一致:将「${g}」改为「${n.name}」(或清单原文名称);名称与数量绑定不得自行替换材质/类型限定词。`},matchStart:q,matchEnd:q+g.length+l[0].length})}return d}function J(a){let b=a.markdown||"";if(!b)return[];let c=l(a);if(0===c.entries.length&&0===c.numberPool.length)return[];let d=[...r(b,c).map(a=>a.issue),...y(b,c).map(a=>a.issue),...function(a,b){let c=[],d=new Set;for(let g of a.matchAll(C)){let a=e(g[1]);if(void 0===a)continue;let h=g[2];if(("mm"===h?a/1e3:"cm"===h?a/100:a)<=10)continue;let i=b.entries.find(b=>f(b.value,a)&&/总长|全长|总长度|长度|管线/u.test(b.name)),j=`数值语义槽位错位:正文「${g[0].trim()}」——埋深/覆土数值 ${a}${h} 超出物理合理范围(管道埋深一般 <10m)${i?`,且该数值与权威「${i.name}」(${i.value}${i.unit})一致,疑似把总长/长度口径误用作埋深`:",疑似口径混用"}`;d.has(j)||(d.add(j),c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:j,suggestion:`核对槽位语义:埋深/覆土深度应在 0.3~10m 合理区间(以设计图纸为准);总长/长度类数值不得用于埋深描述${i?`(「${i.name}」为 ${i.value}${i.unit})`:""}。`}))}return c}(b,c),...function(a,b){let c=[];if(0===b.numberPool.length)return c;let d=new Set,f=(a,f,g)=>{let h=e(a);if(void 0===h||function(a,b){let c=a>=1e3?Math.max(10,.02*a):a>=100?5:a>=10?1:.5;return b.some(b=>Math.abs(b-a)<=c||Math.abs(b-a)<=Math.max(1e-6,.02*Math.abs(b)))}(h,b.numberPool))return;let i=`近似数值不可推导:正文「${g.trim()}」的 ${h}${f} 在清单/蓝图/事实主表中无同值或近似来源,违反无据不写`;d.has(i)||(d.add(i),c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:i,suggestion:"删除该近似表述,或改用权威数据可推导的数值(清单/蓝图同值口径);「约/近」类近似数值必须可闭合到权威来源。"}))};for(let b of a.matchAll(D)){let c=b.index??0,d=a.slice(Math.max(0,c-1),c);F.test(d)||f(b[1],b[2],b[0])}for(let b of a.matchAll(E))f(b[1],b[2],b[0]);return c}(b,c),...I(b,c,a.billFactLock).map(a=>a.issue)],g=[],h=new Set;for(let a of d){let b=`${a.severity||a.level}|${a.message}`;h.has(b)||(h.add(b),g.push(a))}return g}},76193:(a,b,c)=>{c.d(b,{ll:()=>q,rk:()=>n,wF:()=>u,yT:()=>p}),c(51190),c(44505),c(10751);var d=c(93675);let e=new Set(["fixed","exempt","manual"]),f=[],g=new Set(["structure","table","fact_consistency","evidence_coverage","professional_chain","control_loop","format","style","scope"]),h=[{id:"table-line-residue",kind:"deterministic",anchoredTo:"table-quality",giveUpOnFailure:!0},{id:"templated-labels",kind:"deterministic",anchoredTo:"templated-label",giveUpOnFailure:!0},{id:"structure-integrity",kind:"deterministic",anchoredTo:"structure-integrity",giveUpOnFailure:!0},{id:"embedded-heading-split",kind:"deterministic",anchoredTo:"planned-structure",giveUpOnFailure:!0},{id:"repeated-words",kind:"deterministic",anchoredTo:"repeated-word",giveUpOnFailure:!0},{id:"duplicate-tables",kind:"deterministic",anchoredTo:"duplicate-table",giveUpOnFailure:!0},{id:"finish-thickness",kind:"deterministic",anchoredTo:"finish-thickness",giveUpOnFailure:!0},{id:"slot-depth-value",kind:"deterministic",anchoredTo:"fact-reconciliation",authorities:["blueprint"],giveUpOnFailure:!0},{id:"spec-quantity-binding",kind:"deterministic",anchoredTo:"fact-reconciliation",authorities:["blueprint"],giveUpOnFailure:!0},{id:"labor-peak",kind:"deterministic",anchoredTo:"resource-consistency",authorities:["laborPeak"],giveUpOnFailure:!0},{id:"phase-labor-values",kind:"deterministic",anchoredTo:"phase-labor-mixing",authorities:["blueprint"],giveUpOnFailure:!0},{id:"resource-breakdown",kind:"deterministic",anchoredTo:"resource-breakdown-consistency",authorities:["blueprint"],giveUpOnFailure:!0},{id:"equipment-batch-values",kind:"deterministic",anchoredTo:"equipment-batch-conflict",authorities:["blueprint"],giveUpOnFailure:!0},{id:"internal-table-row-dup",kind:"deterministic",anchoredTo:"table-spam",giveUpOnFailure:!0},{id:"duplicate-basic-info-tables",kind:"deterministic",anchoredTo:"table-quality",alsoAnchoredTo:["duplicate-basic-info"],giveUpOnFailure:!0},{id:"fallback-placeholder-rows",kind:"deterministic",anchoredTo:"formal-placeholder",giveUpOnFailure:!0},{id:"greening-maintenance",kind:"deterministic",anchoredTo:"greening-maintenance-mismatch",authorities:["greeningMaintenance"],giveUpOnFailure:!0},{id:"paragraph-opening-repeat",kind:"deterministic",anchoredTo:"paragraph-opening-repeat",giveUpOnFailure:!0},{id:"paragraph-tail-repeat",kind:"deterministic",anchoredTo:"paragraph-tail-repeat",giveUpOnFailure:!0},{id:"collision-numbered-heading",kind:"deterministic",anchoredTo:"collision-numbered-heading",giveUpOnFailure:!0},{id:"heading-uncovered-items",kind:"deterministic",anchoredTo:"heading-uncovered-engineering-items",giveUpOnFailure:!0},{id:"inverted-date-range",kind:"deterministic",anchoredTo:"inverted-date-range",giveUpOnFailure:!0},{id:"zero-length-date-range",kind:"deterministic",anchoredTo:"cross-chapter-consistency",giveUpOnFailure:!0},{id:"truncated-sentence",kind:"deterministic",anchoredTo:"truncated-sentence",giveUpOnFailure:!0},{id:"meta-discourse",kind:"deterministic",anchoredTo:"meta-discourse-declaration",giveUpOnFailure:!0},{id:"formula-residue",kind:"deterministic",anchoredTo:"formula-residue",giveUpOnFailure:!0},{id:"self-undermining",kind:"deterministic",anchoredTo:"self-undermining-candidate",giveUpOnFailure:!0},{id:"ambiguous-either-or",kind:"deterministic",anchoredTo:"ambiguous-either-or",authorities:["supportSystem"],giveUpOnFailure:!0},{id:"tender-meta-language",kind:"deterministic",anchoredTo:"formal-style",giveUpOnFailure:!0},{id:"formal-source-residue",kind:"deterministic",anchoredTo:"formal-style",giveUpOnFailure:!0},{id:"forbidden-configuration",kind:"deterministic",anchoredTo:"formal-text-gate",giveUpOnFailure:!0},{id:"duplicate-response-line",kind:"deterministic",anchoredTo:"duplicate-paragraph",giveUpOnFailure:!0},{id:"atlas-reference",kind:"deterministic",anchoredTo:"atlas-reference-phrase",giveUpOnFailure:!0},{id:"tertiary-h4-dedupe",kind:"deterministic",anchoredTo:"tertiary-heading",giveUpOnFailure:!0},{id:"internal-term-heading",kind:"deterministic",anchoredTo:"internal-terminology-anchor",giveUpOnFailure:!0},{id:"skeleton-fingerprint-variants",kind:"deterministic",anchoredTo:"skeleton-fingerprint",giveUpOnFailure:!0},{id:"flow-form-variants",kind:"deterministic",anchoredTo:"flow-form-repeat",giveUpOnFailure:!0},{id:"truncated-title-completion",kind:"deterministic",anchoredTo:"title-integrity",giveUpOnFailure:!0},{id:"sentence-like-heading-split",kind:"deterministic",anchoredTo:"title-integrity",giveUpOnFailure:!0},{id:"heading-duplicate-merge",kind:"deterministic",anchoredTo:"heading-duplicate",giveUpOnFailure:!0},{id:"section-renumber",kind:"deterministic",anchoredTo:"section-numbering",giveUpOnFailure:!0}],i=[{id:"numeric-arbiter-concept",kind:"deterministic",anchoredTo:"parameter-concept-conflict",giveUpOnFailure:!0},{id:"numeric-arbiter-spec",kind:"deterministic",anchoredTo:"spec-location-mismatch",giveUpOnFailure:!0}],j=[{id:"numeric-chain-node-schedule",kind:"deterministic",anchoredTo:"node-schedule-consistency",giveUpOnFailure:!0},{id:"numeric-chain-cross-section",kind:"deterministic",anchoredTo:"cross-section-numeric-conflict",giveUpOnFailure:!0},{id:"numeric-chain-support-system",kind:"deterministic",anchoredTo:"support-system-conflict",authorities:["supportSystem"],giveUpOnFailure:!0},{id:"numeric-chain-quantity-authority",kind:"deterministic",anchoredTo:"blueprint-citation-consistency",authorities:["blueprint"],giveUpOnFailure:!0},{id:"equipment-entry-timing-clean",kind:"deterministic",anchoredTo:"equipment-entry-timing",giveUpOnFailure:!0},{id:"commercial-data-body-strip",kind:"deterministic",anchoredTo:"commercial-data-in-body",giveUpOnFailure:!0},{id:"listing-jargon-strip",kind:"deterministic",anchoredTo:"major-content-governance",giveUpOnFailure:!0},{id:"work-injury-statement-fix",kind:"deterministic",anchoredTo:"local-adaptation-keyword",giveUpOnFailure:!0},{id:"boq-division-coverage-closure",kind:"deterministic",anchoredTo:"boq-division-coverage",giveUpOnFailure:!0},{id:"drawing-image-strip",kind:"deterministic",anchoredTo:"bid-composition-body-figure",giveUpOnFailure:!0},{id:"tender-clause-heading-strip",kind:"deterministic",anchoredTo:"bidder-qualification-section",alsoAnchoredTo:["instruction-like-heading"],giveUpOnFailure:!0},{id:"formal-source-phrase-clean",kind:"deterministic",anchoredTo:"source-enumeration",giveUpOnFailure:!0},{id:"toc-consistency-rebuild",kind:"deterministic",anchoredTo:"toc-consistency",giveUpOnFailure:!0},{id:"prompt-document-rules-apply",kind:"deterministic",anchoredTo:"prompt-document-rule",giveUpOnFailure:!0},{id:"workflow-phrase-clean",kind:"deterministic",anchoredTo:"auto-spec-validation",giveUpOnFailure:!0},{id:"contamination-candidate-sanitize",kind:"deterministic",anchoredTo:"project-contamination",giveUpOnFailure:!0},{id:"preliminary-action-timing-clean",kind:"deterministic",anchoredTo:"preliminary-action-timing",authorities:["blueprint"],giveUpOnFailure:!0},{id:"process-spec-conflict-fix",kind:"deterministic",anchoredTo:"process-spec-conflict",giveUpOnFailure:!0}],k=[{id:"near-duplicate-section-merge",kind:"deterministic",anchoredTo:"section-count-overflow",giveUpOnFailure:!0},{id:"empty-section-strip",kind:"deterministic",anchoredTo:"section-content-integrity",giveUpOnFailure:!0},{id:"duplicate-theme-merge",kind:"deterministic",anchoredTo:"min-chapter-section",giveUpOnFailure:!0}],l=["source-enumeration","internal-terminology-anchor","fabricated-start-date","repeated-word","writer-missing-section","meta-discourse-declaration","formula-residue","finish-thickness","formal-placeholder","truncated-sentence"],m=[{id:"fact-landing",kind:"llm-patch",anchoredTo:"fact-coverage",patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"table-repair",kind:"llm-patch",anchoredTo:"table-quality",patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"table-execution-repair",kind:"llm-patch",anchoredTo:"bid-composition-body-table",patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"templating-repair",kind:"llm-patch",anchoredTo:"construction-org-generic-language",alsoAnchoredTo:["sentence-pattern-repeat"],patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"workpackage-skeleton-repair",kind:"llm-patch",anchoredTo:"construction-org-division-section",patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"planned-section-repair",kind:"llm-patch",anchoredTo:"writer-missing-section",patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"global-consistency-repair",kind:"llm-patch",anchoredTo:"cross-chapter-consistency",alsoAnchoredTo:["foundation-form-residue","excavation-depth-lock"],patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"cross-project-value-copy-repair",kind:"llm-patch",anchoredTo:"cross-project-value-copy",authorities:["blueprint"],patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"requirement-response-repair",kind:"llm-patch",anchoredTo:"requirements-coverage",patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"numeric-verification",kind:"llm-patch",anchoredTo:"authority-audit-gap",patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"quotation-balance-repair",kind:"llm-patch",anchoredTo:"punctuation-artifact",patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"content-depth-repair",kind:"llm-patch",anchoredTo:"critical-section-depth",alsoAnchoredTo:["emergency-section-depth","construction-org-major-content","construction-org-division-section","precise-fact-usage","parameter-obligation-usage","overview-recap","professional-score","boq-placement","drawing-reference"],patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"control-loop-repair",kind:"llm-patch",anchoredTo:"construction-org-control-loop",patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"professional-chain-repair",kind:"llm-patch",anchoredTo:"construction-org-professional-chain",patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"basis-regulations-repair",kind:"llm-patch",anchoredTo:"basis-regulations-coverage",authorities:["blueprint"],patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"basis-regulations-cross-repair",kind:"llm-patch",anchoredTo:"basis-regulations-cross",patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"dangerous-applicability-repair",kind:"llm-patch",anchoredTo:"dangerous-applicability",patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"auto-spec-gate-repair",kind:"llm-patch",anchoredTo:"planned-auto-spec-gate",patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"length-compression-repair",kind:"llm-patch",anchoredTo:"document-budget",patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"table-caption-repair",kind:"llm-patch",anchoredTo:"table-caption",patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"table-arithmetic-repair",kind:"llm-patch",anchoredTo:"table-arithmetic-consistency",patchGuard:{detectors:[...l]},giveUpOnFailure:!0}],n=["fact-landing-round","table-repair-round","semantic-choice-conflict","deterministic-stage5","formal-source-clean","planned-section-final","commercial-strip","table-deterministic-repair","numeric-verification","requirement-response-repair","requirement-verification","content-depth-repair","control-loop-repair","professional-chain-repair","post-review-surface","terminology-strip","regulation-number-typo","quotation-balance-repair","basis-regulations-repair","basis-regulations-cross-repair","dangerous-applicability-repair","auto-spec-gate-repair","toc-consistency","length-compression-repair","fact-distribution-round","table-caption-repair","table-arithmetic-repair","empty-section-sweep","section-alignment-sweep","templating-sweep","duplicate-theme-merge","delivery-structure-closure","sentence-pattern-sweep","duplicate-sentence-collapse","templating-tail-replay"],o=new Set;function p(a,b){return o.add(a),b()}async function q(a,b){o.add(a);try{return await b()}catch(c){let b=c instanceof Error?c.message:String(c);return console.error(`[gen] detector degraded: ${a} failed, fallback to warning issue:`,c),[{level:"warning",severity:"warning",category:"format",owner:"system",repairability:"manual_review",message:`交付前检测器「${a}」执行失败,已降级为待复核:${b}`,suggestion:"此为检测器基础设施异常,非正文内容缺陷;其余交付前检查已照常完成。可稍后重新生成复核,或人工复核该检测维度。"}]}}let r=[{id:"spec-gate-rules",scope:"full-document",category:"structure",fixerDisposition:"manual",fixerDispositionReason:"配置门禁容器(事实/章节/表格/图片/页数/文本多族混合,规则随模板与提示词动态生成),无单一可锚定修复目标"},{id:"auto-spec-validation",scope:"full-document",category:"structure",fixerDisposition:"fixed",fixerDispositionReason:"仅唯一阻断族(后台流程话术)由 WORKFLOW_PHRASE_RE 清洗覆盖;后台优化建议/基础事实候选/材料未提供 3 词未入清洗表"},{id:"fact-consistency",scope:"full-document",category:"fact_consistency",fixerDisposition:"manual",fixerDispositionReason:"多值冲突源于绑定材料组内同名不同值,只能由用户确认绑定范围/资料侧裁决,正文改写不可能消除"},{id:"figure-substitute-table",scope:"full-document",category:"structure",fixerDisposition:"manual",fixerDispositionReason:"图类要求无承载(既无图题也无等效数据表)需补写数据表并加题注,属内容补写而非确定性改写;写入侧应由图类呈现计划同时下达「图 or 等效表」二选一,本检测器为交付前兜底"},{id:"project-type-consistency",scope:"full-document",category:"scope",fixerDisposition:"manual",fixerDispositionReason:"项目类型与正文用词矛盾(如产业园标准化厂房项目出现「自然村/村内/多村并行」)属内容性质错误:自动改写会改变叙述口径与上下文语义,须人工确认后按正确策略重新生成;根治在写入侧(resolveDerivationStrategy 类型守卫 + 策略驱动分组称谓),本检测器为交付前安全网"},{id:"project-contamination",scope:"full-document",category:"scope",fixerDisposition:"fixed",fixerDispositionReason:"对象名污染分支由 sanitizeContaminationCandidates 覆盖;文档编号分支(documentContaminationService.ts:18)无修复器"},{id:"project-basic-placeholder",scope:"full-document",category:"format",fixerDisposition:"manual",fixerDispositionReason:"同源专用修复器 repairKnownProjectBasicPlaceholders 已按「删除无用代码」口径移除(全仓零调用、注册表看不见);当前仅表内占位被 canonical 事实替代,表外正文占位无覆盖"},{id:"standard-final",scope:"full-document",category:"structure",fixerDisposition:"exempt",fixerDispositionReason:"standard-final 组整组重跑的结果容器登记,不产出自身 issue;组内子检测器各自锚定即可"},{id:"fact-coverage",scope:"full-document",category:"evidence_coverage",fixerDisposition:"fixed",fixerDispositionReason:"stageFactLanding 与检测同源同池(uncoveredImportantFacts + 同一事实池),接线 documentPipeline.ts:74"},{id:"page-target",scope:"full-document",category:"structure",fixerDisposition:"exempt",fixerDispositionReason:"页数为估算度量信号(永远 warning 不阻断),无独立可修缺陷;超幅族由字数口径的 length-compression-repair 轮收敛"},{id:"document-budget",scope:"full-document",category:"structure"},{id:"formal-text-gate",scope:"full-document",category:"format"},{id:"heading-uncovered-engineering-items",scope:"full-document",category:"structure"},{id:"writer-missing-section",scope:"full-document",category:"structure",deterministicSafe:!0,fixerDisposition:"fixed",fixerDispositionReason:"由 planned-section-repair 轮按 reason=empty 重写清除;planned=false 的小节不入选"},{id:"critical-section-depth",scope:"chapter",category:"structure"},{id:"critical-section-fact-density",scope:"chapter",category:"evidence_coverage",fixerDisposition:"manual",fixerDispositionReason:"须内容补写,但 issue 无 provenance,按 provenance 过滤的补写轮消费不到(接线 provenance 后可改判 fixed)"},{id:"chapter-fact-density",scope:"chapter",category:"evidence_coverage",fixerDisposition:"exempt",fixerDispositionReason:"质量报告阶段被降级为 info(消息尾句命中 FLOW_DIAGNOSTIC_ISSUE_RE)不阻断;其修复手段是写作期块级重写重试"},{id:"construction-org-professional-audit",scope:"chapter",category:"professional_chain",fixerDisposition:"manual",fixerDispositionReason:"聚合 issue 无 category/provenance 无法被锚定消费,且 5 通道中 3 通道(参数密度/工作包要素/表格空字段)无修复器"},{id:"toc-consistency",scope:"full-document",category:"structure",deterministicSafe:!0,fixerDisposition:"fixed",fixerDispositionReason:"fixTocFromBody 按正文实际结构重建目录,检测定位=修复定位,已接线三处"},{id:"section-numbering",scope:"full-document",category:"structure",deterministicSafe:!0},{id:"section-count-overflow",scope:"chapter",category:"structure"},{id:"heading-duplicate",scope:"full-document",category:"structure",deterministicSafe:!0},{id:"structure-integrity",scope:"full-document",category:"structure",deterministicSafe:!0},{id:"templated-label",scope:"full-document",category:"structure",deterministicSafe:!0},{id:"title-integrity",scope:"full-document",category:"structure"},{id:"evaluation-criteria-coverage",scope:"full-document",category:"evidence_coverage",fixerDisposition:"manual",fixerDispositionReason:"正文核心词缺位须内容补写且无修复轮消费;上游只有预防性补挂(constructionBidStructure.ts:445)"},{id:"requirements-coverage",scope:"full-document",category:"evidence_coverage",fixerDisposition:"fixed",fixerDispositionReason:"requirement-response-repair 轮按 provenance 定向补写(requirementResponseRepair.ts:51)"},{id:"fabricated-start-date",scope:"full-document",category:"fact_consistency",deterministicSafe:!0,fixerDisposition:"manual",fixerDispositionReason:"需语义判断该日期是编造还是合法的招标/法规成文日期,确定性删除必误伤;仅 patchGuard 预防式预检,无存量修复"},{id:"field-value-mismatch",scope:"full-document",category:"fact_consistency",deterministicSafe:!0,fixerDisposition:"manual",fixerDispositionReason:"无实现;权威值在 factsModel 可取属可确定性实现但未实现,现只能转人工"},{id:"area-arithmetic",scope:"full-document",category:"fact_consistency",deterministicSafe:!0,fixerDisposition:"manual",fixerDispositionReason:"地上/地下/单体哪个是错值须资料裁决;同族 scale 修复器显式声明对该三项不做确定性替换"},{id:"resource-consistency",scope:"full-document",category:"fact_consistency",authorities:["laborPeak"]},{id:"node-schedule-consistency",scope:"full-document",category:"fact_consistency",fixerDisposition:"fixed",fixerDispositionReason:"fixNodeScheduleConflicts(fixers.ts:1010),挂 applyNumericConsistencyDeterministicFixes steps"},{id:"cross-section-numeric-conflict",scope:"full-document",category:"fact_consistency",fixerDisposition:"fixed",fixerDispositionReason:"fixCrossSectionNumericConflicts(fixers.ts:1195),同链 steps"},{id:"fact-reconciliation",scope:"full-document",category:"fact_consistency",authorities:["blueprint"]},{id:"greening-maintenance-mismatch",scope:"full-document",category:"fact_consistency",authorities:["greeningMaintenance"]},{id:"street-light-count-mismatch",scope:"full-document",category:"fact_consistency",fixerDisposition:"manual",fixerDispositionReason:"正文常为分型号明细而清单只锁总数,确定性替换会写坏;同族 greening-maintenance 有修复器,此其一无"},{id:"spec-location-mismatch",scope:"full-document",category:"fact_consistency"},{id:"blueprint-citation-consistency",scope:"full-document",category:"fact_consistency",authorities:["blueprint"],fixerDisposition:"fixed",fixerDispositionReason:"fixQuantityAuthorityConflicts(fixers.ts:1304)经 quantityAnchors 直连,含链尾重放"},{id:"cross-project-value-copy",scope:"full-document",category:"fact_consistency",authorities:["blueprint"],fixerDisposition:"fixed",fixerDispositionReason:"global-consistency-repair 轮消费(globalQualityGates.ts:1398);无专用确定性修复器"},{id:"phase-labor-mixing",scope:"full-document",category:"fact_consistency",authorities:["blueprint"]},{id:"equipment-batch-conflict",scope:"full-document",category:"fact_consistency",authorities:["blueprint"]},{id:"preliminary-action-timing",scope:"full-document",category:"fact_consistency",authorities:["blueprint"],fixerDisposition:"fixed",fixerDispositionReason:"fixPreliminaryActionTimingDeterministically 与检测共用 scanPreliminaryActionTimingFindings 同源单扫描,接线 postReviewSurface.ts:274"},{id:"foundation-form-residue",scope:"full-document",category:"fact_consistency",fixerDisposition:"fixed",fixerDispositionReason:"global-consistency-repair 轮消费(globalQualityGates.ts:1407→:1500)"},{id:"ambiguous-either-or",scope:"full-document",category:"fact_consistency",authorities:["supportSystem"]},{id:"excavation-depth-lock",scope:"full-document",category:"fact_consistency",fixerDisposition:"fixed",fixerDispositionReason:"global-consistency-repair 轮消费,另有路由特例与权威值注入(:1533/:1580)"},{id:"excavation-hazard-classification",scope:"full-document",category:"fact_consistency",fixerDisposition:"manual",fixerDispositionReason:"需按 canonical 深度补写分级结论句,当前无任何修复路径"},{id:"support-form-fact-consistency",scope:"full-document",category:"fact_consistency",authorities:["supportSystem"],fixerDisposition:"manual",fixerDispositionReason:"与 support-system-conflict 判据不同源(读 canonical.byKey.foundation_support_form),不可复用其修复器"},{id:"equipment-entry-timing",scope:"full-document",category:"fact_consistency",fixerDisposition:"fixed",fixerDispositionReason:"fixEquipmentEntryTimingDeterministically(postReviewSurface.ts:287),与检测同源单扫描"},{id:"fabricated-award",scope:"full-document",category:"fact_consistency",fixerDisposition:"manual",fixerDispositionReason:"白名单外奖项须回招标原文逐字比对并整体改写创优叙述,无确定性路径"},{id:"bidder-qualification-section",scope:"full-document",category:"scope",fixerDisposition:"fixed",fixerDispositionReason:"stripTenderClauseFragmentHeadings(markdownCleanup.ts:622)删标题;仅覆盖两条句式规则,资格词表分支未覆盖"},{id:"cross-chapter-duplicate-section",scope:"chapter",category:"structure",fixerDisposition:"manual",fixerDispositionReason:"同名小节归并需判断内容归属,确定性路径被有意排除(dedupeDuplicateSectionHeadings 仅章内)"},{id:"basic-info-schedule-field",scope:"full-document",category:"fact_consistency",fixerDisposition:"manual",fixerDispositionReason:"现有归一化的收场是「非法值被拒收→单元格变空」,属以删除通过门禁(P2-2 同口径禁止),不判 fixed"},{id:"duplicate-table",scope:"full-document",category:"table"},{id:"duplicate-paragraph",scope:"full-document",category:"structure"},{id:"paragraph-tail-repeat",scope:"full-document",category:"style",deterministicSafe:!0},{id:"collision-numbered-heading",scope:"full-document",category:"structure",deterministicSafe:!0},{id:"inverted-date-range",scope:"full-document",category:"fact_consistency",deterministicSafe:!0},{id:"resource-triad-section-hierarchy",scope:"full-document",category:"structure",fixerDisposition:"manual",fixerDispositionReason:"修复需重排章节层级/拆分小节,结构性重写且无确定性路径"},{id:"support-system-conflict",scope:"full-document",category:"fact_consistency",authorities:["supportSystem"],fixerDisposition:"fixed",fixerDispositionReason:"fixSupportSystemConflicts(fixers.ts:38),同链 steps;权威缺失时不动作,属部分覆盖"},{id:"dangerous-list-consistency",scope:"full-document",category:"fact_consistency",fixerDisposition:"manual",fixerDispositionReason:"两处清单需合并为唯一清单并统一项名与分级,属内容改写"},{id:"hazard-exclusion-contradiction",scope:"full-document",category:"fact_consistency",fixerDisposition:"manual",fixerDispositionReason:"排除声明与清单孰对取决于资料是否真达判定阈值,须资料裁决"},{id:"six-hundred-percent-coverage",scope:"full-document",category:"evidence_coverage",fixerDisposition:"manual",fixerDispositionReason:"补写型修复器已随 4.41「零确定性正文注入」架构决策删除(fixers.ts:1625),内容缺失只能由生成侧补齐"},{id:"self-undermining-candidate",scope:"full-document",category:"style"},{id:"paragraph-opening-repeat",scope:"full-document",category:"style",deterministicSafe:!0},{id:"flow-form-repeat",scope:"full-document",category:"style"},{id:"skeleton-fingerprint",scope:"full-document",category:"style"},{id:"sentence-pattern-repeat",scope:"full-document",category:"style"},{id:"repeated-word",scope:"full-document",category:"style",deterministicSafe:!0},{id:"commercial-data-in-body",scope:"full-document",category:"scope",fixerDisposition:"fixed",fixerDispositionReason:"stripCommercialDataBodyLines(postReviewSurface.ts:209),与检测同口径"},{id:"overview-recap",scope:"full-document",category:"style"},{id:"closure-phrase-density-cap",scope:"full-document",category:"style",fixerDisposition:"manual",fixerDispositionReason:"缺陷是词频密度(语义/文风改写),无修复轮按 provenance 消费;fiveElementClosureBoost 的补句池刻意避开闭环密度词"},{id:"parameter-concept-conflict",scope:"full-document",category:"fact_consistency"},{id:"internal-terminology-anchor",scope:"full-document",category:"style",deterministicSafe:!0},{id:"construction-system-coverage",scope:"chapter",category:"evidence_coverage",fixerDisposition:"manual",fixerDispositionReason:"某专业系统整章零覆盖须补写施工方案正文,属内容生成"},{id:"dangerous-applicability",scope:"full-document",category:"evidence_coverage"},{id:"innovation-tech-coverage",scope:"full-document",category:"evidence_coverage",fixerDisposition:"manual",fixerDispositionReason:"缺节场景可被补写轮间接覆盖,但「小节 <200 字的部分成稿」场景无任何路径(补写轮 alsoAnchoredTo 接上后可改判 fixed)"},{id:"instruction-like-heading",scope:"full-document",category:"structure",fixerDisposition:"fixed",fixerDispositionReason:"仅 tender-clause-heading-strip 一支(^#{3,4} 且判据为 isTenderClauseFragmentTitle);主判据 instructionTitleRe(是否涉及/按需生成/视情况/注意事项)与 H2 级碎片无任何正文修复器"},{id:"formal-heading-hierarchy",scope:"full-document",category:"structure",deterministicSafe:!0,fixerDisposition:"manual",fixerDispositionReason:"非法 H2 的现成修复器 demoteNonFormalH2 已按「删除无用代码」口径移除(全仓零调用);当前无任何生产修复路径"},{id:"formal-content-integrity",scope:"full-document",category:"format",deterministicSafe:!0,fixerDisposition:"manual",fixerDispositionReason:"截断句须补全句子内容;fixTruncatedSentenceArtifacts 修的是标点叠用且锚在另一个 id 上,非同源"},{id:"punctuation-artifact",scope:"full-document",category:"format",deterministicSafe:!0},{id:"table-quality",scope:"full-document",category:"table",deterministicSafe:!0},{id:"table-spam",scope:"full-document",category:"table",deterministicSafe:!0},{id:"basis-regulations-coverage",scope:"full-document",category:"fact_consistency",authorities:["blueprint"]},{id:"basis-regulations-cross",scope:"full-document",category:"fact_consistency"},{id:"resource-breakdown-consistency",scope:"full-document",category:"fact_consistency",authorities:["blueprint"]},{id:"section-content-integrity",scope:"chapter",category:"structure"},{id:"professional-content",scope:"chapter",category:"professional_chain",fixerDisposition:"manual",fixerDispositionReason:"缺项须补写专业内容,全仓无同源修复函数;且本 issue 无 provenance,按 provenance 过滤的修复轮消费不到,属真孤儿"},{id:"professional-score",scope:"chapter",category:"professional_chain"},{id:"generic-professional-content",scope:"chapter",category:"professional_chain",fixerDisposition:"manual",fixerDispositionReason:"判据=词面 8 词命中≥6 + bge 语义门;最近的套话修复器(isTemplatePrefixSentence + FILLER_SEMANTIC_QUERIES)判据不同源,不构成覆盖"},{id:"management-measure-number",scope:"chapter",category:"professional_chain",fixerDisposition:"manual",fixerDispositionReason:"需补责任主体/频次/台账/整改复查的语义补写,确定性路径不存在;且无 provenance,修复轮看不见"},{id:"closed-loop-density",scope:"full-document",category:"control_loop",fixerDisposition:"exempt",fixerDispositionReason:"纯度量信号:判据是闭环块密度对标 max(6,字数/1500),注释自述与评分同口径不阻断门禁;补闭环词还会撞 closure-phrase-density-cap 上限,不宜自动改"},{id:"cross-chapter-consistency",scope:"full-document",category:"fact_consistency"},{id:"process-spec-conflict",scope:"full-document",category:"fact_consistency",fixerDisposition:"fixed",fixerDispositionReason:"applyDeterministicConsistencyFixes 与检测端同判据同归属规则(collectLayerNumbers+buildSpecActionGate),已接线两条确定性链"},{id:"evidence-usage-coverage",scope:"full-document",category:"evidence_coverage",fixerDisposition:"manual",fixerDispositionReason:"缺陷是「未引用该类事实」,只能靠补写正文;fact-distribution-round 与 important-unplaced-facts 轮判据均不同源且不复检本 id"},{id:"paragraph-generic",scope:"full-document",category:"style",fixerDisposition:"manual",fixerDispositionReason:"判据=段落长度 + 10 词泛化表 + bge 具体性门;fillerParagraphIssues 用另一套 17 条词面 + 14 语义原型,同族不同判据"},{id:"construction-org-generic-language",scope:"chapter",category:"style",fixerDisposition:"fixed",fixerDispositionReason:"由 templating-repair 轮消费(该轮走 globalQualityGates 内联的 fillerDensityReport,非本 id 产出的 issue;本 gate 为内联检查的同族检测器,见幻影锚点收口说明)"},{id:"construction-org-control-loop",scope:"chapter",category:"control_loop"},{id:"construction-org-professional-chain",scope:"chapter",category:"professional_chain"},{id:"construction-org-consistency",scope:"full-document",category:"fact_consistency",fixerDisposition:"manual",fixerDispositionReason:"需按资料裁决哪个口径为真且涉及跨表改写;同族修复器(fixEquipmentBatchConflicts/fixLaborPeakConflict/resource-breakdown)判据均不同源"},{id:"construction-org-chapter-data-coverage",scope:"chapter",category:"evidence_coverage",fixerDisposition:"manual",fixerDispositionReason:"属「章内缺项目事实」的补写型缺陷,仅生成侧/人工可解"},{id:"construction-org-major-content",scope:"chapter",category:"professional_chain"},{id:"construction-org-division-section",scope:"chapter",category:"structure"},{id:"major-content-governance",scope:"full-document",category:"structure",fixerDisposition:"fixed",fixerDispositionReason:"仅清单口径词族有修复器(postReviewSurface.ts:313);表格承载正文族无,仍走终门禁"},{id:"construction-org-bonus-module",scope:"chapter",category:"professional_chain",fixerDisposition:"exempt",fixerDispositionReason:"加分项建议而非缺陷(代码自述为避免污染缺陷计分,只产出 info 级「高分模块」建议)"},{id:"chapter-dependency",scope:"chapter",category:"professional_chain",fixerDisposition:"manual",fixerDispositionReason:"需在指定章补写投入调配/工艺控制/应急闭环内容,属语义补写;且无 provenance"},{id:"document-delivery-score",scope:"full-document",category:"professional_chain",fixerDisposition:"exempt",fixerDispositionReason:"纯评分汇总载体(总分 x/10 的元信息),其内部调用的三个检测器各自已有 id 与处置,本 id 不产出缺陷"},{id:"generated-fact-verification",scope:"full-document",category:"fact_consistency",fixerDisposition:"manual",fixerDispositionReason:"反查失败数值的自动消除即删除式修复(P2-2 已明令禁止),补齐权威属资料侧动作——与 numeric-traceability 同口径"},{id:"numeric-traceability",scope:"full-document",category:"evidence_coverage",fixerDisposition:"manual",fixerDispositionReason:"修复器已按 P2-2 停用(删除式修复被明令禁止);补齐权威值属资料/配置侧动作"},{id:"table-arithmetic-consistency",scope:"full-document",category:"evidence_coverage"},{id:"duplicate-basic-info",scope:"full-document",category:"structure",fixerDisposition:"fixed",fixerDispositionReason:"fixDuplicateBasicInfoTables 覆盖重复表族;「表前重复逐项叙述」族未覆盖(已扩展锚定到该修复器)"},{id:"formal-style",scope:"full-document",category:"style"},{id:"tertiary-heading",scope:"full-document",category:"structure",deterministicSafe:!0},{id:"min-chapter-section",scope:"chapter",category:"structure",fixerDisposition:"fixed",fixerDispositionReason:"mergeDuplicateThematicSections 与检测共用桶键 classifyThematicSectionKey,接线 duplicate-theme-merge 轮;精确同名小节族另由 heading-duplicate-merge 覆盖"},{id:"planned-section-placement",scope:"chapter",category:"structure",fixerDisposition:"manual",fixerDispositionReason:"链尾确定性提升覆盖「降级为 H4」形态(delivery-structure-closure);整节漏写属写作缺项,交 LLM 定向补写小节(provenance 已打点)"},{id:"hollow-table-cell",scope:"full-document",category:"table",fixerDisposition:"manual",fixerDispositionReason:"按「表\xd7列」聚合报出,交 LLM 按列补真实值(同章正文通常已有同口径数据)"},{id:"schedule-duration-overrun",scope:"full-document",category:"fact_consistency",fixerDisposition:"manual",fixerDispositionReason:"按生效工期重排进度计划与节点天序(源头解析已取变更后口径,残留为写作期漂移)"},{id:"caliber-consistency",scope:"full-document",category:"fact_consistency",fixerDisposition:"manual",fixerDispositionReason:"写作硬约束(真值层)未遵循时在此暴露;交 LLM 按现行口径统一正文表述"},{id:"hazard-parameter-binding",scope:"full-document",category:"fact_consistency",fixerDisposition:"manual",fixerDispositionReason:"交 LLM 在危大判定处补本项目实际参数并给出阈值对照结论"},{id:"precise-fact-usage",scope:"full-document",category:"fact_consistency"},{id:"parameter-obligation-usage",scope:"full-document",category:"fact_consistency"},{id:"boq-placement",scope:"full-document",category:"evidence_coverage"},{id:"stage-phrasing",scope:"full-document",category:"fact_consistency",fixerDisposition:"manual",fixerDispositionReason:"阶段划分口径统一属语义改写,且该 issue 无 provenance,修复轮按 provenance 过滤消费不到"},{id:"emergency-section-depth",scope:"full-document",category:"structure"},{id:"boq-row-trace",scope:"full-document",category:"evidence_coverage",fixerDisposition:"exempt",fixerDispositionReason:"只产 warning,既不断阻断也不进人工清单(清单由 blockingIssues 构建);同轴真缺口另有 blocker 通道 boq-placement"},{id:"drawing-reference",scope:"full-document",category:"evidence_coverage"},{id:"web-evidence-leakage",scope:"full-document",category:"scope",fixerDisposition:"exempt",fixerDispositionReason:"warning 级度量信号不阻断、不进人工清单,且全仓不存在该词族的删除/改写函数"},{id:"formal-placeholder",scope:"full-document",category:"format",deterministicSafe:!0},{id:"prompt-example-leak",scope:"full-document",category:"format",fixerDisposition:"manual",fixerDispositionReason:"「疑似样例」删除必误伤(样例块可能撞合法正文),无实现且无消费轮"},{id:"degenerate-content",scope:"chapter",category:"style",fixerDisposition:"manual",fixerDispositionReason:"唯一可能消费它的章级重扫入口 lightweightChapterIssues 已按「删除无用代码」口径移除(全仓零调用);退化输出的修复等同重新生成小节"},{id:"planned-auto-spec-gate",scope:"full-document",category:"structure"},{id:"bid-composition-body-table",scope:"full-document",category:"structure",fixerDisposition:"fixed",fixerDispositionReason:"dismantleBodyTables 同判据 LLM 拆表改写;finalize 侧只重跑禁表分支(章级授权口径未覆盖)"},{id:"bid-composition-body-figure",scope:"full-document",category:"structure",fixerDisposition:"fixed",fixerDispositionReason:"removeUnwantedDrawingImages(markdownComposer.ts:1905)与检测共用 FIGURE_PLACEHOLDER_RE"},{id:"identity-marks-forbidden",scope:"full-document",category:"format",fixerDisposition:"manual",fixerDispositionReason:"需删/改写业绩获奖证书类敏感句,可自动化但未实现;当前只有写作期与修复提示词约束"},{id:"planned-structure",scope:"full-document",category:"structure"},{id:"table-caption",scope:"full-document",category:"format"},{id:"prompt-document-rule",scope:"full-document",category:"format",fixerDisposition:"fixed",fixerDispositionReason:"applyPromptDocumentRules 覆盖残留封面/目录/缺必需表/禁止词行;指令型标题、缺指定一级章节、缺关键词、字数不足族无实现"},{id:"local-adaptation-keyword",scope:"full-document",category:"evidence_coverage",fixerDisposition:"fixed",fixerDispositionReason:"仅 blocker 通道(工伤保险缺失)有修复器(postReviewSurface.ts:301);另两条属度量/增强项,不阻断"},{id:"boq-division-coverage",scope:"full-document",category:"evidence_coverage",fixerDisposition:"fixed",fixerDispositionReason:"enforceBoqDivisionCoverageInMethodChapters(postReviewSurface.ts:400)链尾确定性补写"},{id:"authority-audit-gap",scope:"full-document",category:"fact_consistency",fixerDisposition:"fixed",fixerDispositionReason:"numeric-verification 轮收敛(numericVerification.ts:131)。覆盖已被削弱:其确定性兜底 demoteUnsourcedNumericTokens 已按 P2-2 停用,只剩 LLM 一条路"},{id:"source-enumeration",scope:"full-document",category:"style",deterministicSafe:!0,fixerDisposition:"fixed",fixerDispositionReason:"cleanFormalSourcePhrases(deterministicStage5.ts:161)与检测共用同一词表;该 id 从未经 det() 登记,属漏登记"},{id:"meta-discourse-declaration",scope:"full-document",category:"style",deterministicSafe:!0},{id:"finish-thickness",scope:"full-document",category:"fact_consistency",deterministicSafe:!0},{id:"formula-residue",scope:"full-document",category:"format",deterministicSafe:!0},{id:"truncated-sentence",scope:"full-document",category:"format",deterministicSafe:!0},{id:"atlas-reference-phrase",scope:"full-document",category:"format",deterministicSafe:!0},{id:"block-structure-contract",scope:"chapter",category:"structure",fixerDisposition:"exempt",fixerDispositionReason:"写作期块级执行器门,返回计数不产出 ValidationIssue,无对象可被 FixerEntry 锚定(重写重试即其修复手段)"},{id:"block-fact-density",scope:"chapter",category:"evidence_coverage",fixerDisposition:"exempt",fixerDispositionReason:"写作期块级执行器门:不产出 ValidationIssue 只返回 BlockDensityAssessment,首轮阻断重写即其修复手段"},{id:"block-templating",scope:"chapter",category:"style",fixerDisposition:"exempt",fixerDispositionReason:"写作期块级执行器门:不产出 ValidationIssue 只返回 BlockTemplatingVerdict;终检侧由 templating-repair 轮承载"},{id:"block-attribution-quantification",scope:"chapter",category:"professional_chain",fixerDisposition:"exempt",fixerDispositionReason:"写作期块级执行器门:不产出 ValidationIssue 只返回 AttributionQuantificationVerdict"},{id:"block-numeric-reconciliation",scope:"chapter",category:"fact_consistency",fixerDisposition:"exempt",fixerDispositionReason:"写作期块级执行器门:不产出 ValidationIssue 只返回 NumericReconciliation,阻断重写即修复手段"},{id:"block-format-constraints",scope:"chapter",category:"format",fixerDisposition:"exempt",fixerDispositionReason:"写作期块级执行器门:不产出 ValidationIssue 只返回命中行;终检侧同词表门为 formal-text-gate"}];function s(a){return r.find(b=>b.id===a)}function t(a,b){let c=new Set(a??[]),d=new Set(b??[]);if(c.size!==d.size)return!1;for(let a of c)if(!d.has(a))return!1;return!0}function u(){let a=[],b=[...h,...i,...k,...j,...m];for(let c of b){let b=s(c.anchoredTo);if(!b){a.push(`修复器 ${c.id} 锚定检测器 ${c.anchoredTo} 未在注册表声明(检测定位=修复定位强制同源)`);continue}for(let d of(t(c.authorities,b.authorities)||a.push(`修复器 ${c.id}(authorities=${JSON.stringify(c.authorities??[])})与锚定检测器 ${c.anchoredTo}(authorities=${JSON.stringify(b.authorities??[])})权威口径不一致`),c.alsoAnchoredTo??[])){let b=s(d);b?t(c.authorities,b.authorities)||a.push(`修复器 ${c.id}(authorities=${JSON.stringify(c.authorities??[])})与扩展锚定检测器 ${d}(authorities=${JSON.stringify(b.authorities??[])})权威口径不一致`):a.push(`修复器 ${c.id} 扩展锚定检测器 ${d} 未在注册表声明(检测定位=修复定位强制同源)`)}if("llm-patch"===c.kind&&!c.patchGuard){a.push(`LLM patch 修复器 ${c.id} 未声明 patchGuard(修复过程会重新引入已知坏内容,必须预检)`);continue}for(let b of c.patchGuard?.detectors??[]){let d=s(b);d?d.deterministicSafe||a.push(`修复器 ${c.id} patchGuard 引用检测器 ${b} 未标记 deterministicSafe(patchGuard 只收录零误伤确定性检测器)`):a.push(`修复器 ${c.id} patchGuard 引用检测器 ${b} 未在注册表声明`)}}for(let[b,c]of h.entries())h.slice(0,b).some(a=>a.id===c.id)&&a.push(`确定性修复器锚定声明重复:${c.id}`);let c=new Set(d.aW.map(a=>a.key));for(let b of c)h.some(a=>a.id===b)||a.push(`确定性修复器 ${b} 已接入 SURFACE_FIX_STEPS 但未在 DETERMINISTIC_FIXER_ANCHORS 声明锚定检测器`);for(let b of h)c.has(b.id)||a.push(`确定性修复器锚定声明 ${b.id} 无对应 SURFACE_FIX_STEPS 键(声明多余或键已改名)`);for(let[b,c]of i.entries())i.slice(0,b).some(a=>a.id===c.id)&&a.push(`数值裁决器修复器声明重复:${c.id}`);for(let[b,c]of k.entries())k.slice(0,b).some(a=>a.id===c.id)&&a.push(`章草稿级修复器声明重复:${c.id}`);for(let[b,c]of j.entries())j.slice(0,b).some(a=>a.id===c.id)&&a.push(`链内确定性修复器声明重复:${c.id}`);let l=new Set([...h,...i,...k,...m].map(a=>a.id));for(let b of j)l.has(b.id)&&a.push(`链内确定性修复器 ${b.id} 与其它声明表重名(FixerEntry.id 须全局唯一,否则按 id 追溯修复器产生歧义)`);for(let b of r)b.category&&g.has(b.category)||a.push(`检测器 ${b.id} 声明了非法 category(当前=${b.category||"缺失"};合法值:${[...g].join("、")})`);if(a.push(...function(a){let b=[],c=new Set;for(let b of a.fixers)for(let a of(c.add(b.anchoredTo),b.alsoAnchoredTo??[]))c.add(a);let d=new Set(a.pending);for(let c of(d.size!==a.pending.length&&b.push("PENDING_FIXER_DISPOSITION 存在重复 id(欠账清单须唯一)"),d))a.detectors.some(a=>a.id===c)||b.push(`PENDING_FIXER_DISPOSITION 声明了未登记的检测器 ${c}(已改名或已删除,请同步移出欠账清单)`);for(let f of a.detectors){let a=c.has(f.id),g=f.fixerDisposition;if(d.has(f.id)){g?b.push(`检测器 ${f.id} 已完成处置声明(${g})却仍在 PENDING_FIXER_DISPOSITION 中——请从欠账清单移出`):a&&b.push(`检测器 ${f.id} 已有修复器锚定却仍在 PENDING_FIXER_DISPOSITION 中——请从欠账清单移出`);continue}if(!g){a?f.fixerDispositionReason&&b.push(`检测器 ${f.id} 写了 fixerDispositionReason 却未声明 fixerDisposition(说明须挂在明确处置上)`):b.push(`检测器 ${f.id} 既无修复器锚定、也未声明 fixerDisposition(孤儿必须显式 'exempt' 或 'manual' 并说明理由,不得沉默)`);continue}if(!e.has(g)){b.push(`检测器 ${f.id} 声明了非法 fixerDisposition(当前=${g};合法值:${[...e].join("、")})`);continue}"fixed"!==g||a||b.push(`检测器 ${f.id} 声明 fixerDisposition='fixed' 但无任何 FixerEntry 锚定它(声明与事实不符)`),"fixed"!==g&&(a&&b.push(`检测器 ${f.id} 声明 fixerDisposition='${g}' 但已有修复器锚定——声明与事实不符(应改为 'fixed' 或移除多余锚定)`),f.fixerDispositionReason?.trim()||b.push(`检测器 ${f.id} 声明 fixerDisposition='${g}' 但未给出理由(exempt/manual 必须书面说明为何不需要修复器)`))}return b}({detectors:r,fixers:b,pending:f})),a.length>0)throw Error(`检测器/修复器注册表一致性校验失败(${a.length} 项):
|
|
171
|
+
${b.content}`;return Math.min(1.8,.16*[...new Set([a.title,...a.sections||[],...a.requiredFacts].flatMap(a=>a.split(/[\s、,,。;;::()()《》【】-]+/u)).map(a=>a.trim()).filter(a=>a.length>=2).slice(0,36))].filter(a=>c.includes(a)).length)}function m(a){return`${a.sectionTitle||""}${a.content}`.slice(0,600)}function n(a,b,c,d){let f=b.map(b=>{let d=(0,e.A1)(b,a.requiredFacts)*k(a,b.processingType)+l(a,b),f=c.semantic?c.semantic.similarity(c.semantic.queryText,m(b)):0;return{...b,score:.5*d+10*f}});return(0,e.QR)(f,c,d)}function o(a,b,c){if(c<=0||b.length<=c)return b;let d=b.map(b=>({item:b,lexical:(0,e.A1)(b,a.requiredFacts)*k(a,b.processingType)+l(a,b)}));return d.sort((a,b)=>b.lexical-a.lexical),d.slice(0,c).map(a=>a.item)}function p(a,b,c){let d=(a.sections||[]).slice(0,10).join(" "),e=a.requiredFacts.slice(0,10).join(" "),f=a.title.split(/[、,,与和及]+/u).map(a=>a.trim()).filter(a=>a.length>=4);return[...new Set([...f.length>=2?[`${a.title} ${d} ${e}`.trim(),...f.map(b=>`${b} ${(a.sections||[]).slice(0,6).join(" ")}`.trim()),`${f.slice(0,3).join(" ")} ${e}`.trim()]:[`${a.title} ${d} ${e}`.trim()],...b,...c].filter(Boolean))]}async function q(a){if((0,g.Te)(a.signal),0===a.scopedFilePaths.length)return[];let b=`${a.chapter.title} ${a.sectionTitle}`.trim(),c=await a.manager.search(a.projectRoot,b,{scope:"project",filters:{filePaths:a.scopedFilePaths,materialRoots:a.scopedMaterialRoots??(0,d.materialRootsOfFiles)(a.scopedFilePaths)},limit:20,weights:j(b),generationMode:!0});return(0,e.QR)(c.results.map(b=>({chapterId:a.chapter.id,filePath:b.filePath,score:b.score+1.2,content:b.content,roleId:a.fileRoleByPath.get(b.filePath),processingType:a.fileProcessingByPath.get(b.filePath),sectionTitle:b.sectionTitle,source:"section-evidence"})),{preservePinned:!0})}},65667:(a,b,c)=>{c.d(b,{AK:()=>s,Rh:()=>u,Ti:()=>y,_H:()=>x,j4:()=>r,re:()=>w,tx:()=>t});let d=/^(?:为|达|共|约|计|配置|共计|总计|合计)$/u,e=/作业人员|施工人员|人员配置|班组|施工组|每村|分组|编组|编入|队伍/u,f=/^(?:为|达|共|约|计|配置|共计|总计|合计|投入|配备|启用)$/u,g=/^[))、::,,\s]{0,2}(?:混凝土|砼)?\s*(\d+(?:\.\d+)?)\s*(m3|m³|立方米|方|m2|m²|㎡|平方米|延长米|米|m|kg|千克|公斤|t|吨|套|个|块|根|只|组|件|片|樘|扇|盏|座|台|处|项|条|副|对|株)(?![A-Za-z0-9²³])/u,h=/^([^0-9]{0,2}?)(\d+(?:\.\d+)?)\s*人/u,i=/^([^0-9]{0,2}?)(\d+(?:\.\d+)?)\s*台/u,j=/阶段[^。;\n]{0,30}?(\d+(?:\.\d+)?)\s*人/u,k="机|吊|泵|车|夯",l=/[为配置备启投拟需计划增租赁购采设进出按据由从向对把被使等该此其每各和与及或在是将宜并可未非不另又还有部现中套余的用入要场阶段]/u,m=/^(?:[台辆部具个组米吨座])/u,n=/^(?:主力|主要|常用|配套|相关|专用|通用|各类|多种|其余|剩余|上述|前者|后者)/u,o=/(?:备用|租赁|租用)/u,p=/不使用|不采用|不配置|无需|未采用|不得使用|禁止使用/u,q=RegExp(`([\\p{Script=Han}A-Za-z0-9]{2,8}(?:${k}))$`,"u");function r(a){let b=a.replace(/\s+/gu,""),c=b;for(let a=b.length-1;a>=0;a-=1)if(l.test(b[a])){if(o.test(b.slice(0,a+1)))return;c=b.slice(a+1);break}if(!(c.length<2||m.test(c))&&!n.test(c))return c}function s(a){let b=[],c=RegExp(`([\\p{Script=Han}A-Za-z0-9]{2,8}(?:${k}))[^\\d。;;\\n|、,]{0,12}(\\d+)\\s*(?:台|套|辆)`,"gu");for(let d of a.matchAll(c)){let c=d.index??0,e=Math.max(a.lastIndexOf(",",c),a.lastIndexOf("。",c),a.lastIndexOf(";",c),a.lastIndexOf(";",c),a.lastIndexOf("\n",c),a.lastIndexOf("、",c));if(p.test(a.slice(e+1,c+d[1].length)))continue;let f=r(d[1]);if(!f)continue;let g=Number(d[2]);Number.isFinite(g)&&!(g<=0)&&b.push({name:f,raw:d[1],count:g,start:c,text:d[0]})}return b}function t(a){let b=new Set,c=RegExp(`([\\p{Script=Han}A-Za-z0-9]{2,8}(?:${k}))`,"gu");for(let d of a.matchAll(c)){let a=r(d[1]);a&&b.add(a)}return[...b]}function u(a){let b=q.exec(a);if(b)return r(b[1])}function v(a){let b=(a||"").replace(/\s+/gu,"");return b?/m[3³]|立方米|方/u.test(b)?"volume":/m[2²]|㎡|平方米/u.test(b)?"area":/m|米/u.test(b)?"length":/吨|千克|公斤|kg|^t$/u.test(b)?"mass":/套|个|块|根|只|组|件|片|樘|扇|盏|座|台|处|项|条|副|对|株/u.test(b)?"count":null:null}function w(a){if(!a)return;let b=(a.resources?.labor?.composition??[]).filter(a=>a.trade&&Number.isFinite(a.count)&&a.count>0).map(a=>({trade:a.trade,count:a.count})),c=new Map;for(let b of a.resources?.equipment??[]){if(!b.name)continue;let a=c.get(b.name);a?a.push(b):c.set(b.name,[b])}let d=[];for(let[a,b]of c)for(let c of b){let e=c.quantity&&c.quantity>0?c.quantity:Math.round(((c.min??1)+(c.max??c.min??1))/2);Number.isFinite(e)&&!(e<=0)&&d.push({name:a,spec:c.spec||"",count:e,variantCount:b.length})}let e=new Map;for(let b of a.materialsPlan??[]){if(!b.name)continue;let a=e.get(b.name);a?a.push(b):e.set(b.name,[b])}let f=[];for(let[a,b]of e)if(!(b.length<2))for(let c of b){if(!c.spec||!Number.isFinite(c.quantity)||(c.quantity??0)<=0)continue;let d=v(c.unit||"");d&&f.push({name:a,spec:c.spec,quantity:c.quantity,unit:c.unit||"",family:d,variantCount:b.length})}return{composition:b,equipment:d,materials:f}}function x(a,b){let c=[],k=new Set(b.composition.map(a=>a.trade)),l=(a,b)=>{let c=[];if(!b)return c;let d=0;for(;d<a.length;){let e=a.indexOf(b,d);if(-1===e)break;c.push(e),d=e+b.length}return c},m=(a,b)=>{let c=[];if(!b)return c;let d=0;for(;d<a.length;){let e=a.indexOf(b,d);if(-1===e)break;let f=a[e-1]||"",g=`${f}${b}`;if(/[\u4e00-\u9fa5]/u.test(f)&&[...k].some(a=>a.length>b.length&&a.includes(g))){d=e+b.length;continue}c.push(e),d=e+b.length}return c},n=function(a){let b=[],c=0;for(;c<=a.length;){let d=a.indexOf("\n",c),e=-1===d?a.length:d;if(b.push({start:c,end:e}),-1===d)break;c=d+1}let d=/^\s*(?:#|\||>)/u,e=[],f=0;for(;f<b.length;){let c=b[f],g=a.slice(c.start,c.end);if(""===g.trim()||d.test(g)){f+=1;continue}let h=f;for(;h+1<b.length;){let c=b[h+1],e=a.slice(c.start,c.end);if(""===e.trim()||d.test(e))break;h+=1}e.push({start:c.start,end:b[h].end}),f=h+1}return e}(a),o=[];for(let b of n){let c=a.slice(b.start,b.end);if(!c.includes("阶段"))continue;let e=[];for(let a of c.matchAll(RegExp(j.source,"gu")))e.push({start:b.start+(a.index??0),total:Number(a[1])});if(0!==e.length)for(let[c,f]of e.entries()){let g=f.start,i=e[c+1]?.start??b.end,j=a.slice(g,i),l=0;for(let a of k)for(let b of m(j,a)){let c=j.slice(b+a.length,b+a.length+12),e=h.exec(c);e&&(!e[1]||d.test(e[1]))&&(l+=Number(e[2]))}l>0&&l===f.total&&o.push({start:g,end:i})}}let p=a=>o.some(b=>a>=b.start&&a<b.end);for(let f of b.composition)for(let b of m(a,f.trade)){if(p(b))continue;let g=a.slice(0,b),i=Math.max(g.lastIndexOf("。"),g.lastIndexOf(";"),g.lastIndexOf(";"),g.lastIndexOf("\n"));if(e.test(g.slice(i+1)))continue;let j=a.slice(b+f.trade.length,b+f.trade.length+12),k=h.exec(j);if(!k||k[1]&&!d.test(k[1]))continue;let l=Number(k[2]);if(l===f.count)continue;let m=b+f.trade.length+k[1].length;c.push({kind:"trade",label:`工种构成 ${f.trade}`,start:m,end:m+k[2].length,actual:l,expected:f.count,message:`工种构成人数与蓝图权威不一致:${f.trade} 正文 ${l} 人,蓝图权威 ${f.count} 人`,suggestion:"工种构成表必须与蓝图工种构成唯一口径一致,各工种人数不得自行改写。"})}for(let d of b.equipment)if(1===d.variantCount)for(let b of l(a,d.name)){let e=a.slice(b+d.name.length,b+d.name.length+12),g=i.exec(e);if(!g||g[1]&&!f.test(g[1]))continue;let h=Number(g[2]);if(h===d.count)continue;let j=b+d.name.length+g[1].length;c.push({kind:"equipment",label:`机械台数 ${d.name}`,start:j,end:j+g[2].length,actual:h,expected:d.count,message:`机械台数与蓝图权威不一致:${d.name} 正文 ${h} 台,蓝图权威 ${d.count} 台`,suggestion:"机械投入计划必须与蓝图机械清单一致,台数不得自行改写。"})}else if(d.spec)for(let b of l(a,d.spec)){let e=a.lastIndexOf("\n",b)+1,f=a.indexOf("\n",b);-1===f&&(f=a.length);let g=a.slice(e,f),h=b-e,i=e+Math.max(g.lastIndexOf(",",h)+1,g.lastIndexOf("。",h)+1,g.lastIndexOf(";",h)+1);if(!a.slice(i,f).includes(d.name))continue;let j=b+d.spec.length,k=a.slice(j,j+12),l=/(\d+(?:\.\d+)?)\s*台/u.exec(k);if(!l)continue;let m=Number(l[1]);if(m===d.count)continue;let n=j+(l.index??0);c.push({kind:"equipment",label:`机械台数 ${d.name}(${d.spec})`,start:n,end:n+l[1].length,actual:m,expected:d.count,message:`机械台数与蓝图权威不一致:${d.name}(${d.spec}) 正文 ${m} 台,蓝图权威 ${d.count} 台`,suggestion:"机械投入计划必须与蓝图机械清单一致,台数不得自行改写。"})}for(let d of b.materials)for(let b of l(a,d.spec)){let e=a.lastIndexOf("\n",b)+1,f=a.indexOf("\n",b);-1===f&&(f=a.length);let h=a.slice(e,f);if(/^\s*\|?\s*(?:合计|小计|总计|累计)/u.test(h))continue;let i=b-e,j=e+Math.max(h.lastIndexOf(";",i),h.lastIndexOf(";",i),h.lastIndexOf("。",i))+1,k=h.indexOf(";",i),l=h.indexOf(";",i),m=h.indexOf("。",i),n=Math.min(-1===k?h.length:k,-1===l?h.length:l,-1===m?h.length:m);if(!a.slice(j,e+n).includes(d.name))continue;let o=b+d.spec.length,p=a.slice(o,o+16),q=g.exec(p);if(!q||v(q[2])!==d.family)continue;let r=Number(q[1]);if(r===d.quantity)continue;let s=o+q[0].indexOf(q[1]);c.push({kind:"material",label:`材料拆分 ${d.name}(${d.spec})`,start:s,end:s+q[1].length,actual:r,expected:d.quantity,message:`材料规格拆分数量与蓝图权威不一致:${d.name}(${d.spec})正文 ${r}${d.unit},蓝图权威 ${d.quantity}${d.unit}`,suggestion:"同名多规格材料的拆分数量必须与清单逐项一致,不得自行分配。"})}return c}function y(a,b){if(!b)return{markdown:a,fixedCount:0,details:[],residualCount:0};let c=x(a,b);if(0===c.length)return{markdown:a,fixedCount:0,details:[],residualCount:0};let d=[...c].sort((a,b)=>b.start-a.start),e=a,f=[],g=1/0;for(let a of d)a.end>g||(e=`${e.slice(0,a.start)}${a.expected}${e.slice(a.end)}`,f.push(a),g=a.start);let h=x(e,b);return h.length>0?{markdown:a,fixedCount:0,details:[],residualCount:h.length}:{markdown:e,fixedCount:f.length,details:f.map(a=>`${a.label} ${a.actual}→${a.expected}`),residualCount:0}}},71678:(a,b,c)=>{c.d(b,{Hf:()=>t,M8:()=>n,Xp:()=>r,a0:()=>m,dn:()=>s,hM:()=>l,mI:()=>v,xb:()=>q});var d=c(37047),e=c(41991),f=c(70208),g=c(30111);let h=["对与评标活动有关的工作人员的纪律要求","评标委员会成员与投标人接触的限制","评标纪律与廉洁从业承诺要求","评审争议处理与投标澄清配合程序","评审结果确认与中标公示流程","评标办法与分值构成说明","异常低价评审与计算方式说明","清单计量与报价口径约定","投标文件实质性响应要求","投标保证金缴纳与退还程序","开标程序与投标文件递交截止时间","评标期间行为管控与资料闭环","预付款与进度款支付比例约定","履约担保与保证金缴纳退还约定","价格波动与合同价款调整约定","暂列金额与暂估价使用约定","税费计取与发票结算约定","违约责任与罚款赔偿条款"],i=["劳动力配置计划与高峰期人数安排","施工质量保证措施与验收标准","安全生产管理与教育培训要求","施工进度计划与关键线路安排","材料设备采购进场计划与检验要求","施工现场文明施工与环境保护管理","劳动纪律与班组作业管理制度","施工机械设备配置与维护保养计划","农民工工资支付保障与劳务实名制管理","材料采购质量证明与进场验收管理","工期承诺与进度考核奖惩管理"],j=/评标|投标|行贿|打招呼|递条子|廉洁|串标|围标|弄虚作假|干扰评标|纪律|澄清|中标|报价|清单计量|评审|保证金|开标|递交|争议|异常低价|评标基准价|预付款|进度款|担保|价格波动|材料调差|暂列金额|暂估价|计税|税金|发票|违约|业绩证明|类似(?:工程)?业绩|获奖|荣获|协会颁发|营业执照|资质证书|安全生产许可证|认证证书|管理体系认证|审计报告|信用等级|信用评价|社保证明|无行贿犯罪|中标查询|中标公示|中标结果|电子交易系统|公共资源交易|质疑投诉|评标委员会/u;function k(a){let b=a.sectionTitle?.trim()||"",c=(a.content||"").replace(/\s+/gu," ").slice(0,400);return b?`${b}。${c}`:c}function l(a){let b=a.sectionTitle?.trim()||a.content.replace(/\s+/gu,"").slice(0,60);return`${a.filePath}::${b}`}async function m(a,b){if(0===a.length)return{safe:[],excluded:[]};let c=a.filter(a=>j.test(k(a)));if(0===c.length)return{safe:[...a],excluded:[]};let e=c.map(k),f=await (0,d.Mv)(e,[...h],b),g=await (0,d.Mv)(e,[...i],b),l=new Set;for(let a of c){let b=k(a),c=Math.max(...h.map(a=>f(b,a))),d=Math.max(...i.map(a=>g(b,a)));c>=.6&&c>d&&l.add(a)}return{safe:a.filter(a=>!l.has(a)),excluded:[...l]}}async function n(a){return(0,e.A)({prototypes:[...h],negativePrototypes:[...i],threshold:.6,embedDocuments:a})}function o(a){return a.replace(/[\s\p{P}\p{S}]+/gu,"").toLowerCase()}let p=/^(?:我公司|本公司|我方|投标人|供应商|承包人)(?:就|对)[^,。;]{0,22}(?:均属|属实|真实有效|承担|负责|无异议|为准)$/u;function q(a){let b=a.trim().replace(/\s+/gu,"");if(!b||(0,f.mq)(b)||p.test(b))return!0;let c=o(b);if(h.some(a=>o(a)===c))return!0;let d=b.replace(/农民工工资保证金|工资保证金/gu,""),e=/评标|投标|开标|中标|评审|保证金|串标|围标|廉洁|询标|递交/u.test(d),g=/纪律|监督|争议|澄清|程序|行为|管控|限制|接触|公示|承诺|响应|办法/u.test(b);return!!(e&&g||/异常低价|评标基准价/u.test(b)||/电子保函|保函|投标保证金|履约担保|履约保证金|保证金(?:的)?(?:缴纳|退还|提交|方式)/u.test(b)&&!/农民工|工资|专用账户|实名|考勤|劳资/u.test(b)||/暂列金额|暂估价|材料调差/u.test(b)||/预付款(?:支付|比例|约定|申请|保函)|进度款(?:支付|申请|计量|约定)|履约担保/u.test(b)||/价格波动(?:调整|约定)|违约金(?:条款|约定)|计税|税金(?:计取|结算)|发票(?:开具|结算)/u.test(b))||r(b)}function r(a){let b=a.trim().replace(/\s+/gu,"");if(!b)return!1;let c=b.replace(/^\d{1,3}(?:[..]\d{1,3})*[、..]?/u,"");return!!(/^具备(?:有效|相应|满足)/u.test(c)||/^(?:须|应|需|得)?提供[^,,。;]{0,12}(?:证明|材料|文件|证件|证书|报告)/u.test(c))||"technical"!==(0,g.mz)(b)||!!/营业执照|资质证书|安全生产许可证|资格预审|资格审查|资质审查|财务状况|业绩证明|业绩要求|银行资信|审计报告|信用记录|信用评价|不良行为记录|联合体投标|联合体协议/u.test(b)&&!/施工|技术|方案|措施|管理|控制|验收|工艺|流程|计划|组织|进度|质量|工期|文明|绿色|环保|节能|材料|设备|机械|人员|劳务|检验|检测|试验|保证|落实|制度/u.test(b)}function s(a){let b=a.trim().replace(/\s+/gu,"");return!!b&&(!!/接受分包/u.test(b)||!!/投标人|投标方|投标企业|承包人资格|资格要求|资格审查|资格预审|资质要求|资质条件|资质等级|资格条件|财务状况|业绩要求|业绩证明|信用要求|联合体|社保/u.test(b)&&/营业执照|资质证书|安全生产许可证|级及以上资质|注册建造师|建造师注册证书|安全生产考核合格证书|职称证书|财务状况|财务报告|审计报告|银行资信|业绩证明|类似业绩|信用记录|信用评价|不良行为记录|投标保证金|履约保证金|社保|在建工程|人员组成表/u.test(b))}function t(a){let b=a.trim().replace(/\s+/gu,"");return!!b&&!!(/你方/u.test(b)&&/我方/u.test(b)||/发包人[^。;;]{0,30}?(?:审批|批准|备案|同意|许可)/u.test(b)||/^[\d((、..\s]{0,8}监理人/u.test(b)&&/(?:提交|报送|审批|延期|通知|检查|验收)/u.test(b)||/(?:特别约定|有关约定|的约定)[::]/u.test(b)||/通用(?:合同)?条款/u.test(b)||/(?:承包人|发包人|监理人)/u.test(b)&&/(本合同|报送|提交|审批|备案|更换|违约责任|撤换|拒绝|保管|验收记录|签字|颁发|教育|穿戴|定期检查|授权范围|驻场|在岗)/u.test(b))}async function u(a){let b=a.sections.filter(a=>a?.trim());if(0===b.length)return[];let c=b.filter(a=>!q(a)),e=c.filter(a=>j.test(a));if(0===e.length)return c;let f=`${a.chapterTitle} ${a.chapterPurpose||""}`.trim(),g=await (0,d.Mv)(e,[...h],a.embedDocuments),k=await (0,d.Mv)(e,f?[f]:[],a.embedDocuments),l=await (0,d.Mv)(e,[...i],a.embedDocuments),m=new Set;for(let a of e){let b=Math.max(...h.map(b=>g(a,b))),c=f?k(a,f):0,d=Math.max(...i.map(b=>l(a,b)));b>=.6&&b>c&&b>d&&m.add(a)}return c.filter(a=>!m.has(a))}async function v(a,b){return Promise.all(a.map(async a=>({...a,sections:await u({sections:a.sections||[],chapterTitle:a.title,chapterPurpose:a.purpose,embedDocuments:b})})))}},73859:(a,b,c)=>{c.d(b,{$i:()=>f,E1:()=>j,d2:()=>i,oC:()=>g,p4:()=>d,rF:()=>h});let d={id:"default_general_document",name:"通用文档",factFields:[{id:"document_identity",name:"对象名称",aliases:["项目名称","工程名称","文档名称","任务名称","招标项目名称","建设项目名称"],category:"identity",cardinality:"single",derivationPolicy:"source_only",usagePolicy:"must_use",confidencePolicy:{minForGeneration:.75,minForValidation:.85,allowPathOnly:!1},conflictPolicy:"strict"},{id:"schedule_requirement",name:"周期要求",aliases:["计划工期","工期","周期要求","进度节点要求","开工日期","竣工日期"],category:"schedule",cardinality:"single",derivationPolicy:"source_only",usagePolicy:"must_use",confidencePolicy:{minForGeneration:.7,minForValidation:.8,allowPathOnly:!1},conflictPolicy:"strict"},{id:"quality_requirement",name:"质量要求",aliases:["质量要求","质量标准","验收要求","评价标准"],category:"quality",cardinality:"multiple",derivationPolicy:"source_only",usagePolicy:"use_if_relevant",confidencePolicy:{minForGeneration:.65,minForValidation:.75,allowPathOnly:!1},conflictPolicy:"allow_multiple"},{id:"safety_requirement",name:"安全合规要求",aliases:["安全要求","安全合规要求","风险控制要求","合规要求"],category:"safety",cardinality:"multiple",derivationPolicy:"source_only",usagePolicy:"use_if_relevant",confidencePolicy:{minForGeneration:.65,minForValidation:.75,allowPathOnly:!1},conflictPolicy:"allow_multiple"},{id:"technical_parameter",name:"技术参数",aliases:["技术参数","参数规格范围","规格","型号","尺寸","标准编号","材料设备"],category:"technical",cardinality:"multiple",derivationPolicy:"source_only",usagePolicy:"must_use",confidencePolicy:{minForGeneration:.7,minForValidation:.8,allowPathOnly:!1},conflictPolicy:"allow_multiple"},{id:"resource_plan",name:"资源配置",aliases:["劳动力","机械","检测设备","应急物资","资源配置","人员配置"],category:"resource",cardinality:"multiple",derivationPolicy:"plan_inferable",usagePolicy:"use_if_relevant",confidencePolicy:{minForGeneration:.45,minForValidation:.55,allowPathOnly:!1},conflictPolicy:"allow_multiple"},{id:"commercial_data",name:"商务数据",aliases:["报价","单价","合价","综合单价","预留金","税率","金额","利润"],category:"commercial",cardinality:"multiple",derivationPolicy:"forbidden",usagePolicy:"do_not_use",confidencePolicy:{minForGeneration:1,minForValidation:1,allowPathOnly:!1},conflictPolicy:"ignore"},{id:"rule_requirement",name:"规则要求",aliases:["规则要求","变更说明","实施范围","对象范围","结构化数据范围"],category:"compliance",cardinality:"multiple",derivationPolicy:"source_only",usagePolicy:"use_if_relevant",confidencePolicy:{minForGeneration:.6,minForValidation:.7,allowPathOnly:!1},conflictPolicy:"allow_multiple"}],forbiddenValuePatterns:[/投标报价|报价明细|单价|合价|综合单价|预留金|暂列金额|税率|增值税|利润|结算/u],diagnosticValuePatterns:[/OCR|识别错误|乱码|无法确认|疑似|不确定|绑定片段|兜底|知识库|提示词|后台|文件路径|PDF|DWG|Excel/u,/^#+\s*/u,/^见(?:招标|投标人|前附|补疑|图纸|清单|文件|资料|公告|须知)/u],lowConfidenceValuePatterns:[/无法确认|疑似|不确定|需复核|文字模糊|语义断裂|识别错误|乱码/u]},e={...d,id:"construction_organization_design",name:"施工组织设计"};function f(a,b=""){let c=`${a?.id||""} ${a?.name||""} ${a?.category||""} ${a?.description||""} ${a?.outputTitle||""} ${b}`;return/施工组织设计|施工方案|危大工程|人、材、机|安全文明施工/u.test(c)?e:d}function g(a,b){if(b)return a.factFields.find(a=>a.name===b||a.aliases.some(a=>b.includes(a)||a.includes(b)))}function h(a,b){return a.forbiddenValuePatterns.some(a=>a.test(b))}function i(a,b){return a.diagnosticValuePatterns.some(a=>a.test(b))}function j(a,b){return a.lowConfidenceValuePatterns.some(a=>a.test(b))}},75251:(a,b,c)=>{function d(a){return a.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&")}function e(a){let b=Number.parseFloat(a.replace(/[,,\s]/gu,""));return Number.isFinite(b)?b:void 0}function f(a,b){return Math.abs(a-b)<=.01+1e-6*Math.max(Math.abs(a),Math.abs(b))}function g(a,b){return!!f(a,b)||Number.isInteger(a)&&(Math.trunc(b)===a||Math.round(b)===a)}function h(a){return a.replace(/\s+/gu,"").toLowerCase()}function i(a){let b=(a||"").trim().toLowerCase();return({米:"m",m:"m",公里:"km",km:"km",千米:"km",平方米:"m2","㎡":"m2","m\xb2":"m2",m2:"m2",平方:"m2",立方米:"m3","m\xb3":"m3",m3:"m3",方:"m3",吨:"t",t:"t",千克:"kg",kg:"kg"})[b]??b}c.d(b,{As:()=>j,C4:()=>B,NN:()=>u,az:()=>J,e:()=>G,uv:()=>t});let j=/(?:每|厚度|宽度|高度|深度|长度|直径|间距|净距|坡度|标高|偏差|误差|系数|等级|龄期|温度|含水率|压实度|密度|功率|电压|照度|色温|耐火|强度|抗渗|配合比|搭接|错缝|含水|埋深|覆土|预留|预埋|伸缩|沉降|变形|垂直度|平整度|倾角|坡度|模数|螺距|壁厚|净空|层高|埋设|位置|距离|半径|周长|坡度|距地|距墙|距顶|距梁|距楼|离地|离墙)/u,k=/^(?:以上|以下|以内|左右|及[^。;;,,]{0,8}(?:以上|以下|以内|左右))/u;function l(a){let b=[],c=[],d=new Map,g=new Map,i=a.billFactLock;if(i)for(let a of i.entries){let f=Number.isFinite(a.quantity)?a.quantity:void 0;for(let g of(void 0!==f&&(b.push({name:(a.name||"").trim(),value:f,unit:(a.unit||"").trim(),description:a.description||"",source:"bill"}),c.push(f)),a.specQuantityPairs||[])){let b=(g.spec||"").replace(/\s+/gu,"").toLowerCase(),f=/^([\d,,]+(?:\.\d+)?)\s*(.*)$/u.exec((g.quantity||"").trim()),h=f?e(f[1]):void 0;if(!b||void 0===h)continue;let i=d.get(b)||[];i.push({value:h,unit:(f?.[2]||"").trim(),entryName:a.name,spec:(g.spec||"").trim()}),d.set(b,i),c.push(h)}}for(let[d,e]of Object.entries(a.blueprintData?.quantities??{})){if("number"!=typeof e?.value||!Number.isFinite(e.value))continue;for(let a of(b.push({name:d.trim(),value:e.value,unit:(e.unit||"").trim(),description:"",source:"blueprint"}),c.push(e.value),e.groups??[]))c.push(a.value);let a=e.specBreakdown??[];if(a.length>=2){let b=a.reduce((a,b)=>a+b.value,0);for(let i of(g.set(d.trim(),{value:e.value,unit:(e.unit||"").trim(),specs:new Map(a.map(a=>[h(a.spec),a.value])),breakdown:a.map(a=>({spec:a.spec,value:a.value})),partitioned:f(b,e.value)}),a))c.push(i.value)}}return!function(a,b){if(!a)return;let c=a=>{if("number"==typeof a){Number.isFinite(a)&&b.push(a);return}if("string"==typeof a){for(let c of a.matchAll(/\d+(?:\.\d+)?/gu))b.push(Number.parseFloat(c[0]));return}if(Array.isArray(a))return void a.forEach(c);a&&"object"==typeof a&&Object.values(a).forEach(c)};[a.project,a.schedule,a.quality,a.safety,a.resources,a.preciseFacts,a.bills,a.drawings,a.rules,a.specifications,a.tables].forEach(c)}(a.factsModel,c),{entries:b,numberPool:c,specValues:d,aggregateSpecs:g}}let m=/(?:合计|共计|总计|总共|总量|总数|总长|全长|总长度|总数量|总面积|总重量|小计)(?:为|达|约|共|计)?\s*([\d,,]+(?:\.\d+)?)\s*(立方米|m³|m3|平方米|㎡|m²|m2|公里|千米|km|kg|吨|t|座|个|套|处|盏|棵|株|樘|扇|根|块|片|组|件|孔|间|栋|幢|户|米|m)(?![a-zA-Z0-9²³])/gu;function n(a,b,c=2){if(!a||!b)return!1;let d=Math.min(a.length,8);for(let e=d;e>=c;e-=1)for(let c=0;c+e<=a.length;c+=1)if(b.includes(a.slice(c,c+e)))return!0;return!1}function o(a,b){let c=function(a){switch(i(a)){case"m":return"(?:m|米)";case"km":return"(?:km|公里|千米)";case"m2":return"(?:m2|m\xb2|㎡|平方米)";case"m3":return"(?:m3|m\xb3|立方米)";case"t":return"(?:t|吨)";case"kg":return"(?:kg|千克)";default:return d((a||"").trim())}}(b.unit);for(let e of function(a){let b=`${a}`,c=new Set([b]),[d,e]=b.split(".");return d.length>=4&&c.add(`${d.replace(/\B(?=(\d{3})+(?!\d))/gu,",")}${e?`.${e}`:""}`),[...c]}(b.value)){let f=d(e);if(RegExp(`${f}\\s*(?:${c})|(?:${c})\\s*${f}`,"u").test(a)||b.value>=100&&RegExp(`(?<![\\d.])${f}(?![\\d])`,"u").test(a))return!0}return!1}function p(a,b,c){let d=a.filter(a=>a.name.length>=2&&n(a.name,c));if(d.length<2||d.length>24)return[];for(let a=0;a<d.length;a+=1)for(let c=a+1;c<d.length;c+=1){let e=d[a],g=d[c];if(!(e.name===g.name&&f(e.value,g.value))&&f(e.value+g.value,b))return[e,g]}return[]}function q(a,b,c,d,e){let g=new Map;for(let a of d.entries){if(!(a.value>0)||i(a.unit)!==b)continue;let c=`${a.source}\u0000${a.name}`;g.set(c,(g.get(c)||0)+a.value)}let h=[];for(let[a,b]of g)if(n(a.slice(a.indexOf("\0")+1),c)&&(h.some(a=>f(a,b))||h.push(b),h.length>=24))break;if(0===h.length)return!1;let j=b=>f(b,a)||function(a,b){let c=0,d=a.length;for(;c<d;){let e=c+d>>1;a[e]<b?c=e+1:d=e}for(let d=Math.max(0,c-1);d<=Math.min(a.length-1,c+1);d+=1)if(f(a[d],b))return!0;return!1}(e,a-b);if(h.some(a=>j(a)))return!0;for(let a=0;a<h.length;a+=1)for(let b=a+1;b<h.length;b+=1)if(j(h[a]+h[b]))return!0;return!1}function r(a,b){let c=[];if(0===b.entries.length)return c;let d=new Set,g=[...b.numberPool].sort((a,b)=>a-b);for(let h of a.matchAll(m)){let j=e(h[1]);if(void 0===j)continue;let k=i(h[2]),l=h.index??0,m=l+h[0].length,r=b.entries.filter(a=>a.value>0&&i(a.unit)===k);if(0===r.length)continue;let s=a.slice(Math.max(0,l-40),l+h[0].length+40),t=a.slice(Math.max(0,l-20),l+h[0].length),u=r.filter(a=>a.name.length>=3&&t.includes(a.name)).sort((a,b)=>b.name.length-a.name.length)[0];if(u){if(f(u.value,j)){let b=p(r,j,s);if(b.length>=2){let e=a.slice(Math.max(0,l-150),l+h[0].length+150),f=b.filter(a=>!o(e,a));if(f.length>0){let a=b.map(a=>`「${a.name}」${a.value}${a.unit}`).join(" + "),e=`合计数值应分项显式:「${u.name} ${j}${h[2]}」= ${a},但正文未展示分项(缺 ${f.map(a=>`${a.name} ${a.value}${a.unit}`).join("、")}),无法核对合计来源`;d.has(e)||(d.add(e),c.push({issue:{level:"warning",severity:"warning",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:e,suggestion:`在合计值附近补充分项明细(${a}),使合计数值可逐项核对;分项值必须取自工程量清单原文,不得改动。`},matchStart:l,matchEnd:m}))}}continue}let e=j-u.value,i=r.find(a=>a!==u&&a.name!==u.name&&f(a.value,e));if(i){let b=a.slice(Math.max(0,l-150),l+h[0].length+150);if(o(b,u)&&o(b,i))continue;let f=`合计值与权威不符:「${u.name}」清单权威 ${u.value}${h[2]};正文 ${j}${h[2]} \u2248 ${u.value} + ${i.value}(「${i.name}」)——若「${i.name}」应计入「${u.name}」合计,须在正文显式分项;若不应计入(重复计入),须改回权威值 ${u.value}${h[2]}`;d.has(f)||(d.add(f),c.push({issue:{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:f,suggestion:`核对合计口径:「${u.name}」合计为 ${u.value}${h[2]}(清单权威)。若正文需表达 ${u.value} + ${i.value},则显式写成「${u.name} ${u.value}${h[2]}、${i.name} ${i.value}${h[2]},合计 ${j}${h[2]}」;否则将合计改回 ${u.value}${h[2]}(差额 ${Math.round(1e4*e)/1e4}${h[2]} 属「${i.name}」,不得并入)。`},matchStart:l,matchEnd:m}));continue}if(q(j,k,s,b,g))continue;let n=`合计值与权威不符:「${u.name}」合计为 ${u.value}${h[2]}(清单权威),正文写 ${j}${h[2]},且差额不属任何清单条目,需核对合计口径`;d.has(n)||(d.add(n),c.push({issue:{level:"warning",severity:"warning",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:n,suggestion:`核对「${u.name}」的合计口径:若为多分项之和,请写明与权威一致的分项分解;若为单一总量,改为清单权威值 ${u.value}${u.unit||h[2]}。`},matchStart:l,matchEnd:m}));continue}let v=p(r,j,s);if(v.length>=2){let b=a.slice(Math.max(0,l-150),l+h[0].length+150),e=v.filter(a=>!o(b,a));if(e.length>0){let a=v.map(a=>`「${a.name}」${a.value}${a.unit}`).join(" + "),b=`合计数值应分项显式:正文合计 ${j}${h[2]} = ${a},但未展示分项(缺 ${e.map(a=>`${a.name} ${a.value}${a.unit}`).join("、")}),无法核对合计来源`;d.has(b)||(d.add(b),c.push({issue:{level:"warning",severity:"warning",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:b,suggestion:`在合计值附近补充分项明细(${a});分项值必须取自工程量清单原文,不得改动。`},matchStart:l,matchEnd:m}))}continue}{let a=new Map;for(let b of r)a.set(b.name,(a.get(b.name)||0)+b.value);let b=!1;for(let c of a.values())if(f(c,j)){b=!0;break}if(b)continue}if(q(j,k,s,b,g))continue;let w=r.filter(a=>n(a.name,s)),x=r.some(a=>f(a.value,j)),y=b.numberPool.some(a=>f(a,j));if(!x&&!y&&w.length>0){let a=`合计值无权威来源:正文「${h[0].trim()}」在清单事实锁与蓝图参数桶中找不到同值来源,违反无据不写`;if(d.has(a))continue;d.add(a),c.push({issue:{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:a,suggestion:"删除该合计数值或改为与清单权威一致的合计值;无权威来源的合计数不得进入交付文本。"},matchStart:l,matchEnd:m})}}return c}function s(a,b,c){let d=Math.max(0,b-60),e=a.slice(d,b),f=-1;for(let a=e.length-1;a>=0;a-=1)if(/[,、;;。!?!?\n]/u.test(e[a])){f=d+a;break}if(-1===f||b-f>40)return null;let g=/[,、;;]/u.test(a[f]),h=g?f:f+1,i=g?c:c+ +!!/[,、;;]/u.test(a[c]||"");return i<=h?null:{start:h,end:i,excerpt:a.slice(h,i).trim()}}function t(a,b){let c=l({markdown:a,...b});if(0===c.entries.length)return{markdown:a,fixedCount:0,details:[]};let d=a,e=[];for(let a=1;a<=4;a+=1){let a=[];for(let b of r(d,c)){if(!b.issue.message.startsWith("合计值无权威来源"))continue;let c=s(d,b.matchStart,b.matchEnd);c&&a.push(c)}if(0===a.length)break;let b=0,f=1/0;for(let c of[...a].sort((a,b)=>b.start-a.start))c.end>f||(d=d.slice(0,c.start)+d.slice(c.end),f=c.start,b+=1,e.push(`删除无源合计「${c.excerpt.slice(0,40)}」`));if(0===b)break}return{markdown:d,fixedCount:e.length,details:e}}function u(a,b){let c=l({markdown:a,...b});if(0===c.entries.length)return{markdown:a,fixedCount:0,details:[]};let d=a,e=[];for(let a=1;a<=4;a+=1){let a=[];for(let e of I(d,c,b.billFactLock)){if(!e.issue.message.startsWith("名称-数值绑定无源"))continue;let b=s(d,e.matchStart,e.matchEnd);b&&a.push(b)}if(0===a.length)break;let f=0,g=1/0;for(let b of[...a].sort((a,b)=>b.start-a.start))b.end>g||(d=d.slice(0,b.start)+d.slice(b.end),g=b.start,f+=1,e.push(`删除无源绑定「${b.excerpt.slice(0,40)}」`));if(0===f)break}return{markdown:d,fixedCount:e.length,details:e}}let v=/(?:DN|De|Φ|φ|Ø|dn|de)\s*\d+(?:\.\d+)?|(?<![A-Za-z0-9])[CM]\d{2,3}(?![0-9])|HRB\d+|HPB\d+|(?<![A-Za-z0-9])\d{2,4}\s*[×xX*]\s*\d{2,4}(?![0-9])|(?<![A-Za-z0-9])\d+(?:\.\d+)?\s*[kK]?[Ww](?![A-Za-z0-9])/gu,w=/运输车|搅拌车|罐车|挖掘机|挖机|装载机|压路机|摊铺机|打夯机|夯实机|洒水车|浇水车|吊车|起重机|泵车|地泵|发电机组|发电机|电焊机|空压机|水泵|提升泵|潜水泵|雾炮机|充桩|桩机|机械|设备|机具|车辆|机组/u;function x(a,b){for(let[c,d]of a.aggregateSpecs)if(d.specs.has(b))return{entryName:c,info:d}}function y(a,b){let c=[];if(0===b.specValues.size&&0===b.aggregateSpecs.size)return c;let d=new Set;for(let g of a.matchAll(v)){let i,l=h(g[0]),m=b.specValues.get(l)??[],o=x(b,l);if(0===m.length&&!o)continue;let p=(g.index??0)+g[0].length,q=a.slice(p,p+36),r=/^([^。;;\n|]{0,16}?)([\d,,]+(?:\.\d+)?)\s*(座|个|套|盏|台|根|块|樘|扇|片|组|件|孔|米|m|km|公里|平方米|m2|㎡|m²|立方米|m3|m³|吨|t|kg)(?![a-zA-Z0-9²³])/u.exec(q);if(!r||j.test(r[1])||k.test(q.slice(r[1].length+r[2].length+r[3].length))||/不大于|不超过|不得大于|不得超过/.test(r[1]))continue;let s=r[1];if(/[、,,]/u.test(s)){let a=s.split(/[、,,]/u).pop()||"";if(/[\u4e00-\u9fa5]/u.test(a)&&!/合计|小计|共计|总计|总量|用量|总长|共/u.test(a))continue}if("台"===r[3]||"套"===r[3]){let b=p+r[1].length+r[2].length+r[3].length;if(w.test(r[1])||w.test(a.slice(b,b+12)))continue}if(/总长|全长|长度|管长|延米/u.test(r[1])&&/^(?:m|米|km|公里)$/u.test(r[3])||/^共$/u.test(r[1]||"")&&/(?:钢筋|配筋|编号)/u.test(a.slice(Math.max(0,(g.index||0)-60),(g.index||0)+60)))continue;let t=e(r[2]);if(void 0===t||0===t||m.some(a=>f(a.value,t)))continue;let u=o?.info.specs.get(l);if(void 0!==u&&f(u,t))continue;let v=new Map;for(let a of m){let b=v.get(a.entryName);b?b.value+=a.value:v.set(a.entryName,{value:a.value,unit:a.unit})}let y=[...v.values()].sort((a,b)=>b.value-a.value);if(m.length>=2&&y.some(a=>f(a.value,t)))continue;if(o?.info.partitioned&&void 0!==u&&f(o.info.value,t)){let a=h(r[1]);if(![...o.info.specs.keys()].some(b=>b!==l&&a.includes(b))){let a=o.info.breakdown.map(a=>`${a.spec} ${a.value}${o.info.unit}`).join(" + "),b=`规格-数值绑定错位:「${g[0]}」处数值 ${t}${r[3]} 是「${o.entryName}」的跨规格名称合计(${a}),不属于单一规格「${g[0]}」——名称合计不得挂给单一规格,须写该规格小计 ${u}${r[3]}(确需写合计须显式分解)`;if(!d.has(b)){d.add(b);let e=p+r[1].length;c.push({issue:{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:b,suggestion:`「${g[0]}」的数量须写该规格小计 ${u}${r[3]};名称合计须显式分解为 ${a}(合计 ${o.info.value}${o.info.unit}),不得把合计值挂在单一规格名下。`},specToken:g[0],value:t,unit:r[3],valueStart:e,valueEnd:e+r[2].length,groupSumCandidates:[{value:u,unit:o.info.unit},...y.filter(a=>!f(a.value,t))]})}}continue}for(let[a,c]of b.specValues){if(a===l)continue;let b=c.find(a=>f(a.value,t));if(b){i={spec:b.spec||a,entryName:b.entryName};break}}if(!i||r[1]&&n(i.entryName,r[1]))continue;let z=`规格-数值绑定错位:正文「${g[0]} ${t}${r[3]}」中 ${t}${r[3]} 属规格「${i.spec}」(清单条目「${i.entryName}」),不属于「${g[0]}」的清单数量`;if(d.has(z))continue;d.add(z);let A=p+r[1].length;c.push({issue:{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:z,suggestion:`「${g[0]}」的数量必须引用清单中该规格条目的原值(如 ${m.map(a=>`${a.value}${a.unit}`).join("、")});「${i.spec}」的数量不得张冠李戴至「${g[0]}」。`},specToken:g[0],value:t,unit:r[3],valueStart:A,valueEnd:A+r[2].length,groupSumCandidates:y.filter(a=>!f(a.value,t))})}for(let g of a.matchAll(v)){let i=h(g[0]),k=x(b,i);if(!k?.info.partitioned)continue;let l=k.info.specs.get(i);if(void 0===l)continue;let m=g.index??0,o=a.slice(Math.max(0,m-24),m),p=/([\d,,]+(?:\.\d+)?)\s*(座|个|套|盏|台|根|块|樘|扇|片|组|件|孔|米|m|km|公里|平方米|m2|㎡|m²|立方米|m3|m³|吨|t|kg)\s*([^。;;\n|0-9²³]{0,12})$/u.exec(o);if(!p)continue;let q=p[3];if(!/[((]|为|系|采用|型号|规格|灯型|类型/u.test(q)||j.test(q))continue;let r=e(p[1]);if(void 0===r||!f(k.info.value,r)||f(l,r)||!n(k.entryName,o))continue;let s=h(a.slice(Math.max(0,m-60),m+60));if([...k.info.specs.keys()].filter(a=>s.includes(a)).length>=2)continue;let t=m-q.length-p[2].length-p[1].length,u=`${i}@${t}`;if(d.has(u))continue;d.add(u);let v=k.info.breakdown.map(a=>`${a.spec} ${a.value}${k.info.unit}`).join(" + ");c.push({issue:{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`规格-数值绑定错位:正文「…${r}${p[2]}${q}${g[0]}…」中 ${r}${p[2]} 为「${k.entryName}」的跨规格名称合计(${v}),其后紧随单一规格「${g[0]}」易被读作全部为该规格;名称合计须显式分解`,suggestion:`数量 ${r}${p[2]} 保留不动;把规格表述改为显式分解,如「${r}${p[2]}(${v})」或逐规格列写「${v}」;不得以名称合计搭配单一规格描述。`},specToken:g[0],value:r,unit:p[2],valueStart:t,valueEnd:t+p[1].length,groupSumCandidates:[]})}if(b.aggregateSpecs.size>0){let g=0;for(let i of a.split("\n")){let a=g;if(g+=i.length+1,!i.includes("|")||/^\s*\|?[\s:|-]*\|?\s*$/u.test(i))continue;let j=new Map;for(let a of i.matchAll(v)){let c=h(a[0]),d=x(b,c);if(!d?.info.partitioned)continue;let e=d.info.specs.get(c);if(void 0===e)continue;let f=j.get(d.entryName)||[];f.some(a=>a.key===c)||f.push({key:c,raw:a[0].trim(),specSum:e}),j.set(d.entryName,f)}if(1!==j.size)continue;let[k,l]=[...j.entries()][0];if(1!==l.length)continue;let m=b.aggregateSpecs.get(k);if(!m)continue;let{key:o,raw:p,specSum:q}=l[0];if(n(k,i))for(let g of i.matchAll(/\|([^|\n]*)/gu)){let h=g[1].trim(),i=/^([\d,,]+(?:\.\d+)?)\s*(?:座|个|套|盏|台|根|块|樘|扇|片|组|件|孔|米|m|km|公里|平方米|m2|㎡|m²|立方米|m3|m³|吨|t|kg)?$/u.exec(h);if(!i)continue;let j=e(i[1]);if(void 0===j||!f(m.value,j)||f(q,j)||(b.specValues.get(o)??[]).some(a=>f(a.value,j)))continue;let l=a+(g.index??0)+1+g[1].indexOf(i[1]),n=`${o}@${l}`;if(d.has(n))continue;d.add(n);let r=m.breakdown.map(a=>`${a.spec} ${a.value}${m.unit}`).join(" + ");c.push({issue:{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`规格-数值绑定错位:表格行「${p}…」的数量 ${j}${m.unit} 是「${k}」的跨规格名称合计(${r}),该行规格为「${p}」应填其小计 ${q}${m.unit}`,suggestion:`该行数量改为 ${q}${m.unit};名称合计请另立「合计」行或显式分解为 ${r}。`},specToken:p,value:j,unit:m.unit,valueStart:l,valueEnd:l+i[1].length,groupSumCandidates:[{value:q,unit:m.unit}]})}}}return c}let z={米:"m",公里:"km",平方米:"m2","㎡":"m2","m\xb2":"m2",立方米:"m3","m\xb3":"m3",吨:"t"};function A(a){return Object.prototype.hasOwnProperty.call(z,a)?z[a]:a}function B(a,b){let c=l({markdown:a,...b});if(0===c.specValues.size&&0===c.aggregateSpecs.size)return{markdown:a,fixedCount:0,details:[]};let d=a,e=[];for(let a=1;a<=8;a+=1){let a=y(d,c).filter(a=>a.groupSumCandidates.length>0);if(0===a.length)break;let b=0;for(let f of[...a].sort((a,b)=>b.valueStart-a.valueStart)){let a,g,h=f.groupSumCandidates.find(a=>A(a.unit)===A(f.unit));if(h)a=d.slice(0,f.valueStart)+`${h.value}`+d.slice(f.valueEnd),g=`「${f.specToken}」绑定数值 ${f.value}${f.unit} → 组和值 ${h.value}${f.unit}`;else{let b=f.valueStart;for(;b>0&&/\s/u.test(d[b-1]);)b-=1;let c=f.valueEnd+f.unit.length;a=d.slice(0,b)+d.slice(c),g=`「${f.specToken}」移除张冠李戴数值 ${f.value}${f.unit}(无同单位替换候选,值不属该规格)`}y(a,c).some(a=>{let b=a.valueStart-f.valueStart;return b>=-4&&b<=4})||(d=a,b+=1,e.push(g))}if(0===b)break}return{markdown:d,fixedCount:e.length,details:e}}let C=/(?:埋深|覆土(?:厚度|深度)?|管顶覆土)(?:不小于|不大于|不低于|不超过|约|为|达|控制在|一般|宜|应)?[^。;;\n|]{0,10}?([\d,,]+(?:\.\d+)?)\s*(mm|cm|米|m)(?![a-zA-Z0-9²³])/gu,D=/(?:约为|大约|约计|约|将近|近)\s*([\d,,]+(?:\.\d+)?)\s*(点|处|座|个|套|盏|棵|株|樘|扇|根|块|片|组|件|孔|间|栋|幢|户|米|公里|km|m2|㎡|m²|平方米|m3|m³|立方米|kg|吨|t|l|升|kw|w)(?![a-zA-Z0-9²³³])/giu,E=/([\d,,]+(?:\.\d+)?)\s*余\s*(点|处|座|个|套|盏|棵|株|樘|扇|根|块|片|组|件|孔|间|栋|幢|户|米|公里|km|m2|㎡|m²|平方米|m3|m³|立方米|kg|吨|t)(?![a-zA-Z0-9²³])/gu,F=/[节制合履签违公盟密租最接靠邻附距离]/u,G=/^(?:管道|工程|材料|项目|施工|工作|设备|设施|系统|区域|场地|道路|建筑|结构|基础|主体|管网|土建|安装|装饰|装修|土方|绿化|照明|给水|排水|电气|挖方|填方|回填|弃方|外运|运输|检测|试验|测量|清理|拆除|清淤|维护|养护|管理|服务|其他|以上|以下|其中|包括|采用|使用|型号|规格|数量|单位|合计|总计|长度|面积|体积|重量)$/u,H=/(木质|木|铝合金|铝|不锈钢|塑钢|塑料|塑|钢|铁|砼|混凝土|铸铁|铜|复合)(门|窗|井|灯|护栏|围栏|盖板|雨水口)/gu;function I(a,b,c){let d=[],h=new Set,l=new Set,m=new Map;if(c)for(let a of c.entries){let b=(a.name||"").trim();if(b.length<2||!Number.isFinite(a.quantity))continue;let c=`${b}\u0000${i(a.unit)}`,d=m.get(c)||{count:0,samples:[]};d.count+=1;let e=`${a.quantity}${a.unit}`;d.samples.length<3&&!d.samples.includes(e)&&d.samples.push(e),m.set(c,d)}let o=b.entries.map(a=>`${a.name} ${a.description}`).join("\n"),p=new Map;{let a=new Map;for(let c of b.entries){if(!(c.value>0))continue;let b=`${c.source}\u0000${c.name}`,d=a.get(b);d?d.sum+=c.value:a.set(b,{name:c.name,sum:c.value})}for(let b of a.values()){let a=p.get(b.name)||[];a.push(b.sum),p.set(b.name,a)}}let q=new Map,r=new Map,s=new Map,t=(a,c,d)=>{let e=`${a}\u0000${c}`,f=q.get(e);if(f||(f=b.entries.filter(b=>b.name===a&&i(b.unit)===c&&b.value>0).map(a=>Math.round(100*a.value)),q.set(e,f)),f.length<2)return!1;let g=`${e}\u0000${Math.round(100*d)}`,h=r.get(g);if(void 0!==h)return h;let j=function(a,b){if(a.length<2||b<=0)return!1;let c=[...a].sort((a,b)=>a-b);if(c.some(a=>a===b))return!1;let d=c.reduce((a,b)=>a+b,0);if(b>d)return!1;let e=d-b;if(e>0&&e!==b){let a=Math.max(b,e);for(let d=0;d<c.length;d+=1)for(let f=d+1;f<c.length;f+=1){let g=c[d]+c[f];if(g>a)break;if(g===b||g===e)return!0}let d=0,f=c.length-1;for(;d<=f;){let a=d+f>>1;if(c[a]===e)return c.length>=3;c[a]<e?d=a+1:f=a-1}}else for(let a=0;a<c.length;a+=1)for(let d=a+1;d<c.length;d+=1){let e=c[a]+c[d];if(e>b)break;if(e===b)return!0}if(c.length>40)return!1;let f=Math.ceil(c.length/2),g=c.slice(0,f),h=c.slice(f),i=a=>{let b=new Set([0]);for(let c of a){let a=new Set;for(let d of b)a.add(d),a.add(d+c);b=a}return b},j=i(h);for(let a of i(g))if(j.has(b-a))return!0;return!1}(f,Math.round(100*d));return r.set(g,j),j},u=(a,c)=>{let d=p.get(a)||[];if(0===d.length)return!1;let e=`${a}\u0000${Math.round(100*c)}`,g=s.get(e);if(void 0!==g)return g;let h=d.some(a=>b.numberPool.some(b=>f(a+b,c)));return s.set(e,h),h};if(c)for(let o of c.entries){let c=(o.name||"").trim();if(c.length<2||G.test(c)||!Number.isFinite(o.quantity))continue;let q=0,r=0;for(;r<6;){let s=a.indexOf(c,q);if(s<0)break;if(q=s+c.length,r+=1,/\d$/u.test(c)&&/^[\d.]/u.test(a.slice(s+c.length,s+c.length+1))){q=s+1;continue}if("量"===a.slice(s+c.length,s+c.length+1))continue;let v=a.slice(s+c.length,s+c.length+20),w=/^([^。;;\n|]{0,12}?)([\d,,]+(?:\.\d+)?)\s*(座|个|套|处|盏|棵|株|樘|扇|根|块|片|组|件|孔|间|栋|幢|户|米|m|km|公里|平方米|m2|㎡|m²|立方米|m3|m³|kg|吨|t)(?![a-zA-Z0-9²³])/u.exec(v);if(!w||j.test(w[1])||k.test(v.slice(w[1].length+w[2].length+w[3].length)))continue;let x=e(w[2]);if(void 0===x||0===x||g(x,o.quantity))continue;let y=i(w[3]);if(y!==i(o.unit)||b.entries.some(a=>a.name===c&&g(x,a.value)&&i(a.unit)===y)||(p.get(c)||[]).some(a=>f(a,x))||t(c,y,x)||u(c,x))continue;let z=a.slice(Math.max(0,s-32),s+c.length+20);if(function(a,b,c,d){for(let[e,g]of d)if(e!==b&&(e.includes(b)||b.includes(e)||n(e,c))&&g.some(b=>f(b,a)))return!0;return!1}(x,c,z,p))continue;let A=b.entries.find(a=>a.name!==c&&f(a.value,x)&&i(a.unit)===y);if(A&&n(A.name,z))continue;if(A){let a=`${s}\u0000${x}\u0000${y}`;if(l.has(a))continue;l.add(a);let b=m.get(`${c}\u0000${y}`),e=b&&b.count>1?`名称-数值绑定错位:「${c}」处数值 ${x}${w[3]} 属清单条目「${A.name}」(${A.value}${A.unit}),与同名清单条目(共 ${b.count} 条,如 ${b.samples.join("、")} 等)的权威数量均不符`:`名称-数值绑定错位:「${c}」处数值 ${x}${w[3]} 属清单条目「${A.name}」(${A.value}${A.unit}),与「${c}」清单数量 ${o.quantity}${o.unit} 不符`;if(h.has(e))continue;h.add(e),d.push({issue:{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:e,suggestion:b&&b.count>1?`核对「${c}」的数量口径:同名清单条目共 ${b.count} 条(如 ${b.samples.join("、")} 等),逐一核对后引用对应条目数量;引用「${A.name}」数量时须明确对象名称,不得张冠李戴。`:`核对「${c}」的数量口径:清单权威值为 ${o.quantity}${o.unit};引用「${A.name}」数量时须明确对象名称,不得张冠李戴。`},matchStart:s,matchEnd:s+c.length+w[0].length});continue}if(function(a,b,c,d){let e=a.slice(Math.max(0,b-40),b+c+40),g=[];for(let a of e.matchAll(/\d+(?:\.\d+)?/gu)){let b=Number.parseFloat(a[0]);Number.isFinite(b)&&!f(b,d)&&g.push(b)}for(let a=0;a<g.length;a+=1)for(let b=a+1;b<g.length;b+=1)if(f(g[a]+g[b],d)||f(Math.abs(g[a]-g[b]),d))return!0;return!1}(a,s,c.length,x)||b.numberPool.some(a=>f(a,x)))continue;let B=`${s}\u0000${x}\u0000${y}`;if(l.has(B))continue;l.add(B);let C=m.get(`${c}\u0000${y}`),D=C&&C.count>1?`名称-数值绑定无源:「${c}」处数值 ${x}${w[3]} 与同名清单条目(共 ${C.count} 条,如 ${C.samples.join("、")} 等)的权威数量均不符,且在全部权威数据中找不到同值来源`:`名称-数值绑定无源:「${c}」处数值 ${x}${w[3]} 与清单权威 ${o.quantity}${o.unit} 不符,且在全部权威数据中找不到同值来源`;h.has(D)||(h.add(D),d.push({issue:{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:D,suggestion:C&&C.count>1?`核对「${c}」的数量口径:同名清单条目共 ${C.count} 条(如 ${C.samples.join("、")} 等),逐一核对后引用对应条目的权威数量;无权威来源的数值不得与清单条目名称绑定出现。`:`将「${c}」的数量改为清单权威值 ${o.quantity}${o.unit};无权威来源的数值不得与清单条目名称绑定出现。`},matchStart:s,matchEnd:s+c.length+w[0].length}))}}for(let c of a.matchAll(H)){let g=c[0];if(o.includes(g))continue;let j=c[2],k=a.slice((c.index??0)+g.length,(c.index??0)+g.length+16),l=/^([^。;;\n|]{0,10}?)([\d,,]+(?:\.\d+)?)\s*(樘|扇|套|座|盏|个)(?![a-zA-Z0-9²³])/u.exec(k);if(!l)continue;let m=e(l[2]);if(void 0===m)continue;let n=b.entries.find(a=>a.name.includes(j)&&f(a.value,m)&&i(a.unit)===i(l[3]));if(!n)continue;let p=`名称口径不符:正文「${g} ${m}${l[3]}」——${m}${l[3]} 对应清单「${n.name}」条目,清单中不存在「${g}」,名称与清单权威不符`;if(h.has(p))continue;h.add(p);let q=c.index??0;d.push({issue:{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:p,suggestion:`名称必须与清单条目口径一致:将「${g}」改为「${n.name}」(或清单原文名称);名称与数量绑定不得自行替换材质/类型限定词。`},matchStart:q,matchEnd:q+g.length+l[0].length})}return d}function J(a){let b=a.markdown||"";if(!b)return[];let c=l(a);if(0===c.entries.length&&0===c.numberPool.length)return[];let d=[...r(b,c).map(a=>a.issue),...y(b,c).map(a=>a.issue),...function(a,b){let c=[],d=new Set;for(let g of a.matchAll(C)){let a=e(g[1]);if(void 0===a)continue;let h=g[2];if(("mm"===h?a/1e3:"cm"===h?a/100:a)<=10)continue;let i=b.entries.find(b=>f(b.value,a)&&/总长|全长|总长度|长度|管线/u.test(b.name)),j=`数值语义槽位错位:正文「${g[0].trim()}」——埋深/覆土数值 ${a}${h} 超出物理合理范围(管道埋深一般 <10m)${i?`,且该数值与权威「${i.name}」(${i.value}${i.unit})一致,疑似把总长/长度口径误用作埋深`:",疑似口径混用"}`;d.has(j)||(d.add(j),c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:j,suggestion:`核对槽位语义:埋深/覆土深度应在 0.3~10m 合理区间(以设计图纸为准);总长/长度类数值不得用于埋深描述${i?`(「${i.name}」为 ${i.value}${i.unit})`:""}。`}))}return c}(b,c),...function(a,b){let c=[];if(0===b.numberPool.length)return c;let d=new Set,f=(a,f,g)=>{let h=e(a);if(void 0===h||function(a,b){let c=a>=1e3?Math.max(10,.02*a):a>=100?5:a>=10?1:.5;return b.some(b=>Math.abs(b-a)<=c||Math.abs(b-a)<=Math.max(1e-6,.02*Math.abs(b)))}(h,b.numberPool))return;let i=`近似数值不可推导:正文「${g.trim()}」的 ${h}${f} 在清单/蓝图/事实主表中无同值或近似来源,违反无据不写`;d.has(i)||(d.add(i),c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:i,suggestion:"删除该近似表述,或改用权威数据可推导的数值(清单/蓝图同值口径);「约/近」类近似数值必须可闭合到权威来源。"}))};for(let b of a.matchAll(D)){let c=b.index??0,d=a.slice(Math.max(0,c-1),c);F.test(d)||f(b[1],b[2],b[0])}for(let b of a.matchAll(E))f(b[1],b[2],b[0]);return c}(b,c),...I(b,c,a.billFactLock).map(a=>a.issue)],g=[],h=new Set;for(let a of d){let b=`${a.severity||a.level}|${a.message}`;h.has(b)||(h.add(b),g.push(a))}return g}},76193:(a,b,c)=>{c.d(b,{ll:()=>q,rk:()=>n,wF:()=>u,yT:()=>p}),c(51190),c(44505),c(10751);var d=c(93675);let e=new Set(["fixed","exempt","manual"]),f=[],g=new Set(["structure","table","fact_consistency","evidence_coverage","professional_chain","control_loop","format","style","scope"]),h=[{id:"table-line-residue",kind:"deterministic",anchoredTo:"table-quality",giveUpOnFailure:!0},{id:"templated-labels",kind:"deterministic",anchoredTo:"templated-label",giveUpOnFailure:!0},{id:"structure-integrity",kind:"deterministic",anchoredTo:"structure-integrity",giveUpOnFailure:!0},{id:"embedded-heading-split",kind:"deterministic",anchoredTo:"planned-structure",giveUpOnFailure:!0},{id:"repeated-words",kind:"deterministic",anchoredTo:"repeated-word",giveUpOnFailure:!0},{id:"duplicate-tables",kind:"deterministic",anchoredTo:"duplicate-table",giveUpOnFailure:!0},{id:"finish-thickness",kind:"deterministic",anchoredTo:"finish-thickness",giveUpOnFailure:!0},{id:"slot-depth-value",kind:"deterministic",anchoredTo:"fact-reconciliation",authorities:["blueprint"],giveUpOnFailure:!0},{id:"spec-quantity-binding",kind:"deterministic",anchoredTo:"fact-reconciliation",authorities:["blueprint"],giveUpOnFailure:!0},{id:"labor-peak",kind:"deterministic",anchoredTo:"resource-consistency",authorities:["laborPeak"],giveUpOnFailure:!0},{id:"phase-labor-values",kind:"deterministic",anchoredTo:"phase-labor-mixing",authorities:["blueprint"],giveUpOnFailure:!0},{id:"resource-breakdown",kind:"deterministic",anchoredTo:"resource-breakdown-consistency",authorities:["blueprint"],giveUpOnFailure:!0},{id:"equipment-batch-values",kind:"deterministic",anchoredTo:"equipment-batch-conflict",authorities:["blueprint"],giveUpOnFailure:!0},{id:"internal-table-row-dup",kind:"deterministic",anchoredTo:"table-spam",giveUpOnFailure:!0},{id:"duplicate-basic-info-tables",kind:"deterministic",anchoredTo:"table-quality",alsoAnchoredTo:["duplicate-basic-info"],giveUpOnFailure:!0},{id:"fallback-placeholder-rows",kind:"deterministic",anchoredTo:"formal-placeholder",giveUpOnFailure:!0},{id:"greening-maintenance",kind:"deterministic",anchoredTo:"greening-maintenance-mismatch",authorities:["greeningMaintenance"],giveUpOnFailure:!0},{id:"paragraph-opening-repeat",kind:"deterministic",anchoredTo:"paragraph-opening-repeat",giveUpOnFailure:!0},{id:"paragraph-tail-repeat",kind:"deterministic",anchoredTo:"paragraph-tail-repeat",giveUpOnFailure:!0},{id:"collision-numbered-heading",kind:"deterministic",anchoredTo:"collision-numbered-heading",giveUpOnFailure:!0},{id:"heading-uncovered-items",kind:"deterministic",anchoredTo:"heading-uncovered-engineering-items",giveUpOnFailure:!0},{id:"inverted-date-range",kind:"deterministic",anchoredTo:"inverted-date-range",giveUpOnFailure:!0},{id:"zero-length-date-range",kind:"deterministic",anchoredTo:"cross-chapter-consistency",giveUpOnFailure:!0},{id:"truncated-sentence",kind:"deterministic",anchoredTo:"truncated-sentence",giveUpOnFailure:!0},{id:"meta-discourse",kind:"deterministic",anchoredTo:"meta-discourse-declaration",giveUpOnFailure:!0},{id:"formula-residue",kind:"deterministic",anchoredTo:"formula-residue",giveUpOnFailure:!0},{id:"self-undermining",kind:"deterministic",anchoredTo:"self-undermining-candidate",giveUpOnFailure:!0},{id:"ambiguous-either-or",kind:"deterministic",anchoredTo:"ambiguous-either-or",authorities:["supportSystem"],giveUpOnFailure:!0},{id:"tender-meta-language",kind:"deterministic",anchoredTo:"formal-style",giveUpOnFailure:!0},{id:"formal-source-residue",kind:"deterministic",anchoredTo:"formal-style",giveUpOnFailure:!0},{id:"forbidden-configuration",kind:"deterministic",anchoredTo:"formal-text-gate",giveUpOnFailure:!0},{id:"duplicate-response-line",kind:"deterministic",anchoredTo:"duplicate-paragraph",giveUpOnFailure:!0},{id:"atlas-reference",kind:"deterministic",anchoredTo:"atlas-reference-phrase",giveUpOnFailure:!0},{id:"tertiary-h4-dedupe",kind:"deterministic",anchoredTo:"tertiary-heading",giveUpOnFailure:!0},{id:"internal-term-heading",kind:"deterministic",anchoredTo:"internal-terminology-anchor",giveUpOnFailure:!0},{id:"skeleton-fingerprint-variants",kind:"deterministic",anchoredTo:"skeleton-fingerprint",giveUpOnFailure:!0},{id:"flow-form-variants",kind:"deterministic",anchoredTo:"flow-form-repeat",giveUpOnFailure:!0},{id:"truncated-title-completion",kind:"deterministic",anchoredTo:"title-integrity",giveUpOnFailure:!0},{id:"sentence-like-heading-split",kind:"deterministic",anchoredTo:"title-integrity",giveUpOnFailure:!0},{id:"heading-duplicate-merge",kind:"deterministic",anchoredTo:"heading-duplicate",giveUpOnFailure:!0},{id:"section-renumber",kind:"deterministic",anchoredTo:"section-numbering",giveUpOnFailure:!0}],i=[{id:"numeric-arbiter-concept",kind:"deterministic",anchoredTo:"parameter-concept-conflict",giveUpOnFailure:!0},{id:"numeric-arbiter-spec",kind:"deterministic",anchoredTo:"spec-location-mismatch",giveUpOnFailure:!0}],j=[{id:"numeric-chain-node-schedule",kind:"deterministic",anchoredTo:"node-schedule-consistency",giveUpOnFailure:!0},{id:"numeric-chain-cross-section",kind:"deterministic",anchoredTo:"cross-section-numeric-conflict",giveUpOnFailure:!0},{id:"numeric-chain-support-system",kind:"deterministic",anchoredTo:"support-system-conflict",authorities:["supportSystem"],giveUpOnFailure:!0},{id:"numeric-chain-quantity-authority",kind:"deterministic",anchoredTo:"blueprint-citation-consistency",authorities:["blueprint"],giveUpOnFailure:!0},{id:"equipment-entry-timing-clean",kind:"deterministic",anchoredTo:"equipment-entry-timing",giveUpOnFailure:!0},{id:"commercial-data-body-strip",kind:"deterministic",anchoredTo:"commercial-data-in-body",giveUpOnFailure:!0},{id:"listing-jargon-strip",kind:"deterministic",anchoredTo:"major-content-governance",giveUpOnFailure:!0},{id:"work-injury-statement-fix",kind:"deterministic",anchoredTo:"local-adaptation-keyword",giveUpOnFailure:!0},{id:"boq-division-coverage-closure",kind:"deterministic",anchoredTo:"boq-division-coverage",giveUpOnFailure:!0},{id:"drawing-image-strip",kind:"deterministic",anchoredTo:"bid-composition-body-figure",giveUpOnFailure:!0},{id:"tender-clause-heading-strip",kind:"deterministic",anchoredTo:"bidder-qualification-section",alsoAnchoredTo:["instruction-like-heading"],giveUpOnFailure:!0},{id:"formal-source-phrase-clean",kind:"deterministic",anchoredTo:"source-enumeration",giveUpOnFailure:!0},{id:"toc-consistency-rebuild",kind:"deterministic",anchoredTo:"toc-consistency",giveUpOnFailure:!0},{id:"prompt-document-rules-apply",kind:"deterministic",anchoredTo:"prompt-document-rule",giveUpOnFailure:!0},{id:"workflow-phrase-clean",kind:"deterministic",anchoredTo:"auto-spec-validation",giveUpOnFailure:!0},{id:"contamination-candidate-sanitize",kind:"deterministic",anchoredTo:"project-contamination",giveUpOnFailure:!0},{id:"preliminary-action-timing-clean",kind:"deterministic",anchoredTo:"preliminary-action-timing",authorities:["blueprint"],giveUpOnFailure:!0},{id:"process-spec-conflict-fix",kind:"deterministic",anchoredTo:"process-spec-conflict",giveUpOnFailure:!0}],k=[{id:"near-duplicate-section-merge",kind:"deterministic",anchoredTo:"section-count-overflow",giveUpOnFailure:!0},{id:"empty-section-strip",kind:"deterministic",anchoredTo:"section-content-integrity",giveUpOnFailure:!0},{id:"duplicate-theme-merge",kind:"deterministic",anchoredTo:"min-chapter-section",giveUpOnFailure:!0}],l=["source-enumeration","internal-terminology-anchor","fabricated-start-date","repeated-word","writer-missing-section","meta-discourse-declaration","formula-residue","finish-thickness","formal-placeholder","truncated-sentence"],m=[{id:"fact-landing",kind:"llm-patch",anchoredTo:"fact-coverage",patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"table-repair",kind:"llm-patch",anchoredTo:"table-quality",patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"table-execution-repair",kind:"llm-patch",anchoredTo:"bid-composition-body-table",patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"templating-repair",kind:"llm-patch",anchoredTo:"construction-org-generic-language",alsoAnchoredTo:["sentence-pattern-repeat"],patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"workpackage-skeleton-repair",kind:"llm-patch",anchoredTo:"construction-org-division-section",patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"planned-section-repair",kind:"llm-patch",anchoredTo:"writer-missing-section",patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"global-consistency-repair",kind:"llm-patch",anchoredTo:"cross-chapter-consistency",alsoAnchoredTo:["foundation-form-residue","excavation-depth-lock"],patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"cross-project-value-copy-repair",kind:"llm-patch",anchoredTo:"cross-project-value-copy",authorities:["blueprint"],patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"requirement-response-repair",kind:"llm-patch",anchoredTo:"requirements-coverage",patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"numeric-verification",kind:"llm-patch",anchoredTo:"authority-audit-gap",patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"quotation-balance-repair",kind:"llm-patch",anchoredTo:"punctuation-artifact",patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"content-depth-repair",kind:"llm-patch",anchoredTo:"critical-section-depth",alsoAnchoredTo:["emergency-section-depth","construction-org-major-content","construction-org-division-section","precise-fact-usage","parameter-obligation-usage","overview-recap","professional-score","boq-placement","drawing-reference","hazard-parameter-binding","blueprint-value-placement","dangling-conjunction"],patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"control-loop-repair",kind:"llm-patch",anchoredTo:"construction-org-control-loop",patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"professional-chain-repair",kind:"llm-patch",anchoredTo:"construction-org-professional-chain",patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"basis-regulations-repair",kind:"llm-patch",anchoredTo:"basis-regulations-coverage",authorities:["blueprint"],patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"basis-regulations-cross-repair",kind:"llm-patch",anchoredTo:"basis-regulations-cross",patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"dangerous-applicability-repair",kind:"llm-patch",anchoredTo:"dangerous-applicability",patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"auto-spec-gate-repair",kind:"llm-patch",anchoredTo:"planned-auto-spec-gate",patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"length-compression-repair",kind:"llm-patch",anchoredTo:"document-budget",patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"table-caption-repair",kind:"llm-patch",anchoredTo:"table-caption",patchGuard:{detectors:[...l]},giveUpOnFailure:!0},{id:"table-arithmetic-repair",kind:"llm-patch",anchoredTo:"table-arithmetic-consistency",patchGuard:{detectors:[...l]},giveUpOnFailure:!0}],n=["fact-landing-round","table-repair-round","semantic-choice-conflict","deterministic-stage5","formal-source-clean","planned-section-final","commercial-strip","table-deterministic-repair","numeric-verification","requirement-response-repair","requirement-verification","content-depth-repair","control-loop-repair","professional-chain-repair","post-review-surface","terminology-strip","regulation-number-typo","quotation-balance-repair","basis-regulations-repair","basis-regulations-cross-repair","dangerous-applicability-repair","auto-spec-gate-repair","toc-consistency","length-compression-repair","fact-distribution-round","table-caption-repair","table-arithmetic-repair","empty-section-sweep","section-alignment-sweep","templating-sweep","duplicate-theme-merge","delivery-structure-closure","sentence-pattern-sweep","duplicate-sentence-collapse","templating-tail-replay"],o=new Set;function p(a,b){return o.add(a),b()}async function q(a,b){o.add(a);try{return await b()}catch(c){let b=c instanceof Error?c.message:String(c);return console.error(`[gen] detector degraded: ${a} failed, fallback to warning issue:`,c),[{level:"warning",severity:"warning",category:"format",owner:"system",repairability:"manual_review",message:`交付前检测器「${a}」执行失败,已降级为待复核:${b}`,suggestion:"此为检测器基础设施异常,非正文内容缺陷;其余交付前检查已照常完成。可稍后重新生成复核,或人工复核该检测维度。"}]}}let r=[{id:"spec-gate-rules",scope:"full-document",category:"structure",fixerDisposition:"manual",fixerDispositionReason:"配置门禁容器(事实/章节/表格/图片/页数/文本多族混合,规则随模板与提示词动态生成),无单一可锚定修复目标"},{id:"auto-spec-validation",scope:"full-document",category:"structure",fixerDisposition:"fixed",fixerDispositionReason:"仅唯一阻断族(后台流程话术)由 WORKFLOW_PHRASE_RE 清洗覆盖;后台优化建议/基础事实候选/材料未提供 3 词未入清洗表"},{id:"fact-consistency",scope:"full-document",category:"fact_consistency",fixerDisposition:"manual",fixerDispositionReason:"多值冲突源于绑定材料组内同名不同值,只能由用户确认绑定范围/资料侧裁决,正文改写不可能消除"},{id:"figure-substitute-table",scope:"full-document",category:"structure",fixerDisposition:"manual",fixerDispositionReason:"图类要求无承载(既无图题也无等效数据表)需补写数据表并加题注,属内容补写而非确定性改写;写入侧应由图类呈现计划同时下达「图 or 等效表」二选一,本检测器为交付前兜底"},{id:"project-type-consistency",scope:"full-document",category:"scope",fixerDisposition:"manual",fixerDispositionReason:"项目类型与正文用词矛盾(如产业园标准化厂房项目出现「自然村/村内/多村并行」)属内容性质错误:自动改写会改变叙述口径与上下文语义,须人工确认后按正确策略重新生成;根治在写入侧(resolveDerivationStrategy 类型守卫 + 策略驱动分组称谓),本检测器为交付前安全网"},{id:"project-contamination",scope:"full-document",category:"scope",fixerDisposition:"fixed",fixerDispositionReason:"对象名污染分支由 sanitizeContaminationCandidates 覆盖;文档编号分支(documentContaminationService.ts:18)无修复器"},{id:"project-basic-placeholder",scope:"full-document",category:"format",fixerDisposition:"manual",fixerDispositionReason:"同源专用修复器 repairKnownProjectBasicPlaceholders 已按「删除无用代码」口径移除(全仓零调用、注册表看不见);当前仅表内占位被 canonical 事实替代,表外正文占位无覆盖"},{id:"standard-final",scope:"full-document",category:"structure",fixerDisposition:"exempt",fixerDispositionReason:"standard-final 组整组重跑的结果容器登记,不产出自身 issue;组内子检测器各自锚定即可"},{id:"fact-coverage",scope:"full-document",category:"evidence_coverage",fixerDisposition:"fixed",fixerDispositionReason:"stageFactLanding 与检测同源同池(uncoveredImportantFacts + 同一事实池),接线 documentPipeline.ts:74"},{id:"page-target",scope:"full-document",category:"structure",fixerDisposition:"exempt",fixerDispositionReason:"页数为估算度量信号(永远 warning 不阻断),无独立可修缺陷;超幅族由字数口径的 length-compression-repair 轮收敛"},{id:"document-budget",scope:"full-document",category:"structure"},{id:"formal-text-gate",scope:"full-document",category:"format"},{id:"heading-uncovered-engineering-items",scope:"full-document",category:"structure"},{id:"writer-missing-section",scope:"full-document",category:"structure",deterministicSafe:!0,fixerDisposition:"fixed",fixerDispositionReason:"由 planned-section-repair 轮按 reason=empty 重写清除;planned=false 的小节不入选"},{id:"critical-section-depth",scope:"chapter",category:"structure"},{id:"critical-section-fact-density",scope:"chapter",category:"evidence_coverage",fixerDisposition:"manual",fixerDispositionReason:"须内容补写,但 issue 无 provenance,按 provenance 过滤的补写轮消费不到(接线 provenance 后可改判 fixed)"},{id:"chapter-fact-density",scope:"chapter",category:"evidence_coverage",fixerDisposition:"exempt",fixerDispositionReason:"质量报告阶段被降级为 info(消息尾句命中 FLOW_DIAGNOSTIC_ISSUE_RE)不阻断;其修复手段是写作期块级重写重试"},{id:"construction-org-professional-audit",scope:"chapter",category:"professional_chain",fixerDisposition:"manual",fixerDispositionReason:"聚合 issue 无 category/provenance 无法被锚定消费,且 5 通道中 3 通道(参数密度/工作包要素/表格空字段)无修复器"},{id:"toc-consistency",scope:"full-document",category:"structure",deterministicSafe:!0,fixerDisposition:"fixed",fixerDispositionReason:"fixTocFromBody 按正文实际结构重建目录,检测定位=修复定位,已接线三处"},{id:"section-numbering",scope:"full-document",category:"structure",deterministicSafe:!0},{id:"section-count-overflow",scope:"chapter",category:"structure"},{id:"heading-duplicate",scope:"full-document",category:"structure",deterministicSafe:!0},{id:"structure-integrity",scope:"full-document",category:"structure",deterministicSafe:!0},{id:"templated-label",scope:"full-document",category:"structure",deterministicSafe:!0},{id:"title-integrity",scope:"full-document",category:"structure"},{id:"evaluation-criteria-coverage",scope:"full-document",category:"evidence_coverage",fixerDisposition:"manual",fixerDispositionReason:"正文核心词缺位须内容补写且无修复轮消费;上游只有预防性补挂(constructionBidStructure.ts:445)"},{id:"requirements-coverage",scope:"full-document",category:"evidence_coverage",fixerDisposition:"fixed",fixerDispositionReason:"requirement-response-repair 轮按 provenance 定向补写(requirementResponseRepair.ts:51)"},{id:"fabricated-start-date",scope:"full-document",category:"fact_consistency",deterministicSafe:!0,fixerDisposition:"manual",fixerDispositionReason:"需语义判断该日期是编造还是合法的招标/法规成文日期,确定性删除必误伤;仅 patchGuard 预防式预检,无存量修复"},{id:"field-value-mismatch",scope:"full-document",category:"fact_consistency",deterministicSafe:!0,fixerDisposition:"manual",fixerDispositionReason:"无实现;权威值在 factsModel 可取属可确定性实现但未实现,现只能转人工"},{id:"area-arithmetic",scope:"full-document",category:"fact_consistency",deterministicSafe:!0,fixerDisposition:"manual",fixerDispositionReason:"地上/地下/单体哪个是错值须资料裁决;同族 scale 修复器显式声明对该三项不做确定性替换"},{id:"resource-consistency",scope:"full-document",category:"fact_consistency",authorities:["laborPeak"]},{id:"node-schedule-consistency",scope:"full-document",category:"fact_consistency",fixerDisposition:"fixed",fixerDispositionReason:"fixNodeScheduleConflicts(fixers.ts:1010),挂 applyNumericConsistencyDeterministicFixes steps"},{id:"cross-section-numeric-conflict",scope:"full-document",category:"fact_consistency",fixerDisposition:"fixed",fixerDispositionReason:"fixCrossSectionNumericConflicts(fixers.ts:1195),同链 steps"},{id:"fact-reconciliation",scope:"full-document",category:"fact_consistency",authorities:["blueprint"]},{id:"greening-maintenance-mismatch",scope:"full-document",category:"fact_consistency",authorities:["greeningMaintenance"]},{id:"street-light-count-mismatch",scope:"full-document",category:"fact_consistency",fixerDisposition:"manual",fixerDispositionReason:"正文常为分型号明细而清单只锁总数,确定性替换会写坏;同族 greening-maintenance 有修复器,此其一无"},{id:"spec-location-mismatch",scope:"full-document",category:"fact_consistency"},{id:"blueprint-citation-consistency",scope:"full-document",category:"fact_consistency",authorities:["blueprint"],fixerDisposition:"fixed",fixerDispositionReason:"fixQuantityAuthorityConflicts(fixers.ts:1304)经 quantityAnchors 直连,含链尾重放"},{id:"cross-project-value-copy",scope:"full-document",category:"fact_consistency",authorities:["blueprint"],fixerDisposition:"fixed",fixerDispositionReason:"global-consistency-repair 轮消费(globalQualityGates.ts:1398);无专用确定性修复器"},{id:"phase-labor-mixing",scope:"full-document",category:"fact_consistency",authorities:["blueprint"]},{id:"equipment-batch-conflict",scope:"full-document",category:"fact_consistency",authorities:["blueprint"]},{id:"preliminary-action-timing",scope:"full-document",category:"fact_consistency",authorities:["blueprint"],fixerDisposition:"fixed",fixerDispositionReason:"fixPreliminaryActionTimingDeterministically 与检测共用 scanPreliminaryActionTimingFindings 同源单扫描,接线 postReviewSurface.ts:274"},{id:"foundation-form-residue",scope:"full-document",category:"fact_consistency",fixerDisposition:"fixed",fixerDispositionReason:"global-consistency-repair 轮消费(globalQualityGates.ts:1407→:1500)"},{id:"ambiguous-either-or",scope:"full-document",category:"fact_consistency",authorities:["supportSystem"]},{id:"excavation-depth-lock",scope:"full-document",category:"fact_consistency",fixerDisposition:"fixed",fixerDispositionReason:"global-consistency-repair 轮消费,另有路由特例与权威值注入(:1533/:1580)"},{id:"excavation-hazard-classification",scope:"full-document",category:"fact_consistency",fixerDisposition:"manual",fixerDispositionReason:"需按 canonical 深度补写分级结论句,当前无任何修复路径"},{id:"support-form-fact-consistency",scope:"full-document",category:"fact_consistency",authorities:["supportSystem"],fixerDisposition:"manual",fixerDispositionReason:"与 support-system-conflict 判据不同源(读 canonical.byKey.foundation_support_form),不可复用其修复器"},{id:"equipment-entry-timing",scope:"full-document",category:"fact_consistency",fixerDisposition:"fixed",fixerDispositionReason:"fixEquipmentEntryTimingDeterministically(postReviewSurface.ts:287),与检测同源单扫描"},{id:"fabricated-award",scope:"full-document",category:"fact_consistency",fixerDisposition:"manual",fixerDispositionReason:"白名单外奖项须回招标原文逐字比对并整体改写创优叙述,无确定性路径"},{id:"bidder-qualification-section",scope:"full-document",category:"scope",fixerDisposition:"fixed",fixerDispositionReason:"stripTenderClauseFragmentHeadings(markdownCleanup.ts:622)删标题;仅覆盖两条句式规则,资格词表分支未覆盖"},{id:"cross-chapter-duplicate-section",scope:"chapter",category:"structure",fixerDisposition:"manual",fixerDispositionReason:"同名小节归并需判断内容归属,确定性路径被有意排除(dedupeDuplicateSectionHeadings 仅章内)"},{id:"basic-info-schedule-field",scope:"full-document",category:"fact_consistency",fixerDisposition:"manual",fixerDispositionReason:"现有归一化的收场是「非法值被拒收→单元格变空」,属以删除通过门禁(P2-2 同口径禁止),不判 fixed"},{id:"duplicate-table",scope:"full-document",category:"table"},{id:"duplicate-paragraph",scope:"full-document",category:"structure"},{id:"paragraph-tail-repeat",scope:"full-document",category:"style",deterministicSafe:!0},{id:"collision-numbered-heading",scope:"full-document",category:"structure",deterministicSafe:!0},{id:"inverted-date-range",scope:"full-document",category:"fact_consistency",deterministicSafe:!0},{id:"resource-triad-section-hierarchy",scope:"full-document",category:"structure",fixerDisposition:"manual",fixerDispositionReason:"修复需重排章节层级/拆分小节,结构性重写且无确定性路径"},{id:"support-system-conflict",scope:"full-document",category:"fact_consistency",authorities:["supportSystem"],fixerDisposition:"fixed",fixerDispositionReason:"fixSupportSystemConflicts(fixers.ts:38),同链 steps;权威缺失时不动作,属部分覆盖"},{id:"dangerous-list-consistency",scope:"full-document",category:"fact_consistency",fixerDisposition:"manual",fixerDispositionReason:"两处清单需合并为唯一清单并统一项名与分级,属内容改写"},{id:"hazard-exclusion-contradiction",scope:"full-document",category:"fact_consistency",fixerDisposition:"manual",fixerDispositionReason:"排除声明与清单孰对取决于资料是否真达判定阈值,须资料裁决"},{id:"six-hundred-percent-coverage",scope:"full-document",category:"evidence_coverage",fixerDisposition:"manual",fixerDispositionReason:"补写型修复器已随 4.41「零确定性正文注入」架构决策删除(fixers.ts:1625),内容缺失只能由生成侧补齐"},{id:"self-undermining-candidate",scope:"full-document",category:"style"},{id:"paragraph-opening-repeat",scope:"full-document",category:"style",deterministicSafe:!0},{id:"flow-form-repeat",scope:"full-document",category:"style"},{id:"skeleton-fingerprint",scope:"full-document",category:"style"},{id:"sentence-pattern-repeat",scope:"full-document",category:"style"},{id:"repeated-word",scope:"full-document",category:"style",deterministicSafe:!0},{id:"commercial-data-in-body",scope:"full-document",category:"scope",fixerDisposition:"fixed",fixerDispositionReason:"stripCommercialDataBodyLines(postReviewSurface.ts:209),与检测同口径"},{id:"overview-recap",scope:"full-document",category:"style"},{id:"closure-phrase-density-cap",scope:"full-document",category:"style",fixerDisposition:"manual",fixerDispositionReason:"缺陷是词频密度(语义/文风改写),无修复轮按 provenance 消费;fiveElementClosureBoost 的补句池刻意避开闭环密度词"},{id:"parameter-concept-conflict",scope:"full-document",category:"fact_consistency"},{id:"internal-terminology-anchor",scope:"full-document",category:"style",deterministicSafe:!0},{id:"construction-system-coverage",scope:"chapter",category:"evidence_coverage",fixerDisposition:"manual",fixerDispositionReason:"某专业系统整章零覆盖须补写施工方案正文,属内容生成"},{id:"dangerous-applicability",scope:"full-document",category:"evidence_coverage"},{id:"innovation-tech-coverage",scope:"full-document",category:"evidence_coverage",fixerDisposition:"manual",fixerDispositionReason:"缺节场景可被补写轮间接覆盖,但「小节 <200 字的部分成稿」场景无任何路径(补写轮 alsoAnchoredTo 接上后可改判 fixed)"},{id:"instruction-like-heading",scope:"full-document",category:"structure",fixerDisposition:"fixed",fixerDispositionReason:"仅 tender-clause-heading-strip 一支(^#{3,4} 且判据为 isTenderClauseFragmentTitle);主判据 instructionTitleRe(是否涉及/按需生成/视情况/注意事项)与 H2 级碎片无任何正文修复器"},{id:"formal-heading-hierarchy",scope:"full-document",category:"structure",deterministicSafe:!0,fixerDisposition:"manual",fixerDispositionReason:"非法 H2 的现成修复器 demoteNonFormalH2 已按「删除无用代码」口径移除(全仓零调用);当前无任何生产修复路径"},{id:"formal-content-integrity",scope:"full-document",category:"format",deterministicSafe:!0,fixerDisposition:"manual",fixerDispositionReason:"截断句须补全句子内容;fixTruncatedSentenceArtifacts 修的是标点叠用且锚在另一个 id 上,非同源"},{id:"punctuation-artifact",scope:"full-document",category:"format",deterministicSafe:!0},{id:"table-quality",scope:"full-document",category:"table",deterministicSafe:!0},{id:"table-spam",scope:"full-document",category:"table",deterministicSafe:!0},{id:"basis-regulations-coverage",scope:"full-document",category:"fact_consistency",authorities:["blueprint"]},{id:"basis-regulations-cross",scope:"full-document",category:"fact_consistency"},{id:"resource-breakdown-consistency",scope:"full-document",category:"fact_consistency",authorities:["blueprint"]},{id:"section-content-integrity",scope:"chapter",category:"structure"},{id:"professional-content",scope:"chapter",category:"professional_chain",fixerDisposition:"manual",fixerDispositionReason:"缺项须补写专业内容,全仓无同源修复函数;且本 issue 无 provenance,按 provenance 过滤的修复轮消费不到,属真孤儿"},{id:"professional-score",scope:"chapter",category:"professional_chain"},{id:"generic-professional-content",scope:"chapter",category:"professional_chain",fixerDisposition:"manual",fixerDispositionReason:"判据=词面 8 词命中≥6 + bge 语义门;最近的套话修复器(isTemplatePrefixSentence + FILLER_SEMANTIC_QUERIES)判据不同源,不构成覆盖"},{id:"management-measure-number",scope:"chapter",category:"professional_chain",fixerDisposition:"manual",fixerDispositionReason:"需补责任主体/频次/台账/整改复查的语义补写,确定性路径不存在;且无 provenance,修复轮看不见"},{id:"closed-loop-density",scope:"full-document",category:"control_loop",fixerDisposition:"exempt",fixerDispositionReason:"纯度量信号:判据是闭环块密度对标 max(6,字数/1500),注释自述与评分同口径不阻断门禁;补闭环词还会撞 closure-phrase-density-cap 上限,不宜自动改"},{id:"cross-chapter-consistency",scope:"full-document",category:"fact_consistency"},{id:"process-spec-conflict",scope:"full-document",category:"fact_consistency",fixerDisposition:"fixed",fixerDispositionReason:"applyDeterministicConsistencyFixes 与检测端同判据同归属规则(collectLayerNumbers+buildSpecActionGate),已接线两条确定性链"},{id:"evidence-usage-coverage",scope:"full-document",category:"evidence_coverage",fixerDisposition:"manual",fixerDispositionReason:"缺陷是「未引用该类事实」,只能靠补写正文;fact-distribution-round 与 important-unplaced-facts 轮判据均不同源且不复检本 id"},{id:"paragraph-generic",scope:"full-document",category:"style",fixerDisposition:"manual",fixerDispositionReason:"判据=段落长度 + 10 词泛化表 + bge 具体性门;fillerParagraphIssues 用另一套 17 条词面 + 14 语义原型,同族不同判据"},{id:"construction-org-generic-language",scope:"chapter",category:"style",fixerDisposition:"fixed",fixerDispositionReason:"由 templating-repair 轮消费(该轮走 globalQualityGates 内联的 fillerDensityReport,非本 id 产出的 issue;本 gate 为内联检查的同族检测器,见幻影锚点收口说明)"},{id:"construction-org-control-loop",scope:"chapter",category:"control_loop"},{id:"construction-org-professional-chain",scope:"chapter",category:"professional_chain"},{id:"construction-org-consistency",scope:"full-document",category:"fact_consistency",fixerDisposition:"manual",fixerDispositionReason:"需按资料裁决哪个口径为真且涉及跨表改写;同族修复器(fixEquipmentBatchConflicts/fixLaborPeakConflict/resource-breakdown)判据均不同源"},{id:"construction-org-chapter-data-coverage",scope:"chapter",category:"evidence_coverage",fixerDisposition:"manual",fixerDispositionReason:"属「章内缺项目事实」的补写型缺陷,仅生成侧/人工可解"},{id:"construction-org-major-content",scope:"chapter",category:"professional_chain"},{id:"construction-org-division-section",scope:"chapter",category:"structure"},{id:"major-content-governance",scope:"full-document",category:"structure",fixerDisposition:"fixed",fixerDispositionReason:"仅清单口径词族有修复器(postReviewSurface.ts:313);表格承载正文族无,仍走终门禁"},{id:"construction-org-bonus-module",scope:"chapter",category:"professional_chain",fixerDisposition:"exempt",fixerDispositionReason:"加分项建议而非缺陷(代码自述为避免污染缺陷计分,只产出 info 级「高分模块」建议)"},{id:"chapter-dependency",scope:"chapter",category:"professional_chain",fixerDisposition:"manual",fixerDispositionReason:"需在指定章补写投入调配/工艺控制/应急闭环内容,属语义补写;且无 provenance"},{id:"document-delivery-score",scope:"full-document",category:"professional_chain",fixerDisposition:"exempt",fixerDispositionReason:"纯评分汇总载体(总分 x/10 的元信息),其内部调用的三个检测器各自已有 id 与处置,本 id 不产出缺陷"},{id:"generated-fact-verification",scope:"full-document",category:"fact_consistency",fixerDisposition:"manual",fixerDispositionReason:"反查失败数值的自动消除即删除式修复(P2-2 已明令禁止),补齐权威属资料侧动作——与 numeric-traceability 同口径"},{id:"numeric-traceability",scope:"full-document",category:"evidence_coverage",fixerDisposition:"manual",fixerDispositionReason:"修复器已按 P2-2 停用(删除式修复被明令禁止);补齐权威值属资料/配置侧动作"},{id:"table-arithmetic-consistency",scope:"full-document",category:"evidence_coverage"},{id:"duplicate-basic-info",scope:"full-document",category:"structure",fixerDisposition:"fixed",fixerDispositionReason:"fixDuplicateBasicInfoTables 覆盖重复表族;「表前重复逐项叙述」族未覆盖(已扩展锚定到该修复器)"},{id:"formal-style",scope:"full-document",category:"style"},{id:"tertiary-heading",scope:"full-document",category:"structure",deterministicSafe:!0},{id:"min-chapter-section",scope:"chapter",category:"structure",fixerDisposition:"fixed",fixerDispositionReason:"mergeDuplicateThematicSections 与检测共用桶键 classifyThematicSectionKey,接线 duplicate-theme-merge 轮;精确同名小节族另由 heading-duplicate-merge 覆盖"},{id:"planned-section-placement",scope:"chapter",category:"structure",fixerDisposition:"manual",fixerDispositionReason:"链尾确定性提升覆盖「降级为 H4」形态(delivery-structure-closure);整节漏写属写作缺项,交 LLM 定向补写小节(provenance 已打点)"},{id:"hollow-table-cell",scope:"full-document",category:"table",fixerDisposition:"manual",fixerDispositionReason:"按「表\xd7列」聚合报出,交 LLM 按列补真实值(同章正文通常已有同口径数据)"},{id:"schedule-duration-overrun",scope:"full-document",category:"fact_consistency",fixerDisposition:"manual",fixerDispositionReason:"按生效工期重排进度计划与节点天序(源头解析已取变更后口径,残留为写作期漂移)"},{id:"caliber-consistency",scope:"full-document",category:"fact_consistency",fixerDisposition:"manual",fixerDispositionReason:"被取代值由链尾 delivery-structure-closure 按真值层覆盖表**确定性替换**(不依赖本检测器锚定);本检测器报出的是「生效值整体未落位」类残留,进人工复核清单"},{id:"hazard-parameter-binding",scope:"full-document",category:"fact_consistency",fixerDisposition:"fixed",fixerDispositionReason:"content-depth-repair 定向补写:在危大判定处补本项目实际参数 + 阈值对照 + 结论"},{id:"blueprint-value-placement",scope:"full-document",category:"professional_chain",fixerDisposition:"fixed",fixerDispositionReason:"content-depth-repair 定向补写:按蓝图权威值写资源配置具体数值"},{id:"dangling-conjunction",scope:"full-document",category:"structure",fixerDisposition:"fixed",fixerDispositionReason:"content-depth-repair 定向补全被截断的句子成分(标点类残片另有 fixTruncatedSentenceArtifacts)"},{id:"precise-fact-usage",scope:"full-document",category:"fact_consistency"},{id:"parameter-obligation-usage",scope:"full-document",category:"fact_consistency"},{id:"boq-placement",scope:"full-document",category:"evidence_coverage"},{id:"stage-phrasing",scope:"full-document",category:"fact_consistency",fixerDisposition:"manual",fixerDispositionReason:"阶段划分口径统一属语义改写,且该 issue 无 provenance,修复轮按 provenance 过滤消费不到"},{id:"emergency-section-depth",scope:"full-document",category:"structure"},{id:"boq-row-trace",scope:"full-document",category:"evidence_coverage",fixerDisposition:"exempt",fixerDispositionReason:"只产 warning,既不断阻断也不进人工清单(清单由 blockingIssues 构建);同轴真缺口另有 blocker 通道 boq-placement"},{id:"drawing-reference",scope:"full-document",category:"evidence_coverage"},{id:"web-evidence-leakage",scope:"full-document",category:"scope",fixerDisposition:"exempt",fixerDispositionReason:"warning 级度量信号不阻断、不进人工清单,且全仓不存在该词族的删除/改写函数"},{id:"formal-placeholder",scope:"full-document",category:"format",deterministicSafe:!0},{id:"prompt-example-leak",scope:"full-document",category:"format",fixerDisposition:"manual",fixerDispositionReason:"「疑似样例」删除必误伤(样例块可能撞合法正文),无实现且无消费轮"},{id:"degenerate-content",scope:"chapter",category:"style",fixerDisposition:"manual",fixerDispositionReason:"唯一可能消费它的章级重扫入口 lightweightChapterIssues 已按「删除无用代码」口径移除(全仓零调用);退化输出的修复等同重新生成小节"},{id:"planned-auto-spec-gate",scope:"full-document",category:"structure"},{id:"bid-composition-body-table",scope:"full-document",category:"structure",fixerDisposition:"fixed",fixerDispositionReason:"dismantleBodyTables 同判据 LLM 拆表改写;finalize 侧只重跑禁表分支(章级授权口径未覆盖)"},{id:"bid-composition-body-figure",scope:"full-document",category:"structure",fixerDisposition:"fixed",fixerDispositionReason:"removeUnwantedDrawingImages(markdownComposer.ts:1905)与检测共用 FIGURE_PLACEHOLDER_RE"},{id:"identity-marks-forbidden",scope:"full-document",category:"format",fixerDisposition:"manual",fixerDispositionReason:"需删/改写业绩获奖证书类敏感句,可自动化但未实现;当前只有写作期与修复提示词约束"},{id:"planned-structure",scope:"full-document",category:"structure"},{id:"table-caption",scope:"full-document",category:"format"},{id:"prompt-document-rule",scope:"full-document",category:"format",fixerDisposition:"fixed",fixerDispositionReason:"applyPromptDocumentRules 覆盖残留封面/目录/缺必需表/禁止词行;指令型标题、缺指定一级章节、缺关键词、字数不足族无实现"},{id:"local-adaptation-keyword",scope:"full-document",category:"evidence_coverage",fixerDisposition:"fixed",fixerDispositionReason:"仅 blocker 通道(工伤保险缺失)有修复器(postReviewSurface.ts:301);另两条属度量/增强项,不阻断"},{id:"boq-division-coverage",scope:"full-document",category:"evidence_coverage",fixerDisposition:"fixed",fixerDispositionReason:"enforceBoqDivisionCoverageInMethodChapters(postReviewSurface.ts:400)链尾确定性补写"},{id:"authority-audit-gap",scope:"full-document",category:"fact_consistency",fixerDisposition:"fixed",fixerDispositionReason:"numeric-verification 轮收敛(numericVerification.ts:131)。覆盖已被削弱:其确定性兜底 demoteUnsourcedNumericTokens 已按 P2-2 停用,只剩 LLM 一条路"},{id:"source-enumeration",scope:"full-document",category:"style",deterministicSafe:!0,fixerDisposition:"fixed",fixerDispositionReason:"cleanFormalSourcePhrases(deterministicStage5.ts:161)与检测共用同一词表;该 id 从未经 det() 登记,属漏登记"},{id:"meta-discourse-declaration",scope:"full-document",category:"style",deterministicSafe:!0},{id:"finish-thickness",scope:"full-document",category:"fact_consistency",deterministicSafe:!0},{id:"formula-residue",scope:"full-document",category:"format",deterministicSafe:!0},{id:"truncated-sentence",scope:"full-document",category:"format",deterministicSafe:!0},{id:"atlas-reference-phrase",scope:"full-document",category:"format",deterministicSafe:!0},{id:"block-structure-contract",scope:"chapter",category:"structure",fixerDisposition:"exempt",fixerDispositionReason:"写作期块级执行器门,返回计数不产出 ValidationIssue,无对象可被 FixerEntry 锚定(重写重试即其修复手段)"},{id:"block-fact-density",scope:"chapter",category:"evidence_coverage",fixerDisposition:"exempt",fixerDispositionReason:"写作期块级执行器门:不产出 ValidationIssue 只返回 BlockDensityAssessment,首轮阻断重写即其修复手段"},{id:"block-templating",scope:"chapter",category:"style",fixerDisposition:"exempt",fixerDispositionReason:"写作期块级执行器门:不产出 ValidationIssue 只返回 BlockTemplatingVerdict;终检侧由 templating-repair 轮承载"},{id:"block-attribution-quantification",scope:"chapter",category:"professional_chain",fixerDisposition:"exempt",fixerDispositionReason:"写作期块级执行器门:不产出 ValidationIssue 只返回 AttributionQuantificationVerdict"},{id:"block-numeric-reconciliation",scope:"chapter",category:"fact_consistency",fixerDisposition:"exempt",fixerDispositionReason:"写作期块级执行器门:不产出 ValidationIssue 只返回 NumericReconciliation,阻断重写即修复手段"},{id:"block-format-constraints",scope:"chapter",category:"format",fixerDisposition:"exempt",fixerDispositionReason:"写作期块级执行器门:不产出 ValidationIssue 只返回命中行;终检侧同词表门为 formal-text-gate"}];function s(a){return r.find(b=>b.id===a)}function t(a,b){let c=new Set(a??[]),d=new Set(b??[]);if(c.size!==d.size)return!1;for(let a of c)if(!d.has(a))return!1;return!0}function u(){let a=[],b=[...h,...i,...k,...j,...m];for(let c of b){let b=s(c.anchoredTo);if(!b){a.push(`修复器 ${c.id} 锚定检测器 ${c.anchoredTo} 未在注册表声明(检测定位=修复定位强制同源)`);continue}for(let d of(t(c.authorities,b.authorities)||a.push(`修复器 ${c.id}(authorities=${JSON.stringify(c.authorities??[])})与锚定检测器 ${c.anchoredTo}(authorities=${JSON.stringify(b.authorities??[])})权威口径不一致`),c.alsoAnchoredTo??[])){let b=s(d);b?t(c.authorities,b.authorities)||a.push(`修复器 ${c.id}(authorities=${JSON.stringify(c.authorities??[])})与扩展锚定检测器 ${d}(authorities=${JSON.stringify(b.authorities??[])})权威口径不一致`):a.push(`修复器 ${c.id} 扩展锚定检测器 ${d} 未在注册表声明(检测定位=修复定位强制同源)`)}if("llm-patch"===c.kind&&!c.patchGuard){a.push(`LLM patch 修复器 ${c.id} 未声明 patchGuard(修复过程会重新引入已知坏内容,必须预检)`);continue}for(let b of c.patchGuard?.detectors??[]){let d=s(b);d?d.deterministicSafe||a.push(`修复器 ${c.id} patchGuard 引用检测器 ${b} 未标记 deterministicSafe(patchGuard 只收录零误伤确定性检测器)`):a.push(`修复器 ${c.id} patchGuard 引用检测器 ${b} 未在注册表声明`)}}for(let[b,c]of h.entries())h.slice(0,b).some(a=>a.id===c.id)&&a.push(`确定性修复器锚定声明重复:${c.id}`);let c=new Set(d.aW.map(a=>a.key));for(let b of c)h.some(a=>a.id===b)||a.push(`确定性修复器 ${b} 已接入 SURFACE_FIX_STEPS 但未在 DETERMINISTIC_FIXER_ANCHORS 声明锚定检测器`);for(let b of h)c.has(b.id)||a.push(`确定性修复器锚定声明 ${b.id} 无对应 SURFACE_FIX_STEPS 键(声明多余或键已改名)`);for(let[b,c]of i.entries())i.slice(0,b).some(a=>a.id===c.id)&&a.push(`数值裁决器修复器声明重复:${c.id}`);for(let[b,c]of k.entries())k.slice(0,b).some(a=>a.id===c.id)&&a.push(`章草稿级修复器声明重复:${c.id}`);for(let[b,c]of j.entries())j.slice(0,b).some(a=>a.id===c.id)&&a.push(`链内确定性修复器声明重复:${c.id}`);let l=new Set([...h,...i,...k,...m].map(a=>a.id));for(let b of j)l.has(b.id)&&a.push(`链内确定性修复器 ${b.id} 与其它声明表重名(FixerEntry.id 须全局唯一,否则按 id 追溯修复器产生歧义)`);for(let b of r)b.category&&g.has(b.category)||a.push(`检测器 ${b.id} 声明了非法 category(当前=${b.category||"缺失"};合法值:${[...g].join("、")})`);if(a.push(...function(a){let b=[],c=new Set;for(let b of a.fixers)for(let a of(c.add(b.anchoredTo),b.alsoAnchoredTo??[]))c.add(a);let d=new Set(a.pending);for(let c of(d.size!==a.pending.length&&b.push("PENDING_FIXER_DISPOSITION 存在重复 id(欠账清单须唯一)"),d))a.detectors.some(a=>a.id===c)||b.push(`PENDING_FIXER_DISPOSITION 声明了未登记的检测器 ${c}(已改名或已删除,请同步移出欠账清单)`);for(let f of a.detectors){let a=c.has(f.id),g=f.fixerDisposition;if(d.has(f.id)){g?b.push(`检测器 ${f.id} 已完成处置声明(${g})却仍在 PENDING_FIXER_DISPOSITION 中——请从欠账清单移出`):a&&b.push(`检测器 ${f.id} 已有修复器锚定却仍在 PENDING_FIXER_DISPOSITION 中——请从欠账清单移出`);continue}if(!g){a?f.fixerDispositionReason&&b.push(`检测器 ${f.id} 写了 fixerDispositionReason 却未声明 fixerDisposition(说明须挂在明确处置上)`):b.push(`检测器 ${f.id} 既无修复器锚定、也未声明 fixerDisposition(孤儿必须显式 'exempt' 或 'manual' 并说明理由,不得沉默)`);continue}if(!e.has(g)){b.push(`检测器 ${f.id} 声明了非法 fixerDisposition(当前=${g};合法值:${[...e].join("、")})`);continue}"fixed"!==g||a||b.push(`检测器 ${f.id} 声明 fixerDisposition='fixed' 但无任何 FixerEntry 锚定它(声明与事实不符)`),"fixed"!==g&&(a&&b.push(`检测器 ${f.id} 声明 fixerDisposition='${g}' 但已有修复器锚定——声明与事实不符(应改为 'fixed' 或移除多余锚定)`),f.fixerDispositionReason?.trim()||b.push(`检测器 ${f.id} 声明 fixerDisposition='${g}' 但未给出理由(exempt/manual 必须书面说明为何不需要修复器)`))}return b}({detectors:r,fixers:b,pending:f})),a.length>0)throw Error(`检测器/修复器注册表一致性校验失败(${a.length} 项):
|
|
172
172
|
${a.map(a=>`- ${a}`).join("\n")}`)}},77088:(a,b,c)=>{c.d(b,{C8:()=>aB,dr:()=>aH,AA:()=>aG,nn:()=>an,OY:()=>ai,DL:()=>aJ,jM:()=>am,RT:()=>ao,rR:()=>w,R3:()=>z,iV:()=>aj,Pd:()=>v,ZP:()=>as,md:()=>aA,nR:()=>y,m4:()=>x,Nj:()=>aI,eT:()=>Y,TF:()=>az,Rx:()=>au,uw:()=>aC,wY:()=>R,Fq:()=>aK});var d=c(73024),e=c(76760),f=c(48661);let g=[{name:"水准仪",spec:"DS3",quantity:2,purpose:"高程控制测量与标高复核"},{name:"全站仪",spec:"2″级",quantity:1,purpose:"平面控制测量与施工放样"},{name:"经纬仪",spec:"J2",quantity:1,purpose:"轴线投测与角度测量"},{name:"钢卷尺",spec:"50m",quantity:4,purpose:"距离测量与构件尺寸复核"},{name:"靠尺",spec:"2m",quantity:4,purpose:"平整度与垂直度检测"},{name:"水准标尺",spec:"5m",quantity:2,purpose:"水准测量配套"},{name:"混凝土试模",spec:"150mm 立方体",quantity:12,purpose:"混凝土强度试件成型"},{name:"砂浆试模",spec:"70.7mm 立方体",quantity:6,purpose:"砂浆强度试件成型"},{name:"坍落度筒",spec:"标准",quantity:2,purpose:"混凝土拌合物和易性检测"},{name:"环刀",spec:"标准",quantity:6,purpose:"回填土密实度取样"},{name:"灌砂筒",spec:"标准",quantity:4,purpose:"压实度现场检测"},{name:"回弹仪",spec:"标准",quantity:2,purpose:"混凝土强度无损检测"},{name:"电子天平",spec:"0.01g",quantity:1,purpose:"试验称量"},{name:"温湿度计",spec:"标准",quantity:4,purpose:"施工环境温湿度记录"}],h=[{name:"项目部办公区",areaPerCapita:4,locationHint:"现场出入口附近",durationHint:"施工全过程",note:"项目管理人员办公与会议用房"},{name:"工人生活区",areaPerCapita:5,locationHint:"场内有组织的生活区(远离作业区)",durationHint:"施工全过程",note:"工人宿舍、食堂与卫生设施"},{name:"材料堆放场",area:800,locationHint:"场内运输道路旁",durationHint:"施工全过程",note:"钢筋、管材、砂石料分类堆放并分区标识"},{name:"加工区(钢筋/木工)",area:300,locationHint:"材料堆放场邻侧",durationHint:"主体施工期间",note:"钢筋加工棚与木工加工棚"},{name:"机械设备停放区",area:200,locationHint:"场内生产区",durationHint:"施工全过程",note:"施工机械停放与日常维护"},{name:"试验用房",area:60,locationHint:"项目部办公区附近",durationHint:"施工全过程",note:"标准养护室与现场试验操作间"},{name:"临时用电配电房",area:30,locationHint:"靠近负荷中心处",durationHint:"施工全过程",note:"总配电房与分配电箱布置"},{name:"消防与卫生设施",area:40,locationHint:"生活区与材料区分别设置",durationHint:"施工全过程",note:"消防器材点、沉淀池与垃圾收集点"}],i=[{zone:"east",pattern:/上海|江苏|浙江|安徽|福建|江西|山东/u,climate:{rainySeason:"6-8月",highTemp:"7-8月",winter:"12-2月"}},{zone:"south",pattern:/广东|广西|海南/u,climate:{rainySeason:"4-9月",highTemp:"6-9月",winter:"12-2月"}},{zone:"north",pattern:/北京|天津|河北|山西|内蒙古/u,climate:{rainySeason:"7-8月",highTemp:"7-8月",winter:"11-3月"}},{zone:"northeast",pattern:/辽宁|吉林|黑龙江/u,climate:{rainySeason:"7-8月",highTemp:"7月",winter:"11-3月"}},{zone:"northwest",pattern:/陕西|甘肃|宁夏|青海|新疆/u,climate:{rainySeason:"7-8月",highTemp:"7-8月",winter:"11-3月"}},{zone:"southwest",pattern:/四川|重庆|云南|贵州|西藏/u,climate:{rainySeason:"6-9月",highTemp:"7-8月",winter:"12-2月"}},{zone:"central",pattern:/湖北|湖南|河南/u,climate:{rainySeason:"6-8月",highTemp:"7-8月",winter:"12-2月"}}];function j(a){let b=`${a.name} ${a.description}`;return/塑料管|管道|检查井|雨水口|化粪池|涵管/u.test(b)?"管道铺设":/挖一般土方|挖沟槽|挖基坑|回填|清淤|余方|弃置|土方/u.test(b)&&"m3"===a.unit?"土方工程":/混凝土|垫层|涵头|压顶/u.test(b)&&"m3"===a.unit?"混凝土工程":/水泥混凝土|路床|铺装|道路|青砖|散水|块料/u.test(b)&&"m2"===a.unit?"道路铺装":/砌筑|砌体|砖/u.test(b)?"砌筑工程":/绿化|栽植|种植|苗木|草籽|喷播|灌木|乔木|色带|草坪/u.test(b)?"绿化工程":"安装工程"}let k={id:"village-municipal",projectTypes:["市政","园林绿化"],groupLabel:"自然村分组",villageOriented:!0,milestoneGroups:[{key:"prep",label:"施工准备与清杂拆除",pattern:/清杂|拆除|场地平整|临时/u},{key:"pipe",label:"污水管网工程",pattern:/塑料管|检查井|管网|排水|化粪池|雨水口/u},{key:"road",label:"道路铺装工程",pattern:/道路|路床|水泥混凝土|级配碎石|路缘石|青砖|散水|过路涵/u},{key:"landscape",label:"景观与绿化工程",pattern:/景观|绿化|栽植|种植|苗木|喷播|小菜园|沟塘|清淤/u},{key:"lighting",label:"亮化与收尾工程",pattern:/路灯|亮化|配电|电缆|防雷/u}],groupOfEntry:j,tradeMapping:[{trade:"管道工",pattern:/塑料管|管道|检查井|雨水口|化粪池|闭水|涵管|排水/u},{trade:"混凝土工",pattern:/混凝土|水泥砂浆|垫层|涵头|压顶/u},{trade:"瓦工",pattern:/砌筑|砌体|砖|路缘石|铺装|侧石|平石|块料|踏步|台阶/u},{trade:"绿化工",pattern:/绿化|栽植|种植|苗木|草籽|喷播|养护|灌木|乔木|色带|草坪/u},{trade:"电工",pattern:/路灯|配电|电缆|强电|防雷|接地|灯具|亮化/u},{trade:"普工",pattern:/土方|清杂|拆除|平整|回填|清淤|开挖/u}],laborUnitRange:{管道铺设:{unit:"m",min:.15,max:.3},土方工程:{unit:"m3",min:.08,max:.15},混凝土工程:{unit:"m3",min:.8,max:1.5},道路铺装:{unit:"m2",min:.3,max:.6},砌筑工程:{unit:"m3",min:1.2,max:2},绿化工程:{unit:"m2",min:.08,max:.15},安装工程:{unit:"项",min:0,max:0}},equipmentMapping:[{name:"挖掘机",spec:"0.6~1.0m\xb3",pattern:/人机配合|开挖|挖土|沟槽/u,unit:"m3",basis:"人机配合开挖(清单特征)"},{name:"自卸汽车",spec:"8t",pattern:/余方弃置|弃方|外运|回填/u,unit:"m3",basis:"土方运输与回填(清单条目)"},{name:"压路机",spec:"8~12t",pattern:/碾压|压实度/u,unit:"m2",basis:"路床碾压与压实度要求(清单特征)"},{name:"蛙式打夯机",spec:"",pattern:/回填|夯实/u,unit:"m3",basis:"沟槽回填夯实(清单条目)"},{name:"混凝土搅拌运输车",spec:"",pattern:/商品混凝土|C\d{2}混凝土/u,unit:"m3",basis:"商品混凝土运输(清单特征)"},{name:"插入式振捣器",spec:"",pattern:/混凝土浇筑|振捣/u,unit:"m3",basis:"混凝土浇筑(清单条目)"},{name:"洒水车",spec:"",pattern:/养护|绿化|喷播|栽植/u,unit:"m2",basis:"绿化养护与洒水(清单条目)"},{name:"高空作业车",spec:"",pattern:/路灯|灯具安装/u,unit:"套",basis:"路灯安装(清单条目)"}],machinePowerTable:[{name:"挖掘机",kw:90},{name:"自卸汽车",kw:120},{name:"压路机",kw:75},{name:"蛙式打夯机",kw:3},{name:"混凝土搅拌运输车",kw:110},{name:"插入式振捣器",kw:1.5},{name:"洒水车",kw:90},{name:"高空作业车",kw:60}],inspectionBatchRules:[{scope:"污水管网管道",namePattern:/塑料管|管道/u,unit:"m",divisor:200,descTemplate:"管道闭水试验分段检验,按每 200m 一段划分约 {count} 段(总长 {total}m)"},{scope:"道路工程",namePattern:/水泥混凝土|级配碎石|路床/u,unit:"m2",divisor:200,descTemplate:"路床压实度按每层每 200m\xb2 不少于 1 点检验,约 {count} 点(总面积 {total}m\xb2)"},{scope:"检查井",namePattern:/检查井/u,unit:"",divisor:1,descTemplate:"检查井逐座验收,共 {total} 座"}],difficultyTemplates:[{name:a=>`${a.villages.length} 个自然村分散施工组织协调`,measure:"按自然村分组划分施工段,多村平行施工 + 村内流水作业,配置专职协调员",basis:"清单按自然村分组",test:a=>a.villages.length>=2},{name:"雨季管网沟槽施工",measure:"雨季排水与边坡防护,分段开挖、快速回填(联动季节施工措施板块)",basis:"清单含沟槽开挖与管道铺设条目",test:a=>a.entries.some(a=>/挖沟槽|沟槽开挖|塑料管铺设/u.test(`${a.name} ${a.description}`))},{name:"村庄内道路施工交通疏导",measure:"分段封闭施工,设置临时道路保障居民出行(补疑条款:居民出行临时道路)",basis:"清单含道路工程条目且村内施工",test:a=>a.villages.length>0&&a.entries.some(a=>/道路|路床|路面/u.test(a.name))},{name:"既有杆管线保护",measure:"开挖前探测交底,杆线保护措施费含在清单单价内",basis:"清单特征原文含杆线保护条款",test:a=>a.entries.some(a=>/杆线|管线保护|既有管线/u.test(a.description))}],deploymentFlowFallback:"分区段流水作业",multiVillageFlow:a=>`多村平行施工 + 村内流水作业(${a} 个自然村分组)`,sequenceFallback:"清杂拆除 → 管网道路 → 景观绿化 → 亮化收尾",climateZone:"east",powerFallbackText:"临时用电以村庄既有电源分散接入为主,各施工组单独设置配电箱与计量表(柴油机械不计入用电负荷,电动机具零星分散)",waterNoteText:"施工用水以洒水车供水为主,总用水量按管网分段配置"},l={id:"building",projectTypes:["房建","装饰装修"],groupLabel:"单位工程",milestoneGroups:[{key:"prep",label:"施工准备与三通一平",pattern:/清杂|拆除|场地平整|临建|临时|三通一平/u},{key:"foundation",label:"基础工程",pattern:/桩基|基础|基坑|地下室|降水|支护|土方|挖方|回填/u},{key:"structure",label:"主体结构工程",pattern:/钢筋|模板|砌体|主体|框架|剪力墙|现浇|混凝土/u},{key:"finish",label:"装饰装修工程",pattern:/装饰|抹灰|防水|保温|门窗|屋面|涂料|吊顶|幕墙/u},{key:"mep",label:"安装与收尾工程",pattern:/电气|给排水|暖通|消防|电梯|智能化|收尾|竣工|调试/u}],groupOfEntry:function(a){let b=`${a.name} ${a.description}`;return/土方|挖方|回填|弃置|清淤/u.test(b)&&"m3"===a.unit?"土方工程":/钢筋|植筋/u.test(b)?"钢筋工程":/模板|支模/u.test(b)?"模板工程":/混凝土|垫层|现浇/u.test(b)?"混凝土工程":/砌筑|砌体|砖/u.test(b)?"砌筑工程":/防水|卷材|涂膜/u.test(b)?"防水工程":/保温|挤塑|聚苯/u.test(b)?"保温工程":/装饰|抹灰|涂料|吊顶|幕墙|墙砖|地砖|油漆|门窗/u.test(b)?"装饰工程":/电气|给排水|配电|照明|灯具|插座|管线|穿线|桥架|暖通|消防|电梯/u.test(b)?"安装电气":"安装工程"},tradeMapping:[{trade:"钢筋工",pattern:/钢筋|植筋/u},{trade:"模板工",pattern:/模板|支模/u},{trade:"防水工",pattern:/防水|卷材|涂膜/u},{trade:"架子工",pattern:/脚手架|外架/u},{trade:"抹灰工",pattern:/抹灰|粉刷|抹面/u},{trade:"水电工",pattern:/电气|给排水|配电|照明|灯具|插座|管线|穿线|桥架/u},{trade:"保温工",pattern:/保温|挤塑|聚苯/u},{trade:"混凝土工",pattern:/混凝土|水泥砂浆|垫层/u},{trade:"瓦工",pattern:/砌筑|砌体|砖|块料|铺装|墙砖|地砖/u},{trade:"普工",pattern:/土方|清杂|拆除|平整|回填|清淤|开挖/u}],laborUnitRange:{土方工程:{unit:"m3",min:.08,max:.15},钢筋工程:{unit:"t",min:.8,max:1.5},模板工程:{unit:"m2",min:.3,max:.6},混凝土工程:{unit:"m3",min:.8,max:1.5},砌筑工程:{unit:"m3",min:1.2,max:2},防水工程:{unit:"m2",min:.06,max:.12},保温工程:{unit:"m2",min:.15,max:.3},装饰工程:{unit:"m2",min:.2,max:.4},安装电气:{unit:"m",min:.08,max:.15},安装工程:{unit:"项",min:0,max:0}},equipmentMapping:[{name:"挖掘机",spec:"0.6~1.0m\xb3",pattern:/开挖|挖土|基坑|土方/u,unit:"m3",basis:"土方开挖(清单特征)"},{name:"自卸汽车",spec:"8t",pattern:/余方弃置|弃方|外运|回填/u,unit:"m3",basis:"土方运输与回填(清单条目)"},{name:"插入式振捣器",spec:"",pattern:/混凝土浇筑|振捣/u,unit:"m3",basis:"混凝土浇筑(清单条目)"},{name:"蛙式打夯机",spec:"",pattern:/回填|夯实/u,unit:"m3",basis:"回填夯实(清单条目)"},{name:"塔式起重机",spec:"QTZ63",pattern:/塔吊|塔式起重机/u,unit:"项",basis:"主体结构垂直运输(清单特征)"},{name:"施工升降机",spec:"SC200/200",pattern:/施工电梯|施工升降机/u,unit:"项",basis:"人员与材料垂直运输(清单特征)"},{name:"钢筋加工机械",spec:"",pattern:/钢筋/u,unit:"t",basis:"钢筋加工(清单条目)"},{name:"电焊机",spec:"",pattern:/焊接|钢结构|预埋/u,unit:"t",basis:"钢结构焊接与预埋(清单条目)"},{name:"混凝土输送泵",spec:"",pattern:/泵送|混凝土泵/u,unit:"m3",basis:"混凝土泵送(清单特征)"}],machinePowerTable:[{name:"挖掘机",kw:90},{name:"自卸汽车",kw:120},{name:"插入式振捣器",kw:1.5},{name:"蛙式打夯机",kw:3},{name:"塔式起重机",kw:45},{name:"施工升降机",kw:33},{name:"钢筋加工机械",kw:15},{name:"电焊机",kw:15},{name:"混凝土输送泵",kw:90},{name:"物料提升机",kw:11}],inspectionBatchRules:[{scope:"钢筋工程",namePattern:/钢筋/u,unit:"t",divisor:60,descTemplate:"钢筋按进场检验批划分,每 60t 一批,约 {count} 批(总量 {total}t)"},{scope:"混凝土工程",namePattern:/混凝土/u,unit:"m3",divisor:100,descTemplate:"混凝土按浇筑批次留置标准养护试件,每 100m\xb3 一批,约 {count} 批(总量 {total}m\xb3)"},{scope:"砌体工程",namePattern:/砌体|砌筑/u,unit:"m3",divisor:250,descTemplate:"砌体工程按砌筑量划分检验批,每 250m\xb3 一批,约 {count} 批(总量 {total}m\xb3)"},{scope:"防水工程",namePattern:/防水/u,unit:"m2",divisor:0,descTemplate:"防水工程按施工段划分检验批并做蓄水(淋水)试验(总量 {total}m\xb2)"}],difficultyTemplates:[{name:"深基坑施工",measure:"分层开挖、及时支护与信息化监测,编制专项施工方案并按危大工程规定组织专家论证",basis:"清单特征含基坑开挖深度",test:a=>a.entries.some(a=>{let b=/(?:挖深|开挖深度|基坑深度|坑深)[^。;;]{0,12}(\d+(?:\.\d+)?)\s*m/u.exec(a.description);return!!b&&Number.parseFloat(b[1]||"0")>=3})},{name:"高支模施工",measure:"编制专项施工方案并组织专家论证,支架验收合格后方可浇筑",basis:"清单特征含支模高度",test:a=>a.entries.some(a=>/支模高度|高支模|模板支撑[^。;;]{0,12}\d+(?:\.\d+)?\s*m/u.test(`${a.name} ${a.description}`))},{name:"大体积混凝土施工",measure:"分层浇筑、测温养护,掺加缓凝剂与矿物掺合料控制水化热",basis:"清单特征含大体积混凝土/筏板基础",test:a=>a.entries.some(a=>/大体积|基础底板|筏板/u.test(`${a.name} ${a.description}`))},{name:"垂直运输组织",measure:"塔吊与施工电梯合理布位,编制群塔作业防碰撞方案",basis:"清单特征含塔吊/施工电梯",test:a=>a.entries.some(a=>/塔吊|塔式起重机|施工电梯|施工升降机/u.test(`${a.name} ${a.description}`))},{name:"紧邻既有建筑保护",measure:"开工前房屋现状鉴定,设置沉降观测点,控制开挖对周边扰动",basis:"清单特征含紧邻既有建筑",test:a=>a.entries.some(a=>/紧邻|既有建筑|相邻建筑|周边建筑/u.test(a.description))}],deploymentFlowFallback:"分区段流水作业",sequenceFallback:"施工准备 → 基础工程 → 主体结构 → 装饰装修 → 安装收尾",climateZone:"central",powerFallbackText:"临时用电由现场总配电箱接入,采用 TN-S 三相五线制,各分配电箱单独计量(柴油机械不计入用电负荷)",waterNoteText:"施工用水以市政供水为主,总用水量按施工段分区配置"},m={id:"general",projectTypes:["其他"],groupLabel:"清单分组",milestoneGroups:[{key:"prep",label:"施工准备",pattern:/清杂|拆除|场地平整|临建|临时/u},{key:"main",label:"主体工程",pattern:/主体|结构|混凝土|钢筋|模板|砌体|土方|基础|安装/u},{key:"finish",label:"装饰与附属工程",pattern:/装饰|抹灰|防水|保温|门窗|屋面|绿化|景观/u},{key:"install",label:"安装工程",pattern:/电气|给排水|暖通|消防|电梯|灯具|管线|设备/u},{key:"close",label:"收尾与验收",pattern:/收尾|竣工|验收|调试|移交|清理/u}],groupOfEntry:j,tradeMapping:k.tradeMapping,laborUnitRange:k.laborUnitRange,equipmentMapping:[{name:"挖掘机",spec:"0.6~1.0m\xb3",pattern:/开挖|挖土|沟槽|土方/u,unit:"m3",basis:"土方开挖(清单特征)"},{name:"自卸汽车",spec:"8t",pattern:/余方弃置|弃方|外运|回填/u,unit:"m3",basis:"土方运输与回填(清单条目)"},{name:"插入式振捣器",spec:"",pattern:/混凝土浇筑|振捣/u,unit:"m3",basis:"混凝土浇筑(清单条目)"},{name:"蛙式打夯机",spec:"",pattern:/回填|夯实/u,unit:"m3",basis:"回填夯实(清单条目)"},{name:"混凝土搅拌运输车",spec:"",pattern:/商品混凝土|C\d{2}混凝土/u,unit:"m3",basis:"商品混凝土运输(清单特征)"}],machinePowerTable:[{name:"挖掘机",kw:90},{name:"自卸汽车",kw:120},{name:"插入式振捣器",kw:1.5},{name:"蛙式打夯机",kw:3},{name:"混凝土搅拌运输车",kw:110}],inspectionBatchRules:[{scope:"混凝土工程",namePattern:/混凝土/u,unit:"m3",divisor:100,descTemplate:"混凝土按浇筑批次留置标准养护试件,每 100m\xb3 一批,约 {count} 批(总量 {total}m\xb3)"},{scope:"检查井",namePattern:/检查井/u,unit:"",divisor:1,descTemplate:"检查井逐座验收,共 {total} 座"}],difficultyTemplates:[],deploymentFlowFallback:"分区段流水作业",sequenceFallback:"施工准备 → 主体施工 → 装饰安装 → 收尾验收",climateZone:void 0,powerFallbackText:"临时用电按现场配电箱分区接入,各用电点单独计量(柴油机械不计入用电负荷,电动机具零星分散)",waterNoteText:"施工用水按现场水源分区配置,总用水量按施工段核定"},n={id:"bridge-tunnel",projectTypes:["桥梁与隧道"],groupLabel:"施工区段",milestoneGroups:[{key:"prep",label:"施工准备与临时设施",pattern:/清杂|拆除|场地平整|临建|临时|三通一平|测量放样/u},{key:"foundation",label:"基础工程",pattern:/桩基|钻孔|灌注桩|围堰|承台|基础|基坑|降水|支护/u},{key:"substructure",label:"下部结构工程",pattern:/桥墩|桥台|墩柱|盖梁|系梁|支座垫石|下部/u},{key:"superstructure",label:"上部结构工程",pattern:/箱梁|梁板|主梁|现浇梁|预制|预应力|张拉|架设|合龙|上部/u},{key:"tunnel",label:"隧道洞身工程",pattern:/隧道|洞身|仰拱|衬砌|锚杆|喷混|掌子面|二衬/u},{key:"finish",label:"桥面系附属与收尾",pattern:/桥面|铺装|护栏|伸缩缝|防撞|排水|照明|收尾|竣工|交安|绿化/u}],groupOfEntry:function(a){let b=`${a.name} ${a.description}`;return/灌注桩|桩基|钻孔|围堰|承台/u.test(b)?"桩基与基础工程":/桥墩|桥台|墩柱|盖梁|系梁|下部/u.test(b)?"下部结构工程":/箱梁|梁板|主梁|现浇梁|预制|预应力|张拉|架设|上部/u.test(b)&&"m3"===a.unit?"上部结构工程":/钢绞线/u.test(b)&&"t"===a.unit?"钢绞线工程":/隧道|洞身|仰拱|衬砌|锚杆|喷混|掌子面/u.test(b)?"隧道工程":/桥面|铺装|护栏|伸缩缝|防撞/u.test(b)?"桥面系工程":/土方|挖方|填方|回填|清淤/u.test(b)&&"m3"===a.unit?"土方工程":/钢筋|植筋/u.test(b)?"钢筋工程":/模板|支模/u.test(b)?"模板工程":/混凝土|现浇/u.test(b)?"混凝土工程":"安装工程"},tradeMapping:[{trade:"桩基工",pattern:/灌注桩|桩基|钻孔/u},{trade:"钢筋工",pattern:/钢筋|植筋/u},{trade:"模板工",pattern:/模板|支模/u},{trade:"混凝土工",pattern:/混凝土|现浇|垫层/u},{trade:"张拉工",pattern:/预应力|张拉|钢绞线/u},{trade:"焊工",pattern:/焊接|钢结构|预埋件/u},{trade:"起重工",pattern:/吊装|架设|梁体|龙门吊|架桥机/u},{trade:"隧道工",pattern:/隧道|洞身|衬砌|锚杆|喷混|掌子面/u},{trade:"普工",pattern:/土方|清杂|拆除|平整|回填|清淤|开挖/u}],laborUnitRange:{桩基与基础工程:{unit:"m3",min:4,max:7},下部结构工程:{unit:"m3",min:1.5,max:3},上部结构工程:{unit:"m3",min:4,max:8},钢绞线工程:{unit:"t",min:1.5,max:3},隧道工程:{unit:"m3",min:1.5,max:3},桥面系工程:{unit:"m2",min:.4,max:.8},土方工程:{unit:"m3",min:.08,max:.15},钢筋工程:{unit:"t",min:.8,max:1.5},模板工程:{unit:"m2",min:.3,max:.6},混凝土工程:{unit:"m3",min:.8,max:1.5},安装工程:{unit:"项",min:0,max:0}},equipmentMapping:[{name:"旋挖钻机",spec:"",pattern:/钻孔|灌注桩|桩基/u,unit:"m3",basis:"桩基成孔(清单条目)"},{name:"泥浆泵",spec:"",pattern:/灌注桩|钻孔/u,unit:"m3",basis:"钻孔泥浆循环(清单条目)"},{name:"履带式起重机",spec:"",pattern:/吊装|梁体|预制/u,unit:"项",basis:"构件吊装(清单特征)"},{name:"架桥机",spec:"",pattern:/架设|架梁|箱梁/u,unit:"项",basis:"梁体架设(清单条目)"},{name:"张拉设备",spec:"",pattern:/预应力|张拉|钢绞线/u,unit:"束",basis:"预应力张拉(清单条目)"},{name:"挖掘机",spec:"0.6~1.0m\xb3",pattern:/开挖|挖土|基坑|土方/u,unit:"m3",basis:"土方开挖(清单特征)"},{name:"自卸汽车",spec:"8t",pattern:/余方弃置|弃方|外运|回填/u,unit:"m3",basis:"土方运输与回填(清单条目)"},{name:"混凝土输送泵",spec:"",pattern:/泵送|混凝土泵/u,unit:"m3",basis:"混凝土泵送(清单特征)"},{name:"插入式振捣器",spec:"",pattern:/混凝土浇筑|振捣/u,unit:"m3",basis:"混凝土浇筑(清单条目)"}],machinePowerTable:[{name:"旋挖钻机",kw:130},{name:"泥浆泵",kw:22},{name:"履带式起重机",kw:110},{name:"架桥机",kw:90},{name:"张拉设备",kw:7.5},{name:"挖掘机",kw:90},{name:"自卸汽车",kw:120},{name:"混凝土输送泵",kw:90},{name:"插入式振捣器",kw:1.5}],inspectionBatchRules:[{scope:"桩基工程",namePattern:/灌注桩|桩基/u,unit:"",divisor:1,descTemplate:"钻孔灌注桩逐桩检验(桩位/孔径/沉渣厚度/混凝土充盈系数),共 {total} 根"},{scope:"钢筋工程",namePattern:/钢筋/u,unit:"t",divisor:60,descTemplate:"钢筋按进场检验批划分,每 60t 一批,约 {count} 批(总量 {total}t)"},{scope:"混凝土工程",namePattern:/混凝土/u,unit:"m3",divisor:100,descTemplate:"混凝土按浇筑批次留置标准养护试件,每 100m\xb3 一批,约 {count} 批(总量 {total}m\xb3)"},{scope:"预应力张拉",namePattern:/预应力|钢绞线/u,unit:"束",divisor:0,descTemplate:"预应力孔道逐束张拉并记录伸长值(总量 {total} 束)"}],difficultyTemplates:[{name:"深水基础施工",measure:"围堰施工与排水方案专项设计,汛期前完成基础施工,设置水位监测",basis:"清单特征含围堰/深水基础",test:a=>a.entries.some(a=>/围堰|深水|水中墩|钢板桩/u.test(`${a.name} ${a.description}`))},{name:"大体积混凝土施工",measure:"分层浇筑、测温养护,掺加缓凝剂与矿物掺合料控制水化热",basis:"清单特征含承台/大体积混凝土",test:a=>a.entries.some(a=>/承台|大体积|基础底板/u.test(`${a.name} ${a.description}`))},{name:"预应力张拉控制",measure:"张拉设备标定,双控(应力+伸长值)张拉,孔道压浆密实",basis:"清单特征含预应力/钢绞线",test:a=>a.entries.some(a=>/预应力|张拉|钢绞线/u.test(`${a.name} ${a.description}`))},{name:"隧道开挖与支护",measure:"超前地质预报,短进尺、弱爆破、强支护,监控量测信息化施工",basis:"清单特征含隧道洞身开挖",test:a=>a.entries.some(a=>/隧道|洞身|掌子面/u.test(`${a.name} ${a.description}`))},{name:"架梁起重吊装",measure:"编制吊装专项方案,吊装前试吊与支腿地基验算,专职指挥",basis:"清单特征含梁体架设",test:a=>a.entries.some(a=>/架设|架梁|架桥机|吊装/u.test(`${a.name} ${a.description}`))},{name:"高空作业安全控制",measure:"高墩作业平台封闭防护,设置安全网与临边防护,恶劣天气停止作业",basis:"清单特征含高墩/墩柱",test:a=>a.entries.some(a=>/高墩|墩柱|盖梁/u.test(`${a.name} ${a.description}`))}],deploymentFlowFallback:"分区段流水作业",sequenceFallback:"施工准备 → 基础工程 → 下部结构 → 上部结构 → 隧道洞身 → 桥面系与收尾",climateZone:void 0,powerFallbackText:"临时用电由现场总配电箱接入,采用 TN-S 三相五线制,各用电点单独计量(柴油机械不计入用电负荷)",waterNoteText:"施工用水以现场水源为主,总用水量按施工段核定"},o={id:"highway",projectTypes:["公路"],groupLabel:"施工标段",milestoneGroups:[{key:"prep",label:"施工准备",pattern:/清杂|拆除|场地平整|临建|临时|三通一平|测量放样/u},{key:"subgrade",label:"路基工程",pattern:/路基|土方|挖方|填方|压实|软基|清表|路床/u},{key:"pavement",label:"路面工程",pattern:/路面|水稳|基层|沥青|面层|摊铺|碾压|级配/u},{key:"bridge",label:"桥涵工程",pattern:/桥梁|桥台|桥墩|桩基|梁板|涵洞|通道|台帽/u},{key:"safety",label:"交安与附属收尾",pattern:/护栏|标线|标志|交安|绿化|排水|边沟|收尾|竣工/u}],groupOfEntry:function(a){let b=`${a.name} ${a.description}`;return/土方|挖方|填方|清表|软基|路基/u.test(b)&&"m3"===a.unit?"土方工程":/水稳|基层|级配|路床/u.test(b)&&"m2"===a.unit?"路面基层":/沥青|面层|摊铺/u.test(b)&&"m2"===a.unit?"沥青面层":/混凝土|现浇/u.test(b)&&"m2"===a.unit?"混凝土路面":/混凝土|现浇/u.test(b)?"混凝土工程":/砌筑|砌体|边沟|护坡|挡墙/u.test(b)?"砌筑工程":/钢筋|植筋/u.test(b)?"钢筋工程":/护栏|标线|标志|交安|波形梁/u.test(b)?"交安设施":"安装工程"},tradeMapping:[{trade:"机械操作工",pattern:/土方|挖方|填方|清表|路基/u},{trade:"压路机司机",pattern:/碾压|压实|路基|路面/u},{trade:"摊铺机司机",pattern:/摊铺|沥青|水稳|基层/u},{trade:"混凝土工",pattern:/混凝土|现浇|垫层/u},{trade:"钢筋工",pattern:/钢筋|植筋/u},{trade:"瓦工",pattern:/砌筑|砌体|边沟|护坡|挡墙/u},{trade:"交安工",pattern:/护栏|标线|标志|交安|波形梁/u},{trade:"普工",pattern:/清杂|拆除|平整|回填|清淤/u}],laborUnitRange:{土方工程:{unit:"m3",min:.08,max:.15},路面基层:{unit:"m2",min:.2,max:.4},沥青面层:{unit:"m2",min:.08,max:.15},混凝土路面:{unit:"m2",min:.15,max:.3},混凝土工程:{unit:"m3",min:.8,max:1.5},砌筑工程:{unit:"m3",min:1.2,max:2},钢筋工程:{unit:"t",min:.8,max:1.5},交安设施:{unit:"m",min:.3,max:.6},安装工程:{unit:"项",min:0,max:0}},equipmentMapping:[{name:"推土机",spec:"",pattern:/清表|土方|填方|平整/u,unit:"m3",basis:"土方摊铺平整(清单条目)"},{name:"平地机",spec:"",pattern:/路基|路床|平整/u,unit:"m2",basis:"路床整平(清单条目)"},{name:"装载机",spec:"",pattern:/土方|挖方|填方|清运/u,unit:"m3",basis:"土方装载(清单条目)"},{name:"压路机",spec:"8~12t",pattern:/碾压|压实/u,unit:"m2",basis:"路基路面碾压(清单特征)"},{name:"摊铺机",spec:"",pattern:/摊铺|沥青|水稳/u,unit:"m2",basis:"路面摊铺(清单条目)"},{name:"沥青洒布车",spec:"",pattern:/沥青|透层|粘层/u,unit:"m2",basis:"沥青洒布(清单条目)"},{name:"挖掘机",spec:"0.6~1.0m\xb3",pattern:/开挖|挖土|沟槽|土方/u,unit:"m3",basis:"土方开挖(清单特征)"},{name:"自卸汽车",spec:"8t",pattern:/余方弃置|弃方|外运|回填/u,unit:"m3",basis:"土方运输与回填(清单条目)"},{name:"洒水车",spec:"",pattern:/养护|洒水/u,unit:"m2",basis:"养护洒水(清单条目)"}],machinePowerTable:[{name:"推土机",kw:75},{name:"平地机",kw:120},{name:"装载机",kw:160},{name:"压路机",kw:75},{name:"摊铺机",kw:110},{name:"沥青洒布车",kw:60},{name:"挖掘机",kw:90},{name:"自卸汽车",kw:120},{name:"洒水车",kw:90}],inspectionBatchRules:[{scope:"路基压实",namePattern:/路床|路基|填方/u,unit:"m2",divisor:1e3,descTemplate:"路基压实度按每 1000m\xb2 不少于 1 点检测,约 {count} 点(总面积 {total}m\xb2)"},{scope:"水稳基层",namePattern:/水稳|基层/u,unit:"m2",divisor:1e3,descTemplate:"水稳基层按每 1000m\xb2 一个检验批,约 {count} 批(总面积 {total}m\xb2)"},{scope:"沥青面层",namePattern:/沥青|面层/u,unit:"m2",divisor:1e3,descTemplate:"沥青面层按每 1000m\xb2 一个检验批,约 {count} 批(总面积 {total}m\xb2)"}],difficultyTemplates:[{name:"软土地基处理",measure:"软基处理方案专项设计(换填/搅拌桩/预压),沉降观测控制填筑速率",basis:"清单特征含软基处理",test:a=>a.entries.some(a=>/软基|软土|换填|搅拌桩/u.test(`${a.name} ${a.description}`))},{name:"交通疏导与半幅施工",measure:"分段半幅封闭施工,设置临时交通标志与导流设施,保障社会车辆通行",basis:"清单特征含保通/半幅施工",test:a=>a.entries.some(a=>/保通|半幅|交通疏导|既有道路/u.test(`${a.name} ${a.description}`))},{name:"路面平整度控制",measure:"摊铺机连续匀速作业,接缝处理与碾压工艺控制,平整度逐层检测",basis:"清单特征含沥青面层",test:a=>a.entries.some(a=>/沥青|面层/u.test(`${a.name} ${a.description}`))},{name:"路基沉降控制",measure:"分层填筑碾压,设置沉降观测点,填筑速率与观测数据联动",basis:"清单特征含高填方路基",test:a=>a.entries.some(a=>/高填方|填方/u.test(`${a.name} ${a.description}`))}],deploymentFlowFallback:"分段平行流水作业",sequenceFallback:"施工准备 → 路基工程 → 路面工程 → 桥涵工程 → 交安与附属收尾",climateZone:void 0,powerFallbackText:"临时用电由现场总配电箱接入,各用电点单独计量(柴油机械不计入用电负荷)",waterNoteText:"施工用水以现场水源为主,总用水量按施工段核定"},p={id:"water-conservancy",projectTypes:["水利水电"],groupLabel:"施工区段",milestoneGroups:[{key:"prep",label:"施工准备与围堰导流",pattern:/清杂|拆除|围堰|导流|截流|临建|临时/u},{key:"earthwork",label:"土方与基础工程",pattern:/土方|挖方|填方|基础|基坑|清淤|疏浚|开挖/u},{key:"structure",label:"闸站结构工程",pattern:/混凝土|钢筋|模板|闸室|闸墩|泵站|翼墙|底板|消力池|挡墙|砌筑/u},{key:"metal",label:"金属结构与机电安装",pattern:/金属结构|闸门|启闭机|埋件|机电|水泵|电气/u},{key:"finish",label:"护坡堤防与收尾",pattern:/护坡|护岸|堤防|绿化|水土保持|收尾|竣工|验收/u}],groupOfEntry:function(a){let b=`${a.name} ${a.description}`;return/围堰|导流|截流|清淤|疏浚/u.test(b)||/土方|挖方|填方|回填|开挖/u.test(b)&&"m3"===a.unit?"土方工程":/闸门|启闭机|埋件|金属结构/u.test(b)&&"t"===a.unit?"金属结构安装":/护坡|护岸|堤防|格宾|浆砌/u.test(b)&&"m2"===a.unit?"护坡工程":/钢筋|植筋/u.test(b)?"钢筋工程":/模板|支模/u.test(b)?"模板工程":/混凝土|现浇|底板|闸室|闸墩|泵站|翼墙|消力池/u.test(b)&&"m3"===a.unit?"混凝土工程":/砌筑|砌体|砖|挡墙/u.test(b)?"砌筑工程":(/机电|水泵|电气/u.test(b),"安装工程")},tradeMapping:[{trade:"钢筋工",pattern:/钢筋|植筋/u},{trade:"模板工",pattern:/模板|支模/u},{trade:"混凝土工",pattern:/混凝土|现浇|底板|闸室|闸墩|泵站|翼墙|消力池/u},{trade:"瓦工",pattern:/砌筑|砌体|砖|挡墙|护坡/u},{trade:"金属结构安装工",pattern:/金属结构|闸门|启闭机|埋件/u},{trade:"机电安装工",pattern:/机电|水泵|电气|配电/u},{trade:"潜水工",pattern:/水下|潜水/u},{trade:"普工",pattern:/土方|清杂|拆除|平整|回填|清淤|开挖/u}],laborUnitRange:{土方工程:{unit:"m3",min:.08,max:.15},混凝土工程:{unit:"m3",min:1,max:2},砌筑工程:{unit:"m3",min:1.2,max:2},钢筋工程:{unit:"t",min:.8,max:1.5},模板工程:{unit:"m2",min:.3,max:.6},金属结构安装:{unit:"t",min:15,max:25},护坡工程:{unit:"m2",min:.2,max:.4},安装工程:{unit:"项",min:0,max:0}},equipmentMapping:[{name:"挖掘机",spec:"0.6~1.0m\xb3",pattern:/开挖|挖土|基坑|土方|清淤/u,unit:"m3",basis:"土方开挖(清单特征)"},{name:"自卸汽车",spec:"8t",pattern:/余方弃置|弃方|外运|回填/u,unit:"m3",basis:"土方运输与回填(清单条目)"},{name:"装载机",spec:"",pattern:/土方|挖方|填方|清运/u,unit:"m3",basis:"土方装载(清单条目)"},{name:"混凝土输送泵",spec:"",pattern:/泵送|混凝土泵|混凝土/u,unit:"m3",basis:"混凝土泵送(清单特征)"},{name:"履带式起重机",spec:"",pattern:/吊装|闸门|启闭机/u,unit:"",basis:"闸门与启闭机吊装(清单条目,不限计量单位)"},{name:"泥浆泵",spec:"",pattern:/围堰|降水|导流|排水/u,unit:"",basis:"基坑降水与排水(清单条目,不限计量单位)"},{name:"插入式振捣器",spec:"",pattern:/混凝土|振捣/u,unit:"m3",basis:"混凝土浇筑(清单条目)"},{name:"蛙式打夯机",spec:"",pattern:/回填|夯实/u,unit:"m3",basis:"回填夯实(清单条目)"}],machinePowerTable:[{name:"挖掘机",kw:90},{name:"自卸汽车",kw:120},{name:"装载机",kw:160},{name:"混凝土输送泵",kw:90},{name:"履带式起重机",kw:110},{name:"泥浆泵",kw:22},{name:"插入式振捣器",kw:1.5},{name:"蛙式打夯机",kw:3}],inspectionBatchRules:[{scope:"混凝土工程",namePattern:/混凝土/u,unit:"m3",divisor:100,descTemplate:"混凝土按浇筑批次留置标准养护试件,每 100m\xb3 一批,约 {count} 批(总量 {total}m\xb3)"},{scope:"土方回填",namePattern:/回填|填方/u,unit:"m3",divisor:200,descTemplate:"土方回填按每 200m\xb3 一个检验批检测压实度,约 {count} 批(总量 {total}m\xb3)"},{scope:"金属结构",namePattern:/闸门|启闭机/u,unit:"",divisor:1,descTemplate:"金属结构逐件验收(出厂合格证+安装调试记录),共 {total} 件"}],difficultyTemplates:[{name:"围堰导流与度汛",measure:"围堰按度汛标准设计施工,汛期值守与应急预案,度汛演练",basis:"清单特征含围堰/导流",test:a=>a.entries.some(a=>/围堰|导流|度汛|截流/u.test(`${a.name} ${a.description}`))},{name:"深基坑降水与支护",measure:"降水方案专项设计,分层开挖及时支护,周边沉降监测",basis:"清单特征含基坑降水",test:a=>a.entries.some(a=>/降水|基坑|支护/u.test(`${a.name} ${a.description}`))},{name:"大体积混凝土施工",measure:"分层浇筑、测温养护,掺加缓凝剂与矿物掺合料控制水化热",basis:"清单特征含底板/大体积混凝土",test:a=>a.entries.some(a=>/底板|大体积|消力池/u.test(`${a.name} ${a.description}`))},{name:"闸门启闭机安装精度控制",measure:"埋件安装精度预控,闸门与启闭机联动调试,止水严密性试验",basis:"清单特征含闸门/启闭机",test:a=>a.entries.some(a=>/闸门|启闭机/u.test(`${a.name} ${a.description}`))},{name:"水下作业安全控制",measure:"潜水作业双人值守,水下作业专项方案与应急预案",basis:"清单特征含水下作业",test:a=>a.entries.some(a=>/水下|潜水/u.test(`${a.name} ${a.description}`))}],deploymentFlowFallback:"分区段流水作业",sequenceFallback:"施工准备与围堰导流 → 土方与基础 → 闸站结构 → 金属结构与机电安装 → 护坡堤防与收尾",climateZone:void 0,powerFallbackText:"临时用电由现场总配电箱接入,各用电点单独计量(柴油机械不计入用电负荷)",waterNoteText:"施工用水以现场水源为主,总用水量按施工段核定"};var q=c(1218),r=c(22157);let s=[{id:"vertical_transport",label:"垂直运输方式",relevance:/塔吊|塔式起重机|施工电梯|施工升降机|物料提升机|垂直运输/u,options:[{value:"塔式起重机",aliases:/塔吊|塔式起重机/},{value:"施工升降机",aliases:/施工电梯|施工升降机/},{value:"物料提升机",aliases:/物料提升机/},{value:"汽车式起重机",aliases:/汽车吊|汽车式起重机/}]},{id:"formwork",label:"模板体系",relevance:/模板/u,exclusive:!0,options:[{value:"木胶合板模板",aliases:/木胶合板|覆膜胶合板|胶合板模板|木模板/},{value:"钢模板",aliases:/钢模板|定型钢模/},{value:"铝合金模板",aliases:/铝合金模板|铝模/},{value:"大模板",aliases:/大模板/},{value:"爬升模板",aliases:/爬升模板|爬模/}]},{id:"concrete_supply",label:"混凝土供应",relevance:/混凝土/u,exclusive:!0,options:[{value:"商品混凝土(预拌)",aliases:/商品混凝土|预拌混凝土/},{value:"自拌混凝土",aliases:/自拌混凝土|现场拌制混凝土|现场搅拌混凝土/}]},{id:"scaffold",label:"脚手架体系",relevance:/脚手架|爬架/u,options:[{value:"落地式钢管脚手架",aliases:/落地式[^,。;;]{0,6}脚手架|落地脚手架/},{value:"悬挑式脚手架",aliases:/悬挑[^,。;;]{0,6}脚手架|悬挑脚手架/},{value:"附着式升降脚手架",aliases:/附着式升降脚手架|爬架/},{value:"门式脚手架",aliases:/门式脚手架/},{value:"盘扣式脚手架",aliases:/盘扣/},{value:"碗扣式脚手架",aliases:/碗扣/}]},{id:"foundation_support",label:"基坑支护形式",relevance:/基坑|支护/u,exclusive:!0,options:[{value:"放坡开挖",aliases:/放坡/},{value:"土钉墙支护",aliases:/土钉墙|土钉支护/},{value:"灌注桩支护",aliases:/灌注桩|钻孔灌注桩|排桩支护/},{value:"钢板桩支护",aliases:/钢板桩|拉森桩/},{value:"地下连续墙",aliases:/地下连续墙|地连墙/},{value:"锚杆(索)支护",aliases:/锚杆|锚索/},{value:"喷锚支护",aliases:/喷锚/}]},{id:"earthwork_haul",label:"土方外运方式",relevance:/土方|渣土|弃土/u,options:[{value:"自卸汽车外运",aliases:/自卸汽车|自卸车/},{value:"密闭渣土车外运",aliases:/密闭式?[^,。;;]{0,4}车|渣土车/},{value:"场内平衡利用",aliases:/场内平衡|就地平衡|场内调配|回填利用/}]},{id:"foundation_form",label:"基础形式",relevance:/基础/u,options:[{value:"独立基础",aliases:/独立基础/},{value:"条形基础",aliases:/条形基础|带形基础/},{value:"筏板基础",aliases:/筏板基础|筏形基础|满堂基础/},{value:"桩基础",aliases:/桩基础|桩基/u},{value:"箱形基础",aliases:/箱形基础|箱型基础/}]},{id:"vibration_isolation",label:"设备减振方式",relevance:/减振|隔振|减震|振动/u,options:[{value:"减振吊架",aliases:/减振吊架|隔振吊架|减震吊架|弹性吊架/},{value:"减振基础",aliases:/减振基础|隔振基础|减震基础|惯性基础/},{value:"橡胶隔振垫",aliases:/橡胶隔振垫|橡胶减振垫|隔振垫/},{value:"弹簧减振器",aliases:/弹簧减振器|弹簧隔振器|阻尼弹簧减振器/}]},{id:"concrete_pouring",label:"混凝土浇筑连续组织",relevance:/浇筑/u,options:[{value:"连续浇筑",aliases:/连续浇筑|一次浇筑|整体浇筑/,weakAliases:/同步浇筑|同步施工|同步/u},{value:"分段浇筑",aliases:/分段浇筑|分仓浇筑|跳仓浇筑|分区浇筑/}]},{id:"pavement_structure",label:"路面结构类型",relevance:/路面|基层|面层|沥青|水泥稳定/u,options:[{value:"柔性路面",aliases:/沥青混凝土路面|沥青混凝土面层|沥青路面|沥青面层/,weakAliases:/柔性/u},{value:"半刚性路面",aliases:/半刚性/u},{value:"刚性路面",aliases:/刚性路面|水泥混凝土路面|水泥混凝土面层/}]}],t=/不采用|不使用|不设置|不考虑|不得|禁止|取消/u;function u(a){return a.split(/[,,、::]/u).map(a=>a.trim()).filter(Boolean)}function v(a){let b=function(a,b){let c=[];for(let a of b){let b=function(a){let b=`${a.filePath||""} ${a.roleId||""} ${a.sectionTitle||""}`;return/补疑|澄清|答疑|修正|更新/u.test(b)?100:/招标文件|招标公告|投标人须知|前附表/u.test(b)?90:/清单|工程量/u.test(b)||/图纸|设计|dwg|drawing/iu.test(b)?80:/规范|标准|规程/u.test(b)?60:50}(a);for(let d of(0,q.wj)((0,r.lG)(a.content)).split(/[。;;\n]/u)){let a=d.trim();a.length<6||a.length>200||c.push({text:a,weight:b})}}for(let b of a){let a=`${b.key||""} ${b.fieldName||""} ${(0,r.lG)(b.value)}`.trim();a.length<6||a.length>200||c.push({text:a,weight:Math.round(60*Math.max(.5,Math.min(1,b.confidence||.7)))})}return c}(a.facts,a.evidence),c=[];for(let a of s){let d=new Map;for(let c of b){if(!a.relevance.test(c.text))continue;let b=u(c.text);for(let e of a.options){let a=b.find(a=>e.aliases.test(a));if(!a||t.test(a))continue;let f=d.get(e.value)||{score:0,mentions:0,bestWeight:0};f.score+=c.weight,f.mentions+=1,f.bestWeight=Math.max(f.bestWeight,c.weight),d.set(e.value,f)}}let e=[...d.entries()].map(([a,b])=>({value:a,...b})).sort((a,b)=>b.score-a.score||b.mentions-a.mentions||(a.value<b.value?-1:1)),f=e[0];if(!f||f.bestWeight<60)continue;if(a.exclusive){c.push({id:a.id,label:a.label,values:[f.value]});continue}let g=Math.max(60,.4*f.score),h=e.filter(a=>a.score>=g).slice(0,3).map(a=>a.value);h.length>0&&c.push({id:a.id,label:a.label,values:h})}return c}function w(a){return s.find(b=>b.id===a)}function x(a,b){return s.find(c=>{let d=a=>c.options.some(b=>b.aliases.test(a)||b.weakAliases?.test(a));return c.options.some(c=>c.aliases.test(a)||c.aliases.test(b))&&d(a)&&d(b)})}function y(a,b){for(let c of a.options){let a=c.aliases.exec(b);if(a)return{option:c,index:a.index,end:a.index+a[0].length}}for(let c of a.options){let a=c.weakAliases?.exec(b);if(a)return{option:c,index:a.index,end:a.index+a[0].length}}}function z(a,b){let c=u(a).find(a=>b.test(a));return!!c&&t.test(c)}var A=c(82437),B=c(10025),C=c(19898),D=c(48161);let E={seq:1,code:2,name:4,description:5,unit:6,quantity:8};function F(a){let b=a.map(a=>a.replace(/\s+/gu,""));return b.includes("序号")&&b.includes("项目编码")}function G(a){let b=a.map(a=>a.replace(/\s+/gu,"")),c=a=>b.findIndex(b=>a.includes(b)),d=c(["序号"]),e=c(["项目编码"]),f=c(["项目名称"]),g=c(["计量单位","单位"]),h=c(["工程量"]);if(!(d<0)&&!(e<0)&&!(f<0)&&!(g<0)&&!(h<0))return{seq:d,code:e,name:f,description:c(["项目特征描述"]),unit:g,quantity:h}}function H(a){return/^[一二三四五六七八九十\d]+(?:\.\d+)?$/u.test(a.trim())&&!I.test(a.trim())}let I=/^(?:\d{12}|(?:ZB|WB)\d{12})$/u,J=/工作表:(\d+(?:\.\d+)?)/u,K=/第1页\s*共(\d+)页/u,L=/工程名称:(.+?)\s*标段/u,M=/工程名称:([^\n||]{2,40}?)\s*$/mu,N=/第(\d+)页\s*共\d+页/gu;function O(a){let b=J.exec(a.sectionTitle);if(b)return b[1];let c=a.content.split("\n")[0]||"",d=J.exec(c);return d?d[1]:""}function P(a){let b=new Map;for(let c of a){let a=b.get(c.villageGroup)||[];a.push(c),b.set(c.villageGroup,a)}return b}var Q=c(31846);function R(a){let b=a.boundFilePaths.filter(a=>/工程量清单/u.test(a)&&a.toLowerCase().endsWith(".xls")).filter(a=>{let b=a.split("/").pop()||a;return!/封面|编制说明/u.test(b)});if(0===b.length)return{warning:`绑定资料中未识别到工程量清单 .xls 文件(${a.boundFilePaths.length} 份资料)`};let c=e.join(D.homedir(),".customize-agent","projects",(0,C.computeProjectId)(e.resolve(a.projectRoot)),"kb.db");if(!d.existsSync(c))return{warning:`项目知识库索引不存在:${c}`};let f=[],g=[];for(let a of b)try{let b=function(a,b){let c=new((0,C.loadBetterSqlite3)())(a,{readonly:!0});try{return c.pragma("busy_timeout = 10000"),c.prepare("SELECT chunk_index, content, section_title FROM kb_chunks WHERE relative_path = ? ORDER BY chunk_index").all(b).map(a=>({chunkIndex:a.chunk_index,content:a.content,sectionTitle:a.section_title||""}))}finally{c.close()}}(c,a);if(0===b.length){f.push(`${a}(索引无切片)`);continue}let d=function(a){let b=a.sourceFile||"",c={totalChunks:a.chunks.length,markdownChunks:0,declarationChunks:0,skippedChunks:0,droppedIncompleteRows:0},d=[],e=[];for(let b of a.chunks){let a=b.sectionTitle,f=a.includes("表格路径声明");if(a.includes("附录")){c.skippedChunks++;continue}f?(e.push(b),c.declarationChunks++):"表格数据"===a||a.includes("表标题")||a.includes("第")||a.includes("工作表:")?(d.push(b),c.markdownChunks++):c.skippedChunks++}let f=new Map,g=a=>{let b=J.exec(a);if(!b)return;let c=b[1],d=f.get(c),e=L.exec(a)||M.exec(a),g=K.exec(a);d?(!d.villageGroup&&e&&(d.villageGroup=e[1].trim()),void 0===d.totalPages&&g&&(d.totalPages=Number(g[1]))):f.set(c,{villageGroup:e?e[1].trim():"",totalPages:g?Number(g[1]):void 0})};for(let a of d)g(a.sectionTitle),g(a.content.split("\n")[0]||"");let h=[],i="",j="",k="",l="plain",m=function(a){let b=[],c=!1;for(let d=0;d<a.length;d++){let e=a[d]??"";if(e.includes(".")){let e=d+1<a.length?a[d+1]??"":"",f=/^\d+$/u.test(e)&&e.length>=2;b.push(f?"unit-project":"subsection"),c=f}else/^\d+$/u.test(e)?b.push(c?"subsection":"section"):(b.push("section"),c=!1)}return b}(function(a){let b=[],c="",d=E;for(let e of a){let a=e.content.split("\n"),f=c;for(let e of(c="",a)){if(e.startsWith("|"))f.trim(),f=e;else{if(!f)continue;f+=e}if(!f.endsWith("|"))continue;let a=f.split("|").map(a=>a.trim());if(f="",F(a)){d=G(a)??d;continue}!a[d.seq]&&H(a[d.code]??"")&&a[d.name]&&"分部小计"!==a[d.name]&&b.push(a[d.code]??"")}f.trim()&&(c=f)}return b}(d)),n=-1,o=E,p="";for(let a of d){let d=O(a),e=d||p;d&&(p=d);let g=f.get(e),q=g?.villageGroup||e||"",r=a.content.split("\n"),s=i;i="";let t=function(a){if(K.exec(a))return 1;N.lastIndex=0;let b=N.exec(a);return N.lastIndex=0,b?Number(b[1]):void 0}(a.content);for(let d=0;d<r.length;d++){let e=r[d]||"";if(e.startsWith("|"))s.trim()&&c.droppedIncompleteRows++,s=e;else if(s)s+=e;else{let a=N.exec(e);a&&(t=Number(a[1])),N.lastIndex=0;continue}if(s.endsWith("|")){let c=s.split("|").map(a=>a.trim());s="",F(c)&&(o=G(c)??o);let d=c[o.seq]??"",e=c[o.code]??"",f=c[o.name]??"",g=t,i=function(a){let b=a.join(" "),c=/第(\d+)页\s*共\d+页/u.exec(b);return c?Number(c[1]):void 0}(c);if(i&&(t=i),/^\d+$/u.test(d)&&I.test(e)){let i=Number((c[o.quantity]??"").trim()),m={seq:Number(d),code:e,name:f,description:o.description>=0?c[o.description]??"":"",unit:c[o.unit]??"",quantity:Number.isFinite(i)?i:0,section:j,subsection:k,sectionKind:l,villageGroup:q,page:g,sourceFile:b,chunkIndex:a.chunkIndex,sourceKind:"markdown"};m.seq>0&&h.push(m)}else if(!d&&H(e)&&f&&"分部小计"!==f){let a=m[n+=1]??(e.includes(".")?"subsection":"section");"unit-project"===a?(j=f,k="",l="unit-project"):"section"===a?(j=f,k="",l="plain"):k=f}}}s.trim()&&(i=s)}i.trim()&&c.droppedIncompleteRows++;let q=[];for(let a of(p="",e)){let c=O(a),d=c||p;c&&(p=c);let e=f.get(d),g=e?.villageGroup||d||"";q.push(...function(a,b){let c,d,e=[],f=a.split("\n"),g=()=>{c&&"number"==typeof c.seq&&c.seq>0&&e.push({seq:c.seq,code:c.code||"",name:c.name||"",description:(c.description||"").trim(),unit:c.unit||"",quantity:"number"==typeof c.quantity?c.quantity:0,section:"",subsection:"",villageGroup:b.villageGroup,sourceFile:b.sourceFile,chunkIndex:b.chunkIndex,sourceKind:"declaration"}),c=void 0,d=void 0},h=a=>{if(!c||!d)return;let b=a.trim();if(b){if("seq"===d){let a=Number(b);Number.isFinite(a)&&a>0&&(c.seq=a)}else if("code"===d)c.code=(c.code||"")+b;else if("name"===d)c.name=(c.name||"")+b;else if("description"===d)c.description=(c.description||"")+(c.description?" ":"")+b;else if("unit"===d)c.unit=b;else if("quantity"===d){let a=Number(b);Number.isFinite(a)&&(c.quantity=a)}}};for(let a of f){if(/^R\d+C\d+$/u.test(a)){/^R\d+C1$/u.test(a)?(g(),c={},d="seq"):d=void 0;continue}if(/^序号:$/u.test(a)){d="seq";continue}if(/^项目编码:$/u.test(a)){d="code";continue}if(/^项目名称:$/u.test(a)){d="name";continue}if(/^项目特征描述:$/u.test(a)){d="description";continue}if(/^单位:$/u.test(a)){d="unit";continue}if(/^工程量:$/u.test(a)){d="quantity";continue}if(/^(?:人工费|机械费|暂估价|合价|金额.*)$/u.test(a)){d=void 0;continue}h(a)}return g(),e}(a.content,{villageGroup:g,sourceFile:b,chunkIndex:a.chunkIndex}))}let r=new Map;for(let a of h)r.set(`${a.villageGroup}|${a.seq}`,a);for(let a of q){let b=`${a.villageGroup}|${a.seq}`;r.has(b)||r.set(b,a)}let s=[...r.values()].sort((a,b)=>a.villageGroup.localeCompare(b.villageGroup,"zh-CN")||a.seq-b.seq);var t=s,u=h;let v=P(u);for(let a of t){let b;if("declaration"===a.sourceKind&&!a.section){for(let c of v.get(a.villageGroup)||[]){if(c.seq>a.seq)break;b=c}b&&(a.section=b.section,a.subsection=b.subsection,a.sectionKind=b.sectionKind)}}let w=[...f.values()].map(a=>a.villageGroup).find(Boolean);if(w&&s.every(a=>!a.section))for(let a of s)a.section=w,a.sectionKind="unit-project";let x=[];for(let[a,b]of P(s)){let c=b.map(a=>a.seq).sort((a,b)=>a-b),e=c[c.length-1]||0,g=[];for(let a=1;a<=e;a++)c.includes(a)||g.push(a);let h=function(a,b){for(let[c,d]of a)if(d.villageGroup===b)return{sheetId:c,...d}}(f,a),i=h?.totalPages,j=function(a,b,c){let d=new Set,e="";for(let f of a){let a=O(f),g=a||e;if(a&&(e=a),!c||g===c){if(!c&&!(f.content.split("\n")[0]||"").includes(b))continue;for(let a of(K.test(f.content)&&d.add(1),N.lastIndex=0,f.content.matchAll(N))){let b=Number(a[1]);d.add(b),b>1&&d.add(b-1)}N.lastIndex=0}}return[...d]}(d,a,h?.sheetId),k=i?Array.from({length:i},(a,b)=>b+1).filter(a=>!j.includes(a)):[],l=b.filter(a=>"declaration"===a.sourceKind).length,m=b.filter(a=>!a.code).length,n=b.filter(a=>!a.name).length,o=b.filter(a=>a.code&&!I.test(a.code)).length;x.push({villageGroup:a,sheetId:h?.sheetId||"",totalPagesDeclared:i,pagesCovered:j.sort((a,b)=>a-b),pagesMissing:k,entryCount:b.length,entrySeqMissing:g,entriesFromDeclaration:l,entriesWithoutCode:m,entriesWithoutName:n,entriesWithInvalidCode:o,complete:0===g.length&&b.length>0})}return x.sort((a,b)=>a.villageGroup.localeCompare(b.villageGroup,"zh-CN")),{entries:s,villages:x,totalEntries:s.length,sourceFile:b,complete:x.length>0&&x.every(a=>a.complete),diagnostics:c}}({chunks:b,sourceFile:a});if(d.totalEntries>0){g.push({filePath:a,boq:d});continue}if(function(a){let b=a.map(a=>a.content||"").join("\n");return!S.test(b)&&T.test(b)}(b))continue;f.push(`${a}(解析出 0 条目)`)}catch(b){f.push(`${a}(${b instanceof Error?b.message:String(b)})`)}if(0===g.length)return f.length>0?{warning:`清单解析失败:${f.join(";")}`}:{warning:`绑定清单文件均为封面/目录类结构性文件,未解析到分部分项明细(${b.length} 份)`};let h=1===g.length?g[0].boq:function(a){let b=a=>{let b=a.split("/").slice(-2)[0]||"",c=/^(\d+)/u.exec(b);return c?Number(c[1]):Number.MAX_SAFE_INTEGER},c=[...a].sort((a,c)=>b(a.filePath)-b(c.filePath)),d=[],e=[],f={totalChunks:0,markdownChunks:0,declarationChunks:0,skippedChunks:0,droppedIncompleteRows:0},g=new Set;for(let a of c){var h;let b=((h=a.filePath).split("/").pop()||h).replace(/\.xls$/iu,"").replace(/[\s\u00a0]+/gu,"")||"单位工程";if(g.has(b)){let a=2;for(;g.has(`${b}(${a})`);)a+=1;b=`${b}(${a})`}for(let c of(g.add(b),a.boq.entries))c.subsection=c.subsection||c.section,c.section=b,c.sectionKind="unit-project",c.villageGroup=b,d.push(c);for(let[c,d]of a.boq.villages.entries())e.push({...d,villageGroup:1===a.boq.villages.length?b:`${b}\xb7${d.villageGroup||`工作表${c+1}`}`});f.totalChunks+=a.boq.diagnostics.totalChunks,f.markdownChunks+=a.boq.diagnostics.markdownChunks,f.declarationChunks+=a.boq.diagnostics.declarationChunks,f.skippedChunks+=a.boq.diagnostics.skippedChunks,f.droppedIncompleteRows+=a.boq.diagnostics.droppedIncompleteRows}return{entries:d,villages:e,totalEntries:d.length,sourceFile:c.map(a=>a.filePath).join(";"),complete:e.length>0&&e.every(a=>a.complete),diagnostics:f}}(g);return f.length>0?{boq:h,warning:`部分清单文件解析失败(已并入其余 ${g.length} 份):${f.join(";")}`}:{boq:h}}let S=/项目编码|项目特征描述/u,T=/封面|扉页|目录|总说明|填表须知|签字|盖章|编制说明/u;function U(a){let b=new Map;for(let c of a.entries){if(!c.name)continue;let a=(c.villageGroup||c.section||"").trim(),d=(0,Q.L4)(c.description||""),e=b.get(c.name);if(e)for(let b of(e.total+=c.quantity,a&&e.groupTotals.set(a,(e.groupTotals.get(a)??0)+c.quantity),d))e.specTotals.set(b,(e.specTotals.get(b)??0)+c.quantity);else{let e=new Map;a&&e.set(a,c.quantity);let f=new Map;for(let a of d)f.set(a,(f.get(a)??0)+c.quantity);b.set(c.name,{value:c.quantity,unit:c.unit,sourceFile:c.sourceFile,seq:c.seq,total:c.quantity,groupTotals:e,specTotals:f})}}let c={};for(let[a,d]of b){let b=a=>Math.round(1e3*a)/1e3,e=[...d.groupTotals.entries()].map(([a,c])=>({group:a,value:b(c)})),f=b(d.total),g=[...d.specTotals.entries()].map(([a,c])=>({spec:a,value:b(c)})).filter(a=>Math.abs(a.value-f)>1e-6).sort((a,b)=>b.value-a.value);c[a]={value:f,unit:d.unit,sourceFile:d.sourceFile,seq:d.seq,groups:e.length>0?e:void 0,specBreakdown:g.length>=2?g:void 0}}return c}let V=[{key:"绿化养护期",namePattern:/养护/u,extract:a=>{let b=/(?:一级|二级)养护[^。;;]{0,20}/u.exec(a.description);return b?b[0].trim():void 0}},{key:"喷播草籽种类",namePattern:/喷播|草籽/u,extract:a=>{let b=W(a.description).find(a=>/籽/u.test(a.key));if(b)return b.value.replace(/\s*\d+\s*[..].*$/u,"").trim()||b.value.trim()}},{key:"池塘清淤深度",namePattern:/清淤|清塘/u,extract:a=>{let b=/(?:清淤深度|深度)[^。;;]*?(\d+(?:\.\d+)?)\s*m/u.exec(a.description);return b?`清淤深度 ${b[1]}m`:void 0}},{key:"过路涵涵头混凝土",namePattern:/涵头|过路涵/u,extract:a=>{let b=/(C\d{2})[^。;;]*混凝土/u.exec(a.description)||/混凝土[^。;;]*(C\d{2})/u.exec(a.description);return b?`涵头混凝土 ${b[1]}`:void 0}},{key:"路肩土预留",namePattern:/路肩/u,extract:a=>{let b=/(\d+(?:\.\d+)?)\s*[-~至]\s*(\d+(?:\.\d+)?)\s*m/u.exec(a.description);return b?`两侧各预留 ${b[1]}-${b[2]}m`:void 0}},{key:"一般路灯",namePattern:/路灯/u,extract:a=>{let b=/(\d+)\s*W/u.exec(a.description),c=/高\s*(\d+(?:\.\d+)?)\s*m/u.exec(a.description);if(!b&&!c)return;let d=["一般路灯"];return b&&d.push(`${b[1]}W LED`),c&&d.push(`高${c[1]}m`),/含基础|含灯杆基础|灯杆基础/u.test(a.description)&&d.push("含基础"),d.join(" ")}},{key:"暂列金额",namePattern:/暂列金额/u,extract:a=>{let b=/(\d+(?:\.\d+)?)\s*万元/u.exec(a.description);return b?`${b[1]}万元`:void 0},amount:!0}];function W(a){let b=[];for(let c of a.matchAll(/(?:\d+|[一二三四五六七八九十]+)[..、]\s*([^::;;。]{1,40}?)[::]\s*([^。;;\n]{1,80})/gu)){let a=c[1].trim(),d=c[2].trim();!/具体详见|其他|满足验收/u.test(a)&&!/(?:(?:详)?见|按)(?:设计|施工)?图纸|招标文件补疑/u.test(d)&&a&&d&&b.push({key:a,value:d})}return b}let X=/(?<=[日天])\s*[0-9]+(?:\.[0-9]+)?(?=[\s]*(?:招标|建设|质量|合同|项目|工程|资金|投标|开标|评标|付款|工期|开工|计划|计价|现场|资质|标段|[0-9]{1,3}[.、.]|[,,。;;]|$))/u;function Y(a){let b=Object.values(a.byKey||{}).filter(a=>!!(a&&a.label&&a.value)).sort((a,b)=>(b.priority||0)-(a.priority||0));return 0===b.length?"":b.map(a=>{let b=String(a.value),c=X.exec(b),d=c?b.slice(0,c.index).trim():b;return`- ${a.label}:${d}`}).join("\n")}let Z={type:"object",required:["meta","data","outline"],properties:{meta:{type:"object",required:!0,properties:{version:{type:"string",required:!0,minLength:1},docType:{type:"string",required:!0,minLength:1},createdAt:{type:"string",required:!0,minLength:1},sourceMaterials:{type:"array",required:!0,items:{type:"string"}}}},data:{type:"object",required:!0,properties:{strategyId:{type:"string",required:!0,minLength:1},project:{type:"object",required:!0,properties:{name:{type:"string",required:!0,minLength:1},scope:{type:"string",required:!0},works:{type:"array",required:!0,items:{type:"string"}}}},contract:{type:"object",required:!0,properties:{totalDays:{type:"number",required:!0},qualityStandard:{type:"string",required:!0},pricingFile:{type:"string",required:!0}}},milestones:{type:"array",required:!0,minItems:1,items:{type:"object"}},resources:{type:"object",required:!0,properties:{labor:{type:"object",required:!0},equipment:{type:"array",required:!0}}},materialsPlan:{type:"array",required:!0},redLineFacts:{type:"array",required:!0},quantities:{type:"object",required:!0,minProperties:1},keyDifficulties:{type:"array",required:!0,minItems:1},composition:{type:"object"}}},outline:{type:"object",required:!0,properties:{chapters:{type:"array",required:!0,minItems:1}}}}},$=[/C\d{2,3}/u,/DN\d{2,4}/iu,/Φ\d+(?:\.\d+)?/u,/\d+(?:\.\d+)?\s*(?:kW|W)/iu,/厚(?:度)?[::]*\s*\d+(?:\.\d+)?\s*(?:mm|cm)/u,/\d+\s*[×xX]\s*\d+(?:\s*[×xX]\s*\d+)?\s*(?:mm|cm)?/u,/HRB\d{3,4}/u,/Q\d{3}[A-Z]?/u,/YJV[^。;;]{0,12}|VV\d+[^。;;]{0,12}/u],_=new Set(["挖掘机","自卸汽车","压路机","洒水车","高空作业车","混凝土搅拌运输车"]);var aa=c(22213),ab=c(22496),ac=c(38115),ad=c(3063),ae=c(62521);function af(a,b){let c=a.trim();if(/^其他$|^其他工程$/u.test(c)){let a=b.map(a=>a.name);return a.some(a=>/彩绘|护栏|围栏|小品|标识|标牌|墙面|整治/u.test(a))?"环境整治工程":a.some(a=>/绿化|栽植|铺装|种植/u.test(a))?"景观附属工程":a.some(a=>/拆除|清理|清淤|清运/u.test(a))?"清理整治工程":"零星工程"}return/^其他装饰/u.test(c)?"零星装饰工程":/^措施项目$/u.test(c)?b.map(a=>a.name).some(a=>/化粪池|吊装|安装/u.test(a))?"模板、脚手架及化粪池安装工程":"模板与脚手架工程":/墙[、,]?柱面装饰/u.test(c)?b.some(a=>/幕墙|隔断/u.test(a.name))?c:"墙柱面装饰工程":c}function ag(a,b){let c=[...b].sort((a,b)=>a.seq-b.seq),d={},e=new Map;for(let a of c)a.name&&e.set(a.name,(e.get(a.name)||0)+a.quantity);for(let[a,b]of e){let e=c.find(b=>b.name===a)?.unit||"";d[a]={value:Math.round(1e3*b)/1e3,unit:e}}let f=[...new Set(c.map(a=>a.name).filter(Boolean))].slice(0,16),g=function(a){let b=[];for(let c of a)for(let a of W(c.description))/含|配合|安装|铺设|浇筑|夯实|碾压|养护|刻痕|拉毛|切缝|灌缝|喷播|栽植|回填|吊装|固定/u.test(a.value)&&a.value.length<=60&&b.push(`${c.name}:${a.value}`);return[...new Set(b)].slice(0,20)}(c),h=[],i=new Set;for(let a of c){for(let b of W(a.description)){let a=`${b.key}=${b.value}`;if(!i.has(a)&&(i.add(a),h.push({key:b.key,value:b.value,source:"boq"}),h.length>=24))break}if(h.length>=24)break}let j=[];for(let a of c)for(let b of W(a.description))/压实|试验|检测|验收|闭水|合格/u.test(`${b.key}${b.value}`)&&j.length<12&&!j.includes(b.value)&&j.push(b.value);let k=(0,ab.cn)([a]),l=[];for(let a of(0===j.length&&k.length>0&&j.push(...k[0].acceptance.slice(0,6).map(a=>`${a}(知识卡)`)),k.slice(0,2)))for(let b of a.standards)l.includes(b)||l.push(b);return{name:a,kind:"major",quantities:d,processChain:f,methods:g,params:h,acceptance:j,standards:l,source:"boq",coveredSeqs:c.map(a=>a.seq)}}function ah(a,b,c){let d=new Map,e=[];for(let b of a){if((0,ae.Cv)(b)||ad.Yp.test(b)||ad.gG.test(b)){e.push({kind:"solo",section:b});continue}let a=(0,ae.Y5)(b);d.has(a)||(d.set(a,[]),e.push({kind:"domain",key:a})),d.get(a).push(b)}let f=a=>{let b=[];for(let c of a){let a=b[b.length-1],d=a?a.sources[a.sources.length-1]:"";!(0,ad.tZ)(c)&&!(0,ae.Cv)(c)&&a&&((0,ae.z1)(c,d)||(0,ae.SF)(c,d)>=ae.an)?(a.sources.push(c),c.length>a.title.length&&(a.title=c)):b.push({title:c,sources:[c]})}return b},g=[];for(let a of e){if("solo"===a.kind){g.push({title:a.section,subPoints:[{title:a.section,sources:[a.section]}],facts:[],targetWords:0});continue}let c=f(d.get(a.key)||[]);for(let a=0;a<c.length;a+=ae.wd){let d=c.slice(a,a+ae.wd);g.push({title:d[0].title||b,subPoints:d,facts:[],targetWords:0})}}return(0,ae.XR)(g,c),{blocks:g,coveredSections:a.slice(),fallbackSections:[]}}function ai(a){let b,{blueprintChapter:c,inputSections:d,chapterTitle:e,targetWords:f}=a,g=[],h=[],i=[];if(c&&0!==c.subSections.length){for(let a of c.subSections){let b=a.workPackages.map(a=>({title:a.name,sources:[a.name],tier:"major"===a.kind?"core":"general"}));b.length>ae.wd?h.push(...(0,ae.iY)(a.title,b)):h.push({title:a.title,subPoints:b,facts:[],targetWords:0})}if(0===h.length){let a=ah(d,e,f);h=a.blocks,i=a.coveredSections,b=a.fallbackSections}else{i=d.filter(a=>h.some(b=>(0,ae.z1)(b.title,a)||b.subPoints.some(b=>b.sources.some(b=>(0,ae.z1)(b,a))||(0,ae.z1)(b.title,a)))),b=d.filter(a=>!i.includes(a)),d.filter(a=>!h.some(b=>(0,ae.z1)(b.title,a))&&h.some(b=>b.subPoints.some(b=>b.sources.some(b=>(0,ae.z1)(b,a))||(0,ae.z1)(b.title,a))));let a=d.filter(a=>!h.some(b=>(0,ae.z1)(b.title,a)));if(a.length>0){for(let b of h)b.subPoints=b.subPoints.filter(b=>!a.some(a=>b.sources.some(b=>(0,ae.z1)(b,a))||(0,ae.z1)(b.title,a))),0===b.subPoints.length&&(b.subPoints=[{title:b.title,sources:[b.title],tier:"core"}]);h=[...a.map(a=>({title:a,subPoints:[{title:a,sources:[a],tier:"core"}],facts:[],targetWords:0})),...h],i=[...i.filter(b=>!a.includes(b)),...a],b=b.filter(b=>!a.includes(b)),g=a.slice()}}}else{let a=ah(d,e,f);h=a.blocks,i=a.coveredSections,b=a.fallbackSections}if(b.length>0){for(let a of b.map(a=>({title:a,subPoints:[{title:a,sources:[a],tier:"core"}],facts:[],targetWords:0})))h.some(b=>(0,ae.z1)(b.title,a.title))||h.push(a);g=[...g,...b],i=[...i,...b],b=[]}if(a.projectContext&&a.evidence){let b=a.projectContext,c=a.evidence,d=ad.gG.test(e)?[]:(a.blueprintChapter?.subSections??[]).map(a=>a.title),g=ad.gG.test(e)?new Set(h.map(a=>(0,r.Sw)(a.title)).filter(Boolean)):new Set;h=h.map(a=>{if(!(0,ae.pX)(a.title)||ad.gG.test(e)&&ad.gG.test(a.title))return a;let i=(0,ae.j7)([...(0,aa.Ep)(b,c).filter(a=>{let b=a.replace(/^[一二三四五六七八九十百\d]+[、..\s::-]+/u,"");return!g.has((0,r.Sw)(b))}),...d],12);if(i.length<3)return a;let j=Math.max(1,h.filter(a=>(0,ae.pX)(a.title)).length),k=Math.max(3,Math.min(i.length,Math.floor(f/ae.YD/j)));if(i.length<=k)return{...a,subPoints:i.map(a=>({title:a,sources:[a],tier:"core"}))};let l=i.slice(0,k),m=i.slice(k);return{...a,subPoints:[...l.map(a=>({title:a,sources:[a],tier:"core"})),{title:"其他分部分项工程施工要点",sources:m,tier:"brief"}]}})}h=function(a){if(!a.some(a=>a.subPoints.some(a=>(0,ae.MH)(a.title))))return a;let b=new Set(a.map(a=>(0,r.Sw)(a.title)).filter(Boolean)),c=[];for(let d of a){let a=(0,r.Sw)(d.title),e=d.subPoints.filter(c=>(0,ae.MH)(c.title)&&(0,r.Sw)(c.title)!==a&&!b.has((0,r.Sw)(c.title))),f=d.subPoints.filter(a=>!e.includes(a));if(0===e.length||0===f.length){c.push(d);continue}for(let a of(c.push({...d,subPoints:f}),e))b.add((0,r.Sw)(a.title)),c.push({title:a.title,subPoints:[{...a}],facts:[],targetWords:0})}return c}(h);let j=(0,ac.SX)(h.map(a=>({title:a.title})));return h.forEach((a,b)=>{a.title=j[b]}),(0,ae.XR)(h,f,{barrierTitles:g}),0===h.length&&e.trim()&&(h=[{title:e,subPoints:[],facts:[],targetWords:Math.min(ae.Oc,Math.max(ae.aB,f))}]),{blocks:h,coveredSections:i,fallbackSections:b}}function aj(a,b){let c=b.filter(Boolean),d=c.length;if(a&&a.subSections.length>0){d=a.subSections.reduce((a,b)=>a+b.workPackages.length,0);let b=c.filter(b=>a.subSections.some(a=>(0,ae.z1)(a.title,b)||a.workPackages.some(a=>(0,ae.z1)(a.name,b)))).length;d+=c.length-b}let e=Math.ceil(d/ae.wd);return{points:d,minFeasibleWords:e*ae.aB}}var ak=c(95734);let al={"village-municipal":k,building:l,general:m,"bridge-tunnel":n,highway:o,"water-conservancy":p};function am(a,b){if(b)return b.needsBlueprintAuthority(a);let c=[];return/劳动力/u.test(a)&&c.push("laborPeak"),/资源配置|资源|机械|设备|机具/u.test(a)&&c.push("blueprint"),/进度计划|进度|工期/u.test(a)&&c.push("schedule"),[...new Set(c)]}function an(a){return a?a.validation.passed?a.data:a.validation.checks.find(a=>"0. 清单源可用性"===a.name)?.passed?function(a,b){if(!b)return a;let c=a;return b.laborPeak||(c={...c,resources:{...c.resources,labor:{...c.resources.labor,peak:{min:0,max:0},peakValue:0,byPhase:[],byTrade:[],composition:[]}}}),b.schedule||(c={...c,schedule:[],contract:{...c.contract,totalDays:0}}),c}(a.data,a.validation.authorityAvailability):void 0:void 0}function ao(a,b,c){let d=am(a,c),e=b?b.checks.filter(a=>!a.passed).map(a=>a.name):[],f=b?.authorityAvailability;return f?{missing:d.filter(a=>!f[a]),failedChecks:e}:{missing:d,failedChecks:e}}var ap=c(10751);let aq=/\{\{AUTH:([^}]*)\}\}/gu;function ar(a,b){if("data.contract.total_days"===a)return b.contract.totalDays>0?`${b.contract.totalDays} 日历天`:void 0;if("data.resources.labor.peak_value"===a)return b.resources.labor.peakValue>0?`${b.resources.labor.peakValue} 人`:void 0;if("data.redline.greening_maintenance"===a){let a=(b.redLineFacts??[]).find(a=>!a.amount&&/养护|苗木|绿化/u.test(a.key));return a?.value?String(a.value):void 0}if(a.startsWith("data.quantities.")){let c=b.quantities?.[a.slice("data.quantities.".length)];return c&&c.value>0?`${c.value}${c.unit??""}`:void 0}}function as(a,b){let c=[],d=[],e=[];if(!b){for(let b of a.matchAll(aq)){let a=(b[1]??"").trim();(a?d:e).push(a||b[0])}return{markdown:a,filled:c,unresolved:d,malformed:e}}return{markdown:a.replace(aq,(a,f)=>{let g=(f??"").trim();if(!g)return e.push(a),a;let h=ar(g,b);return h?(c.push({path:g,value:h}),h):(d.push(g),a)}),filled:c,unresolved:d,malformed:e}}var at=c(78217);function au(a,b){let c=["【一体化蓝图参数桶——全项目口径唯一权威源,正文引用必须与此一致,不得自行推导不同数值】"];return c.push("计划类数值(劳动力人数/工期/工程量/养护期)必须且只能引用以下锚点值:禁止将各工种人数相加推导峰值、禁止按定额自行估算、禁止改写锚点数值。"),c.push(`- 项目:${a.project.name}(${a.project.scope})`),c.push(...(0,ap.Xe)((0,ap.IV)(a),b)),a.inspectionBatches.length>0&&c.push(`- 检验批划分:${a.inspectionBatches.map(a=>`${a.scope}——${a.planDesc}`).join(";")}`),c.push(`- 临时用电:${a.tempUtilities.powerLoad}`),c.push(`- 临时用水:${a.tempUtilities.waterUsage}`),a.decisionLock.entries.length>0&&c.push(`- 关键决策锁:${a.decisionLock.entries.map(a=>`${a.label}:${a.values.join("、")}`).join(";")}`),a.constructionDeployment.sections.length>0&&c.push(`- 施工部署:${a.constructionDeployment.flow};施工顺序 ${a.constructionDeployment.sequence}`),a.keyDifficulties.length>0&&c.push(`- 重难点(逐项列明):${a.keyDifficulties.map(a=>`${a.name}——${a.measure}`).join(";")}`),c.push(`- 金额禁区:${a.amountRule}`),c.push(a.drawingNote),c.join("\n")}let av=[{domain:"contract",chapterPattern:/进度|工期|总体|部署|概况|工程|计划/u,alignment:{path:"data.contract.total_days"}},{domain:"schedule",chapterPattern:/进度|工期|部署|计划|总体|施工方案|分部分项/u},{domain:"labor",chapterPattern:/劳动力|人员|资源|进度|工期|部署|概况/u,alignment:{path:"data.resources.labor.peak_value"}},{domain:"equipment",chapterPattern:/机械|设备|资源/u},{domain:"material",chapterPattern:/物资|材料|资源|采购|亮化|路灯|照明/u},{domain:"quantity",chapterPattern:/分部分项|施工方案|施工方法|土方|道路|管网|工程概况/u},{domain:"spec",chapterPattern:/材料|物资|质量|技术|施工方案|分部分项/u},{domain:"earthwork",chapterPattern:/土方|土石方|道路|管网|施工方案|分部分项/u},{domain:"site",chapterPattern:/总平面|平面布置|临时设施|临时用地|驻地|堆场|加工区|施工方案/u},{domain:"test",chapterPattern:/质量|试验|检测|验收/u},{domain:"redline",chapterPattern:/绿化|种植|养护|苗木|技能|培训|成品保护|质量|亮化|路灯|照明|概况|工程|总体/u,alignment:{path:"data.redline.greening_maintenance"}}],aw=av.map(a=>({domain:a.domain,chapterPattern:a.chapterPattern}));function ax(a){return av.filter(b=>b.alignment&&b.chapterPattern.test(a)).map(a=>a.alignment.path)}let ay=/编制|工程概况|项目概况|概况|说明/u;function az(a,b,c){let d=[c.blockTitle,...c.subPointTitles,...c.skeletonNames??[]].map(a=>a.trim()).filter(a=>a.length>=2),e=a=>d.some(b=>a.includes(b)||b.includes(a)),f=[`【第 ${a.id} 章「${a.title}」蓝图切片(本节聚焦)——以下项目专属事实由蓝图冻结锁定,正文必须一致引用】`,ad.Ru],g=[],h=[...new Set(a.subSections.flatMap(a=>a.requiredParams.filter(a=>"must_cite"===a.mode).map(a=>a.path)))];h.length>0&&g.push(`本章 must_cite 参数(正文必须出现且与蓝图一致):${h.join("、")}`);let i=[];for(let b of a.subSections){let a=b.workPackages.filter(a=>e(a.name));if(0===a.length)continue;let c=[`## ${b.id} ${b.title}`],d=b.requiredParams.filter(a=>"must_cite"===a.mode).map(a=>a.path);for(let b of(d.length>0&&c.push(`must_cite 参数:${d.join("、")}`),a))c.push(...function(a){let b=[`
|
|
173
173
|
### 工作包:${a.name}(${"major"===a.kind?"主要":"一般"}工作包)`],c=Object.entries(a.quantities).map(([a,b])=>`${a} ${b.value}${b.unit}`).join("、");return c&&b.push(`- 工程量:${c}`),a.processChain.length>0&&b.push(`- 工序链:${a.processChain.join(" → ")}`),a.methods.length>0&&b.push(`- 施工方法(清单特征原文):${a.methods.join(";")}`),a.params.length>0&&b.push(`- 工艺参数:${a.params.map(a=>`${a.key}=${a.value}`).join(";")}`),a.acceptance.length>0&&b.push(`- 验收要求:${a.acceptance.join(";")}`),a.standards.length>0&&b.push(`- 规范依据:${a.standards.join(";")}`),b}(b));i.push(c.join("\n"))}let j=a.subSections.reduce((a,b)=>a+b.workPackages.length,0);if(0===i.length&&j>0){let b=[];for(let c of a.subSections){let a=c.workPackages.map(a=>{let b=Object.entries(a.quantities),c=b.slice(0,3).map(([a,b])=>`${a} ${b.value}${b.unit}`).join("、");return c?`${a.name}(${c}${b.length>3?" 等":""})`:a.name});a.length>0&&b.push(`- ${c.title}:${a.join(";")}`)}g.push(`【本章工作包索引(本节为章级总述/无专属工作包;各工作包详细参数见本章其他小节,本节不得复写单个分部方案)】
|
|
174
174
|
${b.join("\n")}`)}else g.push(...i);let k=function(a,b){let c=aw.filter(b=>b.chapterPattern.test(a.title)).map(a=>a.domain),d=(0,ap.Bf)((0,ap.IV)(b),c);ay.test(a.title)&&d.push(...function(a){let b=[];return(a.basisRegulations??[]).length>0&&b.push(`- 招标文件引用法规(项目专属事实,编制依据小节必须列出法规名称及文号):${a.basisRegulations.join("、")}`),b.push("- 编制依据小节由写作模型自行列写:国家法律法规及文号、工程所在地地方性法规、与本工程分部对应的现行施工验收规范名称及编号;不得空写「国家现行法律、行政法规」等类别话术,不得编造文号"),b}(b));let e=ax(a.title),f=e.length>0?function(a,b){let c=new Set,d=[];for(let e of a){if(c.has(e))continue;c.add(e);let a=ar(e,b);a&&d.push(`- \`{{AUTH:${e}}}\` → ${a}`)}return d}(e,b):[];return(f.length>0&&d.push("【数值占位符协议】下列计划类数值请**原样写出占位符**,不要自行写数(生成后由系统确定性填充为权威值):",...f),0===d.length)?"":["【本章数值锚点——计划类数值必须且只能引用以下锚点值;禁止将各工种人数相加推导峰值、禁止按定额自行估算、禁止改写或自设任何计划类数值】",...d].join("\n")}(a,b),l=c.sliceCharsCap??6e3,m=g.join("\n\n");if(m.length>l){let a=[],b=0;for(let c of m.split("\n")){if(b+c.length+1>l)break;a.push(c),b+=c.length+1}m=`${a.join("\n")}
|
|
175
|
-
(本节蓝图切片过长已截断,未展开工作包见本章其他小节与绑定材料)`}return[...f,m,k].filter(Boolean).join("\n\n")}function aA(a,b){let c=a.outline.chapters.find(a=>a.title===b);return c||a.outline.chapters.find(a=>b.includes(a.title)||a.title.includes(b))}function aB(a,b,c){let d=[],e=[],f=a,g=[...b.subSections.flatMap(a=>a.requiredParams.filter(a=>"must_cite"===a.mode&&a.strict)),...ax(b.title).map(a=>({path:a,mode:"must_cite",strict:!0}))],h=new Set;for(let a of g)if(!h.has(a.path)){if(h.add(a.path),"data.contract.total_days"===a.path){if(c.contract.totalDays<=0)continue;let a=/(?:总工期|施工工期|合同工期|工期)(?:为|约|共计|控制)?[^\n。;;]{0,20}?(\d+(?:\.\d+)?)\s*(?:日历)?天/gu,b=!1;f=f.replace(a,(a,e)=>{b=!0;let f=Number(e);return f===c.contract.totalDays||f<=0?a:(d.push({anchor:"总工期",from:`${f}天`,to:`${c.contract.totalDays}天`}),a.replace(e,String(c.contract.totalDays)))}),b||e.push(`总工期 ${c.contract.totalDays} 日历天`);continue}if("data.resources.labor.peak_value"===a.path){let a=c.resources.labor.peakValue;if(a<=0)continue;let b=/(?:高峰(?:期)?(?:人数)?|峰值|劳动力(?:总人数|峰值)|各专业班组高峰人数)[^。;;\n]{0,24}?(?:约)?\s*([\d,]+)\s*人/gu,g=!1;f=f.replace(b,(b,c)=>{g=!0;let e=Number(String(c).replace(/,/g,""));return!Number.isFinite(e)||e===a||e<=0?b:(d.push({anchor:"劳动力峰值",from:`${c}人`,to:`${a}人`}),b.replace(c,String(a)))}),g||e.push(`劳动力峰值 ${a} 人`);continue}if("data.redline.greening_maintenance"===a.path){let a=c.redLineFacts.find(a=>/养护/u.test(a.key));if(!a)continue;let b=/养护[^。;;|]{0,10}?([一二两三四五六七八九十]+|\d{1,2})\s*年/u.exec(a.value);if(!b)continue;let g=(0,at._P)(b[1]??"");if(void 0===g||!Number.isFinite(g)||g<=0)continue;let h=/养护[^。;;\n|]{0,16}?([一二两三四五六七八九十]+|\d{1,2})\s*年/gu,i=!1;f=f.replace(h,(a,b)=>{i=!0;let c=(0,at._P)(b);return void 0===c||!Number.isFinite(c)||c===g||c<=0?a:(d.push({anchor:"养护期",from:`${b}年`,to:`${g}年`}),a.replace(b,String(g)))}),i||e.push(`养护期 ${g} 年`);continue}}return{markdown:f,fixed:d,missing:e}}function aC(a,b){let c=new Set,d=[];for(let e of a.subSections.flatMap(a=>a.requiredParams.filter(a=>"must_cite"===a.mode&&a.strict)))if(!c.has(e.path)){if(c.add(e.path),"data.contract.total_days"===e.path&&b.contract.totalDays>0){d.push(`总工期 ${b.contract.totalDays} 日历天`);continue}if(e.path.startsWith("data.quantities.")){let a=b.quantities[e.path.slice(16)];a&&a.value>0&&d.push(`${e.path.slice(16)} ${a.value}${a.unit}`)}}return d.join(";")}var aD=c(55965),aE=c(12863);function aF(a,b){return Math.abs(a-b)<=.01+1e-6*Math.max(Math.abs(a),Math.abs(b))}async function aG(a,b,c={}){let d=function(a,b){let c=[],d=new Map,e=[],f=a.split("\n").map(a=>/^\s*\|/u.test(a.trim())?" ".repeat(a.length):a).join("\n"),g=0,h=a=>{g+=1;let b=`c${g}`;c.push({id:b,kind:a.kind,subject:a.subject,value:a.value,unit:a.unit,authority:a.authority,sentence:a.sentence,facts:a.facts}),d.set(b,{subject:a.subject,value:a.value,unit:a.unit,authority:a.authority,start:a.start,end:a.end})};for(let c of b.redLineFacts.filter(a=>!a.amount&&"自然村数量"!==a.key)){let b=String(c.value).split(/[,。;、()()\]【】::\s\n[]+/u).map(a=>a.trim()).filter(a=>a.length>=3&&!/^[\d.]+$/u.test(a)&&!/^(?:其他|具体详见|满足设计要求|设计图纸|图集|招标文件|政府相关文件|规范等|资料)$/u.test(a));0!==b.length&&(b.some(b=>a.includes(b))||e.push({level:"warning",severity:"warning",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`蓝图红线事实缺口:正文未体现「${c.key}=${c.value}」`,suggestion:`请在对应章节补写该红线事实(数值必须与蓝图一致)`}))}if(b.resources.labor.peakValue>0)for(let a of f.matchAll(/(?:劳动力峰值|施工高峰|高峰人数|高峰期劳动力|劳动力高峰)(?:为|约|达到|共计)?[^\n。;;]{0,20}?(\d+(?:\.\d+)?)\s*人/gu)){let c=Number(a[1]);if(!(c>0)||c===b.resources.labor.peakValue)continue;let d=(a.index??0)+a[0].indexOf(a[1]);h({kind:"labor-peak",subject:"劳动力峰值",value:c,unit:"人",authority:b.resources.labor.peakValue,start:d,end:d+a[1].length,sentence:(0,aD.kE)(f,a.index??0,a[0].length)})}if(b.contract.totalDays>0)for(let a of f.matchAll(/(?:总工期|施工工期|合同工期|工期)(?:为|约|共计|控制)?[^\n。;;]{0,20}?(\d+(?:\.\d+)?)\s*(?:日历)?天/gu)){let c=Number(a[1]);if(!(c>0)||c===b.contract.totalDays)continue;let d=(a.index??0)+a[0].indexOf(a[1]),e=Math.max(f.lastIndexOf(",",d),f.lastIndexOf(",",d),f.lastIndexOf("。",d),f.lastIndexOf(";",d),f.lastIndexOf("\n",d))+1;/预留|机动|缓冲|关键线路|首件|样板|分区|分片|阶段|单体/u.test(f.slice(e,d))||h({kind:"total-days",subject:"总工期",value:c,unit:"日历天",authority:b.contract.totalDays,start:d,end:d+a[1].length,sentence:(0,aD.kE)(f,a.index??0,a[0].length)})}let i=b.redLineFacts.find(a=>"自然村数量"===a.key),j=i?Number(/(\d+)/u.exec(i.value)?.[1]):0;if(j>0){let a=b.project.scope?[`蓝图项目范围:${b.project.scope}`]:void 0;for(let b of f.matchAll(/(\d+)\s*个[^,。;、\s\n]{0,8}?自然村(?!分组|施工组|作业面|施工点|施工段)/gu)){let c=Number(b[1]);if(!(c>0)||c===j)continue;let d=(b.index??0)+b[0].indexOf(b[1]);h({kind:"village-count",subject:"自然村数量",value:c,unit:"个",authority:j,start:d,end:d+b[1].length,sentence:(0,aD.kE)(f,b.index??0,b[0].length),facts:a})}}let k=[];for(let[a,c]of Object.entries(b.quantities))if(c&&!(c.value<=0))for(let[b,d]of[[(0,aE.Lp)(a),!0],[(0,aE.nv)(a),!1]]){let e=RegExp(b,"gu");for(let b of f.matchAll(e)){let e=b.index??0;k.push({name:a,quantity:c,start:e,end:e+b[0].length,strict:d})}}k.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 l=[],m=k.map(a=>a.start).sort((a,b)=>a-b),n=a=>{let b=0,c=m.length;for(;b<c;){let d=b+c>>1;m[d]<=a?b=d+1:c=d}return b<m.length?m[b]:1/0};for(let a of k){let{name:b,quantity:c}=a,d=a.start,e=a.end;if(l.some(a=>d<a.end&&e>a.start))continue;l.push({start:d,end:e});let g=c.unit||"",i=g?`${function(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,"\\$&")}(g)}(?![0-9A-Za-z])`:"",j=f.slice(e,e+40),k=Math.min(...[j.search(/[、。;;,,\n]/u)].filter(a=>a>=0).concat([j.length,n(e)-e])),m=j.slice(0,k),o=RegExp(`(?<![\\dA-Za-z])(\\d+(?:\\.\\d+)?)\\s*${i}`,"u").exec(m);if(!o)continue;let p=Number(o[1]);if(!Number.isFinite(p)||p<=0||p===c.value)continue;let q=e+(o.index??0)+o[0].indexOf(o[1]),r=c.specBreakdown??[];if(r.length>=2&&aF(r.reduce((a,b)=>a+b.value,0),c.value)){let a=f.slice(Math.max(0,d-16),q).toLowerCase().replace(/\s+/gu,"");if(r.some(b=>aF(b.value,p)&&a.includes(b.spec.toLowerCase().replace(/\s+/gu,""))))continue}let s=c.groups??[],t=s.length>0?[`该条目清单分工程明细:${s.map(a=>`${a.group} ${a.value}${g}`).join("、")}`]:void 0;h({kind:"quantity",subject:b,value:p,unit:g,authority:c.value,start:q,end:q+o[1].length,sentence:(0,aD.kE)(f,d,q+o[1].length-d),facts:t})}return{candidates:c,entries:d,gapIssues:e}}(a,b),e=[...d.gapIssues],f=[],g={total:d.candidates.length,conflicts:0,consistent:0,uncertain:0,records:[]};if(d.candidates.length>0){let a=c.adjudicate??aD.hy,b=await a(d.candidates,{diagnostics:c.diagnostics,signal:c.signal});g.unavailable=b.unavailable;let h=new Set,i=new Set;for(let a of d.candidates){let c=b.records.get(a.id),j=c?.conclusion??"uncertain",k=c?.rationale??b.unavailable??"判定层未返回结论";if(g.records.push({id:a.id,subject:a.subject,conclusion:j,rationale:k}),"consistent"===j){g.consistent+=1;continue}if("uncertain"===j){g.uncertain+=1;let b=`${a.subject}|${a.value}`;i.has(b)||(i.add(b),e.push({level:"warning",severity:"warning",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`蓝图引用未决:${a.subject} ${a.value}${a.unit} 与蓝图口径 ${a.authority}${a.unit} 的一致性无法判定(${k})`,suggestion:`请核对后统一使用蓝图口径:${a.subject} ${a.authority}${a.unit}`}));continue}if(g.conflicts+=1,"quantity"===a.kind){let b=d.entries.get(a.id);b&&f.push({name:a.subject,value:a.value,unit:a.unit,authorityValue:a.authority,start:b.start,end:b.end})}h.has(a.subject)||(h.add(a.subject),"village-count"===a.kind?e.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`蓝图红线事实冲突:正文出现与蓝图不一致的自然村数量 ${a.value} 个(判定依据:${k})`,suggestion:`请统一使用蓝图口径:${a.subject} ${a.authority}${a.unit}`}):"labor-peak"===a.kind?e.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`蓝图引用冲突:正文出现与蓝图不一致的劳动力峰值 ${a.value} 人(判定依据:${k})`,suggestion:`请统一使用蓝图口径:${a.subject} ${a.authority}${a.unit}`}):"total-days"===a.kind?e.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`蓝图引用冲突:正文出现与蓝图不一致的工期表述 ${a.value} 日历天(判定依据:${k})`,suggestion:`请统一使用蓝图口径:${a.subject} ${a.authority}${a.unit}`}):e.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`蓝图引用冲突:正文出现与蓝图不一致的工程量 ${a.subject} ${a.value}${a.unit}(判定依据:${k})`,suggestion:`请统一使用蓝图工程量:${a.subject} ${a.authority}${a.unit}`}))}b.unavailable&&e.push({level:"warning",severity:"warning",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`蓝图引用语义判定不可用:${b.unavailable}(${d.candidates.length} 条候选按未决显式暴露,未回退词表猜测)`,suggestion:"请检查语义模型可用性后重新生成;未决项不阻断定稿"})}return c.onAdjudication?.(g),{issues:e,anchors:f,summary:g}}async function aH(a,b,c={}){return(await aG(a,b,c)).issues}function aI(a,b){let c=b.map(()=>[]),d=0;return b.forEach((b,e)=>{let f=d+b.length;for(let b of a)b.start>=d&&b.end<=f&&c[e].push({...b,start:b.start-d,end:b.end-d});d=f+2}),c}function aJ(a){let b=Date.now(),c={stage:"阶段 0",laborDerivationBasis:"清单汇总 \xd7 经验区间系数(定额工效知识不全,降级区间表达)",llmCalls:0,fallbackUsed:[],warnings:[],durationMs:0},d={version:"2.0.0",projectCode:function(a,b){let c=a=>a.replace(/^\d+(?:\.\d+)*\s*--\s*(?=\d{4}年)/u,""),d=/项目名称[::]\s*([^\n]{2,60})/u.exec(a);if(d){let a=c(d[1].trim()),b=a.split(/计划工期[::]|合同工期[::]|总工期[::]|工期[::]|质量标准[::]|计价[::]|施工地点/u)[0]?.trim()||a;if(b)return b}let e=/(\d{4}\s*年度\S{2,40}建设项目)/u.exec(a);return e?c(e[1].trim()):b||""}(a.basicFacts||"",a.templateName)||void 0,docType:"单位工程施工组织设计",createdAt:new Date().toISOString().slice(0,10),sourceMaterials:[...a.boundFilePaths]},e=R({projectRoot:a.projectRoot,boundFilePaths:a.boundFilePaths});e.warning&&c.warnings.push(e.warning);let f=e.boq;f&&(c.boq={sourceFile:f.sourceFile,totalEntries:f.totalEntries,complete:f.complete,villageCount:f.villages.length,pagesMissingTotal:f.villages.reduce((a,b)=>a+b.pagesMissing.length,0)},f.complete||c.warnings.push("清单解析完整性校验未通过(序号缺口/页码缺失),蓝图覆盖校验将兜底报告")),c.stage="阶段 A";let j=f||{entries:[],villages:[],totalEntries:0,sourceFile:"",complete:!1,diagnostics:{totalChunks:0,markdownChunks:0,declarationChunks:0,skippedChunks:0,droppedIncompleteRows:0}},q=function(a){let b=[...new Set(a.boq.entries.map(a=>`${a.section} ${a.subsection} ${a.name}`))].join(" "),c=[/管网|排水|雨污|污水|给水|检查井/u,/道路|路床|路面|路缘石|青砖|散水/u,/绿化|栽植|种植|苗木|景观|喷播/u,/路灯|亮化|照明/u].filter(a=>a.test(b)).length,d=`${a.templateName||""} ${a.basicFacts||""}`,e=a.boq.villages.map(a=>a.villageGroup).filter(Boolean),f=/自然村|美丽乡村|宜居|乡村振兴|行政村|村组|村庄/u.test(d)||e.length>0&&e.filter(a=>/村/u.test(a)).length>=Math.max(2,Math.ceil(e.length/2)),g=/产业园|标准化厂房|标准厂房|厂房|住宅|办公楼|综合楼|安置房|车间|仓库|宿舍楼|教学楼|医院|商场/u.test(d);if(a.boq.villages.length>0&&c>=3&&f&&!g)return k;let h=[{strategy:l,patterns:[/砌体|装饰|幕墙|地下室|层高|户型|塔吊|塔式起重机|脚手架|抹灰|门窗|屋面|防水/u]},{strategy:n,patterns:[/桥墩|桥台|墩柱|盖梁|系梁|箱梁|梁板|支座|伸缩缝|桥面|隧道|洞身|衬砌|锚杆/u]},{strategy:o,patterns:[/路基|路面|沥青|水稳|摊铺|压实|面层/u]},{strategy:p,patterns:[/闸室|闸墩|闸门|启闭机|围堰|导流|堤防|护坡|护岸|疏浚|水下/u]}].map(a=>({strategy:a.strategy,count:a.patterns.reduce((a,c)=>{let d=b.match(RegExp(c.source,"gu"));return a+(d?d.length:0)},0)})).sort((a,b)=>b.count-a.count);if((h[0]?.count||0)>=2)return h[0].strategy;let i=function(a){let b,c=[["市政",/市政|管网|排水|给水|雨污|污水|燃气/gu],["公路",/公路|路基|路面|沥青/gu],["桥梁与隧道",/桥梁|隧道/gu],["水利水电",/水利|河道|灌溉|防洪/gu],["电力",/电力|供配电|电压|电缆/gu],["机电安装",/机电|暖通|通风|空调|消防|给排水|智能化|电梯/gu],["装饰装修",/装饰|装修|幕墙/gu],["园林绿化",/园林|绿化|景观|苗木/gu],["铁路",/铁路|轨道/gu],["港口与航道",/港口|航道/gu],["矿山冶金",/矿山|冶金/gu],["房建",/房建|建筑|住宅|楼|结构|砌体|基坑|地下室|主体|层高|户型|公共建筑|产业园|厂房/gu]].map(([b,c])=>(c.lastIndex=0,{type:b,count:(a.match(c)||[]).length})).sort((a,b)=>b.count-a.count),d=c[0],e=0,f=0;for(let[c,d]of[["房建",/产业园|标准厂房|安置房|住宅小区|保障房|卫生院|门诊楼|办公楼/gu],["市政",/老旧小区|海绵城市|雨污分流|管网改造|管廊/gu],["桥梁与隧道",/桥梁|隧道|盾构|箱梁|斜拉|悬索|涵洞/gu],["公路",/公路|路基|路面|沥青|桩号|互通|匝道/gu],["水利水电",/堤防|水库|泵站|水闸|疏浚|节制闸|水电站|大坝|围堰/gu],["电力",/变电站|输电线路|配电|GIS设备|电缆|架空线路|铁塔|箱变/gu],["铁路",/铁路|轨道|道床|站台|信号机|接触网/gu],["港口与航道",/港口|码头|航道|护岸|堆场|泊位/gu],["矿山冶金",/矿山|矿井|选矿|冶炼|尾矿|轧钢/gu]]){d.lastIndex=0;let g=(a.match(d)||[]).length;g>=3&&g>e?(f=e,b=c,e=g):g>f&&(f=g)}if(b){if(f>0&&e<2*f&&d&&d.count>e)return d.type;let a=c.find(a=>a.type===b)?.count||0;return d&&d.type!==b&&d.count>2*a&&d.count>=2*e?d.type:b}return d&&d.count>0?d.type:"其他"}(`${a.templateName||""} ${a.basicFacts||""} ${a.chapterTitles.join(" ")} ${b}`);return"房建"===i||"装饰装修"===i?l:"桥梁与隧道"===i?n:"公路"===i?o:"水利水电"===i?p:m}({basicFacts:a.basicFacts,templateName:a.templateName,chapterTitles:a.chapterTitles,boq:j}),r=function(a){var b;let{boq:c}=a,d=a.strategy,e=U(c),f=function(a){let b=[];for(let c of V)for(let d of a.entries){if(!c.namePattern.test(`${d.name} ${d.description}`))continue;let a=c.extract(d);if(a){b.push({key:c.key,value:a,source:`清单条目 ${d.seq}「${d.name}」特征原文`,amount:c.amount});break}}return b}(c),j=d.villageOriented?function(a,b){let c=/(\d+)\s*个[^,。;、\s\n]{0,8}?自然村/u.exec(a);if(c)return Number(c[1]);let d=/(\d+)\s*个[^,。;、\s\n]{0,8}?自然村/u.exec(b);return d?Number(d[1]):0}(a.projectName,a.basicFacts||"")||c.villages.length:0;j>0&&f.push({key:"自然村数量",value:`${j} 个自然村`,source:"招标文件项目名称(清单自然村分组兜底)"});let k=function(a){let b={},c=a.entries.filter(a=>"垫层"===a.name).map(a=>/C\d{2}/u.exec(a.description)?.[0]).filter(a=>!!a);if(c.length>0){let a=new Map;for(let b of c)a.set(b,(a.get(b)||0)+1);b.cushion=[...a.entries()].sort((a,b)=>b[1]-a[1]||(a[0]<b[0]?-1:1))[0][0]}return b}(c),l=new Map((0,A.iC)({facts:(a.facts||[]).map(a=>({key:a.key,label:a.fieldName,value:a.value,sourceFile:a.sourceFile})),overrides:(0,B.Oq)((0,B.UD)([...(a.evidence||[]).map(a=>({text:String(a.content||""),source:`${a.filePath||""} ${a.sectionTitle||""}`})),...(a.facts||[]).map(a=>({text:String(a.value??""),source:String(a.sourceFile||"")}))]))}).resolved.map(a=>[a.attribute,a.value])),m=function(a,b,c){let d=c?.计划工期?Number(/(\d{1,4})\s*个?\s*日历天/u.exec(c.计划工期)?.[1]??NaN):NaN,e=Number.isFinite(d)?d:function(a){let b=/(?:变更为|变更修改为|澄清为|修改为|调整为|更正为|修正为|变更至|调整至)\s*[::]?\s*(\d{1,4})\s*个?\s*日历天/u.exec(a);if(b)return Number(b[1]);let c=/(?<!节点)(?<!阶段)(?<!分项)(?<!关键)(?:计划工期|合同工期|工期总日历天数|工期控制|工期目标|总工期|工期)[^。;;\n]{0,12}?(\d{1,4})\s*个?\s*日历天/u.exec(a)||/(\d{1,4})\s*个?\s*日历天[^。;;\n]{0,8}?(?:总工期|倒排|分解|完成)/u.exec(a);return c?Number(c[1]):0}(a),f=/质量(?:标准|要求)[^。;;\n]{0,20}?[::]\s*([^。;;\n]{1,20})/u.exec(a)||/合格/u.exec(a),g=(c?.质量标准&&c.质量标准.length<=20?c.质量标准.trim():"")||(f?(f[1]||"合格").trim():""),h=/([\u4e00-\u9fa5]{1,6}?价〔\d{4}〕\d+号)/u.exec(a),i=h?h[1]:"",j=/(?:合同估算价|招标控制价|最高投标限价|项目总投资|投资估算|工程概算)[^。;;\n]{0,20}?([\d,]+(?:\.\d+)?)\s*万/u.exec(a),k=c?.合同金额?Number(/([\d,]+(?:\.\d+)?)\s*万元/u.exec(c.合同金额)?.[1]?.replace(/,/g,"")??NaN):NaN;return{totalDays:e,qualityStandard:g,pricingFile:i,estimatedAmount:Number.isFinite(k)?k:j?Number(j[1].replace(/,/g,"")):0}}(a.basicFacts||"",0,{计划工期:l.get("计划工期"),质量标准:l.get("质量标准"),合同金额:l.get("合同金额")}),n=function(a,b,c){let d=b>0?b:360,e=c.milestoneGroups,f=e.map(b=>({...b,weight:a.entries.filter(a=>b.pattern.test(`${a.name} ${a.description}`)).reduce((a,b)=>a+b.quantity,0)})),g=Math.max(1,Math.round(.08*d)),h=d-g,i=f.slice(1),j=i.reduce((a,b)=>a+b.weight,0),k=f.reduce((a,b)=>a+b.weight,0),l=j<=0||k>0&&j/k<.05,m=l?0:j,n=i.length>0?Math.max(2,Math.round(.95*h/i.length)):0,o=[{key:"prep",label:e[0]?.label||"施工准备与清杂拆除",duration:g,basis:`前导工作封顶 8% 总工期(清杂整治可与主体并行穿插,不按工程量权重独占)`}];for(let a of i){if(l){o.push({key:a.key,label:a.label,duration:n,basis:`分部特征未命中策略分组(非 prep 权重占比 ${k>0?(j/k*100).toFixed(1):"0.0"}% < 5%),按总工期均分降级(每组 ${n} 天)`});continue}if(a.weight<=0)continue;let b=Math.max(2,Math.round(a.weight/m*h*.95));o.push({key:a.key,label:a.label,duration:b,basis:`分部工程量权重 ${(a.weight/m*100).toFixed(1)}% \xd7 剩余工期 ${h} 天`})}let p=o.reduce((a,b)=>a+(b.duration||0),0);for(let a=o.length-1;a>=0&&p>d;a--){let b=p-d,c=Math.min(o[a]?.duration||0,b);o[a]&&c>0&&(o[a].duration=(o[a].duration||0)-c,p-=c)}return o}(c,m.totalDays,d),o=function(a,b,c=[],d){let e=b>0?b:360,{groupOfEntry:f,laborUnitRange:g,tradeMapping:h,milestoneGroups:i}=d,j=new Map;for(let b of a.entries){if(b.quantity<=0)continue;let a=f(b),c=d.laborQuotaTable?.find(a=>a.pattern.test(`${b.name} ${b.description}`)&&a.unit===b.unit),e=c||g[a];if(!e||b.unit!==e.unit)continue;let i=h.find(a=>a.pattern.test(`${b.name} ${b.description}`))?.trade;if(!i)continue;let k=`${a}|${i}`,l=j.get(k)||{trade:i,workdaysMin:0,workdaysMax:0,unit:e.unit,basisQty:0,quota:c};l.quota!==c&&(l.quota=void 0),l.workdaysMin+=b.quantity*e.min,l.workdaysMax+=b.quantity*e.max,l.basisQty+=b.quantity,j.set(k,l)}let k=new Map;for(let a of j.values()){let b=k.get(a.trade)||{min:0,max:0,unit:a.unit,qty:0,quota:a.quota};b.quota!==a.quota&&(b.quota=void 0),b.min+=a.workdaysMin,b.max+=a.workdaysMax,b.qty+=a.basisQty,k.set(a.trade,b)}let l=[...k.entries()].sort((a,b)=>b[1].max-a[1].max).map(([a,b])=>({trade:a,min:Math.max(1,Math.round(b.min/e)),max:Math.max(1,Math.round(b.max/e)),basis:b.quota?`工种工程量约 ${Math.round(b.qty)}${b.unit} \xd7 定额工效(${b.quota.subName} ${b.quota.code},${b.quota.min}~${b.quota.max} 工日/${b.unit})\xf7 工期 ${e} 天(定额知识库命中)`:`工种工程量约 ${Math.round(b.qty)}${b.unit} \xd7 经验工效区间 \xf7 工期 ${e} 天(定额工效知识不全,降级区间表达)`})),m=l.reduce((a,b)=>a+(b.min||0),0),n=l.reduce((a,b)=>a+(b.max||0),0),o={min:m,max:n},p=`各工种人数区间之和 ${m}~${n} 人(同期在场上界口径,不做无依据折算)`,q=Math.round((o.min+o.max)/2),r=[];for(let b of i){let j=a=>d.laborQuotaTable?.find(b=>b.pattern.test(`${a.name} ${a.description}`)&&b.unit===a.unit)||g[f(a)],k=a.entries.filter(a=>{if(a.quantity<=0||!b.pattern.test(`${a.name} ${a.description}`))return!1;let c=j(a);return!!c&&a.unit===c.unit&&h.some(b=>b.pattern.test(`${a.name} ${a.description}`))});if(0===k.length)continue;let l=k.reduce((a,b)=>a+b.quantity*(j(b)?.min||0),0),m=k.reduce((a,b)=>a+b.quantity*(j(b)?.max||0),0),n=c.find(a=>a.key===b.key)?.duration||Math.max(1,Math.round(e/i.length)),o=Math.max(1,Math.round(l/n)),p=Math.max(o,Math.round(m/n));r.push({phase:b.label,min:Math.min(o,q),max:Math.min(p,q),basis:`阶段条目工程量约 ${Math.round(k.reduce((a,b)=>a+b.quantity,0))} \xd7 经验工效区间 \xf7 阶段 ${n} 天(同时在场人数按峰值 ${q} 人封顶)`})}let s=l.map(a=>({trade:a.trade,mid:Math.max(1,Math.round(((a.min??1)+(a.max??a.min??1))/2))})),t=s.reduce((a,b)=>a+b.mid,0)||1,u=s.map(a=>({trade:a.trade,quota:a.mid*q/t})),v=u.map(a=>({trade:a.trade,count:Math.max(1,Math.floor(a.quota))})),w=q-v.reduce((a,b)=>a+b.count,0);if(w>0){let a=u.map((a,b)=>({index:b,frac:a.quota-Math.floor(a.quota)})).sort((a,b)=>b.frac-a.frac);for(let b=0;w>0&&b<a.length;b+=1){let c=a[b];if(!c)continue;let d=v[c.index];d&&(d.count+=1,w-=1)}}else if(w<0){let a=u.map((a,b)=>({index:b,quota:a.quota})).sort((a,b)=>a.quota-b.quota);for(let b=0;w<0&&b<a.length;b+=1){let c=a[b];if(!c)continue;let d=v[c.index];d&&!(d.count<=1)&&(d.count-=1,w+=1)}}let x=v.map(a=>({trade:a.trade,count:a.count,basis:`工种构成唯一口径:按工种工程量区间中值比例收敛(合计恒等于峰值 ${q} 人)`}));return{peak:o,peakValue:q,peakBasis:p,byPhase:r,byTrade:l,composition:x}}(c,m.totalDays,n,d),p=function(a,b){let c=[];for(let d of b.equipmentMapping){let b=a.entries.filter(a=>d.pattern.test(`${a.name} ${a.description}`)&&(!d.unit||a.unit===d.unit));if(0===b.length)continue;let e=b.reduce((a,b)=>a+b.quantity,0),f=Math.max(1,Math.min(4,Math.ceil(Math.log10(Math.max(10,e))-1))),g=Math.max(f,Math.min(8,f+2));c.push({name:d.name,spec:d.spec,min:f,max:g,basis:`${d.basis};相关条目工程量合计约 ${Math.round(e)}${b[0]?.unit||""}`})}return c}(c,d),q=function(a){let b=new Map;for(let c of a.entries){if(!c.name||c.quantity<=0)continue;let a=function(a){let b=[];for(let c of $){let d=c.exec(a);d&&d[0]&&(b.some(a=>a.includes(d[0])||d[0].includes(a))||b.push(d[0]))}return b.join(" ")}(`${c.name} ${c.description}`),d=a?`${c.name}||${a}`:c.name,e=b.get(d);e?e.quantity+=c.quantity:b.set(d,{name:c.name,quantity:c.quantity,unit:c.unit,spec:a||void 0})}return[...b.values()].sort((a,b)=>b.quantity-a.quantity).map(a=>({name:a.name,quantity:Math.round(1e3*a.quantity)/1e3,unit:a.unit,spec:a.spec,batchDesc:"按施工段分批进场",basis:"清单汇总 + 进度匹配"}))}(c),r=function(a,b){let c=[];for(let d of b.inspectionBatchRules){let b=a.entries.filter(a=>d.namePattern.test(a.name)&&(!d.unit||a.unit===d.unit)).reduce((a,b)=>a+b.quantity,0);if(b<=0)continue;let e=d.divisor>0?Math.max(1,Math.ceil(b/d.divisor)):0,f=d.descTemplate.replace("{count}",String(e)).replace("{total}",String(Math.round(1e3*b)/1e3));c.push({scope:d.scope,planDesc:f})}return c}(c,d),s=function(a){let b=a.entries.filter(a=>/挖一般土方|挖沟槽土方|挖基坑土方|清淤/u.test(a.name)&&"m3"===a.unit).reduce((a,b)=>a+b.quantity,0),c=a.entries.filter(a=>/回填|路肩土|种植土/u.test(a.name)&&"m3"===a.unit).reduce((a,b)=>a+b.quantity,0),d=Math.max(0,Math.round((b-c)*1e3)/1e3);return{excavation:Math.round(1e3*b)/1e3,backfill:Math.round(1e3*c)/1e3,disposal:d,basis:"清单挖/填/弃量汇总(挖方含清淤),补疑口径:购土回填运距自行考虑"}}(c),t=function(a,b,c){let{machinePowerTable:d,powerFallbackText:e,waterNoteText:f}=c,g=a.filter(a=>!_.has(a.name)).reduce((a,b)=>a+(d.find(a=>a.name===b.name)?.kw||0)*(b.min||1),0),h=g>0?`按电动机具负荷计算,用电负荷约 ${Math.round(.7*g)} kW(电动机具总功率约 ${Math.round(g)} kW,同时系数 0.7),${e}`:e,i=Math.round(60*b.peakValue/1e3*10)/10;return{powerLoad:h,waterUsage:`生活用水按高峰人数 ${b.peakValue} 人、每人每日 60L 计算,高峰日生活用水量约 ${i} m\xb3;${f}`}}(p,o,d),u=(a.evidence||[]).map(a=>String(a.content||"")).join("\n"),w=function(a,b){let c=a.villages.map(a=>a.villageGroup).map(a=>({name:a,basis:`清单按${b.groupLabel}(工程名称)`})),d=c.length>1&&b.multiVillageFlow?.(c.length)||b.deploymentFlowFallback,e=[...new Set(a.entries.map(a=>a.section).filter(Boolean))];return{sections:c,sequence:e.length>0?e.join(" → "):b.sequenceFallback,sequenceBasis:"清单分部分项编排顺序归纳",flow:d}}(c,d),x=function(a,b){let c=[];for(let d of b.difficultyTemplates)d.test(a)&&c.push({name:"function"==typeof d.name?d.name(a):d.name,measure:d.measure,basis:d.basis});return 0===c.length&&c.push({name:"多工序交叉施工组织",measure:"按清单分部分项编排顺序组织流水作业,加强工序衔接检查",basis:"清单分部分项结构"}),c}(c,d),y=function(a){let b=v({facts:a.facts||[],evidence:a.evidence||[]}),c=[];a.contract&&a.contract.totalDays>0&&c.push({id:"contract_days",label:"总工期",values:[`${a.contract.totalDays} 日历天`]}),a.labor&&a.labor.peakValue>0&&c.push({id:"labor_peak",label:"劳动力峰值",values:[`${a.labor.peakValue} 人`]});let d=a.villageCount||0;if(d>0&&c.push({id:"village_count",label:"自然村数量",values:[`${d} 个自然村`]}),a.boq){let b=function(a){let b=new Map;for(let c of a.entries){if(!c.name||c.quantity<=0||/暂列|金额|计日工|税|费/u.test(c.name)||!c.section)continue;let a=b.get(c.section)||[];a.push(c),b.set(c.section,a)}return[...b.entries()].sort((a,b)=>b[1].length-a[1].length).slice(0,3).map(([a,b])=>{let c=[...b].sort((a,b)=>b.quantity-a.quantity||(a.name<b.name?-1:1))[0];return`${c.name} ${c.quantity}${c.unit}(${a})`})}(a.boq);b.length>0&&c.push({id:"core_quantities",label:"核心工程量",values:b})}return{entries:[...b,...c]}}({facts:a.facts,evidence:a.evidence,contract:m,labor:o,boq:c,villageCount:j}),z=[...new Set(c.entries.map(a=>a.section).filter(Boolean))],C=function(a){if(!a)return"";let b=/建设地点[:: \t|]*([^。;;\n|]{2,40}?)(?=[,,。;;\n|]|工期|质量标准|合同估算)/u.exec(a);return b?b[1].trim().replace(/[,,、\s]+$/gu,""):""}(a.basicFacts||""),D=C?function(a){for(let b of i)if(b.pattern.test(a))return{...b.climate};return{rainySeason:"",highTemp:"",winter:""}}(C):(b=d.climateZone)&&i.find(a=>a.zone===b)?.climate||{rainySeason:"",highTemp:"",winter:""},E=[];n.some(a=>a.basis.includes("均分降级"))&&E.push("里程碑分组未命中策略特征(非 prep 权重占比 < 5%),已按总工期均分降级,详见 data.milestones.basis");let F=new Set(n.map(a=>a.key)),G=d.milestoneGroups.slice(1).filter(a=>!F.has(a.key));if(G.length>0&&E.push(`策略阶段未命中清单,本阶段不产出:${G.map(a=>a.label).join("、")}(本项目清单中无对应分部条目;若确有该分部工作,请检查清单解析完整性或策略分部特征是否覆盖)`),o.peakValue<=0)E.push("劳动力数据未产出(清单中无可用工效推导条目):正文不引用劳动力数值,不得自行估计");else{let a=n[n.length-1];a&&!o.byPhase.some(b=>b.phase===a.label)&&E.push(`分阶段劳动力缺「${a.label}」行:该阶段条目无可用工效系数(分组/计量单位未匹配到工效,策略组未配置该类工效;不编造人数)`)}return D.rainySeason||E.push("气候区域未识别,季节施工由写作层按建设地点常识处理"),{data:{strategyId:d.id,project:{name:a.projectName||"(待提取:项目名称)",scope:c.villages.length>0?`${c.villages.length} 个${d.groupLabel}(${c.villages.map(a=>a.villageGroup).join("、")})`:"",works:z,location:C},contract:{totalDays:m.totalDays,qualityStandard:m.qualityStandard,pricingFile:m.pricingFile,estimatedAmount:m.estimatedAmount||void 0},climate:D,milestones:n,resources:{labor:o,equipment:p},materialsPlan:q,fundPlan:{wageRule:"工资性工程款按工程所在地造价管理规定执行",usagePlan:"按进度分阶段使用"},testPlan:[],testInstruments:(d.instrumentTable||g).map(a=>({name:a.name,spec:a.spec,quantity:a.quantity,purpose:a.purpose,basis:"检定合格后投入使用"})),tempLand:(d.siteFacilityTable||h).map(a=>({purpose:a.name,area:a.area||(a.areaPerCapita?Math.max(10,Math.round(o.peakValue*a.areaPerCapita)):void 0),location:a.locationHint,duration:a.durationHint,note:a.note,basis:"施工总平面布置规划"})),schedule:function(a){let b=[],c=1;for(let[d,e]of a.entries()){let a=Math.max(1,e.duration||1),f=c,g=c+a-1;b.push({seq:d+1,label:e.label,duration:a,startDay:f,endDay:g,critical:"prep"!==e.key,basis:"prep"===e.key?"前导工作,与主体施工穿插进行":"按里程碑顺序衔接"}),c=g+1}return b}(n),earthworkBalance:s,tempUtilities:t,redLineFacts:f,amountRule:"商务禁区延续:金额类数据禁入正文(合同估算价例外),fund_plan/red_line_facts 渲染时遵守",decisionLock:y,quantities:e,specAuthorities:k,inspectionBatches:r,constructionDeployment:w,keyDifficulties:x,basisRegulations:function(a){if(!a)return[];let b=[],c=new Set;for(let d of a.matchAll(/《([^《》]{2,40}(?:法|条例|办法|规程|规范|标准))》(?:[((][^))]{0,24}?(?:国令|令|主席令|〔\d{4}〕)[^))]{0,24}?[))])?/gu)){let a=d[1].replace(/[\s#]/gu,"").trim();if(/通知|意见|公示|公告/u.test(a)||a.length<4||a.length>20)continue;let e=(d[0].match(/[((]([^))]{0,24}?(?:国令|令|主席令|〔\d{4}〕)[^))]{0,24}?)[))]/u)||[])[1],f=e?`《${a}》(${e.trim()})`:`《${a}》`;if(!c.has(f)&&(c.add(f),b.push(f),b.length>=14))break}return b}(`${a.basicFacts||""}
|
|
176
|
-
${u}`),drawingNote:"总平面布置图/横道图/组织机构图为后期人工配图,蓝图只规划对应章节正文内容"},diagnostics:{warnings:E}}}({boq:j,basicFacts:a.basicFacts,evidence:a.evidence,facts:a.facts,projectName:d.projectCode||"",strategy:q});if(c.warnings.push(...r.diagnostics.warnings),a.composition&&a.composition.appendixPlan.length>0){let b=[];for(let c of a.composition.appendixPlan)"table"===c.kind&&("blueprint.equipment"===c.dataSource&&0===(r.data.resources?.equipment?.length||0)?b.push(`${c.title}(机械设备数据为空)`):"blueprint.labor"===c.dataSource&&0===(r.data.resources?.labor?.composition?.length||0)?b.push(`${c.title}(劳动力构成数据为空)`):"blueprint.testInstruments"===c.dataSource?b.push(`${c.title}(绑定资料未提供试验检测仪器数据)`):"blueprint.tempLand"===c.dataSource&&b.push(`${c.title}(绑定资料未提供临时用地数据)`));b.length>0&&c.warnings.push(`文末附表数据源缺口 ${b.length} 项:${b.join("、")}(终稿按招标表头骨架渲染并显性标注,由编制人补齐)`)}c.stage="阶段 B/C";let s=function(a){let{chapterTitles:b,boq:c}=a;return{chapters:b.map((b,d)=>{var e;let f=String(d+1),g=/主要分部分项|施工方案|施工方法/u.test(b)?function(a,b){let c=new Map;for(let b of a.entries){if(!b.section)continue;let a=c.get(b.section)||[];a.push(b),c.set(b.section,a)}let d=[],e=0;for(let[a,f]of c){let c=af(a,f),g=f.some(a=>"unit-project"===a.sectionKind),h=[];if(g){let a=new Map;for(let b of f){let d=b.subsection||c,e=a.get(d)||[];e.push(b),a.set(d,e)}for(let[b,c]of a)h.push(ag(af(b,c),c))}else h.push(ag(c,f));e+=1,d.push({id:`${b}.${e}`,title:c,targetWords:ae.gF,requiredParams:h.flatMap(a=>Object.keys(a.quantities).slice(0,5).map(a=>({path:`data.quantities.${a}`,mode:"must_cite",strict:!0}))),tablePlans:[],workPackages:h})}return d}(c,f):[];return{id:f,title:b,isActive:(e=a.docType,!(/专项施工方案|专项方案|危大/u.test(e)&&/总平面|平面布置|施工部署|总体部署/u.test(b))),requiredParams:[],subSections:g}})}}({chapterTitles:a.chapterTitles,boq:j,docType:d.docType});c.stage="阶段 D";let t={meta:d,data:{...r.data,composition:a.composition},outline:s,validation:{passed:!1,checks:[]},diagnostics:c};return t.validation=function(a,b){let c=[],d=!b||0===b.entries.length;c.push({name:"0. 清单源可用性",passed:!d,message:d?"工程量清单缺失或未解析出任何条目:工程量/规格/资源计划类权威值全部无法推导,蓝图不可用。请确认资料包内含工程量清单且已成功解析入库后重试。":`清单可用:${b.entries.length} 条目、${b.villages.length} 个单位工程`});let e=(0,ak.Jx)(a,Z);c.push({name:"1. Schema 校验",passed:0===e.length,message:0===e.length?"结构/类型/必填/边界全部通过":e.join(";")});let f=function(a,b){let c=[];if(b){let d=U(b);for(let[b,e]of Object.entries(a.data.quantities)){let a=d[b];if(!a){c.push(`quantities.${b} 不在清单解析产物值集中(疑似编造)`);continue}a.value!==e.value&&c.push(`quantities.${b} 数值 ${e.value} 与清单聚合值 ${a.value} 不一致`)}}for(let b of a.data.redLineFacts)b.value&&b.source||c.push(`红线事实「${b.key}」缺值或缺来源`);if(b){let d=al[a.data.strategyId];if(d)for(let e of a.data.resources?.equipment||[]){let a=d.equipmentMapping.find(a=>a.name===e.name);if(!a)continue;let f=b.entries.filter(b=>a.pattern.test(`${b.name} ${b.description}`)&&b.unit===a.unit).reduce((a,b)=>a+b.quantity,0),g=/合计约\s*([\d.]+)/u.exec(e.basis);g&&Number(g[1])!==Math.round(f)&&c.push(`机械「${e.name}」basis 工程量 ${g[1]} 与清单同单位聚合 ${Math.round(f)} 不一致`)}else c.push(`蓝图推导策略 id「${a.data.strategyId}」不在策略组登记表(设备单位一致性校验无法执行)`)}return c}(a,b);c.push({name:"2. 事实锚定校验",passed:0===f.length,message:0===f.length?"L1a 值全部 ∈ 清单解析产物值集,红线事实逐条有源":f.join(";")});let g=function(a,b){let c=[],d=a.outline.chapters.flatMap(a=>a.subSections).flatMap(a=>a.workPackages);if(b){let a=new Set;for(let b of d)for(let c of b.coveredSeqs)a.add(c);let e=b.entries.filter(b=>b.section&&!a.has(b.seq));e.length>0&&c.push(`清单条目零丢失校验失败:${e.length} 条未被工作包覆盖(如序号 ${e.slice(0,5).map(a=>a.seq).join("、")})`)}return 0===a.data.keyDifficulties.length&&c.push("重难点及保证措施未逐项列明"),c}(a,b);c.push({name:"3. 覆盖校验",passed:0===g.length,message:0===g.length?"清单条目零丢失、重难点逐项列明":g.join(";")});let h=function(a){let b=[],c=a.data.contract?.totalDays||0,d=(a.data.milestones||[]).reduce((a,b)=>a+(b.duration||0),0);c>0&&d>c&&b.push(`里程碑总和 ${d} 天超过总工期 ${c} 天`);let{labor:e}=a.data.resources||{};if(e)for(let a of(e.peak&&e.peak.min>e.peak.max&&b.push(`劳动力峰值区间异常(min ${e.peak.min} > max ${e.peak.max})`),e.peakValue>0&&e.peak&&(e.peakValue<e.peak.min||e.peakValue>e.peak.max)&&b.push(`劳动力峰值唯一口径 ${e.peakValue} 人超出推导区间 ${e.peak.min}~${e.peak.max} 人`),e.byTrade||[]))(a.min||0)>(a.max||0)&&b.push(`工种「${a.trade}」人数区间异常`);let f=new Set((a.data.decisionLock?.entries??[]).map(a=>a.id));for(let c of(a.data.contract?.totalDays>0&&!f.has("contract_days")&&b.push(`决策锁缺失数据条目 contract_days(总工期 ${a.data.contract.totalDays} 日历天未入锁)`),e&&e.peakValue>0&&!f.has("labor_peak")&&b.push(`决策锁缺失数据条目 labor_peak(劳动力峰值 ${e.peakValue} 人未入锁)`),a.data.redLineFacts?.some(a=>"自然村数量"===a.key)&&!f.has("village_count")&&b.push("决策锁缺失数据条目 village_count(自然村数量红线事实未入锁)"),a.data.resources?.equipment||[]))(c.min||0)>(c.max||0)&&b.push(`机械「${c.name}」台数区间异常`);return b}(a);c.push({name:"4. 内部一致性校验",passed:0===h.length,message:0===h.length?"里程碑/劳动力/机械区间自洽":h.join(";")}),c.push({name:"5. 标书编制规格承接",passed:!0,message:function(a){let b=a.data.composition;if(!b)return"未承接标书编制规格(生成输入未提供阶段 1 判定,正文口径与文末附表按常规处理)";let c="blind"===b.bidType?"暗标":"open"===b.bidType?"明标":"未识别勾选标记(按常规口径)",d=b.appendixPlan.filter(a=>"table"===a.kind).length,e=b.appendixPlan.filter(a=>"figure"===a.kind).length;return[`标书类型:${c}`,`正文口径:${["forbidden"===b.bodyTablePolicy?"禁表格(显式禁表句)":"表格允许","forbidden"===b.bodyFigurePolicy?"禁图片":"图片允许"].join("/")}`,b.appendixPlan.length>0?`文末附表 ${b.appendixPlan.length} 项(表类 ${d}/图类 ${e})`:""].filter(Boolean).join(";")}(a)});let i=function(a){let b=!a.consistencyErrors.some(a=>/里程碑|总工期/u.test(a)),c=!a.consistencyErrors.some(a=>/劳动力|工种/u.test(a)),d=!a.consistencyErrors.some(a=>/机械/u.test(a)),e=!1!==a.boqAvailable;return{laborPeak:e&&a.schemaPassed&&a.factPassed&&c,schedule:e&&a.schemaPassed&&a.factPassed&&b,blueprint:e&&a.schemaPassed&&a.factPassed&&a.coveragePassed&&d}}({schemaPassed:0===e.length,factPassed:0===f.length,coveragePassed:0===g.length,consistencyErrors:h,boqAvailable:!d});return{passed:c.every(a=>a.passed),checks:c,authorityAvailability:i}}(t,f),t.validation.passed||c.warnings.push(`蓝图校验未通过:${t.validation.checks.filter(a=>!a.passed).map(a=>a.name).join("、")}(一期旁路仅报告,不阻断生成)`),c.durationMs=Date.now()-b,t}function aK(a,b){let c=e.join((0,f.Gl)(a),"assets","blueprint.json");return d.writeFileSync(c,JSON.stringify(b,null,2),"utf8"),c}},79227:(a,b,c)=>{c.d(b,{C:()=>f,previewGenerationBudgetForTemplate:()=>g});var d=c(46482),e=c(95734);function f(a){let b=Math.max(1,a.chapters.length),c=a.targetWords>0?Math.round(a.targetWords/b):1200,d=a.strategy,f=[],g=a.materialFileCount<4&&a.evidenceCount<6,h=Math.max(1,Math.min(b,(Number.isFinite(a.configuredChapterConcurrency)&&a.configuredChapterConcurrency>0?Math.floor(a.configuredChapterConcurrency):void 0)??b)),i=(0,e.Qf)(a.targetWords),j="fast"===d.mode?1:Math.max(1,b),{floorChars:k,ceilingChars:l}=c>=6e3?{floorChars:14e3,ceilingChars:4e4}:c>=3e3?{floorChars:11e3,ceilingChars:28e3}:{floorChars:8e3,ceilingChars:18e3},m=d.repairRoundBudget?d.repairRoundBudget:Math.max(2,Math.min(4,2+ +(a.targetWords>=2e4)+ +!!g)),n=Math.min(m*b,Math.max(12,2*b));return"strict"===d.mode&&f.push("strict:风险领域关键词命中(专项/安全/质量/验收/合同/合规等)"),a.targetWords>=4e4&&f.push("strict:目标篇幅超长(≥4 万字)"),g&&f.push("strict:资料稀疏(资料包文件 <4 且可用证据 <6 条)"),"fast"===d.mode&&f.push("fast:小文档(≤6000 字且 ≤4 章)全局审查降级为 35% 抽检"),"longform"===d.mode&&f.push("longform:长文档(≥3 万字或 ≥8 章)"),"balanced"===d.mode&&f.push("balanced:常规篇幅文档,标准审查深度"),f.push(`全章节并行生成(${h}/${b} 章同批),审查流水线 ${j} 路,全局 LLM 并发不设上限,每章证据预算 ${Math.round(k/1e3)}k-${Math.round(l/1e3)}k 字符,修复轮次预算每章 ${m} 轮(文档级总池 ${n} 轮,收敛判定优先)`),{strategy:d,chapterConcurrency:h,reviewConcurrency:j,llmConcurrency:i,evidenceFloorChars:k,evidenceCeilingChars:l,repairRoundBudget:m,repairPoolBudget:n,triggers:f}}function g(a){let b=Math.max(1,a.chapters.length),c=Math.max(0,Math.round(a.targetWords??0)),e=(0,d.JP)({template:a.template,targetWords:c,requirement:a.requirement,materialFileCount:a.materialFileCount,evidenceCount:a.evidenceCount}),g=f({template:a.template,chapters:a.chapters,targetWords:c,requirement:a.requirement,materialFileCount:a.materialFileCount,evidenceCount:a.evidenceCount,hasVeryLargeExplicitChapter:a.hasVeryLargeExplicitChapter??!1,configuredChapterConcurrency:a.configuredChapterConcurrency??0,strategy:e});return{mode:e.mode,enableGlobalReview:e.enableGlobalReview,globalReviewSamplingRate:e.globalReviewSamplingRate??1,repairRoundBudget:g.repairRoundBudget,chapterConcurrency:g.chapterConcurrency,reviewConcurrency:g.reviewConcurrency,evidenceFloorChars:g.evidenceFloorChars,evidenceCeilingChars:g.evidenceCeilingChars,targetWords:c,chapterCount:b,triggers:g.triggers}}},82437:(a,b,c)=>{c.d(b,{gu:()=>s,iC:()=>r,j4:()=>m,wc:()=>t});var d=c(10025),e=c(95294);function f(a){let b=String(a||"");return/补遗|补疑|答疑|澄清|question/i.test(b)?96:/招标|投标须知|招标公告/.test(b)?90:/清单|bill|boq|xls/i.test(b)?80:/图纸|dwg|施工图|设计说明/i.test(b)?75:/企业|公司|管理手册/.test(b)?60:70}function g(a){let b=[...String(a||"").matchAll(/(20\d{2})[.\-年](\d{1,2})[.\-月](\d{1,2})/g)].map(a=>1e4*Number(a[1])+100*Number(a[2])+Number(a[3]));if(b.length>0)return Math.max(...b);let c=/(\d{1,2})\s*(?:招标)?答疑文件/u.exec(a)?.[1];return c?1e3+Number(c):0}let h=/^(?:子项名称|图名|图号|比例|制图|审核|版次)\s*[::]/u,i=/^(?:子项名称图名|图名图号|设计单位名称|制图人|审核人|比例尺)$/u,j=/^(?:【[^】]{0,16}】|—+|待定|暂无?|未提供|详见|如上|同前)$/u,k=/^(?:见|详见|参见|按|依据)\s*(?:招标文件|招标公告|投标须知|图纸|设计|清单|规范|合同)/u,l=/^(?:分部小计|本页小计|小计|合计|总计|综合单价|措施项目费|规费|税金|按实|暂估|暂列金额)$/u;function m(a,b={}){let c=String(a||"").trim();return c?c.length>260?"超长(疑为段落而非值)":(c.match(/([\u4e00-\u9fa5])\1/gu)||[]).length>=2?"OCR 复写噪声":!b.allowProse&&c.length>40&&/[。;!?]$/u.test(c)?"段落而非值":h.test(c)&&c.length<=14||i.test(c)?"图签/图名串格":j.test(c)?"占位/未提供值":k.test(c)?"指向值(非值本身)":l.test(c)?"清单内部口径词":(c.match(/[\u4e00-\u9fa5]{2,8}\s*[::]/gu)||[]).length>=3?"表格串格(多字段粘连)":!1!==b.includePoolNoise&&(0,e.MO)(c)?"池噪声(图签/坐标/残片/粘连)":c.length>=12&&/(?:以及|和|与|或|的|了|在|为|按|由|及)$/u.test(c)?"截断值":void 0:"空值"}function n(a){let b=String(a||"").trim(),c=/^(?<main>[^((]{1,40})[((](?<inner>[\s\S]{12,})[))]\s*$/u.exec(b);if(!c?.groups)return{value:b};let d=c.groups.inner;return/;|;|余同|标注:|图纸标注|以下同/u.test(d)||d.length>30?{value:c.groups.main.trim(),note:d.slice(0,80)}:{value:b}}function o(a){let b=String(a||"").trim();if(!b)return{value:"",shape:"text"};let c=RegExp(`${d.yJ}\\s*[::]?`,"u").exec(b),e=c?b.slice(c.index+c[0].length):b,f=[{shape:"date",re:/\d{4}\s*年\s*\d{1,2}\s*月\s*\d{1,2}\s*日/u},{shape:"money",re:/\d+(?:\.\d+)?\s*(?:万元|亿元|元)/u},{shape:"standard",re:/(?:GB|JGJ|CJJ|DB|CECS|ISO|IEC)\s*\/?\s*T?\s*[\d.]+/iu},{shape:"spec",re:/(?: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},{shape:"measure",re:/\d+(?:\.\d+)?\s*(?:m2|m3|m²|m³|㎡|m|km|kg|t|吨|个|座|套|台|根|块|樘|扇|片|组|件|孔|盏|项|处|层|日历天|天|%)/u}].filter(a=>a.re.test(e));if(0===f.length)return{value:b.slice(0,80),shape:"text"};let g=f[0];return{value:function(a,b){let c=String(a||"").trim(),e={date:/\d{4}\s*年\s*\d{1,2}\s*月\s*\d{1,2}\s*日/gu,money:/\d+(?:\.\d+)?\s*(?:万元|亿元|元)/gu,standard:/(?:GB|JGJ|CJJ|DB|CECS|ISO|IEC)\s*\/?\s*T?\s*[\d.]+(?:-\d{2,4})?/giu,spec:/(?: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))/gu,measure:/\d+(?:\.\d+)?\s*(?:m2|m3|m²|m³|㎡|m|km|kg|t|吨|个|座|套|台|根|块|樘|扇|片|组|件|孔|盏|项|处|层|日历天|天|%)/gu};if("text"===b)return c.slice(0,80);let f=(e[b]||e.measure).source,g=[...c.matchAll(RegExp(f,"gu"))].map(a=>a[0].trim());if(0===g.length)return c.slice(0,80);let h=RegExp(`${d.yJ}\\s*[::]?`,"u").exec(c);if(h){let a=c.slice(h.index+h[0].length),b=RegExp(f,"u").exec(a);if(b)return b[0].trim()}return g[g.length-1]}(b,g.shape),shape:g.shape}}function p(a){let b=String(a||"").trim(),c=/[\u4e00-\u9fa5]([A-Za-z][A-Za-z0-9]{5,})/u.exec(b),d=c?b.slice(0,(c.index??0)+1):b;return d=d.replace(/([\u4e00-\u9fa5])\d{3,}$/u,"$1"),/省|市|区|县|路|街|交口|镇|乡/u.test(d)&&(d=d.replace(/([\u4e00-\u9fa5])[\d\s]{3,}(?=[\u4e00-\u9fa5]|$)/gu,"$1")),d}function q(a,b){let c=`${b||""}${a||""}`.replace(/\s+/gu,"");return c?/开工日期|开工时间|startDate/i.test(c)?"开工日期":/竣工日期|完工日期|endDate/i.test(c)?"竣工日期":/质量标准|质量目标|quality/i.test(c)?"质量标准":/建设规模|建筑面积|规模|scale/i.test(c)?"建设规模":/建设地点|工程地点|location/i.test(c)?"建设地点":/招标人|建设单位|owner/i.test(c)?"招标人":/估算|限价|控制价|投资|金额|amount/i.test(c)?"合同金额":/项目名称|工程名称|projectName/i.test(c)?"项目名称":/项目编号|工程编号|projectCode/i.test(c)?"项目编号":/工期|日历天|duration|schedule/i.test(c)&&!/节点|阶段|考核|开工|竣工/i.test(c)?"计划工期":c.slice(0,40):""}function r(a){let b=a.overrides||[],c=[],e=new Map;a.facts.forEach((b,d)=>{let h=String(b.value??"").trim();if(!h)return;let i=q(String(b.key||""),b.label);if(!i)return;let j=String(b.sourceFile||b.source||""),k=n(h),l=String(b.sourceFile||b.source||""),r=a.subjectOf?a.subjectOf({key:b.key,label:b.label,sourceFile:l}):"",s=/澄清|变更|补疑|补遗|修改为|调整为|更正/u.test(k.value)&&!/^(?:见|详见|参见)/u.test(k.value),t=(a,b)=>{let c=e.get(a)||[];c.push({subject:r,attribute:a,value:b,source:l,priority:f(l),order:1e3*g(l)+d,clarified:s}),e.set(a,c)},u=function(a,b,c){let d=String(c||""),e=[],f=q(a,b),g=d.split(/[::]/u),h=/(?:变更|澄清|修改|调整|更正|修正|如下|其中|例如|即|注|说明)$|为$/u;for(let a=0;a+1<g.length;a+=1){let b=/([\u4e00-\u9fa5]{2,10})$/u.exec(g[a]||"")?.[1];if(!b||h.test(b))continue;let c=(g[a+1]||"").trim().slice(0,40);if(!/\d/u.test(c))continue;let d=q(b,b);d&&d!==f&&e.push({attribute:d,value:c})}return e}(String(b.key||""),b.label,k.value);for(let a of u){let b=o(n(a.value).value).value;m(b)||t(a.attribute,b)}let v=m(k.value);if(v)return void c.push({attribute:i,value:k.value.slice(0,60),source:j,reason:v});let w=p(o(k.value).value);if(!u.some(a=>a.value.includes(w)||w.includes(a.value.replace(/[((].*$/u,"").trim()))){if(m(w)){let a=p(k.value).slice(0,80);if(!/省|市|区|县|路|街|交口/u.test(a)||m(a))return;t(i,a);return}t(i,w)}});let h=[];for(let[a,c]of e){let e=function(a,b){if(0===a.length)return;let c=new Set;for(let d of b)"override"===d.kind&&a.some(a=>a.value.includes(d.superseded))&&c.add(d.superseded);let e=a.filter(a=>![...c].some(b=>a.value.includes(b)));if(0===e.length&&(e=[...a]),1===e.length)return{winner:e[0],rule:"R1",superseded:[...c]};let h=/(?:路|街|道|巷|号|交口|北侧|南侧|东侧|西侧|经开区|开发区|镇|村)/u,i=e.filter(a=>h.test(a.value)&&/省|市|区|县/u.test(a.value));if(i.length>0&&i.length<e.length&&(e=i),1===e.length)return{winner:e[0],rule:"R1.5",superseded:[...c]};let j=Math.max(...e.map(a=>a.priority)),k=e.filter(a=>a.priority===j);if(1===k.length)return{winner:k[0],rule:"R2",superseded:[...c]};let l=k.filter(a=>a.clarified);if(l.length>0&&l.length<k.length&&(k=l),1===k.length)return{winner:k[0],rule:"R2.5",superseded:[...c]};let m=Math.max(...k.map(a=>g(a.source)));if(m>0){let a=k.filter(a=>g(a.source)===m);if(1===a.length)return{winner:a[0],rule:"R3",superseded:[...c]};k=a}let n=a=>{let b=/(\d{1,2}(?:\.\d{1,2}){1,3})/u.exec(a.source+a.value);return b?Number(b[1].split(".").reduce((a,b)=>a+Number(b),0)):0};if(1===new Set(k.map(a=>a.source)).size){let a=Math.max(...k.map(n));if(a>0){let b=k.filter(b=>n(b)===a);if(1===b.length)return{winner:b[0],rule:"R4",superseded:[...c]};k=b}}let o=/(?:省|市|区|县|镇|路|街|道|巷|号|交口|北侧|南侧|东侧|西侧|经开区|开发区)/u,p=k.filter(a=>o.test(a.value));if(p.length>=1&&p.length<k.length)return{winner:p.reduce((a,b)=>b.value.length>a.value.length?b:a,p[0]),rule:"R5",superseded:[...c]};let q=(0,d.dm)(k[0].value);if("measure"===q||"spec"===q){let a=k.filter(a=>80>=f(a.source));if(1===a.length)return{winner:a[0],rule:"R5",superseded:[...c]};a.length>1&&(k=a)}if("money"===q){let a=k.filter(a=>f(a.source)>=90);if(1===a.length)return{winner:a[0],rule:"R5",superseded:[...c]};a.length>1&&(k=a)}let r=new Map;for(let a of k)r.set(a.value,(r.get(a.value)||0)+1);let s=Math.max(...r.values()),t=k.filter(a=>r.get(a.value)===s);if(1===t.length)return{winner:t[0],rule:"R6",superseded:[...c]};if(k=t,"standard"===q)return{winner:k[0],rule:"R7",superseded:[...c]};if("measure"===q||"spec"===q||"money"===q)return{winner:k.reduce((a,b)=>b.order>a.order?b:a,k[0]),rule:"R7",superseded:[...c]};let u=k.filter(a=>/\d/u.test(a.value));return{winner:(u.length>0?u:k)[0],rule:"R7",superseded:[...c]}}(c,b);e&&h.push({subject:e.winner.subject,attribute:a,value:e.winner.value,rule:e.rule,evidence:[{source:e.winner.source,snippet:e.winner.value.slice(0,120)}],superseded:e.superseded.filter(a=>a!==e.winner.value),candidates:c})}return h.sort((a,b)=>a.attribute.localeCompare(b.attribute,"zh-Hans-CN")),{resolved:h,noiseRejected:c}}function s(a){let b=a.resolved.filter(a=>a.superseded.length>0);return 0===b.length?"":["【现行口径(真值层裁决,硬约束)】下列属性已按资料优先级与变更链裁决出**唯一现行值**;全文(正文、表格、信息表、进度计划、节点)必须一致使用,被取代值仅在引用变更过程时可出现(如「招标文件原为 X,经答疑澄清变更为 Y」),不得单独陈述现状:",...b.map(a=>`- ${a.attribute}:现行为「${a.value}」;被取代(不得作为现行口径):${a.superseded.join("、")}`)].join("\n")}function t(a){return a.resolved.map(a=>{let b=`${a.attribute} = ${a.value}(裁决 ${a.rule};依据 ${a.evidence[0]?.source||"—"})`;return a.superseded.length>0?`${b};被取代:${a.superseded.join("、")}`:b})}},85016:(a,b,c)=>{c.d(b,{D$:()=>g,NR:()=>l,WT:()=>k,fc:()=>m});var d=c(37047),e=c(22157);let f=[{anchor:"按工作包逐项说明施工内容",required:/工作包|逐项说明/u},{anchor:"本项目已确认资料",required:/已确认|确认资料|本项目资料/u},{anchor:"已确认的项目资料显示",required:/已确认|项目资料/u},{anchor:"根据已确认资料",required:/已确认/u},{anchor:"生成后事实反查未通过",required:/事实反查|反查/u},{anchor:"资料事实主表",required:/事实主表/u},{anchor:"事实卡",required:/事实卡/u},{anchor:"后台数据库记录",required:/后台数据库|后台记录/u},{anchor:"证据摘要中未包含",required:/证据摘要/u},{anchor:"本专业工程主要清单项落位如下",required:/清单项落位|落位如下/u},{anchor:"针对招标文件及补疑文件的技术要求进行专项落位",required:/专项落位/u},{anchor:"全文数据口径必须唯一",required:/数据口径|峰值口径|控制口径|口径必须唯一/u}],g=/工作包|事实卡|事实主表|后台数据库|落位|峰值口径|控制口径|数据口径/gu,h=/工作包|事实卡|事实主表|后台数据库|落位|峰值口径|控制口径|数据口径/u,i=/^\d+(?:\.\d+)*\s+\S+/u;function j(a,b){let c=Math.min(a.length,b.length),d=0;for(let e=0;e<c;e+=1)d+=a[e]*b[e];return d}async function k(a){let b=[],c=[...new Set(a.match(g)||[])];c.length>0&&b.push({level:"error",severity:"blocker",category:"format",owner:"system",repairability:"llm_repairable",message:`正式正文仍包含后台内部术语“${c.join("”“")}”,需要按上下文语义改写为正式术语`,suggestion:"请结合语境改写:“拆除工程工作包”→“拆除工程”,“按工作包逐项说明”→“按专业工程逐项说明”;禁止出现生成系统后台概念。",provenance:{detectorId:"internal-terminology-anchor",fingerprint:(0,e.c6)(a)}});let h=a.split(/\r?\n/u).map(a=>a.trim()).filter(a=>!/^#{1,6}\s/u.test(a)&&!/^\s*\|/u.test(a)&&!(i.test(a)&&a.length<=40&&!/[。!?!?;;,,::]/.test(a))).flatMap(a=>a.split(/(?<=[。!?!?;;])/u).map(a=>a.trim())).filter(a=>a.length>=8&&a.length<=80).slice(0,200);if(0===h.length)return b;let k=(0,d.VN)(),[l,m]=await Promise.all([k.embedDocuments(h),k.embedDocuments(f.map(a=>a.anchor))]),n=[];for(let a=0;a<h.length;a+=1){let b=l[a];if(!b||0===b.length)continue;let c=h[a];if(f.some(a=>a.required.test(c))&&(Math.max(...m.map(a=>j(b,a)))>=.62&&n.push(c.slice(0,24)),n.length>=6))break}return n.length>0&&b.push({level:"error",severity:"blocker",category:"format",owner:"system",repairability:"llm_repairable",message:`正式正文疑似包含后台内部话术(语义锚点命中 ${n.length} 处):${n.map(a=>`“${a}…”`).join("、")}`,suggestion:"将内部话术(已确认资料/事实卡/工作包等生成系统概念)改写为面向评标人的正式表述,仅陈述项目事实与施工内容。",provenance:{detectorId:"internal-terminology-anchor",fingerprint:(0,e.c6)(a)}}),b}async function l(a){let b=a.split(/\r?\n/u),c=a=>{let b=a.trim();return!!(/^#{1,6}\s/u.test(b)||/^\s*\|/u.test(b))||i.test(b)&&b.length<=40&&!/[。!?!?;;,,::]/.test(b)},e=[];b.forEach((a,b)=>{if(c(a))return;let d=a.split(/(?<=[。!?!?;;])/u).map(a=>a.trim()).filter(a=>h.test(a)||a.length>=8&&a.length<=80&&f.some(b=>b.required.test(a)));d.length>0&&e.push({index:b,sentences:d})});let g=e.flatMap(a=>a.sentences);if(0===g.length)return a;let k=g.filter(a=>h.test(a)),l=g.filter(a=>!h.test(a)).slice(0,200),m=new Set(k);if(l.length>0){let a=(0,d.VN)(),[b,c]=await Promise.all([a.embedDocuments(l),a.embedDocuments(f.map(a=>a.anchor))]);l.forEach((a,d)=>{let e=b[d];e&&0!==e.length&&Math.max(...c.map(a=>j(e,a)))>=.62&&m.add(a)})}return 0===m.size?a:b.map(a=>{if(c(a))return a;let b=a;for(let a of m)b.includes(a)&&(b=b.split(a).join(""));return b}).join("\n")}function m(a){let b=0;return{markdown:a.split(/\r?\n/u).map(a=>{if(!a.trim()||!h.test(a)&&!a.includes("全文统一口径"))return a;let c=a.replace(/(职责|责任|分工|任务|措施|要求|管理|控制|工作|专项|标准|管控|验收|培训|教育|巡检|检查)落位/gu,"$1落实").replace(/(作业面|平面|现场|位置|点位|布局|空间|场地|工序|区域|临时设施|堆场|通道|道路|设备|设施|材料|构件|管线|照明|灯具|站房|楼层|部位)落位/gu,"$1布置").replace(/落位/gu,"落实").replace(/(\d+\s*人)峰值口径/gu,"$1上限").replace(/峰值口径/gu,"上限").replace(/控制口径/gu,"控制基准").replace(/数据口径/gu,"统计口径").replace(/全文统一口径/gu,"全篇取值一致");return c===a?a:(b+=1,c)}).join("\n"),fixedCount:b}}},87635:(a,b,c)=>{c.d(b,{Xr:()=>r,h:()=>t,jO:()=>s,ml:()=>k,qq:()=>i,xs:()=>h});var d=c(1218),e=c(51190),f=c(22157),g=c(13145);let h=["项目名称 项目编号 招标人 项目概况与招标范围 建设地点 建设规模 计划工期 质量标准 合同估算价","计划工期 合同工期 总工期 日历天","合同估算价 合同估算价格 投资估算 最高投标限价 招标控制价","质量标准 质量目标 合格","建设地点 建设规模 招标范围"];function i(a){let b=(0,d.de)(a),c=0;return/项目名称|工程名称|招标项目名称|项目编号|招标项目编号|招标人|建设单位|发包人/u.test(b)&&(c+=4),/计划工期|合同工期|总工期|\d+(?:\.\d+)?\s*(?:日历天|天|个月|月|年)/u.test(b)&&(c+=6),/合同估算价|投资估算|最高投标限价|招标控制价|\d+(?:\.\d+)?\s*(?:万元|元)/u.test(b)&&(c+=5),/质量标准|质量目标|合格|优良/u.test(b)&&(c+=4),/建设地点|建设规模|招标范围|项目概况与招标范围/u.test(b)&&(c+=4),/工程量|清单|图纸|设计说明|施工范围|施工内容|材料|设备|工艺|验收|复试|检测/u.test(b)&&(c+=3),/保证金账户|开户行|开户名称|收款账户|汇款|转账账户|电子交易系统|公共资源交易|开标时间|开标地点|评标委员会|评标办法/u.test(b)&&(c-=4),c}function j(a){return a.filter(a=>/项目名称|工程名称|项目编号|招标项目编号|招标人|建设单位|发包人|建设地点|建设规模|招标范围|计划工期|合同工期|周期要求|质量标准|合同估算|投资估算|最高投标限价|招标控制价/u.test(`${a.key||""}${a.fieldName||""}${a.fieldId||""}`))}function k(a){return function(a){let b=/[))】」』”]+$/u.exec(a);if(!b)return a;let c=b[0],d=a.slice(0,a.length-c.length),e={")":"(",")":"(","】":"【","」":"「","』":"『","”":"“"},f=!1;for(let b of c){let c=e[b];if(!c||d.split(c).length-1>d.split(b).length-1)return a;f=!0}return f?d:a}((0,d.de)(a).replace(/PDF\s*第\s*\d+(?:\s*[-—至到~~]\s*\d+)?\s*页/giu,"相关资料").replace(/PDF\s*第(?![ \t]*[0-90-9])/giu,"").replace(/(\d)\s+(日)/gu,"$1$2").replace(/[。;;]$/u,"").trim())}let l=/(?:[\u4e00-\u9fa5]{2,6}(?:杯|奖)(?![励金惩罚项])|省优|市优|国优|优质工程|文明工地|标准化工地|确保[^。;;|,、,\n]{0,10}(?:杯|奖))/u;function m(a,b="",c=b){let g=function(a){let b=new Map;for(let c of a.split(/\r?\n/u)){if(!/^\|.*\|\s*$/u.test(c)||/^\|\s*:?-{3,}:?/u.test(c))continue;let a=c.trim().replace(/^\|/u,"").replace(/\|$/u,"").split("|").map(a=>a.replace(/\*\*/gu,"").trim());if(a.length<2)continue;let e="序号"===a[0]&&a.length>=3?a[1]:a[0],f="序号"===a[0]&&a.length>=3?a[2]:a[1],g="序号"===a[0]&&a.length>=4?a[3]:a[2],h=e.replace(/\/|:|:/gu,"").trim();if(!/项目名称|工程名称|项目编号|招标项目编号|招标人|项目业主|建设单位|发包人|建设地点|建设规模|施工范围|招标范围|计划工期|合同工期|质量标准|合同估算价|合同估算价格|投资估算|最高投标限价|招标控制价/u.test(h))continue;let i=/计划工期|合同工期/u.test(h)?"schedule_requirement":/质量标准/u.test(h)?"quality_standard":/合同估算价|合同估算价格|投资估算|最高投标限价|招标控制价/u.test(h)?"project_investment_estimate":/招标人|项目业主|建设单位|发包人/u.test(h)?"owner":/建设地点/u.test(h)?"project_location":/项目编号|招标项目编号/u.test(h)?"project_code":void 0;!(!f||/内容|参数|资料未明确|系统暂未从知识库确认|项目资料暂未明确/u.test(f))&&(0,d.R7)(i||"project_name",f)&&b.set(h,[k(f),k(g||"项目资料")||"项目资料"])}return b}(b),h=(0,e.mN)({facts:a,markdown:c}),i=a=>(0,d.De)(k((0,f.lG)(a||""))).replace(/\|/gu,"").replace(/\bCOL\d+\b/gu,"").replace(/\s{2,}/gu," ").trim(),j=(a,b)=>{let e=h.get(a);if(e){let b=i(e.value);if(b&&(0,d.R7)(a,b))return[b,e.source||"项目资料"]}let f=function(a,b){for(let[c,d]of a.entries())if(b.some(a=>a.test(c)))return d}(g,b);return f&&(0,d.R7)(a,f[0])?[f[0],f[1]||"项目资料"]:("project_name"===a?(()=>{let a=[/([\u4e00-\u9fa5A-Za-z0-9()()\-—_\s·]+?(?:施工总承包项目|一期项目|学生宿舍一期|学生宿舍项目))/u.exec(c)?.[1],/项目名称[::\s|]+([^|\n。;;]{6,80})/u.exec(c)?.[1]].map(i).filter(a=>a&&(0,d.R7)("project_name",a));return a[0]?[a[0],"项目资料"]:void 0})():void 0)||["",""]},n=[["项目名称",...j("project_name",[/项目名称|工程名称|project_name/u])],["项目编号",...j("project_code",[/项目编号|招标项目编号|project_code/u])],["招标人",...j("owner",[/招标人|项目业主|建设单位|发包人|owner/u])],["建设地点",...j("project_location",[/建设地点|project_location/u])],["建设规模",...j("project_scale",[/建设规模|project_scale/u])],["计划工期",...j("schedule_requirement",[/计划工期|合同工期|周期要求|schedule_requirement/u])],["质量标准",...j("quality_standard",[/质量标准|quality_standard/u])],["合同估算价",...j("project_investment_estimate",[/合同估算|投资估算|最高投标限价|招标控制价|project_investment_estimate/u])]],o=n.find(([a])=>"质量标准"===a);if(o&&o[1]&&!l.test(o[1])){let b=function(a,b){let c=a.filter(a=>/创优|优质优价|奖项|奖惩|award/u.test(`${a.fieldId||""}${a.key||""}${a.fieldName||""}`));if(c.some(a=>{let b=k((0,f.lG)(a.value||""));return!!b&&/^(?:无|否|不设|未设|无创优|无奖项|不作|不要求|不设创优)$/u.test(b.trim())}))return;let d=[];for(let a of c)d.push(k((0,f.lG)(a.value||"")));for(let a of(d.push(b),d)){let b=/(?:确保|争创|力争|确保获得)[^。;;|,、,\n]{0,12}(?:杯|奖|优质工程)/u.exec(a);if(!b)continue;let c=b[0].trim();if(c.length>=5&&c.length<=24)return c}}(a,c);b&&!o[1].includes(b)&&(o[1]=`${o[1]},${b}`)}return n.filter(([,a])=>!!a).map(([a,b,c])=>[a,b,c||"项目资料"])}function n(a,b="",c=b){return["**项目基本信息表**","","| 信息项 | 内容 |","|---|---|",...m(a,b,c).map(a=>`| ${a[0]} | ${a[1]} |`)].join("\n")}function o(a,b="",c=b){return["**项目基本信息**","",...m(a,b,c).map(a=>`- ${a[0]}:${a[1]}`)].join("\n")}let p=[/^项目名称$/u,/^工程名称$/u,/^项目编号$/u,/^招标项目编号$/u,/^招标人$/u,/^项目业主$/u,/^建设单位$/u,/^发包人$/u,/^建设地点$/u,/^实施地点$/u,/^建设规模$/u,/^工程规模$/u,/^计划工期$/u,/^合同工期$/u,/^总工期$/u,/^质量标准$/u,/^质量目标$/u,/^合同估算价$/u,/^投资估算$/u,/^最高投标限价$/u,/^招标控制价$/u];function q(a){return p.some(b=>b.test(a))}function r(a){let b=a.replace(/\r?\n/gu,"\n").split("\n"),c=[],d=!1,e=a=>(0,g.Mp)(a).map(a=>a.replace(/\*\*/gu,"").trim()),f=a=>{let b=a.slice(2).map(e).filter(a=>a.length>=2).map(a=>a[0]||""),c=b.filter(q).length;return c>=3&&c>=Math.ceil(.45*b.length)};for(let a=0;a<b.length;){let e=b[a]||"",h=b[a+1]||"";if(/(?:\*\*[^\u000A]*项目基本信息表[^\u000A]*\*\*|####\s+[^\u000A]*项目基本信息表[^\u000A]*|###\s+[^\u000A]*项目基本信息表[^\u000A]*)/u.test(e)){let f=[e];for(a+=1;a<b.length&&!((0,g.VS)(b[a]||"")&&(0,g.vh)(b[a+1]||""))&&""===(b[a]||"").trim();)f.push(b[a]||""),a+=1;let h=!1;if(a<b.length&&(0,g.VS)(b[a]||"")&&(0,g.vh)(b[a+1]||""))for(h=!0,f.push(b[a]||"",b[a+1]||""),a+=2;a<b.length&&(0,g.VS)(b[a]||"");)f.push(b[a]||""),a+=1;let i=h&&d;h&&(d=!0),i||c.push(...f);continue}if(/^###\s+(?:\d+\.\d+\s+)?(?:项目基本信息|工程概况|项目概况)\s*$/u.test(e)){let h=[e];for(a+=1;a<b.length&&!((0,g.VS)(b[a]||"")&&(0,g.vh)(b[a+1]||""))&&!/^###\s+/u.test(b[a]||"");)h.push(b[a]||""),a+=1;if(a<b.length&&(0,g.VS)(b[a]||"")&&(0,g.vh)(b[a+1]||"")){let i=[b[a]||"",b[a+1]||""];for(a+=2;a<b.length&&(0,g.VS)(b[a]||"");)i.push(b[a]||""),a+=1;if(f(i)){if(d){let a=h.filter(a=>a.trim()&&!/^###\s+/u.test(a));a.length&&c.push(e,...a)}else d=!0,c.push(...h,...i);continue}c.push(...h,...i);continue}c.push(...h);continue}if((0,g.VS)(e)&&(0,g.vh)(h)){let i=[e,h];for(a+=2;a<b.length&&(0,g.VS)(b[a]||"");)i.push(b[a]||""),a+=1;if(f(i)){d||(d=!0,c.push(...i));continue}c.push(...i);continue}c.push(e),a+=1}return c.join("\n").replace(/\n{3,}/gu,"\n\n").replace(/\n{1,2}\|\s*信息项\s*\|\s*内容\s*\|\s*\n+(?:该小节围绕[^\n]*\n+)+\|\s*:?-{3,}:?\s*\|\s*:?-{3,}:?\s*\|\s*/gu,"\n\n")}function s(a,b,c){let d=c?.bodyTableForbidden===!0;if(a=((a,b)=>{let c=a.split("\n"),d=[];for(let a=0;a<c.length;a+=1){let e=c[a]||"",f=/^(#{3,5})\s+(.+)$/u.exec(e.trim()),g=f?.[2]?.replace(/^\d+(?:\.\d+)*\s+/u,"").trim()||"";if(f&&b.some(a=>a.test(g))){for(a+=1;a<c.length&&!/^#{2,5}\s+/u.test((c[a]||"").trim());)a+=1;a-=1;continue}d.push(e)}return d.join("\n")})(a,[/^工程概况一览表$/u,/^招标文件?评分.*响应索引表$/u,/^招标评分项响应索引表$/u]).replace(/\*\*(?:工程概况一览表|招标文件?评分.*响应索引表|招标评分项响应索引表)\*\*[\s\S]*?(?=\n{2,}#{2,5}\s+|\n{2,}(?:[^|\n#]|$)|$)/gu,"").replace(/\n{3,}/gu,"\n\n"),!/项目基本信息|项目概况|工程概况|招标范围/u.test(a))return r((0,g.yk)((0,g.j7)(a)));let e=/^(#{2,4}\s+(?:\d+\.\d+\s+)?[^\n]*(?:项目概况|工程概况|项目基本信息|招标范围)[^\n]*\n)/mu,f=/^(#{2,4}\s+(?:\d+\.\d+\s+)?[^\n]*(?:概况|基本信息)[^\n]*\n)/mu,h=()=>e.exec(a)??f.exec(a);if(!(/\|\s*信息项\s*\|\s*内容\s*\|/u.test(a)||d&&/\*\*\s*项目基本信息\s*\*\*/u.test(a))&&j(b).length>0){let c=h();if(c?.index||c?.index===0){let e=c.index+c[0].length,f=`${d?o(b,"",a):n(b,"",a)}
|
|
175
|
+
(本节蓝图切片过长已截断,未展开工作包见本章其他小节与绑定材料)`}return[...f,m,k].filter(Boolean).join("\n\n")}function aA(a,b){let c=a.outline.chapters.find(a=>a.title===b);return c||a.outline.chapters.find(a=>b.includes(a.title)||a.title.includes(b))}function aB(a,b,c){let d=[],e=[],f=a,g=[...b.subSections.flatMap(a=>a.requiredParams.filter(a=>"must_cite"===a.mode&&a.strict)),...ax(b.title).map(a=>({path:a,mode:"must_cite",strict:!0}))],h=new Set;for(let a of g)if(!h.has(a.path)){if(h.add(a.path),"data.contract.total_days"===a.path){if(c.contract.totalDays<=0)continue;let a=/(?:总工期|施工工期|合同工期|工期)(?:为|约|共计|控制)?[^\n。;;]{0,20}?(\d+(?:\.\d+)?)\s*(?:日历)?天/gu,b=!1;f=f.replace(a,(a,e)=>{b=!0;let f=Number(e);return f===c.contract.totalDays||f<=0?a:(d.push({anchor:"总工期",from:`${f}天`,to:`${c.contract.totalDays}天`}),a.replace(e,String(c.contract.totalDays)))}),b||e.push(`总工期 ${c.contract.totalDays} 日历天`);continue}if("data.resources.labor.peak_value"===a.path){let a=c.resources.labor.peakValue;if(a<=0)continue;let b=/(?:高峰(?:期)?(?:人数)?|峰值|劳动力(?:总人数|峰值)|各专业班组高峰人数)[^。;;\n]{0,24}?(?:约)?\s*([\d,]+)\s*人/gu,g=!1;f=f.replace(b,(b,c)=>{g=!0;let e=Number(String(c).replace(/,/g,""));return!Number.isFinite(e)||e===a||e<=0?b:(d.push({anchor:"劳动力峰值",from:`${c}人`,to:`${a}人`}),b.replace(c,String(a)))}),g||e.push(`劳动力峰值 ${a} 人`);continue}if("data.redline.greening_maintenance"===a.path){let a=c.redLineFacts.find(a=>/养护/u.test(a.key));if(!a)continue;let b=/养护[^。;;|]{0,10}?([一二两三四五六七八九十]+|\d{1,2})\s*年/u.exec(a.value);if(!b)continue;let g=(0,at._P)(b[1]??"");if(void 0===g||!Number.isFinite(g)||g<=0)continue;let h=/养护[^。;;\n|]{0,16}?([一二两三四五六七八九十]+|\d{1,2})\s*年/gu,i=!1;f=f.replace(h,(a,b)=>{i=!0;let c=(0,at._P)(b);return void 0===c||!Number.isFinite(c)||c===g||c<=0?a:(d.push({anchor:"养护期",from:`${b}年`,to:`${g}年`}),a.replace(b,String(g)))}),i||e.push(`养护期 ${g} 年`);continue}}return{markdown:f,fixed:d,missing:e}}function aC(a,b){let c=new Set,d=[];for(let e of a.subSections.flatMap(a=>a.requiredParams.filter(a=>"must_cite"===a.mode&&a.strict)))if(!c.has(e.path)){if(c.add(e.path),"data.contract.total_days"===e.path&&b.contract.totalDays>0){d.push(`总工期 ${b.contract.totalDays} 日历天`);continue}if(e.path.startsWith("data.quantities.")){let a=b.quantities[e.path.slice(16)];a&&a.value>0&&d.push(`${e.path.slice(16)} ${a.value}${a.unit}`)}}return d.join(";")}var aD=c(55965),aE=c(12863);function aF(a,b){return Math.abs(a-b)<=.01+1e-6*Math.max(Math.abs(a),Math.abs(b))}async function aG(a,b,c={}){let d=function(a,b){let c=[],d=new Map,e=[],f=a.split("\n").map(a=>/^\s*\|/u.test(a.trim())?" ".repeat(a.length):a).join("\n"),g=0,h=a=>{g+=1;let b=`c${g}`;c.push({id:b,kind:a.kind,subject:a.subject,value:a.value,unit:a.unit,authority:a.authority,sentence:a.sentence,facts:a.facts}),d.set(b,{subject:a.subject,value:a.value,unit:a.unit,authority:a.authority,start:a.start,end:a.end})};for(let c of b.redLineFacts.filter(a=>!a.amount&&"自然村数量"!==a.key)){let b=String(c.value).split(/[,。;、()()\]【】::\s\n[]+/u).map(a=>a.trim()).filter(a=>a.length>=3&&!/^[\d.]+$/u.test(a)&&!/^(?:其他|具体详见|满足设计要求|设计图纸|图集|招标文件|政府相关文件|规范等|资料)$/u.test(a));0!==b.length&&(b.some(b=>a.includes(b))||e.push({level:"warning",severity:"warning",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`蓝图红线事实缺口:正文未体现「${c.key}=${c.value}」`,suggestion:`请在对应章节补写该红线事实(数值必须与蓝图一致)`}))}if(b.resources.labor.peakValue>0)for(let a of f.matchAll(/(?:劳动力峰值|施工高峰|高峰人数|高峰期劳动力|劳动力高峰)(?:为|约|达到|共计)?[^\n。;;]{0,20}?(\d+(?:\.\d+)?)\s*人/gu)){let c=Number(a[1]);if(!(c>0)||c===b.resources.labor.peakValue)continue;let d=(a.index??0)+a[0].indexOf(a[1]);h({kind:"labor-peak",subject:"劳动力峰值",value:c,unit:"人",authority:b.resources.labor.peakValue,start:d,end:d+a[1].length,sentence:(0,aD.kE)(f,a.index??0,a[0].length)})}if(b.contract.totalDays>0)for(let a of f.matchAll(/(?:总工期|施工工期|合同工期|工期)(?:为|约|共计|控制)?[^\n。;;]{0,20}?(\d+(?:\.\d+)?)\s*(?:日历)?天/gu)){let c=Number(a[1]);if(!(c>0)||c===b.contract.totalDays)continue;let d=(a.index??0)+a[0].indexOf(a[1]),e=Math.max(f.lastIndexOf(",",d),f.lastIndexOf(",",d),f.lastIndexOf("。",d),f.lastIndexOf(";",d),f.lastIndexOf("\n",d))+1;/预留|机动|缓冲|关键线路|首件|样板|分区|分片|阶段|单体/u.test(f.slice(e,d))||h({kind:"total-days",subject:"总工期",value:c,unit:"日历天",authority:b.contract.totalDays,start:d,end:d+a[1].length,sentence:(0,aD.kE)(f,a.index??0,a[0].length)})}let i=b.redLineFacts.find(a=>"自然村数量"===a.key),j=i?Number(/(\d+)/u.exec(i.value)?.[1]):0;if(j>0){let a=b.project.scope?[`蓝图项目范围:${b.project.scope}`]:void 0;for(let b of f.matchAll(/(\d+)\s*个[^,。;、\s\n]{0,8}?自然村(?!分组|施工组|作业面|施工点|施工段)/gu)){let c=Number(b[1]);if(!(c>0)||c===j)continue;let d=(b.index??0)+b[0].indexOf(b[1]);h({kind:"village-count",subject:"自然村数量",value:c,unit:"个",authority:j,start:d,end:d+b[1].length,sentence:(0,aD.kE)(f,b.index??0,b[0].length),facts:a})}}let k=[];for(let[a,c]of Object.entries(b.quantities))if(c&&!(c.value<=0))for(let[b,d]of[[(0,aE.Lp)(a),!0],[(0,aE.nv)(a),!1]]){let e=RegExp(b,"gu");for(let b of f.matchAll(e)){let e=b.index??0;k.push({name:a,quantity:c,start:e,end:e+b[0].length,strict:d})}}k.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 l=[],m=k.map(a=>a.start).sort((a,b)=>a-b),n=a=>{let b=0,c=m.length;for(;b<c;){let d=b+c>>1;m[d]<=a?b=d+1:c=d}return b<m.length?m[b]:1/0};for(let a of k){let{name:b,quantity:c}=a,d=a.start,e=a.end;if(l.some(a=>d<a.end&&e>a.start))continue;l.push({start:d,end:e});let g=c.unit||"",i=g?`${function(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,"\\$&")}(g)}(?![0-9A-Za-z])`:"",j=f.slice(e,e+40),k=Math.min(...[j.search(/[、。;;,,\n]/u)].filter(a=>a>=0).concat([j.length,n(e)-e])),m=j.slice(0,k),o=RegExp(`(?<![\\dA-Za-z])(\\d+(?:\\.\\d+)?)\\s*${i}`,"u").exec(m);if(!o)continue;let p=Number(o[1]);if(!Number.isFinite(p)||p<=0||p===c.value)continue;let q=e+(o.index??0)+o[0].indexOf(o[1]),r=c.specBreakdown??[];if(r.length>=2&&aF(r.reduce((a,b)=>a+b.value,0),c.value)){let a=f.slice(Math.max(0,d-16),q).toLowerCase().replace(/\s+/gu,"");if(r.some(b=>aF(b.value,p)&&a.includes(b.spec.toLowerCase().replace(/\s+/gu,""))))continue}let s=c.groups??[],t=s.length>0?[`该条目清单分工程明细:${s.map(a=>`${a.group} ${a.value}${g}`).join("、")}`]:void 0;h({kind:"quantity",subject:b,value:p,unit:g,authority:c.value,start:q,end:q+o[1].length,sentence:(0,aD.kE)(f,d,q+o[1].length-d),facts:t})}return{candidates:c,entries:d,gapIssues:e}}(a,b),e=[...d.gapIssues],f=[],g={total:d.candidates.length,conflicts:0,consistent:0,uncertain:0,records:[]};if(d.candidates.length>0){let a=c.adjudicate??aD.hy,b=await a(d.candidates,{diagnostics:c.diagnostics,signal:c.signal});g.unavailable=b.unavailable;let h=new Set,i=new Set;for(let a of d.candidates){let c=b.records.get(a.id),j=c?.conclusion??"uncertain",k=c?.rationale??b.unavailable??"判定层未返回结论";if(g.records.push({id:a.id,subject:a.subject,conclusion:j,rationale:k}),"consistent"===j){g.consistent+=1;continue}if("uncertain"===j){g.uncertain+=1;let b=`${a.subject}|${a.value}`;i.has(b)||(i.add(b),e.push({level:"warning",severity:"warning",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`蓝图引用未决:${a.subject} ${a.value}${a.unit} 与蓝图口径 ${a.authority}${a.unit} 的一致性无法判定(${k})`,suggestion:`请核对后统一使用蓝图口径:${a.subject} ${a.authority}${a.unit}`}));continue}if(g.conflicts+=1,"quantity"===a.kind){let b=d.entries.get(a.id);b&&f.push({name:a.subject,value:a.value,unit:a.unit,authorityValue:a.authority,start:b.start,end:b.end})}h.has(a.subject)||(h.add(a.subject),"village-count"===a.kind?e.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`蓝图红线事实冲突:正文出现与蓝图不一致的自然村数量 ${a.value} 个(判定依据:${k})`,suggestion:`请统一使用蓝图口径:${a.subject} ${a.authority}${a.unit}`}):"labor-peak"===a.kind?e.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`蓝图引用冲突:正文出现与蓝图不一致的劳动力峰值 ${a.value} 人(判定依据:${k})`,suggestion:`请统一使用蓝图口径:${a.subject} ${a.authority}${a.unit}`}):"total-days"===a.kind?e.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`蓝图引用冲突:正文出现与蓝图不一致的工期表述 ${a.value} 日历天(判定依据:${k})`,suggestion:`请统一使用蓝图口径:${a.subject} ${a.authority}${a.unit}`}):e.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`蓝图引用冲突:正文出现与蓝图不一致的工程量 ${a.subject} ${a.value}${a.unit}(判定依据:${k})`,suggestion:`请统一使用蓝图工程量:${a.subject} ${a.authority}${a.unit}`}))}b.unavailable&&e.push({level:"warning",severity:"warning",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`蓝图引用语义判定不可用:${b.unavailable}(${d.candidates.length} 条候选按未决显式暴露,未回退词表猜测)`,suggestion:"请检查语义模型可用性后重新生成;未决项不阻断定稿"})}return c.onAdjudication?.(g),{issues:e,anchors:f,summary:g}}async function aH(a,b,c={}){return(await aG(a,b,c)).issues}function aI(a,b){let c=b.map(()=>[]),d=0;return b.forEach((b,e)=>{let f=d+b.length;for(let b of a)b.start>=d&&b.end<=f&&c[e].push({...b,start:b.start-d,end:b.end-d});d=f+2}),c}function aJ(a){let b=Date.now(),c={stage:"阶段 0",laborDerivationBasis:"清单汇总 \xd7 经验区间系数(定额工效知识不全,降级区间表达)",llmCalls:0,fallbackUsed:[],warnings:[],durationMs:0},d={version:"2.0.0",projectCode:function(a,b){let c=a=>a.replace(/^\d+(?:\.\d+)*\s*--\s*(?=\d{4}年)/u,""),d=/项目名称[::]\s*([^\n]{2,60})/u.exec(a);if(d){let a=c(d[1].trim()),b=a.split(/计划工期[::]|合同工期[::]|总工期[::]|工期[::]|质量标准[::]|计价[::]|施工地点/u)[0]?.trim()||a;if(b)return b}let e=/(\d{4}\s*年度\S{2,40}建设项目)/u.exec(a);return e?c(e[1].trim()):b||""}(a.basicFacts||"",a.templateName)||void 0,docType:"单位工程施工组织设计",createdAt:new Date().toISOString().slice(0,10),sourceMaterials:[...a.boundFilePaths]},e=R({projectRoot:a.projectRoot,boundFilePaths:a.boundFilePaths});e.warning&&c.warnings.push(e.warning);let f=e.boq;f&&(c.boq={sourceFile:f.sourceFile,totalEntries:f.totalEntries,complete:f.complete,villageCount:f.villages.length,pagesMissingTotal:f.villages.reduce((a,b)=>a+b.pagesMissing.length,0)},f.complete||c.warnings.push("清单解析完整性校验未通过(序号缺口/页码缺失),蓝图覆盖校验将兜底报告")),c.stage="阶段 A";let j=f||{entries:[],villages:[],totalEntries:0,sourceFile:"",complete:!1,diagnostics:{totalChunks:0,markdownChunks:0,declarationChunks:0,skippedChunks:0,droppedIncompleteRows:0}},q=function(a){let b=[...new Set(a.boq.entries.map(a=>`${a.section} ${a.subsection} ${a.name}`))].join(" "),c=[/管网|排水|雨污|污水|给水|检查井/u,/道路|路床|路面|路缘石|青砖|散水/u,/绿化|栽植|种植|苗木|景观|喷播/u,/路灯|亮化|照明/u].filter(a=>a.test(b)).length,d=`${a.templateName||""} ${a.basicFacts||""}`,e=a.boq.villages.map(a=>a.villageGroup).filter(Boolean),f=/自然村|美丽乡村|宜居|乡村振兴|行政村|村组|村庄/u.test(d)||e.length>0&&e.filter(a=>/村/u.test(a)).length>=Math.max(2,Math.ceil(e.length/2)),g=/产业园|标准化厂房|标准厂房|厂房|住宅|办公楼|综合楼|安置房|车间|仓库|宿舍楼|教学楼|医院|商场/u.test(d);if(a.boq.villages.length>0&&c>=3&&f&&!g)return k;let h=[{strategy:l,patterns:[/砌体|装饰|幕墙|地下室|层高|户型|塔吊|塔式起重机|脚手架|抹灰|门窗|屋面|防水/u]},{strategy:n,patterns:[/桥墩|桥台|墩柱|盖梁|系梁|箱梁|梁板|支座|伸缩缝|桥面|隧道|洞身|衬砌|锚杆/u]},{strategy:o,patterns:[/路基|路面|沥青|水稳|摊铺|压实|面层/u]},{strategy:p,patterns:[/闸室|闸墩|闸门|启闭机|围堰|导流|堤防|护坡|护岸|疏浚|水下/u]}].map(a=>({strategy:a.strategy,count:a.patterns.reduce((a,c)=>{let d=b.match(RegExp(c.source,"gu"));return a+(d?d.length:0)},0)})).sort((a,b)=>b.count-a.count);if((h[0]?.count||0)>=2)return h[0].strategy;let i=function(a){let b,c=[["市政",/市政|管网|排水|给水|雨污|污水|燃气/gu],["公路",/公路|路基|路面|沥青/gu],["桥梁与隧道",/桥梁|隧道/gu],["水利水电",/水利|河道|灌溉|防洪/gu],["电力",/电力|供配电|电压|电缆/gu],["机电安装",/机电|暖通|通风|空调|消防|给排水|智能化|电梯/gu],["装饰装修",/装饰|装修|幕墙/gu],["园林绿化",/园林|绿化|景观|苗木/gu],["铁路",/铁路|轨道/gu],["港口与航道",/港口|航道/gu],["矿山冶金",/矿山|冶金/gu],["房建",/房建|建筑|住宅|楼|结构|砌体|基坑|地下室|主体|层高|户型|公共建筑|产业园|厂房/gu]].map(([b,c])=>(c.lastIndex=0,{type:b,count:(a.match(c)||[]).length})).sort((a,b)=>b.count-a.count),d=c[0],e=0,f=0;for(let[c,d]of[["房建",/产业园|标准厂房|安置房|住宅小区|保障房|卫生院|门诊楼|办公楼/gu],["市政",/老旧小区|海绵城市|雨污分流|管网改造|管廊/gu],["桥梁与隧道",/桥梁|隧道|盾构|箱梁|斜拉|悬索|涵洞/gu],["公路",/公路|路基|路面|沥青|桩号|互通|匝道/gu],["水利水电",/堤防|水库|泵站|水闸|疏浚|节制闸|水电站|大坝|围堰/gu],["电力",/变电站|输电线路|配电|GIS设备|电缆|架空线路|铁塔|箱变/gu],["铁路",/铁路|轨道|道床|站台|信号机|接触网/gu],["港口与航道",/港口|码头|航道|护岸|堆场|泊位/gu],["矿山冶金",/矿山|矿井|选矿|冶炼|尾矿|轧钢/gu]]){d.lastIndex=0;let g=(a.match(d)||[]).length;g>=3&&g>e?(f=e,b=c,e=g):g>f&&(f=g)}if(b){if(f>0&&e<2*f&&d&&d.count>e)return d.type;let a=c.find(a=>a.type===b)?.count||0;return d&&d.type!==b&&d.count>2*a&&d.count>=2*e?d.type:b}return d&&d.count>0?d.type:"其他"}(`${a.templateName||""} ${a.basicFacts||""} ${a.chapterTitles.join(" ")} ${b}`);return"房建"===i||"装饰装修"===i?l:"桥梁与隧道"===i?n:"公路"===i?o:"水利水电"===i?p:m}({basicFacts:a.basicFacts,templateName:a.templateName,chapterTitles:a.chapterTitles,boq:j}),r=function(a){var b;let{boq:c}=a,d=a.strategy,e=U(c),f=function(a){let b=[];for(let c of V)for(let d of a.entries){if(!c.namePattern.test(`${d.name} ${d.description}`))continue;let a=c.extract(d);if(a){b.push({key:c.key,value:a,source:`清单条目 ${d.seq}「${d.name}」特征原文`,amount:c.amount});break}}return b}(c),j=d.villageOriented?function(a,b){let c=/(\d+)\s*个[^,。;、\s\n]{0,8}?自然村/u.exec(a);if(c)return Number(c[1]);let d=/(\d+)\s*个[^,。;、\s\n]{0,8}?自然村/u.exec(b);return d?Number(d[1]):0}(a.projectName,a.basicFacts||"")||c.villages.length:0;j>0&&f.push({key:"自然村数量",value:`${j} 个自然村`,source:"招标文件项目名称(清单自然村分组兜底)"});let k=function(a){let b={},c=a.entries.filter(a=>"垫层"===a.name).map(a=>/C\d{2}/u.exec(a.description)?.[0]).filter(a=>!!a);if(c.length>0){let a=new Map;for(let b of c)a.set(b,(a.get(b)||0)+1);b.cushion=[...a.entries()].sort((a,b)=>b[1]-a[1]||(a[0]<b[0]?-1:1))[0][0]}return b}(c),l=[...(a.evidence||[]).map(a=>({text:String(a.content||""),source:`${a.filePath||""} ${a.sectionTitle||""}`})),...(a.facts||[]).map(a=>({text:String(a.value??""),source:String(a.sourceFile||"")}))],m=new Map((0,A.iC)({facts:(a.facts||[]).map(a=>({key:a.key,label:a.fieldName,value:a.value,sourceFile:a.sourceFile})),overrides:(0,B.Oq)((0,B.UD)(l)),labeledValues:(0,B.Su)(l)}).resolved.map(a=>[a.attribute,a.value])),n=function(a,b,c){let d=c?.计划工期?Number(/(\d{1,4})\s*个?\s*日历天/u.exec(c.计划工期)?.[1]??NaN):NaN,e=Number.isFinite(d)?d:function(a){let b=/(?:变更为|变更修改为|澄清为|修改为|调整为|更正为|修正为|变更至|调整至)\s*[::]?\s*(\d{1,4})\s*个?\s*日历天/u.exec(a);if(b)return Number(b[1]);let c=/(?<!节点)(?<!阶段)(?<!分项)(?<!关键)(?:计划工期|合同工期|工期总日历天数|工期控制|工期目标|总工期|工期)[^。;;\n]{0,12}?(\d{1,4})\s*个?\s*日历天/u.exec(a)||/(\d{1,4})\s*个?\s*日历天[^。;;\n]{0,8}?(?:总工期|倒排|分解|完成)/u.exec(a);return c?Number(c[1]):0}(a),f=/质量(?:标准|要求)[^。;;\n]{0,20}?[::]\s*([^。;;\n]{1,20})/u.exec(a)||/合格/u.exec(a),g=(c?.质量标准&&c.质量标准.length<=20?c.质量标准.trim():"")||(f?(f[1]||"合格").trim():""),h=/([\u4e00-\u9fa5]{1,6}?价〔\d{4}〕\d+号)/u.exec(a),i=h?h[1]:"",j=/(?:合同估算价|招标控制价|最高投标限价|项目总投资|投资估算|工程概算)[^。;;\n]{0,20}?([\d,]+(?:\.\d+)?)\s*万/u.exec(a),k=(()=>{let a=String(c?.合同金额||""),b=/([\d,]+(?:\.\d+)?)\s*万元/u.exec(a)?.[1];if(b)return Number(b.replace(/,/g,""));let d=/([\d,]+(?:\.\d+)?)\s*元/u.exec(a)?.[1];return d?Number((Number(d.replace(/,/g,""))/1e4).toFixed(2)):NaN})();return{totalDays:e,qualityStandard:g,pricingFile:i,estimatedAmount:Number.isFinite(k)?k:j?Number(j[1].replace(/,/g,"")):0}}(a.basicFacts||"",0,{计划工期:m.get("计划工期"),质量标准:m.get("质量标准"),合同金额:m.get("合同金额")}),o=function(a,b,c){let d=b>0?b:360,e=c.milestoneGroups,f=e.map(b=>({...b,weight:a.entries.filter(a=>b.pattern.test(`${a.name} ${a.description}`)).reduce((a,b)=>a+b.quantity,0)})),g=Math.max(1,Math.round(.08*d)),h=d-g,i=f.slice(1),j=i.reduce((a,b)=>a+b.weight,0),k=f.reduce((a,b)=>a+b.weight,0),l=j<=0||k>0&&j/k<.05,m=l?0:j,n=i.length>0?Math.max(2,Math.round(.95*h/i.length)):0,o=[{key:"prep",label:e[0]?.label||"施工准备与清杂拆除",duration:g,basis:`前导工作封顶 8% 总工期(清杂整治可与主体并行穿插,不按工程量权重独占)`}];for(let a of i){if(l){o.push({key:a.key,label:a.label,duration:n,basis:`分部特征未命中策略分组(非 prep 权重占比 ${k>0?(j/k*100).toFixed(1):"0.0"}% < 5%),按总工期均分降级(每组 ${n} 天)`});continue}if(a.weight<=0)continue;let b=Math.max(2,Math.round(a.weight/m*h*.95));o.push({key:a.key,label:a.label,duration:b,basis:`分部工程量权重 ${(a.weight/m*100).toFixed(1)}% \xd7 剩余工期 ${h} 天`})}let p=o.reduce((a,b)=>a+(b.duration||0),0);for(let a=o.length-1;a>=0&&p>d;a--){let b=p-d,c=Math.min(o[a]?.duration||0,b);o[a]&&c>0&&(o[a].duration=(o[a].duration||0)-c,p-=c)}return o}(c,n.totalDays,d),p=function(a,b,c=[],d){let e=b>0?b:360,{groupOfEntry:f,laborUnitRange:g,tradeMapping:h,milestoneGroups:i}=d,j=new Map;for(let b of a.entries){if(b.quantity<=0)continue;let a=f(b),c=d.laborQuotaTable?.find(a=>a.pattern.test(`${b.name} ${b.description}`)&&a.unit===b.unit),e=c||g[a];if(!e||b.unit!==e.unit)continue;let i=h.find(a=>a.pattern.test(`${b.name} ${b.description}`))?.trade;if(!i)continue;let k=`${a}|${i}`,l=j.get(k)||{trade:i,workdaysMin:0,workdaysMax:0,unit:e.unit,basisQty:0,quota:c};l.quota!==c&&(l.quota=void 0),l.workdaysMin+=b.quantity*e.min,l.workdaysMax+=b.quantity*e.max,l.basisQty+=b.quantity,j.set(k,l)}let k=new Map;for(let a of j.values()){let b=k.get(a.trade)||{min:0,max:0,unit:a.unit,qty:0,quota:a.quota};b.quota!==a.quota&&(b.quota=void 0),b.min+=a.workdaysMin,b.max+=a.workdaysMax,b.qty+=a.basisQty,k.set(a.trade,b)}let l=[...k.entries()].sort((a,b)=>b[1].max-a[1].max).map(([a,b])=>({trade:a,min:Math.max(1,Math.round(b.min/e)),max:Math.max(1,Math.round(b.max/e)),basis:b.quota?`工种工程量约 ${Math.round(b.qty)}${b.unit} \xd7 定额工效(${b.quota.subName} ${b.quota.code},${b.quota.min}~${b.quota.max} 工日/${b.unit})\xf7 工期 ${e} 天(定额知识库命中)`:`工种工程量约 ${Math.round(b.qty)}${b.unit} \xd7 经验工效区间 \xf7 工期 ${e} 天(定额工效知识不全,降级区间表达)`})),m=l.reduce((a,b)=>a+(b.min||0),0),n=l.reduce((a,b)=>a+(b.max||0),0),o={min:m,max:n},p=`各工种人数区间之和 ${m}~${n} 人(同期在场上界口径,不做无依据折算)`,q=Math.round((o.min+o.max)/2),r=[];for(let b of i){let j=a=>d.laborQuotaTable?.find(b=>b.pattern.test(`${a.name} ${a.description}`)&&b.unit===a.unit)||g[f(a)],k=a.entries.filter(a=>{if(a.quantity<=0||!b.pattern.test(`${a.name} ${a.description}`))return!1;let c=j(a);return!!c&&a.unit===c.unit&&h.some(b=>b.pattern.test(`${a.name} ${a.description}`))});if(0===k.length)continue;let l=k.reduce((a,b)=>a+b.quantity*(j(b)?.min||0),0),m=k.reduce((a,b)=>a+b.quantity*(j(b)?.max||0),0),n=c.find(a=>a.key===b.key)?.duration||Math.max(1,Math.round(e/i.length)),o=Math.max(1,Math.round(l/n)),p=Math.max(o,Math.round(m/n));r.push({phase:b.label,min:Math.min(o,q),max:Math.min(p,q),basis:`阶段条目工程量约 ${Math.round(k.reduce((a,b)=>a+b.quantity,0))} \xd7 经验工效区间 \xf7 阶段 ${n} 天(同时在场人数按峰值 ${q} 人封顶)`})}let s=l.map(a=>({trade:a.trade,mid:Math.max(1,Math.round(((a.min??1)+(a.max??a.min??1))/2))})),t=s.reduce((a,b)=>a+b.mid,0)||1,u=s.map(a=>({trade:a.trade,quota:a.mid*q/t})),v=u.map(a=>({trade:a.trade,count:Math.max(1,Math.floor(a.quota))})),w=q-v.reduce((a,b)=>a+b.count,0);if(w>0){let a=u.map((a,b)=>({index:b,frac:a.quota-Math.floor(a.quota)})).sort((a,b)=>b.frac-a.frac);for(let b=0;w>0&&b<a.length;b+=1){let c=a[b];if(!c)continue;let d=v[c.index];d&&(d.count+=1,w-=1)}}else if(w<0){let a=u.map((a,b)=>({index:b,quota:a.quota})).sort((a,b)=>a.quota-b.quota);for(let b=0;w<0&&b<a.length;b+=1){let c=a[b];if(!c)continue;let d=v[c.index];d&&!(d.count<=1)&&(d.count-=1,w+=1)}}let x=v.map(a=>({trade:a.trade,count:a.count,basis:`工种构成唯一口径:按工种工程量区间中值比例收敛(合计恒等于峰值 ${q} 人)`}));return{peak:o,peakValue:q,peakBasis:p,byPhase:r,byTrade:l,composition:x}}(c,n.totalDays,o,d),q=function(a,b){let c=[];for(let d of b.equipmentMapping){let b=a.entries.filter(a=>d.pattern.test(`${a.name} ${a.description}`)&&(!d.unit||a.unit===d.unit));if(0===b.length)continue;let e=b.reduce((a,b)=>a+b.quantity,0),f=Math.max(1,Math.min(4,Math.ceil(Math.log10(Math.max(10,e))-1))),g=Math.max(f,Math.min(8,f+2));c.push({name:d.name,spec:d.spec,min:f,max:g,basis:`${d.basis};相关条目工程量合计约 ${Math.round(e)}${b[0]?.unit||""}`})}return c}(c,d),r=function(a){let b=new Map;for(let c of a.entries){if(!c.name||c.quantity<=0)continue;let a=function(a){let b=[];for(let c of $){let d=c.exec(a);d&&d[0]&&(b.some(a=>a.includes(d[0])||d[0].includes(a))||b.push(d[0]))}return b.join(" ")}(`${c.name} ${c.description}`),d=a?`${c.name}||${a}`:c.name,e=b.get(d);e?e.quantity+=c.quantity:b.set(d,{name:c.name,quantity:c.quantity,unit:c.unit,spec:a||void 0})}return[...b.values()].sort((a,b)=>b.quantity-a.quantity).map(a=>({name:a.name,quantity:Math.round(1e3*a.quantity)/1e3,unit:a.unit,spec:a.spec,batchDesc:"按施工段分批进场",basis:"清单汇总 + 进度匹配"}))}(c),s=function(a,b){let c=[];for(let d of b.inspectionBatchRules){let b=a.entries.filter(a=>d.namePattern.test(a.name)&&(!d.unit||a.unit===d.unit)).reduce((a,b)=>a+b.quantity,0);if(b<=0)continue;let e=d.divisor>0?Math.max(1,Math.ceil(b/d.divisor)):0,f=d.descTemplate.replace("{count}",String(e)).replace("{total}",String(Math.round(1e3*b)/1e3));c.push({scope:d.scope,planDesc:f})}return c}(c,d),t=function(a){let b=a.entries.filter(a=>/挖一般土方|挖沟槽土方|挖基坑土方|清淤/u.test(a.name)&&"m3"===a.unit).reduce((a,b)=>a+b.quantity,0),c=a.entries.filter(a=>/回填|路肩土|种植土/u.test(a.name)&&"m3"===a.unit).reduce((a,b)=>a+b.quantity,0),d=Math.max(0,Math.round((b-c)*1e3)/1e3);return{excavation:Math.round(1e3*b)/1e3,backfill:Math.round(1e3*c)/1e3,disposal:d,basis:"清单挖/填/弃量汇总(挖方含清淤),补疑口径:购土回填运距自行考虑"}}(c),u=function(a,b,c){let{machinePowerTable:d,powerFallbackText:e,waterNoteText:f}=c,g=a.filter(a=>!_.has(a.name)).reduce((a,b)=>a+(d.find(a=>a.name===b.name)?.kw||0)*(b.min||1),0),h=g>0?`按电动机具负荷计算,用电负荷约 ${Math.round(.7*g)} kW(电动机具总功率约 ${Math.round(g)} kW,同时系数 0.7),${e}`:e,i=Math.round(60*b.peakValue/1e3*10)/10;return{powerLoad:h,waterUsage:`生活用水按高峰人数 ${b.peakValue} 人、每人每日 60L 计算,高峰日生活用水量约 ${i} m\xb3;${f}`}}(q,p,d),w=(a.evidence||[]).map(a=>String(a.content||"")).join("\n"),x=function(a,b){let c=a.villages.map(a=>a.villageGroup).map(a=>({name:a,basis:`清单按${b.groupLabel}(工程名称)`})),d=c.length>1&&b.multiVillageFlow?.(c.length)||b.deploymentFlowFallback,e=[...new Set(a.entries.map(a=>a.section).filter(Boolean))];return{sections:c,sequence:e.length>0?e.join(" → "):b.sequenceFallback,sequenceBasis:"清单分部分项编排顺序归纳",flow:d}}(c,d),y=function(a,b){let c=[];for(let d of b.difficultyTemplates)d.test(a)&&c.push({name:"function"==typeof d.name?d.name(a):d.name,measure:d.measure,basis:d.basis});return 0===c.length&&c.push({name:"多工序交叉施工组织",measure:"按清单分部分项编排顺序组织流水作业,加强工序衔接检查",basis:"清单分部分项结构"}),c}(c,d),z=function(a){let b=v({facts:a.facts||[],evidence:a.evidence||[]}),c=[];a.contract&&a.contract.totalDays>0&&c.push({id:"contract_days",label:"总工期",values:[`${a.contract.totalDays} 日历天`]}),a.labor&&a.labor.peakValue>0&&c.push({id:"labor_peak",label:"劳动力峰值",values:[`${a.labor.peakValue} 人`]});let d=a.villageCount||0;if(d>0&&c.push({id:"village_count",label:"自然村数量",values:[`${d} 个自然村`]}),a.boq){let b=function(a){let b=new Map;for(let c of a.entries){if(!c.name||c.quantity<=0||/暂列|金额|计日工|税|费/u.test(c.name)||!c.section)continue;let a=b.get(c.section)||[];a.push(c),b.set(c.section,a)}return[...b.entries()].sort((a,b)=>b[1].length-a[1].length).slice(0,3).map(([a,b])=>{let c=[...b].sort((a,b)=>b.quantity-a.quantity||(a.name<b.name?-1:1))[0];return`${c.name} ${c.quantity}${c.unit}(${a})`})}(a.boq);b.length>0&&c.push({id:"core_quantities",label:"核心工程量",values:b})}return{entries:[...b,...c]}}({facts:a.facts,evidence:a.evidence,contract:n,labor:p,boq:c,villageCount:j}),C=[...new Set(c.entries.map(a=>a.section).filter(Boolean))],D=function(a){if(!a)return"";let b=/建设地点[:: \t|]*([^。;;\n|]{2,40}?)(?=[,,。;;\n|]|工期|质量标准|合同估算)/u.exec(a);return b?b[1].trim().replace(/[,,、\s]+$/gu,""):""}(a.basicFacts||""),E=D?function(a){for(let b of i)if(b.pattern.test(a))return{...b.climate};return{rainySeason:"",highTemp:"",winter:""}}(D):(b=d.climateZone)&&i.find(a=>a.zone===b)?.climate||{rainySeason:"",highTemp:"",winter:""},F=[];o.some(a=>a.basis.includes("均分降级"))&&F.push("里程碑分组未命中策略特征(非 prep 权重占比 < 5%),已按总工期均分降级,详见 data.milestones.basis");let G=new Set(o.map(a=>a.key)),H=d.milestoneGroups.slice(1).filter(a=>!G.has(a.key));if(H.length>0&&F.push(`策略阶段未命中清单,本阶段不产出:${H.map(a=>a.label).join("、")}(本项目清单中无对应分部条目;若确有该分部工作,请检查清单解析完整性或策略分部特征是否覆盖)`),p.peakValue<=0)F.push("劳动力数据未产出(清单中无可用工效推导条目):正文不引用劳动力数值,不得自行估计");else{let a=o[o.length-1];a&&!p.byPhase.some(b=>b.phase===a.label)&&F.push(`分阶段劳动力缺「${a.label}」行:该阶段条目无可用工效系数(分组/计量单位未匹配到工效,策略组未配置该类工效;不编造人数)`)}return E.rainySeason||F.push("气候区域未识别,季节施工由写作层按建设地点常识处理"),{data:{strategyId:d.id,project:{name:a.projectName||"(待提取:项目名称)",scope:c.villages.length>0?`${c.villages.length} 个${d.groupLabel}(${c.villages.map(a=>a.villageGroup).join("、")})`:"",works:C,location:D},contract:{totalDays:n.totalDays,qualityStandard:n.qualityStandard,pricingFile:n.pricingFile,estimatedAmount:n.estimatedAmount||void 0},climate:E,milestones:o,resources:{labor:p,equipment:q},materialsPlan:r,fundPlan:{wageRule:"工资性工程款按工程所在地造价管理规定执行",usagePlan:"按进度分阶段使用"},testPlan:[],testInstruments:(d.instrumentTable||g).map(a=>({name:a.name,spec:a.spec,quantity:a.quantity,purpose:a.purpose,basis:"检定合格后投入使用"})),tempLand:(d.siteFacilityTable||h).map(a=>({purpose:a.name,area:a.area||(a.areaPerCapita?Math.max(10,Math.round(p.peakValue*a.areaPerCapita)):void 0),location:a.locationHint,duration:a.durationHint,note:a.note,basis:"施工总平面布置规划"})),schedule:function(a){let b=[],c=1;for(let[d,e]of a.entries()){let a=Math.max(1,e.duration||1),f=c,g=c+a-1;b.push({seq:d+1,label:e.label,duration:a,startDay:f,endDay:g,critical:"prep"!==e.key,basis:"prep"===e.key?"前导工作,与主体施工穿插进行":"按里程碑顺序衔接"}),c=g+1}return b}(o),earthworkBalance:t,tempUtilities:u,redLineFacts:f,amountRule:"商务禁区延续:金额类数据禁入正文(合同估算价例外),fund_plan/red_line_facts 渲染时遵守",decisionLock:z,quantities:e,specAuthorities:k,inspectionBatches:s,constructionDeployment:x,keyDifficulties:y,basisRegulations:function(a){if(!a)return[];let b=[],c=new Set;for(let d of a.matchAll(/《([^《》]{2,40}(?:法|条例|办法|规程|规范|标准))》(?:[((][^))]{0,24}?(?:国令|令|主席令|〔\d{4}〕)[^))]{0,24}?[))])?/gu)){let a=d[1].replace(/[\s#]/gu,"").trim();if(/通知|意见|公示|公告/u.test(a)||a.length<4||a.length>20)continue;let e=(d[0].match(/[((]([^))]{0,24}?(?:国令|令|主席令|〔\d{4}〕)[^))]{0,24}?)[))]/u)||[])[1],f=e?`《${a}》(${e.trim()})`:`《${a}》`;if(!c.has(f)&&(c.add(f),b.push(f),b.length>=14))break}return b}(`${a.basicFacts||""}
|
|
176
|
+
${w}`),drawingNote:"总平面布置图/横道图/组织机构图为后期人工配图,蓝图只规划对应章节正文内容"},diagnostics:{warnings:F}}}({boq:j,basicFacts:a.basicFacts,evidence:a.evidence,facts:a.facts,projectName:d.projectCode||"",strategy:q});if(c.warnings.push(...r.diagnostics.warnings),a.composition&&a.composition.appendixPlan.length>0){let b=[];for(let c of a.composition.appendixPlan)"table"===c.kind&&("blueprint.equipment"===c.dataSource&&0===(r.data.resources?.equipment?.length||0)?b.push(`${c.title}(机械设备数据为空)`):"blueprint.labor"===c.dataSource&&0===(r.data.resources?.labor?.composition?.length||0)?b.push(`${c.title}(劳动力构成数据为空)`):"blueprint.testInstruments"===c.dataSource?b.push(`${c.title}(绑定资料未提供试验检测仪器数据)`):"blueprint.tempLand"===c.dataSource&&b.push(`${c.title}(绑定资料未提供临时用地数据)`));b.length>0&&c.warnings.push(`文末附表数据源缺口 ${b.length} 项:${b.join("、")}(终稿按招标表头骨架渲染并显性标注,由编制人补齐)`)}c.stage="阶段 B/C";let s=function(a){let{chapterTitles:b,boq:c}=a;return{chapters:b.map((b,d)=>{var e;let f=String(d+1),g=/主要分部分项|施工方案|施工方法/u.test(b)?function(a,b){let c=new Map;for(let b of a.entries){if(!b.section)continue;let a=c.get(b.section)||[];a.push(b),c.set(b.section,a)}let d=[],e=0;for(let[a,f]of c){let c=af(a,f),g=f.some(a=>"unit-project"===a.sectionKind),h=[];if(g){let a=new Map;for(let b of f){let d=b.subsection||c,e=a.get(d)||[];e.push(b),a.set(d,e)}for(let[b,c]of a)h.push(ag(af(b,c),c))}else h.push(ag(c,f));e+=1,d.push({id:`${b}.${e}`,title:c,targetWords:ae.gF,requiredParams:h.flatMap(a=>Object.keys(a.quantities).slice(0,5).map(a=>({path:`data.quantities.${a}`,mode:"must_cite",strict:!0}))),tablePlans:[],workPackages:h})}return d}(c,f):[];return{id:f,title:b,isActive:(e=a.docType,!(/专项施工方案|专项方案|危大/u.test(e)&&/总平面|平面布置|施工部署|总体部署/u.test(b))),requiredParams:[],subSections:g}})}}({chapterTitles:a.chapterTitles,boq:j,docType:d.docType});c.stage="阶段 D";let t={meta:d,data:{...r.data,composition:a.composition},outline:s,validation:{passed:!1,checks:[]},diagnostics:c};return t.validation=function(a,b){let c=[],d=!b||0===b.entries.length;c.push({name:"0. 清单源可用性",passed:!d,message:d?"工程量清单缺失或未解析出任何条目:工程量/规格/资源计划类权威值全部无法推导,蓝图不可用。请确认资料包内含工程量清单且已成功解析入库后重试。":`清单可用:${b.entries.length} 条目、${b.villages.length} 个单位工程`});let e=(0,ak.Jx)(a,Z);c.push({name:"1. Schema 校验",passed:0===e.length,message:0===e.length?"结构/类型/必填/边界全部通过":e.join(";")});let f=function(a,b){let c=[];if(b){let d=U(b);for(let[b,e]of Object.entries(a.data.quantities)){let a=d[b];if(!a){c.push(`quantities.${b} 不在清单解析产物值集中(疑似编造)`);continue}a.value!==e.value&&c.push(`quantities.${b} 数值 ${e.value} 与清单聚合值 ${a.value} 不一致`)}}for(let b of a.data.redLineFacts)b.value&&b.source||c.push(`红线事实「${b.key}」缺值或缺来源`);if(b){let d=al[a.data.strategyId];if(d)for(let e of a.data.resources?.equipment||[]){let a=d.equipmentMapping.find(a=>a.name===e.name);if(!a)continue;let f=b.entries.filter(b=>a.pattern.test(`${b.name} ${b.description}`)&&b.unit===a.unit).reduce((a,b)=>a+b.quantity,0),g=/合计约\s*([\d.]+)/u.exec(e.basis);g&&Number(g[1])!==Math.round(f)&&c.push(`机械「${e.name}」basis 工程量 ${g[1]} 与清单同单位聚合 ${Math.round(f)} 不一致`)}else c.push(`蓝图推导策略 id「${a.data.strategyId}」不在策略组登记表(设备单位一致性校验无法执行)`)}return c}(a,b);c.push({name:"2. 事实锚定校验",passed:0===f.length,message:0===f.length?"L1a 值全部 ∈ 清单解析产物值集,红线事实逐条有源":f.join(";")});let g=function(a,b){let c=[],d=a.outline.chapters.flatMap(a=>a.subSections).flatMap(a=>a.workPackages);if(b){let a=new Set;for(let b of d)for(let c of b.coveredSeqs)a.add(c);let e=b.entries.filter(b=>b.section&&!a.has(b.seq));e.length>0&&c.push(`清单条目零丢失校验失败:${e.length} 条未被工作包覆盖(如序号 ${e.slice(0,5).map(a=>a.seq).join("、")})`)}return 0===a.data.keyDifficulties.length&&c.push("重难点及保证措施未逐项列明"),c}(a,b);c.push({name:"3. 覆盖校验",passed:0===g.length,message:0===g.length?"清单条目零丢失、重难点逐项列明":g.join(";")});let h=function(a){let b=[],c=a.data.contract?.totalDays||0,d=(a.data.milestones||[]).reduce((a,b)=>a+(b.duration||0),0);c>0&&d>c&&b.push(`里程碑总和 ${d} 天超过总工期 ${c} 天`);let{labor:e}=a.data.resources||{};if(e)for(let a of(e.peak&&e.peak.min>e.peak.max&&b.push(`劳动力峰值区间异常(min ${e.peak.min} > max ${e.peak.max})`),e.peakValue>0&&e.peak&&(e.peakValue<e.peak.min||e.peakValue>e.peak.max)&&b.push(`劳动力峰值唯一口径 ${e.peakValue} 人超出推导区间 ${e.peak.min}~${e.peak.max} 人`),e.byTrade||[]))(a.min||0)>(a.max||0)&&b.push(`工种「${a.trade}」人数区间异常`);let f=new Set((a.data.decisionLock?.entries??[]).map(a=>a.id));for(let c of(a.data.contract?.totalDays>0&&!f.has("contract_days")&&b.push(`决策锁缺失数据条目 contract_days(总工期 ${a.data.contract.totalDays} 日历天未入锁)`),e&&e.peakValue>0&&!f.has("labor_peak")&&b.push(`决策锁缺失数据条目 labor_peak(劳动力峰值 ${e.peakValue} 人未入锁)`),a.data.redLineFacts?.some(a=>"自然村数量"===a.key)&&!f.has("village_count")&&b.push("决策锁缺失数据条目 village_count(自然村数量红线事实未入锁)"),a.data.resources?.equipment||[]))(c.min||0)>(c.max||0)&&b.push(`机械「${c.name}」台数区间异常`);return b}(a);c.push({name:"4. 内部一致性校验",passed:0===h.length,message:0===h.length?"里程碑/劳动力/机械区间自洽":h.join(";")}),c.push({name:"5. 标书编制规格承接",passed:!0,message:function(a){let b=a.data.composition;if(!b)return"未承接标书编制规格(生成输入未提供阶段 1 判定,正文口径与文末附表按常规处理)";let c="blind"===b.bidType?"暗标":"open"===b.bidType?"明标":"未识别勾选标记(按常规口径)",d=b.appendixPlan.filter(a=>"table"===a.kind).length,e=b.appendixPlan.filter(a=>"figure"===a.kind).length;return[`标书类型:${c}`,`正文口径:${["forbidden"===b.bodyTablePolicy?"禁表格(显式禁表句)":"表格允许","forbidden"===b.bodyFigurePolicy?"禁图片":"图片允许"].join("/")}`,b.appendixPlan.length>0?`文末附表 ${b.appendixPlan.length} 项(表类 ${d}/图类 ${e})`:""].filter(Boolean).join(";")}(a)});let i=function(a){let b=!a.consistencyErrors.some(a=>/里程碑|总工期/u.test(a)),c=!a.consistencyErrors.some(a=>/劳动力|工种/u.test(a)),d=!a.consistencyErrors.some(a=>/机械/u.test(a)),e=!1!==a.boqAvailable;return{laborPeak:e&&a.schemaPassed&&a.factPassed&&c,schedule:e&&a.schemaPassed&&a.factPassed&&b,blueprint:e&&a.schemaPassed&&a.factPassed&&a.coveragePassed&&d}}({schemaPassed:0===e.length,factPassed:0===f.length,coveragePassed:0===g.length,consistencyErrors:h,boqAvailable:!d});return{passed:c.every(a=>a.passed),checks:c,authorityAvailability:i}}(t,f),t.validation.passed||c.warnings.push(`蓝图校验未通过:${t.validation.checks.filter(a=>!a.passed).map(a=>a.name).join("、")}(一期旁路仅报告,不阻断生成)`),c.durationMs=Date.now()-b,t}function aK(a,b){let c=e.join((0,f.Gl)(a),"assets","blueprint.json");return d.writeFileSync(c,JSON.stringify(b,null,2),"utf8"),c}},79227:(a,b,c)=>{c.d(b,{C:()=>f,previewGenerationBudgetForTemplate:()=>g});var d=c(46482),e=c(95734);function f(a){let b=Math.max(1,a.chapters.length),c=a.targetWords>0?Math.round(a.targetWords/b):1200,d=a.strategy,f=[],g=a.materialFileCount<4&&a.evidenceCount<6,h=Math.max(1,Math.min(b,(Number.isFinite(a.configuredChapterConcurrency)&&a.configuredChapterConcurrency>0?Math.floor(a.configuredChapterConcurrency):void 0)??b)),i=(0,e.Qf)(a.targetWords),j="fast"===d.mode?1:Math.max(1,b),{floorChars:k,ceilingChars:l}=c>=6e3?{floorChars:14e3,ceilingChars:4e4}:c>=3e3?{floorChars:11e3,ceilingChars:28e3}:{floorChars:8e3,ceilingChars:18e3},m=d.repairRoundBudget?d.repairRoundBudget:Math.max(2,Math.min(4,2+ +(a.targetWords>=2e4)+ +!!g)),n=Math.min(m*b,Math.max(12,2*b));return"strict"===d.mode&&f.push("strict:风险领域关键词命中(专项/安全/质量/验收/合同/合规等)"),a.targetWords>=4e4&&f.push("strict:目标篇幅超长(≥4 万字)"),g&&f.push("strict:资料稀疏(资料包文件 <4 且可用证据 <6 条)"),"fast"===d.mode&&f.push("fast:小文档(≤6000 字且 ≤4 章)全局审查降级为 35% 抽检"),"longform"===d.mode&&f.push("longform:长文档(≥3 万字或 ≥8 章)"),"balanced"===d.mode&&f.push("balanced:常规篇幅文档,标准审查深度"),f.push(`全章节并行生成(${h}/${b} 章同批),审查流水线 ${j} 路,全局 LLM 并发不设上限,每章证据预算 ${Math.round(k/1e3)}k-${Math.round(l/1e3)}k 字符,修复轮次预算每章 ${m} 轮(文档级总池 ${n} 轮,收敛判定优先)`),{strategy:d,chapterConcurrency:h,reviewConcurrency:j,llmConcurrency:i,evidenceFloorChars:k,evidenceCeilingChars:l,repairRoundBudget:m,repairPoolBudget:n,triggers:f}}function g(a){let b=Math.max(1,a.chapters.length),c=Math.max(0,Math.round(a.targetWords??0)),e=(0,d.JP)({template:a.template,targetWords:c,requirement:a.requirement,materialFileCount:a.materialFileCount,evidenceCount:a.evidenceCount}),g=f({template:a.template,chapters:a.chapters,targetWords:c,requirement:a.requirement,materialFileCount:a.materialFileCount,evidenceCount:a.evidenceCount,hasVeryLargeExplicitChapter:a.hasVeryLargeExplicitChapter??!1,configuredChapterConcurrency:a.configuredChapterConcurrency??0,strategy:e});return{mode:e.mode,enableGlobalReview:e.enableGlobalReview,globalReviewSamplingRate:e.globalReviewSamplingRate??1,repairRoundBudget:g.repairRoundBudget,chapterConcurrency:g.chapterConcurrency,reviewConcurrency:g.reviewConcurrency,evidenceFloorChars:g.evidenceFloorChars,evidenceCeilingChars:g.evidenceCeilingChars,targetWords:c,chapterCount:b,triggers:g.triggers}}},82437:(a,b,c)=>{c.d(b,{gu:()=>u,iC:()=>t,j4:()=>m,wc:()=>v});var d=c(10025),e=c(95294);function f(a){let b=String(a||"");return/补遗|补疑|答疑|澄清|question/i.test(b)?96:/招标|投标须知|招标公告/.test(b)?90:/清单|bill|boq|xls/i.test(b)?80:/图纸|dwg|施工图|设计说明/i.test(b)?75:/企业|公司|管理手册/.test(b)?60:70}function g(a){let b=[...String(a||"").matchAll(/(20\d{2})[.\-年](\d{1,2})[.\-月](\d{1,2})/g)].map(a=>1e4*Number(a[1])+100*Number(a[2])+Number(a[3]));if(b.length>0)return Math.max(...b);let c=/(\d{1,2})\s*(?:招标)?(?:答疑|澄清|补遗|补疑)(?:文件|公告|书)?/u.exec(a)?.[1];return c?1e3+Number(c):0}let h=/^(?:子项名称|图名|图号|比例|制图|审核|版次)\s*[::]/u,i=/^(?:子项名称图名|图名图号|设计单位名称|制图人|审核人|比例尺)$/u,j=/^(?:【[^】]{0,16}】|—+|待定|暂无?|未提供|详见|如上|同前)$/u,k=/^(?:见|详见|参见|按|依据)\s*(?:招标文件|招标公告|投标须知|图纸|设计|清单|规范|合同)/u,l=/^(?:分部小计|本页小计|小计|合计|总计|综合单价|措施项目费|规费|税金|按实|暂估|暂列金额)$/u;function m(a,b={}){let c=String(a||"").trim();return c?c.length>260?"超长(疑为段落而非值)":(c.match(/([\u4e00-\u9fa5])\1/gu)||[]).length>=2?"OCR 复写噪声":!b.allowProse&&c.length>40&&/[。;!?]$/u.test(c)?"段落而非值":h.test(c)&&c.length<=14||i.test(c)?"图签/图名串格":j.test(c)?"占位/未提供值":k.test(c)?"指向值(非值本身)":l.test(c)?"清单内部口径词":(c.match(/[\u4e00-\u9fa5]{2,8}\s*[::]/gu)||[]).length>=3?"表格串格(多字段粘连)":!1!==b.includePoolNoise&&(0,e.MO)(c)?"池噪声(图签/坐标/残片/粘连)":c.length>=12&&/(?:以及|和|与|或|的|了|在|为|按|由|及)$/u.test(c)?"截断值":void 0:"空值"}function n(a){let b=String(a||"").trim(),c=/^(?<main>[^((]{1,40})[((](?<inner>[\s\S]{12,})[))]\s*$/u.exec(b);if(!c?.groups)return{value:b};let d=c.groups.inner;return/;|;|余同|标注:|图纸标注|以下同/u.test(d)||d.length>30?{value:c.groups.main.trim(),note:d.slice(0,80)}:{value:b}}let o=RegExp(`${d.yJ}\\s*[::]?`,"u"),p=new Map;function q(a){let b=String(a||"").trim();if(!b)return{value:"",shape:"text"};let c=o.exec(b),d=c?b.slice(c.index+c[0].length):b,e=[{shape:"date",re:/\d{4}\s*年\s*\d{1,2}\s*月\s*\d{1,2}\s*日/u},{shape:"money",re:/\d+(?:\.\d+)?\s*(?:万元|亿元|元)/u},{shape:"standard",re:/(?:GB|JGJ|CJJ|DB|CECS|ISO|IEC)\s*\/?\s*T?\s*[\d.]+/iu},{shape:"spec",re:/(?: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},{shape:"measure",re:/\d+(?:\.\d+)?\s*(?:m2|m3|m²|m³|㎡|m|km|kg|t|吨|个|座|套|台|根|块|樘|扇|片|组|件|孔|盏|项|处|层|日历天|天|%)/u}].filter(a=>a.re.test(d));if(0===e.length)return{value:b.slice(0,80),shape:"text"};let f=e[0];return{value:function(a,b){let c=String(a||"").trim(),d={date:/\d{4}\s*年\s*\d{1,2}\s*月\s*\d{1,2}\s*日/gu,money:/\d+(?:\.\d+)?\s*(?:万元|亿元|元)/gu,standard:/(?:GB|JGJ|CJJ|DB|CECS|ISO|IEC)\s*\/?\s*T?\s*[\d.]+(?:-\d{2,4})?/giu,spec:/(?: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))/gu,measure:/\d+(?:\.\d+)?\s*(?:m2|m3|m²|m³|㎡|m|km|kg|t|吨|个|座|套|台|根|块|樘|扇|片|组|件|孔|盏|项|处|层|日历天|天|%)/gu};if("text"===b)return c.slice(0,80);let e=(d[b]||d.measure).source,f=[...c.matchAll(function(a){let b=p.get(a);if(b)return b.lastIndex=0,b;let c=RegExp(a,"gu");return p.set(a,c),c}(e))].map(a=>a[0].trim());if(0===f.length)return c.slice(0,80);let g=o.exec(c);if(g){let a=c.slice(g.index+g[0].length),b=RegExp(e,"u").exec(a);if(b)return b[0].trim()}return f[f.length-1]}(b,f.shape),shape:f.shape}}function r(a){let b=String(a||"").trim(),c=/[\u4e00-\u9fa5]([A-Za-z][A-Za-z0-9]{5,})/u.exec(b),d=c?b.slice(0,(c.index??0)+1):b;return d=d.replace(/([\u4e00-\u9fa5])\d{3,}$/u,"$1"),/省|市|区|县|路|街|交口|镇|乡/u.test(d)&&(d=d.replace(/([\u4e00-\u9fa5])[\d\s]{3,}(?=[\u4e00-\u9fa5]|$)/gu,"$1")),d}function s(a,b){let c=String(b||"").trim(),d=String(a||"").trim(),e=(c&&c===d?c:`${c}${d}`).replace(/\s+/gu,"");return e?/开工日期|开工时间|startDate/i.test(e)?"开工日期":/竣工日期|完工日期|endDate/i.test(e)?"竣工日期":/质量标准|质量目标|quality/i.test(e)?"质量标准":/建设规模|建筑面积|规模|scale/i.test(e)?"建设规模":/建设地点|工程地点|location/i.test(e)?"建设地点":/招标人|建设单位|owner/i.test(e)?"招标人":/估算|限价|控制价|投资|金额|amount/i.test(e)?"合同金额":/项目名称|工程名称|projectName/i.test(e)?"项目名称":/项目编号|工程编号|projectCode/i.test(e)?"项目编号":/工期|日历天|duration|schedule/i.test(e)&&!/节点|阶段|考核|开工|竣工/i.test(e)?"计划工期":e.slice(0,40):""}function t(a){let b=a.overrides||[],c=[],e=new Map;for(let b of(a.facts.forEach((b,d)=>{let h=String(b.value??"").trim();if(!h)return;let i=s(String(b.key||""),b.label);if(!i)return;let j=String(b.sourceFile||b.source||""),k=n(h),l=String(b.sourceFile||b.source||""),o=a.subjectOf?a.subjectOf({key:b.key,label:b.label,sourceFile:l}):"",p=/澄清|变更|补疑|补遗|修改为|调整为|更正/u.test(k.value)&&!/^(?:见|详见|参见)/u.test(k.value),t=(a,b)=>{let c=e.get(a)||[];c.push({subject:o,attribute:a,value:b,source:l,priority:f(l),order:1e3*g(l)+d,clarified:p}),e.set(a,c)},u=function(a,b,c){let d=String(c||""),e=[],f=s(a,b),g=d.split(/[::]/u),h=/(?:变更|澄清|修改|调整|更正|修正|如下|其中|例如|即|注|说明)$|为$/u;for(let a=0;a+1<g.length;a+=1){let b=/([\u4e00-\u9fa5]{2,10})$/u.exec(g[a]||"")?.[1];if(!b||h.test(b))continue;let c=(g[a+1]||"").trim().slice(0,40);if(!/\d/u.test(c))continue;let d=s(b,b);d&&d!==f&&e.push({attribute:d,value:c})}return e}(String(b.key||""),b.label,k.value);for(let a of u){let b=q(n(a.value).value).value;m(b)||t(a.attribute,b)}let v=m(k.value);if(v)return void c.push({attribute:i,value:k.value.slice(0,60),source:j,reason:v});let w=r(q(k.value).value);if(!u.some(a=>a.value.includes(w)||w.includes(a.value.replace(/[((].*$/u,"").trim()))){if(m(w)){let a=r(k.value).slice(0,80);if(!/省|市|区|县|路|街|交口/u.test(a)||m(a))return;t(i,a);return}t(i,w)}}),a.labeledValues||[])){let a=s(b.attribute,b.attribute);if(!a)continue;let c=n(b.value);if(m(c.value,{allowProse:!0,includePoolNoise:!1}))continue;let d=e.get(a)||[];d.push({subject:"",attribute:a,value:q(c.value).value,source:b.source,priority:b.supersedesPriorMaterials?99:f(b.source),order:1e3*g(b.source)+500,clarified:!0}),e.set(a,d)}let h=[];for(let[a,c]of e){let e=function(a,b){if(0===a.length)return;let c=new Set;for(let d of b)"override"===d.kind&&a.some(a=>a.value.includes(d.superseded))&&c.add(d.superseded);let e=a.filter(a=>![...c].some(b=>a.value.includes(b)));if(0===e.length&&(e=[...a]),1===e.length)return{winner:e[0],rule:"R1",superseded:[...c]};let h=/(?:路|街|道|巷|号|交口|北侧|南侧|东侧|西侧|经开区|开发区|镇|村)/u,i=e.filter(a=>h.test(a.value)&&/省|市|区|县/u.test(a.value));if(i.length>0&&i.length<e.length&&(e=i),1===e.length)return{winner:e[0],rule:"R1.5",superseded:[...c]};let j=Math.max(...e.map(a=>a.priority)),k=e.filter(a=>a.priority===j);if(1===k.length)return{winner:k[0],rule:"R2",superseded:[...c]};let l=k.filter(a=>a.clarified);if(l.length>0&&l.length<k.length&&(k=l),1===k.length)return{winner:k[0],rule:"R2.5",superseded:[...c]};let m=Math.max(...k.map(a=>g(a.source)));if(m>0){let a=k.filter(a=>g(a.source)===m);if(1===a.length)return{winner:a[0],rule:"R3",superseded:[...c]};k=a}let n=a=>{let b=/(\d{1,2}(?:\.\d{1,2}){1,3})/u.exec(a.source+a.value);return b?Number(b[1].split(".").reduce((a,b)=>a+Number(b),0)):0};if(1===new Set(k.map(a=>a.source)).size){let a=Math.max(...k.map(n));if(a>0){let b=k.filter(b=>n(b)===a);if(1===b.length)return{winner:b[0],rule:"R4",superseded:[...c]};k=b}}let o=/(?:省|市|区|县|镇|路|街|道|巷|号|交口|北侧|南侧|东侧|西侧|经开区|开发区)/u,p=k.filter(a=>o.test(a.value));if(p.length>=1&&p.length<k.length)return{winner:p.reduce((a,b)=>b.value.length>a.value.length?b:a,p[0]),rule:"R5",superseded:[...c]};let q=(0,d.dm)(k[0].value);if("measure"===q||"spec"===q){let a=k.filter(a=>80>=f(a.source));if(1===a.length)return{winner:a[0],rule:"R5",superseded:[...c]};a.length>1&&(k=a)}if("money"===q){let a=k.filter(a=>f(a.source)>=90);if(1===a.length)return{winner:a[0],rule:"R5",superseded:[...c]};a.length>1&&(k=a)}let r=new Map;for(let a of k)r.set(a.value,(r.get(a.value)||0)+1);let s=Math.max(...r.values()),t=k.filter(a=>r.get(a.value)===s);if(1===t.length)return{winner:t[0],rule:"R6",superseded:[...c]};if(k=t,"standard"===q)return{winner:k[0],rule:"R7",superseded:[...c]};if("measure"===q||"spec"===q||"money"===q)return{winner:k.reduce((a,b)=>b.order>a.order?b:a,k[0]),rule:"R7",superseded:[...c]};let u=k.filter(a=>/\d/u.test(a.value));return{winner:(u.length>0?u:k)[0],rule:"R7",superseded:[...c]}}(c,b);if(!e)continue;let i=["measure","money","date","standard"].includes((0,d.dm)(e.winner.value))?c.map(a=>a.value).filter(a=>a!==e.winner.value):[];h.push({subject:e.winner.subject,attribute:a,value:e.winner.value,rule:e.rule,evidence:[{source:e.winner.source,snippet:e.winner.value.slice(0,120)}],superseded:[...new Set([...e.superseded.filter(a=>a!==e.winner.value),...i])],candidates:c})}return h.sort((a,b)=>a.attribute.localeCompare(b.attribute,"zh-Hans-CN")),{resolved:h,noiseRejected:c}}function u(a){let b=a.resolved.filter(a=>a.superseded.length>0);return 0===b.length?"":["【现行口径(真值层裁决,硬约束)】下列属性已按资料优先级与变更链裁决出**唯一现行值**;全文(正文、表格、信息表、进度计划、节点)必须一致使用,被取代值仅在引用变更过程时可出现(如「招标文件原为 X,经答疑澄清变更为 Y」),不得单独陈述现状:",...b.map(a=>`- ${a.attribute}:现行为「${a.value}」;被取代(不得作为现行口径):${a.superseded.join("、")}`)].join("\n")}function v(a){return a.resolved.map(a=>{let b=`${a.attribute} = ${a.value}(裁决 ${a.rule};依据 ${a.evidence[0]?.source||"—"})`;return a.superseded.length>0?`${b};被取代:${a.superseded.join("、")}`:b})}},85016:(a,b,c)=>{c.d(b,{D$:()=>g,NR:()=>l,WT:()=>k,fc:()=>m});var d=c(37047),e=c(22157);let f=[{anchor:"按工作包逐项说明施工内容",required:/工作包|逐项说明/u},{anchor:"本项目已确认资料",required:/已确认|确认资料|本项目资料/u},{anchor:"已确认的项目资料显示",required:/已确认|项目资料/u},{anchor:"根据已确认资料",required:/已确认/u},{anchor:"生成后事实反查未通过",required:/事实反查|反查/u},{anchor:"资料事实主表",required:/事实主表/u},{anchor:"事实卡",required:/事实卡/u},{anchor:"后台数据库记录",required:/后台数据库|后台记录/u},{anchor:"证据摘要中未包含",required:/证据摘要/u},{anchor:"本专业工程主要清单项落位如下",required:/清单项落位|落位如下/u},{anchor:"针对招标文件及补疑文件的技术要求进行专项落位",required:/专项落位/u},{anchor:"全文数据口径必须唯一",required:/数据口径|峰值口径|控制口径|口径必须唯一/u}],g=/工作包|事实卡|事实主表|后台数据库|落位|峰值口径|控制口径|数据口径/gu,h=/工作包|事实卡|事实主表|后台数据库|落位|峰值口径|控制口径|数据口径/u,i=/^\d+(?:\.\d+)*\s+\S+/u;function j(a,b){let c=Math.min(a.length,b.length),d=0;for(let e=0;e<c;e+=1)d+=a[e]*b[e];return d}async function k(a){let b=[],c=[...new Set(a.match(g)||[])];c.length>0&&b.push({level:"error",severity:"blocker",category:"format",owner:"system",repairability:"llm_repairable",message:`正式正文仍包含后台内部术语“${c.join("”“")}”,需要按上下文语义改写为正式术语`,suggestion:"请结合语境改写:“拆除工程工作包”→“拆除工程”,“按工作包逐项说明”→“按专业工程逐项说明”;禁止出现生成系统后台概念。",provenance:{detectorId:"internal-terminology-anchor",fingerprint:(0,e.c6)(a)}});let h=a.split(/\r?\n/u).map(a=>a.trim()).filter(a=>!/^#{1,6}\s/u.test(a)&&!/^\s*\|/u.test(a)&&!(i.test(a)&&a.length<=40&&!/[。!?!?;;,,::]/.test(a))).flatMap(a=>a.split(/(?<=[。!?!?;;])/u).map(a=>a.trim())).filter(a=>a.length>=8&&a.length<=80).slice(0,200);if(0===h.length)return b;let k=(0,d.VN)(),[l,m]=await Promise.all([k.embedDocuments(h),k.embedDocuments(f.map(a=>a.anchor))]),n=[];for(let a=0;a<h.length;a+=1){let b=l[a];if(!b||0===b.length)continue;let c=h[a];if(f.some(a=>a.required.test(c))&&(Math.max(...m.map(a=>j(b,a)))>=.62&&n.push(c.slice(0,24)),n.length>=6))break}return n.length>0&&b.push({level:"error",severity:"blocker",category:"format",owner:"system",repairability:"llm_repairable",message:`正式正文疑似包含后台内部话术(语义锚点命中 ${n.length} 处):${n.map(a=>`“${a}…”`).join("、")}`,suggestion:"将内部话术(已确认资料/事实卡/工作包等生成系统概念)改写为面向评标人的正式表述,仅陈述项目事实与施工内容。",provenance:{detectorId:"internal-terminology-anchor",fingerprint:(0,e.c6)(a)}}),b}async function l(a){let b=a.split(/\r?\n/u),c=a=>{let b=a.trim();return!!(/^#{1,6}\s/u.test(b)||/^\s*\|/u.test(b))||i.test(b)&&b.length<=40&&!/[。!?!?;;,,::]/.test(b)},e=[];b.forEach((a,b)=>{if(c(a))return;let d=a.split(/(?<=[。!?!?;;])/u).map(a=>a.trim()).filter(a=>h.test(a)||a.length>=8&&a.length<=80&&f.some(b=>b.required.test(a)));d.length>0&&e.push({index:b,sentences:d})});let g=e.flatMap(a=>a.sentences);if(0===g.length)return a;let k=g.filter(a=>h.test(a)),l=g.filter(a=>!h.test(a)).slice(0,200),m=new Set(k);if(l.length>0){let a=(0,d.VN)(),[b,c]=await Promise.all([a.embedDocuments(l),a.embedDocuments(f.map(a=>a.anchor))]);l.forEach((a,d)=>{let e=b[d];e&&0!==e.length&&Math.max(...c.map(a=>j(e,a)))>=.62&&m.add(a)})}return 0===m.size?a:b.map(a=>{if(c(a))return a;let b=a;for(let a of m)b.includes(a)&&(b=b.split(a).join(""));return b}).join("\n")}function m(a){let b=0;return{markdown:a.split(/\r?\n/u).map(a=>{if(!a.trim()||!h.test(a)&&!a.includes("全文统一口径"))return a;let c=a.replace(/(职责|责任|分工|任务|措施|要求|管理|控制|工作|专项|标准|管控|验收|培训|教育|巡检|检查)落位/gu,"$1落实").replace(/(作业面|平面|现场|位置|点位|布局|空间|场地|工序|区域|临时设施|堆场|通道|道路|设备|设施|材料|构件|管线|照明|灯具|站房|楼层|部位)落位/gu,"$1布置").replace(/落位/gu,"落实").replace(/(\d+\s*人)峰值口径/gu,"$1上限").replace(/峰值口径/gu,"上限").replace(/控制口径/gu,"控制基准").replace(/数据口径/gu,"统计口径").replace(/全文统一口径/gu,"全篇取值一致");return c===a?a:(b+=1,c)}).join("\n"),fixedCount:b}}},87635:(a,b,c)=>{c.d(b,{Xr:()=>r,h:()=>t,jO:()=>s,ml:()=>k,qq:()=>i,xs:()=>h});var d=c(1218),e=c(51190),f=c(22157),g=c(13145);let h=["项目名称 项目编号 招标人 项目概况与招标范围 建设地点 建设规模 计划工期 质量标准 合同估算价","计划工期 合同工期 总工期 日历天","合同估算价 合同估算价格 投资估算 最高投标限价 招标控制价","质量标准 质量目标 合格","建设地点 建设规模 招标范围"];function i(a){let b=(0,d.de)(a),c=0;return/项目名称|工程名称|招标项目名称|项目编号|招标项目编号|招标人|建设单位|发包人/u.test(b)&&(c+=4),/计划工期|合同工期|总工期|\d+(?:\.\d+)?\s*(?:日历天|天|个月|月|年)/u.test(b)&&(c+=6),/合同估算价|投资估算|最高投标限价|招标控制价|\d+(?:\.\d+)?\s*(?:万元|元)/u.test(b)&&(c+=5),/质量标准|质量目标|合格|优良/u.test(b)&&(c+=4),/建设地点|建设规模|招标范围|项目概况与招标范围/u.test(b)&&(c+=4),/工程量|清单|图纸|设计说明|施工范围|施工内容|材料|设备|工艺|验收|复试|检测/u.test(b)&&(c+=3),/保证金账户|开户行|开户名称|收款账户|汇款|转账账户|电子交易系统|公共资源交易|开标时间|开标地点|评标委员会|评标办法/u.test(b)&&(c-=4),c}function j(a){return a.filter(a=>/项目名称|工程名称|项目编号|招标项目编号|招标人|建设单位|发包人|建设地点|建设规模|招标范围|计划工期|合同工期|周期要求|质量标准|合同估算|投资估算|最高投标限价|招标控制价/u.test(`${a.key||""}${a.fieldName||""}${a.fieldId||""}`))}function k(a){return function(a){let b=/[))】」』”]+$/u.exec(a);if(!b)return a;let c=b[0],d=a.slice(0,a.length-c.length),e={")":"(",")":"(","】":"【","」":"「","』":"『","”":"“"},f=!1;for(let b of c){let c=e[b];if(!c||d.split(c).length-1>d.split(b).length-1)return a;f=!0}return f?d:a}((0,d.de)(a).replace(/PDF\s*第\s*\d+(?:\s*[-—至到~~]\s*\d+)?\s*页/giu,"相关资料").replace(/PDF\s*第(?![ \t]*[0-90-9])/giu,"").replace(/(\d)\s+(日)/gu,"$1$2").replace(/[。;;]$/u,"").trim())}let l=/(?:[\u4e00-\u9fa5]{2,6}(?:杯|奖)(?![励金惩罚项])|省优|市优|国优|优质工程|文明工地|标准化工地|确保[^。;;|,、,\n]{0,10}(?:杯|奖))/u;function m(a,b="",c=b){let g=function(a){let b=new Map;for(let c of a.split(/\r?\n/u)){if(!/^\|.*\|\s*$/u.test(c)||/^\|\s*:?-{3,}:?/u.test(c))continue;let a=c.trim().replace(/^\|/u,"").replace(/\|$/u,"").split("|").map(a=>a.replace(/\*\*/gu,"").trim());if(a.length<2)continue;let e="序号"===a[0]&&a.length>=3?a[1]:a[0],f="序号"===a[0]&&a.length>=3?a[2]:a[1],g="序号"===a[0]&&a.length>=4?a[3]:a[2],h=e.replace(/\/|:|:/gu,"").trim();if(!/项目名称|工程名称|项目编号|招标项目编号|招标人|项目业主|建设单位|发包人|建设地点|建设规模|施工范围|招标范围|计划工期|合同工期|质量标准|合同估算价|合同估算价格|投资估算|最高投标限价|招标控制价/u.test(h))continue;let i=/计划工期|合同工期/u.test(h)?"schedule_requirement":/质量标准/u.test(h)?"quality_standard":/合同估算价|合同估算价格|投资估算|最高投标限价|招标控制价/u.test(h)?"project_investment_estimate":/招标人|项目业主|建设单位|发包人/u.test(h)?"owner":/建设地点/u.test(h)?"project_location":/项目编号|招标项目编号/u.test(h)?"project_code":void 0;!(!f||/内容|参数|资料未明确|系统暂未从知识库确认|项目资料暂未明确/u.test(f))&&(0,d.R7)(i||"project_name",f)&&b.set(h,[k(f),k(g||"项目资料")||"项目资料"])}return b}(b),h=(0,e.mN)({facts:a,markdown:c}),i=a=>(0,d.De)(k((0,f.lG)(a||""))).replace(/\|/gu,"").replace(/\bCOL\d+\b/gu,"").replace(/\s{2,}/gu," ").trim(),j=(a,b)=>{let e=h.get(a);if(e){let b=i(e.value);if(b&&(0,d.R7)(a,b))return[b,e.source||"项目资料"]}let f=function(a,b){for(let[c,d]of a.entries())if(b.some(a=>a.test(c)))return d}(g,b);return f&&(0,d.R7)(a,f[0])?[f[0],f[1]||"项目资料"]:("project_name"===a?(()=>{let a=[/([\u4e00-\u9fa5A-Za-z0-9()()\-—_\s·]+?(?:施工总承包项目|一期项目|学生宿舍一期|学生宿舍项目))/u.exec(c)?.[1],/项目名称[::\s|]+([^|\n。;;]{6,80})/u.exec(c)?.[1]].map(i).filter(a=>a&&(0,d.R7)("project_name",a));return a[0]?[a[0],"项目资料"]:void 0})():void 0)||["",""]},n=[["项目名称",...j("project_name",[/项目名称|工程名称|project_name/u])],["项目编号",...j("project_code",[/项目编号|招标项目编号|project_code/u])],["招标人",...j("owner",[/招标人|项目业主|建设单位|发包人|owner/u])],["建设地点",...j("project_location",[/建设地点|project_location/u])],["建设规模",...j("project_scale",[/建设规模|project_scale/u])],["计划工期",...j("schedule_requirement",[/计划工期|合同工期|周期要求|schedule_requirement/u])],["质量标准",...j("quality_standard",[/质量标准|quality_standard/u])],["合同估算价",...j("project_investment_estimate",[/合同估算|投资估算|最高投标限价|招标控制价|project_investment_estimate/u])]],o=n.find(([a])=>"质量标准"===a);if(o&&o[1]&&!l.test(o[1])){let b=function(a,b){let c=a.filter(a=>/创优|优质优价|奖项|奖惩|award/u.test(`${a.fieldId||""}${a.key||""}${a.fieldName||""}`));if(c.some(a=>{let b=k((0,f.lG)(a.value||""));return!!b&&/^(?:无|否|不设|未设|无创优|无奖项|不作|不要求|不设创优)$/u.test(b.trim())}))return;let d=[];for(let a of c)d.push(k((0,f.lG)(a.value||"")));for(let a of(d.push(b),d)){let b=/(?:确保|争创|力争|确保获得)[^。;;|,、,\n]{0,12}(?:杯|奖|优质工程)/u.exec(a);if(!b)continue;let c=b[0].trim();if(c.length>=5&&c.length<=24)return c}}(a,c);b&&!o[1].includes(b)&&(o[1]=`${o[1]},${b}`)}return n.filter(([,a])=>!!a).map(([a,b,c])=>[a,b,c||"项目资料"])}function n(a,b="",c=b){return["**项目基本信息表**","","| 信息项 | 内容 |","|---|---|",...m(a,b,c).map(a=>`| ${a[0]} | ${a[1]} |`)].join("\n")}function o(a,b="",c=b){return["**项目基本信息**","",...m(a,b,c).map(a=>`- ${a[0]}:${a[1]}`)].join("\n")}let p=[/^项目名称$/u,/^工程名称$/u,/^项目编号$/u,/^招标项目编号$/u,/^招标人$/u,/^项目业主$/u,/^建设单位$/u,/^发包人$/u,/^建设地点$/u,/^实施地点$/u,/^建设规模$/u,/^工程规模$/u,/^计划工期$/u,/^合同工期$/u,/^总工期$/u,/^质量标准$/u,/^质量目标$/u,/^合同估算价$/u,/^投资估算$/u,/^最高投标限价$/u,/^招标控制价$/u];function q(a){return p.some(b=>b.test(a))}function r(a){let b=a.replace(/\r?\n/gu,"\n").split("\n"),c=[],d=!1,e=a=>(0,g.Mp)(a).map(a=>a.replace(/\*\*/gu,"").trim()),f=a=>{let b=a.slice(2).map(e).filter(a=>a.length>=2).map(a=>a[0]||""),c=b.filter(q).length;return c>=3&&c>=Math.ceil(.45*b.length)};for(let a=0;a<b.length;){let e=b[a]||"",h=b[a+1]||"";if(/(?:\*\*[^\u000A]*项目基本信息表[^\u000A]*\*\*|####\s+[^\u000A]*项目基本信息表[^\u000A]*|###\s+[^\u000A]*项目基本信息表[^\u000A]*)/u.test(e)){let f=[e];for(a+=1;a<b.length&&!((0,g.VS)(b[a]||"")&&(0,g.vh)(b[a+1]||""))&&""===(b[a]||"").trim();)f.push(b[a]||""),a+=1;let h=!1;if(a<b.length&&(0,g.VS)(b[a]||"")&&(0,g.vh)(b[a+1]||""))for(h=!0,f.push(b[a]||"",b[a+1]||""),a+=2;a<b.length&&(0,g.VS)(b[a]||"");)f.push(b[a]||""),a+=1;let i=h&&d;h&&(d=!0),i||c.push(...f);continue}if(/^###\s+(?:\d+\.\d+\s+)?(?:项目基本信息|工程概况|项目概况)\s*$/u.test(e)){let h=[e];for(a+=1;a<b.length&&!((0,g.VS)(b[a]||"")&&(0,g.vh)(b[a+1]||""))&&!/^###\s+/u.test(b[a]||"");)h.push(b[a]||""),a+=1;if(a<b.length&&(0,g.VS)(b[a]||"")&&(0,g.vh)(b[a+1]||"")){let i=[b[a]||"",b[a+1]||""];for(a+=2;a<b.length&&(0,g.VS)(b[a]||"");)i.push(b[a]||""),a+=1;if(f(i)){if(d){let a=h.filter(a=>a.trim()&&!/^###\s+/u.test(a));a.length&&c.push(e,...a)}else d=!0,c.push(...h,...i);continue}c.push(...h,...i);continue}c.push(...h);continue}if((0,g.VS)(e)&&(0,g.vh)(h)){let i=[e,h];for(a+=2;a<b.length&&(0,g.VS)(b[a]||"");)i.push(b[a]||""),a+=1;if(f(i)){d||(d=!0,c.push(...i));continue}c.push(...i);continue}c.push(e),a+=1}return c.join("\n").replace(/\n{3,}/gu,"\n\n").replace(/\n{1,2}\|\s*信息项\s*\|\s*内容\s*\|\s*\n+(?:该小节围绕[^\n]*\n+)+\|\s*:?-{3,}:?\s*\|\s*:?-{3,}:?\s*\|\s*/gu,"\n\n")}function s(a,b,c){let d=c?.bodyTableForbidden===!0;if(a=((a,b)=>{let c=a.split("\n"),d=[];for(let a=0;a<c.length;a+=1){let e=c[a]||"",f=/^(#{3,5})\s+(.+)$/u.exec(e.trim()),g=f?.[2]?.replace(/^\d+(?:\.\d+)*\s+/u,"").trim()||"";if(f&&b.some(a=>a.test(g))){for(a+=1;a<c.length&&!/^#{2,5}\s+/u.test((c[a]||"").trim());)a+=1;a-=1;continue}d.push(e)}return d.join("\n")})(a,[/^工程概况一览表$/u,/^招标文件?评分.*响应索引表$/u,/^招标评分项响应索引表$/u]).replace(/\*\*(?:工程概况一览表|招标文件?评分.*响应索引表|招标评分项响应索引表)\*\*[\s\S]*?(?=\n{2,}#{2,5}\s+|\n{2,}(?:[^|\n#]|$)|$)/gu,"").replace(/\n{3,}/gu,"\n\n"),!/项目基本信息|项目概况|工程概况|招标范围/u.test(a))return r((0,g.yk)((0,g.j7)(a)));let e=/^(#{2,4}\s+(?:\d+\.\d+\s+)?[^\n]*(?:项目概况|工程概况|项目基本信息|招标范围)[^\n]*\n)/mu,f=/^(#{2,4}\s+(?:\d+\.\d+\s+)?[^\n]*(?:概况|基本信息)[^\n]*\n)/mu,h=()=>e.exec(a)??f.exec(a);if(!(/\|\s*信息项\s*\|\s*内容\s*\|/u.test(a)||d&&/\*\*\s*项目基本信息\s*\*\*/u.test(a))&&j(b).length>0){let c=h();if(c?.index||c?.index===0){let e=c.index+c[0].length,f=`${d?o(b,"",a):n(b,"",a)}
|
|
177
177
|
|
|
178
178
|
`;a=`${a.slice(0,e)}
|
|
179
179
|
${f}${a.slice(e).trimStart()}`}}let i=h();if(!i?.index&&i?.index!==0)return a;let k=i.index,l=k+i[0].length,p=/^#{2,4}\s+/gmu;p.lastIndex=l;let s=p.exec(a),t=s?.index??a.length,u=a.slice(l,t),v=d?o(b,u,a):n(b,u,a);if(!m(b,u,a).some(a=>!/资料未明确|系统暂未从知识库确认|项目资料暂未明确/u.test(a[1])))return a;let w=(function(a,b=!1){let c=a.split("\n"),d=[],e=a=>{let b=(0,g.Mp)(a[0]||"").map(a=>a.replace(/\*\*/gu,"").trim());if("序号"===b[0]&&/项目名称/u.test(b[1]||""))return!0;let c=a.slice(2).map(g.Mp).filter(a=>a.length>=2);if(0===c.length)return!1;let d=c.map(a=>(a[0]||"").replace(/\*\*/gu,"").trim()),e=d.filter(q).length;return e>=3&&e>=Math.ceil(.45*d.length)};for(let a=0;a<c.length;){let f=c[a]||"";if(b&&/^\s*\*\*\s*项目基本信息\s*\*\*\s*$/u.test(f)){for(a+=1;a<c.length&&""===(c[a]||"").trim();)a+=1;for(;a<c.length&&/^\s*[-*]\s/u.test(c[a]||"")&&q((/^\s*[-*]\s*([^::|]{1,16})[::]/u.exec(c[a]||"")?.[1]||"").replace(/\*\*/gu,"").trim());)a+=1;continue}if(/^\s*\*\*[^\n]*项目基本信息表[^\n]*\*\*\s*$/u.test(f)||/^\s*#{3,5}\s+[^\n]*项目基本信息表\s*$/u.test(f)){for(a+=1;a<c.length&&""===(c[a]||"").trim();)a+=1;if(a<c.length&&(0,g.VS)(c[a]||""))for(a+=1;a<c.length&&((0,g.VS)(c[a]||"")||(0,g.vh)(c[a]||""));)a+=1;continue}if((0,g.VS)(f)&&a+1<c.length&&(0,g.vh)(c[a+1]||"")){let b=[f,c[a+1]||""],d=a+2;for(;d<c.length&&(0,g.VS)(c[d]||"");)b.push(c[d]||""),d+=1;if(e(b)){a=d;continue}}d.push(f),a+=1}return d.join("\n")})(u,d).replace(/该小节围绕“[^”]+”进行补充说明[^\u000A]*(?:\u000A\u000A该小节围绕“[^”]+”进行补充说明[^\u000A]*)*/gu,"").replace(/\n{3,}/gu,"\n\n").trim(),x=`${i[0].trimEnd()}
|
|
@@ -186,7 +186,7 @@ ${w}`:""}
|
|
|
186
186
|
|。;;]{0,40}(?:资料未明确|系统暂未从知识库确认|项目资料暂未明确)`,"u").test(a)).map(a=>({level:"error",message:`${a} 已抽取到项目资料事实但正文仍显示暂未明确`,suggestion:"请优先使用项目基础事实卡片中的资料原值,不得用占位表达覆盖已确认事实。"})):[]}},87942:(a,b,c)=>{c.d(b,{x:()=>d});let d={version:"professional-document-workflow-v12",rules:["complete-local-knowledge-assumption","knowledge-coverage-recovery","fact-trace-placement","chapter-coverage-gate","structured-quality-report","post-repair-verification"]}},91943:(a,b,c)=>{c.d(b,{$t:()=>A,G5:()=>C,PA:()=>F,Rc:()=>j,dC:()=>E,dM:()=>m,vi:()=>B});let d=/[\u4e00-\u9fa5]/gu,e=/^([ \u3000]*)(\d{1,3})\.\s+\S/u,f=/^([ \u3000]*)([-*+])\s+\S/u,g=/^(#{1,6})\s+\S/u,h=/(?:\.{2,}|…{2,})\s*\d+\s*$/u,i=/。、|,、|;、|。,|,。|。。/u,j=[{open:"(",close:")",label:"全角括号"},{open:"《",close:"》",label:"书名号"}],k=/(?<=[。;!?])/u,l=/[的与和及或在于是对从向把被将按并而则如若等共约达须应需可要能以由使让]/u,m=8;function n(a){return(a.match(d)||[]).length}function o(a){let b=a.trim();return b.length>80?`${b.slice(0,80)}…`:b}function p(a){return g.test(a.trim())}function q(a){return a.trim().startsWith("|")}function r(a){let b=e.exec(a);return!!b&&300>=Number.parseInt(b[2],10)}function s(a){return f.test(a)}function t(a){return p(a)||q(a)}function u(a){return a.replace(/[|`*_<>#\s\u3000]/gu,"").replace(/^:?-{2,}:?$/u,"")}function v(a){return a.trim().replace(/^\|/u,"").replace(/\|$/u,"").split("|").map(a=>a.trim())}function w(a){return v(a).map(u).join("|")}function x(a,b){for(let c=b-1;c>=0;c-=1)if(a[c].trim())return c;return -1}function y(a,b){for(let c=b+1;c<a.length;c+=1)if(a[c].trim())return c;return -1}function z(a){let b=[],c=0;for(;c<a.length;){let d=e.exec(a[c]),f=d?Number.parseInt(d[2],10):0;if(!d||f>300){c+=1;continue}let g=d[1].length,h=[{index:c,number:f}],i=c+1;for(;i<a.length;){if(!a[i].trim()){let b=i;for(;b<a.length&&!a[b].trim();)b+=1;let c=b<a.length?e.exec(a[b]):null;if(c&&c[1].length===g&&300>=Number.parseInt(c[2],10)){i=b;continue}break}let b=e.exec(a[i]);if(b&&b[1].length===g&&300>=Number.parseInt(b[2],10)){h.push({index:i,number:Number.parseInt(b[2],10)}),i+=1;continue}break}b.push({indent:g,items:h}),c=i>c?i:c+1}return b}function A(a){let b=a.replace(/\r\n?/gu,"\n").split("\n"),c={cleanable:[],blocking:[]};for(let a of z(b)){let d=a.items.map(a=>a.number);if(1===a.items.length){d[0]>1&&c.cleanable.push({kind:"orphan-list-number",line:a.items[0].index+1,excerpt:o(b[a.items[0].index]),message:`孤立有序编号「${d[0]}.」(无前序 1.~${d[0]-1}.,疑似跨节继承编号)`});continue}d.every((a,b)=>a===b+1)||c.cleanable.push({kind:"list-numbering",line:a.items[0].index+1,excerpt:`编号序列 ${d.join(",")}`,message:`有序列表编号不连续(第 ${a.items[0].index+1}~${a.items[a.items.length-1].index+1} 行编号:${d.join(",")})`})}!function(a,b){let c=0;for(;c<a.length;){if(!s(a[c])){c+=1;continue}let d=[c],e=c+1;for(;e<a.length;){if(!a[e].trim()){let b=e;for(;b<a.length&&!a[b].trim();)b+=1;if(b<a.length&&s(a[b])){e=b;continue}break}if(s(a[e])){d.push(e),e+=1;continue}break}if(1===d.length){let c=d[0],e=x(a,c),f=y(a,c),g=e>=0?a[e].trim():"",h=/[::]$/u.test(g)||/(?:包括|如下|以下|例如|分别是)[::]?$/u.test(g),i=e>=0&&!s(a[e])&&!p(a[e])&&!q(a[e])&&!r(a[e])&&!h,j=f>=0&&!s(a[f])&&!q(a[f]);i&&j&&b.cleanable.push({kind:"orphan-list-item",line:c+1,excerpt:o(a[c]),message:"孤立单项列表(前后均为正文语境,无列表上下文)"})}c=e>c?e:c+1}}(b,c),function(a,b){for(let c of function(a){let b=[],c=0;for(;c<a.length;){if(!q(a[c])){c+=1;continue}let d=[c],e=c+1;for(;e<a.length&&q(a[e]);)d.push(e),e+=1;b.push({start:c,rows:d}),c=e}return b}(a)){let d=c.rows;if(d.length<2||!function(a){let b=a.trim();return b.startsWith("|")&&/^[\s|:-]+$/u.test(b)&&/-{3,}/u.test(b)}(a[d[1]]))continue;let e=v(a[d[0]]),f=w(a[d[0]]),g=e[0]?.replace(/[\s*_]/gu,"")??"";e.length>=3&&/表$/u.test(g)&&n(g)>=m&&b.blocking.push({kind:"table-title-in-header",line:d[0]+1,excerpt:g,message:`表格表头首格为表名(「${g}」),列语义错位(表名应独立成行,表头首格必须填列名)`});let h=d.slice(2);if(0===h.length){b.blocking.push({kind:"table-empty",line:d[0]+1,excerpt:o(a[d[0]]),message:"空表(仅表头与分隔线,无任何数据行)"});continue}let i=w(a[h[0]])===f;i&&b.cleanable.push({kind:"table-header-duplicate",line:h[0]+1,excerpt:o(a[h[0]]),message:"重复表头行(分隔线后数据行与表头内容一致)"});let j=new Set;for(let c of(i&&j.add(f),h)){if(i&&c===h[0])continue;let d=w(a[c]);if(!(!d||d.split("|").every(a=>!a))){if(j.has(d)){b.cleanable.push({kind:"table-row-duplicate",line:c+1,excerpt:o(a[c]),message:"表内数据行完全重复"});continue}j.add(d)}}}}(b,c),function(a,b){for(let c=0;c<a.length;c+=1){let d=a[c].trim();if(!d||t(d)||r(d)||s(d)||h.test(d)||/\d$/u.test(d)||15>n(d))continue;let e=d[d.length-1];if(!/[\u4e00-\u9fa5]/u.test(e)||/[::、]$/u.test(d)||/[表图]$/u.test(d))continue;let f=y(a,c);if(f>=0&&q(a[f])&&/^[表图]\s*\d+(?:\s*[-—–..]\s*\d+)?\s+\S/u.test(d)||f>=0&&q(a[f])&&/[表图]\s*\d+(?:\s*[-—–..]\s*\d+)?\s+\S[^。;!?]*$/u.test(d)||f>=0&&(r(a[f])||s(a[f]))&&/(?:完成后|完毕后|结束后|如下|以下)$/u.test(d)||!(-1===f||p(a[f])||q(a[f])||r(a[f])||s(a[f]))&&!l.test(e))continue;let g=x(a,c),i=g>=0?a[g].trim():"";(g<0||p(i)||q(i)||r(i)||s(i)||/[。;!?""」』)\]】…]$/u.test(i))&&b.blocking.push({kind:"truncated-line",line:c+1,excerpt:o(a[c]),message:"句尾截断(行尾无终止标点且后续为标题/表格/列表/文末,疑似生成截断)"})}}(b,c),function(a,b){for(let c=0;c<a.length;c+=1){let d=/^(#{3,6})\s+(\S.*)$/u.exec(a[c].trim());if(!d)continue;let e=d[1].length,f=y(a,c);if(-1===f){b.blocking.push({kind:"empty-subsection",line:c+1,excerpt:o(a[c]),message:`空小节「${d[2].trim().slice(0,40)}」(小节标题后无任何内容)`});continue}let g=/^(#{1,6})\s+\S/u.exec(a[f].trim());g&&g[1].length<=e&&b.blocking.push({kind:"empty-subsection",line:c+1,excerpt:o(a[c]),message:`空小节「${d[2].trim().slice(0,40)}」(小节标题后无任何内容)`})}}(b,c),function(a,b){let c=new Map;for(let d=0;d<a.length;d+=1){let e=a[d].trim();if(!e||t(e)||r(e)||s(e))continue;let f=e.replace(/\s+/gu,"");if(40>n(f))continue;let g=c.get(f);if(void 0===g){c.set(f,d);continue}b.cleanable.push({kind:"duplicate-line",line:d+1,excerpt:o(a[d]),message:`与第 ${g+1} 行完全重复(≥40 字)`})}}(b,c);for(let a=0;a<b.length;a+=1){let d=b[a];if(!d.trim()||t(d)||r(d)||s(d))continue;let e=d.split(k).map(a=>a.trim()).filter(Boolean);for(let b=0;b+1<e.length;b+=1)if(e[b]===e[b+1]&&n(e[b])>=16){c.cleanable.push({kind:"duplicate-sentence-adjacent",line:a+1,excerpt:e[b].slice(0,60),message:`相邻句子重复(「${e[b].slice(0,24)}…」连续两遍)`});break}}for(let a=0;a<b.length;a+=1){let d=b[a];if(!d.trim()||t(d))continue;let e=i.exec(d);e&&c.blocking.push({kind:"sentence-fracture",line:a+1,excerpt:o(d),message:`标点断裂(「${e[0]}」句读错乱,疑似句段拼接残留/漂移句)`})}let d=b.join("\n");for(let{open:a,close:e,label:f}of j){let g=d.split(a).length-1,h=d.split(e).length-1;if(g===h)continue;let i=b.findIndex(b=>b.split(a).length-1!=b.split(e).length-1);c.blocking.push({kind:"punctuation-unbalanced",line:Math.max(1,i+1),excerpt:o(b[i]??""),message:`${f}不闭合(开 ${g} 处、闭 ${h} 处,疑似内容丢失/拼接残留)`})}return c}function B(a){let b=a.replace(/\r\n?/gu,"\n"),c=[];for(let a=0;a<4;a+=1){let a=b.split("\n"),d=A(b),e=d.blocking.filter(a=>"truncated-line"===a.kind);if(0===d.cleanable.length&&0===e.length)break;let f=new Set,g=new Map;for(let b of z(a)){let d=b.items.map(a=>a.number);if(1===b.items.length&&d[0]>1){let e=b.items[0].index,f=a[e].replace(/^([ \u3000]*)\d{1,3}\.\s+/u,"$1");f!==a[e]&&(g.set(e,f),c.push(`孤立编号去号:第 ${e+1} 行(「${d[0]}.」)`));continue}if(b.items.length>1&&!d.every((a,b)=>a===b+1)){if(d[0]>1){let c=b.items[0].index-1;for(;c>=0&&!a[c].trim();)c-=1;if(c>=0&&/[::。;;]\s*\d{1,3}[.、]\s*\S/u.test(a[c]))continue}b.items.forEach((b,c)=>{let d=a[b.index].replace(/^([ \u3000]*)\d{1,3}\.\s+/u,`$1${c+1}. `);d!==a[b.index]&&g.set(b.index,d)}),c.push(`有序列表重排:第 ${b.items[0].index+1}~${b.items[b.items.length-1].index+1} 行(${d.join(",")} → 1..${d.length})`)}}for(let b of d.cleanable){let d=b.line-1;if("orphan-list-item"===b.kind){let b=a[d].replace(/^([ \u3000]*)[-*+]\s+/u,"$1");b!==a[d]&&(g.set(d,b),c.push(`孤立列表项去号:第 ${d+1} 行`))}else if("table-header-duplicate"===b.kind)f.add(d),c.push(`重复表头行删除:第 ${d+1} 行`);else if("table-row-duplicate"===b.kind)f.add(d),c.push(`表内重复数据行删除:第 ${d+1} 行`);else if("duplicate-line"===b.kind)f.add(d),c.push(`完全重复行删除:第 ${d+1} 行`);else if("duplicate-sentence-adjacent"===b.kind){let b=function(a){let b=a.split(k),c=[];for(let a of b){let b=c[c.length-1];void 0!==b&&b===a&&n(a.trim())>=16||c.push(a)}return c.join("")}(a[d]);b!==a[d]&&(g.set(d,b),c.push(`相邻重复句去重:第 ${d+1} 行`))}}for(let b of e){let d=b.line-1;if(f.has(d)||g.has(d))continue;let e=function(a){let b=/^([\s\S]*[。;!?])([^。;!?]+)$/u.exec(a);if(!b)return;let c=b[2].trim(),d=n(c);if(0!==d&&!(d>40))return{line:b[1],removed:c.slice(0,30)}}(a[d]);void 0!==e&&e.line!==a[d]&&(g.set(d,e.line),c.push(`截断行尾残片闭合:第 ${d+1} 行(删尾「${e.removed}」)`))}let h=a.map((a,b)=>f.has(b)?void 0:g.get(b)??a).filter(a=>void 0!==a).join("\n");if(h===b)break;b=h}return{markdown:b,cleaned:c}}function C(a,b){if(0===a.blocking.length)return;let c=a.blocking.slice(0,4).map(a=>`${a.message}(第 ${a.line} 行)`).join(";");return`${b?`${b} `:""}结构完整性未通过(${a.blocking.length} 处):${c}。请保留已正确内容,仅修正上述问题后重新输出完整小节。`}let D={"orphan-list-number":"孤立编号由确定性清理去号转正文;写时按小节独立起编,不得继承父级编号。","list-numbering":"编号重排为 1..n 连续;写时编号必须从 1 起连续。","orphan-list-item":"孤立单项列表去除列表符并入正文;单项内容不使用列表格式。","table-header-duplicate":"删除重复表头行;表格必须只有一个表头块。","table-row-duplicate":"删除重复数据行;同一数据不得在表内出现两次。","table-title-in-header":"表名必须独立成行(表题),表头首格必须为列名;须定向重写该表格。","table-empty":"空表须补充数据行或删除;不得交付仅表头的空表。","table-number-orphan-reference":"补建被引用的表实体或修正引用编号;表编号引用必须与实体一一对应。","table-number-duplicate":"表编号重排为全篇唯一;同一表编号不得出现两个实体。","duplicate-line":"删除后出现的重复行;该段内容只能出现一次。","duplicate-sentence-adjacent":"相邻重复句去重;不得同句连发两遍。","truncated-line":"句尾截断须补全该句后重写;不得交付截断内容。","empty-subsection":"空小节必须补写与该小节相关的正文内容,不得只留标题。","sentence-fracture":"句读断裂须重写该句;不得交付句段拼接残留。","punctuation-unbalanced":"全角括号/书名号不闭合须重写所在语句;成对性破坏是内容丢失信号,补齐或删除残缺部分,不得带病交付。"};function E(a,b){let c=b?.includeCleanable??!0,d=A(a),e=function(a){let b=a.replace(/\r\n?/gu,"\n").split("\n"),c=[],d=a=>a.replace(/[—–]/gu,"-"),e=new Map,f=/^表\s*(\d+(?:[-—–]\d+)?)\s+\S/u;for(let a=0;a<b.length;a+=1){let c=f.exec((b[a]||"").trim());if(!c)continue;let g=a+1;for(;g<b.length&&!(b[g]||"").trim();)g+=1;if(g>=b.length||!/^\s*\|/u.test(b[g]||""))continue;let h=d(c[1]);e.set(h,[...e.get(h)||[],a+1])}for(let[a,d]of e)d.length<=1||c.push({kind:"table-number-duplicate",line:d[1],excerpt:o((b[d[1]-1]||"").trim()),message:`表编号重复(「表${a}」实体出现 ${d.length} 次:第 ${d.join("、")} 行):表编号必须全篇唯一`});let g=[/[按如]\s*表\s*(\d+(?:[-—–]\d+)?)/gu,/(?<![\u4e00-\u9fa5])见\s*表\s*(\d+(?:[-—–]\d+)?)/gu,/(?:参见|详见|根据|依据|按照|参照|比照|遵照|结合)\s*表\s*(\d+(?:[-—–]\d+)?)/gu];for(let a=0;a<b.length;a+=1){let f=b[a]||"";if(!f.includes("表"))continue;let h=new Set;for(let i of g){let g;for(i.lastIndex=0;g=i.exec(f);){let i=d(g[1]);if(h.has(i)||e.has(i))continue;let j=a+1;for(;j<b.length&&!(b[j]||"").trim();)j+=1;j<b.length&&/^\s*\|/u.test(b[j]||"")||(h.add(i),c.push({kind:"table-number-orphan-reference",line:a+1,excerpt:o(f.trim()),message:`引用了「表${i}」但正文无该编号表实体(引用与实体必须一一对应)`}))}}}return c}(a);return(c?[...d.blocking,...e,...d.cleanable]:[...d.blocking,...e]).map(a=>({level:"error",severity:"blocker",category:"structure",message:`结构完整性缺陷:${a.message}(第 ${a.line} 行)`,suggestion:D[a.kind]}))}function F(a,b){let c=a.replace(/\r\n?/gu,"\n").split("\n"),d=[];{let a,b=!1,e=!1;for(let f of c){let c=f.trim();if(/^```/u.test(c)){b=!b;continue}if(b)continue;if(/^##\s+目录\s*$/u.test(c)){e=!0;continue}if(e){if(!/^##\s/u.test(c))continue;e=!1}let g=/^##\s+第([一二三四五六七八九十百千万\d]+)章\s+/u.exec(c);if(g){a={declared:function(a){if(/^\d+$/u.test(a))return Number(a);let b={一:1,二:2,三:3,四:4,五:5,六:6,七:7,八:8,九:9};if("十"===a)return 10;if(1===a.length)return b[a];if(a.startsWith("十"))return 10+(b[a[1]]??0);if(a.endsWith("十"))return(b[a[0]]??0)*10;let c=a.indexOf("十");if(c>0&&c===a.length-2)return(b[a[0]]??0)*10+(b[a[c+1]]??0)}(g[1]||""),prefixCounts:new Map},d.push(a);continue}if(/^##\s+/u.test(c)){a=void 0;continue}let h=/^###\s+(\d+)\.(\d+)\s+/u.exec(c);if(h&&a){let b=Number(h[1]);a.prefixCounts.set(b,(a.prefixCounts.get(b)||0)+1)}}}let e=b?.chapterNumber,f="number"==typeof e&&Number.isInteger(e)&&e>0&&d.length<=1?e:void 0;if(0===d.length&&void 0===f)return{markdown:a,fixedCount:0};let g=d.map(a=>{if(void 0!==a.declared)return a.declared;let b=[...a.prefixCounts.entries()].sort((a,b)=>b[1]-a[1]||a[0]-b[0])[0];return b?.[0]}),h=!1,i=!1,j=0,k=f,l=0,m=0,n=0,o=c.map(a=>{let b=a.trim();if(/^```/u.test(b))return h=!h,a;if(h)return a;if(/^##\s+目录\s*$/u.test(b))return i=!0,a;if(i){if(!/^##\s/u.test(b))return a;i=!1}if(/^##\s+第[一二三四五六七八九十百千万\d]+章\s+/u.test(b))return k=f??g[j],void 0===f&&(j+=1),l=0,m=0,a;if(/^##\s+/u.test(b))return void 0===f&&(k=void 0),a;if(!k||a!==b)return a;let c=/^###\s+(.*)$/u.exec(b);if(c){l+=1,m=0;let b=(c[1]||"").replace(/^\d+(?:\.\d+)*\s+/u,"").trim();if(!b)return a;let d=`### ${k}.${l} ${b}`;return d!==a&&(n+=1),d}let d=/^####\s+(.*)$/u.exec(b);if(d){let b=/^\d+\.\d+\.(\d+)\s+(.*)$/u.exec(d[1]||"");if(!b)return a;m+=1;let c=`#### ${k}.${l}.${m} ${(b[2]||"").trim()}`;return c!==a&&(n+=1),c}return a});return 0===n?{markdown:a,fixedCount:0}:{markdown:o.join("\n"),fixedCount:n}}},92993:(a,b,c)=>{c.d(b,{Hpz:()=>fb.Hp,h0x:()=>d.h0,bVF:()=>d.bV,bsz:()=>fb.bs,OXS:()=>f$,QJx:()=>d.QJ,jGg:()=>d.jG,Bhi:()=>d.Bh,xmB:()=>d.xm,J5_:()=>d.J5});var d=c(23500),e=c(22157),f=c(46482),g=c(70933),h=c(78217),i=c(30055),j=c(87942),k=c(55807),l=c(76193),m=c(1218),n=c(51190),o=c(44505),p=c(77088),q=c(80439);async function r(a){let b=a.chapterDrafts.flatMap(a=>a.evidence||[]);b.length>0&&(a.allEvidence.push(...b),a.allEvidence.splice(0,a.allEvidence.length,...(0,g.QR)(a.allEvidence,{preservePinned:!0}))),(0,e.Te)(a.signal);let c=(0,g.QR)(a.allEvidence,{preservePinned:!0});a.allEvidence.splice(0,a.allEvidence.length,...c),a.facts=(0,m.B2)(a.template,a.allEvidence,a.documentSpec);let{localFacts:d,projectBasicFacts:f,preciseFacts:h,structuredTables:i}=(0,m.d6)({evidence:a.allEvidence,template:a.template,spec:a.documentSpec,profile:a.domainProfile,diagnostics:a.generationDiagnostics}),j=[...d,...f,...h],k={facts:[],stages:[{type:"fact_extraction",roleId:"llm-json",status:"skipped",message:"已有本地/资料事实覆盖主要必需字段,跳过 LLM 全量事实抽取"}]};if((0,m.N2)(j,a.template,a.documentSpec)){let b=(0,g.QR)(a.allEvidence,{preservePinned:!0});try{k=await (0,m.OQ)(b,a.factExtractionPromptTexts,a.template,a.documentSpec,a.signal,a.generationDiagnostics)}catch(b){if(a.signal?.aborted)throw b;console.error("[gen] fact extraction failed:",b)}}for(let b of k.stages)(0,q.fx)(a.progressStages,b);let l=(0,n.UT)(a.allEvidence);for(let b of(a.structuredFacts=[...d,...f,...h,...k.facts,...l],a.governedStructuredFacts=(0,n.A)(a.structuredFacts,a.scopeConflicts??(0,n.KX)(a.structuredFacts)),a.governedStructuredFacts))a.facts[b.key]=`${(0,e.lG)(b.value)}(来源:${b.sourceFile},角色:${b.roleId})`;a.factsModel=await (0,m.d7)(a.governedStructuredFacts,i,a.missingItems,a.documentSpec,a.domainProfile);let r=(0,n.qD)({facts:a.governedStructuredFacts,projectRoot:a.projectRoot,requirement:a.requirement||"",templateId:a.template.id});a.factsModel.canonical=r,a.scheduleAuthority=(0,o.GG)(a.factsModel),a.assemblyRateAuthority=(0,o.hI)(a.factsModel),a.scaleSummary=(0,o.Pt)(a.factsModel),a.supportAuthority=(0,o.P3)(a.factsModel),a.decisionLockEntries=(0,p.Pd)({facts:[...d,...f,...h],evidence:a.allEvidence})}var s=c(31846),t=c(11248),u=c(95294);let v=/OCR|乱码|识别错误|无法确认|语义断裂|页码/u,w=/暂列金额|暂估价|预留金/u;function x(a){return`${a.key||""} ${a.fieldName||""} ${a.value||""}`.trim()}function y(a){if(!a)return{usable:[],noiseExcluded:[]};let b=a.factIndex?.parameterFacts?.length?a.factIndex.parameterFacts:a.preciseFacts||[],c=new Set,d=[],e=[];for(let a of b){if(!a)continue;let b=String(a.value||"").trim();if(!b||v.test(x(a))||(0,m.ZR)(a)||w.test(x(a)))continue;let f=(0,u.MO)(b);if(f){e.push({fact:a,category:f});continue}let g=`${a.key}|${b}`;c.has(g)||(c.add(g),d.push(a))}return{usable:d,noiseExcluded:e}}function z(a,b=[]){let c=new Set;for(let d of(0,s.TC)(a,b))for(let a of(0,s.XF)(d))c.add(a);return[...c]}function A(a,b){let c=x(a),d=0;for(let a of b)c.includes(a)&&(d+=1);return d}function B(a,b,c=[]){let{usable:d,noiseExcluded:e}=y(b),f=(0,t.K3)(a||""),g=c.map(a=>z(a.title,a.sections||[])),h=[],i=[],j=[];for(let a of d){if(function(a,b){let c=(0,t.K3)(b);return!!c&&(!!a.includes(c)||b.split(/[、,,;;/|]+/u).map(a=>(0,t.K3)(a)).filter(a=>a.length>=5).some(b=>a.includes(b)))}(f,String(a.value))){h.push(a);continue}(g.some(b=>b.length>0&&A(a,b)>0)?i:j).push(a)}return{totalParams:d.length,used:h,relevantMissed:i,irrelevantMissed:j,noiseExcluded:e}}var C=c(18292);let D=["project_name","project_code","owner","project_location","project_scale","schedule_requirement","quality_standard","project_investment_estimate"],E=/资料未明确|系统暂未从知识库确认|项目资料暂未明确|^(?:无|暂无|未确认|待确认)$/u;function F(a){return/--|延期到|资料|附件|扫描|目录|汇总|打包|备份|\d{1,2}\.\d{1,2}/u.test(a)}function G(a){return a.replace(/[((]\d+[))]/gu,"").replace(/副本|最终版|扫描件|定稿/gu,"").replace(/[\s,。,.;;::《》“”‘’()()_-]+/gu,"").toLowerCase()}function H(a,b){let c=G(b);if(!c||c.length<4)return!0;let d=G(a);return!!d.includes(c)||c.length>=12&&d.includes(c.slice(0,Math.max(8,Math.floor(.72*c.length))))}let I={规范包:/[括含]/u};var J=c(73859);function K(a){return a.replace(/[((]\d+[))]/gu,"").replace(/副本|最终版|扫描件|定稿/gu,"").replace(/\s+/gu,"").replace(/[,。,.;;::《》“”‘’()()_\-—–―─-〜~·•]/gu,"").toLowerCase()}let L=/项目名称|工程名称|招标人|建设单位|发包人|采购人|招标单位|建设地点|工程地点|项目地点/u,M=/bill_of_quantities|drawing|table/iu;function N(a,b,c){let d=a.trim();if((0,J.d2)(b,d)||(0,J.rF)(b,d)||/签章|盖章|联系人|联系电话|电话|邮箱|解密|开标|评标|保证金|交易系统|空白|填写|上传|下载|递交|投标文件制作|电子服务系统|交易平台/u.test(d)||/\|/u.test(d)||/^#+\s*/u.test(d)||/见(?:招标公告|投标人须知|前附表|本项目|补疑)|资料参数行摘要|公共资源交易监督管理|开评标程序|监管部门|招标代理机构|监督管理部门|行政监督部门/u.test(d)||/是否|符合|采购范围|规定的投标截止时间|电子交易系统|投标人须知|招标文件正文/u.test(d)&&/\d{3,}/u.test(d)||/项目名称|工程名称/u.test(d)&&/项目编号|工程概况|建筑面积|本项目分为|现状建筑物|改造工程|标段/u.test(d)||/项目编号[::]|工程概况[::]|本项目分为|现状建筑物|总建筑面积|本次改造工程|清单编制说明/u.test(d)||c&&/招标人|建设单位|发包人|采购人|招标单位/u.test(c)&&!/局|公司|中心|政府|管委会|委员会|集团|院|大学|学校|街道|办事处|指挥部|项目部|办公室|厅|署|银行|医院/u.test(d))return"";if(c&&L.test(c)){if(/所在地|地址|详见|见前附表|见招标/u.test(d)||/检查井|化粪池|机箱|碎石|路灯|井盖|监控系统|吊顶|抹灰|楼面|顶棚/u.test(d))return"";let a=d.replace(RegExp(`^${c.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&")}\\s*[::、,,..]?\\s*`,"u"),"")||d;return!a||a.length>40||/第\s*页|共\s*页/u.test(a)||/[,。;;、]/u.test(a)||/[::]/u.test(a)||/^[((][^))]*[))]$/u.test(a)||/[/\\]|\.(?:pdf|docx?|xlsx?|zip)/iu.test(a)||/R\d+C\d+/u.test(a)||K(a)===K(c)?"":K(a)}let e=/\d+(?:\.\d+)?\s*(?:日历天|天|个月|月)/u.exec(d)?.[0],f=K(e&&/工期|总工期|合同工期|计划工期|施工周期|质保期|有效期|养护期/u.test(`${c||""} ${d}`)?e:d);return!f||f.length>80?"":f}var O=c(40299),P=c(52639),Q=c(95622),R=c(23760),S=c(85016),T=c(10751),U=c(30836),V=c(1358);let W=[{re:/^(?:GB|JGJ|CJJ|CJ|JG|JT|TB|SL|DL|HG|SH|YB|SY|GA|QB|WS|JC|NB|CECS|ISO|IEC|IEEE|API|RFC|DB\d*|T\/[A-Z]+)[/T]{0,2}\s?\d/iu,reason:"规范编号"},{re:/^(?:19|20)\d{2}\s*年$/u,reason:"法规年代"},{re:/^E\d{12,}$/u,reason:"招标项目编号"}],X=/(?:劳动力|人力|用工|工人|民工|工种|普工|技工|管理人员|作业人员|人数|保勤|人员|班组|峰值|高峰|机械|机具|设备|车辆|台班|挖掘机|装载机|自卸|搅拌|塔吊|吊车|起重机|进度|工期|日历天|节点|阶段|开工|竣工|进场|退场|保养|维修|周转|材料|物资|水泥|砂石|碎石|钢筋|钢管|钢材|管材|灯具|路灯|电缆|光缆|通信|线缆|配线|配管|双绞|JDG|SC管|PC管|电源|电压|配电箱|照明|工作站|服务器|存储|工具|角磨|垫板|苗木|绿植|种植|养护期|保修|储备|堆放|供应|工程量|桩号|里程|K\d|管网|管道|胸径|地径|冠幅|冠丛|蓬径|工长|负责人|施工员|完成率|计划|拆除|人行道|侧石|缘石|杆件|砖基础|圈梁|构造柱|矩形柱|矩形梁|基础梁|过梁|有梁板|天沟|挑檐|雨篷|楼梯|散水|坡道|块料|墙面|吊顶|砌体|砖墙|多孔砖|实心砖|金属门|木质门|金属窗|百叶窗|百页窗|门窗|扶手|栏杆|桥架|管道基础|包管|压顶|独立基础|墙基|防潮层|给水|排水|空调|公厕|停车场|零星)/u,Y=/(?:混凝土|砼|砂浆|强度|等级|标号|配合比|坍落度|水灰比|掺量|养护|浇筑|振捣|模板|支架|脚手架|搭接|锚固|保护层|垫层|找平|找坡|坡度|防水|涂膜|卷材|闭水|蓄水|淋水|回填|夯实|压实|分层|虚铺|沟槽|基槽|基坑|边坡|标高|高程|厚度|间距|埋深|覆土|管径|PPR|冷水管|井室|抹灰|腻子|涂料|面层|基层|安装|提升泵|扬程|焊接|法兰|试压|冲洗|消毒|调试|接地|防雷|避雷|绝缘|电阻|验收|检验|检测|试验|取样|频率|焊缝|防腐|除锈|开挖|平整|清底|预留|土方|路床|碾压|摊铺|温度|降雨|雨量|接头|管枕|接口|承插|热熔|连接|封堵|距地|挂墙|挂装|嵌墙|暗配|明配|暗装|敷设|过桥|随桥|排管|人孔|通棒|内径|管孔|垂直度|偏差|漏风|通风|壁厚|接缝|遍数|密植|分叉|栽植|浇灌|试运转|严密性|渗水|牌号|材质|分辨率|图像|稳压|压力降|风速|纵距|横距|步距|立杆|连墙件|支撑卡|施工现场|场区|硬化|围挡|反光|封闭段|渣土)/u,Z=/(?:(?<![\d.])\d+\s*(?:座|辆|根|处|盏|株|道|孔|眼|樘|d(?![A-Za-z0-9]))|\d+(?:\.\d+)?\s*(?:%|℃|人日|工日)|(?:DN|Φ|φ|HRB|HPB)\s*\d+(?:\.\d+)?)/gu;function $(a,b,c=0){for(let d=a.indexOf(b,c);d>=0;d=a.indexOf(b,d+1)){let c=a.charAt(d-1),e=a.charAt(d+b.length);if(!/[\d.]/u.test(c)&&!/[\dA-Za-z]/u.test(e))return d}return -1}function _(a){let b=a.match(/\d+(?:\.\d+)?/u);return b?b[0]:a.trim()}function aa(a){return X.test(a)?"derivation-gap":Y.test(a)?"process-gap":"unattributed"}async function ab(a){let b=a.beforeMetrics?.map(Number)??(await a.recheck(a.originalContent)).map(Number),c=await a.apply();if(c===a.originalContent)return{content:a.originalContent,rolledBack:!1,beforeMetrics:b,afterMetrics:b};let d=(await a.recheck(c)).map(Number);return(a.shouldRollback??function(a,b){return b.some((b,c)=>b>a[c])})(b,d)?(!function(a,b){if(!a)return;let c=a.llm.patchGuardStats??(a.llm.patchGuardStats={}),d=c[b]??(c[b]={hits:0,rejects:0,rollbacks:0});d.rollbacks=(d.rollbacks??0)+1}(a.diagnostics,a.repairRound),{content:a.originalContent,rolledBack:!0,beforeMetrics:b,afterMetrics:d}):{content:c,rolledBack:!1,beforeMetrics:b,afterMetrics:d}}let ac=/(?:\d+(?:\.\d+)?\s*(?:mm|cm|m2|m3|m³|m²|㎡|平方米|m|km|kg|g|t|K|L|ml|MPa|kPa|kN|N|℃|%|台|套|座|个|项|批|次|份|人|小时|分钟|日历天|天|周|月|年|万元|元|W|kW|kV|V|A|Hz|米|处|道|根|盏|株|标段|层|樘|孔|眼|间|户|栋|幢|d)(?![\w\u00B2\u00B3])|DN\s*\d+|Φ\s*\d+(?:\.\d+)?|φ\s*\d+(?:\.\d+)?|C\d{2,}|HRB\d+|HPB\d+)/giu;function ad(a){return a.replace(/\s+/gu,"").toLowerCase()}function ae(a){return[...new Set((a.match(ac)||[]).map(ad))]}function af(a){let b=new Set;for(let c of a.allEvidence)if(c.content)for(let a of ae((0,g.eE)(c.content)))b.add(a);let c=a.input.billFactLock;if(c)for(let a of c.entries){for(let c of ae(`${a.name} ${a.description} ${a.quantity}${a.unit}`))b.add(c);for(let c of(0,s.L4)(a.description))b.add(ad(c));for(let c of a.specQuantityPairs)for(let a of(b.add(ad(c.spec)),ae(c.quantity)))b.add(a)}let d=a.input.blueprintData?.quantities;if(d)for(let[a,c]of Object.entries(d)){for(let a of("number"==typeof c.value&&Number.isFinite(c.value)&&b.add(ad(`${c.value}${c.unit||""}`)),c.specBreakdown??[]))"number"==typeof a.value&&Number.isFinite(a.value)&&b.add(ad(`${a.value}${c.unit||""}`));for(let c of ae(a))b.add(c)}for(let c of[...a.structuredFacts||[],...a.factsModel?.preciseFacts||[]])for(let a of ae((0,e.lG)(c.value)))b.add(a);for(let c of a.factsModel?.tables||[])for(let a of c.rows||[]){if(!Array.isArray(a)||0===a.length)continue;let c=a.map(a=>String(a??"").trim());for(let a of ae(c.join(" ")))b.add(a);let d=[...new Set(c.filter(a=>V.bX.test(a)))];if(0===d.length)continue;let e=[...new Set(c.filter(a=>V.CE.test(a)))];for(let a of d)for(let c of e)for(let d of ae(`${a}${c}`))b.add(d)}return b}async function ag(a){let b=af(a);if(0===b.size)return;let c=a=>{let c=[];for(let d of a.split(/[。;;!!??\n]/u).map(a=>a.trim()).filter(Boolean).filter(a=>!a.startsWith("#")&&(a.match(ac)??[]).length>0).map(a=>a.slice(0,160))){if(function(a){if(/高温|防暑|危大|专家论证|超过一定规模|40℃|37℃|35℃/u.test(a)||/第\s*\d+\s*(天|周|月|日|层|道|步|轮|批)/u.test(a))return!0;let b=a.match(ac)||[];return!!(b.length>0&&b.every(a=>/%$/u.test(a.trim()))&&/完成|进度|利用率|合格率|优良率|评标|得分|负荷/u.test(a)||b.every(a=>/^20\d{2}/u.test(a))&&/年/u.test(a)&&!/月|日/u.test(a))}(d))continue;let a=ae(d);if(0===a.length||a.every(a=>b.has(a)))continue;let e=a.filter(a=>!b.has(a)&&"unsourced"===(0,V.eS)({token:a,context:d}).kind);e.length>0&&c.push({sentence:d,tokens:e})}return c},d=new Map;for(let b of a.finalChapterDrafts){let a=c(b.content);a.length>0&&d.set(b.id,a)}let e=[...d.values()].reduce((a,b)=>a+b.length,0);if(0===e){let c=(0,q.X5)({type:"validation",roleId:"numeric-verification",status:"success",message:"正文数值确定性核对通过:全部正文数值均在资料原文/清单事实锁/蓝图参数桶中找到同值来源",details:[`数值权威库规模:${b.size} 个归一化 token`]},{subtitle:"数值确定性核对"});(0,q.fx)(a.progressStages,c),(0,q.fx)(a.finalGateRepairStages,c),a.emitProgress(a.finalChapterDrafts,a.progressStages);return}let g=0,h=0;for(let[b,e]of d){let d=a.finalChapterDrafts.findIndex(a=>a.id===b);if(d<0)continue;let i=a.finalChapterDrafts[d],j=i.content,k=e,l=c(j).length,m=0,n=!1,o=!1,p=[l];for(;k.length>0&&m<2;){m+=1;let e=(0,q.X5)({type:"llm_review",roleId:`agent-numeric-verification-${b}`,status:"running",message:`正文数值核对发现 ${k.length} 处疑似无来源数值,第 ${m} 轮定向修复中:${i.title}`,details:k.map(a=>`疑似:${a.sentence}(缺来源 token:${a.tokens.join("、")})`)},{subtitle:"数值确定性核对"});(0,q.fx)(a.progressStages,e),(0,q.fx)(a.finalGateRepairStages,e),a.emitProgress(a.finalChapterDrafts,a.progressStages);let g=["【正文数值定向核对修复】",...m>1?[`本轮为第 ${m} 轮(最多 2 轮):上一轮修复后仍有残留,无法确认来源的数值必须直接删除,禁止保留或替换为其他无来源数值。`]:[],"下列句子中的数值(标注「缺来源 token」)在项目绑定材料、工程量清单与蓝图中均找不到同值来源,属于疑似编造数值。请逐句核对并修复:","1. 若该数值在本章绑定证据中确实存在(仅表述口径不同),保持数值原样,只修正单位或表述;","2. 若该数值确属规范/标准常数(如试块留置、养护龄期、检测频次),保留数值并显性标注规范名称与编号(如「按《混凝土结构工程施工质量验收规范》GB 50204 规定,每100m\xb3留置一组试块」)——显性标注后即视为已溯源;","3. 其余情况必须删除该数值,改写为不带具体数值的过程控制表述(如「按设计要求」「分层碾压至压实度满足设计及规范要求」);","禁止把疑似数值替换为另一个同样无来源的数值;禁止改动句子的非数值部分;只做局部修改,不得新增、删除或合并小节。",k.map(a=>`- 疑似句:${a.sentence}(缺来源 token:${a.tokens.join("、")})`).join("\n")].join("\n"),h=await ab({originalContent:j,repairRound:"numeric-verification",diagnostics:a.generationDiagnostics,apply:async()=>{let b=await a.withProgressHeartbeat(()=>(0,f.l8)({template:a.template,chapter:{id:i.id,title:i.title,content:j,evidence:i.evidence,missingFacts:i.missingFacts,sections:i.sections},issues:k.map(a=>`疑似无来源数值:${a.sentence}(token:${a.tokens.join("、")})`),promptTexts:g,requirement:a.requirement,forbidDrawingImages:!1,bidComposition:a.bidComposition,diagnostics:a.generationDiagnostics,signal:a.signal,patchGuard:(0,f.XG)("numeric-verification",a.generationDiagnostics)}));return b.content&&b.content!==j?b.content:j},recheck:a=>[c(a).length]});h.rolledBack||h.content===j||(j=h.content,a.finalChapterDrafts[d]={...i,content:j},n=!0),h.rolledBack&&(o=!0);let r=c(j).length;if(p.push(r),0===r||r>=l||m>=2)break;l=r,k=c(j).slice(0,12)}n&&(g+=1);let r=c(j).length;h+=r;let s=(0,q.X5)({type:"llm_review",roleId:`agent-numeric-verification-${b}`,status:0===r?"success":"failed",message:0===r?`数值核对修复完成:${i.title}(${e.length} 处疑似数值已处理,残留轨迹 ${p.join("→")})`:n?`数值核对修复部分生效:${i.title}(疑似数值残留轨迹 ${p.join("→")},已执行 ${m} 轮定向修复(每章最多 2 轮);残留项以 warning 记录,不阻断交付)`:o?`数值核对修复已回滚:${i.title}(修复后疑似数值增多,保留修复前正文;残留 ${r} 处以 warning 记录,不阻断交付)`:`数值核对修复未生效:${i.title}(模型未产生有效修改;残留 ${r} 处以 warning 记录,不阻断交付)`,details:[...e.map(a=>`疑似:${a.sentence}`),r>0?`已执行 ${m} 轮定向修复,残留项以 warning 记录,不阻断交付`:""]},{subtitle:"数值确定性核对"});(0,q.fx)(a.progressStages,s),(0,q.fx)(a.finalGateRepairStages,s),a.emitProgress(a.finalChapterDrafts,a.progressStages)}g>0&&(a.finalMarkdown=a.rebuildFinalMarkdown(),await a.recomputeFinalValidationBundle()),a.generationDiagnostics.llm.lastInfo=`正文数值确定性核对:权威库 ${b.size} token,${e} 处疑似无来源数值,${g} 章完成定向修复,残留 ${h} 处(每章最多 2 轮收敛修复,未收敛残留以 warning 记录,不阻断交付)`}var ah=c(40693);function ai(a){return[...a.project,...a.schedule,...a.quality,...a.safety,...a.resources,...a.preciseFacts,...a.bills,...a.drawings,...a.rules,...a.specifications].flatMap(a=>{let b=(0,t.K3)(`${a.fieldName||a.key} ${(0,e.lG)(a.value)}`),c=(0,t.K3)((0,e.lG)(a.value));return c&&c!==b?[b,c]:[b]}).join("\n")}function aj(a,b){let c=[{label:"工期",corpus:ai({...b,project:[],quality:[],safety:[],resources:[],preciseFacts:[],bills:[],drawings:[],rules:[],specifications:[]}),required:/工期|日历天|合同工期|计划工期/u},{label:"质量",corpus:ai({...b,project:[],schedule:[],safety:[],resources:[],preciseFacts:[],bills:[],drawings:[],rules:[],specifications:[]}),required:/质量目标|质量标准|验收|复验/u},{label:"安全",corpus:ai({...b,project:[],schedule:[],quality:[],resources:[],preciseFacts:[],bills:[],drawings:[],rules:[],specifications:[]}),required:/安全|文明|风险|应急/u},{label:"资源",corpus:ai({...b,project:[],schedule:[],quality:[],safety:[],preciseFacts:[],bills:[],drawings:[],rules:[],specifications:[]}),required:/资源|材料|设备|劳动力/u},{label:"工程量",corpus:ai({...b,project:[],schedule:[],quality:[],safety:[],resources:[],preciseFacts:[],drawings:[],rules:[],specifications:[]}),required:/工程量|清单|建筑面积|长度|吨|台|套|项/u}],d=(0,t.K3)(a.replace(/\s+/gu,"")),e=[b.project,b.schedule,b.quality,b.safety,b.resources,b.preciseFacts,b.bills,b.drawings,b.rules,b.specifications].every(a=>0===a.length),f=[];for(let b of c){if(!b.required.test(a))continue;let c=[...new Set(b.corpus.split("\n").map(a=>a.replace(/\s+/gu,"")).filter(Boolean))];(0!==c.length||e)&&0===c.filter(a=>!(a.length<6)&&(!!(d.includes(a.slice(0,24))||a.length>24&&d.includes(a.slice(0,12)))||(a.match(/\d+(?:\.\d+)?(?:m2|hm2|m3|l|ml|mm|cm|km|m|kg|g|t|万元|亿元|元|天|工作天|月|年|h|min|%|permille|mpa|kpa|pa|kn|kw|mw|w|kv|v|ma|a|hz|℃|台|套|件|个|根|只|组|项|处|座|栋|层|间|批|次|人|工日|人日|亩)/gu)||[]).some(a=>a.length>=3&&d.includes(a)))).length&&f.push({level:"warning",message:`证据使用覆盖率偏低:正文中未明显使用${b.label}相关事实`,suggestion:`请在相应章节中引用至少一项${b.label}事实,避免只写通用表述。`})}return f}async function ak(a,b){let c=a.split(/\n\s*\n/gu).map(a=>a.trim()).filter(Boolean),d=/(?:加强组织领导|严格执行规范|落实责任制度|确保工程质量|强化过程管理|提高思想认识|完善管理体系|形成闭环管理|统筹推进|全面落实)/gu,e=[];for(let a of c){if(120>(0,h.V7)(a)||(a.match(d)||[]).length<2)continue;let c=await b.analyze(a);c&&(c.concrete||e.push({level:"warning",message:`段落存在空泛表述:${a.slice(0,48)}...`,suggestion:"请补充该段对应的对象、动作、控制点或验收闭环,避免只保留管理性套话。"}))}return e}function al(a,b){let c=[];if(!b)return c;let d=a.map(a=>`${a.title}
|
|
187
187
|
${a.content}`).join("\n\n");if(/进度|工期/u.test(d)&&/资源|材料|设备|劳动力/u.test(d)){let d=a.find(a=>/资源|材料|设备|劳动力/u.test(a.title)),e=d?b.get(d.title):void 0;e?.contentNeeds.resource||c.push({level:"warning",message:"章节逻辑依赖不足:进度章节与资源章节之间缺少明显支撑关系",suggestion:"请在资源章节补充与工期目标相匹配的劳动力、材料、设备投入和调配计划。"})}return/质量/u.test(d)&&/施工|工艺|技术/u.test(d)&&(a.some(a=>b.get(a.title)?.contentNeeds.quality||b.get(a.title)?.contentNeeds.construction)||c.push({level:"warning",message:"章节逻辑依赖不足:质量章节未明显支撑施工工艺控制",suggestion:"请在施工技术和质量章节之间补齐工艺控制点、验收要求和整改复验闭环。"})),/安全|文明|风险/u.test(d)&&(a.some(a=>b.get(a.title)?.contentNeeds.safety)||c.push({level:"warning",message:"章节逻辑依赖不足:安全章节缺少检查整改和应急支撑",suggestion:"请补齐风险识别、检查整改、应急响应和演练闭环。"})),c}let am=/安全|文明|质量|绿色施工|环保|扬尘|消防|应急|危大|风险|规范|标准|管理要求|施工工艺|技术措施|验收/u,an=/项目名称|工程名称|建设地点|建设单位|招标人|发包人|建设规模|招标范围|合同工期|计划工期|质量标准|危大工程清单|工程量|材料规格|设备型号|图纸参数|报价|单价|利润|税率|合同金额|联系方式|品牌/u,ao=/报价|单价|合价|金额|利润|税率|增值税|招标控制价|最高投标限价|中标价|合同价|暂列金额/u,ap=/联网增强|联网检索|网页资料|搜索结果|根据网页|互联网资料|在线资料|浏览器|搜索引擎/u,aq=["项目名称","工程名称","建设地点","建设单位","招标人","发包人","建设规模","招标范围","合同工期","计划工期","工程量","报价","单价"];function ar(a){return a.replace(/&/gu,"&").replace(/</gu,"<").replace(/>/gu,">").replace(/"/gu,'"').replace(/'/gu,"'").replace(/<[^>]+>/gu,"").replace(/\s+/gu," ").trim()}async function as(a,b,c,d,e){let f=`https://duckduckgo.com/html/?q=${encodeURIComponent(a)}`,g=new AbortController,h=setTimeout(()=>g.abort(),8e3),i=()=>g.abort();e?.addEventListener("abort",i,{once:!0});let j=await fetch(f,{headers:{"User-Agent":"Mozilla/5.0 compatible; customize-agent web research"},signal:g.signal}).finally(()=>{clearTimeout(h),e?.removeEventListener("abort",i)});return j.ok?[...(await j.text()).matchAll(/<a[^>]+class="result__a"[^>]+href="([^"]+)"[^>]*>([\s\S]*?)<\/a>[\s\S]*?<a[^>]+class="result__snippet"[^>]*>([\s\S]*?)<\/a>/giu)].map(a=>{let b=ar(a[1]||""),c=ar(a[2]||""),d=ar(a[3]||""),e=/uddg=([^&]+)/u.exec(b)?.[1];return{url:e?decodeURIComponent(e):b,title:c,snippet:d}}).filter(a=>{let b=`${a.title} ${a.snippet} ${a.url}`;return!(!a.url||!a.snippet||an.test(b)||ao.test(b)||ap.test(b)||d.some(a=>a&&b.includes(a)))&&(0===c.length||c.some(b=>a.url.includes(b)))}).slice(0,b):[]}async function at(a){if(!a.config.enabled||!function(a,b){let c=`${a} ${b.join(" ")}`;return!(!am.test(c)||/项目概况|工程概况|建设地点|建设规模|招标范围|工程量|报价|造价/u.test(c)&&!/安全|文明|质量|危大|环保|工艺|措施/u.test(c))}(a.chapterTitle,a.sectionTitles))return{evidence:[],queries:[],filtered:0,failedQueries:0,failures:[]};let b=function(a,b,c){let d=`${a} ${b.join(" ")}`,e=[/危大/u.test(d)?"危大工程 专项施工方案 管理规定 安全措施":"",/安全|文明/u.test(d)?"建筑工程 安全文明施工 管理要求":"",/质量|验收/u.test(d)?"建筑工程 质量控制 质量验收 通用要求":"",/扬尘|环保|绿色/u.test(d)?"施工现场 扬尘治理 绿色施工 环保要求":"",/消防|应急/u.test(d)?"施工现场 消防 应急管理 要求":"",/工艺|技术措施/u.test(d)?"建筑工程 施工工艺 技术措施 通用要求":""].filter(Boolean),f=`${a.replace(an,"")} 公开规范 通用要求`.trim();return[...new Set(e.length?e:[f])].slice(0,c)}(a.chapterTitle,a.sectionTitles,a.config.maxQueriesPerChapter),c=[],d=0,e=0,f=[];for(let g of b)try{for(let b of(await as(g,a.config.maxResultsPerQuery,a.config.trustedDomains,a.runtimeRules.forbiddenTerms||[],a.signal))){let e=function(a,b){let c=a;for(let a of aq)c=c.replace(RegExp(`${a}[^。;;
|
|
188
188
|
]{0,80}`,"gu"),"");for(let a of b.map(a=>{var b;return null==(b=a.value)?"":"string"==typeof b||"number"==typeof b||"boolean"==typeof b?String(b).trim():""}).filter(a=>a.length>=3&&a.length<=80))c=c.replace(RegExp(a.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&"),"gu"),"");return c.replace(ao,"").trim()}(b.snippet,a.localFacts);if(!e||e.length<20){d+=1;continue}c.push({chapterId:a.chapterId,filePath:b.url,score:.42,content:`参考依据:${b.title}
|
|
189
|
-
${e}`,source:function(a){let b=a.toLowerCase();return b.includes(".gov.cn")||b.includes("mohurd")||b.includes("zjt")||a.includes("住建")?"web-policy":"web-evidence"}(b.url),sectionTitle:a.chapterTitle})}}catch(a){e+=1,f.push(`${"string"==typeof g?g:"查询"}:${a instanceof Error?a.message:String(a)}`),console.error("[web-research] 检索查询失败(与「被噪声过滤」分列计数)",a)}return{evidence:c,queries:b,filtered:d,failedQueries:e,failures:f}}var au=c(65667);let av=[{label:"工程名称",factGroups:["project"],patterns:[/工程名称\s*[::]\s*([^\n|]+)/u],locations:"封面、工程概况、页眉页脚、专项方案、表格标题"},{label:"建设地点",factGroups:["project"],patterns:[/建设地点\s*[::]\s*([^\n|]+)/u,/工程地点\s*[::]\s*([^\n|]+)/u],locations:"工程概况、周边环境、扬尘噪声、交通导改、属地化措施"},{label:"总工期",factGroups:["schedule"],patterns:[/总工期\s*[::]\s*([^\n|]+)/u,/计划工期\s*[::]\s*([^\n|]+)/u,/工期目标\s*[::]\s*([^\n|]+)/u],locations:"工程概况、进度计划、横道图、资源计划、纠偏措施"},{label:"建设规模",factGroups:["project","preciseFacts"],patterns:[/建设规模\s*[::]\s*([^|\n]+)/u,/建筑面积\s*[::]\s*([^|\n]+)/u,/道路长度\s*[::]\s*([^|\n]+)/u,/管线长度\s*[::]\s*([^|\n]+)/u],locations:"工程概况、工程量表、施工部署、资源配置"},{label:"机械数量型号",factGroups:["resources"],locations:"机械表、平面布置、进度保障、安全专项方案",kind:"equipment-counts"},{label:"劳动力人数",factGroups:["resources"],patterns:[/劳动力\s*[^\n|]{0,12}(\d+)\s*人/u,/班组\s*[^\n|]{0,12}(\d+)\s*人/u],locations:"劳动力计划、进度节点、抢工方案、工资保障台账"},{label:"危大工程清单",factGroups:["safety","preciseFacts"],patterns:[/危大工程\s*[::]\s*([^\n|]+)/u,/深基坑|高支模|起重吊装|脚手架/u],locations:"安全章节、专项方案、审批表、应急预案"},{label:"环保监测指标",factGroups:["quality","safety","preciseFacts"],patterns:[/PM10|PM2\.5|TSP|噪声|扬尘在线监测/u],locations:"文明施工、扬尘噪声、智慧工地、应急联动"}];function aw(a){return a.replace(/[\s,。;;::|]/gu,"").trim()}let ax=/塔式起重机|履带吊|汽车吊|卷扬机|脚手架|扣件|钢管|模板|噪声|PM2\.5|PM10|TSP|扬尘在线监测|临电|消防|安全网|围挡|洗车台|沉淀池|雾炮/u,ay=/不使用|不采用|不配置|无需|未采用|不得使用|禁止使用/u;function az(a,b){let c=[];for(let d of b){let b=a[d];if(Array.isArray(b))for(let a of b)a&&"object"==typeof a&&"value"in a&&"string"==typeof a.value&&c.push(a.value)}return c.map(aw).filter(Boolean)}function aA(a,b){return 0===b.length||b.some(b=>b.includes(a)||a.includes(b)||a.length>=4&&b.includes(a.slice(0,4)))}var aB=c(37047),aC=c(63516);let aD=/([\u4e00-\u9fa5A-Za-z0-9()()]{1,12}?)(\d+(?:\.\d+)?)\s*(m²|m³|㎡|mm|cm|m|米|MPa|kN|kV|kW|℃|°C|万元|元|人|天|日|个|层|樘|处|套|台|t|吨)([\u4e00-\u9fa5A-Za-z0-9()()]{0,8})/gu,aE=["直径","厚度","宽度","长度","高度","深度","间距","距离","标高","偏差","数量","面积","体积","重量","压力","温度","强度","等级","坡度","规格","尺寸","层数","次数","跨度","半径","总长","全长"],aF=["以内","以外","以上","以下","之间","左右","以前","以后","之前","之后"],aG=/^(?:主要|本工程|本项目|全项目)?(?:作业对象|作业内容|施工内容|工作内容|工程内容|施工对象|施工范围|工程规模|建设内容|建设规模)为/u,aH=/^(?:由)?责任[\u4e00-\u9fa5]{0,4}在(?:内)?完成/u,aI=/自然村|村组|标段|区域|点位|养护|地上|地下|建筑高度|[\u4e00-\u9fa5]{1,4}组$/u,aJ=/^(?:局部|个别|少数|多数|大部分)/u,aK=["开挖","封闭","回填","浇筑","铺筑","摊铺","供应","编制","提交","签订","安装","养护","试验","拆除","砌筑"],aL=["直径","半径","穴径","胸径","地径","冠幅","厚度","宽度","长度","高度","深度","穴深","间距","距离","标高","坡度","跨度","株距","行距"];function aM(a){return a.replace(/(?:mm|cm|m|MPa|kN|kV|kW|℃|元|万元|人|天|日|个|层|樘|处|套|台|t|吨)/gu,"").replace(/[\s,,、;;::()()]/gu,"")}function aN(a,b){let c=["。",";",";","\n"],d=0;for(let e of c){let c=a.lastIndexOf(e,b-1);c+1>d&&(d=c+1)}let e=a.length;for(let d of c){let c=a.indexOf(d,b);c>=0&&c<e&&(e=c)}return a.slice(d,e)}async function aO(a){let b=function(a){let b=new Map,c=0;for(let d of a.split("\n")){let a=d.trim(),e=c;if(c+=d.length+1,!(/^#{1,6}\s/u.test(a)||/^\s*\|/u.test(a)))for(let a of d.matchAll(RegExp(aD.source,"gu"))){let c=(a[1]||"").trim(),d=a[2],f=/\d+$/u.exec(c);if(f&&(c=c.slice(0,f.index).trim(),d=`${f[0]}${d}`),/月\s*$/u.test(c))continue;let g=Number(d),h=a[3]||"",i=(a[4]||"").trim(),j=/[与和及][^与和及]{0,12}?\d/u.exec(i),k=j?i.slice(0,j.index):i,l=`${c}${k}`.replace(/[\s,,、;;::]/gu,""),m=l.replace(aG,"").replace(aH,""),n=m.length>=2?m:l;if(n.length<2||!/[\u4e00-\u9fa5A-Za-z]{2,}/u.test(n)||!Number.isFinite(g)||g<=0||aE.some(a=>n===a||aM(n)===a)||aF.some(a=>aM(n)===a)||aI.test(n)||aJ.test(n))continue;let o={matchIndex:e+(a.index||0),valueOffset:function(a,b,c){if(!c)return a.indexOf(b);let d=a.lastIndexOf(c);if(d>=0){let c=d-b.length;if(c>=0&&a.slice(c,d)===b)return c;let e=RegExp(`(${b.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&")})\\s*$`,"u").exec(a.slice(0,d));if(e&&void 0!==e.index)return e.index}return a.indexOf(b)}(a[0],d,a[3]||""),valueText:d},p=b.get(a[0]);if(p){p.occurrences.push(o);continue}b.set(a[0],{concept:n,value:g,unit:h,raw:a[0],occurrences:[o]})}}return[...b.values()].slice(0,60)}(a);if(b.length<3)return{groups:[]};let c=[...new Set(b.map(a=>a.concept))];if(c.length<2)return{groups:[]};let d=await (0,aB.VN)().embedDocuments(c);if(d.length!==c.length){let a=`本地语义模型嵌入数量不一致:期望 ${c.length} 条,实际 ${d.length} 条`;return console.warn(`[gen] parameter-concept-conflict degraded: ${a}`),{groups:[],degraded:{level:"warning",severity:"warning",category:"format",owner:"system",repairability:"manual_review",message:`参数概念口径冲突检测已降级跳过:${a}`,suggestion:"语义模型输出异常,本轮未执行该检测维度;可稍后重新生成复核。"}}}let e=new Map(c.map((a,b)=>[a,d[b]])),f=function(a,b){let c=new Map(a.map(a=>[a,a])),d=a=>{let b=c.get(a)||a;return b===a?a:(c.set(a,d(b)),c.get(a)||a)},e=(a,b)=>{c.set(d(a),d(b))};for(let c=0;c<a.length;c+=1)for(let d=c+1;d<a.length;d+=1)b(a[c],a[d])>=.6&&e(a[c],a[d]);return c}(c,(a,b)=>{let c=e.get(a),d=e.get(b);if(!c||!d||0===c.length||0===d.length)return 0;let f=Math.min(c.length,d.length),g=0;for(let a=0;a<f;a+=1)g+=c[a]*d[a];return g}),g=a=>{let b=a;for(;(f.get(b)||b)!==b;)b=f.get(b)||b;return b},h=new Map;for(let a of b){let b=g(a.concept),c=h.get(b)||[];c.push(a),h.set(b,c)}let i=[];for(let b of h.values()){if(b.length<2||Math.max(...b.map(a=>a.value))>4*Math.min(...b.map(a=>a.value)))continue;let c=new Map;for(let a of b){let b=c.get(a.unit)||[];b.push(a),c.set(a.unit,b)}for(let b of c.values()){if(b.length<2)continue;let c=new Map;for(let a of b){let b=aL.find(b=>a.raw.includes(b))||"",d=c.get(b)||[];d.push(a),c.set(b,d)}for(let d of[...c.keys()].filter(a=>""!==a).length>=2&&!c.has("")?[...c.values()]:[b]){if(d.length<2)continue;let b=d.map(a=>aK.find(b=>a.raw.includes(b))||"");if(b.length>=2&&b.every(a=>""!==a)&&new Set(b).size===b.length)continue;let c=d.map(a=>/^([\u4e00-\u9fa5]{2,})([一二三四五六七八九十]|\d+)$/u.exec(a.concept)).filter(a=>null!==a);if(c.length===d.length&&c.length>=2&&1===new Set(c.map(a=>a[1])).size&&new Set(c.map(a=>a[2])).size===c.length)continue;let e=d.map(a=>{let b=a.raw.indexOf("按每");return b>=0?a.raw.slice(0,b):null});if(e.every(a=>null!==a)&&!e.some((a,b)=>!!a&&e.some((c,d)=>b!==d&&!!c&&(a===c||a.includes(c)||c.includes(a))))||d.every(b=>b.occurrences.some(c=>/违约金|解除合同|提高至|自第|逾期超过/u.test(a.slice(Math.max(0,c.matchIndex-30),c.matchIndex+b.raw.length+40)))))continue;let f=[...new Set(d.map(a=>a.value))];if(f.length<2)continue;let g=Math.max(...f);if(g-Math.min(...f)<=.02*g)continue;let h=f.reduce((a,b)=>a+b,0);if(![...new Set(d.flatMap(b=>b.occurrences.map(b=>aN(a,b.matchIndex))))].some(b=>/(?:总量|合计|总计|共计)/u.test(b)&&/(?:其中|分别为|分为)/u.test(b)&&d.every(c=>c.occurrences.some(c=>aN(a,c.matchIndex)===b))&&[...b.matchAll(/\d+(?:\.\d+)?/gu)].some(a=>Math.abs(Number(a[0])-h)<=Math.max(.5,.01*h)))&&!(d.filter(b=>b.occurrences.some(c=>{let d=a.slice(c.matchIndex,c.matchIndex+b.raw.length+12),e=a.slice(Math.max(0,c.matchIndex-12),c.matchIndex);return/[、/](?:与)?[A-Za-z]?\d/u.test(d)||/[、/](?:与)?[A-Za-z]?\d/u.test(e)})).length>=2)&&!(d.length>=2&&d.every((a,b)=>d.every((c,d)=>{if(b>=d||a.value===c.value)return!0;let e=a.concept.length<=c.concept.length?a.concept:c.concept,f=a.concept.length<=c.concept.length?c.concept:a.concept;if(e.length>=4&&e.length<f.length&&f.endsWith(e)&&/^[板梁柱墙底顶]/u.test(e))return!0;let g=(0,U.Qk)(a.concept,c.concept);if(g.length<2)return!1;let h=a.concept.slice(g.start,g.end),i=a.concept.replace(h,""),j=c.concept.replace(h,"");return i.length>0&&j.length>0&&!i.includes(j)&&!j.includes(i)})))&&(i.push({concept:d[0].concept,values:d}),i.length>=4))break}if(i.length>=4)break}if(i.length>=4)break}return{groups:i}}function aP(a){return a.replace(/㎡/gu,"m2").replace(/m²/giu,"m2").replace(/m³/giu,"m3").replace(/\s+/gu,"").toLowerCase()}function aQ(a){return a.replace(/[((][^))]*[))]/gu,"").replace(/[\s,,、;;::]/gu,"")}function aR(a,b){let c=b.entries??b.billFactLock?.entries??[];if(0===c.length)return[];let d=Math.max(.01,.001*a.value),e=aP(function(a){let b=a.occurrences[0];if(!b)return a.unit;let c=a.raw.indexOf(b.valueText);return c<0?a.unit:a.raw.slice(c+b.valueText.length)||a.unit}(a)),f=a.occurrences.map(a=>b.markdown.slice(Math.max(0,a.matchIndex-48),a.matchIndex+a.valueOffset+a.valueText.length+48)).join("\n"),g=[];for(let b of c){if(!Number.isFinite(b.quantity)||b.quantity<=0||Math.abs(b.quantity-a.value)>d)continue;let c=aP(b.unit);if(e&&c&&e!==c)continue;let h=function(a,b){let c=aQ(a),d=aQ(b);if(c.length<2||d.length<2)return!1;if(c===d)return!0;let e=c.length<=d.length?c:d,f=c.length<=d.length?d:c;return e.length>=3&&f.includes(e)}(b.name,a.concept),i=b.villageGroup.trim().length>=2&&f.includes(b.villageGroup.trim());if((h||i)&&(g.push({entry:b,nameRelated:h}),g.length>=8))break}return g}function aS(a,b){if(a.values.length<2)return{verdict:"no-anchor"};let c=b.billFactLock?.entries??[],d=function(a){if(!a)return[];let b=[],c=1,d=(a,d,e,f,g)=>{b.push({seq:c,name:a,description:"",quantity:d,unit:e,section:"",subsection:g,villageGroup:g,sourceFile:f,specQuantityPairs:[]}),c+=1};for(let[b,c]of Object.entries(a)){let a=c.unit||"",e=c.sourceFile||"";for(let f of(Number.isFinite(c.value)&&c.value>0&&d(b,c.value,a,e,""),c.groups||[]))Number.isFinite(f.value)&&!(f.value<=0)&&d(`${b}(${f.group})`,f.value,a,e,f.group)}return b}(b.blueprintQuantities);if(0===c.length&&0===d.length)return{verdict:"no-anchor"};let e=a.values.map(a=>({value:a,matches:aR(a,{markdown:b.markdown,entries:[...c,...d]}),billMatches:aR(a,{markdown:b.markdown,entries:c})}));if(e.every(a=>a.matches.length>0)&&e.every((a,b)=>e.every((c,d)=>b===d||!a.matches.some(a=>c.matches.some(b=>b.entry.seq===a.entry.seq)))))return{verdict:"distinct-lock-entries",entries:e.map(a=>`「${a.matches[0].entry.name}」(${a.value.value}${a.value.unit})`).join("、")};let f=e.filter(a=>a.billMatches.length>0),g=e.filter(a=>0===a.matches.length);if(1===f.length&&g.length>0&&f.length+g.length===e.length){let a=f[0].billMatches.find(a=>a.nameRelated);if(a)return{verdict:"single-lock-entry",lockValue:a.entry.quantity,lockUnit:a.entry.unit,entryName:a.entry.name,nonLock:g.map(a=>a.value)}}return{verdict:"no-anchor"}}async function aT(a,b){let c=await aO(a);if(c.degraded)return[c.degraded];if(0===c.groups.length)return[];let d=[],e=[];for(let f of c.groups){let c=aS(f,{markdown:a,billFactLock:b?.billFactLock,blueprintQuantities:b?.blueprintQuantities});"distinct-lock-entries"===c.verdict?e.push({group:f,entries:c.entries}):d.push(f)}let f=[];if(d.length>0){let a=d.map(a=>`“${a.concept}”出现多个口径:${[...new Set(a.values.map(a=>a.raw))].slice(0,3).join("、")}`);f.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`同一参数概念出现多口径数值冲突:${a.join(";")}`,suggestion:"以绑定资料(图纸/清单/规范)裁决口径为准统一数值表述:每个参数概念全文只保留一个口径数值,删除矛盾表述。"})}return e.length>0&&f.push({level:"info",severity:"suggestion",category:"fact_consistency",owner:"system",repairability:"not_repair_needed",message:`参数概念多口径已裁决为不同清单条目口径(不构成冲突):${e.map(({group:a,entries:b})=>`“${a.concept}”对应${b}`).join(";")}`,suggestion:"各数值分别对应不同的工程量清单条目,正文已带条目名区分,无需处理。"}),f}let aU=["电梯","幕墙","智能化","消防","暖通","给排水","电气","燃气","人防","室外","园林","绿化","景观","钢结构","防水","保温","门窗","通风","空调","防雷","接地","动力","照明","拆除","加固","装修","装饰"],aV=(a,b)=>{let c=b.exec(a);if(!c)return;let d=Number(c[1]);return Number.isFinite(d)&&d>0?d:void 0},aW=[{name:"基坑支护与降水工程",aliases:["基坑支护","基坑工程","降排水","降水井"],applicable:a=>{let b=aV(a,/(?:基坑)?开挖深度[约为达至]{0,3}(\d+(?:\.\d+)?)\s*m/u);return void 0!==b&&b>=3}},{name:"高大模板支撑工程",aliases:["高大模板","高支模","模板支撑体系","模板支撑"],applicable:a=>{let b=aV(a,/(?:模板)?支撑(?:体系)?(?:搭设)?高度[约为达至]{0,3}(\d+(?:\.\d+)?)\s*m/u),c=aV(a,/(?:施工(?:总)?荷载|集中线荷载)[约为达至]{0,3}(\d+(?:\.\d+)?)\s*kN/u);return void 0!==b&&b>=8||void 0!==c&&c>=10||/高支模|高大模板/u.test(a)}},{name:"脚手架工程",aliases:["脚手架","落地式钢管脚手架","悬挑式脚手架","悬挑脚手架"],applicable:a=>{let b=aV(a,/(?:落地式|悬挑式)?(?:钢管)?脚手架(?:搭设)?高度[约为达至]{0,3}(\d+(?:\.\d+)?)\s*m/u);return void 0!==b&&b>=15||/悬挑(?:式)?脚手架/u.test(a)}},{name:"起重吊装及安装拆卸工程",aliases:["起重吊装","塔吊","塔式起重机","汽车吊","履带吊","起重机械安拆","物料提升机","提升机","起重机械","吊装"],applicable:a=>!!/塔吊|塔式起重机|汽车吊|履带吊|吊车|起重机械|起重设备|起重机|卷扬机|物料提升机|提升机|电动葫芦/u.test(a)||/起重伤害|非常规起重|起吊重量|吊装重量|吊装荷载/u.test(a)&&!/(?:不涉及|不存在|不属于|未涉及)[^。;\u000A]{0,16}危大|(?:不涉及|不存在|不属于|未涉及)[^。;\u000A]{0,16}危险性较大|(?:参数|高度|深度)[^。;\u000A]{0,12}未达[^。;\u000A]{0,60}危大/u.test(a)},{name:"吊篮作业工程",aliases:["吊篮","高处作业吊篮","电动吊篮"],applicable:a=>/吊篮/u.test(a)},{name:"拆除工程",aliases:["拆除工程","爆破拆除","机械拆除"],applicable:a=>/拆除工程(?![量])|爆破拆除/u.test(a)}];function aX(a){let b=a.split(/\r?\n/u),c=[];return b.forEach((a,d)=>{/危大/u.test(a)&&c.push(...b.slice(Math.max(0,d-6),Math.min(b.length,d+7)))}),c.join("\n")}function aY(a){let b=aW.filter(b=>b.applicable(a)),c=aX(a);return{applicableNames:b.map(a=>a.name),zonePresent:""!==c,missingNames:""===c?b.map(a=>a.name):b.filter(a=>!a.aliases.some(a=>c.includes(a))).map(a=>a.name)}}function aZ(a,b){let c=aX(a);return b.filter(a=>{let b=aW.find(b=>b.name===a);return!!b&&!b.aliases.some(a=>c.includes(a))})}let a$=/[二三四五六七八九十\d]{1,4}\s*个?\s*阶段/u,a_={一:1,二:2,三:3,四:4,五:5,六:6,七:7,八:8,九:9};function a0(a){return/(\d+|[一二三四五六七八九十]+)\s*个?\s*阶段/u.exec(a)?.[1]??null}function a1(a){let b=a.map(a0).filter(a=>null!==a).map(a=>/^\d+$/u.test(a)?parseInt(a,10):/^[一二三四五六七八九十]+$/u.test(a)?"十"===a?10:1===a.length?a_[a]??null:a.startsWith("十")?10+(a_[a[1]]??0):a.endsWith("十")?(a_[a[0]]??0)*10:(a_[a[0]]??0)*10+(a_[a[2]]??0):null).filter(a=>null!==a);return 0===b.length?null:1===new Set(b).size?b[0]:null}async function a2(a){let b=[...new Set(a.split(/\n+/u).filter(a=>a.trim()&&!/^\s*(#{1,6}\s+|\|)/u.test(a)).flatMap(a=>a.split(/[。;;]/u)).map(a=>a.replace(/\s+/gu,"").trim()).filter(a=>{var b;if(a.length<8||a.length>60)return!1;let c=a$.exec(a);return null!==c&&(b=c.index,!/[、,,]/u.test(a.slice(Math.max(0,b-12),b)))}))];if(b.length<2)return[];let c=await (0,aB.Mv)(b,b),d=b.map((a,b)=>b),e=a=>{let b=a;for(;d[b]!==b;)b=d[b];let c=a;for(;d[c]!==b;){let a=d[c];d[c]=b,c=a}return b},f=(a,b)=>{d[e(b)]=e(a)};for(let a=0;a<b.length;a+=1)for(let d=a+1;d<b.length;d+=1)c(b[a],b[d])>=.62&&f(a,d);let g=new Map;for(let a=0;a<b.length;a+=1){let c=e(a),d=g.get(c)||[];d.push(b[a]),g.set(c,d)}if(g.size<2||new Set([...g.values()].map(a1).filter(a=>null!==a)).size<2)return[];let h=[...g.values()].map(a=>a.sort((a,b)=>b.length-a.length)[0]).slice(0,4);return[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`施工阶段划分口径不统一:正文出现 ${g.size} 种互异阶段划分口径(${h.map(a=>`“${a.slice(0,16)}”`).join("、")})`,suggestion:"全文统一阶段划分口径:以总进度计划/施工部署章节的划分为唯一口径,其余章节划分句逐字对齐或删除。"}]}var a3=c(41991);let a4=/应急预案|应急措施|应急响应|应急救援|突发事件|应急管理|应急物资|应急演练|应急组织|应急保障/u,a5=/应急|突发|救援|预案|抢险|疏散/u,a6=["应急预案的编制与响应流程","突发事件应急处置措施","应急救援组织体系与保障"],a7=["应急照明系统安装调试","应急电源配置与切换方案"],a8={organization:"应急管理领导小组、应急救援队伍的组织机构与职责分工",procedure:"应急处置程序、应急响应流程与应急演练安排",resource:"应急物资、应急器材设备的储备与保障措施"},a9=/应急物资|急救箱|灭火器|沙袋|发电机|水泵|对讲机|应急照明|应急灯|防护服|救援绳|救生衣|铁锹|编织袋|抽水泵|警示带|应急器材/u,ba=/配备|储备|保障|配置|数量|不少于|共计|套|具|个|台|把|只/u,bb=["应急物资储备清单与配备数量","应急救援器材的配置与保障"],bc=["应急照明灯具数量与回路设计","应急电源的电气系统设计"];async function bd(a){return(0,a3.A)({prototypes:[...a6],negativePrototypes:[...a7],embedDocuments:a})}async function be(a){return(0,a3.A)({prototypes:[...bb],negativePrototypes:[...bc],embedDocuments:a})}async function bf(a,b){let c=a.split(/\r?\n/u),d=[],f=c.map(a=>{let b=/^(#{2,4})\s+(.+)$/u.exec(a.trim());if(b)return{level:b[1].length,title:b[2].replace(/^\d+(?:\.\d+)*\s+/u,"").trim()}}).filter(a=>void 0!==a).filter(a=>!a4.test(a.title)&&a5.test(a.title)),g=await bd(b),h=f.length>0?await g(f.map(a=>a.title)):[],i=new Set(f.filter((a,b)=>h[b]).map(a=>a.title)),j=a=>a4.test(a)||i.has(a),k=!1,l=[],m=[],n="",o=0;for(let a of c){let b=/^(#{2,4})\s+(.+)$/u.exec(a.trim());if(b){let a=b[1].length,c=b[2].replace(/^\d+(?:\.\d+)*\s+/u,"").trim();if(j(c)){k=!0,l.push(c);continue}a<=3&&k&&(k=!1);continue}if(k&&a.trim()&&!/^\s*\|/u.test(a)){m.push(a);let b=a.replace(/\s+/gu,"");n+=b,o+=b.length}}if(0===l.length)return d;let p=[];o<300&&p.push(`字数仅 ${o} 字(要求 ≥300 字)`);let q=n.match(/.{1,200}/gu)||[],r=Object.values(a8),s=await (0,aB.Mv)(q,r),t=a=>q.some(b=>s(b,a)>=aB.Eh);t(a8.organization)||p.push("应急组织体系"),t(a8.procedure)||p.push("应急处置程序/演练");let u=await be(b),v=m.join("。").split(/[。;;]/u).map(a=>a.trim()).filter(a=>a9.test(a)&&ba.test(a)),w=v.length>0?await u(v):[];return t(a8.resource)||w.some(Boolean)||p.push("应急物资保障"),p.length>0&&d.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:`应急预案小节深度不足:${l.join("、")}(缺少:${p.join("、")})`,suggestion:"补写应急组织体系(领导小组/抢险队与职责)、应急处置程序与演练安排、应急物资清单与保障措施,达到可落地深度。",sectionTitle:l[0],provenance:{detectorId:"emergency-section-depth",fingerprint:(0,e.c6)(a)}}),d}var bg=c(70208),bh=c(91943),bi=c(54185),bj=c(75251);let bk=/(?:GB|JGJ|CJJ|JTG|SL|DB|DL|YS|HG|DBJ)[\s/T]*\d{1,2}[\s/-]?(?:T[\s/]*)?\d{2,4}(?:[\s/-]\d{1,4})?/gu,bl=/《[^《》\r\n]{2,60}?》/gu,bm=/(?:规范|标准|规程)$/u;function bn(a){return[...a.matchAll(bk)].map(a=>a[0])}function bo(a){return[...a.matchAll(bl)].map(a=>a[0].replace(/《|》/gu,""))}function bp(a){return a.replace(/[\s\u200b-\u200d\ufeff]/gu,"").replace(/[—–-]/gu,"-").toUpperCase()}function bq(a){return a.replace(/《|》/gu,"").replace(/[((][^))]{0,40}[))]/gu,"").replace(/[\s\u200b-\u200d\ufeff]/gu,"")}function br(a){return bm.test(bq(a))}function bs(a,b){let c=bp(a),d=bp(b);if(!c||!d)return!1;if(c===d)return!0;let e=c.length<=d.length?c:d,f=c.length<=d.length?d:c;return RegExp(`^${e.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&")}-\\d{4}$`,"u").test(f)}function bt(a,b){let c=bq(a),d=bq(b);return!!c&&!!d&&(c===d||!(c.length<4)&&!(d.length<4)&&(c.includes(d)||d.includes(c)))}let bu=/^[\s()()【】[\]、,,;;::·.及和与]*$/u;function bv(a){let b=[];for(let c of a.split(/\r?\n/u)){let a=[];for(let b of c.matchAll(bk)){let c=b.index??0;a.push({type:"code",value:b[0],index:c,end:c+b[0].length})}for(let b of c.matchAll(bl)){let c=b.index??0;a.push({type:"name",value:b[0].replace(/《|》/gu,""),index:c,end:c+b[0].length})}if(0===a.length)continue;a.sort((a,b)=>a.index-b.index);let d=new Map,e=new Set;a.forEach((b,f)=>{if("code"!==b.type)return;let g=d=>{for(let g of"left"===d?a.slice(0,f).map((a,b)=>f-1-b):a.slice(f+1).map((a,b)=>f+1+b)){let f=a[g];if("name"!==f.type||e.has(g))continue;let h="left"===d?c.slice(f.end,b.index):c.slice(b.end,f.index);if(!bu.test(h))break;return g}return -1},h=g("left"),i=h>=0?h:g("right");i>=0&&(d.set(f,i),e.add(i))});let f=new Set;a.forEach((c,g)=>{if(!f.has(g))if("code"===c.type){let e=d.get(g);void 0!==e?(b.push({code:c.value,name:a[e].value}),f.add(e)):b.push({code:c.value}),f.add(g)}else e.has(g)||(b.push({name:c.value}),f.add(g))})}return b}function bw(a,b){let c=a.indexOf(b);if(c<0)return"";let d=Math.max(0,c-24),e=Math.min(a.length,c+b.length+24);return a.slice(d,e).replace(/\s+/gu," ").trim()}function bx(a){let b=[];for(let c of a){let a=b.findIndex(a=>!!(a.code&&c.code&&bs(a.code,c.code)||a.name&&c.name&&bt(a.name,c.name)));if(a<0){b.push(c);continue}"pair"===c.kind&&"pair"!==b[a].kind&&(b[a]=c)}return b}function by(a){let b=(0,R.UO)(a),c=(0,R.H4)(a),d=a.split(/\r?\n/u),e=new Set;for(let a of b)for(let b=a.start;b<a.end;b+=1)e.add(b);let f=d.filter((a,b)=>!e.has(b)).join("\n"),g=bv(c),h=bv(f),i=g.filter(a=>a.code).map(a=>a.code),j=g.filter(a=>a.name).map(a=>a.name),k=h.filter(a=>a.code).map(a=>a.code),l=h.filter(a=>a.name).map(a=>a.name),m=a=>k.some(b=>bs(a,b)),n=a=>l.some(b=>bt(a,b)),o=a=>i.some(b=>bs(b,a)),p=a=>j.some(b=>bt(b,a)),q=[];for(let a of g){let b=!a.code||m(a.code)||!!a.name&&n(a.name),c=!a.name||n(a.name)||!!a.code&&m(a.code);a.code&&!b&&a.name&&br(a.name)?q.push({kind:"pair",value:a.name,code:a.code,name:a.name,counterpart:a.code}):a.code&&!b?q.push({kind:"code",value:a.code,code:a.code,counterpart:a.name}):a.name&&br(a.name)&&!c&&q.push({kind:"name",value:a.name,name:a.name,counterpart:a.code})}let r=[];for(let a of h){let b=!a.code||o(a.code)||!!a.name&&p(a.name),c=!a.name||p(a.name)||!!a.code&&o(a.code);a.code&&!b&&a.name&&br(a.name)?r.push({kind:"pair",value:a.name,code:a.code,name:a.name,context:bw(f,a.code)}):a.code&&!b?r.push({kind:"code",value:a.code,code:a.code,context:bw(f,a.code)}):a.name&&br(a.name)&&!c&&r.push({kind:"name",value:a.name,name:a.name,context:bw(f,`《${a.name}》`)})}return{declaredNotUsed:bx(q),usedNotDeclared:bx(r),stats:{declaredCodes:i.length,declaredNames:j.length,usedCodes:k.length,usedNames:l.length}}}function bz(a){return"pair"===a.kind?`《${a.name}》(${a.code})`:"code"===a.kind?`标准编号「${a.value}」`:`《${a.value}》`}async function bA(a){let b=await (0,R.Z2)(a.markdown,a.factsModel,{scopeClassifier:a.factTokenScopeClassifier}),c=(0,aC.Uk)(a.tenderRequirements).map(({item:a})=>(0,aC.E6)(a)),d=a.markdown.split(/\n/u).filter(a=>/^#{2,4}\s/u.test(a.trim())).map(a=>(0,aC.NT)(a)).filter(Boolean).slice(0,80),f=(0,o.s3)(a.markdown,o.ev),g=await (0,aB.Mv)(c,[...d,...f]),i=await (0,aB.Mv)(a.evaluationCriteriaItems||[],d),j=new Map((await Promise.all(a.chapters.map(async b=>[b.title,await a.professionalDepthClassifier.analyze(b.content)]))).filter(a=>!!a[1]));return[...(0,l.yT)("toc-consistency",()=>a.promptDocumentRules?.forbidToc?[]:[...(0,R.gN)(a.markdown),...(0,R.f8)(a.markdown)]),...(0,l.yT)("section-numbering",()=>(0,R.Jn)(a.markdown)),...(0,l.yT)("section-count-overflow",()=>(0,R.VW)(a.chapters)),...(0,l.yT)("heading-duplicate",()=>(0,R.kw)(a.markdown)),...(0,l.yT)("structure-integrity",()=>(0,bh.dC)(a.markdown)),...(0,l.yT)("templated-label",()=>(0,bi.D9)(a.markdown)),...(0,l.yT)("title-integrity",()=>(0,bi.uw)(a.markdown)),...(0,l.yT)("evaluation-criteria-coverage",()=>(0,R.wl)(a.markdown,a.evaluationCriteriaItems||[],{semanticSimilarity:i})),...await (0,l.ll)("requirements-coverage",()=>(0,aC.tH)({markdown:a.markdown,entries:(0,aC.Uk)(a.tenderRequirements).map(({item:a})=>a),bodyTexts:f,semanticSimilarity:g})),...(0,l.yT)("fabricated-start-date",()=>(0,o.cf)(a.markdown,a.factsModel,a.materialEvidence)),...(0,l.yT)("field-value-mismatch",()=>(0,o.a8)(a.markdown,a.factsModel)),...(0,l.yT)("area-arithmetic",()=>(0,o.u2)(a.markdown)),...(0,l.yT)("resource-consistency",()=>(0,o.rA)(a.markdown,{laborPeakAuthority:(0,T.yB)(a.blueprintData)})),...(0,l.yT)("node-schedule-consistency",()=>(0,o.Et)(a.markdown)),...(0,l.yT)("cross-section-numeric-conflict",()=>(0,o.H)(a.markdown)),...(0,l.yT)("fact-reconciliation",()=>(0,bj.az)({markdown:a.markdown,billFactLock:a.billFactLock,blueprintData:a.blueprintData,factsModel:a.factsModel})),...(0,l.yT)("greening-maintenance-mismatch",()=>(0,o.x5)(a.markdown,a.factsModel)),...(0,l.yT)("street-light-count-mismatch",()=>(0,o.Tz)(a.markdown,a.factsModel)),...(0,l.yT)("spec-location-mismatch",()=>(0,o.$$)(a.markdown,a.factsModel.specAuthorityMap)),...await (0,l.ll)("blueprint-citation-consistency",async()=>a.blueprintData?(await (0,p.dr)(a.markdown,a.blueprintData)).filter(a=>"error"===a.level):[]),...await (0,l.ll)("cross-project-value-copy",()=>(0,o.iy)(a.markdown,(0,T.L$)(a.blueprintData))),...(0,l.yT)("phase-labor-mixing",()=>(0,o.cv)(a.markdown,(0,T.i2)(a.blueprintData))),...(0,l.yT)("equipment-batch-conflict",()=>(0,o.KE)(a.markdown,(0,T.Be)(a.blueprintData))),...(0,l.yT)("preliminary-action-timing",()=>(0,o.fg)(a.markdown,a.blueprintData?.contract.totalDays)),...(0,l.yT)("foundation-form-residue",()=>(0,o.ex)(a.markdown)),...(0,l.yT)("ambiguous-either-or",()=>(0,o.Fr)(a.markdown)),...(0,l.yT)("excavation-depth-lock",()=>(0,o.bq)(a.markdown)),...(0,l.yT)("excavation-hazard-classification",()=>(0,o.LA)(a.markdown,a.factsModel)),...(0,l.yT)("support-form-fact-consistency",()=>(0,o.ek)(a.markdown,a.factsModel)),...(0,l.yT)("equipment-entry-timing",()=>(0,o.fQ)(a.markdown,a.factsModel)),...(0,l.yT)("fabricated-award",()=>(0,o.hu)(a.markdown,a.factsModel,a.tenderRequirements)),...(0,l.yT)("bidder-qualification-section",()=>(0,o.Rv)(a.markdown)),...(0,l.yT)("cross-chapter-duplicate-section",()=>(function(a,b){let c=a=>a.replace(/^\d+(?:\.\d+)*[、..\s]*/u,"").replace(/[\s,,、]/gu,""),d=new Map;a.forEach((a,b)=>{let c=(0,bg.GQ)(a.title).replace(/[\s,,、]/gu,"");c&&!d.has(c)&&d.set(c,b)});let e=new Map,f=new Map;a.forEach((a,b)=>{let d=new Set;for(let g of(a.content||"").split(/\r?\n/u)){let a=/^###\s+(.+?)\s*$/u.exec(g.trim());if(!a)continue;let h=c(a[1]);if(h.length<8||d.has(h))continue;d.add(h),f.has(h)||f.set(h,a[1].replace(/^\d+(?:\.\d+)*[、..\s]*/u,"").trim());let i=e.get(h)||[];i.push(b),e.set(h,i)}});let g=new Map;b.forEach(a=>{let b=d.get((0,bg.GQ)(a.title).replace(/[\s,,、]/gu,""));if(void 0!==b)for(let d of a.sections||[]){let a=c(d);if(a.length<8)continue;let e=g.get(a)||[];e.includes(b)||e.push(b),g.set(a,e)}});let h=[];for(let[b,c]of e){if(c.length<2)continue;let d=g.get(b)||[];if(d.length>=2)continue;let e=1===d.length?d[0]:c[0],i=f.get(b)||b;for(let b of c){if(b===e)continue;let c=a[b];h.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",chapterId:c.id,sectionTitle:i,message:`跨章同名小节:“${i}”已在「${a[e].title}」落位,本章(「${c.title}」)同名小节属跨章串章重复,须改写归并`,suggestion:"同一主题小节全文只保留一处(归属章);非归属章的同名小节:内容与本章主题相关则改写标题为可区分的具体主题并归并内容,与本章无关则整节删除(含标题行);修复后全文不得再出现跨章同名小节。"})}}return h})(a.chapters,a.effectiveChapters||a.template.chapters||[])),...(0,l.yT)("basic-info-schedule-field",()=>(0,o.cT)(a.markdown)),...(0,l.yT)("duplicate-table",()=>(0,o.ub)(a.markdown)),...(0,l.yT)("duplicate-paragraph",()=>(0,o.cl)(a.markdown)),...(0,l.yT)("paragraph-tail-repeat",()=>(0,o.AD)(a.markdown)),...(0,l.yT)("collision-numbered-heading",()=>(0,o.xR)(a.markdown)),...(0,l.yT)("inverted-date-range",()=>(0,o.jP)(a.markdown)),...(0,l.yT)("resource-triad-section-hierarchy",()=>(0,o.zP)(a.markdown)),...await (0,l.yT)("support-system-conflict",()=>(0,o.r8)(a.markdown,(0,o.P3)(a.factsModel))),...(0,l.yT)("dangerous-list-consistency",()=>(0,o.vH)(a.markdown)),...(0,l.yT)("hazard-exclusion-contradiction",()=>(0,o.m6)(a.markdown)),...await (0,l.yT)("six-hundred-percent-coverage",()=>(0,o.sn)(a.markdown)),...await (0,l.yT)("self-undermining-candidate",()=>(0,o.YN)(a.markdown)),...(0,l.yT)("paragraph-opening-repeat",()=>(0,o.y2)(a.markdown)),...(0,l.yT)("flow-form-repeat",()=>(0,bi.Q9)(a.markdown)),...(0,l.yT)("skeleton-fingerprint",()=>(0,bi.o0)(a.markdown)),...(0,l.yT)("sentence-pattern-repeat",()=>(0,bi.TN)(a.markdown)),...(0,l.yT)("repeated-word",()=>(0,o.Xc)(a.markdown)),...await (0,l.yT)("commercial-data-in-body",()=>(0,o.mC)(a.markdown)),...(0,l.yT)("overview-recap",()=>(0,o.l4)(a.markdown)),...(0,l.yT)("closure-phrase-density-cap",()=>(0,o.dF)(a.markdown)),...await (0,l.ll)("parameter-concept-conflict",()=>aT(a.markdown,{billFactLock:a.billFactLock,blueprintQuantities:a.blueprintData?.quantities})),...await (0,l.ll)("internal-terminology-anchor",()=>(0,S.WT)(a.markdown)),...(0,l.yT)("construction-system-coverage",()=>(function(a){let b=[...new Set(a.flatMap(a=>aU.filter(b=>a.title.includes(b))))];if(0===b.length)return[];let c=a.map(a=>a.content||"").join("\n"),d=b.filter(a=>!c.includes(a));if(0===d.length)return[];let e=a.find(a=>d.some(b=>a.title.includes(b)));return[{level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:`章节大纲涉及的专业工程系统在正文零覆盖:${d.join("、")}`,suggestion:"对应章节必须补写该专业工程的施工方案正文(施工概况/施工流程/施工方法,含可核实的工艺参数),不得整章零覆盖。",chapterId:e?.id}]})(a.chapters)),...(0,l.yT)("dangerous-applicability",()=>(function(a){let b=aY(a);return 0===b.applicableNames.length?[]:b.zonePresent?0===b.missingNames.length?[]:[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`危大工程辨识清单遗漏适用项:${b.missingNames.join("、")}(正文已出现适用前提但辨识清单未列入)`,suggestion:"按建办质〔2018〕31号逐项辨识:将遗漏项补入危大工程辨识清单并标注分级,超过一定规模的专项施工方案需专家论证。"}]:[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`正文出现危大工程适用前提(${b.applicableNames.join("、")})但全文未编制危大工程辨识清单`,suggestion:"必须编制危大工程辨识清单:按建办质〔2018〕31号逐项辨识并标注分级,超过一定规模的专项施工方案需专家论证。"}]})(a.markdown)),...(0,l.yT)("innovation-tech-coverage",()=>(0,R.Ef)(a.markdown,a.effectiveChapters||a.template.chapters||[])),...(0,l.yT)("instruction-like-heading",()=>(0,R.K1)(a.markdown)),...(0,l.yT)("formal-heading-hierarchy",()=>(0,R.Fv)(a.markdown)),...(0,l.yT)("formal-content-integrity",()=>(0,R.k0)(a.markdown)),...(0,l.yT)("punctuation-artifact",()=>(0,R.vZ)(a.markdown)),...(0,l.yT)("table-quality",()=>(0,R.NS)(a.markdown)),...(0,l.yT)("table-spam",()=>(0,R.SN)(a.markdown)),...(0,l.yT)("basis-regulations-coverage",()=>(0,R.AN)(a.markdown,a.blueprintData)),...(0,l.yT)("basis-regulations-cross",()=>(function(a){let b=by(a);if(b.stats.declaredCodes+b.stats.declaredNames===0)return[];let c=[],d=b.usedNotDeclared,e=b.declaredNotUsed;for(let a of d.slice(0,12))c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`编制依据对账缺口:正文引用${bz(a)}未列入编制依据小节${a.context?`(证据:…${a.context}…)`:""}`,suggestion:"请将该标准名称及编号按编号族补入编制依据小节同类目(与正文引用形态一致),不得改动正文既有引用。"});if(d.length>12){let a=d.slice(12);c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`编制依据对账缺口:正文另有 ${a.length} 处引用标准未列入编制依据小节(${a.slice(0,6).map(bz).join("、")} 等)`,suggestion:"请统一核对编制依据小节与正文引用清单,补齐全部未声明标准条目。"})}for(let a of e.slice(0,12))c.push({level:"warning",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`编制依据对账缺口:编制依据小节的${bz(a)}在正文无引用`,suggestion:"请在对应施工章节的工序/验收要求中落位该标准(或从未使用的编制依据中移除),保持编制依据与正文一一对应。"});if(e.length>12){let a=e.slice(12);c.push({level:"warning",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`编制依据对账缺口:编制依据小节另有 ${a.length} 条声明在正文无引用(${a.slice(0,6).map(bz).join("、")} 等)`,suggestion:"请统一核对编制依据与正文引用清单,未使用条目在正文落位或从编制依据移除。"})}return c})(a.markdown)),...(0,l.yT)("resource-breakdown-consistency",()=>(0,R.EJ)(a.markdown,a.blueprintData)),...(0,l.yT)("section-content-integrity",()=>(0,R.qK)(a.markdown,a.chapters)),...(0,l.yT)("professional-content",()=>(0,R.ji)(a.chapters,j)),...(0,l.yT)("professional-score",()=>(0,R.i0)(a.chapters,j)),...(0,l.yT)("generic-professional-content",()=>(0,R.ST)(a.chapters,j)),...(0,l.yT)("management-measure-number",()=>(0,R.xX)(a.chapters,j)),...await (0,l.yT)("closed-loop-density",()=>(0,R.Zu)(a.markdown)),...await (0,l.yT)("cross-chapter-consistency",()=>(0,R.qm)(a.markdown,a.factsModel,a.scopeConflicts,j)),...await (0,l.yT)("process-spec-conflict",()=>(0,R.hr)(a.markdown,a.factsModel)),...(0,l.yT)("evidence-usage-coverage",()=>aj(a.markdown,a.factsModel)),...await (0,l.yT)("paragraph-generic",()=>ak(a.markdown,a.professionalDepthClassifier)),...await (0,l.yT)("construction-org-generic-language",()=>(0,ah.Fw)(a.chapters)),...(0,l.yT)("construction-org-control-loop",()=>(0,ah.Hl)(a.chapters)),...(0,l.yT)("construction-org-professional-chain",()=>(0,ah.iX)({markdown:a.markdown,factsModel:a.factsModel,chapters:a.chapters})),...(0,l.yT)("construction-org-consistency",()=>(function(a,b){let c=[];if(!/施工组织设计|施工组织|施组|质量|安全|文明施工/u.test(a))return c;for(let d of av){if("equipment-counts"===d.kind){c.push(...function(a,b,c){let d=(0,au.AK)(a);if(0===d.length)return[];let{names:e,counts:f}=function(a,b){let c=[],d=new Map,e=a=>{c.includes(a)||c.push(a)};for(let c of b){let b=a[c];if(Array.isArray(b))for(let a of b){if(!a||"object"!=typeof a||!("value"in a)||"string"!=typeof a.value)continue;for(let b of(0,au.AK)(a.value))e(b.name),d.has(b.name)||d.set(b.name,b.count);let b=aw(a.value);if(b.length>12||/\d/u.test(b))continue;let c=(0,au.Rh)(b);c&&e(c)}}return{names:c,counts:d}}(b,c.factGroups);if(0===e.length)return[];let g=[],h=new Map,i=[],j=new Set;for(let a of d){let b=e.find(b=>aA(a.name,[b]));if(b){let c=f.get(b);if(void 0===c||c===a.count)continue;let d=`${a.name}:${[a.count,c].sort((a,b)=>a-b).join("-")}`;if(j.has(d))continue;j.add(d),i.push(`${a.name}:正文 ${a.count} 台、资料 ${c} 台`);continue}if(ax.test(a.name))continue;let c=h.get(a.name);(!c||a.raw.length<c.length)&&h.set(a.name,a.raw)}if(h.size>0){let a=[...h].map(([a,b])=>b.length-a.length<=1?b:a).slice(0,5);g.push({level:"warning",message:`施组数据一致性风险:机械数量型号 可能与项目图谱/事实不一致(${a.join("、")})`,suggestion:`请核对机械数量型号在${c.locations}中的表述,统一以招标文件、项目图谱和可信事实为准。`})}return i.length>0&&g.push({level:"warning",message:`施组数据一致性风险:机械数量型号 正文台数与项目图谱/事实不一致(${i.slice(0,5).join(";")})`,suggestion:`同一机械台数全文档只允许一套口径:请以资料事实/项目图谱中的机械配置为准统一${c.locations}中的台数表述(正文与资料并存时以资料为准)。`}),g}(a,b,d));continue}let e=az(b,d.factGroups),f=(function(a,b){let c=[];for(let d of b){let b=new RegExp(d.source,d.flags.includes("g")?d.flags:`${d.flags}g`);for(let d of a.matchAll(b)){let a=aw(d[1]||d[0]||"");!ay.test(a)&&a.length>=2&&a.length<=80&&c.push(a)}}return[...new Set(c)]})(a,d.patterns??[]).filter(a=>!ax.test(a)&&!aA(a,e)).slice(0,5);f.length>0&&c.push({level:"warning",message:`施组数据一致性风险:${d.label} 可能与项目图谱/事实不一致(${f.join("、")})`,suggestion:`请核对${d.label}在${d.locations}中的表述,统一以招标文件、项目图谱和可信事实为准。`})}return c})(a.markdown,a.factsModel)),...(0,l.yT)("construction-org-chapter-data-coverage",()=>(function(a,b){let c=[],d=az(b,["project","schedule","resources","quality","safety","preciseFacts"]);if(0===d.length)return c;for(let b of a)/概况|进度|资源|质量|安全|文明|工资|应急/u.test(`${b.title} ${(b.sections||[]).join(" ")}`)&&(d.some(a=>a.length>=3&&b.content.includes(a.slice(0,Math.min(10,a.length))))||c.push({level:"warning",message:`${b.title} 缺少可识别的项目图谱事实支撑`,suggestion:"请至少引用工程名称、工期、工程量、资源、风险、质量安全目标等项目专属事实之一,避免纯模板化。"}));return c})(a.chapters,a.factsModel)),...(0,l.yT)("construction-org-major-content",()=>(0,ah.Av)(a.chapters,a.markdown)),...(0,l.yT)("construction-org-division-section",()=>(0,ah.CS)(a.chapters,a.markdown)),...(0,l.yT)("major-content-governance",()=>(0,ah.l5)(a.markdown)),...(0,l.yT)("construction-org-bonus-module",()=>(0,ah.b7)(a.chapters)),...(0,l.yT)("chapter-dependency",()=>al(a.chapters,j)),...(0,l.yT)("document-delivery-score",()=>(function(a,b,c,d){let e={factuality:2*!(0,R.vY)(a,c).some(a=>"error"===a.level),structure:b.length>0&&b.every(b=>a.includes(b.title)&&(0,h.V7)(b.content)>=600)?2:1,depth:0===(0,R.i0)(b,d).length?2:1,executable:0===al(b,d).length?2:1,evidence:0===aj(a,c).length?2:1},f=e.factuality+e.structure+e.depth+e.executable+e.evidence;return[{level:"info",message:`文档交付评分报告:总分 ${f}/10,事实${e.factuality},结构${e.structure},专业${e.depth},可执行${e.executable},证据${e.evidence}`,suggestion:f>=8?"可交付,但建议继续优化证据使用覆盖率和章节依赖链路。":"建议优先修复低分维度后再导出。"}]})(a.markdown,a.chapters,a.factsModel,j)),...(0,l.yT)("generated-fact-verification",()=>b),...(0,l.yT)("numeric-traceability",()=>(0,V.FA)(a.markdown,a.factsModel)),...(0,l.yT)("table-arithmetic-consistency",()=>(0,o.qE)(a.markdown)),...(0,l.yT)("duplicate-basic-info",()=>(0,R.iC)(a.markdown)),...await (0,l.yT)("formal-style",()=>(0,R.BV)(a.markdown)),...(0,l.yT)("tertiary-heading",()=>(0,O.dh)(a.markdown)),...(0,l.yT)("min-chapter-section",()=>(0,R.Ty)(a.chapters)),...(0,l.yT)("hollow-table-cell",()=>(0,R.cG)(a.markdown)),...(0,l.yT)("schedule-duration-overrun",()=>(0,R.v4)(a.markdown)),...(0,l.yT)("caliber-consistency",()=>(0,R.lg)(a.markdown,a.truthValues||[])),...(0,l.yT)("hazard-parameter-binding",()=>(0,R.Bs)(a.markdown,a.truthValues||[])),...(0,l.yT)("planned-section-placement",()=>(0,R.hd)(a.markdown,a.chapters)),...await (0,l.yT)("precise-fact-usage",()=>(0,R.N1)(a.markdown,a.factsModel,a.chapters)),...(0,l.yT)("parameter-obligation-usage",()=>(function(a,b,c=[]){if(0===c.length)return[];let d=B(a,b,c),f=d.used.length+d.relevantMissed.length;if(f<8||d.used.length/f>=.9)return[];let g=d.relevantMissed.slice(0,3).map(a=>String(a.value).slice(0,30));return[{level:"error",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`可靠参数义务落位不足:${d.used.length}/${f}(相关而遗漏 ${d.relevantMissed.length} 项${g.length>0?`,缺失如 ${g.join("、")}`:""})`,suggestion:"请将资料中的可靠参数(规格/型号/尺寸/强度/规范编号等)在对应章节的对应位置自然写入,保持原值原形态(数字、单位、编号中的连字符与年份不得改写、拆分或省略);商务金额、单价、税率、预留金类数据一律不得写入正文。",provenance:{detectorId:"parameter-obligation-usage",fingerprint:(0,e.c6)(a)}}]})(a.markdown,a.factsModel,a.chapters)),...await (0,l.yT)("boq-placement",()=>(0,R.S2)(a.markdown,a.chapters,a.factsModel)),...await (0,l.yT)("stage-phrasing",()=>a2(a.markdown)),...await (0,l.yT)("emergency-section-depth",()=>bf(a.markdown)),...(0,l.yT)("boq-row-trace",()=>(0,V.QP)((0,V.JV)(a.markdown,a.factsModel))),...(0,l.yT)("drawing-reference",()=>(0,R.yd)(a.markdown,a.drawingFactLock)),...(0,l.yT)("web-evidence-leakage",()=>(function(a){let b=[];return ap.test(a)&&b.push({level:"warning",message:"正文包含联网增强过程性表述",suggestion:"请删除联网检索、网页资料、搜索结果等过程性话术,改为正式交付语言。"}),b})(a.markdown)),...(0,l.yT)("formal-placeholder",()=>(0,R.bM)(a.markdown)),...(0,l.yT)("prompt-example-leak",()=>(0,R.M$)(a.markdown,a.promptBindings)),...(0,l.yT)("degenerate-content",()=>(0,R.AC)(a.markdown,a.chapters)),...(0,l.yT)("planned-auto-spec-gate",()=>(0,R.mR)(a.markdown,a.template)),...(0,l.yT)("bid-composition-body-table",()=>(0,O.NN)(a.markdown,{bodyTableForbidden:a.bodyTableForbidden,plannedChapterTitles:(a.effectiveChapters?.length?a.effectiveChapters:a.template.chapters).filter(a=>(a.tablePlans?.length||0)>0||(a.tableSections?.length||0)>0||(a.diagramRequirements?.length||0)>0).map(a=>a.title),requiredTableTitles:a.promptDocumentRules?.requiredTables||[]})),...(0,l.yT)("bid-composition-body-figure",()=>(0,O.Fo)(a.markdown,a.bodyFigureForbidden)),...(0,l.yT)("identity-marks-forbidden",()=>(0,o.Vl)(a.markdown,a.identityMarksForbidden)),...(0,l.yT)("planned-structure",()=>(0,O.UG)(a.markdown,a.template,a.bodyTableForbidden)),...(0,l.yT)("table-caption",()=>(0,O.XU)(a.markdown,a.bodyTableForbidden)),...await (0,l.yT)("prompt-document-rule",()=>(0,O.Ed)(a.markdown,a.promptDocumentRules,void 0,{bodyTableForbidden:a.bodyTableForbidden,coverForbidden:a.coverForbidden})),...await (0,l.yT)("local-adaptation-keyword",()=>(0,o.cJ)(a.markdown,a.factsModel)),...(0,l.yT)("boq-division-coverage",()=>(0,V.sl)(a.markdown,a.chapters,a.factsModel))]}let bB={project:"项目基础事实",schedule:"工期与节点",quality:"质量目标与验收",safety:"安全文明要求",resources:"资源投入依据",quantities:"清单/图纸/工程量事实",rules:"规范规则与验收要求"};var bC=c(52922);function bD(a){let b=a.replace(/[\u200b-\u200f\u2060\ufeff]/gu,"").trim();return!(!b||/[。!?]/u.test(b))&&(b.match(/第[一二三四五六七八九十百千\d]+[章节篇]/gu)||[]).length+(b.match(/\d+(?:\.\d+)+/gu)||[]).length>=3}function bE(a){let b=a.split(/[,,、\s]+/u).map(a=>a.trim()).filter(Boolean);return!(b.length<8)&&b.reduce((a,b)=>a+b.length,0)/b.length<8}function bF(a){return a.split("\n").filter(a=>!(0,bC.X9)(a)&&!bD(a)).flatMap(a=>a.split(/[。;;]/u)).map(a=>a.trim()).filter(a=>a.length>=12).filter(a=>{let b=(a.match(/[\u4e00-\u9fff]/gu)||[]).length,c=a.replace(/\s+/gu,"").length;return b>=8&&b/Math.max(1,c)>=.15}).filter(a=>!bE(a))}function bG(a,b){let c=new Set;for(let d of bF(a))for(let a of d.match(b)||[])c.add(a);return c}let bH=/\d|确保|保证|杜绝|实行|采用|落实|建立|执行|达到|不低于|不少于|控制在|符合|按照|承诺/u,bI=["危险性较大的分部分项工程安全管理","扬尘污染防治措施","建筑工人实名制管理","农民工工资专用账户与工资支付保障","生产安全事故应急预案与应急演练","绿色施工与四节一环保措施"],bJ=["危险源辨识与风险识别评估","编制专项施工方案","组织专家论证并履行审批程序","对作业人员进行安全技术交底","施工过程监测与监控量测","分部分项工程验收","三级配电系统","两级漏电保护装置","漏电保护器与接地保护","实名制考勤与人员管理","农民工工资专用账户银行代发","应急预案编制与响应","绿色施工措施与评价"];function bK(a){return a.replace(/^第[一二三四五六七八九十百千万\d]+[章节]\s*/u,"").replace(/^\d+(?:\.\d+)*[、..\s]+/u,"").replace(/^[((]?[一二三四五六七八九十]+[))、..\s]+/u,"").replace(/\s+/gu,"").trim()}async function bL(a){let{blocks:b,completeBlocks:c}=await (0,bC.Pm)(a);return Math.round((.7*Math.min(1,c/Math.max(6,Math.ceil((0,h.V7)(a)/1500)))+.3*(b?c/b:0))*100)}let bM=/目录|层级|编号|表格|表头|分隔线|页码|空小节|缺少规划小节|小节只有标题|缺节/u,bN=/跨章一致性复核|事实一致性冲突|事实冲突|评分项要求|可靠精确参数|应急预案|属地创优|工伤保险|专业评分|深度不足|事实反查|存在多个值|已确认事实未在正文中落位|事实未在正文中落位/u,bO=/缺少规划小节|小节只有标题|空小节|只有标题或表格无正文|小节内容补写未完成|小节生成未达标|同名小节|H4 标题|正文缺少章节标题|小节正文过短/u;function bP(a){let b=new Map;return a.split("\n").forEach((a,c)=>{if(!((0,bC.X9)(a)||bD(a)))for(let d of a.matchAll(/[^。;;]+/gu)){let a=d[0]||"",e=a.trim(),f=e.replace(/[\s,,、::()()【】[\]《》“”"'`]/gu,"");if(f.length<12)continue;let g=(d.index||0)+(a.length-a.trimStart().length),h=b.get(f)||[];h.push({lineIndex:c,start:g,end:g+e.length,raw:e}),b.set(f,h)}}),[...b.entries()].map(([a,b])=>({key:a,occurrences:b}))}function bQ(a){let b=bP(a),c=b.reduce((a,b)=>a+b.occurrences.length,0),d=b.length,e=c-d;return{totalSentences:c,uniqueSentences:d,duplicateInstances:e,duplicateRate:c>0?e/c:0}}async function bR(a,b){let c=await (0,bC.Bt)(a,b),d=(0,bC.Ye)(a),e=bQ(a).duplicateRate,f=await (0,bC.gE)(a,b),g=(0,bC.nY)(a),h=(0,bi.vL)(a),i=bi.y9.map(b=>({patternId:b.id,patternLabel:b.label,count:(0,bi.be)(a,b)})).filter(a=>a.count>=h),j=i.length>=2||i.some(a=>a.count>=2*h);return{level:f.heavyTemplated||"heavy"===c.level||j?"heavy":"medium"===c.level||i.length>0?"medium":"light",fillerRatio:c.ratio,fillerSentences:c.fillerSentences,totalSentences:c.totalSentences,vagueHitCount:d.reduce((a,b)=>a+b.count,0),vaguePhrases:d.map(a=>a.phrase),duplicateSentenceRate:e,crossProjectResidue:g,difficultyCountermeasureRatio:f.ratio,difficultyBothCount:f.bothCount,difficultyQuantifiedCount:f.quantified,difficultyCountermeasures:f.countermeasures,difficultyHeavyTemplated:f.heavyTemplated,sentencePatternHits:i}}function bS(a){let b=a.replace(/[\u200b-\u200f\u2060\ufeff]/gu,"").split(/(?=^#{1,6}\s)/mu),c=[];for(let a of b){if(!a.trim())continue;let b=a.split("\n"),d=/^#{1,6}\s/u.test(b[0]||""),e=d?(b[0]||"").trim():"",f=d?bK(e.replace(/^#{1,6}\s+/u,"")):"",g=d?b.slice(1):b,h=[],i=[];for(let a of g){if(!a.trim()){i.length>0&&(h.push(i),i=[]);continue}i.push(a)}i.length>0&&h.push(i);let j=[];for(let a of h){let b=a.filter(a=>!bD(a));b.some(a=>(function(a){let b=a.replace(/[\u200b-\u200f\u2060\ufeff]/gu,"").trim();return!(b.length<12||(0,bC.X9)(b)||bD(b))&&!bE(b)})(a))&&j.push(b.map(a=>a.trim()).join("\n"))}c.push({heading:e,headingText:f,hasSubstantiveBody:j.length>0,substantiveParagraphs:j})}return c}function bT(a){let b=[];for(let c of bS(a))if(c.hasSubstantiveBody)for(let a of c.substantiveParagraphs)b.push(...function(a){let b=[],c=[],d=0;for(let e of a.split("\n"))d>0&&d+e.length>600&&(b.push(c.join("\n")),c=[],d=0),c.push(e),d+=e.length+1;return c.length>0&&b.push(c.join("\n")),b}(a));return b}async function bU(a){let b=bT(a.markdown),c=await (0,aB.Mv)(b,[...bI,...bJ],a.embedDocuments),d=a=>b.some(b=>c(b,a)>=aB.Eh),e=bI.filter(d).length/bI.length,f=await (0,bC.Bt)(a.markdown,a.embedDocuments);return{completeness:function(a,b,c,d){let e=[...a.matchAll(/^#{1,3}\s+(.+)$/gmu)].map(a=>bK(a[1]||"")).filter(a=>a.length>=2),f=1,g=c?.chapters||[];if(g.length>0){let a=g.map(a=>bK(a.title)).filter(Boolean);f=a.filter(a=>e.some(b=>b.includes(a)||a.includes(b))).length/a.length}else b.length>0&&(f=b.filter(a=>e.some(b=>b.includes(bK(a.title))||bK(a.title).includes(b))).length/b.length);return Math.round((.55*f+.45*d)*100)}(a.markdown,a.chapters,a.template,e),specificity:function(a,b){let c=b.filter(V.O7),d=c.filter(a=>"used"===a.status),e=c.length?d.length/c.length:1,f=d.map(a=>String(a.value||"").replace(/\s+/gu," ").trim()).filter(a=>a.length>=4&&a.length<=60),g=a.map(a=>(a.content||"").replace(/\s+/gu," ")),h=f.filter(a=>g.filter(b=>b.includes(a)).length>=2).length;return Math.round((.55*e+.45*(f.length?h/f.length:1))*100)}(a.chapters,a.factTraces),compliance:function(a,b){let c=bJ.filter(b).length/bJ.length,d=a.split("\n").map(a=>a.replace(/[\u200b-\u200f\u2060\ufeff]/gu,"").trim()).filter(a=>!(!a||/^#{1,6}\s+/u.test(a)||bD(a))&&!/^(?:第[一二三四五六七八九十百\d]+[章节篇]|\d+(?:\.\d+){0,3})\s+[^。;;,,]*$/u.test(a)).join("\n"),e=(0,bC.JD)(d);return Math.round((.8*c+.1*(e.twoStepComplete?1:e.categories.length>0&&e.graded?.6:.3*(e.categories.length>0))+.1*(0,bC.bH)(d).coverage)*100)}(a.markdown,d),executability:await bL(a.markdown),normalization:function(a){let b=a=>"table"===a.category||"format"===a.category||("structure"===a.category?bO.test(a.message):!a.category&&!bN.test(a.message)&&bM.test(a.message));return Math.max(0,100-8*a.filter(a=>"error"===a.level&&b(a)).length-Math.min(3*a.filter(a=>"warning"===a.level&&b(a)).length,30))}(a.issues),uniqueness:function(a,b){let c=b.forbiddenEmptyPhraseHits,d=b.vagueSemanticSentences,e=100*Math.max(0,b.ratio-.1),f=bQ(a),g=Math.max(10,Math.ceil((0,h.V7)(a)/1e4)),i=Math.max(0,f.duplicateInstances-g);return Math.max(0,Math.round(100-4*c-6*d-.5*e-Math.max(60*f.duplicateRate,i)))}(a.markdown,f),moduleCoverageRate:e}}var bV=c(43378),bW=c(31263),bX=c(35547);async function bY(a){let b=a.items.map(a=>a.trim()).filter(Boolean);if(0===b.length)return{total:0,met:0,partial:0,missing:0,simulatedScore:0,criteria:[]};let c=bT(a.markdown),d=bS(a.markdown).map(a=>a.heading).filter(Boolean),e=bF(a.markdown).join(""),f=await (0,aB.Mv)([...c,...d],b,a.embedDocuments),g=b.map((a,b)=>{let g=(0,R.pG)(a),h=g.length>0&&g.some(a=>e.includes(a)),i="",j=0;for(let b of c){let c=f(b,a);c>j&&(j=c,i=b)}if(h||j>=aB.Eh)return{index:b,title:a,status:"met",similarity:j,anchor:i?i.split("\n")[0].replace(/^#{1,6}\s+/u,"").slice(0,80):void 0};let k="",l=0;for(let b of d){let c=f(b,a);c>l&&(l=c,k=b)}return l>=aB.Eh?{index:b,title:a,status:"partial",similarity:l,anchor:k.replace(/^#{1,6}\s+/u,"").slice(0,80)}:{index:b,title:a,status:"missing",similarity:l}}),h=g.filter(a=>"met"===a.status).length,i=g.filter(a=>"partial"===a.status).length,j=g.filter(a=>"missing"===a.status).length,k=Math.round((h+.5*i)/g.length*100);return{total:g.length,met:h,partial:i,missing:j,simulatedScore:k,criteria:g}}let bZ="quality-caliber-c9.2",b$={version:bZ,role:"primary"},b_={version:bZ,role:"secondary",relatedTo:"quality-report"},b0={requirement:.3,structure:.15,dataAnchor:.2,professionalDepth:.15,compliance:.1,factIntegrity:.1},b1={anchors:.85,modules:.15},b2={execution:.45,figure:.35,caption:.2,appendix:.75,bodyCompliance:.25},b3={boq:.4,parameters:.3,drawing:.15,authority:.15},b4={selfHarm:.25,placeholder:.2,length:.15,tableConsistency:.2,regulation:.2},b5={reconciliation:.6,binding:.2,keyFacts:.2},b6=/规格-数值绑定|名称-数值绑定|合计值/u,b7=/编制依据对账缺口/u,b8={selfHarm:/自伤表述/u,placeholder:/占位符|占位式表达/u,length:/正文篇幅/u};function b9(a){let b=a.filter(a=>null!==a.value&&Number.isFinite(a.value));if(0===b.length)return{value:null};let c=b.reduce((a,b)=>a+b.weight,0);return{value:b.reduce((a,b)=>a+b.value*b.weight,0)/c,detail:b.map(a=>a.detail).filter(a=>!!a).join("、")||void 0}}async function ca(a,b){if(!b)return{value:null};let c=a.filter(a=>(0,h.V7)(a.content)>=800);if(0===c.length)return{value:null};let d=[],e=await Promise.all(c.map(a=>b.analyze(a.content).catch(b=>{d.push(`${a.title}:${b instanceof Error?b.message:String(b)}`)}))),f=c.map((a,b)=>({title:a.title,analysis:e[b]})).filter(a=>!!a.analysis);if(0===f.length)return{value:null};let g=0,i=[];for(let a of f){let b=(0,R.Pu)(a.analysis.dimensions),c=(0,R.lH)(a.title);g+=Math.min(1,b/c),b<c&&i.push(`${a.title} ${b}/12`)}let j=g/f.length*100,k=d.length>0?`;⚠ ${d.length} 章语义分析失败未计入(${d.slice(0,2).join(";")})`:"",l=(i.length>0?`专业深度达标 ${Math.round(j)}(薄弱:${i.slice(0,3).join("、")})`:`专业深度达标 ${Math.round(j)}(全部章达目标线)`)+k;return{value:j,detail:l}}async function cb(a){let b=await bU({markdown:a.markdown,chapters:a.chapters,template:a.template,factTraces:a.factTraces,issues:a.issues,embedDocuments:a.embedDocuments}),c=a.bidComposition?.bidType||"unknown",d=a.tenderRequirements?.extracted&&a.tenderRequirements.entries||[],e=d.length>0?(0,aC.U1)(d,a.markdown):[],f=e.filter(a=>"comply"!==a.entry.policy),g=f.length>0?(()=>{let a=f.filter(a=>a.satisfied).length;return{value:a/f.length*100,detail:`锚点全命中 ${a}/${f.length}`}})():{value:null},h=function(a,b){let c=b.filter(a=>!a.exempt),d=c.filter(a=>a.placed),e=d.length>0?(0,s.R8)(a,d.map(a=>a.itemName)):new Map;return b.length>0?{effectiveRows:c.length,placedRows:d.length,explicitRows:e.size,rate:c.length>0?d.length/c.length:null,exemptRows:b.filter(a=>a.exempt).slice(0,50).map(a=>`${a.itemName}${a.quantity?` ${a.quantity}${a.unit}`:""}`)}:void 0}(a.markdown,a.boqRowTraces||[]),i=b9([{...g,weight:b1.anchors},{...function(a){if(!Number.isFinite(a))return{value:null};let b=Math.round(a*bI.length);return{value:100*a,detail:`强制模块 ${b}/${bI.length}`}}(b.moduleCoverageRate),weight:b1.modules}]),j=function(a){let{markdown:b,mode:c,bidComposition:d,effectiveChapters:e,chapters:f}=a;if("blind"===c){let a=[],c=d?.appendixPlan||[];if(c.length>0){let d=c.filter(a=>(0,Q.cM)(b,a)).length;a.push({weight:b2.appendix,value:d/c.length*100,detail:`附表承载 ${d}/${c.length}`})}if(d?.bodyTablePolicy==="forbidden"){let d=function(a,b){let c=-1;for(let d of b){let b=a.indexOf(`## ${d.title}`);b>=0&&(c<0||b<c)&&(c=b)}let d=c>=0?a.slice(0,c):a;return d.match(/^\s*\|/gmu)?.length||0}(b,c);a.push({weight:b2.bodyCompliance,value:Math.max(0,100-25*d),detail:d>0?`正文禁表 违规 ${d} 处`:"正文禁表合规"})}else{let c=(e||[]).reduce((a,b)=>a+(b.tablePlans?.length||0),0);if(c>0&&e){let b=Math.max(0,c-(0,bV.Xi)(e,f).reduce((a,b)=>a+b.plans.length,0));a.push({weight:b2.execution,value:b/c*100,detail:`表执行 ${b}/${c}`})}let d=(e||[]).filter(a=>(a.tablePlans?.length||0)>0||(a.tableSections?.length||0)>0||(a.diagramRequirements?.length||0)>0).map(a=>a.title),g=(0,O.NN)(b,{bodyTableForbidden:!1,plannedChapterTitles:d}).length;a.push({weight:b2.bodyCompliance,value:Math.max(0,100-25*g),detail:g>0?`正文未授权表格 违规 ${g} 处`:"正文表格授权合规"});let h=(0,O.xw)(b,!1);h.total>0&&a.push({weight:b2.caption,value:h.captioned/h.total*100,detail:`题注 ${h.captioned}/${h.total}`})}return b9(a)}let g=[],h=(e||[]).reduce((a,b)=>a+(b.tablePlans?.length||0),0);if(h>0&&e){let a=Math.max(0,h-(0,bV.Xi)(e,f).reduce((a,b)=>a+b.plans.length,0));g.push({weight:b2.execution,value:a/h*100,detail:`表执行 ${a}/${h}`})}let i=(0,bV.cA)({chapters:e});if(i.length>0){let a=(0,bV.Vr)(i,b);g.push({weight:b2.figure,value:a.covered/a.total*100,detail:`图位 ${a.covered}/${a.total}`})}let j=(0,O.xw)(b,d?.bodyTablePolicy==="forbidden");return j.total>0&&g.push({weight:b2.caption,value:j.captioned/j.total*100,detail:`题注 ${j.captioned}/${j.total}`}),b9(g)}({markdown:a.markdown,mode:c,bidComposition:a.bidComposition,effectiveChapters:a.effectiveChapters,chapters:a.chapters}),k=function(a){let{markdown:b,billPlacementAudit:c,parameterUsageAudit:d,drawingFactLock:e,authorityAuditReport:f}=a,g=[];c&&null!==c.rate&&Number.isFinite(c.rate)&&g.push({weight:b3.boq,value:100*c.rate,detail:`BOQ 落位 ${c.placedRows}/${c.effectiveRows}`}),d&&null!==d.rate&&Number.isFinite(d.rate)&&g.push({weight:b3.parameters,value:100*d.rate,detail:`参数 ${d.usedParams}/${d.usedParams+d.relevantMissedCount}`});let h=e?0===e.groups.length?"图纸事实锁无可用分组(无图纸类证据入库)":void 0:"图纸事实锁不可用(未构建或构建失败)";if(e&&e.groups.length>0){let a=(0,bW.SL)(e,b);g.push({weight:b3.drawing,value:100*a.rate,detail:`图纸事实 ${a.referenced.length}/${e.groups.length}`})}if(f){let a=f.unregisteredCount+f.derivationGaps.length+f.processGaps.length;g.push({weight:b3.authority,value:Math.max(0,100-5*a),detail:a>0?`无主数值 缺口 ${a} 处`:"无主数值 0 缺口"})}let i=b9(g);return h&&null!==i.value&&(i.detail=`${i.detail?`${i.detail};`:""}⚠ ${h},图纸分量未计量(本维度按剩余分量重归一)`),i}({markdown:a.markdown,billPlacementAudit:h,parameterUsageAudit:a.parameterUsageAudit,drawingFactLock:a.drawingFactLock,authorityAuditReport:a.authorityAuditReport}),l=await ca(a.chapters,a.professionalDepthClassifier),m=function(a,b){let c=b=>a.filter(a=>b.test(a.message)).length,d=c(b8.selfHarm),e=c(b8.placeholder),f=c(b8.length),g=(0,bX.OV)(b),h=by(b),i=h.declaredNotUsed.length,j=h.usedNotDeclared.length,k=h.stats.declaredCodes+h.stats.declaredNames>0?{weight:b4.regulation,value:Math.max(0,100-(i+j)*20),detail:i+j>0?`编制依据缺口 ${i+j} 处(声明未用 ${i}/引用未声明 ${j})`:"编制依据对账 0 缺口"}:{weight:b4.regulation,value:null};return b9([{weight:b4.selfHarm,value:Math.max(0,100-25*d),detail:d>0?`自伤 ${d} 处`:"自伤 0"},{weight:b4.placeholder,value:Math.max(0,100-25*e),detail:e>0?`占位符 ${e} 处`:"占位符 0"},{weight:b4.length,value:Math.max(0,100-50*f),detail:f>0?`篇幅超限 ${f} 条`:"篇幅达标"},{weight:b4.tableConsistency,value:Math.max(0,100-20*g),detail:g>0?`表内不自洽 ${g} 处`:"表自洽 100%"},k])}(a.issues,a.markdown),n=function(a,b){let c=a.filter(a=>"error"===a.level&&"fact_consistency"===a.category&&!b7.test(a.message)),d=c.filter(a=>b6.test(a.message)),e=[{weight:b5.reconciliation,value:Math.max(0,100-20*c.length),detail:c.length>0?`对账冲突 ${c.length} 条`:"对账零冲突"},{weight:b5.binding,value:Math.max(0,100-20*d.length),detail:d.length>0?`绑定冲突 ${d.length} 条`:"绑定零冲突"}];return b&&null!==b.rate&&Number.isFinite(b.rate)&&e.push({weight:b5.keyFacts,value:100*b.rate,detail:`关键事实 ${b.placed}/${b.specs}`}),b9(e)}(a.issues,a.keyFactPlacementAudit),o=[{key:"requirement",label:"要求实体响应",...i,weight:b0.requirement},{key:"structure",label:"结构呈现落实",...j,weight:b0.structure},{key:"dataAnchor",label:"数据锚定",...k,weight:b0.dataAnchor},{key:"professionalDepth",label:"专业深度",...l,weight:b0.professionalDepth},{key:"compliance",label:"合规与规范",...m,weight:b0.compliance},{key:"factIntegrity",label:"事实完整与一致性",...n,weight:b0.factIntegrity}],p=o.filter(a=>null!==a.value&&Number.isFinite(a.value)),q=p.reduce((a,b)=>a+b.weight,0),r=q>0?p.reduce((a,b)=>a+b.value*b.weight,0)/q:0,t=p.length,u=o.length,v=q>=.9,w=Math.round(r),x=p.map(a=>({key:a.key,label:a.label,score:Math.round(a.value),weight:a.weight,detail:a.detail})),y=a.issues.filter(a=>"error"===a.level&&(0,R.R9)(a)).length,z=Math.max(0,Math.min(99,Math.round(w-Math.min(10,3*y)))),A=await bR(a.markdown,a.embedDocuments),B=a.evaluationCriteriaItems&&a.evaluationCriteriaItems.length>0?await bY({items:a.evaluationCriteriaItems,markdown:a.markdown,embedDocuments:a.embedDocuments}):void 0,C=d.length>0?d.map((a,b)=>({text:a.text.slice(0,160),category:a.category,responded:"comply"===a.policy||!!e[b]?.satisfied})):void 0,D="unknown"===c?";⚠ 标书类型未判定(按明标口径)——暗标项目须核对招标文件后重跑":"",E=B?`;评分细则模拟 ${B.simulatedScore}%(met ${B.met} / partial ${B.partial} / missing ${B.missing})`:"",F=z>=95&&0===y&&b.uniqueness>=60&&v,G=F?["已达到当前质量目标,建议保持事实口径和导出前复核。"]:[...v?[]:[`本次仅计量 ${t}/${u} 维(权重覆盖 ${(100*q).toFixed(0)}%,低于下限 90%):重归一分不得作为达标依据,须先补齐缺失维度的计量条件再判定。`],"按对齐评分口径补齐短板维度:要求实体响应补锚点全命中(核心词与数字参数逐条落位)、结构呈现补图表落位、数据锚定补 BOQ/参数/图纸/无主数值溯源、专业深度按章补六维薄弱项、合规与规范清理自伤与占位符并压缩超限篇幅且编制依据与正文双向对齐、事实一致性补关键事实落位与数值对账。","系统需优先修复阻断问题、扩大本地知识库检索、补抽结构化事实,并将未落位事实写入对应章节。"];b.uniqueness<60&&G.push(`低雷同性 ${b.uniqueness} 低于门槛 60:存在与公开模板/通用话术重合的雷同风险,须改写高重合段落后再交付。`);let H=`${v?"":"⚠ "}本次仅计量 ${t}/${u} 维、权重覆盖 ${(100*q).toFixed(0)}%`,I=`交付置信度 ${z}% / 目标 95%,综合评分 ${w}/100(${[...x.map(a=>`${a.label} ${a.score}`),`低雷同性 ${b.uniqueness}`].join("、")});${H}${D}${E};评分口径 ${bZ}(主尺)`;return{overall:w,deliveryProbability:z,target:95,passed:F,scores:b,mode:c,dimensions:x,requirementChecklist:C,billPlacementAudit:h,parameterUsageAudit:a.parameterUsageAudit,keyFactPlacementAudit:a.keyFactPlacementAudit,templating:A,caliber:b$,evaluationCriteriaAttainment:B,measurementCoverage:{dimensions:t,totalDimensions:u,weightRatio:q,sufficient:v},summary:I,actions:G}}let cc=new Set(["fact-coverage","overview-recap","internal-terminology-anchor","global-consistency-snapshot","data-consistency-snapshot"]);function cd(...a){return a.flat()}var ce=c(19898),cf=c(91977),cg=c(51144);function ch(a){let b=Math.max(0,Math.ceil(a.totalChunks||0)),c=Math.max(0,Math.ceil(a.loadedChunks||0)),d=Math.max(0,b-c),e=b>0?c/b:1,f=[...b>=1e3&&e<.35?["切片未完全预加载"]:[],...!1===a.vectorReady?["向量索引未就绪"]:[]];return{totalChunks:b,loadedChunks:c,omittedChunks:d,loadedRatio:e,highRisk:f.length>0,riskReason:f.join("、")||void 0}}async function ci(a){(0,e.Te)(a.signal);let b=[];if(0===a.scopedFilePaths.length)return b;let c=/资源|人|材|机|材料|设备|清单|工程量|BOQ|报价/u.test(a.chapter.title),d=(c?1.6:1)*(/[、,,与和及]/.test(a.chapter.title)?1.4:1),f=Math.ceil((a.highRisk?18:10)*d),h=Math.ceil((a.highRisk?24:14)*(c?1.4:1)),i=Math.ceil((a.highRisk?72:42)*d),j=Math.ceil((a.highRisk?72e3:42e3)*d),k=[...new Set([...a.requiredNeeds||[],...a.extraClues||[]])].slice(0,12),l=(function(a,b=[],c=[]){let d=a.sections||[],e=[...a.requiredFacts,...b,...c],f=(0,cg.Cr)(d,a=>(0,cg.Ox)(a),{maxItems:16,maxChars:1200},"retrieval-sections").selected,g=(0,cg.Cr)(e,a=>(0,cg.Ox)(a),{maxItems:16,maxChars:1200},"retrieval-facts").selected,h=/[、,,与和及]/.test(a.title),i=/资源|人|材|机|材料|设备|清单|工程量|BOQ|报价/u.test(a.title),j=/进度|工期|节点/u.test(a.title)?["合同工期","计划工期","日历天","开工","竣工","关键线路","进度计划","施工进度"]:/质量|验收/u.test(a.title)?["质量标准","验收规范","检验批","复验","合格","质量保证","隐蔽验收"]:/安全|危大|风险/u.test(a.title)?["安全措施","风险源","危大工程","应急","检查整改","安全防护","应急预案","基坑支护","基坑开挖","基坑底标高","坡率","支护形式","降水","开挖深度","高支模","专项方案"]:i?["工程量清单","项目特征","材料设备","规格型号","数量单位","劳动力","机械设备","进场计划","资源保障","主要材料","施工机具","材料供应","设备配置"]:/施工|方案|方法|技术|工艺/u.test(a.title)?["施工方法","工艺流程","技术标准","构造做法","控制要点","施工准备"]:["工程范围","施工方法","控制要点","验收要求"],k=h?[...j,...a.title.split(/[、,,与和及]+/u).map(a=>a.trim()).filter(a=>a.length>=4)]:j,l=[...new Set([a.title,...f,...g,...k].flatMap(a=>a.split(/[\s、,,。;;::()()《》【】\-/]+/u)).map(a=>a.trim()).filter(a=>a.length>=2))],m=(0,cg.Cr)(l,a=>(0,cg.Ox)(a),{maxItems:36,maxChars:1200},"retrieval-tokens").selected,n=h?a.title.split(/[、,,与和及]+/u).map(a=>a.trim()).filter(a=>a.length>=4).map(a=>`${a} ${f.slice(0,6).join(" ")} ${g.slice(0,4).join(" ")}`.trim()):[];return[...new Set([`${a.title} ${f.join(" ")}`.trim(),...g.map(b=>`${a.title} ${b}`.trim()),...f.map(b=>`${a.title} ${b} ${g.slice(0,6).join(" ")}`.trim()),`${a.title} ${k.join(" ")}`.trim(),...n,m.join(" ")].filter(Boolean))]})(a.chapter,a.requiredNeeds,a.extraClues).slice(0,f),m=[...k.map(b=>`${a.chapter.title} ${b} ${(a.chapter.sections||[]).join(" ")}`.trim()).filter(a=>!l.includes(a)).map(a=>({text:a,boost:2,source:"required-fact-evidence"})),...l.map(a=>({text:a,boost:2.4,source:"deep-retrieval"}))];return b.push(...(await (0,e.l$)(m,async b=>{var c;(0,e.Te)(a.signal);let d=await a.manager.search(a.projectRoot,b.text,{scope:"project",filters:{filePaths:a.scopedFilePaths,materialRoots:a.scopedMaterialRoots??(0,ce.materialRootsOfFiles)(a.scopedFilePaths)},limit:h,weights:{keyword:.62,vector:.32,rewrite:.9,hybridBonus:.28},generationMode:!0});return(c={chapter:a.chapter,results:d.results,fileRoleByPath:a.fileRoleByPath,fileProcessingByPath:a.fileProcessingByPath,boost:b.boost,source:b.source}).results.map(a=>{let b=c.fileProcessingByPath.get(a.filePath);return{chapterId:c.chapter.id,filePath:a.filePath,score:a.score+c.boost+("table"===b?3:"structured_data"===b?2.6:3.2*("bill_of_quantities"===b)),content:a.content,roleId:c.fileRoleByPath.get(a.filePath),processingType:b,sectionTitle:a.sectionTitle,source:c.source}})},{kind:"deepRetrieval",highRisk:a.highRisk})).flat()),[...(0,g.QR)(b.filter(a=>"required-fact-evidence"===a.source),{maxItems:Math.max(6,3*k.length),maxChars:18e3,preservePinned:!0}),...(0,g.QR)(b.filter(a=>"required-fact-evidence"!==a.source),{maxItems:i,maxChars:j,preservePinned:!0})]}var cj=c(32434),ck=c(36003),cl=c(95734);async function cm(a,b){let c=(0,O.r4)(a.content);if(0===c.length)return[];let d=[];for(let e of c){let c=e.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&"),f=a.content.match(RegExp(`^###\\s+(?:\\d+(?:\\.\\d+)*[、..\\s]*\\s+)?${c}\\s*\\n([\\s\\S]*?)(?=^#{2,3}\\s+|$)`,"mu")),g=f?.[1]||"",h=await (0,ck.AI)(e,(0,ck.Ym)(e,a.chapter,a.evidence),b),i=(0,ck.uQ)(e,g,h);i&&d.push(`${e}:${i}`)}return d}function cn(a,b){let c=a.trim();if(!c)return[];let d=Math.max(1e3,Math.ceil(b)),e=[],f=0;for(;f<c.length;){let a=Math.min(f+d,c.length),b=c.lastIndexOf("\n\n",a);(b<=f||a-b>.25*d)&&(b=c.lastIndexOf("\n",a)),(b<=f||a-b>.2*d)&&(b=a),e.push(c.slice(f,b).trim()),f=b}return e.filter(Boolean)}function co(a){return"string"==typeof a?a:a&&"object"==typeof a&&"message"in a?String(a.message):JSON.stringify(a)}function cp(a){let b=Number(process.env[a]);return Number.isFinite(b)&&b>0?Math.ceil(b):0}async function cq(a){var b;(0,e.Te)(a.signal);let c=a.chapters.map(a=>{let b=a.content.replace(/#{1,6}\s+/gu,"").replace(/\*\*/gu,"").replace(/\|/gu," ").replace(/[\n\r]+/gu," ").trim(),c=function(a){let b=[];for(let c of[/(?:总建筑面积|建设规模|总用地面积|总占地面积)[^\n。;;]{0,18}\d+(?:[.,]\d+)?\s*万?\s*(?:㎡|m²|m2|平方米)/gu,/(?:合同估算价|合同估算价格|投资估算|最高投标限价|招标控制价|工程总投资|总投资|工程造价)[^\n。;;]{0,18}\d+(?:[.,]\d+)?\s*万?\s*(?:万元|亿元|元)/gu,/(?:计划工期|合同工期|总工期|施工周期)[^\n。;;]{0,18}\d+\s*(?:日历天|天|个月|月)/gu,/(?:质量标准|质量目标)[^\n。;;]{0,26}/gu,/(?:找平层|抹灰层|防水层|保温层|结合层|垫层|面层|粘结层)[^\n。;;]{0,24}\d+:\d+(?:\.\d+)?/gu]){let d=[...new Set(a.match(c)||[])].slice(0,4);b.push(...d)}return[...new Set(b.map(a=>a.replace(/\s+/gu," ").trim()).filter(Boolean))].join(";")}(a.content);return`章节:${a.title}
|
|
189
|
+
${e}`,source:function(a){let b=a.toLowerCase();return b.includes(".gov.cn")||b.includes("mohurd")||b.includes("zjt")||a.includes("住建")?"web-policy":"web-evidence"}(b.url),sectionTitle:a.chapterTitle})}}catch(a){e+=1,f.push(`${"string"==typeof g?g:"查询"}:${a instanceof Error?a.message:String(a)}`),console.error("[web-research] 检索查询失败(与「被噪声过滤」分列计数)",a)}return{evidence:c,queries:b,filtered:d,failedQueries:e,failures:f}}var au=c(65667);let av=[{label:"工程名称",factGroups:["project"],patterns:[/工程名称\s*[::]\s*([^\n|]+)/u],locations:"封面、工程概况、页眉页脚、专项方案、表格标题"},{label:"建设地点",factGroups:["project"],patterns:[/建设地点\s*[::]\s*([^\n|]+)/u,/工程地点\s*[::]\s*([^\n|]+)/u],locations:"工程概况、周边环境、扬尘噪声、交通导改、属地化措施"},{label:"总工期",factGroups:["schedule"],patterns:[/总工期\s*[::]\s*([^\n|]+)/u,/计划工期\s*[::]\s*([^\n|]+)/u,/工期目标\s*[::]\s*([^\n|]+)/u],locations:"工程概况、进度计划、横道图、资源计划、纠偏措施"},{label:"建设规模",factGroups:["project","preciseFacts"],patterns:[/建设规模\s*[::]\s*([^|\n]+)/u,/建筑面积\s*[::]\s*([^|\n]+)/u,/道路长度\s*[::]\s*([^|\n]+)/u,/管线长度\s*[::]\s*([^|\n]+)/u],locations:"工程概况、工程量表、施工部署、资源配置"},{label:"机械数量型号",factGroups:["resources"],locations:"机械表、平面布置、进度保障、安全专项方案",kind:"equipment-counts"},{label:"劳动力人数",factGroups:["resources"],patterns:[/劳动力\s*[^\n|]{0,12}(\d+)\s*人/u,/班组\s*[^\n|]{0,12}(\d+)\s*人/u],locations:"劳动力计划、进度节点、抢工方案、工资保障台账"},{label:"危大工程清单",factGroups:["safety","preciseFacts"],patterns:[/危大工程\s*[::]\s*([^\n|]+)/u,/深基坑|高支模|起重吊装|脚手架/u],locations:"安全章节、专项方案、审批表、应急预案"},{label:"环保监测指标",factGroups:["quality","safety","preciseFacts"],patterns:[/PM10|PM2\.5|TSP|噪声|扬尘在线监测/u],locations:"文明施工、扬尘噪声、智慧工地、应急联动"}];function aw(a){return a.replace(/[\s,。;;::|]/gu,"").trim()}let ax=/塔式起重机|履带吊|汽车吊|卷扬机|脚手架|扣件|钢管|模板|噪声|PM2\.5|PM10|TSP|扬尘在线监测|临电|消防|安全网|围挡|洗车台|沉淀池|雾炮/u,ay=/不使用|不采用|不配置|无需|未采用|不得使用|禁止使用/u;function az(a,b){let c=[];for(let d of b){let b=a[d];if(Array.isArray(b))for(let a of b)a&&"object"==typeof a&&"value"in a&&"string"==typeof a.value&&c.push(a.value)}return c.map(aw).filter(Boolean)}function aA(a,b){return 0===b.length||b.some(b=>b.includes(a)||a.includes(b)||a.length>=4&&b.includes(a.slice(0,4)))}var aB=c(37047),aC=c(63516);let aD=/([\u4e00-\u9fa5A-Za-z0-9()()]{1,12}?)(\d+(?:\.\d+)?)\s*(m²|m³|㎡|mm|cm|m|米|MPa|kN|kV|kW|℃|°C|万元|元|人|天|日|个|层|樘|处|套|台|t|吨)([\u4e00-\u9fa5A-Za-z0-9()()]{0,8})/gu,aE=["直径","厚度","宽度","长度","高度","深度","间距","距离","标高","偏差","数量","面积","体积","重量","压力","温度","强度","等级","坡度","规格","尺寸","层数","次数","跨度","半径","总长","全长"],aF=["以内","以外","以上","以下","之间","左右","以前","以后","之前","之后"],aG=/^(?:主要|本工程|本项目|全项目)?(?:作业对象|作业内容|施工内容|工作内容|工程内容|施工对象|施工范围|工程规模|建设内容|建设规模)为/u,aH=/^(?:由)?责任[\u4e00-\u9fa5]{0,4}在(?:内)?完成/u,aI=/自然村|村组|标段|区域|点位|养护|地上|地下|建筑高度|[\u4e00-\u9fa5]{1,4}组$/u,aJ=/^(?:局部|个别|少数|多数|大部分)/u,aK=["开挖","封闭","回填","浇筑","铺筑","摊铺","供应","编制","提交","签订","安装","养护","试验","拆除","砌筑"],aL=["直径","半径","穴径","胸径","地径","冠幅","厚度","宽度","长度","高度","深度","穴深","间距","距离","标高","坡度","跨度","株距","行距"];function aM(a){return a.replace(/(?:mm|cm|m|MPa|kN|kV|kW|℃|元|万元|人|天|日|个|层|樘|处|套|台|t|吨)/gu,"").replace(/[\s,,、;;::()()]/gu,"")}function aN(a,b){let c=["。",";",";","\n"],d=0;for(let e of c){let c=a.lastIndexOf(e,b-1);c+1>d&&(d=c+1)}let e=a.length;for(let d of c){let c=a.indexOf(d,b);c>=0&&c<e&&(e=c)}return a.slice(d,e)}async function aO(a){let b=function(a){let b=new Map,c=0;for(let d of a.split("\n")){let a=d.trim(),e=c;if(c+=d.length+1,!(/^#{1,6}\s/u.test(a)||/^\s*\|/u.test(a)))for(let a of d.matchAll(RegExp(aD.source,"gu"))){let c=(a[1]||"").trim(),d=a[2],f=/\d+$/u.exec(c);if(f&&(c=c.slice(0,f.index).trim(),d=`${f[0]}${d}`),/月\s*$/u.test(c))continue;let g=Number(d),h=a[3]||"",i=(a[4]||"").trim(),j=/[与和及][^与和及]{0,12}?\d/u.exec(i),k=j?i.slice(0,j.index):i,l=`${c}${k}`.replace(/[\s,,、;;::]/gu,""),m=l.replace(aG,"").replace(aH,""),n=m.length>=2?m:l;if(n.length<2||!/[\u4e00-\u9fa5A-Za-z]{2,}/u.test(n)||!Number.isFinite(g)||g<=0||aE.some(a=>n===a||aM(n)===a)||aF.some(a=>aM(n)===a)||aI.test(n)||aJ.test(n))continue;let o={matchIndex:e+(a.index||0),valueOffset:function(a,b,c){if(!c)return a.indexOf(b);let d=a.lastIndexOf(c);if(d>=0){let c=d-b.length;if(c>=0&&a.slice(c,d)===b)return c;let e=RegExp(`(${b.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&")})\\s*$`,"u").exec(a.slice(0,d));if(e&&void 0!==e.index)return e.index}return a.indexOf(b)}(a[0],d,a[3]||""),valueText:d},p=b.get(a[0]);if(p){p.occurrences.push(o);continue}b.set(a[0],{concept:n,value:g,unit:h,raw:a[0],occurrences:[o]})}}return[...b.values()].slice(0,60)}(a);if(b.length<3)return{groups:[]};let c=[...new Set(b.map(a=>a.concept))];if(c.length<2)return{groups:[]};let d=await (0,aB.VN)().embedDocuments(c);if(d.length!==c.length){let a=`本地语义模型嵌入数量不一致:期望 ${c.length} 条,实际 ${d.length} 条`;return console.warn(`[gen] parameter-concept-conflict degraded: ${a}`),{groups:[],degraded:{level:"warning",severity:"warning",category:"format",owner:"system",repairability:"manual_review",message:`参数概念口径冲突检测已降级跳过:${a}`,suggestion:"语义模型输出异常,本轮未执行该检测维度;可稍后重新生成复核。"}}}let e=new Map(c.map((a,b)=>[a,d[b]])),f=function(a,b){let c=new Map(a.map(a=>[a,a])),d=a=>{let b=c.get(a)||a;return b===a?a:(c.set(a,d(b)),c.get(a)||a)},e=(a,b)=>{c.set(d(a),d(b))};for(let c=0;c<a.length;c+=1)for(let d=c+1;d<a.length;d+=1)b(a[c],a[d])>=.6&&e(a[c],a[d]);return c}(c,(a,b)=>{let c=e.get(a),d=e.get(b);if(!c||!d||0===c.length||0===d.length)return 0;let f=Math.min(c.length,d.length),g=0;for(let a=0;a<f;a+=1)g+=c[a]*d[a];return g}),g=a=>{let b=a;for(;(f.get(b)||b)!==b;)b=f.get(b)||b;return b},h=new Map;for(let a of b){let b=g(a.concept),c=h.get(b)||[];c.push(a),h.set(b,c)}let i=[];for(let b of h.values()){if(b.length<2||Math.max(...b.map(a=>a.value))>4*Math.min(...b.map(a=>a.value)))continue;let c=new Map;for(let a of b){let b=c.get(a.unit)||[];b.push(a),c.set(a.unit,b)}for(let b of c.values()){if(b.length<2)continue;let c=new Map;for(let a of b){let b=aL.find(b=>a.raw.includes(b))||"",d=c.get(b)||[];d.push(a),c.set(b,d)}for(let d of[...c.keys()].filter(a=>""!==a).length>=2&&!c.has("")?[...c.values()]:[b]){if(d.length<2)continue;let b=d.map(a=>aK.find(b=>a.raw.includes(b))||"");if(b.length>=2&&b.every(a=>""!==a)&&new Set(b).size===b.length)continue;let c=d.map(a=>/^([\u4e00-\u9fa5]{2,})([一二三四五六七八九十]|\d+)$/u.exec(a.concept)).filter(a=>null!==a);if(c.length===d.length&&c.length>=2&&1===new Set(c.map(a=>a[1])).size&&new Set(c.map(a=>a[2])).size===c.length)continue;let e=d.map(a=>{let b=a.raw.indexOf("按每");return b>=0?a.raw.slice(0,b):null});if(e.every(a=>null!==a)&&!e.some((a,b)=>!!a&&e.some((c,d)=>b!==d&&!!c&&(a===c||a.includes(c)||c.includes(a))))||d.every(b=>b.occurrences.some(c=>/违约金|解除合同|提高至|自第|逾期超过/u.test(a.slice(Math.max(0,c.matchIndex-30),c.matchIndex+b.raw.length+40)))))continue;let f=[...new Set(d.map(a=>a.value))];if(f.length<2)continue;let g=Math.max(...f);if(g-Math.min(...f)<=.02*g)continue;let h=f.reduce((a,b)=>a+b,0);if(![...new Set(d.flatMap(b=>b.occurrences.map(b=>aN(a,b.matchIndex))))].some(b=>/(?:总量|合计|总计|共计)/u.test(b)&&/(?:其中|分别为|分为)/u.test(b)&&d.every(c=>c.occurrences.some(c=>aN(a,c.matchIndex)===b))&&[...b.matchAll(/\d+(?:\.\d+)?/gu)].some(a=>Math.abs(Number(a[0])-h)<=Math.max(.5,.01*h)))&&!(d.filter(b=>b.occurrences.some(c=>{let d=a.slice(c.matchIndex,c.matchIndex+b.raw.length+12),e=a.slice(Math.max(0,c.matchIndex-12),c.matchIndex);return/[、/](?:与)?[A-Za-z]?\d/u.test(d)||/[、/](?:与)?[A-Za-z]?\d/u.test(e)})).length>=2)&&!(d.length>=2&&d.every((a,b)=>d.every((c,d)=>{if(b>=d||a.value===c.value)return!0;let e=a.concept.length<=c.concept.length?a.concept:c.concept,f=a.concept.length<=c.concept.length?c.concept:a.concept;if(e.length>=4&&e.length<f.length&&f.endsWith(e)&&/^[板梁柱墙底顶]/u.test(e))return!0;let g=(0,U.Qk)(a.concept,c.concept);if(g.length<2)return!1;let h=a.concept.slice(g.start,g.end),i=a.concept.replace(h,""),j=c.concept.replace(h,"");return i.length>0&&j.length>0&&!i.includes(j)&&!j.includes(i)})))&&(i.push({concept:d[0].concept,values:d}),i.length>=4))break}if(i.length>=4)break}if(i.length>=4)break}return{groups:i}}function aP(a){return a.replace(/㎡/gu,"m2").replace(/m²/giu,"m2").replace(/m³/giu,"m3").replace(/\s+/gu,"").toLowerCase()}function aQ(a){return a.replace(/[((][^))]*[))]/gu,"").replace(/[\s,,、;;::]/gu,"")}function aR(a,b){let c=b.entries??b.billFactLock?.entries??[];if(0===c.length)return[];let d=Math.max(.01,.001*a.value),e=aP(function(a){let b=a.occurrences[0];if(!b)return a.unit;let c=a.raw.indexOf(b.valueText);return c<0?a.unit:a.raw.slice(c+b.valueText.length)||a.unit}(a)),f=a.occurrences.map(a=>b.markdown.slice(Math.max(0,a.matchIndex-48),a.matchIndex+a.valueOffset+a.valueText.length+48)).join("\n"),g=[];for(let b of c){if(!Number.isFinite(b.quantity)||b.quantity<=0||Math.abs(b.quantity-a.value)>d)continue;let c=aP(b.unit);if(e&&c&&e!==c)continue;let h=function(a,b){let c=aQ(a),d=aQ(b);if(c.length<2||d.length<2)return!1;if(c===d)return!0;let e=c.length<=d.length?c:d,f=c.length<=d.length?d:c;return e.length>=3&&f.includes(e)}(b.name,a.concept),i=b.villageGroup.trim().length>=2&&f.includes(b.villageGroup.trim());if((h||i)&&(g.push({entry:b,nameRelated:h}),g.length>=8))break}return g}function aS(a,b){if(a.values.length<2)return{verdict:"no-anchor"};let c=b.billFactLock?.entries??[],d=function(a){if(!a)return[];let b=[],c=1,d=(a,d,e,f,g)=>{b.push({seq:c,name:a,description:"",quantity:d,unit:e,section:"",subsection:g,villageGroup:g,sourceFile:f,specQuantityPairs:[]}),c+=1};for(let[b,c]of Object.entries(a)){let a=c.unit||"",e=c.sourceFile||"";for(let f of(Number.isFinite(c.value)&&c.value>0&&d(b,c.value,a,e,""),c.groups||[]))Number.isFinite(f.value)&&!(f.value<=0)&&d(`${b}(${f.group})`,f.value,a,e,f.group)}return b}(b.blueprintQuantities);if(0===c.length&&0===d.length)return{verdict:"no-anchor"};let e=a.values.map(a=>({value:a,matches:aR(a,{markdown:b.markdown,entries:[...c,...d]}),billMatches:aR(a,{markdown:b.markdown,entries:c})}));if(e.every(a=>a.matches.length>0)&&e.every((a,b)=>e.every((c,d)=>b===d||!a.matches.some(a=>c.matches.some(b=>b.entry.seq===a.entry.seq)))))return{verdict:"distinct-lock-entries",entries:e.map(a=>`「${a.matches[0].entry.name}」(${a.value.value}${a.value.unit})`).join("、")};let f=e.filter(a=>a.billMatches.length>0),g=e.filter(a=>0===a.matches.length);if(1===f.length&&g.length>0&&f.length+g.length===e.length){let a=f[0].billMatches.find(a=>a.nameRelated);if(a)return{verdict:"single-lock-entry",lockValue:a.entry.quantity,lockUnit:a.entry.unit,entryName:a.entry.name,nonLock:g.map(a=>a.value)}}return{verdict:"no-anchor"}}async function aT(a,b){let c=await aO(a);if(c.degraded)return[c.degraded];if(0===c.groups.length)return[];let d=[],e=[];for(let f of c.groups){let c=aS(f,{markdown:a,billFactLock:b?.billFactLock,blueprintQuantities:b?.blueprintQuantities});"distinct-lock-entries"===c.verdict?e.push({group:f,entries:c.entries}):d.push(f)}let f=[];if(d.length>0){let a=d.map(a=>`“${a.concept}”出现多个口径:${[...new Set(a.values.map(a=>a.raw))].slice(0,3).join("、")}`);f.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`同一参数概念出现多口径数值冲突:${a.join(";")}`,suggestion:"以绑定资料(图纸/清单/规范)裁决口径为准统一数值表述:每个参数概念全文只保留一个口径数值,删除矛盾表述。"})}return e.length>0&&f.push({level:"info",severity:"suggestion",category:"fact_consistency",owner:"system",repairability:"not_repair_needed",message:`参数概念多口径已裁决为不同清单条目口径(不构成冲突):${e.map(({group:a,entries:b})=>`“${a.concept}”对应${b}`).join(";")}`,suggestion:"各数值分别对应不同的工程量清单条目,正文已带条目名区分,无需处理。"}),f}let aU=["电梯","幕墙","智能化","消防","暖通","给排水","电气","燃气","人防","室外","园林","绿化","景观","钢结构","防水","保温","门窗","通风","空调","防雷","接地","动力","照明","拆除","加固","装修","装饰"],aV=(a,b)=>{let c=b.exec(a);if(!c)return;let d=Number(c[1]);return Number.isFinite(d)&&d>0?d:void 0},aW=[{name:"基坑支护与降水工程",aliases:["基坑支护","基坑工程","降排水","降水井"],applicable:a=>{let b=aV(a,/(?:基坑)?开挖深度[约为达至]{0,3}(\d+(?:\.\d+)?)\s*m/u);return void 0!==b&&b>=3}},{name:"高大模板支撑工程",aliases:["高大模板","高支模","模板支撑体系","模板支撑"],applicable:a=>{let b=aV(a,/(?:模板)?支撑(?:体系)?(?:搭设)?高度[约为达至]{0,3}(\d+(?:\.\d+)?)\s*m/u),c=aV(a,/(?:施工(?:总)?荷载|集中线荷载)[约为达至]{0,3}(\d+(?:\.\d+)?)\s*kN/u);return void 0!==b&&b>=8||void 0!==c&&c>=10||/高支模|高大模板/u.test(a)}},{name:"脚手架工程",aliases:["脚手架","落地式钢管脚手架","悬挑式脚手架","悬挑脚手架"],applicable:a=>{let b=aV(a,/(?:落地式|悬挑式)?(?:钢管)?脚手架(?:搭设)?高度[约为达至]{0,3}(\d+(?:\.\d+)?)\s*m/u);return void 0!==b&&b>=15||/悬挑(?:式)?脚手架/u.test(a)}},{name:"起重吊装及安装拆卸工程",aliases:["起重吊装","塔吊","塔式起重机","汽车吊","履带吊","起重机械安拆","物料提升机","提升机","起重机械","吊装"],applicable:a=>!!/塔吊|塔式起重机|汽车吊|履带吊|吊车|起重机械|起重设备|起重机|卷扬机|物料提升机|提升机|电动葫芦/u.test(a)||/起重伤害|非常规起重|起吊重量|吊装重量|吊装荷载/u.test(a)&&!/(?:不涉及|不存在|不属于|未涉及)[^。;\u000A]{0,16}危大|(?:不涉及|不存在|不属于|未涉及)[^。;\u000A]{0,16}危险性较大|(?:参数|高度|深度)[^。;\u000A]{0,12}未达[^。;\u000A]{0,60}危大/u.test(a)},{name:"吊篮作业工程",aliases:["吊篮","高处作业吊篮","电动吊篮"],applicable:a=>/吊篮/u.test(a)},{name:"拆除工程",aliases:["拆除工程","爆破拆除","机械拆除"],applicable:a=>/拆除工程(?![量])|爆破拆除/u.test(a)}];function aX(a){let b=a.split(/\r?\n/u),c=[];return b.forEach((a,d)=>{/危大/u.test(a)&&c.push(...b.slice(Math.max(0,d-6),Math.min(b.length,d+7)))}),c.join("\n")}function aY(a){let b=aW.filter(b=>b.applicable(a)),c=aX(a);return{applicableNames:b.map(a=>a.name),zonePresent:""!==c,missingNames:""===c?b.map(a=>a.name):b.filter(a=>!a.aliases.some(a=>c.includes(a))).map(a=>a.name)}}function aZ(a,b){let c=aX(a);return b.filter(a=>{let b=aW.find(b=>b.name===a);return!!b&&!b.aliases.some(a=>c.includes(a))})}let a$=/[二三四五六七八九十\d]{1,4}\s*个?\s*阶段/u,a_={一:1,二:2,三:3,四:4,五:5,六:6,七:7,八:8,九:9};function a0(a){return/(\d+|[一二三四五六七八九十]+)\s*个?\s*阶段/u.exec(a)?.[1]??null}function a1(a){let b=a.map(a0).filter(a=>null!==a).map(a=>/^\d+$/u.test(a)?parseInt(a,10):/^[一二三四五六七八九十]+$/u.test(a)?"十"===a?10:1===a.length?a_[a]??null:a.startsWith("十")?10+(a_[a[1]]??0):a.endsWith("十")?(a_[a[0]]??0)*10:(a_[a[0]]??0)*10+(a_[a[2]]??0):null).filter(a=>null!==a);return 0===b.length?null:1===new Set(b).size?b[0]:null}async function a2(a){let b=[...new Set(a.split(/\n+/u).filter(a=>a.trim()&&!/^\s*(#{1,6}\s+|\|)/u.test(a)).flatMap(a=>a.split(/[。;;]/u)).map(a=>a.replace(/\s+/gu,"").trim()).filter(a=>{var b;if(a.length<8||a.length>60)return!1;let c=a$.exec(a);return null!==c&&(b=c.index,!/[、,,]/u.test(a.slice(Math.max(0,b-12),b)))}))];if(b.length<2)return[];let c=await (0,aB.Mv)(b,b),d=b.map((a,b)=>b),e=a=>{let b=a;for(;d[b]!==b;)b=d[b];let c=a;for(;d[c]!==b;){let a=d[c];d[c]=b,c=a}return b},f=(a,b)=>{d[e(b)]=e(a)};for(let a=0;a<b.length;a+=1)for(let d=a+1;d<b.length;d+=1)c(b[a],b[d])>=.62&&f(a,d);let g=new Map;for(let a=0;a<b.length;a+=1){let c=e(a),d=g.get(c)||[];d.push(b[a]),g.set(c,d)}if(g.size<2||new Set([...g.values()].map(a1).filter(a=>null!==a)).size<2)return[];let h=[...g.values()].map(a=>a.sort((a,b)=>b.length-a.length)[0]).slice(0,4);return[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`施工阶段划分口径不统一:正文出现 ${g.size} 种互异阶段划分口径(${h.map(a=>`“${a.slice(0,16)}”`).join("、")})`,suggestion:"全文统一阶段划分口径:以总进度计划/施工部署章节的划分为唯一口径,其余章节划分句逐字对齐或删除。"}]}var a3=c(41991);let a4=/应急预案|应急措施|应急响应|应急救援|突发事件|应急管理|应急物资|应急演练|应急组织|应急保障/u,a5=/应急|突发|救援|预案|抢险|疏散/u,a6=["应急预案的编制与响应流程","突发事件应急处置措施","应急救援组织体系与保障"],a7=["应急照明系统安装调试","应急电源配置与切换方案"],a8={organization:"应急管理领导小组、应急救援队伍的组织机构与职责分工",procedure:"应急处置程序、应急响应流程与应急演练安排",resource:"应急物资、应急器材设备的储备与保障措施"},a9=/应急物资|急救箱|灭火器|沙袋|发电机|水泵|对讲机|应急照明|应急灯|防护服|救援绳|救生衣|铁锹|编织袋|抽水泵|警示带|应急器材/u,ba=/配备|储备|保障|配置|数量|不少于|共计|套|具|个|台|把|只/u,bb=["应急物资储备清单与配备数量","应急救援器材的配置与保障"],bc=["应急照明灯具数量与回路设计","应急电源的电气系统设计"];async function bd(a){return(0,a3.A)({prototypes:[...a6],negativePrototypes:[...a7],embedDocuments:a})}async function be(a){return(0,a3.A)({prototypes:[...bb],negativePrototypes:[...bc],embedDocuments:a})}async function bf(a,b){let c=a.split(/\r?\n/u),d=[],f=c.map(a=>{let b=/^(#{2,4})\s+(.+)$/u.exec(a.trim());if(b)return{level:b[1].length,title:b[2].replace(/^\d+(?:\.\d+)*\s+/u,"").trim()}}).filter(a=>void 0!==a).filter(a=>!a4.test(a.title)&&a5.test(a.title)),g=await bd(b),h=f.length>0?await g(f.map(a=>a.title)):[],i=new Set(f.filter((a,b)=>h[b]).map(a=>a.title)),j=a=>a4.test(a)||i.has(a),k=!1,l=[],m=[],n="",o=0;for(let a of c){let b=/^(#{2,4})\s+(.+)$/u.exec(a.trim());if(b){let a=b[1].length,c=b[2].replace(/^\d+(?:\.\d+)*\s+/u,"").trim();if(j(c)){k=!0,l.push(c);continue}a<=3&&k&&(k=!1);continue}if(k&&a.trim()&&!/^\s*\|/u.test(a)){m.push(a);let b=a.replace(/\s+/gu,"");n+=b,o+=b.length}}if(0===l.length)return d;let p=[];o<300&&p.push(`字数仅 ${o} 字(要求 ≥300 字)`);let q=n.match(/.{1,200}/gu)||[],r=Object.values(a8),s=await (0,aB.Mv)(q,r),t=a=>q.some(b=>s(b,a)>=aB.Eh);t(a8.organization)||p.push("应急组织体系"),t(a8.procedure)||p.push("应急处置程序/演练");let u=await be(b),v=m.join("。").split(/[。;;]/u).map(a=>a.trim()).filter(a=>a9.test(a)&&ba.test(a)),w=v.length>0?await u(v):[];return t(a8.resource)||w.some(Boolean)||p.push("应急物资保障"),p.length>0&&d.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:`应急预案小节深度不足:${l.join("、")}(缺少:${p.join("、")})`,suggestion:"补写应急组织体系(领导小组/抢险队与职责)、应急处置程序与演练安排、应急物资清单与保障措施,达到可落地深度。",sectionTitle:l[0],provenance:{detectorId:"emergency-section-depth",fingerprint:(0,e.c6)(a)}}),d}var bg=c(70208),bh=c(91943),bi=c(54185),bj=c(75251);let bk=/(?:GB|JGJ|CJJ|JTG|SL|DB|DL|YS|HG|DBJ)[\s/T]*\d{1,2}[\s/-]?(?:T[\s/]*)?\d{2,4}(?:[\s/-]\d{1,4})?/gu,bl=/《[^《》\r\n]{2,60}?》/gu,bm=/(?:规范|标准|规程)$/u;function bn(a){return[...a.matchAll(bk)].map(a=>a[0])}function bo(a){return[...a.matchAll(bl)].map(a=>a[0].replace(/《|》/gu,""))}function bp(a){return a.replace(/[\s\u200b-\u200d\ufeff]/gu,"").replace(/[—–-]/gu,"-").toUpperCase()}function bq(a){return a.replace(/《|》/gu,"").replace(/[((][^))]{0,40}[))]/gu,"").replace(/[\s\u200b-\u200d\ufeff]/gu,"")}function br(a){return bm.test(bq(a))}function bs(a,b){let c=bp(a),d=bp(b);if(!c||!d)return!1;if(c===d)return!0;let e=c.length<=d.length?c:d,f=c.length<=d.length?d:c;return RegExp(`^${e.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&")}-\\d{4}$`,"u").test(f)}function bt(a,b){let c=bq(a),d=bq(b);return!!c&&!!d&&(c===d||!(c.length<4)&&!(d.length<4)&&(c.includes(d)||d.includes(c)))}let bu=/^[\s()()【】[\]、,,;;::·.及和与]*$/u;function bv(a){let b=[];for(let c of a.split(/\r?\n/u)){let a=[];for(let b of c.matchAll(bk)){let c=b.index??0;a.push({type:"code",value:b[0],index:c,end:c+b[0].length})}for(let b of c.matchAll(bl)){let c=b.index??0;a.push({type:"name",value:b[0].replace(/《|》/gu,""),index:c,end:c+b[0].length})}if(0===a.length)continue;a.sort((a,b)=>a.index-b.index);let d=new Map,e=new Set;a.forEach((b,f)=>{if("code"!==b.type)return;let g=d=>{for(let g of"left"===d?a.slice(0,f).map((a,b)=>f-1-b):a.slice(f+1).map((a,b)=>f+1+b)){let f=a[g];if("name"!==f.type||e.has(g))continue;let h="left"===d?c.slice(f.end,b.index):c.slice(b.end,f.index);if(!bu.test(h))break;return g}return -1},h=g("left"),i=h>=0?h:g("right");i>=0&&(d.set(f,i),e.add(i))});let f=new Set;a.forEach((c,g)=>{if(!f.has(g))if("code"===c.type){let e=d.get(g);void 0!==e?(b.push({code:c.value,name:a[e].value}),f.add(e)):b.push({code:c.value}),f.add(g)}else e.has(g)||(b.push({name:c.value}),f.add(g))})}return b}function bw(a,b){let c=a.indexOf(b);if(c<0)return"";let d=Math.max(0,c-24),e=Math.min(a.length,c+b.length+24);return a.slice(d,e).replace(/\s+/gu," ").trim()}function bx(a){let b=[];for(let c of a){let a=b.findIndex(a=>!!(a.code&&c.code&&bs(a.code,c.code)||a.name&&c.name&&bt(a.name,c.name)));if(a<0){b.push(c);continue}"pair"===c.kind&&"pair"!==b[a].kind&&(b[a]=c)}return b}function by(a){let b=(0,R.UO)(a),c=(0,R.H4)(a),d=a.split(/\r?\n/u),e=new Set;for(let a of b)for(let b=a.start;b<a.end;b+=1)e.add(b);let f=d.filter((a,b)=>!e.has(b)).join("\n"),g=bv(c),h=bv(f),i=g.filter(a=>a.code).map(a=>a.code),j=g.filter(a=>a.name).map(a=>a.name),k=h.filter(a=>a.code).map(a=>a.code),l=h.filter(a=>a.name).map(a=>a.name),m=a=>k.some(b=>bs(a,b)),n=a=>l.some(b=>bt(a,b)),o=a=>i.some(b=>bs(b,a)),p=a=>j.some(b=>bt(b,a)),q=[];for(let a of g){let b=!a.code||m(a.code)||!!a.name&&n(a.name),c=!a.name||n(a.name)||!!a.code&&m(a.code);a.code&&!b&&a.name&&br(a.name)?q.push({kind:"pair",value:a.name,code:a.code,name:a.name,counterpart:a.code}):a.code&&!b?q.push({kind:"code",value:a.code,code:a.code,counterpart:a.name}):a.name&&br(a.name)&&!c&&q.push({kind:"name",value:a.name,name:a.name,counterpart:a.code})}let r=[];for(let a of h){let b=!a.code||o(a.code)||!!a.name&&p(a.name),c=!a.name||p(a.name)||!!a.code&&o(a.code);a.code&&!b&&a.name&&br(a.name)?r.push({kind:"pair",value:a.name,code:a.code,name:a.name,context:bw(f,a.code)}):a.code&&!b?r.push({kind:"code",value:a.code,code:a.code,context:bw(f,a.code)}):a.name&&br(a.name)&&!c&&r.push({kind:"name",value:a.name,name:a.name,context:bw(f,`《${a.name}》`)})}return{declaredNotUsed:bx(q),usedNotDeclared:bx(r),stats:{declaredCodes:i.length,declaredNames:j.length,usedCodes:k.length,usedNames:l.length}}}function bz(a){return"pair"===a.kind?`《${a.name}》(${a.code})`:"code"===a.kind?`标准编号「${a.value}」`:`《${a.value}》`}async function bA(a){let b=await (0,R.Z2)(a.markdown,a.factsModel,{scopeClassifier:a.factTokenScopeClassifier}),c=(0,aC.Uk)(a.tenderRequirements).map(({item:a})=>(0,aC.E6)(a)),d=a.markdown.split(/\n/u).filter(a=>/^#{2,4}\s/u.test(a.trim())).map(a=>(0,aC.NT)(a)).filter(Boolean).slice(0,80),f=(0,o.s3)(a.markdown,o.ev),g=await (0,aB.Mv)(c,[...d,...f]),i=await (0,aB.Mv)(a.evaluationCriteriaItems||[],d),j=new Map((await Promise.all(a.chapters.map(async b=>[b.title,await a.professionalDepthClassifier.analyze(b.content)]))).filter(a=>!!a[1]));return[...(0,l.yT)("toc-consistency",()=>a.promptDocumentRules?.forbidToc?[]:[...(0,R.gN)(a.markdown),...(0,R.f8)(a.markdown)]),...(0,l.yT)("section-numbering",()=>(0,R.Jn)(a.markdown)),...(0,l.yT)("section-count-overflow",()=>(0,R.VW)(a.chapters)),...(0,l.yT)("heading-duplicate",()=>(0,R.kw)(a.markdown)),...(0,l.yT)("structure-integrity",()=>(0,bh.dC)(a.markdown)),...(0,l.yT)("templated-label",()=>(0,bi.D9)(a.markdown)),...(0,l.yT)("title-integrity",()=>(0,bi.uw)(a.markdown)),...(0,l.yT)("evaluation-criteria-coverage",()=>(0,R.wl)(a.markdown,a.evaluationCriteriaItems||[],{semanticSimilarity:i})),...await (0,l.ll)("requirements-coverage",()=>(0,aC.tH)({markdown:a.markdown,entries:(0,aC.Uk)(a.tenderRequirements).map(({item:a})=>a),bodyTexts:f,semanticSimilarity:g})),...(0,l.yT)("fabricated-start-date",()=>(0,o.cf)(a.markdown,a.factsModel,a.materialEvidence)),...(0,l.yT)("field-value-mismatch",()=>(0,o.a8)(a.markdown,a.factsModel)),...(0,l.yT)("area-arithmetic",()=>(0,o.u2)(a.markdown)),...(0,l.yT)("resource-consistency",()=>(0,o.rA)(a.markdown,{laborPeakAuthority:(0,T.yB)(a.blueprintData)})),...(0,l.yT)("node-schedule-consistency",()=>(0,o.Et)(a.markdown)),...(0,l.yT)("cross-section-numeric-conflict",()=>(0,o.H)(a.markdown)),...(0,l.yT)("fact-reconciliation",()=>(0,bj.az)({markdown:a.markdown,billFactLock:a.billFactLock,blueprintData:a.blueprintData,factsModel:a.factsModel})),...(0,l.yT)("greening-maintenance-mismatch",()=>(0,o.x5)(a.markdown,a.factsModel)),...(0,l.yT)("street-light-count-mismatch",()=>(0,o.Tz)(a.markdown,a.factsModel)),...(0,l.yT)("spec-location-mismatch",()=>(0,o.$$)(a.markdown,a.factsModel.specAuthorityMap)),...await (0,l.ll)("blueprint-citation-consistency",async()=>a.blueprintData?(await (0,p.dr)(a.markdown,a.blueprintData)).filter(a=>"error"===a.level):[]),...await (0,l.ll)("cross-project-value-copy",()=>(0,o.iy)(a.markdown,(0,T.L$)(a.blueprintData))),...(0,l.yT)("phase-labor-mixing",()=>(0,o.cv)(a.markdown,(0,T.i2)(a.blueprintData))),...(0,l.yT)("equipment-batch-conflict",()=>(0,o.KE)(a.markdown,(0,T.Be)(a.blueprintData))),...(0,l.yT)("preliminary-action-timing",()=>(0,o.fg)(a.markdown,a.blueprintData?.contract.totalDays)),...(0,l.yT)("foundation-form-residue",()=>(0,o.ex)(a.markdown)),...(0,l.yT)("ambiguous-either-or",()=>(0,o.Fr)(a.markdown)),...(0,l.yT)("excavation-depth-lock",()=>(0,o.bq)(a.markdown)),...(0,l.yT)("excavation-hazard-classification",()=>(0,o.LA)(a.markdown,a.factsModel)),...(0,l.yT)("support-form-fact-consistency",()=>(0,o.ek)(a.markdown,a.factsModel)),...(0,l.yT)("equipment-entry-timing",()=>(0,o.fQ)(a.markdown,a.factsModel)),...(0,l.yT)("fabricated-award",()=>(0,o.hu)(a.markdown,a.factsModel,a.tenderRequirements)),...(0,l.yT)("bidder-qualification-section",()=>(0,o.Rv)(a.markdown)),...(0,l.yT)("cross-chapter-duplicate-section",()=>(function(a,b){let c=a=>a.replace(/^\d+(?:\.\d+)*[、..\s]*/u,"").replace(/[\s,,、]/gu,""),d=new Map;a.forEach((a,b)=>{let c=(0,bg.GQ)(a.title).replace(/[\s,,、]/gu,"");c&&!d.has(c)&&d.set(c,b)});let e=new Map,f=new Map;a.forEach((a,b)=>{let d=new Set;for(let g of(a.content||"").split(/\r?\n/u)){let a=/^###\s+(.+?)\s*$/u.exec(g.trim());if(!a)continue;let h=c(a[1]);if(h.length<8||d.has(h))continue;d.add(h),f.has(h)||f.set(h,a[1].replace(/^\d+(?:\.\d+)*[、..\s]*/u,"").trim());let i=e.get(h)||[];i.push(b),e.set(h,i)}});let g=new Map;b.forEach(a=>{let b=d.get((0,bg.GQ)(a.title).replace(/[\s,,、]/gu,""));if(void 0!==b)for(let d of a.sections||[]){let a=c(d);if(a.length<8)continue;let e=g.get(a)||[];e.includes(b)||e.push(b),g.set(a,e)}});let h=[];for(let[b,c]of e){if(c.length<2)continue;let d=g.get(b)||[];if(d.length>=2)continue;let e=1===d.length?d[0]:c[0],i=f.get(b)||b;for(let b of c){if(b===e)continue;let c=a[b];h.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",chapterId:c.id,sectionTitle:i,message:`跨章同名小节:“${i}”已在「${a[e].title}」落位,本章(「${c.title}」)同名小节属跨章串章重复,须改写归并`,suggestion:"同一主题小节全文只保留一处(归属章);非归属章的同名小节:内容与本章主题相关则改写标题为可区分的具体主题并归并内容,与本章无关则整节删除(含标题行);修复后全文不得再出现跨章同名小节。"})}}return h})(a.chapters,a.effectiveChapters||a.template.chapters||[])),...(0,l.yT)("basic-info-schedule-field",()=>(0,o.cT)(a.markdown)),...(0,l.yT)("duplicate-table",()=>(0,o.ub)(a.markdown)),...(0,l.yT)("duplicate-paragraph",()=>(0,o.cl)(a.markdown)),...(0,l.yT)("paragraph-tail-repeat",()=>(0,o.AD)(a.markdown)),...(0,l.yT)("collision-numbered-heading",()=>(0,o.xR)(a.markdown)),...(0,l.yT)("inverted-date-range",()=>(0,o.jP)(a.markdown)),...(0,l.yT)("resource-triad-section-hierarchy",()=>(0,o.zP)(a.markdown)),...await (0,l.yT)("support-system-conflict",()=>(0,o.r8)(a.markdown,(0,o.P3)(a.factsModel))),...(0,l.yT)("dangerous-list-consistency",()=>(0,o.vH)(a.markdown)),...(0,l.yT)("hazard-exclusion-contradiction",()=>(0,o.m6)(a.markdown)),...await (0,l.yT)("six-hundred-percent-coverage",()=>(0,o.sn)(a.markdown)),...await (0,l.yT)("self-undermining-candidate",()=>(0,o.YN)(a.markdown)),...(0,l.yT)("paragraph-opening-repeat",()=>(0,o.y2)(a.markdown)),...(0,l.yT)("flow-form-repeat",()=>(0,bi.Q9)(a.markdown)),...(0,l.yT)("skeleton-fingerprint",()=>(0,bi.o0)(a.markdown)),...(0,l.yT)("sentence-pattern-repeat",()=>(0,bi.TN)(a.markdown)),...(0,l.yT)("repeated-word",()=>(0,o.Xc)(a.markdown)),...await (0,l.yT)("commercial-data-in-body",()=>(0,o.mC)(a.markdown)),...(0,l.yT)("overview-recap",()=>(0,o.l4)(a.markdown)),...(0,l.yT)("closure-phrase-density-cap",()=>(0,o.dF)(a.markdown)),...await (0,l.ll)("parameter-concept-conflict",()=>aT(a.markdown,{billFactLock:a.billFactLock,blueprintQuantities:a.blueprintData?.quantities})),...await (0,l.ll)("internal-terminology-anchor",()=>(0,S.WT)(a.markdown)),...(0,l.yT)("construction-system-coverage",()=>(function(a){let b=[...new Set(a.flatMap(a=>aU.filter(b=>a.title.includes(b))))];if(0===b.length)return[];let c=a.map(a=>a.content||"").join("\n"),d=b.filter(a=>!c.includes(a));if(0===d.length)return[];let e=a.find(a=>d.some(b=>a.title.includes(b)));return[{level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:`章节大纲涉及的专业工程系统在正文零覆盖:${d.join("、")}`,suggestion:"对应章节必须补写该专业工程的施工方案正文(施工概况/施工流程/施工方法,含可核实的工艺参数),不得整章零覆盖。",chapterId:e?.id}]})(a.chapters)),...(0,l.yT)("dangerous-applicability",()=>(function(a){let b=aY(a);return 0===b.applicableNames.length?[]:b.zonePresent?0===b.missingNames.length?[]:[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`危大工程辨识清单遗漏适用项:${b.missingNames.join("、")}(正文已出现适用前提但辨识清单未列入)`,suggestion:"按建办质〔2018〕31号逐项辨识:将遗漏项补入危大工程辨识清单并标注分级,超过一定规模的专项施工方案需专家论证。"}]:[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`正文出现危大工程适用前提(${b.applicableNames.join("、")})但全文未编制危大工程辨识清单`,suggestion:"必须编制危大工程辨识清单:按建办质〔2018〕31号逐项辨识并标注分级,超过一定规模的专项施工方案需专家论证。"}]})(a.markdown)),...(0,l.yT)("innovation-tech-coverage",()=>(0,R.Ef)(a.markdown,a.effectiveChapters||a.template.chapters||[])),...(0,l.yT)("instruction-like-heading",()=>(0,R.K1)(a.markdown)),...(0,l.yT)("formal-heading-hierarchy",()=>(0,R.Fv)(a.markdown)),...(0,l.yT)("formal-content-integrity",()=>(0,R.k0)(a.markdown)),...(0,l.yT)("punctuation-artifact",()=>(0,R.vZ)(a.markdown)),...(0,l.yT)("table-quality",()=>(0,R.NS)(a.markdown)),...(0,l.yT)("table-spam",()=>(0,R.SN)(a.markdown)),...(0,l.yT)("basis-regulations-coverage",()=>(0,R.AN)(a.markdown,a.blueprintData)),...(0,l.yT)("basis-regulations-cross",()=>(function(a){let b=by(a);if(b.stats.declaredCodes+b.stats.declaredNames===0)return[];let c=[],d=b.usedNotDeclared,e=b.declaredNotUsed;for(let a of d.slice(0,12))c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`编制依据对账缺口:正文引用${bz(a)}未列入编制依据小节${a.context?`(证据:…${a.context}…)`:""}`,suggestion:"请将该标准名称及编号按编号族补入编制依据小节同类目(与正文引用形态一致),不得改动正文既有引用。"});if(d.length>12){let a=d.slice(12);c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`编制依据对账缺口:正文另有 ${a.length} 处引用标准未列入编制依据小节(${a.slice(0,6).map(bz).join("、")} 等)`,suggestion:"请统一核对编制依据小节与正文引用清单,补齐全部未声明标准条目。"})}for(let a of e.slice(0,12))c.push({level:"warning",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`编制依据对账缺口:编制依据小节的${bz(a)}在正文无引用`,suggestion:"请在对应施工章节的工序/验收要求中落位该标准(或从未使用的编制依据中移除),保持编制依据与正文一一对应。"});if(e.length>12){let a=e.slice(12);c.push({level:"warning",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`编制依据对账缺口:编制依据小节另有 ${a.length} 条声明在正文无引用(${a.slice(0,6).map(bz).join("、")} 等)`,suggestion:"请统一核对编制依据与正文引用清单,未使用条目在正文落位或从编制依据移除。"})}return c})(a.markdown)),...(0,l.yT)("resource-breakdown-consistency",()=>(0,R.EJ)(a.markdown,a.blueprintData)),...(0,l.yT)("section-content-integrity",()=>(0,R.qK)(a.markdown,a.chapters)),...(0,l.yT)("professional-content",()=>(0,R.ji)(a.chapters,j)),...(0,l.yT)("professional-score",()=>(0,R.i0)(a.chapters,j)),...(0,l.yT)("generic-professional-content",()=>(0,R.ST)(a.chapters,j)),...(0,l.yT)("management-measure-number",()=>(0,R.xX)(a.chapters,j)),...await (0,l.yT)("closed-loop-density",()=>(0,R.Zu)(a.markdown)),...await (0,l.yT)("cross-chapter-consistency",()=>(0,R.qm)(a.markdown,a.factsModel,a.scopeConflicts,j)),...await (0,l.yT)("process-spec-conflict",()=>(0,R.hr)(a.markdown,a.factsModel)),...(0,l.yT)("evidence-usage-coverage",()=>aj(a.markdown,a.factsModel)),...await (0,l.yT)("paragraph-generic",()=>ak(a.markdown,a.professionalDepthClassifier)),...await (0,l.yT)("construction-org-generic-language",()=>(0,ah.Fw)(a.chapters)),...(0,l.yT)("construction-org-control-loop",()=>(0,ah.Hl)(a.chapters)),...(0,l.yT)("construction-org-professional-chain",()=>(0,ah.iX)({markdown:a.markdown,factsModel:a.factsModel,chapters:a.chapters})),...(0,l.yT)("construction-org-consistency",()=>(function(a,b){let c=[];if(!/施工组织设计|施工组织|施组|质量|安全|文明施工/u.test(a))return c;for(let d of av){if("equipment-counts"===d.kind){c.push(...function(a,b,c){let d=(0,au.AK)(a);if(0===d.length)return[];let{names:e,counts:f}=function(a,b){let c=[],d=new Map,e=a=>{c.includes(a)||c.push(a)};for(let c of b){let b=a[c];if(Array.isArray(b))for(let a of b){if(!a||"object"!=typeof a||!("value"in a)||"string"!=typeof a.value)continue;for(let b of(0,au.AK)(a.value))e(b.name),d.has(b.name)||d.set(b.name,b.count);let b=aw(a.value);if(b.length>12||/\d/u.test(b))continue;let c=(0,au.Rh)(b);c&&e(c)}}return{names:c,counts:d}}(b,c.factGroups);if(0===e.length)return[];let g=[],h=new Map,i=[],j=new Set;for(let a of d){let b=e.find(b=>aA(a.name,[b]));if(b){let c=f.get(b);if(void 0===c||c===a.count)continue;let d=`${a.name}:${[a.count,c].sort((a,b)=>a-b).join("-")}`;if(j.has(d))continue;j.add(d),i.push(`${a.name}:正文 ${a.count} 台、资料 ${c} 台`);continue}if(ax.test(a.name))continue;let c=h.get(a.name);(!c||a.raw.length<c.length)&&h.set(a.name,a.raw)}if(h.size>0){let a=[...h].map(([a,b])=>b.length-a.length<=1?b:a).slice(0,5);g.push({level:"warning",message:`施组数据一致性风险:机械数量型号 可能与项目图谱/事实不一致(${a.join("、")})`,suggestion:`请核对机械数量型号在${c.locations}中的表述,统一以招标文件、项目图谱和可信事实为准。`})}return i.length>0&&g.push({level:"warning",message:`施组数据一致性风险:机械数量型号 正文台数与项目图谱/事实不一致(${i.slice(0,5).join(";")})`,suggestion:`同一机械台数全文档只允许一套口径:请以资料事实/项目图谱中的机械配置为准统一${c.locations}中的台数表述(正文与资料并存时以资料为准)。`}),g}(a,b,d));continue}let e=az(b,d.factGroups),f=(function(a,b){let c=[];for(let d of b){let b=new RegExp(d.source,d.flags.includes("g")?d.flags:`${d.flags}g`);for(let d of a.matchAll(b)){let a=aw(d[1]||d[0]||"");!ay.test(a)&&a.length>=2&&a.length<=80&&c.push(a)}}return[...new Set(c)]})(a,d.patterns??[]).filter(a=>!ax.test(a)&&!aA(a,e)).slice(0,5);f.length>0&&c.push({level:"warning",message:`施组数据一致性风险:${d.label} 可能与项目图谱/事实不一致(${f.join("、")})`,suggestion:`请核对${d.label}在${d.locations}中的表述,统一以招标文件、项目图谱和可信事实为准。`})}return c})(a.markdown,a.factsModel)),...(0,l.yT)("construction-org-chapter-data-coverage",()=>(function(a,b){let c=[],d=az(b,["project","schedule","resources","quality","safety","preciseFacts"]);if(0===d.length)return c;for(let b of a)/概况|进度|资源|质量|安全|文明|工资|应急/u.test(`${b.title} ${(b.sections||[]).join(" ")}`)&&(d.some(a=>a.length>=3&&b.content.includes(a.slice(0,Math.min(10,a.length))))||c.push({level:"warning",message:`${b.title} 缺少可识别的项目图谱事实支撑`,suggestion:"请至少引用工程名称、工期、工程量、资源、风险、质量安全目标等项目专属事实之一,避免纯模板化。"}));return c})(a.chapters,a.factsModel)),...(0,l.yT)("construction-org-major-content",()=>(0,ah.Av)(a.chapters,a.markdown)),...(0,l.yT)("construction-org-division-section",()=>(0,ah.CS)(a.chapters,a.markdown)),...(0,l.yT)("major-content-governance",()=>(0,ah.l5)(a.markdown)),...(0,l.yT)("construction-org-bonus-module",()=>(0,ah.b7)(a.chapters)),...(0,l.yT)("chapter-dependency",()=>al(a.chapters,j)),...(0,l.yT)("document-delivery-score",()=>(function(a,b,c,d){let e={factuality:2*!(0,R.vY)(a,c).some(a=>"error"===a.level),structure:b.length>0&&b.every(b=>a.includes(b.title)&&(0,h.V7)(b.content)>=600)?2:1,depth:0===(0,R.i0)(b,d).length?2:1,executable:0===al(b,d).length?2:1,evidence:0===aj(a,c).length?2:1},f=e.factuality+e.structure+e.depth+e.executable+e.evidence;return[{level:"info",message:`文档交付评分报告:总分 ${f}/10,事实${e.factuality},结构${e.structure},专业${e.depth},可执行${e.executable},证据${e.evidence}`,suggestion:f>=8?"可交付,但建议继续优化证据使用覆盖率和章节依赖链路。":"建议优先修复低分维度后再导出。"}]})(a.markdown,a.chapters,a.factsModel,j)),...(0,l.yT)("generated-fact-verification",()=>b),...(0,l.yT)("numeric-traceability",()=>(0,V.FA)(a.markdown,a.factsModel)),...(0,l.yT)("table-arithmetic-consistency",()=>(0,o.qE)(a.markdown)),...(0,l.yT)("duplicate-basic-info",()=>(0,R.iC)(a.markdown)),...await (0,l.yT)("formal-style",()=>(0,R.BV)(a.markdown)),...(0,l.yT)("tertiary-heading",()=>(0,O.dh)(a.markdown)),...(0,l.yT)("min-chapter-section",()=>(0,R.Ty)(a.chapters)),...(0,l.yT)("hollow-table-cell",()=>(0,R.cG)(a.markdown)),...(0,l.yT)("schedule-duration-overrun",()=>(0,R.v4)(a.markdown)),...(0,l.yT)("caliber-consistency",()=>(0,R.lg)(a.markdown,a.truthValues||[])),...(0,l.yT)("hazard-parameter-binding",()=>(0,R.Bs)(a.markdown,a.truthValues||[])),...(0,l.yT)("blueprint-value-placement",()=>(0,R.uy)(a.markdown,a.blueprintData)),...(0,l.yT)("dangling-conjunction",()=>(0,R.Dy)(a.markdown)),...(0,l.yT)("planned-section-placement",()=>(0,R.hd)(a.markdown,a.chapters)),...await (0,l.yT)("precise-fact-usage",()=>(0,R.N1)(a.markdown,a.factsModel,a.chapters)),...(0,l.yT)("parameter-obligation-usage",()=>(function(a,b,c=[]){if(0===c.length)return[];let d=B(a,b,c),f=d.used.length+d.relevantMissed.length;if(f<8||d.used.length/f>=.9)return[];let g=d.relevantMissed.slice(0,3).map(a=>String(a.value).slice(0,30));return[{level:"error",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`可靠参数义务落位不足:${d.used.length}/${f}(相关而遗漏 ${d.relevantMissed.length} 项${g.length>0?`,缺失如 ${g.join("、")}`:""})`,suggestion:"请将资料中的可靠参数(规格/型号/尺寸/强度/规范编号等)在对应章节的对应位置自然写入,保持原值原形态(数字、单位、编号中的连字符与年份不得改写、拆分或省略);商务金额、单价、税率、预留金类数据一律不得写入正文。",provenance:{detectorId:"parameter-obligation-usage",fingerprint:(0,e.c6)(a)}}]})(a.markdown,a.factsModel,a.chapters)),...await (0,l.yT)("boq-placement",()=>(0,R.S2)(a.markdown,a.chapters,a.factsModel)),...await (0,l.yT)("stage-phrasing",()=>a2(a.markdown)),...await (0,l.yT)("emergency-section-depth",()=>bf(a.markdown)),...(0,l.yT)("boq-row-trace",()=>(0,V.QP)((0,V.JV)(a.markdown,a.factsModel))),...(0,l.yT)("drawing-reference",()=>(0,R.yd)(a.markdown,a.drawingFactLock)),...(0,l.yT)("web-evidence-leakage",()=>(function(a){let b=[];return ap.test(a)&&b.push({level:"warning",message:"正文包含联网增强过程性表述",suggestion:"请删除联网检索、网页资料、搜索结果等过程性话术,改为正式交付语言。"}),b})(a.markdown)),...(0,l.yT)("formal-placeholder",()=>(0,R.bM)(a.markdown)),...(0,l.yT)("prompt-example-leak",()=>(0,R.M$)(a.markdown,a.promptBindings)),...(0,l.yT)("degenerate-content",()=>(0,R.AC)(a.markdown,a.chapters)),...(0,l.yT)("planned-auto-spec-gate",()=>(0,R.mR)(a.markdown,a.template)),...(0,l.yT)("bid-composition-body-table",()=>(0,O.NN)(a.markdown,{bodyTableForbidden:a.bodyTableForbidden,plannedChapterTitles:(a.effectiveChapters?.length?a.effectiveChapters:a.template.chapters).filter(a=>(a.tablePlans?.length||0)>0||(a.tableSections?.length||0)>0||(a.diagramRequirements?.length||0)>0).map(a=>a.title),requiredTableTitles:a.promptDocumentRules?.requiredTables||[]})),...(0,l.yT)("bid-composition-body-figure",()=>(0,O.Fo)(a.markdown,a.bodyFigureForbidden)),...(0,l.yT)("identity-marks-forbidden",()=>(0,o.Vl)(a.markdown,a.identityMarksForbidden)),...(0,l.yT)("planned-structure",()=>(0,O.UG)(a.markdown,a.template,a.bodyTableForbidden)),...(0,l.yT)("table-caption",()=>(0,O.XU)(a.markdown,a.bodyTableForbidden)),...await (0,l.yT)("prompt-document-rule",()=>(0,O.Ed)(a.markdown,a.promptDocumentRules,void 0,{bodyTableForbidden:a.bodyTableForbidden,coverForbidden:a.coverForbidden})),...await (0,l.yT)("local-adaptation-keyword",()=>(0,o.cJ)(a.markdown,a.factsModel)),...(0,l.yT)("boq-division-coverage",()=>(0,V.sl)(a.markdown,a.chapters,a.factsModel))]}let bB={project:"项目基础事实",schedule:"工期与节点",quality:"质量目标与验收",safety:"安全文明要求",resources:"资源投入依据",quantities:"清单/图纸/工程量事实",rules:"规范规则与验收要求"};var bC=c(52922);function bD(a){let b=a.replace(/[\u200b-\u200f\u2060\ufeff]/gu,"").trim();return!(!b||/[。!?]/u.test(b))&&(b.match(/第[一二三四五六七八九十百千\d]+[章节篇]/gu)||[]).length+(b.match(/\d+(?:\.\d+)+/gu)||[]).length>=3}function bE(a){let b=a.split(/[,,、\s]+/u).map(a=>a.trim()).filter(Boolean);return!(b.length<8)&&b.reduce((a,b)=>a+b.length,0)/b.length<8}function bF(a){return a.split("\n").filter(a=>!(0,bC.X9)(a)&&!bD(a)).flatMap(a=>a.split(/[。;;]/u)).map(a=>a.trim()).filter(a=>a.length>=12).filter(a=>{let b=(a.match(/[\u4e00-\u9fff]/gu)||[]).length,c=a.replace(/\s+/gu,"").length;return b>=8&&b/Math.max(1,c)>=.15}).filter(a=>!bE(a))}function bG(a,b){let c=new Set;for(let d of bF(a))for(let a of d.match(b)||[])c.add(a);return c}let bH=/\d|确保|保证|杜绝|实行|采用|落实|建立|执行|达到|不低于|不少于|控制在|符合|按照|承诺/u,bI=["危险性较大的分部分项工程安全管理","扬尘污染防治措施","建筑工人实名制管理","农民工工资专用账户与工资支付保障","生产安全事故应急预案与应急演练","绿色施工与四节一环保措施"],bJ=["危险源辨识与风险识别评估","编制专项施工方案","组织专家论证并履行审批程序","对作业人员进行安全技术交底","施工过程监测与监控量测","分部分项工程验收","三级配电系统","两级漏电保护装置","漏电保护器与接地保护","实名制考勤与人员管理","农民工工资专用账户银行代发","应急预案编制与响应","绿色施工措施与评价"];function bK(a){return a.replace(/^第[一二三四五六七八九十百千万\d]+[章节]\s*/u,"").replace(/^\d+(?:\.\d+)*[、..\s]+/u,"").replace(/^[((]?[一二三四五六七八九十]+[))、..\s]+/u,"").replace(/\s+/gu,"").trim()}async function bL(a){let{blocks:b,completeBlocks:c}=await (0,bC.Pm)(a);return Math.round((.7*Math.min(1,c/Math.max(6,Math.ceil((0,h.V7)(a)/1500)))+.3*(b?c/b:0))*100)}let bM=/目录|层级|编号|表格|表头|分隔线|页码|空小节|缺少规划小节|小节只有标题|缺节/u,bN=/跨章一致性复核|事实一致性冲突|事实冲突|评分项要求|可靠精确参数|应急预案|属地创优|工伤保险|专业评分|深度不足|事实反查|存在多个值|已确认事实未在正文中落位|事实未在正文中落位/u,bO=/缺少规划小节|小节只有标题|空小节|只有标题或表格无正文|小节内容补写未完成|小节生成未达标|同名小节|H4 标题|正文缺少章节标题|小节正文过短/u;function bP(a){let b=new Map;return a.split("\n").forEach((a,c)=>{if(!((0,bC.X9)(a)||bD(a)))for(let d of a.matchAll(/[^。;;]+/gu)){let a=d[0]||"",e=a.trim(),f=e.replace(/[\s,,、::()()【】[\]《》“”"'`]/gu,"");if(f.length<12)continue;let g=(d.index||0)+(a.length-a.trimStart().length),h=b.get(f)||[];h.push({lineIndex:c,start:g,end:g+e.length,raw:e}),b.set(f,h)}}),[...b.entries()].map(([a,b])=>({key:a,occurrences:b}))}function bQ(a){let b=bP(a),c=b.reduce((a,b)=>a+b.occurrences.length,0),d=b.length,e=c-d;return{totalSentences:c,uniqueSentences:d,duplicateInstances:e,duplicateRate:c>0?e/c:0}}async function bR(a,b){let c=await (0,bC.Bt)(a,b),d=(0,bC.Ye)(a),e=bQ(a).duplicateRate,f=await (0,bC.gE)(a,b),g=(0,bC.nY)(a),h=(0,bi.vL)(a),i=bi.y9.map(b=>({patternId:b.id,patternLabel:b.label,count:(0,bi.be)(a,b)})).filter(a=>a.count>=h),j=i.length>=2||i.some(a=>a.count>=2*h);return{level:f.heavyTemplated||"heavy"===c.level||j?"heavy":"medium"===c.level||i.length>0?"medium":"light",fillerRatio:c.ratio,fillerSentences:c.fillerSentences,totalSentences:c.totalSentences,vagueHitCount:d.reduce((a,b)=>a+b.count,0),vaguePhrases:d.map(a=>a.phrase),duplicateSentenceRate:e,crossProjectResidue:g,difficultyCountermeasureRatio:f.ratio,difficultyBothCount:f.bothCount,difficultyQuantifiedCount:f.quantified,difficultyCountermeasures:f.countermeasures,difficultyHeavyTemplated:f.heavyTemplated,sentencePatternHits:i}}function bS(a){let b=a.replace(/[\u200b-\u200f\u2060\ufeff]/gu,"").split(/(?=^#{1,6}\s)/mu),c=[];for(let a of b){if(!a.trim())continue;let b=a.split("\n"),d=/^#{1,6}\s/u.test(b[0]||""),e=d?(b[0]||"").trim():"",f=d?bK(e.replace(/^#{1,6}\s+/u,"")):"",g=d?b.slice(1):b,h=[],i=[];for(let a of g){if(!a.trim()){i.length>0&&(h.push(i),i=[]);continue}i.push(a)}i.length>0&&h.push(i);let j=[];for(let a of h){let b=a.filter(a=>!bD(a));b.some(a=>(function(a){let b=a.replace(/[\u200b-\u200f\u2060\ufeff]/gu,"").trim();return!(b.length<12||(0,bC.X9)(b)||bD(b))&&!bE(b)})(a))&&j.push(b.map(a=>a.trim()).join("\n"))}c.push({heading:e,headingText:f,hasSubstantiveBody:j.length>0,substantiveParagraphs:j})}return c}function bT(a){let b=[];for(let c of bS(a))if(c.hasSubstantiveBody)for(let a of c.substantiveParagraphs)b.push(...function(a){let b=[],c=[],d=0;for(let e of a.split("\n"))d>0&&d+e.length>600&&(b.push(c.join("\n")),c=[],d=0),c.push(e),d+=e.length+1;return c.length>0&&b.push(c.join("\n")),b}(a));return b}async function bU(a){let b=bT(a.markdown),c=await (0,aB.Mv)(b,[...bI,...bJ],a.embedDocuments),d=a=>b.some(b=>c(b,a)>=aB.Eh),e=bI.filter(d).length/bI.length,f=await (0,bC.Bt)(a.markdown,a.embedDocuments);return{completeness:function(a,b,c,d){let e=[...a.matchAll(/^#{1,3}\s+(.+)$/gmu)].map(a=>bK(a[1]||"")).filter(a=>a.length>=2),f=1,g=c?.chapters||[];if(g.length>0){let a=g.map(a=>bK(a.title)).filter(Boolean);f=a.filter(a=>e.some(b=>b.includes(a)||a.includes(b))).length/a.length}else b.length>0&&(f=b.filter(a=>e.some(b=>b.includes(bK(a.title))||bK(a.title).includes(b))).length/b.length);return Math.round((.55*f+.45*d)*100)}(a.markdown,a.chapters,a.template,e),specificity:function(a,b){let c=b.filter(V.O7),d=c.filter(a=>"used"===a.status),e=c.length?d.length/c.length:1,f=d.map(a=>String(a.value||"").replace(/\s+/gu," ").trim()).filter(a=>a.length>=4&&a.length<=60),g=a.map(a=>(a.content||"").replace(/\s+/gu," ")),h=f.filter(a=>g.filter(b=>b.includes(a)).length>=2).length;return Math.round((.55*e+.45*(f.length?h/f.length:1))*100)}(a.chapters,a.factTraces),compliance:function(a,b){let c=bJ.filter(b).length/bJ.length,d=a.split("\n").map(a=>a.replace(/[\u200b-\u200f\u2060\ufeff]/gu,"").trim()).filter(a=>!(!a||/^#{1,6}\s+/u.test(a)||bD(a))&&!/^(?:第[一二三四五六七八九十百\d]+[章节篇]|\d+(?:\.\d+){0,3})\s+[^。;;,,]*$/u.test(a)).join("\n"),e=(0,bC.JD)(d);return Math.round((.8*c+.1*(e.twoStepComplete?1:e.categories.length>0&&e.graded?.6:.3*(e.categories.length>0))+.1*(0,bC.bH)(d).coverage)*100)}(a.markdown,d),executability:await bL(a.markdown),normalization:function(a){let b=a=>"table"===a.category||"format"===a.category||("structure"===a.category?bO.test(a.message):!a.category&&!bN.test(a.message)&&bM.test(a.message));return Math.max(0,100-8*a.filter(a=>"error"===a.level&&b(a)).length-Math.min(3*a.filter(a=>"warning"===a.level&&b(a)).length,30))}(a.issues),uniqueness:function(a,b){let c=b.forbiddenEmptyPhraseHits,d=b.vagueSemanticSentences,e=100*Math.max(0,b.ratio-.1),f=bQ(a),g=Math.max(10,Math.ceil((0,h.V7)(a)/1e4)),i=Math.max(0,f.duplicateInstances-g);return Math.max(0,Math.round(100-4*c-6*d-.5*e-Math.max(60*f.duplicateRate,i)))}(a.markdown,f),moduleCoverageRate:e}}var bV=c(43378),bW=c(31263),bX=c(35547);async function bY(a){let b=a.items.map(a=>a.trim()).filter(Boolean);if(0===b.length)return{total:0,met:0,partial:0,missing:0,simulatedScore:0,criteria:[]};let c=bT(a.markdown),d=bS(a.markdown).map(a=>a.heading).filter(Boolean),e=bF(a.markdown).join(""),f=await (0,aB.Mv)([...c,...d],b,a.embedDocuments),g=b.map((a,b)=>{let g=(0,R.pG)(a),h=g.length>0&&g.some(a=>e.includes(a)),i="",j=0;for(let b of c){let c=f(b,a);c>j&&(j=c,i=b)}if(h||j>=aB.Eh)return{index:b,title:a,status:"met",similarity:j,anchor:i?i.split("\n")[0].replace(/^#{1,6}\s+/u,"").slice(0,80):void 0};let k="",l=0;for(let b of d){let c=f(b,a);c>l&&(l=c,k=b)}return l>=aB.Eh?{index:b,title:a,status:"partial",similarity:l,anchor:k.replace(/^#{1,6}\s+/u,"").slice(0,80)}:{index:b,title:a,status:"missing",similarity:l}}),h=g.filter(a=>"met"===a.status).length,i=g.filter(a=>"partial"===a.status).length,j=g.filter(a=>"missing"===a.status).length,k=Math.round((h+.5*i)/g.length*100);return{total:g.length,met:h,partial:i,missing:j,simulatedScore:k,criteria:g}}let bZ="quality-caliber-c9.2",b$={version:bZ,role:"primary"},b_={version:bZ,role:"secondary",relatedTo:"quality-report"},b0={requirement:.3,structure:.15,dataAnchor:.2,professionalDepth:.15,compliance:.1,factIntegrity:.1},b1={anchors:.85,modules:.15},b2={execution:.45,figure:.35,caption:.2,appendix:.75,bodyCompliance:.25},b3={boq:.4,parameters:.3,drawing:.15,authority:.15},b4={selfHarm:.25,placeholder:.2,length:.15,tableConsistency:.2,regulation:.2},b5={reconciliation:.6,binding:.2,keyFacts:.2},b6=/规格-数值绑定|名称-数值绑定|合计值/u,b7=/编制依据对账缺口/u,b8={selfHarm:/自伤表述/u,placeholder:/占位符|占位式表达/u,length:/正文篇幅/u};function b9(a){let b=a.filter(a=>null!==a.value&&Number.isFinite(a.value));if(0===b.length)return{value:null};let c=b.reduce((a,b)=>a+b.weight,0);return{value:b.reduce((a,b)=>a+b.value*b.weight,0)/c,detail:b.map(a=>a.detail).filter(a=>!!a).join("、")||void 0}}async function ca(a,b){if(!b)return{value:null};let c=a.filter(a=>(0,h.V7)(a.content)>=800);if(0===c.length)return{value:null};let d=[],e=await Promise.all(c.map(a=>b.analyze(a.content).catch(b=>{d.push(`${a.title}:${b instanceof Error?b.message:String(b)}`)}))),f=c.map((a,b)=>({title:a.title,analysis:e[b]})).filter(a=>!!a.analysis);if(0===f.length)return{value:null};let g=0,i=[];for(let a of f){let b=(0,R.Pu)(a.analysis.dimensions),c=(0,R.lH)(a.title);g+=Math.min(1,b/c),b<c&&i.push(`${a.title} ${b}/12`)}let j=g/f.length*100,k=d.length>0?`;⚠ ${d.length} 章语义分析失败未计入(${d.slice(0,2).join(";")})`:"",l=(i.length>0?`专业深度达标 ${Math.round(j)}(薄弱:${i.slice(0,3).join("、")})`:`专业深度达标 ${Math.round(j)}(全部章达目标线)`)+k;return{value:j,detail:l}}async function cb(a){let b=await bU({markdown:a.markdown,chapters:a.chapters,template:a.template,factTraces:a.factTraces,issues:a.issues,embedDocuments:a.embedDocuments}),c=a.bidComposition?.bidType||"unknown",d=a.tenderRequirements?.extracted&&a.tenderRequirements.entries||[],e=d.length>0?(0,aC.U1)(d,a.markdown):[],f=e.filter(a=>"comply"!==a.entry.policy),g=f.length>0?(()=>{let a=f.filter(a=>a.satisfied).length;return{value:a/f.length*100,detail:`锚点全命中 ${a}/${f.length}`}})():{value:null},h=function(a,b){let c=b.filter(a=>!a.exempt),d=c.filter(a=>a.placed),e=d.length>0?(0,s.R8)(a,d.map(a=>a.itemName)):new Map;return b.length>0?{effectiveRows:c.length,placedRows:d.length,explicitRows:e.size,rate:c.length>0?d.length/c.length:null,exemptRows:b.filter(a=>a.exempt).slice(0,50).map(a=>`${a.itemName}${a.quantity?` ${a.quantity}${a.unit}`:""}`)}:void 0}(a.markdown,a.boqRowTraces||[]),i=b9([{...g,weight:b1.anchors},{...function(a){if(!Number.isFinite(a))return{value:null};let b=Math.round(a*bI.length);return{value:100*a,detail:`强制模块 ${b}/${bI.length}`}}(b.moduleCoverageRate),weight:b1.modules}]),j=function(a){let{markdown:b,mode:c,bidComposition:d,effectiveChapters:e,chapters:f}=a;if("blind"===c){let a=[],c=d?.appendixPlan||[];if(c.length>0){let d=c.filter(a=>(0,Q.cM)(b,a)).length;a.push({weight:b2.appendix,value:d/c.length*100,detail:`附表承载 ${d}/${c.length}`})}if(d?.bodyTablePolicy==="forbidden"){let d=function(a,b){let c=-1;for(let d of b){let b=a.indexOf(`## ${d.title}`);b>=0&&(c<0||b<c)&&(c=b)}let d=c>=0?a.slice(0,c):a;return d.match(/^\s*\|/gmu)?.length||0}(b,c);a.push({weight:b2.bodyCompliance,value:Math.max(0,100-25*d),detail:d>0?`正文禁表 违规 ${d} 处`:"正文禁表合规"})}else{let c=(e||[]).reduce((a,b)=>a+(b.tablePlans?.length||0),0);if(c>0&&e){let b=Math.max(0,c-(0,bV.Xi)(e,f).reduce((a,b)=>a+b.plans.length,0));a.push({weight:b2.execution,value:b/c*100,detail:`表执行 ${b}/${c}`})}let d=(e||[]).filter(a=>(a.tablePlans?.length||0)>0||(a.tableSections?.length||0)>0||(a.diagramRequirements?.length||0)>0).map(a=>a.title),g=(0,O.NN)(b,{bodyTableForbidden:!1,plannedChapterTitles:d}).length;a.push({weight:b2.bodyCompliance,value:Math.max(0,100-25*g),detail:g>0?`正文未授权表格 违规 ${g} 处`:"正文表格授权合规"});let h=(0,O.xw)(b,!1);h.total>0&&a.push({weight:b2.caption,value:h.captioned/h.total*100,detail:`题注 ${h.captioned}/${h.total}`})}return b9(a)}let g=[],h=(e||[]).reduce((a,b)=>a+(b.tablePlans?.length||0),0);if(h>0&&e){let a=Math.max(0,h-(0,bV.Xi)(e,f).reduce((a,b)=>a+b.plans.length,0));g.push({weight:b2.execution,value:a/h*100,detail:`表执行 ${a}/${h}`})}let i=(0,bV.cA)({chapters:e});if(i.length>0){let a=(0,bV.Vr)(i,b);g.push({weight:b2.figure,value:a.covered/a.total*100,detail:`图位 ${a.covered}/${a.total}`})}let j=(0,O.xw)(b,d?.bodyTablePolicy==="forbidden");return j.total>0&&g.push({weight:b2.caption,value:j.captioned/j.total*100,detail:`题注 ${j.captioned}/${j.total}`}),b9(g)}({markdown:a.markdown,mode:c,bidComposition:a.bidComposition,effectiveChapters:a.effectiveChapters,chapters:a.chapters}),k=function(a){let{markdown:b,billPlacementAudit:c,parameterUsageAudit:d,drawingFactLock:e,authorityAuditReport:f}=a,g=[];c&&null!==c.rate&&Number.isFinite(c.rate)&&g.push({weight:b3.boq,value:100*c.rate,detail:`BOQ 落位 ${c.placedRows}/${c.effectiveRows}`}),d&&null!==d.rate&&Number.isFinite(d.rate)&&g.push({weight:b3.parameters,value:100*d.rate,detail:`参数 ${d.usedParams}/${d.usedParams+d.relevantMissedCount}`});let h=e?0===e.groups.length?"图纸事实锁无可用分组(无图纸类证据入库)":void 0:"图纸事实锁不可用(未构建或构建失败)";if(e&&e.groups.length>0){let a=(0,bW.SL)(e,b);g.push({weight:b3.drawing,value:100*a.rate,detail:`图纸事实 ${a.referenced.length}/${e.groups.length}`})}if(f){let a=f.unregisteredCount+f.derivationGaps.length+f.processGaps.length;g.push({weight:b3.authority,value:Math.max(0,100-5*a),detail:a>0?`无主数值 缺口 ${a} 处`:"无主数值 0 缺口"})}let i=b9(g);return h&&null!==i.value&&(i.detail=`${i.detail?`${i.detail};`:""}⚠ ${h},图纸分量未计量(本维度按剩余分量重归一)`),i}({markdown:a.markdown,billPlacementAudit:h,parameterUsageAudit:a.parameterUsageAudit,drawingFactLock:a.drawingFactLock,authorityAuditReport:a.authorityAuditReport}),l=await ca(a.chapters,a.professionalDepthClassifier),m=function(a,b){let c=b=>a.filter(a=>b.test(a.message)).length,d=c(b8.selfHarm),e=c(b8.placeholder),f=c(b8.length),g=(0,bX.OV)(b),h=by(b),i=h.declaredNotUsed.length,j=h.usedNotDeclared.length,k=h.stats.declaredCodes+h.stats.declaredNames>0?{weight:b4.regulation,value:Math.max(0,100-(i+j)*20),detail:i+j>0?`编制依据缺口 ${i+j} 处(声明未用 ${i}/引用未声明 ${j})`:"编制依据对账 0 缺口"}:{weight:b4.regulation,value:null};return b9([{weight:b4.selfHarm,value:Math.max(0,100-25*d),detail:d>0?`自伤 ${d} 处`:"自伤 0"},{weight:b4.placeholder,value:Math.max(0,100-25*e),detail:e>0?`占位符 ${e} 处`:"占位符 0"},{weight:b4.length,value:Math.max(0,100-50*f),detail:f>0?`篇幅超限 ${f} 条`:"篇幅达标"},{weight:b4.tableConsistency,value:Math.max(0,100-20*g),detail:g>0?`表内不自洽 ${g} 处`:"表自洽 100%"},k])}(a.issues,a.markdown),n=function(a,b){let c=a.filter(a=>"error"===a.level&&"fact_consistency"===a.category&&!b7.test(a.message)),d=c.filter(a=>b6.test(a.message)),e=[{weight:b5.reconciliation,value:Math.max(0,100-20*c.length),detail:c.length>0?`对账冲突 ${c.length} 条`:"对账零冲突"},{weight:b5.binding,value:Math.max(0,100-20*d.length),detail:d.length>0?`绑定冲突 ${d.length} 条`:"绑定零冲突"}];return b&&null!==b.rate&&Number.isFinite(b.rate)&&e.push({weight:b5.keyFacts,value:100*b.rate,detail:`关键事实 ${b.placed}/${b.specs}`}),b9(e)}(a.issues,a.keyFactPlacementAudit),o=[{key:"requirement",label:"要求实体响应",...i,weight:b0.requirement},{key:"structure",label:"结构呈现落实",...j,weight:b0.structure},{key:"dataAnchor",label:"数据锚定",...k,weight:b0.dataAnchor},{key:"professionalDepth",label:"专业深度",...l,weight:b0.professionalDepth},{key:"compliance",label:"合规与规范",...m,weight:b0.compliance},{key:"factIntegrity",label:"事实完整与一致性",...n,weight:b0.factIntegrity}],p=o.filter(a=>null!==a.value&&Number.isFinite(a.value)),q=p.reduce((a,b)=>a+b.weight,0),r=q>0?p.reduce((a,b)=>a+b.value*b.weight,0)/q:0,t=p.length,u=o.length,v=q>=.9,w=Math.round(r),x=p.map(a=>({key:a.key,label:a.label,score:Math.round(a.value),weight:a.weight,detail:a.detail})),y=a.issues.filter(a=>"error"===a.level&&(0,R.R9)(a)).length,z=Math.max(0,Math.min(99,Math.round(w-Math.min(10,3*y)))),A=await bR(a.markdown,a.embedDocuments),B=a.evaluationCriteriaItems&&a.evaluationCriteriaItems.length>0?await bY({items:a.evaluationCriteriaItems,markdown:a.markdown,embedDocuments:a.embedDocuments}):void 0,C=d.length>0?d.map((a,b)=>({text:a.text.slice(0,160),category:a.category,responded:"comply"===a.policy||!!e[b]?.satisfied})):void 0,D="unknown"===c?";⚠ 标书类型未判定(按明标口径)——暗标项目须核对招标文件后重跑":"",E=B?`;评分细则模拟 ${B.simulatedScore}%(met ${B.met} / partial ${B.partial} / missing ${B.missing})`:"",F=z>=95&&0===y&&b.uniqueness>=60&&v,G=F?["已达到当前质量目标,建议保持事实口径和导出前复核。"]:[...v?[]:[`本次仅计量 ${t}/${u} 维(权重覆盖 ${(100*q).toFixed(0)}%,低于下限 90%):重归一分不得作为达标依据,须先补齐缺失维度的计量条件再判定。`],"按对齐评分口径补齐短板维度:要求实体响应补锚点全命中(核心词与数字参数逐条落位)、结构呈现补图表落位、数据锚定补 BOQ/参数/图纸/无主数值溯源、专业深度按章补六维薄弱项、合规与规范清理自伤与占位符并压缩超限篇幅且编制依据与正文双向对齐、事实一致性补关键事实落位与数值对账。","系统需优先修复阻断问题、扩大本地知识库检索、补抽结构化事实,并将未落位事实写入对应章节。"];b.uniqueness<60&&G.push(`低雷同性 ${b.uniqueness} 低于门槛 60:存在与公开模板/通用话术重合的雷同风险,须改写高重合段落后再交付。`);let H=`${v?"":"⚠ "}本次仅计量 ${t}/${u} 维、权重覆盖 ${(100*q).toFixed(0)}%`,I=`交付置信度 ${z}% / 目标 95%,综合评分 ${w}/100(${[...x.map(a=>`${a.label} ${a.score}`),`低雷同性 ${b.uniqueness}`].join("、")});${H}${D}${E};评分口径 ${bZ}(主尺)`;return{overall:w,deliveryProbability:z,target:95,passed:F,scores:b,mode:c,dimensions:x,requirementChecklist:C,billPlacementAudit:h,parameterUsageAudit:a.parameterUsageAudit,keyFactPlacementAudit:a.keyFactPlacementAudit,templating:A,caliber:b$,evaluationCriteriaAttainment:B,measurementCoverage:{dimensions:t,totalDimensions:u,weightRatio:q,sufficient:v},summary:I,actions:G}}let cc=new Set(["fact-coverage","overview-recap","internal-terminology-anchor","global-consistency-snapshot","data-consistency-snapshot"]);function cd(...a){return a.flat()}var ce=c(19898),cf=c(91977),cg=c(51144);function ch(a){let b=Math.max(0,Math.ceil(a.totalChunks||0)),c=Math.max(0,Math.ceil(a.loadedChunks||0)),d=Math.max(0,b-c),e=b>0?c/b:1,f=[...b>=1e3&&e<.35?["切片未完全预加载"]:[],...!1===a.vectorReady?["向量索引未就绪"]:[]];return{totalChunks:b,loadedChunks:c,omittedChunks:d,loadedRatio:e,highRisk:f.length>0,riskReason:f.join("、")||void 0}}async function ci(a){(0,e.Te)(a.signal);let b=[];if(0===a.scopedFilePaths.length)return b;let c=/资源|人|材|机|材料|设备|清单|工程量|BOQ|报价/u.test(a.chapter.title),d=(c?1.6:1)*(/[、,,与和及]/.test(a.chapter.title)?1.4:1),f=Math.ceil((a.highRisk?18:10)*d),h=Math.ceil((a.highRisk?24:14)*(c?1.4:1)),i=Math.ceil((a.highRisk?72:42)*d),j=Math.ceil((a.highRisk?72e3:42e3)*d),k=[...new Set([...a.requiredNeeds||[],...a.extraClues||[]])].slice(0,12),l=(function(a,b=[],c=[]){let d=a.sections||[],e=[...a.requiredFacts,...b,...c],f=(0,cg.Cr)(d,a=>(0,cg.Ox)(a),{maxItems:16,maxChars:1200},"retrieval-sections").selected,g=(0,cg.Cr)(e,a=>(0,cg.Ox)(a),{maxItems:16,maxChars:1200},"retrieval-facts").selected,h=/[、,,与和及]/.test(a.title),i=/资源|人|材|机|材料|设备|清单|工程量|BOQ|报价/u.test(a.title),j=/进度|工期|节点/u.test(a.title)?["合同工期","计划工期","日历天","开工","竣工","关键线路","进度计划","施工进度"]:/质量|验收/u.test(a.title)?["质量标准","验收规范","检验批","复验","合格","质量保证","隐蔽验收"]:/安全|危大|风险/u.test(a.title)?["安全措施","风险源","危大工程","应急","检查整改","安全防护","应急预案","基坑支护","基坑开挖","基坑底标高","坡率","支护形式","降水","开挖深度","高支模","专项方案"]:i?["工程量清单","项目特征","材料设备","规格型号","数量单位","劳动力","机械设备","进场计划","资源保障","主要材料","施工机具","材料供应","设备配置"]:/施工|方案|方法|技术|工艺/u.test(a.title)?["施工方法","工艺流程","技术标准","构造做法","控制要点","施工准备"]:["工程范围","施工方法","控制要点","验收要求"],k=h?[...j,...a.title.split(/[、,,与和及]+/u).map(a=>a.trim()).filter(a=>a.length>=4)]:j,l=[...new Set([a.title,...f,...g,...k].flatMap(a=>a.split(/[\s、,,。;;::()()《》【】\-/]+/u)).map(a=>a.trim()).filter(a=>a.length>=2))],m=(0,cg.Cr)(l,a=>(0,cg.Ox)(a),{maxItems:36,maxChars:1200},"retrieval-tokens").selected,n=h?a.title.split(/[、,,与和及]+/u).map(a=>a.trim()).filter(a=>a.length>=4).map(a=>`${a} ${f.slice(0,6).join(" ")} ${g.slice(0,4).join(" ")}`.trim()):[];return[...new Set([`${a.title} ${f.join(" ")}`.trim(),...g.map(b=>`${a.title} ${b}`.trim()),...f.map(b=>`${a.title} ${b} ${g.slice(0,6).join(" ")}`.trim()),`${a.title} ${k.join(" ")}`.trim(),...n,m.join(" ")].filter(Boolean))]})(a.chapter,a.requiredNeeds,a.extraClues).slice(0,f),m=[...k.map(b=>`${a.chapter.title} ${b} ${(a.chapter.sections||[]).join(" ")}`.trim()).filter(a=>!l.includes(a)).map(a=>({text:a,boost:2,source:"required-fact-evidence"})),...l.map(a=>({text:a,boost:2.4,source:"deep-retrieval"}))];return b.push(...(await (0,e.l$)(m,async b=>{var c;(0,e.Te)(a.signal);let d=await a.manager.search(a.projectRoot,b.text,{scope:"project",filters:{filePaths:a.scopedFilePaths,materialRoots:a.scopedMaterialRoots??(0,ce.materialRootsOfFiles)(a.scopedFilePaths)},limit:h,weights:{keyword:.62,vector:.32,rewrite:.9,hybridBonus:.28},generationMode:!0});return(c={chapter:a.chapter,results:d.results,fileRoleByPath:a.fileRoleByPath,fileProcessingByPath:a.fileProcessingByPath,boost:b.boost,source:b.source}).results.map(a=>{let b=c.fileProcessingByPath.get(a.filePath);return{chapterId:c.chapter.id,filePath:a.filePath,score:a.score+c.boost+("table"===b?3:"structured_data"===b?2.6:3.2*("bill_of_quantities"===b)),content:a.content,roleId:c.fileRoleByPath.get(a.filePath),processingType:b,sectionTitle:a.sectionTitle,source:c.source}})},{kind:"deepRetrieval",highRisk:a.highRisk})).flat()),[...(0,g.QR)(b.filter(a=>"required-fact-evidence"===a.source),{maxItems:Math.max(6,3*k.length),maxChars:18e3,preservePinned:!0}),...(0,g.QR)(b.filter(a=>"required-fact-evidence"!==a.source),{maxItems:i,maxChars:j,preservePinned:!0})]}var cj=c(32434),ck=c(36003),cl=c(95734);async function cm(a,b){let c=(0,O.r4)(a.content);if(0===c.length)return[];let d=[];for(let e of c){let c=e.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&"),f=a.content.match(RegExp(`^###\\s+(?:\\d+(?:\\.\\d+)*[、..\\s]*\\s+)?${c}\\s*\\n([\\s\\S]*?)(?=^#{2,3}\\s+|$)`,"mu")),g=f?.[1]||"",h=await (0,ck.AI)(e,(0,ck.Ym)(e,a.chapter,a.evidence),b),i=(0,ck.uQ)(e,g,h);i&&d.push(`${e}:${i}`)}return d}function cn(a,b){let c=a.trim();if(!c)return[];let d=Math.max(1e3,Math.ceil(b)),e=[],f=0;for(;f<c.length;){let a=Math.min(f+d,c.length),b=c.lastIndexOf("\n\n",a);(b<=f||a-b>.25*d)&&(b=c.lastIndexOf("\n",a)),(b<=f||a-b>.2*d)&&(b=a),e.push(c.slice(f,b).trim()),f=b}return e.filter(Boolean)}function co(a){return"string"==typeof a?a:a&&"object"==typeof a&&"message"in a?String(a.message):JSON.stringify(a)}function cp(a){let b=Number(process.env[a]);return Number.isFinite(b)&&b>0?Math.ceil(b):0}async function cq(a){var b;(0,e.Te)(a.signal);let c=a.chapters.map(a=>{let b=a.content.replace(/#{1,6}\s+/gu,"").replace(/\*\*/gu,"").replace(/\|/gu," ").replace(/[\n\r]+/gu," ").trim(),c=function(a){let b=[];for(let c of[/(?:总建筑面积|建设规模|总用地面积|总占地面积)[^\n。;;]{0,18}\d+(?:[.,]\d+)?\s*万?\s*(?:㎡|m²|m2|平方米)/gu,/(?:合同估算价|合同估算价格|投资估算|最高投标限价|招标控制价|工程总投资|总投资|工程造价)[^\n。;;]{0,18}\d+(?:[.,]\d+)?\s*万?\s*(?:万元|亿元|元)/gu,/(?:计划工期|合同工期|总工期|施工周期)[^\n。;;]{0,18}\d+\s*(?:日历天|天|个月|月)/gu,/(?:质量标准|质量目标)[^\n。;;]{0,26}/gu,/(?:找平层|抹灰层|防水层|保温层|结合层|垫层|面层|粘结层)[^\n。;;]{0,24}\d+:\d+(?:\.\d+)?/gu]){let d=[...new Set(a.match(c)||[])].slice(0,4);b.push(...d)}return[...new Set(b.map(a=>a.replace(/\s+/gu," ").trim()).filter(Boolean))].join(";")}(a.content);return`章节:${a.title}
|
|
190
190
|
数值口径清单:${c||"(未提取到总量口径数字)"}
|
|
191
191
|
正文摘要:${b.slice(0,600)}`}).join("\n\n---\n\n"),d=function(a){let b=Math.ceil(a.totalChars/Math.max(1e3,a.chunkChars)),c="chapter"===a.phase?cp("DOCUMENT_CHAPTER_REVIEW_MAX_CHUNKS")||Math.min(Math.max(2,Math.floor(a.totalChars/a.chapterCount/4e3)),b):"global"===a.phase?cp("DOCUMENT_GLOBAL_REVIEW_MAX_CHUNKS")||Math.min(4,b):cp("DOCUMENT_FINAL_REVIEW_MAX_CHUNKS")||Math.min(6,b);return{chunks:c,budgetPerChunk:Math.ceil(a.totalChars/Math.max(1,c)),maxIssues:Math.max(4,Math.min(28,Math.ceil(2.5*c)))}}({totalChars:c.length,chapterCount:a.chapters.length,chunkChars:16e3,phase:"global"}),f=cn(c,16e3).map((a,b)=>`**第 ${b+1}/${cn(c,16e3).length} 部分**
|
|
192
192
|
|
|
@@ -195,7 +195,7 @@ ${h}`:""].join("\n\n"),j=[...new Set((await Promise.all(f.map(b=>(0,cl.bb)(i,`${
|
|
|
195
195
|
|
|
196
196
|
${b}
|
|
197
197
|
|
|
198
|
-
返回 JSON:{"issues":[]}`,{maxTokens:1e3,temperature:0,signal:a.signal,diagnostics:a.diagnostics,contextLayers:{l0:i.length,l1:(0,cl.CX)([a.promptTexts]),l3:(0,cl.CX)([b,'\n\n返回 JSON:{"issues":[]}'])},prefixKey:"review-global-consistency"})))).flatMap(a=>Array.isArray(a?.issues)?a.issues:[]).map(co).filter(Boolean))];return{issues:j,stage:(0,q.X5)({type:"llm_review",roleId:"global-consistency-review",status:j.length>0?"failed":"success",message:j.length>0?`全局一致性审查完成:发现 ${j.length} 个跨章问题`:"全局一致性审查通过"},{subtitle:"全局一致性审查"})}}function cr(a,b){return[`| ${a.join(" | ")} |`,`| ${a.map(()=>"---").join(" | ")} |`,...b.map(a=>`| ${a.join(" | ")} |`)]}function cs(a,b){if(!a)return;let c=b.replace(/\s+/gu,"");if(/横道图|网络图|进度计划|总进度/.test(c)){let b=a.schedule||[];if(0===b.length)return;return cr(["工序","持续天数","起止天序","线路性质","依据"],b.map(a=>[a.label,Number.isFinite(a.duration)?String(a.duration):"—",`第${a.startDay}~${a.endDay}天`,a.critical?"关键线路":"非关键线路",a.basis||"—"]))}if(/总平面|平面布置/.test(c)){let b=a.tempLand||[];if(0===b.length)return;return cr(["设施","面积(平方米)","位置","使用时长","说明"],b.map(a=>[a.purpose,"number"==typeof a.area&&Number.isFinite(a.area)?String(a.area):"—",a.location||"—",a.duration||"—",a.note||"—"]))}}let ct="font-family=\"'PingFang SC','Microsoft YaHei','Noto Sans CJK SC',sans-serif\"",cu="#b45309",cv="#1d4ed8",cw="#e5e7eb",cx="#111827";function cy(a){return String(a).replace(/[<>&"']/gu,a=>({"<":"<",">":">","&":"&",'"':""","'":"'"})[a]||a)}function cz(a){return a.replace(/[^一-龥\w-]+/gu,"-").replace(/-+/gu,"-").replace(/^-|-$/gu,"")||"figure"}var cA=c(48661),cB=c(73024),cC=c.n(cB),cD=c(76760),cE=c.n(cD);let cF=/(\d{1,4})\s*个?\s*日历天/gu,cG=/(20\d{2}\s*年\s*\d{1,2}\s*月\s*\d{1,2}\s*日)/gu,cH=/(?:变更修改为|变更为|澄清为|调整为|更正为|修正为|变更至|调整至)\s*[::]?\s*(\d{1,4})\s*个?\s*日历天/u,cI=/(?:变更修改为|变更为|澄清为|调整为|更正为|修正为|变更至|调整至)\s*[::]?\s*(20\d{2}\s*年\s*\d{1,2}\s*月\s*\d{1,2}\s*日)/u;function cJ(a){return`${a.replace(/\s+/gu,"")}日历天`}function cK(a){return a.replace(/\s+/gu,"")}var cL=c(82437),cM=c(10025),cN=c(13145),cO=c(18274);let cP=[{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:"体系空话"}],cQ=RegExp(cP.map(a=>`(?:${a.pattern.source})`).join("|"),"u"),cR=["本小节围绕以下内容展开并结合绑定项目资料","明确适用范围控制目标责任岗位与过程要求","实施前应完成资料核对技术交底和作业条件确认","交底覆盖率按100%控制","关键问题在24小时内形成整改责任","按施工准备过程实施检查验收问题整改资料归档的闭环组织","依据本项目已确认资料中的项目边界","执行日巡查周复核和节点验收制度","一般问题7日内闭环","由项目经理技术负责人和专职安全员联合复核","确保与总体施工部署工期计划和验收要求保持一致","结合现场实际情况合理组织安排","严格执行国家现行有关规范标准","做到文明施工安全生产质量第一","确保工程质量和安全进度","建立健全管理体系并落实相关制度"],cS=["每道工序完成后由质检员实测实量并记录数据","混凝土浇筑完成后每天洒水养护不少于两次","每周组织不少于一次的现场安全专项检查"];async function cT(a){return(0,a3.A)({prototypes:[...cR],negativePrototypes:[...cS],lexicalHints:cQ,embedDocuments:a})}let cU=[/主要分部分项工程施工方案/u,/主要施工方法/u,/主要施工内容/u,/施工方案/u],cV=/(?:建筑面积|面积|总建筑面积)[约]?\s*\d+(?:\.\d+)?\s*(?:㎡|m²)|计划工期\s*\d+|日历天|地上\s*\d+\s*层|框架结构|质量标准[::]?\s*合格/giu;function cW(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 cX(a){let b=[],c=new Map;for(let b of a)for(let a of cW(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 cY(a,b){let c=[],d=await cT(b);for(let b of a){let a=cW(b.content),e=[];for(let b of a){let a=b.body.split(/\n/u).filter(a=>!(0,bC.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 cP)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 cZ(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,bC.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,bC.w7)(a.map(a=>a.sentence),b),g=await cT(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 c$(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,bC.X9)(e)){for(let f of e.split(/[。;;]/u)){let e=f.trim();if(!(e.length<12)&&(0,bC.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 c_(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,bC.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,bC.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 c0(a){let b=[];for(let c of a)for(let a of cW(c.content)){if(!cU.some(b=>b.test(a.heading)||b.test(c.title))||/(?:方案管理|管理程序|管理流程|管理制度|审批流程)/u.test(a.heading))continue;let d=new Set(a.body.match(cO.aX)||[]),e=new Set(a.body.match(cV)||[]),f=new Set(a.body.match(cO.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:1.5)&&b.push({level:"warning",severity:"warning",message:`${c.title} / ${a.heading} 工艺参数密度偏低:每千字 ${d.size} 个工艺参数(概况数字 ${e.size} 个)`,suggestion:"增加工艺级参数落位;概况数字(面积、工期、层数)不能替代工艺参数。"})}return b}function c1(a){let b=[];for(let c of a){let a=c.content.split("\n");for(let d=0;d<a.length;d+=1){let f=a[d].trim();if(!/^#{3}\s+[^\n]*(?:主要分部分项工程施工方案|主要施工方法)/u.test(f))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,e.az)(a));i.length>0&&b.push({level:"error",severity:"blocker",message:`${c.title} / ${f.replace(/^#{3}\s+(?:\d+(?:\.\d+)*\s+)?/u,"")} 有 ${i.length}/${h.length} 个分部分项内容要素不全(作业对象与工程量/工序顺序/施工方法至少缺一)`,suggestion:"每个分项方案需覆盖作业对象与工程量、工序安排、施工方法三方面要素,融入连贯段落叙述(禁止以“施工概况/工艺流程/施工方法”等结构标签充当标题或段落开头引导);工序顺序表达须先后清晰(相邻小节不得同句式开头,同一句式全文不得反复使用,禁止以固定句模复读)。"})}}return b}async function c2(a,b="",c){return[...cX(a),...await cY(a,c),...c0(a),...c1(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,cN.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)]}var c3=c(21702);function c4(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 c5=[{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 c6(a){let{documentSpec:b,validationIssues:c,factsModel:d,finalChapterDrafts:f,finalMarkdown:g,template:i,promptBindings:j,promptDocumentRules:m,projectMaterialSummary:n,domainProfile:p,structuredFacts:q,documentBudget:r,scopeConflicts:s,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:G}=a;return cd((0,l.yT)("spec-gate-rules",()=>(0,R.kQ)(b,c,d,f,g,i.projectBindings||[],j)),(0,l.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||F(d))&&/\d|GB|JGJ|C\d|HRB|DN|mm|MPa|kPa|工期|质量|安全|项目名称|工程名称|招标人|建设地点|建筑面积|结构形式|层数/u.test(d)&&!H(c,e.name)&&b.push({level:"info",message:`正文可能未显式覆盖“${e.name}”`,suggestion:"建议检查对应章节是否已自然表达该事实。"})}let e=a.summary.facts.projectName;!e||"当前知识库项目"===e||F(e)||H(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=I[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:n})),(0,l.yT)("fact-consistency",()=>(function(a){let b=a.profile||J.p4,c=[],d=new Map;for(let c of a.facts){let a=c.fieldName||c.key;!(!a||!function(a,b){let c=(0,J.oC)(b,a);return c?"single"===c.cardinality&&"allow_multiple"!==c.conflictPolicy&&"ignore"!==c.conflictPolicy:/项目名称|工程名称|招标人|建设地点|建筑面积|结构形式|层数|工期|质量标准|合同价格形式|绿色建筑等级|投标有效期|质保期/u.test(a)}(a,b)||L.test(a)&&M.test(c.roleId||""))&&N(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=N(c.value,b,a);e&&d.set(e,[...d.get(e)||[],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;if((g<=3||e.endsWith("等")&&g<=6)&&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=[...d.values()].map(a=>`${a[0].value}(${a.map(a=>a.source).filter(Boolean).join("、")||"未知来源"})`).join(" vs ");c.push({level:"error",message:`事实一致性冲突:${a} 存在多个值:${b}`,suggestion:"请确认当前绑定材料组,或在模板绑定中只绑定当前文档所需材料。"})}}let e=a.summary.facts.projectName;if(e&&"当前知识库项目"!==e&&!/--|延期到|资料|附件|扫描|目录|汇总|打包|备份|招标工程量清单封面|招标工程量清单扉页|工程量清单表|清单封面|清单扉页|\d{1,2}\.\d{1,2}/u.test(e)){let b=K(a.markdown),d=[e,...a.summary.fingerprint.projectNames].flatMap(a=>[a,a.replace(/^\d+(?:\.\d+)?[^\u4e00-\u9fa5]*/u,""),a.replace(/\([^)]*\)|([^)]*)/gu,"")]).map(a=>K(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:q,summary:n,profile:p})),(0,l.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,n)),(0,l.yT)("project-type-consistency",()=>(0,o.MM)(g,{projectName:z?.project?.name,blueprintStrategyId:z?.strategyId})),(0,l.yT)("figure-substitute-table",()=>(0,o.X_)(g,(0,bV.cA)({chapters:u}))),(0,l.yT)("project-basic-placeholder",()=>(0,k.h)(g,q)),await (0,l.ll)("standard-final",()=>bA({markdown:g,truthValues:a.truthValues,chapters:f,factsModel:d,template:i,promptBindings:j,promptDocumentRules:m,scopeConflicts:s,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:G})),(0,l.yT)("fact-coverage",()=>(0,k.br)(g,[...q,...d.preciseFacts]).map(a=>({...a,level:"warning",severity:"warning",suggestion:"建议后续优化事实自然落位;导出阶段不因未落位的引用型或可优化事实阻断。"}))),(0,l.yT)("page-target",()=>(0,h.PE)(i.generationSettings||i.exportSettings,g).filter(a=>!(r.minPages&&/低于目标页数/u.test(a.message)))),(0,l.yT)("document-budget",()=>(0,h.ty)(r,g)),(0,l.yT)("formal-text-gate",()=>(0,cj.IA)(g)),await (0,l.ll)("internal-terminology-anchor",()=>(0,S.WT)(g)),(0,l.yT)("heading-uncovered-engineering-items",()=>(0,R.j9)(g)),(0,l.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,l.yT)("critical-section-depth",()=>(function(a){let b=[];for(let c of a)for(let a of c5){let d=(0,e.Xl)(c.content,a.title)||(0,e.Xl)(c.content,a.title,{fuzzy:!0}),f=(0,h.V7)(d);if(!d||f>=a.minChars)continue;let g=(0,k.R_)(a.title);f>=g?b.push({level:"warning",severity:"warning",message:`${c.title} ${a.title} 正文深度接近目标:当前 ${f} 字,目标 ${a.minChars} 字`,suggestion:"已达到可交付深度,建议后续按项目数据继续优化扩写。"}):b.push({level:"error",severity:"blocker",message:`${c.title} ${a.title} 正文不足:当前 ${f} 字,要求不少于 ${g} 字`,suggestion:"关键小节必须补足项目数据、重点难点与施工内容对应关系后方可导出。",chapterId:c.id,sectionTitle:a.title,provenance:{detectorId:"critical-section-depth",fingerprint:(0,e.c6)(`${c.title}\u0000${a.title}`)}})}return b})(f)),(0,l.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,e.Xl)(a.content,b.title);if(!c)return[];let d=new Set(c.match(/\d+(?:\.\d+)?\s*(?:m²|㎡|平方米|m|mm|层|栋|日历天|天|%|台|套|根|处|个|kg|t|吨)/giu)||[]).size,f=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:"关键小节必须写入项目规模、工期、层数、结构、专业工程或验收参数等具体数值。"}),f<b.minObjectFacts&&g.push({level:"warning",severity:"warning",message:`${a.title} ${b.title} 专业事实覆盖不足:当前 ${f} 类,建议不少于 ${b.minObjectFacts} 类`,suggestion:"优先基于当前项目绑定资料补充工程对象、专业范围、重点难点和对应施工内容;不得为满足类别数量编造或混入其他项目事实。"}),g}))})(f)),(0,l.yT)("chapter-fact-density",()=>f.flatMap(a=>{let b=(0,c3.Cd)(a.content);return b.gap?[{level:"warning",severity:"warning",message:`${a.title} 量化参数密度偏低:当前 ${b.params} 个(约 ${b.per1000}/千字,建议 ≥${c3.J5}/千字、约 ${b.required} 个),小节事实或量化参数落位可继续优化`,suggestion:"优先将本章绑定资料中的工程规模、工期、部位做法、材料规格等参数自然写入对应工序;不得从行业惯例或相邻章节借参数凑数。"}]:[]})),await (0,l.ll)("construction-org-professional-audit",async()=>(await c2(f,g)).map(a=>"error"===a.level?{...a,severity:"blocker"}:a))).map(a=>"error"===a.level?{...a,severity:a.severity||"blocker"}:a)}let c7=/章节级证据覆盖较弱|章节事实覆盖不足|小节事实或量化参数落位可继续优化/u;async function c8(a){var b;let{finalChapterDrafts:c,effectiveChapters:d,factsModel:f,allEvidence:g,finalMarkdown:i,validationIssues:j,retrievalCoverageReports:k,includeRetrievalCoverage:l,template:o,tenderRequirements:p,bidComposition:q,drawingFactLock:r,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(bB[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:f,evidence:g}),x=(0,V.e$)(i,f),y=(b={chapters:c,templateChapters:d,factsModel:f}).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,h.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?"章节覆盖完整。":"系统需补齐章节结构、证据绑定、专业控制点和跨章依赖。"}}),z=cd(j,w.score>=85?[]:[{level:"warning",message:`系统知识库覆盖确认率偏低:${w.score}%`,suggestion:`${w.remediation} 未确认事实域:${w.unconfirmedDomains.map(a=>bB[a]||a).join("、")||"无"}`}],(0,V.c$)(x,{maxIssues:20}),y.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}。`})):[]);z=z.map(a=>c7.test(a.message)&&"warning"===a.level?{...a,level:"info"}:a);let A=await cb({markdown:i,chapters:c,issues:z,knowledgeCoverage:w,factTraces:x,template:o,tenderRequirements:p,bidComposition:q,effectiveChapters:d,drawingFactLock:r,boqRowTraces:(0,V.JV)(i,f),parameterUsageAudit:function(a){let b=a.chapters||[],c=B(a.markdown,a.factsModel,b);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:i,factsModel:f,chapters:c}),keyFactPlacementAudit:function(a,b){let c=function(a){let b=[];if(!a||0===a.length)return b;let c=new Set(D),d=new Set;for(let f of a){if(!f)continue;let a=(0,n.nD)(f);if(!a||!c.has(a.key))continue;let g=`${f.key||""}${f.fieldName||""}${f.fieldId||""}`,h=(0,e.lG)(f.value).trim();if(!h||E.test(h)||/项目名称|工程名称/u.test(g)&&("table"===f.processingType||"structured_data"===f.processingType||/bill_of_quantities/u.test(f.roleId||""))||(0,C.rf)(g,h))continue;let i=(0,m.iG)((0,m.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 f=0,g=[];for(let b of D){let c=d.get(b);if(c){if(c.values.some(b=>(0,C.AI)(a||"",b))){f+=1;continue}g.push(`${c.label}:${c.values[0].slice(0,60)}`)}}let h=d.size;return{specs:h,placed:f,unplaced:g.slice(0,20),rate:h>0?f/h:null}}(i,[...s||[],...f&&f.preciseFacts||[]]),authorityAuditReport:t,professionalDepthClassifier:u,evaluationCriteriaItems:v}),F=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,V.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:z,qualityReport:A,knowledgeCoverage:w,factTraces:x,chapterCoverage:y});z=cd(z,A.passed?[]:[{level:"error",severity:"blocker",category:"structure",repairability:"manual_review",owner:"user",message:`交付置信度未达目标:${A.deliveryProbability}% / ${A.target}%(综合评分 ${A.overall}/100)`,suggestion:A.actions.join(" ")}],F.filter(a=>"high"===a.priority).map(a=>({level:"info",message:`修复策略待执行:${a.title}`,suggestion:a.action})));let G=(0,R.Ai)(z,f,c);return{knowledgeCoverage:w,factTraces:x,chapterCoverage:y,qualityReport:A,repairStrategies:F,validationIssues:z,finalExportGate:G}}async function c9(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,k.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 f=new Map;for(let b of a.allEvidence)f.set(b.source||"unknown",(f.get(b.source||"unknown")??0)+1);a.validationIssues=cd((0,ck.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,e.c6)(a.chapterDrafts.map(a=>a.content).join("\n\n"))}}}));let g=a.chapterDrafts.map(a=>a.content).join("\n\n");a.validationIssues=cd(a.validationIssues,(0,k.br)(g,a.structuredFacts).map(a=>({...a,level:"warning",severity:"warning",suggestion:"建议 Agent Writer 在章节生成阶段优先落位可信基础事实;导出阶段不因未落位的低置信或泛化事实阻断。",provenance:{detectorId:"fact-coverage",fingerprint:(0,e.c6)(g)}})));let h=Math.max(0,a.effectiveChapters.length-a.chapterDrafts.length);a.validationIssues=cd(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 cm({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=cd(a.validationIssues,i.flat()),a.assets=[];let j=[...a.progressStages];for(let b of a.chapterGenerationStages)(0,q.fx)(j,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]}(j),(0,q.fx)(a.executionStages,(0,q.X5)({type:"reference",roleId:"knowledge-usage-report",status:"success",message:`资料使用报告:证据 ${a.allEvidence.length} 条,来源文件 ${a.sources.length} 份,结构化事实 ${a.structuredFacts.length} 条`,details:[`证据类型:${[...f.entries()].map(([a,b])=>`${a} ${b}`).join(",")||"无"}`,`索引健康:可用切片 ${a.indexHealth.usableChunkCount} 条,待索引 ${a.indexHealth.pendingJobs} 个,向量${(0,k.EG)(a.indexHealth.vectorStatus?.status)}`]},{subtitle:"资料使用报告"})),(0,q.fx)(a.executionStages,(0,q.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:"联网增强报告"}))}function da(a){let b=(0,aC._D)(a.tenderRequirements?.structureRequirements||[],a.effectiveChapters,a.requirementsSimilarity);return(0,bV.cA)({structureItems:b.assignments.map(a=>({chapterTitle:a.chapterTitle,form:a.requirement.form,element:a.requirement.element})),chapters:a.effectiveChapters})}function db(a){let b=function(a,b,c){let d=b?function(a){let b=new Set,c=a=>{let c=(0,V.Ih)(a);c&&b.add(c)};for(let b of(0,T.IV)(a).entries){for(let a of("number"==typeof b.value&&c(String(b.value)),[String(b.value),b.spec,b.label]))if(a)for(let b of a.match(/\d+(?:\.\d+)?/gu)??[])c(b);for(let a of b.groups??[])c(String(a.value));for(let a of b.specBreakdown??[])c(String(a.value))}return b}(b):new Set;if(c)for(let a of c){let b=/\d+(?:\.\d+)?/u.exec(a);b&&d.add((0,V.Ih)(b[0]))}let e=function(a){let b=new Map,c=c=>{let d=c.trim();!d||b.has(d)||b.set(d,$(a,d))};for(let b of(0,U.ll)(a))c(b);for(let b of a.matchAll(Z))c(b[0]);return[...b.entries()].sort((a,b)=>a[1]-b[1]).map(([a,b])=>({token:a,index:b}))}(a),f=[],g=[],h=[],i=[],j=0,k=0,l=0,m=0;for(let{token:b,index:c}of e){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"===_(b))continue;if(j+=1,W.some(a=>a.re.test(b))){l+=1;continue}let e=(0,V.Ih)(_(b)),n=a.slice(Math.max(0,c-16),c+b.length+16).replace(/\s+/gu," ").trim(),o={token:b,value:e,context:n,occurrences:function(a,b){let c=0;for(let d=$(a,b);d>=0;d=$(a,b,d+1))c+=1;return c}(a,b)};if(d.has(e)){k+=1,"unattributed"!==aa(n)&&i.push(o);continue}if("unsourced"!==(0,V.eS)({token:b,context:n}).kind){m+=1;continue}let p=aa(n);"derivation-gap"===p?f.push(o):"process-gap"===p?g.push(o):h.push(o)}return{scanned:j,matched:k,registered:l,conventionExempt:m,derivationGaps:f,processGaps:g,unattributed:h,contextualMatches:i,unregisteredCount:h.length}}(a.finalMarkdown,a.blueprintData,af(a));a.authorityAuditReport=b;let c=(0,l.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 扩容)或改定性;工艺库缺口数值应补规范常数/管理数字分类(C-T2 分类器)或改定性。修复后重跑生成复核清零。"}]})(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,q.fx)(a.executionStages,(0,q.X5)({type:"validation",roleId:"authority-audit",status:d?"failed":"success",message:function(a){let b=`无主数值审计:扫描数值 ${a.scanned} 个(命中权威 ${a.matched},登记豁免 ${a.registered},规范/管理豁免 ${a.conventionExempt},推导/投影缺口 ${a.derivationGaps.length},工艺库缺口 ${a.processGaps.length},未登记 ${a.unregisteredCount})`;return a.unregisteredCount>0?`${b};存在疑似编造数值,须核查`:a.derivationGaps.length+a.processGaps.length>0?`${b};存在收编缺口,须补齐或改定性`:b}(b),details:function(a,b=24){let c=(a,c)=>0===c.length?[]:[a,...c.slice(0,b).map(a=>`${a.token}(\xd7${a.occurrences})— ${a.context}`)],d=[...c("未登记(疑似编造,须核查或收编):",a.unattributed),...c("推导器/投影覆盖缺口(进收编清单):",a.derivationGaps),...c("工艺库缺口(进收编清单):",a.processGaps)];return d.length>0?d:["全部数值命中权威索引或登记表,无未登记项。"]}(b)},{subtitle:"权威覆盖审计"}))}async function dc(a){let b=da(a);a.rebuildFinalMarkdown=()=>{let c=(0,o._D)((0,k.Ht)((0,O.bR)((0,k.Xr)((0,O.kT)((0,O.K7)(c4((0,k.jO)(function(a){let b=(0,P.kO)(a.bidComposition),c=(0,k.Ht)((0,O.rs)((0,O.V3)({templateId:a.template.id,templateName:a.template.name,title:a.template.outputTitle,requirement:a.requirement||"",projectRoot:a.projectRoot,projectId:a.projectId,exportSettings:a.template.exportSettings,generationSettings:a.template.generationSettings,facts:a.facts,structuredFacts:a.structuredFacts,factsModel:a.factsModel,chapters:a.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,Q.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,P._C)(a.bidComposition),coverForbidden:a.bidComposition?.formatRules.cover==="forbidden",bidComposition:a.bidComposition,blueprintData:a.blueprintData}),a.structuredFacts,{bodyTableForbidden:(0,P._C)(a.bidComposition)}),a.projectMaterialSummary))))))).markdown;return(0,P._C)(a.bidComposition)?c:(0,bV.Vp)((0,bV.n3)((0,bV.TG)((0,bV.lj)(c)),b,{figureImage:function(a){let b=new Map;return c=>{if((0,P.kO)(a.bidComposition))return;let d=String(c||"").replace(/\s+/gu,"");if(b.has(d))return b.get(d);let e=function(a,b){let c=String(b||"").replace(/\s+/gu,"");if(c){if(/横道图|总进度计划图|进度计划图/.test(c)){let b=function(a){let b=(a||[]).filter(a=>a&&Number.isFinite(a.startDay)&&Number.isFinite(a.endDay));if(0===b.length)return;let c=46+26*b.length+34,d=Math.max(...b.map(a=>a.endDay),1),e=a=>150+a/d*570,f=Math.max(1,Math.round(d/8)),g=[];for(let a=0;a<=d;a+=f)g.push(a);g[g.length-1]!==d&&g.push(d);let h=[`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 760 ${c}" width="760" height="${c}" role="img">`,`<rect width="760" height="${c}" fill="#ffffff"/>`,`<text x="150" y="24" ${ct} font-size="14" font-weight="700" fill="${cx}">施工进度计划横道图(单位:天)</text>`];for(let a of g)h.push(`<line x1="${e(a).toFixed(1)}" y1="38" x2="${e(a).toFixed(1)}" y2="${(46+26*b.length).toFixed(1)}" stroke="${cw}" stroke-width="1"/>`),h.push(`<text x="${e(a).toFixed(1)}" y="32" ${ct} font-size="10" fill="#6b7280" text-anchor="middle">第${a}天</text>`);return b.forEach((a,b)=>{let c=46+26*b,d=e(a.startDay),f=Math.max(2,e(a.endDay)-d),g=a.label.length>16?`${a.label.slice(0,16)}…`:a.label;h.push(`<text x="140" y="${(c+13+4).toFixed(1)}" ${ct} font-size="12" fill="${cx}" text-anchor="end">${cy(g)}</text>`),h.push(`<rect x="${d.toFixed(1)}" y="${c+5}" width="${f.toFixed(1)}" height="14" rx="2" fill="${a.critical?cu:cv}" opacity="0.85"/>`),h.push(`<text x="${(d+f+6).toFixed(1)}" y="${(c+13+4).toFixed(1)}" ${ct} font-size="11" fill="#374151">${a.duration}天</text>`)}),h.push(`<text x="150" y="${c-12}" ${ct} font-size="11" fill="#6b7280">■ 关键线路 / ■ 非关键线路(总工期 ${d} 天,工序起止天序与进度计划表一致)</text>`),h.push("</svg>"),h.join("\n")}(a?.schedule||[]);return b?{name:c,fileName:`fig-${cz("进度横道图")}.svg`,svg:b}:void 0}if(/网络图/.test(c)){let b=function(a){let b=(a||[]).filter(a=>a&&a.label);if(0===b.length)return;let c=b.length>5?18:28,d=Math.min(b.length,Math.max(3,Math.floor((720+c)/(116+c)))),e=40+100*Math.ceil(b.length/d),f=[`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 760 ${e}" width="760" height="${e}" role="img">`,`<rect width="760" height="${e}" fill="#ffffff"/>`,`<text x="20" y="24" ${ct} font-size="14" font-weight="700" fill="${cx}">施工进度计划网络图(箭头链=工序逻辑,加粗=关键线路)</text>`];return b.forEach((a,e)=>{let g=Math.floor(e/d),h=e%d,i=20+h*(116+c),j=40+100*g,k=a.critical?cu:cv,l=a.label.length>9?`${a.label.slice(0,9)}…`:a.label;if(f.push(`<rect x="${i}" y="${j}" width="116" height="54" rx="6" fill="#f9fafb" stroke="${k}" stroke-width="${a.critical?2.4:1.2}"/>`),f.push(`<text x="${i+58}" y="${j+22}" ${ct} font-size="11" fill="${cx}" text-anchor="middle">${cy(l)}</text>`),f.push(`<text x="${i+58}" y="${j+40}" ${ct} font-size="10" fill="#6b7280" text-anchor="middle">${a.duration}天(第${a.startDay}~${a.endDay}天)</text>`),h<d-1&&e<b.length-1){let b=j+27;f.push(`<line x1="${i+116}" y1="${b}" x2="${i+116+c-6}" y2="${b}" stroke="${k}" stroke-width="${a.critical?2.4:1.2}" marker-end="url(#arrow-${a.critical?"c":"n"})"/>`)}else if(e<b.length-1){let b=j+54+46+27;f.push(`<path d="M ${i+58} ${j+54} L ${i+58} ${b} L 78 ${b}" fill="none" stroke="${k}" stroke-width="${a.critical?2.4:1.2}"/>`)}}),f.unshift(`<defs><marker id="arrow-n" markerWidth="8" markerHeight="8" refX="7" refY="4" orient="auto"><path d="M0,0 L8,4 L0,8 z" fill="${cv}"/></marker><marker id="arrow-c" markerWidth="8" markerHeight="8" refX="7" refY="4" orient="auto"><path d="M0,0 L8,4 L0,8 z" fill="${cu}"/></marker></defs>`),f.push("</svg>"),f.join("\n")}(a?.schedule||[]);return b?{name:c,fileName:`fig-${cz("进度网络图")}.svg`,svg:b}:void 0}if(/项目管理机构|机构图|组织架构/.test(c))return{name:c,fileName:`fig-${cz("项目管理机构图")}.svg`,svg:function(){let a=(a,b,c,d,e,f)=>`<rect x="${a}" y="${b}" width="${c}" height="${d}" rx="6" fill="#ffffff" stroke="${f}" stroke-width="1.6"/><text x="${a+c/2}" y="${b+d/2+5}" ${ct} font-size="12" fill="${cx}" text-anchor="middle">${cy(e)}</text>`,b=['<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 760 380" width="760" height="380" role="img">','<rect width="760" height="380" fill="#ffffff"/>',`<text x="20" y="24" ${ct} font-size="14" font-weight="700" fill="${cx}">项目管理机构图</text>`];b.push(a(305,44,150,40,"项目经理","#1d4ed8"));let c=["技术负责人","质量负责人","安全负责人","施工负责人","材料负责人","资料负责人"],d=(720-104*c.length)/(c.length-1);c.forEach((c,e)=>{let f=20+e*(104+d);b.push(`<line x1="380" y1="84" x2="${f+52}" y2="140" stroke="${cw}" stroke-width="1.4"/>`),b.push(a(f,140,104,38,c,"#0e7490"))});let e=["土建施工班组","钢结构安装班组","安装专业班组","装饰装修班组","试验与检测组"],f=(720-128*e.length)/(e.length-1);return e.forEach((c,d)=>{let e=20+d*(128+f);b.push(`<line x1="380" y1="178" x2="${e+64}" y2="248" stroke="${cw}" stroke-width="1.2"/>`),b.push(a(e,248,128,36,c,"#7c3aed"))}),b.push(`<text x="20" y="366" ${ct} font-size="11" fill="#6b7280">注:图示为项目管理机构与岗位设置(职能层级);项目部按本图配置管理人员,各岗位职责与协作关系见本章相应小节。</text>`),b.push("</svg>"),b.join("\n")}()}}}(a.blueprintData,c);if(!e)return void b.set(d,void 0);try{let b=cD.join((0,cA.Gl)(a.projectRoot),"assets");cB.mkdirSync(b,{recursive:!0});let c=cD.join(b,e.fileName);cB.existsSync(c)&&cB.readFileSync(c,"utf8")===e.svg||cB.writeFileSync(c,e.svg,"utf8")}catch{}return b.set(d,e),e}}(a),substituteTable:b=>cs(a.blueprintData,b)}).markdown)};let c=(0,n.mN)({facts:a.structuredFacts,markdown:a.finalMarkdown});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)});{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=(0,cM.Oq)((0,cM.UD)([...(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,cL.iC)({facts:b,overrides:c});a.caliberLedger=(0,cL.wc)(d),a.truthValues=d.resolved,(0,q.fx)(a.progressStages,(0,q.X5)({type:"reference",roleId:"caliber-ledger",status:"success",message:`口径账本(真值层):受管属性 ${d.resolved.length} 项、噪声剔除 ${d.noiseRejected.length} 项、值级覆盖 ${c.length} 对`,details:[...a.caliberLedger.slice(0,20),...c.length>0?[`值级覆盖:${c.slice(0,5).map(a=>`${a.superseded}→${a.effective}`).join("、")}`]:[]]},{subtitle:"口径账本"}))}let d=function(a,b){let c=[];if(!a||0===b.length)return c;let d=/(?:澄清|变更|修改|调整为|更正|原(?:为|值)?|原招标|此前)/u;for(let e of b)for(let f of e.superseded){let g=f.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&"),h=[...a.matchAll(RegExp(g,"gu"))];if(0===h.length)continue;let i=[];for(let b of h){let c=a.lastIndexOf("。",b.index??0)+1,e=a.indexOf("。",(b.index??0)+f.length),g=-1===e?a.length:e+1,h=a.slice(c,g);d.test(h)||i.push(h.trim().slice(0,80))}0!==i.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:`${e.field}口径错误:正文 ${i.length} 处仍以被取代值「${f}」作为现行口径(现行为「${e.effective}」)——如「${i[0]}」`,suggestion:`请把上述表述统一为现行口径「${e.effective}」(答疑澄清后生效值);若确需说明变更过程,须写成引用形态(如「招标文件原为${f},经答疑澄清变更为${e.effective}」),不得单独以旧值陈述现状。`})}return c}(a.finalMarkdown,a.clarificationOverrides||[]);d.length>0&&(a.validationIssues=[...a.validationIssues,...d]),a.baseValidationIssues=a.validationIssues,a.validationIssues=await c6({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,P._C)(a.bidComposition),bodyFigureForbidden:(0,P.kO)(a.bidComposition),identityMarksForbidden:!!a.bidComposition?.identityMarksForbidden,coverForbidden:a.bidComposition?.formatRules.cover==="forbidden"}),db(a),a.qualityBundle=await c8({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}),a.validationIssues=a.qualityBundle.validationIssues,a.finalGateRepairStages=[],a.recomputeFinalValidationBundle=async()=>{let b=a.baseValidationIssues.filter(a=>!a.provenance||!cc.has(a.provenance.detectorId));a.validationIssues=await c6({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,P._C)(a.bidComposition),bodyFigureForbidden:(0,P.kO)(a.bidComposition),identityMarksForbidden:!!a.bidComposition?.identityMarksForbidden,coverForbidden:a.bidComposition?.formatRules.cover==="forbidden"}),db(a),a.qualityBundle=await c8({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}),a.validationIssues=a.qualityBundle.validationIssues}}async function dd(a){let b=(0,k.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=[],g=[];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],j=a.effectiveChapters.find(a=>a.id===i.id||a.title===i.title),l=(0,q.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}(无匹配章节)`),...g.map(a=>`超限跳过:${a}`)]},{subtitle:"事实落位修复"});(0,q.fx)(a.progressStages,l),(0,q.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"),n=0,o=await ab({originalContent:i.content,repairRound:"fact-landing",diagnostics:a.generationDiagnostics,apply:async()=>{let b=await a.withProgressHeartbeat(()=>(0,f.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,f.XG)("fact-landing",a.generationDiagnostics)}));return b.content&&b.content!==i.content?(n=b.appliedCount,j?(0,k.w_)(b.content,j):b.content):i.content},recheck:a=>[(0,k.hS)(a,c.map(a=>a.fact)).length]});o.rolledBack||o.content===i.content||(a.finalChapterDrafts[d]={...i,content:o.content},h+=n);let p=(0,q.X5)({type:"llm_review",roleId:`agent-fact-landing-${b}`,status:o.rolledBack||0===n?"failed":"success",message:o.rolledBack?`重要事实落位已回滚:${i.title}(修复后事实缺失增多,保留修复前正文)`:n>0?`重要事实落位完成:${i.title}(${n} 处 patch)`:`重要事实落位未生效:${i.title}`,details:c.map(a=>`${a.label}=${a.value}`)},{subtitle:"事实落位修复"});(0,q.fx)(a.progressStages,p),(0,q.fx)(a.finalGateRepairStages,p),a.emitProgress(a.finalChapterDrafts,a.progressStages)}h>0&&(a.finalMarkdown=a.rebuildFinalMarkdown(),await a.recomputeFinalValidationBundle())}}var de=c(80572),df=c(56963),dg=c(12863);function dh(a,b){return Math.abs(a-b)<=.01+1e-6*Math.max(Math.abs(a),Math.abs(b))}function di(a,b){return!!dh(a,b)||Number.isInteger(a)&&(Math.trunc(b)===a||Math.round(b)===a)}let dj={米:"m",m:"m",公里:"km",km:"km",平方米:"m2","㎡":"m2","m\xb2":"m2",m2:"m2",立方米:"m3","m\xb3":"m3",m3:"m3",吨:"t",t:"t"};function dk(a){let b=(a||"").trim().toLowerCase();return dj[b]??b}let dl=/^([^。;;\n|]{0,12}?)([\d,,]+(?:\.\d+)?)\s*(座|个|套|处|盏|棵|株|樘|扇|根|块|片|组|件|孔|间|栋|幢|户|米|m|km|公里|平方米|m2|㎡|m²|立方米|m3|m³|kg|吨|t)(?![a-zA-Z0-9²³])/u;function dm(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&&!bj.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,dg.Lp)(b),!0],[(0,dg.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=dl.exec(i);if(!j||bj.As.test(j[1]))continue;let k=Number.parseFloat(j[2].replace(/[,,]/gu,""));if(!Number.isFinite(k))continue;let l=dk(j[3]),m=e.get(b.name)??[],n=m.map(a=>a.quantity),o=d.find(a=>a.name!==b.name&&dh(a.quantity,k)&&dk(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 dn(a,b){let c=[],d=[],e=[],f=await aO(a);if(!f.degraded)for(let g of f.groups){let f=aS(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 a of f.nonLock)for(let b of a.occurrences){let d=b.matchIndex+b.valueOffset;c.push({start:d,end:d+b.valueText.length,replacement:String(f.lockValue),detail:`参数口径“${a.concept}” ${a.raw}→${f.lockValue}${f.lockUnit}(以工程量清单条目「${f.entryName}」锁定口径为准)`,concept:g.concept})}}for(let d of(0,o.mB)(a,b.specAuthorityMap))d.replacement&&c.push({...d.replacement,location:d.location});for(let d of dm(a,b.billFactLock)){if(d.sameNameQuantities.some(a=>di(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 a=d.sameNameEntries[0];dk(d.unit)===dk(a.unit)&&c.push({start:d.valueStart,end:d.valueStart+d.valueText.length,replacement:String(a.quantity),detail:`名称-数值绑定「${d.name}」 ${d.value}${d.unit}→${a.quantity}${a.unit}(清单条目「${d.name}」权威口径)`,binding:d.name})}if(0===c.length)return{replacements:[],falsePositiveGroups:d,noAnchorGroups:e,details:[]};let g=(0,o.gk)(a,c).markdown,h=new Set,i=await aO(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,o.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(dm(g,b.billFactLock).filter(a=>1===a.sameNameEntries.length&&a.foreignEntry&&dk(a.unit)===dk(a.sameNameEntries[0].unit)&&!a.sameNameQuantities.some(b=>di(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 dp=c(71001);let dq={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 dr(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[];let d=await (0,cl.bb)([(0,O.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:dq,taskKind:"structuredGeneration"});return d?.conflicts?.length?d.conflicts.filter(a=>"string"==typeof a.itemA&&"string"==typeof a.itemB&&a.itemA.trim()&&a.itemB.trim()).filter(a=>(a.confidence??0)>=.7).slice(0,6):[]}var ds=c(22213),dt=c(3063);let du=/两可|按图纸|资料[^。;;\n]{0,14}(?:未明确|两可|冲突)|支护[^。;;\n]{0,10}并存/u;async function dv(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,o.lR)(a.content),d=(0,o.QM)(c.markdown),e=(0,o.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,o.ub)(a),...(0,o.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,q.fx)(c,(0,q.X5)({type:"llm_review",roleId:"post-table-dedup",status:"success",message:`补表后确定性去重:${i}`},{subtitle:"表格执行率核验"})),d(b)}return e}async function dw(a,b){let{chapterDraftsFinal:c,template:d,repairPromptTexts:e,requirement:g,signal:h,generationDiagnostics:i,progressStages:j,emitProgress:k,withProgressHeartbeat:l,bidComposition:m}=a,n=a=>!b||!b.plannedChapterKeys.has((0,bg.YZ)(a.title)),o=c.filter(n).map(a=>({chapter:a,tableCount:(0,O.ao)(a.content),blocks:(0,O.wV)(a.content)})).filter(a=>a.tableCount>0);if(0===o.length)return{tableFixApplied:!1};let p=b?"无计划表格修复":"正文拆表修复",r=b?"本章未列入系统表格计划(正文表格须来自系统表格计划,不得自设)":"招标正文禁表(显式禁表句)";(0,q.fx)(j,(0,q.X5)({type:"llm_review",roleId:"table-execution-repair",status:"running",message:`${p}:${o.length} 个章节正文残留表格(${r})`},{subtitle:p})),k(c);let s=0,t=[],u=async a=>{let{chapter:c,tableCount:j,blocks:k}=a;return ab({originalContent:c.content,repairRound:"table-execution-repair",diagnostics:i,beforeMetrics:[j],apply:async()=>{let a=await l(()=>(0,f.X6)(i,`body-table-dismantle:${c.id}`,()=>(0,f.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,P.zs)(j):(0,P.bh)(j)],promptTexts:e,requirement:g,forbidDrawingImages:!b||(0,P.kO)(m),bidComposition:m,diagnostics:i,signal:h,patchGuard:(0,f.XG)("table-execution-repair",i),anchorTexts:k.length>0?k:void 0,maxTokens:Math.min(12e3,Math.max(6e3,1600*k.length))})));return a.content&&a.content!==c.content?a.content:c.content},recheck:a=>[(0,O.ao)(a)]})};(await Promise.allSettled(o.map(a=>u(a)))).forEach((a,b)=>{if("rejected"===a.status){if(h?.aborted)throw a.reason;t.push(`${o[b].chapter.title}:拆表修复异常(${a.reason instanceof Error?a.reason.message:"未知错误"})`);return}let c=a.value,{chapter:d}=o[b];if(c.rolledBack)return void t.push(`${d.title}:拆表后表格数不降反升,已回滚本轮修改`);c.content&&c.content!==d.content?(d.content=c.content,s+=1):t.push(`${d.title}:拆表 patch 未应用(${i?.llm.lastError||"无产出"})`)});let v=c.filter(n).reduce((a,b)=>a+(0,O.ao)(b.content),0);return(0,q.fx)(j,(0,q.X5)({type:"llm_review",roleId:"table-execution-repair",status:v>0?"failed":"success",message:v>0?`${p}:${s} 章已改写,${b?"未授权章":"正文"}仍有 ${v} 处表格残留(终检门禁拦截)`:`${p}:${s} 章已改写,${b?"未授权章表格清零":"正文表格清零"}`,details:t},{subtitle:p})),k(c),{tableFixApplied:s>0}}async function dx(a){let{effectiveChapters:b,chapterDraftsFinal:c,template:d,repairPromptTexts:e,requirement:g,signal:h,generationDiagnostics:i,progressStages:j,emitProgress:k,withProgressHeartbeat:l}=a;if((0,P._C)(a.bidComposition))return dw(a);let m=new Set(b.filter(a=>(a.tablePlans?.length||0)>0||(a.tableSections?.length||0)>0||(a.diagramRequirements?.length||0)>0).map(a=>(0,bg.YZ)(a.title))),n=await dw(a,{plannedChapterKeys:m}),o=(0,bV.Xi)(b,c),p=n.tableFixApplied;if(o.length>0)for(let a=0;a<1&&o.length>0;a+=1){(0,q.fx)(j,(0,q.X5)({type:"llm_review",roleId:"table-execution-repair",status:"running",message:`表格执行率修复第 ${a+1} 轮(${o.length} 个章节缺表)`},{subtitle:"表格执行率修复"})),k(c);let m=0,n=[],r=o.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,m=[...new Set(j.plans.map(a=>a.section).filter(Boolean))],n=m.length>0?k.evidence.filter(a=>{let b=a.sectionTitle;return!b||m.some(a=>b===a||b.includes(a)||a.includes(b))}):k.evidence,o={id:k.id,title:k.title,content:k.content,evidence:n.length?n: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 ab({originalContent:k.content,repairRound:"table-execution-repair",diagnostics:i,beforeMetrics:[j.plans.length],apply:async()=>{let a=await l(()=>(0,f.X6)(i,`table-execution-repair:${k.id}`,()=>(0,f.l8)({template:d,chapter:o,issues:[p],promptTexts:e,requirement:g,forbidDrawingImages:!0,diagnostics:i,signal:h,patchGuard:(0,f.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,bV.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(r.map(a=>s(a))),u=new Set;if(t.forEach((a,b)=>{if("rejected"===a.status){if(h?.aborted)throw a.reason;n.push(`${r[b].gap.chapterTitle}:修复异常(${a.reason instanceof Error?a.reason.message:"未知错误"})`);return}let c=a.value,{gap:d,draft:e}=r[b];if(c.rolledBack)return void n.push(`${d.chapterTitle}:修复后计划表格缺口增多,已回滚本轮修改`);c.content&&c.content!==e.content&&!u.has(e.id)?(e.content=c.content,u.add(e.id),m+=1):u.has(e.id)||n.push(`${d.chapterTitle}:缺 ${d.plans.map(a=>a.title).join("、")}(${i?.llm.lastError||"补表 patch 未应用"})`)}),0===m){(0,q.fx)(j,(0,q.X5)({type:"llm_review",roleId:"table-execution-repair",status:"failed",message:`表格执行率修复第 ${a+1} 轮:补表 patch 未应用(${o.length} 个章节缺表)`,details:n},{subtitle:"表格执行率修复"})),k(c);break}p=!0,k(c),o=(0,bV.Xi)(b,c),(0,q.fx)(j,(0,q.X5)({type:"llm_review",roleId:"table-execution-repair",status:o.length>0?"failed":"success",message:o.length>0?`表格执行率修复第 ${a+1} 轮完成,仍有 ${o.length} 个章节缺表`:`表格执行率修复第 ${a+1} 轮完成`},{subtitle:"表格执行率修复"})),(0,q.fx)(j,(0,q.X5)({type:"llm_review",roleId:"table-execution-review",status:o.length>0?"failed":"success",message:o.length>0?`表格执行率复检:仍有 ${o.length} 个章节缺表`:"表格执行率复检通过"},{subtitle:"表格执行率核验"}))}return{tableFixApplied:p}}function dy(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 dz(a){let{chapterDraftsFinal:b,template:c,repairPromptTexts:d,requirement:e,signal:g,generationDiagnostics:h,progressStages:i,emitProgress:j,withProgressHeartbeat:k,bidComposition:l}=a,m=!1;for(let a=0;a<2;a+=1){let n=b.map(a=>a.content).join("\n\n"),o=await (0,bC.Bt)(n),p=await (0,bC.gE)(n),r=o.fillerSentences>0,s=p.countermeasures>0&&p.ratio<.5,t=(0,bi.P_)(n),u=(0,bi.C4)(n),v=(0,bi.p5)(n),w=(0,bi.uj)(n),x=c$(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 cZ(b):[];C&&D.push(...x);let E=D.length>0?c_(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?p.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=>dy(a,b.chapterTitle)),g=u.filter(b=>dy(a,b.chapterTitle)),h=v.filter(b=>dy(a,b.chapterTitle)),i=w.filter(b=>dy(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&&(m=!0,(0,q.fx)(i,(0,q.X5)({type:"llm_review",roleId:"templating-repair",status:"success",message:`模板化修复第 ${a+1} 轮:确定性删除零信息句(口号/前缀)${E.deletedCount} 处(无剩余重写目标)`},{subtitle:"模板化修复"})),j(b));break}let J=[r?`套话句占比 ${(100*o.ratio).toFixed(1)}%${E.deletedCount>0?`(已确定性删除零信息句 ${E.deletedCount} 处)`:""}`:"",C?`模板化前缀句 ${x.length} 处`:"",s?`重难点双达标 ${(100*p.ratio).toFixed(0)}%`:"",y?`骨架指纹 ${t.length} 组`:"",z?`工序形式 ${u.length} 处`:"",A?`句模复读 ${v.length} 处`:"",B?`标题缺陷 ${w.length} 处`:""].filter(Boolean).join("、");(0,q.fx)(i,(0,q.X5)({type:"llm_review",roleId:"templating-repair",status:"running",message:`模板化修复第 ${a+1} 轮:${J}(${I.length} 章)`},{subtitle:"模板化修复"})),j(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("清单之外的内容一律不得改动;不得删除任何小节标题、表格与数值参数。"),k(()=>(0,f.X6)(h,`templating-repair:${a.chapter.id}`,()=>(0,f.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:l,diagnostics:h,signal:g,patchGuard:(0,f.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 ab({originalContent:F,repairRound:"templating-repair",diagnostics:h,beforeMetrics:[o.ratio,p.ratio,t.length,u.length,w.length,(0,bC._Q)(n).length,v.length],apply:async()=>((await Promise.allSettled(I.map(a=>L(a)))).forEach((a,b)=>{if("rejected"===a.status){if(g?.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)}),j(b),b.map(a=>a.content).join("\n\n")),recheck:async a=>{let b=await (0,bC.Bt)(a),c=await (0,bC.gE)(a);return[b.ratio,c.ratio,(0,bi.P_)(a).length,(0,bi.C4)(a).length,(0,bi.uj)(a).length,(0,bC._Q)(a).length,(0,bi.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,q.fx)(i,(0,q.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,q.fx)(i,(0,q.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:"模板化修复"})),j(b);break}m=!0}if(m){let a=b.map(a=>a.content).join("\n\n"),c=await (0,bC.Bt)(a),d=await (0,bC.gE)(a),e=(0,bi.P_)(a),f=(0,bi.C4)(a),g=(0,bi.p5)(a),h=(0,bi.uj)(a),k=(0,bC._Q)(a),l=c.ratio<.1&&(!d.heavyTemplated||0===d.countermeasures)&&0===e.length&&0===f.length&&0===g.length&&0===h.length&&0===k.length,m=[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} 处`:"",k.length>0?`模板化前缀句 ${k.length} 处`:""].filter(Boolean).join(";");(0,q.fx)(i,(0,q.X5)({type:"llm_review",roleId:"templating-repair",status:l?"success":"failed",message:`模板化修复完成:套话句占比 ${(100*c.ratio).toFixed(1)}%(达标线 ≤10%),重难点归因+量化双达标 ${(100*d.ratio).toFixed(0)}%(达标线 ≥50%)${m?`,模板化残留:${m}`:""}`,details:l?[]:["未完全收敛:残留项先由确定性修复链(终检前)收敛;复核未清零的残留经终检检测器判定,仍不达标即列入终检复核清单(不阻断导出,宁缺毋假)"]},{subtitle:"模板化修复"})),j(b)}return{templatingFixApplied:m}}async function dA(a){let{chapterDraftsFinal:b,projectContext:c,template:d,repairPromptTexts:e,requirement:g,signal:h,generationDiagnostics:i,progressStages:j,emitProgress:k,withProgressHeartbeat:l,bidComposition:m}=a,n=/^#{3,4}\s+(?:\d+(?:\.\d+)*\s+)?(?:项目主要施工\s*内容|主要施工\s*内容|主要分部分项工程施工方案|主要分部分项施工方案|主要施工方法)\s*$/u,o=!1,p=0,r=0,s=(0,ds.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=>n.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,"")}
|
|
198
|
+
返回 JSON:{"issues":[]}`,{maxTokens:1e3,temperature:0,signal:a.signal,diagnostics:a.diagnostics,contextLayers:{l0:i.length,l1:(0,cl.CX)([a.promptTexts]),l3:(0,cl.CX)([b,'\n\n返回 JSON:{"issues":[]}'])},prefixKey:"review-global-consistency"})))).flatMap(a=>Array.isArray(a?.issues)?a.issues:[]).map(co).filter(Boolean))];return{issues:j,stage:(0,q.X5)({type:"llm_review",roleId:"global-consistency-review",status:j.length>0?"failed":"success",message:j.length>0?`全局一致性审查完成:发现 ${j.length} 个跨章问题`:"全局一致性审查通过"},{subtitle:"全局一致性审查"})}}function cr(a,b){return[`| ${a.join(" | ")} |`,`| ${a.map(()=>"---").join(" | ")} |`,...b.map(a=>`| ${a.join(" | ")} |`)]}function cs(a,b){if(!a)return;let c=b.replace(/\s+/gu,"");if(/横道图|网络图|进度计划|总进度/.test(c)){let b=a.schedule||[];if(0===b.length)return;return cr(["工序","持续天数","起止天序","线路性质","依据"],b.map(a=>[a.label,Number.isFinite(a.duration)?String(a.duration):"—",`第${a.startDay}~${a.endDay}天`,a.critical?"关键线路":"非关键线路",a.basis||"—"]))}if(/总平面|平面布置/.test(c)){let b=a.tempLand||[];if(0===b.length)return;return cr(["设施","面积(平方米)","位置","使用时长","说明"],b.map(a=>[a.purpose,"number"==typeof a.area&&Number.isFinite(a.area)?String(a.area):"—",a.location||"—",a.duration||"—",a.note||"—"]))}}let ct="font-family=\"'PingFang SC','Microsoft YaHei','Noto Sans CJK SC',sans-serif\"",cu="#b45309",cv="#1d4ed8",cw="#e5e7eb",cx="#111827";function cy(a){return String(a).replace(/[<>&"']/gu,a=>({"<":"<",">":">","&":"&",'"':""","'":"'"})[a]||a)}function cz(a){return a.replace(/[^一-龥\w-]+/gu,"-").replace(/-+/gu,"-").replace(/^-|-$/gu,"")||"figure"}var cA=c(48661),cB=c(73024),cC=c.n(cB),cD=c(76760),cE=c.n(cD);let cF=/(\d{1,4})\s*个?\s*日历天/gu,cG=/(20\d{2}\s*年\s*\d{1,2}\s*月\s*\d{1,2}\s*日)/gu,cH=/(?:变更修改为|变更为|澄清为|调整为|更正为|修正为|变更至|调整至)\s*[::]?\s*(\d{1,4})\s*个?\s*日历天/u,cI=/(?:变更修改为|变更为|澄清为|调整为|更正为|修正为|变更至|调整至)\s*[::]?\s*(20\d{2}\s*年\s*\d{1,2}\s*月\s*\d{1,2}\s*日)/u;function cJ(a){return`${a.replace(/\s+/gu,"")}日历天`}function cK(a){return a.replace(/\s+/gu,"")}var cL=c(82437),cM=c(10025),cN=c(13145),cO=c(18274);let cP=[{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:"体系空话"}],cQ=RegExp(cP.map(a=>`(?:${a.pattern.source})`).join("|"),"u"),cR=["本小节围绕以下内容展开并结合绑定项目资料","明确适用范围控制目标责任岗位与过程要求","实施前应完成资料核对技术交底和作业条件确认","交底覆盖率按100%控制","关键问题在24小时内形成整改责任","按施工准备过程实施检查验收问题整改资料归档的闭环组织","依据本项目已确认资料中的项目边界","执行日巡查周复核和节点验收制度","一般问题7日内闭环","由项目经理技术负责人和专职安全员联合复核","确保与总体施工部署工期计划和验收要求保持一致","结合现场实际情况合理组织安排","严格执行国家现行有关规范标准","做到文明施工安全生产质量第一","确保工程质量和安全进度","建立健全管理体系并落实相关制度"],cS=["每道工序完成后由质检员实测实量并记录数据","混凝土浇筑完成后每天洒水养护不少于两次","每周组织不少于一次的现场安全专项检查"];async function cT(a){return(0,a3.A)({prototypes:[...cR],negativePrototypes:[...cS],lexicalHints:cQ,embedDocuments:a})}let cU=[/主要分部分项工程施工方案/u,/主要施工方法/u,/主要施工内容/u,/施工方案/u],cV=/(?:建筑面积|面积|总建筑面积)[约]?\s*\d+(?:\.\d+)?\s*(?:㎡|m²)|计划工期\s*\d+|日历天|地上\s*\d+\s*层|框架结构|质量标准[::]?\s*合格/giu;function cW(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 cX(a){let b=[],c=new Map;for(let b of a)for(let a of cW(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 cY(a,b){let c=[],d=await cT(b);for(let b of a){let a=cW(b.content),e=[];for(let b of a){let a=b.body.split(/\n/u).filter(a=>!(0,bC.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 cP)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 cZ(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,bC.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,bC.w7)(a.map(a=>a.sentence),b),g=await cT(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 c$(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,bC.X9)(e)){for(let f of e.split(/[。;;]/u)){let e=f.trim();if(!(e.length<12)&&(0,bC.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 c_(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,bC.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,bC.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 c0(a){let b=[];for(let c of a)for(let a of cW(c.content)){if(!cU.some(b=>b.test(a.heading)||b.test(c.title))||/(?:方案管理|管理程序|管理流程|管理制度|审批流程)/u.test(a.heading))continue;let d=new Set(a.body.match(cO.aX)||[]),e=new Set(a.body.match(cV)||[]),f=new Set(a.body.match(cO.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:1.5)&&b.push({level:"warning",severity:"warning",message:`${c.title} / ${a.heading} 工艺参数密度偏低:每千字 ${d.size} 个工艺参数(概况数字 ${e.size} 个)`,suggestion:"增加工艺级参数落位;概况数字(面积、工期、层数)不能替代工艺参数。"})}return b}function c1(a){let b=[];for(let c of a){let a=c.content.split("\n");for(let d=0;d<a.length;d+=1){let f=a[d].trim();if(!/^#{3}\s+[^\n]*(?:主要分部分项工程施工方案|主要施工方法)/u.test(f))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,e.az)(a));i.length>0&&b.push({level:"error",severity:"blocker",message:`${c.title} / ${f.replace(/^#{3}\s+(?:\d+(?:\.\d+)*\s+)?/u,"")} 有 ${i.length}/${h.length} 个分部分项内容要素不全(作业对象与工程量/工序顺序/施工方法至少缺一)`,suggestion:"每个分项方案需覆盖作业对象与工程量、工序安排、施工方法三方面要素,融入连贯段落叙述(禁止以“施工概况/工艺流程/施工方法”等结构标签充当标题或段落开头引导);工序顺序表达须先后清晰(相邻小节不得同句式开头,同一句式全文不得反复使用,禁止以固定句模复读)。"})}}return b}async function c2(a,b="",c){return[...cX(a),...await cY(a,c),...c0(a),...c1(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,cN.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)]}var c3=c(21702);function c4(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 c5=[{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 c6(a){let{documentSpec:b,validationIssues:c,factsModel:d,finalChapterDrafts:f,finalMarkdown:g,template:i,promptBindings:j,promptDocumentRules:m,projectMaterialSummary:n,domainProfile:p,structuredFacts:q,documentBudget:r,scopeConflicts:s,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:G}=a;return cd((0,l.yT)("spec-gate-rules",()=>(0,R.kQ)(b,c,d,f,g,i.projectBindings||[],j)),(0,l.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||F(d))&&/\d|GB|JGJ|C\d|HRB|DN|mm|MPa|kPa|工期|质量|安全|项目名称|工程名称|招标人|建设地点|建筑面积|结构形式|层数/u.test(d)&&!H(c,e.name)&&b.push({level:"info",message:`正文可能未显式覆盖“${e.name}”`,suggestion:"建议检查对应章节是否已自然表达该事实。"})}let e=a.summary.facts.projectName;!e||"当前知识库项目"===e||F(e)||H(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=I[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:n})),(0,l.yT)("fact-consistency",()=>(function(a){let b=a.profile||J.p4,c=[],d=new Map;for(let c of a.facts){let a=c.fieldName||c.key;!(!a||!function(a,b){let c=(0,J.oC)(b,a);return c?"single"===c.cardinality&&"allow_multiple"!==c.conflictPolicy&&"ignore"!==c.conflictPolicy:/项目名称|工程名称|招标人|建设地点|建筑面积|结构形式|层数|工期|质量标准|合同价格形式|绿色建筑等级|投标有效期|质保期/u.test(a)}(a,b)||L.test(a)&&M.test(c.roleId||""))&&N(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=N(c.value,b,a);e&&d.set(e,[...d.get(e)||[],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;if((g<=3||e.endsWith("等")&&g<=6)&&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=[...d.values()].map(a=>`${a[0].value}(${a.map(a=>a.source).filter(Boolean).join("、")||"未知来源"})`).join(" vs ");c.push({level:"error",message:`事实一致性冲突:${a} 存在多个值:${b}`,suggestion:"请确认当前绑定材料组,或在模板绑定中只绑定当前文档所需材料。"})}}let e=a.summary.facts.projectName;if(e&&"当前知识库项目"!==e&&!/--|延期到|资料|附件|扫描|目录|汇总|打包|备份|招标工程量清单封面|招标工程量清单扉页|工程量清单表|清单封面|清单扉页|\d{1,2}\.\d{1,2}/u.test(e)){let b=K(a.markdown),d=[e,...a.summary.fingerprint.projectNames].flatMap(a=>[a,a.replace(/^\d+(?:\.\d+)?[^\u4e00-\u9fa5]*/u,""),a.replace(/\([^)]*\)|([^)]*)/gu,"")]).map(a=>K(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:q,summary:n,profile:p})),(0,l.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,n)),(0,l.yT)("project-type-consistency",()=>(0,o.MM)(g,{projectName:z?.project?.name,blueprintStrategyId:z?.strategyId})),(0,l.yT)("figure-substitute-table",()=>(0,o.X_)(g,(0,bV.cA)({chapters:u}))),(0,l.yT)("project-basic-placeholder",()=>(0,k.h)(g,q)),await (0,l.ll)("standard-final",()=>bA({markdown:g,truthValues:a.truthValues,chapters:f,factsModel:d,template:i,promptBindings:j,promptDocumentRules:m,scopeConflicts:s,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:G})),(0,l.yT)("fact-coverage",()=>(0,k.br)(g,[...q,...d.preciseFacts]).map(a=>({...a,level:"warning",severity:"warning",suggestion:"建议后续优化事实自然落位;导出阶段不因未落位的引用型或可优化事实阻断。"}))),(0,l.yT)("page-target",()=>(0,h.PE)(i.generationSettings||i.exportSettings,g).filter(a=>!(r.minPages&&/低于目标页数/u.test(a.message)))),(0,l.yT)("document-budget",()=>(0,h.ty)(r,g)),(0,l.yT)("formal-text-gate",()=>(0,cj.IA)(g)),await (0,l.ll)("internal-terminology-anchor",()=>(0,S.WT)(g)),(0,l.yT)("heading-uncovered-engineering-items",()=>(0,R.j9)(g)),(0,l.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,l.yT)("critical-section-depth",()=>(function(a){let b=[];for(let c of a)for(let a of c5){let d=(0,e.Xl)(c.content,a.title)||(0,e.Xl)(c.content,a.title,{fuzzy:!0}),f=(0,h.V7)(d);if(!d||f>=a.minChars)continue;let g=(0,k.R_)(a.title);f>=g?b.push({level:"warning",severity:"warning",message:`${c.title} ${a.title} 正文深度接近目标:当前 ${f} 字,目标 ${a.minChars} 字`,suggestion:"已达到可交付深度,建议后续按项目数据继续优化扩写。"}):b.push({level:"error",severity:"blocker",message:`${c.title} ${a.title} 正文不足:当前 ${f} 字,要求不少于 ${g} 字`,suggestion:"关键小节必须补足项目数据、重点难点与施工内容对应关系后方可导出。",chapterId:c.id,sectionTitle:a.title,provenance:{detectorId:"critical-section-depth",fingerprint:(0,e.c6)(`${c.title}\u0000${a.title}`)}})}return b})(f)),(0,l.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,e.Xl)(a.content,b.title);if(!c)return[];let d=new Set(c.match(/\d+(?:\.\d+)?\s*(?:m²|㎡|平方米|m|mm|层|栋|日历天|天|%|台|套|根|处|个|kg|t|吨)/giu)||[]).size,f=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:"关键小节必须写入项目规模、工期、层数、结构、专业工程或验收参数等具体数值。"}),f<b.minObjectFacts&&g.push({level:"warning",severity:"warning",message:`${a.title} ${b.title} 专业事实覆盖不足:当前 ${f} 类,建议不少于 ${b.minObjectFacts} 类`,suggestion:"优先基于当前项目绑定资料补充工程对象、专业范围、重点难点和对应施工内容;不得为满足类别数量编造或混入其他项目事实。"}),g}))})(f)),(0,l.yT)("chapter-fact-density",()=>f.flatMap(a=>{let b=(0,c3.Cd)(a.content);return b.gap?[{level:"warning",severity:"warning",message:`${a.title} 量化参数密度偏低:当前 ${b.params} 个(约 ${b.per1000}/千字,建议 ≥${c3.J5}/千字、约 ${b.required} 个),小节事实或量化参数落位可继续优化`,suggestion:"优先将本章绑定资料中的工程规模、工期、部位做法、材料规格等参数自然写入对应工序;不得从行业惯例或相邻章节借参数凑数。"}]:[]})),await (0,l.ll)("construction-org-professional-audit",async()=>(await c2(f,g)).map(a=>"error"===a.level?{...a,severity:"blocker"}:a))).map(a=>"error"===a.level?{...a,severity:a.severity||"blocker"}:a)}let c7=/章节级证据覆盖较弱|章节事实覆盖不足|小节事实或量化参数落位可继续优化/u;async function c8(a){var b;let{finalChapterDrafts:c,effectiveChapters:d,factsModel:f,allEvidence:g,finalMarkdown:i,validationIssues:j,retrievalCoverageReports:k,includeRetrievalCoverage:l,template:o,tenderRequirements:p,bidComposition:q,drawingFactLock:r,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(bB[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:f,evidence:g}),x=(0,V.e$)(i,f),y=(b={chapters:c,templateChapters:d,factsModel:f}).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,h.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?"章节覆盖完整。":"系统需补齐章节结构、证据绑定、专业控制点和跨章依赖。"}}),z=cd(j,w.score>=85?[]:[{level:"warning",message:`系统知识库覆盖确认率偏低:${w.score}%`,suggestion:`${w.remediation} 未确认事实域:${w.unconfirmedDomains.map(a=>bB[a]||a).join("、")||"无"}`}],(0,V.c$)(x,{maxIssues:20}),y.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}。`})):[]);z=z.map(a=>c7.test(a.message)&&"warning"===a.level?{...a,level:"info"}:a);let A=await cb({markdown:i,chapters:c,issues:z,knowledgeCoverage:w,factTraces:x,template:o,tenderRequirements:p,bidComposition:q,effectiveChapters:d,drawingFactLock:r,boqRowTraces:(0,V.JV)(i,f),parameterUsageAudit:function(a){let b=a.chapters||[],c=B(a.markdown,a.factsModel,b);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:i,factsModel:f,chapters:c}),keyFactPlacementAudit:function(a,b){let c=function(a){let b=[];if(!a||0===a.length)return b;let c=new Set(D),d=new Set;for(let f of a){if(!f)continue;let a=(0,n.nD)(f);if(!a||!c.has(a.key))continue;let g=`${f.key||""}${f.fieldName||""}${f.fieldId||""}`,h=(0,e.lG)(f.value).trim();if(!h||E.test(h)||/项目名称|工程名称/u.test(g)&&("table"===f.processingType||"structured_data"===f.processingType||/bill_of_quantities/u.test(f.roleId||""))||(0,C.rf)(g,h))continue;let i=(0,m.iG)((0,m.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 f=0,g=[];for(let b of D){let c=d.get(b);if(c){if(c.values.some(b=>(0,C.AI)(a||"",b))){f+=1;continue}g.push(`${c.label}:${c.values[0].slice(0,60)}`)}}let h=d.size;return{specs:h,placed:f,unplaced:g.slice(0,20),rate:h>0?f/h:null}}(i,[...s||[],...f&&f.preciseFacts||[]]),authorityAuditReport:t,professionalDepthClassifier:u,evaluationCriteriaItems:v}),F=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,V.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:z,qualityReport:A,knowledgeCoverage:w,factTraces:x,chapterCoverage:y});z=cd(z,A.passed?[]:[{level:"error",severity:"blocker",category:"structure",repairability:"manual_review",owner:"user",message:`交付置信度未达目标:${A.deliveryProbability}% / ${A.target}%(综合评分 ${A.overall}/100)`,suggestion:A.actions.join(" ")}],F.filter(a=>"high"===a.priority).map(a=>({level:"info",message:`修复策略待执行:${a.title}`,suggestion:a.action})));let G=(0,R.Ai)(z,f,c);return{knowledgeCoverage:w,factTraces:x,chapterCoverage:y,qualityReport:A,repairStrategies:F,validationIssues:z,finalExportGate:G}}async function c9(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,k.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 f=new Map;for(let b of a.allEvidence)f.set(b.source||"unknown",(f.get(b.source||"unknown")??0)+1);a.validationIssues=cd((0,ck.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,e.c6)(a.chapterDrafts.map(a=>a.content).join("\n\n"))}}}));let g=a.chapterDrafts.map(a=>a.content).join("\n\n");a.validationIssues=cd(a.validationIssues,(0,k.br)(g,a.structuredFacts).map(a=>({...a,level:"warning",severity:"warning",suggestion:"建议 Agent Writer 在章节生成阶段优先落位可信基础事实;导出阶段不因未落位的低置信或泛化事实阻断。",provenance:{detectorId:"fact-coverage",fingerprint:(0,e.c6)(g)}})));let h=Math.max(0,a.effectiveChapters.length-a.chapterDrafts.length);a.validationIssues=cd(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 cm({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=cd(a.validationIssues,i.flat()),a.assets=[];let j=[...a.progressStages];for(let b of a.chapterGenerationStages)(0,q.fx)(j,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]}(j),(0,q.fx)(a.executionStages,(0,q.X5)({type:"reference",roleId:"knowledge-usage-report",status:"success",message:`资料使用报告:证据 ${a.allEvidence.length} 条,来源文件 ${a.sources.length} 份,结构化事实 ${a.structuredFacts.length} 条`,details:[`证据类型:${[...f.entries()].map(([a,b])=>`${a} ${b}`).join(",")||"无"}`,`索引健康:可用切片 ${a.indexHealth.usableChunkCount} 条,待索引 ${a.indexHealth.pendingJobs} 个,向量${(0,k.EG)(a.indexHealth.vectorStatus?.status)}`]},{subtitle:"资料使用报告"})),(0,q.fx)(a.executionStages,(0,q.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:"联网增强报告"}))}function da(a){let b=(0,aC._D)(a.tenderRequirements?.structureRequirements||[],a.effectiveChapters,a.requirementsSimilarity);return(0,bV.cA)({structureItems:b.assignments.map(a=>({chapterTitle:a.chapterTitle,form:a.requirement.form,element:a.requirement.element})),chapters:a.effectiveChapters})}function db(a){let b=function(a,b,c){let d=b?function(a){let b=new Set,c=a=>{let c=(0,V.Ih)(a);c&&b.add(c)};for(let b of(0,T.IV)(a).entries){for(let a of("number"==typeof b.value&&c(String(b.value)),[String(b.value),b.spec,b.label]))if(a)for(let b of a.match(/\d+(?:\.\d+)?/gu)??[])c(b);for(let a of b.groups??[])c(String(a.value));for(let a of b.specBreakdown??[])c(String(a.value))}return b}(b):new Set;if(c)for(let a of c){let b=/\d+(?:\.\d+)?/u.exec(a);b&&d.add((0,V.Ih)(b[0]))}let e=function(a){let b=new Map,c=c=>{let d=c.trim();!d||b.has(d)||b.set(d,$(a,d))};for(let b of(0,U.ll)(a))c(b);for(let b of a.matchAll(Z))c(b[0]);return[...b.entries()].sort((a,b)=>a[1]-b[1]).map(([a,b])=>({token:a,index:b}))}(a),f=[],g=[],h=[],i=[],j=0,k=0,l=0,m=0;for(let{token:b,index:c}of e){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"===_(b))continue;if(j+=1,W.some(a=>a.re.test(b))){l+=1;continue}let e=(0,V.Ih)(_(b)),n=a.slice(Math.max(0,c-16),c+b.length+16).replace(/\s+/gu," ").trim(),o={token:b,value:e,context:n,occurrences:function(a,b){let c=0;for(let d=$(a,b);d>=0;d=$(a,b,d+1))c+=1;return c}(a,b)};if(d.has(e)){k+=1,"unattributed"!==aa(n)&&i.push(o);continue}if("unsourced"!==(0,V.eS)({token:b,context:n}).kind){m+=1;continue}let p=aa(n);"derivation-gap"===p?f.push(o):"process-gap"===p?g.push(o):h.push(o)}return{scanned:j,matched:k,registered:l,conventionExempt:m,derivationGaps:f,processGaps:g,unattributed:h,contextualMatches:i,unregisteredCount:h.length}}(a.finalMarkdown,a.blueprintData,af(a));a.authorityAuditReport=b;let c=(0,l.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 扩容)或改定性;工艺库缺口数值应补规范常数/管理数字分类(C-T2 分类器)或改定性。修复后重跑生成复核清零。"}]})(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,q.fx)(a.executionStages,(0,q.X5)({type:"validation",roleId:"authority-audit",status:d?"failed":"success",message:function(a){let b=`无主数值审计:扫描数值 ${a.scanned} 个(命中权威 ${a.matched},登记豁免 ${a.registered},规范/管理豁免 ${a.conventionExempt},推导/投影缺口 ${a.derivationGaps.length},工艺库缺口 ${a.processGaps.length},未登记 ${a.unregisteredCount})`;return a.unregisteredCount>0?`${b};存在疑似编造数值,须核查`:a.derivationGaps.length+a.processGaps.length>0?`${b};存在收编缺口,须补齐或改定性`:b}(b),details:function(a,b=24){let c=(a,c)=>0===c.length?[]:[a,...c.slice(0,b).map(a=>`${a.token}(\xd7${a.occurrences})— ${a.context}`)],d=[...c("未登记(疑似编造,须核查或收编):",a.unattributed),...c("推导器/投影覆盖缺口(进收编清单):",a.derivationGaps),...c("工艺库缺口(进收编清单):",a.processGaps)];return d.length>0?d:["全部数值命中权威索引或登记表,无未登记项。"]}(b)},{subtitle:"权威覆盖审计"}))}async function dc(a){let b=da(a);a.rebuildFinalMarkdown=()=>{let c=(0,o._D)((0,k.Ht)((0,O.bR)((0,k.Xr)((0,O.kT)((0,O.K7)(c4((0,k.jO)(function(a){let b=(0,P.kO)(a.bidComposition),c=(0,k.Ht)((0,O.rs)((0,O.V3)({templateId:a.template.id,templateName:a.template.name,title:a.template.outputTitle,requirement:a.requirement||"",projectRoot:a.projectRoot,projectId:a.projectId,exportSettings:a.template.exportSettings,generationSettings:a.template.generationSettings,facts:a.facts,structuredFacts:a.structuredFacts,factsModel:a.factsModel,chapters:a.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,Q.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,P._C)(a.bidComposition),coverForbidden:a.bidComposition?.formatRules.cover==="forbidden",bidComposition:a.bidComposition,blueprintData:a.blueprintData}),a.structuredFacts,{bodyTableForbidden:(0,P._C)(a.bidComposition)}),a.projectMaterialSummary))))))).markdown;return(0,P._C)(a.bidComposition)?c:(0,bV.Vp)((0,bV.n3)((0,bV.TG)((0,bV.lj)(c)),b,{figureImage:function(a){let b=new Map;return c=>{if((0,P.kO)(a.bidComposition))return;let d=String(c||"").replace(/\s+/gu,"");if(b.has(d))return b.get(d);let e=function(a,b){let c=String(b||"").replace(/\s+/gu,"");if(c){if(/横道图|总进度计划图|进度计划图/.test(c)){let b=function(a){let b=(a||[]).filter(a=>a&&Number.isFinite(a.startDay)&&Number.isFinite(a.endDay));if(0===b.length)return;let c=46+26*b.length+34,d=Math.max(...b.map(a=>a.endDay),1),e=a=>150+a/d*570,f=Math.max(1,Math.round(d/8)),g=[];for(let a=0;a<=d;a+=f)g.push(a);g[g.length-1]!==d&&g.push(d);let h=[`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 760 ${c}" width="760" height="${c}" role="img">`,`<rect width="760" height="${c}" fill="#ffffff"/>`,`<text x="150" y="24" ${ct} font-size="14" font-weight="700" fill="${cx}">施工进度计划横道图(单位:天)</text>`];for(let a of g)h.push(`<line x1="${e(a).toFixed(1)}" y1="38" x2="${e(a).toFixed(1)}" y2="${(46+26*b.length).toFixed(1)}" stroke="${cw}" stroke-width="1"/>`),h.push(`<text x="${e(a).toFixed(1)}" y="32" ${ct} font-size="10" fill="#6b7280" text-anchor="middle">第${a}天</text>`);return b.forEach((a,b)=>{let c=46+26*b,d=e(a.startDay),f=Math.max(2,e(a.endDay)-d),g=a.label.length>16?`${a.label.slice(0,16)}…`:a.label;h.push(`<text x="140" y="${(c+13+4).toFixed(1)}" ${ct} font-size="12" fill="${cx}" text-anchor="end">${cy(g)}</text>`),h.push(`<rect x="${d.toFixed(1)}" y="${c+5}" width="${f.toFixed(1)}" height="14" rx="2" fill="${a.critical?cu:cv}" opacity="0.85"/>`),h.push(`<text x="${(d+f+6).toFixed(1)}" y="${(c+13+4).toFixed(1)}" ${ct} font-size="11" fill="#374151">${a.duration}天</text>`)}),h.push(`<text x="150" y="${c-12}" ${ct} font-size="11" fill="#6b7280">■ 关键线路 / ■ 非关键线路(总工期 ${d} 天,工序起止天序与进度计划表一致)</text>`),h.push("</svg>"),h.join("\n")}(a?.schedule||[]);return b?{name:c,fileName:`fig-${cz("进度横道图")}.svg`,svg:b}:void 0}if(/网络图/.test(c)){let b=function(a){let b=(a||[]).filter(a=>a&&a.label);if(0===b.length)return;let c=b.length>5?18:28,d=Math.min(b.length,Math.max(3,Math.floor((720+c)/(116+c)))),e=40+100*Math.ceil(b.length/d),f=[`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 760 ${e}" width="760" height="${e}" role="img">`,`<rect width="760" height="${e}" fill="#ffffff"/>`,`<text x="20" y="24" ${ct} font-size="14" font-weight="700" fill="${cx}">施工进度计划网络图(箭头链=工序逻辑,加粗=关键线路)</text>`];return b.forEach((a,e)=>{let g=Math.floor(e/d),h=e%d,i=20+h*(116+c),j=40+100*g,k=a.critical?cu:cv,l=a.label.length>9?`${a.label.slice(0,9)}…`:a.label;if(f.push(`<rect x="${i}" y="${j}" width="116" height="54" rx="6" fill="#f9fafb" stroke="${k}" stroke-width="${a.critical?2.4:1.2}"/>`),f.push(`<text x="${i+58}" y="${j+22}" ${ct} font-size="11" fill="${cx}" text-anchor="middle">${cy(l)}</text>`),f.push(`<text x="${i+58}" y="${j+40}" ${ct} font-size="10" fill="#6b7280" text-anchor="middle">${a.duration}天(第${a.startDay}~${a.endDay}天)</text>`),h<d-1&&e<b.length-1){let b=j+27;f.push(`<line x1="${i+116}" y1="${b}" x2="${i+116+c-6}" y2="${b}" stroke="${k}" stroke-width="${a.critical?2.4:1.2}" marker-end="url(#arrow-${a.critical?"c":"n"})"/>`)}else if(e<b.length-1){let b=j+54+46+27;f.push(`<path d="M ${i+58} ${j+54} L ${i+58} ${b} L 78 ${b}" fill="none" stroke="${k}" stroke-width="${a.critical?2.4:1.2}"/>`)}}),f.unshift(`<defs><marker id="arrow-n" markerWidth="8" markerHeight="8" refX="7" refY="4" orient="auto"><path d="M0,0 L8,4 L0,8 z" fill="${cv}"/></marker><marker id="arrow-c" markerWidth="8" markerHeight="8" refX="7" refY="4" orient="auto"><path d="M0,0 L8,4 L0,8 z" fill="${cu}"/></marker></defs>`),f.push("</svg>"),f.join("\n")}(a?.schedule||[]);return b?{name:c,fileName:`fig-${cz("进度网络图")}.svg`,svg:b}:void 0}if(/项目管理机构|机构图|组织架构/.test(c))return{name:c,fileName:`fig-${cz("项目管理机构图")}.svg`,svg:function(){let a=(a,b,c,d,e,f)=>`<rect x="${a}" y="${b}" width="${c}" height="${d}" rx="6" fill="#ffffff" stroke="${f}" stroke-width="1.6"/><text x="${a+c/2}" y="${b+d/2+5}" ${ct} font-size="12" fill="${cx}" text-anchor="middle">${cy(e)}</text>`,b=['<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 760 380" width="760" height="380" role="img">','<rect width="760" height="380" fill="#ffffff"/>',`<text x="20" y="24" ${ct} font-size="14" font-weight="700" fill="${cx}">项目管理机构图</text>`];b.push(a(305,44,150,40,"项目经理","#1d4ed8"));let c=["技术负责人","质量负责人","安全负责人","施工负责人","材料负责人","资料负责人"],d=(720-104*c.length)/(c.length-1);c.forEach((c,e)=>{let f=20+e*(104+d);b.push(`<line x1="380" y1="84" x2="${f+52}" y2="140" stroke="${cw}" stroke-width="1.4"/>`),b.push(a(f,140,104,38,c,"#0e7490"))});let e=["土建施工班组","钢结构安装班组","安装专业班组","装饰装修班组","试验与检测组"],f=(720-128*e.length)/(e.length-1);return e.forEach((c,d)=>{let e=20+d*(128+f);b.push(`<line x1="380" y1="178" x2="${e+64}" y2="248" stroke="${cw}" stroke-width="1.2"/>`),b.push(a(e,248,128,36,c,"#7c3aed"))}),b.push(`<text x="20" y="366" ${ct} font-size="11" fill="#6b7280">注:图示为项目管理机构与岗位设置(职能层级);项目部按本图配置管理人员,各岗位职责与协作关系见本章相应小节。</text>`),b.push("</svg>"),b.join("\n")}()}}}(a.blueprintData,c);if(!e)return void b.set(d,void 0);try{let b=cD.join((0,cA.Gl)(a.projectRoot),"assets");cB.mkdirSync(b,{recursive:!0});let c=cD.join(b,e.fileName);cB.existsSync(c)&&cB.readFileSync(c,"utf8")===e.svg||cB.writeFileSync(c,e.svg,"utf8")}catch{}return b.set(d,e),e}}(a),substituteTable:b=>cs(a.blueprintData,b)}).markdown)};let c=(0,n.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=(0,cM.Oq)((0,cM.UD)([...(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,cL.iC)({facts:b,overrides:c});a.caliberLedger=(0,cL.wc)(d),a.truthValues=d.resolved;let e=(0,q.X5)({type:"reference",roleId:"caliber-ledger",status:"success",message:`口径账本(真值层):受管属性 ${d.resolved.length} 项、噪声剔除 ${d.noiseRejected.length} 项、值级覆盖 ${c.length} 对`,details:[...a.caliberLedger.slice(0,20),...c.length>0?[`值级覆盖:${c.slice(0,5).map(a=>`${a.superseded}→${a.effective}`).join("、")}`]:[]]},{subtitle:"口径账本"});(0,q.fx)(a.progressStages,e),(0,q.fx)(a.finalGateRepairStages,e)}let d=function(a,b){let c=[];if(!a||0===b.length)return c;let d=/(?:澄清|变更|修改|调整为|更正|原(?:为|值)?|原招标|此前)/u;for(let e of b)for(let f of e.superseded){let g=f.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&"),h=[...a.matchAll(RegExp(g,"gu"))];if(0===h.length)continue;let i=[];for(let b of h){let c=a.lastIndexOf("。",b.index??0)+1,e=a.indexOf("。",(b.index??0)+f.length),g=-1===e?a.length:e+1,h=a.slice(c,g);d.test(h)||i.push(h.trim().slice(0,80))}0!==i.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:`${e.field}口径错误:正文 ${i.length} 处仍以被取代值「${f}」作为现行口径(现行为「${e.effective}」)——如「${i[0]}」`,suggestion:`请把上述表述统一为现行口径「${e.effective}」(答疑澄清后生效值);若确需说明变更过程,须写成引用形态(如「招标文件原为${f},经答疑澄清变更为${e.effective}」),不得单独以旧值陈述现状。`})}return c}(a.finalMarkdown,a.clarificationOverrides||[]);d.length>0&&(a.validationIssues=[...a.validationIssues,...d]),a.baseValidationIssues=a.validationIssues,a.validationIssues=await c6({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,P._C)(a.bidComposition),bodyFigureForbidden:(0,P.kO)(a.bidComposition),identityMarksForbidden:!!a.bidComposition?.identityMarksForbidden,coverForbidden:a.bidComposition?.formatRules.cover==="forbidden"}),db(a),a.qualityBundle=await c8({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}),a.validationIssues=a.qualityBundle.validationIssues,a.finalGateRepairStages=[],a.recomputeFinalValidationBundle=async()=>{let b=a.baseValidationIssues.filter(a=>!a.provenance||!cc.has(a.provenance.detectorId));a.validationIssues=await c6({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,P._C)(a.bidComposition),bodyFigureForbidden:(0,P.kO)(a.bidComposition),identityMarksForbidden:!!a.bidComposition?.identityMarksForbidden,coverForbidden:a.bidComposition?.formatRules.cover==="forbidden"}),db(a),a.qualityBundle=await c8({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}),a.validationIssues=a.qualityBundle.validationIssues}}async function dd(a){let b=(0,k.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=[],g=[];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],j=a.effectiveChapters.find(a=>a.id===i.id||a.title===i.title),l=(0,q.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}(无匹配章节)`),...g.map(a=>`超限跳过:${a}`)]},{subtitle:"事实落位修复"});(0,q.fx)(a.progressStages,l),(0,q.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"),n=0,o=await ab({originalContent:i.content,repairRound:"fact-landing",diagnostics:a.generationDiagnostics,apply:async()=>{let b=await a.withProgressHeartbeat(()=>(0,f.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,f.XG)("fact-landing",a.generationDiagnostics)}));return b.content&&b.content!==i.content?(n=b.appliedCount,j?(0,k.w_)(b.content,j):b.content):i.content},recheck:a=>[(0,k.hS)(a,c.map(a=>a.fact)).length]});o.rolledBack||o.content===i.content||(a.finalChapterDrafts[d]={...i,content:o.content},h+=n);let p=(0,q.X5)({type:"llm_review",roleId:`agent-fact-landing-${b}`,status:o.rolledBack||0===n?"failed":"success",message:o.rolledBack?`重要事实落位已回滚:${i.title}(修复后事实缺失增多,保留修复前正文)`:n>0?`重要事实落位完成:${i.title}(${n} 处 patch)`:`重要事实落位未生效:${i.title}`,details:c.map(a=>`${a.label}=${a.value}`)},{subtitle:"事实落位修复"});(0,q.fx)(a.progressStages,p),(0,q.fx)(a.finalGateRepairStages,p),a.emitProgress(a.finalChapterDrafts,a.progressStages)}h>0&&(a.finalMarkdown=a.rebuildFinalMarkdown(),await a.recomputeFinalValidationBundle())}}var de=c(80572),df=c(56963),dg=c(12863);function dh(a,b){return Math.abs(a-b)<=.01+1e-6*Math.max(Math.abs(a),Math.abs(b))}function di(a,b){return!!dh(a,b)||Number.isInteger(a)&&(Math.trunc(b)===a||Math.round(b)===a)}let dj={米:"m",m:"m",公里:"km",km:"km",平方米:"m2","㎡":"m2","m\xb2":"m2",m2:"m2",立方米:"m3","m\xb3":"m3",m3:"m3",吨:"t",t:"t"};function dk(a){let b=(a||"").trim().toLowerCase();return dj[b]??b}let dl=/^([^。;;\n|]{0,12}?)([\d,,]+(?:\.\d+)?)\s*(座|个|套|处|盏|棵|株|樘|扇|根|块|片|组|件|孔|间|栋|幢|户|米|m|km|公里|平方米|m2|㎡|m²|立方米|m3|m³|kg|吨|t)(?![a-zA-Z0-9²³])/u;function dm(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&&!bj.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,dg.Lp)(b),!0],[(0,dg.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=dl.exec(i);if(!j||bj.As.test(j[1]))continue;let k=Number.parseFloat(j[2].replace(/[,,]/gu,""));if(!Number.isFinite(k))continue;let l=dk(j[3]),m=e.get(b.name)??[],n=m.map(a=>a.quantity),o=d.find(a=>a.name!==b.name&&dh(a.quantity,k)&&dk(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 dn(a,b){let c=[],d=[],e=[],f=await aO(a);if(!f.degraded)for(let g of f.groups){let f=aS(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 a of f.nonLock)for(let b of a.occurrences){let d=b.matchIndex+b.valueOffset;c.push({start:d,end:d+b.valueText.length,replacement:String(f.lockValue),detail:`参数口径“${a.concept}” ${a.raw}→${f.lockValue}${f.lockUnit}(以工程量清单条目「${f.entryName}」锁定口径为准)`,concept:g.concept})}}for(let d of(0,o.mB)(a,b.specAuthorityMap))d.replacement&&c.push({...d.replacement,location:d.location});for(let d of dm(a,b.billFactLock)){if(d.sameNameQuantities.some(a=>di(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 a=d.sameNameEntries[0];dk(d.unit)===dk(a.unit)&&c.push({start:d.valueStart,end:d.valueStart+d.valueText.length,replacement:String(a.quantity),detail:`名称-数值绑定「${d.name}」 ${d.value}${d.unit}→${a.quantity}${a.unit}(清单条目「${d.name}」权威口径)`,binding:d.name})}if(0===c.length)return{replacements:[],falsePositiveGroups:d,noAnchorGroups:e,details:[]};let g=(0,o.gk)(a,c).markdown,h=new Set,i=await aO(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,o.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(dm(g,b.billFactLock).filter(a=>1===a.sameNameEntries.length&&a.foreignEntry&&dk(a.unit)===dk(a.sameNameEntries[0].unit)&&!a.sameNameQuantities.some(b=>di(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 dp=c(71001);let dq={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 dr(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[];let d=await (0,cl.bb)([(0,O.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:dq,taskKind:"structuredGeneration"});return d?.conflicts?.length?d.conflicts.filter(a=>"string"==typeof a.itemA&&"string"==typeof a.itemB&&a.itemA.trim()&&a.itemB.trim()).filter(a=>(a.confidence??0)>=.7).slice(0,6):[]}var ds=c(22213),dt=c(3063);let du=/两可|按图纸|资料[^。;;\n]{0,14}(?:未明确|两可|冲突)|支护[^。;;\n]{0,10}并存/u;async function dv(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,o.lR)(a.content),d=(0,o.QM)(c.markdown),e=(0,o.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,o.ub)(a),...(0,o.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,q.fx)(c,(0,q.X5)({type:"llm_review",roleId:"post-table-dedup",status:"success",message:`补表后确定性去重:${i}`},{subtitle:"表格执行率核验"})),d(b)}return e}async function dw(a,b){let{chapterDraftsFinal:c,template:d,repairPromptTexts:e,requirement:g,signal:h,generationDiagnostics:i,progressStages:j,emitProgress:k,withProgressHeartbeat:l,bidComposition:m}=a,n=a=>!b||!b.plannedChapterKeys.has((0,bg.YZ)(a.title)),o=c.filter(n).map(a=>({chapter:a,tableCount:(0,O.ao)(a.content),blocks:(0,O.wV)(a.content)})).filter(a=>a.tableCount>0);if(0===o.length)return{tableFixApplied:!1};let p=b?"无计划表格修复":"正文拆表修复",r=b?"本章未列入系统表格计划(正文表格须来自系统表格计划,不得自设)":"招标正文禁表(显式禁表句)";(0,q.fx)(j,(0,q.X5)({type:"llm_review",roleId:"table-execution-repair",status:"running",message:`${p}:${o.length} 个章节正文残留表格(${r})`},{subtitle:p})),k(c);let s=0,t=[],u=async a=>{let{chapter:c,tableCount:j,blocks:k}=a;return ab({originalContent:c.content,repairRound:"table-execution-repair",diagnostics:i,beforeMetrics:[j],apply:async()=>{let a=await l(()=>(0,f.X6)(i,`body-table-dismantle:${c.id}`,()=>(0,f.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,P.zs)(j):(0,P.bh)(j)],promptTexts:e,requirement:g,forbidDrawingImages:!b||(0,P.kO)(m),bidComposition:m,diagnostics:i,signal:h,patchGuard:(0,f.XG)("table-execution-repair",i),anchorTexts:k.length>0?k:void 0,maxTokens:Math.min(12e3,Math.max(6e3,1600*k.length))})));return a.content&&a.content!==c.content?a.content:c.content},recheck:a=>[(0,O.ao)(a)]})};(await Promise.allSettled(o.map(a=>u(a)))).forEach((a,b)=>{if("rejected"===a.status){if(h?.aborted)throw a.reason;t.push(`${o[b].chapter.title}:拆表修复异常(${a.reason instanceof Error?a.reason.message:"未知错误"})`);return}let c=a.value,{chapter:d}=o[b];if(c.rolledBack)return void t.push(`${d.title}:拆表后表格数不降反升,已回滚本轮修改`);c.content&&c.content!==d.content?(d.content=c.content,s+=1):t.push(`${d.title}:拆表 patch 未应用(${i?.llm.lastError||"无产出"})`)});let v=c.filter(n).reduce((a,b)=>a+(0,O.ao)(b.content),0);return(0,q.fx)(j,(0,q.X5)({type:"llm_review",roleId:"table-execution-repair",status:v>0?"failed":"success",message:v>0?`${p}:${s} 章已改写,${b?"未授权章":"正文"}仍有 ${v} 处表格残留(终检门禁拦截)`:`${p}:${s} 章已改写,${b?"未授权章表格清零":"正文表格清零"}`,details:t},{subtitle:p})),k(c),{tableFixApplied:s>0}}async function dx(a){let{effectiveChapters:b,chapterDraftsFinal:c,template:d,repairPromptTexts:e,requirement:g,signal:h,generationDiagnostics:i,progressStages:j,emitProgress:k,withProgressHeartbeat:l}=a;if((0,P._C)(a.bidComposition))return dw(a);let m=new Set(b.filter(a=>(a.tablePlans?.length||0)>0||(a.tableSections?.length||0)>0||(a.diagramRequirements?.length||0)>0).map(a=>(0,bg.YZ)(a.title))),n=await dw(a,{plannedChapterKeys:m}),o=(0,bV.Xi)(b,c),p=n.tableFixApplied;if(o.length>0)for(let a=0;a<1&&o.length>0;a+=1){(0,q.fx)(j,(0,q.X5)({type:"llm_review",roleId:"table-execution-repair",status:"running",message:`表格执行率修复第 ${a+1} 轮(${o.length} 个章节缺表)`},{subtitle:"表格执行率修复"})),k(c);let m=0,n=[],r=o.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,m=[...new Set(j.plans.map(a=>a.section).filter(Boolean))],n=m.length>0?k.evidence.filter(a=>{let b=a.sectionTitle;return!b||m.some(a=>b===a||b.includes(a)||a.includes(b))}):k.evidence,o={id:k.id,title:k.title,content:k.content,evidence:n.length?n: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 ab({originalContent:k.content,repairRound:"table-execution-repair",diagnostics:i,beforeMetrics:[j.plans.length],apply:async()=>{let a=await l(()=>(0,f.X6)(i,`table-execution-repair:${k.id}`,()=>(0,f.l8)({template:d,chapter:o,issues:[p],promptTexts:e,requirement:g,forbidDrawingImages:!0,diagnostics:i,signal:h,patchGuard:(0,f.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,bV.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(r.map(a=>s(a))),u=new Set;if(t.forEach((a,b)=>{if("rejected"===a.status){if(h?.aborted)throw a.reason;n.push(`${r[b].gap.chapterTitle}:修复异常(${a.reason instanceof Error?a.reason.message:"未知错误"})`);return}let c=a.value,{gap:d,draft:e}=r[b];if(c.rolledBack)return void n.push(`${d.chapterTitle}:修复后计划表格缺口增多,已回滚本轮修改`);c.content&&c.content!==e.content&&!u.has(e.id)?(e.content=c.content,u.add(e.id),m+=1):u.has(e.id)||n.push(`${d.chapterTitle}:缺 ${d.plans.map(a=>a.title).join("、")}(${i?.llm.lastError||"补表 patch 未应用"})`)}),0===m){(0,q.fx)(j,(0,q.X5)({type:"llm_review",roleId:"table-execution-repair",status:"failed",message:`表格执行率修复第 ${a+1} 轮:补表 patch 未应用(${o.length} 个章节缺表)`,details:n},{subtitle:"表格执行率修复"})),k(c);break}p=!0,k(c),o=(0,bV.Xi)(b,c),(0,q.fx)(j,(0,q.X5)({type:"llm_review",roleId:"table-execution-repair",status:o.length>0?"failed":"success",message:o.length>0?`表格执行率修复第 ${a+1} 轮完成,仍有 ${o.length} 个章节缺表`:`表格执行率修复第 ${a+1} 轮完成`},{subtitle:"表格执行率修复"})),(0,q.fx)(j,(0,q.X5)({type:"llm_review",roleId:"table-execution-review",status:o.length>0?"failed":"success",message:o.length>0?`表格执行率复检:仍有 ${o.length} 个章节缺表`:"表格执行率复检通过"},{subtitle:"表格执行率核验"}))}return{tableFixApplied:p}}function dy(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 dz(a){let{chapterDraftsFinal:b,template:c,repairPromptTexts:d,requirement:e,signal:g,generationDiagnostics:h,progressStages:i,emitProgress:j,withProgressHeartbeat:k,bidComposition:l}=a,m=!1;for(let a=0;a<2;a+=1){let n=b.map(a=>a.content).join("\n\n"),o=await (0,bC.Bt)(n),p=await (0,bC.gE)(n),r=o.fillerSentences>0,s=p.countermeasures>0&&p.ratio<.5,t=(0,bi.P_)(n),u=(0,bi.C4)(n),v=(0,bi.p5)(n),w=(0,bi.uj)(n),x=c$(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 cZ(b):[];C&&D.push(...x);let E=D.length>0?c_(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?p.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=>dy(a,b.chapterTitle)),g=u.filter(b=>dy(a,b.chapterTitle)),h=v.filter(b=>dy(a,b.chapterTitle)),i=w.filter(b=>dy(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&&(m=!0,(0,q.fx)(i,(0,q.X5)({type:"llm_review",roleId:"templating-repair",status:"success",message:`模板化修复第 ${a+1} 轮:确定性删除零信息句(口号/前缀)${E.deletedCount} 处(无剩余重写目标)`},{subtitle:"模板化修复"})),j(b));break}let J=[r?`套话句占比 ${(100*o.ratio).toFixed(1)}%${E.deletedCount>0?`(已确定性删除零信息句 ${E.deletedCount} 处)`:""}`:"",C?`模板化前缀句 ${x.length} 处`:"",s?`重难点双达标 ${(100*p.ratio).toFixed(0)}%`:"",y?`骨架指纹 ${t.length} 组`:"",z?`工序形式 ${u.length} 处`:"",A?`句模复读 ${v.length} 处`:"",B?`标题缺陷 ${w.length} 处`:""].filter(Boolean).join("、");(0,q.fx)(i,(0,q.X5)({type:"llm_review",roleId:"templating-repair",status:"running",message:`模板化修复第 ${a+1} 轮:${J}(${I.length} 章)`},{subtitle:"模板化修复"})),j(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("清单之外的内容一律不得改动;不得删除任何小节标题、表格与数值参数。"),k(()=>(0,f.X6)(h,`templating-repair:${a.chapter.id}`,()=>(0,f.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:l,diagnostics:h,signal:g,patchGuard:(0,f.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 ab({originalContent:F,repairRound:"templating-repair",diagnostics:h,beforeMetrics:[o.ratio,p.ratio,t.length,u.length,w.length,(0,bC._Q)(n).length,v.length],apply:async()=>((await Promise.allSettled(I.map(a=>L(a)))).forEach((a,b)=>{if("rejected"===a.status){if(g?.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)}),j(b),b.map(a=>a.content).join("\n\n")),recheck:async a=>{let b=await (0,bC.Bt)(a),c=await (0,bC.gE)(a);return[b.ratio,c.ratio,(0,bi.P_)(a).length,(0,bi.C4)(a).length,(0,bi.uj)(a).length,(0,bC._Q)(a).length,(0,bi.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,q.fx)(i,(0,q.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,q.fx)(i,(0,q.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:"模板化修复"})),j(b);break}m=!0}if(m){let a=b.map(a=>a.content).join("\n\n"),c=await (0,bC.Bt)(a),d=await (0,bC.gE)(a),e=(0,bi.P_)(a),f=(0,bi.C4)(a),g=(0,bi.p5)(a),h=(0,bi.uj)(a),k=(0,bC._Q)(a),l=c.ratio<.1&&(!d.heavyTemplated||0===d.countermeasures)&&0===e.length&&0===f.length&&0===g.length&&0===h.length&&0===k.length,m=[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} 处`:"",k.length>0?`模板化前缀句 ${k.length} 处`:""].filter(Boolean).join(";");(0,q.fx)(i,(0,q.X5)({type:"llm_review",roleId:"templating-repair",status:l?"success":"failed",message:`模板化修复完成:套话句占比 ${(100*c.ratio).toFixed(1)}%(达标线 ≤10%),重难点归因+量化双达标 ${(100*d.ratio).toFixed(0)}%(达标线 ≥50%)${m?`,模板化残留:${m}`:""}`,details:l?[]:["未完全收敛:残留项先由确定性修复链(终检前)收敛;复核未清零的残留经终检检测器判定,仍不达标即列入终检复核清单(不阻断导出,宁缺毋假)"]},{subtitle:"模板化修复"})),j(b)}return{templatingFixApplied:m}}async function dA(a){let{chapterDraftsFinal:b,projectContext:c,template:d,repairPromptTexts:e,requirement:g,signal:h,generationDiagnostics:i,progressStages:j,emitProgress:k,withProgressHeartbeat:l,bidComposition:m}=a,n=/^#{3,4}\s+(?:\d+(?:\.\d+)*\s+)?(?:项目主要施工\s*内容|主要施工\s*内容|主要分部分项工程施工方案|主要分部分项施工方案|主要施工方法)\s*$/u,o=!1,p=0,r=0,s=(0,ds.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=>n.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,"")}
|
|
199
199
|
|
|
200
200
|
${g}
|
|
201
201
|
`,o=!0}let c=b.some(a=>a.content.split("\n").some(a=>n.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,"")}
|
|
@@ -224,7 +224,7 @@ ${b.styleRequirements.map(a=>`- ${a}`).join("\n")}`]:[]].join("\n"),i=[...new Se
|
|
|
224
224
|
表题命名要求:概括该表内容与用途的业务表名(10~24 字),以“表/台账/清单/计划/记录/一览表”等名词结尾;不得使用“表格/数据表/明细”类无信息泛化名。
|
|
225
225
|
缺表题表格原文(只允许在各表正上方补一行表题;严禁修改表头、数据行、表格列数与其余正文,严禁删除表格):
|
|
226
226
|
${g.map(a=>a.blockText).join("\n\n")}
|
|
227
|
-
以局部 patch 方式输出:每处 patch 只包含新增表题行与必要定位上下文,不得重写其他内容。`,m=await ab({originalContent:e.content,repairRound:"table-caption-repair",diagnostics:a.generationDiagnostics,beforeMetrics:[g.length],shouldRollback:(a,b)=>b[0]>=g.length,apply:async()=>{let b=await a.withProgressHeartbeat(()=>(0,f.l8)({template:a.template,chapter:{id:e.id,title:e.title,content:e.content,evidence:e.evidence,missingFacts:e.missingFacts,sections:e.sections},issues:[`正文存在 ${g.length} 张缺少表题的表格`],promptTexts:l,requirement:a.requirement,forbidDrawingImages:!1,diagnostics:a.generationDiagnostics,signal:a.signal,patchGuard:(0,f.XG)("table-caption-repair",a.generationDiagnostics)}));return b.content&&b.content!==e.content?b.content:e.content},recheck:a=>[b(a)]}),n=m.content;m.rolledBack||n===e.content||(a.finalChapterDrafts[c]={...e,content:h?(0,k.w_)(n,h):n},d+=1);let o=m.rolledBack?g.length:m.afterMetrics[0],p=(0,q.X5)({type:"llm_review",roleId:i,status:m.rolledBack||o>0?"failed":"success",message:m.rolledBack?`表格题名补全已回滚:${e.title}(补名后无题表数未下降,保留修复前正文)`:o>0?`表格题名补全未完全生效:${e.title}(残留 ${o} 张无题表由终检复核)`:`表格题名补全完成:${e.title}`,details:[`无题表 ${g.length} 张 → 残留 ${o} 张`]},{subtitle:"表格题名补全"});(0,q.fx)(a.progressStages,p),(0,q.fx)(a.finalGateRepairStages,p),a.emitProgress(a.finalChapterDrafts,a.progressStages)}(c>0||d>0)&&(a.finalMarkdown=a.rebuildFinalMarkdown(),await a.recomputeFinalValidationBundle())}async function eF(a){let b=new Map;for(let c of a.finalChapterDrafts){let a=(0,bX.qE)(c.content);a.length>0&&b.set(c.id,a)}let c=[...b.keys()].reduce((b,c)=>{let d=a.finalChapterDrafts.find(a=>a.id===c);return b+(d?(0,bX.OV)(d.content):0)},0);if(0===b.size){let b=(0,q.X5)({type:"validation",roleId:"table-arithmetic-repair",status:"success",message:"表内算术自洽核对通过:全部含合计标记的表格分项和=合计"},{subtitle:"表内算术自洽"});(0,q.fx)(a.progressStages,b),(0,q.fx)(a.finalGateRepairStages,b),a.emitProgress(a.finalChapterDrafts,a.progressStages);return}let d=0,e=0;for(let[c,g]of b){let b=a.finalChapterDrafts.findIndex(a=>a.id===c);if(b<0)continue;let h=a.finalChapterDrafts[b],i=h.content,j=(0,bX.OV)(i),k=0,l=!1,m=!1,n=[j];for(;j>0&&k<2;){k+=1;let d=(0,bX.qE)(i),e=(0,q.X5)({type:"llm_review",roleId:`agent-table-arithmetic-${c}`,status:"running",message:`表格算术不自洽 ${d.length} 张表,第 ${k} 轮定向修复中:${h.title}`,details:d.map(a=>a.message)},{subtitle:"表内算术自洽"});(0,q.fx)(a.progressStages,e),(0,q.fx)(a.finalGateRepairStages,e),a.emitProgress(a.finalChapterDrafts,a.progressStages);let g=["【表格算术自洽修复】下列表格的「合计」(合计行/合计列)与分项之和对不上,请逐表修正表内数值:",...k>1?[`本轮为第 ${k} 轮(最多 2 轮):上一轮修复后仍有残留,必须让合计与分项之和完全相等。`]:[],"1. 以分项为准重算合计:合计 = 该行/该列已列出的分项之和(单位一致);","2. 若分项数值本身与资料/清单/上下文矛盾,按权威值修正分项,使分项和 = 合计;","3. 台账类表(含「其他/其余」差额项的)保留显性「其他」项并给出数值,使合计 = 全部分项(含其他)之和;","4. 只允许修正表格内的数值(合计格/分项格);严禁编造无来源数值、严禁删除表格、严禁改动表格外正文。","以局部 patch 方式输出:每个 patch 只包含表格区域的数值修正与必要定位上下文。",d.map(a=>`- ${a.message}`).join("\n")].join("\n"),o=await ab({originalContent:i,repairRound:"table-arithmetic-repair",diagnostics:a.generationDiagnostics,beforeMetrics:[j],shouldRollback:(a,b)=>b[0]>=a[0],apply:async()=>{let b=await a.withProgressHeartbeat(()=>(0,f.l8)({template:a.template,chapter:{id:h.id,title:h.title,content:i,evidence:h.evidence,missingFacts:h.missingFacts,sections:h.sections},issues:d.map(a=>a.message),promptTexts:g,requirement:a.requirement,forbidDrawingImages:!1,bidComposition:a.bidComposition,diagnostics:a.generationDiagnostics,signal:a.signal,patchGuard:(0,f.XG)("table-arithmetic-repair",a.generationDiagnostics)}));return b.content&&b.content!==i?b.content:i},recheck:a=>[(0,bX.OV)(a)]});o.rolledBack||o.content===i||(i=o.content,a.finalChapterDrafts[b]={...h,content:i},l=!0),o.rolledBack&&(m=!0);let p=(0,bX.OV)(i);if(n.push(p),0===p||p>=j||k>=2)break;j=p}l&&(d+=1);let o=(0,bX.OV)(i);e+=o;let p=(0,q.X5)({type:"llm_review",roleId:`agent-table-arithmetic-${c}`,status:0===o?"success":"failed",message:0===o?`表内算术自洽修复完成:${h.title}(残留轨迹 ${n.join("→")})`:l?`表内算术自洽修复部分生效:${h.title}(不自洽处数残留轨迹 ${n.join("→")},已执行 ${k} 轮定向修复(每章最多 2 轮);残留由终检照常复核)`:m?`表内算术自洽修复已回滚:${h.title}(修复后不自洽处数未下降,保留修复前正文;残留 ${o} 处由终检照常复核)`:`表内算术自洽修复未生效:${h.title}(模型未产生有效修改;残留 ${o} 处由终检照常复核)`,details:[...g.map(a=>a.message),o>0?`已执行 ${k} 轮定向修复,残留由终检照常复核`:""]},{subtitle:"表内算术自洽"});(0,q.fx)(a.progressStages,p),(0,q.fx)(a.finalGateRepairStages,p),a.emitProgress(a.finalChapterDrafts,a.progressStages)}d>0&&(a.finalMarkdown=a.rebuildFinalMarkdown(),await a.recomputeFinalValidationBundle()),a.generationDiagnostics.llm.lastInfo=`表内算术自洽修复:${c} 处不自洽,${d} 章完成定向修复,残留 ${e} 处(每章最多 2 轮收敛修复,残留由终检照常复核)`}async function eG(a){let b=function(a){let b=0,c=0,d=[];return a.forEach((a,e)=>{if(!a.content?.trim())return;let f=0;for(let b=0;b<4;b+=1){let b=(0,R.rz)(a);if(0===b.length)break;let c=new Set(b.map(a=>a.line));for(let g of(a.content=a.content.split("\n").filter((a,b)=>!c.has(b)).join("\n").replace(/\n{3,}/gu,"\n\n"),f+=b.length,b))d.push(`第 ${e+1} 章移除空壳标题「${g.rawTitle}」`)}if(0===f)return;b+=f;let g=(0,bh.PA)(a.content,{chapterNumber:e+1});a.content=g.markdown,g.fixedCount>0&&(c+=1)}),{removedCount:b,renumberedChapters:c,details:d}}(a.finalChapterDrafts),c=(0,q.X5)({type:"validation",roleId:"empty-section-sweep",status:"success",message:b.removedCount>0?`空节清扫完成:移除无依据空壳小节标题 ${b.removedCount} 处(${b.renumberedChapters} 章重排编号)`:"空节清扫核对通过:无无规划归属的空壳小节",details:b.details.length>0?b.details:void 0},{subtitle:"空节清扫"});(0,q.fx)(a.progressStages,c),(0,q.fx)(a.finalGateRepairStages,c),b.removedCount>0&&(a.finalMarkdown=a.rebuildFinalMarkdown(),await a.recomputeFinalValidationBundle()),a.emitProgress(a.finalChapterDrafts,a.progressStages)}async function eH(a){let b=dD(a.finalChapterDrafts),c=function(a){let b=0,c=[];return a.forEach((a,d)=>{if(!a.content?.trim())return;let f=b=>{let c=String(b||"").trim();return!c||(0,bi.cq)(c)||/^附录/u.test(c)||dt.gG.test(a.title)&&e.V.test(c)},g=(a.sections||[]).filter(a=>!f(a));if(0===g.length||(0,O.r4)(a.content).filter(a=>!f(a)).length<=g.length)return;let h=g.map(a=>(0,R.mJ)(a)),i=new Set(h),j=a.content.split("\n"),k=[];j.forEach((a,b)=>{if(!/^\s*###\s+\S/u.test(a))return;let c=(0,e.Jb)(a),d=c?(0,R.mJ)(c):"";d&&k.push({line:b,title:c,normalized:d})});let l=-1,m=0;for(let a of k){if(i.has(a.normalized)){l=a.line;continue}!(f(a.title)||h.some(b=>(0,e.ty)(a.normalized,b))||/(?:((?:\d+|[一二三四五六七八九十]+)))+$/u.test(a.title))&&(l<0||(j[a.line]=`#### ${a.title}`,m+=1,c.push(`第 ${d+1} 章「${a.title}」降为 H4(并入上方规划小节主题块)`)))}0!==m&&(b+=m,a.content=(0,bh.PA)(j.join("\n"),{chapterNumber:d+1}).markdown)}),{demotedCount:b,details:c}}(a.finalChapterDrafts),d=0;a.finalChapterDrafts.forEach((a,b)=>{if(!a.content?.trim())return;let c=(0,bh.PA)(a.content,{chapterNumber:b+1});c.fixedCount>0&&(a.content=c.markdown,d+=1)});let g=b.mergedCount+c.demotedCount,h=g>0||d>0;(0,f.kD)(a.generationDiagnostics,g+d);let i=[...b.details,...c.details],j=(0,q.X5)({type:"validation",roleId:"section-alignment-sweep",status:"success",message:h?`小节结构对齐收口:近名对齐/合并 ${b.mergedCount} 处、规划外小节降级 ${c.demotedCount} 处、编号重放 ${d} 章`:"小节结构对齐核对通过:成稿小节与规划主题块一一对应",details:i.length>0?i.slice(0,6):void 0},{subtitle:"结构对齐收口"});(0,q.fx)(a.progressStages,j),(0,q.fx)(a.finalGateRepairStages,j),h&&(a.finalMarkdown=a.rebuildFinalMarkdown(),await a.recomputeFinalValidationBundle()),a.emitProgress(a.finalChapterDrafts,a.progressStages)}async function eI(a){let b=c$(a.finalChapterDrafts),c=b.length>0?c_(a.finalChapterDrafts,b):{deletedCount:0,deletedSentences:[],remaining:b},d=0;for(let b of a.finalChapterDrafts){if(!b.content?.trim())continue;let a=(0,o.Vc)(b.content);a.removedCount>0&&(b.content=a.markdown,d+=a.removedCount)}let e=c.deletedCount+d,f=(0,q.X5)({type:"validation",roleId:"templating-sweep",status:"success",message:e>0?`模板化链尾清理:零信息前缀句删除 ${c.deletedCount} 处、重复段落去重 ${d} 处`:"模板化链尾核对通过:无零信息前缀句与重复段落残留",details:c.deletedSentences.length>0?c.deletedSentences.slice(0,3).map(a=>`前缀句删除:「${a.slice(0,40)}」`):void 0},{subtitle:"模板化清理收口"});(0,q.fx)(a.progressStages,f),(0,q.fx)(a.finalGateRepairStages,f),e>0&&(a.finalMarkdown=a.rebuildFinalMarkdown(),await a.recomputeFinalValidationBundle()),a.emitProgress(a.finalChapterDrafts,a.progressStages)}async function eJ(a){let b=function(a){let b=0,c=[];return a.forEach((a,d)=>{if(!a.content?.trim())return;let f=0;for(let g=0;g<6;g+=1){let g=a.sections||[],h=g.map((a,b)=>({section:String(a||"").trim(),index:b})).filter(a=>a.section),i=new Map;for(let a of h){let b=(0,R.Sn)(a.section);b&&i.set(b,[...i.get(b)||[],a])}let j=[...i.values()].find(a=>a.length>=2);if(!j)break;let k=a.content.split("\n"),l=[];k.forEach((a,b)=>{if(!/^\s*###\s+\S/u.test(a))return;let c=(0,e.Jb)(a),d=c?(0,R.mJ)(c):"";d&&l.push({line:b,title:c,normalized:d})});let m=a=>{let b=(0,R.mJ)(a);return l.find(a=>a.normalized===b)||l.find(a=>(0,e.ty)(a.normalized,b))},n=j.flatMap(a=>{let b=m(a.section);return b?[{section:a.section,index:a.index,heading:b}]:[]}),o=n.filter((a,b)=>n.findIndex(b=>b.heading.line===a.heading.line)===b),p=new Map;for(let a of n)p.set(a.heading.line,[...p.get(a.heading.line)||[],a]);let q=[...p.values()].find(a=>a.length>1);if(q){let e=q.find(a=>a.heading.normalized===(0,R.mJ)(a.section))||q[0],h=q.filter(a=>a!==e).map(a=>a.index);a.sections=g.filter((a,b)=>!h.includes(b)),b+=1,f+=1,c.push(`「${q.filter(a=>a!==e).map(a=>a.section).join("、")}」与「${e.section}」同节对齐去重(第 ${d+1} 章)`);continue}if(o.length<2)break;o.sort((a,b)=>a.heading.line-b.heading.line);let r=o[0],s=o[1],t=dB(k,r.heading.line),u=dB(k,s.heading.line),v=k.slice(r.heading.line+1,t);for(;v.length>0&&""===v[v.length-1].trim();)v.pop();let w=k.slice(s.heading.line+1,u);for(;w.length>0&&""===w[w.length-1].trim();)w.pop();for(;w.length>0&&""===w[0].trim();)w.shift();let x=w.length>0?[...v,"",...w,""]:[...v,""],y=r.heading.normalized===(0,R.mJ)(r.section)?k[r.heading.line]:`${dC(k[r.heading.line])}${r.section}`;a.content=[...k.slice(0,r.heading.line),y,...x,...k.slice(t,s.heading.line),...k.slice(u)].join("\n").replace(/\n{3,}/gu,"\n\n"),a.sections=g.filter((a,b)=>b!==s.index),b+=1,f+=1,c.push(`「${s.section}」并入「${r.section}」(第 ${d+1} 章)`)}if(f>0){let b=(0,bh.PA)(a.content,{chapterNumber:d+1});a.content=b.markdown}}),{mergedCount:b,details:c}}(a.finalChapterDrafts),c=(0,q.X5)({type:"validation",roleId:"duplicate-theme-merge",status:"success",message:b.mergedCount>0?`重复主题小节合并:${b.mergedCount} 处(保留首现小节,后续标题行摘除、正文并入,规划数组同步)`:"重复主题小节核对通过:同桶小节无并存",details:b.details.length>0?b.details.slice(0,6):void 0},{subtitle:"重复主题合并"});(0,q.fx)(a.progressStages,c),(0,q.fx)(a.finalGateRepairStages,c),b.mergedCount>0&&(a.finalMarkdown=a.rebuildFinalMarkdown(),await a.recomputeFinalValidationBundle()),a.emitProgress(a.finalChapterDrafts,a.progressStages)}async function eK(a){let b=[],c=(0,Q._G)(a.finalMarkdown),d=0;c!==a.finalMarkdown&&(a.finalMarkdown=c,d+=1,b.push("附表区内部话术清洗:内部推导口径已中性化(唯一口径/经验工效区间/清单批注等)"));{let c=(a.effectiveChapters||[]).map(a=>({title:(0,bg.GQ)(a.title),sections:(a.sections||[]).filter(Boolean)}));if(c.length>0){let e=a.finalMarkdown.split(/\r?\n/u),f=[];e.forEach((a,b)=>{let c=/^##\s+(.+?)\s*$/u.exec(a.trim());c&&!/^(目录|附表)/u.test(c[1])&&f.push({index:b,title:c[1].replace(/\s+/gu,"")})});let g=0,h=[];for(let a=c.length-1;a>=0;a-=1){let d=c[a],i=d.title.replace(/\s+/gu,""),j=f.find(a=>a.title.includes(i)||i.includes(a.title));if(!j)continue;let k=f.find(a=>a.index>j.index),l=k?k.index:e.length,m=e.slice(j.index+1,l).join("\n"),n=(0,ds.zX)(d.sections,m);(0!==n.promoted.length||0!==n.missing.length)&&(n.promoted.length>0&&(e.splice(j.index+1,l-j.index-1,...n.markdown.split(/\r?\n/u)),g+=n.promoted.length,b.push(`规划小节层级提升:${d.title}(${n.promoted.join("、")})`)),n.missing.length>0&&h.push(`${d.title}:${n.missing.join("、")}`))}g>0&&(a.finalMarkdown=e.join("\n"),d+=g),h.length>0&&b.push(`规划小节未落位(交终门禁复核):${h.join(";")}`)}}let e=(0,cN.av)(a.finalMarkdown);e.markdown!==a.finalMarkdown&&(a.finalMarkdown=e.markdown,d+=e.splitCount,b.push(`超长段落切分:消除 >380 字符段落 ${e.splitCount} 处`));{let c=(0,bh.PA)(a.finalMarkdown);c.fixedCount>0&&(a.finalMarkdown=c.markdown,d+=c.fixedCount,b.push(`小节编号重放:${c.fixedCount} 处(删除/合并小节后的编号空档收口)`))}let g=(0,o._D)(a.finalMarkdown);g.fixedCount>0&&(a.finalMarkdown=g.markdown,d+=g.fixedCount,b.push(...g.details)),(0,f.kD)(a.generationDiagnostics,d);let h=b.length>0,i=(0,q.X5)({type:"validation",roleId:"delivery-structure-closure",status:"success",message:h?`交付结构收口:${b.join(";")}`:"交付结构收口核对通过:目录与正文一致、无超长段落",details:h?b:void 0},{subtitle:"交付结构收口"});(0,q.fx)(a.progressStages,i),(0,q.fx)(a.finalGateRepairStages,i),h&&await a.recomputeFinalValidationBundle(),a.emitProgress(a.finalChapterDrafts,a.progressStages)}async function eL(a){let b=(0,bi.yp)(a.finalMarkdown),c=(0,q.X5)({type:"validation",roleId:"sentence-pattern-sweep",status:"success",message:b.removedCount>0?`句模复读链尾收口:宣告引导句确定性剥离 ${b.removedCount} 处(列表引导语删除无损,列表内容保留)`:"句模复读链尾核对通过:无宣告引导句残留",details:b.removedSentences.length>0?b.removedSentences.slice(0,4).map(a=>`引导句剥离:「${a.slice(0,40)}」`):void 0},{subtitle:"模板化清理收口"});(0,q.fx)(a.progressStages,c),(0,q.fx)(a.finalGateRepairStages,c),b.removedCount>0&&(a.finalMarkdown=b.markdown,await a.recomputeFinalValidationBundle()),a.emitProgress(a.finalChapterDrafts,a.progressStages)}async function eM(a){let b=function(a){let b=a.split("\n"),c=[],d="(文首)";b.forEach((a,b)=>{let e=a.trim();/^##\s+/u.test(e)&&(d=e),c[b]=d});let e=[],f=[],g=new Map,h=0,i=0;for(let b of bP(a)){let a=b.occurrences;if(a.length<2)continue;let d=1===new Set(a.map(a=>c[a.lineIndex])).size,j=bi.Lw.test(a[0].raw);if(!d&&!j){f.push(a[0].raw);continue}for(let b of a.slice(1)){let a=g.get(b.lineIndex)||[];a.push({start:b.start,end:b.end}),g.set(b.lineIndex,a),e.push(b.raw),d?h+=1:i+=1}}if(0===e.length)return{markdown:a,removedCount:0,removedSentences:e,keptSentences:f,sameChapterRemoved:h,generalizedRemoved:i};for(let[a,c]of g){let d=b[a];for(let a of c.sort((a,b)=>b.start-a.start)){let b=a.start;for(;b>0&&/\s/u.test(d[b-1]);)b-=1;let c=a.end;for(;c<d.length&&/\s/u.test(d[c]);)c+=1;/[。;;]/u.test(d[c]||"")&&(c+=1),d=d.slice(0,b)+d.slice(c)}b[a]=""===d.trim()?"":d.replace(/^[ \t]+/u,"").replace(/[ \t]+$/u,"")}return{markdown:b.join("\n").replace(/\n{4,}/gu,"\n\n\n"),removedCount:e.length,removedSentences:e,keptSentences:f,sameChapterRemoved:h,generalizedRemoved:i}}(a.finalMarkdown),c=b.removedSentences.slice(0,3).map(a=>`复读坍塌:「${a.slice(0,40)}」`);b.keptSentences.length>0&&c.push(`跨章业务复读保留 ${b.keptSentences.length} 种(合理重申不坍塌)`);let d=(0,q.X5)({type:"validation",roleId:"duplicate-sentence-collapse",status:"success",message:b.removedCount>0?`句级复读坍塌:完全重复句保首次删后续 ${b.removedCount} 处(同章复读 ${b.sameChapterRemoved} 处、跨章泛化归口复读 ${b.generalizedRemoved} 处)`:"句级复读核对通过:无完全重复句残留",details:c.length>0?c:void 0},{subtitle:"模板化清理收口"});(0,q.fx)(a.progressStages,d),(0,q.fx)(a.finalGateRepairStages,d),b.removedCount>0&&(a.finalMarkdown=b.markdown,await a.recomputeFinalValidationBundle()),a.emitProgress(a.finalChapterDrafts,a.progressStages)}async function eN(a){let b=function(a){let b,c=a.split("\n"),d=[];if(c.forEach((a,e)=>{let f=a.trim();/^##\s+/u.test(f)&&(b&&(b.endLine=e,d.push(b)),b={startLine:e,endLine:c.length,title:f.replace(/^#+\s*/u,"")})}),b&&d.push(b),0===d.length)return{markdown:a,prefixRemoved:0,prefixSentences:[],paragraphRemoved:0,targetCount:0};let e=d.map((a,b)=>({id:`md-chapter-${b}`,title:a.title,content:c.slice(a.startLine,a.endLine).join("\n"),evidence:[],missingFacts:[]})),f=c$(e),g=f.length>0?c_(e,f):{deletedCount:0,deletedSentences:[],remaining:f},h=0;for(let a of e){if(!a.content?.trim())continue;let b=(0,o.Vc)(a.content);b.removedCount>0&&(a.content=b.markdown,h+=b.removedCount)}if(0===g.deletedCount&&0===h)return{markdown:a,prefixRemoved:0,prefixSentences:[],paragraphRemoved:0,targetCount:f.length};let i=[...c];for(let a=d.length-1;a>=0;a-=1){let b=d[a];i.splice(b.startLine,b.endLine-b.startLine,...e[a].content.split("\n"))}return{markdown:i.join("\n"),prefixRemoved:g.deletedCount,prefixSentences:g.deletedSentences,paragraphRemoved:h,targetCount:f.length}}(a.finalMarkdown),c=b.prefixRemoved+b.paragraphRemoved,d=(0,q.X5)({type:"validation",roleId:"templating-tail-replay",status:"success",message:c>0?`模板化链尾重放(markdown):零信息前缀句删除 ${b.prefixRemoved} 处、重复段落去重 ${b.paragraphRemoved} 处`:"模板化链尾重放核对通过:无零信息前缀句与重复段落残留",details:b.prefixSentences.length>0?b.prefixSentences.slice(0,3).map(a=>`前缀句删除:「${a.slice(0,40)}」`):void 0},{subtitle:"模板化清理收口"});(0,q.fx)(a.progressStages,d),(0,q.fx)(a.finalGateRepairStages,d),c>0&&(a.finalMarkdown=b.markdown,await a.recomputeFinalValidationBundle()),a.emitProgress(a.finalChapterDrafts,a.progressStages)}function eO(a){return Math.max(0,Math.min(100,Math.round(a)))}async function eP(a){let b=await cY(a),c=a.reduce((a,b)=>a+(b.content.match(/本小节围绕|交底覆盖率按100%|24小时内形成整改责任|按施工准备→过程实施→检查验收→问题整改→资料归档的闭环组织|按作业条件确认→技术交底→过程实施|依据本项目已确认资料中的项目边界/gu)||[]).length,0),d=await (0,bC.Bt)(a.map(a=>a.content).join("\n")),e=400*Math.max(0,d.ratio-.1);return{score:eO(100-15*c-25*b.filter(a=>"error"===a.level).length-e),detail:`模板化空话命中 ${c} 处,套话句占比 ${(100*d.ratio).toFixed(1)}%(docx 达标线 ≤10%),废话段问题 ${b.length} 项`}}async function eQ(a,b="",c={}){let d=function(a){let b=a.map(a=>`${a.title} ${(a.sections||[]).join(" ")} ${a.content}`).filter(a=>bF(a).reduce((a,b)=>a+b.length,0)>=200).join("\n"),c=[{label:"工程概况",pattern:/工程概况|项目概况|基本概况/u},{label:"主要施工内容",pattern:/主要施工内容/u},{label:"重难点分析",pattern:/重点.{0,4}难点/u},{label:"施工部署",pattern:/施工部署|总体部署|流水/u},{label:"进度计划",pattern:/进度计划|工期保障|工期计划/u},{label:"质量保证",pattern:/质量保证|质量管理|质量控制/u},{label:"安全文明",pattern:/安全.{0,8}(?:管理|措施|文明)|文明施工/u},{label:"资源配置",pattern:/劳动力|机械设备|材料.{0,4}计划|资源配置/u},{label:"绿色环保",pattern:/绿色施工|扬尘|噪声|环保/u},{label:"应急管理",pattern:/应急/u}],d=c.filter(a=>a.pattern.test(b)),e=eO(d.length/c.length*100),f=c.filter(a=>!a.pattern.test(b)).map(a=>a.label);return{score:e,detail:`覆盖 ${d.length}/${c.length} 个核心结构组${f.length?`;缺失:${f.join("、")}`:""}`}}(a),e=function(a){let b=a.map(a=>a.content).join("\n"),c=bG(b,cO.s2),d=bG(b,/工程量|材料|设备|范围|流程|验收|检测|复试|调试|隐蔽|检验批|资料|记录|系统|部位|接口|规格|标准/gu),e=Math.max(1,b.length),f=c.size/(e/1e3);return{score:eO(Math.min(100,22*f+d.size/18*15)),detail:`量化参数 ${c.size} 项(每千字 ${f.toFixed(1)}),专业事实词 ${d.size}/18 类`}}(a),f=function(a){let b=a.map(a=>a.content).join("\n"),c=bG(b,cO.aX),d=Math.max(1,b.length),e=c.size/(d/1e3);return{score:eO(Math.min(100,20*e+40)),detail:`工艺参数 ${c.size} 项(每千字 ${e.toFixed(1)})`}}(a),g=function(a,b=""){let c=(b||a.map(a=>a.content).join("\n\n")).split("\n"),d=0,e=0,f=0;for(;f<c.length;){let a=c[f].trim();if(!/^\|.+\|$/u.test(a)){f+=1;continue}let b=[];for(;f<c.length&&/^\|.+\|$/u.test(c[f].trim());)b.push(c[f].trim()),f+=1;b.length<3||(d+=1,0===function(a){let b=(a[0]||"").split("|").slice(1,-1).map(a=>(0,cN.jG)(a.trim()));return a.slice(1).filter(a=>a.replace(/\|/gu,"").replace(/[\s\-:]/gu,"").length>0).reduce((a,c)=>{let d=c.split("|").slice(1,-1).map(a=>(0,cN.jG)(a.trim())),e=/^[\s|]*\|?\s*(?:合计|小计|总计|累计)/u.test(c);return a+d.filter((a,c)=>(""===a||"-"===a||"—"===a||"/"===a)&&(!e||"—"!==a)&&!("—"===a&&/规格|型号/u.test(b[c]||""))).length},0)}(b)&&(e+=1))}return{score:0===d?40:eO(e/d*100),detail:`表格 ${d} 个,其中字段完整 ${e} 个`}}(a,b),h=await eP(a),i=function(a){let b=cX(a);return{score:eO(100-20*b.length-20*b.filter(a=>"error"===a.level).length),detail:`重复段落问题 ${b.length} 项`}}(a),j=function(a,b=""){let c=bF(b||a.map(a=>a.content).join("\n\n")),d=[{label:"质量标准",pattern:/质量标准|质量要求|合格率/u},{label:"计划工期",pattern:/计划工期|工期要求|日历天/u},{label:"保修",pattern:/缺陷责任期|保修|质保/u},{label:"安全目标",pattern:/安全.{0,8}目标|文明.{0,8}目标/u},{label:"项目经理",pattern:/项目经理|项目负责人/u}],e=d.filter(a=>c.some(b=>a.pattern.test(b)&&bH.test(b))),f=d.filter(a=>!e.includes(a));return{score:eO(e.length/d.length*100),detail:`招标硬性要求响应 ${e.length}/${d.length} 项${f.length?`(未响应:${f.map(a=>a.label).join("、")})`:""}`}}(a,b),k=function(a){if(!a)return{score:100,detail:"模板化未检测(无信号,按满分计)"};let b=300*Math.max(0,a.fillerRatio-.1),c=Math.min(40,8*a.vagueHitCount),d=a.difficultyCountermeasures>0?a.difficultyQuantifiedCount/a.difficultyCountermeasures:1,e=a.difficultyCountermeasures>0?Math.min(30,60*Math.max(0,.5-d)):0,f=Math.min(30,10*a.crossProjectResidue.length);return{score:eO(100-b-c-e-f),detail:`套话句占比 ${(100*a.fillerRatio).toFixed(1)}%(线 ≤10%)、模糊应答词 ${a.vagueHitCount} 处、重难点量化达标 ${a.difficultyQuantifiedCount}/${a.difficultyCountermeasures}(线 ≥50%)、跨项目残留 ${a.crossProjectResidue.length} 处;扣分 ${b.toFixed(0)}+${c.toFixed(0)}+${e.toFixed(0)}+${f.toFixed(0)}`}}(c.templating),l=[{key:"structure",label:"结构完整度",score:d.score,detail:d.detail,weight:0,baseWeight:.18},{key:"factLanding",label:"事实落位率",score:e.score,detail:e.detail,weight:0,baseWeight:.18},{key:"processParameter",label:"工艺参数密度",score:f.score,detail:f.detail,weight:0,baseWeight:.16},{key:"table",label:"表格完整度",score:g.score,detail:g.detail,weight:0,baseWeight:.12},{key:"filler",label:"废话控制",score:h.score,detail:h.detail,weight:0,baseWeight:.14},{key:"duplication",label:"重复控制",score:i.score,detail:i.detail,weight:0,baseWeight:.12},{key:"reviewResponse",label:"评标响应度",score:j.score,detail:j.detail,weight:0,baseWeight:.1}],m=.2*!!c.templating,n=[...l.map(({baseWeight:a,...b})=>({...b,weight:Number((a*(1-m)).toFixed(4))})),...m>0?[{key:"templating",label:"表述实质性",score:k.score,detail:k.detail,weight:m}]:[]],o=eO(n.reduce((a,b)=>a+b.score*b.weight,0)),p=o>=85?"专业":o>=70?"良好":o>=55?"合格":"待提升",q=[...cX(a),...await cY(a),...c0(a),...c1(a)].slice(0,5).map(a=>a.message),r=n.filter(a=>a.score<70).map(a=>`${a.label}(${a.score}分)`);return{total:o,grade:p,dimensions:n,summary:`施工组织设计专业度评分 ${o} 分(${p};从属口径,交付主尺见六维质量报告)${c.templating&&"light"!==c.templating.level?`;模板化等级:${"heavy"===c.templating.level?"重度":"中度"}(已按「表述实质性」维度计分,不再封顶总分)`:""}${r.length?`;待提升:${r.join("、")}`:""}`,topIssues:q,caliber:b_}}async function eR(a){var b;if(!("heavy"===(b=a.templating).level||b.vagueHitCount>0||b.difficultyHeavyTemplated))return{issues:[],reviewed:!1};let c=(0,bC.T4)(a.markdown),d=[`确定性检测信号:模板化等级=${a.templating.level},套话句占比=${(100*a.templating.fillerRatio).toFixed(1)}%,模糊应答词命中=${a.templating.vagueHitCount}(${a.templating.vaguePhrases.join("、")||"无"}),重难点归因+量化双达标占比=${(100*a.templating.difficultyCountermeasureRatio).toFixed(0)}%,跨项目残留=${a.templating.crossProjectResidue.join("、")||"无"}${c.found.length?`,四新技术命中=${c.found.join("、")}`:""}`,`待复核正文(节选):
|
|
227
|
+
以局部 patch 方式输出:每处 patch 只包含新增表题行与必要定位上下文,不得重写其他内容。`,m=await ab({originalContent:e.content,repairRound:"table-caption-repair",diagnostics:a.generationDiagnostics,beforeMetrics:[g.length],shouldRollback:(a,b)=>b[0]>=g.length,apply:async()=>{let b=await a.withProgressHeartbeat(()=>(0,f.l8)({template:a.template,chapter:{id:e.id,title:e.title,content:e.content,evidence:e.evidence,missingFacts:e.missingFacts,sections:e.sections},issues:[`正文存在 ${g.length} 张缺少表题的表格`],promptTexts:l,requirement:a.requirement,forbidDrawingImages:!1,diagnostics:a.generationDiagnostics,signal:a.signal,patchGuard:(0,f.XG)("table-caption-repair",a.generationDiagnostics)}));return b.content&&b.content!==e.content?b.content:e.content},recheck:a=>[b(a)]}),n=m.content;m.rolledBack||n===e.content||(a.finalChapterDrafts[c]={...e,content:h?(0,k.w_)(n,h):n},d+=1);let o=m.rolledBack?g.length:m.afterMetrics[0],p=(0,q.X5)({type:"llm_review",roleId:i,status:m.rolledBack||o>0?"failed":"success",message:m.rolledBack?`表格题名补全已回滚:${e.title}(补名后无题表数未下降,保留修复前正文)`:o>0?`表格题名补全未完全生效:${e.title}(残留 ${o} 张无题表由终检复核)`:`表格题名补全完成:${e.title}`,details:[`无题表 ${g.length} 张 → 残留 ${o} 张`]},{subtitle:"表格题名补全"});(0,q.fx)(a.progressStages,p),(0,q.fx)(a.finalGateRepairStages,p),a.emitProgress(a.finalChapterDrafts,a.progressStages)}(c>0||d>0)&&(a.finalMarkdown=a.rebuildFinalMarkdown(),await a.recomputeFinalValidationBundle())}async function eF(a){let b=new Map;for(let c of a.finalChapterDrafts){let a=(0,bX.qE)(c.content);a.length>0&&b.set(c.id,a)}let c=[...b.keys()].reduce((b,c)=>{let d=a.finalChapterDrafts.find(a=>a.id===c);return b+(d?(0,bX.OV)(d.content):0)},0);if(0===b.size){let b=(0,q.X5)({type:"validation",roleId:"table-arithmetic-repair",status:"success",message:"表内算术自洽核对通过:全部含合计标记的表格分项和=合计"},{subtitle:"表内算术自洽"});(0,q.fx)(a.progressStages,b),(0,q.fx)(a.finalGateRepairStages,b),a.emitProgress(a.finalChapterDrafts,a.progressStages);return}let d=0,e=0;for(let[c,g]of b){let b=a.finalChapterDrafts.findIndex(a=>a.id===c);if(b<0)continue;let h=a.finalChapterDrafts[b],i=h.content,j=(0,bX.OV)(i),k=0,l=!1,m=!1,n=[j];for(;j>0&&k<2;){k+=1;let d=(0,bX.qE)(i),e=(0,q.X5)({type:"llm_review",roleId:`agent-table-arithmetic-${c}`,status:"running",message:`表格算术不自洽 ${d.length} 张表,第 ${k} 轮定向修复中:${h.title}`,details:d.map(a=>a.message)},{subtitle:"表内算术自洽"});(0,q.fx)(a.progressStages,e),(0,q.fx)(a.finalGateRepairStages,e),a.emitProgress(a.finalChapterDrafts,a.progressStages);let g=["【表格算术自洽修复】下列表格的「合计」(合计行/合计列)与分项之和对不上,请逐表修正表内数值:",...k>1?[`本轮为第 ${k} 轮(最多 2 轮):上一轮修复后仍有残留,必须让合计与分项之和完全相等。`]:[],"1. 以分项为准重算合计:合计 = 该行/该列已列出的分项之和(单位一致);","2. 若分项数值本身与资料/清单/上下文矛盾,按权威值修正分项,使分项和 = 合计;","3. 台账类表(含「其他/其余」差额项的)保留显性「其他」项并给出数值,使合计 = 全部分项(含其他)之和;","4. 只允许修正表格内的数值(合计格/分项格);严禁编造无来源数值、严禁删除表格、严禁改动表格外正文。","以局部 patch 方式输出:每个 patch 只包含表格区域的数值修正与必要定位上下文。",d.map(a=>`- ${a.message}`).join("\n")].join("\n"),o=await ab({originalContent:i,repairRound:"table-arithmetic-repair",diagnostics:a.generationDiagnostics,beforeMetrics:[j],shouldRollback:(a,b)=>b[0]>=a[0],apply:async()=>{let b=await a.withProgressHeartbeat(()=>(0,f.l8)({template:a.template,chapter:{id:h.id,title:h.title,content:i,evidence:h.evidence,missingFacts:h.missingFacts,sections:h.sections},issues:d.map(a=>a.message),promptTexts:g,requirement:a.requirement,forbidDrawingImages:!1,bidComposition:a.bidComposition,diagnostics:a.generationDiagnostics,signal:a.signal,patchGuard:(0,f.XG)("table-arithmetic-repair",a.generationDiagnostics)}));return b.content&&b.content!==i?b.content:i},recheck:a=>[(0,bX.OV)(a)]});o.rolledBack||o.content===i||(i=o.content,a.finalChapterDrafts[b]={...h,content:i},l=!0),o.rolledBack&&(m=!0);let p=(0,bX.OV)(i);if(n.push(p),0===p||p>=j||k>=2)break;j=p}l&&(d+=1);let o=(0,bX.OV)(i);e+=o;let p=(0,q.X5)({type:"llm_review",roleId:`agent-table-arithmetic-${c}`,status:0===o?"success":"failed",message:0===o?`表内算术自洽修复完成:${h.title}(残留轨迹 ${n.join("→")})`:l?`表内算术自洽修复部分生效:${h.title}(不自洽处数残留轨迹 ${n.join("→")},已执行 ${k} 轮定向修复(每章最多 2 轮);残留由终检照常复核)`:m?`表内算术自洽修复已回滚:${h.title}(修复后不自洽处数未下降,保留修复前正文;残留 ${o} 处由终检照常复核)`:`表内算术自洽修复未生效:${h.title}(模型未产生有效修改;残留 ${o} 处由终检照常复核)`,details:[...g.map(a=>a.message),o>0?`已执行 ${k} 轮定向修复,残留由终检照常复核`:""]},{subtitle:"表内算术自洽"});(0,q.fx)(a.progressStages,p),(0,q.fx)(a.finalGateRepairStages,p),a.emitProgress(a.finalChapterDrafts,a.progressStages)}d>0&&(a.finalMarkdown=a.rebuildFinalMarkdown(),await a.recomputeFinalValidationBundle()),a.generationDiagnostics.llm.lastInfo=`表内算术自洽修复:${c} 处不自洽,${d} 章完成定向修复,残留 ${e} 处(每章最多 2 轮收敛修复,残留由终检照常复核)`}async function eG(a){let b=function(a){let b=0,c=0,d=[];return a.forEach((a,e)=>{if(!a.content?.trim())return;let f=0;for(let b=0;b<4;b+=1){let b=(0,R.rz)(a);if(0===b.length)break;let c=new Set(b.map(a=>a.line));for(let g of(a.content=a.content.split("\n").filter((a,b)=>!c.has(b)).join("\n").replace(/\n{3,}/gu,"\n\n"),f+=b.length,b))d.push(`第 ${e+1} 章移除空壳标题「${g.rawTitle}」`)}if(0===f)return;b+=f;let g=(0,bh.PA)(a.content,{chapterNumber:e+1});a.content=g.markdown,g.fixedCount>0&&(c+=1)}),{removedCount:b,renumberedChapters:c,details:d}}(a.finalChapterDrafts),c=(0,q.X5)({type:"validation",roleId:"empty-section-sweep",status:"success",message:b.removedCount>0?`空节清扫完成:移除无依据空壳小节标题 ${b.removedCount} 处(${b.renumberedChapters} 章重排编号)`:"空节清扫核对通过:无无规划归属的空壳小节",details:b.details.length>0?b.details:void 0},{subtitle:"空节清扫"});(0,q.fx)(a.progressStages,c),(0,q.fx)(a.finalGateRepairStages,c),b.removedCount>0&&(a.finalMarkdown=a.rebuildFinalMarkdown(),await a.recomputeFinalValidationBundle()),a.emitProgress(a.finalChapterDrafts,a.progressStages)}async function eH(a){let b=dD(a.finalChapterDrafts),c=function(a){let b=0,c=[];return a.forEach((a,d)=>{if(!a.content?.trim())return;let f=b=>{let c=String(b||"").trim();return!c||(0,bi.cq)(c)||/^附录/u.test(c)||dt.gG.test(a.title)&&e.V.test(c)},g=(a.sections||[]).filter(a=>!f(a));if(0===g.length||(0,O.r4)(a.content).filter(a=>!f(a)).length<=g.length)return;let h=g.map(a=>(0,R.mJ)(a)),i=new Set(h),j=a.content.split("\n"),k=[];j.forEach((a,b)=>{if(!/^\s*###\s+\S/u.test(a))return;let c=(0,e.Jb)(a),d=c?(0,R.mJ)(c):"";d&&k.push({line:b,title:c,normalized:d})});let l=-1,m=0;for(let a of k){if(i.has(a.normalized)){l=a.line;continue}!(f(a.title)||h.some(b=>(0,e.ty)(a.normalized,b))||/(?:((?:\d+|[一二三四五六七八九十]+)))+$/u.test(a.title))&&(l<0||(j[a.line]=`#### ${a.title}`,m+=1,c.push(`第 ${d+1} 章「${a.title}」降为 H4(并入上方规划小节主题块)`)))}0!==m&&(b+=m,a.content=(0,bh.PA)(j.join("\n"),{chapterNumber:d+1}).markdown)}),{demotedCount:b,details:c}}(a.finalChapterDrafts),d=0;a.finalChapterDrafts.forEach((a,b)=>{if(!a.content?.trim())return;let c=(0,bh.PA)(a.content,{chapterNumber:b+1});c.fixedCount>0&&(a.content=c.markdown,d+=1)});let g=b.mergedCount+c.demotedCount,h=g>0||d>0;(0,f.kD)(a.generationDiagnostics,g+d);let i=[...b.details,...c.details],j=(0,q.X5)({type:"validation",roleId:"section-alignment-sweep",status:"success",message:h?`小节结构对齐收口:近名对齐/合并 ${b.mergedCount} 处、规划外小节降级 ${c.demotedCount} 处、编号重放 ${d} 章`:"小节结构对齐核对通过:成稿小节与规划主题块一一对应",details:i.length>0?i.slice(0,6):void 0},{subtitle:"结构对齐收口"});(0,q.fx)(a.progressStages,j),(0,q.fx)(a.finalGateRepairStages,j),h&&(a.finalMarkdown=a.rebuildFinalMarkdown(),await a.recomputeFinalValidationBundle()),a.emitProgress(a.finalChapterDrafts,a.progressStages)}async function eI(a){let b=c$(a.finalChapterDrafts),c=b.length>0?c_(a.finalChapterDrafts,b):{deletedCount:0,deletedSentences:[],remaining:b},d=0;for(let b of a.finalChapterDrafts){if(!b.content?.trim())continue;let a=(0,o.Vc)(b.content);a.removedCount>0&&(b.content=a.markdown,d+=a.removedCount)}let e=c.deletedCount+d,f=(0,q.X5)({type:"validation",roleId:"templating-sweep",status:"success",message:e>0?`模板化链尾清理:零信息前缀句删除 ${c.deletedCount} 处、重复段落去重 ${d} 处`:"模板化链尾核对通过:无零信息前缀句与重复段落残留",details:c.deletedSentences.length>0?c.deletedSentences.slice(0,3).map(a=>`前缀句删除:「${a.slice(0,40)}」`):void 0},{subtitle:"模板化清理收口"});(0,q.fx)(a.progressStages,f),(0,q.fx)(a.finalGateRepairStages,f),e>0&&(a.finalMarkdown=a.rebuildFinalMarkdown(),await a.recomputeFinalValidationBundle()),a.emitProgress(a.finalChapterDrafts,a.progressStages)}async function eJ(a){let b=function(a){let b=0,c=[];return a.forEach((a,d)=>{if(!a.content?.trim())return;let f=0;for(let g=0;g<6;g+=1){let g=a.sections||[],h=g.map((a,b)=>({section:String(a||"").trim(),index:b})).filter(a=>a.section),i=new Map;for(let a of h){let b=(0,R.Sn)(a.section);b&&i.set(b,[...i.get(b)||[],a])}let j=[...i.values()].find(a=>a.length>=2);if(!j)break;let k=a.content.split("\n"),l=[];k.forEach((a,b)=>{if(!/^\s*###\s+\S/u.test(a))return;let c=(0,e.Jb)(a),d=c?(0,R.mJ)(c):"";d&&l.push({line:b,title:c,normalized:d})});let m=a=>{let b=(0,R.mJ)(a);return l.find(a=>a.normalized===b)||l.find(a=>(0,e.ty)(a.normalized,b))},n=j.flatMap(a=>{let b=m(a.section);return b?[{section:a.section,index:a.index,heading:b}]:[]}),o=n.filter((a,b)=>n.findIndex(b=>b.heading.line===a.heading.line)===b),p=new Map;for(let a of n)p.set(a.heading.line,[...p.get(a.heading.line)||[],a]);let q=[...p.values()].find(a=>a.length>1);if(q){let e=q.find(a=>a.heading.normalized===(0,R.mJ)(a.section))||q[0],h=q.filter(a=>a!==e).map(a=>a.index);a.sections=g.filter((a,b)=>!h.includes(b)),b+=1,f+=1,c.push(`「${q.filter(a=>a!==e).map(a=>a.section).join("、")}」与「${e.section}」同节对齐去重(第 ${d+1} 章)`);continue}if(o.length<2)break;o.sort((a,b)=>a.heading.line-b.heading.line);let r=o[0],s=o[1],t=dB(k,r.heading.line),u=dB(k,s.heading.line),v=k.slice(r.heading.line+1,t);for(;v.length>0&&""===v[v.length-1].trim();)v.pop();let w=k.slice(s.heading.line+1,u);for(;w.length>0&&""===w[w.length-1].trim();)w.pop();for(;w.length>0&&""===w[0].trim();)w.shift();let x=w.length>0?[...v,"",...w,""]:[...v,""],y=r.heading.normalized===(0,R.mJ)(r.section)?k[r.heading.line]:`${dC(k[r.heading.line])}${r.section}`;a.content=[...k.slice(0,r.heading.line),y,...x,...k.slice(t,s.heading.line),...k.slice(u)].join("\n").replace(/\n{3,}/gu,"\n\n"),a.sections=g.filter((a,b)=>b!==s.index),b+=1,f+=1,c.push(`「${s.section}」并入「${r.section}」(第 ${d+1} 章)`)}if(f>0){let b=(0,bh.PA)(a.content,{chapterNumber:d+1});a.content=b.markdown}}),{mergedCount:b,details:c}}(a.finalChapterDrafts),c=(0,q.X5)({type:"validation",roleId:"duplicate-theme-merge",status:"success",message:b.mergedCount>0?`重复主题小节合并:${b.mergedCount} 处(保留首现小节,后续标题行摘除、正文并入,规划数组同步)`:"重复主题小节核对通过:同桶小节无并存",details:b.details.length>0?b.details.slice(0,6):void 0},{subtitle:"重复主题合并"});(0,q.fx)(a.progressStages,c),(0,q.fx)(a.finalGateRepairStages,c),b.mergedCount>0&&(a.finalMarkdown=a.rebuildFinalMarkdown(),await a.recomputeFinalValidationBundle()),a.emitProgress(a.finalChapterDrafts,a.progressStages)}async function eK(a){let b=[],c=(0,Q._G)(a.finalMarkdown),d=0;c!==a.finalMarkdown&&(a.finalMarkdown=c,d+=1,b.push("附表区内部话术清洗:内部推导口径已中性化(唯一口径/经验工效区间/清单批注等)"));{let c=(a.effectiveChapters||[]).map(a=>({title:(0,bg.GQ)(a.title),sections:(a.sections||[]).filter(Boolean)}));if(c.length>0){let e=a.finalMarkdown.split(/\r?\n/u),f=[];e.forEach((a,b)=>{let c=/^##\s+(.+?)\s*$/u.exec(a.trim());c&&!/^(目录|附表)/u.test(c[1])&&f.push({index:b,title:c[1].replace(/\s+/gu,"")})});let g=0,h=[];for(let a=c.length-1;a>=0;a-=1){let d=c[a],i=d.title.replace(/\s+/gu,""),j=f.find(a=>a.title.includes(i)||i.includes(a.title));if(!j)continue;let k=f.find(a=>a.index>j.index),l=k?k.index:e.length,m=e.slice(j.index+1,l).join("\n"),n=(0,ds.zX)(d.sections,m);(0!==n.promoted.length||0!==n.missing.length)&&(n.promoted.length>0&&(e.splice(j.index+1,l-j.index-1,...n.markdown.split(/\r?\n/u)),g+=n.promoted.length,b.push(`规划小节层级提升:${d.title}(${n.promoted.join("、")})`)),n.missing.length>0&&h.push(`${d.title}:${n.missing.join("、")}`))}g>0&&(a.finalMarkdown=e.join("\n"),d+=g),h.length>0&&b.push(`规划小节未落位(交终门禁复核):${h.join(";")}`)}}let e=(0,cN.av)(a.finalMarkdown);e.markdown!==a.finalMarkdown&&(a.finalMarkdown=e.markdown,d+=e.splitCount,b.push(`超长段落切分:消除 >380 字符段落 ${e.splitCount} 处`));{let c=(a.truthValues||[]).flatMap(a=>(a.superseded||[]).map(b=>({superseded:b,effective:a.value,scope:[a.attribute],evidence:a.evidence,kind:"override"})));if(c.length>0){let e=(0,cM.M0)(a.finalMarkdown,c);e.applied.length>0&&(a.finalMarkdown=e.text,d+=e.applied.length,b.push(`现行口径落地:${e.applied.length} 处(${[...new Set(e.applied.map(a=>`${a.from}→${a.to}`))].slice(0,3).join("、")})`))}}{let c=(0,bh.PA)(a.finalMarkdown);c.fixedCount>0&&(a.finalMarkdown=c.markdown,d+=c.fixedCount,b.push(`小节编号重放:${c.fixedCount} 处(删除/合并小节后的编号空档收口)`))}let g=(0,o._D)(a.finalMarkdown);g.fixedCount>0&&(a.finalMarkdown=g.markdown,d+=g.fixedCount,b.push(...g.details)),(0,f.kD)(a.generationDiagnostics,d);let h=b.length>0,i=(0,q.X5)({type:"validation",roleId:"delivery-structure-closure",status:"success",message:h?`交付结构收口:${b.join(";")}`:"交付结构收口核对通过:目录与正文一致、无超长段落",details:h?b:void 0},{subtitle:"交付结构收口"});(0,q.fx)(a.progressStages,i),(0,q.fx)(a.finalGateRepairStages,i),h&&await a.recomputeFinalValidationBundle(),a.emitProgress(a.finalChapterDrafts,a.progressStages)}async function eL(a){let b=(0,bi.yp)(a.finalMarkdown),c=(0,q.X5)({type:"validation",roleId:"sentence-pattern-sweep",status:"success",message:b.removedCount>0?`句模复读链尾收口:宣告引导句确定性剥离 ${b.removedCount} 处(列表引导语删除无损,列表内容保留)`:"句模复读链尾核对通过:无宣告引导句残留",details:b.removedSentences.length>0?b.removedSentences.slice(0,4).map(a=>`引导句剥离:「${a.slice(0,40)}」`):void 0},{subtitle:"模板化清理收口"});(0,q.fx)(a.progressStages,c),(0,q.fx)(a.finalGateRepairStages,c),b.removedCount>0&&(a.finalMarkdown=b.markdown,await a.recomputeFinalValidationBundle()),a.emitProgress(a.finalChapterDrafts,a.progressStages)}async function eM(a){let b=function(a){let b=a.split("\n"),c=[],d="(文首)";b.forEach((a,b)=>{let e=a.trim();/^##\s+/u.test(e)&&(d=e),c[b]=d});let e=[],f=[],g=new Map,h=0,i=0;for(let b of bP(a)){let a=b.occurrences;if(a.length<2)continue;let d=1===new Set(a.map(a=>c[a.lineIndex])).size,j=bi.Lw.test(a[0].raw);if(!d&&!j){f.push(a[0].raw);continue}for(let b of a.slice(1)){let a=g.get(b.lineIndex)||[];a.push({start:b.start,end:b.end}),g.set(b.lineIndex,a),e.push(b.raw),d?h+=1:i+=1}}if(0===e.length)return{markdown:a,removedCount:0,removedSentences:e,keptSentences:f,sameChapterRemoved:h,generalizedRemoved:i};for(let[a,c]of g){let d=b[a];for(let a of c.sort((a,b)=>b.start-a.start)){let b=a.start;for(;b>0&&/\s/u.test(d[b-1]);)b-=1;let c=a.end;for(;c<d.length&&/\s/u.test(d[c]);)c+=1;/[。;;]/u.test(d[c]||"")&&(c+=1),d=d.slice(0,b)+d.slice(c)}b[a]=""===d.trim()?"":d.replace(/^[ \t]+/u,"").replace(/[ \t]+$/u,"")}return{markdown:b.join("\n").replace(/\n{4,}/gu,"\n\n\n"),removedCount:e.length,removedSentences:e,keptSentences:f,sameChapterRemoved:h,generalizedRemoved:i}}(a.finalMarkdown),c=b.removedSentences.slice(0,3).map(a=>`复读坍塌:「${a.slice(0,40)}」`);b.keptSentences.length>0&&c.push(`跨章业务复读保留 ${b.keptSentences.length} 种(合理重申不坍塌)`);let d=(0,q.X5)({type:"validation",roleId:"duplicate-sentence-collapse",status:"success",message:b.removedCount>0?`句级复读坍塌:完全重复句保首次删后续 ${b.removedCount} 处(同章复读 ${b.sameChapterRemoved} 处、跨章泛化归口复读 ${b.generalizedRemoved} 处)`:"句级复读核对通过:无完全重复句残留",details:c.length>0?c:void 0},{subtitle:"模板化清理收口"});(0,q.fx)(a.progressStages,d),(0,q.fx)(a.finalGateRepairStages,d),b.removedCount>0&&(a.finalMarkdown=b.markdown,await a.recomputeFinalValidationBundle()),a.emitProgress(a.finalChapterDrafts,a.progressStages)}async function eN(a){let b=function(a){let b,c=a.split("\n"),d=[];if(c.forEach((a,e)=>{let f=a.trim();/^##\s+/u.test(f)&&(b&&(b.endLine=e,d.push(b)),b={startLine:e,endLine:c.length,title:f.replace(/^#+\s*/u,"")})}),b&&d.push(b),0===d.length)return{markdown:a,prefixRemoved:0,prefixSentences:[],paragraphRemoved:0,targetCount:0};let e=d.map((a,b)=>({id:`md-chapter-${b}`,title:a.title,content:c.slice(a.startLine,a.endLine).join("\n"),evidence:[],missingFacts:[]})),f=c$(e),g=f.length>0?c_(e,f):{deletedCount:0,deletedSentences:[],remaining:f},h=0;for(let a of e){if(!a.content?.trim())continue;let b=(0,o.Vc)(a.content);b.removedCount>0&&(a.content=b.markdown,h+=b.removedCount)}if(0===g.deletedCount&&0===h)return{markdown:a,prefixRemoved:0,prefixSentences:[],paragraphRemoved:0,targetCount:f.length};let i=[...c];for(let a=d.length-1;a>=0;a-=1){let b=d[a];i.splice(b.startLine,b.endLine-b.startLine,...e[a].content.split("\n"))}return{markdown:i.join("\n"),prefixRemoved:g.deletedCount,prefixSentences:g.deletedSentences,paragraphRemoved:h,targetCount:f.length}}(a.finalMarkdown),c=b.prefixRemoved+b.paragraphRemoved,d=(0,q.X5)({type:"validation",roleId:"templating-tail-replay",status:"success",message:c>0?`模板化链尾重放(markdown):零信息前缀句删除 ${b.prefixRemoved} 处、重复段落去重 ${b.paragraphRemoved} 处`:"模板化链尾重放核对通过:无零信息前缀句与重复段落残留",details:b.prefixSentences.length>0?b.prefixSentences.slice(0,3).map(a=>`前缀句删除:「${a.slice(0,40)}」`):void 0},{subtitle:"模板化清理收口"});(0,q.fx)(a.progressStages,d),(0,q.fx)(a.finalGateRepairStages,d),c>0&&(a.finalMarkdown=b.markdown,await a.recomputeFinalValidationBundle()),a.emitProgress(a.finalChapterDrafts,a.progressStages)}function eO(a){return Math.max(0,Math.min(100,Math.round(a)))}async function eP(a){let b=await cY(a),c=a.reduce((a,b)=>a+(b.content.match(/本小节围绕|交底覆盖率按100%|24小时内形成整改责任|按施工准备→过程实施→检查验收→问题整改→资料归档的闭环组织|按作业条件确认→技术交底→过程实施|依据本项目已确认资料中的项目边界/gu)||[]).length,0),d=await (0,bC.Bt)(a.map(a=>a.content).join("\n")),e=400*Math.max(0,d.ratio-.1);return{score:eO(100-15*c-25*b.filter(a=>"error"===a.level).length-e),detail:`模板化空话命中 ${c} 处,套话句占比 ${(100*d.ratio).toFixed(1)}%(docx 达标线 ≤10%),废话段问题 ${b.length} 项`}}async function eQ(a,b="",c={}){let d=function(a){let b=a.map(a=>`${a.title} ${(a.sections||[]).join(" ")} ${a.content}`).filter(a=>bF(a).reduce((a,b)=>a+b.length,0)>=200).join("\n"),c=[{label:"工程概况",pattern:/工程概况|项目概况|基本概况/u},{label:"主要施工内容",pattern:/主要施工内容/u},{label:"重难点分析",pattern:/重点.{0,4}难点/u},{label:"施工部署",pattern:/施工部署|总体部署|流水/u},{label:"进度计划",pattern:/进度计划|工期保障|工期计划/u},{label:"质量保证",pattern:/质量保证|质量管理|质量控制/u},{label:"安全文明",pattern:/安全.{0,8}(?:管理|措施|文明)|文明施工/u},{label:"资源配置",pattern:/劳动力|机械设备|材料.{0,4}计划|资源配置/u},{label:"绿色环保",pattern:/绿色施工|扬尘|噪声|环保/u},{label:"应急管理",pattern:/应急/u}],d=c.filter(a=>a.pattern.test(b)),e=eO(d.length/c.length*100),f=c.filter(a=>!a.pattern.test(b)).map(a=>a.label);return{score:e,detail:`覆盖 ${d.length}/${c.length} 个核心结构组${f.length?`;缺失:${f.join("、")}`:""}`}}(a),e=function(a){let b=a.map(a=>a.content).join("\n"),c=bG(b,cO.s2),d=bG(b,/工程量|材料|设备|范围|流程|验收|检测|复试|调试|隐蔽|检验批|资料|记录|系统|部位|接口|规格|标准/gu),e=Math.max(1,b.length),f=c.size/(e/1e3);return{score:eO(Math.min(100,22*f+d.size/18*15)),detail:`量化参数 ${c.size} 项(每千字 ${f.toFixed(1)}),专业事实词 ${d.size}/18 类`}}(a),f=function(a){let b=a.map(a=>a.content).join("\n"),c=bG(b,cO.aX),d=Math.max(1,b.length),e=c.size/(d/1e3);return{score:eO(Math.min(100,20*e+40)),detail:`工艺参数 ${c.size} 项(每千字 ${e.toFixed(1)})`}}(a),g=function(a,b=""){let c=(b||a.map(a=>a.content).join("\n\n")).split("\n"),d=0,e=0,f=0;for(;f<c.length;){let a=c[f].trim();if(!/^\|.+\|$/u.test(a)){f+=1;continue}let b=[];for(;f<c.length&&/^\|.+\|$/u.test(c[f].trim());)b.push(c[f].trim()),f+=1;b.length<3||(d+=1,0===function(a){let b=(a[0]||"").split("|").slice(1,-1).map(a=>(0,cN.jG)(a.trim()));return a.slice(1).filter(a=>a.replace(/\|/gu,"").replace(/[\s\-:]/gu,"").length>0).reduce((a,c)=>{let d=c.split("|").slice(1,-1).map(a=>(0,cN.jG)(a.trim())),e=/^[\s|]*\|?\s*(?:合计|小计|总计|累计)/u.test(c);return a+d.filter((a,c)=>(""===a||"-"===a||"—"===a||"/"===a)&&(!e||"—"!==a)&&!("—"===a&&/规格|型号/u.test(b[c]||""))).length},0)}(b)&&(e+=1))}return{score:0===d?40:eO(e/d*100),detail:`表格 ${d} 个,其中字段完整 ${e} 个`}}(a,b),h=await eP(a),i=function(a){let b=cX(a);return{score:eO(100-20*b.length-20*b.filter(a=>"error"===a.level).length),detail:`重复段落问题 ${b.length} 项`}}(a),j=function(a,b=""){let c=bF(b||a.map(a=>a.content).join("\n\n")),d=[{label:"质量标准",pattern:/质量标准|质量要求|合格率/u},{label:"计划工期",pattern:/计划工期|工期要求|日历天/u},{label:"保修",pattern:/缺陷责任期|保修|质保/u},{label:"安全目标",pattern:/安全.{0,8}目标|文明.{0,8}目标/u},{label:"项目经理",pattern:/项目经理|项目负责人/u}],e=d.filter(a=>c.some(b=>a.pattern.test(b)&&bH.test(b))),f=d.filter(a=>!e.includes(a));return{score:eO(e.length/d.length*100),detail:`招标硬性要求响应 ${e.length}/${d.length} 项${f.length?`(未响应:${f.map(a=>a.label).join("、")})`:""}`}}(a,b),k=function(a){if(!a)return{score:100,detail:"模板化未检测(无信号,按满分计)"};let b=300*Math.max(0,a.fillerRatio-.1),c=Math.min(40,8*a.vagueHitCount),d=a.difficultyCountermeasures>0?a.difficultyQuantifiedCount/a.difficultyCountermeasures:1,e=a.difficultyCountermeasures>0?Math.min(30,60*Math.max(0,.5-d)):0,f=Math.min(30,10*a.crossProjectResidue.length);return{score:eO(100-b-c-e-f),detail:`套话句占比 ${(100*a.fillerRatio).toFixed(1)}%(线 ≤10%)、模糊应答词 ${a.vagueHitCount} 处、重难点量化达标 ${a.difficultyQuantifiedCount}/${a.difficultyCountermeasures}(线 ≥50%)、跨项目残留 ${a.crossProjectResidue.length} 处;扣分 ${b.toFixed(0)}+${c.toFixed(0)}+${e.toFixed(0)}+${f.toFixed(0)}`}}(c.templating),l=[{key:"structure",label:"结构完整度",score:d.score,detail:d.detail,weight:0,baseWeight:.18},{key:"factLanding",label:"事实落位率",score:e.score,detail:e.detail,weight:0,baseWeight:.18},{key:"processParameter",label:"工艺参数密度",score:f.score,detail:f.detail,weight:0,baseWeight:.16},{key:"table",label:"表格完整度",score:g.score,detail:g.detail,weight:0,baseWeight:.12},{key:"filler",label:"废话控制",score:h.score,detail:h.detail,weight:0,baseWeight:.14},{key:"duplication",label:"重复控制",score:i.score,detail:i.detail,weight:0,baseWeight:.12},{key:"reviewResponse",label:"评标响应度",score:j.score,detail:j.detail,weight:0,baseWeight:.1}],m=.2*!!c.templating,n=[...l.map(({baseWeight:a,...b})=>({...b,weight:Number((a*(1-m)).toFixed(4))})),...m>0?[{key:"templating",label:"表述实质性",score:k.score,detail:k.detail,weight:m}]:[]],o=eO(n.reduce((a,b)=>a+b.score*b.weight,0)),p=o>=85?"专业":o>=70?"良好":o>=55?"合格":"待提升",q=[...cX(a),...await cY(a),...c0(a),...c1(a)].slice(0,5).map(a=>a.message),r=n.filter(a=>a.score<70).map(a=>`${a.label}(${a.score}分)`);return{total:o,grade:p,dimensions:n,summary:`施工组织设计专业度评分 ${o} 分(${p};从属口径,交付主尺见六维质量报告)${c.templating&&"light"!==c.templating.level?`;模板化等级:${"heavy"===c.templating.level?"重度":"中度"}(已按「表述实质性」维度计分,不再封顶总分)`:""}${r.length?`;待提升:${r.join("、")}`:""}`,topIssues:q,caliber:b_}}async function eR(a){var b;if(!("heavy"===(b=a.templating).level||b.vagueHitCount>0||b.difficultyHeavyTemplated))return{issues:[],reviewed:!1};let c=(0,bC.T4)(a.markdown),d=[`确定性检测信号:模板化等级=${a.templating.level},套话句占比=${(100*a.templating.fillerRatio).toFixed(1)}%,模糊应答词命中=${a.templating.vagueHitCount}(${a.templating.vaguePhrases.join("、")||"无"}),重难点归因+量化双达标占比=${(100*a.templating.difficultyCountermeasureRatio).toFixed(0)}%,跨项目残留=${a.templating.crossProjectResidue.join("、")||"无"}${c.found.length?`,四新技术命中=${c.found.join("、")}`:""}`,`待复核正文(节选):
|
|
228
228
|
${function(a,b=6e3){return[a.match(/#{2,3}\s*[^\n]*(?:重难点|重点难点|工程难点|难点分析)[^\n]*\n[\s\S]{0,3500}/u)?.[0]||"",a.replace(/#{1,6}\s+[^\n]*\n/gu,"").replace(/\s+/gu," ").slice(0,b)].filter(Boolean).join("\n\n").slice(0,b+4e3)}(a.markdown)}`,'返回 JSON:{"issues":["问题1","问题2"]}'];try{let b=await (0,cl.bb)((0,O.y4)('你是招标技术标评审专家。对施工组织设计做语义级复核,只报告确定性规则覆盖不到的语义问题。\n复核维度(按《施工组织设计全维度校验提示词》判定标尺):\n1. 重难点三级判定:识别精准性(是否点明本项目真实难点而非泛泛而谈)→ 归因合理性(是否说明难点成因/风险来源)→ 对策匹配度(对策是否针对该难点的成因,而非通用措施堆砌);\n2. 术语等效性:同一对象是否前后术语一致(如"砼"与"混凝土"混用需统一),是否出现词面不同但概念等效的双重标准表述;\n3. 四新技术升级价值:若正文声称采用四新技术,其价值表述是否停留在"提升效率"式套话,缺少可对标官方推广目录或替代落后工艺的实质说明。\n每条问题必须包含:问题所在内容简述+判定依据(对应上面哪条维度)+一句话改进建议。\n只报告真实存在的问题,正文无问题时返回空数组;不得编造问题。只返回 JSON。'),d.join("\n\n"),{maxTokens:1200,temperature:0,signal:a.signal,diagnostics:a.diagnostics,taskKind:"structuredGeneration"});return{issues:Array.isArray(b?.issues)?b.issues.filter(a=>"string"==typeof a&&a.length>0):[],reviewed:!0}}catch(a){return{issues:[`⚠ 语义级模板化复核未完成(模型调用失败,本项未复核):${a instanceof Error?a.message:String(a)}`],reviewed:!1}}}function eS(a){return Math.round(10*a)/10}function eT(a,b){let c=a.replace(/\s+/gu," ").trim();return c.length>b?`${c.slice(0,b)}…`:c}let eU={success:"通过",failed:"失败",skipped:"跳过",running:"进行中"},eV={blind:"暗标",open:"明标",unknown:"未判定(按明标口径)"};async function eW(a){var b;a.reviewChecklist=[{key:"export-gate",label:"导出门禁",passed:(b={exportGate:a.qualityBundle.finalExportGate,qualityReport:a.qualityBundle.qualityReport,repairStrategies:a.qualityBundle.repairStrategies}).exportGate.passed,message:b.exportGate.passed?"导出门禁通过":`仍有 ${b.exportGate.blockingIssues.length} 个阻断问题`},{key:"delivery-probability",label:"交付置信度",passed:b.qualityReport.passed,message:`${b.qualityReport.deliveryProbability}% / ${b.qualityReport.target}%`},{key:"completeness",label:"资料完整性",passed:b.qualityReport.scores.completeness>=85,message:`${b.qualityReport.scores.completeness}/100`},{key:"specificity",label:"方案针对性",passed:b.qualityReport.scores.specificity>=85,message:`${b.qualityReport.scores.specificity}/100`},{key:"compliance",label:"合规性",passed:b.qualityReport.scores.compliance>=80,message:`${b.qualityReport.scores.compliance}/100`},{key:"repair-strategies",label:"修复策略",passed:0===b.repairStrategies.filter(a=>"high"===a.priority).length,message:b.repairStrategies.map(a=>a.title).join("、")||"无高优先级修复策略"}];let c=(0,R.Ff)(a.validationIssues);a.generationDiagnostics.quality.blockingCount+=c.blocking,a.generationDiagnostics.quality.importantCount+=c.important,a.generationDiagnostics.quality.minorCount+=c.minor,a.telemetry=function(a){let b=[...a.diagnostics.metrics].sort((a,b)=>b.durationMs-a.durationMs).slice(0,5).map(a=>({name:a.name,durationMs:a.durationMs})),c={};for(let[b,d]of Object.entries(a.diagnostics.llm.patchGuardStats||{}))c[b]={hits:d.hits+d.rejects,repaired:d.hits,failed:d.rejects+(d.rollbacks??0)};return{llmCalls:a.diagnostics.llm.calls,llmFailures:a.diagnostics.llm.failures,maxParallelLlm:a.diagnostics.llm.maxActive,searchQueries:a.diagnostics.evidence.searchQueries,evidenceContextChars:a.diagnostics.evidence.contextChars,qualityIssues:{...a.diagnostics.quality},slowMetrics:b,elapsedMs:a.startedAt&&a.endedAt?a.endedAt-a.startedAt:void 0,repairHeat:Object.keys(c).length>0?c:void 0}}({diagnostics:a.generationDiagnostics});let d=a.qualityBundle.finalExportGate.blockingIssues.length,e=(a.generationDiagnostics.evidence.retrievalFailures??0)>0?`,⚠ 检索失败 ${a.generationDiagnostics.evidence.retrievalFailures} 次(非「无命中」,请看进度中的 failed 事件)`:"",f=(a.generationDiagnostics.evidence.pinnedEvidenceMissed??0)>0?`,⚠ 固定证据未命中 ${a.generationDiagnostics.evidence.pinnedEvidenceMissed} 处(资料包绑定漂移)`:"";a.telemetry.qualityIssues.blockingCount=d,a.professionalScore=await eQ(a.finalChapterDrafts,a.finalMarkdown,{templating:a.qualityBundle.qualityReport.templating}),a.templatingReview=a.qualityBundle.qualityReport.templating?await a.withProgressHeartbeat(()=>eR({templating:a.qualityBundle.qualityReport.templating,markdown:a.finalMarkdown,diagnostics:a.generationDiagnostics,signal:a.signal})):{issues:[],reviewed:!1},a.finalStages=[...a.executionStages,...a.finalGateRepairStages],a.suspensionChecklist=a.qualityBundle.finalExportGate.passed?void 0:(0,i.aF)(a.qualityBundle.finalExportGate.blockingIssues,a.finalChapterDrafts),a.finalStages.push((0,q.X5)({type:"validation",roleId:"agent-final-gate",status:a.qualityBundle.finalExportGate.passed?"success":"failed",message:a.qualityBundle.finalExportGate.passed?"Agent 最终门禁通过":`Agent 最终门禁未通过 ${d} 个问题(不计入交付阻断,文档照常可导出;人工复核清单见明细)`,details:a.suspensionChecklist?(0,i.$w)(a.suspensionChecklist):[]},{subtitle:"Agent 最终门禁"}));let g=a.qualityBundle.qualityReport.deliveryProbability<70;a.finalStages.push((0,q.X5)({type:"validation",roleId:"document-delivery-score",status:a.qualityBundle.qualityReport.passed?"success":a.qualityBundle.finalExportGate.passed?"skipped":"failed",message:a.qualityBundle.finalExportGate.passed&&!a.qualityBundle.qualityReport.passed?`${a.qualityBundle.qualityReport.summary}${g?";置信度低于 70%,建议完成续修后再交付归档":"(导出门禁已通过,作为后续优化建议归档)"}`:a.qualityBundle.qualityReport.summary,details:g&&a.qualityBundle.finalExportGate.passed?[...a.qualityBundle.qualityReport.actions,"续修建议:交付置信度低于 70% 门槛,建议按交付复核清单补齐短板维度后重新生成或续修。"]:a.qualityBundle.qualityReport.actions},{subtitle:"交付评分"})),a.finalStages.push((0,q.X5)({type:"validation",roleId:"document-professional-score",status:"专业"===a.professionalScore.grade||"良好"===a.professionalScore.grade?"success":"skipped",message:a.professionalScore.summary,details:[...a.professionalScore.dimensions.map(a=>`${a.label}:${a.score} 分(${a.detail})`),...a.professionalScore.topIssues.map(a=>`待修复:${a}`)]},{subtitle:"专业度评分"})),a.qualityBundle.qualityReport.templating&&"light"!==a.qualityBundle.qualityReport.templating.level&&a.finalStages.push((0,q.X5)({type:"validation",roleId:"document-templating-report",status:"skipped",message:`模板化检测:${"heavy"===a.qualityBundle.qualityReport.templating.level?"重度":"中度"}模板化(套话句占比 ${(100*a.qualityBundle.qualityReport.templating.fillerRatio).toFixed(1)}%,重难点归因+量化双达标占比 ${(100*a.qualityBundle.qualityReport.templating.difficultyCountermeasureRatio).toFixed(0)}%,模糊应答词 ${a.qualityBundle.qualityReport.templating.vagueHitCount} 处)`,details:a.templatingReview.issues},{subtitle:"模板化检测"})),a.writingTaskBrief&&a.finalStages.push((0,q.X5)({type:"reference",roleId:"document-writing-task-brief",status:"success",message:`写作任务书:${a.writingTaskBrief.documentType},${a.writingTaskBrief.chapters.length} 章任务卡,全局写作焦点 ${a.writingTaskBrief.globalWritingFocus.length} 条`,details:[...a.writingTaskBrief.globalWritingFocus,...a.writingTaskBrief.chapters.slice(0,10).map(a=>`${a.chapterTitle}:覆盖 ${a.mustCover.length} 项`)],subtitle:"写作任务书"})),a.finalStages.push((0,q.X5)({type:"reference",roleId:"knowledge-coverage",status:a.qualityBundle.knowledgeCoverage.score>=85?"success":"failed",message:`资料确认覆盖率:${a.qualityBundle.knowledgeCoverage.score}%(证据 ${a.qualityBundle.knowledgeCoverage.evidenceCount} 条,文件 ${a.qualityBundle.knowledgeCoverage.confirmedFiles} 份)`,details:[a.qualityBundle.knowledgeCoverage.remediation]},{subtitle:"资料覆盖"})),a.finalStages.push((0,q.X5)({type:"validation",roleId:"document-review-checklist",status:a.reviewChecklist.every(a=>a.passed)?"success":a.qualityBundle.finalExportGate.passed?"skipped":"failed",message:`交付复核清单:通过 ${a.reviewChecklist.filter(a=>a.passed).length}/${a.reviewChecklist.length}${a.qualityBundle.finalExportGate.passed&&!a.reviewChecklist.every(a=>a.passed)?"(导出门禁已通过,其余项作为优化建议归档)":""}`,details:a.reviewChecklist.map(a=>`${a.passed?"通过":"待修复"}:${a.label}${a.message?`(${a.message})`:""}`)},{subtitle:"交付复核"}));let h=(0,k._8)(a.generationDiagnostics.metrics),j=(0,k.bz)(a.generationDiagnostics.llm.callBreakdown),m=a.generationDiagnostics.factSanitize?`,事实净化 截断${a.generationDiagnostics.factSanitize.truncated}/丢弃${a.generationDiagnostics.factSanitize.dropped}/编号补全${a.generationDiagnostics.factSanitize.repaired}`:"";if(a.finalStages.push((0,q.X5)({type:"validation",roleId:"document-diagnostics",status:"success",message:`性能统计:LLM ${a.generationDiagnostics.llm.calls} 次,失败 ${a.generationDiagnostics.llm.failures} 次,瞬态重试 ${a.generationDiagnostics.llm.retries} 次,schema 校验失败 ${a.generationDiagnostics.llm.schemaFailures} 次,峰值并行 ${a.generationDiagnostics.llm.maxActive},检索 ${a.generationDiagnostics.evidence.searchQueries} 次/${Math.round(a.generationDiagnostics.evidence.searchMs/1e3)} 秒,证据上下文 ${a.generationDiagnostics.evidence.contextChars} 字,噪声过滤 ${a.generationDiagnostics.evidence.filteredNoise} 条,预算裁剪 ${a.generationDiagnostics.evidence.budgetDropped} 条,质量问题 阻断${a.generationDiagnostics.quality.blockingCount}/重要${a.generationDiagnostics.quality.importantCount}/轻微${a.generationDiagnostics.quality.minorCount}${m}${e}${f}${h?`,Top耗时:${h}`:""}${j?`,调用输入Top5:${j}`:""}`,details:[...(0,k.Il)(a.generationDiagnostics.metrics),...(0,k.NJ)(a.generationDiagnostics.llm.callBreakdown)]},{subtitle:"后台诊断"})),a.documentId)try{let b=function(a){let b=a.qualityReport,c=a.exportGate,d=new Date(a.generatedAt??Date.now()),e=b.mode?eV[b.mode]:"未判定(按明标口径)",f=[];f.push(`# 交付三件套报告:${a.title}`),f.push(""),f.push(`> 文档 ID:${a.documentId??"未提供"};生成时间:${d.toISOString()}`),f.push(`> 评分口径:${bZ}(主尺=六维;招标六项/专业分为从属展示口径)`),f.push(`> 导出门禁:${c.passed?"通过":`未通过(${c.blockingIssues.length} 项阻断,文档照常可导出,人工复核清单见下)`};标书类型:${e}`),f.push(""),f.push("## 一、评分报告"),f.push(""),f.push("### 1.1 六维质量评分(主尺)");let g=b.dimensions||[];if(g.length>0)for(let a of(f.push("| 维度 | 得分 | 权重 | 构成明细 |"),f.push("|---|---|---|---|"),g))f.push(`| ${a.label} | ${a.score} | ${Math.round(100*a.weight)}% | ${a.detail??"—"} |`);else f.push("- (六维构成明细缺失——评级输入不完整,仅综合分可用)");if(f.push(`- 综合评分:**${b.overall}**/100;交付置信度 **${b.deliveryProbability}%** / 目标 ${b.target}%;低雷同性 ${b.scores?.uniqueness??"—"}${b.passed?";已达当前质量目标":";未达目标(按第三节预估路径补强)"}`),f.push(""),f.push("### 1.2 专业度评分(从属口径,交付主尺见六维)"),f.push(`- 总分 ${a.professionalScore.total}/100(${a.professionalScore.grade}):${a.professionalScore.summary}`),a.professionalScore.dimensions.length>0)for(let b of(f.push(""),f.push("| 维度 | 得分 | 权重 | 明细 |"),f.push("|---|---|---|---|"),a.professionalScore.dimensions))f.push(`| ${b.label} | ${b.score} | ${Math.round(100*b.weight)}% | ${b.detail} |`);if(a.professionalScore.topIssues.length>0)for(let b of(f.push(""),f.push("待修复:"),a.professionalScore.topIssues.slice(0,12)))f.push(`- ${eT(b,220)}`);if(f.push(""),f.push("### 1.3 阻断明细(终门禁)"),0===c.blockingIssues.length)f.push("- 无阻断:终检检测器全部通过。");else for(let a of c.blockingIssues){let b=a.severity?`[${a.severity}]`:`[${a.level}]`,c=a.chapterId?`(章:${a.chapterId}${a.sectionTitle?` / ${a.sectionTitle}`:""})`:"";f.push(`- ${b} ${eT(a.message,320)}${c}`),a.suggestion&&f.push(` - 建议:${eT(a.suggestion,260)}`)}if(c.checklist.length>0){let a=c.checklist.filter(a=>!a.passed);f.push(""),f.push(`- 门禁复核清单:通过 ${c.checklist.length-a.length}/${c.checklist.length}${a.length>0?`;未过项:${a.slice(0,10).map(a=>a.label).join("、")}${a.length>10?` 等 ${a.length} 项`:""}`:""}`)}for(let b of(f.push(""),f.push("## 二、进度(阶段/耗时/修复轮次)"),f.push(""),f.push(`### 2.1 阶段执行(共 ${a.stages.length} 个阶段)`),a.stages)){let a=b.subtitle||b.roleId,c=b.message?`:${eT(b.message,240)}`:"";f.push(`- [${eU[b.status]}] ${a}${c}`)}f.push(""),f.push("### 2.2 耗时(按耗时降序)");let h=[...a.metrics].sort((a,b)=>b.durationMs-a.durationMs);if(0===h.length)f.push("- (无性能指标记录)");else for(let a of h){var i;f.push(`- ${a.name}:${!Number.isFinite(i=a.durationMs)||i<0?"0ms":i<1e3?`${Math.round(i)}ms`:i<6e4?`${(i/1e3).toFixed(1)}s`:`${(i/6e4).toFixed(1)}min`}`)}for(let b of(f.push(""),f.push("### 2.3 修复轮次(detectorFixerRegistry 轮序声明表口径)"),l.rk)){let c=[...a.stages].reverse().find(a=>a.roleId===b);if(c){let a=c.message?` — ${eT(c.message,200)}`:"";f.push(`- ${b}:${eU[c.status]}${a}`)}else f.push(`- ${b}:未记录(无触发或静默通过)`)}f.push(""),f.push("## 三、下轮预估目标(按当前六维缺口)"),f.push("");let j=function(a){let b=(a.dimensions||[]).filter(a=>Number.isFinite(a.score)&&Number.isFinite(a.weight)&&a.weight>0);if(0===b.length)return;let c=b.reduce((a,b)=>a+b.weight,0),d=eS(b.reduce((a,b)=>a+b.score*b.weight,0)/c),e=Math.min(1,(a.scores?.uniqueness??90)/90),f=b.map(a=>({key:a.key,label:a.label,score:a.score,gap:Math.max(0,100-a.score),effectiveGain:eS(Math.max(0,100-a.score)*(a.weight/c)*e),detail:a.detail})).sort((a,b)=>b.effectiveGain-a.effectiveGain||a.label.localeCompare(b.label,"zh-Hans-CN")),g=eS(a.target-a.overall),h=null;if(g>0){let b=[],c=0;for(let a of f)if(a.effectiveGain<=0||(b.push(a),(c=eS(c+a.effectiveGain))>=g))break;h={target:a.target,gap:g,picks:b,covered:c}}return{dimensions:f,currentWeighted:d,uniquenessFactor:e,projectedOverall:Math.min(100,Math.round(100*e)),pathToTarget:h}}(b);if(j){for(let a of(f.push("| 维度 | 当前分 | 提升空间 | 对综合分贡献 | 补强方向 |"),f.push("|---|---|---|---|---|"),j.dimensions))f.push(`| ${a.label} | ${a.score} | ${a.gap>0?`+${a.gap}`:"0(满分)"} | ${a.effectiveGain>0?`+${a.effectiveGain.toFixed(1)}`:"0"} | ${a.detail?eT(a.detail,120):"—"} |`);f.push(`- 当前加权综合分:${j.currentWeighted.toFixed(1)}/100(uniqueness 因子 ${j.uniquenessFactor.toFixed(2)})`);let a=j.projectedOverall<b.target;if(f.push(`- 预计总分上限:**${j.projectedOverall}**/100(全维补满、uniqueness 不变的理论口径${a?`;低于目标 ${b.target}——受低雷同性因子 ${j.uniquenessFactor.toFixed(2)} 约束,需同步提升 uniqueness`:""};实际以重生成/续修产物复评)`),j.pathToTarget){let{target:a,gap:b,picks:c,covered:d}=j.pathToTarget,e=c.map(a=>`${a.label}(+${a.effectiveGain.toFixed(1)})`).join(" → ");d>=b?f.push(`- 达标路径(目标 ${a}):补强 ${e},合计 +${d.toFixed(1)} ≥ 缺口 ${b.toFixed(1)}。`):f.push(`- 达标路径(目标 ${a}):补强 ${e},合计 +${d.toFixed(1)} < 缺口 ${b.toFixed(1)}——六维补满仍不足,须按上限提示先提升低雷同性(uniqueness)再复评。`)}else f.push(`- 当前已达目标 ${b.target},无需补强路径(维持口径与阻断清零即可)。`)}else f.push("- 六维构成明细缺失,无法计算下轮预估(降级不猜数;补全评级输入后自动生成)。");return f.push(""),f.join("\n")}({documentId:a.documentId,title:a.template.outputTitle,qualityReport:a.qualityBundle.qualityReport,professionalScore:a.professionalScore,exportGate:a.qualityBundle.finalExportGate,stages:a.finalStages,metrics:a.generationDiagnostics.metrics}),c=function(a,b,c){let d=function(a,b){let c=b.trim().replace(/[^A-Za-z0-9_-]/gu,"_");if(!c)throw Error("交付报告文件名缺少文档 ID");return cE().join((0,cA.Gl)(a),"reports",`${c}-review.md`)}(a,b);cC().mkdirSync(cE().dirname(d),{recursive:!0});let e=`${d}.${process.pid}.${Date.now()}.tmp`;return cC().writeFileSync(e,c,"utf8"),cC().renameSync(e,d),d}(a.projectRoot,a.documentId,b),d=a.qualityBundle.finalExportGate.blockingIssues.length;a.finalStages.push((0,q.X5)({type:"reference",roleId:"delivery-review-report",status:"success",message:`交付三件套报告已产出:${c}`,details:[a.qualityBundle.qualityReport.summary,`专业度(从属口径):${a.professionalScore.summary}`,`阻断:${d} 项${d>0?"(人工复核清单随报告归档,不阻断交付)":"(终检检测器全部通过)"}`,"下轮预估目标:按当前六维缺口计算各维提升空间与达标路径(见报告第三节)"]},{subtitle:"交付报告"}))}catch(c){let b=c instanceof Error?c.message:String(c);a.finalStages.push((0,q.X5)({type:"reference",roleId:"delivery-review-report",status:"failed",message:`交付三件套报告产出失败(不阻断交付):${b}`},{subtitle:"交付报告"}))}}let eX={prefixCacheHitRateFloor:.4,budgetDropRatioCeiling:.3,llmFailureRateCeiling:.1};async function eY(a){let b=function(a){let b=[],c=a.llm.promptCacheHitTokens??0,d=c+(a.llm.promptCacheMissTokens??0),e=d>0?c/d:null;null!==e&&e<eX.prefixCacheHitRateFloor&&b.push(`固定前缀缓存命中率 ${(100*e).toFixed(1)}% 低于 40%:固定前缀未收敛,检查 L0/L2 恒定段结构`);let f=a.llm.reasoningTokens??0;f>0&&b.push(`推理 token 累计 ${f}:disableThinking 未生效,检查模型 provider 配置`);let g=a.evidence.raw>0?a.evidence.budgetDropped/a.evidence.raw:null;null!==g&&g>eX.budgetDropRatioCeiling&&b.push(`证据预算裁剪 ${(100*g).toFixed(1)}%(${a.evidence.budgetDropped}/${a.evidence.raw}):裁剪过重,疑似预算配置失配`);let h=a.llm.calls>0?a.llm.failures/a.llm.calls:null;return null!==h&&h>eX.llmFailureRateCeiling&&b.push(`LLM 失败率 ${(100*h).toFixed(1)}%(${a.llm.failures}/${a.llm.calls}):失败率偏高,检查限流与重试策略`),{alerts:b,metrics:{prefixCacheHitRate:e,reasoningTokens:f,budgetDropRatio:g,llmFailureRate:h}}}(a.generationDiagnostics),c=process.memoryUsage(),d=Math.round(c.rss/1048576),e=Math.round(c.heapUsed/1048576),f=function(){let a=Number(process.env.DOCUMENT_MEMORY_ALERT_MB??3072);return Number.isFinite(a)&&a>0?a:3072}();console.log(`[gen] memory(finalize) rss=${d}MB heap=${e}MB threshold=${f}MB`);let g=d>=f?[...b.alerts,`进程内存 rss=${d}MB 超过告警阈值 ${f}MB:大文档生成建议 NODE_OPTIONS=--max-old-space-size=4096,并控制并发生成任务数(DOCUMENT_MAX_CONCURRENT_GENERATIONS)`]:b.alerts;a.telemetry.healthAlerts=g,0!==g.length&&a.finalStages.push((0,q.X5)({type:"validation",roleId:"document-health-diagnosis",status:"skipped",message:`自动健康诊断:${g.length} 项告警(不阻断,供配置优化参考)`,details:g},{subtitle:"健康诊断"}))}async function eZ(a){var b;(0,l.wF)();let{chapterDraftsByOrder:c,chapterGenerationStagesByOrder:d,chapterGenerationStages:e,effectiveChapters:f,input:m,failedChapterMessages:n}=a,{requirement:p}=m,q=function(a){let{signal:b,requirement:c}=a.input;return{input:a,template:a.template,effectiveChapters:a.effectiveChapters,requirement:c,signal:b,projectRoot:a.projectRoot,projectId:a.projectId,documentId:a.documentId,projectMaterialSummary:a.projectMaterialSummary,documentSpec:a.documentSpec,documentBudget:a.documentBudget,promptBindings:a.promptBindings,promptDocumentRules:a.promptDocumentRules,domainProfile:a.domainProfile,scopeConflicts:a.scopeConflicts,evaluationCriteriaItems:a.evaluationCriteriaItems,tenderRequirements:a.tenderRequirements,requirementAssignments:a.requirementAssignments,requirementsSimilarity:a.requirementsSimilarity,factTokenScopeClassifier:a.factTokenScopeClassifier,professionalDepthClassifier:a.professionalDepthClassifier,blueprintData:a.blueprintData,bidComposition:a.bidComposition,billFactLock:a.billFactLock,drawingFactLock:a.drawingFactLock,requirementSemantics:a.requirementSemantics,generationDiagnostics:a.generationDiagnostics,repairPromptTexts:a.repairPromptTexts,progressStages:a.progressStages,chapterGenerationStages:a.chapterGenerationStages,emitProgress:a.emitProgress,withProgressHeartbeat:a.withProgressHeartbeat,missingItems:a.missingItems,failedChapterMessages:a.failedChapterMessages,indexHealth:a.indexHealth,webResearchReport:a.webResearchReport,retrievalCoverageReports:a.retrievalCoverageReports,writingTaskBrief:a.writingTaskBrief,clarificationOverrides:a.clarificationOverrides,globalConsistencyIssues:a.globalConsistencyIssues,agentWorkflow:a.agentWorkflow,factExtractionPromptTexts:a.factExtractionPromptTexts,readiness:a.readiness,allEvidence:a.allEvidence,facts:{},structuredFacts:[],governedStructuredFacts:[],factsModel:void 0,chapterDrafts:[],finalChapterDrafts:[],finalMarkdown:"",validationIssues:[],baseValidationIssues:[],executionStages:[],finalGateRepairStages:[],sources:[],qualityBundle:void 0,scheduleAuthority:void 0,assemblyRateAuthority:void 0,scaleSummary:void 0,supportAuthority:void 0,laborPeakAuthority:void 0,greeningMaintenanceAuthority:void 0,surfaceFixContext:{laborPeakAuthority:void 0,greeningMaintenanceAuthority:void 0,resourceBreakdownAuthority:void 0,supportFormAuthority:void 0},decisionLockEntries:[],finalStages:[],reviewChecklist:[],telemetry:void 0,professionalScore:void 0,templatingReview:{issues:[],reviewed:!1},assets:[],validation:void 0,rebuildFinalMarkdown:()=>"",recomputeFinalValidationBundle:async()=>void 0}}(a),s=c.filter(a=>!!a);q.chapterDrafts=s,e.push(...d.filter(a=>!!a));let t=0===(b={chapterDraftCount:s.length,failedChapterMessages:n}).chapterDraftCount?`章节生成未完成:${b.failedChapterMessages.join(";")||"没有生成任何有效章节"}`:null;if(t)throw Error(t);await r(q),await c9(q),function(a){let b=(0,o.dW)(a.chapterDrafts);b.insertedIn&&(a.chapterDrafts=b.chapters,a.generationDiagnostics.llm.lastInfo=`安全目标承诺句兜底:${b.insertedIn}(写作侧未写出安全目标,按投标人承诺口径补入)`);let c=(0,P._C)(a.bidComposition),d=(0,P.kO)(a.bidComposition),e=a.bidComposition?.formatRules.cover==="forbidden",f=(0,O.rs)((0,O.V3)({templateId:a.template.id,templateName:a.template.name,title:a.template.outputTitle,requirement:a.requirement||"",projectRoot:a.projectRoot,projectId:a.projectId,exportSettings:a.template.exportSettings,generationSettings:a.template.generationSettings,facts:a.facts,structuredFacts:a.structuredFacts,factsModel:a.factsModel,chapters:a.chapterDrafts,sources:a.sources,missingItems:[...new Set(a.missingItems)],validation:a.validation,validationIssues:a.validationIssues,executionStages:a.executionStages,exportGate:{passed:!1,blockingIssues:[],checklist:[]},assets:a.assets,partialChapters:a.chapterDrafts.map(b=>({id:b.id,title:b.title,chars:(0,h.V7)(b.content),status:(0,k.DR)(b,a.documentBudget.chapterTargets.get(b.id)),updatedAt:Date.now()})),checkpointChapters:a.chapterDrafts,generatedAt:Date.now()},{forbidDrawingImages:d,promptRules:a.promptDocumentRules,bodyTableForbidden:c,coverForbidden:e}),a.chapterDrafts,{forbidDrawingImages:d,promptRules:a.promptDocumentRules,bodyTableForbidden:c,coverForbidden:e});a.finalChapterDrafts=f.chapters.map(b=>{let c=a.effectiveChapters.find(a=>a.id===b.id)||b;return{...b,sections:b.sections||[],content:(0,k.w_)(b.content,c)}}),a.finalMarkdown=(0,O.rs)((0,O.V3)({templateId:a.template.id,templateName:a.template.name,title:a.template.outputTitle,requirement:a.requirement||"",projectRoot:a.projectRoot,projectId:a.projectId,exportSettings:a.template.exportSettings,generationSettings:a.template.generationSettings,facts:a.facts,structuredFacts:a.structuredFacts,factsModel:a.factsModel,chapters:a.finalChapterDrafts,sources:a.sources,missingItems:[...new Set(a.missingItems)],validation:a.validation,validationIssues:a.validationIssues,executionStages:a.executionStages,exportGate:{passed:!1,blockingIssues:[],checklist:[]},assets:a.assets,partialChapters:[],checkpointChapters:a.finalChapterDrafts,generatedAt:Date.now()},{forbidDrawingImages:d,promptRules:a.promptDocumentRules,bodyTableForbidden:c,coverForbidden:e}),a.finalChapterDrafts,{forbidDrawingImages:d,promptRules:a.promptDocumentRules,bodyTableForbidden:c,coverForbidden:e}).markdown,a.finalMarkdown=(0,o._D)((0,k.Ht)((0,O.bR)((0,k.Xr)((0,O.kT)((0,O.K7)(c4((0,k.jO)(a.finalMarkdown,a.structuredFacts,{bodyTableForbidden:c}),a.projectMaterialSummary))))))).markdown,c||(a.finalMarkdown=(0,bV.TG)((0,bV.lj)(a.finalMarkdown)),a.finalMarkdown=(0,bV.Vp)((0,bV.n3)(a.finalMarkdown,da(a),{substituteTable:b=>cs(a.blueprintData,b)}).markdown)),a.finalMarkdown=(0,Q.u7)(a.finalMarkdown,{plan:a.bidComposition?.appendixPlan||[],blueprintData:a.blueprintData})}(q),await dc(q),await dd(q),await dG(q),await dH(q),await dJ(q),await ag(q),await d7(q),await ei(q),await ev(q),await ex(q),await ez(q),await eb(q),await eD(q),await eh(q),await eE(q),await eF(q),await eG(q),await eH(q),await eI(q),await eJ(q),await ee(q),await ec(q),await ed(q),await ea(q),await eK(q),await eL(q),await eM(q),await eN(q),await ef(q);{let a=function(a){let b=by(a.finalMarkdown);if(0===b.usedNotDeclared.length)return{inserted:0,labels:[]};let c=a.finalChapterDrafts.findIndex(a=>(0,R.UO)(a.content).length>0);if(c<0)return{inserted:0,labels:[]};let d=a.finalChapterDrafts[c],e=(0,R.H4)(d.content),f=b.usedNotDeclared.filter(a=>!dT(e,a));if(0===f.length)return{inserted:0,labels:[]};let g=dV(d.content,f.map(b=>dU(b,a.finalMarkdown)));return g?(a.finalChapterDrafts[c]={...d,content:g},{inserted:f.length,labels:f.map(bz)}):{inserted:0,labels:[]}}(q);a.inserted>0&&(q.finalMarkdown=q.rebuildFinalMarkdown(),await q.recomputeFinalValidationBundle(),q.generationDiagnostics.llm.lastInfo=`链尾编制依据回补:${a.inserted} 条引用未声明的标准补入编制依据小节(${a.labels.slice(0,6).join("、")})`)}await eW(q),await eY(q);let u=q.finalChapterDrafts.map(a=>({...a,evidence:(0,g.QR)(a.evidence||[],{preservePinned:!0})}));return q.finalChapterDrafts=u,{templateId:q.template.id,templateName:q.template.name,title:q.template.outputTitle,requirement:p||"",projectRoot:q.projectRoot,projectId:q.projectId,exportSettings:q.template.exportSettings,generationSettings:q.template.generationSettings,facts:q.facts,structuredFacts:q.structuredFacts,factsModel:q.factsModel,chapters:u,sources:q.sources,missingItems:[...new Set(q.missingItems)],validation:q.validation,validationIssues:q.validationIssues,exportGate:q.qualityBundle.finalExportGate,executionStages:q.finalStages,assets:q.assets,partialChapters:q.finalChapterDrafts.map(a=>({id:a.id,title:a.title,chars:(0,h.V7)(a.content),status:(0,k.DR)(a,q.documentBudget.chapterTargets.get(a.id)),updatedAt:Date.now()})),checkpointChapters:u,promptRules:q.promptDocumentRules,agentWorkflow:q.agentWorkflow,reviewMetadata:{chapterSummaries:[],globalIssues:[],diagnostics:q.generationDiagnostics,profile:function(a){let b=`${a.template.name} ${a.template.outputTitle||""} ${a.requirement||""} ${a.chapters.map(a=>a.title).join(" ")}`,c=[{pattern:/专项施工|危大|专项方案/u,type:"专项施工方案",dimensions:["专项对象边界","工艺参数","风险控制","验收要求","应急措施"]},{pattern:/投标|技术标|响应|招标/u,type:"投标技术方案",dimensions:["招标响应","技术优势","工期质量安全承诺","资源保障","履约可实施性"]},{pattern:/监理|旁站|巡视|平行检验/u,type:"监理规划/细则",dimensions:["监理目标","旁站巡视","平行检验","验收程序","资料签认"]},{pattern:/可研|可行性|项目建议书|投资估算/u,type:"可研/项目建议类文档",dimensions:["建设必要性","方案比选","投资估算","风险分析","实施效益"]},{pattern:/运维|维护|保养|巡检/u,type:"运维维护方案",dimensions:["巡检频次","维护流程","故障响应","备品备件","记录闭环"]}].find(a=>a.pattern.test(b));return{type:c?.type||"施工组织设计/施工技术方案",dimensions:c?.dimensions||["工程概况","施工部署","进度质量安全","资源配置","施工工艺和验收闭环"],requiredEvidencePolicy:"本地知识库为完整事实源;系统暂未确认的事实必须通过扩大检索、事实补抽或落位修复解决,不得归因为用户资料缺失。"}}({template:q.template,chapters:f,requirement:p}),knowledgeCoverage:q.qualityBundle.knowledgeCoverage,factTraces:q.qualityBundle.factTraces,chapterCoverage:q.qualityBundle.chapterCoverage,retrievalCoverage:q.retrievalCoverageReports,qualityReport:q.qualityBundle.qualityReport,repairStrategies:q.qualityBundle.repairStrategies,reviewChecklist:q.reviewChecklist,professionalScore:q.professionalScore,templatingReviewIssues:q.templatingReview.issues,authorityAudit:q.authorityAuditReport,suspensionChecklist:q.suspensionChecklist??(q.qualityBundle.finalExportGate.passed?void 0:(0,i.aF)(q.qualityBundle.finalExportGate.blockingIssues,q.finalChapterDrafts)),writingTaskBrief:q.writingTaskBrief,workflowVersion:j.x,telemetry:q.telemetry},generatedAt:Date.now(),markdown:q.finalMarkdown,bidComposition:q.bidComposition}}var e$=c(71678),e_=c(29055),e0=c(30111);let e1=[{id:"overview",title:"工程概况与总体理解",requiredSectionPatterns:[/编制依据|编制说明/u,/工程概况|项目概况|基本概况/u,/现场踏勘|施工条件|现场条件/u],chapterPatterns:[/概况|总体|理解|说明|编制|项目/u],remedy:"应设置工程概况章节,包含编制依据、工程基本概况、现场条件与总体理解。",level:"required"},{id:"major-content",title:"项目主要施工内容",requiredSectionPatterns:[/主要施工内容|主要施工项目|施工内容/u],chapterPatterns:[/概况|总体|理解|主要施工|工程/u],remedy:'必须包含"项目主要施工内容"小节,按工作包展开施工概况、施工流程、施工方法。',level:"required"},{id:"key-difficulty",title:"重难点分析与对策",requiredSectionPatterns:[/重点.*难点|难点.*对策|重难点/u],chapterPatterns:[/概况|总体|理解|重点|难点|施工/u],remedy:"应设置项目特点、重点、难点分析小节,并逐项给出应对措施与责任闭环。",level:"required"},{id:"deployment",title:"施工部署与施工组织",requiredSectionPatterns:[/施工部署|总体部署|流水|施工顺序|施工区段/u],chapterPatterns:[/部署|组织|总体|方案/u],remedy:"应设置施工部署小节,明确流水段划分、施工顺序与资源调配。",level:"required"},{id:"schedule",title:"进度计划与工期保障",requiredSectionPatterns:[/进度计划|工期|节点/u],chapterPatterns:[/进度|工期|计划|保障/u],remedy:"应设置进度计划与工期保障小节,含总进度计划、关键节点与纠偏措施。",level:"required"},{id:"quality",title:"质量保证体系与措施",requiredSectionPatterns:[/质量/u],chapterPatterns:[/质量|验收|保障|措施/u],remedy:"应设置质量保证体系与措施小节,含质量目标、三检、隐蔽验收、通病防治。",level:"required"},{id:"safety",title:"安全文明施工与危大工程管控",requiredSectionPatterns:[/安全/u,/危大工程|危大/u],chapterPatterns:[/安全|文明|风险|危大|保障|措施/u],remedy:"应设置安全管理与危大工程管控小节,含危险源辨识、危大清单、专项方案。",level:"required"},{id:"resources",title:"劳动力材料机械设备配置",requiredSectionPatterns:[/劳动力|机械设备|材料.*计划|资源配置|人材机/u],chapterPatterns:[/资源|劳动力|机械|材料|设备|计划/u],remedy:"应设置资源配置小节,含分阶段劳动力、机械设备投入与材料进场计划。",level:"required"},{id:"environment",title:"绿色文明施工与环保措施",requiredSectionPatterns:[/文明施工|扬尘|噪声|绿色|环保|四节/u],chapterPatterns:[/文明|绿色|环保|扬尘|噪声|保障|措施/u],remedy:"应设置文明施工与绿色施工小节,含扬尘噪声管控与四节一环保措施。",level:"required"},{id:"emergency",title:"应急管理体系",requiredSectionPatterns:[/应急/u],chapterPatterns:[/应急|安全|保障|措施/u],remedy:"应设置应急管理小节,含应急组织、物资储备与专项预案。",level:"recommended"}],e2={building:[{id:"key-difficulty",title:"危大工程专项管控(房建)",requiredSectionPatterns:[/深基坑|高支模|起重吊装|脚手架/u],chapterPatterns:[/危大|安全|专项/u],remedy:"房建项目应对深基坑、高支模、起重吊装、脚手架等危大工程逐项给出专项方案与安全管理措施。",level:"recommended"}],municipal:[{id:"key-difficulty",title:"交通导改与管线保护(市政)",requiredSectionPatterns:[/交通导改|交通导行|占道施工/u,/管线保护|管线探测/u],chapterPatterns:[/交通|管线|安全|专项|保障/u],remedy:"市政项目应设置交通导改与既有管线保护专项内容。",level:"recommended"}],renovation:[{id:"key-difficulty",title:"居民协调与既有保护(改造)",requiredSectionPatterns:[/居民|扰民|既有.*保护|不中断/u],chapterPatterns:[/居民|协调|保护|保障|专项/u],remedy:"改造项目应设置居民沟通协调与既有设施保护专项内容。",level:"recommended"}],decoration:[{id:"key-difficulty",title:"成品保护与交叉施工(装饰)",requiredSectionPatterns:[/成品保护/u,/交叉施工|工序穿插/u],chapterPatterns:[/成品保护|交叉|协调|保障|专项/u],remedy:"装饰项目应设置成品保护与交叉施工工序优化专项内容。",level:"recommended"}]};function e3(a){return(0,bg.GQ)(a).replace(/\s+/gu,"").toLowerCase()}function e4(a){return e3(`${a.title} ${(a.sections||[]).join(" ")}`).slice(0,800)}function e5(a){var b;let c,d=(b=a.chapters,[...e1].map(a=>{let c=[],d=new Set;for(let e of b){let b=e3(`${e.title} ${(e.sections||[]).join(" ")}`);for(let f of a.requiredSectionPatterns)f.test(b)&&!d.has(f)&&(d.add(f),c.push(e.title))}let e=[...new Set(c)],f=a.requiredSectionPatterns.filter(a=>!d.has(a)).map(a=>(function(a){let b=a.source.replace(/[\\/^$.*+?()[\]{}]/gu,"").replace(/u$/u,"");return b.split("|").map(a=>a.trim()).find(Boolean)||b})(a)),g=d.size===a.requiredSectionPatterns.length?e.length>1?"fragmented":"satisfied":"missing";return{groupId:a.id,groupTitle:a.title,level:a.level,status:g,carrierChapters:e,missingSections:f,remedy:a.remedy}})),e=[],f=d.filter(a=>"required"===a.level&&"missing"===a.status);for(let a of f)e.push({level:"error",severity:"blocker",message:`评标结构缺失:${a.groupTitle}(缺少:${a.missingSections.join("、")})`,suggestion:a.remedy});for(let a of d.filter(a=>"fragmented"===a.status))e.push({level:"warning",severity:"warning",message:`${a.groupTitle} 小节散落在 ${a.carrierChapters.length} 个章节(${a.carrierChapters.join("、")}),结构可能失真`,suggestion:"建议将同类内容集中到一个承载章节,避免章节间职责重叠。"});for(let b of a.chapters){let a=(b.sections||[]).length;a>18&&e.push({level:"warning",severity:"warning",message:`${b.title} 规划小节 ${a} 个,超过 18 个上限,易产生内容膨胀与重复`,suggestion:"合并语义相近的小节,或将细分内容下移为三级小节而非二级小节。"})}let g=a.chapters.map(a=>({...a,sections:[...a.sections||[]]})),h=new Set;for(let a of f){let b=e1.find(b=>b.id===a.groupId);if(!b)continue;let c=g.findIndex(a=>{let c=e3(a.title);return b.chapterPatterns.some(a=>a.test(c))&&!/雨季|冬季|高温|防汛|扬尘|噪声|工资|劳务|实名|应急|BIM|智慧|管线/u.test(c)}),d=g[c>=0?c:0];for(let c of a.missingSections.filter(a=>!h.has(a))){h.add(c);let a=!function(a){let b=(0,bg.GQ)(a).replace(/\s+/gu,"");return b.length>0&&b.length<=3&&/^[\u4e00-\u9fa5]+$/u.test(b)}(c)?c:b.title;!(0,e$.xb)(a)&&(d.sections.some(b=>e3(b).includes(e3(a))||e3(a).includes(e3(b)))||d.sections.push(a))}}let i=/^(?:确保\s*)?([人材机])(?:员|力|料|械|工)?\s*的保障体系与措施$/u;for(let a of g){if(!/人[、,,]材[、,,]机/u.test(a.title))continue;let b=new Set,c=[];for(let d of a.sections){if(e3(d)===e3(a.title))continue;let e=i.exec(d.trim());e?b.has(e[1])||(b.add(e[1]),c.push(d.trim())):c.push(d)}for(let a of["人","材","机"])b.has(a)||c.push(`确保${a}的保障体系与措施`);c.length!==a.sections.length&&(a.sections=c)}if(a.evaluationItems?.length){let b=a.chapters.map(e4);for(let{item:d}of(c=function(a,b,c){let d=[],e=a.map(e4);for(let a of b){let b=a.title;if(!b||e.some(a=>(function(a,b){let c=e3(b);return!!c&&(a.includes(c)||c.includes(a.slice(0,40)))})(a,b)))continue;let f=0;if(c?.semanticSimilarity)for(let a of e)f=Math.max(f,c.semanticSimilarity(b,a));f>=.6||d.push({item:a,title:b,bestSimilarity:c?.semanticSimilarity?f:void 0})}return{items:b,uncovered:d}}(a.chapters,a.evaluationItems,{semanticSimilarity:a.semanticSimilarity})).uncovered){let c=d.title;if(!c||(0,bg.Fe)(c)||(0,bg.ob)(c)||(0,e$.xb)(c))continue;let f=b.reduce((b,d,e)=>{let f=a.semanticSimilarity?a.semanticSimilarity(c,d):+!!d.includes(e3(c));return f>b.score?{index:e,score:f}:b},{index:-1,score:-1}).index,h=g[f>=0?f:0];h.sections.some(a=>e3(a).includes(e3(c))||e3(c).includes(e3(a)))||(h.sections.push(c),h.purpose=`${h.purpose||""};系统已按招标文件技术评审条目自动补足小节“${c}”,必须基于项目资料与适用技术展开实质内容。`,e.push({level:"warning",severity:"warning",message:`评分标准条目“${c}”无承接章节,已自动补小节“${c}”至“${h.title}”`,suggestion:"请确认补充小节与招标文件评审条目口径一致。"}))}}for(let b of(0,e_.y)(a))if("general"!==b)for(let a of e2[b]){let b=e3(g.map(a=>`${a.title} ${(a.sections||[]).join(" ")}`).join(" "));if(a.requiredSectionPatterns.some(a=>a.test(b)))continue;let c=g.findIndex(b=>{let c=e3(b.title);return a.chapterPatterns.some(a=>a.test(c))}),d=g[c>=0?c:0];(0,e$.xb)(a.title)||d.sections.push(a.title)}return{diagnostics:d,issues:e,enrichedChapters:g,criteriaAudit:c}}function e6(a){return a.replace(/\s+/gu,"").toLowerCase()}var e7=c(81892),e8=c(30355),e9=c(2773),fa=c(38115),fb=c(31129);async function fc(a){a.planning.generationDiagnostics.metrics.push({name:"phase:plan",startedAt:a.planning.planPhaseStartedAt,endedAt:Date.now(),durationMs:Date.now()-a.planning.planPhaseStartedAt}),a.chapterLoop.draftPhaseStartedAt=Date.now();let b=(0,s.UO)(a.blueprint.billFactLock,a.planning.effectiveChapters);for(let c=0;c<a.planning.effectiveChapters.length;c+=a.blueprint.chapterConcurrency){let d=a.planning.effectiveChapters.slice(c,c+a.blueprint.chapterConcurrency);for(let g of(await Promise.all(d.map(async(d,g)=>{let i,j=c+g;(0,e.Te)(a.global.input.signal);let l=a.understanding.rolePoolRisk??ch({totalChunks:0,loadedChunks:0,vectorReady:void 0}),r=a.blueprint.blueprintActive?{missing:[],failedChecks:[]}:(0,p.RT)(d.title,a.blueprint.integratedBlueprint?.validation,a.planning.chapterIntentClassifier);if(r.missing.length>0){let b=r.failedChecks.length>0?`蓝图校验项「${r.failedChecks.join("、")}」未通过`:"蓝图校验未通过或构建异常",c=`${(0,bg.GQ)(d.title)} 依赖蓝图权威 [${r.missing.join("、")}],${b},已按节点级把关阻断生成`,e=(0,q.X5)({type:"chapter_generation",roleId:"chapter_generation",status:"failed",message:c,details:["数值密集型章所需蓝图权威不可用时禁止无权威成稿","请检查清单解析与蓝图构建诊断后重试"],progress:{current:j+1,total:a.planning.effectiveChapters.length,label:"章节阻断"}},{subtitle:(0,bg.GQ)(d.title),order:j});a.global.progressStages.push(e),a.understanding.failedChapterMessages.push(c),a.understanding.chapterGenerationStagesByOrder[j]=e,a.global.emitProgress();return}let t=Date.now(),u=a.global.progressStages.length;try{let c,g,v;a.global.progressStages.push((0,q.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:a.prepare.promptPlan.writerPrompts[0]?.id,status:"running",message:`${(0,bg.GQ)(d.title)} 正在检索证据并准备章节内容`,details:[`章节序号:${j+1}/${a.planning.effectiveChapters.length}`,`二级小节:${d.sections?.length||0} 个`,"正在生成检索查询"],progress:{current:j+1,total:a.planning.effectiveChapters.length,label:"章节生成"}},{subtitle:(0,bg.GQ)(d.title),order:j})),a.global.emitProgress();let w=a.global.input.resumeChapters?.find(a=>a.id===d.id||a.title===d.title),x=w?.content?.trim(),B=w?.evidence?.length?[...w.evidence]:[],C=a.prepare.projectUnderstanding.chapterPlans.find(a=>a.chapterId===d.id||a.chapterTitle===d.title),D=C?Object.values(C.evidenceQueries).flat().filter(Boolean):[],E=d.queries.length>0?d.queries:[a.prepare.template.name,a.prepare.template.outputTitle,d.title],F=a.understanding.chapterGraphMap.get(d.id);if(a.understanding.projectGraph&&F&&F.graphFiles.size>0)for(let b of[...F.graphFiles]){let c=a.understanding.getCachedFileDetail(b);if(c?.chunks?.length)for(let e of c.chunks)B.push({chapterId:d.id,filePath:c.file?.relativePath||b,score:5+(F.graphWorks.length+F.graphMethods.length)*.5,content:e.content,roleId:a.understanding.fileRoleByPath.get(b),processingType:a.understanding.fileProcessingByPath.get(b),sectionTitle:e.sectionTitle,source:"graph-evidence"})}let G=a.planning.chapterIntentClassifier.needsBasicFacts(d.title),H=a.blueprint.billFactLock?(0,s.Zc)(a.blueprint.billFactLock,d.title,d.sections||[]):[],I=(0,k.QP)(d,[...E,...D,...H],[]),J=Date.now();a.global.progressStages[u]=(0,q.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:a.prepare.promptPlan.writerPrompts[0]?.id,status:"running",message:`${(0,bg.GQ)(d.title)} 正在执行质量优先的章节检索${F?.graphFiles.size?`(图谱匹配 ${F.graphFiles.size} 个文件)`:""}`,details:I.map(a=>`检索:${a.slice(0,42)}`),progress:{current:j+1,total:a.planning.effectiveChapters.length,label:"证据检索"}},{subtitle:(0,bg.GQ)(d.title),order:j}),a.global.emitProgress();let K=x?[]:[...a.understanding.availableEvidenceScopePaths].filter(Boolean).sort(),L=x?[]:a.understanding.scopedIntelligence?.evidenceByChapterId?.[d.id]||[];if(L.length>0){B.push(...L);let b=a.planning.generationDiagnostics.evidence;b.intentEvidenceInjected=(b.intentEvidenceInjected??0)+L.length}let M=[],N=(d.requiredFacts||[]).filter(a=>!!a&&!I.some(b=>b.includes(a)||a.includes(b))).map(a=>`${d.title} ${a}`),Q=(a.prepare.requirementSemantics?.factClues||[]).filter(a=>!I.some(b=>b.includes(a)||a.includes(b))&&!N.some(b=>b.includes(a)||a.includes(b))).map(a=>`${d.title} ${a}`.trim()).slice(0,8),S=[...I,...N,...Q];if(K.length>0&&S.length>0){(0,e.Te)(a.global.input.signal);let b=await (0,e.l$)(S,async b=>a.understanding.searchWithCache(b,K,Math.min(a.understanding.requestedEvidencePerChapter,12),d.title,a.prepare.materialScope.selectedMaterialRoots),{kind:"search"});M.push(...b)}for(let b of(a.planning.generationDiagnostics.evidence.searchQueries+=S.length,a.planning.generationDiagnostics.evidence.searchMs+=Date.now()-J,a.global.progressStages[u]=(0,q.X5)({type:"chapter_generation",roleId:"chapter_generation",status:"running",message:`${(0,bg.GQ)(d.title)} KB 检索完成:${S.length} 组查询,准备深度召回与语义排序`,progress:{current:j+1,total:a.planning.effectiveChapters.length,label:"证据检索"}},{subtitle:(0,bg.GQ)(d.title),order:j}),a.global.emitProgress(),M)){B.push(...b.map(b=>({chapterId:d.id,filePath:b.filePath,score:b.score,content:b.content,roleId:a.understanding.fileRoleByPath.get(b.filePath),processingType:a.understanding.fileProcessingByPath.get(b.filePath),sectionTitle:b.sectionTitle,source:b.source})));let c=a.planning.generationDiagnostics.evidence;c.retrievedEvidenceInjected=(c.retrievedEvidenceInjected??0)+b.length}G&&K.length>0&&a.blueprint.basicFactSearchResults.length>0&&B.push(...a.blueprint.basicFactSearchResults.map(b=>({chapterId:d.id,filePath:b.filePath,score:b.score,content:b.content,roleId:a.understanding.fileRoleByPath.get(b.filePath),processingType:a.understanding.fileProcessingByPath.get(b.filePath),sectionTitle:b.sectionTitle,source:"basic-fact-cache"})));let U=x?[]:await (0,e9.$b)({manager:a.understanding.manager,projectRoot:a.prepare.projectRoot,chapter:d,plan:C,profile:a.prepare.projectMaterialProfile,scopedFilePaths:K,scopedMaterialRoots:a.prepare.materialScope.selectedMaterialRoots,limitPerQuery:Math.min(a.understanding.requestedEvidencePerChapter,10),signal:a.global.input.signal}).catch(b=>(a.planning.generationDiagnostics.evidence.retrievalFailures=(a.planning.generationDiagnostics.evidence.retrievalFailures??0)+1,a.planning.generationDiagnostics.llm.lastError=`计划材料证据召回失败(${d.title}):${b instanceof Error?b.message:String(b)}`,console.error(`[gen] 计划材料证据召回失败(${d.title})`,b),[]));B.push(...U);let W=[];a.planning.chapterIntentClassifier.needsBasicFacts(d.title)&&B.push(...a.understanding.safeProjectBasicEvidence.map(a=>({...a,chapterId:d.id,source:"pinned-evidence"})));let X=a.understanding.writerEvidence.filter(a=>/招标|投标须知|评标办法|专用合同条款|投标人须知/u.test(`${a.filePath||""}${a.sectionTitle||""}`));/概况|工程|项目|总体|部署/u.test(d.title)&&X.length>0&&B.push(...X.map(a=>({...a,chapterId:d.id,source:"pinned-evidence"})));let Y=a.prepare.materialScope.selectedMaterialRoots[0]||"";for(let b of(d.pinnedEvidenceFilePaths||[]).filter(Boolean)){let c=b.replace(/\\/gu,"/").replace(/^\.\//u,"").replace(/^\/+/u,""),e=Y&&c!==Y&&!c.startsWith(`${Y}/`)?`${Y}/${c}`:c,f=a.understanding.getCachedFileDetail(e);if(!f){let c=a.planning.generationDiagnostics?.evidence;c&&(c.pinnedEvidenceMissed=(c.pinnedEvidenceMissed??0)+1),console.warn("[stage-chapter-loop] pinned 证据文件未命中知识库(配置漂移或文件未入库)",{chapter:d.title,pinnedPath:b,resolvedPath:e});continue}B.push(...f.chunks.map(b=>({chapterId:d.id,filePath:f.file.relativePath,score:1,content:b.content,roleId:a.understanding.fileRoleByPath.get(f.file.relativePath),processingType:a.understanding.fileProcessingByPath.get(f.file.relativePath),sectionTitle:b.sectionTitle,source:"pinned-evidence"})))}let Z=B;if(!x&&a.prepare.webAccessConfig.enabled&&a.prepare.webAccessConfig.allowProjectFacts){let b=await at({config:a.prepare.webAccessConfig,chapterId:d.id,chapterTitle:d.title,sectionTitles:d.sections||[],runtimeRules:a.prepare.runtimePromptRules,localFacts:[...a.understanding.preliminaryFactsModel.project,...a.understanding.preliminaryFactsModel.schedule,...a.understanding.preliminaryFactsModel.quality,...a.understanding.preliminaryFactsModel.safety,...a.understanding.preliminaryFactsModel.resources,...a.understanding.preliminaryFactsModel.preciseFacts],signal:a.global.input.signal});a.understanding.webResearchReport.queries.push(...b.queries),a.understanding.webResearchReport.filteredCount+=b.filtered+b.evidence.length,b.failedQueries>0&&(a.understanding.webResearchReport.failedCount=(a.understanding.webResearchReport.failedCount??0)+b.failedQueries,a.planning.generationDiagnostics.llm.lastError=`联网检索失败 ${b.failedQueries} 次(${d.title}):${b.failures.slice(0,3).join(";")}`)}let $=x?[]:(0,e9.SK)({project:a.understanding.project,chapter:d,plan:C,profile:a.prepare.projectMaterialProfile,scopedFilePaths:K,highRisk:l.highRisk});$.length>0&&Z.push(...$),a.understanding.excludedEvidenceKeys.size>0&&(Z=Z.filter(b=>!a.understanding.excludedEvidenceKeys.has((0,e$.hM)(b))));let _=(()=>{let a=Number(process.env.DOCUMENT_SEMANTIC_TOP_CANDIDATES);return Number.isFinite(a)&&a>0?Math.floor(a):3e3})(),aa=(0,k.Mz)(d,Z,_),ab=await (0,aB.Mv)([e4(d)],aa.map(k.t7)),ac=(0,k.UG)(d,Z,{preservePinned:!0,semantic:{similarity:ab,queryText:e4(d)}},a.planning.generationDiagnostics);ac=(0,n.pm)(ac,a.understanding.canonicalFacts.scopeConflicts);let ad=d.requiredFacts.filter(a=>!ac.some(b=>(0,cf.Lk)(b,a))),ae=0,af=(0,P.kO)(a.understanding.bidComposition),ag=F?[F.graphWorks.length?`图谱识别本章工程内容:${F.graphWorks.join("、")}`:"",F.graphMethods.length?`图谱识别本章施工方法:${F.graphMethods.join("、")}`:"",F.graphBoqItems.length?`图谱识别本章BOQ清单项(${F.graphBoqItems.length}项):${F.graphBoqItems.map(a=>`${a.name} ${a.quantity}${a.unit}`).join("、")}`:"",F.gaps.length?`图谱识别本章资料缺口:${F.gaps.join(";")}`:""].filter(Boolean).join("\n"):"",ah=(0,n.Bf)(a.understanding.canonicalFacts.scopeConflicts),ai=(()=>{if(0===a.blueprint.requirementAssignments.length)return"";let b=(0,aC.NT)(d.title),c=a.blueprint.requirementAssignments.filter(a=>a.chapterTitle===b).map(a=>a.entry);return(0,aC.HF)(c)})(),aj=(()=>{if(0===a.blueprint.structureAssignments.length)return"";let b=(0,aC.NT)(d.title),c=a.blueprint.structureAssignments.filter(a=>a.chapterTitle===b).map(a=>a.requirement);return(0,aC.FR)(c,{bodyTableForbidden:(0,P._C)(a.understanding.bidComposition),bodyFigureForbidden:af})})(),ak=a.planning.chapterIntentClassifier.needsDustControl(d.title)||a.planning.chapterIntentClassifier.needsDustControl(`${d.title}${d.purpose||""}`)?"【扬尘治理六个百分百——规范固定条目,必须逐项落实并写入正文,每项一句具体措施,六项不得缺项;若本项目无拆迁工程,对“拆迁工地100%湿法作业”必须显性写明“本项目无拆迁工程,不涉及拆迁工地湿法作业”,不得省略】\n- 施工工地周边100%围挡\n- 物料堆放100%覆盖\n- 出入车辆100%冲洗\n- 施工现场地面100%硬化\n- 拆迁工地100%湿法作业\n- 渣土车辆100%密闭运输":"",al=(d.sections||[]).filter(a=>!/^(?:施工概况|施工流程|施工方法)$/u.test(a.trim())&&!/^附录/u.test(a.trim())),am=al.length>0?`【必须输出以下规划小节为三级标题(### 小节名),逐个小节展开正式正文:每小节正文不少于 100 字,不得只写标题、不得空小节、不得用表格替代正文;小节名与章标题相同或相近也必须输出,不得省略或合并】${al.join("、")}`:"",an=a.blueprint.billFactLock?(0,s.uD)(a.blueprint.billFactLock,d.title,{sections:d.sections||[]}):"",ao=a.blueprint.billFactLock?(0,s.zK)(a.blueprint.billFactLock,b,d.title):[],ap=a.blueprint.drawingFactLock?(0,bW.pH)(a.blueprint.drawingFactLock,d.title,{sections:d.sections||[]}):"",aq=function(a,b,c={}){let d=function(a,b,c={}){let{usable:d}=y(a);if(0===d.length)return[];let e=z(b,c.sections||[]);return 0===e.length?[]:d.map(a=>({fact:a,score:A(a,e)})).filter(a=>a.score>0).sort((a,b)=>b.score-a.score||String(a.fact.key).localeCompare(String(b.fact.key),"zh")||String(a.fact.value).localeCompare(String(b.fact.value),"zh")).map(a=>a.fact)}(a,b,c);if(0===d.length)return[];let e=Math.max(1,c.maxChars??3600),f=[],g=0;for(let a of d){let b=a.fieldName&&a.fieldName!==a.key?`(${a.fieldName})`:"",c=`- ${a.key}${b}:${String(a.value).slice(0,80)}`;if(g+c.length+1>e)break;f.push(c),g+=c.length+1}let h=d.slice(f.length);return 0===f.length?[]:[`【本章可靠参数清单(资料事实链参数索引:${d.length} 项与本章相关的规格/参数/数量/时间/比例/标准编号,须逐项在正文对应位置自然写入,保持原值原形态(数字、单位、编号中的连字符与年份不得改写、拆分或省略);商务金额/单价/税率/预留金类数据一律不得写入正文)】`,...f,...h.length>0?[`- 另需落位(仅列名,共${h.length}项,须同样逐项写入正文):${h.map(a=>String(a.key)).join("、")}`]:[]]}(a.understanding.preliminaryFactsModel,d.title,{sections:d.sections||[]}),ar=function(a,b){let c=b.indexOf(a),d=(a,b)=>`${(0,bg.tb)(a,b.title)}${b.sections?.length?`(小节:${b.sections.join("、")})`:""}`,e=b.map((a,b)=>({item:a,index:b})).filter(b=>b.item!==a);return["【跨章写作职责分工——只就本章主题展开,写时即不产生跨章重复】",`- 本章职责:${d(c>=0?c:0,a)}`,...e.length>0?["- 其他章节职责(不得展开复述其主题内容):",...e.map(a=>` - ${d(a.index,a.item)}`)]:[],"- 写作规范:只就本章主题展开;其他章节主题的内容如需关联,一句话引用(“详见第X章”,X 替换为实际章号),不得展开复述;篇幅以本节合同字数为准,不得借写其他章节主题充数。"].join("\n")}(d,a.planning.effectiveChapters),as=/施工方法|施工方案|施工工艺|主要施工内容|分部分项/u.test(d.title)?(()=>{let b=(0,V.Hp)((0,V.v7)(a.understanding.preliminaryFactsModel));return b?`【本章必须覆盖的清单分部分项全景(下列专有分项逐项写入正文施工方法,不得只写道路/铺装/绿化等大类而遗漏清单独有分项)】
|
|
229
229
|
${b}`:""})():"",au=(0,e7.uQ)(d.title),av=[au?`【本章写作重点】${au.goal}
|
|
230
230
|
【本章必须覆盖(逐项落位,缺一即判未响应)】
|
|
@@ -245,7 +245,7 @@ ${a.requirementSummary.map(a=>`- ${a}`).join("\n")}`:"",a.boqCoverageSummary?.tr
|
|
|
245
245
|
${a.boqCoverageSummary.trim()}`:"",`各章规划表格清单:
|
|
246
246
|
${c}`,"请将“专业领域明显不符本标段工程类型”的表格列入 outOfScope(title 必须与上方表名逐字一致);剔除前先逐一做语义关联检索(上下位/同义/配套的材料与工艺),能关联到判据中任一条目的表不得剔除;全部属于本标段范围时输出空数组。",'JSON 格式:{"outOfScope":[{"chapterTitle":"所属章标题","title":"表名","reason":"不超过30字理由"}]}'].filter(Boolean).join("\n\n"),{maxTokens:1e3,temperature:0,signal:a.signal});if(!d)return{removed:[],skipped:"LLM 调用失败(保留原规划)"};let e=[];for(let a of d.outOfScope||[]){let c=(0,bg.nz)(String(a?.title||""));if(!c)continue;let d=b.find(a=>(0,bg.nz)(a.title)===c)||b.find(a=>(0,dp.kw)(a.title,c));d&&(e.some(a=>a.chapterTitle===d.chapterTitle&&a.title===d.title)||e.push({chapterTitle:d.chapterTitle,title:d.title,reason:String(a?.reason||"").replace(/\s+/gu," ").trim().slice(0,40)||"判为超范围"}))}let f=Math.max(1,Math.floor(b.length*fF));return e.length>f?{removed:[],skipped:`超范围剔除 ${e.length}/${b.length} 项超过 1/3 上限(疑似误判),整体放弃以保安全`}:{removed:e}}var fH=c(79227),fI=c(25284);async function fJ(a){var b;a.planning.effectiveChapters=a.planning.baseEffectiveChapters,a.planning.constructionOrgContext=(0,fI.TD)(a.understanding.scopedIntelligence?.constructionOrganizationGraph)||a.understanding.scopedIntelligence?.constructionOrganizationContext,a.planning.chapterGraphSummaryText=b=>{let c=a.understanding.chapterGraphMap.get(b);return c&&(c.graphWorks.length||c.graphMethods.length||c.graphBoqItems.length)?[c.graphWorks.length?`专业工程:${c.graphWorks.slice(0,8).join("、")}`:"",c.graphMethods.length?`主要工法/工艺:${c.graphMethods.slice(0,8).join("、")}`:"",c.graphBoqItems.length?`关键资源:${c.graphBoqItems.slice(0,8).map(a=>a.name).join("、")}`:""].filter(Boolean).join(";"):""},a.planning.baseProjectContext=[a.prepare.projectUnderstanding.prompt,a.planning.constructionOrgContext].filter(Boolean).join("\n\n"),a.planning.projectContext=a.planning.baseProjectContext;let c={...a.prepare.template,chapters:a.planning.effectiveChapters};a.planning.promptStructuralRules=(0,dp.My)([a.prepare.promptTexts,a.global.input.requirement||""].filter(Boolean).join("\n\n"),a.planning.effectiveChapters),a.planning.provisionalBudget=(0,h.tF)({requirement:a.global.input.requirement,promptTexts:a.prepare.promptTexts,template:c,chapters:a.planning.effectiveChapters,spec:a.prepare.documentSpec});let d={requirement:a.global.input.requirement,promptTexts:a.prepare.promptTexts},i=[],j=(a,b)=>{let c=(0,h.KC)(b||"");return c!==(b||"")&&i.push(a),c};if(a.global.input.requirement){let b=j("requirement",a.global.input.requirement);a.global.input.requirement=b||void 0}a.prepare.runtimeRulesText=j("runtimeRulesText",a.prepare.runtimeRulesText),a.prepare.promptTexts=j("promptTexts",a.prepare.promptTexts),a.prepare.factExtractionPromptTexts=j("factExtractionPromptTexts",a.prepare.factExtractionPromptTexts),a.prepare.reviewPromptTexts=j("reviewPromptTexts",a.prepare.reviewPromptTexts),a.prepare.repairPromptTexts=j("repairPromptTexts",a.prepare.repairPromptTexts),a.planning.baseProjectContext=j("baseProjectContext",a.planning.baseProjectContext),a.planning.projectContext=a.planning.baseProjectContext;let l=new Set,m=new Set;for(let b of[...a.prepare.promptPlan.prompts,...a.prepare.promptPlan.writerPrompts,...a.prepare.promptPlan.chapterPrompts,...a.prepare.promptPlan.formattingPrompts,...a.prepare.promptPlan.extractionPrompts,...a.prepare.promptPlan.referencePrompts]){if(m.has(b))continue;m.add(b);let a=(0,h.KC)(b.content||"");a!==(b.content||"")&&(b.content=a,l.add(b.id))}(i.length>0||l.size>0)&&((0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"length-instruction-dissolve",status:"success",message:`篇幅指令分层编译:全文级字数指令已消解(提示词链 ${i.length} 处、用户提示词 ${l.size} 个),篇幅目标由章预算/块目标统一下达`,details:[...i.map(a=>`消解字段:${a}`),...l.size>0?[`消解用户提示词:${[...l].join("、")}`]:[],a.planning.provisionalBudget.targetChars?`识别口径:全文目标 ${a.planning.provisionalBudget.targetChars} 字(已编译为 ${a.planning.effectiveChapters.length} 章预算,Σ=目标守恒)`:"未识别到显式全文目标,按模板/spec 默认预算下达","写作链不再携带原始全文篇幅语句(双通道指令 → 单通道编译下发)"]},{subtitle:"篇幅预算",order:a.global.progressStages.length})),a.global.emitProgress());let n=0,o=0,p=0,r=0,s=new Map,t=[];a.planning.diversityProfile=(0,ff.y$)(a.global.input.diversitySeed||a.global.input.templateId,(0,ff.u)(a.global.input.templateId)),(0,ff.a1)(a.global.input.templateId,a.planning.diversityProfile.id),a.planning.fingerprintPool=(0,fb.$R)();let u=[...new Set(a.planning.fingerprintPool.entries.flatMap(a=>[...a.h3||[],...a.h4||[]]))].filter(Boolean).slice(0,60),v=b=>(0,fb.F$)(b,a.planning.fingerprintPool,{excludeDocumentId:a.global.input.diversitySeed}).map(a=>({title:a.title,collidedWith:a.collidedWith})),w=0,x=0;a.planning.plannedChapters=await (0,e.l$)(a.planning.effectiveChapters.map((a,b)=>({chapter:a,chapterIndex:b})),async({chapter:b,chapterIndex:d})=>{let e=a.planning.promptStructuralRules.filter(a=>a.chapterIndex===d||a.chapterTitle&&(0,bg.GQ)(a.chapterTitle)===(0,bg.GQ)(b.title)).flatMap(a=>a.requiredSections.slice().sort((a,b)=>(a.order||0)-(b.order||0)).map(a=>a.title)),f=(0,dp.k2)([...e,...b.sections||[]],b.title);for(let a of[...e,...b.sections||[]]){let c=(0,dp.EN)(String(a).trim());c&&c!==String(a).trim()&&t.push(`${(0,bg.GQ)(b.title)}:${a} → ${c}`)}n+=f.length,p+=1;let h=(0,g.QR)(a.understanding.writerEvidence.filter(a=>a.chapterId===b.id||(0,cf.Lk)(a,b.title)),{preservePinned:!0}),i=a.prepare.projectUnderstanding.chapterPlans.find(a=>a.chapterId===b.id)?.writingGoal||"",j=(0,k.C_)(a.prepare.promptPlan,b),l=/施工方法|施工方案|施工工艺|主要施工内容|分部分项/u.test(b.title)?(0,V.Hp)((0,V.v7)(a.understanding.preliminaryFactsModel)):"",m=await (0,dp.SP)({template:c,chapter:b,chapterIndex:d,evidence:h,promptTexts:j.promptTexts,projectContext:a.planning.projectContext,requirement:a.global.input.requirement,roleContext:i,targetWords:a.planning.provisionalBudget.chapterTargets.get(b.id)||1200,projectGraphSummary:a.planning.chapterGraphSummaryText(b.id),boqCoverageSummary:l||void 0,lockedSections:f,bodyTablePolicy:a.understanding.bidComposition.bodyTablePolicy,signal:a.global.input.signal,diversity:{directive:a.planning.diversityProfile.prompt,avoidSections:u,overlapCheck:v}});m.diversity?.retried&&(w+=1,x+=m.diversity.remainingCollisions),s.set(b.id,m.tables),r+=m.tables.length,o+=m.sections.length;let y=m.sections.filter(a=>!f.some(b=>(0,dp.kw)(b,a)));if((0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"section-planning",promptId:j.primaryPromptId,status:m.sections.length?"success":"failed",message:`${(0,bg.GQ)(b.title)} 小节规划:锁定 ${f.length} 个、LLM 规划增量 ${y.length} 个${m.tables.length?`、表格需求 ${m.tables.length} 项`:""}`,details:[...j.promptDetails,...f.map(a=>`锁定小节:${a}`),...y.map(a=>`规划小节:${a}`),...m.tables.map(a=>`表格需求:${a.title}${a.fields.length?`(${a.fields.join("、")})`:""}`)]},{subtitle:"小节规划"})),!m.sections.length)throw Error(`${(0,bg.GQ)(b.title)} 小节规划未生成可用小节`);return{...b,sections:m.sections}},{kind:"llmRepair",targetWords:a.planning.provisionalBudget.targetChars||4e3}),a.planning.tenderRequirements=await a.understanding.tenderRequirementsTask;let y=a.planning.plannedChapters;if((0,aC.l)(a.planning.tenderRequirements)){let b=await a.global.withProgressHeartbeat(()=>fg({chapters:y,requirementSummary:(0,aC.zD)(a.planning.tenderRequirements),templateName:a.prepare.template.name,diversityDirective:a.planning.diversityProfile.prompt,signal:a.global.input.signal}));if(b.length>0){let c=function(a,b){if(!b.length)return{chapters:a,applied:[]};let c=[],d=a.map(a=>({...a,sections:[...a.sections||[]]}));for(let a of b){let b=d.findIndex(b=>(0,bg.GQ)(b.title)===(0,bg.GQ)(a.chapterTitle)||(0,bg.nz)(b.title)===(0,bg.nz)(a.chapterTitle));if(b<0)continue;let e=d[b],f=a.sections.filter(a=>!(e.sections||[]).some(b=>(0,dp.kw)(b,a)));0!==f.length&&(e.sections.push(...f),c.push({chapterTitle:a.chapterTitle,sections:f}))}return a.every((a,b)=>{let c=d[b];return!!c&&(a.sections||[]).every(a=>(c.sections||[]).some(b=>(0,dp.kw)(b,a)))})?{chapters:d,applied:c}:{chapters:a,applied:[]}}(y,b);c.applied.length>0?(y=c.chapters,(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"outline-requirement-calibration",status:"success",message:`大纲要求校准:新增 ${c.applied.reduce((a,b)=>a+b.sections.length,0)} 个评分项承接小节(结构守恒校验通过)`,details:c.applied.map(a=>`${(0,bg.GQ)(a.chapterTitle)}:${a.sections.join("、")}`)},{subtitle:"大纲要求校准",order:a.global.progressStages.length}))):(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"outline-requirement-calibration",status:"skipped",message:"大纲要求校准未通过结构守恒校验,回退原规划",details:["校准新增小节未通过章名匹配/标题清洗校验,全部丢弃"]},{subtitle:"大纲要求校准",order:a.global.progressStages.length})),a.global.emitProgress()}else(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"outline-requirement-calibration",status:"skipped",message:"大纲要求校准未产出有效增量(章节结构已覆盖评分项要求或校准调用失败),回退原规划",details:[]},{subtitle:"大纲要求校准",order:a.global.progressStages.length})),a.global.emitProgress()}let z=await (0,e$.mI)(y),A=y.reduce((a,b,c)=>a+Math.max(0,(b.sections||[]).length-(z[c]?.sections||[]).length),0),B=function(a){let b=a.map(a=>({...a,sections:[...a.sections||[]]})),c=[];for(let a of fh){let d=b.find(b=>a.chapterPattern.test((0,bg.GQ)(b.title)));if(!d)continue;let e=d.sections||(d.sections=[]);if(e.some(b=>(0,dp.kw)(b,a.section)))continue;let f=e.findIndex(b=>a.coreWords.test(b)),g=c.find(a=>a.chapterTitle===d.title)||(c.push({chapterTitle:d.title,added:[],renamed:[]}),c[c.length-1]);f>=0?(g.renamed.push({from:e[f],to:a.section}),e[f]=a.section):(e.push(a.section),g.added.push(a.section))}return{chapters:b,changes:c.filter(a=>a.added.length>0||a.renamed.length>0)}}(z),C=B.chapters;if(B.changes.length>0){let b=B.changes.reduce((a,b)=>a+b.added.length,0),c=B.changes.reduce((a,b)=>a+b.renamed.length,0);(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"review-module-sections",status:"success",message:`评审模块承接:补入 ${b} 个评审模块小节、规范化 ${c} 个承接标题`,details:B.changes.map(a=>`${(0,bg.GQ)(a.chapterTitle)}:${[...a.added.map(a=>`补入「${a}」`),...a.renamed.map(a=>`「${a.from}」→「${a.to}」`)].join(";")}`)},{subtitle:"评审模块承接",order:a.global.progressStages.length})),a.global.emitProgress()}let D=C;{let b=a.planning.tenderRequirements?.structureRequirements||[];if(b.length>0){let c=await (0,aB.Mv)(b.map(aC.JX),C.map(a=>(0,aC.NT)(a.title))),d=(0,aC._D)(b,C,c),e=function(a,b){let c=b.filter(a=>!a.lowConfidence&&("org_chart"===a.requirement.form||fi.test(a.requirement.element)));if(0===c.length)return{chapters:a,changes:[]};let d=a.map(a=>({...a,sections:[...a.sections||[]]})),e=[],f=new Set;for(let a of c){let b=d.find(b=>(0,aC.NT)(b.title)===a.chapterTitle);if(!b||f.has(b.id))continue;f.add(b.id);let c=b.sections||(b.sections=[]);if(c.some(a=>fk.test(a)))continue;let g=e.find(a=>a.chapterTitle===b.title)||(e.push({chapterTitle:b.title,added:[],renamed:[]}),e[e.length-1]),h=c.findIndex(a=>fl.test(a));h>=0?(g.renamed.push({from:c[h],to:fj}),c[h]=fj):(c.push(fj),g.added.push(fj))}return{chapters:d,changes:e.filter(a=>a.added.length>0||a.renamed.length>0)}}(C,d.assignments);if(D=e.chapters,e.changes.length>0){let b=e.changes.reduce((a,b)=>a+b.added.length,0),c=e.changes.reduce((a,b)=>a+b.renamed.length,0);(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"structure-org-sections",status:"success",message:`组织机构承接:${b>0?`补入 ${b} 个「项目管理机构与岗位职责」小节`:""}${b>0&&c>0?"、":""}${c>0?`规范化 ${c} 个承接标题`:""}`,details:e.changes.map(a=>`${(0,bg.GQ)(a.chapterTitle)}:${[...a.added.map(a=>`补入「${a}」`),...a.renamed.map(a=>`「${a.from}」→「${a.to}」`)].join(";")}`)},{subtitle:"组织机构承接",order:a.global.progressStages.length})),a.global.emitProgress()}}}let E=await (0,aB.Mv)(a.understanding.evaluationItems.map(a=>a.title),D.map(e4));a.planning.finalBidStructureAudit=e5({template:a.prepare.template,chapters:D,requirement:a.global.input.requirement,evaluationItems:a.understanding.evaluationItems,semanticSimilarity:E});let F=s;if(!(0,P._C)(a.understanding.bidComposition)&&s.size>0){let b=b=>(0,bg.GQ)(a.planning.finalBidStructureAudit.enrichedChapters.find(a=>a.id===b)?.title||b),c=[...s.entries()].flatMap(([a,c])=>c.map(c=>({chapterTitle:b(a),title:c.title,fields:c.fields})));if(c.length>0){let d=await fG({tables:c,requirementSummary:(0,aC.zD)(a.planning.tenderRequirements),boqCoverageSummary:(0,V.Hp)((0,V.v7)(a.understanding.preliminaryFactsModel)),templateName:a.prepare.template.name,signal:a.global.input.signal});if(d.removed.length>0){let c=new Set(d.removed.map(a=>`${a.chapterTitle}
|
|
247
247
|
${a.title}`));F=new Map([...s.entries()].map(([a,d])=>[a,d.filter(d=>!c.has(`${b(a)}
|
|
248
|
-
${d.title}`))])),(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"table-scope-audit",status:"success",message:`表格范围核对:剔除 ${d.removed.length} 项超范围规划表(非本标段工程实体)`,details:d.removed.map(a=>`${a.chapterTitle}:${a.title}(${a.reason})`)},{subtitle:"表格范围核对",order:a.global.progressStages.length})),a.global.emitProgress()}else d.skipped&&((0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"table-scope-audit",status:"skipped",message:`表格范围核对跳过:${d.skipped}`,details:[]},{subtitle:"表格范围核对",order:a.global.progressStages.length})),a.global.emitProgress())}}let G=(0,bV.lR)({chapters:a.planning.finalBidStructureAudit.enrichedChapters,plannedTables:F,requiredTables:a.prepare.runtimePromptRules.requiredTables,bodyTablePolicy:a.understanding.bidComposition?.bodyTablePolicy}),H=G.chapters;if(!(0,P._C)(a.understanding.bidComposition)&&(0,aC.l)(a.planning.tenderRequirements)){let b=(0,bV.cR)((0,bV.K9)(a.planning.tenderRequirements?.entries||[]),a.planning.tenderRequirements?.structureRequirements||[]);if(b.length>0){let c=await (0,aB.Mv)(b.map(a=>a.source),H.map(a=>a.title)),d=(0,bV.c$)(H,b,c);H=d.chapters;let e=[];for(let a of H)for(let b of a.diagramRequirements||[])e.push(`${(0,bg.GQ)(a.title)}:${b.split("(招标要求原文")[0]}`);(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"diagram-artifacts",status:"success",message:`图类呈现计划:识别 ${b.length} 项图类要求(${b.map(a=>a.name).join("、")}),注入 ${e.length} 项${d.unattached.length>0?`,未归属 ${d.unattached.length} 项(相似度不足不注入,防错挂)`:""}`,details:e},{subtitle:"图表呈现计划",order:a.global.progressStages.length})),a.global.emitProgress()}}if(a.planning.effectiveChapters=H,(0,P._C)(a.understanding.bidComposition)){let b=a.understanding.bidComposition;(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"bid-composition-table-policy",status:"success",message:`编制规格消费:正文禁表(显式禁表句)——小节规划 ${r} 项表格需求与提示词必需表格 ${a.prepare.runtimePromptRules.requiredTables.length} 张均不进入正文,图表由终稿附表区 ${b.appendixPlan.length} 项附表承接`,details:[...b.conflicts.map(a=>`${a.rule} → ${a.resolution}`),...b.appendixPlan.map(a=>`附表${a.no}:${a.title}${"figure"===a.kind?"(图类,图件说明承载)":`(数据源:${a.dataSource})`}`)]},{subtitle:"表格计划"})),a.global.emitProgress()}else if(a.understanding.bidComposition?.bidType==="blind"){let b=G.chapters.reduce((a,b)=>a+(b.tablePlans?.length||0),0);(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"bid-composition-table-policy",status:"success",message:`暗标编制规格消费:招标正文表格口径按证据判定为允许——表格计划 ${b} 项正常构建进入正文(原「暗标一律禁表」硬推已删除);正文图片仍禁(图类以表格化数据/文字框图表达)${G.unattachedRequiredTables.length>0?`;提示词必需表格 ${G.unattachedRequiredTables.length} 张未归属,交由终验兜底插入`:""}`,details:[...a.understanding.bidComposition.conflicts.map(a=>`${a.rule} → ${a.resolution}`),...a.understanding.bidComposition.appendixPlan.map(a=>`附表${a.no}:${a.title}${"figure"===a.kind?"(图类,图件说明承载)":`(数据源:${a.dataSource})`}`)]},{subtitle:"表格计划"})),a.global.emitProgress()}else G.unattachedRequiredTables.length>0&&(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"required-tables-unattached",status:"success",message:`提示词必需表格归属:${G.unattachedRequiredTables.length} 张未匹配到明确章节(${G.unattachedRequiredTables.join("、")}),交由文档合成终验兜底插入`,details:["未归属必需表格不做语义错挂——防止表格落到不相关章节"]},{subtitle:"表格计划"}));a.planning.effectiveChapters=(b=a.planning.effectiveChapters).length?b.map((a,b)=>{let c=a.sections||[];if(c.length<2||!(0===b||/概况|总体理解|编制说明|编制依据/u.test(a.title)))return a;let d=c.findIndex(a=>/^(?:编制说明|编制依据)/u.test(a)||/工程概况|项目概况|基本概况/u.test(a));if(d<=0)return a;let e=[c[d],...c.filter((a,b)=>b!==d)];return{...a,sections:e}}):b,A>0&&((0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"outline-topic-filter",status:"success",message:`大纲小节主题过滤:剔除 ${A} 个评标纪律/商务报价类离题小节`,details:["被剔除小节不进入写作、目录与预算计划"]},{subtitle:"大纲主题约束",order:a.global.progressStages.length})),a.global.emitProgress()),(a.planning.finalBidStructureAudit.issues.length>0||a.understanding.bidStructureAudit.issues.length>0)&&(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"bid-structure-audit",status:a.planning.finalBidStructureAudit.issues.some(a=>"blocker"===a.severity)?"failed":"success",message:`评标结构符合性校验:${a.planning.finalBidStructureAudit.diagnostics.length} 个结构组,${a.planning.finalBidStructureAudit.diagnostics.filter(a=>"satisfied"===a.status).length} 个已满足,${a.planning.finalBidStructureAudit.diagnostics.filter(a=>"missing"===a.status&&"required"===a.level).length} 个必查缺失(已自动补挂),${a.planning.finalBidStructureAudit.diagnostics.filter(a=>"fragmented"===a.status).length} 个分散`,details:[...a.planning.finalBidStructureAudit.diagnostics.map(a=>`${"satisfied"===a.status?"满足":"fragmented"===a.status?"分散":"补挂"}:${a.groupTitle}${"missing"===a.status?`(补挂小节:${a.missingSections.join("、")})`:""}`),...a.planning.finalBidStructureAudit.issues.map(a=>`提示:${a.message}`).slice(0,8)]},{subtitle:"评标结构校验"})),a.prepare.template={...a.prepare.template,chapters:a.planning.effectiveChapters},a.planning.requirementsSimilarity=await (0,aB.Mv)([...(0,aC.Uk)(a.planning.tenderRequirements).map(({item:a})=>(0,aC.E6)(a)),...(a.planning.tenderRequirements?.structureRequirements||[]).map(aC.JX)],a.planning.effectiveChapters.map(a=>(0,aC.NT)(a.title))),a.planning.factTokenScopeClassifier=await fp(),a.planning.chapterIntentClassifier=await fy(a.planning.effectiveChapters.map(a=>a.title)),a.planning.professionalDepthClassifier=await fE(),a.planning.clarificationOverrides=function(a){let b=new Map,c=new Set,d=new Set,e=new Set,f=new Set;for(let h of a){var g;let a=String(h.text||"");if(!a)continue;let i=(g=h.source,/补疑|补遗|答疑|澄清|更正|修改通知|question|clarif/iu.test(g||""));for(let c of a.split(/[。;;\n]/u)){let a=cH.exec(c);if(a){let d=[...c.matchAll(cF)].map(a=>cJ(a[1])).filter(b=>b!==cJ(a[1])),e=cJ(a[1]),f=b.get("计划工期");b.set("计划工期",{field:"计划工期",effective:e,superseded:[...new Set([...f?.superseded||[],...d])],source:h.source})}let d=cI.exec(c);if(d){let a=[...c.matchAll(cG)].map(a=>cK(a[1])).filter(a=>a!==cK(d[1])),e=cK(d[1]),f=b.get("开工日期");b.set("开工日期",{field:"开工日期",effective:e,superseded:[...new Set([...f?.superseded||[],...a])],source:h.source})}}for(let b of a.split(/[。;;\n]/u)){let a=/(?:见|详见)[^。;;\n]{0,12}(?:招标|公告|投标|前附表)/u.test(b),g=i&&!a?e:c,h=i&&!a?f:d;for(let a of b.matchAll(cF))g.add(cJ(a[1]));for(let a of b.matchAll(cG))h.add(cK(a[1]))}}if(!b.has("计划工期")&&e.size>0){let a=[...e][0];b.set("计划工期",{field:"计划工期",effective:a,superseded:[...c].filter(b=>b!==a),source:"答疑文件(平铺陈述)"})}if(!b.has("开工日期")&&f.size>0){let a=[...f][0];b.set("开工日期",{field:"开工日期",effective:a,superseded:[...d].filter(b=>b!==a),source:"答疑文件(平铺陈述)"})}return[...b.values()].filter(a=>a.superseded.length>0||a.effective)}((a.understanding.allEvidence||[]).map(a=>({text:String(a.content||""),source:`${a.filePath||""} ${a.sectionTitle||""}`})));{let b=[...a.understanding.preliminaryFactsModel?.preciseFacts||[],...a.understanding.preliminaryFactsModel?.project||[],...a.understanding.preliminaryFactsModel?.schedule||[],...a.understanding.preliminaryFactsModel?.quality||[],...a.understanding.preliminaryFactsModel?.safety||[]].map(a=>({key:a.key,label:a.fieldName,value:a.value,sourceFile:a.sourceFile})),c=(0,cL.iC)({facts:b,overrides:(0,cM.Oq)((0,cM.UD)([...(a.understanding.allEvidence||[]).map(a=>({text:String(a.content||""),source:`${a.filePath||""} ${a.sectionTitle||""}`})),...b.map(a=>({text:String(a.value??""),source:String(a.sourceFile||"")}))]))});a.planning.caliberLedger=(0,cL.wc)(c),a.planning.truthConstraint=(0,cL.gu)(c)}a.planning.writingTaskBrief=(0,e7.G0)({chapters:a.planning.effectiveChapters,factsModel:a.understanding.preliminaryFactsModel,projectGraph:a.understanding.projectGraph||void 0,requirement:a.global.input.requirement,templateName:a.prepare.template.name,clarificationConstraint:[a.planning.truthConstraint,function(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")}(a.planning.clarificationOverrides||[])].filter(Boolean).join("\n\n")}),a.planning.tenderWritingRulesText=j("tenderWritingRulesText",(0,aC.ey)(a.planning.tenderRequirements)),a.planning.projectContext=[a.planning.baseProjectContext,a.planning.tenderWritingRulesText].filter(Boolean).join("\n\n"),a.planning.chapterScopedProjectContext=b=>[a.planning.constructionOrgContext,a.planning.tenderWritingRulesText].filter(Boolean).join("\n\n"),a.planning.documentBudget=(0,h.tF)({requirement:d.requirement,promptTexts:d.promptTexts,template:a.prepare.template,chapters:a.planning.effectiveChapters,spec:a.prepare.documentSpec}),a.planning.plannedDocument=await a.planning.plannedDocumentTask,a.understanding.agentWorkflow.documentPlan=a.planning.plannedDocument.plan,a.understanding.agentWorkflow.nodes.push(a.planning.plannedDocument.node),(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"agent-document-planner",status:"success",message:a.planning.plannedDocument.node.outputSummary||"Agent 文档规划完成",details:a.planning.plannedDocument.plan.chapters.map(a=>`${a.title}:${a.sections.length} 条细目`)},{subtitle:"Agent Document Planner",order:a.global.progressStages.length})),a.global.checkpointChapterOrderIds=a.planning.effectiveChapters.map(a=>a.id);let I=a.planning.documentBudget.targetChars||[...a.planning.documentBudget.chapterTargets.values()].reduce((a,b)=>a+b,0),J=a.understanding.preliminaryFactsModel,K=J?.preciseFacts?.length??0,L=(J?.tables??[]).reduce((a,b)=>a+(b.rows?.length??0),0),M=Math.max(0,(J?[...J.project,...J.schedule,...J.quality,...J.safety,...J.resources,...Object.values(J.schemaFacts??{}).flat()].length:0)-K),N=(a.understanding.writerEvidence??[]).filter(a=>/[.](?:dwg|dxf)$/iu.test(String(a.filePath??""))).length,O=(0,h.KZ)({targetWords:I,parameters:K,boqRows:L,drawingFacts:N,basicFacts:M});if(a.planning.evidenceDensity=O,(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"evidence-density-check",status:O.sufficient?"success":"failed",message:O.sufficient?`证据密度体检通过:资料可支撑约 ${O.supportableWords} 字(目标 ${O.targetWords} 字)`:`证据密度不足:资料可支撑约 ${O.supportableWords} 字,低于目标 ${O.targetWords} 字(差额约 ${Math.round(O.shortfall)} 字)`,details:O.remediation},{subtitle:"生成准备",order:a.global.progressStages.length})),!O.sufficient)throw Error(`证据密度不足,无法支撑目标篇幅:${O.remediation.join(" ")}`);a.planning.generationStrategy=(0,f.JP)({template:a.prepare.template,targetWords:I,requirement:a.global.input.requirement,materialFileCount:a.prepare.materialFilePaths.length,evidenceCount:a.understanding.allEvidence.length}),a.planning.generationBudget=(0,fH.C)({template:a.prepare.template,chapters:a.planning.effectiveChapters,targetWords:I,requirement:a.global.input.requirement,materialFileCount:a.prepare.materialFilePaths.length,evidenceCount:a.understanding.allEvidence.length,hasVeryLargeExplicitChapter:a.planning.effectiveChapters.some(a=>(a.sections||[]).filter(Boolean).length>=30),configuredChapterConcurrency:(0,de.z)().chapterConcurrency||0,strategy:a.planning.generationStrategy}),a.planning.generationDiagnostics=(0,f.Zk)(a.planning.generationStrategy),(a.understanding.earlyFactPool.factSanitize.truncated>0||a.understanding.earlyFactPool.factSanitize.dropped>0||a.understanding.earlyFactPool.factSanitize.repaired>0)&&(a.planning.generationDiagnostics.factSanitize={...a.understanding.earlyFactPool.factSanitize}),a.planning.planPhaseStartedAt=Date.now(),(0,cl.t5)(I),(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"document-strategy",status:"success",message:`已自动选择 ${a.planning.generationStrategy.mode} 生成策略:章节审查 ${a.planning.generationStrategy.enableChapterReview?"启用":"跳过"}、全局审查 ${a.planning.generationStrategy.enableGlobalReview?`${a.planning.generationStrategy.globalReviewSamplingRate&&a.planning.generationStrategy.globalReviewSamplingRate<1?`抽检 ${Math.round((a.planning.generationStrategy.globalReviewSamplingRate??1)*100)}%`:"启用"}`:"跳过"}、最终质量审查 ${a.planning.generationStrategy.enableFinalQualityReview?"启用":"跳过"}`,details:a.planning.generationBudget.triggers},{subtitle:"后台自动策略"})),a.understanding.canonicalFacts.scopeConflicts.length>0&&(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"scope-conflict-resolution",status:"success",message:`源级数据口径冲突已裁决(补疑/澄清修正文件权威最高):${a.understanding.canonicalFacts.scopeConflicts.map(a=>a.resolution?`${a.scope} → ${a.resolution}`:`${a.scope} → 待人工复核`).join(";")}`,details:a.understanding.canonicalFacts.scopeConflicts.flatMap(a=>a.values.map(a=>`来源「${a.sourceFile||"未知文件"}」取值 ${a.value}${a.unit}`))},{subtitle:"数据口径裁决"}));let Q=a.prepare.hasExplicitOutline?"OUTLINE 章节":"模板章节";a.planning.sectionPlanningStage=(0,q.X5)({type:"validation",roleId:"section-planning",status:"success",message:`小节规划:${p} 章统一融合规划(基于${Q}、提示词强制小节与项目资料)——融合小节合计 ${o} 个(其中锁定 ${n} 个)、表格需求 ${r} 项`,details:t.length?[...t]:void 0},{subtitle:"小节规划策略"});let R=a.prepare.hasExplicitOutline?`;识别到 OUTLINE 章节 ${a.prepare.explicitPromptChapters.length} 个`:";未识别到有效 OUTLINE,将使用模板章节",S=[...a.prepare.promptPlan.prompts.map(a=>`${a.category}|${a.roleId}|${a.id}|${a.name}|${a.bindingSource}|${a.content.length} 字符|hash=${a.contentHash}|${a.contentPreview}`),...a.prepare.promptPlan.unresolvedRoles.map(a=>`unresolved|${a}|项目角色配置中的提示词角色不存在`),...a.prepare.promptPlan.missingResourceRoles.map(a=>`missingResource|${a}|提示词角色未显式绑定资源`)];(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"role_binding",roleId:a.prepare.projectRoleConfigId,status:"success",message:`已绑定项目资料 ${a.prepare.materialFilePaths.length} 份、${a.prepare.promptPlan.prompts.length} 个有效提示词;写作 ${a.prepare.promptPlan.writerPrompts.length}、章节 ${a.prepare.promptPlan.chapterPrompts.length}、抽取 ${a.prepare.promptPlan.extractionPrompts.length};已自动抽取运行时规则 ${a.prepare.runtimePromptRules.executionSummary.length} 条${R}`,details:[...S,...a.prepare.runtimePromptRules.executionSummary.map(a=>`runtimeRule|${a}`)]},{subtitle:a.prepare.projectRoleConfigName,roleName:a.prepare.projectRoleConfigName})),(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"runtime-prompt-rules",status:"success",message:`运行时提示词规则已抽取:${a.prepare.runtimePromptRules.executionSummary.length} 条,版本 ${a.prepare.runtimePromptRules.sourceHash}`,details:a.prepare.runtimePromptRules.executionSummary.length?[...a.prepare.runtimePromptRules.executionSummary,`必需表格:${a.prepare.runtimePromptRules.requiredTables.join("、")||"无"}`,`必含关键词:${a.prepare.runtimePromptRules.requiredKeywords?.join("、")||"无"}`,`禁含内容:${a.prepare.runtimePromptRules.forbiddenPatterns?.join("、")||"无"}`]:["未从提示词中识别到额外硬规则,使用系统默认质量规则"]},{subtitle:"提示词规则执行"})),(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"document-readiness",status:a.prepare.readiness.ready?"success":"failed",message:"生成准备度:绑定资料已就绪",details:a.prepare.readiness.diagnostics},{subtitle:"生成准备度检查"})),(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"diversity-governance",status:"success",message:`多文档反雷同:组织视角「${a.planning.diversityProfile.perspective}」\xd7命名风格「${a.planning.diversityProfile.style}」;历史指纹避让 ${u.length} 个标题${w>0?`,撞名局部改名 ${w} 章${x>0?`(局部改名后仍近似 ${x} 处,已接受)`:""}`:""}`,details:[`历史指纹池 ${a.planning.fingerprintPool.entries.length} 条(仅本机历史文档标题与结构,无正文)`,`多样性画像 ${a.planning.diversityProfile.id}`]},{subtitle:"多样性治理"})),(0,q.fx)(a.global.progressStages,a.planning.sectionPlanningStage),a.global.emitProgress()}var fK=c(14070),fL=c(70963);async function fM(a){if(a.understanding.evidenceScopePaths=new Set(a.prepare.materialFilePaths),a.understanding.fileRoleByPath=new Map([...a.prepare.kindByPath.entries()].map(([a,b])=>[a,(0,e9._W)(b)])),a.understanding.fileProcessingByPath=new Map([...a.prepare.processingByPath.entries()].map(([a,b])=>[a,b])),(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"knowledge_retrieval",roleId:"knowledge-index",status:"running",message:"正在读取项目资料包索引",details:["使用上传阶段已完成的解析、切片和索引结果","不在生成流程中重新解析或入库","准备按资料类型召回章节证据"],progress:{current:1,total:3,label:"读取索引"}},{subtitle:"知识库检索",order:a.global.progressStages.length})),a.global.emitProgress(),a.understanding.project=await a.global.withProgressHeartbeat(()=>a.understanding.manager.getProject(a.prepare.projectRoot)),a.understanding.indexHealth=(0,k.EK)(a.understanding.project,[...a.understanding.evidenceScopePaths]),a.understanding.indexHealth.blockingIssues.length>0)throw Error(`生成前知识索引不可用:${a.understanding.indexHealth.blockingIssues.join(";")}`);a.understanding.availableEvidenceScopePaths=new Set(a.understanding.indexHealth.usablePaths),a.understanding.requestedEvidencePerChapter=(0,k.G2)(a.understanding.project,[...a.understanding.availableEvidenceScopePaths],a.global.input.maxEvidencePerChapter);let b=a.understanding.indexHealth.pendingJobs>0||0===a.understanding.indexHealth.usableChunkCount;a.understanding.rolePoolRisk=ch({totalChunks:Math.min(a.understanding.indexHealth.usableChunkCount,20*a.prepare.materialFilePaths.length),loadedChunks:Math.min(a.understanding.indexHealth.usableChunkCount,20*a.prepare.materialFilePaths.length),vectorReady:a.understanding.indexHealth.vectorStatus?"ready"===a.understanding.indexHealth.vectorStatus.status:void 0}),(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"knowledge_retrieval",roleId:"knowledge-index",status:b?"failed":"success",message:`已读取知识索引:项目资料 ${a.understanding.indexHealth.scopedRecords.length} 份,可用切片 ${a.understanding.indexHealth.usableChunkCount} 条`,details:[`项目资料:${a.understanding.evidenceScopePaths.size} 份`,`可用证据文件:${a.understanding.availableEvidenceScopePaths.size} 份`,`向量状态:${(0,k.EG)(a.understanding.indexHealth.vectorStatus?.status)}`,...a.understanding.indexHealth.warnings,"后续将按招标正文/清单/图纸/补疑等资料类型召回"],progress:{current:3,total:3,label:"索引已就绪"}},{subtitle:"知识库检索",order:a.global.progressStages.length})),a.global.emitProgress(),(0,e.Te)(a.global.input.signal),a.understanding.allEvidence=[],a.understanding.retrievalCoverageReports=[],a.understanding.webResearchReport={enabled:a.prepare.webAccessConfig.enabled,queries:[],evidenceCount:0,filteredCount:0,chapters:[]},a.understanding.missingItems=[],a.understanding.failedChapterMessages=[],a.understanding.chapterGenerationStages=[],a.understanding.chapterDraftsByOrder=[],a.understanding.chapterGenerationStagesByOrder=[],a.understanding.knowledgeBaseStageIndex=-1;let c=new Map,d=[],f=new Map;a.understanding.getCachedFileDetail=b=>{let c=`${b}::full`;if(!f.has(c))try{f.set(c,a.understanding.project.getFileDetail?.(b))}catch{f.set(c,void 0)}return f.get(c)},a.understanding.searchWithCache=async(b,f,g,h,i)=>{let j=(0,k.Iu)(h),l=i??(0,ce.materialRootsOfFiles)(f),m=(0,e.c6)({query:b,scopedFilePaths:f,effectiveMaterialRoots:l,limit:g,weights:j,generationMode:!0,reranker:!0}),n=c.get(m);if(n)return n;let o=await a.understanding.manager.search(a.prepare.projectRoot,b,{scope:"project",filters:{filePaths:f,materialRoots:l},limit:g,weights:j,generationMode:!0,disableReranker:!1}).catch(a=>(d.push({query:b,message:a instanceof Error?a.message:String(a)}),null));if(null===o)return[];let p=o.results||[];return c.set(m,p),p};let h={stage:(0,q.X5)({type:"file_understanding",roleId:"project-understanding",status:"running",message:`正在理解项目资料:${a.prepare.projectMaterialProfile.files.length} 份资料,${Object.values(a.prepare.projectMaterialProfile.groups).filter(a=>a.length>0).length} 类资料类型`,progress:{current:1,total:3,label:"资料理解"}},{subtitle:"项目资料理解",order:a.global.progressStages.length})};(0,q.fx)(a.global.progressStages,h.stage),a.global.emitProgress();let i=await (0,k.jX)({manager:a.understanding.manager,project:a.understanding.project,projectRoot:a.prepare.projectRoot,scopedFilePaths:[...a.understanding.availableEvidenceScopePaths].filter(Boolean).sort(),scopedMaterialRoots:a.prepare.materialScope.selectedMaterialRoots,fileRoleByPath:a.understanding.fileRoleByPath,fileProcessingByPath:a.understanding.fileProcessingByPath,signal:a.global.input.signal});i.length>0&&(a.understanding.allEvidence.push(...i),(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"knowledge_retrieval",roleId:"project-basic-evidence",status:"success",message:`已锁定项目基础事实证据 ${i.length} 条`,details:i.slice(0,8).map(a=>`${cD.basename(a.filePath)}|${a.sectionTitle||"正文片段"}|score=${a.score.toFixed(2)}`)},{subtitle:"基础事实召回",order:a.global.progressStages.length})),a.global.emitProgress()),a.understanding.searchFailures=d,d.length>0&&((0,q.fx)(a.global.progressStages,(0,q.X5)({type:"knowledge_retrieval",roleId:"kb-search-failures",status:"failed",message:`知识库检索失败 ${d.length} 次(失败与「无命中」已分开计;失败结果不写缓存,同 query 后续会重试)`,details:d.slice(0,10).map(a=>`${a.query}:${a.message}`)},{subtitle:"基础事实召回",order:a.global.progressStages.length})),a.global.emitProgress());let{safe:j,excluded:l}=await (0,e$.a0)(a.understanding.allEvidence);a.understanding.writerEvidence=j,a.understanding.bidProcedureJudge=await (0,e$.M8)(),l.length>0&&((0,q.fx)(a.global.progressStages,(0,q.X5)({type:"knowledge_retrieval",roleId:"evidence-content-safety",status:"success",message:`证据内容安全过滤:${l.length} 条投标程序/评标纪律类证据已从写作链断开(系统侧提取通道不受影响)`,details:l.slice(0,6).map(a=>`${cD.basename(a.filePath)}|${a.sectionTitle||"正文片段"}`)},{subtitle:"证据内容安全",order:a.global.progressStages.length})),a.global.emitProgress()),a.understanding.safeProjectBasicEvidence=i.filter(a=>!l.includes(a)),a.understanding.excludedEvidenceKeys=new Set(l.map(e$.hM)),a.understanding.earlyFactPool=(0,m.d6)({evidence:a.understanding.writerEvidence,template:a.prepare.template,spec:a.prepare.documentSpec,profile:a.prepare.domainProfile});let o=a.understanding.earlyFactPool.localFacts,p=[...o,...a.understanding.earlyFactPool.projectBasicFacts,...a.understanding.earlyFactPool.preciseFacts];a.understanding.scopedIntelligence=(0,fI.hp)({projectRoot:a.prepare.projectRoot,template:a.prepare.template,requirement:a.global.input.requirement,materialScope:a.prepare.materialScope});let r=[...(0,e.lX)(a.understanding.scopedIntelligence?.facts||[]),...p,...(0,n.UT)(a.understanding.writerEvidence)],s=(0,n.GZ)(r,a.prepare.projectRoot);for(let b of(a.understanding.preliminaryFactsModel=await (0,m.d7)(s,a.understanding.earlyFactPool.structuredTables,a.understanding.missingItems,a.prepare.documentSpec,a.prepare.domainProfile),a.understanding.agentWorkflow=(0,cj.Qu)({template:a.prepare.template,requirement:a.global.input.requirement,projectRoot:a.prepare.projectRoot,facts:s,projectGraph:a.understanding.scopedIntelligence?.projectGraph,projectGraphSource:a.understanding.scopedIntelligence?"project-intelligence":void 0,materialScope:a.prepare.materialScope}),(0,cj.SU)(a.understanding.agentWorkflow)))(0,q.fx)(a.global.progressStages,b);if(a.understanding.scopedIntelligence&&(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"file_understanding",roleId:"project-intelligence-cache",status:"success",message:`已复用入库后资料包理解资产:${a.understanding.scopedIntelligence.files.length} 份资料`,details:[`项目级缓存时间:${new Date(a.understanding.scopedIntelligence.cache.createdAt).toLocaleString()}`,`资料包范围指纹:${a.understanding.scopedIntelligence.scope.scopeHash.slice(0,12)}`,`复用预计算事实:${a.understanding.scopedIntelligence.facts.length} 条`,`复用预计算项目图谱:${a.understanding.scopedIntelligence.projectGraph.works.length}工程/${a.understanding.scopedIntelligence.projectGraph.methods.length}工法/${a.understanding.scopedIntelligence.projectGraph.resources.length}资源`,`复用施工组织设计专项图谱:${a.understanding.scopedIntelligence.constructionOrganizationGraph.workPackages.length} 个工作包/${a.understanding.scopedIntelligence.constructionOrganizationGraph.controlMatrix.length} 条控制矩阵`,`图谱来源:${a.understanding.scopedIntelligence.cache.projectGraphMessage}`,`章节意图证据覆盖:${Object.keys(a.understanding.scopedIntelligence.evidenceByChapterId||{}).length}/${a.prepare.template.chapters.length} 章`,`排除正文不适用资料:${a.understanding.scopedIntelligence.files.filter(a=>!a.usableForBody).length} 份`]},{subtitle:"项目理解缓存 / 资料包"})),a.global.emitProgress(),a.understanding.projectGraph=a.understanding.agentWorkflow.baseProjectGraph,!a.understanding.scopedIntelligence){(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"file_understanding",roleId:"project-graph",status:"running",message:`正在临时构建完整项目图谱:${a.understanding.allEvidence.length} 条证据 → LLM 结构化提取`,details:["缓存缺失或版本过期,建议重新构建项目理解缓存;本次生成将临时构建完整项目图谱。","提取:工程内容、施工方法、材料设备、技术标准、重点难点"],progress:{current:2,total:3,label:"项目图谱"}},{subtitle:"项目资料图谱分析",order:a.global.progressStages.length})),a.global.emitProgress();let b=await a.global.withProgressHeartbeat(()=>(0,fL.i)({evidence:a.understanding.writerEvidence,signal:a.global.input.signal,projectRoot:a.prepare.projectRoot,requirement:a.global.input.requirement,templateId:a.prepare.template.id}),a.global.progressStages);if(!b.graph)throw Error(`完整项目图谱构建失败:${b.stage.message||b.stage.status}`);a.understanding.projectGraph=b.graph,(0,q.fx)(a.global.progressStages,b.stage),a.global.emitProgress()}a.understanding.projectGraph&&(a.prepare.projectUnderstanding=(0,e9._n)(a.prepare.template,a.prepare.projectMaterialProfile,a.understanding.projectGraph)),(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"file_understanding",roleId:"project-understanding",status:"success",message:`已完成项目资料理解:${a.prepare.projectMaterialProfile.files.length} 份资料、${Object.values(a.prepare.projectMaterialProfile.groups).filter(a=>a.length>0).length} 类资料类型${a.understanding.projectGraph?`、图谱增强 ${a.understanding.projectGraph.works.length} 项工程内容`:""}`,details:[...a.prepare.projectUnderstanding.chapterPlans.slice(0,10).map(a=>`${a.chapterTitle}:必用 ${a.mustUseMaterialKinds.length} 类资料、必覆盖 ${a.mustCover.length} 项`),...a.prepare.projectUnderstanding.profile.warnings.length?[`资料风险:${a.prepare.projectUnderstanding.profile.warnings.slice(0,3).join(";")}`]:[]]},{subtitle:"项目资料理解",order:a.global.progressStages.length})),a.global.emitProgress(),a.understanding.canonicalFacts=(0,n.qD)({facts:r,projectGraph:a.understanding.projectGraph,requiredKeys:n.nC.map(a=>a.key),projectRoot:a.prepare.projectRoot,requirement:a.global.input.requirement,templateId:a.prepare.template.id}),a.understanding.preliminaryFactsModel.canonical=a.understanding.canonicalFacts;let t=(0,bg.effectiveTemplateChapters)(a.prepare.template,a.prepare.documentSpec,{preserveExplicitOutline:a.prepare.hasExplicitOutline}),u=a.understanding.allEvidence.filter(a=>/评审|评分标准|评分办法|详细评审/u.test(`${a.sectionTitle||""}${a.content}`)).map(a=>a.content);a.understanding.evaluationItems=function(a){let b=a.join("\n"),c=new Map;for(let a of b.matchAll(/(\d{1,2})\s*[.、.]\s*([^;。\n]{4,60})/gu)){let b=a[2].trim().replace(/[“”"'"]/gu,"");if(!/[\u4e00-\u9fa5]{3}/u.test(b)&&!/[杯奖]/u.test(b)||/AI|大模型|评审|评分|分值|分项|子项|满分|得分|投标人须|详见|招标文件/u.test(b)||/公共资源|电子交易|加密|投标|开标|评标委员会|评标价|中标候选|中标人|评标程序|评标流程|异常低价|保函|保证金|资格审查|资格后审/u.test(b)||"technical"!==(0,e0.mz)(b))continue;let d=Number(a[1]);if(!c.has(d)){let a=function(a){let b=a.replace(/^针对/u,"").replace(/^确保/u,"").replace(/的保障体系与措施$/u,"").replace(/的管理体系与措施$/u,"").replace(/保障体系与措施$/u,"").replace(/管理体系与措施$/u,"").replace(/[,、;,;]+$/u,"").trim();return!/[\u4e00-\u9fa5]{3}/u.test(b)&&!/[杯奖]/u.test(b)||/工期与质量/u.test(b)?"":b.length>24?b.slice(0,24):b}(b);if(a&&(0,bg.ob)(a)||(0,bg.ob)(b))continue;c.set(d,{index:d,text:b,title:a})}}return[...c.values()]}(u),u.length>0&&0===a.understanding.evaluationItems.length&&(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"bid-structure-audit",status:"skipped",message:"评审章节证据存在但未提取到评分条目标题:评分标准编号条目提取为空,承接审计将静默通过",details:["请检查招标文件评标办法章节编号格式;评分项要求(创优目标/绿色等级/禁编日期)由评分项要求提取通道覆盖"]},{subtitle:"评标结构校验",order:a.global.progressStages.length}));let v=await (0,aB.Mv)(a.understanding.evaluationItems.map(a=>a.title),t.map(e4));a.understanding.bidStructureAudit=e5({template:a.prepare.template,chapters:t,requirement:a.global.input.requirement,evaluationItems:a.understanding.evaluationItems,semanticSimilarity:v});let w=[];for(let b of[...a.understanding.evidenceScopePaths].sort()){if(!/招标|补疑|答疑|评标/u.test(b))continue;let c=a.understanding.getCachedFileDetail(b);if(c?.chunks?.length)for(let a of c.chunks)w.push(a.content||"")}a.understanding.bidComposition=(0,P.SD)({tenderTexts:w,requirement:a.global.input.requirement,requiredTables:a.prepare.runtimePromptRules.requiredTables});let x=(0,P.iJ)(a.understanding.bidComposition);if((0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"bid-composition",status:x.status,message:x.message,details:x.details},{subtitle:"标书编制规格",order:a.global.progressStages.length})),a.global.emitProgress(),"unknown"===a.understanding.bidComposition.bidType&&((0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"bid-composition-warning",status:"skipped",message:"标书类型判定告警:未识别暗标/明标标记——本次按常规口径生成(正文表格策略按招标证据判定、正文图片允许);若本项目实为暗标,正文图片与投标人标记可能未被禁止(暗标通常不得出现),请核对招标文件后重跑",details:["核查点:招标文件「施工组织设计采用」勾选项(标记字符变体与「按暗标/采用暗标评审」语义条款均已覆盖)或「暗标编制要求」条款","判定证据链见「标书编制规格」节点"]},{subtitle:"标书编制规格\xb7判定告警",order:a.global.progressStages.length})),a.global.emitProgress()),a.understanding.tenderRequirementsTask=(async()=>{try{let b,c=[];for(let b of[...a.understanding.evidenceScopePaths].sort()){if(!/招标|补疑|答疑|评标/u.test(b))continue;let d=a.understanding.getCachedFileDetail(b);if(d?.chunks?.length)for(let e of d.chunks)c.push({chapterId:"tender-requirements",filePath:d.file?.relativePath||b,score:1,content:e.content||"",roleId:a.understanding.fileRoleByPath.get(b),processingType:a.understanding.fileProcessingByPath.get(b),sectionTitle:e.sectionTitle,source:"pinned-evidence"})}let d=c.length>0?c:(0,g.QR)([...a.understanding.allEvidence.filter(a=>/招标|评标|投标须知|专用合同|合同条款|技术标准|技术要求/u.test(`${a.filePath||""}${a.sectionTitle||""}`)),...a.understanding.allEvidence.filter(a=>!/招标|评标|投标须知|专用合同|合同条款|技术标准|技术要求/u.test(`${a.filePath||""}${a.sectionTitle||""}`))],{preservePinned:!0}),e="0"!==process.env.DOCUMENT_EXTRACTION_CACHE?(0,aC.Sf)({collectionEvidence:d}):void 0,f=e?(0,aC.jl)(a.prepare.projectRoot,e):void 0;return f?(b=f,(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"tender-requirements-cache",status:"success",message:"复用上次提取结果(招标资料哈希命中,跳过判定 LLM)",details:(0,aC.zD)(b)},{subtitle:"招标要求提取\xb7缓存复用",order:a.global.progressStages.length})),a.global.emitProgress()):(b=await a.global.withProgressHeartbeat(()=>(0,aC.mg)(d,{signal:a.global.input.signal,diagnostics:a.planning.generationDiagnostics,onPhase:(b,c)=>{(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"tender-requirements-extraction",status:"running",message:b,details:c},{subtitle:"招标要求提取",order:a.global.progressStages.length})),a.global.emitProgress()}})),e&&(0,aC.e_)(a.prepare.projectRoot,e,b)),(0,aC.l)(b)?((0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"tender-requirements-extraction",status:"success",message:`招标要求结构化提取完成:要求 ${b.reconciliation.entryCount} 条、排除 ${b.reconciliation.excludedCount} 条(${b.reconciliation.batchCount} 批判定)`,details:(0,aC.zD)(b)},{subtitle:"招标要求提取",order:a.global.progressStages.length})),a.global.emitProgress()):d.length>0&&((0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"tender-requirements-extraction",status:"skipped",message:"招标要求提取未获得有效结果(模型不可用或资料中无要求条款),章级验收自动跳过",details:[]},{subtitle:"招标要求提取",order:a.global.progressStages.length})),a.global.emitProgress()),b.extracted&&b.reconciliation.undecidedCount>0&&((0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"tender-requirements-undecided",status:"skipped",message:`对账未闭合:${b.reconciliation.undecidedCount} 条条款未判定(LLM 输出缺号且重试后仍缺)`,details:["未判定条款不进入分配与验收;请检查 LLM 可用性"]},{subtitle:"招标要求提取\xb7对账",order:a.global.progressStages.length})),a.global.emitProgress()),b}catch(b){return(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"tender-requirements-extraction",status:"skipped",message:"招标要求提取链异常,已降级为空模型(章级验收自动跳过)",details:[`异常信息:${b instanceof Error?b.message:String(b)}`,"请检查 LLM 可用性"]},{subtitle:"招标要求提取",order:a.global.progressStages.length})),a.global.emitProgress(),(0,aC.Mx)(!1)}})(),a.planning.baseEffectiveChapters=(0,e.H1)(a.understanding.bidStructureAudit.enrichedChapters),a.prepare.template={...a.prepare.template,chapters:a.planning.baseEffectiveChapters},a.planning.plannedDocumentTask=(0,e8.NP)({template:a.prepare.template,context:a.understanding.agentWorkflow,title:a.prepare.template.name}),a.planning.plannedDocumentTask.catch(()=>void 0),a.understanding.chapterGraphMap=new Map,a.understanding.projectGraph){let b=new Set;for(let c of[...a.understanding.projectGraph.works,...a.understanding.projectGraph.methods,...a.understanding.projectGraph.resources,...a.understanding.projectGraph.schedule,...a.understanding.projectGraph.standards,...a.understanding.projectGraph.risks,...a.understanding.projectGraph.requirements,...a.understanding.projectGraph.siteConditions])(c.sourceFiles||[]).forEach(a=>b.add(a));for(let c of a.planning.baseEffectiveChapters){let d=[c.title,c.purpose,...c.sections||[],...c.requiredFacts||[],...c.queries||[]].join(" "),e=a=>a&&((0,fK.C1)(a,d,.18)||(0,fK.C1)(a,c.title,.12)),f=/概况|总体|部署|施工|进度|工期|质量|安全|资源|人材机|材料|机械|劳动力|风险|危大|绿色|环保/u.test(d),g=a.understanding.projectGraph.works.filter(a=>a.name&&(e(a.name)||f)),h=a.understanding.projectGraph.methods.filter(a=>a.name&&(e(a.name)||(a.applicableWorks||[]).some(e)||f)),i=a.understanding.projectGraph.resources.filter(a=>a.name&&(e(a.name)||/资源|人材机|材料|机械|劳动力/u.test(d)&&/material|equipment|labor/u.test(a.type))),j=a.understanding.projectGraph.gaps.filter(a=>!(0,fI.Ut)(a)&&(e(a)||f)),k=new Set;for(let a of g)(a.sourceFiles||[]).forEach(a=>k.add(a));for(let a of h)(a.sourceFiles||[]).forEach(a=>k.add(a));for(let a of i)(a.sourceFiles||[]).forEach(a=>k.add(a));0===k.size&&f&&[...b].forEach(a=>k.add(a)),a.understanding.chapterGraphMap.set(c.id,{graphFiles:k,graphBoqItems:i.map(a=>({name:a.name,quantity:a.quantity,unit:a.unit,sourceFiles:a.sourceFiles||[]})),graphWorks:g.map(a=>a.name),graphMethods:h.map(a=>a.name),gaps:j})}a.understanding.scopedIntelligence||((0,q.fx)(a.global.progressStages,(0,q.X5)({type:"file_understanding",roleId:"project-graph-match",status:"success",message:`图谱→章节映射完成:${a.understanding.projectGraph.works.length}工程 ${a.understanding.projectGraph.methods.length}工法 ${a.understanding.projectGraph.resources.length}资源 → ${a.planning.baseEffectiveChapters.length}章`,details:a.planning.baseEffectiveChapters.map(b=>{let c=a.understanding.chapterGraphMap.get(b.id);return`${(0,bg.GQ)(b.title)}:匹配文件${c?.graphFiles.size||0}个,BOQ项${c?.graphBoqItems.length||0}个`})},{subtitle:"图谱章节映射"})),a.global.emitProgress())}}var fN=c(44533),fO=c(29281),fP=c(25840),fQ=c(6444),fR=c(85441),fS=c(56942);function fT(){return{parsed:!1,globalRequirements:[],chapterRequirements:[],factClues:[],styleRequirements:[],mandatoryBlockText:"",summary:""}}let fU=[(0,O.y4)("你是用户生成要求的语义解析专家。"),'把用户的生成提示词完整解析为可逐条核验的结构化要求清单,不得遗漏用户的任何实质要求;不得把通用客套话(如"请帮我生成""谢谢")当作要求。\n要求必须逐条短句(每条 ≤60 字)、可核验(生成后能判断是否满足);一条要求只写一件事,复合要求必须拆分。\nglobalRequirements:全文级强制要求——写作内容、深度、覆盖面、表格、量化要求等不限定具体章节的要求;若要求明确指向某个章节,必须放入 chapterRequirements 而不是 globalRequirements。\nchapterRequirements:章节级要求——chapterTitle 必须原样取自给定的章节列表,不得编造不存在的章节名;同一章节的多条要求合并为一条记录。\nfactClues:用户提示词中显式给出的项目专属事实线索——含数值、单位、规格、型号、标准编号、日期、地点、规模、金额、目标的短句(如"一般路灯 100W 109套、120W 9套""计划工期 365 日历天""开挖深度 5.2m");要求类语句("必须写X")不算事实线索;线索必须原样保留数值与表述,不得改写或换算。\nstyleRequirements:写作风格与格式要求(语气、详略、表格偏好、禁止风格等),最多 8 条。\n只返回 JSON。'].join("\n");function fV(a,b){let c=String(a||"").trim().replace(/^\d+[.、))]\s*/u,"");return!c||c.length>b?"":c}async function fW(a){let b=(a.requirement||"").trim(),c=(a.chapterTitles||[]).filter(Boolean),d=fT();if(!b||b.length<4||b.length<=40&&!/[::]|\n/u.test(b))return d;try{let e=await (0,cl.bb)(fU,`章节列表(chapterRequirements 的 chapterTitle 必须原样取自以下列表):${c.join("、")||"(无)"}
|
|
248
|
+
${d.title}`))])),(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"table-scope-audit",status:"success",message:`表格范围核对:剔除 ${d.removed.length} 项超范围规划表(非本标段工程实体)`,details:d.removed.map(a=>`${a.chapterTitle}:${a.title}(${a.reason})`)},{subtitle:"表格范围核对",order:a.global.progressStages.length})),a.global.emitProgress()}else d.skipped&&((0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"table-scope-audit",status:"skipped",message:`表格范围核对跳过:${d.skipped}`,details:[]},{subtitle:"表格范围核对",order:a.global.progressStages.length})),a.global.emitProgress())}}let G=(0,bV.lR)({chapters:a.planning.finalBidStructureAudit.enrichedChapters,plannedTables:F,requiredTables:a.prepare.runtimePromptRules.requiredTables,bodyTablePolicy:a.understanding.bidComposition?.bodyTablePolicy}),H=G.chapters;if(!(0,P._C)(a.understanding.bidComposition)&&(0,aC.l)(a.planning.tenderRequirements)){let b=(0,bV.cR)((0,bV.K9)(a.planning.tenderRequirements?.entries||[]),a.planning.tenderRequirements?.structureRequirements||[]);if(b.length>0){let c=await (0,aB.Mv)(b.map(a=>a.source),H.map(a=>a.title)),d=(0,bV.c$)(H,b,c);H=d.chapters;let e=[];for(let a of H)for(let b of a.diagramRequirements||[])e.push(`${(0,bg.GQ)(a.title)}:${b.split("(招标要求原文")[0]}`);(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"diagram-artifacts",status:"success",message:`图类呈现计划:识别 ${b.length} 项图类要求(${b.map(a=>a.name).join("、")}),注入 ${e.length} 项${d.unattached.length>0?`,未归属 ${d.unattached.length} 项(相似度不足不注入,防错挂)`:""}`,details:e},{subtitle:"图表呈现计划",order:a.global.progressStages.length})),a.global.emitProgress()}}if(a.planning.effectiveChapters=H,(0,P._C)(a.understanding.bidComposition)){let b=a.understanding.bidComposition;(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"bid-composition-table-policy",status:"success",message:`编制规格消费:正文禁表(显式禁表句)——小节规划 ${r} 项表格需求与提示词必需表格 ${a.prepare.runtimePromptRules.requiredTables.length} 张均不进入正文,图表由终稿附表区 ${b.appendixPlan.length} 项附表承接`,details:[...b.conflicts.map(a=>`${a.rule} → ${a.resolution}`),...b.appendixPlan.map(a=>`附表${a.no}:${a.title}${"figure"===a.kind?"(图类,图件说明承载)":`(数据源:${a.dataSource})`}`)]},{subtitle:"表格计划"})),a.global.emitProgress()}else if(a.understanding.bidComposition?.bidType==="blind"){let b=G.chapters.reduce((a,b)=>a+(b.tablePlans?.length||0),0);(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"bid-composition-table-policy",status:"success",message:`暗标编制规格消费:招标正文表格口径按证据判定为允许——表格计划 ${b} 项正常构建进入正文(原「暗标一律禁表」硬推已删除);正文图片仍禁(图类以表格化数据/文字框图表达)${G.unattachedRequiredTables.length>0?`;提示词必需表格 ${G.unattachedRequiredTables.length} 张未归属,交由终验兜底插入`:""}`,details:[...a.understanding.bidComposition.conflicts.map(a=>`${a.rule} → ${a.resolution}`),...a.understanding.bidComposition.appendixPlan.map(a=>`附表${a.no}:${a.title}${"figure"===a.kind?"(图类,图件说明承载)":`(数据源:${a.dataSource})`}`)]},{subtitle:"表格计划"})),a.global.emitProgress()}else G.unattachedRequiredTables.length>0&&(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"required-tables-unattached",status:"success",message:`提示词必需表格归属:${G.unattachedRequiredTables.length} 张未匹配到明确章节(${G.unattachedRequiredTables.join("、")}),交由文档合成终验兜底插入`,details:["未归属必需表格不做语义错挂——防止表格落到不相关章节"]},{subtitle:"表格计划"}));a.planning.effectiveChapters=(b=a.planning.effectiveChapters).length?b.map((a,b)=>{let c=a.sections||[];if(c.length<2||!(0===b||/概况|总体理解|编制说明|编制依据/u.test(a.title)))return a;let d=c.findIndex(a=>/^(?:编制说明|编制依据)/u.test(a)||/工程概况|项目概况|基本概况/u.test(a));if(d<=0)return a;let e=[c[d],...c.filter((a,b)=>b!==d)];return{...a,sections:e}}):b,A>0&&((0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"outline-topic-filter",status:"success",message:`大纲小节主题过滤:剔除 ${A} 个评标纪律/商务报价类离题小节`,details:["被剔除小节不进入写作、目录与预算计划"]},{subtitle:"大纲主题约束",order:a.global.progressStages.length})),a.global.emitProgress()),(a.planning.finalBidStructureAudit.issues.length>0||a.understanding.bidStructureAudit.issues.length>0)&&(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"bid-structure-audit",status:a.planning.finalBidStructureAudit.issues.some(a=>"blocker"===a.severity)?"failed":"success",message:`评标结构符合性校验:${a.planning.finalBidStructureAudit.diagnostics.length} 个结构组,${a.planning.finalBidStructureAudit.diagnostics.filter(a=>"satisfied"===a.status).length} 个已满足,${a.planning.finalBidStructureAudit.diagnostics.filter(a=>"missing"===a.status&&"required"===a.level).length} 个必查缺失(已自动补挂),${a.planning.finalBidStructureAudit.diagnostics.filter(a=>"fragmented"===a.status).length} 个分散`,details:[...a.planning.finalBidStructureAudit.diagnostics.map(a=>`${"satisfied"===a.status?"满足":"fragmented"===a.status?"分散":"补挂"}:${a.groupTitle}${"missing"===a.status?`(补挂小节:${a.missingSections.join("、")})`:""}`),...a.planning.finalBidStructureAudit.issues.map(a=>`提示:${a.message}`).slice(0,8)]},{subtitle:"评标结构校验"})),a.prepare.template={...a.prepare.template,chapters:a.planning.effectiveChapters},a.planning.requirementsSimilarity=await (0,aB.Mv)([...(0,aC.Uk)(a.planning.tenderRequirements).map(({item:a})=>(0,aC.E6)(a)),...(a.planning.tenderRequirements?.structureRequirements||[]).map(aC.JX)],a.planning.effectiveChapters.map(a=>(0,aC.NT)(a.title))),a.planning.factTokenScopeClassifier=await fp(),a.planning.chapterIntentClassifier=await fy(a.planning.effectiveChapters.map(a=>a.title)),a.planning.professionalDepthClassifier=await fE(),a.planning.clarificationOverrides=function(a){let b=new Map,c=new Set,d=new Set,e=new Set,f=new Set;for(let h of a){var g;let a=String(h.text||"");if(!a)continue;let i=(g=h.source,/补疑|补遗|答疑|澄清|更正|修改通知|question|clarif/iu.test(g||""));for(let c of a.split(/[。;;\n]/u)){let a=cH.exec(c);if(a){let d=[...c.matchAll(cF)].map(a=>cJ(a[1])).filter(b=>b!==cJ(a[1])),e=cJ(a[1]),f=b.get("计划工期");b.set("计划工期",{field:"计划工期",effective:e,superseded:[...new Set([...f?.superseded||[],...d])],source:h.source})}let d=cI.exec(c);if(d){let a=[...c.matchAll(cG)].map(a=>cK(a[1])).filter(a=>a!==cK(d[1])),e=cK(d[1]),f=b.get("开工日期");b.set("开工日期",{field:"开工日期",effective:e,superseded:[...new Set([...f?.superseded||[],...a])],source:h.source})}}for(let b of a.split(/[。;;\n]/u)){let a=/(?:见|详见)[^。;;\n]{0,12}(?:招标|公告|投标|前附表)/u.test(b),g=i&&!a?e:c,h=i&&!a?f:d;for(let a of b.matchAll(cF))g.add(cJ(a[1]));for(let a of b.matchAll(cG))h.add(cK(a[1]))}}if(!b.has("计划工期")&&e.size>0){let a=[...e][0];b.set("计划工期",{field:"计划工期",effective:a,superseded:[...c].filter(b=>b!==a),source:"答疑文件(平铺陈述)"})}if(!b.has("开工日期")&&f.size>0){let a=[...f][0];b.set("开工日期",{field:"开工日期",effective:a,superseded:[...d].filter(b=>b!==a),source:"答疑文件(平铺陈述)"})}return[...b.values()].filter(a=>a.superseded.length>0||a.effective)}((a.understanding.allEvidence||[]).map(a=>({text:String(a.content||""),source:`${a.filePath||""} ${a.sectionTitle||""}`})));{let b=[...a.understanding.preliminaryFactsModel?.preciseFacts||[],...a.understanding.preliminaryFactsModel?.project||[],...a.understanding.preliminaryFactsModel?.schedule||[],...a.understanding.preliminaryFactsModel?.quality||[],...a.understanding.preliminaryFactsModel?.safety||[]].map(a=>({key:a.key,label:a.fieldName,value:a.value,sourceFile:a.sourceFile})),c=[...(a.understanding.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,cL.iC)({facts:b,overrides:(0,cM.Oq)((0,cM.UD)(c)),labeledValues:(0,cM.Su)(c)});a.planning.caliberLedger=(0,cL.wc)(d),a.planning.truthConstraint=(0,cL.gu)(d)}a.planning.writingTaskBrief=(0,e7.G0)({chapters:a.planning.effectiveChapters,factsModel:a.understanding.preliminaryFactsModel,projectGraph:a.understanding.projectGraph||void 0,requirement:a.global.input.requirement,templateName:a.prepare.template.name,clarificationConstraint:[a.planning.truthConstraint,function(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")}(a.planning.clarificationOverrides||[])].filter(Boolean).join("\n\n")}),a.planning.tenderWritingRulesText=j("tenderWritingRulesText",(0,aC.ey)(a.planning.tenderRequirements)),a.planning.projectContext=[a.planning.baseProjectContext,a.planning.tenderWritingRulesText].filter(Boolean).join("\n\n"),a.planning.chapterScopedProjectContext=b=>[a.planning.constructionOrgContext,a.planning.tenderWritingRulesText].filter(Boolean).join("\n\n"),a.planning.documentBudget=(0,h.tF)({requirement:d.requirement,promptTexts:d.promptTexts,template:a.prepare.template,chapters:a.planning.effectiveChapters,spec:a.prepare.documentSpec}),a.planning.plannedDocument=await a.planning.plannedDocumentTask,a.understanding.agentWorkflow.documentPlan=a.planning.plannedDocument.plan,a.understanding.agentWorkflow.nodes.push(a.planning.plannedDocument.node),(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"agent-document-planner",status:"success",message:a.planning.plannedDocument.node.outputSummary||"Agent 文档规划完成",details:a.planning.plannedDocument.plan.chapters.map(a=>`${a.title}:${a.sections.length} 条细目`)},{subtitle:"Agent Document Planner",order:a.global.progressStages.length})),a.global.checkpointChapterOrderIds=a.planning.effectiveChapters.map(a=>a.id);let I=a.planning.documentBudget.targetChars||[...a.planning.documentBudget.chapterTargets.values()].reduce((a,b)=>a+b,0),J=a.understanding.preliminaryFactsModel,K=J?.preciseFacts?.length??0,L=(J?.tables??[]).reduce((a,b)=>a+(b.rows?.length??0),0),M=Math.max(0,(J?[...J.project,...J.schedule,...J.quality,...J.safety,...J.resources,...Object.values(J.schemaFacts??{}).flat()].length:0)-K),N=(a.understanding.writerEvidence??[]).filter(a=>/[.](?:dwg|dxf)$/iu.test(String(a.filePath??""))).length,O=(0,h.KZ)({targetWords:I,parameters:K,boqRows:L,drawingFacts:N,basicFacts:M});if(a.planning.evidenceDensity=O,(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"evidence-density-check",status:O.sufficient?"success":"failed",message:O.sufficient?`证据密度体检通过:资料可支撑约 ${O.supportableWords} 字(目标 ${O.targetWords} 字)`:`证据密度不足:资料可支撑约 ${O.supportableWords} 字,低于目标 ${O.targetWords} 字(差额约 ${Math.round(O.shortfall)} 字)`,details:O.remediation},{subtitle:"生成准备",order:a.global.progressStages.length})),!O.sufficient)throw Error(`证据密度不足,无法支撑目标篇幅:${O.remediation.join(" ")}`);a.planning.generationStrategy=(0,f.JP)({template:a.prepare.template,targetWords:I,requirement:a.global.input.requirement,materialFileCount:a.prepare.materialFilePaths.length,evidenceCount:a.understanding.allEvidence.length}),a.planning.generationBudget=(0,fH.C)({template:a.prepare.template,chapters:a.planning.effectiveChapters,targetWords:I,requirement:a.global.input.requirement,materialFileCount:a.prepare.materialFilePaths.length,evidenceCount:a.understanding.allEvidence.length,hasVeryLargeExplicitChapter:a.planning.effectiveChapters.some(a=>(a.sections||[]).filter(Boolean).length>=30),configuredChapterConcurrency:(0,de.z)().chapterConcurrency||0,strategy:a.planning.generationStrategy}),a.planning.generationDiagnostics=(0,f.Zk)(a.planning.generationStrategy),(a.understanding.earlyFactPool.factSanitize.truncated>0||a.understanding.earlyFactPool.factSanitize.dropped>0||a.understanding.earlyFactPool.factSanitize.repaired>0)&&(a.planning.generationDiagnostics.factSanitize={...a.understanding.earlyFactPool.factSanitize}),a.planning.planPhaseStartedAt=Date.now(),(0,cl.t5)(I),(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"document-strategy",status:"success",message:`已自动选择 ${a.planning.generationStrategy.mode} 生成策略:章节审查 ${a.planning.generationStrategy.enableChapterReview?"启用":"跳过"}、全局审查 ${a.planning.generationStrategy.enableGlobalReview?`${a.planning.generationStrategy.globalReviewSamplingRate&&a.planning.generationStrategy.globalReviewSamplingRate<1?`抽检 ${Math.round((a.planning.generationStrategy.globalReviewSamplingRate??1)*100)}%`:"启用"}`:"跳过"}、最终质量审查 ${a.planning.generationStrategy.enableFinalQualityReview?"启用":"跳过"}`,details:a.planning.generationBudget.triggers},{subtitle:"后台自动策略"})),a.understanding.canonicalFacts.scopeConflicts.length>0&&(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"scope-conflict-resolution",status:"success",message:`源级数据口径冲突已裁决(补疑/澄清修正文件权威最高):${a.understanding.canonicalFacts.scopeConflicts.map(a=>a.resolution?`${a.scope} → ${a.resolution}`:`${a.scope} → 待人工复核`).join(";")}`,details:a.understanding.canonicalFacts.scopeConflicts.flatMap(a=>a.values.map(a=>`来源「${a.sourceFile||"未知文件"}」取值 ${a.value}${a.unit}`))},{subtitle:"数据口径裁决"}));let Q=a.prepare.hasExplicitOutline?"OUTLINE 章节":"模板章节";a.planning.sectionPlanningStage=(0,q.X5)({type:"validation",roleId:"section-planning",status:"success",message:`小节规划:${p} 章统一融合规划(基于${Q}、提示词强制小节与项目资料)——融合小节合计 ${o} 个(其中锁定 ${n} 个)、表格需求 ${r} 项`,details:t.length?[...t]:void 0},{subtitle:"小节规划策略"});let R=a.prepare.hasExplicitOutline?`;识别到 OUTLINE 章节 ${a.prepare.explicitPromptChapters.length} 个`:";未识别到有效 OUTLINE,将使用模板章节",S=[...a.prepare.promptPlan.prompts.map(a=>`${a.category}|${a.roleId}|${a.id}|${a.name}|${a.bindingSource}|${a.content.length} 字符|hash=${a.contentHash}|${a.contentPreview}`),...a.prepare.promptPlan.unresolvedRoles.map(a=>`unresolved|${a}|项目角色配置中的提示词角色不存在`),...a.prepare.promptPlan.missingResourceRoles.map(a=>`missingResource|${a}|提示词角色未显式绑定资源`)];(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"role_binding",roleId:a.prepare.projectRoleConfigId,status:"success",message:`已绑定项目资料 ${a.prepare.materialFilePaths.length} 份、${a.prepare.promptPlan.prompts.length} 个有效提示词;写作 ${a.prepare.promptPlan.writerPrompts.length}、章节 ${a.prepare.promptPlan.chapterPrompts.length}、抽取 ${a.prepare.promptPlan.extractionPrompts.length};已自动抽取运行时规则 ${a.prepare.runtimePromptRules.executionSummary.length} 条${R}`,details:[...S,...a.prepare.runtimePromptRules.executionSummary.map(a=>`runtimeRule|${a}`)]},{subtitle:a.prepare.projectRoleConfigName,roleName:a.prepare.projectRoleConfigName})),(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"runtime-prompt-rules",status:"success",message:`运行时提示词规则已抽取:${a.prepare.runtimePromptRules.executionSummary.length} 条,版本 ${a.prepare.runtimePromptRules.sourceHash}`,details:a.prepare.runtimePromptRules.executionSummary.length?[...a.prepare.runtimePromptRules.executionSummary,`必需表格:${a.prepare.runtimePromptRules.requiredTables.join("、")||"无"}`,`必含关键词:${a.prepare.runtimePromptRules.requiredKeywords?.join("、")||"无"}`,`禁含内容:${a.prepare.runtimePromptRules.forbiddenPatterns?.join("、")||"无"}`]:["未从提示词中识别到额外硬规则,使用系统默认质量规则"]},{subtitle:"提示词规则执行"})),(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"document-readiness",status:a.prepare.readiness.ready?"success":"failed",message:"生成准备度:绑定资料已就绪",details:a.prepare.readiness.diagnostics},{subtitle:"生成准备度检查"})),(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"diversity-governance",status:"success",message:`多文档反雷同:组织视角「${a.planning.diversityProfile.perspective}」\xd7命名风格「${a.planning.diversityProfile.style}」;历史指纹避让 ${u.length} 个标题${w>0?`,撞名局部改名 ${w} 章${x>0?`(局部改名后仍近似 ${x} 处,已接受)`:""}`:""}`,details:[`历史指纹池 ${a.planning.fingerprintPool.entries.length} 条(仅本机历史文档标题与结构,无正文)`,`多样性画像 ${a.planning.diversityProfile.id}`]},{subtitle:"多样性治理"})),(0,q.fx)(a.global.progressStages,a.planning.sectionPlanningStage),a.global.emitProgress()}var fK=c(14070),fL=c(70963);async function fM(a){if(a.understanding.evidenceScopePaths=new Set(a.prepare.materialFilePaths),a.understanding.fileRoleByPath=new Map([...a.prepare.kindByPath.entries()].map(([a,b])=>[a,(0,e9._W)(b)])),a.understanding.fileProcessingByPath=new Map([...a.prepare.processingByPath.entries()].map(([a,b])=>[a,b])),(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"knowledge_retrieval",roleId:"knowledge-index",status:"running",message:"正在读取项目资料包索引",details:["使用上传阶段已完成的解析、切片和索引结果","不在生成流程中重新解析或入库","准备按资料类型召回章节证据"],progress:{current:1,total:3,label:"读取索引"}},{subtitle:"知识库检索",order:a.global.progressStages.length})),a.global.emitProgress(),a.understanding.project=await a.global.withProgressHeartbeat(()=>a.understanding.manager.getProject(a.prepare.projectRoot)),a.understanding.indexHealth=(0,k.EK)(a.understanding.project,[...a.understanding.evidenceScopePaths]),a.understanding.indexHealth.blockingIssues.length>0)throw Error(`生成前知识索引不可用:${a.understanding.indexHealth.blockingIssues.join(";")}`);a.understanding.availableEvidenceScopePaths=new Set(a.understanding.indexHealth.usablePaths),a.understanding.requestedEvidencePerChapter=(0,k.G2)(a.understanding.project,[...a.understanding.availableEvidenceScopePaths],a.global.input.maxEvidencePerChapter);let b=a.understanding.indexHealth.pendingJobs>0||0===a.understanding.indexHealth.usableChunkCount;a.understanding.rolePoolRisk=ch({totalChunks:Math.min(a.understanding.indexHealth.usableChunkCount,20*a.prepare.materialFilePaths.length),loadedChunks:Math.min(a.understanding.indexHealth.usableChunkCount,20*a.prepare.materialFilePaths.length),vectorReady:a.understanding.indexHealth.vectorStatus?"ready"===a.understanding.indexHealth.vectorStatus.status:void 0}),(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"knowledge_retrieval",roleId:"knowledge-index",status:b?"failed":"success",message:`已读取知识索引:项目资料 ${a.understanding.indexHealth.scopedRecords.length} 份,可用切片 ${a.understanding.indexHealth.usableChunkCount} 条`,details:[`项目资料:${a.understanding.evidenceScopePaths.size} 份`,`可用证据文件:${a.understanding.availableEvidenceScopePaths.size} 份`,`向量状态:${(0,k.EG)(a.understanding.indexHealth.vectorStatus?.status)}`,...a.understanding.indexHealth.warnings,"后续将按招标正文/清单/图纸/补疑等资料类型召回"],progress:{current:3,total:3,label:"索引已就绪"}},{subtitle:"知识库检索",order:a.global.progressStages.length})),a.global.emitProgress(),(0,e.Te)(a.global.input.signal),a.understanding.allEvidence=[],a.understanding.retrievalCoverageReports=[],a.understanding.webResearchReport={enabled:a.prepare.webAccessConfig.enabled,queries:[],evidenceCount:0,filteredCount:0,chapters:[]},a.understanding.missingItems=[],a.understanding.failedChapterMessages=[],a.understanding.chapterGenerationStages=[],a.understanding.chapterDraftsByOrder=[],a.understanding.chapterGenerationStagesByOrder=[],a.understanding.knowledgeBaseStageIndex=-1;let c=new Map,d=[],f=new Map;a.understanding.getCachedFileDetail=b=>{let c=`${b}::full`;if(!f.has(c))try{f.set(c,a.understanding.project.getFileDetail?.(b))}catch{f.set(c,void 0)}return f.get(c)},a.understanding.searchWithCache=async(b,f,g,h,i)=>{let j=(0,k.Iu)(h),l=i??(0,ce.materialRootsOfFiles)(f),m=(0,e.c6)({query:b,scopedFilePaths:f,effectiveMaterialRoots:l,limit:g,weights:j,generationMode:!0,reranker:!0}),n=c.get(m);if(n)return n;let o=await a.understanding.manager.search(a.prepare.projectRoot,b,{scope:"project",filters:{filePaths:f,materialRoots:l},limit:g,weights:j,generationMode:!0,disableReranker:!1}).catch(a=>(d.push({query:b,message:a instanceof Error?a.message:String(a)}),null));if(null===o)return[];let p=o.results||[];return c.set(m,p),p};let h={stage:(0,q.X5)({type:"file_understanding",roleId:"project-understanding",status:"running",message:`正在理解项目资料:${a.prepare.projectMaterialProfile.files.length} 份资料,${Object.values(a.prepare.projectMaterialProfile.groups).filter(a=>a.length>0).length} 类资料类型`,progress:{current:1,total:3,label:"资料理解"}},{subtitle:"项目资料理解",order:a.global.progressStages.length})};(0,q.fx)(a.global.progressStages,h.stage),a.global.emitProgress();let i=await (0,k.jX)({manager:a.understanding.manager,project:a.understanding.project,projectRoot:a.prepare.projectRoot,scopedFilePaths:[...a.understanding.availableEvidenceScopePaths].filter(Boolean).sort(),scopedMaterialRoots:a.prepare.materialScope.selectedMaterialRoots,fileRoleByPath:a.understanding.fileRoleByPath,fileProcessingByPath:a.understanding.fileProcessingByPath,signal:a.global.input.signal});i.length>0&&(a.understanding.allEvidence.push(...i),(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"knowledge_retrieval",roleId:"project-basic-evidence",status:"success",message:`已锁定项目基础事实证据 ${i.length} 条`,details:i.slice(0,8).map(a=>`${cD.basename(a.filePath)}|${a.sectionTitle||"正文片段"}|score=${a.score.toFixed(2)}`)},{subtitle:"基础事实召回",order:a.global.progressStages.length})),a.global.emitProgress()),a.understanding.searchFailures=d,d.length>0&&((0,q.fx)(a.global.progressStages,(0,q.X5)({type:"knowledge_retrieval",roleId:"kb-search-failures",status:"failed",message:`知识库检索失败 ${d.length} 次(失败与「无命中」已分开计;失败结果不写缓存,同 query 后续会重试)`,details:d.slice(0,10).map(a=>`${a.query}:${a.message}`)},{subtitle:"基础事实召回",order:a.global.progressStages.length})),a.global.emitProgress());let{safe:j,excluded:l}=await (0,e$.a0)(a.understanding.allEvidence);a.understanding.writerEvidence=j,a.understanding.bidProcedureJudge=await (0,e$.M8)(),l.length>0&&((0,q.fx)(a.global.progressStages,(0,q.X5)({type:"knowledge_retrieval",roleId:"evidence-content-safety",status:"success",message:`证据内容安全过滤:${l.length} 条投标程序/评标纪律类证据已从写作链断开(系统侧提取通道不受影响)`,details:l.slice(0,6).map(a=>`${cD.basename(a.filePath)}|${a.sectionTitle||"正文片段"}`)},{subtitle:"证据内容安全",order:a.global.progressStages.length})),a.global.emitProgress()),a.understanding.safeProjectBasicEvidence=i.filter(a=>!l.includes(a)),a.understanding.excludedEvidenceKeys=new Set(l.map(e$.hM)),a.understanding.earlyFactPool=(0,m.d6)({evidence:a.understanding.writerEvidence,template:a.prepare.template,spec:a.prepare.documentSpec,profile:a.prepare.domainProfile});let o=a.understanding.earlyFactPool.localFacts,p=[...o,...a.understanding.earlyFactPool.projectBasicFacts,...a.understanding.earlyFactPool.preciseFacts];a.understanding.scopedIntelligence=(0,fI.hp)({projectRoot:a.prepare.projectRoot,template:a.prepare.template,requirement:a.global.input.requirement,materialScope:a.prepare.materialScope});let r=[...(0,e.lX)(a.understanding.scopedIntelligence?.facts||[]),...p,...(0,n.UT)(a.understanding.writerEvidence)],s=(0,n.GZ)(r,a.prepare.projectRoot);for(let b of(a.understanding.preliminaryFactsModel=await (0,m.d7)(s,a.understanding.earlyFactPool.structuredTables,a.understanding.missingItems,a.prepare.documentSpec,a.prepare.domainProfile),a.understanding.agentWorkflow=(0,cj.Qu)({template:a.prepare.template,requirement:a.global.input.requirement,projectRoot:a.prepare.projectRoot,facts:s,projectGraph:a.understanding.scopedIntelligence?.projectGraph,projectGraphSource:a.understanding.scopedIntelligence?"project-intelligence":void 0,materialScope:a.prepare.materialScope}),(0,cj.SU)(a.understanding.agentWorkflow)))(0,q.fx)(a.global.progressStages,b);if(a.understanding.scopedIntelligence&&(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"file_understanding",roleId:"project-intelligence-cache",status:"success",message:`已复用入库后资料包理解资产:${a.understanding.scopedIntelligence.files.length} 份资料`,details:[`项目级缓存时间:${new Date(a.understanding.scopedIntelligence.cache.createdAt).toLocaleString()}`,`资料包范围指纹:${a.understanding.scopedIntelligence.scope.scopeHash.slice(0,12)}`,`复用预计算事实:${a.understanding.scopedIntelligence.facts.length} 条`,`复用预计算项目图谱:${a.understanding.scopedIntelligence.projectGraph.works.length}工程/${a.understanding.scopedIntelligence.projectGraph.methods.length}工法/${a.understanding.scopedIntelligence.projectGraph.resources.length}资源`,`复用施工组织设计专项图谱:${a.understanding.scopedIntelligence.constructionOrganizationGraph.workPackages.length} 个工作包/${a.understanding.scopedIntelligence.constructionOrganizationGraph.controlMatrix.length} 条控制矩阵`,`图谱来源:${a.understanding.scopedIntelligence.cache.projectGraphMessage}`,`章节意图证据覆盖:${Object.keys(a.understanding.scopedIntelligence.evidenceByChapterId||{}).length}/${a.prepare.template.chapters.length} 章`,`排除正文不适用资料:${a.understanding.scopedIntelligence.files.filter(a=>!a.usableForBody).length} 份`]},{subtitle:"项目理解缓存 / 资料包"})),a.global.emitProgress(),a.understanding.projectGraph=a.understanding.agentWorkflow.baseProjectGraph,!a.understanding.scopedIntelligence){(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"file_understanding",roleId:"project-graph",status:"running",message:`正在临时构建完整项目图谱:${a.understanding.allEvidence.length} 条证据 → LLM 结构化提取`,details:["缓存缺失或版本过期,建议重新构建项目理解缓存;本次生成将临时构建完整项目图谱。","提取:工程内容、施工方法、材料设备、技术标准、重点难点"],progress:{current:2,total:3,label:"项目图谱"}},{subtitle:"项目资料图谱分析",order:a.global.progressStages.length})),a.global.emitProgress();let b=await a.global.withProgressHeartbeat(()=>(0,fL.i)({evidence:a.understanding.writerEvidence,signal:a.global.input.signal,projectRoot:a.prepare.projectRoot,requirement:a.global.input.requirement,templateId:a.prepare.template.id}),a.global.progressStages);if(!b.graph)throw Error(`完整项目图谱构建失败:${b.stage.message||b.stage.status}`);a.understanding.projectGraph=b.graph,(0,q.fx)(a.global.progressStages,b.stage),a.global.emitProgress()}a.understanding.projectGraph&&(a.prepare.projectUnderstanding=(0,e9._n)(a.prepare.template,a.prepare.projectMaterialProfile,a.understanding.projectGraph)),(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"file_understanding",roleId:"project-understanding",status:"success",message:`已完成项目资料理解:${a.prepare.projectMaterialProfile.files.length} 份资料、${Object.values(a.prepare.projectMaterialProfile.groups).filter(a=>a.length>0).length} 类资料类型${a.understanding.projectGraph?`、图谱增强 ${a.understanding.projectGraph.works.length} 项工程内容`:""}`,details:[...a.prepare.projectUnderstanding.chapterPlans.slice(0,10).map(a=>`${a.chapterTitle}:必用 ${a.mustUseMaterialKinds.length} 类资料、必覆盖 ${a.mustCover.length} 项`),...a.prepare.projectUnderstanding.profile.warnings.length?[`资料风险:${a.prepare.projectUnderstanding.profile.warnings.slice(0,3).join(";")}`]:[]]},{subtitle:"项目资料理解",order:a.global.progressStages.length})),a.global.emitProgress(),a.understanding.canonicalFacts=(0,n.qD)({facts:r,projectGraph:a.understanding.projectGraph,requiredKeys:n.nC.map(a=>a.key),projectRoot:a.prepare.projectRoot,requirement:a.global.input.requirement,templateId:a.prepare.template.id}),a.understanding.preliminaryFactsModel.canonical=a.understanding.canonicalFacts;let t=(0,bg.effectiveTemplateChapters)(a.prepare.template,a.prepare.documentSpec,{preserveExplicitOutline:a.prepare.hasExplicitOutline}),u=a.understanding.allEvidence.filter(a=>/评审|评分标准|评分办法|详细评审/u.test(`${a.sectionTitle||""}${a.content}`)).map(a=>a.content);a.understanding.evaluationItems=function(a){let b=a.join("\n"),c=new Map;for(let a of b.matchAll(/(\d{1,2})\s*[.、.]\s*([^;。\n]{4,60})/gu)){let b=a[2].trim().replace(/[“”"'"]/gu,"");if(!/[\u4e00-\u9fa5]{3}/u.test(b)&&!/[杯奖]/u.test(b)||/AI|大模型|评审|评分|分值|分项|子项|满分|得分|投标人须|详见|招标文件/u.test(b)||/公共资源|电子交易|加密|投标|开标|评标委员会|评标价|中标候选|中标人|评标程序|评标流程|异常低价|保函|保证金|资格审查|资格后审/u.test(b)||"technical"!==(0,e0.mz)(b))continue;let d=Number(a[1]);if(!c.has(d)){let a=function(a){let b=a.replace(/^针对/u,"").replace(/^确保/u,"").replace(/的保障体系与措施$/u,"").replace(/的管理体系与措施$/u,"").replace(/保障体系与措施$/u,"").replace(/管理体系与措施$/u,"").replace(/[,、;,;]+$/u,"").trim();return!/[\u4e00-\u9fa5]{3}/u.test(b)&&!/[杯奖]/u.test(b)||/工期与质量/u.test(b)?"":b.length>24?b.slice(0,24):b}(b);if(a&&(0,bg.ob)(a)||(0,bg.ob)(b))continue;c.set(d,{index:d,text:b,title:a})}}return[...c.values()]}(u),u.length>0&&0===a.understanding.evaluationItems.length&&(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"bid-structure-audit",status:"skipped",message:"评审章节证据存在但未提取到评分条目标题:评分标准编号条目提取为空,承接审计将静默通过",details:["请检查招标文件评标办法章节编号格式;评分项要求(创优目标/绿色等级/禁编日期)由评分项要求提取通道覆盖"]},{subtitle:"评标结构校验",order:a.global.progressStages.length}));let v=await (0,aB.Mv)(a.understanding.evaluationItems.map(a=>a.title),t.map(e4));a.understanding.bidStructureAudit=e5({template:a.prepare.template,chapters:t,requirement:a.global.input.requirement,evaluationItems:a.understanding.evaluationItems,semanticSimilarity:v});let w=[];for(let b of[...a.understanding.evidenceScopePaths].sort()){if(!/招标|补疑|答疑|评标/u.test(b))continue;let c=a.understanding.getCachedFileDetail(b);if(c?.chunks?.length)for(let a of c.chunks)w.push(a.content||"")}a.understanding.bidComposition=(0,P.SD)({tenderTexts:w,requirement:a.global.input.requirement,requiredTables:a.prepare.runtimePromptRules.requiredTables});let x=(0,P.iJ)(a.understanding.bidComposition);if((0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"bid-composition",status:x.status,message:x.message,details:x.details},{subtitle:"标书编制规格",order:a.global.progressStages.length})),a.global.emitProgress(),"unknown"===a.understanding.bidComposition.bidType&&((0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"bid-composition-warning",status:"skipped",message:"标书类型判定告警:未识别暗标/明标标记——本次按常规口径生成(正文表格策略按招标证据判定、正文图片允许);若本项目实为暗标,正文图片与投标人标记可能未被禁止(暗标通常不得出现),请核对招标文件后重跑",details:["核查点:招标文件「施工组织设计采用」勾选项(标记字符变体与「按暗标/采用暗标评审」语义条款均已覆盖)或「暗标编制要求」条款","判定证据链见「标书编制规格」节点"]},{subtitle:"标书编制规格\xb7判定告警",order:a.global.progressStages.length})),a.global.emitProgress()),a.understanding.tenderRequirementsTask=(async()=>{try{let b,c=[];for(let b of[...a.understanding.evidenceScopePaths].sort()){if(!/招标|补疑|答疑|评标/u.test(b))continue;let d=a.understanding.getCachedFileDetail(b);if(d?.chunks?.length)for(let e of d.chunks)c.push({chapterId:"tender-requirements",filePath:d.file?.relativePath||b,score:1,content:e.content||"",roleId:a.understanding.fileRoleByPath.get(b),processingType:a.understanding.fileProcessingByPath.get(b),sectionTitle:e.sectionTitle,source:"pinned-evidence"})}let d=c.length>0?c:(0,g.QR)([...a.understanding.allEvidence.filter(a=>/招标|评标|投标须知|专用合同|合同条款|技术标准|技术要求/u.test(`${a.filePath||""}${a.sectionTitle||""}`)),...a.understanding.allEvidence.filter(a=>!/招标|评标|投标须知|专用合同|合同条款|技术标准|技术要求/u.test(`${a.filePath||""}${a.sectionTitle||""}`))],{preservePinned:!0}),e="0"!==process.env.DOCUMENT_EXTRACTION_CACHE?(0,aC.Sf)({collectionEvidence:d}):void 0,f=e?(0,aC.jl)(a.prepare.projectRoot,e):void 0;return f?(b=f,(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"tender-requirements-cache",status:"success",message:"复用上次提取结果(招标资料哈希命中,跳过判定 LLM)",details:(0,aC.zD)(b)},{subtitle:"招标要求提取\xb7缓存复用",order:a.global.progressStages.length})),a.global.emitProgress()):(b=await a.global.withProgressHeartbeat(()=>(0,aC.mg)(d,{signal:a.global.input.signal,diagnostics:a.planning.generationDiagnostics,onPhase:(b,c)=>{(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"tender-requirements-extraction",status:"running",message:b,details:c},{subtitle:"招标要求提取",order:a.global.progressStages.length})),a.global.emitProgress()}})),e&&(0,aC.e_)(a.prepare.projectRoot,e,b)),(0,aC.l)(b)?((0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"tender-requirements-extraction",status:"success",message:`招标要求结构化提取完成:要求 ${b.reconciliation.entryCount} 条、排除 ${b.reconciliation.excludedCount} 条(${b.reconciliation.batchCount} 批判定)`,details:(0,aC.zD)(b)},{subtitle:"招标要求提取",order:a.global.progressStages.length})),a.global.emitProgress()):d.length>0&&((0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"tender-requirements-extraction",status:"skipped",message:"招标要求提取未获得有效结果(模型不可用或资料中无要求条款),章级验收自动跳过",details:[]},{subtitle:"招标要求提取",order:a.global.progressStages.length})),a.global.emitProgress()),b.extracted&&b.reconciliation.undecidedCount>0&&((0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"tender-requirements-undecided",status:"skipped",message:`对账未闭合:${b.reconciliation.undecidedCount} 条条款未判定(LLM 输出缺号且重试后仍缺)`,details:["未判定条款不进入分配与验收;请检查 LLM 可用性"]},{subtitle:"招标要求提取\xb7对账",order:a.global.progressStages.length})),a.global.emitProgress()),b}catch(b){return(0,q.fx)(a.global.progressStages,(0,q.X5)({type:"validation",roleId:"tender-requirements-extraction",status:"skipped",message:"招标要求提取链异常,已降级为空模型(章级验收自动跳过)",details:[`异常信息:${b instanceof Error?b.message:String(b)}`,"请检查 LLM 可用性"]},{subtitle:"招标要求提取",order:a.global.progressStages.length})),a.global.emitProgress(),(0,aC.Mx)(!1)}})(),a.planning.baseEffectiveChapters=(0,e.H1)(a.understanding.bidStructureAudit.enrichedChapters),a.prepare.template={...a.prepare.template,chapters:a.planning.baseEffectiveChapters},a.planning.plannedDocumentTask=(0,e8.NP)({template:a.prepare.template,context:a.understanding.agentWorkflow,title:a.prepare.template.name}),a.planning.plannedDocumentTask.catch(()=>void 0),a.understanding.chapterGraphMap=new Map,a.understanding.projectGraph){let b=new Set;for(let c of[...a.understanding.projectGraph.works,...a.understanding.projectGraph.methods,...a.understanding.projectGraph.resources,...a.understanding.projectGraph.schedule,...a.understanding.projectGraph.standards,...a.understanding.projectGraph.risks,...a.understanding.projectGraph.requirements,...a.understanding.projectGraph.siteConditions])(c.sourceFiles||[]).forEach(a=>b.add(a));for(let c of a.planning.baseEffectiveChapters){let d=[c.title,c.purpose,...c.sections||[],...c.requiredFacts||[],...c.queries||[]].join(" "),e=a=>a&&((0,fK.C1)(a,d,.18)||(0,fK.C1)(a,c.title,.12)),f=/概况|总体|部署|施工|进度|工期|质量|安全|资源|人材机|材料|机械|劳动力|风险|危大|绿色|环保/u.test(d),g=a.understanding.projectGraph.works.filter(a=>a.name&&(e(a.name)||f)),h=a.understanding.projectGraph.methods.filter(a=>a.name&&(e(a.name)||(a.applicableWorks||[]).some(e)||f)),i=a.understanding.projectGraph.resources.filter(a=>a.name&&(e(a.name)||/资源|人材机|材料|机械|劳动力/u.test(d)&&/material|equipment|labor/u.test(a.type))),j=a.understanding.projectGraph.gaps.filter(a=>!(0,fI.Ut)(a)&&(e(a)||f)),k=new Set;for(let a of g)(a.sourceFiles||[]).forEach(a=>k.add(a));for(let a of h)(a.sourceFiles||[]).forEach(a=>k.add(a));for(let a of i)(a.sourceFiles||[]).forEach(a=>k.add(a));0===k.size&&f&&[...b].forEach(a=>k.add(a)),a.understanding.chapterGraphMap.set(c.id,{graphFiles:k,graphBoqItems:i.map(a=>({name:a.name,quantity:a.quantity,unit:a.unit,sourceFiles:a.sourceFiles||[]})),graphWorks:g.map(a=>a.name),graphMethods:h.map(a=>a.name),gaps:j})}a.understanding.scopedIntelligence||((0,q.fx)(a.global.progressStages,(0,q.X5)({type:"file_understanding",roleId:"project-graph-match",status:"success",message:`图谱→章节映射完成:${a.understanding.projectGraph.works.length}工程 ${a.understanding.projectGraph.methods.length}工法 ${a.understanding.projectGraph.resources.length}资源 → ${a.planning.baseEffectiveChapters.length}章`,details:a.planning.baseEffectiveChapters.map(b=>{let c=a.understanding.chapterGraphMap.get(b.id);return`${(0,bg.GQ)(b.title)}:匹配文件${c?.graphFiles.size||0}个,BOQ项${c?.graphBoqItems.length||0}个`})},{subtitle:"图谱章节映射"})),a.global.emitProgress())}}var fN=c(44533),fO=c(29281),fP=c(25840),fQ=c(6444),fR=c(85441),fS=c(56942);function fT(){return{parsed:!1,globalRequirements:[],chapterRequirements:[],factClues:[],styleRequirements:[],mandatoryBlockText:"",summary:""}}let fU=[(0,O.y4)("你是用户生成要求的语义解析专家。"),'把用户的生成提示词完整解析为可逐条核验的结构化要求清单,不得遗漏用户的任何实质要求;不得把通用客套话(如"请帮我生成""谢谢")当作要求。\n要求必须逐条短句(每条 ≤60 字)、可核验(生成后能判断是否满足);一条要求只写一件事,复合要求必须拆分。\nglobalRequirements:全文级强制要求——写作内容、深度、覆盖面、表格、量化要求等不限定具体章节的要求;若要求明确指向某个章节,必须放入 chapterRequirements 而不是 globalRequirements。\nchapterRequirements:章节级要求——chapterTitle 必须原样取自给定的章节列表,不得编造不存在的章节名;同一章节的多条要求合并为一条记录。\nfactClues:用户提示词中显式给出的项目专属事实线索——含数值、单位、规格、型号、标准编号、日期、地点、规模、金额、目标的短句(如"一般路灯 100W 109套、120W 9套""计划工期 365 日历天""开挖深度 5.2m");要求类语句("必须写X")不算事实线索;线索必须原样保留数值与表述,不得改写或换算。\nstyleRequirements:写作风格与格式要求(语气、详略、表格偏好、禁止风格等),最多 8 条。\n只返回 JSON。'].join("\n");function fV(a,b){let c=String(a||"").trim().replace(/^\d+[.、))]\s*/u,"");return!c||c.length>b?"":c}async function fW(a){let b=(a.requirement||"").trim(),c=(a.chapterTitles||[]).filter(Boolean),d=fT();if(!b||b.length<4||b.length<=40&&!/[::]|\n/u.test(b))return d;try{let e=await (0,cl.bb)(fU,`章节列表(chapterRequirements 的 chapterTitle 必须原样取自以下列表):${c.join("、")||"(无)"}
|
|
249
249
|
|
|
250
250
|
用户要求全文:
|
|
251
251
|
${b}
|